diff options
author | Jonas Höglund <firefly@firefly.nu> | 2014-07-22 00:52:09 +0200 |
---|---|---|
committer | Jonas Höglund <firefly@firefly.nu> | 2014-07-22 00:52:09 +0200 |
commit | a8c96d7b55f8d44256f387731f6c50efa54148d4 (patch) | |
tree | 4889708b4b0ca839c2a011db40ab2037afb7f718 /engine/home.asm | |
parent | bfe04c0bf351a2f1d3241eec3a3545c37f9588a3 (diff) |
Comment & name some utility functions in home bank
Diffstat (limited to 'engine/home.asm')
-rwxr-xr-x | engine/home.asm | 143 |
1 files changed, 78 insertions, 65 deletions
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 |