Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use constants for VBlank handlers #1123

Merged
merged 2 commits into from
May 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions constants/wram_constants.asm
Original file line number Diff line number Diff line change
Expand Up @@ -324,3 +324,16 @@ DEF DAYCARELADY_ACTIVE_F EQU 7
const UNLOCKED_UNOWNS_S_TO_W_F
const UNLOCKED_UNOWNS_X_TO_Z_F
DEF NUM_UNLOCKED_UNOWN_SETS EQU const_value

; hVBlank::
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wouldn't in this PR, but similarly how macros/wram.asm was renamed to macros/ram.asm we should probably rename this file to constants/ram_constants.asm if its going to hold constants used by hram.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To do in a subsequent PR!

; VBlankHandlers indexes (see home/vblank.asm)
const_def
const VBLANK_NORMAL ; 0
const VBLANK_CUTSCENE ; 1
const VBLANK_SOUND_ONLY ; 2
const VBLANK_CUTSCENE_CGB ; 3
const VBLANK_SERIAL ; 4
const VBLANK_CREDITS ; 5
const VBLANK_DMA_TRANSFER ; 6
const VBLANK_UNUSED ; 7
DEF NUM_VBLANK_HANDLERS EQU const_value
2 changes: 1 addition & 1 deletion docs/bugs_and_glitches.md
Original file line number Diff line number Diff line change
Expand Up @@ -1556,7 +1556,7 @@ To select a move in battle, you have to press and release the Up or Down buttons
-; BUG: Credits sequence changes move selection menu behavior (see docs/bugs_and_glitches.md)
ldh a, [hVBlank]
push af
ld a, $5
ld a, VBLANK_CREDITS
ldh [hVBlank], a
+ ldh a, [hInMenu]
+ push af
Expand Down
2 changes: 1 addition & 1 deletion engine/battle/battle_transition.asm
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ DoBattleTransition:
ld a, [hl]
push af
vc_hook Reduce_battle_transition_flashing
ld [hl], $1
ld [hl], VBLANK_CUTSCENE

.loop
ld a, [wJumptableIndex]
Expand Down
4 changes: 2 additions & 2 deletions engine/battle_anims/anim_commands.asm
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ _PlayBattleAnim:
call BattleAnimRequestPals
call BattleAnimDelayFrame

ld c, 1
ld c, VBLANK_CUTSCENE
ldh a, [rKEY1]
bit 7, a ; check CGB double speed mode
jr nz, .got_speed
ld c, 3
ld c, VBLANK_CUTSCENE_CGB

.got_speed
Rangi42 marked this conversation as resolved.
Show resolved Hide resolved
ld hl, hVBlank
Expand Down
2 changes: 1 addition & 1 deletion engine/events/magnet_train.asm
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ MagnetTrain:
ld hl, hVBlank
ld a, [hl]
push af
ld [hl], 1
ld [hl], VBLANK_CUTSCENE
.loop
ld a, [wJumptableIndex]
and a
Expand Down
7 changes: 4 additions & 3 deletions engine/link/link.asm
Original file line number Diff line number Diff line change
Expand Up @@ -537,6 +537,7 @@ LinkTimeout:
xor a
ld [hld], a
ld [hl], a
assert VBLANK_NORMAL == 0
ldh [hVBlank], a
push de
hlcoord 0, 12
Expand Down Expand Up @@ -2380,7 +2381,7 @@ CheckLinkTimeout_Receptionist:
xor a
ld [hl], a
call WaitBGMap
ld a, $2
ld a, VBLANK_SOUND_ONLY
ldh [hVBlank], a
call DelayFrame
call DelayFrame
Expand All @@ -2402,7 +2403,7 @@ CheckLinkTimeout_Gen2:
xor a
ld [hl], a
call WaitBGMap
ld a, $2
ld a, VBLANK_SOUND_ONLY
ldh [hVBlank], a
call DelayFrame
call DelayFrame
Expand Down Expand Up @@ -2630,7 +2631,7 @@ Link_EnsureSync:
add $d0
ld [wLinkPlayerSyncBuffer], a
ld [wLinkPlayerSyncBuffer + 1], a
ld a, $2
ld a, VBLANK_SOUND_ONLY
ldh [hVBlank], a
call DelayFrame
call DelayFrame
Expand Down
2 changes: 1 addition & 1 deletion engine/movie/credits.asm
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ Credits::
; BUG: Credits sequence changes move selection menu behavior (see docs/bugs_and_glitches.md)
ldh a, [hVBlank]
push af
ld a, $5
ld a, VBLANK_CREDITS
ldh [hVBlank], a
ld a, TRUE
ldh [hInMenu], a
Expand Down
3 changes: 2 additions & 1 deletion engine/movie/intro.asm
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,10 @@ CrystalIntro:
ret

.InitRAMAddrs:
assert VBLANK_NORMAL == 0
xor a
ldh [hVBlank], a
ld a, $1
ld a, TRUE
ldh [hInMenu], a
xor a
ldh [hMapAnims], a
Expand Down
16 changes: 8 additions & 8 deletions engine/printer/printer.asm
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,9 @@ PrintDexEntry:
ld hl, hVBlank
ld a, [hl]
push af
ld [hl], 4 ; vblank mode that calls AskSerial
ld [hl], VBLANK_SERIAL

ld a, 8 ; 16 rows
ld a, 16 / 2
ld [wPrinterQueueLength], a
call Printer_ResetJoypadRegisters
call SendScreenToPrinter
Expand All @@ -90,7 +90,7 @@ PrintDexEntry:
ld [wPrinterMargins], a
farcall PrintPage2
call Printer_ResetJoypadRegisters
ld a, 4
ld a, 8 / 2
ld [wPrinterQueueLength], a
call SendScreenToPrinter

Expand Down Expand Up @@ -146,7 +146,7 @@ PrintPCBox:
ld hl, hVBlank
ld a, [hl]
push af
ld [hl], 4 ; vblank mode that calls AskSerial
ld [hl], VBLANK_SERIAL

xor a
ldh [hBGMapMode], a
Expand Down Expand Up @@ -227,7 +227,7 @@ PrintUnownStamp:
ld hl, hVBlank
ld a, [hl]
push af
ld [hl], 4 ; vblank mode that calls AskSerial
ld [hl], VBLANK_SERIAL

xor a
ldh [hBGMapMode], a
Expand Down Expand Up @@ -302,7 +302,7 @@ PrintMail:
ld hl, hVBlank
ld a, [hl]
push af
ld [hl], 4 ; vblank mode that calls AskSerial
ld [hl], VBLANK_SERIAL

ld a, 18 / 2
ld [wPrinterQueueLength], a
Expand Down Expand Up @@ -345,7 +345,7 @@ PrintPartymon:
ld hl, hVBlank
ld a, [hl]
push af
ld [hl], 4 ; vblank mode that calls AskSerial
ld [hl], VBLANK_SERIAL

ld a, 16 / 2
ld [wPrinterQueueLength], a
Expand Down Expand Up @@ -403,7 +403,7 @@ _PrintDiploma:
ld hl, hVBlank
ld a, [hl]
push af
ld [hl], 4 ; vblank mode that calls AskSerial
ld [hl], VBLANK_SERIAL

ln a, 1, 0 ; to be loaded to wPrinterMargins
call Printer_PrepareTilemapForPrint
Expand Down
42 changes: 22 additions & 20 deletions home/vblank.asm
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ VBlank::
push hl

ldh a, [hVBlank]
and 7
maskbits NUM_VBLANK_HANDLERS

ld e, a
ld d, 0
ld hl, .VBlanks
ld hl, VBlankHandlers
add hl, de
add hl, de
ld a, [hli]
Expand All @@ -34,17 +34,20 @@ VBlank::
pop af
reti

.VBlanks:
dw VBlank0
dw VBlank1
dw VBlank2
dw VBlank3
dw VBlank4
dw VBlank5
dw VBlank6
dw VBlank0 ; just in case

VBlank0::
VBlankHandlers:
Rangi42 marked this conversation as resolved.
Show resolved Hide resolved
; entries correspond to VBLANK_* constants (see constants/wram_constants.asm)
table_width 2, VBlankHandlers
dw VBlank_Normal
dw VBlank_Cutscene
dw VBlank_SoundOnly
dw VBlank_CutsceneCGB
dw VBlank_Serial
dw VBlank_Credits
dw VBlank_DMATransfer
dw VBlank_Normal ; unused
assert_table_length NUM_VBLANK_HANDLERS

VBlank_Normal::
; normal operation

; rng
Expand Down Expand Up @@ -144,7 +147,7 @@ VBlank0::

ret

VBlank2::
VBlank_SoundOnly::
; sound only

ldh a, [hROMBank]
Expand All @@ -161,7 +164,7 @@ VBlank2::
ld [wVBlankOccurred], a
ret

VBlank1::
VBlank_Cutscene::
; scx, scy
; palettes
; bg map
Expand Down Expand Up @@ -245,7 +248,7 @@ UpdatePals::
and a
ret

VBlank3::
VBlank_CutsceneCGB::
; scx, scy
; palettes
; bg map
Expand Down Expand Up @@ -309,7 +312,7 @@ VBlank3::
ldh [rIF], a
ret

VBlank4::
VBlank_Serial::
; bg map
; tiles
; oam
Expand Down Expand Up @@ -340,13 +343,12 @@ VBlank4::
rst Bankswitch
ret

VBlank5::
VBlank_Credits::
; scx
; palettes
; bg map
; tiles
; joypad
;

ldh a, [hROMBank]
ldh [hROMBankBackup], a
Expand Down Expand Up @@ -388,7 +390,7 @@ VBlank5::
ldh [rIE], a
ret

VBlank6::
VBlank_DMATransfer::
; palettes
; tiles
; dma transfer
Expand Down
3 changes: 2 additions & 1 deletion mobile/mobile_40.asm
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ DisableMobile:
xor a
ldh [hMobileReceive], a
ldh [hMobile], a
assert VBLANK_NORMAL == 0
xor a
ldh [hVBlank], a
call NormalSpeed
Expand Down Expand Up @@ -1378,7 +1379,7 @@ Function1008e0:
push bc
xor a
ldh [hBGMapMode], a
ld a, $03
ld a, VBLANK_CUTSCENE_CGB
ldh [hVBlank], a
call Function100970
call Function100902
Expand Down