diff options
author | pikalaxalt <PikalaxALT@gmail.com> | 2016-05-22 15:23:16 -0400 |
---|---|---|
committer | pikalaxalt <PikalaxALT@gmail.com> | 2016-05-22 15:23:16 -0400 |
commit | 82b21453806362c5287b50137584c3734d2dab1b (patch) | |
tree | a575911e2bddb8b77f9767e520ba508776f0a53f /engine | |
parent | bd5caf92db057bdf32c77f3415f6411b4d327565 (diff) |
Disassemble ea3ea to end of bank 3a
Diffstat (limited to 'engine')
-rwxr-xr-x | engine/unknown_ea3ea.asm | 756 |
1 files changed, 756 insertions, 0 deletions
diff --git a/engine/unknown_ea3ea.asm b/engine/unknown_ea3ea.asm index 78a73393..fb16e913 100755 --- a/engine/unknown_ea3ea.asm +++ b/engine/unknown_ea3ea.asm @@ -214,3 +214,759 @@ Func_ea573: ; ea573 (3a:6573) GFX_ea597: ; ea597 (3a:6597) INCBIN "gfx/zero_one_ea597.2bpp" GFX_ea597End: + +Func_ea5b7: ; ea5b7 (3a:65b7) + ld hl, wOAMBuffer + 32 * 4 + 2 + ld de, 4 + ld a, [$c971] + ld c, 8 +.asm_ea5c2 + sla a + jr c, .asm_ea5ca + ld [hl], $fe + jr .asm_ea5cc + +.asm_ea5ca + ld [hl], $ff +.asm_ea5cc + add hl, de + dec c + jr nz, .asm_ea5c2 + ret + +Functionea5d1: ; ea5d1 (3a:65d1) + ld a, [wOverworldMap] + ld e, a + ld d, 0 + ld hl, Jumptable_ea5e0 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +Jumptable_ea5e0: + dw Functionea623 + dw Functionea6d2 + dw Functionea6af + dw Functionea645 + dw Functionea701 + dw Functionea6bd + dw Functionea671 + dw Functionea701 + dw Functionea6af + dw Functionea68a + dw Functionea701 + dw Functionea6af + dw Functionea721 + dw Functionea610 + dw Functionea61a + dw Functionea6af + dw Functionea61e + dw Functionea72f + dw Functionea732 + + +Functionea606: ; ea606 (3a:6606) + ld hl, wOverworldMap + inc [hl] + ret + +Functionea60b: ; ea60b (3a:660b) + ld hl, wOverworldMap + dec [hl] + ret + +Functionea610: ; ea610 (3a:6610) + xor a + ld [$c971], a + ld hl, wOverworldMap + set 7, [hl] + ret + +Functionea61a: ; ea61a (3a:661a) + call Functionea606 + ret + +Functionea61e: ; ea61e (3a:661e) + xor a + ld [wOverworldMap], a + ret + +Functionea623: ; ea623 (3a:6623) + call Functionea784 + ld hl, Data_ea9de + call Functionea76b + xor a + ld [$c976], a + ld [$c977], a + ld a, [$caf4] + ld [$c6e9], a + call Functionea606 + call Functionea74c + ld a, $01 + ld [$cae0], a + ret + +Functionea645: ; ea645 (3a:6645) + call Functionea784 + ld hl, $c6e9 + ld a, [hl] + and a + jr z, Functionea671 + ld hl, Data_ea9ea + call Functionea76b + call Functionea7e9 + ld a, $80 + ld [$c976], a + ld a, $02 + ld [$c977], a + call Functionea7a2 + call Functionea606 + call Functionea74c + ld a, $02 + ld [$cae0], a + ret + +Functionea671: ; ea671 (3a:6671) + ld a, $06 + ld [wOverworldMap], a + ld hl, Data_ea9f0 + call Functionea76b + xor a + ld [$c976], a + ld [$c977], a + call Functionea606 + call Functionea74c + ret + +Functionea68a: ; ea68a (3a:668a) + call Functionea784 + ld hl, Data_ea9e4 + call Functionea76b + call Functionea7d2 + ld a, $04 + ld [$c976], a + ld a, $00 + ld [$c977], a + call Functionea7a2 + call Functionea606 + call Functionea74c + ld a, $03 + ld [$cae0], a + ret + +Functionea6af: ; ea6af (3a:66af) + ld hl, $c973 + inc [hl] + ld a, [hl] + cp a, $06 + ret c + xor a + ld [hl], a + call Functionea606 + ret + +Functionea6bd: ; ea6bd (3a:66bd) + ld hl, $c973 + inc [hl] + ld a, [hl] + cp 6 + ret c + xor a + ld [hl], a + ld hl, $c6e9 + dec [hl] + call Functionea60b + call Functionea60b + ret + +Functionea6d2: ; ea6d2 (3a:66d2) + call Functionea742 + ret c + ld a, [$c970] + cp a, $ff + jr nz, .asm_ea6e4 + ld a, [$c971] + cp a, $ff + jr z, .asm_ea6fb +.asm_ea6e4 + ld a, [$c970] + cp a, $81 + jr nz, .asm_ea6fb + ld a, [$c971] + cp a, $00 + jr nz, .asm_ea6fb + ld hl, wUnknownSerialFlag_d49a + set 1, [hl] + call Functionea606 + ret + +.asm_ea6fb + ld a, $0e + ld [wOverworldMap], a + ret + +Functionea701: ; ea701 (3a:6701) + call Functionea742 + ret c + ld a, [$c971] + and $f0 + jr nz, .asm_ea71b + ld a, [$c971] + and $01 + jr nz, .asm_ea717 + call Functionea606 + ret + +.asm_ea717 + call Functionea60b + ret + +.asm_ea71b + ld a, $11 + ld [wOverworldMap], a + ret + +Functionea721: ; ea721 (3a:6721) + call Functionea742 + ret c + ld a, [$c971] + and $f3 + ret nz + call Functionea606 + ret + +Functionea72f: ; ea72f (3a:672f) + call Functionea606 +Functionea732: ; ea732 (3a:6732) + ld a, [wUnknownSerialFlag_d49b] + and a + ret nz + ld a, [$c971] + and $f0 + ret nz + xor a + ld [wOverworldMap], a + ret + +Functionea742: ; ea742 (3a:6742) + ld a, [wUnknownSerialFlag_d49b] + and a + jr nz, .asm_ea74a + and a + ret + +.asm_ea74a + scf + ret + +Functionea74c: ; ea74c (3a:674c) +.asm_ea74c + ld a, [wUnknownSerialFlag_d49b] + and a + jr nz, .asm_ea74c + ld a, $01 + ld [wUnknownSerialFlag_d49b], a + xor a + ld [$c974], a + ld [$c975], a + ld a, $88 + ld [rSB], a + ld a, $01 + ld [rSC], a + ld a, $81 + ld [rSC], a + ret + +Functionea76b: ; ea76b (3a:676b) + ld a, [hli] + ld [$c6ea], a + ld a, [hli] + ld [$c6eb], a + ld a, [hli] + ld [$c6ec], a + ld a, [hli] + ld [$c6ed], a + ld a, [hli] + ld [$c6ee], a + ld a, [hl] + ld [$c6ef], a + ret + +Functionea784: ; ea784 (3a:6784) + xor a + ld hl, $c6ea + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld hl, $c6ee + ld [hli], a + ld [hl], a + xor a + ld [$c976], a + ld [$c977], a + ld hl, $c6f0 + ld bc, $280 + call FillMemory + ret + +Functionea7a2: ; ea7a2 (3a:67a2) + ld hl, $0000 + ld bc, $0004 + ld de, $c6ea + call Functionea7c5 + ld a, [$c976] + ld c, a + ld a, [$c977] + ld b, a + ld de, $c6f0 + call Functionea7c5 + ld a, l + ld [$c6ee], a + ld a, h + ld [$c6ef], a + ret + +Functionea7c5: ; ea7c5 (3a:67c5) +.asm_ea7c5 + ld a, [de] + inc de + add l + jr nc, .asm_ea7cb + inc h +.asm_ea7cb + ld l, a + dec bc + ld a, c + or b + jr nz, .asm_ea7c5 + ret + +Functionea7d2: ; ea7d2 (3a:67d2) + ld a, $01 + ld [$c6f0], a + ld a, [$cae2] + ld [$c6f1], a + ld a, $e4 + ld [$c6f2], a + ld a, [$cae3] + ld [$c6f3], a + ret + +Functionea7e9: ; ea7e9 (3a:67e9) + ld a, [$c6e9] + ld b, a + ld a, [$caf4] + sub b + ld hl, $c978 + ld de, $0028 +.asm_ea7f7 + and a + jr z, .asm_ea7fe + add hl, de + dec a + jr .asm_ea7f7 + +.asm_ea7fe + ld e, l + ld d, h + ld hl, $c6f0 + ld c, $28 +.asm_ea805 + ld a, [de] + inc de + push bc + push de + push hl + swap a + ld d, a + and $f0 + ld e, a + ld a, d + and $0f + ld d, a + and $08 + ld a, d + jr nz, .asm_ea81d + or $90 + jr .asm_ea81f + +.asm_ea81d + or $80 +.asm_ea81f + ld d, a + lb bc, $3a, $01 + call CopyVideoData + pop hl + ld de, $0010 + add hl, de + pop de + pop bc + dec c + jr nz, .asm_ea805 + call Functionea834 + ret + +Functionea834: ; ea834 (3a:6834) + ld hl, $cbdc + ld bc, $0020 + xor a + call FillMemory + ld hl, $c300 + ld c, $28 +.asm_ea843 + push bc + push hl + call Functionea860 + jr nc, .asm_ea856 + call Functionea886 + call Functionea8a1 + call Functionea902 + call Functionea999 +.asm_ea856 + pop hl + inc hl + inc hl + inc hl + inc hl + pop bc + dec c + jr nz, .asm_ea843 + ret + +Functionea860: ; ea860 (3a:6860) + ld a, [$c6e9] + ld b, a + ld a, [$caf4] + sub b + ld c, a + ld b, $10 +.asm_ea86b + ld a, c + and a + jr z, .asm_ea876 + ld a, b + add $10 + ld b, a + dec c + jr .asm_ea86b + +.asm_ea876 + ld a, b + ld e, a + add $10 + ld d, a + ld a, [hl] + cp e + jr c, .asm_ea884 + cp d + jr nc, .asm_ea884 + scf + ret + +.asm_ea884 + and a + ret + +Functionea886: ; ea886 (3a:6886) + push hl + inc hl + inc hl + ld a, [hl] + swap a + ld d, a + and $f0 + ld e, a + ld a, d + and $0f + or $80 + ld d, a + ld hl, $cbdc + lb bc, $3a, $01 + call CopyVideoData + pop hl + ret + +Functionea8a1: ; ea8a1 (3a:68a1) + push hl + inc hl + inc hl + inc hl + ld a, [hl] + call Functionea8ab + pop hl + ret + +Functionea8ab: ; ea8ab (3a:68ab) + and $60 + swap a + ld e, a + ld d, 0 + ld hl, Jumptable_ea8ba + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +Jumptable_ea8ba: ; ea8ba (3a:68ba) + dw Functionea8c2 + dw Functionea8c3 + dw Functionea8c7 + dw Functionea8cb + +Functionea8c2: ; ea8c2 (3a:68c2) + ret + +Functionea8c3: ; ea8c3 (3a:68c3) + call Functionea8d2 + ret + +Functionea8c7: ; ea8c7 (3a:68c7) + call Functionea8e8 + ret + +Functionea8cb: ; ea8cb (3a:68cb) + call Functionea8d2 + call Functionea8e8 + ret + +Functionea8d2: ; ea8d2 (3a:68d2) + ld hl, $cbdc + ld c, 16 +.asm_ea8d7 + ld d, [hl] + ld a, 0 + ld b, 8 +.asm_ea8dc + sla d + rr a + dec b + jr nz, .asm_ea8dc + ld [hli], a + dec c + jr nz, .asm_ea8d7 + ret + +Functionea8e8: ; ea8e8 (3a:68e8) + ld hl, $cbdc + ld de, $cbea + ld c, $04 +.asm_ea8f0 + ld b, [hl] + ld a, [de] + ld [hli], a + ld a, b + ld [de], a + inc de + ld b, [hl] + ld a, [de] + ld [hli], a + ld a, b + ld [de], a + dec de + dec de + dec de + dec c + jr nz, .asm_ea8f0 + ret + +Functionea902: ; ea902 (3a:6902) + push hl + ld hl, $cbdc + ld de, $cbec + ld a, $08 +.asm_ea90b + push af + ld bc, $0000 + ld a, $08 +.asm_ea911 + push af + xor a + rlc [hl] + rl a + inc hl + rlc [hl] + rl a + dec hl + push hl + push de + call Functionea936 + pop de + pop hl + pop af + dec a + jr nz, .asm_ea911 + inc hl + inc hl + ld a, b + ld [de], a + inc de + ld a, c + ld [de], a + inc de + pop af + dec a + jr nz, .asm_ea90b + pop hl + ret + +Functionea936 ; ea936 (3a:6936) + call Functionea93d + call Functionea96d + ret + +Functionea93d: ; ea93d (3a:693d) + ld e, a + ld d, 0 + ld hl, Jumptable_ea949 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +Jumptable_ea949: ; ea949 (3a:6949) + dw Functionea951 + dw Functionea95f + dw Functionea956 + dw Functionea966 + +Functionea951: ; ea951 (3a:6951) + ld a, [rOBP0] + and $03 + ret + +Functionea956: ; ea956 (3a:6956) + ld a, [rOBP0] + and $0c + srl a + srl a + ret + +Functionea95f: ; ea95f (3a:695f) + ld a, [rOBP0] + and $30 + swap a + ret + +Functionea966: ; ea966 (3a:6966) + ld a, [rOBP0] + and $c0 + rlca + rlca + ret + +Functionea96d: ; ea96d (3a:696d) + ld e, a + ld d, 0 + ld hl, Jumptable_ea979 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +Jumptable_ea979: ; ea979 (3a:6979) + dw Functionea981 + dw Functionea986 + dw Functionea98c + dw Functionea992 + +Functionea981: ; ea981 (3a:6981) + sla b + sla c + ret + +Functionea986: ; ea986 (3a:6986) + scf + rl b + sla c + ret + +Functionea98c: ; ea98c (3a:698c) + sla b + scf + rl c + ret + +Functionea992: ; ea992 (3a:6992) + scf + rl b + scf + rl c + ret + +Functionea999: ; ea999 (3a:6999) + push hl + ld a, [hli] + ld c, [hl] + and $08 + jr nz, .asm_ea9a5 + ld hl, $c6f0 + jr .asm_ea9a8 + +.asm_ea9a5 + ld hl, $c830 +.asm_ea9a8 + ld b, $00 + ld a, c + and $f8 + sub $08 + ld c, a + sla c + rl b + add hl, bc + ld e, l + ld d, h + ld hl, $cbec + ld c, $08 +.asm_ea9bc + call Functionea9d0 + ld a, [de] + and b + or [hl] + ld [de], a + inc hl + inc de + ld a, [de] + and b + or [hl] + ld [de], a + inc hl + inc de + dec c + jr nz, .asm_ea9bc + pop hl + ret + +Functionea9d0: ; ea9d0 (3a:69d0) + push hl + push de + ld de, $fff0 + add hl, de + ld a, [hli] + or [hl] + xor $ff + ld b, a + pop de + pop hl + ret + +Data_ea9de: ; ea9de + db $01, $00, $00, $00, $01, $00 +Data_ea9e4: ; ea9e4 + db $02, $00, $04, $00, $00, $00 +Data_ea9ea: ; ea9ea + db $04, $00, $80, $02, $00, $00 +Data_ea9f0: ; ea9f0 + db $04, $00, $00, $00, $04, $00 +Data_ea9f6: ; ea9f6 + db $08, $00, $00, $00, $08, $00 +Data_ea9fc: ; ea9fc + db $0f, $00, $00, $00, $0f, $00 |