summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-06-30 18:57:42 -0700
committerMarcus Huderle <huderlem@gmail.com>2017-06-30 18:57:42 -0700
commitedbefc01a6b62ef8a2bf8037a863a39d97aabf7e (patch)
tree0620ac2c0f387532850653cbed930675af14a4dd
parentc1ac42bef721d196679abd041fe8f55b3d7d4dc7 (diff)
Move Pokedex routines into their own file
-rwxr-xr-xengine/pinball_game/ball_gfx.asm (renamed from engine/ball_gfx.asm)0
-rwxr-xr-xengine/pokedex.asm1189
-rwxr-xr-xmain.asm1190
3 files changed, 1190 insertions, 1189 deletions
diff --git a/engine/ball_gfx.asm b/engine/pinball_game/ball_gfx.asm
index 2aff0d3..2aff0d3 100755
--- a/engine/ball_gfx.asm
+++ b/engine/pinball_game/ball_gfx.asm
diff --git a/engine/pokedex.asm b/engine/pokedex.asm
new file mode 100755
index 0000000..0ff6819
--- /dev/null
+++ b/engine/pokedex.asm
@@ -0,0 +1,1189 @@
+HandlePokedexScreen: ; 0x28000
+ ld a, [wScreenState]
+ rst JumpTable ; calls JumpToFuncInTable
+PointerTable_28004: ; 0x28004
+ dw LoadPokedexScreen
+ dw MainPokedexScreen
+ dw MonInfoPokedexScreen
+ dw Func_282e9 ; not sure if this is used ever...
+ dw ExitPokedexScreen
+
+LoadPokedexScreen: ; 0x2800e
+ ld a, $23
+ ld [hLCDC], a
+ ld a, $e4
+ ld [wBGP], a
+ ld a, $93
+ ld [wOBP0], a
+ ld a, $e4
+ ld [wOBP1], a
+ xor a
+ ld [hSCX], a
+ ld a, $8
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $8c
+ ld [hWY], a
+ ld a, $3b
+ ld [hLYC], a
+ ld [hLastLYC], a
+ ld [hNextLYCSub], a
+ ld [hLYCSub], a
+ ld hl, hSTAT
+ set 6, [hl]
+ ld hl, rIE
+ set 1, [hl]
+ ld a, $2
+ ld [hHBlankRoutine], a
+ ld hl, PointerTable_280a2
+ ld a, [hGameBoyColorFlag]
+ call LoadVideoData
+ xor a
+ ld [wCurPokedexIndex], a
+ ld [wPokedexOffset], a
+ ld [wd95b], a
+ ld [wd95c], a
+ ld [wd960], a
+ ld [wd961], a
+ ld [wd95e], a
+ ld a, $1
+ ld [wd862], a
+ call ClearOAMBuffer
+ call Func_285db
+ call Func_28931
+ call Func_289c8
+ call Func_28a15
+ call Func_28972
+ call Func_28a8a
+ call Func_28ad1
+ call Func_28add
+ call CountNumSeenOwnedMons
+ call Func_b66
+ ld a, $f
+ call SetSongBank
+ ld de, $0004
+ call PlaySong
+ call Func_588
+ call Func_bbe
+ ld hl, wScreenState
+ inc [hl]
+ ret
+
+PointerTable_280a2: ; 0x280a2
+ dw Data_280a6
+ dw Data_280c4
+
+Data_280a6: ; 0x280a6
+ dab PokedexInitialGfx
+ dw vTilesOB
+ dw $6000
+ dab PokedexTilemap2
+ dw $9800
+ dw $1000
+ dab PokedexTilemap
+ dw vBGWin
+ dw $800
+ dab PokedexTilemap
+ dw $9e00
+ dw $800
+ dw $FFFF ; terminators
+
+Data_280c4: ; 0x280c4
+ dab PokedexInitialGfx
+ dw vTilesOB
+ dw $6000
+ dab PokedexTilemap2
+ dw $9800
+ dw $1000
+ dab PokedexBGAttributes2
+ dw $9800
+ dw $1002
+ dab PokedexTilemap
+ dw vBGWin
+ dw $800
+ dab PokedexTilemap
+ dw $9e00
+ dw $800
+ dab PokedexBGAttributes
+ dw vBGWin
+ dw $802
+ dab PokedexBGAttributes
+ dw $9e00
+ dw $802
+ dab PokedexPalettes
+ dw $0000
+ dw $101
+ dw $FFFF ; terminators
+
+MainPokedexScreen: ; 0x280fe
+ call Func_28513
+ ld a, [hNewlyPressedButtons]
+ bit BIT_A_BUTTON, a
+ jr z, .asm_28142
+ ld a, [wd95f]
+ and a
+ jp nz, .asm_28174
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld hl, wPokedexFlags
+ add hl, bc
+ ld a, [hl]
+ and a
+ jp z, .asm_28174
+ push hl
+ ld a, [wCurPokedexIndex]
+ inc a
+ ld e, a
+ ld d, $0
+ call PlayCry
+ pop hl
+ bit 1, [hl]
+ jp z, .asm_28174
+ call Func_288c6
+ call Func_2885c
+ call CleanOAMBuffer
+ call Func_2887c
+ call Func_2885c
+ ld hl, wScreenState
+ inc [hl]
+ ret
+
+.asm_28142
+ bit BIT_B_BUTTON, a
+ jr z, .asm_2814f
+ call Func_285db
+ ld a, $4
+ ld [wScreenState], a
+ ret
+
+.asm_2814f
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_28174
+ ld a, [hJoypadState]
+ bit BIT_START, a
+ jr z, .asm_28168
+ ld a, [wd960]
+ and a
+ ld a, $ff
+ ld [wd960], a
+ call z, Func_28add
+ jr .asm_28174
+
+.asm_28168
+ ld a, [wd960]
+ and a
+ ld a, $0
+ ld [wd960], a
+ call nz, Func_28add
+.asm_28174
+ call Func_285db
+ ret
+
+MonInfoPokedexScreen: ; 0x28178
+ ld a, [wd956]
+ bit 0, a
+ jr z, .asm_28190
+ ld a, [hNewlyPressedButtons]
+ bit BIT_A_BUTTON, a
+ jr z, .asm_2818a
+ call Func_28912
+ jr .asm_281a2
+
+.asm_2818a
+ bit 1, a
+ jr z, .asm_281a2
+ jr .asm_28196
+
+.asm_28190
+ ld a, [hNewlyPressedButtons]
+ and $3
+ jr z, .asm_281a2
+.asm_28196
+ call Func_288a2
+ call Func_285db
+ ld a, $1
+ ld [wScreenState], a
+ ret
+
+.asm_281a2
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_281c7
+ ld a, [hJoypadState]
+ bit BIT_START, a
+ jr z, .asm_281bb
+ ld a, [wd960]
+ and a
+ ld a, $ff
+ ld [wd960], a
+ call z, Func_28add
+ jr .asm_281c7
+
+.asm_281bb
+ ld a, [wd960]
+ and a
+ ld a, $0
+ ld [wd960], a
+ call nz, Func_28add
+.asm_281c7
+ call Func_2885c
+ ret
+
+Func_281cb:
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ sla c
+ rl b
+ add c
+ ld c, a
+ jr nc, .asm_281da
+ inc b
+.asm_281da
+ ld a, [wd960]
+ and a
+ jr nz, .asm_281fb
+ ld hl, MonBillboardPalettePointers
+ add hl, bc
+ ld a, BANK(MonBillboardPalettePointers)
+ call ReadByteFromBank
+ inc hl
+ ld e, a
+ ld a, BANK(MonBillboardPalettePointers)
+ call ReadByteFromBank
+ inc hl
+ ld d, a
+ ld a, BANK(MonBillboardPalettePointers)
+ call ReadByteFromBank
+ ld [$ff8c], a
+ jr .asm_28214
+
+.asm_281fb
+ ld hl, MonAnimatedPalettePointers
+ add hl, bc
+ ld a, BANK(MonAnimatedPalettePointers)
+ call ReadByteFromBank
+ inc hl
+ ld e, a
+ ld a, BANK(MonAnimatedPalettePointers)
+ call ReadByteFromBank
+ inc hl
+ ld d, a
+ ld a, BANK(MonAnimatedPalettePointers)
+ call ReadByteFromBank
+ ld [$ff8c], a
+.asm_28214
+ ld h, d
+ ld l, e
+ ld de, wda8a
+ ld b, $8
+.asm_2821b
+ push bc
+ ld a, [$ff8c]
+ call ReadByteFromBank
+ inc hl
+ ld c, a
+ ld a, [$ff8c]
+ call ReadByteFromBank
+ inc hl
+ ld b, a
+ ld a, c
+ and $1f
+ ld [de], a
+ inc de
+ srl b
+ rr c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl b
+ rr c
+ ld a, c
+ and $1f
+ ld [de], a
+ inc de
+ srl b
+ rr c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl b
+ rr c
+ ld a, c
+ and $1f
+ ld [de], a
+ inc de
+ pop bc
+ dec b
+ jr nz, .asm_2821b
+ ld hl, VRAMAddresses_28289
+ ld de, wda8a
+ ld b, $18
+.asm_2826d
+ push hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [de]
+ inc de
+ push af
+ swap a
+ and $f
+ call PutTileInVRAM
+ inc hl
+ pop af
+ and $f
+ call PutTileInVRAM
+ pop hl
+ inc hl
+ inc hl
+ dec b
+ jr nz, .asm_2826d
+ ret
+
+VRAMAddresses_28289:
+ dw vBGWin + $26
+ dw vBGWin + $2B
+ dw vBGWin + $30
+ dw vBGWin + $46
+ dw vBGWin + $4B
+ dw vBGWin + $50
+ dw vBGWin + $66
+ dw vBGWin + $6B
+ dw vBGWin + $70
+ dw vBGWin + $86
+ dw vBGWin + $8B
+ dw vBGWin + $90
+ dw vBGWin + $C6
+ dw vBGWin + $CB
+ dw vBGWin + $D0
+ dw vBGWin + $E6
+ dw vBGWin + $EB
+ dw vBGWin + $F0
+ dw vBGWin + $106
+ dw vBGWin + $10B
+ dw vBGWin + $110
+ dw vBGWin + $126
+ dw vBGWin + $12B
+ dw vBGWin + $130
+
+OAMOffsetsTable_282b9:
+; y, x coordinates
+ db $40, $18
+ db $40, $40
+ db $40, $68
+ db $48, $18
+ db $48, $40
+ db $48, $68
+ db $50, $18
+ db $50, $40
+ db $50, $68
+ db $58, $18
+ db $58, $40
+ db $58, $68
+ db $68, $18
+ db $68, $40
+ db $68, $68
+ db $70, $18
+ db $70, $40
+ db $70, $68
+ db $78, $18
+ db $78, $40
+ db $78, $68
+ db $80, $18
+ db $80, $40
+ db $80, $68
+
+Func_282e9: ; 0x282e9
+ ld a, [wd960]
+ and a
+ jr z, .asm_28318
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld hl, MonAnimatedSpriteTypes
+ add hl, bc
+ ld a, Bank(MonAnimatedSpriteTypes)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [hNumFramesDropped]
+ swap a
+ and $7
+ cp $7
+ jr z, .asm_2830d
+ and $1
+ jr .asm_2830f
+
+.asm_2830d
+ ld a, $2
+.asm_2830f
+ add c
+ add $a5
+ ld bc, $2030
+ call LoadOAMData
+.asm_28318
+ ld a, [wdaa2]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, OAMOffsetsTable_282b9
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, $63
+ call LoadOAMData
+ call Func_28368
+ ld a, [hNewlyPressedButtons]
+ and $6
+ jr z, .asm_28367
+ ld a, BANK(PokedexTilemap)
+ ld hl, PokedexTilemap
+ ld de, vBGWin
+ ld bc, $0200
+ call LoadVRAMData
+ ld a, $1
+ ld [rVBK], a
+ ld a, BANK(PokedexBGAttributes)
+ ld hl, PokedexBGAttributes
+ ld de, vBGWin
+ ld bc, $0200
+ call LoadVRAMData
+ xor a
+ ld [rVBK], a
+ call Func_28972
+ call Func_28a8a
+ call Func_28ad1
+ ld a, $1
+ ld [wScreenState], a
+.asm_28367
+ ret
+
+Func_28368: ; 0x28368
+ ld a, [hJoypadState]
+ bit BIT_A_BUTTON, a
+ jr nz, .asm_28371
+ jp Func_284bc
+
+.asm_28371
+ ld a, [hPressedButtons]
+ ld b, a
+ ld a, [wdaa2]
+ ld e, a
+ ld d, $0
+ ld hl, wda8a
+ add hl, de
+ ld a, [hl]
+ bit 5, b
+ jr z, .asm_28386
+ dec a
+ jr .asm_2838a
+
+.asm_28386
+ bit 4, b
+ ret z
+ inc a
+.asm_2838a
+ and $1f
+ ld [hl], a
+ push af
+ sla e
+ rl d
+ ld hl, VRAMAddresses_28289
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop af
+ push af
+ swap a
+ and $f
+ call PutTileInVRAM
+ inc hl
+ pop af
+ and $f
+ call PutTileInVRAM
+ ld hl, Data_2842c
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [hld]
+ ld c, a
+ ld b, $0
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ ld a, [hld]
+ or c
+ ld c, a
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ ld a, [hl]
+ or c
+ ld c, a
+ ld a, [wd960]
+ and a
+ jr nz, .asm_283ff
+ ld hl, BGPaletteIndices_2845c
+ add hl, de
+ ld a, [hl]
+ ld hl, rBGPI
+ call PutTileInVRAM
+ ld hl, rBGPD
+ ld a, c
+ call PutTileInVRAM
+ ld a, b
+ call PutTileInVRAM
+ ret
+
+.asm_283ff
+ ld hl, BGPaletteIndices_2845c
+ add hl, de
+ ld a, [hl]
+ ld hl, rBGPI
+ call PutTileInVRAM
+ ld hl, rBGPD
+ ld a, c
+ call PutTileInVRAM
+ ld a, b
+ call PutTileInVRAM
+ ld hl, SpritePaletteIndices_2848c
+ add hl, de
+ ld a, [hl]
+ ld hl, rOBPI
+ call PutTileInVRAM
+ ld hl, rOBPD
+ ld a, c
+ call PutTileInVRAM
+ ld a, b
+ call PutTileInVRAM
+ ret
+
+Data_2842c:
+ dw wda8c
+ dw wda8c
+ dw wda8c
+ dw wda8f
+ dw wda8f
+ dw wda8f
+ dw wda92
+ dw wda92
+ dw wda92
+ dw wda95
+ dw wda95
+ dw wda95
+ dw wda98
+ dw wda98
+ dw wda98
+ dw wda9b
+ dw wda9b
+ dw wda9b
+ dw wda9e
+ dw wda9e
+ dw wda9e
+ dw wdaa1
+ dw wdaa1
+ dw wdaa1
+
+BGPaletteIndices_2845c:
+; second byte is unused
+ db $30 | $80, $00
+ db $30 | $80, $00
+ db $30 | $80, $00
+ db $32 | $80, $00
+ db $32 | $80, $00
+ db $32 | $80, $00
+ db $34 | $80, $00
+ db $34 | $80, $00
+ db $34 | $80, $00
+ db $36 | $80, $00
+ db $36 | $80, $00
+ db $36 | $80, $00
+ db $38 | $80, $00
+ db $38 | $80, $00
+ db $38 | $80, $00
+ db $3A | $80, $00
+ db $3A | $80, $00
+ db $3A | $80, $00
+ db $3C | $80, $00
+ db $3C | $80, $00
+ db $3C | $80, $00
+ db $3E | $80, $00
+ db $3E | $80, $00
+ db $3E | $80, $00
+
+SpritePaletteIndices_2848c:
+ db $D8, $00
+ db $D8, $00
+ db $D8, $00
+ db $DA, $00
+ db $DA, $00
+ db $DA, $00
+ db $DC, $00
+ db $DC, $00
+ db $DC, $00
+ db $DE, $00
+ db $DE, $00
+ db $DE, $00
+ db $E8, $00
+ db $E8, $00
+ db $E8, $00
+ db $EA, $00
+ db $EA, $00
+ db $EA, $00
+ db $EC, $00
+ db $EC, $00
+ db $EC, $00
+ db $EE, $00
+ db $EE, $00
+ db $EE, $00
+
+Func_284bc: ; 0x284bc
+ ld a, [hPressedButtons]
+ ld b, a
+ ld a, [wdaa2]
+ bit 5, b
+ jr z, .asm_284cd
+ dec a
+ bit 7, a
+ jr nz, .asm_284ef
+ jr .asm_284f5
+
+.asm_284cd
+ bit 4, b
+ jr z, .asm_284d8
+ inc a
+ cp $18
+ jr nc, .asm_284f3
+ jr .asm_284f5
+
+.asm_284d8
+ bit 6, b
+ jr z, .asm_284e4
+ sub $3
+ bit 7, a
+ jr nz, .asm_284ef
+ jr .asm_284f5
+
+.asm_284e4
+ bit 7, b
+ ret z
+ add $3
+ cp $18
+ jr nc, .asm_284f3
+ jr .asm_284f5
+
+.asm_284ef
+ add $18
+ jr .asm_284f5
+
+.asm_284f3
+ sub $18
+.asm_284f5
+ ld [wdaa2], a
+ ret
+
+ExitPokedexScreen: ; 0x284f9
+ call Func_cb5
+ call Func_576
+ ld hl, hSTAT
+ res 6, [hl]
+ ld hl, rIE
+ res 1, [hl]
+ ld a, SCREEN_TITLESCREEN
+ ld [wCurrentScreen], a
+ xor a
+ ld [wScreenState], a
+ ret
+
+Func_28513: ; 0x28513
+ ld a, [hPressedButtons]
+ ld hl, wd95e
+ or [hl]
+ ld [hl], a
+ ld a, [wd95c]
+ and a
+ ret nz
+ ld a, [wd95e]
+ ld b, a
+ ld a, [wd9f8]
+ and a
+ ld a, NUM_POKEMON - 1
+ jr z, .asm_2852d
+ ld a, NUM_POKEMON
+.asm_2852d
+ ld d, a
+ ld a, [wCurPokedexIndex]
+ bit 6, b
+ jr z, .asm_28548
+ and a
+ jr z, .asm_285a9
+ dec a
+ ld [wCurPokedexIndex], a
+ ld a, $4
+ ld [wd95c], a
+ ld a, $1
+ ld [wd95f], a
+ jr .asm_285a9
+
+.asm_28548
+ bit 7, b
+ jr z, .asm_2855f
+ inc a
+ cp d
+ jr z, .asm_285a9
+ ld [wCurPokedexIndex], a
+ ld a, $4
+ ld [wd95c], a
+ ld a, $1
+ ld [wd95f], a
+ jr .asm_285a9
+
+.asm_2855f
+ ld a, d
+ sub $9
+ ld d, a
+ ld a, [wPokedexOffset]
+ ld c, $5
+ bit 5, b
+ jr z, .asm_28586
+ cp $5
+ jr nc, .asm_28571
+ ld c, a
+.asm_28571
+ sub c
+ ld [wPokedexOffset], a
+ ld a, [wCurPokedexIndex]
+ sub c
+ ld [wCurPokedexIndex], a
+ ld a, $1
+ ld [wd95f], a
+ call Func_285ca
+ jr .asm_285aa
+
+.asm_28586
+ bit 4, b
+ jr z, .asm_285ae
+ cp d
+ jr c, .asm_28594
+ push af
+ cpl
+ add d
+ add $5
+ ld c, a
+ pop af
+.asm_28594
+ add c
+ ld [wPokedexOffset], a
+ ld a, [wCurPokedexIndex]
+ add c
+ ld [wCurPokedexIndex], a
+ ld a, $1
+ ld [wd95f], a
+ call Func_285ca
+ jr .asm_285aa
+
+.asm_285a9
+ xor a
+.asm_285aa
+ ld [wd95e], a
+ ret
+
+.asm_285ae
+ ld a, [wd95f]
+ and a
+ ret z
+ lb de, $00, $03
+ call PlaySoundEffect
+ call Func_28931
+ call Func_289c8
+ call Func_28a15
+ call Func_28add
+ xor a
+ ld [wd95f], a
+ ret
+
+Func_285ca: ; 0x285ca
+ xor a
+ ld [wd80a], a
+ call Func_28972
+ call Func_28a8a
+ call Func_28ad1
+ ld a, [wd80a]
+ ret
+
+Func_285db: ; 0x285db
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld hl, wPokedexFlags
+ add hl, bc
+ bit 1, [hl] ; has pokemon been seen or captured?
+ call nz, Func_287e7
+ ld bc, $8c38
+ ld a, $64
+ call LoadOAMData
+ ld bc, vTilesSH tile $04
+ ld a, $65
+ call LoadOAMData
+ ld bc, $8888
+ ld a, $66
+ call LoadOAMData
+ call DrawCornerInfoPokedexScreen
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld hl, DexScrollBarOffsets
+ add hl, bc
+ ld a, [hl]
+ add $49
+ ld c, a
+ ld b, $90
+ ld a, [wd95b]
+ srl a
+ srl a
+ and $3
+ ld e, a
+ ld d, $0
+ ld hl, DexScrollBarOAMIds
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ld a, [wCurPokedexIndex]
+ ld hl, wPokedexOffset
+ sub [hl]
+ jr nc, .asm_2863b
+ dec [hl]
+ ld a, $1
+ ld [wd95d], a
+ xor a
+ jr .asm_28647
+
+.asm_2863b
+ cp $5
+ jr c, .asm_28647
+ ld a, $1
+ ld [wd95d], a
+ inc [hl]
+ ld a, $4
+.asm_28647
+ ld c, a
+ push bc
+ ld a, [hJoypadState]
+ and a
+ ld a, [wd95b]
+ jr z, .asm_28652
+ xor a
+.asm_28652
+ inc a
+ ld [wd95b], a
+ bit 3, a
+ jr nz, .asm_28667
+ swap c
+ ld a, c
+ add $40
+ ld c, a
+ ld b, $10
+ ld a, $63
+ call LoadOAMData
+.asm_28667
+ pop bc
+ ld a, [wd95c]
+ and a
+ ret z
+ dec a
+ ld [wd95c], a
+ sla a
+ ld e, a
+ ld d, $0
+ push hl
+ ld hl, PointerTable_2867f
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+PointerTable_2867f: ; 0x2867f
+ dw Func_286dd
+ dw Func_28721
+ dw Func_286dd
+ dw Func_28765
+
+DexScrollBarOAMIds:
+ db $67, $68, $69, $68
+
+DrawCornerInfoPokedexScreen: ; 0x2868b
+; If player is holding SELECT button, it draws the seen/own count in the top-right corner.
+; Otherwise, it draws the word "POKeDEX".
+ ld a, [hJoypadState]
+ bit BIT_SELECT, a
+ jr z, .asm_286c8
+ ld bc, $6d03
+ ld a, [wNumPokemonSeen + 1]
+ call LoadSeenOwnDigitOAM
+ ld a, [wNumPokemonSeen]
+ swap a
+ call LoadSeenOwnDigitOAM
+ ld a, [wNumPokemonSeen]
+ call LoadSeenOwnDigitOAM
+ ld bc, $8202
+ ld a, $76
+ call LoadOAMData ; draws the "/" between the seen/owned numbers
+ ld bc, $8703
+ ld a, [wNumPokemonOwned + 1]
+ call LoadSeenOwnDigitOAM
+ ld a, [wNumPokemonOwned]
+ swap a
+ call LoadSeenOwnDigitOAM
+ ld a, [wNumPokemonOwned]
+ call LoadSeenOwnDigitOAM
+ ret
+
+.asm_286c8
+ ld bc, $6800
+ ld a, $6a
+ call LoadOAMData
+ ret
+
+LoadSeenOwnDigitOAM: ; 0x286d1
+ and $f
+ add $6c
+ call LoadOAMData
+ ld a, b
+ add $7 ; adds 7 pixels to the next digit's x position on screen
+ ld b, a
+ ret
+
+Func_286dd: ; 0x286dd
+ pop hl
+ ld a, [wd862]
+ and a
+ jr nz, .asm_286ff
+ push bc
+ push hl
+ ld a, [wd863]
+ ld e, a
+ ld a, [wd864]
+ ld d, a
+ ld hl, wc010
+ xor a
+ ld bc, $00a0
+ call LoadOrCopyVRAMData
+ ld a, $1
+ ld [wd862], a
+ pop hl
+ pop bc
+.asm_286ff
+ ld a, [wd95d]
+ and a
+ ret z
+ ld a, [wd95c]
+ and a
+ jr nz, .asm_2870d
+ ld [wd95d], a
+.asm_2870d
+ ld a, c
+ and a
+ jr nz, .asm_28719
+ ld hl, hNextFrameHBlankSCX
+ dec [hl]
+ dec [hl]
+ dec [hl]
+ dec [hl]
+ ret
+
+.asm_28719
+ ld hl, hNextFrameHBlankSCX
+ inc [hl]
+ inc [hl]
+ inc [hl]
+ inc [hl]
+ ret
+
+Func_28721: ; 0x28721
+ pop hl
+ ld a, [wd95d]
+ and a
+ ret z
+ ld a, c
+ and a
+ jr nz, .asm_28747
+ ld a, [hl]
+ push af
+ sla a
+ and $1e
+ ld c, a
+ ld b, $0
+ ld hl, BGMapLocations_287c7
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop af
+ call Func_28aaa
+ ld hl, hNextFrameHBlankSCX
+ dec [hl]
+ dec [hl]
+ dec [hl]
+ dec [hl]
+ ret
+
+.asm_28747
+ ld a, [hl]
+ add $5
+ push af
+ sla a
+ and $1e
+ ld c, a
+ ld b, $0
+ ld hl, BGMapLocations_287c7
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop af
+ call Func_28aaa
+ ld hl, hNextFrameHBlankSCX
+ inc [hl]
+ inc [hl]
+ inc [hl]
+ inc [hl]
+ ret
+
+Func_28765: ; 0x28765
+ pop hl
+ ld a, [wd95d]
+ and a
+ ret z
+ ld a, c
+ and a
+ jr nz, .asm_28791
+ push hl
+ ld a, [hl]
+ sla a
+ and $e
+ ld c, a
+ ld b, $0
+ ld hl, TileLocations_287b7
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld hl, hNextFrameHBlankSCX
+ dec [hl]
+ dec [hl]
+ dec [hl]
+ dec [hl]
+ pop hl
+ xor a
+ ld [wd862], a
+ ld a, [hl]
+ call Func_28993
+ ret
+
+.asm_28791
+ push hl
+ ld a, [hl]
+ add $5
+ sla a
+ and $e
+ ld c, a
+ ld b, $0
+ ld hl, TileLocations_287b7
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld hl, hNextFrameHBlankSCX
+ inc [hl]
+ inc [hl]
+ inc [hl]
+ inc [hl]
+ pop hl
+ xor a
+ ld [wd862], a
+ ld a, [hl]
+ add $5
+ call Func_28993
+ ret
+
+TileLocations_287b7:
+ dw vTilesOB tile $0
+ dw vTilesOB tile $A
+ dw vTilesOB tile $14
+ dw vTilesOB tile $1E
+ dw vTilesOB tile $28
+ dw vTilesOB tile $32
+ dw vTilesOB tile $3C
+ dw vTilesOB tile $46
+
+BGMapLocations_287c7:
+ dw vBGWin + $7
+ dw vBGWin + $47
+ dw vBGWin + $87
+ dw vBGWin + $C7
+ dw vBGWin + $107
+ dw vBGWin + $147
+ dw vBGWin + $187
+ dw vBGWin + $1C7
+ dw vBGWin + $207
+ dw vBGWin + $247
+ dw vBGWin + $287
+ dw vBGWin + $2C7
+ dw vBGWin + $307
+ dw vBGWin + $347
+ dw vBGWin + $387
+ dw vBGWin + $3C7
+
+Func_287e7: ; 0x287e7
+ ld a, [wd960]
+ and a
+ ret z
+ ld a, [wd95f]
+ and a
+ ret nz
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld hl, MonAnimatedSpriteTypes
+ add hl, bc
+ ld a, Bank(MonAnimatedSpriteTypes)
+ call ReadByteFromBank
+ bit 7, a
+ ret nz
+ ld [wd5bc], a
+ call Func_28815
+ ld a, [wd5bd]
+ add $a5
+ ld bc, $2030
+ call LoadOAMData
+ ret
diff --git a/main.asm b/main.asm
index 3bc7ec3..39461d4 100755
--- a/main.asm
+++ b/main.asm
@@ -33942,1195 +33942,7 @@ INCLUDE "engine/pinball_game/draw_sprites/draw_seel_bonus_sprites.asm"
SECTION "banka", ROMX, BANK[$a]
-HandlePokedexScreen: ; 0x28000
- ld a, [wScreenState]
- rst JumpTable ; calls JumpToFuncInTable
-PointerTable_28004: ; 0x28004
- dw LoadPokedexScreen
- dw MainPokedexScreen
- dw MonInfoPokedexScreen
- dw Func_282e9 ; not sure if this is used ever...
- dw ExitPokedexScreen
-
-LoadPokedexScreen: ; 0x2800e
- ld a, $23
- ld [hLCDC], a
- ld a, $e4
- ld [wBGP], a
- ld a, $93
- ld [wOBP0], a
- ld a, $e4
- ld [wOBP1], a
- xor a
- ld [hSCX], a
- ld a, $8
- ld [hSCY], a
- ld a, $7
- ld [hWX], a
- ld a, $8c
- ld [hWY], a
- ld a, $3b
- ld [hLYC], a
- ld [hLastLYC], a
- ld [hNextLYCSub], a
- ld [hLYCSub], a
- ld hl, hSTAT
- set 6, [hl]
- ld hl, rIE
- set 1, [hl]
- ld a, $2
- ld [hHBlankRoutine], a
- ld hl, PointerTable_280a2
- ld a, [hGameBoyColorFlag]
- call LoadVideoData
- xor a
- ld [wCurPokedexIndex], a
- ld [wPokedexOffset], a
- ld [wd95b], a
- ld [wd95c], a
- ld [wd960], a
- ld [wd961], a
- ld [wd95e], a
- ld a, $1
- ld [wd862], a
- call ClearOAMBuffer
- call Func_285db
- call Func_28931
- call Func_289c8
- call Func_28a15
- call Func_28972
- call Func_28a8a
- call Func_28ad1
- call Func_28add
- call CountNumSeenOwnedMons
- call Func_b66
- ld a, $f
- call SetSongBank
- ld de, $0004
- call PlaySong
- call Func_588
- call Func_bbe
- ld hl, wScreenState
- inc [hl]
- ret
-
-PointerTable_280a2: ; 0x280a2
- dw Data_280a6
- dw Data_280c4
-
-Data_280a6: ; 0x280a6
- dab PokedexInitialGfx
- dw vTilesOB
- dw $6000
- dab PokedexTilemap2
- dw $9800
- dw $1000
- dab PokedexTilemap
- dw vBGWin
- dw $800
- dab PokedexTilemap
- dw $9e00
- dw $800
- dw $FFFF ; terminators
-
-Data_280c4: ; 0x280c4
- dab PokedexInitialGfx
- dw vTilesOB
- dw $6000
- dab PokedexTilemap2
- dw $9800
- dw $1000
- dab PokedexBGAttributes2
- dw $9800
- dw $1002
- dab PokedexTilemap
- dw vBGWin
- dw $800
- dab PokedexTilemap
- dw $9e00
- dw $800
- dab PokedexBGAttributes
- dw vBGWin
- dw $802
- dab PokedexBGAttributes
- dw $9e00
- dw $802
- dab PokedexPalettes
- dw $0000
- dw $101
- dw $FFFF ; terminators
-
-MainPokedexScreen: ; 0x280fe
- call Func_28513
- ld a, [hNewlyPressedButtons]
- bit BIT_A_BUTTON, a
- jr z, .asm_28142
- ld a, [wd95f]
- and a
- jp nz, .asm_28174
- ld a, [wCurPokedexIndex]
- ld c, a
- ld b, $0
- ld hl, wPokedexFlags
- add hl, bc
- ld a, [hl]
- and a
- jp z, .asm_28174
- push hl
- ld a, [wCurPokedexIndex]
- inc a
- ld e, a
- ld d, $0
- call PlayCry
- pop hl
- bit 1, [hl]
- jp z, .asm_28174
- call Func_288c6
- call Func_2885c
- call CleanOAMBuffer
- call Func_2887c
- call Func_2885c
- ld hl, wScreenState
- inc [hl]
- ret
-
-.asm_28142
- bit BIT_B_BUTTON, a
- jr z, .asm_2814f
- call Func_285db
- ld a, $4
- ld [wScreenState], a
- ret
-
-.asm_2814f
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_28174
- ld a, [hJoypadState]
- bit BIT_START, a
- jr z, .asm_28168
- ld a, [wd960]
- and a
- ld a, $ff
- ld [wd960], a
- call z, Func_28add
- jr .asm_28174
-
-.asm_28168
- ld a, [wd960]
- and a
- ld a, $0
- ld [wd960], a
- call nz, Func_28add
-.asm_28174
- call Func_285db
- ret
-
-MonInfoPokedexScreen: ; 0x28178
- ld a, [wd956]
- bit 0, a
- jr z, .asm_28190
- ld a, [hNewlyPressedButtons]
- bit BIT_A_BUTTON, a
- jr z, .asm_2818a
- call Func_28912
- jr .asm_281a2
-
-.asm_2818a
- bit 1, a
- jr z, .asm_281a2
- jr .asm_28196
-
-.asm_28190
- ld a, [hNewlyPressedButtons]
- and $3
- jr z, .asm_281a2
-.asm_28196
- call Func_288a2
- call Func_285db
- ld a, $1
- ld [wScreenState], a
- ret
-
-.asm_281a2
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_281c7
- ld a, [hJoypadState]
- bit BIT_START, a
- jr z, .asm_281bb
- ld a, [wd960]
- and a
- ld a, $ff
- ld [wd960], a
- call z, Func_28add
- jr .asm_281c7
-
-.asm_281bb
- ld a, [wd960]
- and a
- ld a, $0
- ld [wd960], a
- call nz, Func_28add
-.asm_281c7
- call Func_2885c
- ret
-
-Func_281cb:
- ld a, [wCurPokedexIndex]
- ld c, a
- ld b, $0
- sla c
- rl b
- add c
- ld c, a
- jr nc, .asm_281da
- inc b
-.asm_281da
- ld a, [wd960]
- and a
- jr nz, .asm_281fb
- ld hl, MonBillboardPalettePointers
- add hl, bc
- ld a, BANK(MonBillboardPalettePointers)
- call ReadByteFromBank
- inc hl
- ld e, a
- ld a, BANK(MonBillboardPalettePointers)
- call ReadByteFromBank
- inc hl
- ld d, a
- ld a, BANK(MonBillboardPalettePointers)
- call ReadByteFromBank
- ld [$ff8c], a
- jr .asm_28214
-
-.asm_281fb
- ld hl, MonAnimatedPalettePointers
- add hl, bc
- ld a, BANK(MonAnimatedPalettePointers)
- call ReadByteFromBank
- inc hl
- ld e, a
- ld a, BANK(MonAnimatedPalettePointers)
- call ReadByteFromBank
- inc hl
- ld d, a
- ld a, BANK(MonAnimatedPalettePointers)
- call ReadByteFromBank
- ld [$ff8c], a
-.asm_28214
- ld h, d
- ld l, e
- ld de, wda8a
- ld b, $8
-.asm_2821b
- push bc
- ld a, [$ff8c]
- call ReadByteFromBank
- inc hl
- ld c, a
- ld a, [$ff8c]
- call ReadByteFromBank
- inc hl
- ld b, a
- ld a, c
- and $1f
- ld [de], a
- inc de
- srl b
- rr c
- srl b
- rr c
- srl b
- rr c
- srl b
- rr c
- srl b
- rr c
- ld a, c
- and $1f
- ld [de], a
- inc de
- srl b
- rr c
- srl b
- rr c
- srl b
- rr c
- srl b
- rr c
- srl b
- rr c
- ld a, c
- and $1f
- ld [de], a
- inc de
- pop bc
- dec b
- jr nz, .asm_2821b
- ld hl, VRAMAddresses_28289
- ld de, wda8a
- ld b, $18
-.asm_2826d
- push hl
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [de]
- inc de
- push af
- swap a
- and $f
- call PutTileInVRAM
- inc hl
- pop af
- and $f
- call PutTileInVRAM
- pop hl
- inc hl
- inc hl
- dec b
- jr nz, .asm_2826d
- ret
-
-VRAMAddresses_28289:
- dw vBGWin + $26
- dw vBGWin + $2B
- dw vBGWin + $30
- dw vBGWin + $46
- dw vBGWin + $4B
- dw vBGWin + $50
- dw vBGWin + $66
- dw vBGWin + $6B
- dw vBGWin + $70
- dw vBGWin + $86
- dw vBGWin + $8B
- dw vBGWin + $90
- dw vBGWin + $C6
- dw vBGWin + $CB
- dw vBGWin + $D0
- dw vBGWin + $E6
- dw vBGWin + $EB
- dw vBGWin + $F0
- dw vBGWin + $106
- dw vBGWin + $10B
- dw vBGWin + $110
- dw vBGWin + $126
- dw vBGWin + $12B
- dw vBGWin + $130
-
-OAMOffsetsTable_282b9:
-; y, x coordinates
- db $40, $18
- db $40, $40
- db $40, $68
- db $48, $18
- db $48, $40
- db $48, $68
- db $50, $18
- db $50, $40
- db $50, $68
- db $58, $18
- db $58, $40
- db $58, $68
- db $68, $18
- db $68, $40
- db $68, $68
- db $70, $18
- db $70, $40
- db $70, $68
- db $78, $18
- db $78, $40
- db $78, $68
- db $80, $18
- db $80, $40
- db $80, $68
-
-Func_282e9: ; 0x282e9
- ld a, [wd960]
- and a
- jr z, .asm_28318
- ld a, [wCurPokedexIndex]
- ld c, a
- ld b, $0
- ld hl, MonAnimatedSpriteTypes
- add hl, bc
- ld a, Bank(MonAnimatedSpriteTypes)
- call ReadByteFromBank
- ld c, a
- ld a, [hNumFramesDropped]
- swap a
- and $7
- cp $7
- jr z, .asm_2830d
- and $1
- jr .asm_2830f
-
-.asm_2830d
- ld a, $2
-.asm_2830f
- add c
- add $a5
- ld bc, $2030
- call LoadOAMData
-.asm_28318
- ld a, [wdaa2]
- sla a
- ld c, a
- ld b, $0
- ld hl, OAMOffsetsTable_282b9
- add hl, bc
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, $63
- call LoadOAMData
- call Func_28368
- ld a, [hNewlyPressedButtons]
- and $6
- jr z, .asm_28367
- ld a, BANK(PokedexTilemap)
- ld hl, PokedexTilemap
- ld de, vBGWin
- ld bc, $0200
- call LoadVRAMData
- ld a, $1
- ld [rVBK], a
- ld a, BANK(PokedexBGAttributes)
- ld hl, PokedexBGAttributes
- ld de, vBGWin
- ld bc, $0200
- call LoadVRAMData
- xor a
- ld [rVBK], a
- call Func_28972
- call Func_28a8a
- call Func_28ad1
- ld a, $1
- ld [wScreenState], a
-.asm_28367
- ret
-
-Func_28368: ; 0x28368
- ld a, [hJoypadState]
- bit BIT_A_BUTTON, a
- jr nz, .asm_28371
- jp Func_284bc
-
-.asm_28371
- ld a, [hPressedButtons]
- ld b, a
- ld a, [wdaa2]
- ld e, a
- ld d, $0
- ld hl, wda8a
- add hl, de
- ld a, [hl]
- bit 5, b
- jr z, .asm_28386
- dec a
- jr .asm_2838a
-
-.asm_28386
- bit 4, b
- ret z
- inc a
-.asm_2838a
- and $1f
- ld [hl], a
- push af
- sla e
- rl d
- ld hl, VRAMAddresses_28289
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- pop af
- push af
- swap a
- and $f
- call PutTileInVRAM
- inc hl
- pop af
- and $f
- call PutTileInVRAM
- ld hl, Data_2842c
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [hld]
- ld c, a
- ld b, $0
- sla c
- rl b
- sla c
- rl b
- sla c
- rl b
- sla c
- rl b
- sla c
- rl b
- ld a, [hld]
- or c
- ld c, a
- sla c
- rl b
- sla c
- rl b
- sla c
- rl b
- sla c
- rl b
- sla c
- rl b
- ld a, [hl]
- or c
- ld c, a
- ld a, [wd960]
- and a
- jr nz, .asm_283ff
- ld hl, BGPaletteIndices_2845c
- add hl, de
- ld a, [hl]
- ld hl, rBGPI
- call PutTileInVRAM
- ld hl, rBGPD
- ld a, c
- call PutTileInVRAM
- ld a, b
- call PutTileInVRAM
- ret
-
-.asm_283ff
- ld hl, BGPaletteIndices_2845c
- add hl, de
- ld a, [hl]
- ld hl, rBGPI
- call PutTileInVRAM
- ld hl, rBGPD
- ld a, c
- call PutTileInVRAM
- ld a, b
- call PutTileInVRAM
- ld hl, SpritePaletteIndices_2848c
- add hl, de
- ld a, [hl]
- ld hl, rOBPI
- call PutTileInVRAM
- ld hl, rOBPD
- ld a, c
- call PutTileInVRAM
- ld a, b
- call PutTileInVRAM
- ret
-
-Data_2842c:
- dw wda8c
- dw wda8c
- dw wda8c
- dw wda8f
- dw wda8f
- dw wda8f
- dw wda92
- dw wda92
- dw wda92
- dw wda95
- dw wda95
- dw wda95
- dw wda98
- dw wda98
- dw wda98
- dw wda9b
- dw wda9b
- dw wda9b
- dw wda9e
- dw wda9e
- dw wda9e
- dw wdaa1
- dw wdaa1
- dw wdaa1
-
-BGPaletteIndices_2845c:
-; second byte is unused
- db $30 | $80, $00
- db $30 | $80, $00
- db $30 | $80, $00
- db $32 | $80, $00
- db $32 | $80, $00
- db $32 | $80, $00
- db $34 | $80, $00
- db $34 | $80, $00
- db $34 | $80, $00
- db $36 | $80, $00
- db $36 | $80, $00
- db $36 | $80, $00
- db $38 | $80, $00
- db $38 | $80, $00
- db $38 | $80, $00
- db $3A | $80, $00
- db $3A | $80, $00
- db $3A | $80, $00
- db $3C | $80, $00
- db $3C | $80, $00
- db $3C | $80, $00
- db $3E | $80, $00
- db $3E | $80, $00
- db $3E | $80, $00
-
-SpritePaletteIndices_2848c:
- db $D8, $00
- db $D8, $00
- db $D8, $00
- db $DA, $00
- db $DA, $00
- db $DA, $00
- db $DC, $00
- db $DC, $00
- db $DC, $00
- db $DE, $00
- db $DE, $00
- db $DE, $00
- db $E8, $00
- db $E8, $00
- db $E8, $00
- db $EA, $00
- db $EA, $00
- db $EA, $00
- db $EC, $00
- db $EC, $00
- db $EC, $00
- db $EE, $00
- db $EE, $00
- db $EE, $00
-
-Func_284bc: ; 0x284bc
- ld a, [hPressedButtons]
- ld b, a
- ld a, [wdaa2]
- bit 5, b
- jr z, .asm_284cd
- dec a
- bit 7, a
- jr nz, .asm_284ef
- jr .asm_284f5
-
-.asm_284cd
- bit 4, b
- jr z, .asm_284d8
- inc a
- cp $18
- jr nc, .asm_284f3
- jr .asm_284f5
-
-.asm_284d8
- bit 6, b
- jr z, .asm_284e4
- sub $3
- bit 7, a
- jr nz, .asm_284ef
- jr .asm_284f5
-
-.asm_284e4
- bit 7, b
- ret z
- add $3
- cp $18
- jr nc, .asm_284f3
- jr .asm_284f5
-
-.asm_284ef
- add $18
- jr .asm_284f5
-
-.asm_284f3
- sub $18
-.asm_284f5
- ld [wdaa2], a
- ret
-
-ExitPokedexScreen: ; 0x284f9
- call Func_cb5
- call Func_576
- ld hl, hSTAT
- res 6, [hl]
- ld hl, rIE
- res 1, [hl]
- ld a, SCREEN_TITLESCREEN
- ld [wCurrentScreen], a
- xor a
- ld [wScreenState], a
- ret
-
-Func_28513: ; 0x28513
- ld a, [hPressedButtons]
- ld hl, wd95e
- or [hl]
- ld [hl], a
- ld a, [wd95c]
- and a
- ret nz
- ld a, [wd95e]
- ld b, a
- ld a, [wd9f8]
- and a
- ld a, NUM_POKEMON - 1
- jr z, .asm_2852d
- ld a, NUM_POKEMON
-.asm_2852d
- ld d, a
- ld a, [wCurPokedexIndex]
- bit 6, b
- jr z, .asm_28548
- and a
- jr z, .asm_285a9
- dec a
- ld [wCurPokedexIndex], a
- ld a, $4
- ld [wd95c], a
- ld a, $1
- ld [wd95f], a
- jr .asm_285a9
-
-.asm_28548
- bit 7, b
- jr z, .asm_2855f
- inc a
- cp d
- jr z, .asm_285a9
- ld [wCurPokedexIndex], a
- ld a, $4
- ld [wd95c], a
- ld a, $1
- ld [wd95f], a
- jr .asm_285a9
-
-.asm_2855f
- ld a, d
- sub $9
- ld d, a
- ld a, [wPokedexOffset]
- ld c, $5
- bit 5, b
- jr z, .asm_28586
- cp $5
- jr nc, .asm_28571
- ld c, a
-.asm_28571
- sub c
- ld [wPokedexOffset], a
- ld a, [wCurPokedexIndex]
- sub c
- ld [wCurPokedexIndex], a
- ld a, $1
- ld [wd95f], a
- call Func_285ca
- jr .asm_285aa
-
-.asm_28586
- bit 4, b
- jr z, .asm_285ae
- cp d
- jr c, .asm_28594
- push af
- cpl
- add d
- add $5
- ld c, a
- pop af
-.asm_28594
- add c
- ld [wPokedexOffset], a
- ld a, [wCurPokedexIndex]
- add c
- ld [wCurPokedexIndex], a
- ld a, $1
- ld [wd95f], a
- call Func_285ca
- jr .asm_285aa
-
-.asm_285a9
- xor a
-.asm_285aa
- ld [wd95e], a
- ret
-
-.asm_285ae
- ld a, [wd95f]
- and a
- ret z
- lb de, $00, $03
- call PlaySoundEffect
- call Func_28931
- call Func_289c8
- call Func_28a15
- call Func_28add
- xor a
- ld [wd95f], a
- ret
-
-Func_285ca: ; 0x285ca
- xor a
- ld [wd80a], a
- call Func_28972
- call Func_28a8a
- call Func_28ad1
- ld a, [wd80a]
- ret
-
-Func_285db: ; 0x285db
- ld a, [wCurPokedexIndex]
- ld c, a
- ld b, $0
- ld hl, wPokedexFlags
- add hl, bc
- bit 1, [hl] ; has pokemon been seen or captured?
- call nz, Func_287e7
- ld bc, $8c38
- ld a, $64
- call LoadOAMData
- ld bc, vTilesSH tile $04
- ld a, $65
- call LoadOAMData
- ld bc, $8888
- ld a, $66
- call LoadOAMData
- call DrawCornerInfoPokedexScreen
- ld a, [wCurPokedexIndex]
- ld c, a
- ld b, $0
- ld hl, DexScrollBarOffsets
- add hl, bc
- ld a, [hl]
- add $49
- ld c, a
- ld b, $90
- ld a, [wd95b]
- srl a
- srl a
- and $3
- ld e, a
- ld d, $0
- ld hl, DexScrollBarOAMIds
- add hl, de
- ld a, [hl]
- call LoadOAMData
- ld a, [wCurPokedexIndex]
- ld hl, wPokedexOffset
- sub [hl]
- jr nc, .asm_2863b
- dec [hl]
- ld a, $1
- ld [wd95d], a
- xor a
- jr .asm_28647
-
-.asm_2863b
- cp $5
- jr c, .asm_28647
- ld a, $1
- ld [wd95d], a
- inc [hl]
- ld a, $4
-.asm_28647
- ld c, a
- push bc
- ld a, [hJoypadState]
- and a
- ld a, [wd95b]
- jr z, .asm_28652
- xor a
-.asm_28652
- inc a
- ld [wd95b], a
- bit 3, a
- jr nz, .asm_28667
- swap c
- ld a, c
- add $40
- ld c, a
- ld b, $10
- ld a, $63
- call LoadOAMData
-.asm_28667
- pop bc
- ld a, [wd95c]
- and a
- ret z
- dec a
- ld [wd95c], a
- sla a
- ld e, a
- ld d, $0
- push hl
- ld hl, PointerTable_2867f
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-
-PointerTable_2867f: ; 0x2867f
- dw Func_286dd
- dw Func_28721
- dw Func_286dd
- dw Func_28765
-
-DexScrollBarOAMIds:
- db $67, $68, $69, $68
-
-DrawCornerInfoPokedexScreen: ; 0x2868b
-; If player is holding SELECT button, it draws the seen/own count in the top-right corner.
-; Otherwise, it draws the word "POKeDEX".
- ld a, [hJoypadState]
- bit BIT_SELECT, a
- jr z, .asm_286c8
- ld bc, $6d03
- ld a, [wNumPokemonSeen + 1]
- call LoadSeenOwnDigitOAM
- ld a, [wNumPokemonSeen]
- swap a
- call LoadSeenOwnDigitOAM
- ld a, [wNumPokemonSeen]
- call LoadSeenOwnDigitOAM
- ld bc, $8202
- ld a, $76
- call LoadOAMData ; draws the "/" between the seen/owned numbers
- ld bc, $8703
- ld a, [wNumPokemonOwned + 1]
- call LoadSeenOwnDigitOAM
- ld a, [wNumPokemonOwned]
- swap a
- call LoadSeenOwnDigitOAM
- ld a, [wNumPokemonOwned]
- call LoadSeenOwnDigitOAM
- ret
-
-.asm_286c8
- ld bc, $6800
- ld a, $6a
- call LoadOAMData
- ret
-
-LoadSeenOwnDigitOAM: ; 0x286d1
- and $f
- add $6c
- call LoadOAMData
- ld a, b
- add $7 ; adds 7 pixels to the next digit's x position on screen
- ld b, a
- ret
-
-Func_286dd: ; 0x286dd
- pop hl
- ld a, [wd862]
- and a
- jr nz, .asm_286ff
- push bc
- push hl
- ld a, [wd863]
- ld e, a
- ld a, [wd864]
- ld d, a
- ld hl, wc010
- xor a
- ld bc, $00a0
- call LoadOrCopyVRAMData
- ld a, $1
- ld [wd862], a
- pop hl
- pop bc
-.asm_286ff
- ld a, [wd95d]
- and a
- ret z
- ld a, [wd95c]
- and a
- jr nz, .asm_2870d
- ld [wd95d], a
-.asm_2870d
- ld a, c
- and a
- jr nz, .asm_28719
- ld hl, hNextFrameHBlankSCX
- dec [hl]
- dec [hl]
- dec [hl]
- dec [hl]
- ret
-
-.asm_28719
- ld hl, hNextFrameHBlankSCX
- inc [hl]
- inc [hl]
- inc [hl]
- inc [hl]
- ret
-
-Func_28721: ; 0x28721
- pop hl
- ld a, [wd95d]
- and a
- ret z
- ld a, c
- and a
- jr nz, .asm_28747
- ld a, [hl]
- push af
- sla a
- and $1e
- ld c, a
- ld b, $0
- ld hl, BGMapLocations_287c7
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- pop af
- call Func_28aaa
- ld hl, hNextFrameHBlankSCX
- dec [hl]
- dec [hl]
- dec [hl]
- dec [hl]
- ret
-
-.asm_28747
- ld a, [hl]
- add $5
- push af
- sla a
- and $1e
- ld c, a
- ld b, $0
- ld hl, BGMapLocations_287c7
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- pop af
- call Func_28aaa
- ld hl, hNextFrameHBlankSCX
- inc [hl]
- inc [hl]
- inc [hl]
- inc [hl]
- ret
-
-Func_28765: ; 0x28765
- pop hl
- ld a, [wd95d]
- and a
- ret z
- ld a, c
- and a
- jr nz, .asm_28791
- push hl
- ld a, [hl]
- sla a
- and $e
- ld c, a
- ld b, $0
- ld hl, TileLocations_287b7
- add hl, bc
- ld a, [hli]
- ld e, a
- ld a, [hli]
- ld d, a
- ld hl, hNextFrameHBlankSCX
- dec [hl]
- dec [hl]
- dec [hl]
- dec [hl]
- pop hl
- xor a
- ld [wd862], a
- ld a, [hl]
- call Func_28993
- ret
-
-.asm_28791
- push hl
- ld a, [hl]
- add $5
- sla a
- and $e
- ld c, a
- ld b, $0
- ld hl, TileLocations_287b7
- add hl, bc
- ld a, [hli]
- ld e, a
- ld a, [hli]
- ld d, a
- ld hl, hNextFrameHBlankSCX
- inc [hl]
- inc [hl]
- inc [hl]
- inc [hl]
- pop hl
- xor a
- ld [wd862], a
- ld a, [hl]
- add $5
- call Func_28993
- ret
-
-TileLocations_287b7:
- dw vTilesOB tile $0
- dw vTilesOB tile $A
- dw vTilesOB tile $14
- dw vTilesOB tile $1E
- dw vTilesOB tile $28
- dw vTilesOB tile $32
- dw vTilesOB tile $3C
- dw vTilesOB tile $46
-
-BGMapLocations_287c7:
- dw vBGWin + $7
- dw vBGWin + $47
- dw vBGWin + $87
- dw vBGWin + $C7
- dw vBGWin + $107
- dw vBGWin + $147
- dw vBGWin + $187
- dw vBGWin + $1C7
- dw vBGWin + $207
- dw vBGWin + $247
- dw vBGWin + $287
- dw vBGWin + $2C7
- dw vBGWin + $307
- dw vBGWin + $347
- dw vBGWin + $387
- dw vBGWin + $3C7
-
-Func_287e7: ; 0x287e7
- ld a, [wd960]
- and a
- ret z
- ld a, [wd95f]
- and a
- ret nz
- ld a, [wCurPokedexIndex]
- ld c, a
- ld b, $0
- ld hl, MonAnimatedSpriteTypes
- add hl, bc
- ld a, Bank(MonAnimatedSpriteTypes)
- call ReadByteFromBank
- bit 7, a
- ret nz
- ld [wd5bc], a
- call Func_28815
- ld a, [wd5bd]
- add $a5
- ld bc, $2030
- call LoadOAMData
- ret
+INCLUDE "engine/pokedex.asm"
Func_28815: ; 0x28815
ld a, [wd5be]