Use labels instead of constants for HRAM

Use explicit ldh instruction to access HRAM locations, don't rely on optimizing ld
This commit is contained in:
Rangi
2018-08-25 14:28:22 -04:00
parent 376c64468b
commit eb1e3636bb
243 changed files with 4706 additions and 4661 deletions

View File

@@ -6,16 +6,16 @@ MapSetup_Sound_Off::
push bc
push af
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(_MapSetup_Sound_Off)
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
call _MapSetup_Sound_Off
pop af
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
pop af
@@ -30,16 +30,16 @@ UpdateSound::
push bc
push af
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(_UpdateSound)
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
call _UpdateSound
pop af
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
pop af
@@ -50,14 +50,14 @@ UpdateSound::
_LoadMusicByte::
; wCurMusicByte = [a:de]
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
ld a, [de]
ld [wCurMusicByte], a
ld a, BANK(LoadMusicByte)
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
ret
@@ -69,10 +69,10 @@ PlayMusic::
push bc
push af
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(_PlayMusic) ; and BANK(_MapSetup_Sound_Off)
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
ld a, e
@@ -87,7 +87,7 @@ PlayMusic::
.end
pop af
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
pop af
pop bc
@@ -103,10 +103,10 @@ PlayMusic2::
push bc
push af
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(_PlayMusic)
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
push de
@@ -117,7 +117,7 @@ PlayMusic2::
call _PlayMusic
pop af
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
pop af
@@ -134,12 +134,12 @@ PlayCry::
push bc
push af
ld a, [hROMBank]
ldh a, [hROMBank]
push af
; Cries are stuck in one bank.
ld a, BANK(PokemonCries)
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
ld hl, PokemonCries
@@ -162,13 +162,13 @@ endr
ld [wCryLength + 1], a
ld a, BANK(_PlayCry)
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
call _PlayCry
pop af
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
pop af
@@ -196,10 +196,10 @@ PlaySFX::
jr c, .done
.play
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(_PlaySFX)
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
ld a, e
@@ -207,7 +207,7 @@ PlaySFX::
call _PlaySFX
pop af
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
.done
@@ -525,11 +525,11 @@ TerminateExpBarSound::
xor a
ld [wChannel5Flags1], a
ld [wSoundInput], a
ld [rNR10], a
ld [rNR11], a
ld [rNR12], a
ld [rNR13], a
ld [rNR14], a
ldh [rNR10], a
ldh [rNR11], a
ldh [rNR12], a
ldh [rNR13], a
ldh [rNR14], a
ret
ChannelsOff::

View File

@@ -1,6 +1,6 @@
UserPartyAttr::
push af
ld a, [hBattleTurn]
ldh a, [hBattleTurn]
and a
jr nz, .ot
pop af
@@ -11,7 +11,7 @@ UserPartyAttr::
OpponentPartyAttr::
push af
ld a, [hBattleTurn]
ldh a, [hBattleTurn]
and a
jr z, .ot
pop af
@@ -52,22 +52,22 @@ ResetDamage::
SetPlayerTurn::
xor a
ld [hBattleTurn], a
ldh [hBattleTurn], a
ret
SetEnemyTurn::
ld a, 1
ld [hBattleTurn], a
ldh [hBattleTurn], a
ret
UpdateOpponentInParty::
ld a, [hBattleTurn]
ldh a, [hBattleTurn]
and a
jr z, UpdateEnemyMonInParty
jr UpdateBattleMonInParty
UpdateUserInParty::
ld a, [hBattleTurn]
ldh a, [hBattleTurn]
and a
jr z, UpdateBattleMonInParty
jr UpdateEnemyMonInParty
@@ -120,14 +120,14 @@ INCLUDE "home/battle_vars.asm"
FarCopyRadioText::
inc hl
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
ld a, [hli]
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
ld a, e
ld l, a
@@ -137,7 +137,7 @@ FarCopyRadioText::
ld bc, 2 * SCREEN_WIDTH
call CopyBytes
pop af
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
ret
@@ -169,7 +169,7 @@ BattleTextBox::
StdBattleTextBox::
; Open a textbox and print battle text at 20:hl.
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(BattleText)

View File

@@ -23,7 +23,7 @@ GetBattleVarAddr::
; Enemy turn uses the second byte instead.
; This lets battle variable calls be side-neutral.
ld a, [hBattleTurn]
ldh a, [hBattleTurn]
and a
jr z, .getvar
inc hl

View File

@@ -1,7 +1,7 @@
; Functions to copy data from ROM.
Get2bpp_2::
ld a, [rLCDC]
ldh a, [rLCDC]
bit rLCDC_ENABLE, a
jp z, Copy2bpp
@@ -10,7 +10,7 @@ Get2bpp_2::
ret
Get1bpp_2::
ld a, [rLCDC]
ldh a, [rLCDC]
bit rLCDC_ENABLE, a
jp z, Copy1bpp
@@ -19,10 +19,10 @@ Get1bpp_2::
ret
FarCopyBytesDouble_DoubleBankSwitch::
ld [hBuffer], a
ld a, [hROMBank]
ldh [hBuffer], a
ldh a, [hROMBank]
push af
ld a, [hBuffer]
ldh a, [hBuffer]
rst Bankswitch
call FarCopyBytesDouble
@@ -33,11 +33,11 @@ FarCopyBytesDouble_DoubleBankSwitch::
OldDMATransfer::
dec c
ld a, [hBGMapMode]
ldh a, [hBGMapMode]
push af
xor a
ld [hBGMapMode], a
ld a, [hROMBank]
ldh [hBGMapMode], a
ldh a, [hROMBank]
push af
ld a, b
rst Bankswitch
@@ -45,16 +45,16 @@ OldDMATransfer::
.loop
; load the source and target MSB and LSB
ld a, d
ld [rHDMA1], a ; source MSB
ldh [rHDMA1], a ; source MSB
ld a, e
and $f0
ld [rHDMA2], a ; source LSB
ldh [rHDMA2], a ; source LSB
ld a, h
and $1f
ld [rHDMA3], a ; target MSB
ldh [rHDMA3], a ; target MSB
ld a, l
and $f0
ld [rHDMA4], a ; target LSB
ldh [rHDMA4], a ; target LSB
; stop when c < 8
ld a, c
cp $8
@@ -64,7 +64,7 @@ OldDMATransfer::
ld c, a
; DMA transfer state
ld a, $f
ld [hDMATransfer], a
ldh [hDMATransfer], a
call DelayFrame
; add $100 to hl and de
ld a, l
@@ -84,13 +84,13 @@ OldDMATransfer::
.done
ld a, c
and $7f ; pretty silly, considering at most bits 0-2 would be set
ld [hDMATransfer], a
ldh [hDMATransfer], a
call DelayFrame
pop af
rst Bankswitch
pop af
ld [hBGMapMode], a
ldh [hBGMapMode], a
ret
ReplaceKrisSprite::
@@ -135,10 +135,10 @@ DecompressRequest2bpp::
FarCopyBytes::
; copy bc bytes from a:hl to de
ld [hBuffer], a
ld a, [hROMBank]
ldh [hBuffer], a
ldh a, [hROMBank]
push af
ld a, [hBuffer]
ldh a, [hBuffer]
rst Bankswitch
call CopyBytes
@@ -151,10 +151,10 @@ FarCopyBytesDouble::
; Copy bc bytes from a:hl to bc*2 bytes at de,
; doubling each byte in the process.
ld [hBuffer], a
ld a, [hROMBank]
ldh [hBuffer], a
ldh a, [hROMBank]
push af
ld a, [hBuffer]
ldh a, [hBuffer]
rst Bankswitch
; switcheroo, de <> hl
@@ -186,29 +186,29 @@ FarCopyBytesDouble::
Request2bpp::
; Load 2bpp at b:de to occupy c tiles of hl.
ld a, [hBGMapMode]
ldh a, [hBGMapMode]
push af
xor a
ld [hBGMapMode], a
ldh [hBGMapMode], a
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, b
rst Bankswitch
ld a, [hTilesPerCycle]
ldh a, [hTilesPerCycle]
push af
ld a, $8
ld [hTilesPerCycle], a
ldh [hTilesPerCycle], a
ld a, [wLinkMode]
cp LINK_MOBILE
jr nz, .NotMobile
ld a, [hMobile]
ldh a, [hMobile]
and a
jr nz, .NotMobile
ld a, $6
ld [hTilesPerCycle], a
ldh [hTilesPerCycle], a
.NotMobile:
ld a, e
@@ -233,17 +233,17 @@ Request2bpp::
jr nz, .wait
pop af
ld [hTilesPerCycle], a
ldh [hTilesPerCycle], a
pop af
rst Bankswitch
pop af
ld [hBGMapMode], a
ldh [hBGMapMode], a
ret
.iterate
ld a, [hTilesPerCycle]
ldh a, [hTilesPerCycle]
ld [wRequested2bpp], a
.wait2
@@ -260,29 +260,29 @@ Request2bpp::
Request1bpp::
; Load 1bpp at b:de to occupy c tiles of hl.
ld a, [hBGMapMode]
ldh a, [hBGMapMode]
push af
xor a
ld [hBGMapMode], a
ldh [hBGMapMode], a
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, b
rst Bankswitch
ld a, [hTilesPerCycle]
ldh a, [hTilesPerCycle]
push af
ld a, $8
ld [hTilesPerCycle], a
ldh [hTilesPerCycle], a
ld a, [wLinkMode]
cp LINK_MOBILE
jr nz, .NotMobile
ld a, [hMobile]
ldh a, [hMobile]
and a
jr nz, .NotMobile
ld a, $6
ld [hTilesPerCycle], a
ldh [hTilesPerCycle], a
.NotMobile:
ld a, e
@@ -307,17 +307,17 @@ Request1bpp::
jr nz, .wait
pop af
ld [hTilesPerCycle], a
ldh [hTilesPerCycle], a
pop af
rst Bankswitch
pop af
ld [hBGMapMode], a
ldh [hBGMapMode], a
ret
.iterate
ld a, [hTilesPerCycle]
ldh a, [hTilesPerCycle]
ld [wRequested1bpp], a
.wait2
@@ -333,7 +333,7 @@ Request1bpp::
jr .loop
Get2bpp::
ld a, [rLCDC]
ldh a, [rLCDC]
bit rLCDC_ENABLE, a
jp nz, Request2bpp
@@ -362,7 +362,7 @@ Copy2bpp::
jp FarCopyBytes
Get1bpp::
ld a, [rLCDC]
ldh a, [rLCDC]
bit rLCDC_ENABLE, a
jp nz, Request1bpp

View File

@@ -54,31 +54,31 @@ ByteFill::
GetFarByte::
; retrieve a single byte from a:hl, and return it in a.
; bankswitch to new bank
ld [hBuffer], a
ld a, [hROMBank]
ldh [hBuffer], a
ldh a, [hROMBank]
push af
ld a, [hBuffer]
ldh a, [hBuffer]
rst Bankswitch
; get byte from new bank
ld a, [hl]
ld [hBuffer], a
ldh [hBuffer], a
; bankswitch to previous bank
pop af
rst Bankswitch
; return retrieved value in a
ld a, [hBuffer]
ldh a, [hBuffer]
ret
GetFarHalfword::
; retrieve a halfword from a:hl, and return it in hl.
; bankswitch to new bank
ld [hBuffer], a
ld a, [hROMBank]
ldh [hBuffer], a
ldh a, [hROMBank]
push af
ld a, [hBuffer]
ldh a, [hBuffer]
rst Bankswitch
; get halfword from new bank, put it in hl
@@ -92,40 +92,40 @@ GetFarHalfword::
ret
FarCopyWRAM::
ld [hBuffer], a
ld a, [rSVBK]
ldh [hBuffer], a
ldh a, [rSVBK]
push af
ld a, [hBuffer]
ld [rSVBK], a
ldh a, [hBuffer]
ldh [rSVBK], a
call CopyBytes
pop af
ld [rSVBK], a
ldh [rSVBK], a
ret
GetFarWRAMByte::
ld [hBuffer], a
ld a, [rSVBK]
ldh [hBuffer], a
ldh a, [rSVBK]
push af
ld a, [hBuffer]
ld [rSVBK], a
ldh a, [hBuffer]
ldh [rSVBK], a
ld a, [hl]
ld [hBuffer], a
ldh [hBuffer], a
pop af
ld [rSVBK], a
ld a, [hBuffer]
ldh [rSVBK], a
ldh a, [hBuffer]
ret
GetFarWRAMWord::
ld [hBuffer], a
ld a, [rSVBK]
ldh [hBuffer], a
ldh a, [rSVBK]
push af
ld a, [hBuffer]
ld [rSVBK], a
ldh a, [hBuffer]
ldh [rSVBK], a
ld a, [hli]
ld h, [hl]
ld l, a
pop af
ld [rSVBK], a
ldh [rSVBK], a
ret

View File

@@ -1,35 +1,35 @@
LoadTileMapToTempTileMap::
; Load wTileMap into wTempTileMap
ld a, [rSVBK]
ldh a, [rSVBK]
push af
ld a, BANK(wTempTileMap)
ld [rSVBK], a
ldh [rSVBK], a
hlcoord 0, 0
decoord 0, 0, wTempTileMap
ld bc, wTileMapEnd - wTileMap
call CopyBytes
pop af
ld [rSVBK], a
ldh [rSVBK], a
ret
Call_LoadTempTileMapToTileMap::
xor a
ld [hBGMapMode], a
ldh [hBGMapMode], a
call LoadTempTileMapToTileMap
ld a, 1
ld [hBGMapMode], a
ldh [hBGMapMode], a
ret
LoadTempTileMapToTileMap::
; Load wTempTileMap into wTileMap
ld a, [rSVBK]
ldh a, [rSVBK]
push af
ld a, BANK(wTempTileMap)
ld [rSVBK], a
ldh [rSVBK], a
hlcoord 0, 0, wTempTileMap
decoord 0, 0
ld bc, wTileMapEnd - wTileMap
call CopyBytes
pop af
ld [rSVBK], a
ldh [rSVBK], a
ret

View File

@@ -55,7 +55,7 @@ LoadCry::
call GetCryIndex
ret c
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(PokemonCries)
rst Bankswitch

View File

@@ -2,7 +2,7 @@ FarDecompress::
; Decompress graphics data from a:hl to de.
ld [wLZBank], a
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, [wLZBank]
rst Bankswitch

View File

@@ -19,9 +19,9 @@ NormalSpeed::
SwitchSpeed::
set 0, [hl]
xor a
ld [rIF], a
ld [rIE], a
ldh [rIF], a
ldh [rIE], a
ld a, $30
ld [rJOYP], a
ldh [rJOYP], a
stop ; rgbasm adds a nop after this instruction by default
ret

View File

@@ -13,15 +13,15 @@ Unreferenced_Function48c::
.okay
ld a, [hli]
ld [rBGP], a
ldh [rBGP], a
ld a, [hli]
ld [rOBP0], a
ldh [rOBP0], a
ld a, [hli]
ld [rOBP1], a
ldh [rOBP1], a
ret
RotateFourPalettesRight::
ld a, [hCGB]
ldh a, [hCGB]
and a
jr z, .dmg
ld hl, IncGradGBPalTable_00
@@ -34,7 +34,7 @@ RotateFourPalettesRight::
jr RotatePalettesRight
RotateThreePalettesRight::
ld a, [hCGB]
ldh a, [hCGB]
and a
jr z, .dmg
ld hl, IncGradGBPalTable_05
@@ -63,7 +63,7 @@ RotatePalettesRight::
ret
RotateFourPalettesLeft::
ld a, [hCGB]
ldh a, [hCGB]
and a
jr z, .dmg
ld hl, IncGradGBPalTable_04 - 1
@@ -76,7 +76,7 @@ RotateFourPalettesLeft::
jr RotatePalettesLeft
RotateThreePalettesLeft::
ld a, [hCGB]
ldh a, [hCGB]
and a
jr z, .dmg
ld hl, IncGradGBPalTable_07 - 1

View File

@@ -2,10 +2,10 @@ FarCall_de::
; Call a:de.
; Preserves other registers.
ld [hBuffer], a
ld a, [hROMBank]
ldh [hBuffer], a
ldh a, [hROMBank]
push af
ld a, [hBuffer]
ldh a, [hBuffer]
rst Bankswitch
call .de
jr ReturnFarCall
@@ -18,10 +18,10 @@ FarCall_hl::
; Call a:hl.
; Preserves other registers.
ld [hBuffer], a
ld a, [hROMBank]
ldh [hBuffer], a
ldh a, [hROMBank]
push af
ld a, [hBuffer]
ldh a, [hBuffer]
rst Bankswitch
call FarJump_hl

View File

@@ -11,15 +11,15 @@ ResetGameTime::
GameTimer::
nop
ld a, [rSVBK]
ldh a, [rSVBK]
push af
ld a, BANK(wGameTime)
ld [rSVBK], a
ldh [rSVBK], a
call UpdateGameTimer
pop af
ld [rSVBK], a
ldh [rSVBK], a
ret
UpdateGameTimer::

View File

@@ -29,14 +29,14 @@ AskSerial::
; handshake
ld a, $88
ld [rSB], a
ldh [rSB], a
; switch to internal clock
ld a, %00000001
ld [rSC], a
ldh [rSC], a
; start transfer
ld a, %10000001
ld [rSC], a
ldh [rSC], a
ret

View File

@@ -2,12 +2,12 @@ Reset::
di
call MapSetup_Sound_Off
xor a
ld [hMapAnims], a
ldh [hMapAnims], a
call ClearPalettes
xor a
ld [rIF], a
ldh [rIF], a
ld a, 1 ; VBlank int
ld [rIE], a
ldh [rIE], a
ei
ld hl, wcfbe
@@ -28,40 +28,40 @@ _Start::
ld a, $1
.load
ld [hCGB], a
ldh [hCGB], a
ld a, $1
ld [hSystemBooted], a
ldh [hSystemBooted], a
Init::
di
xor a
ld [rIF], a
ld [rIE], a
ld [rRP], a
ld [rSCX], a
ld [rSCY], a
ld [rSB], a
ld [rSC], a
ld [rWX], a
ld [rWY], a
ld [rBGP], a
ld [rOBP0], a
ld [rOBP1], a
ld [rTMA], a
ld [rTAC], a
ldh [rIF], a
ldh [rIE], a
ldh [rRP], a
ldh [rSCX], a
ldh [rSCY], a
ldh [rSB], a
ldh [rSC], a
ldh [rWX], a
ldh [rWY], a
ldh [rBGP], a
ldh [rOBP0], a
ldh [rOBP1], a
ldh [rTMA], a
ldh [rTAC], a
ld [WRAM1_Begin], a
ld a, %100 ; Start timer at 4096Hz
ld [rTAC], a
ldh [rTAC], a
.wait
ld a, [rLY]
ldh a, [rLY]
cp LY_VBLANK + 1
jr nz, .wait
xor a
ld [rLCDC], a
ldh [rLCDC], a
; Clear WRAM bank 0
ld hl, WRAM0_Begin
@@ -77,22 +77,22 @@ Init::
ld sp, wStack
; Clear HRAM
ld a, [hCGB]
ldh a, [hCGB]
push af
ld a, [hSystemBooted]
ldh a, [hSystemBooted]
push af
xor a
ld hl, HRAM_Begin
ld bc, HRAM_End - HRAM_Begin
call ByteFill
pop af
ld [hSystemBooted], a
ldh [hSystemBooted], a
pop af
ld [hCGB], a
ldh [hCGB], a
call ClearWRAM
ld a, 1
ld [rSVBK], a
ldh [rSVBK], a
call ClearVRAM
call ClearSprites
call ClearsScratch
@@ -103,21 +103,21 @@ Init::
call WriteOAMDMACodeToHRAM
xor a
ld [hMapAnims], a
ld [hSCX], a
ld [hSCY], a
ld [rJOYP], a
ldh [hMapAnims], a
ldh [hSCX], a
ldh [hSCY], a
ldh [rJOYP], a
ld a, $8 ; HBlank int enable
ld [rSTAT], a
ldh [rSTAT], a
ld a, $90
ld [hWY], a
ld [rWY], a
ldh [hWY], a
ldh [rWY], a
ld a, 7
ld [hWX], a
ld [rWX], a
ldh [hWX], a
ldh [rWX], a
ld a, LCDC_DEFAULT ; %11100011
; LCD on
@@ -128,17 +128,17 @@ Init::
; OBJ 8x8
; OBJ on
; BG on
ld [rLCDC], a
ldh [rLCDC], a
ld a, CONNECTION_NOT_ESTABLISHED
ld [hSerialConnectionStatus], a
ldh [hSerialConnectionStatus], a
farcall InitCGBPals
ld a, HIGH(vBGMap1)
ld [hBGMapAddress + 1], a
ldh [hBGMapAddress + 1], a
xor a ; LOW(vBGMap1)
ld [hBGMapAddress], a
ldh [hBGMapAddress], a
farcall StartClock
@@ -146,16 +146,16 @@ Init::
ld [MBC3LatchClock], a
ld [MBC3SRamEnable], a
ld a, [hCGB]
ldh a, [hCGB]
and a
jr z, .no_double_speed
call NormalSpeed
.no_double_speed
xor a
ld [rIF], a
ldh [rIF], a
ld a, %1111 ; VBlank, LCDStat, Timer, Serial interrupts
ld [rIE], a
ldh [rIE], a
ei
call DelayFrame
@@ -171,11 +171,11 @@ ClearVRAM::
; Wipe VRAM banks 0 and 1
ld a, 1
ld [rVBK], a
ldh [rVBK], a
call .clear
xor a ; 0
ld [rVBK], a
ldh [rVBK], a
.clear
ld hl, VRAM_Begin
ld bc, VRAM_End - VRAM_Begin
@@ -190,7 +190,7 @@ ClearWRAM::
ld a, 1
.bank_loop
push af
ld [rSVBK], a
ldh [rSVBK], a
xor a
ld hl, WRAM1_Begin
ld bc, WRAM1_End - WRAM1_Begin

View File

@@ -16,7 +16,7 @@ TossItem::
push hl
push de
push bc
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(_TossItem)
rst Bankswitch
@@ -33,7 +33,7 @@ TossItem::
ReceiveItem::
push bc
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(_ReceiveItem)
rst Bankswitch
@@ -54,7 +54,7 @@ CheckItem::
push hl
push de
push bc
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(_CheckItem)
rst Bankswitch

View File

@@ -8,9 +8,9 @@ JoypadInt::
ClearJoypad::
xor a
; Pressed this frame (delta)
ld [hJoyPressed], a
ldh [hJoyPressed], a
; Currently pressed
ld [hJoyDown], a
ldh [hJoyDown], a
ret
Joypad::
@@ -38,10 +38,10 @@ Joypad::
; We can only get four inputs at a time.
; We take d-pad first for no particular reason.
ld a, R_DPAD
ld [rJOYP], a
ldh [rJOYP], a
; Read twice to give the request time to take.
ld a, [rJOYP]
ld a, [rJOYP]
ldh a, [rJOYP]
ldh a, [rJOYP]
; The Joypad register output is in the lo nybble (inversed).
; We make the hi nybble of our new container d-pad input.
@@ -55,10 +55,10 @@ Joypad::
; Buttons make 8 total inputs (A, B, Select, Start).
; We can fit this into one byte.
ld a, R_BUTTONS
ld [rJOYP], a
ldh [rJOYP], a
; Wait for input to stabilize.
rept 6
ld a, [rJOYP]
ldh a, [rJOYP]
endr
; Buttons take the lo nybble.
cpl
@@ -68,30 +68,30 @@ endr
; Reset the joypad register since we're done with it.
ld a, $30
ld [rJOYP], a
ldh [rJOYP], a
; To get the delta we xor the last frame's input with the new one.
ld a, [hJoypadDown] ; last frame
ldh a, [hJoypadDown] ; last frame
ld e, a
xor b
ld d, a
; Released this frame:
and e
ld [hJoypadReleased], a
ldh [hJoypadReleased], a
; Pressed this frame:
ld a, d
and b
ld [hJoypadPressed], a
ldh [hJoypadPressed], a
; Add any new presses to the list of collective presses:
ld c, a
ld a, [hJoypadSum]
ldh a, [hJoypadSum]
or c
ld [hJoypadSum], a
ldh [hJoypadSum], a
; Currently pressed:
ld a, b
ld [hJoypadDown], a
ldh [hJoypadDown], a
; Now that we have the input, we can do stuff with it.
@@ -130,28 +130,28 @@ GetJoypad::
jr z, .auto
; To get deltas, take this and last frame's input.
ld a, [hJoypadDown] ; real input
ldh a, [hJoypadDown] ; real input
ld b, a
ld a, [hJoyDown] ; last frame mirror
ldh a, [hJoyDown] ; last frame mirror
ld e, a
; Released this frame:
xor b
ld d, a
and e
ld [hJoyReleased], a
ldh [hJoyReleased], a
; Pressed this frame:
ld a, d
and b
ld [hJoyPressed], a
ldh [hJoyPressed], a
; It looks like the collective presses got commented out here.
ld c, a
; Currently pressed:
ld a, b
ld [hJoyDown], a ; frame input
ldh [hJoyDown], a ; frame input
.quit
pop bc
@@ -167,7 +167,7 @@ GetJoypad::
; A value of $ff will immediately end the stream.
; Read from the input stream.
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, [wAutoInputBank]
rst Bankswitch
@@ -224,8 +224,8 @@ GetJoypad::
pop af
rst Bankswitch
ld a, b
ld [hJoyPressed], a ; pressed
ld [hJoyDown], a ; input
ldh [hJoyPressed], a ; pressed
ldh [hJoyDown], a ; input
jr .quit
StartAutoInput::
@@ -241,9 +241,9 @@ StartAutoInput::
ld [wAutoInputLength], a
; Reset input mirrors.
xor a
ld [hJoyPressed], a ; pressed this frame
ld [hJoyReleased], a ; released this frame
ld [hJoyDown], a ; currently pressed
ldh [hJoyPressed], a ; pressed this frame
ldh [hJoyReleased], a ; released this frame
ldh [hJoyDown], a ; currently pressed
ld a, AUTO_INPUT
ld [wInputType], a
@@ -269,11 +269,11 @@ JoyTitleScreenInput::
call JoyTextDelay
pop bc
ld a, [hJoyDown]
ldh a, [hJoyDown]
cp D_UP | SELECT | B_BUTTON
jr z, .keycombo
ld a, [hJoyLast]
ldh a, [hJoyLast]
and START | A_BUTTON
jr nz, .keycombo
@@ -291,33 +291,33 @@ JoyWaitAorB::
.loop
call DelayFrame
call GetJoypad
ld a, [hJoyPressed]
ldh a, [hJoyPressed]
and A_BUTTON | B_BUTTON
ret nz
call RTC
jr .loop
WaitButton::
ld a, [hOAMUpdate]
ldh a, [hOAMUpdate]
push af
ld a, 1
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
call WaitBGMap
call JoyWaitAorB
pop af
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
ret
JoyTextDelay::
call GetJoypad
ld a, [hInMenu]
ldh a, [hInMenu]
and a
ld a, [hJoyPressed]
ldh a, [hJoyPressed]
jr z, .ok
ld a, [hJoyDown]
ldh a, [hJoyDown]
.ok
ld [hJoyLast], a
ld a, [hJoyPressed]
ldh [hJoyLast], a
ldh a, [hJoyPressed]
and a
jr z, .checkframedelay
ld a, 15
@@ -329,7 +329,7 @@ JoyTextDelay::
and a
jr z, .restartframedelay
xor a
ld [hJoyLast], a
ldh [hJoyLast], a
ret
.restartframedelay
@@ -338,14 +338,14 @@ JoyTextDelay::
ret
WaitPressAorB_BlinkCursor::
ld a, [hMapObjectIndexBuffer]
ldh a, [hMapObjectIndexBuffer]
push af
ld a, [hObjectStructIndexBuffer]
ldh a, [hObjectStructIndexBuffer]
push af
xor a
ld [hMapObjectIndexBuffer], a
ldh [hMapObjectIndexBuffer], a
ld a, 6
ld [hObjectStructIndexBuffer], a
ldh [hObjectStructIndexBuffer], a
.loop
push hl
@@ -354,20 +354,20 @@ WaitPressAorB_BlinkCursor::
pop hl
call JoyTextDelay
ld a, [hJoyLast]
ldh a, [hJoyLast]
and A_BUTTON | B_BUTTON
jr z, .loop
pop af
ld [hObjectStructIndexBuffer], a
ldh [hObjectStructIndexBuffer], a
pop af
ld [hMapObjectIndexBuffer], a
ldh [hMapObjectIndexBuffer], a
ret
SimpleWaitPressAorB::
.loop
call JoyTextDelay
ld a, [hJoyLast]
ldh a, [hJoyLast]
and A_BUTTON | B_BUTTON
jr z, .loop
ret
@@ -388,10 +388,10 @@ ButtonSound::
jp DelayFrames
.wait_input
ld a, [hOAMUpdate]
ldh a, [hOAMUpdate]
push af
ld a, $1
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
ld a, [wInputType]
or a
jr z, .input_wait_loop
@@ -400,22 +400,22 @@ ButtonSound::
.input_wait_loop
call .blink_cursor
call JoyTextDelay
ld a, [hJoyPressed]
ldh a, [hJoyPressed]
and A_BUTTON | B_BUTTON
jr nz, .received_input
call RTC
ld a, $1
ld [hBGMapMode], a
ldh [hBGMapMode], a
call DelayFrame
jr .input_wait_loop
.received_input
pop af
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
ret
.blink_cursor
ld a, [hVBlankCounter]
ldh a, [hVBlankCounter]
and %00010000 ; bit 4, a
jr z, .cursor_off
ld a, "▼"
@@ -436,37 +436,37 @@ BlinkCursor::
cp b
pop bc
jr nz, .place_arrow
ld a, [hMapObjectIndexBuffer]
ldh a, [hMapObjectIndexBuffer]
dec a
ld [hMapObjectIndexBuffer], a
ldh [hMapObjectIndexBuffer], a
ret nz
ld a, [hObjectStructIndexBuffer]
ldh a, [hObjectStructIndexBuffer]
dec a
ld [hObjectStructIndexBuffer], a
ldh [hObjectStructIndexBuffer], a
ret nz
ld a, "─"
ld [hl], a
ld a, -1
ld [hMapObjectIndexBuffer], a
ldh [hMapObjectIndexBuffer], a
ld a, 6
ld [hObjectStructIndexBuffer], a
ldh [hObjectStructIndexBuffer], a
ret
.place_arrow
ld a, [hMapObjectIndexBuffer]
ldh a, [hMapObjectIndexBuffer]
and a
ret z
dec a
ld [hMapObjectIndexBuffer], a
ldh [hMapObjectIndexBuffer], a
ret nz
dec a
ld [hMapObjectIndexBuffer], a
ld a, [hObjectStructIndexBuffer]
ldh [hMapObjectIndexBuffer], a
ldh a, [hObjectStructIndexBuffer]
dec a
ld [hObjectStructIndexBuffer], a
ldh [hObjectStructIndexBuffer], a
ret nz
ld a, 6
ld [hObjectStructIndexBuffer], a
ldh [hObjectStructIndexBuffer], a
ld a, "▼"
ld [hl], a
ret

View File

@@ -1,7 +1,7 @@
; LCD handling
Unreferenced_Function547::
ld a, [hLCDCPointer]
ldh a, [hLCDCPointer]
cp rSCX - $ff00
ret nz
ld c, a
@@ -11,18 +11,18 @@ Unreferenced_Function547::
LCD::
push af
ld a, [hLCDCPointer]
ldh a, [hLCDCPointer]
and a
jr z, .done
; At this point it's assumed we're in WRAM bank 5!
push bc
ld a, [rLY]
ldh a, [rLY]
ld c, a
ld b, HIGH(wLYOverrides)
ld a, [bc]
ld b, a
ld a, [hLCDCPointer]
ldh a, [hLCDCPointer]
ld c, a
ld a, b
ld [$ff00+c], a
@@ -36,37 +36,37 @@ DisableLCD::
; Turn the LCD off
; Don't need to do anything if the LCD is already off
ld a, [rLCDC]
ldh a, [rLCDC]
bit rLCDC_ENABLE, a
ret z
xor a
ld [rIF], a
ld a, [rIE]
ldh [rIF], a
ldh a, [rIE]
ld b, a
; Disable VBlank
res 0, a ; vblank
ld [rIE], a
ldh [rIE], a
.wait
; Wait until VBlank would normally happen
ld a, [rLY]
ldh a, [rLY]
cp LY_VBLANK + 1
jr nz, .wait
ld a, [rLCDC]
ldh a, [rLCDC]
and $ff ^ (1 << rLCDC_ENABLE)
ld [rLCDC], a
ldh [rLCDC], a
xor a
ld [rIF], a
ldh [rIF], a
ld a, b
ld [rIE], a
ldh [rIE], a
ret
EnableLCD::
ld a, [rLCDC]
ldh a, [rLCDC]
set rLCDC_ENABLE, a
ld [rLCDC], a
ldh [rLCDC], a
ret

View File

@@ -49,7 +49,7 @@ GetMapSceneID::
; Searches the scene script table for the map group and number loaded in bc, and returns the wram pointer in de.
; If the map is not in the scene script table, returns carry.
push bc
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(MapScenes)
rst Bankswitch
@@ -97,7 +97,7 @@ OverworldTextModeSwitch::
ret
LoadMapPart::
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, [wTilesetBlocksBank]
@@ -207,10 +207,10 @@ endr
ReturnToMapFromSubmenu::
ld a, MAPSETUP_SUBMENU
ld [hMapEntryMethod], a
ldh [hMapEntryMethod], a
farcall RunMapSetupScript
xor a
ld [hMapEntryMethod], a
ldh [hMapEntryMethod], a
ret
CheckWarpTile::
@@ -236,7 +236,7 @@ GetDestinationWarpNumber::
farcall CheckWarpCollision
ret nc
ld a, [hROMBank]
ldh a, [hROMBank]
push af
call SwitchToMapScriptsBank
@@ -306,7 +306,7 @@ GetDestinationWarpNumber::
ret
CopyWarpData::
ld a, [hROMBank]
ldh a, [hROMBank]
push af
call SwitchToMapScriptsBank
@@ -708,14 +708,14 @@ LoadBlockData::
ret
ChangeMap::
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld hl, wOverworldMapBlocks
ld a, [wMapWidth]
ld [hConnectedMapWidth], a
ldh [hConnectedMapWidth], a
add $6
ld [hConnectionStripLength], a
ldh [hConnectionStripLength], a
ld c, a
ld b, 0
add hl, bc
@@ -734,7 +734,7 @@ ChangeMap::
ld b, a
.row
push hl
ld a, [hConnectedMapWidth]
ldh a, [hConnectedMapWidth]
ld c, a
.col
ld a, [de]
@@ -743,7 +743,7 @@ ChangeMap::
dec c
jr nz, .col
pop hl
ld a, [hConnectionStripLength]
ldh a, [hConnectionStripLength]
add l
ld l, a
jr nc, .okay
@@ -775,9 +775,9 @@ FillMapConnections::
ld a, [wNorthConnectionStripLocation + 1]
ld d, a
ld a, [wNorthConnectionStripLength]
ld [hConnectionStripLength], a
ldh [hConnectionStripLength], a
ld a, [wNorthConnectedMapWidth]
ld [hConnectedMapWidth], a
ldh [hConnectedMapWidth], a
call FillNorthConnectionStrip
.South:
@@ -798,9 +798,9 @@ FillMapConnections::
ld a, [wSouthConnectionStripLocation + 1]
ld d, a
ld a, [wSouthConnectionStripLength]
ld [hConnectionStripLength], a
ldh [hConnectionStripLength], a
ld a, [wSouthConnectedMapWidth]
ld [hConnectedMapWidth], a
ldh [hConnectedMapWidth], a
call FillSouthConnectionStrip
.West:
@@ -823,7 +823,7 @@ FillMapConnections::
ld a, [wWestConnectionStripLength]
ld b, a
ld a, [wWestConnectedMapWidth]
ld [hConnectionStripLength], a
ldh [hConnectionStripLength], a
call FillWestConnectionStrip
.East:
@@ -846,7 +846,7 @@ FillMapConnections::
ld a, [wEastConnectionStripLength]
ld b, a
ld a, [wEastConnectedMapWidth]
ld [hConnectionStripLength], a
ldh [hConnectionStripLength], a
call FillEastConnectionStrip
.Done:
@@ -859,7 +859,7 @@ FillSouthConnectionStrip::
push de
push hl
ld a, [hConnectionStripLength]
ldh a, [hConnectionStripLength]
ld b, a
.x
ld a, [hli]
@@ -869,7 +869,7 @@ FillSouthConnectionStrip::
jr nz, .x
pop hl
ld a, [hConnectedMapWidth]
ldh a, [hConnectedMapWidth]
ld e, a
ld d, 0
add hl, de
@@ -891,7 +891,7 @@ FillEastConnectionStrip::
.loop
ld a, [wMapWidth]
add 6
ld [hConnectedMapWidth], a
ldh [hConnectedMapWidth], a
push de
@@ -907,13 +907,13 @@ FillEastConnectionStrip::
inc de
pop hl
ld a, [hConnectionStripLength]
ldh a, [hConnectionStripLength]
ld e, a
ld d, 0
add hl, de
pop de
ld a, [hConnectedMapWidth]
ldh a, [hConnectedMapWidth]
add e
ld e, a
jr nc, .okay
@@ -953,7 +953,7 @@ CallMapScript::
RunMapCallback::
; Will run the first callback found with execution index equal to a.
ld b, a
ld a, [hROMBank]
ldh a, [hROMBank]
push af
call SwitchToMapScriptsBank
call .FindCallback
@@ -1018,7 +1018,7 @@ ExecuteCallbackScript::
ret
MapTextbox::
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, b
@@ -1028,12 +1028,12 @@ MapTextbox::
call SpeechTextBox
call SafeUpdateSprites
ld a, 1
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
call ApplyTilemap
pop hl
call PrintTextBoxText
xor a
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
pop af
rst Bankswitch
@@ -1042,10 +1042,10 @@ MapTextbox::
Call_a_de::
; Call a:de.
ld [hBuffer], a
ld a, [hROMBank]
ldh [hBuffer], a
ldh a, [hROMBank]
push af
ld a, [hBuffer]
ldh a, [hBuffer]
rst Bankswitch
call .de
@@ -1060,7 +1060,7 @@ Call_a_de::
GetMovementData::
; Initialize the movement data for object c at b:hl
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, b
rst Bankswitch
@@ -1078,7 +1078,7 @@ GetScriptByte::
push hl
push bc
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, [wScriptBank]
rst Bankswitch
@@ -1125,7 +1125,7 @@ CoordinatesEventText::
db "@"
CheckObjectMask::
ld a, [hMapObjectIndexBuffer]
ldh a, [hMapObjectIndexBuffer]
ld e, a
ld d, $0
ld hl, wObjectMasks
@@ -1134,7 +1134,7 @@ CheckObjectMask::
ret
MaskObject::
ld a, [hMapObjectIndexBuffer]
ldh a, [hMapObjectIndexBuffer]
ld e, a
ld d, $0
ld hl, wObjectMasks
@@ -1143,7 +1143,7 @@ MaskObject::
ret
UnmaskObject::
ld a, [hMapObjectIndexBuffer]
ldh a, [hMapObjectIndexBuffer]
ld e, a
ld d, $0
ld hl, wObjectMasks
@@ -1163,7 +1163,7 @@ ScrollMapDown::
ld d, a
call UpdateBGMapRow
ld a, $1
ld [hBGMapUpdate], a
ldh [hBGMapUpdate], a
ret
ScrollMapUp::
@@ -1186,7 +1186,7 @@ ScrollMapUp::
ld d, a
call UpdateBGMapRow
ld a, $1
ld [hBGMapUpdate], a
ldh [hBGMapUpdate], a
ret
ScrollMapRight::
@@ -1201,7 +1201,7 @@ ScrollMapRight::
ld d, a
call UpdateBGMapColumn
ld a, $1
ld [hBGMapUpdate], a
ldh [hBGMapUpdate], a
ret
ScrollMapLeft::
@@ -1223,7 +1223,7 @@ ScrollMapLeft::
ld d, a
call UpdateBGMapColumn
ld a, $1
ld [hBGMapUpdate], a
ldh [hBGMapUpdate], a
ret
BackupBGMapRow::
@@ -1284,7 +1284,7 @@ UpdateBGMapRow::
dec c
jr nz, .loop
ld a, SCREEN_WIDTH
ld [hBGMapTileCount], a
ldh [hBGMapTileCount], a
ret
UpdateBGMapColumn::
@@ -1310,7 +1310,7 @@ UpdateBGMapColumn::
dec c
jr nz, .loop
ld a, SCREEN_HEIGHT
ld [hBGMapTileCount], a
ldh [hBGMapTileCount], a
ret
Unreferenced_Function2816::
@@ -1328,10 +1328,10 @@ LoadTilesetGFX::
ld a, [wTilesetBank]
ld e, a
ld a, [rSVBK]
ldh a, [rSVBK]
push af
ld a, BANK(wDecompressScratch)
ld [rSVBK], a
ldh [rSVBK], a
ld a, e
ld de, wDecompressScratch
@@ -1342,10 +1342,10 @@ LoadTilesetGFX::
ld bc, $60 tiles
call CopyBytes
ld a, [rVBK]
ldh a, [rVBK]
push af
ld a, $1
ld [rVBK], a
ldh [rVBK], a
ld hl, wDecompressScratch + $60 tiles
ld de, vTiles2
@@ -1353,10 +1353,10 @@ LoadTilesetGFX::
call CopyBytes
pop af
ld [rVBK], a
ldh [rVBK], a
pop af
ld [rSVBK], a
ldh [rSVBK], a
; These tilesets support dynamic per-mapgroup roof tiles.
ld a, [wMapTileset]
@@ -1373,7 +1373,7 @@ LoadTilesetGFX::
.skip_roof
xor a
ld [hTileAnimFrame], a
ldh [hTileAnimFrame], a
ret
BufferScreen::
@@ -1412,7 +1412,7 @@ SaveScreen::
ld de, wScreenSave
ld a, [wMapWidth]
add 6
ld [hMapObjectIndexBuffer], a
ldh [hMapObjectIndexBuffer], a
ld a, [wPlayerStepDirection]
and a
jr z, .down
@@ -1426,7 +1426,7 @@ SaveScreen::
.up
ld de, wScreenSave + SCREEN_META_WIDTH
ld a, [hMapObjectIndexBuffer]
ldh a, [hMapObjectIndexBuffer]
ld c, a
ld b, 0
add hl, bc
@@ -1458,7 +1458,7 @@ LoadNeighboringBlockData::
ld l, a
ld a, [wMapWidth]
add 6
ld [hConnectionStripLength], a
ldh [hConnectionStripLength], a
ld de, wScreenSave
ld b, SCREEN_META_WIDTH
ld c, SCREEN_META_HEIGHT
@@ -1483,7 +1483,7 @@ SaveScreen_LoadNeighbor::
.okay
pop hl
ld a, [hConnectionStripLength]
ldh a, [hConnectionStripLength]
ld c, a
ld b, 0
add hl, bc
@@ -1772,7 +1772,7 @@ CheckFacingBGEvent::
ret z
ld c, a
ld a, [hROMBank]
ldh a, [hROMBank]
push af
call SwitchToMapScriptsBank
call CheckIfFacingTileCoordIsBGEvent
@@ -1826,7 +1826,7 @@ CheckCurrentMapCoordEvents::
ret z
; Copy the coord event count into c.
ld c, a
ld a, [hROMBank]
ldh a, [hROMBank]
push af
call SwitchToMapScriptsBank
call .CoordEventCheck
@@ -1893,7 +1893,7 @@ CheckCurrentMapCoordEvents::
FadeToMenu::
xor a
ld [hBGMapMode], a
ldh [hBGMapMode], a
call LoadStandardMenuHeader
farcall FadeOutPalettes
call ClearSprites
@@ -1943,7 +1943,7 @@ ReturnToMapWithSpeechTextbox::
call UpdateTimePals
call DelayFrame
ld a, $1
ld [hMapAnims], a
ldh [hMapAnims], a
pop af
ret
@@ -1953,7 +1953,7 @@ ReloadTilesetAndPalettes::
farcall RefreshSprites
call LoadStandardFont
call LoadFontsExtra
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, [wMapGroup]
ld b, a
@@ -2023,7 +2023,7 @@ GetMapField::
ld c, a
GetAnyMapField::
; bankswitch
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(MapGroupPointers)
rst Bankswitch
@@ -2067,7 +2067,7 @@ GetAnyMapAttributesBank::
CopyMapPartial::
; Copy map data bank, tileset, environment, and map data address
; from the current map's entry within its group.
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(MapGroupPointers)
rst Bankswitch

View File

@@ -20,7 +20,7 @@ GetSpriteVTile::
ld hl, wUsedSprites + 2
ld c, SPRITE_GFX_LIST_CAPACITY - 1
ld b, a
ld a, [hMapObjectIndexBuffer]
ldh a, [hMapObjectIndexBuffer]
cp 0
jr z, .nope
ld a, b
@@ -54,7 +54,7 @@ DoesSpriteHaveFacings::
push hl
ld b, a
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(_DoesSpriteHaveFacings)
rst Bankswitch
@@ -96,7 +96,7 @@ GetTileCollision::
ld d, 0
add hl, de
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(TileCollisionTable)
rst Bankswitch
@@ -210,14 +210,14 @@ GetMapObject::
CheckObjectVisibility::
; Sets carry if the object is not visible on the screen.
ld [hMapObjectIndexBuffer], a
ldh [hMapObjectIndexBuffer], a
call GetMapObject
ld hl, MAPOBJECT_OBJECT_STRUCT_ID
add hl, bc
ld a, [hl]
cp -1
jr z, .not_visible
ld [hObjectStructIndexBuffer], a
ldh [hObjectStructIndexBuffer], a
call GetObjectStruct
and a
ret
@@ -301,21 +301,21 @@ CheckObjectTime::
ret
; unused
ld [hMapObjectIndexBuffer], a
ldh [hMapObjectIndexBuffer], a
call GetMapObject
call CopyObjectStruct
ret
_CopyObjectStruct::
ld [hMapObjectIndexBuffer], a
ldh [hMapObjectIndexBuffer], a
call UnmaskObject
ld a, [hMapObjectIndexBuffer]
ldh a, [hMapObjectIndexBuffer]
call GetMapObject
farcall CopyObjectStruct
ret
ApplyDeletionToMapObject::
ld [hMapObjectIndexBuffer], a
ldh [hMapObjectIndexBuffer], a
call GetMapObject
ld hl, MAPOBJECT_OBJECT_STRUCT_ID
add hl, bc
@@ -394,7 +394,7 @@ Unreferenced_Function19b8:
LoadMovementDataPointer::
; Load the movement data pointer for object a.
ld [wMovementObject], a
ld a, [hROMBank]
ldh a, [hROMBank]
ld [wMovementDataPointer], a
ld a, l
ld [wMovementDataPointer + 1], a
@@ -484,7 +484,7 @@ endr
CopySpriteMovementData::
ld l, a
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(SpriteMovementData)
rst Bankswitch
@@ -551,7 +551,7 @@ endr
_GetMovementByte::
; Switch to the movement data bank
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, [hli]
rst Bankswitch

View File

@@ -9,7 +9,7 @@ CopyMenuHeader::
ld de, wMenuHeader
ld bc, wMenuHeaderEnd - wMenuHeader
call CopyBytes
ld a, [hROMBank]
ldh a, [hROMBank]
ld [wMenuDataBank], a
ret
@@ -59,7 +59,7 @@ Call_ExitMenu::
VerticalMenu::
xor a
ld [hBGMapMode], a
ldh [hBGMapMode], a
call MenuBox
call UpdateSprites
call PlaceVerticalMenuItems
@@ -229,17 +229,17 @@ DrawVariableLengthMenuBox::
MenuWriteText::
xor a
ld [hBGMapMode], a
ldh [hBGMapMode], a
call GetMenuIndexSet ; sort out the text
call RunMenuItemPrintingFunction ; actually write it
call SafeUpdateSprites
ld a, [hOAMUpdate]
ldh a, [hOAMUpdate]
push af
ld a, $1
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
call ApplyTilemap
pop af
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
ret
AutomaticGetMenuBottomCoord::
@@ -455,10 +455,10 @@ ClearWindowData::
ld hl, w2DMenuCursorInitY
call .bytefill
ld a, [rSVBK]
ldh a, [rSVBK]
push af
ld a, BANK(wWindowStack)
ld [rSVBK], a
ldh [rSVBK], a
xor a
ld hl, wWindowStackBottom
@@ -470,7 +470,7 @@ ClearWindowData::
ld [wWindowStackPointer + 1], a
pop af
ld [rSVBK], a
ldh [rSVBK], a
ret
.bytefill
@@ -505,10 +505,10 @@ MenuTextBoxWaitButton::
ret
Place2DMenuItemName::
ld [hBuffer], a
ld a, [hROMBank]
ldh [hBuffer], a
ldh a, [hROMBank]
push af
ld a, [hBuffer]
ldh a, [hBuffer]
rst Bankswitch
call PlaceString
@@ -518,21 +518,21 @@ Place2DMenuItemName::
ret
_2DMenu::
ld a, [hROMBank]
ldh a, [hROMBank]
ld [wMenuData_2DMenuItemStringsBank], a
farcall _2DMenu_
ld a, [wMenuCursorBuffer]
ret
InterpretBattleMenu::
ld a, [hROMBank]
ldh a, [hROMBank]
ld [wMenuData_2DMenuItemStringsBank], a
farcall _InterpretBattleMenu
ld a, [wMenuCursorBuffer]
ret
InterpretMobileMenu::
ld a, [hROMBank]
ldh a, [hROMBank]
ld [wMenuData_2DMenuItemStringsBank], a
farcall _InterpretMobileMenu
ld a, [wMenuCursorBuffer]

View File

@@ -20,7 +20,7 @@ Function3e32::
.okay
ld hl, $c822
set 6, [hl]
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(Function110030)
ld [$c981], a
@@ -51,7 +51,7 @@ Function3e60::
ret
MobileReceive::
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(_MobileReceive)
ld [$c981], a
@@ -71,17 +71,17 @@ Timer::
push de
push hl
ld a, [hMobile]
ldh a, [hMobile]
and a
jr z, .pop_ret
xor a
ld [rTAC], a
ldh [rTAC], a
; Turn off timer interrupt
ld a, [rIF]
ldh a, [rIF]
and 1 << VBLANK | 1 << LCD_STAT | 1 << SERIAL | 1 << JOYPAD
ld [rIF], a
ldh [rIF], a
ld a, [$c86a]
or a
@@ -91,11 +91,11 @@ Timer::
bit 1, a
jr nz, .skip_Timer
ld a, [rSC]
ldh a, [rSC]
and 1 << rSC_ON
jr nz, .skip_Timer
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(_Timer)
ld [$c981], a
@@ -109,11 +109,11 @@ Timer::
rst Bankswitch
.skip_Timer
ld a, [rTMA]
ld [rTIMA], a
ldh a, [rTMA]
ldh [rTIMA], a
ld a, 1 << rTAC_ON | rTAC_65536_HZ
ld [rTAC], a
ldh [rTAC], a
.pop_ret
pop hl
@@ -124,7 +124,7 @@ Timer::
Unreferenced_Function3ed7::
ld [$dc02], a
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(Function114243)
rst Bankswitch

View File

@@ -10,7 +10,7 @@ GetBaseData::
push bc
push de
push hl
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(BaseData)
rst Bankswitch

View File

@@ -89,7 +89,7 @@ _PrepMonFrontpic::
predef GetMonFrontpic
pop hl
xor a
ld [hGraphicStartTile], a
ldh [hGraphicStartTile], a
lb bc, 7, 7
predef PlaceGraphic
xor a

View File

@@ -163,10 +163,10 @@ ScrollingMenuJoypad::
GetMenuJoypad::
push bc
push af
ld a, [hJoyLast]
ldh a, [hJoyLast]
and D_PAD
ld b, a
ld a, [hJoyPressed]
ldh a, [hJoyPressed]
and BUTTONS
or b
ld b, a

View File

@@ -12,7 +12,7 @@ NamesPointers::
GetName::
; Return name wCurSpecies from name list wNamedObjectTypeBuffer in wStringBuffer1.
ld a, [hROMBank]
ldh a, [hROMBank]
push af
push hl
push bc
@@ -112,7 +112,7 @@ GetBasePokemonName::
GetPokemonName::
; Get Pokemon name for wNamedObjectIndexBuffer.
ld a, [hROMBank]
ldh a, [hROMBank]
push af
push hl
ld a, BANK(PokemonNames)

View File

@@ -6,28 +6,28 @@ UpdatePalsIfCGB::
; return carry if successful
; check cgb
ld a, [hCGB]
ldh a, [hCGB]
and a
ret z
UpdateCGBPals::
; return carry if successful
; any pals to update?
ld a, [hCGBPalUpdate]
ldh a, [hCGBPalUpdate]
and a
ret z
ForceUpdateCGBPals::
ld a, [rSVBK]
ldh a, [rSVBK]
push af
ld a, BANK(wBGPals2)
ld [rSVBK], a
ldh [rSVBK], a
ld hl, wBGPals2
; copy 8 pals to bgpd
ld a, 1 << rBGPI_AUTO_INCREMENT
ld [rBGPI], a
ldh [rBGPI], a
ld c, LOW(rBGPD)
ld b, 8 / 2
.bgp
@@ -43,7 +43,7 @@ endr
; copy 8 pals to obpd
ld a, 1 << rOBPI_AUTO_INCREMENT
ld [rOBPI], a
ldh [rOBPI], a
ld c, LOW(rOBPD)
ld b, 8 / 2
.obp
@@ -56,11 +56,11 @@ endr
jr nz, .obp
pop af
ld [rSVBK], a
ldh [rSVBK], a
; clear pal update queue
xor a
ld [hCGBPalUpdate], a
ldh [hCGBPalUpdate], a
scf
ret
@@ -70,38 +70,38 @@ DmgToCgbBGPals::
; input: a -> bgp
ld [rBGP], a
ldh [rBGP], a
push af
; Don't need to be here if DMG
ld a, [hCGB]
ldh a, [hCGB]
and a
jr z, .end
push hl
push de
push bc
ld a, [rSVBK]
ldh a, [rSVBK]
push af
ld a, BANK(wBGPals2)
ld [rSVBK], a
ldh [rSVBK], a
; copy & reorder bg pal buffer
ld hl, wBGPals2 ; to
ld de, wBGPals1 ; from
; order
ld a, [rBGP]
ldh a, [rBGP]
ld b, a
; all pals
ld c, 8
call CopyPals
; request pal update
ld a, 1
ld [hCGBPalUpdate], a
ldh [hCGBPalUpdate], a
pop af
ld [rSVBK], a
ldh [rSVBK], a
pop bc
pop de
pop hl
@@ -116,49 +116,49 @@ DmgToCgbObjPals::
; e -> obp2
ld a, e
ld [rOBP0], a
ldh [rOBP0], a
ld a, d
ld [rOBP1], a
ldh [rOBP1], a
ld a, [hCGB]
ldh a, [hCGB]
and a
ret z
push hl
push de
push bc
ld a, [rSVBK]
ldh a, [rSVBK]
push af
ld a, BANK(wOBPals2)
ld [rSVBK], a
ldh [rSVBK], a
; copy & reorder obj pal buffer
ld hl, wOBPals2 ; to
ld de, wOBPals1 ; from
; order
ld a, [rOBP0]
ldh a, [rOBP0]
ld b, a
; all pals
ld c, 8
call CopyPals
; request pal update
ld a, 1
ld [hCGBPalUpdate], a
ldh [hCGBPalUpdate], a
pop af
ld [rSVBK], a
ldh [rSVBK], a
pop bc
pop de
pop hl
ret
DmgToCgbObjPal0::
ld [rOBP0], a
ldh [rOBP0], a
push af
; Don't need to be here if not CGB
ld a, [hCGB]
ldh a, [hCGB]
and a
jr z, .dmg
@@ -166,22 +166,22 @@ DmgToCgbObjPal0::
push de
push bc
ld a, [rSVBK]
ldh a, [rSVBK]
push af
ld a, BANK(wOBPals2)
ld [rSVBK], a
ldh [rSVBK], a
ld hl, wOBPals2 palette 0
ld de, wOBPals1 palette 0
ld a, [rOBP0]
ldh a, [rOBP0]
ld b, a
ld c, 1
call CopyPals
ld a, 1
ld [hCGBPalUpdate], a
ldh [hCGBPalUpdate], a
pop af
ld [rSVBK], a
ldh [rSVBK], a
pop bc
pop de
@@ -192,10 +192,10 @@ DmgToCgbObjPal0::
ret
DmgToCgbObjPal1::
ld [rOBP1], a
ldh [rOBP1], a
push af
ld a, [hCGB]
ldh a, [hCGB]
and a
jr z, .dmg
@@ -203,22 +203,22 @@ DmgToCgbObjPal1::
push de
push bc
ld a, [rSVBK]
ldh a, [rSVBK]
push af
ld a, BANK(wOBPals2)
ld [rSVBK], a
ldh [rSVBK], a
ld hl, wOBPals2 palette 1
ld de, wOBPals1 palette 1
ld a, [rOBP1]
ldh a, [rOBP1]
ld b, a
ld c, 1
call CopyPals
ld a, 1
ld [hCGBPalUpdate], a
ldh [hCGBPalUpdate], a
pop af
ld [rSVBK], a
ldh [rSVBK], a
pop bc
pop de
@@ -281,12 +281,12 @@ endr
ret
ClearVBank1::
ld a, [hCGB]
ldh a, [hCGB]
and a
ret z
ld a, 1
ld [rVBK], a
ldh [rVBK], a
ld hl, VRAM_Begin
ld bc, VRAM_End - VRAM_Begin
@@ -294,28 +294,28 @@ ClearVBank1::
call ByteFill
ld a, 0
ld [rVBK], a
ldh [rVBK], a
ret
ret_d90::
ret
ReloadSpritesNoPalettes::
ld a, [hCGB]
ldh a, [hCGB]
and a
ret z
ld a, [rSVBK]
ldh a, [rSVBK]
push af
ld a, BANK(wBGPals2)
ld [rSVBK], a
ldh [rSVBK], a
ld hl, wBGPals2
ld bc, (8 palettes) + (2 palettes)
xor a
call ByteFill
pop af
ld [rSVBK], a
ldh [rSVBK], a
ld a, 1
ld [hCGBPalUpdate], a
ldh [hCGBPalUpdate], a
call DelayFrame
ret

View File

@@ -3,7 +3,7 @@ Predef::
; Preserves bc, de, hl and f.
ld [wPredefID], a
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(GetPredefPointer)

View File

@@ -55,7 +55,7 @@ PrintLetterDelay::
jr nz, .wait
; Wait one frame if holding A or B.
ld a, [hJoyDown]
ldh a, [hJoyDown]
bit A_BUTTON_F, a
jr z, .checkb
jr .delay
@@ -74,7 +74,7 @@ PrintLetterDelay::
.end
pop af
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
pop bc
pop de
pop hl
@@ -107,10 +107,10 @@ MobilePrintNum::
ret
FarPrintText::
ld [hBuffer], a
ld a, [hROMBank]
ldh [hBuffer], a
ldh a, [hROMBank]
push af
ld a, [hBuffer]
ldh a, [hBuffer]
rst Bankswitch
call PrintText

View File

@@ -1,6 +1,6 @@
QueueScript::
; Push pointer hl in the current bank to wQueuedScriptBank.
ld a, [hROMBank]
ldh a, [hROMBank]
FarQueueScript::
; Push pointer a:hl to wQueuedScriptBank.

View File

@@ -13,17 +13,17 @@ Random::
push bc
ld a, [rDIV]
ldh a, [rDIV]
ld b, a
ld a, [hRandomAdd]
ldh a, [hRandomAdd]
adc b
ld [hRandomAdd], a
ldh [hRandomAdd], a
ld a, [rDIV]
ldh a, [rDIV]
ld b, a
ld a, [hRandomSub]
ldh a, [hRandomSub]
sbc b
ld [hRandomSub], a
ldh [hRandomSub], a
pop bc
ret
@@ -34,7 +34,7 @@ BattleRandom::
; It handles all RNG calls in the battle engine, allowing
; link battles to remain in sync using a shared PRNG.
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(_BattleRandom)
rst Bankswitch
@@ -67,7 +67,7 @@ RandomRange::
push bc
.loop
call Random
ld a, [hRandomAdd]
ldh a, [hRandomAdd]
ld c, a
add b
jr c, .loop

View File

@@ -8,7 +8,7 @@ SECTION "rst8", ROM0 ; rst FarCall
jp FarCall_hl
SECTION "rst10", ROM0 ; rst Bankswitch
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
ret

View File

@@ -1,6 +1,6 @@
ScrollingMenu::
call CopyMenuData
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(_ScrollingMenu)
@@ -43,18 +43,18 @@ InitScrollingMenu::
JoyTextDelay_ForcehJoyDown::
call DelayFrame
ld a, [hInMenu]
ldh a, [hInMenu]
push af
ld a, $1
ld [hInMenu], a
ldh [hInMenu], a
call JoyTextDelay
pop af
ld [hInMenu], a
ldh [hInMenu], a
ld a, [hJoyLast]
ldh a, [hJoyLast]
and D_RIGHT + D_LEFT + D_UP + D_DOWN
ld c, a
ld a, [hJoyPressed]
ldh a, [hJoyPressed]
and A_BUTTON + B_BUTTON + SELECT + START
or c
ld c, a

View File

@@ -6,7 +6,7 @@ Serial::
push de
push hl
ld a, [hMobileReceive]
ldh a, [hMobileReceive]
and a
jr nz, .mobile
@@ -14,24 +14,24 @@ Serial::
bit 0, a
jr nz, .printer
ld a, [hSerialConnectionStatus]
ldh a, [hSerialConnectionStatus]
inc a ; is it equal to CONNECTION_NOT_ESTABLISHED?
jr z, .establish_connection
ld a, [rSB]
ld [hSerialReceive], a
ldh a, [rSB]
ldh [hSerialReceive], a
ld a, [hSerialSend]
ld [rSB], a
ldh a, [hSerialSend]
ldh [rSB], a
ld a, [hSerialConnectionStatus]
ldh a, [hSerialConnectionStatus]
cp USING_INTERNAL_CLOCK
jr z, .player2
ld a, 0 << rSC_ON
ld [rSC], a
ldh [rSC], a
ld a, 1 << rSC_ON
ld [rSC], a
ldh [rSC], a
jr .player2
.mobile
@@ -43,43 +43,43 @@ Serial::
jr .end
.establish_connection
ld a, [rSB]
ldh a, [rSB]
cp USING_EXTERNAL_CLOCK
jr z, .player1
cp USING_INTERNAL_CLOCK
jr nz, .player2
.player1
ld [hSerialReceive], a
ld [hSerialConnectionStatus], a
ldh [hSerialReceive], a
ldh [hSerialConnectionStatus], a
cp USING_INTERNAL_CLOCK
jr z, ._player2
xor a
ld [rSB], a
ldh [rSB], a
ld a, 3
ld [rDIV], a
ldh [rDIV], a
.wait_bit_7
ld a, [rDIV]
ldh a, [rDIV]
bit 7, a
jr nz, .wait_bit_7
ld a, 0 << rSC_ON
ld [rSC], a
ldh [rSC], a
ld a, 1 << rSC_ON
ld [rSC], a
ldh [rSC], a
jr .player2
._player2
xor a
ld [rSB], a
ldh [rSB], a
.player2
ld a, TRUE
ld [hSerialReceivedNewData], a
ldh [hSerialReceivedNewData], a
ld a, SERIAL_NO_DATA_BYTE
ld [hSerialSend], a
ldh [hSerialSend], a
.end
pop hl
@@ -90,10 +90,10 @@ Serial::
Serial_ExchangeBytes::
ld a, $1
ld [hSerialIgnoringInitialData], a
ldh [hSerialIgnoringInitialData], a
.loop
ld a, [hl]
ld [hSerialSend], a
ldh [hSerialSend], a
call Serial_ExchangeByte
push bc
ld b, a
@@ -102,7 +102,7 @@ Serial_ExchangeBytes::
.wait
dec a
jr nz, .wait
ld a, [hSerialIgnoringInitialData]
ldh a, [hSerialIgnoringInitialData]
and a
ld a, b
pop bc
@@ -111,7 +111,7 @@ Serial_ExchangeBytes::
cp SERIAL_PREAMBLE_BYTE
jr nz, .loop
xor a
ld [hSerialIgnoringInitialData], a
ldh [hSerialIgnoringInitialData], a
jr .loop
.load
@@ -126,20 +126,20 @@ Serial_ExchangeBytes::
Serial_ExchangeByte::
.loop
xor a
ld [hSerialReceivedNewData], a
ld a, [hSerialConnectionStatus]
ldh [hSerialReceivedNewData], a
ldh a, [hSerialConnectionStatus]
cp USING_INTERNAL_CLOCK
jr nz, .not_player_2
ld a, (0 << rSC_ON) | 1
ld [rSC], a
ldh [rSC], a
ld a, (1 << rSC_ON) | 1
ld [rSC], a
ldh [rSC], a
.not_player_2
.loop2
ld a, [hSerialReceivedNewData]
ldh a, [hSerialReceivedNewData]
and a
jr nz, .reset_ffca
ld a, [hSerialConnectionStatus]
ldh a, [hSerialConnectionStatus]
cp USING_EXTERNAL_CLOCK
jr nz, .not_player_1_or_wLinkTimeoutFrames_zero
call CheckwLinkTimeoutFramesNonzero
@@ -159,7 +159,7 @@ Serial_ExchangeByte::
jp SerialDisconnected
.not_player_1_or_wLinkTimeoutFrames_zero
ld a, [rIE]
ldh a, [rIE]
and (1 << SERIAL) | (1 << TIMER) | (1 << LCD_STAT) | (1 << VBLANK)
cp 1 << SERIAL
jr nz, .loop2
@@ -171,7 +171,7 @@ Serial_ExchangeByte::
dec a
ld [wcf5d + 1], a
jr nz, .loop2
ld a, [hSerialConnectionStatus]
ldh a, [hSerialConnectionStatus]
cp USING_EXTERNAL_CLOCK
jr z, .reset_ffca
@@ -182,8 +182,8 @@ Serial_ExchangeByte::
.reset_ffca
xor a
ld [hSerialReceivedNewData], a
ld a, [rIE]
ldh [hSerialReceivedNewData], a
ldh a, [rIE]
and (1 << SERIAL) | (1 << TIMER) | (1 << LCD_STAT) | (1 << VBLANK)
sub 1 << SERIAL
jr nz, .rIE_not_equal_8
@@ -194,7 +194,7 @@ Serial_ExchangeByte::
ld [wcf5d + 1], a
.rIE_not_equal_8
ld a, [hSerialReceive]
ldh a, [hSerialReceive]
cp SERIAL_NO_DATA_BYTE
ret nz
call CheckwLinkTimeoutFramesNonzero
@@ -214,13 +214,13 @@ Serial_ExchangeByte::
jr z, SerialDisconnected
.linkTimeoutFrames_zero
ld a, [rIE]
ldh a, [rIE]
and (1 << SERIAL) | (1 << TIMER) | (1 << LCD_STAT) | (1 << VBLANK)
cp 1 << SERIAL
ld a, SERIAL_NO_DATA_BYTE
ret z
ld a, [hl]
ld [hSerialSend], a
ldh [hSerialSend], a
call DelayFrame
jp .loop
@@ -252,18 +252,18 @@ Serial_ExchangeLinkMenuSelection::
ld de, wOtherPlayerLinkMode
ld c, 2
ld a, TRUE
ld [hSerialIgnoringInitialData], a
ldh [hSerialIgnoringInitialData], a
.asm_847
call DelayFrame
ld a, [hl]
ld [hSerialSend], a
ldh [hSerialSend], a
call Serial_ExchangeByte
ld b, a
inc hl
ld a, [hSerialIgnoringInitialData]
ldh a, [hSerialIgnoringInitialData]
and a
ld a, FALSE
ld [hSerialIgnoringInitialData], a
ldh [hSerialIgnoringInitialData], a
jr nz, .asm_847
ld a, b
ld [de], a
@@ -348,14 +348,14 @@ LinkTransfer::
call .Receive
ld a, [wPlayerLinkAction]
add b
ld [hSerialSend], a
ld a, [hSerialConnectionStatus]
ldh [hSerialSend], a
ldh a, [hSerialConnectionStatus]
cp USING_INTERNAL_CLOCK
jr nz, .player_1
ld a, (0 << rSC_ON) | 1
ld [rSC], a
ldh [rSC], a
ld a, (1 << rSC_ON) | 1
ld [rSC], a
ldh [rSC], a
.player_1
call .Receive
@@ -363,13 +363,13 @@ LinkTransfer::
ret
.Receive:
ld a, [hSerialReceive]
ldh a, [hSerialReceive]
ld [wOtherPlayerLinkMode], a
and $f0
cp b
ret nz
xor a
ld [hSerialReceive], a
ldh [hSerialReceive], a
ld a, [wOtherPlayerLinkMode]
and $f
ld [wOtherPlayerLinkAction], a
@@ -378,14 +378,14 @@ LinkTransfer::
LinkDataReceived::
; Let the other system know that the data has been received.
xor a
ld [hSerialSend], a
ld a, [hSerialConnectionStatus]
ldh [hSerialSend], a
ldh a, [hSerialConnectionStatus]
cp USING_INTERNAL_CLOCK
ret nz
ld a, (0 << rSC_ON) | 1
ld [rSC], a
ldh [rSC], a
ld a, (1 << rSC_ON) | 1
ld [rSC], a
ldh [rSC], a
ret
Unreferenced_Function919::
@@ -393,11 +393,11 @@ Unreferenced_Function919::
and a
ret nz
ld a, USING_INTERNAL_CLOCK
ld [rSB], a
ldh [rSB], a
xor a
ld [hSerialReceive], a
ldh [hSerialReceive], a
ld a, 0 << rSC_ON
ld [rSC], a
ldh [rSC], a
ld a, 1 << rSC_ON
ld [rSC], a
ldh [rSC], a
ret

View File

@@ -1,5 +1,5 @@
PushLYOverrides::
ld a, [hLCDCPointer]
ldh a, [hLCDCPointer]
and a
ret z
@@ -19,7 +19,7 @@ PushLYOverrides::
_InitSpriteAnimStruct::
ld [wSpriteAnimIDBuffer], a
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(InitSpriteAnimStruct)
@@ -35,7 +35,7 @@ _InitSpriteAnimStruct::
ReinitSpriteAnimFrame::
ld [wSpriteAnimIDBuffer], a
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(_ReinitSpriteAnimFrame)

View File

@@ -1,6 +1,6 @@
DisableSpriteUpdates::
xor a
ld [hMapAnims], a
ldh [hMapAnims], a
ld a, [wVramState]
res 0, a
ld [wVramState], a
@@ -15,5 +15,5 @@ EnableSpriteUpdates::
set 0, a
ld [wVramState], a
ld a, $1
ld [hMapAnims], a
ldh [hMapAnims], a
ret

View File

@@ -1,5 +1,5 @@
HandleStoneQueue::
ld a, [hROMBank]
ldh a, [hROMBank]
push af
call SwitchToMapScriptsBank

View File

@@ -28,7 +28,7 @@ ClearTileMap::
call ByteFill
; Update the BG Map.
ld a, [rLCDC]
ldh a, [rLCDC]
bit rLCDC_ENABLE, a
ret z
jp WaitBGMap
@@ -309,12 +309,12 @@ PlaceWatashi: print_name PlaceWatashiText
PlaceKokoWa: print_name PlaceKokoWaText
PlaceMoveTargetsName::
ld a, [hBattleTurn]
ldh a, [hBattleTurn]
xor 1
jr PlaceMoveUsersName.place
PlaceMoveUsersName::
ld a, [hBattleTurn]
ldh a, [hBattleTurn]
.place:
push de
@@ -599,15 +599,15 @@ TextScroll::
Text_WaitBGMap::
push bc
ld a, [hOAMUpdate]
ldh a, [hOAMUpdate]
push af
ld a, 1
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
call WaitBGMap
pop af
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
pop bc
ret
@@ -626,7 +626,7 @@ UnloadBlinkingCursor::
FarString::
ld b, a
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, b
@@ -744,7 +744,7 @@ TextCommand_FAR::
; little endian
; [$16][addr][bank]
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, [hli]
@@ -753,7 +753,7 @@ TextCommand_FAR::
ld d, a
ld a, [hli]
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
push hl
@@ -763,7 +763,7 @@ TextCommand_FAR::
pop hl
pop af
ld [hROMBank], a
ldh [hROMBank], a
ld [MBC3RomBank], a
ret
@@ -905,7 +905,7 @@ TextCommand_EXIT::
push hl
push bc
call GetJoypad
ld a, [hJoyDown]
ldh a, [hJoyDown]
and A_BUTTON | B_BUTTON
jr nz, .done
ld c, 30
@@ -986,7 +986,7 @@ TextCommand_DOTS::
ld a, "…"
ld [hli], a
call GetJoypad
ld a, [hJoyDown]
ldh a, [hJoyDown]
and A_BUTTON | B_BUTTON
jr nz, .next
ld c, 10

View File

@@ -3,36 +3,36 @@ ClearBGPalettes::
WaitBGMap::
; Tell VBlank to update BG Map
ld a, 1 ; BG Map 0 tiles
ld [hBGMapMode], a
ldh [hBGMapMode], a
; Wait for it to do its magic
ld c, 4
call DelayFrames
ret
WaitBGMap2::
ld a, [hCGB]
ldh a, [hCGB]
and a
jr z, .bg0
ld a, 2
ld [hBGMapMode], a
ldh [hBGMapMode], a
ld c, 4
call DelayFrames
.bg0
ld a, 1
ld [hBGMapMode], a
ldh [hBGMapMode], a
ld c, 4
call DelayFrames
ret
IsCGB::
ld a, [hCGB]
ldh a, [hCGB]
and a
ret
ApplyTilemap::
ld a, [hCGB]
ldh a, [hCGB]
and a
jr z, .dmg
@@ -41,19 +41,19 @@ ApplyTilemap::
jr z, .dmg
ld a, 1
ld [hBGMapMode], a
ldh [hBGMapMode], a
jr CopyTilemapAtOnce
.dmg
; WaitBGMap
ld a, 1
ld [hBGMapMode], a
ldh [hBGMapMode], a
ld c, 4
call DelayFrames
ret
CGBOnly_CopyTilemapAtOnce::
ld a, [hCGB]
ldh a, [hCGB]
and a
jr z, WaitBGMap
@@ -65,52 +65,52 @@ CopyTilemapAtOnce::
ret
.CopyTilemapAtOnce:
ld a, [hBGMapMode]
ldh a, [hBGMapMode]
push af
xor a
ld [hBGMapMode], a
ldh [hBGMapMode], a
ld a, [hMapAnims]
ldh a, [hMapAnims]
push af
xor a
ld [hMapAnims], a
ldh [hMapAnims], a
.wait
ld a, [rLY]
ldh a, [rLY]
cp $7f
jr c, .wait
di
ld a, BANK(vTiles3)
ld [rVBK], a
ldh [rVBK], a
hlcoord 0, 0, wAttrMap
call .StackPointerMagic
ld a, BANK(vTiles0)
ld [rVBK], a
ldh [rVBK], a
hlcoord 0, 0
call .StackPointerMagic
.wait2
ld a, [rLY]
ldh a, [rLY]
cp $7f
jr c, .wait2
ei
pop af
ld [hMapAnims], a
ldh [hMapAnims], a
pop af
ld [hBGMapMode], a
ldh [hBGMapMode], a
ret
.StackPointerMagic:
; Copy all tiles to vBGMap
ld [hSPBuffer], sp
ld sp, hl
ld a, [hBGMapAddress + 1]
ldh a, [hBGMapAddress + 1]
ld h, a
ld l, 0
ld a, SCREEN_HEIGHT
ld [hTilesPerCycle], a
ldh [hTilesPerCycle], a
ld b, 1 << 1 ; not in v/hblank
ld c, LOW(rSTAT)
@@ -131,14 +131,14 @@ endr
ld de, BG_MAP_WIDTH - SCREEN_WIDTH
add hl, de
ld a, [hTilesPerCycle]
ldh a, [hTilesPerCycle]
dec a
ld [hTilesPerCycle], a
ldh [hTilesPerCycle], a
jr nz, .loop
ld a, [hSPBuffer]
ldh a, [hSPBuffer]
ld l, a
ld a, [hSPBuffer + 1]
ldh a, [hSPBuffer + 1]
ld h, a
ld sp, hl
ret
@@ -146,14 +146,14 @@ endr
SetPalettes::
; Inits the Palettes
; depending on the system the monochromes palettes or color palettes
ld a, [hCGB]
ldh a, [hCGB]
and a
jr nz, .SetPalettesForGameBoyColor
ld a, %11100100
ld [rBGP], a
ldh [rBGP], a
ld a, %11010000
ld [rOBP0], a
ld [rOBP1], a
ldh [rOBP0], a
ldh [rOBP1], a
ret
.SetPalettesForGameBoyColor:
@@ -169,23 +169,23 @@ ClearPalettes::
; Make all palettes white
; CGB: make all the palette colors white
ld a, [hCGB]
ldh a, [hCGB]
and a
jr nz, .cgb
; DMG: just change palettes to 0 (white)
xor a
ld [rBGP], a
ld [rOBP0], a
ld [rOBP1], a
ldh [rBGP], a
ldh [rOBP0], a
ldh [rOBP1], a
ret
.cgb
ld a, [rSVBK]
ldh a, [rSVBK]
push af
ld a, BANK(wBGPals2)
ld [rSVBK], a
ldh [rSVBK], a
; Fill wBGPals2 and wOBPals2 with $ffff (white)
ld hl, wBGPals2
@@ -194,11 +194,11 @@ ClearPalettes::
call ByteFill
pop af
ld [rSVBK], a
ldh [rSVBK], a
; Request palette update
ld a, 1
ld [hCGBPalUpdate], a
ldh [hCGBPalUpdate], a
ret
GetMemSGBLayout::
@@ -206,11 +206,11 @@ GetMemSGBLayout::
GetSGBLayout::
; load sgb packets unless dmg
ld a, [hCGB]
ldh a, [hCGB]
and a
jr nz, .sgb
ld a, [hSGB]
ldh a, [hSGB]
and a
ret z

View File

@@ -2,7 +2,7 @@
AskTimer::
push af
ld a, [hMobile]
ldh a, [hMobile]
and a
jr z, .not_mobile
call Timer
@@ -42,25 +42,25 @@ GetClock::
ld [hl], RTC_S
ld a, [de]
maskbits 60
ld [hRTCSeconds], a
ldh [hRTCSeconds], a
ld [hl], RTC_M
ld a, [de]
maskbits 60
ld [hRTCMinutes], a
ldh [hRTCMinutes], a
ld [hl], RTC_H
ld a, [de]
maskbits 24
ld [hRTCHours], a
ldh [hRTCHours], a
ld [hl], RTC_DL
ld a, [de]
ld [hRTCDayLo], a
ldh [hRTCDayLo], a
ld [hl], RTC_DH
ld a, [de]
ld [hRTCDayHi], a
ldh [hRTCDayHi], a
; unlatch clock / disable clock r/w
call CloseSRAM
@@ -71,16 +71,16 @@ FixDays::
; mod by 140
; check if day count > 255 (bit 8 set)
ld a, [hRTCDayHi] ; DH
ldh a, [hRTCDayHi] ; DH
bit 0, a
jr z, .daylo
; reset dh (bit 8)
res 0, a
ld [hRTCDayHi], a ; DH
ldh [hRTCDayHi], a ; DH
; mod 140
; mod twice since bit 8 (DH) was set
ld a, [hRTCDayLo] ; DL
ldh a, [hRTCDayLo] ; DL
.modh
sub 140
jr nc, .modh
@@ -90,7 +90,7 @@ FixDays::
add 140
; update dl
ld [hRTCDayLo], a ; DL
ldh [hRTCDayLo], a ; DL
; flag for sRTCStatusFlags
ld a, %01000000
@@ -98,7 +98,7 @@ FixDays::
.daylo
; quit if fewer than 140 days have passed
ld a, [hRTCDayLo] ; DL
ldh a, [hRTCDayLo] ; DL
cp 140
jr c, .quit
@@ -109,7 +109,7 @@ FixDays::
add 140
; update dl
ld [hRTCDayLo], a ; DL
ldh [hRTCDayLo], a ; DL
; flag for sRTCStatusFlags
ld a, %00100000
@@ -132,7 +132,7 @@ FixTime::
; store time in wCurDay, hHours, hMinutes, hSeconds
; second
ld a, [hRTCSeconds] ; S
ldh a, [hRTCSeconds] ; S
ld c, a
ld a, [wStartSecond]
add c
@@ -140,11 +140,11 @@ FixTime::
jr nc, .updatesec
add 60
.updatesec
ld [hSeconds], a
ldh [hSeconds], a
; minute
ccf ; carry is set, so turn it off
ld a, [hRTCMinutes] ; M
ldh a, [hRTCMinutes] ; M
ld c, a
ld a, [wStartMinute]
adc c
@@ -152,11 +152,11 @@ FixTime::
jr nc, .updatemin
add 60
.updatemin
ld [hMinutes], a
ldh [hMinutes], a
; hour
ccf ; carry is set, so turn it off
ld a, [hRTCHours] ; H
ldh a, [hRTCHours] ; H
ld c, a
ld a, [wStartHour]
adc c
@@ -164,11 +164,11 @@ FixTime::
jr nc, .updatehr
add 24
.updatehr
ld [hHours], a
ldh [hHours], a
; day
ccf ; carry is set, so turn it off
ld a, [hRTCDayLo] ; DL
ldh a, [hRTCDayLo] ; DL
ld c, a
ld a, [wStartDay]
adc c
@@ -184,11 +184,11 @@ InitTimeOfDay::
InitDayOfWeek::
call UpdateTime
ld a, [hHours]
ldh a, [hHours]
ld [wStringBuffer2 + 1], a
ld a, [hMinutes]
ldh a, [hMinutes]
ld [wStringBuffer2 + 2], a
ld a, [hSeconds]
ldh a, [hSeconds]
ld [wStringBuffer2 + 3], a
jr InitTime ; useless
@@ -203,11 +203,11 @@ PanicResetClock::
.ClearhRTC:
xor a
ld [hRTCSeconds], a
ld [hRTCMinutes], a
ld [hRTCHours], a
ld [hRTCDayLo], a
ld [hRTCDayHi], a
ldh [hRTCSeconds], a
ldh [hRTCMinutes], a
ldh [hRTCHours], a
ldh [hRTCDayLo], a
ldh [hRTCDayHi], a
ret
SetClock::
@@ -233,23 +233,23 @@ SetClock::
; seconds
ld [hl], RTC_S
ld a, [hRTCSeconds]
ldh a, [hRTCSeconds]
ld [de], a
; minutes
ld [hl], RTC_M
ld a, [hRTCMinutes]
ldh a, [hRTCMinutes]
ld [de], a
; hours
ld [hl], RTC_H
ld a, [hRTCHours]
ldh a, [hRTCHours]
ld [de], a
; day lo
ld [hl], RTC_DL
ld a, [hRTCDayLo]
ldh a, [hRTCDayLo]
ld [de], a
; day hi
ld [hl], RTC_DH
ld a, [hRTCDayHi]
ldh a, [hRTCDayHi]
res 6, a ; make sure timer is active
ld [de], a

View File

@@ -1,5 +1,5 @@
CheckTrainerBattle2::
ld a, [hROMBank]
ldh a, [hROMBank]
push af
call SwitchToMapScriptsBank
@@ -93,7 +93,7 @@ CheckTrainerBattle::
.startbattle
pop de
pop af
ld [hLastTalked], a
ldh [hLastTalked], a
ld a, b
ld [wEngineBuffer2], a
ld a, c
@@ -110,7 +110,7 @@ LoadTrainer_continue::
call GetMapScriptsBank
ld [wEngineBuffer1], a
ld a, [hLastTalked]
ldh a, [hLastTalked]
call GetMapObject
ld hl, MAPOBJECT_SCRIPT_POINTER

View File

@@ -12,7 +12,7 @@ VBlank::
push de
push hl
ld a, [hVBlank]
ldh a, [hVBlank]
and 7
ld e, a
@@ -63,29 +63,29 @@ VBlank0::
inc [hl]
; advance random variables
ld a, [rDIV]
ldh a, [rDIV]
ld b, a
ld a, [hRandomAdd]
ldh a, [hRandomAdd]
adc b
ld [hRandomAdd], a
ldh [hRandomAdd], a
ld a, [rDIV]
ldh a, [rDIV]
ld b, a
ld a, [hRandomSub]
ldh a, [hRandomSub]
sbc b
ld [hRandomSub], a
ldh [hRandomSub], a
ld a, [hROMBank]
ld [hROMBankBackup], a
ldh a, [hROMBank]
ldh [hROMBankBackup], a
ld a, [hSCX]
ld [rSCX], a
ld a, [hSCY]
ld [rSCY], a
ld a, [hWY]
ld [rWY], a
ld a, [hWX]
ld [rWX], a
ldh a, [hSCX]
ldh [rSCX], a
ldh a, [hSCY]
ldh [rSCY], a
ldh a, [hWY]
ldh [rWY], a
ldh a, [hWX]
ldh [rWX], a
; There's only time to call one of these in one vblank.
; Calls are in order of priority.
@@ -106,7 +106,7 @@ VBlank0::
.done
ld a, [hOAMUpdate]
ldh a, [hOAMUpdate]
and a
jr nz, .done_oam
call hTransferVirtualOAM
@@ -136,25 +136,25 @@ VBlank0::
ld a, BANK(_UpdateSound)
rst Bankswitch
call _UpdateSound
ld a, [hROMBankBackup]
ldh a, [hROMBankBackup]
rst Bankswitch
ld a, [hSeconds]
ld [hSecondsBackup], a
ldh a, [hSeconds]
ldh [hSecondsBackup], a
ret
VBlank2::
; sound only
ld a, [hROMBank]
ld [hROMBankBackup], a
ldh a, [hROMBank]
ldh [hROMBankBackup], a
ld a, BANK(_UpdateSound)
rst Bankswitch
call _UpdateSound
ld a, [hROMBankBackup]
ldh a, [hROMBankBackup]
rst Bankswitch
xor a
@@ -169,13 +169,13 @@ VBlank1::
; oam
; sound / lcd stat
ld a, [hROMBank]
ld [hROMBankBackup], a
ldh a, [hROMBank]
ldh [hROMBankBackup], a
ld a, [hSCX]
ld [rSCX], a
ld a, [hSCY]
ld [rSCY], a
ldh a, [hSCX]
ldh [rSCX], a
ldh a, [hSCY]
ldh [rSCY], a
call UpdatePals
jr c, .done
@@ -190,57 +190,57 @@ VBlank1::
ld [wVBlankOccurred], a
; get requested ints
ld a, [rIF]
ldh a, [rIF]
ld b, a
; discard requested ints
xor a
ld [rIF], a
ldh [rIF], a
; enable lcd stat
ld a, %10 ; lcd stat
ld [rIE], a
ldh [rIE], a
; rerequest serial int if applicable (still disabled)
; request lcd stat
ld a, b
and %1000 ; serial
or %10 ; lcd stat
ld [rIF], a
ldh [rIF], a
ei
ld a, BANK(_UpdateSound)
rst Bankswitch
call _UpdateSound
ld a, [hROMBankBackup]
ldh a, [hROMBankBackup]
rst Bankswitch
di
; get requested ints
ld a, [rIF]
ldh a, [rIF]
ld b, a
; discard requested ints
xor a
ld [rIF], a
ldh [rIF], a
; enable ints besides joypad
ld a, %1111 ; serial timer lcdstat vblank
ld [rIE], a
ldh [rIE], a
; rerequest ints
ld a, b
ld [rIF], a
ldh [rIF], a
ret
UpdatePals::
; update pals for either dmg or cgb
ld a, [hCGB]
ldh a, [hCGB]
and a
jp nz, UpdateCGBPals
; update gb pals
ld a, [wBGP]
ld [rBGP], a
ldh [rBGP], a
ld a, [wOBP0]
ld [rOBP0], a
ldh [rOBP0], a
ld a, [wOBP1]
ld [rOBP1], a
ldh [rOBP1], a
and a
ret
@@ -253,15 +253,15 @@ VBlank3::
; oam
; sound / lcd stat
ld a, [hROMBank]
ld [hROMBankBackup], a
ldh a, [hROMBank]
ldh [hROMBankBackup], a
ld a, [hSCX]
ld [rSCX], a
ld a, [hSCY]
ld [rSCY], a
ldh a, [hSCX]
ldh [rSCX], a
ldh a, [hSCY]
ldh [rSCY], a
ld a, [hCGBPalUpdate]
ldh a, [hCGBPalUpdate]
and a
call nz, ForceUpdateCGBPals
jr c, .done
@@ -275,24 +275,24 @@ VBlank3::
xor a
ld [wVBlankOccurred], a
ld a, [rIF]
ldh a, [rIF]
push af
xor a
ld [rIF], a
ldh [rIF], a
ld a, %10 ; lcd stat
ld [rIE], a
ld [rIF], a
ldh [rIE], a
ldh [rIF], a
ei
ld a, BANK(_UpdateSound)
rst Bankswitch
call _UpdateSound
ld a, [hROMBankBackup]
ldh a, [hROMBankBackup]
rst Bankswitch
di
; request lcdstat
ld a, [rIF]
ldh a, [rIF]
ld b, a
; and any other ints
pop af
@@ -300,13 +300,13 @@ VBlank3::
ld b, a
; reset ints
xor a
ld [rIF], a
ldh [rIF], a
; enable ints besides joypad
ld a, %1111 ; serial timer lcdstat vblank
ld [rIE], a
ldh [rIE], a
; request ints
ld a, b
ld [rIF], a
ldh [rIF], a
ret
VBlank4::
@@ -317,8 +317,8 @@ VBlank4::
; serial
; sound
ld a, [hROMBank]
ld [hROMBankBackup], a
ldh a, [hROMBank]
ldh [hROMBankBackup], a
call UpdateBGMap
call Serve2bppRequest
@@ -336,7 +336,7 @@ VBlank4::
rst Bankswitch
call _UpdateSound
ld a, [hROMBankBackup]
ldh a, [hROMBankBackup]
rst Bankswitch
ret
@@ -348,11 +348,11 @@ VBlank5::
; joypad
;
ld a, [hROMBank]
ld [hROMBankBackup], a
ldh a, [hROMBank]
ldh [hROMBankBackup], a
ld a, [hSCX]
ld [rSCX], a
ldh a, [hSCX]
ldh [rSCX], a
call UpdatePalsIfCGB
jr c, .done
@@ -367,25 +367,25 @@ VBlank5::
call Joypad
xor a
ld [rIF], a
ldh [rIF], a
ld a, %10 ; lcd stat
ld [rIE], a
ldh [rIE], a
; request lcd stat
ld [rIF], a
ldh [rIF], a
ei
ld a, BANK(_UpdateSound)
rst Bankswitch
call _UpdateSound
ld a, [hROMBankBackup]
ldh a, [hROMBankBackup]
rst Bankswitch
di
xor a
ld [rIF], a
ldh [rIF], a
; enable ints besides joypad
ld a, %1111 ; serial timer lcdstat vblank
ld [rIE], a
ldh [rIE], a
ret
VBlank6::
@@ -394,8 +394,8 @@ VBlank6::
; dma transfer
; sound
ld a, [hROMBank]
ld [hROMBankBackup], a
ldh a, [hROMBank]
ldh [hROMBankBackup], a
; inc frame counter
ld hl, hVBlankCounter
@@ -416,6 +416,6 @@ VBlank6::
rst Bankswitch
call _UpdateSound
ld a, [hROMBankBackup]
ldh a, [hROMBankBackup]
rst Bankswitch
ret

View File

@@ -3,17 +3,17 @@
DMATransfer::
; Return carry if the transfer is completed.
ld a, [hDMATransfer]
ldh a, [hDMATransfer]
and a
ret z
; Start transfer
ld [rHDMA5], a
ldh [rHDMA5], a
; Execution is halted until the transfer is complete.
xor a
ld [hDMATransfer], a
ldh [hDMATransfer], a
scf
ret
@@ -25,11 +25,11 @@ UpdateBGMapBuffer::
; Return carry on success.
ld a, [hBGMapUpdate]
ldh a, [hBGMapUpdate]
and a
ret z
ld a, [rVBK]
ldh a, [rVBK]
push af
ld [hSPBuffer], sp
@@ -50,7 +50,7 @@ rept 2
; Palettes
ld a, 1
ld [rVBK], a
ldh [rVBK], a
ld a, [hli]
ld [bc], a
@@ -61,7 +61,7 @@ rept 2
; Tiles
ld a, 0
ld [rVBK], a
ldh [rVBK], a
ld a, [de]
inc de
@@ -73,35 +73,35 @@ rept 2
endr
; We've done 2 16x8 blocks
ld a, [hBGMapTileCount]
ldh a, [hBGMapTileCount]
dec a
dec a
ld [hBGMapTileCount], a
ldh [hBGMapTileCount], a
jr nz, .next
ld a, [hSPBuffer]
ldh a, [hSPBuffer]
ld l, a
ld a, [hSPBuffer + 1]
ldh a, [hSPBuffer + 1]
ld h, a
ld sp, hl
pop af
ld [rVBK], a
ldh [rVBK], a
xor a
ld [hBGMapUpdate], a
ldh [hBGMapUpdate], a
scf
ret
WaitTop::
; Wait until the top third of the BG Map is being updated.
ld a, [hBGMapMode]
ldh a, [hBGMapMode]
and a
ret z
ld a, [hBGMapThird]
ldh a, [hBGMapThird]
and a
jr z, .done
@@ -110,13 +110,13 @@ WaitTop::
.done
xor a
ld [hBGMapMode], a
ldh [hBGMapMode], a
ret
UpdateBGMap::
; Update the BG Map, in thirds, from wTileMap and wAttrMap.
ld a, [hBGMapMode]
ldh a, [hBGMapMode]
and a
ret z
@@ -129,18 +129,18 @@ UpdateBGMap::
; BG Map 1
dec a
ld a, [hBGMapAddress]
ldh a, [hBGMapAddress]
ld l, a
ld a, [hBGMapAddress + 1]
ldh a, [hBGMapAddress + 1]
ld h, a
push hl
xor a ; LOW(vBGMap1)
ld [hBGMapAddress], a
ldh [hBGMapAddress], a
ld a, HIGH(vBGMap1)
ld [hBGMapAddress + 1], a
ldh [hBGMapAddress + 1], a
ld a, [hBGMapMode]
ldh a, [hBGMapMode]
push af
cp 3
call z, .Tiles
@@ -150,20 +150,20 @@ UpdateBGMap::
pop hl
ld a, l
ld [hBGMapAddress], a
ldh [hBGMapAddress], a
ld a, h
ld [hBGMapAddress + 1], a
ldh [hBGMapAddress + 1], a
ret
.Attr:
ld a, 1
ld [rVBK], a
ldh [rVBK], a
hlcoord 0, 0, wAttrMap
call .update
ld a, 0
ld [rVBK], a
ldh [rVBK], a
ret
.Tiles:
@@ -173,7 +173,7 @@ UpdateBGMap::
ld [hSPBuffer], sp
; Which third?
ld a, [hBGMapThird]
ldh a, [hBGMapThird]
and a ; 0
jr z, .top
dec a ; 1
@@ -187,9 +187,9 @@ THIRD_HEIGHT EQU SCREEN_HEIGHT / 3
add hl, de
ld sp, hl
ld a, [hBGMapAddress + 1]
ldh a, [hBGMapAddress + 1]
ld h, a
ld a, [hBGMapAddress]
ldh a, [hBGMapAddress]
ld l, a
ld de, 2 * THIRD_HEIGHT * BG_MAP_WIDTH
@@ -204,9 +204,9 @@ THIRD_HEIGHT EQU SCREEN_HEIGHT / 3
add hl, de
ld sp, hl
ld a, [hBGMapAddress + 1]
ldh a, [hBGMapAddress + 1]
ld h, a
ld a, [hBGMapAddress]
ldh a, [hBGMapAddress]
ld l, a
ld de, THIRD_HEIGHT * BG_MAP_WIDTH
@@ -219,9 +219,9 @@ THIRD_HEIGHT EQU SCREEN_HEIGHT / 3
.top
ld sp, hl
ld a, [hBGMapAddress + 1]
ldh a, [hBGMapAddress + 1]
ld h, a
ld a, [hBGMapAddress]
ldh a, [hBGMapAddress]
ld l, a
; Next time: middle third
@@ -229,7 +229,7 @@ THIRD_HEIGHT EQU SCREEN_HEIGHT / 3
.start
; Which third to update next time
ld [hBGMapThird], a
ldh [hBGMapThird], a
; Rows of tiles in a third
ld a, SCREEN_HEIGHT / 3
@@ -255,9 +255,9 @@ endr
dec a
jr nz, .row
ld a, [hSPBuffer]
ldh a, [hSPBuffer]
ld l, a
ld a, [hSPBuffer + 1]
ldh a, [hSPBuffer + 1]
ld h, a
ld sp, hl
ret
@@ -270,7 +270,7 @@ Serve1bppRequest::
ret z
; Back out if we're too far into VBlank
ld a, [rLY]
ldh a, [rLY]
cp LY_VBLANK
ret c
cp LY_VBLANK + 2
@@ -333,9 +333,9 @@ endr
ld [wRequested1bppSource], sp
ld a, [hSPBuffer]
ldh a, [hSPBuffer]
ld l, a
ld a, [hSPBuffer + 1]
ldh a, [hSPBuffer + 1]
ld h, a
ld sp, hl
ret
@@ -348,7 +348,7 @@ Serve2bppRequest::
ret z
; Back out if we're too far into VBlank
ld a, [rLY]
ldh a, [rLY]
cp LY_VBLANK
ret c
cp LY_VBLANK + 2
@@ -410,9 +410,9 @@ endr
ld [wRequested2bppSource], sp
ld a, [hSPBuffer]
ldh a, [hSPBuffer]
ld l, a
ld a, [hSPBuffer + 1]
ldh a, [hSPBuffer + 1]
ld h, a
ld sp, hl
ret
@@ -420,38 +420,38 @@ endr
AnimateTileset::
; Only call during the first fifth of VBlank
ld a, [hMapAnims]
ldh a, [hMapAnims]
and a
ret z
; Back out if we're too far into VBlank
ld a, [rLY]
ldh a, [rLY]
cp LY_VBLANK
ret c
cp LY_VBLANK + 7
ret nc
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(_AnimateTileset)
rst Bankswitch
ld a, [rSVBK]
ldh a, [rSVBK]
push af
ld a, BANK(wTilesetAnim)
ld [rSVBK], a
ldh [rSVBK], a
ld a, [rVBK]
ldh a, [rVBK]
push af
ld a, 0
ld [rVBK], a
ldh [rVBK], a
call _AnimateTileset
pop af
ld [rVBK], a
ldh [rVBK], a
pop af
ld [rSVBK], a
ldh [rSVBK], a
pop af
rst Bankswitch
ret

View File

@@ -1,6 +1,6 @@
RefreshScreen::
call ClearWindowData
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(ReanchorBGMap_NoOAMUpdate) ; and BANK(LoadFonts_NoOAMUpdate)
rst Bankswitch
@@ -14,15 +14,15 @@ RefreshScreen::
ret
CloseText::
ld a, [hOAMUpdate]
ldh a, [hOAMUpdate]
push af
ld a, $1
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
call .CloseText
pop af
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
ld hl, wVramState
res 6, [hl]
ret
@@ -30,14 +30,14 @@ CloseText::
.CloseText:
call ClearWindowData
xor a
ld [hBGMapMode], a
ldh [hBGMapMode], a
call OverworldTextModeSwitch
call _OpenAndCloseMenu_HDMATransferTileMapAndAttrMap
xor a
ld [hBGMapMode], a
ldh [hBGMapMode], a
call SafeUpdateSprites
ld a, $90
ld [hWY], a
ldh [hWY], a
call ReplaceKrisSprite
farcall ReturnFromMapSetupScript
farcall LoadOverworldFont
@@ -45,7 +45,7 @@ CloseText::
OpenText::
call ClearWindowData
ld a, [hROMBank]
ldh a, [hROMBank]
push af
ld a, BANK(ReanchorBGMap_NoOAMUpdate) ; and BANK(LoadFonts_NoOAMUpdate)
rst Bankswitch
@@ -60,36 +60,36 @@ OpenText::
ret
_OpenAndCloseMenu_HDMATransferTileMapAndAttrMap::
ld a, [hOAMUpdate]
ldh a, [hOAMUpdate]
push af
ld a, $1
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
farcall OpenAndCloseMenu_HDMATransferTileMapAndAttrMap
pop af
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
ret
SafeUpdateSprites::
ld a, [hOAMUpdate]
ldh a, [hOAMUpdate]
push af
ld a, [hBGMapMode]
ldh a, [hBGMapMode]
push af
xor a
ld [hBGMapMode], a
ldh [hBGMapMode], a
ld a, $1
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
call UpdateSprites
xor a
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
call DelayFrame
pop af
ld [hBGMapMode], a
ldh [hBGMapMode], a
pop af
ld [hOAMUpdate], a
ldh [hOAMUpdate], a
ret
; unused