diff options
author | Marcus Huderle <huderlem@gmail.com> | 2015-02-23 20:31:47 -0800 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2015-02-23 20:31:47 -0800 |
commit | 40d2ebd35024ccdbc73ec06ffdc90def7ce94bd3 (patch) | |
tree | 8ffa912d4fbe5ca6ffca77ccad8afb5be8cdeb7b | |
parent | 4df23b0999668c931915a2794cc8ef9a2e2d89fb (diff) |
Documented and dumped some more titlescreen OAM things.
-rwxr-xr-x | main.asm | 138 |
1 files changed, 126 insertions, 12 deletions
@@ -1270,7 +1270,7 @@ Func_14a4: ; 0x14a4 INCBIN "baserom.gbc",$14c4,$1f24 - $14c4 -Func_1f24: ; 0x1f24 +LoadOAMData: ; 0x1f24 ; This function loads OAM data, but it adds b and c to the x and y values for some reason. ; input: a = OAM data id (see OAMDataPointers) push bc @@ -1517,11 +1517,11 @@ OAMDataPointers: ; 0x4000 dw OAMData_5a dw OAMData_5b dw OAMData_5c - dw OAMData_5d - dw OAMData_5e - dw OAMData_5f - dw OAMData_60 - dw OAMData_61 + dw TitlescreenPokeball1OAM + dw TitlescreenPokeball2OAM + dw TitlescreenPokeball3OAM + dw TitlescreenPokeball4OAM + dw TitlescreenPokeball5OAM dw OAMData_62 dw OAMData_63 dw OAMData_64 @@ -2340,35 +2340,37 @@ OAMData_5c: ; 0x484e db $10, $08, $42, $00 db $80 ; terminator -OAMData_5d: ; 0x485b +; These next 5 OAM entries are for the individual frames of the +; bouncing pokeball on the titlescreen. +TitlescreenPokeball1OAM: ; 0x485b db $14, $00, $4c, $02 db $0c, $00, $46, $31 db $14, $f8, $47, $02 db $0c, $f8, $46, $11 db $80 ; terminator -OAMData_5e: ; 0x486c +TitlescreenPokeball2OAM: ; 0x486c db $15, $00, $4d, $02 db $0d, $00, $48, $31 db $15, $f8, $49, $02 db $0d, $f8, $48, $11 db $80 ; terminator -OAMData_5f: ; 0x487d +TitlescreenPokeball3OAM: ; 0x487d db $13, $00, $4c, $02 db $0b, $00, $46, $31 db $13, $f8, $47, $02 db $0b, $f8, $46, $11 db $80 ; terminator -OAMData_60: ; 0x488e +TitlescreenPokeball4OAM: ; 0x488e db $11, $00, $4e, $02 db $09, $00, $4a, $31 db $11, $f8, $4b, $02 db $09, $f8, $4a, $11 db $80 ; terminator -OAMData_61: ; 0x489f +TitlescreenPokeball5OAM: ; 0x489f db $11, $00, $4c, $02 db $09, $00, $46, $31 db $11, $f8, $47, $02 @@ -3714,7 +3716,119 @@ INCBIN "baserom.gbc",$8290,$c000 - $8290 ; 0x8290 SECTION "bank3", ROMX, BANK[$3] -INCBIN "baserom.gbc",$c000,$c3b9 - $c000 +INCBIN "baserom.gbc",$c000,$c0f7 - $c000 + +Func_c0f7: ; 0xc0f7 + ld a, [$fffe] + and a + jr z, .asm_c104 + ld bc, $2040 + ld a, $62 ; seemingly-unused OAM data for titlescreen. It's just blank tiles. + call LoadOAMData +.asm_c104 + call Func_c21d + call Func_c21e + call Func_c278 + ret + +INCBIN "baserom.gbc",$c10e,$c21d - $c10e + +Func_c21d: ; 0xc21d +; World's greatest function. + ret + +Func_c21e: ; 0xc21e + ld a, [$d90c] + sla a + ld c, a + ld b, $0 + ld hl, $425f + add hl, bc + ld bc, $3810 + ld a, [hl] + cp $5a + call nz, LoadOAMData + ld a, [$d90d] + dec a + jr nz, .asm_c25b + inc hl + inc hl + ld a, [hl] + and a + jr z, .asm_c243 + ld a, [$d90c] + inc a +.asm_c243 + ld [$d90c], a + sla a + ld c, a + ld b, $0 + ld hl, $4260 + add hl, bc + ld a, [hl] + cp $3c + jr c, .asm_c25b + ld c, a + call Func_959 + and $1f + add c +.asm_c25b + ld [$d90d], a + ret + +INCBIN "baserom.gbc",$c25f,$c278 - $c25f + +Func_c278: ; 0xc278 + ld a, [$d909] + sla a + ld c, a + ld b, $0 + ld hl, $42d9 + add hl, bc + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a + ld e, $0 + ld a, [$d8f2] + cp $1 + jr nz, .asm_c297 + ld a, [$d90e] + sla a + ld e, a +.asm_c297 + ld d, $0 + ld hl, $42cc + add hl, de + ld a, [hl] + call LoadOAMData + ld a, [$d90f] + dec a + jr nz, .asm_c2c8 + ld a, [$d90e] + sla a + ld c, a + ld b, $0 + ld hl, $42ce + add hl, bc + ld a, [hl] + and a + jr z, .asm_c2bb + ld a, [$d90e] + inc a +.asm_c2bb + ld [$d90e], a + sla a + ld c, a + ld b, $0 + ld hl, $42cd + add hl, bc + ld a, [hl] +.asm_c2c8 + ld [$d90f], a + ret + +INCBIN "baserom.gbc",$c2cc,$c3b9 - $c2cc PointerTable_c3b9: ; 0xc3b9 dw DataArray_c3bd |