diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-06-30 18:57:42 -0700 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2017-06-30 18:57:42 -0700 |
commit | edbefc01a6b62ef8a2bf8037a863a39d97aabf7e (patch) | |
tree | 0620ac2c0f387532850653cbed930675af14a4dd | |
parent | c1ac42bef721d196679abd041fe8f55b3d7d4dc7 (diff) |
Move Pokedex routines into their own file
-rwxr-xr-x | engine/pinball_game/ball_gfx.asm (renamed from engine/ball_gfx.asm) | 0 | ||||
-rwxr-xr-x | engine/pokedex.asm | 1189 | ||||
-rwxr-xr-x | main.asm | 1190 |
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
@@ -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] |