diff options
-rwxr-xr-x | engine/bank1c.asm | 8 | ||||
-rwxr-xr-x | engine/bank2.asm | 2 | ||||
-rwxr-xr-x | engine/bank3.asm | 14 | ||||
-rwxr-xr-x | engine/bank4.asm | 6 | ||||
-rwxr-xr-x | engine/bank7.asm | 10 | ||||
-rwxr-xr-x | engine/home.asm | 143 |
6 files changed, 98 insertions, 85 deletions
diff --git a/engine/bank1c.asm b/engine/bank1c.asm index 33d01ed..54ed158 100755 --- a/engine/bank1c.asm +++ b/engine/bank1c.asm @@ -154,7 +154,7 @@ Func_70136: ; 70136 (1c:4136) di ld hl, Unknown_701a0 call Func_0b20 - call Func_028a + call DisableLCD ld a, [$cabb] and $41 or $1 @@ -177,7 +177,7 @@ Func_70177: ; 70177 (1c:4177) push bc push de push hl - call Func_0277 + call EnableLCD pop hl call Func_0b20 ld a, [$d41d] @@ -188,7 +188,7 @@ Func_70177: ; 70177 (1c:4177) call Func_040c ld a, [$d420] ld [$cabb], a - call Func_028a + call DisableLCD ei pop de pop bc @@ -204,7 +204,7 @@ INCBIN "baserom.gbc",$701b0,$701c0 - $701b0 Func_701c0: ; 701c0 (1c:41c0) push hl push bc - call Func_028a + call DisableLCD xor a ld c, $10 ld hl, $9000 diff --git a/engine/bank2.asm b/engine/bank2.asm index 28c8e40..dd7f726 100755 --- a/engine/bank2.asm +++ b/engine/bank2.asm @@ -663,7 +663,7 @@ Func_9168: ; 9168 (2:5168) ld [$b700], a call Func_07be call Func_9326 - call Func_0277 + call EnableLCD ret Unknown_9242: ; 9242 (2:5242) diff --git a/engine/bank3.asm b/engine/bank3.asm index 68e0f01..a032217 100755 --- a/engine/bank3.asm +++ b/engine/bank3.asm @@ -1,5 +1,5 @@ LoadMap: ; c000 (3:4000) - call Func_028a + call DisableLCD call Func_07b6 bank1call Func_6785 call Func_07be @@ -343,9 +343,9 @@ Func_c280: ; c280 (3:4280) call Func_099c ld hl, $cac0 inc [hl] - call Func_0277 + call EnableLCD call Func_3c48 - call Func_028a + call DisableLCD farcall Func_12871 ret @@ -372,9 +372,9 @@ Func_c2a3: ; c2a3 (3:42a3) call Func_099c ld a, $1 ld [$cac0], a - call Func_0277 + call EnableLCD call Func_3c48 - call Func_028a + call DisableLCD pop de pop bc pop hl @@ -387,7 +387,7 @@ Func_c2db: ; c2db (3:42db) push hl push bc push de - call Func_028a + call DisableLCD call Func_02b9 call Func_3ca0 farcall Func_12bcd @@ -1398,7 +1398,7 @@ DeckMachine_d336: ; d336 (3:5336) ld [$ff92], a ld [$ff93], a farcall Func_1288c - call Func_0277 + call EnableLCD pop bc ld a, c or a diff --git a/engine/bank4.asm b/engine/bank4.asm index b25e7d2..c48c193 100755 --- a/engine/bank4.asm +++ b/engine/bank4.asm @@ -17,7 +17,7 @@ Medal_1029e: ; 1029e (4:429e) ld a, MUSIC_STOP call PlaySong farcall Func_70000 - call Func_028a + call DisableLCD call $4000 ld a, $fa ld [$d114], a @@ -65,7 +65,7 @@ BoosterPack_1031b: ; 1031b (4:431b) ld a, [$d291] push af push bc - call Func_028a + call DisableLCD call $4000 xor a ld [$ccf3], a @@ -112,7 +112,7 @@ BoosterPack_1031b: ; 1031b (4:431b) call Func_37a0 ld hl, $0389 call $2c73 - call Func_028a + call DisableLCD call Func_1288c call Func_099c ld a, $1 diff --git a/engine/bank7.asm b/engine/bank7.asm index 525e2d7..7622b0d 100755 --- a/engine/bank7.asm +++ b/engine/bank7.asm @@ -189,7 +189,7 @@ INCBIN "baserom.gbc",$1d0fa,$1d11c - $1d0fa Func_1d11c: ; 1d11c (7:511c) ld a, MUSIC_PCMAINMENU call PlaySong - call Func_028a + call DisableLCD farcallx $4, $4000 ld de, $308f call Func_2275 @@ -243,7 +243,7 @@ Titlescreen_1d386: ; 1d386 (7:5386) call Func_378a or a jr nz, .asm_1d39f - call Func_028a + call DisableLCD ld a, MUSIC_TITLESCREEN call PlaySong ld bc, $0000 @@ -253,7 +253,7 @@ Titlescreen_1d386: ; 1d386 (7:5386) .asm_1d39f call Func_3ca0 call Func_1d3a9 - call Func_0277 + call EnableLCD ret Func_1d3a9: ; 1d3a9 (7:53a9) @@ -302,9 +302,9 @@ Credits_1d6ad: ; 1d6ad (7:56ad) call $3ca4 call $02d4 call $5758 - call Func_0277 + call EnableLCD call Func_3c48 - call Func_028a + call DisableLCD ld hl, $cabb set 1, [hl] call Func_3bdb diff --git a/engine/home.asm b/engine/home.asm index 1fed162..be15904 100755 --- a/engine/home.asm +++ b/engine/home.asm @@ -41,13 +41,13 @@ Start: ; 0150 (0:0150) xor a ld [$ff0f], a ld [$ffff], a - call Func_03ec + call ZeroRAM ld a, $1 call BankswitchHome xor a call Func_07a9 call Func_07c5 - call Func_028a + call DisableLCD pop af ld [$cab3], a call Func_0349 @@ -211,41 +211,43 @@ Func_0264: ; 0264 (0:0264) pop hl ret -Func_0277: ; 0277 (0:0277) - ld a, [$cabb] - bit 7, a - ret nz - or $80 - ld [$cabb], a - ld [$ff40], a +; turn LCD on +EnableLCD: ; 0277 (0:0277) + ld a, [$cabb] ; + bit 7, a ; + ret nz ; assert that LCD is off + or $80 ; + ld [$cabb], a ; + ld [$ff40], a ; turn LCD on ld a, $c0 ld [$cabf], a ret -Func_028a: ; 028a (0:028a) - ld a, [$ff40] - bit 7, a - ret z - ld a, [$ffff] - ld [$cab7], a - res 0, a - ld [$ffff], a +; wait for vblank, then turn LCD off +DisableLCD: ; 028a (0:028a) + ld a, [$ff40] ; + bit 7, a ; + ret z ; assert that LCD is on + ld a, [$ffff] ; + ld [$cab7], a ; save IE + res 0, a ; + ld [$ffff], a ; disable vblank interrupt .asm_298 - ld a, [$ff44] - cp $91 - jr nz, .asm_298 - ld a, [$ff40] - and $7f - ld [$ff40], a - ld a, [$cabb] - and $7f - ld [$cabb], a + ld a, [$ff44] ; + cp $91 ; + jr nz, .asm_298 ; wait for vblank + ld a, [$ff40] ; + and $7f ; + ld [$ff40], a ; + ld a, [$cabb] ; + and $7f ; + ld [$cabb], a ; turn LCD off xor a ld [$ff47], a ld [$ff48], a ld [$ff49], a - ld a, [$cab7] - ld [$ffff], a + ld a, [$cab7] ; + ld [$ffff], a ; restore IE ret Func_02b9: ; 02b9 (0:02b9) @@ -263,12 +265,14 @@ Func_02c2: ; 02c2 (0:02c2) INCBIN "baserom.gbc",$02cb,$02dd - $02cb +; enable timer interrupt Func_02dd: ; 02dd (0:02dd) ld a, [$ffff] or $4 ld [$ffff], a ret +; enable vblank interrupt Func_02e4: ; 02e4 (0:02e4) ld a, [$ffff] or $1 @@ -410,7 +414,8 @@ Func_03c0: ; 03c0 (0:03c0) call Func_07c5 ret -Func_03ec: ; 03ec (0:03ec) +; zero work RAM & stack area ($C000-$EFFF, $FF80-$FF7F) +ZeroRAM: ; 03ec (0:03ec) ld hl, $c000 ld bc, $2000 .asm_3f2 @@ -538,17 +543,17 @@ InitializePalettes: ; 0467 (0:0467) INCBIN "baserom.gbc",$0492,$04a2 - $0492 Func_04a2: ; 04a2 (0:04a2) - call Func_028a + call DisableLCD call Func_03c0 xor a ld [$cac2], a ld a, [$cab4] cp $1 ret nz - call Func_0277 + call EnableLCD ld hl, Unknown_04bf call Func_0b20 - call Func_028a + call DisableLCD ret Unknown_04bf: ; 04bf (0:04bf) @@ -789,7 +794,7 @@ Func_06c3: ; 06c3 (0:06c3) call Func_04cf pop hl ld b, $1 - call Func_0c19 + call MemcpyHLDE_hblank pop bc pop de pop hl @@ -799,7 +804,7 @@ Func_06c3: ; 06c3 (0:06c3) INCBIN "baserom.gbc",$06ee,$0709 - $06ee Func_0709: ; 0709 (0:0709) - jp Func_0c19 + jp MemcpyHLDE_hblank CopyGfxData: ; 070c (0:070c) ld a, [$cabb] @@ -856,7 +861,10 @@ CopyData: ; 073c (0:073c) jr nz, CopyData ret -Func_0745: ; 0745 (0:0745) +; switch to rombank (A + top2 of h shifted down), +; set top2 of H to 01, +; return old rombank id on top-of-stack +BankpushHome: ; 0745 (0:0745) push hl push bc push af @@ -894,7 +902,8 @@ Func_0745: ; 0745 (0:0745) INCBIN "baserom.gbc",$076f,$078e - $076f -Func_078e: ; 078e (0:078e) +; restore rombank from top-of-stack +BankpopHome: ; 078e (0:078e) push hl push de ld hl, [sp+$7] @@ -914,6 +923,7 @@ Func_078e: ; 078e (0:078e) pop af ret +; switch ROM bank BankswitchHome: ; 07a3 (0:07a3) ld [$ff80], a ld [$2000], a @@ -1484,7 +1494,7 @@ INCBIN "baserom.gbc",$0bab,$0bbb - $0bab Unknown_0bbb: ; 0bbb (0:0bbb) INCBIN "baserom.gbc",$0bbb,$0c08 - $0bbb -; loops 1750 * bc times +; loops 63000 * bc cycles (~15 * bc ms) Wait: ; 0c08 (0:0c08) ld de, 1750 .loop @@ -1501,28 +1511,30 @@ Wait: ; 0c08 (0:0c08) jr nz, Wait ret -Func_0c19: ; 0c19 (0:0c19) +; memcpy(DE, HL, B), but only during hblank +MemcpyHLDE_hblank: ; 0c19 (0:0c19) push bc -.asm_c1a +.loop ei di - ld a, [$ff41] - and $3 - jr nz, .asm_c1a + ld a, [$ff41] ; + and $3 ; + jr nz, .loop ; assert hblank ld a, [hl] ld [de], a - ld a, [$ff41] - and $3 - jr nz, .asm_c1a + ld a, [$ff41] ; + and $3 ; + jr nz, .loop ; assert still in hblank ei inc hl inc de dec b - jr nz, .asm_c1a + jr nz, .loop pop bc ret -Func_0c32: ; 0c32 (0:0c32) +; memcpy(HL, DE, B), but only during hblank +MemcpyDEHL_hblank: ; 0c32 (0:0c32) push bc .asm_c33 ei @@ -1840,10 +1852,11 @@ Func_1c8e: ; 1c8e (0:1c8e) INCBIN "baserom.gbc",$1caa,$1dca - $1caa -Func_1dca: ; 1dca (0:1dca) - ld a, [$cabb] - bit 7, a - jr nz, .asm_1dd8 +; memcpy(HL, DE, C) +Memcpy: ; 1dca (0:1dca) + ld a, [$cabb] ; + bit 7, a ; + jr nz, .asm_1dd8 ; assert that LCD is on .asm_1dd1 ld a, [de] inc de @@ -1852,7 +1865,7 @@ Func_1dca: ; 1dca (0:1dca) jr nz, .asm_1dd1 ret .asm_1dd8 - jp Func_0c32 + jp MemcpyDEHL_hblank Func_1ddb: ; 1ddb (0:1ddb) ld l, e @@ -1935,7 +1948,7 @@ Func_1ea5: ; 1ea5 (0:1ea5) push bc ld c, b ld b, $0 - call Func_1dca + call Memcpy pop bc pop de ld hl, $0020 @@ -2056,7 +2069,7 @@ Func_1f5f: ; 1f5f (0:1f5f) push bc ld c, b ld b, $0 - call Func_1dca + call Memcpy ld hl, [sp+$24] ld a, [hl] ld hl, [sp+$27] @@ -2140,10 +2153,10 @@ Func_2119: ; 2119 (0:2119) ld b, $38 ; number of tiles asm_2121 ld a, BANK(Fonts) - call Func_0745 + call BankpushHome ld c, $10 call CopyGfxData - call Func_078e + call BankpopHome ret ; 0x212f @@ -2361,7 +2374,7 @@ Func_22f2: ; 22f2 (0:22f2) ld h, d ld de, $cd05 ld c, $1 - call Func_1dca + call Memcpy ld hl, $ffac inc [hl] ret @@ -2616,7 +2629,7 @@ Func_24ac: ; 24ac (0:24ac) or a jr nz, .asm_24bf call Func_2510 - call Func_1dca + call Memcpy .asm_24bb pop bc pop de @@ -2625,7 +2638,7 @@ Func_24ac: ; 24ac (0:24ac) .asm_24bf call Func_24ca call Func_2518 - call Func_1dca + call Memcpy jr .asm_24bb Func_24ca: ; 24ca (0:24ca) @@ -2653,7 +2666,7 @@ Func_24ca: ; 24ca (0:24ca) ld [hli], a dec b jr nz, .asm_24e8 - call Func_078e + call BankpopHome pop bc ld de, $ccf4 ret @@ -2701,7 +2714,7 @@ Func_2518: ; 2518 (0:2518) Func_252e: ; 252e (0:252e) ld a, $1d - call Func_0745 + call BankpushHome ld de, $ccf4 push de ld c, $8 @@ -2714,7 +2727,7 @@ Func_252e: ; 252e (0:252e) dec c jr nz, .asm_2539 pop de - call Func_078e + call BankpopHome ret Func_2546: ; 2546 (0:2546) @@ -2957,7 +2970,7 @@ Func_2a59: ; 2a59 (0:2a59) ld de, $010e call Func_1deb call Func_22a6 - call Func_0277 + call EnableLCD pop hl jp Func_2e41 @@ -2983,7 +2996,7 @@ Func_2aab: ; 2aab (0:2aab) xor a ld hl, Unknown_2ac8 call Func_2636 - call Func_0277 + call EnableLCD .asm_2ab8 call Func_053f call Func_26da @@ -3013,7 +3026,7 @@ Func_2af0: ; 2af0 (0:2af0) call Func_2a1a ld a, [$cd9a] ld [$cd10], a - call Func_0277 + call EnableLCD jr .asm_2b39 .asm_2b1f call Func_053f |