diff options
Diffstat (limited to 'engine/unknown_ea3ea.asm')
-rwxr-xr-x | engine/unknown_ea3ea.asm | 972 |
1 files changed, 972 insertions, 0 deletions
diff --git a/engine/unknown_ea3ea.asm b/engine/unknown_ea3ea.asm new file mode 100755 index 00000000..c00785b4 --- /dev/null +++ b/engine/unknown_ea3ea.asm @@ -0,0 +1,972 @@ +Func_ea3ea: ; ea3ea (3a:63ea) + call GBPalWhiteOutWithDelay3 + call ClearScreen + call LoadHpBarAndStatusTilePatterns + ld de, GFX_ea563 + ld hl, vChars2 + $710 + lb bc, BANK(GFX_ea563), (GFX_ea563End - GFX_ea563) / 8 + call CopyVideoDataDouble + + ld de, GFX_ea56b + ld hl, vChars2 + $6e0 + lb bc, BANK(GFX_ea56b), (GFX_ea56bEnd - GFX_ea56b) / 8 + call CopyVideoDataDouble + + xor a + ld [H_AUTOBGTRANSFERENABLED], a + xor a + ld [wWhichTradeMonSelectionMenu], a + call LoadMonData + + ld hl, wTileMap + lb bc, $10, $12 + call TextBoxBorder + + coord hl, 0, 12 + lb bc, $04, $12 + call TextBoxBorder + + coord hl, 3, 10 + call PrintLevelFull + + coord hl, 2, 10 + ld a, $6e + ld [hli], a + ld [hl], " " + + coord hl, 2, 11 + ld [hl], "′" + + coord hl, 4, 11 + ld de, wLoadedMonMaxHP + lb bc, 2, 3 + call PrintNumber + + ld a, [wMonHeader] + ld [wPokeBallAnimData], a + ld [wd0b5], a + ld hl, wPartyMonNicks + call Func_ea511 + coord hl, 8, 2 + call PlaceString + + call GetMonName + coord hl, 9, 3 + call PlaceString + + predef IndexToPokedex + coord hl, 2, 8 + ld [hl], "№" + inc hl + ld [hl], $f2 + inc hl + ld de, wPokeBallAnimData + lb bc, $80 | 1, 3 + call PrintNumber + + coord hl, 8, 4 + ld de, String_ea52f + call PlaceString + + ld hl, wPartyMonOT + call Func_ea511 + coord hl, 9, 5 + call PlaceString + + coord hl, 9, 6 + ld de, String_ea533 + call PlaceString + + coord hl, 13, 6 + ld de, wLoadedMonOTID + lb bc, $80 | 2, 5 + call PrintNumber + + coord hl, 9, 8 + ld de, String_ea537 + ld a, [hFlags_0xFFFA] + set 2, a + ld [hFlags_0xFFFA], a + call PlaceString + ld a, [hFlags_0xFFFA] + res 2, a + ld [hFlags_0xFFFA], a + + coord hl, 16, 8 + ld de, wLoadedMonAttack + ld a, 4 +.loop + push af + push de + + push hl + lb bc, 2, 3 + call PrintNumber + pop hl + ld bc, SCREEN_WIDTH + add hl, bc + + pop de + inc de + inc de + pop af + dec a + jr nz, .loop + + coord hl, 1, 13 + ld a, [wLoadedMonMoves] + call Func_ea51d + + coord hl, 1, 14 + ld a, [wLoadedMonMoves + 1] + call Func_ea51d + + coord hl, 1, 15 + ld a, [wLoadedMonMoves + 2] + call Func_ea51d + + coord hl, 1, 16 + ld a, [wLoadedMonMoves + 3] + call Func_ea51d + + ld b, $04 ; SET_PAL_STATUS_SCREEN + call RunPaletteCommand + + ld a, $01 + ld [H_AUTOBGTRANSFERENABLED], a + call Delay3 + call GBPalNormal + coord hl, 1, 1 + call LoadFlippedFrontSpriteByMonIndex + ret + +Func_ea511: ; ea511 (3a:6511) + ld bc, NAME_LENGTH + ld a, [wWhichPokemon] + call AddNTimes + ld e, l + ld d, h + ret + +Func_ea51d: ; ea51d (3a:651d) + and a + jr z, .asm_e6528 + ld [wPokeBallAnimData], a + call GetMoveName + jr .asm_ea52b + +.asm_e6528 + ld de, String_ea554 +.asm_ea52b + call PlaceString + ret +; ea52f + +String_ea52f: + db "OT/@" +; ea533 + +String_ea533: + db $73, "№/@" +; ea537 + +String_ea537: + db "ATTACK" + next "DEFENSE" + next "SPEED" + next "SPECIAL@" +; ea554 + +String_ea554: ; ea554 (3a:6554) + db "--------------@" + +GFX_ea563: ; ea563 (3a:6563) +INCBIN "gfx/stats_screen_hp.1bpp" +GFX_ea563End: ; ea56b (3a:656b) + +GFX_ea56b: +INCBIN "gfx/stats_screen_lv.1bpp" +GFX_ea56bEnd: ; ea573 (3a:6573) + +Func_ea573: ; ea573 (3a:6573) + ld hl, vChars1 + $7e0 + ld de, GFX_ea597 + lb bc, BANK(GFX_ea597), (GFX_ea597End - GFX_ea597) / 16 + call CopyVideoData + + ld hl, wOAMBuffer + 32 * 4 + ld a, $08 + ld c, $08 +.loop + ld [hl], $10 + inc hl + ld [hl], a + inc hl + ld [hl], $fe + inc hl + ld [hl], $00 + inc hl + add $08 + dec c + jr nz, .loop + ret + +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 + +Func_ea5d1: ; 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 Func_ea623 + dw Func_ea6d2 + dw Func_ea6af + dw Func_ea645 + dw Func_ea701 + dw Func_ea6bd + dw Func_ea671 + dw Func_ea701 + dw Func_ea6af + dw Func_ea68a + dw Func_ea701 + dw Func_ea6af + dw Func_ea721 + dw Func_ea610 + dw Func_ea61a + dw Func_ea6af + dw Func_ea61e + dw Func_ea72f + dw Func_ea732 + + +Func_ea606: ; ea606 (3a:6606) + ld hl, wOverworldMap + inc [hl] + ret + +Func_ea60b: ; ea60b (3a:660b) + ld hl, wOverworldMap + dec [hl] + ret + +Func_ea610: ; ea610 (3a:6610) + xor a + ld [$c971], a + ld hl, wOverworldMap + set 7, [hl] + ret + +Func_ea61a: ; ea61a (3a:661a) + call Func_ea606 + ret + +Func_ea61e: ; ea61e (3a:661e) + xor a + ld [wOverworldMap], a + ret + +Func_ea623: ; ea623 (3a:6623) + call Func_ea784 + ld hl, Data_ea9de + call Func_ea76b + xor a + ld [$c976], a + ld [$c977], a + ld a, [$caf4] + ld [$c6e9], a + call Func_ea606 + call Func_ea74c + ld a, $01 + ld [$cae0], a + ret + +Func_ea645: ; ea645 (3a:6645) + call Func_ea784 + ld hl, $c6e9 + ld a, [hl] + and a + jr z, Func_ea671 + ld hl, Data_ea9ea + call Func_ea76b + call Func_ea7e9 + ld a, $80 + ld [$c976], a + ld a, $02 + ld [$c977], a + call Func_ea7a2 + call Func_ea606 + call Func_ea74c + ld a, $02 + ld [$cae0], a + ret + +Func_ea671: ; ea671 (3a:6671) + ld a, $06 + ld [wOverworldMap], a + ld hl, Data_ea9f0 + call Func_ea76b + xor a + ld [$c976], a + ld [$c977], a + call Func_ea606 + call Func_ea74c + ret + +Func_ea68a: ; ea68a (3a:668a) + call Func_ea784 + ld hl, Data_ea9e4 + call Func_ea76b + call Func_ea7d2 + ld a, $04 + ld [$c976], a + ld a, $00 + ld [$c977], a + call Func_ea7a2 + call Func_ea606 + call Func_ea74c + ld a, $03 + ld [$cae0], a + ret + +Func_ea6af: ; ea6af (3a:66af) + ld hl, $c973 + inc [hl] + ld a, [hl] + cp a, $06 + ret c + xor a + ld [hl], a + call Func_ea606 + ret + +Func_ea6bd: ; 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 Func_ea60b + call Func_ea60b + ret + +Func_ea6d2: ; ea6d2 (3a:66d2) + call Func_ea742 + 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 Func_ea606 + ret + +.asm_ea6fb + ld a, $0e + ld [wOverworldMap], a + ret + +Func_ea701: ; ea701 (3a:6701) + call Func_ea742 + ret c + ld a, [$c971] + and $f0 + jr nz, .asm_ea71b + ld a, [$c971] + and $01 + jr nz, .asm_ea717 + call Func_ea606 + ret + +.asm_ea717 + call Func_ea60b + ret + +.asm_ea71b + ld a, $11 + ld [wOverworldMap], a + ret + +Func_ea721: ; ea721 (3a:6721) + call Func_ea742 + ret c + ld a, [$c971] + and $f3 + ret nz + call Func_ea606 + ret + +Func_ea72f: ; ea72f (3a:672f) + call Func_ea606 +Func_ea732: ; ea732 (3a:6732) + ld a, [wUnknownSerialFlag_d49b] + and a + ret nz + ld a, [$c971] + and $f0 + ret nz + xor a + ld [wOverworldMap], a + ret + +Func_ea742: ; ea742 (3a:6742) + ld a, [wUnknownSerialFlag_d49b] + and a + jr nz, .asm_ea74a + and a + ret + +.asm_ea74a + scf + ret + +Func_ea74c: ; 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 + +Func_ea76b: ; 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 + +Func_ea784: ; 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 + +Func_ea7a2: ; ea7a2 (3a:67a2) + ld hl, $0000 + ld bc, $0004 + ld de, $c6ea + call Func_ea7c5 + ld a, [$c976] + ld c, a + ld a, [$c977] + ld b, a + ld de, $c6f0 + call Func_ea7c5 + ld a, l + ld [$c6ee], a + ld a, h + ld [$c6ef], a + ret + +Func_ea7c5: ; 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 + +Func_ea7d2: ; 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 + +Func_ea7e9: ; 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 Func_ea834 + ret + +Func_ea834: ; 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 Func_ea860 + jr nc, .asm_ea856 + call Func_ea886 + call Func_ea8a1 + call Func_ea902 + call Func_ea999 +.asm_ea856 + pop hl + inc hl + inc hl + inc hl + inc hl + pop bc + dec c + jr nz, .asm_ea843 + ret + +Func_ea860: ; 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 + +Func_ea886: ; 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 + +Func_ea8a1: ; ea8a1 (3a:68a1) + push hl + inc hl + inc hl + inc hl + ld a, [hl] + call Func_ea8ab + pop hl + ret + +Func_ea8ab: ; 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 Func_ea8c2 + dw Func_ea8c3 + dw Func_ea8c7 + dw Func_ea8cb + +Func_ea8c2: ; ea8c2 (3a:68c2) + ret + +Func_ea8c3: ; ea8c3 (3a:68c3) + call Func_ea8d2 + ret + +Func_ea8c7: ; ea8c7 (3a:68c7) + call Func_ea8e8 + ret + +Func_ea8cb: ; ea8cb (3a:68cb) + call Func_ea8d2 + call Func_ea8e8 + ret + +Func_ea8d2: ; 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 + +Func_ea8e8: ; 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 + +Func_ea902: ; 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 Func_ea936 + 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 + +Func_ea936 ; ea936 (3a:6936) + call Func_ea93d + call Func_ea96d + ret + +Func_ea93d: ; 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 Func_ea951 + dw Func_ea95f + dw Func_ea956 + dw Func_ea966 + +Func_ea951: ; ea951 (3a:6951) + ld a, [rOBP0] + and $03 + ret + +Func_ea956: ; ea956 (3a:6956) + ld a, [rOBP0] + and $0c + srl a + srl a + ret + +Func_ea95f: ; ea95f (3a:695f) + ld a, [rOBP0] + and $30 + swap a + ret + +Func_ea966: ; ea966 (3a:6966) + ld a, [rOBP0] + and $c0 + rlca + rlca + ret + +Func_ea96d: ; 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 Func_ea981 + dw Func_ea986 + dw Func_ea98c + dw Func_ea992 + +Func_ea981: ; ea981 (3a:6981) + sla b + sla c + ret + +Func_ea986: ; ea986 (3a:6986) + scf + rl b + sla c + ret + +Func_ea98c: ; ea98c (3a:698c) + sla b + scf + rl c + ret + +Func_ea992: ; ea992 (3a:6992) + scf + rl b + scf + rl c + ret + +Func_ea999: ; 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 Func_ea9d0 + 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 + +Func_ea9d0: ; 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 |