diff options
| -rwxr-xr-x | src/engine/bank1.asm | 2 | ||||
| -rwxr-xr-x | src/engine/bank2.asm | 4 | ||||
| -rwxr-xr-x | src/engine/bank3.asm | 16 | ||||
| -rwxr-xr-x | src/engine/bank4.asm | 8 | ||||
| -rwxr-xr-x | src/engine/bank6.asm | 2 | ||||
| -rwxr-xr-x | src/engine/bank7.asm | 10 | ||||
| -rwxr-xr-x | src/engine/home.asm | 47 | ||||
| -rwxr-xr-x | src/wram.asm | 6 | 
8 files changed, 51 insertions, 44 deletions
| diff --git a/src/engine/bank1.asm b/src/engine/bank1.asm index 18b3e2d..b5d607c 100755 --- a/src/engine/bank1.asm +++ b/src/engine/bank1.asm @@ -182,7 +182,7 @@ StartDuel: ; 409f (1:409f)  	call DrawWideTextBox_PrintText  	call EnableLCD  .asm_41a7 -	call Func_053f +	call DoFrame  	call Func_378a  	or a  	jr nz, .asm_41a7 diff --git a/src/engine/bank2.asm b/src/engine/bank2.asm index a250c5c..b79eb37 100755 --- a/src/engine/bank2.asm +++ b/src/engine/bank2.asm @@ -84,7 +84,7 @@ Func_8dbc: ; 8dbc (2:4dbc)  	ld hl, $0224  	call DrawWideTextBox_PrintText  .asm_8dc8 -	call Func_053f +	call DoFrame  	jr c, Func_8dbc  	call Func_8dea  	jr c, Func_8dbc @@ -150,7 +150,7 @@ Func_8e42: ; 8e42 (2:4e42)  	call Func_2c08  	call Func_905a  .asm_8e4e -	call Func_053f +	call DoFrame  	call Func_9065  	jp nc, .asm_8e4e  	cp $ff diff --git a/src/engine/bank3.asm b/src/engine/bank3.asm index bf726a6..a4e64d7 100755 --- a/src/engine/bank3.asm +++ b/src/engine/bank3.asm @@ -52,14 +52,14 @@ LoadMap: ; c000 (3:4000)  	call Func_c141  	call Func_c17a  .asm_c092 -	call Func_3c48 +	call DoFrameIfLCDEnabled  	call Func_c491  	call Func_c0ce  	ld hl, $d0b4  	ld a, [hl]  	and $d0  	jr z, .asm_c092 -	call Func_3c48 +	call DoFrameIfLCDEnabled  	ld hl, $d0b4  	ld a, [hl]  	bit 4, [hl] @@ -344,7 +344,7 @@ Func_c280: ; c280 (3:4280)  	ld hl, $cac0  	inc [hl]  	call EnableLCD -	call Func_3c48 +	call DoFrameIfLCDEnabled  	call DisableLCD  	farcall Func_12871  	ret @@ -373,7 +373,7 @@ Func_c2a3: ; c2a3 (3:42a3)  	ld a, $1  	ld [$cac0], a  	call EnableLCD -	call Func_3c48 +	call DoFrameIfLCDEnabled  	call DisableLCD  	pop de  	pop bc @@ -957,7 +957,7 @@ MainMenu_c75a: ; c75a (3:475a)  	ld a, $1  	call Func_c29b  .asm_c76a -	call Func_3c48 +	call DoFrameIfLCDEnabled  	call Func_264b  	jr nc, .asm_c76a  	ld a, e @@ -1033,7 +1033,7 @@ PC_c7ea: ; c7ea (3:47ea)  	call PlaySong  	call Func_c241  	call $4915 -	call Func_3c48 +	call DoFrameIfLCDEnabled  	ld hl, $0352  	call $2c73  	call $484e @@ -1041,7 +1041,7 @@ PC_c7ea: ; c7ea (3:47ea)  	ld a, $1  	call Func_c29b  .asm_c806 -	call Func_3c48 +	call DoFrameIfLCDEnabled  	call Func_264b  	jr nc, .asm_c806  	ld a, e @@ -1060,7 +1060,7 @@ PC_c7ea: ; c7ea (3:47ea)  	jr .asm_c801  .asm_c82f  	call Func_c135 -	call Func_3c48 +	call DoFrameIfLCDEnabled  	ld hl, $0353  	call $4891  	call Func_c111 diff --git a/src/engine/bank4.asm b/src/engine/bank4.asm index deeecf0..bf6b355 100755 --- a/src/engine/bank4.asm +++ b/src/engine/bank4.asm @@ -39,7 +39,7 @@ Medal_1029e: ; 1029e (4:429e)  	ld a, $ff  	ld [$d116], a  .asm_102e2 -	call Func_3c48 +	call DoFrameIfLCDEnabled  	ld a, [$d116]  	inc a  	ld [$d116], a @@ -121,7 +121,7 @@ BoosterPack_1031b: ; 1031b (4:431b)  	ld [wFrameType], a  	farcallx $1, $7599  	farcall Func_c1a4 -	call Func_3c48 +	call DoFrameIfLCDEnabled  	pop af  	ld [$d291], a  	ret @@ -178,7 +178,7 @@ Duel_Init: ; 103d3 (4:43d3)  	ld a, [wMatchStartTheme]  	call PlaySong  	call $4031 -	call Func_3c48 +	call DoFrameIfLCDEnabled  	ld bc, $2f1d  	ld de, $1211  	call Func_2a1a @@ -758,7 +758,7 @@ CardPop_12768: ; 12768 (4:6768)  	call PlaySong  	bank1call Func_7571  	farcall Func_c1a4 -	call Func_3c48 +	call DoFrameIfLCDEnabled  	ld a, MUSIC_STOP  	call PlaySong  	scf diff --git a/src/engine/bank6.asm b/src/engine/bank6.asm index 09bf69b..482e72f 100755 --- a/src/engine/bank6.asm +++ b/src/engine/bank6.asm @@ -145,7 +145,7 @@ Func_1a61f: ; 1a61f (6:661f)  	push hl  	ld e, a  	ld d, $0 -	call $2f10 +	call LoadCardDataToRAM  	call Func_379b  	ld a, MUSIC_MEDAL  	call PlaySong diff --git a/src/engine/bank7.asm b/src/engine/bank7.asm index b0512ec..59b74a6 100755 --- a/src/engine/bank7.asm +++ b/src/engine/bank7.asm @@ -132,7 +132,7 @@ Func_1d078: ; 1d078 (7:5078)  	ld a, $3c  	ld [$d626], a  .asm_1d095 -	call Func_3c48 +	call DoFrameIfLCDEnabled  	call UpdateRNGSources  	call $5614  	ld hl, $d635 @@ -212,7 +212,7 @@ Func_1d11c: ; 1d11c (7:511c)  	farcall Func_111e9  	farcallx $4, $4031  .asm_1d15a -	call Func_3c48 +	call DoFrameIfLCDEnabled  	call UpdateRNGSources  	call Func_264b  	push af @@ -287,7 +287,7 @@ Credits_1d6ad: ; 1d6ad (7:56ad)  	farcallx $4, $4031  	call $57fc  .asm_1d6c8 -	call Func_3c48 +	call DoFrameIfLCDEnabled  	call $5765  	call $580b  	ld a, [$d633] @@ -300,10 +300,10 @@ Credits_1d6ad: ; 1d6ad (7:56ad)  	call PlaySong  	farcall Func_10ab4  	call $3ca4 -	call $02d4 +	call Set_WD_off  	call $5758  	call EnableLCD -	call Func_3c48 +	call DoFrameIfLCDEnabled  	call DisableLCD  	ld hl, $cabb  	set 1, [hl] diff --git a/src/engine/home.asm b/src/engine/home.asm index bef33b3..9c4466a 100755 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -23,7 +23,7 @@ SECTION "rst38",ROM0[$38]  SECTION "vblank",ROM0[$40]  	jp VBlankHandler  SECTION "lcdc",ROM0[$48] -	call $cacd +	call wLCDCFunctiontrampoline  	reti  SECTION "timer",ROM0[$50]  	jp TimerHandler @@ -100,7 +100,7 @@ VBlankHandler: ; 019b (0:019b)  	ld a, [wLCDC]  	ld [rLCDC], a  	ei -	call $cad0 +	call wVBlankFunctionTrampoline  	call FlushPalettes  	ld hl, wVBlankCtr  	inc [hl] @@ -342,7 +342,7 @@ SetupLCD: ; 030b (0:030b)  	xor a  	ld [wReentrancyFlag], a  	ld a, $c3            ; $c3 = jp nn -	ld [$cacd], a +	ld [wLCDCFunctiontrampoline], a  	ld [wVBlankFunctionTrampoline], a  	ld hl, wVBlankFunctionTrampoline + 1  	ld [hl], NopF & $ff  ; @@ -706,16 +706,19 @@ ClearJoypad: ; 052a (0:052a)  	pop hl  	ret -Func_0536: ; 0536 (0:0536) +; calls DoFrame a times +DoAFrames: ; 0536 (0:0536)  .loop  	push af -	call Func_053f +	call DoFrame  	pop af  	dec a  	jr nz, .loop  	ret -Func_053f: ; 053f (0:053f) +; updates background, sprites and other game variables, halts until vblank, and reads user input +; if $cad5 is not 0, the game can be paused (and resumed) by pressing the select button +DoFrame: ; 053f (0:053f)  	push af  	push hl  	push de @@ -727,18 +730,18 @@ Func_053f: ; 053f (0:053f)  	call HandleDPadRepeat  	ld a, [$cad5]  	or a -	jr z, .asm_56d +	jr z, .done  	ld a, [hButtonsPressed]  	and $4 -	jr z, .asm_56d -.asm_55e +	jr z, .done +.gamePausedLoop  	call WaitForVBlank  	call ReadJoypad  	call HandleDPadRepeat  	ld a, [hButtonsPressed]  	and $4 -	jr z, .asm_55e -.asm_56d +	jr z, .gamePausedLoop +.done  	pop bc  	pop de  	pop hl @@ -2010,13 +2013,13 @@ Func_0e63: ; 0e63 (0:0e63)  	dec c  	jr z, .asm_e75  	ld a, [hli] -	call $0e0a +	call Func_0e0a  	dec c  .asm_e75  	inc b  	dec b  	jr z, .asm_e81 -	call $0e39 +	call Func_0e39  	jr c, .asm_e81  	ld [de], a  	inc de @@ -3577,7 +3580,7 @@ DrawNarrowTextBox_WaitForInput: ; 2a7c (0:2a7c)  	call InitializeCursorParameters  	call EnableLCD  .waitAorBLoop -	call Func_053f +	call DoFrame  	call HandleTextBoxInput  	ld a, [hButtonsPressed]  	and $3 @@ -3605,7 +3608,7 @@ WaitForWideTextBoxInput: ; 2aae (0:2aae)  	call InitializeCursorParameters  	call EnableLCD  .waitAorBLoop -	call Func_053f +	call DoFrame  	call HandleTextBoxInput  	ld a, [hButtonsPressed]  	and $3 @@ -3638,7 +3641,7 @@ Func_2af0: ; 2af0 (0:2af0)  	call EnableLCD  	jr .asm_2b39  .asm_2b1f -	call Func_053f +	call DoFrame  	call HandleTextBoxInput  	ld a, [hButtonsPressed]  	bit 0, a @@ -4023,7 +4026,7 @@ Func_2e41: ; 2e41 (0:2e41)  	jr nz, .asm_2e70  	jr .asm_2e6d  .asm_2e6a -	call Func_053f +	call DoFrame  .asm_2e6d  	dec a  	jr nz, .asm_2e6a @@ -4479,7 +4482,7 @@ Func_312d: ; 312d (0:312d)   ; serial transfer-related  	ld [$ce63], a        ; [$ce63] ← 1  	call Func_31fc  .asm_315d -	call Func_053f +	call DoFrame  	ld a, [$ce63]  	or a  	jr nz, .asm_315d @@ -5129,19 +5132,19 @@ Func_3c45: ; 3c45 (0:3c45)  INCBIN "baserom.gbc",$3c46,$3c48 - $3c46 -Func_3c48: ; 3c48 (0:3c48) +DoFrameIfLCDEnabled: ; 3c48 (0:3c48)  	push af  	ld a, [rLCDC]  	bit 7, a -	jr z, .asm_3c58 +	jr z, .done  	push bc  	push de  	push hl -	call Func_053f +	call DoFrame  	pop hl  	pop de  	pop bc -.asm_3c58 +.done  	pop af  	ret diff --git a/src/wram.asm b/src/wram.asm index fa8beff..8408200 100755 --- a/src/wram.asm +++ b/src/wram.asm @@ -209,10 +209,14 @@ wRNG2:: ; cacb  wCounter:: ; cacc  	ds $1 + +; the LCDC status interrupt is always disabled and this always reads as jp $0000 +wLCDCFunctiontrampoline:: ; cacd  	ds $3  wVBlankFunctionTrampoline:: ; cad0 -	ds $20 ; unknown length +	ds $3 +	ds $1d  wBufPalette:: ; caf0 - cab7f  	ds $80 | 
