diff options
Diffstat (limited to 'src/engine/bank1c.asm')
-rwxr-xr-x | src/engine/bank1c.asm | 314 |
1 files changed, 314 insertions, 0 deletions
diff --git a/src/engine/bank1c.asm b/src/engine/bank1c.asm new file mode 100755 index 0000000..e11aaef --- /dev/null +++ b/src/engine/bank1c.asm @@ -0,0 +1,314 @@ +Func_70000: ; 70000 (1c:4000) + ld a, [$cab4] + cp $1 + ret nz + ld b, $1 + ld a, $22 + farcall Func_ca6c + or a + jr z, .asm_70013 + ld b, $2 +.asm_70013 + ld a, b + call Func_70044 + ret + +Func_70018: ; 70018 (1c:4018) + ld a, [$cab4] + cp $1 + ret nz + ld a, $0 + call Func_70044 + ret +; 0x70024 + +INCBIN "baserom.gbc",$70024,$70044 - $70024 + +Func_70044: ; 70044 (1c:4044) + push hl + push bc + add a + ld c, a + add a + add c + ld c, a + ld b, $0 + ld hl, Unknown_70057 + add hl, bc + call Func_70082 + pop bc + pop hl + ret + +Unknown_70057: ; 70057 (1c:4057) +INCBIN "baserom.gbc",$70057,$70082 - $70057 + +Func_70082: ; 70082 (1c:4082) + ld a, [$cab4] + cp $1 + ret nz + push hl + push bc + ld a, [hli] + push hl + ld h, [hl] + ld l, a + call Func_700a3 + pop hl + inc hl + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld h, [hl] + ld l, a + call Func_700fe + call Func_701c0 + pop bc + pop hl + ret + +Func_700a3: ; 700a3 (1c:40a3) + push hl + push bc + push de + push hl + call Func_70136 + pop hl + push hl + ld a, [hli] + ld h, [hl] + ld l, a + ld de, $8800 + call Func_701e9 + call Func_701fe + ld hl, SGB_700de + call Func_70177 + pop hl + ld de, $0002 + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [hli] + or [hl] + jr z, .asm_700da + call Func_70136 + dec hl + ld de, $8800 + call Func_701e9 + ld hl, SGB_700ee + call Func_70177 +.asm_700da + pop de + pop bc + pop hl + ret + +; CHR_TRN: tiles $00-$7F, BG (border) tiles (from SNES $000-$FFF) +SGB_700de: ; 700de (1c:40de) +INCBIN "baserom.gbc",$700de,$700ee - $700de + +; CHR_TRN: tiles $80-$FF, BG (border) tiles (from SNES $000-$FFF) +SGB_700ee: ; 700ee (1c:40ee) +INCBIN "baserom.gbc",$700ee,$700fe - $700ee + +Func_700fe: ; 700fe (1c:40fe) + push hl + push bc + push de + push hl + push de + push hl + call Func_70136 + pop hl + ld de, $8800 + call Func_701e9 + pop hl + ld de, $9000 + call Func_701e9 + call Func_701fe + pop hl + call Func_70214 + ld hl, SGB_70126 + call Func_70177 + pop de + pop bc + pop hl + ret + +; PCT_TRN: read tile map & palette data into VRAM (from SNES $000-$87F) +SGB_70126: ; 70126 (1c:4126) +INCBIN "baserom.gbc",$70126,$70136 - $70126 + +Func_70136: ; 70136 (1c:4136) + push hl + push bc + push de + ld a, [$ff92] + ld [$d41d], a + ld a, [$ff93] + ld [$d41e], a + ld a, [$cabc] + ld [$d41f], a + ld a, [$cabb] + ld [$d420], a + di + ld hl, SGB_MASK_EN_ON_701a0 + call SendSGB + call DisableLCD + ld a, [$cabb] + and $41 + or $1 + ld [$cabb], a + ld a, $e4 + ld [rBGP], a + call Func_040c + xor a + ld [hSCX], a + ld [rSCX], a + ld [hSCY], a + ld [rSCY], a + pop de + pop bc + pop hl + ret + +Func_70177: ; 70177 (1c:4177) + push hl + push bc + push de + push hl + call EnableLCD + pop hl + call SendSGB + ld a, [$d41d] + ld [hSCX], a + ld a, [$d41e] + ld [hSCY], a + ld a, [$d41f] + call Func_040c + ld a, [$d420] + ld [$cabb], a + call DisableLCD + ei + pop de + pop bc + pop hl + ret + +; MASK_EN on +SGB_MASK_EN_ON_701a0: ; 701a0 (1c:41a0) +INCBIN "baserom.gbc",$701a0,$701b0 - $701a0 + +; MASK_EN off +SGB_MASK_EN_OFF_701b0: ; 701b0 (1c:41b0) +INCBIN "baserom.gbc",$701b0,$701c0 - $701b0 + +Func_701c0: ; 701c0 (1c:41c0) + push hl + push bc + call DisableLCD + xor a + ld c, $10 + ld hl, $9000 +.asm_701cb + ld [hli], a + dec c + jr nz, .asm_701cb + ld a, [$cab6] + push af + xor a + ld [$cab6], a + call Func_04a2 + pop af + ld [$cab6], a + di + ld hl, SGB_MASK_EN_OFF_701b0 + call SendSGB + ei + pop bc + pop hl + ret + +Func_701e9: ; 701e9 (1c:41e9) + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + or c + ret z + push de + push bc + ld e, l + ld d, h + ld b, $c0 + call Func_08bf + pop bc + pop de + call Func_08de + ret + +Func_701fe: ; 701fe (1c:41fe) + ld hl, $9800 + ld de, $000c + ld a, $80 + ld c, $d +.asm_70208 + ld b, $14 +.asm_7020a + ld [hli], a + inc a + dec b + jr nz, .asm_7020a + add hl, de + dec c + jr nz, .asm_70208 + ret + +Func_70214: ; 70214 (1c:4214) + ld a, l + cp $dc + ret nz + ld a, h + cp $49 + ret nz + ld hl, Unknown_7024a + ld a, $10 + farcall Func_ca6c + ld c, $8 +.asm_70227 + push bc + push hl + push af + bit 7, a + jr z, .asm_7023e + ld c, $9 +.asm_70230 + push bc + ld e, [hl] + inc hl + ld d, [hl] + inc hl + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + pop bc + dec c + jr nz, .asm_70230 +.asm_7023e + pop af + rlca + pop hl + ld bc, $0024 + add hl, bc + pop bc + dec c + jr nz, .asm_70227 + ret + +Unknown_7024a: ; 7024a (1c:424a) +INCBIN "baserom.gbc",$7024a,$74000 - $7024a |