diff options
Diffstat (limited to 'engine/pokedex.asm')
-rw-r--r-- | engine/pokedex.asm | 2585 |
1 files changed, 2585 insertions, 0 deletions
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 + |