ref: d3e81422d50f937b91df19e058c25ac7288f6063
parent: abaf9fee7c73e708ef8c3e7a1ed710bfc9ec6f6e
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Thu Nov 5 05:50:30 EST 2020
Sync home and macro code with pokeyellow
--- a/constants/gfx_constants.asm
+++ b/constants/gfx_constants.asm
@@ -2,16 +2,6 @@
LEN_1BPP_TILE EQU 1 * TILE_WIDTH ; bytes
LEN_2BPP_TILE EQU 2 * TILE_WIDTH ; bytes
- const_def
- const SHADE_WHITE ; %00
- const SHADE_LIGHT ; %01
- const SHADE_DARK ; %10
- const SHADE_BLACK ; %11
-NUM_PAL_COLORS EQU const_value
-
-PAL_COLOR_SIZE EQU 2
-PALETTE_SIZE EQU NUM_PAL_COLORS * PAL_COLOR_SIZE
-
SCREEN_WIDTH EQU 20
SCREEN_HEIGHT EQU 18
SCREEN_WIDTH_PX EQU SCREEN_WIDTH * TILE_WIDTH ; pixels
--- a/constants/palette_constants.asm
+++ b/constants/palette_constants.asm
@@ -1,9 +1,13 @@
; monochrome palette color ids
const_def
- const WHITE
- const LIGHT_GRAY
- const DARK_GRAY
- const BLACK
+ const SHADE_WHITE ; %00
+ const SHADE_LIGHT ; %01
+ const SHADE_DARK ; %10
+ const SHADE_BLACK ; %11
+NUM_PAL_COLORS EQU const_value
+
+PAL_COLOR_SIZE EQU 2
+PALETTE_SIZE EQU NUM_PAL_COLORS * PAL_COLOR_SIZE
; pal/blk packets
; SetPalFunctions indexes (see engine/gfx/palettes.asm)
--- a/engine/movie/intro.asm
+++ b/engine/movie/intro.asm
@@ -23,7 +23,7 @@
PlayIntroScene:
ld b, SET_PAL_NIDORINO_INTRO
call RunPaletteCommand
- ldPal a, BLACK, DARK_GRAY, LIGHT_GRAY, WHITE
+ ldpal a, SHADE_BLACK, SHADE_DARK, SHADE_LIGHT, SHADE_WHITE
ldh [rBGP], a
ldh [rOBP0], a
ldh [rOBP1], a
@@ -307,7 +307,7 @@
ld b, SET_PAL_GAME_FREAK_INTRO
call RunPaletteCommand
farcall LoadCopyrightAndTextBoxTiles
- ldPal a, BLACK, DARK_GRAY, LIGHT_GRAY, WHITE
+ ldpal a, SHADE_BLACK, SHADE_DARK, SHADE_LIGHT, SHADE_WHITE
ldh [rBGP], a
ld c, 180
call DelayFrames
--- a/home/fade.asm
+++ b/home/fade.asm
@@ -1,7 +1,7 @@
; These routines manage gradual fading
; (e.g., entering a doorway)
LoadGBPal::
- ld a, [wMapPalOffset] ;tells if wCurMap is dark (requires HM5_FLASH?)
+ ld a, [wMapPalOffset] ; tells if wCurMap is dark (requires HM5_FLASH?)
ld b, a
ld hl, FadePal4
ld a, l
--- a/home/init.asm
+++ b/home/init.asm
@@ -126,7 +126,7 @@
StopAllSounds::
- ld a, BANK(Audio1_UpdateMusic)
+ ld a, BANK("Audio Engine 1")
ld [wAudioROMBank], a
ld [wAudioSavedROMBank], a
xor a
--- a/home/inventory.asm
+++ b/home/inventory.asm
@@ -22,15 +22,7 @@
; [wWhichPokemon] = index (within the inventory) of the item to remove
; [wItemQuantity] = quantity to remove
RemoveItemFromInventory::
- ldh a, [hLoadedROMBank]
- push af
- ld a, BANK(RemoveItemFromInventory_)
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
- call RemoveItemFromInventory_
- pop af
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
+ homecall RemoveItemFromInventory_
ret
; function to add an item (in varying quantities) to the player's bag or PC box
@@ -41,15 +33,6 @@
; sets carry flag if successful, unsets carry flag if unsuccessful
AddItemToInventory::
push bc
- ldh a, [hLoadedROMBank]
- push af
- ld a, BANK(AddItemToInventory_)
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
- call AddItemToInventory_
- pop bc
- ld a, b
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
+ homecall_sf AddItemToInventory_
pop bc
ret
--- a/home/math.asm
+++ b/home/math.asm
@@ -26,15 +26,7 @@
push hl
push de
push bc
- ldh a, [hLoadedROMBank]
- push af
- ld a, BANK(_Divide)
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
- call _Divide
- pop af
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
+ homecall _Divide
pop bc
pop de
pop hl
--- a/home/move_mon.asm
+++ b/home/move_mon.asm
@@ -231,27 +231,9 @@
ret
AddEnemyMonToPlayerParty::
- ldh a, [hLoadedROMBank]
- push af
- ld a, BANK(_AddEnemyMonToPlayerParty)
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
- call _AddEnemyMonToPlayerParty
- pop bc
- ld a, b
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
+ homecall_sf _AddEnemyMonToPlayerParty
ret
MoveMon::
- ldh a, [hLoadedROMBank]
- push af
- ld a, BANK(_MoveMon)
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
- call _MoveMon
- pop bc
- ld a, b
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
+ homecall_sf _MoveMon
ret
--- a/home/overworld.asm
+++ b/home/overworld.asm
@@ -2321,9 +2321,9 @@
; copy current map view to VRAM
hlcoord 0, 0
ld de, vBGMap0
- ld b, 18
+ ld b, SCREEN_HEIGHT
.vramCopyLoop
- ld c, 20
+ ld c, SCREEN_WIDTH
.vramCopyInnerLoop
ld a, [hli]
ld [de], a
@@ -2330,7 +2330,7 @@
inc e
dec c
jr nz, .vramCopyInnerLoop
- ld a, 32 - 20
+ ld a, BG_MAP_WIDTH - SCREEN_WIDTH
add e
ld e, a
jr nc, .noCarry
@@ -2366,15 +2366,15 @@
ld c, a
ld b, $00
ld a, BANK(MapHeaderBanks)
- call BankswitchHome ; switch to ROM bank 3
+ call BankswitchHome
ld hl, MapHeaderBanks
add hl, bc
ld a, [hl]
- ldh [hMapROMBank], a ; save map ROM bank
+ ldh [hMapROMBank], a
call BankswitchBack
ldh a, [hMapROMBank]
ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a ; switch to map ROM bank
+ ld [MBC1RomBank], a
pop bc
pop hl
ret
@@ -2395,7 +2395,7 @@
ForceBikeOrSurf::
ld b, BANK(RedSprite)
- ld hl, LoadPlayerSpriteGraphics
+ ld hl, LoadPlayerSpriteGraphics ; in bank 0
call Bankswitch
jp PlayDefaultMusic ; update map/player state?
--- a/home/pokemon.asm
+++ b/home/pokemon.asm
@@ -325,16 +325,7 @@
ret
PrintStatusConditionNotFainted::
- ldh a, [hLoadedROMBank]
- push af
- ld a, BANK(PrintStatusAilment)
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
- call PrintStatusAilment ; print status condition
- pop bc
- ld a, b
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
+ homecall_sf PrintStatusAilment
ret
; function to print pokemon level, leaving off the ":L" if the level is at least 100
--- a/home/start.asm
+++ b/home/start.asm
@@ -4,7 +4,7 @@
xor a
jr .ok
.gbc
- ld a, 0
+ ld a, FALSE
.ok
ld [wGBC], a
jp Init
--- a/home/text_script.asm
+++ b/home/text_script.asm
@@ -146,15 +146,7 @@
call LoadItemList
ld a, PRICEDITEMLISTMENU
ld [wListMenuID], a
- ldh a, [hLoadedROMBank]
- push af
- ld a, BANK(DisplayPokemartDialogue_)
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
- call DisplayPokemartDialogue_
- pop af
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
+ homecall DisplayPokemartDialogue_
jp AfterDisplayingTextID
PokemartGreetingText::
@@ -185,15 +177,7 @@
ldh [hItemPrice + 2], a
inc hl
- ldh a, [hLoadedROMBank]
- push af
- ld a, BANK(DisplayPokemonCenterDialogue_)
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
- call DisplayPokemonCenterDialogue_
- pop af
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
+ homecall DisplayPokemonCenterDialogue_
jp AfterDisplayingTextID
DisplaySafariGameOverText::
--- a/home/textbox.asm
+++ b/home/textbox.asm
@@ -3,14 +3,5 @@
; [wTextBoxID] = text box ID
; b, c = y, x cursor position (TWO_OPTION_MENU only)
DisplayTextBoxID::
- ldh a, [hLoadedROMBank]
- push af
- ld a, BANK(DisplayTextBoxID_)
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
- call DisplayTextBoxID_
- pop bc
- ld a, b
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
+ homecall_sf DisplayTextBoxID_
ret
--- a/home/update_sprites.asm
+++ b/home/update_sprites.asm
@@ -2,13 +2,5 @@
ld a, [wUpdateSpritesEnabled]
dec a
ret nz
- ldh a, [hLoadedROMBank]
- push af
- ld a, BANK(_UpdateSprites)
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
- call _UpdateSprites
- pop af
- ldh [hLoadedROMBank], a
- ld [MBC1RomBank], a
+ homecall _UpdateSprites
ret
--- a/macros/code.asm
+++ b/macros/code.asm
@@ -4,7 +4,7 @@
ld \1, ((\2) & $ff) << 8 + ((\3) & $ff)
ENDM
-ldPal: MACRO
+ldpal: MACRO
ld \1, \2 << 6 | \3 << 4 | \4 << 2 | \5
ENDM
--- a/macros/farcall.asm
+++ b/macros/farcall.asm
@@ -33,3 +33,16 @@
ldh [hLoadedROMBank], a
ld [MBC1RomBank], a
ENDM
+
+homecall_sf: MACRO ; homecall but save flags by popping into bc instead of af
+ ldh a, [hLoadedROMBank]
+ push af
+ ld a, BANK(\1)
+ ldh [hLoadedROMBank], a
+ ld [MBC1RomBank], a
+ call \1
+ pop bc
+ ld a, b
+ ldh [hLoadedROMBank], a
+ ld [MBC1RomBank], a
+ENDM