From 25f5306a4d8b1815a78f4ee505f484a2fe6e6b28 Mon Sep 17 00:00:00 2001 From: yenatch Date: Wed, 11 Feb 2015 13:36:02 -0800 Subject: [PATCH] Split out the Pokedex code. --- engine/pokedex.asm | 2585 ++++++++++++++++++++++++++++++++++++++++++++ main.asm | 2582 +------------------------------------------ 2 files changed, 2586 insertions(+), 2581 deletions(-) create mode 100644 engine/pokedex.asm diff --git a/engine/pokedex.asm b/engine/pokedex.asm new file mode 100644 index 000000000..004836f62 --- /dev/null +++ b/engine/pokedex.asm @@ -0,0 +1,2585 @@ + +Pokedex: ; 40000 + + ld a, [hWX] + ld l, a + ld a, [hWY] + ld h, a + push hl + ld a, [hSCX] + push af + ld hl, Options + ld a, [hl] + push af + set NO_TEXT_SCROLL, [hl] + ld a, [VramState] + push af + xor a + ld [VramState], a + ld a, [$ffaa] + push af + ld a, $1 + ld [$ffaa], a + + xor a + ld [$ffde], a + call InitPokedex + call DelayFrame + +.main + call Functiona57 + ld a, [wcf63] + bit 7, a + jr nz, .exit + call Function4010b + call DelayFrame + jr .main + +.exit + ld de, SFX_READ_TEXT_2 + call PlaySFX + call WaitSFX + call ClearSprites + ld a, [wc7d4] + ld [wd959], a + + pop af + ld [$ffaa], a + pop af + ld [VramState], a + pop af + ld [Options], a + pop af + ld [hSCX], a + pop hl + ld a, l + ld [hWX], a + ld a, h + ld [hWY], a + ret +; 40063 + +InitPokedex: ; 40063 + call WhiteBGMap + call ClearSprites + call ClearTileMap + call Function414b7 + + ld hl, wc6d0 + ld bc, $0115 + xor a + call ByteFill + + xor a + ld [wcf63], a + ld [wcf64], a + ld [wcf65], a + ld [wcf66], a + + call Function400a2 + + ld a, [wd959] + ld [wc7d4], a + + call Function40bdc + call Function400b4 + call Function400ed + callba Function1de247 + call Function41af7 + ret +; 400a2 + +Function400a2: ; 400a2 + ld a, [StatusFlags] + bit 1, a + jr nz, .asm_400ae + + xor a + ld [wc7dc], a + ret + +.asm_400ae + ld a, 1 + ld [wc7dc], a + ret +; 400b4 + +Function400b4: ; 400b4 + ld hl, wc6d0 + ld a, [wc2d6] + and a + jr z, .asm_400ec + cp $fc + jr nc, .asm_400ec + + ld b, a + ld a, [wc7d2] + cp $8 + jr c, .asm_400db + + sub $7 + ld c, a +.asm_400cc + ld a, b + cp [hl] + jr z, .asm_400ec + inc hl + ld a, [wc7d0] + inc a + ld [wc7d0], a + dec c + jr nz, .asm_400cc + +.asm_400db + ld c, $7 +.asm_400dd + ld a, b + cp [hl] + jr z, .asm_400ec + inc hl + ld a, [wc7d1] + inc a + ld [wc7d1], a + dec c + jr nz, .asm_400dd + +.asm_400ec + ret +; 400ed + +Function400ed: ; 400ed + ld a, [MapGroup] + ld b, a + ld a, [MapNumber] + ld c, a + call GetWorldMapLocation + + cp SPECIAL_MAP + jr nz, .asm_40107 + + ld a, [BackupMapGroup] + ld b, a + ld a, [BackupMapNumber] + ld c, a + call GetWorldMapLocation + +.asm_40107 + ld [wc7e4], a + ret +; 4010b + +Function4010b: ; 4010b + ld a, [wcf63] + ld hl, Jumptable_40115 + call Function41432 + jp [hl] +; 40115 + + +Jumptable_40115: ; 40115 (10:4115) + dw Function4013c + dw Function401ae + dw Function40217 + dw Function40258 + dw Function402aa + dw Function40443 + dw Function40471 + dw Function4039d + dw Function403be + dw Function4050a + dw Function40562 + dw Function405bd + dw Function405df + dw Function40136 + + +Function40131: ; 40131 (10:4131) + ld hl, wcf63 + inc [hl] + ret + +Function40136: ; 40136 (10:4136) + ld hl, wcf63 + set 7, [hl] + ret + +Function4013c: ; 4013c (10:413c) + xor a + ld [hBGMapMode], a ; $ff00+$d4 + call ClearSprites + xor a + ld hl, AttrMap + ld bc, $168 + call ByteFill + callba Function1de171 + hlcoord 0, 17 + ld de, Unknown_407f2 + call Function40acd + ld a, $7 + ld [wc7d3], a + call Function40b0f + call Function41aeb + call Function41af7 + call Function4074c + ld a, $5 + ld [hSCX], a ; $ff00+$cf + ld a, [wc7d4] + cp $1 + ld a, $4a + jr z, .asm_4017b + ld a, $47 + +.asm_4017b + ld [hWX], a ; $ff00+$d1 + xor a + ld [hWY], a ; $ff00+$d2 + call WaitBGMap + call Function41af7 + ld a, $ff + ld [CurPartySpecies], a + ld a, $4 + call Function41423 + call Function41148 + callba Function1de171 + hlcoord 0, 17 + ld de, Unknown_407f2 + call Function40acd + ld a, $7 + ld [wc7d3], a + call Function40b0f + call Function40131 + ret + +Function401ae: ; 401ae (10:41ae) + ld hl, hJoyPressed ; $ffa7 + ld a, [hl] + and B_BUTTON + jr nz, .b + ld a, [hl] + and A_BUTTON + jr nz, .a + ld a, [hl] + and SELECT + jr nz, .select + ld a, [hl] + and START + jr nz, .start + call Function406c5 + ret nc + call Function41148 + xor a + ld [hBGMapMode], a ; $ff00+$d4 + call Function40b0f + call Function41ad7 + call Function41af7 + ret + +.a + call Function40bb1 + call Function40bd0 + ret z + ld a, $2 + ld [wcf63], a + ld a, $0 + ld [wcf64], a + ret + +.select + call Function41401 + ld a, $7 + ld [wcf63], a + xor a + ld [hSCX], a ; $ff00+$cf + ld a, $a7 + ld [hWX], a ; $ff00+$d1 + call DelayFrame + ret + +.start + call Function41401 + ld a, $5 + ld [wcf63], a + xor a + ld [hSCX], a ; $ff00+$cf + ld a, $a7 + ld [hWX], a ; $ff00+$d1 + call DelayFrame + ret + +.b + ld a, $d + ld [wcf63], a + ret + +Function40217: ; 40217 (10:4217) + call LowVolume + xor a + ld [wcf65], a + xor a + ld [hBGMapMode], a ; $ff00+$d4 + call ClearSprites + call Function41478 + call Function407fd + call Function4134f + call Function40bb1 + ld [wc2d6], a + callba Function4424d + call Function40ba0 + call WaitBGMap + ld a, $a7 + ld [hWX], a ; $ff00+$d1 + call Function40bb1 + ld [CurPartySpecies], a + ld a, $4 + call Function41423 + ld a, [CurPartySpecies] + call PlayCry + call Function40131 + ret + +Function40258: ; 40258 (10:4258) + ld de, Unknown_402e8 + call Function4135a + ld hl, hJoyPressed ; $ffa7 + ld a, [hl] + and B_BUTTON + jr nz, .b + ld a, [hl] + and A_BUTTON + jr nz, .a + call Function4066c + ret nc + call Function40131 + ret + +.a + ld a, [wc7d8] + ld hl, Jumptable_402f2 + call Function41432 + jp [hl] + +.b + ld a, [LastVolume] + and a + jr z, .asm_40288 + ld a, $77 + ld [LastVolume], a + +.asm_40288 + call MaxVolume + ld a, [wcf64] + ld [wcf63], a + ret +; 40292 (10:4292) + +Function40292: ; 40292 + ld a, [wcf65] + xor $1 + ld [wcf65], a + call Function40bb1 + ld [wc2d6], a + callba Function4424d + call WaitBGMap + ret +; 402aa + +Function402aa: ; 402aa (10:42aa) + call Function41401 + xor a + ld [wcf65], a + xor a + ld [hBGMapMode], a ; $ff00+$d4 + call Function407fd + call Function4134f + call Function41478 + call Function40bb1 + ld [wc2d6], a + callba Function4424d + call Function40ba0 + call Function4143b + call WaitBGMap + call Function40bb1 + ld [CurPartySpecies], a + ld a, $4 + call Function41423 + ld a, [CurPartySpecies] + call PlayCry + ld hl, wcf63 + dec [hl] + ret +; 402e8 (10:42e8) + +Unknown_402e8: ; 402e8 + dw $0430 + dwcoord 1, 17 + dwcoord 6, 17 + dwcoord 11, 17 + dwcoord 15, 17 +; 402f2 + +Jumptable_402f2: ; 402f2 + dw Function40292 + dw Function402fa + dw Function40340 + dw Function4034f +; 402fa + +Function402fa: ; 402fa + call Function41401 + xor a + ld [hSCX], a + call DelayFrame + ld a, $7 + ld [hWX], a + ld a, $90 + ld [hWY], a + call Function40bb1 + ld a, [wc7e4] + ld e, a + predef Function91d11 + call Function41401 + call DelayFrame + xor a + ld [hBGMapMode], a + ld a, $90 + ld [hWY], a + ld a, $5 + ld [hSCX], a + call DelayFrame + call Function4038d + call Function4143b + call WaitBGMap + call Function40bb1 + ld [CurPartySpecies], a + ld a, $4 + call Function41423 + ret +; 40340 + +Function40340: ; 40340 + call Function40bb1 + ld a, [wd265] + call GetCryIndex + ld e, c + ld d, b + call PlayCryHeader + ret +; 4034f + +Function4034f: ; 4034f + call Function41415 + xor a + ld [hSCX], a + ld a, [wcf65] + push af + ld a, [wcf64] + push af + ld a, [wcf63] + push af + callba Function8442c + pop af + ld [wcf63], a + pop af + ld [wcf64], a + pop af + ld [wcf65], a + call WhiteBGMap + call DisableLCD + call Function414fb + call Function4038d + call EnableLCD + call WaitBGMap + ld a, $5 + ld [hSCX], a + call Function41427 + ret +; 4038d + +Function4038d: ; 4038d + call Function407fd + call Function40bb1 + callba Function4424d + call Function40ba0 + ret +; 4039d + +Function4039d: ; 4039d (10:439d) + xor a + ld [hBGMapMode], a ; $ff00+$d4 + call ClearSprites + call Function4087c + call Function4134f + ld a, [wc7d4] + ld [wc7d8], a + call Function40e5b + call WaitBGMap + ld a, $10 + call Function41423 + call Function40131 + ret + +Function403be: ; 403be (10:43be) + ld a, [wc7dc] + and a + jr nz, .asm_403c9 + ld de, Unknown_403f3 + jr .asm_403cc + +.asm_403c9 + ld de, Unknown_403fb +.asm_403cc + call Function4135a + call c, Function40e5b + ld hl, hJoyPressed ; $ffa7 + ld a, [hl] + and $6 + jr nz, .asm_403ea + ld a, [hl] + and $1 + jr nz, .asm_403e0 + ret + +.asm_403e0 + ld a, [wc7d8] + ld hl, Jumptable_40405 + call Function41432 + jp [hl] + +.asm_403ea + call Function41401 + ld a, $0 + ld [wcf63], a + ret +; 403f3 (10:43f3) + +Unknown_403f3: ; 403f3 + dw $03c0 + dwcoord 2, 4 + dwcoord 2, 6 + dwcoord 2, 8 +; 403fb + +Unknown_403fb: ; 403fb + dw $04c0 + dwcoord 2, 4 + dwcoord 2, 6 + dwcoord 2, 8 + dwcoord 2, 10 +; 40405 + +Jumptable_40405: ; 40405 (10:4405) + dw Function4040d + dw Function40411 + dw Function40415 + dw Function4043a +; 4040d + +Function4040d: ; 4040d (10:440d) + ld b, $0 + jr Function40417 + +Function40411: ; 40411 (10:4411) + ld b, $1 + jr Function40417 + +Function40415: ; 40415 (10:4415) + ld b, $2 +Function40417: ; 40417 (10:4417) + ld a, [wc7d4] + cp b + jr z, .asm_40431 + ld a, b + ld [wc7d4], a + call Function40bdc + call Function40f08 + xor a + ld [wc7d0], a + ld [wc7d1], a + call Function400b4 + +.asm_40431 + call Function41401 + ld a, $0 + ld [wcf63], a + ret + +Function4043a: ; 4043a (10:443a) + call Function41401 + ld a, $b + ld [wcf63], a + ret + +Function40443: ; 40443 (10:4443) + xor a + ld [hBGMapMode], a ; $ff00+$d4 + call ClearSprites + call Function408f0 + call Function4134f + ld a, $1 + ld [wc7d5], a + xor a + ld [wc7d6], a + call Function40fa8 + xor a + ld [wc7db], a + callba Function44207 + call WaitBGMap + ld a, $10 + call Function41423 + call Function40131 + ret + +Function40471: ; 40471 (10:4471) + ld de, Unknown_4049e + call Function4135a + call Function40f4f + call c, Function40fa8 + ld hl, hJoyPressed ; $ffa7 + ld a, [hl] + and START | B_BUTTON + jr nz, .asm_40495 + ld a, [hl] + and A_BUTTON + jr nz, .asm_4048b + ret + +.asm_4048b + ld a, [wc7d8] + ld hl, Jumptable_404a8 + call Function41432 + jp [hl] + +.asm_40495 + call Function41401 + ld a, $0 + ld [wcf63], a + ret +; 4049e (10:449e) + +Unknown_4049e: ; 4049e + dw $04c0 + dwcoord 2, 4 + dwcoord 2, 6 + dwcoord 2, 13 + dwcoord 2, 15 +; 404a8 + +Jumptable_404a8: ; 404a8 + dw Function404b0 + dw Function404b0 + dw Function404b7 + dw Function40501 +; 404b0 + +Function404b0: ; 404b0 + call Function40f84 + call Function40fa8 + ret +; 404b7 + +Function404b7: ; 404b7 + call Function41086 + callba Function441cf + ld a, [wc7d7] + and a + jr nz, .asm_404dc + call Function40bdc + call Function41107 + xor a + ld [hBGMapMode], a + call Function408f0 + call Function4134f + call Function40fa8 + call WaitBGMap + ret + +.asm_404dc + ld [wc7d2], a + ld a, [wc7d0] + ld [wc7e0], a + ld a, [wc7d1] + ld [wc7e1], a + ld a, [wc2d6] + ld [wcf65], a + xor a + ld [wc7d0], a + ld [wc7d1], a + call Function41401 + ld a, $9 + ld [wcf63], a + ret +; 40501 + +Function40501: ; 40501 + call Function41401 + ld a, $0 + ld [wcf63], a + ret +; 4050a + +Function4050a: ; 4050a (10:450a) + xor a + ld [hBGMapMode], a ; $ff00+$d4 + xor a + ld hl, AttrMap + ld bc, $168 + call ByteFill + call Function41ae1 + call Function41af7 + callba Function1de1d1 + call Function409cf + ld a, $4 + ld [wc7d3], a + call Function40b0f + call Function41ad7 + call Function41af7 + call Function40962 + ld a, $5 + ld [hSCX], a ; $ff00+$cf + ld a, $4a + ld [hWX], a ; $ff00+$d1 + xor a + ld [hWY], a ; $ff00+$d2 + call WaitBGMap + call Function41af7 + callba Function1de1d1 + call Function409cf + call Function41281 + ld a, $ff + ld [CurPartySpecies], a + ld a, $4 + call Function41423 + call Function40131 + ret + +Function40562: ; 40562 (10:4562) + ld hl, hJoyPressed ; $ffa7 + ld a, [hl] + and B_BUTTON + jr nz, .asm_40595 + ld a, [hl] + and A_BUTTON + jr nz, .asm_40583 + call Function406c5 + ret nc + call Function41281 + xor a + ld [hBGMapMode], a ; $ff00+$d4 + call Function40b0f + call Function41ad7 + call Function41af7 + ret + +.asm_40583 + call Function40bb1 + call Function40bd0 + ret z + ld a, $2 + ld [wcf63], a + ld a, $9 + ld [wcf64], a + ret + +.asm_40595 + ld a, [wc7e0] + ld [wc7d0], a + ld a, [wc7e1] + ld [wc7d1], a + ld a, [wcf65] + ld [wc2d6], a + call Function41401 + call ClearSprites + call Function40bdc + ld a, $5 + ld [wcf63], a + xor a + ld [hSCX], a ; $ff00+$cf + ld a, $a7 + ld [hWX], a ; $ff00+$d1 + ret + +Function405bd: ; 405bd (10:45bd) + call Function41a2c + call Function409f1 + xor a + ld [wc7dd], a + call Function41a58 + call Function40658 + callba Functionfba2e + call WaitBGMap + ld a, $16 + call Function41423 + call Function40131 + ret + +Function405df: ; 405df (10:45df) + ld hl, hJoyPressed ; $ffa7 + ld a, [hl] + and A_BUTTON | B_BUTTON + jr nz, .asm_405eb + call Function40610 + ret + +.asm_405eb + call Function41401 + ld a, $7 + ld [wcf63], a + call DelayFrame + call Function41a24 + jr nz, .asm_40603 + callba Function1ddf26 + jr .asm_4060f + +.asm_40603 + ld hl, PokedexLZ + ld de, $9310 + lb bc, BANK(PokedexLZ), $3a + call Functione73 + +.asm_4060f + ret + +Function40610: ; 40610 (10:4610) + ld hl, $ffa9 + ld a, [hl] + and D_RIGHT + jr nz, .right + ld a, [hl] + and D_LEFT + jr nz, .left + ret + +.right + ld a, [wc7de] + ld e, a + ld hl, wc7dd + ld a, [hl] + inc a + cp e + ret nc + ld a, [hl] + inc [hl] + jr .asm_40635 + +.left + ld hl, wc7dd + ld a, [hl] + and a + ret z + ld a, [hl] + dec [hl] + +.asm_40635 + push af + xor a + ld [hBGMapMode], a ; $ff00+$d4 + pop af + call Function40654 + call Function41a58 + call Function40658 + callba Functionfba2e + ld a, $1 + ld [hBGMapMode], a ; $ff00+$d4 + call DelayFrame + call DelayFrame + ret + +Function40654: ; 40654 (10:4654) + ld c, $7f + jr asm_4065d + +Function40658: ; 40658 (10:4658) + ld a, [wc7dd] + ld c, $5a +asm_4065d: ; 4065d (10:465d) + ld e, a + ld d, 0 + ld hl, Unknown_40a3e + 2 + add hl, de + add hl, de + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ld [hl], c + ret + +Function4066c: ; 4066c (10:466c) + ld a, [wc7d1] + ld [wc7e2], a + ld a, [wc7d0] + ld [wc7e3], a + ld hl, $ffa9 + ld a, [hl] + and D_UP + jr nz, .up + ld a, [hl] + and D_DOWN + jr nz, .down + and a + ret + +.up + ld a, [wc7d3] + ld d, a + ld a, [wc7d2] + ld e, a + call Function406ea + jr nc, .asm_406b7 + call Function40bb1 + call Function40bd0 + jr nz, .asm_406b5 + jr .up + +.down + ld a, [wc7d3] + ld d, a + ld a, [wc7d2] + ld e, a + call Function406fe + jr nc, .asm_406b7 + call Function40bb1 + call Function40bd0 + jr nz, .asm_406b5 + jr .down + +.asm_406b5 + scf + ret + +.asm_406b7 + ld a, [wc7e2] + ld [wc7d1], a + ld a, [wc7e3] + ld [wc7d0], a + and a + ret + +Function406c5: ; 406c5 (10:46c5) + ld a, [wc7d3] + ld d, a + ld a, [wc7d2] + ld e, a + ld hl, $ffa9 + ld a, [hl] + and D_UP + jr nz, Function406ea + ld a, [hl] + and D_DOWN + jr nz, Function406fe + ld a, d + cp e + jr nc, asm_4073d + ld a, [hl] + and $20 + jr nz, asm_40716 + ld a, [hl] + and $10 + jr nz, asm_40728 + jr asm_4073d + +Function406ea: ; 406ea (10:46ea) + ld hl, wc7d1 + ld a, [hl] + and a + jr z, .asm_406f4 + dec [hl] + jr asm_4073f +.asm_406f4 + ld hl, wc7d0 + ld a, [hl] + and a + jr z, asm_4073d + dec [hl] + jr asm_4073f + +Function406fe: ; 406fe (10:46fe) + ld hl, wc7d1 + ld a, [hl] + inc a + cp e + jr nc, asm_4073d + cp d + jr nc, .asm_4070c + inc [hl] + jr asm_4073f +.asm_4070c + ld hl, wc7d0 + add [hl] + cp e + jr nc, asm_4073d + inc [hl] + jr asm_4073f +asm_40716: ; 40716 (10:4716) + ld hl, wc7d0 + ld a, [hl] + and a + jr z, asm_4073d + cp d + jr nc, .asm_40724 + xor a + ld [hl], a + jr asm_4073f +.asm_40724 + sub d + ld [hl], a + jr asm_4073f +asm_40728: ; 40728 (10:4728) + ld hl, wc7d0 + ld a, d + add a + add [hl] + jr c, .asm_40733 + cp e + jr c, .asm_40738 +.asm_40733 + ld a, e + sub d + ld [hl], a + jr asm_4073f +.asm_40738 + ld a, [hl] + add d + ld [hl], a + jr asm_4073f +asm_4073d: ; 4073d (10:473d) + and a + ret +asm_4073f: ; 4073f (10:473f) + scf + ret + +Function40741: ; 40741 + push de + ld de, $0014 +.asm_40745 + ld [hl], a + add hl, de + dec b + jr nz, .asm_40745 + pop de + ret +; 4074c + + +Function4074c: ; 4074c (10:474c) + hlcoord 0, 17 + ld de, Unknown_407f2 + call Function40acd + ld a, $32 + ld hl, TileMap + ld bc, $168 + call ByteFill + ld hl, TileMap + lb bc, 7, 7 + call Function40ad5 + hlcoord 0, 9 + ld bc, $607 + call Function40ad5 + hlcoord 1, 11 + ld de, Unknown_407e1 + call Function40acd + ld hl, PokedexSeen ; wdeb9 (aliases: EndPokedexSeen) + ld b, EndPokedexSeen - PokedexSeen + call CountSetBits + ld de, wd265 + hlcoord 5, 12 + ld bc, $103 + call PrintNum + hlcoord 1, 14 + ld de, Unknown_407e6 + call Function40acd + ld hl, PokedexCaught + ld b, EndPokedexCaught - PokedexCaught + call CountSetBits + ld de, wd265 + hlcoord 5, 15 + ld bc, $103 + call PrintNum + hlcoord 1, 17 + ld de, Unknown_407ea + call Function40acd + hlcoord 8, 1 + ld b, $7 + ld a, $5a + call Function40741 + hlcoord 8, 10 + ld b, $6 + ld a, $5a + call Function40741 + hlcoord 8, 0 + ld [hl], $59 + hlcoord 8, 8 + ld [hl], $53 + hlcoord 8, 9 + ld [hl], $54 + hlcoord 8, 16 + ld [hl], $5b + call Function40ab2 + ret +; 407e1 (10:47e1) + +Unknown_407e1: ; 407e1 + db "SEEN", $ff +Unknown_407e6: ; 407e6 + db "OWN", $ff +Unknown_407ea: ; 407ea + db $3b, $48, $49, $4a, $44, $45, $46, $47 ; SELECT > OPTION +Unknown_407f2: ; 407f2 + db $3c, $3b, $41, $42, $43, $4b, $4c, $4d, $4e, $3c, $ff ; START > SEARCH +; 407fd + +Function407fd: ; 407fd + call Function40aa6 + ld hl, TileMap + ld bc, $0f12 + call Function40ad5 + hlcoord 19, 0 + ld [hl], $34 + hlcoord 19, 1 + ld a, $7f + ld b, $f + call Function40741 + ld [hl], $39 + hlcoord 1, 10 + ld bc, $0013 + ld a, $61 + call ByteFill + hlcoord 1, 17 + ld bc, $0012 + ld a, $7f + call ByteFill + hlcoord 9, 7 + ld de, Unknown_40852 + call Function40acd + hlcoord 9, 9 + ld de, Unknown_4085c + call Function40acd + hlcoord 0, 17 + ld de, Unknown_40867 + call Function40acd + call Function40ab2 + ret +; 4084f + +Unknown_4084f: ; 4084f + db $5c, $5d, $ff ; No. +Unknown_40852: ; 40852 + db "HT ?", $5e, "??", $5f, $ff ; HT ?'??" +Unknown_4085c: ; 4085c + db "WT ???lb", $ff ; WT ???lb +Unknown_40867: ; 40867 + db $3b, " PAGE AREA CRY PRNT", $ff +; 4087c + +Function4087c: ; 4087c (10:487c) + call Function40aa6 + hlcoord 0, 2 + lb bc, 8, 18 + call Function40ad5 + hlcoord 0, 12 + lb bc, 4, 18 + call Function40ad5 + hlcoord 0, 1 + ld de, Unknown_408b2 + call Function40acd + hlcoord 3, 4 + ld de, String_408bd + call PlaceString + ld a, [wc7dc] + and a + ret z + hlcoord 3, 10 + ld de, String_408e5 + call PlaceString + ret +; 408b2 (10:48b2) + +Unknown_408b2: ; 408b2 + db $3b, " OPTION ", $3c, $ff +; 408bd + +String_408bd: ; 408bd + db "NEW #DEX MODE", $4e + db "OLD #DEX MODE", $4e + db "A to Z MODE@" +; 408e5 + +String_408e5: ; 408e5 + db "UNOWN MODE@" +; 408f0 + +Function408f0: ; 408f0 (10:48f0) + call Function40aa6 + hlcoord 0, 2 + lb bc, 14, 18 + call Function40ad5 + hlcoord 0, 1 + ld de, Unknown_4092a + call Function40acd + hlcoord 8, 4 + ld de, Unknown_40935 + call Function40acd + hlcoord 8, 6 + ld de, Unknown_40935 + call Function40acd + hlcoord 3, 4 + ld de, String_40940 + call PlaceString + hlcoord 3, 13 + ld de, String_4094c + call PlaceString + ret +; 4092a (10:492a) + +Unknown_4092a: ; 4092a + db $3b, " SEARCH ", $3c, $ff +; 40925 + +Unknown_40935: ; 40935 + db $3d, " ", $3e, $ff +; 40940 + +String_40940: ; 40940 + db "TYPE1" + next "TYPE2" + db "@" +; 4094c + +String_4094c: ; 4094c + db "BEGIN SEARCH!!" + next "CANCEL" + db "@" +; 40962 + +Function40962: ; 40962 (10:4962) + call Function40aa6 + ld hl, TileMap + lb bc, 7, 7 + call Function40ad5 + hlcoord 0, 11 + lb bc, 5, 18 + call Function40ad5 + hlcoord 1, 12 + ld de, String_409ae + call PlaceString + ld de, wc7d7 + hlcoord 1, 16 + ld bc, $103 + call PrintNum + hlcoord 8, 0 + ld [hl], $59 + hlcoord 8, 1 + ld b, $7 + ld a, $5a + call Function40741 + hlcoord 8, 8 + ld [hl], $53 + hlcoord 8, 9 + ld [hl], $69 + hlcoord 8, 10 + ld [hl], $6a + call Function40ab2 + ret +; 409ae (10:49ae) + +String_409ae: ; 409ae + db "SEARCH RESULTS" + next " TYPE" + next " FOUND!" + db "@" +; 409cf + +Function409cf: ; 409cf (10:49cf) + ld a, [wc7d5] + hlcoord 0, 14 + call Function40fcd + ld a, [wc7d5] + ld b, a + ld a, [wc7d6] + and a + jr z, .asm_409f0 + cp b + jr z, .asm_409f0 + hlcoord 2, 15 + call Function40fcd + hlcoord 1, 15 + ld [hl], $f3 +.asm_409f0 + ret + +Function409f1: ; 409f1 (10:49f1) + call Function40aa6 + hlcoord 2, 1 + lb bc, 10, 13 + call Function40ad5 + hlcoord 2, 14 + lb bc, 1, 13 + call Function40ad5 + hlcoord 2, 15 + ld [hl], $3d + hlcoord 16, 15 + ld [hl], $3e + hlcoord 6, 5 + call Function40ab5 + ld de, 0 + ld b, 0 + ld c, 26 +.asm_40a1d + ld hl, UnownDex + add hl, de + ld a, [hl] + and a + jr z, .asm_40a39 + push af + ld hl, Unknown_40a3e + add hl, de + add hl, de + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + pop af + add $3f + ld [hl], a + inc de + inc b + dec c + jr nz, .asm_40a1d +.asm_40a39 + ld a, b + ld [wc7de], a + ret +; 40a3e (10:4a3e) + +Unknown_40a3e: ; 40a3e + dwcoord 4,11, 3,11 + dwcoord 4,10, 3,10 + dwcoord 4, 9, 3, 9 + dwcoord 4, 8, 3, 8 + dwcoord 4, 7, 3, 7 + dwcoord 4, 6, 3, 6 + dwcoord 4, 5, 3, 5 + dwcoord 4, 4, 3, 4 + dwcoord 4, 3, 3, 2 + dwcoord 5, 3, 5, 2 + dwcoord 6, 3, 6, 2 + dwcoord 7, 3, 7, 2 + dwcoord 8, 3, 8, 2 + dwcoord 9, 3, 9, 2 + dwcoord 10, 3, 10, 2 + dwcoord 11, 3, 11, 2 + dwcoord 12, 3, 12, 2 + dwcoord 13, 3, 13, 2 + dwcoord 14, 3, 15, 2 + dwcoord 14, 4, 15, 4 + dwcoord 14, 5, 15, 5 + dwcoord 14, 6, 15, 6 + dwcoord 14, 7, 15, 7 + dwcoord 14, 8, 15, 8 + dwcoord 14, 9, 15, 9 + dwcoord 14,10, 15,10 +; 40aa6 + +Function40aa6: ; 40aa6 + ld hl, TileMap + ld a, $32 + ld bc, $0168 + call ByteFill + ret +; 40ab2 + +Function40ab2: ; 40ab2 + hlcoord 1, 1 +Function40ab5: ; 40ab5 + xor a + ld b, $7 +.asm_40ab8 + ld c, $7 + push af + push hl +.asm_40abc + ld [hli], a + add $7 + dec c + jr nz, .asm_40abc + pop hl + ld de, $0014 + add hl, de + pop af + inc a + dec b + jr nz, .asm_40ab8 + ret +; 40acd + +Function40acd: ; 40acd +.asm_40acd + ld a, [de] + cp $ff + ret z + inc de + ld [hli], a + jr .asm_40acd +; 40ad5 + + +Function40ad5: ; 40ad5 + push hl + ld a, $33 + ld [hli], a + ld d, $34 + call Function40b06 + ld a, $35 + ld [hl], a + pop hl + ld de, $0014 + add hl, de +.asm_40ae6 + push hl + ld a, $36 + ld [hli], a + ld d, $7f + call Function40b06 + ld a, $37 + ld [hl], a + pop hl + ld de, $0014 + add hl, de + dec b + jr nz, .asm_40ae6 + ld a, $38 + ld [hli], a + ld d, $39 + call Function40b06 + ld a, $3a + ld [hl], a + ret +; 40b06 + +Function40b06: ; 40b06 + ld e, c +.asm_40b07 + ld a, e + and a + ret z + ld a, d + ld [hli], a + dec e + jr .asm_40b07 +; 40b0f + + +Function40b0f: ; 40b0f (10:4b0f) + ld a, [wc7d4] + cp $1 + jr z, .asm_40b1a + ld c, $b + jr .asm_40b1c +.asm_40b1a + ld c, $b +.asm_40b1c + hlcoord 0, 1 + ld a, [wc7d3] + add a + inc a + ld b, a + ld a, $7f + call Function413fe + ld a, [wc7d0] + ld e, a + ld d, $0 + ld hl, wc6d0 + add hl, de + ld e, l + ld d, h + hlcoord 0, 2 + ld a, [wc7d3] +.asm_40b3c + push af + ld a, [de] + ld [wd265], a + push de + push hl + call Function40b55 + pop hl + ld de, $28 + add hl, de + pop de + inc de + pop af + dec a + jr nz, .asm_40b3c + call Function4143b + ret + +Function40b55: ; 40b55 (10:4b55) + and a + ret z + call Function40b6a + call Function40b8d + ret c + call Function40b82 + push hl + call GetPokemonName + pop hl + call PlaceString + ret + +Function40b6a: ; 40b6a (10:4b6a) + ld a, [wc7d4] + cp $1 + jr z, .asm_40b72 + ret +.asm_40b72 + push hl + ld de, -20 + add hl, de + ld de, wd265 + ld bc, $8103 + call PrintNum + pop hl + ret + +Function40b82: ; 40b82 (10:4b82) + call Function40bc4 + jr nz, .asm_40b89 + inc hl + ret +.asm_40b89 + ld a, $4f + ld [hli], a + ret + +Function40b8d: ; 40b8d (10:4b8d) + call Function40bd0 + ret nz + inc hl + ld de, String_40b9a + call PlaceString + scf + ret +; 40b9a (10:4b9a) + +String_40b9a: ; 40b9a + db "-----@" +; 40ba0 + +Function40ba0: ; 40ba0 + hlcoord 18, 1 + ld a, $62 + ld [hli], a + inc a + ld [hl], a + hlcoord 18, 2 + ld a, $64 + ld [hli], a + inc a + ld [hl], a + ret +; 40bb1 + + +Function40bb1: ; 40bb1 + ld a, [wc7d1] + ld hl, wc7d0 + add [hl] + ld e, a + ld d, $0 + ld hl, wc6d0 + add hl, de + ld a, [hl] + ld [wd265], a + ret +; 40bc4 + + +Function40bc4: ; 40bc4 (10:4bc4) + push de + push hl + ld a, [wd265] + dec a + call CheckCaughtMon + pop hl + pop de + ret + + +Function40bd0: ; 40bd0 + push de + push hl + ld a, [wd265] + dec a + call CheckSeenMon + pop hl + pop de + ret +; 40bdc + + + +Function40bdc: ; 40bdc + ld hl, wc6d0 + ld bc, $100 + xor a + call ByteFill + ld a, [wc7d4] + ld hl, Jumptable_40bf0 + call Function41432 + jp [hl] +; 40bf0 + + +Jumptable_40bf0: ; 40bf0 (10:4bf0) + dw Function40bf6 + dw Function40c08 + dw Function40c30 + + +Function40bf6: ; 40bf6 (10:4bf6) + ld de, NewPokedexOrder + ld hl, wc6d0 + ld c, NUM_POKEMON +.asm_40bfe + ld a, [de] + inc de + ld [hli], a + dec c + jr nz, .asm_40bfe + call Function40c18 + ret + +Function40c08: ; 40c08 (10:4c08) + ld hl, wc6d0 + ld a, $1 + ld c, NUM_POKEMON +.asm_40c0f + ld [hli], a + inc a + dec c + jr nz, .asm_40c0f + call Function40c18 + ret + +Function40c18: ; 40c18 (10:4c18) + ld hl, wc7ca + ld d, NUM_POKEMON + ld e, d +.asm_40c1e + ld a, [hld] + ld [wd265], a + call Function40bd0 + jr nz, .asm_40c2b + dec d + dec e + jr nz, .asm_40c1e +.asm_40c2b + ld a, d + ld [wc7d2], a + ret + +Function40c30: ; 40c30 + xor a + ld [wc7d2], a + ld hl, wc6d0 + ld de, AlphabeticalPokedexOrder + ld c, NUM_POKEMON +.asm_40c3c + push bc + ld a, [de] + ld [wd265], a + call Function40bd0 + jr z, .asm_40c51 + ld a, [wd265] + ld [hli], a + ld a, [wc7d2] + inc a + ld [wc7d2], a + +.asm_40c51 + inc de + pop bc + dec c + jr nz, .asm_40c3c + ld a, [wc7d2] + ld c, 0 +.asm_40c5b + cp NUM_POKEMON + jr z, .asm_40c64 + ld [hl], c + inc hl + inc a + jr .asm_40c5b + +.asm_40c64 + ret +; 40c65 + +AlphabeticalPokedexOrder: ; 0x40c65 +INCLUDE "data/pokedex/order_alpha.asm" + +NewPokedexOrder: ; 0x40d60 +INCLUDE "data/pokedex/order_new.asm" + +Function40e5b: ; 40e5b + xor a + ld [hBGMapMode], a + hlcoord 0, 12 + ld bc, $0412 + call Function40ad5 + ld a, [wc7d8] + ld hl, Unknown_40e7d + call Function41432 + ld e, l + ld d, h + hlcoord 1, 14 + call PlaceString + ld a, $1 + ld [hBGMapMode], a + ret +; 40e7d + +Unknown_40e7d: ; 40e7d + dw String_40e85 + dw String_40ea6 + dw String_40ec6 + dw String_40ee4 +; 40e85 + +String_40e85: ; 40e85 + db $e1, $e2, " are listed by", $4e + db "evolution type.@" +; 40ea6 + +String_40ea6: ; 40ea6 + db $e1, $e2, " are listed by", $4e + db "official type.@" +; 40ec6 + +String_40ec6: ; 40ec6 + db $e1, $e2, " are listed", $4e + db "alphabetically.@" +; 40ee4 + +String_40ee4: ; 40ee4 + db "UNOWN are listed", $4e + db "in catching order.@" +; 40f08 + +Function40f08: ; 40f08 (10:4f08) + xor a + ld [hBGMapMode], a ; $ff00+$d4 + hlcoord 0, 12 + ld bc, $412 + call Function40ad5 + ld de, $4f32 + hlcoord 1, 14 + call PlaceString + ld a, $1 + ld [hBGMapMode], a ; $ff00+$d4 + ld c, $40 + call DelayFrames + ld de, SFX_CHANGE_DEX_MODE + call PlaySFX + ld c, $40 + call DelayFrames + ret +; 40f32 (10:4f32) + +String_40f32: ; 40f32 + db "Changing modes.", $4e, "Please wait.@" +; 40f4f + +Function40f4f: ; 40f4f (10:4f4f) + ld a, [wc7d8] + cp $2 + jr nc, .asm_40f63 + ld hl, $ffa9 + ld a, [hl] + and $20 + jr nz, .asm_40f65 + ld a, [hl] + and $10 + jr nz, Function40f84 +.asm_40f63 + and a + ret +.asm_40f65 + ld a, [wc7d8] + and a + jr nz, .asm_40f76 + ld hl, wc7d5 + ld a, [hl] + cp $1 + jr z, .asm_40f80 + dec [hl] + jr .asm_40f82 +.asm_40f76 + ld hl, wc7d6 + ld a, [hl] + and a + jr z, .asm_40f80 + dec [hl] + jr .asm_40f82 +.asm_40f80 + ld [hl], $11 +.asm_40f82 + scf + ret +; 40f84 + +Function40f84: ; 40f84 + ld a, [wc7d8] + and a + jr nz, .asm_40f99 + ld hl, wc7d5 + ld a, [hl] + cp $11 + jr nc, .asm_40f95 + inc [hl] + jr .asm_40fa6 +.asm_40f95 + ld [hl], $1 + jr .asm_40fa6 +.asm_40f99 + ld hl, wc7d6 + ld a, [hl] + cp $11 + jr nc, .asm_40fa4 + inc [hl] + jr .asm_40fa6 +.asm_40fa4 + ld [hl], $0 +.asm_40fa6 + scf + ret + +Function40fa8: ; 40fa8 (10:4fa8) + xor a + ld [hBGMapMode], a ; $ff00+$d4 + hlcoord 9, 3 + ld bc, $408 + ld a, $7f + call Function413fe + ld a, [wc7d5] + hlcoord 9, 4 + call Function40fcd + ld a, [wc7d6] + hlcoord 9, 6 + call Function40fcd + ld a, $1 + ld [hBGMapMode], a ; $ff00+$d4 + ret + +Function40fcd: ; 40fcd (10:4fcd) + push hl + ld e, a + ld d, 0 + ld hl, Strings_40fe4 + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + ld e, l + ld d, h + pop hl + call PlaceString + ret +; 40fe4 (10:4fe4) + +Strings_40fe4: ; 40fe4 + db " ---- @" + db " NORMAL @" + db " FIRE @" + db " WATER @" + db " GRASS @" + db "ELECTRIC@" + db " ICE @" + db "FIGHTING@" + db " POISON @" + db " GROUND @" + db " FLYING @" + db "PSYCHIC @" + db " BUG @" + db " ROCK @" + db " GHOST @" + db " DRAGON @" + db " DARK @" + db " STEEL @" +; 41086 + +Function41086: ; 41086 + ld a, [wc7d6] + and a + call nz, Function41095 + ld a, [wc7d5] + and a + call nz, Function41095 + ret +; 41095 + +Function41095: ; 41095 + dec a + ld e, a + ld d, 0 + ld hl, Unknown_410f6 + add hl, de + ld a, [hl] + ld [wc7df], a + ld hl, wc6d0 + ld de, wc6d0 + ld c, NUM_POKEMON + xor a + ld [wc7d7], a +.asm_410ad + push bc + ld a, [hl] + and a + jr z, .asm_410e0 + ld [wd265], a + ld [CurSpecies], a + call Function40bc4 + jr z, .asm_410e0 + push hl + push de + call GetBaseData + pop de + pop hl + ld a, [wc7df] + ld b, a + ld a, [BaseType1] + cp b + jr z, .asm_410d4 + ld a, [BaseType2] + cp b + jr nz, .asm_410e0 + +.asm_410d4 + ld a, [wd265] + ld [de], a + inc de + ld a, [wc7d7] + inc a + ld [wc7d7], a + +.asm_410e0 + inc hl + pop bc + dec c + jr nz, .asm_410ad + ld l, e + ld h, d + ld a, [wc7d7] + ld c, 0 +.asm_410ec + cp NUM_POKEMON + jr z, .asm_410f5 + ld [hl], c + inc hl + inc a + jr .asm_410ec + +.asm_410f5 + ret +; 410f6 + +Unknown_410f6: ; 410f6 + db NORMAL + db FIRE + db WATER + db GRASS + db ELECTRIC + db ICE + db FIGHTING + db POISON + db GROUND + db FLYING + db PSYCHIC + db BUG + db ROCK + db GHOST + db DRAGON + db DARK + db STEEL +; 41107 + +Function41107: ; 41107 + xor a + ld [hBGMapMode], a + hlcoord 0, 12 + ld bc, $0412 + call Function40ad5 + ld de, String_41126 + hlcoord 1, 14 + call PlaceString + ld a, $1 + ld [hBGMapMode], a + ld c, $80 + call DelayFrames + ret +; 41126 + +String_41126: ; 41126 + db "The specified type", $4e + db "was not found.@" +; 41148 + +Function41148: ; 41148 (10:5148) + ld a, [wc7d4] + cp $1 + jp z, Function41157 + call Function41229 + call Function4130e + ret + +Function41157: ; 41157 (10:5157) + ld hl, Unknown_41167 + ld a, [wc7d1] + or a + jr nz, .asm_41163 + ld hl, Unknown_411c8 +.asm_41163 + call Function412f1 + ret +; 41167 (10:5167) + +Unknown_41167: ; 41167 +; OAM + db $18, $47, $30, $07 + db $10, $47, $31, $07 + db $10, $4f, $32, $07 + db $10, $57, $32, $07 + db $10, $5f, $32, $07 + db $10, $67, $33, $07 + db $10, $7e, $33, $27 + db $10, $86, $32, $27 + db $10, $8e, $32, $27 + db $10, $96, $32, $27 + db $10, $9e, $31, $27 + db $18, $9e, $30, $27 + db $20, $47, $30, $47 + db $28, $47, $31, $47 + db $28, $4f, $32, $47 + db $28, $57, $32, $47 + db $28, $5f, $32, $47 + db $28, $67, $33, $47 + db $28, $7e, $33, $67 + db $28, $86, $32, $67 + db $28, $8e, $32, $67 + db $28, $96, $32, $67 + db $28, $9e, $31, $67 + db $20, $9e, $30, $67 + db $ff +; 411c8 + +Unknown_411c8: ; 411c8 +; OAM + db $18, $47, $30, $07 + db $10, $47, $34, $07 + db $10, $4f, $35, $07 + db $10, $57, $35, $07 + db $10, $5f, $35, $07 + db $10, $67, $36, $07 + db $10, $7e, $36, $27 + db $10, $86, $35, $27 + db $10, $8e, $35, $27 + db $10, $96, $35, $27 + db $10, $9e, $34, $27 + db $18, $9e, $30, $27 + db $20, $47, $30, $47 + db $28, $47, $31, $47 + db $28, $4f, $32, $47 + db $28, $57, $32, $47 + db $28, $5f, $32, $47 + db $28, $67, $33, $47 + db $28, $7e, $33, $67 + db $28, $86, $32, $67 + db $28, $8e, $32, $67 + db $28, $96, $32, $67 + db $28, $9e, $31, $67 + db $20, $9e, $30, $67 + db $ff +; 41229 + +Function41229: ; 41229 (10:5229) + ld hl, Unknown_41230 + call Function412f1 + ret +; 41230 (10:5230) + +Unknown_41230: ; 41230 +; OAM + db $1b, $47, $30, $07 + db $13, $47, $31, $07 + db $13, $4f, $32, $07 + db $13, $57, $32, $07 + db $13, $5f, $33, $07 + db $13, $80, $33, $27 + db $13, $88, $32, $27 + db $13, $90, $32, $27 + db $13, $98, $31, $27 + db $1b, $98, $30, $27 + db $23, $47, $30, $47 + db $2b, $47, $31, $47 + db $2b, $4f, $32, $47 + db $2b, $57, $32, $47 + db $2b, $5f, $33, $47 + db $2b, $80, $33, $67 + db $2b, $88, $32, $67 + db $2b, $90, $32, $67 + db $2b, $98, $31, $67 + db $23, $98, $30, $67 + db $ff +; 41281 + +Function41281: ; 41281 (10:5281) + ld a, [wc7d4] + cp $1 + jp z, Function41157 + ld hl, Unknown_41290 + call Function412f1 + ret +; 41290 (10:5290) + +Unknown_41290: ; 41290 +; OAM + db $1b, $47, $30, $07 + db $13, $47, $31, $07 + db $13, $4f, $32, $07 + db $13, $57, $32, $07 + db $13, $5f, $32, $07 + db $13, $67, $33, $07 + db $13, $7e, $33, $27 + db $13, $86, $32, $27 + db $13, $8e, $32, $27 + db $13, $96, $32, $27 + db $13, $9e, $31, $27 + db $1b, $9e, $30, $27 + db $23, $47, $30, $47 + db $2b, $47, $31, $47 + db $2b, $4f, $32, $47 + db $2b, $57, $32, $47 + db $2b, $5f, $32, $47 + db $2b, $67, $33, $47 + db $2b, $7e, $33, $67 + db $2b, $86, $32, $67 + db $2b, $8e, $32, $67 + db $2b, $96, $32, $67 + db $2b, $9e, $31, $67 + db $23, $9e, $30, $67 + db $ff +; 412f1 + +Function412f1: ; 412f1 (10:52f1) + ld de, Sprites +.asm_412f4 + ld a, [hl] + cp $ff + ret z + ld a, [wc7d1] + and $7 + swap a + add [hl] + inc hl + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc de + jr .asm_412f4 + +Function4130e: ; 4130e (10:530e) + push de + ld a, [wc7d2] + dec a + ld e, a + ld a, [wc7d1] + ld hl, wc7d0 + add [hl] + cp e + jr z, .asm_4133f + ld hl, $0 + ld bc, $79 + call AddNTimes + ld e, l + ld d, h + ld b, $0 + ld a, d + or e + jr z, .asm_41341 + ld a, [wc7d2] + ld c, a +.asm_41333 + ld a, e + sub c + ld e, a + ld a, d + sbc $0 + ld d, a + jr c, .asm_41341 + inc b + jr .asm_41333 +.asm_4133f + ld b, $79 +.asm_41341 + ld a, $14 + add b + pop hl + ld [hli], a + ld a, $a1 + ld [hli], a + ld a, $f + ld [hli], a + ld [hl], $0 + ret + +Function4134f: ; 4134f (10:534f) + xor a + ld [wc7d8], a + ld [wc7d9], a + ld [wc7da], a + ret + +Function4135a: ; 4135a (10:535a) + ld a, [de] + ld b, a + inc de + ld a, [de] + dec a + ld c, a + inc de + call Function413e0 + ld hl, hJoyPressed ; $ffa7 + ld a, [hl] + and D_LEFT | D_UP + and b + jr nz, .asm_4138f + ld a, [hl] + and D_RIGHT | D_DOWN + and b + jr nz, .asm_413a0 + ld a, [hl] + and SELECT + and b + jr nz, .asm_413c1 + call Function413f5 + jr c, .asm_413bf + ld hl, $ffa9 + ld a, [hl] + and D_LEFT | D_UP + and b + jr nz, .asm_4138f + ld a, [hl] + and D_RIGHT | D_DOWN + and b + jr nz, .asm_413a0 + jr .asm_413bf +.asm_4138f + ld a, [wc7d8] + and a + jr z, .asm_413bf + call Function413d4 + ld [hl], $7f + ld hl, wc7d8 + dec [hl] + jr .asm_413af +.asm_413a0 + ld a, [wc7d8] + cp c + jr nc, .asm_413bf + call Function413d4 + ld [hl], $7f + ld hl, wc7d8 + inc [hl] +.asm_413af + call Function413d4 + ld [hl], $ed + ld a, $c + ld [wc7d9], a + xor a + ld [wc7da], a + scf + ret +.asm_413bf + and a + ret +.asm_413c1 + call Function413d4 + ld [hl], $7f + ld a, [wc7d8] + cp c + jr c, .asm_413ce + ld a, $ff +.asm_413ce + inc a + ld [wc7d8], a + jr .asm_413af + +Function413d4: ; 413d4 (10:53d4) + ld a, [wc7d8] + add a + ld l, a + ld h, $0 + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ret + +Function413e0: ; 413e0 (10:53e0) + ld hl, wc7da + ld a, [hl] + inc [hl] + and $8 + jr z, .asm_413ef + call Function413d4 + ld [hl], $7f + ret +.asm_413ef + call Function413d4 + ld [hl], $ed + ret + +Function413f5: ; 413f5 (10:53f5) + ld hl, wc7d9 + ld a, [hl] + and a + ret z + dec [hl] + scf + ret + +Function413fe: ; 413fe (10:53fe) + jp Functionfb8 + +Function41401: ; 41401 (10:5401) + ld a, [rSVBK] ; $ff00+$70 + push af + ld a, $5 + ld [rSVBK], a ; $ff00+$70 + ld hl, Unkn1Pals + ld bc, $40 + xor a + call ByteFill + pop af + ld [rSVBK], a ; $ff00+$70 + +Function41415: ; 41415 + ld a, $ff + call DmgToCgbBGPals + ld a, $ff + call Functioncf8 + call DelayFrame + ret + +Function41423: ; 41423 + ld b, a + call GetSGBLayout + +Function41427: ; 41427 + ld a, $e4 + call DmgToCgbBGPals + ld a, $e0 + call Functioncf8 + ret +; 41432 + + +Function41432: ; 41432 + ld e, a + ld d, 0 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + ret +; 4143b + +Function4143b: ; 4143b + call Function40bb1 + call Function40bd0 + jr z, .asm_4145b + ld a, [wdef4] + ld [UnownLetter], a + ld a, [wd265] + ld [CurPartySpecies], a + call GetBaseData + ld de, VTiles2 + predef GetFrontpic + ret + +.asm_4145b + ld a, $0 + call GetSRAMBank + callba Function1de0d7 + ld hl, VTiles2 + ld de, $a000 + ld c, $31 + ld a, [hROMBank] + ld b, a + call Get2bpp + call CloseSRAM + ret +; 41478 + + +Function41478: ; 41478 (10:5478) + call Function40bb1 + +Function4147b: ; 4147b + ld a, [wd265] + dec a + and $f8 + srl a + srl a + srl a + ld e, 0 + ld d, a + ld a, [wd265] + dec a + and 7 + swap a ; * $10 + ld l, a + ld h, 0 + add hl, de + ld de, Footprints + add hl, de + + push hl + ld e, l + ld d, h + ld hl, $9620 + lb bc, BANK(Footprints), 2 + call Request1bpp + pop hl + + ; Whoever was editing footprints forgot to fix their + ; tile editor. Now each bottom half is 8 tiles off. + ld de, $80 + add hl, de + + ld e, l + ld d, h + ld hl, $9640 + lb bc, BANK(Footprints), 2 + call Request1bpp + + ret +; 414b7 + + +Function414b7: ; 414b7 + call DisableLCD + ld hl, VTiles2 + ld bc, $0310 + xor a + call ByteFill + call Function414fb + call Functione5f + ld hl, $9600 + ld bc, $0200 + call Function41504 + call Function41a24 + jr nz, .asm_414e0 + callba Function1ddf1c + jr .asm_414e9 + +.asm_414e0 + ld hl, PokedexLZ + ld de, $9310 + call Decompress + +.asm_414e9 + ld hl, PokedexSlowpokeLZ + ld de, VTiles0 + call Decompress + ld a, 6 + call SkipMusic + call EnableLCD + ret + +Function414fb: ; 414fb + call Functione51 + ld hl, VTiles1 + ld bc, $0800 + +Function41504: ; 41504 + ld a, [hl] + xor $ff + ld [hli], a + dec bc + ld a, b + or c + jr nz, Function41504 + ret +; 4150e + +PokedexLZ: ; 4150e +INCBIN "gfx/unknown/04150e.2bpp.lz" +; 416b0 + +PokedexSlowpokeLZ: ; 416b0 +INCBIN "gfx/pokedex/slowpoke.2bpp.lz" + +Function41a24: ; 41a24 + ld a, [hCGB] + or a + ret nz + ld a, [hSGB] + dec a + ret +; 41a2c + +Function41a2c: ; 41a2c + ld a, $0 + call GetSRAMBank + ld hl, UnownFont + ld de, $a188 + ld bc, $270 + ld a, BANK(UnownFont) + call FarCopyBytes + ld hl, $a188 + ld bc, $1b0 + call Function41504 + ld de, $a188 + ld hl, $9400 + lb bc, BANK(Function41a2c), $1b + call Request2bpp + call CloseSRAM + ret +; 41a58 + + +Function41a58: ; 41a58 (10:5a58) + ld a, [UnownLetter] + push af + ld a, [wc7dd] + ld e, a + ld d, $0 + ld hl, EndPokedexSeen ; wded9 (aliases: UnownDex) + add hl, de + ld a, [hl] + ld [UnownLetter], a + ld a, UNOWN + ld [CurPartySpecies], a + call GetBaseData + ld de, $9000 + predef GetFrontpic + pop af + ld [UnownLetter], a + ret + diff --git a/main.asm b/main.asm index 372732b0c..e40464ff2 100644 --- a/main.asm +++ b/main.asm @@ -41917,2589 +41917,9 @@ INCLUDE "battle/effect_command_pointers.asm" SECTION "bank10", ROMX, BANK[$10] -Pokedex: ; 40000 - ld a, [hWX] - ld l, a - ld a, [hWY] - ld h, a - push hl - ld a, [hSCX] - push af - ld hl, Options - ld a, [hl] - push af - set NO_TEXT_SCROLL, [hl] - ld a, [VramState] - push af - xor a - ld [VramState], a - ld a, [$ffaa] - push af - ld a, $1 - ld [$ffaa], a +INCLUDE "engine/pokedex.asm" - xor a - ld [$ffde], a - call InitPokedex - call DelayFrame - -.main - call Functiona57 - ld a, [wcf63] - bit 7, a - jr nz, .exit - call Function4010b - call DelayFrame - jr .main - -.exit - ld de, SFX_READ_TEXT_2 - call PlaySFX - call WaitSFX - call ClearSprites - ld a, [wc7d4] - ld [wd959], a - - pop af - ld [$ffaa], a - pop af - ld [VramState], a - pop af - ld [Options], a - pop af - ld [hSCX], a - pop hl - ld a, l - ld [hWX], a - ld a, h - ld [hWY], a - ret -; 40063 - -InitPokedex: ; 40063 - call WhiteBGMap - call ClearSprites - call ClearTileMap - call Function414b7 - - ld hl, wc6d0 - ld bc, $0115 - xor a - call ByteFill - - xor a - ld [wcf63], a - ld [wcf64], a - ld [wcf65], a - ld [wcf66], a - - call Function400a2 - - ld a, [wd959] - ld [wc7d4], a - - call Function40bdc - call Function400b4 - call Function400ed - callba Function1de247 - call Function41af7 - ret -; 400a2 - -Function400a2: ; 400a2 - ld a, [StatusFlags] - bit 1, a - jr nz, .asm_400ae - - xor a - ld [wc7dc], a - ret - -.asm_400ae - ld a, 1 - ld [wc7dc], a - ret -; 400b4 - -Function400b4: ; 400b4 - ld hl, wc6d0 - ld a, [wc2d6] - and a - jr z, .asm_400ec - cp $fc - jr nc, .asm_400ec - - ld b, a - ld a, [wc7d2] - cp $8 - jr c, .asm_400db - - sub $7 - ld c, a -.asm_400cc - ld a, b - cp [hl] - jr z, .asm_400ec - inc hl - ld a, [wc7d0] - inc a - ld [wc7d0], a - dec c - jr nz, .asm_400cc - -.asm_400db - ld c, $7 -.asm_400dd - ld a, b - cp [hl] - jr z, .asm_400ec - inc hl - ld a, [wc7d1] - inc a - ld [wc7d1], a - dec c - jr nz, .asm_400dd - -.asm_400ec - ret -; 400ed - -Function400ed: ; 400ed - ld a, [MapGroup] - ld b, a - ld a, [MapNumber] - ld c, a - call GetWorldMapLocation - - cp SPECIAL_MAP - jr nz, .asm_40107 - - ld a, [BackupMapGroup] - ld b, a - ld a, [BackupMapNumber] - ld c, a - call GetWorldMapLocation - -.asm_40107 - ld [wc7e4], a - ret -; 4010b - -Function4010b: ; 4010b - ld a, [wcf63] - ld hl, Jumptable_40115 - call Function41432 - jp [hl] -; 40115 - - -Jumptable_40115: ; 40115 (10:4115) - dw Function4013c - dw Function401ae - dw Function40217 - dw Function40258 - dw Function402aa - dw Function40443 - dw Function40471 - dw Function4039d - dw Function403be - dw Function4050a - dw Function40562 - dw Function405bd - dw Function405df - dw Function40136 - - -Function40131: ; 40131 (10:4131) - ld hl, wcf63 - inc [hl] - ret - -Function40136: ; 40136 (10:4136) - ld hl, wcf63 - set 7, [hl] - ret - -Function4013c: ; 4013c (10:413c) - xor a - ld [hBGMapMode], a ; $ff00+$d4 - call ClearSprites - xor a - ld hl, AttrMap - ld bc, $168 - call ByteFill - callba Function1de171 - hlcoord 0, 17 - ld de, Unknown_407f2 - call Function40acd - ld a, $7 - ld [wc7d3], a - call Function40b0f - call Function41aeb - call Function41af7 - call Function4074c - ld a, $5 - ld [hSCX], a ; $ff00+$cf - ld a, [wc7d4] - cp $1 - ld a, $4a - jr z, .asm_4017b - ld a, $47 - -.asm_4017b - ld [hWX], a ; $ff00+$d1 - xor a - ld [hWY], a ; $ff00+$d2 - call WaitBGMap - call Function41af7 - ld a, $ff - ld [CurPartySpecies], a - ld a, $4 - call Function41423 - call Function41148 - callba Function1de171 - hlcoord 0, 17 - ld de, Unknown_407f2 - call Function40acd - ld a, $7 - ld [wc7d3], a - call Function40b0f - call Function40131 - ret - -Function401ae: ; 401ae (10:41ae) - ld hl, hJoyPressed ; $ffa7 - ld a, [hl] - and B_BUTTON - jr nz, .b - ld a, [hl] - and A_BUTTON - jr nz, .a - ld a, [hl] - and SELECT - jr nz, .select - ld a, [hl] - and START - jr nz, .start - call Function406c5 - ret nc - call Function41148 - xor a - ld [hBGMapMode], a ; $ff00+$d4 - call Function40b0f - call Function41ad7 - call Function41af7 - ret - -.a - call Function40bb1 - call Function40bd0 - ret z - ld a, $2 - ld [wcf63], a - ld a, $0 - ld [wcf64], a - ret - -.select - call Function41401 - ld a, $7 - ld [wcf63], a - xor a - ld [hSCX], a ; $ff00+$cf - ld a, $a7 - ld [hWX], a ; $ff00+$d1 - call DelayFrame - ret - -.start - call Function41401 - ld a, $5 - ld [wcf63], a - xor a - ld [hSCX], a ; $ff00+$cf - ld a, $a7 - ld [hWX], a ; $ff00+$d1 - call DelayFrame - ret - -.b - ld a, $d - ld [wcf63], a - ret - -Function40217: ; 40217 (10:4217) - call LowVolume - xor a - ld [wcf65], a - xor a - ld [hBGMapMode], a ; $ff00+$d4 - call ClearSprites - call Function41478 - call Function407fd - call Function4134f - call Function40bb1 - ld [wc2d6], a - callba Function4424d - call Function40ba0 - call WaitBGMap - ld a, $a7 - ld [hWX], a ; $ff00+$d1 - call Function40bb1 - ld [CurPartySpecies], a - ld a, $4 - call Function41423 - ld a, [CurPartySpecies] - call PlayCry - call Function40131 - ret - -Function40258: ; 40258 (10:4258) - ld de, Unknown_402e8 - call Function4135a - ld hl, hJoyPressed ; $ffa7 - ld a, [hl] - and B_BUTTON - jr nz, .b - ld a, [hl] - and A_BUTTON - jr nz, .a - call Function4066c - ret nc - call Function40131 - ret - -.a - ld a, [wc7d8] - ld hl, Jumptable_402f2 - call Function41432 - jp [hl] - -.b - ld a, [LastVolume] - and a - jr z, .asm_40288 - ld a, $77 - ld [LastVolume], a - -.asm_40288 - call MaxVolume - ld a, [wcf64] - ld [wcf63], a - ret -; 40292 (10:4292) - -Function40292: ; 40292 - ld a, [wcf65] - xor $1 - ld [wcf65], a - call Function40bb1 - ld [wc2d6], a - callba Function4424d - call WaitBGMap - ret -; 402aa - -Function402aa: ; 402aa (10:42aa) - call Function41401 - xor a - ld [wcf65], a - xor a - ld [hBGMapMode], a ; $ff00+$d4 - call Function407fd - call Function4134f - call Function41478 - call Function40bb1 - ld [wc2d6], a - callba Function4424d - call Function40ba0 - call Function4143b - call WaitBGMap - call Function40bb1 - ld [CurPartySpecies], a - ld a, $4 - call Function41423 - ld a, [CurPartySpecies] - call PlayCry - ld hl, wcf63 - dec [hl] - ret -; 402e8 (10:42e8) - -Unknown_402e8: ; 402e8 - dw $0430 - dwcoord 1, 17 - dwcoord 6, 17 - dwcoord 11, 17 - dwcoord 15, 17 -; 402f2 - -Jumptable_402f2: ; 402f2 - dw Function40292 - dw Function402fa - dw Function40340 - dw Function4034f -; 402fa - -Function402fa: ; 402fa - call Function41401 - xor a - ld [hSCX], a - call DelayFrame - ld a, $7 - ld [hWX], a - ld a, $90 - ld [hWY], a - call Function40bb1 - ld a, [wc7e4] - ld e, a - predef Function91d11 - call Function41401 - call DelayFrame - xor a - ld [hBGMapMode], a - ld a, $90 - ld [hWY], a - ld a, $5 - ld [hSCX], a - call DelayFrame - call Function4038d - call Function4143b - call WaitBGMap - call Function40bb1 - ld [CurPartySpecies], a - ld a, $4 - call Function41423 - ret -; 40340 - -Function40340: ; 40340 - call Function40bb1 - ld a, [wd265] - call GetCryIndex - ld e, c - ld d, b - call PlayCryHeader - ret -; 4034f - -Function4034f: ; 4034f - call Function41415 - xor a - ld [hSCX], a - ld a, [wcf65] - push af - ld a, [wcf64] - push af - ld a, [wcf63] - push af - callba Function8442c - pop af - ld [wcf63], a - pop af - ld [wcf64], a - pop af - ld [wcf65], a - call WhiteBGMap - call DisableLCD - call Function414fb - call Function4038d - call EnableLCD - call WaitBGMap - ld a, $5 - ld [hSCX], a - call Function41427 - ret -; 4038d - -Function4038d: ; 4038d - call Function407fd - call Function40bb1 - callba Function4424d - call Function40ba0 - ret -; 4039d - -Function4039d: ; 4039d (10:439d) - xor a - ld [hBGMapMode], a ; $ff00+$d4 - call ClearSprites - call Function4087c - call Function4134f - ld a, [wc7d4] - ld [wc7d8], a - call Function40e5b - call WaitBGMap - ld a, $10 - call Function41423 - call Function40131 - ret - -Function403be: ; 403be (10:43be) - ld a, [wc7dc] - and a - jr nz, .asm_403c9 - ld de, Unknown_403f3 - jr .asm_403cc - -.asm_403c9 - ld de, Unknown_403fb -.asm_403cc - call Function4135a - call c, Function40e5b - ld hl, hJoyPressed ; $ffa7 - ld a, [hl] - and $6 - jr nz, .asm_403ea - ld a, [hl] - and $1 - jr nz, .asm_403e0 - ret - -.asm_403e0 - ld a, [wc7d8] - ld hl, Jumptable_40405 - call Function41432 - jp [hl] - -.asm_403ea - call Function41401 - ld a, $0 - ld [wcf63], a - ret -; 403f3 (10:43f3) - -Unknown_403f3: ; 403f3 - dw $03c0 - dwcoord 2, 4 - dwcoord 2, 6 - dwcoord 2, 8 -; 403fb - -Unknown_403fb: ; 403fb - dw $04c0 - dwcoord 2, 4 - dwcoord 2, 6 - dwcoord 2, 8 - dwcoord 2, 10 -; 40405 - -Jumptable_40405: ; 40405 (10:4405) - dw Function4040d - dw Function40411 - dw Function40415 - dw Function4043a -; 4040d - -Function4040d: ; 4040d (10:440d) - ld b, $0 - jr Function40417 - -Function40411: ; 40411 (10:4411) - ld b, $1 - jr Function40417 - -Function40415: ; 40415 (10:4415) - ld b, $2 -Function40417: ; 40417 (10:4417) - ld a, [wc7d4] - cp b - jr z, .asm_40431 - ld a, b - ld [wc7d4], a - call Function40bdc - call Function40f08 - xor a - ld [wc7d0], a - ld [wc7d1], a - call Function400b4 - -.asm_40431 - call Function41401 - ld a, $0 - ld [wcf63], a - ret - -Function4043a: ; 4043a (10:443a) - call Function41401 - ld a, $b - ld [wcf63], a - ret - -Function40443: ; 40443 (10:4443) - xor a - ld [hBGMapMode], a ; $ff00+$d4 - call ClearSprites - call Function408f0 - call Function4134f - ld a, $1 - ld [wc7d5], a - xor a - ld [wc7d6], a - call Function40fa8 - xor a - ld [wc7db], a - callba Function44207 - call WaitBGMap - ld a, $10 - call Function41423 - call Function40131 - ret - -Function40471: ; 40471 (10:4471) - ld de, Unknown_4049e - call Function4135a - call Function40f4f - call c, Function40fa8 - ld hl, hJoyPressed ; $ffa7 - ld a, [hl] - and START | B_BUTTON - jr nz, .asm_40495 - ld a, [hl] - and A_BUTTON - jr nz, .asm_4048b - ret - -.asm_4048b - ld a, [wc7d8] - ld hl, Jumptable_404a8 - call Function41432 - jp [hl] - -.asm_40495 - call Function41401 - ld a, $0 - ld [wcf63], a - ret -; 4049e (10:449e) - -Unknown_4049e: ; 4049e - dw $04c0 - dwcoord 2, 4 - dwcoord 2, 6 - dwcoord 2, 13 - dwcoord 2, 15 -; 404a8 - -Jumptable_404a8: ; 404a8 - dw Function404b0 - dw Function404b0 - dw Function404b7 - dw Function40501 -; 404b0 - -Function404b0: ; 404b0 - call Function40f84 - call Function40fa8 - ret -; 404b7 - -Function404b7: ; 404b7 - call Function41086 - callba Function441cf - ld a, [wc7d7] - and a - jr nz, .asm_404dc - call Function40bdc - call Function41107 - xor a - ld [hBGMapMode], a - call Function408f0 - call Function4134f - call Function40fa8 - call WaitBGMap - ret - -.asm_404dc - ld [wc7d2], a - ld a, [wc7d0] - ld [wc7e0], a - ld a, [wc7d1] - ld [wc7e1], a - ld a, [wc2d6] - ld [wcf65], a - xor a - ld [wc7d0], a - ld [wc7d1], a - call Function41401 - ld a, $9 - ld [wcf63], a - ret -; 40501 - -Function40501: ; 40501 - call Function41401 - ld a, $0 - ld [wcf63], a - ret -; 4050a - -Function4050a: ; 4050a (10:450a) - xor a - ld [hBGMapMode], a ; $ff00+$d4 - xor a - ld hl, AttrMap - ld bc, $168 - call ByteFill - call Function41ae1 - call Function41af7 - callba Function1de1d1 - call Function409cf - ld a, $4 - ld [wc7d3], a - call Function40b0f - call Function41ad7 - call Function41af7 - call Function40962 - ld a, $5 - ld [hSCX], a ; $ff00+$cf - ld a, $4a - ld [hWX], a ; $ff00+$d1 - xor a - ld [hWY], a ; $ff00+$d2 - call WaitBGMap - call Function41af7 - callba Function1de1d1 - call Function409cf - call Function41281 - ld a, $ff - ld [CurPartySpecies], a - ld a, $4 - call Function41423 - call Function40131 - ret - -Function40562: ; 40562 (10:4562) - ld hl, hJoyPressed ; $ffa7 - ld a, [hl] - and B_BUTTON - jr nz, .asm_40595 - ld a, [hl] - and A_BUTTON - jr nz, .asm_40583 - call Function406c5 - ret nc - call Function41281 - xor a - ld [hBGMapMode], a ; $ff00+$d4 - call Function40b0f - call Function41ad7 - call Function41af7 - ret - -.asm_40583 - call Function40bb1 - call Function40bd0 - ret z - ld a, $2 - ld [wcf63], a - ld a, $9 - ld [wcf64], a - ret - -.asm_40595 - ld a, [wc7e0] - ld [wc7d0], a - ld a, [wc7e1] - ld [wc7d1], a - ld a, [wcf65] - ld [wc2d6], a - call Function41401 - call ClearSprites - call Function40bdc - ld a, $5 - ld [wcf63], a - xor a - ld [hSCX], a ; $ff00+$cf - ld a, $a7 - ld [hWX], a ; $ff00+$d1 - ret - -Function405bd: ; 405bd (10:45bd) - call Function41a2c - call Function409f1 - xor a - ld [wc7dd], a - call Function41a58 - call Function40658 - callba Functionfba2e - call WaitBGMap - ld a, $16 - call Function41423 - call Function40131 - ret - -Function405df: ; 405df (10:45df) - ld hl, hJoyPressed ; $ffa7 - ld a, [hl] - and A_BUTTON | B_BUTTON - jr nz, .asm_405eb - call Function40610 - ret - -.asm_405eb - call Function41401 - ld a, $7 - ld [wcf63], a - call DelayFrame - call Function41a24 - jr nz, .asm_40603 - callba Function1ddf26 - jr .asm_4060f - -.asm_40603 - ld hl, PokedexLZ - ld de, $9310 - lb bc, BANK(PokedexLZ), $3a - call Functione73 - -.asm_4060f - ret - -Function40610: ; 40610 (10:4610) - ld hl, $ffa9 - ld a, [hl] - and D_RIGHT - jr nz, .right - ld a, [hl] - and D_LEFT - jr nz, .left - ret - -.right - ld a, [wc7de] - ld e, a - ld hl, wc7dd - ld a, [hl] - inc a - cp e - ret nc - ld a, [hl] - inc [hl] - jr .asm_40635 - -.left - ld hl, wc7dd - ld a, [hl] - and a - ret z - ld a, [hl] - dec [hl] - -.asm_40635 - push af - xor a - ld [hBGMapMode], a ; $ff00+$d4 - pop af - call Function40654 - call Function41a58 - call Function40658 - callba Functionfba2e - ld a, $1 - ld [hBGMapMode], a ; $ff00+$d4 - call DelayFrame - call DelayFrame - ret - -Function40654: ; 40654 (10:4654) - ld c, $7f - jr asm_4065d - -Function40658: ; 40658 (10:4658) - ld a, [wc7dd] - ld c, $5a -asm_4065d: ; 4065d (10:465d) - ld e, a - ld d, 0 - ld hl, Unknown_40a3e + 2 - add hl, de - add hl, de - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld [hl], c - ret - -Function4066c: ; 4066c (10:466c) - ld a, [wc7d1] - ld [wc7e2], a - ld a, [wc7d0] - ld [wc7e3], a - ld hl, $ffa9 - ld a, [hl] - and D_UP - jr nz, .up - ld a, [hl] - and D_DOWN - jr nz, .down - and a - ret - -.up - ld a, [wc7d3] - ld d, a - ld a, [wc7d2] - ld e, a - call Function406ea - jr nc, .asm_406b7 - call Function40bb1 - call Function40bd0 - jr nz, .asm_406b5 - jr .up - -.down - ld a, [wc7d3] - ld d, a - ld a, [wc7d2] - ld e, a - call Function406fe - jr nc, .asm_406b7 - call Function40bb1 - call Function40bd0 - jr nz, .asm_406b5 - jr .down - -.asm_406b5 - scf - ret - -.asm_406b7 - ld a, [wc7e2] - ld [wc7d1], a - ld a, [wc7e3] - ld [wc7d0], a - and a - ret - -Function406c5: ; 406c5 (10:46c5) - ld a, [wc7d3] - ld d, a - ld a, [wc7d2] - ld e, a - ld hl, $ffa9 - ld a, [hl] - and D_UP - jr nz, Function406ea - ld a, [hl] - and D_DOWN - jr nz, Function406fe - ld a, d - cp e - jr nc, asm_4073d - ld a, [hl] - and $20 - jr nz, asm_40716 - ld a, [hl] - and $10 - jr nz, asm_40728 - jr asm_4073d - -Function406ea: ; 406ea (10:46ea) - ld hl, wc7d1 - ld a, [hl] - and a - jr z, .asm_406f4 - dec [hl] - jr asm_4073f -.asm_406f4 - ld hl, wc7d0 - ld a, [hl] - and a - jr z, asm_4073d - dec [hl] - jr asm_4073f - -Function406fe: ; 406fe (10:46fe) - ld hl, wc7d1 - ld a, [hl] - inc a - cp e - jr nc, asm_4073d - cp d - jr nc, .asm_4070c - inc [hl] - jr asm_4073f -.asm_4070c - ld hl, wc7d0 - add [hl] - cp e - jr nc, asm_4073d - inc [hl] - jr asm_4073f -asm_40716: ; 40716 (10:4716) - ld hl, wc7d0 - ld a, [hl] - and a - jr z, asm_4073d - cp d - jr nc, .asm_40724 - xor a - ld [hl], a - jr asm_4073f -.asm_40724 - sub d - ld [hl], a - jr asm_4073f -asm_40728: ; 40728 (10:4728) - ld hl, wc7d0 - ld a, d - add a - add [hl] - jr c, .asm_40733 - cp e - jr c, .asm_40738 -.asm_40733 - ld a, e - sub d - ld [hl], a - jr asm_4073f -.asm_40738 - ld a, [hl] - add d - ld [hl], a - jr asm_4073f -asm_4073d: ; 4073d (10:473d) - and a - ret -asm_4073f: ; 4073f (10:473f) - scf - ret - -Function40741: ; 40741 - push de - ld de, $0014 -.asm_40745 - ld [hl], a - add hl, de - dec b - jr nz, .asm_40745 - pop de - ret -; 4074c - - -Function4074c: ; 4074c (10:474c) - hlcoord 0, 17 - ld de, Unknown_407f2 - call Function40acd - ld a, $32 - ld hl, TileMap - ld bc, $168 - call ByteFill - ld hl, TileMap - lb bc, 7, 7 - call Function40ad5 - hlcoord 0, 9 - ld bc, $607 - call Function40ad5 - hlcoord 1, 11 - ld de, Unknown_407e1 - call Function40acd - ld hl, PokedexSeen ; wdeb9 (aliases: EndPokedexSeen) - ld b, EndPokedexSeen - PokedexSeen - call CountSetBits - ld de, wd265 - hlcoord 5, 12 - ld bc, $103 - call PrintNum - hlcoord 1, 14 - ld de, Unknown_407e6 - call Function40acd - ld hl, PokedexCaught - ld b, EndPokedexCaught - PokedexCaught - call CountSetBits - ld de, wd265 - hlcoord 5, 15 - ld bc, $103 - call PrintNum - hlcoord 1, 17 - ld de, Unknown_407ea - call Function40acd - hlcoord 8, 1 - ld b, $7 - ld a, $5a - call Function40741 - hlcoord 8, 10 - ld b, $6 - ld a, $5a - call Function40741 - hlcoord 8, 0 - ld [hl], $59 - hlcoord 8, 8 - ld [hl], $53 - hlcoord 8, 9 - ld [hl], $54 - hlcoord 8, 16 - ld [hl], $5b - call Function40ab2 - ret -; 407e1 (10:47e1) - -Unknown_407e1: ; 407e1 - db "SEEN", $ff -Unknown_407e6: ; 407e6 - db "OWN", $ff -Unknown_407ea: ; 407ea - db $3b, $48, $49, $4a, $44, $45, $46, $47 ; SELECT > OPTION -Unknown_407f2: ; 407f2 - db $3c, $3b, $41, $42, $43, $4b, $4c, $4d, $4e, $3c, $ff ; START > SEARCH -; 407fd - -Function407fd: ; 407fd - call Function40aa6 - ld hl, TileMap - ld bc, $0f12 - call Function40ad5 - hlcoord 19, 0 - ld [hl], $34 - hlcoord 19, 1 - ld a, $7f - ld b, $f - call Function40741 - ld [hl], $39 - hlcoord 1, 10 - ld bc, $0013 - ld a, $61 - call ByteFill - hlcoord 1, 17 - ld bc, $0012 - ld a, $7f - call ByteFill - hlcoord 9, 7 - ld de, Unknown_40852 - call Function40acd - hlcoord 9, 9 - ld de, Unknown_4085c - call Function40acd - hlcoord 0, 17 - ld de, Unknown_40867 - call Function40acd - call Function40ab2 - ret -; 4084f - -Unknown_4084f: ; 4084f - db $5c, $5d, $ff ; No. -Unknown_40852: ; 40852 - db "HT ?", $5e, "??", $5f, $ff ; HT ?'??" -Unknown_4085c: ; 4085c - db "WT ???lb", $ff ; WT ???lb -Unknown_40867: ; 40867 - db $3b, " PAGE AREA CRY PRNT", $ff -; 4087c - -Function4087c: ; 4087c (10:487c) - call Function40aa6 - hlcoord 0, 2 - lb bc, 8, 18 - call Function40ad5 - hlcoord 0, 12 - lb bc, 4, 18 - call Function40ad5 - hlcoord 0, 1 - ld de, Unknown_408b2 - call Function40acd - hlcoord 3, 4 - ld de, String_408bd - call PlaceString - ld a, [wc7dc] - and a - ret z - hlcoord 3, 10 - ld de, String_408e5 - call PlaceString - ret -; 408b2 (10:48b2) - -Unknown_408b2: ; 408b2 - db $3b, " OPTION ", $3c, $ff -; 408bd - -String_408bd: ; 408bd - db "NEW #DEX MODE", $4e - db "OLD #DEX MODE", $4e - db "A to Z MODE@" -; 408e5 - -String_408e5: ; 408e5 - db "UNOWN MODE@" -; 408f0 - -Function408f0: ; 408f0 (10:48f0) - call Function40aa6 - hlcoord 0, 2 - lb bc, 14, 18 - call Function40ad5 - hlcoord 0, 1 - ld de, Unknown_4092a - call Function40acd - hlcoord 8, 4 - ld de, Unknown_40935 - call Function40acd - hlcoord 8, 6 - ld de, Unknown_40935 - call Function40acd - hlcoord 3, 4 - ld de, String_40940 - call PlaceString - hlcoord 3, 13 - ld de, String_4094c - call PlaceString - ret -; 4092a (10:492a) - -Unknown_4092a: ; 4092a - db $3b, " SEARCH ", $3c, $ff -; 40925 - -Unknown_40935: ; 40935 - db $3d, " ", $3e, $ff -; 40940 - -String_40940: ; 40940 - db "TYPE1" - next "TYPE2" - db "@" -; 4094c - -String_4094c: ; 4094c - db "BEGIN SEARCH!!" - next "CANCEL" - db "@" -; 40962 - -Function40962: ; 40962 (10:4962) - call Function40aa6 - ld hl, TileMap - lb bc, 7, 7 - call Function40ad5 - hlcoord 0, 11 - lb bc, 5, 18 - call Function40ad5 - hlcoord 1, 12 - ld de, String_409ae - call PlaceString - ld de, wc7d7 - hlcoord 1, 16 - ld bc, $103 - call PrintNum - hlcoord 8, 0 - ld [hl], $59 - hlcoord 8, 1 - ld b, $7 - ld a, $5a - call Function40741 - hlcoord 8, 8 - ld [hl], $53 - hlcoord 8, 9 - ld [hl], $69 - hlcoord 8, 10 - ld [hl], $6a - call Function40ab2 - ret -; 409ae (10:49ae) - -String_409ae: ; 409ae - db "SEARCH RESULTS" - next " TYPE" - next " FOUND!" - db "@" -; 409cf - -Function409cf: ; 409cf (10:49cf) - ld a, [wc7d5] - hlcoord 0, 14 - call Function40fcd - ld a, [wc7d5] - ld b, a - ld a, [wc7d6] - and a - jr z, .asm_409f0 - cp b - jr z, .asm_409f0 - hlcoord 2, 15 - call Function40fcd - hlcoord 1, 15 - ld [hl], $f3 -.asm_409f0 - ret - -Function409f1: ; 409f1 (10:49f1) - call Function40aa6 - hlcoord 2, 1 - lb bc, 10, 13 - call Function40ad5 - hlcoord 2, 14 - lb bc, 1, 13 - call Function40ad5 - hlcoord 2, 15 - ld [hl], $3d - hlcoord 16, 15 - ld [hl], $3e - hlcoord 6, 5 - call Function40ab5 - ld de, 0 - ld b, 0 - ld c, 26 -.asm_40a1d - ld hl, UnownDex - add hl, de - ld a, [hl] - and a - jr z, .asm_40a39 - push af - ld hl, Unknown_40a3e - add hl, de - add hl, de - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - pop af - add $3f - ld [hl], a - inc de - inc b - dec c - jr nz, .asm_40a1d -.asm_40a39 - ld a, b - ld [wc7de], a - ret -; 40a3e (10:4a3e) - -Unknown_40a3e: ; 40a3e - dwcoord 4,11, 3,11 - dwcoord 4,10, 3,10 - dwcoord 4, 9, 3, 9 - dwcoord 4, 8, 3, 8 - dwcoord 4, 7, 3, 7 - dwcoord 4, 6, 3, 6 - dwcoord 4, 5, 3, 5 - dwcoord 4, 4, 3, 4 - dwcoord 4, 3, 3, 2 - dwcoord 5, 3, 5, 2 - dwcoord 6, 3, 6, 2 - dwcoord 7, 3, 7, 2 - dwcoord 8, 3, 8, 2 - dwcoord 9, 3, 9, 2 - dwcoord 10, 3, 10, 2 - dwcoord 11, 3, 11, 2 - dwcoord 12, 3, 12, 2 - dwcoord 13, 3, 13, 2 - dwcoord 14, 3, 15, 2 - dwcoord 14, 4, 15, 4 - dwcoord 14, 5, 15, 5 - dwcoord 14, 6, 15, 6 - dwcoord 14, 7, 15, 7 - dwcoord 14, 8, 15, 8 - dwcoord 14, 9, 15, 9 - dwcoord 14,10, 15,10 -; 40aa6 - -Function40aa6: ; 40aa6 - ld hl, TileMap - ld a, $32 - ld bc, $0168 - call ByteFill - ret -; 40ab2 - -Function40ab2: ; 40ab2 - hlcoord 1, 1 -Function40ab5: ; 40ab5 - xor a - ld b, $7 -.asm_40ab8 - ld c, $7 - push af - push hl -.asm_40abc - ld [hli], a - add $7 - dec c - jr nz, .asm_40abc - pop hl - ld de, $0014 - add hl, de - pop af - inc a - dec b - jr nz, .asm_40ab8 - ret -; 40acd - -Function40acd: ; 40acd -.asm_40acd - ld a, [de] - cp $ff - ret z - inc de - ld [hli], a - jr .asm_40acd -; 40ad5 - - -Function40ad5: ; 40ad5 - push hl - ld a, $33 - ld [hli], a - ld d, $34 - call Function40b06 - ld a, $35 - ld [hl], a - pop hl - ld de, $0014 - add hl, de -.asm_40ae6 - push hl - ld a, $36 - ld [hli], a - ld d, $7f - call Function40b06 - ld a, $37 - ld [hl], a - pop hl - ld de, $0014 - add hl, de - dec b - jr nz, .asm_40ae6 - ld a, $38 - ld [hli], a - ld d, $39 - call Function40b06 - ld a, $3a - ld [hl], a - ret -; 40b06 - -Function40b06: ; 40b06 - ld e, c -.asm_40b07 - ld a, e - and a - ret z - ld a, d - ld [hli], a - dec e - jr .asm_40b07 -; 40b0f - - -Function40b0f: ; 40b0f (10:4b0f) - ld a, [wc7d4] - cp $1 - jr z, .asm_40b1a - ld c, $b - jr .asm_40b1c -.asm_40b1a - ld c, $b -.asm_40b1c - hlcoord 0, 1 - ld a, [wc7d3] - add a - inc a - ld b, a - ld a, $7f - call Function413fe - ld a, [wc7d0] - ld e, a - ld d, $0 - ld hl, wc6d0 - add hl, de - ld e, l - ld d, h - hlcoord 0, 2 - ld a, [wc7d3] -.asm_40b3c - push af - ld a, [de] - ld [wd265], a - push de - push hl - call Function40b55 - pop hl - ld de, $28 - add hl, de - pop de - inc de - pop af - dec a - jr nz, .asm_40b3c - call Function4143b - ret - -Function40b55: ; 40b55 (10:4b55) - and a - ret z - call Function40b6a - call Function40b8d - ret c - call Function40b82 - push hl - call GetPokemonName - pop hl - call PlaceString - ret - -Function40b6a: ; 40b6a (10:4b6a) - ld a, [wc7d4] - cp $1 - jr z, .asm_40b72 - ret -.asm_40b72 - push hl - ld de, -20 - add hl, de - ld de, wd265 - ld bc, $8103 - call PrintNum - pop hl - ret - -Function40b82: ; 40b82 (10:4b82) - call Function40bc4 - jr nz, .asm_40b89 - inc hl - ret -.asm_40b89 - ld a, $4f - ld [hli], a - ret - -Function40b8d: ; 40b8d (10:4b8d) - call Function40bd0 - ret nz - inc hl - ld de, String_40b9a - call PlaceString - scf - ret -; 40b9a (10:4b9a) - -String_40b9a: ; 40b9a - db "-----@" -; 40ba0 - -Function40ba0: ; 40ba0 - hlcoord 18, 1 - ld a, $62 - ld [hli], a - inc a - ld [hl], a - hlcoord 18, 2 - ld a, $64 - ld [hli], a - inc a - ld [hl], a - ret -; 40bb1 - - -Function40bb1: ; 40bb1 - ld a, [wc7d1] - ld hl, wc7d0 - add [hl] - ld e, a - ld d, $0 - ld hl, wc6d0 - add hl, de - ld a, [hl] - ld [wd265], a - ret -; 40bc4 - - -Function40bc4: ; 40bc4 (10:4bc4) - push de - push hl - ld a, [wd265] - dec a - call CheckCaughtMon - pop hl - pop de - ret - - -Function40bd0: ; 40bd0 - push de - push hl - ld a, [wd265] - dec a - call CheckSeenMon - pop hl - pop de - ret -; 40bdc - - - -Function40bdc: ; 40bdc - ld hl, wc6d0 - ld bc, $100 - xor a - call ByteFill - ld a, [wc7d4] - ld hl, Jumptable_40bf0 - call Function41432 - jp [hl] -; 40bf0 - - -Jumptable_40bf0: ; 40bf0 (10:4bf0) - dw Function40bf6 - dw Function40c08 - dw Function40c30 - - -Function40bf6: ; 40bf6 (10:4bf6) - ld de, NewPokedexOrder - ld hl, wc6d0 - ld c, NUM_POKEMON -.asm_40bfe - ld a, [de] - inc de - ld [hli], a - dec c - jr nz, .asm_40bfe - call Function40c18 - ret - -Function40c08: ; 40c08 (10:4c08) - ld hl, wc6d0 - ld a, $1 - ld c, NUM_POKEMON -.asm_40c0f - ld [hli], a - inc a - dec c - jr nz, .asm_40c0f - call Function40c18 - ret - -Function40c18: ; 40c18 (10:4c18) - ld hl, wc7ca - ld d, NUM_POKEMON - ld e, d -.asm_40c1e - ld a, [hld] - ld [wd265], a - call Function40bd0 - jr nz, .asm_40c2b - dec d - dec e - jr nz, .asm_40c1e -.asm_40c2b - ld a, d - ld [wc7d2], a - ret - -Function40c30: ; 40c30 - xor a - ld [wc7d2], a - ld hl, wc6d0 - ld de, AlphabeticalPokedexOrder - ld c, NUM_POKEMON -.asm_40c3c - push bc - ld a, [de] - ld [wd265], a - call Function40bd0 - jr z, .asm_40c51 - ld a, [wd265] - ld [hli], a - ld a, [wc7d2] - inc a - ld [wc7d2], a - -.asm_40c51 - inc de - pop bc - dec c - jr nz, .asm_40c3c - ld a, [wc7d2] - ld c, 0 -.asm_40c5b - cp NUM_POKEMON - jr z, .asm_40c64 - ld [hl], c - inc hl - inc a - jr .asm_40c5b - -.asm_40c64 - ret -; 40c65 - -AlphabeticalPokedexOrder: ; 0x40c65 -INCLUDE "data/pokedex/order_alpha.asm" - -NewPokedexOrder: ; 0x40d60 -INCLUDE "data/pokedex/order_new.asm" - -Function40e5b: ; 40e5b - xor a - ld [hBGMapMode], a - hlcoord 0, 12 - ld bc, $0412 - call Function40ad5 - ld a, [wc7d8] - ld hl, Unknown_40e7d - call Function41432 - ld e, l - ld d, h - hlcoord 1, 14 - call PlaceString - ld a, $1 - ld [hBGMapMode], a - ret -; 40e7d - -Unknown_40e7d: ; 40e7d - dw String_40e85 - dw String_40ea6 - dw String_40ec6 - dw String_40ee4 -; 40e85 - -String_40e85: ; 40e85 - db $e1, $e2, " are listed by", $4e - db "evolution type.@" -; 40ea6 - -String_40ea6: ; 40ea6 - db $e1, $e2, " are listed by", $4e - db "official type.@" -; 40ec6 - -String_40ec6: ; 40ec6 - db $e1, $e2, " are listed", $4e - db "alphabetically.@" -; 40ee4 - -String_40ee4: ; 40ee4 - db "UNOWN are listed", $4e - db "in catching order.@" -; 40f08 - -Function40f08: ; 40f08 (10:4f08) - xor a - ld [hBGMapMode], a ; $ff00+$d4 - hlcoord 0, 12 - ld bc, $412 - call Function40ad5 - ld de, $4f32 - hlcoord 1, 14 - call PlaceString - ld a, $1 - ld [hBGMapMode], a ; $ff00+$d4 - ld c, $40 - call DelayFrames - ld de, SFX_CHANGE_DEX_MODE - call PlaySFX - ld c, $40 - call DelayFrames - ret -; 40f32 (10:4f32) - -String_40f32: ; 40f32 - db "Changing modes.", $4e, "Please wait.@" -; 40f4f - -Function40f4f: ; 40f4f (10:4f4f) - ld a, [wc7d8] - cp $2 - jr nc, .asm_40f63 - ld hl, $ffa9 - ld a, [hl] - and $20 - jr nz, .asm_40f65 - ld a, [hl] - and $10 - jr nz, Function40f84 -.asm_40f63 - and a - ret -.asm_40f65 - ld a, [wc7d8] - and a - jr nz, .asm_40f76 - ld hl, wc7d5 - ld a, [hl] - cp $1 - jr z, .asm_40f80 - dec [hl] - jr .asm_40f82 -.asm_40f76 - ld hl, wc7d6 - ld a, [hl] - and a - jr z, .asm_40f80 - dec [hl] - jr .asm_40f82 -.asm_40f80 - ld [hl], $11 -.asm_40f82 - scf - ret -; 40f84 - -Function40f84: ; 40f84 - ld a, [wc7d8] - and a - jr nz, .asm_40f99 - ld hl, wc7d5 - ld a, [hl] - cp $11 - jr nc, .asm_40f95 - inc [hl] - jr .asm_40fa6 -.asm_40f95 - ld [hl], $1 - jr .asm_40fa6 -.asm_40f99 - ld hl, wc7d6 - ld a, [hl] - cp $11 - jr nc, .asm_40fa4 - inc [hl] - jr .asm_40fa6 -.asm_40fa4 - ld [hl], $0 -.asm_40fa6 - scf - ret - -Function40fa8: ; 40fa8 (10:4fa8) - xor a - ld [hBGMapMode], a ; $ff00+$d4 - hlcoord 9, 3 - ld bc, $408 - ld a, $7f - call Function413fe - ld a, [wc7d5] - hlcoord 9, 4 - call Function40fcd - ld a, [wc7d6] - hlcoord 9, 6 - call Function40fcd - ld a, $1 - ld [hBGMapMode], a ; $ff00+$d4 - ret - -Function40fcd: ; 40fcd (10:4fcd) - push hl - ld e, a - ld d, 0 - ld hl, Strings_40fe4 - add hl, de - add hl, de - add hl, de - add hl, de - add hl, de - add hl, de - add hl, de - add hl, de - add hl, de - ld e, l - ld d, h - pop hl - call PlaceString - ret -; 40fe4 (10:4fe4) - -Strings_40fe4: ; 40fe4 - db " ---- @" - db " NORMAL @" - db " FIRE @" - db " WATER @" - db " GRASS @" - db "ELECTRIC@" - db " ICE @" - db "FIGHTING@" - db " POISON @" - db " GROUND @" - db " FLYING @" - db "PSYCHIC @" - db " BUG @" - db " ROCK @" - db " GHOST @" - db " DRAGON @" - db " DARK @" - db " STEEL @" -; 41086 - -Function41086: ; 41086 - ld a, [wc7d6] - and a - call nz, Function41095 - ld a, [wc7d5] - and a - call nz, Function41095 - ret -; 41095 - -Function41095: ; 41095 - dec a - ld e, a - ld d, 0 - ld hl, Unknown_410f6 - add hl, de - ld a, [hl] - ld [wc7df], a - ld hl, wc6d0 - ld de, wc6d0 - ld c, NUM_POKEMON - xor a - ld [wc7d7], a -.asm_410ad - push bc - ld a, [hl] - and a - jr z, .asm_410e0 - ld [wd265], a - ld [CurSpecies], a - call Function40bc4 - jr z, .asm_410e0 - push hl - push de - call GetBaseData - pop de - pop hl - ld a, [wc7df] - ld b, a - ld a, [BaseType1] - cp b - jr z, .asm_410d4 - ld a, [BaseType2] - cp b - jr nz, .asm_410e0 - -.asm_410d4 - ld a, [wd265] - ld [de], a - inc de - ld a, [wc7d7] - inc a - ld [wc7d7], a - -.asm_410e0 - inc hl - pop bc - dec c - jr nz, .asm_410ad - ld l, e - ld h, d - ld a, [wc7d7] - ld c, 0 -.asm_410ec - cp NUM_POKEMON - jr z, .asm_410f5 - ld [hl], c - inc hl - inc a - jr .asm_410ec - -.asm_410f5 - ret -; 410f6 - -Unknown_410f6: ; 410f6 - db NORMAL - db FIRE - db WATER - db GRASS - db ELECTRIC - db ICE - db FIGHTING - db POISON - db GROUND - db FLYING - db PSYCHIC - db BUG - db ROCK - db GHOST - db DRAGON - db DARK - db STEEL -; 41107 - -Function41107: ; 41107 - xor a - ld [hBGMapMode], a - hlcoord 0, 12 - ld bc, $0412 - call Function40ad5 - ld de, String_41126 - hlcoord 1, 14 - call PlaceString - ld a, $1 - ld [hBGMapMode], a - ld c, $80 - call DelayFrames - ret -; 41126 - -String_41126: ; 41126 - db "The specified type", $4e - db "was not found.@" -; 41148 - -Function41148: ; 41148 (10:5148) - ld a, [wc7d4] - cp $1 - jp z, Function41157 - call Function41229 - call Function4130e - ret - -Function41157: ; 41157 (10:5157) - ld hl, Unknown_41167 - ld a, [wc7d1] - or a - jr nz, .asm_41163 - ld hl, Unknown_411c8 -.asm_41163 - call Function412f1 - ret -; 41167 (10:5167) - -Unknown_41167: ; 41167 -; OAM - db $18, $47, $30, $07 - db $10, $47, $31, $07 - db $10, $4f, $32, $07 - db $10, $57, $32, $07 - db $10, $5f, $32, $07 - db $10, $67, $33, $07 - db $10, $7e, $33, $27 - db $10, $86, $32, $27 - db $10, $8e, $32, $27 - db $10, $96, $32, $27 - db $10, $9e, $31, $27 - db $18, $9e, $30, $27 - db $20, $47, $30, $47 - db $28, $47, $31, $47 - db $28, $4f, $32, $47 - db $28, $57, $32, $47 - db $28, $5f, $32, $47 - db $28, $67, $33, $47 - db $28, $7e, $33, $67 - db $28, $86, $32, $67 - db $28, $8e, $32, $67 - db $28, $96, $32, $67 - db $28, $9e, $31, $67 - db $20, $9e, $30, $67 - db $ff -; 411c8 - -Unknown_411c8: ; 411c8 -; OAM - db $18, $47, $30, $07 - db $10, $47, $34, $07 - db $10, $4f, $35, $07 - db $10, $57, $35, $07 - db $10, $5f, $35, $07 - db $10, $67, $36, $07 - db $10, $7e, $36, $27 - db $10, $86, $35, $27 - db $10, $8e, $35, $27 - db $10, $96, $35, $27 - db $10, $9e, $34, $27 - db $18, $9e, $30, $27 - db $20, $47, $30, $47 - db $28, $47, $31, $47 - db $28, $4f, $32, $47 - db $28, $57, $32, $47 - db $28, $5f, $32, $47 - db $28, $67, $33, $47 - db $28, $7e, $33, $67 - db $28, $86, $32, $67 - db $28, $8e, $32, $67 - db $28, $96, $32, $67 - db $28, $9e, $31, $67 - db $20, $9e, $30, $67 - db $ff -; 41229 - -Function41229: ; 41229 (10:5229) - ld hl, Unknown_41230 - call Function412f1 - ret -; 41230 (10:5230) - -Unknown_41230: ; 41230 -; OAM - db $1b, $47, $30, $07 - db $13, $47, $31, $07 - db $13, $4f, $32, $07 - db $13, $57, $32, $07 - db $13, $5f, $33, $07 - db $13, $80, $33, $27 - db $13, $88, $32, $27 - db $13, $90, $32, $27 - db $13, $98, $31, $27 - db $1b, $98, $30, $27 - db $23, $47, $30, $47 - db $2b, $47, $31, $47 - db $2b, $4f, $32, $47 - db $2b, $57, $32, $47 - db $2b, $5f, $33, $47 - db $2b, $80, $33, $67 - db $2b, $88, $32, $67 - db $2b, $90, $32, $67 - db $2b, $98, $31, $67 - db $23, $98, $30, $67 - db $ff -; 41281 - -Function41281: ; 41281 (10:5281) - ld a, [wc7d4] - cp $1 - jp z, Function41157 - ld hl, Unknown_41290 - call Function412f1 - ret -; 41290 (10:5290) - -Unknown_41290: ; 41290 -; OAM - db $1b, $47, $30, $07 - db $13, $47, $31, $07 - db $13, $4f, $32, $07 - db $13, $57, $32, $07 - db $13, $5f, $32, $07 - db $13, $67, $33, $07 - db $13, $7e, $33, $27 - db $13, $86, $32, $27 - db $13, $8e, $32, $27 - db $13, $96, $32, $27 - db $13, $9e, $31, $27 - db $1b, $9e, $30, $27 - db $23, $47, $30, $47 - db $2b, $47, $31, $47 - db $2b, $4f, $32, $47 - db $2b, $57, $32, $47 - db $2b, $5f, $32, $47 - db $2b, $67, $33, $47 - db $2b, $7e, $33, $67 - db $2b, $86, $32, $67 - db $2b, $8e, $32, $67 - db $2b, $96, $32, $67 - db $2b, $9e, $31, $67 - db $23, $9e, $30, $67 - db $ff -; 412f1 - -Function412f1: ; 412f1 (10:52f1) - ld de, Sprites -.asm_412f4 - ld a, [hl] - cp $ff - ret z - ld a, [wc7d1] - and $7 - swap a - add [hl] - inc hl - ld [de], a - inc de - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - inc de - jr .asm_412f4 - -Function4130e: ; 4130e (10:530e) - push de - ld a, [wc7d2] - dec a - ld e, a - ld a, [wc7d1] - ld hl, wc7d0 - add [hl] - cp e - jr z, .asm_4133f - ld hl, $0 - ld bc, $79 - call AddNTimes - ld e, l - ld d, h - ld b, $0 - ld a, d - or e - jr z, .asm_41341 - ld a, [wc7d2] - ld c, a -.asm_41333 - ld a, e - sub c - ld e, a - ld a, d - sbc $0 - ld d, a - jr c, .asm_41341 - inc b - jr .asm_41333 -.asm_4133f - ld b, $79 -.asm_41341 - ld a, $14 - add b - pop hl - ld [hli], a - ld a, $a1 - ld [hli], a - ld a, $f - ld [hli], a - ld [hl], $0 - ret - -Function4134f: ; 4134f (10:534f) - xor a - ld [wc7d8], a - ld [wc7d9], a - ld [wc7da], a - ret - -Function4135a: ; 4135a (10:535a) - ld a, [de] - ld b, a - inc de - ld a, [de] - dec a - ld c, a - inc de - call Function413e0 - ld hl, hJoyPressed ; $ffa7 - ld a, [hl] - and D_LEFT | D_UP - and b - jr nz, .asm_4138f - ld a, [hl] - and D_RIGHT | D_DOWN - and b - jr nz, .asm_413a0 - ld a, [hl] - and SELECT - and b - jr nz, .asm_413c1 - call Function413f5 - jr c, .asm_413bf - ld hl, $ffa9 - ld a, [hl] - and D_LEFT | D_UP - and b - jr nz, .asm_4138f - ld a, [hl] - and D_RIGHT | D_DOWN - and b - jr nz, .asm_413a0 - jr .asm_413bf -.asm_4138f - ld a, [wc7d8] - and a - jr z, .asm_413bf - call Function413d4 - ld [hl], $7f - ld hl, wc7d8 - dec [hl] - jr .asm_413af -.asm_413a0 - ld a, [wc7d8] - cp c - jr nc, .asm_413bf - call Function413d4 - ld [hl], $7f - ld hl, wc7d8 - inc [hl] -.asm_413af - call Function413d4 - ld [hl], $ed - ld a, $c - ld [wc7d9], a - xor a - ld [wc7da], a - scf - ret -.asm_413bf - and a - ret -.asm_413c1 - call Function413d4 - ld [hl], $7f - ld a, [wc7d8] - cp c - jr c, .asm_413ce - ld a, $ff -.asm_413ce - inc a - ld [wc7d8], a - jr .asm_413af - -Function413d4: ; 413d4 (10:53d4) - ld a, [wc7d8] - add a - ld l, a - ld h, $0 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ret - -Function413e0: ; 413e0 (10:53e0) - ld hl, wc7da - ld a, [hl] - inc [hl] - and $8 - jr z, .asm_413ef - call Function413d4 - ld [hl], $7f - ret -.asm_413ef - call Function413d4 - ld [hl], $ed - ret - -Function413f5: ; 413f5 (10:53f5) - ld hl, wc7d9 - ld a, [hl] - and a - ret z - dec [hl] - scf - ret - -Function413fe: ; 413fe (10:53fe) - jp Functionfb8 - -Function41401: ; 41401 (10:5401) - ld a, [rSVBK] ; $ff00+$70 - push af - ld a, $5 - ld [rSVBK], a ; $ff00+$70 - ld hl, Unkn1Pals - ld bc, $40 - xor a - call ByteFill - pop af - ld [rSVBK], a ; $ff00+$70 - -Function41415: ; 41415 - ld a, $ff - call DmgToCgbBGPals - ld a, $ff - call Functioncf8 - call DelayFrame - ret - -Function41423: ; 41423 - ld b, a - call GetSGBLayout - -Function41427: ; 41427 - ld a, $e4 - call DmgToCgbBGPals - ld a, $e0 - call Functioncf8 - ret -; 41432 - - -Function41432: ; 41432 - ld e, a - ld d, 0 - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ret -; 4143b - -Function4143b: ; 4143b - call Function40bb1 - call Function40bd0 - jr z, .asm_4145b - ld a, [wdef4] - ld [UnownLetter], a - ld a, [wd265] - ld [CurPartySpecies], a - call GetBaseData - ld de, VTiles2 - predef GetFrontpic - ret - -.asm_4145b - ld a, $0 - call GetSRAMBank - callba Function1de0d7 - ld hl, VTiles2 - ld de, $a000 - ld c, $31 - ld a, [hROMBank] - ld b, a - call Get2bpp - call CloseSRAM - ret -; 41478 - - -Function41478: ; 41478 (10:5478) - call Function40bb1 - -Function4147b: ; 4147b - ld a, [wd265] - dec a - and $f8 - srl a - srl a - srl a - ld e, 0 - ld d, a - ld a, [wd265] - dec a - and 7 - swap a ; * $10 - ld l, a - ld h, 0 - add hl, de - ld de, Footprints - add hl, de - - push hl - ld e, l - ld d, h - ld hl, $9620 - lb bc, BANK(Footprints), 2 - call Request1bpp - pop hl - - ; Whoever was editing footprints forgot to fix their - ; tile editor. Now each bottom half is 8 tiles off. - ld de, $80 - add hl, de - - ld e, l - ld d, h - ld hl, $9640 - lb bc, BANK(Footprints), 2 - call Request1bpp - - ret -; 414b7 - - -Function414b7: ; 414b7 - call DisableLCD - ld hl, VTiles2 - ld bc, $0310 - xor a - call ByteFill - call Function414fb - call Functione5f - ld hl, $9600 - ld bc, $0200 - call Function41504 - call Function41a24 - jr nz, .asm_414e0 - callba Function1ddf1c - jr .asm_414e9 - -.asm_414e0 - ld hl, PokedexLZ - ld de, $9310 - call Decompress - -.asm_414e9 - ld hl, PokedexSlowpokeLZ - ld de, VTiles0 - call Decompress - ld a, 6 - call SkipMusic - call EnableLCD - ret - -Function414fb: ; 414fb - call Functione51 - ld hl, VTiles1 - ld bc, $0800 - -Function41504: ; 41504 - ld a, [hl] - xor $ff - ld [hli], a - dec bc - ld a, b - or c - jr nz, Function41504 - ret -; 4150e - -PokedexLZ: ; 4150e -INCBIN "gfx/unknown/04150e.2bpp.lz" -; 416b0 - -PokedexSlowpokeLZ: ; 416b0 -INCBIN "gfx/pokedex/slowpoke.2bpp.lz" - -Function41a24: ; 41a24 - ld a, [hCGB] - or a - ret nz - ld a, [hSGB] - dec a - ret -; 41a2c - -Function41a2c: ; 41a2c - ld a, $0 - call GetSRAMBank - ld hl, UnownFont - ld de, $a188 - ld bc, $270 - ld a, BANK(UnownFont) - call FarCopyBytes - ld hl, $a188 - ld bc, $1b0 - call Function41504 - ld de, $a188 - ld hl, $9400 - lb bc, BANK(Function41a2c), $1b - call Request2bpp - call CloseSRAM - ret -; 41a58 - - -Function41a58: ; 41a58 (10:5a58) - ld a, [UnownLetter] - push af - ld a, [wc7dd] - ld e, a - ld d, $0 - ld hl, EndPokedexSeen ; wded9 (aliases: UnownDex) - add hl, de - ld a, [hl] - ld [UnownLetter], a - ld a, UNOWN - ld [CurPartySpecies], a - call GetBaseData - ld de, $9000 - predef GetFrontpic - pop af - ld [UnownLetter], a - ret Function41a7f: ; 41a7f xor a