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:
@@ -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::
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -55,7 +55,7 @@ LoadCry::
|
||||
call GetCryIndex
|
||||
ret c
|
||||
|
||||
ld a, [hROMBank]
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(PokemonCries)
|
||||
rst Bankswitch
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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::
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
126
home/joypad.asm
126
home/joypad.asm
@@ -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
|
||||
|
30
home/lcd.asm
30
home/lcd.asm
@@ -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
|
||||
|
116
home/map.asm
116
home/map.asm
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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]
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
@@ -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.
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
110
home/serial.asm
110
home/serial.asm
@@ -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
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
@@ -1,5 +1,5 @@
|
||||
HandleStoneQueue::
|
||||
ld a, [hROMBank]
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
|
||||
call SwitchToMapScriptsBank
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
150
home/vblank.asm
150
home/vblank.asm
@@ -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
|
||||
|
102
home/video.asm
102
home/video.asm
@@ -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
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user