diff options
-rwxr-xr-x | main.asm | 2553 |
1 files changed, 2530 insertions, 23 deletions
@@ -2480,8 +2480,25 @@ Func_167b: ; 0x167b call Func_18ac ret -INCBIN "baserom.gbc",$169d,$16bf - $169d +INCBIN "baserom.gbc",$169d,$16a2 - $169d +Func_16a2: ; 0x16a2 + xor a + ld [$ff01], a + ld [$ff02], a + ld [$d8ad], a + dec a + ld [$d8c7], a + ld [$d8c8], a + call Func_16b5 + ret + +Func_16b5: ; 0x16b5 + xor a + ld [$d8c5], a + ld [$d8ca], a + ld [$d8db], a + ; fall through Func_16bf: ; 0x16bf xor a ld [$d8af], a @@ -2497,7 +2514,21 @@ Func_16bf: ; 0x16bf ld [$d8e2], a ret -INCBIN "baserom.gbc",$16e2,$16fd - $16e2 +Func_16e2: ; 0x16e2 + ld a, [$d8db] + and a + jr z, .asm_16ec + call Func_16fd + ret nc +.asm_16ec + ld a, [$d8ae] + cp $1 + jr nz, .asm_16f7 + call Func_16fd + ret nc +.asm_16f7 + call Func_1925 + jp Func_19e5 Func_16fd: ; 0x16fd ld a, [$d8c5] @@ -2541,7 +2572,186 @@ Func_16fd: ; 0x16fd ld a, $f0 ret -INCBIN "baserom.gbc",$1740,$18ac - $1740 +Func_1740: ; 0x1740 + ld a, [$d8ad] + cp $1 + jr z, .asm_1752 + cp $2 + jr z, .asm_1752 + and a + ld a, $ff + ret z +.asm_174f + ld a, $f0 + ret +.asm_1752 + ld a, [$d8e2] + and a + jr nz, .asm_174f + ld a, [$d8db] + and a + jr z, .asm_1762 + call Func_16fd + ret nc +.asm_1762 + ld a, [$d8ae] + cp $2 + jr nz, .asm_176d + call Func_16fd + ret nc +.asm_176d + ld a, [$d8c7] + cp $ff + ret z + call Func_1932 + jp Func_19e5 + +Func_1779: ; 0x1779 + ld c, a + ld a, [$d8ad] + and a + ld a, [$d8c7] + ret z + ld a, [$d8ad] + cp $1 + jr z, .asm_1790 + cp $3 + jr z, .asm_1790 + ld a, $f0 + ret +.asm_1790 + ld a, [$d8db] + and a + jr nz, .asm_17df + ld a, c + inc a + ld [$d8de], a + ld a, l + ld [$d8c1], a + ld a, h + ld [$d8c2], a + ld a, [$d8c7] + cp $ff + ret z + ld a, [$d8ab] + ld [$d8ac], a + and a + jr z, .asm_17d6 + ld a, [$d8de] + dec a + dec a + push af + ld c, a + ld b, $0 + push hl + ld hl, $d89d + add hl, bc + ld a, [hl] + pop hl + ld [$d8ac], a + pop af + add a + ld c, a + ld b, $0 + push hl + ld hl, $d88b + add hl, bc + ld a, [hli] + ld b, [hl] + pop hl + ld c, a + jp .asm_17d9 +.asm_17d6 + ld bc, $0280 +.asm_17d9 + call Func_1989 + jp Func_19e5 +.asm_17df + ld a, [$d8c5] + cp $2 + ld a, $f0 + jp nz, .asm_1869 + ld hl, $d8de + ld a, [$d8c7] + bit 4, a + jp nz, .asm_1859 + bit 1, a + jp nz, .asm_1804 + bit 0, a + jp nz, .asm_1804 + dec [hl] + ld a, [$d8c7] + jr z, .asm_1860 +.asm_1804 + ld a, [hl] + cp $1 + jr z, .asm_186a + ld bc, $0280 + ld a, [$d8ab] + ld [$d8ac], a + and a + jr z, .asm_1836 + ld a, [$d8de] + dec a + dec a + push af + ld c, a + ld b, $0 + push hl + ld hl, $d89d + add hl, bc + ld a, [hl] + pop hl + ld [$d8ac], a + pop af + add a + ld c, a + ld b, $0 + push hl + ld hl, $d88b + add hl, bc + ld a, [hli] + ld b, [hl] + pop hl + ld c, a +.asm_1836 + ld a, [$d8c7] + bit 1, a + jp nz, .asm_184e + ld a, [$d8bf] + add $80 + ld [$d8bf], a + ld a, [$d8c0] + adc $2 + ld [$d8c0], a +.asm_184e + ld a, [$d8bf] + ld l, a + ld a, [$d8c0] + ld h, a + jp .asm_17d9 +.asm_1859 + push af + ld a, $1 + ld [$d8dc], a + pop af +.asm_1860 + push af + xor a + ld [$d8cc], a + ld [$d8db], a + pop af +.asm_1869 + ret +.asm_186a + ld a, [$d8dd] + and a + ld a, [$d8c7] + jr z, .asm_1860 + call Func_19d7 + jp Func_19e5 + +INCBIN "baserom.gbc",$1879,$18ac - $1879 Func_18ac: ; 0x18ac ld a, [$d8ad] @@ -2588,33 +2798,98 @@ Func_18d4: ; 0x18d4 call Func_16bf ret -INCBIN "baserom.gbc",$18ff,$191d - $18ff +INCBIN "baserom.gbc",$18ff,$1925 - $18ff -Func_191d: ; 0x191d - rrca - nop - nop - nop - rrca - nop - nop - nop +Func_1925: ; 0x1925 ld a, $1 ld d, $0 - ld hl, $1901 + ld hl, $1901 ; todo ld bc, $0008 jp Func_18d4 -INCBIN "baserom.gbc",$1932,$19ca - $1932 +Func_1932: ; 0x19332 + ld a, $2 + ld d, $0 + ld hl, $d8cd + ld bc, $000c + call Func_18d4 + ld hl, $1909 + ld de, $d8cd + ld bc, $0004 + call Func_65d + ld de, $0006 + ld a, [$d8a8] + ld [$d8d1], a + call Func_1982 + ld a, [$d8a9] + ld [$d8d2], a + call Func_1982 + ld a, [$d8aa] + ld [$d8d3], a + call Func_1982 + ld a, [$d8a7] + ld [$d8d4], a + call Func_1982 + ld a, e + ld [$d8d5], a + ld a, d + ld [$d8d6], a + xor a + ld [$d8d7], a + ld [$d8d8], a + ret + +Func_1982: ; 0x1982 + add e + ld e, a + ld a, d + adc $0 + ld d, a + ret + +Func_1989: ; 0x1989 + ld a, l + ld [$d8bf], a + ld a, h + ld [$d8c0], a + ld a, c + ld [$d8b7], a + ld a, b + ld [$d8b8], a + push bc + ld a, $3 + ld d, $1 + ld hl, $d8cd + ld bc, $0004 + call Func_18d4 + ld a, [$190d] + ld [$d8cd], a + ld a, [$d8ac] + ld [$d8ce], a + pop bc + ld a, c + ld [$d8cf], a + ld a, b + ld [$d8d0], a + ret + +INCBIN "baserom.gbc",$19bd,$19ca - $19bd Func_19ca: ; 0x19ca ld a, $5 ld d, $0 - ld hl, Func_191d + ld hl, $191d ; todo ld bc, $0008 jp Func_18d4 -INCBIN "baserom.gbc",$19d7,$19e5 - $19d7 +Func_19d7: ; 0x19d7 + ld a, $6 + ld d, $1 + ld hl, $190d ; todo + ld bc, $0008 + jp Func_18d4 + +INCBIN "baserom.gbc",$19e4,$19e5 - $19e4 Func_19e5: ; 0x19e5 ld a, [$d8ad] @@ -2649,7 +2924,709 @@ Func_19e5: ; 0x19e5 ld a, $f0 ret -INCBIN "baserom.gbc",$1a21,$1f24 - $1a21 +Func_1a21: ; 0x1a21 + call Func_1a59 + call Func_1a89 + jr c, .asm_1a3f +.asm_1a29 + call Func_1aa9 + call Func_1b3d + jr c, .asm_1a3f + ld a, [$d86c] + and a + jr z, .asm_1a29 + call Func_1b60 + jr c, .asm_1a3f + call Func_1b88 +.asm_1a3f + call Func_1ba7 + ret + +Func_1a43: ; 0x1a43 + xor a + ld [$d86e], a + call Func_1a59 + call Func_1a89 + jr c, .asm_1a54 + ld a, $1 + ld [$d86e], a +.asm_1a54 + call Func_1ba7 + ret + + ret ; unused instruction? + +Func_1a59: ; 0x1a59 + ld [$d86a], a + ld a, h + ld [$d869], a + ld a, l + ld [$d868], a + ld a, $80 + ld [$d866], a + ld a, $c2 + ld [$d867], a + xor a + ld [$d86b], a + ld [$d86c], a + ld [$d86d], a + call Func_16a2 + ld hl, $ffff + set 3, [hl] + xor a + ld [$ffb1], a + ld a, $1 + ld [$d8e1], a + ret + +Func_1a89: ; 0x1a89 + call Func_16e2 + cp $f0 + jr z, .asm_1a9f + cp $ff + jp z, Func_1bb2 + ld a, [$d8c8] + cp $81 + jp nz, Func_1bb2 + and a + ret +.asm_1a9f + ld a, [hNewlyPressedButtons] + bit 1, a + jp nz, Func_1bd3 + rst $10 + jr Func_1a89 + +Func_1aa9: ; 0x1aa9 + ld a, [$d866] + ld l, a + ld a, [$d867] + ld h, a + ld de, wc000 + ld b, $2 +.asm_1ab6 + ld c, $14 +.asm_1ab8 + ld a, [hli] + call Func_1ae2 + dec c + jr nz, .asm_1ab8 + ld a, l + add $c + ld l, a + jr nc, .asm_1ac6 + inc h +.asm_1ac6 + dec b + jr nz, .asm_1ab6 + ld a, l + ld [$d866], a + ld a, h + ld [$d867], a + ld a, [$d86b] + inc a + ld [$d86b], a + cp $9 + jr nz, .asm_1ae1 + ld a, $1 + ld [$d86c], a +.asm_1ae1 + ret + +Func_1ae2: ; 0x1ae2 + push bc + push hl + xor $80 + swap a + ld c, a + and $f + ld b, a + ld a, c + and $f0 + ld c, a + ld a, [$d868] + ld l, a + ld a, [$d869] + ld h, a + add hl, bc + ld a, [hLoadedROMBank] + push af + ld a, [$d86a] + ld [hLoadedROMBank], a + ld [$2000], a + ld a, [hli] + ld [de], a + inc e + ld a, [hli] + ld [de], a + inc e + ld a, [hli] + ld [de], a + inc e + ld a, [hli] + ld [de], a + inc e + ld a, [hli] + ld [de], a + inc e + ld a, [hli] + ld [de], a + inc e + ld a, [hli] + ld [de], a + inc e + ld a, [hli] + ld [de], a + inc e + ld a, [hli] + ld [de], a + inc e + ld a, [hli] + ld [de], a + inc e + ld a, [hli] + ld [de], a + inc e + ld a, [hli] + ld [de], a + inc e + ld a, [hli] + ld [de], a + inc e + ld a, [hli] + ld [de], a + inc e + ld a, [hli] + ld [de], a + inc e + ld a, [hli] + ld [de], a + inc de + pop af + ld [hLoadedROMBank], a + ld [$2000], a + pop hl + pop bc + ret + +Func_1b3d: ; 0x1b3d + ld a, [$d86c] + ld [$d8dd], a + ld hl, wc000 + ld a, $1 + call Func_1779 + cp $ff + jp z, Func_1bb2 + cp $f0 + jr z, .asm_1b56 + and a + ret +.asm_1b56 + ld a, [hNewlyPressedButtons] + bit BIT_B_BUTTON, a + jp nz, Func_1bd3 + rst $10 + jr Func_1b3d + +Func_1b60: ; 0x1b60 + ld a, $1 + ld [$d8a8], a + ld a, $13 + ld [$d8a9], a + call Func_1740 + cp $ff + jp z, Func_1bb2 + cp $f0 + jr z, .asm_1b7e + ld bc, $001e + call Func_93f + and a + ret +.asm_1b7e + ld a, [hNewlyPressedButtons] + bit BIT_B_BUTTON, a + jp nz, Func_1bd3 + rst $10 + jr Func_1b60 + +Func_1b88: ; 0x1b88 + ld a, [$d8c7] + ld b, a + cp $ff + jr z, Func_1bb2 + and $f0 + jr nz, Func_1bb2 + bit 1, b + jr nz, .asm_1b9d + call Func_16a2 + and a + ret +.asm_1b9d + ld a, [hNewlyPressedButtons] + bit BIT_B_BUTTON, a + jp nz, Func_1bd3 + rst $10 + jr Func_1b88 + +Func_1ba7: ; 0x1ba7 + ld hl, $ffff + res 3, [hl] + xor a + ld [$d8e1], a + and a + ret + +Func_1bb2: ; 0x1bb2 + ld hl, $1bcf ; todo + ld a, [$d8c7] + cp $ff + jr z, .asm_1bc6 + ld b, $3 +.asm_1bbe + inc hl + sla a + jr c, .asm_1bc6 + dec b + jr nz, .asm_1bbe +.asm_1bc6 + ld a, [hl] + ld [$d86d], a + call Func_16a2 + scf + ret + +INCBIN "baserom.gbc",$1bcf,$1bd3 - $1bcf + +Func_1bd3: ; 0x1bd3 + ld de, $0001 + call PlaySoundEffect + ld a, $5 + ld [$d86d], a + call Func_16a2 + scf + ret + +Func_1be3: ; 0x1be3 + ld a, $c0 + ld [$ff56], a + ld a, $ff + ld [$d8ea], a + xor a + ld b, a +.asm_1bee + inc a + jr nz, .asm_1bee + inc b + jr nz, .asm_1bee + ld hl, $d8eb + ld a, [$ff4d] + bit 7, a + jr z, .asm_1c0c + ld [hl], $e + inc hl + ld [hl], $12 + inc hl + ld [hl], $8 + inc hl + ld [hl], $c + inc hl + ld [hl], $c + ret +.asm_1c0c + ld [hl], $6 + inc hl + ld [hl], $8 + inc hl + ld [hl], $2 + inc hl + ld [hl], $4 + inc hl + ld [hl], $5 + ret + +Func_1c1b: ; 0x1c1b + inc d + ret z + ld a, [$ff00+c] + bit 1, a + jr z, Func_1c1b + ret + +Func_1c23: ; 0x1c23 + inc d + ret z + ld a, [$ff00+c] + bit 1, a + jr nz, Func_1c23 + ret + +Func_1c2b: ; 0x1c2b + ld a, $c1 + ld [$ff00+c], a +.asm_1c2e + dec d + jr nz, .asm_1c2e + ret + +Func_1c32: ; 0x1c32 + ld a, $c0 + ld [$ff00+c], a +.asm_1c35 + dec d + jr nz, .asm_1c35 + ret + +INCBIN "baserom.gbc",$1c39,$1c50 - $1c39 + +Func_1c50: ; 0x1c50 + ld a, $1 + ld [$d8e9], a + ld b, $1a + ld c, $56 + ld d, $0 + ld e, d + call Func_1c23 + ld a, d + and a + jp z, Func_1dc2 + ld d, e + call Func_1c1b + ld a, d + and a + jp z, Func_1dc2 + call Func_1c23 + ld a, d + and a + jp z, Func_1dc2 + call Func_1c1b + ld a, d + and a + jp z, Func_1dc2 + cp $8 + jp c, Func_1dc2 + cp $2a + jp nc, Func_1dc2 + ld a, $0 + ld [$d8ea], a + ld d, b + call Func_1c32 + ld d, b + call Func_1c2b + ld d, b + call Func_1c32 + ld d, b + call Func_1c2b + ld d, b + call Func_1c32 + ret + +Func_1ca1: ; 0x1ca1 + ld a, $2 + ld [$d8e9], a + ld b, $1a + ld c, $56 + ld d, b + ld e, $0 + call Func_1c32 + ld d, b + call Func_1c2b + ld d, b + call Func_1c32 + ld d, b + call Func_1c2b + ld d, b + call Func_1c32 + ld d, e + call Func_1c23 + ld a, d + and a + jp z, Func_1dc2 + ld d, e + call Func_1c1b + ld a, d + and a + jp z, Func_1dc2 + ld d, e + call Func_1c23 + ld a, d + and a + jp z, Func_1dc2 + ld d, e + call Func_1c1b + ld a, d + and a + jp z, Func_1dc2 + ld d, $1a + call Func_1c32 + ld a, $0 + ld [$d8ea], a + ret + +INCBIN "baserom.gbc",$1cef,$1cf8 - $1cef + +Func_1cf8: ; 0x1cf8 + xor a + ld [$d8e4], a + ld [$d8e5], a + push hl + push bc + ld hl, $d8e6 + ld a, $5a + ld [hli], a + ld [hl], b + dec hl + ld b, $2 + ld d, $1e + call Func_1c32 + call Func_1d44 + pop bc + pop hl + call Func_1ed3 + call Func_1d44 + ld a, [$d8e4] + ld [$d8e6], a + ld a, [$d8e5] + ld [$d8e7], a + ld hl, $d8e6 + ld b, $2 + call Func_1d44 + ld hl, $d8ea + ld b, $1 + call Func_1e3b + ld a, [$d8e6] + ld [$d8e4], a + ld a, [$d8e7] + ld [$d8e5], a + ret + +Func_1d44: ; 0x1d44 + ld a, [$d8ea] + cp $0 + ret nz + ld c, $56 + ld d, $16 + call Func_1c2b + ld d, $16 + call Func_1c32 + ld a, b + cpl + ld b, a +.asm_1d59 + inc b + jr z, .asm_1dae + ld a, $8 + ld [$d8e3], a + ld a, [hli] + ld e, a + ld a, [$d8e4] + add e + ld [$d8e4], a + jr nc, .asm_1d75 + ld a, [$d8e5] + inc a + ld [$d8e5], a + jr .asm_1d78 +.asm_1d75 + call Func_1ed3 +.asm_1d78 + ld a, e + rlca + ld e, a + jr nc, .asm_1d8d + ld a, [$d8eb] + ld d, a + call Func_1c2b + ld a, [$d8ec] + ld d, a + call Func_1c32 + jr .asm_1d9b +.asm_1d8d + ld a, [$d8ed] + ld d, a + call Func_1c2b + ld a, [$d8ee] + ld d, a + call Func_1c32 +.asm_1d9b + ld a, [$d8e3] + dec a + ld [$d8e3], a + jr z, .asm_1dac + call Func_1ed4 + call Func_1ed4 + jr .asm_1d78 +.asm_1dac + jr .asm_1d59 +.asm_1dae + call Func_1ed3 + call Func_1ed3 + call Func_1ed4 + ld d, $16 + call Func_1c2b + ld d, $16 + call Func_1c32 + ret + +Func_1dc2: ; 0x1dc2 + ld a, $2 + ld [$d8ea], a + ret + +INCBIN "baserom.gbc",$1dc8,$1dd1 - $1dc8 + +Func_1dd1: ; 0x1dd1 + ld a, [$d8ea] + or $4 + ld [$d8ea], a + ret + +Func_1dda: ; 0x1dda + xor a + ld [$d8e4], a + ld [$d8e5], a + push hl + ld hl, $d8e6 + ld b, $2 + call Func_1e3b + ld a, [$d8e7] + ld [$d8e8], a + ld b, a + pop hl + ld a, [$d8e6] + cp $5a + jp nz, Func_1dd1 + call Func_1e3b + ld a, [$d8e4] + ld d, a + ld a, [$d8e5] + ld e, a + push de + ld hl, $d8e6 + ld b, $2 + call Func_1e3b + pop de + ld hl, $d8e6 + ld a, [hli] + xor d + ld b, a + ld a, [hl] + xor e + or b + jr z, .asm_1e22 + ld a, [$d8ea] + or $1 + ld [$d8ea], a +.asm_1e22 + push de + ld hl, $d8ea + ld b, $1 + call Func_1d44 + pop de + ld a, d + ld [$d8e4], a + ld a, e + ld [$d8e5], a + ld a, [$d8e8] + cp $82 + ret z + ret + +Func_1e3b: ; 0x1e3b + ld a, [$d8ea] + cp $0 + ret nz + ld c, $56 + ld d, $0 + call Func_1c23 + ld a, d + or a + jp z, Func_1dc2 + ld d, $0 + call Func_1c1b + ld a, d + or a + jp z, Func_1dc2 + ld d, $0 + call Func_1c23 + ld a, d + or a + jp z, Func_1dc2 + call Func_1ed4 + call Func_1ed4 + push af + pop af + ld a, b + cpl + ld b, a +.asm_1e6c + inc b + jr z, .asm_1eb9 + ld a, $8 + ld [$d8e3], a +.asm_1e74 + ld d, $0 + call Func_1c1b + call Func_1c23 + ld a, [$d8ef] + cp d + jr nc, .asm_1e88 + ld a, e + set 0, a + ld e, a + jr .asm_1e8c +.asm_1e88 + ld a, e + res 0, a + ld e, a +.asm_1e8c + ld a, [$d8e3] + dec a + ld [$d8e3], a + jr z, .asm_1ea0 + ld a, e + rlca + ld e, a + call Func_1ed4 + call Func_1ed4 + jr .asm_1e74 +.asm_1ea0 + ld a, e + ld [hli], a + ld a, [$d8e4] + add e + ld [$d8e4], a + jr nc, .asm_1eb4 + ld a, [$d8e5] + inc a + ld [$d8e5], a + jr .asm_1eb7 +.asm_1eb4 + call Func_1ed3 +.asm_1eb7 + jr .asm_1e6c +.asm_1eb9 + ld d, $0 + call Func_1c1b + ld a, d + and a + jp z, Func_1dc2 + ld d, $11 + call Func_1c32 + ret + +INCBIN "baserom.gbc",$1ec9,$1ed3 - $1ec9 + +Func_1ed3: ; 0x1ed3 + ret + +Func_1ed4: ; 0x1ed4 + jr z, .asm_1ed6 +.asm_1ed6 + jr nz, .asm_1ed8 +.asm_1ed8 + ret + +INCBIN "baserom.gbc",$1ed9,$1f24 - $1ed9 LoadOAMData: ; 0x1f24 ; This function loads OAM data, but it adds b and c to the x and y values for some reason. @@ -2764,6 +3741,7 @@ CallTable_2049: ; 0x2049 dw HandleTitlescreen db Bank(HandleTitlescreen), $00 + ; SCREEN_PINBALL_GAME dw Func_d853 db Bank(Func_d853), $00 @@ -2775,9 +3753,11 @@ CallTable_2049: ; 0x2049 dw HandleOptionsScreen db Bank(HandleOptionsScreen), $00 - dw $4A7F - db $03, $00 + ; SCREEN_HIGH_SCORES + dw HandleHighScoresScreen + db Bank(HandleHighScoresScreen), $00 + ; SCREEN_FIELD_SELECT dw $56D3 db $03, $00 ; end of call table @@ -2868,7 +3848,51 @@ AddVelocityToPosition: ; 0x21c3 ld [hl], a ret -INCBIN "baserom.gbc",$21e5,$30db - $21e5 +INCBIN "baserom.gbc",$21e5,$28a0 - $21e5 + +Func_28a0: ; 0x28a0 + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + xor a + ld [de], a + ret + +Func_28a9: ; 0x28a9 + ld a, [de] + and a + ret z + dec a + ld [de], a + ret nz + push de + inc de + inc de + ld a, [de] + inc a + ld [de], a + ld c, a + ld b, $0 + sla c + rl b + add hl, bc + ld a, [hli] + pop de + and a + scf + ret z + push de + ld [de], a + inc de + ld a, [hli] + ld [de], a + pop de + ret + +INCBIN "baserom.gbc",$28c9,$30db - $28c9 Func_30db: ; 0x30db ld a, $86 @@ -7241,7 +8265,1279 @@ Func_ca3a: ; 0ca3a call Func_f1a ret -INCBIN "baserom.gbc",$ca55,$d3ff - $ca55 +INCBIN "baserom.gbc",$ca55,$ca7f - $ca55 + +HandleHighScoresScreen: ; 0xca7f + ld a, [wScreenState] + rst $18 +PointerTable_ca83: ; 0xca83 + dw Func_ca8f + dw Func_cb14 + dw Func_ccac + dw Func_ccb6 + dw Func_cd6c + dw ExitHighScoresScreen + +Func_ca8f: ; 0xca8f + ld hl, $d473 + call Func_959 + ld [hli], a + call Func_959 + ld [hli], a + call Func_959 + ld [hli], a + call Func_959 + ld [hli], a + ld hl, $da36 + ld a, [$da83] + and a + jr z, .asm_caae + ld hl, $da77 +.asm_caae + ld b, $5 +.asm_cab0 + ld de, $d46f + ld c, $6 +.asm_cab5 + ld a, [de] + cp [hl] + jr c, .asm_cad0 + jr nz, .asm_cac2 + dec de + dec hl + dec c + jr nz, .asm_cab5 + jr .asm_cad0 +.asm_cac2 + dec hl + dec c + jr nz, .asm_cac2 + ld a, l + sub $7 + ld l, a + jr nc, .asm_cacd + dec h +.asm_cacd + dec b + jr nz, .asm_cab0 +.asm_cad0 + ld a, b + ld [$da81], a + xor a + ld [$da80], a + inc b + ld hl, $da30 + ld de, $da3d + ld a, [$da83] + and a + jr z, .asm_caeb + ld hl, $da71 + ld de, $da7e +.asm_caeb + ld a, $5 +.asm_caed + cp b + jr c, .asm_cb02 + push af + jr nz, .asm_caf6 + ld hl, $d476 +.asm_caf6 + ld c, $d +.asm_caf8 + ld a, [hld] + ld [de], a + dec de + dec c + jr nz, .asm_caf8 + pop af + dec a + jr nz, .asm_caed +.asm_cb02 + ld a, [$da81] + cp $5 + ld a, $1 + jr nz, .asm_cb0c + xor a +.asm_cb0c + ld [$da7f], a + ld hl, wScreenState + inc [hl] + ret + +Func_cb14: ; 0xcb14 + ld a, $43 + ld [$ff9e], a + ld a, $e0 + ld [$d80c], a + ld a, $e1 + ld [$d80d], a + ld [$d80e], a + xor a + ld [$ffa1], a + ld [$ffab], a + ld [$ffa0], a + ld [$ffad], a + ld a, $e + ld [$ffa2], a + ld [$ffa8], a + ld a, $82 + ld [$ffa9], a + ld [$ffaa], a + ld hl, $ff9f + set 6, [hl] + ld hl, $ffff + set 1, [hl] + ld a, $3 + ld [$ffb0], a + ld a, [hGameBoyColorFlag] + and a + jr z, .asm_cb51 + ld a, [$da83] + inc a +.asm_cb51 + ld hl, $4be3 ; todo + call LoadVideoData + call ClearOAMBuffer + ld a, $20 + ld [$da82], a + call Func_d211 + ld hl, $99c0 + ld de, $da3d + call Func_d2cb + ld hl, $9dc0 + ld de, $da7e + call Func_d2cb + ld a, [$da83] + and a + jr z, .asm_cb7f + ld hl, $ff9e + set 3, [hl] +.asm_cb7f + call Func_b66 + ld a, [$da7f] + and a + jr z, .asm_cbbd + ld a, [$da81] + and a + jr nz, .asm_cb9b + ld a, $13 + call Func_52c + ld de, $0001 + call Func_490 + jr .asm_cba6 +.asm_cb9b + ld a, $13 + call Func_52c + ld de, $0002 + call Func_490 +.asm_cba6 + call Func_588 + ld bc, $0009 + call Func_d68a + ld bc, $03c9 + call Func_d68a + call Func_bbe + ld hl, wScreenState + inc [hl] + ret +.asm_cbbd + ld a, $10 + call Func_52c + ld de, $0004 + call Func_490 + call Func_588 + ld bc, $0009 + call Func_d68a + ld bc, $03c9 + call Func_d68a + call Func_bbe + ld hl, wScreenState + inc [hl] + ld hl, wScreenState + inc [hl] + ret + +INCBIN "baserom.gbc",$cbe3,$ccac - $cbe3 + +Func_ccac: ; 0xccac + call Func_d18b + call Func_d1d2 + call Func_d211 + ret + +Func_ccb6: ; 0xccb6 + call Func_d4cf + call Func_d24f + ld a, [hNewlyPressedButtons] + bit BIT_A_BUTTON, a + jr z, .asm_ccd1 + ld de, $0001 + call PlaySoundEffect + ld hl, wScreenState + inc [hl] + ld hl, wScreenState + inc [hl] + ret +.asm_ccd1 + bit 1, a + jr z, .asm_cce4 + ld de, $0001 + call PlaySoundEffect + ld hl, wScreenState + inc [hl] + ld hl, wScreenState + inc [hl] + ret +.asm_cce4 + bit 3, a + jr z, .asm_ccfb + call Func_1a43 + ld a, [hGameBoyColorFlag] + ld [$d8f0], a + ld de, $0001 + call PlaySoundEffect + ld hl, wScreenState + inc [hl] + ret +.asm_ccfb + ld a, [hJoypadState] + cp (SELECT | D_UP) + ret nz + ld a, [hNewlyPressedButtons] + and (SELECT | D_UP) + ret z + ld de, $0001 + call PlaySoundEffect + call ClearOAMBuffer + ld bc, $473b + ld a, $94 + call LoadOAMData +.asm_cd16 + rst $10 + ld a, [hNewlyPressedButtons] + bit BIT_B_BUTTON, a + jr z, .asm_cd24 + ld de, $0001 + call PlaySoundEffect + ret +.asm_cd24 + bit 0, a + jr z, .asm_cd16 + ld de, $0001 + call PlaySoundEffect + call CopyInitialHighScores + ld a, $30 + ld hl, $6040 ; todo + ld de, $9840 + ld bc, $01c0 + call Func_73f + ld a, $30 + ld hl, $5840 ; todo + ld de, $9c40 + ld bc, $01c0 + call Func_73f + ld hl, $99c0 ; todo + ld de, $da3d + call Func_d361 + ld hl, $9dc0 + ld de, $da7e + call Func_d361 + ld hl, wRedHighScore1Points + ld de, $a000 + ld bc, $0082 + call Func_f1a + ret + +Func_cd6c: ; 0xcd6c + ld a, [$ffb3] + and $1f + call z, Func_1a43 + call Func_cf7d + call Func_cfa6 + ld a, [hNewlyPressedButtons] + bit BIT_A_BUTTON, a + jr z, .asm_cdbb + ld de, $0001 + call PlaySoundEffect + ld a, [$da85] + and a + jr nz, .asm_cda1 + ld a, [$d86e] + and a + jr z, .asm_cdbb + call ClearOAMBuffer + ld bc, $473b + ld a, $8e + call LoadOAMData + call Func_d042 + jr .asm_cdc6 +.asm_cda1 + ld a, [$d8f0] + and a + jr z, .asm_cdbb + ld de, $0000 + call Func_490 + rst $10 + call Func_cdce + push af + ld de, $0004 + call Func_490 + pop af + jr nc, .asm_cdc6 +.asm_cdbb + ld a, [hNewlyPressedButtons] + bit BIT_B_BUTTON, a + ret z + ld de, $0001 + call PlaySoundEffect +.asm_cdc6 + xor a + ld [$ff56], a + ld hl, wScreenState + dec [hl] + ret + +Func_cdce: ; 0xcdce + push af + ld a, $0 + ld [$abf6], a + pop af + call ClearOAMBuffer + call Func_1be3 + call Func_ced1 + push af + ld a, $1 + ld [$abf6], a + pop af + di + ld a, [$d8ea] + cp $0 + jp nz, .asm_ceb6 + ld a, [$d8e9] + cp $1 + jr z, .asm_ce23 + push af + ld a, $2 + ld [$abf6], a + pop af + ld b, $82 + ld hl, wRedHighScore1Points + call Func_1cf8 + ld a, [$d8ea] + cp $0 + jp nz, .asm_ceb6 + push af + ld a, $3 + ld [$abf6], a + pop af + ld hl, $c4c0 + call Func_1dda + ld a, [$d8ea] + cp $0 + jp nz, .asm_ceb6 + jr .asm_ce4d +.asm_ce23 + push af + ld a, $4 + ld [$abf6], a + pop af + ld hl, $c4c0 + call Func_1dda + ld a, [$d8ea] + cp $0 + jr nz, .asm_ceb6 + push af + ld a, $5 + ld [$abf6], a + pop af + ld b, $82 + ld hl, wRedHighScore1Points + call Func_1cf8 + ld a, [$d8ea] + cp $0 + jr nz, .asm_ceb6 +.asm_ce4d + push af + ld a, $6 + ld [$abf6], a + pop af + call Func_ceca + rst $10 + ld hl, $c4cc + ld b, $5 +.asm_ce5d + push bc + push hl + ld d, h + ld e, l + ld hl, $da3d + call Func_cfcb + pop hl + pop bc + ld de, $000d + add hl, de + dec b + jr nz, .asm_ce5d + push af + ld a, $7 + ld [$abf6], a + pop af + ld hl, $c50d + ld b, $5 +.asm_ce7c + push bc + push hl + ld d, h + ld e, l + ld hl, $da7e + call Func_cfcb + pop hl + pop bc + ld de, $000d + add hl, de + dec b + jr nz, .asm_ce7c + push af + ld a, $8 + ld [$abf6], a + pop af + ld hl, $99c0 + ld de, $da3d + call Func_d361 + ld hl, $9dc0 + ld de, $da7e + call Func_d361 + ld hl, wRedHighScore1Points + ld de, $a000 + ld bc, $0082 + call Func_f1a + and a + ret +.asm_ceb6 + push af + ld a, $9 + ld [$abf6], a + pop af + call Func_ceca + rst $10 + push af + ld a, $a + ld [$abf6], a + pop af + scf + ret + +Func_ceca: ; 0xceca + ld a, [$ff44] + and a + jr nz, Func_ceca + ei + ret + +Func_ced1: ; 0xced1 + ld hl, $4f4b ; todo + ld de, $da87 + call Func_28a0 + ld bc, $4800 + ld a, [$da88] + call LoadOAMData + ld bc, $473b + ld a, $8f + call LoadOAMData + call Func_926 + rst $10 + ld a, $1 + ld [$d8e9], a + ld b, $b4 +.asm_cef6 + push bc + xor a + ld [$ffb2], a +.asm_cefa + ld b, $2 + ld c, $56 + ld a, [$ff00+c] + and b + jr z, .asm_cf09 + ld a, [$ffb2] + and a + jr z, .asm_cefa + jr .asm_cf0e +.asm_cf09 + call Func_1c50 + jr .asm_cf40 +.asm_cf0e + ld hl, $4f4b + ld de, $da87 + call Func_28a9 + jr nc, .asm_cf40 + ld bc, $4800 + ld a, [$da88] + call LoadOAMData + ld bc, $473b + ld a, $8f + call LoadOAMData + call Func_926 + call Func_1ca1 + ld a, [$da89] + cp $6 + jr nz, .asm_cf40 + ld hl, $4f4b ; todo + ld de, $da87 + call Func_28a0 +.asm_cf40 + pop bc + ld a, [$d8ea] + cp $0 + ret z + dec b + jr nz, .asm_cef6 + ret + +INCBIN "baserom.gbc",$cf4b,$cf58 - $cf4b + +Func_cf58: ; 0xcf58 + cp $5 + ret z + push af + ld de, $0002 + call PlaySoundEffect + call ClearOAMBuffer + rst $10 + pop af + ld bc, $473b ; todo + add $8f + call LoadOAMData +.asm_cf6f + rst $10 + ld a, [hNewlyPressedButtons] + bit BIT_A_BUTTON, a + jr z, .asm_cf6f + ld de, $0001 + call PlaySoundEffect + ret + +Func_cf7d: ; 0xcf7d + ld a, [$d809] + ld b, a + ld a, [$da85] + bit 6, b + jr z, .asm_cf95 + and a + ret z + dec a + ld [$da85], a + ld de, $0003 + call PlaySoundEffect + ret +.asm_cf95 + bit 7, b + ret z + cp $1 + ret z + inc a + ld [$da85], a + ld de, $0003 + call PlaySoundEffect + ret + +Func_cfa6: ; 0xcfa6 + ld bc, $473b + ld a, $87 + call LoadOAMData + ld a, [$d8f0] + and a + jr z, .asm_cfb6 + ld a, $2 +.asm_cfb6 + ld e, a + ld a, [$d86e] + add e + xor $3 + add $8a + call LoadOAMData + ld a, [$da85] + add $88 + call LoadOAMData + ret + +Func_cfcb: ; 0xcfcb + ld a, e + ld [$ff8c], a + ld a, d + ld [$ff8d], a + push hl + ld b, $5 +.asm_cfd4 + ld a, [$ff8c] + ld e, a + ld a, [$ff8d] + ld d, a + call Func_d005 + call Func_d017 + jr c, .asm_cfe5 + dec b + jr nz, .asm_cfd4 +.asm_cfe5 + inc b + pop de + ld hl, $fff3 + add hl, de + ld a, $5 +.asm_cfed + cp b + ret c + push af + jr nz, .asm_cff8 + ld a, [$ff8c] + ld l, a + ld a, [$ff8d] + ld h, a +.asm_cff8 + ld c, $d +.asm_cffa + ld a, [hld] + ld [de], a + dec de + dec c + jr nz, .asm_cffa + pop af + dec a + jr nz, .asm_cfed + ret + +Func_d005: ; 0xd005 + ld c, $7 +.asm_d007 + ld a, [de] + cp [hl] + jr nz, .asm_d010 + dec de + dec hl + dec c + jr nz, .asm_d007 +.asm_d010 + ld a, c + ld [$ff8e], a + call Func_d035 + ret + +Func_d017: ; 0xd017 + ld c, $6 +.asm_d019 + ld a, [de] + cp [hl] + jr c, .asm_d02b + jr nz, .asm_d030 + dec de + dec hl + dec c + jr nz, .asm_d019 + ld a, [$ff8e] + and a + jr nz, .asm_d02b + ld b, $5 +.asm_d02b + call Func_d035 + scf + ret +.asm_d030 + call Func_d035 + and a + ret + +Func_d035: ; 0xd035 + ld a, e + sub c + ld e, a + jr nc, .asm_d03b + dec d +.asm_d03b + ld a, l + sub c + ld l, a + jr nc, .asm_d041 + dec h +.asm_d041 + ret + +Func_d042: ; 0xd042 + ld a, [hJoypadState] + ld [$da86], a + ld b, a + ld a, $80 + bit BIT_D_LEFT, b + jr z, .asm_d052 + ld a, $7f + jr .asm_d058 +.asm_d052 + bit BIT_D_RIGHT, b + jr z, .asm_d058 + ld a, $10 +.asm_d058 + ld [$d8a7], a + ld a, $e0 + ld [$d8aa], a + ld a, $30 + ld hl, $63c0 + ld de, $c280 + ld bc, $0040 + call Func_666 + ld a, $0 + ld hl, $9840 + ld de, $c2c0 + ld bc, $01c0 + call Func_73f + ld a, $30 + ld hl, $6280 + ld de, $c480 + ld bc, $0040 + call Func_666 + call Func_d6b6 + call Func_d0e3 + ret c + ld a, [$da86] + bit 2, a + jr z, .asm_d0a2 + ld de, $da06 + call Func_d107 + call Func_d0f5 + ret c +.asm_d0a2 + ld a, $30 + ld hl, $5bc0 ; todo + ld de, $c280 + ld bc, $0040 + call Func_666 + ld a, $0 + ld hl, $9c40 + ld de, $c2c0 + ld bc, $01c0 + call Func_73f + ld a, $30 + ld hl, $5a80 ; todo + ld de, $c480 + ld bc, $0040 + call Func_666 + call Func_d6b6 + call Func_d0e3 + ret c + ld a, [$da86] + bit 2, a + ret z + ld de, $da47 + call Func_d107 + call Func_d0f5 + ret + +Func_d0e3: ; 0xd0e3 + ld a, $2a + ld hl, $6200 + call Func_1a21 + ld a, [$d86d] + and a + ret z + call Func_cf58 + scf + ret + +Func_d0f5: ; 0xd0f5 + ld a, $29 + ld hl, $7b00 + call Func_1a21 + ld a, [$d86d] + and a + ret z + call Func_cf58 + scf + ret + +Func_d107: ; 0xd107 + ld hl, $c280 + ld a, $c0 + ld b, $20 +.asm_d10e + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + ld [hli], a + dec b + jr nz, .asm_d10e + ld hl, $c280 + ld b, $5 +.asm_d136 + ld c, $4 +.asm_d138 + ld a, [de] + swap a + call Func_d159 + ld a, [de] + call Func_d159 + inc de + inc hl + dec c + jr nz, .asm_d138 + ld a, l + add $4c + ld l, a + jr nc, .asm_d14e + inc h +.asm_d14e + ld a, e + add $9 + ld e, a + jr nc, .asm_d155 + inc d +.asm_d155 + dec b + jr nz, .asm_d136 + ret + +Func_d159: ; 0xd159 + and $f + sla a + sla a + xor $80 + ld [hli], a + inc a + ld [hli], a + inc a + push bc + push hl + ld bc, $001e + add hl, bc + ld [hli], a + inc a + ld [hli], a + pop hl + pop bc + ret + +ExitHighScoresScreen: ; 0xd171 + call Func_cb5 + call Func_576 + ld hl, $ff9f + res 6, [hl] + ld hl, $ffff + res 1, [hl] + ld a, SCREEN_TITLESCREEN + ld [wCurrentScreen], a + xor a + ld [wScreenState], a + ret + +Func_d18b: ; 0xd18b + ld a, [$ff9a] + ld b, a + ld a, [$da81] + ld e, a + sla e + sla e + add e + sla e + add e + ld e, a + ld a, [$da80] + add e + ld e, a + ld d, $0 + ld hl, wRedHighScore1Name + ld a, [$da83] + and a + jr z, .asm_d1ae + ld hl, wBlueHighScore1Name +.asm_d1ae + add hl, de + ld a, [hl] + bit 4, b + jr z, .asm_d1bd + inc a + cp $38 + jr nz, .asm_d1c7 + ld a, $a + jr .asm_d1c7 +.asm_d1bd + bit 5, b + ret z + dec a + cp $9 + jr nz, .asm_d1c7 + ld a, $37 +.asm_d1c7 + ld [hl], a + call Func_d46f + ld de, $0003 + call PlaySoundEffect + ret + +Func_d1d2: ; 0xd1d2 + ld a, [hNewlyPressedButtons] + ld b, a + ld a, [$da80] + bit BIT_A_BUTTON, b + jr z, .asm_d1fc + inc a + cp $3 + jr nz, .asm_d202 + ld de, $0745 + call PlaySoundEffect + xor a + ld [$da7f], a + ld hl, wScreenState + inc [hl] + ld hl, wRedHighScore1Points + ld de, $a000 + ld bc, $0082 + call Func_f1a + ret +.asm_d1fc + bit 1, b + ret z + and a + ret z + dec a +.asm_d202 + ld [$da80], a + ld a, $20 + ld [$da82], a + ld de, $0001 + call PlaySoundEffect + ret + +Func_d211: ; 0xd211 + ld a, [$da7f] + and a + ret z + ld a, [hJoypadState] + and (D_RIGHT | D_LEFT) + jr z, .asm_d221 + xor a + ld [$da82], a + ret +.asm_d221 + ld a, [$da82] + inc a + ld [$da82], a + bit 5, a + ret z + ld a, [$da81] + ld e, a + ld d, $0 + ld hl, $5247 ; todo + add hl, de + ld c, [hl] + ld a, [$da80] + ld e, a + ld d, $0 + ld hl, $524c ; todo + add hl, de + ld b, [hl] + ld a, $86 + call LoadOAMData + ret + +INCBIN "baserom.gbc",$d247,$d24f - $d247 + +Func_d24f: ; 0xd24f + ld a, [$da84] + inc a + cp $28 + jr c, .asm_d258 + xor a +.asm_d258 + ld [$da84], a + ld a, [$da83] + and a + ld c, $77 + ld a, $95 + ld hl, $527b ; todo + jr z, .asm_d26d + ld a, $96 + ld hl, $52a3 +.asm_d26d + push af + ld a, [$da84] + ld e, a + ld d, $0 + add hl, de + ld b, [hl] + pop af + call LoadOAMData + ret + +INCBIN "baserom.gbc",$d27b,$d2cb - $d27b + +Func_d2cb: ; 0xd2cb + ld b, $5 +.asm_d2cd + push bc + push hl + dec de + dec de + dec de + dec de + ld a, l + add $5 + ld l, a + ld b, $3 +.asm_d2d9 + ld a, [de] + call Func_d348 + dec de + dec hl + dec b + jr nz, .asm_d2d9 + pop hl + push hl + ld a, l + add $6 + ld l, a + ld bc, $0c01 +.asm_d2eb + ld a, [de] + swap a + and $f + call Func_d30e + inc hl + dec b + ld a, [de] + and $f + call Func_d30e + dec de + inc hl + dec b + jr nz, .asm_d2eb + xor a + call Func_d317 + pop hl + ld bc, hBoardYShift + add hl, bc + pop bc + dec b + jr nz, .asm_d2cd + ret + +Func_d30e: ; 0xd30e + jr nz, Func_d317 + ld a, b + dec a + jr z, Func_d317 + ld a, c + and a + ret nz + ; fall through +Func_d317: ; 0xd317 + push de + push af + call Func_d336 + pop af + ld c, $0 + sla a + add e + ld [hl], a + cp $fe + jr z, .asm_d328 + inc a +.asm_d328 + push hl + push af + ld a, l + add $20 + ld l, a + jr nc, .asm_d331 + inc h +.asm_d331 + pop af + ld [hl], a + pop hl + pop de + ret + +Func_d336: ; 0xd336 + ld e, $6c + ld a, b + cp $3 + ret z + cp $6 + ret z + cp $9 + ret z + cp $c + ret z + ld e, $58 + ret + +Func_d348: ; 0xd348 + ld c, $0 + sla a + add $90 + ld [hl], a + cp $fe + jr z, .asm_d354 + inc a +.asm_d354 + push hl + push af + ld a, l + add $20 + ld l, a + jr nc, .asm_d35d + inc h +.asm_d35d + pop af + ld [hl], a + pop hl + ret + +Func_d361: ; 0xd361 + ld b, $5 +.asm_d363 + push bc + push hl + dec de + dec de + dec de + dec de + ld a, l + add $5 + ld l, a + ld b, $3 +.asm_d36f + ld a, [de] + call Func_d3e2 + dec de + dec hl + dec b + jr nz, .asm_d36f + pop hl + push hl + ld a, l + add $6 + ld l, a + ld bc, $0c01 +.asm_d381 + ld a, [de] + swap a + and $f + call Func_d3a4 + inc hl + dec b + ld a, [de] + and $f + call Func_d3a4 + dec de + inc hl + dec b + jr nz, .asm_d381 + xor a + call Func_d3ad + pop hl + ld bc, hBoardYShift + add hl, bc + pop bc + dec b + jr nz, .asm_d363 + ret + +Func_d3a4: ; 0xd3a4 + jr nz, Func_d3ad + ld a, b + dec a + jr z, Func_d3ad + ld a, c + and a + ret nz + ; fall through +Func_d3ad: ; 0xd3ad + push de + push af + call Func_d3d0 + pop af + ld c, $0 + sla a + add e + call PutTileInVRAM + cp $fe + jr z, .asm_d3c0 + inc a +.asm_d3c0 + push hl + push af + ld a, l + add $20 + ld l, a + jr nc, .asm_d3c9 + inc h +.asm_d3c9 + pop af + call PutTileInVRAM + pop hl + pop de + ret + +Func_d3d0: ; 0xd3d0 + ld e, $6c + ld a, b + cp $3 + ret z + cp $6 + ret z + cp $9 + ret z + cp $c + ret z + ld e, $58 + ret + +Func_d3e2: ; 0xd3e2 + ld c, $0 + sla a + add $90 + call PutTileInVRAM + cp $fe + jr z, .asm_d3f0 + inc a +.asm_d3f0 + push hl + push af + ld a, l + add $20 + ld l, a + jr nc, .asm_d3f9 + inc h +.asm_d3f9 + pop af + call PutTileInVRAM + pop hl + ret CopyInitialHighScores: ; 0xd3ff ld hl, InitialHighScores @@ -7283,7 +9579,218 @@ CopyInitialHighScoresForStage: ; 0xd40e INCLUDE "data/initial_high_scores.asm" ; 0xd42e -INCBIN "baserom.gbc",$d46f,$d71c - $d46f +Func_d46f: ; 0xd46f + ld a, [$da81] + ld d, a + sla a + add d + ld d, a + ld e, $0 + srl d + rr e + srl d + rr e + srl d + rr e + ld a, [$da80] + add e + ld e, a + ld hl, $9843 + ld a, [$da83] + and a + jr z, .asm_d496 + ld hl, $9c43 +.asm_d496 + add hl, de + push hl + ld a, [$da81] + ld e, a + sla e + sla e + add e + sla e + add e + ld e, a + ld a, [$da80] + add e + ld e, a + ld d, $0 + ld hl, wRedHighScore1Name + ld a, [$da83] + and a + jr z, .asm_d4b8 + ld hl, wBlueHighScore1Name +.asm_d4b8 + add hl, de + ld a, [hl] + sla a + add $90 + pop hl + call PutTileInVRAM + ld de, $0020 + add hl, de + cp $fe + jr z, .asm_d4cb + inc a +.asm_d4cb + call PutTileInVRAM + ret + +Func_d4cf: ; 0xd4cf + ld a, [hNewlyPressedButtons] + ld b, a + ld a, [$da83] + bit 4, b + jr z, .asm_d4e3 + and a + ret nz + ld de, $0003 + call PlaySoundEffect + jr .asm_d4f0 +.asm_d4e3 + bit 5, b + ret z + and a + ret z + ld de, $0003 + call PlaySoundEffect + jr .asm_d537 +.asm_d4f0 + call ClearOAMBuffer + call $557b + ld a, $a5 + ld [$ffa7], a + xor a + ld [$ffa6], a + ld a, $2 + ld [$ffa1], a + ld hl, $ff9e + set 5, [hl] + ld b, $27 +.asm_d508 + push bc + ld a, $27 + sub b + bit 0, b + call nz, $5626 + ld hl, $ffa7 + dec [hl] + dec [hl] + dec [hl] + dec [hl] + ld hl, $ffa1 + inc [hl] + inc [hl] + inc [hl] + inc [hl] + rst $10 + pop bc + dec b + jr nz, .asm_d508 + xor a + ld [$ffa1], a + ld hl, $ff9e + res 5, [hl] + set 3, [hl] + ld a, $1 + ld [$da83], a + call $55d0 + ret +.asm_d537 + call ClearOAMBuffer + call $557b + ld a, $7 + ld [$ffa7], a + xor a + ld [$ffa6], a + ld a, $a0 + ld [$ffa1], a + ld hl, $ff9e + set 5, [hl] + res 3, [hl] + ld b, $27 +.asm_d551 + push bc + ld a, b + bit 0, b + call nz, $5626 + ld hl, $ffa7 + inc [hl] + inc [hl] + inc [hl] + inc [hl] + ld hl, $ffa1 + dec [hl] + dec [hl] + dec [hl] + dec [hl] + rst $10 + pop bc + dec b + jr nz, .asm_d551 + xor a + ld [$ffa1], a + ld hl, $ff9e + res 5, [hl] + xor a + ld [$da83], a + call $55d0 + ret + +INCBIN "baserom.gbc",$d57b,$d68a - $d57b + +Func_d68a: ; 0xd68a + push bc + ld hl, wPokedexFlags + ld bc, $9700 +.asm_d691 + bit 1, [hl] + jr z, .asm_d696 + inc c +.asm_d696 + inc hl + dec b + jr nz, .asm_d691 + ld a, c + pop bc + cp NUM_POKEMON + ret nz + ld hl, vBGMap0 + add hl, bc + call Func_d6aa + ld hl, vBGMap1 + add hl, bc + ; fall through +Func_d6aa: ; 0xd6aa + ld a, $56 + call PutTileInVRAM + inc hl + ld a, $57 + call PutTileInVRAM + ret + +Func_d6b6: ; 0xd6b6 + ld hl, wPokedexFlags + ld bc, $9700 +.asm_d6bc + bit 1, [hl] + jr z, .asm_d6c1 + inc c +.asm_d6c1 + inc hl + dec b + jr nz, .asm_d6bc + ld a, c + cp NUM_POKEMON + ret nz + ld hl, $c289 + ld a, $56 + ld [hli], a + ld a, $57 + ld [hli], a + ret + +INCBIN "baserom.gbc",$d6d3,$d71c - $d6d3 PointerTable_d71c: ; 0xd71c dw DataArray_d720 |