diff options
-rwxr-xr-x | engine/pokedex.asm | 1205 | ||||
-rwxr-xr-x | main.asm | 1205 |
2 files changed, 1205 insertions, 1205 deletions
diff --git a/engine/pokedex.asm b/engine/pokedex.asm index 0ff6819..69af64c 100755 --- a/engine/pokedex.asm +++ b/engine/pokedex.asm @@ -1187,3 +1187,1208 @@ Func_287e7: ; 0x287e7 ld bc, $2030
call LoadOAMData
ret
+
+Func_28815: ; 0x28815
+ ld a, [wd5be]
+ dec a
+ ld [wd5be], a
+ ret nz
+ ld a, [wBallHitWildMon]
+ inc a
+ and $7
+ ld [wBallHitWildMon], a
+ jr nz, .asm_28836
+ ld a, [wd5c3]
+ ld [wd5be], a
+ xor a
+ ld [wd5c4], a
+ ld c, $2
+ jr .asm_28854
+
+.asm_28836
+ ld a, [wd5bc]
+ ld c, a
+ ld a, [wd5bd]
+ sub c
+ cp $1
+ ld c, $0
+ jr nc, .asm_28846
+ ld c, $1
+.asm_28846
+ ld b, $0
+ ld hl, wd5c1
+ add hl, bc
+ ld a, [hl]
+ ld [wd5be], a
+ xor a
+ ld [wd5c4], a
+.asm_28854
+ ld a, [wd5bc]
+ add c
+ ld [wd5bd], a
+ ret
+
+Func_2885c: ; 0x2885c
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld hl, wPokedexFlags
+ add hl, bc
+ bit 1, [hl]
+ call nz, Func_287e7
+ ld bc, $8888
+ ld a, $66
+ call LoadOAMData
+ ld bc, $6800
+ ld a, $6a
+ call LoadOAMData
+ ret
+
+Func_2887c: ; 0x2887c
+ ld a, BANK(PokedexTilemap2)
+ ld hl, PokedexTilemap2 + $120
+ deCoord 0, 8, vBGMap
+ ld bc, $0100
+ call LoadVRAMData
+ ld a, $3f
+ ld [hLYC], a
+ ld a, $47
+ ld [hNextLYCSub], a
+ ld b, $33
+.asm_28894
+ push bc
+ ld a, $7a
+ sub b
+ ld [hNextLYCSub], a
+ rst AdvanceFrame
+ pop bc
+ dec b
+ dec b
+ dec b
+ jr nz, .asm_28894
+ ret
+
+Func_288a2: ; 0x288a2
+ ld b, $33
+.asm_288a4
+ push bc
+ ld a, $44
+ add b
+ ld [hNextLYCSub], a
+ rst AdvanceFrame
+ pop bc
+ dec b
+ dec b
+ dec b
+ jr nz, .asm_288a4
+ ld a, $3b
+ ld [hLYC], a
+ ld [hNextLYCSub], a
+ ld a, BANK(PokedexTilemap2)
+ ld hl, PokedexTilemap2 + $100
+ deCoord 0, 8, vBGMap
+ ld bc, $0020
+ call LoadVRAMData
+ ret
+
+Func_288c6: ; 0x288c6
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld hl, wPokedexFlags
+ add hl, bc
+ bit 1, [hl]
+ ld hl, Unknown_2c000
+ jr z, .asm_288f4
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ sla c
+ rl b
+ ld hl, PokedexDescriptionPointers
+ add hl, bc
+ ld a, BANK(PokedexDescriptionPointers)
+ call ReadByteFromBank
+ inc hl
+ ld c, a
+ ld a, BANK(PokedexDescriptionPointers)
+ call ReadByteFromBank
+ ld b, a
+ ld h, b
+ ld l, c
+.asm_288f4
+ xor a
+ ld [wd860], a
+ ld [wd861], a
+ ld bc, $906c
+ ld de, vTilesSH tile $10
+ call Func_28d97
+ rl a
+ ld [wd956], a
+ ld a, l
+ ld [wd957], a
+ ld a, h
+ ld [wd958], a
+ ret
+
+Func_28912: ; 0x28912
+ ld bc, $906c
+ ld de, vTilesSH tile $10
+ ld a, [wd957]
+ ld l, a
+ ld a, [wd958]
+ ld h, a
+ call Func_28d97
+ rl a
+ ld [wd956], a
+ ld a, l
+ ld [wd957], a
+ ld a, h
+ ld [wd958], a
+ ret
+
+Func_28931: ; 0x28931
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld hl, wPokedexFlags
+ add hl, bc
+ ld a, [hl]
+ and a
+ ld hl, BlankDexName
+ jr z, .asm_2895d
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld h, b
+ ld l, c
+ sla l
+ rl h
+ sla l
+ rl h
+ sla l
+ rl h
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ ld bc, MonDexNames
+ add hl, bc
+.asm_2895d
+ ld a, $ff
+ ld [wd860], a
+ xor a
+ ld [wd861], a
+ ld bc, $500a
+ ld de, vTilesBG tile $50
+ call Func_28e09
+ ret
+
+BlankDexName:
+ db " @"
+
+Func_28972: ; 0x28972
+ ld a, [wPokedexOffset]
+ ld c, a
+ ld b, $6
+.asm_28978
+ push bc
+ ld a, c
+ sla a
+ and $e
+ ld e, a
+ ld d, $0
+ ld hl, TileLocations_287b7
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ ld a, c
+ call Func_28993
+ pop bc
+ inc c
+ dec b
+ jr nz, .asm_28978
+ ret
+
+Func_28993: ; 0x28993
+ push hl
+ ld c, a
+ ld b, $0
+ ld hl, wPokedexFlags
+ add hl, bc
+ ld a, [hl]
+ and a
+ ld hl, BlankDexName2
+ jr z, .asm_289b7
+ ld h, b
+ ld l, c
+ sla l
+ rl h
+ sla l
+ rl h
+ sla l
+ rl h
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ ld bc, MonDexNames
+ add hl, bc
+.asm_289b7
+ xor a
+ ld [wd860], a
+ ld [wd861], a
+ ld bc, $500a ; not a pointer
+ call Func_28e09
+ pop hl
+ ret
+
+BlankDexName2:
+ db " @"
+
+Func_289c8: ; 0x289c8
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld hl, wPokedexFlags
+ add hl, bc
+ bit 1, [hl]
+ ld hl, BlankSpeciesName
+ jr z, .pokemonNotOwned
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld hl, MonSpecies
+ add hl, bc
+ ld c, [hl]
+ ld h, b
+ ld l, c
+ sla l
+ rl h
+ sla l
+ rl h
+ sla l
+ rl h
+ add hl, bc
+ add hl, bc
+ add hl, bc ; value * 11
+ sla l
+ rl h
+ add hl, bc ; value * 23
+ ld bc, MonSpeciesNames
+ add hl, bc
+.pokemonNotOwned
+ ld a, $ff
+ ld [wd860], a
+ ld a, $4
+ ld [wd861], a
+ ld bc, $5816
+ ld de, vTilesBG tile $5a
+ call Func_28e09
+ ret
+
+BlankSpeciesName:
+ dw $4081 ; variable-width font character
+ db $00
+
+Func_28a15: ; 0x28a15
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld h, b
+ ld l, c
+ sla l
+ rl h
+ add hl, bc
+ sla l
+ rl h
+ add hl, bc
+ sla l
+ rl h
+ add hl, bc
+ ld bc, PokedexMonAttributesTexts
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, $0
+ ld [wd865], a
+ push de
+ hlCoord 4, 2, vBGMap
+ call Func_28d71
+ pop de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld hl, wPokedexFlags
+ add hl, bc
+ bit 1, [hl]
+ jr nz, .asm_28a54
+ ld de, BlankPokemonTileData_28a7f
+.asm_28a54
+ push de
+ hlCoord 8, 6, vBGMap
+ call Func_28d71
+ pop de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ push de
+ hlCoord 14, 6, vBGMap
+ call Func_28d71
+ pop de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ hlCoord 16, 7, vBGMap
+ ld a, [rLCDC]
+ bit 7, a
+ jr nz, .asm_28a7a
+ ld a, [de]
+ ld [hl], a
+ ret
+
+.asm_28a7a
+ ld a, [de]
+ call PutTileInVRAM
+ ret
+
+BlankPokemonTileData_28a7f:
+ db $FF, $FF, $72, $FF
+ db $00 ; terminator
+
+ db $FF, $FF, $FF, $FF
+ db $00 ; terminator
+
+ db $83 ; tile id
+
+Func_28a8a: ; 0x28a8a
+ ld a, [wPokedexOffset]
+ ld c, a
+ ld b, $6
+.asm_28a90
+ push bc
+ ld a, c
+ sla a
+ and $1e
+ ld e, a
+ ld d, $0
+ ld hl, BGMapLocations_287c7
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, c
+ call Func_28aaa
+ pop bc
+ inc c
+ dec b
+ jr nz, .asm_28a90
+ ret
+
+Func_28aaa: ; 0x28aaa
+ push hl
+ ld c, a
+ ld b, $0
+ ld h, b
+ ld l, c
+ sla l
+ rl h
+ add hl, bc
+ sla l
+ rl h
+ add hl, bc
+ sla l
+ rl h
+ add hl, bc
+ ld bc, PokedexMonAttributesTexts
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, $23
+ ld [wd865], a
+ pop hl
+ push hl
+ call Func_28d71
+ pop hl
+ ret
+
+Func_28ad1: ; 0x28ad1
+ ld a, [wPokedexOffset]
+ swap a
+ and $f0
+ sub $3c
+ ld [hNextFrameHBlankSCX], a
+ ret
+
+Func_28add: ; 0x28add
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld hl, wPokedexFlags
+ add hl, bc
+ ld a, [hl]
+ and a
+ jp z, LoadUncaughtPokemonBackgroundGfx
+ dec a
+ jp z, LoadSeenPokemonGfx
+ ld a, [wd960]
+ and a
+ jr z, .asm_28afc
+ call Func_28cc2
+ jp z, Func_28bf5
+.asm_28afc
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ sla c
+ rl b
+ add c
+ ld c, a
+ jr nc, .asm_28b0b
+ inc b
+.asm_28b0b
+ push bc
+ ld hl, MonBillboardPicPointers
+ add hl, bc
+ ld a, Bank(MonBillboardPicPointers)
+ call ReadByteFromBank
+ inc hl
+ ld c, a
+ ld a, Bank(MonBillboardPicPointers)
+ call ReadByteFromBank
+ inc hl
+ ld b, a
+ ld a, Bank(MonBillboardPicPointers)
+ call ReadByteFromBank
+ ld h, b
+ ld l, c
+ ld de, vTilesBG tile $00
+ ld bc, $0180
+ call LoadOrCopyVRAMData
+ call Func_28cd4
+ pop bc
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret z
+ push bc
+ ld hl, MonBillboardPaletteMapPointers
+ add hl, bc
+ ld a, Bank(MonBillboardPaletteMapPointers)
+ call ReadByteFromBank
+ inc hl
+ ld e, a
+ ld a, Bank(MonBillboardPaletteMapPointers)
+ call ReadByteFromBank
+ inc hl
+ ld d, a
+ ld a, Bank(MonBillboardPaletteMapPointers)
+ call ReadByteFromBank
+ hlCoord 1, 3, vBGMap
+ call LoadBillboardPaletteMap
+ pop bc
+ 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 bc, $10b0
+ ld hl, rBGPI
+ call Func_8e1
+ ret
+
+LoadUncaughtPokemonBackgroundGfx: ; 0x28b76
+ ld a, BANK(UncaughtPokemonBackgroundPic)
+ ld hl, UncaughtPokemonBackgroundPic
+ ld de, vTilesBG tile $00
+ ld bc, $0180
+ call LoadOrCopyVRAMData
+ call Func_28cd4
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret z
+ ld a, BANK(UncaughtPokemonPaletteMap)
+ ld de, UncaughtPokemonPaletteMap
+ hlCoord 1, 3, vBGMap
+ call LoadBillboardPaletteMap
+ ret
+
+UncaughtPokemonPaletteMap:
+ db $05, $05, $05, $05, $05, $05
+ db $05, $05, $05, $05, $05, $05
+ db $05, $05, $05, $05, $05, $05
+ db $05, $05, $05, $05, $05, $05
+
+LoadSeenPokemonGfx: ; 0x28baf
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ sla c
+ rl b
+ add c
+ ld c, a
+ jr nc, .asm_28bbe
+ inc b
+.asm_28bbe
+ ld hl, MonBillboardPicPointers
+ add hl, bc
+ ld a, Bank(MonBillboardPicPointers)
+ call ReadByteFromBank
+ inc hl
+ ld c, a
+ ld a, Bank(MonBillboardPicPointers)
+ call ReadByteFromBank
+ inc hl
+ ld b, a
+ ld a, Bank(MonBillboardPicPointers)
+ call ReadByteFromBank
+ ld hl, $0180
+ add hl, bc
+ ld de, vTilesBG tile $00
+ ld bc, $0180
+ call LoadOrCopyVRAMData
+ call Func_28cd4
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret z
+ ld a, BANK(UncaughtPokemonPaletteMap)
+ ld de, UncaughtPokemonPaletteMap
+ hlCoord 1, 3, vBGMap
+ call LoadBillboardPaletteMap
+ ret
+
+Func_28bf5: ; 0x28bf5
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ sla c
+ rl b
+ add c
+ ld c, a
+ jr nc, .asm_28c04
+ inc b
+.asm_28c04
+ push bc
+ ld a, $1
+ ld [rVBK], a
+ ld hl, MonAnimatedPicPointers
+ add hl, bc
+ ld a, Bank(MonAnimatedPicPointers)
+ call ReadByteFromBank
+ inc hl
+ ld c, a
+ ld a, Bank(MonAnimatedPicPointers)
+ call ReadByteFromBank
+ inc hl
+ ld b, a
+ ld a, Bank(MonAnimatedPicPointers)
+ call ReadByteFromBank
+ ld h, b
+ ld l, c
+ ld de, vTilesOB
+ ld bc, $0300
+ call LoadOrCopyVRAMData
+ xor a
+ ld [rVBK], a
+ pop bc
+ push bc
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld hl, EvolutionLineIds
+ add hl, bc
+ ld a, BANK(EvolutionLineIds)
+ call ReadByteFromBank
+ ld c, a
+ ld b, $0
+ sla c
+ rl b
+ add c
+ ld c, a
+ jr nc, .asm_28c4b
+ inc b
+.asm_28c4b
+ ld hl, Data_13685
+ add hl, bc
+ ld a, Bank(Data_13685)
+ call ReadByteFromBank
+ ld [wd5c1], a
+ ld [wd5be], a
+ inc hl
+ ld a, Bank(Data_13685)
+ call ReadByteFromBank
+ ld [wd5c2], a
+ inc hl
+ ld a, Bank(Data_13685)
+ call ReadByteFromBank
+ ld [wd5c3], a
+ ld a, [wCurPokedexIndex]
+ ld c, a
+ ld b, $0
+ ld hl, MonAnimatedSpriteTypes
+ add hl, bc
+ ld a, Bank(MonAnimatedSpriteTypes)
+ call ReadByteFromBank
+ ld [wd5bc], a
+ ld [wd5bd], a
+ call Func_28cf8
+ pop bc
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret z
+ 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
+ push af
+ push de
+ ld bc, $10b0
+ ld hl, rBGPI
+ call Func_8e1
+ pop de
+ pop af
+ push af
+ ld bc, $08d8
+ ld hl, rOBPI
+ call Func_8e1
+ pop af
+ ld bc, $08e8
+ ld hl, rOBPI
+ call Func_8e1
+ ret
+
+Func_28cc2: ; 0x28cc2
+ 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
+
+Func_28cd4: ; 0x28cd4
+ xor a
+ ld hl, wd961
+ cp [hl]
+ ret z
+ ld [hl], a
+ ld de, .Data_28ce0
+ jr asm_28d1d
+
+.Data_28ce0: ; 0x28ce0
+ db $0
+ db $1
+ db $2
+ db $3
+ db $4
+ db $5
+ db $6
+ db $7
+ db $8
+ db $9
+ db $a
+ db $b
+ db $c
+ db $d
+ db $e
+ db $f
+ db $10
+ db $11
+ db $12
+ db $13
+ db $14
+ db $15
+ db $16
+ db $17
+
+Func_28cf8: ; 0x28cf8
+ ld a, $1
+ ld hl, wd961
+ cp [hl]
+ ret z
+ ld [hl], a
+ ld de, .data_28d05
+ jr asm_28d1d
+
+.data_28d05
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+ db $fe
+
+asm_28d1d
+ hlCoord 1, 3, vBGMap
+ ld b, $4
+.asm_28d22
+ ld c, $6
+.asm_28d24
+ ld a, [de]
+ call PutTileInVRAM
+ inc de
+ inc hl
+ dec c
+ jr nz, .asm_28d24
+ ld a, l
+ add $1a
+ ld l, a
+ dec b
+ jr nz, .asm_28d22
+ ret
+
+CountNumSeenOwnedMons: ; 0x28d35
+ ld hl, wPokedexFlags
+ ld de, $0000 ; keep a running count: d = owned, e = seen
+ ld b, NUM_POKEMON
+.checkSeen
+ bit 0, [hl] ; is mon seen?
+ jr z, .checkOwned
+ inc e
+.checkOwned
+ bit 1, [hl] ; is mon owned?
+ jr z, .nextMon
+ inc d
+.nextMon
+ inc hl
+ dec b
+ jr nz, .checkSeen
+ push de
+ ld a, d
+ call ConvertHexByteToDecWord
+ ld a, e
+ ld [wNumPokemonSeen], a
+ ld a, d
+ ld [wNumPokemonSeen + 1], a
+ pop de
+ ld a, e
+ call ConvertHexByteToDecWord
+ ld a, e
+ ld [wNumPokemonOwned], a
+ ld a, d
+ ld [wNumPokemonOwned + 1], a
+ ret
+
+ClearPokedexData: ; 0x28d66
+ ld hl, wPokedexFlags
+ xor a
+ ld b, NUM_POKEMON
+.asm_28d6c
+ ld [hli], a
+ dec b
+ jr nz, .asm_28d6c
+ ret
+
+Func_28d71: ; 0x28d71
+ ld a, [wd865]
+ ld c, a
+ ld a, [de]
+ inc de
+ and a
+ ret z
+ cp $20
+ jr nz, .asm_28d81
+ ld a, $ff
+ jr .asm_28d82
+
+.asm_28d81
+ add c
+.asm_28d82
+ call Func_28d88
+ inc hl
+ jr Func_28d71
+
+Func_28d88: ; 0x28d88
+ push af
+ ld a, [rLCDC]
+ bit 7, a
+ jr nz, .asm_28d92
+ pop af
+ ld [hl], a
+ ret
+
+.asm_28d92
+ pop af
+ call PutTileInVRAM
+ ret
+
+Func_28d97: ; 0x28d97
+ push de
+ ld a, b
+ ld [$ff8c], a
+ ld [$ff8d], a
+ ld a, c
+ ld [$ff8f], a
+ xor a
+ ld [$ff8e], a
+ ld [$ff90], a
+ ld [$ff91], a
+ call Func_28e73
+.asm_28daa
+ call Func_2957c
+ jr nc, .asm_28dcb
+ push hl
+ ld [$ff92], a
+ cp $ff
+ jr nz, .asm_28dbb
+ call Func_208c
+ jr .asm_28dc8
+
+.asm_28dbb
+ ld c, a
+ ld b, $0
+ ld hl, CharacterWidths
+ add hl, bc
+ ld a, [hl]
+ ld [$ff93], a
+ call LoadDexVWFCharacter
+.asm_28dc8
+ pop hl
+ jr nc, .asm_28daa
+.asm_28dcb
+ pop de
+ push af
+ ld a, e
+ ld [wd863], a
+ ld a, d
+ ld [wd864], a
+ ld a, [wd862]
+ and a
+ jr nz, .asm_28ddd
+ pop af
+ ret
+
+.asm_28ddd
+ push hl
+ ld a, [wd861]
+ ld c, a
+ ld b, $0
+ bit 7, c
+ jr z, .asm_28de9
+ dec b
+.asm_28de9
+ ld hl, wc010
+ add hl, bc
+ ld a, [$ff8f]
+ ld c, a
+ ld b, $0
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ xor a
+ call LoadOrCopyVRAMData
+ pop hl
+ pop af
+ ret
+
+Func_28e09: ; 0x28e09
+ push de
+ ld a, b
+ ld [$ff8c], a
+ ld [$ff8d], a
+ ld a, c
+ ld [$ff8f], a
+ xor a
+ ld [$ff8e], a
+ ld [$ff90], a
+ ld [$ff91], a
+ call Func_28e73
+.asm_28e1c
+ call Func_295e1
+ jr nc, .asm_28e35
+ push hl
+ ld [$ff92], a
+ ld c, a
+ ld b, $0
+ ld hl, CharacterWidths
+ add hl, bc
+ ld a, [hl]
+ ld [$ff93], a
+ call LoadDexVWFCharacter
+ pop hl
+ jr nc, .asm_28e1c
+ nop
+.asm_28e35
+ pop de
+ push af
+ ld a, e
+ ld [wd863], a
+ ld a, d
+ ld [wd864], a
+ ld a, [wd862]
+ and a
+ jr nz, .asm_28e47
+ pop af
+ ret
+
+.asm_28e47
+ push hl
+ ld a, [wd861]
+ ld c, a
+ ld b, $0
+ bit 7, c
+ jr z, .asm_28e53
+ dec b
+.asm_28e53
+ ld hl, wc010
+ add hl, bc
+ ld a, [$ff8f]
+ ld c, a
+ ld b, $0
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ xor a
+ call LoadOrCopyVRAMData
+ pop hl
+ pop af
+ ret
+
+Func_28e73: ; 0x28e73
+ push hl
+ ld a, [$ff8f]
+ ld c, a
+ ld b, $0
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ ld hl, Func_29566
+ ld a, l
+ sub c
+ ld l, a
+ ld a, h
+ sbc b
+ ld h, a
+ push hl
+ ld hl, wc000
+ ld a, [wd860]
+ ret
+
+Func_28e9a:
+REPT 20 * 87
+ ld [hli], a
+ENDR
+Func_29566:
+REPT 20
+ ld [hli], a
+ENDR
+ pop hl
+ ret
+
+Func_2957c: ; 0x2957c
+ ld a, BANK(PokedexDescriptionPointers)
+ call ReadByteFromBank
+ inc hl
+ and a
+ ret z
+ cp $d ; carriage return
+ jr nz, .asm_2958c
+ ld a, $ff
+ scf
+ ret
+
+.asm_2958c
+ cp "0"
+ jr c, .asm_29594
+ cp "9" + 1
+ jr c, .asm_295be
+.asm_29594
+ cp "A"
+ jr c, .asm_2959c
+ cp "Z" + 1
+ jr c, .asm_295c2
+.asm_2959c
+ cp "a"
+ jr c, .asm_295a4
+ cp "z" + 1
+ jr c, .asm_295c6
+.asm_295a4
+ cp " "
+ jr z, .asm_295ca
+ cp ","
+ jr z, .asm_295cd
+ cp "."
+ jr z, .asm_295d1
+ cp "`"
+ jr z, .asm_295d5
+ cp "-"
+ jr z, .asm_295d9
+ cp "é"
+ jr z, .asm_295dd
+ and a
+ ret
+
+.asm_295be
+ sub $88
+ scf
+ ret
+
+.asm_295c2
+ sub $8e
+ scf
+ ret
+
+.asm_295c6
+ sub $94
+ scf
+ ret
+
+.asm_295ca
+ xor a
+ scf
+ ret
+
+.asm_295cd
+ ld a, $f3
+ scf
+ ret
+
+.asm_295d1
+ ld a, $f4
+ scf
+ ret
+
+.asm_295d5
+ ld a, $fa
+ scf
+ ret
+
+.asm_295d9
+ ld a, $b2
+ scf
+ ret
+
+.asm_295dd
+ ld a, $f9
+ scf
+ ret
+
+Func_295e1: ; 0x295e1
+ ld a, [hli]
+ and a
+ ret z
+ cp $80
+ jr nc, .asm_295ed
+ ld c, a
+ ld b, $0
+ jr .asm_295f0
+
+.asm_295ed
+ ld b, a
+ ld a, [hli]
+ ld c, a
+.asm_295f0
+ ld a, b
+ and a
+ jr nz, .asm_295f9
+ ld a, c
+ sub $20
+ scf
+ ret
+
+.asm_295f9
+ push hl
+ call GetCharacterWidthIndex
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ pop hl
+ scf
+ ret
+
+GetCharacterWidthIndex: ; 0x29605
+ ld a, b
+ cp $81
+ jr nz, .asm_29611
+ ld hl, CharacterWidthIndices1
+ ld a, c
+ sub $40
+ ret
+
+.asm_29611
+ cp $83
+ jr nz, .asm_2961c
+ ld hl, CharacterWidthIndices3
+ ld a, c
+ sub $40
+ ret
+
+.asm_2961c
+ ld a, c
+ cp $9f
+ jr nc, .asm_29628
+ ld hl, CharacterWidthIndices2
+ ld a, c
+ sub $4f
+ ret
+
+.asm_29628
+ ld hl, CharacterWidthIndices4
+ ld a, c
+ sub $9f
+ ret
+
+INCLUDE "data/vwf_character_widths.asm"
+INCLUDE "text/pokedex_mon_names.asm"
+INCLUDE "data/mon_species.asm"
+INCLUDE "text/pokedex_species.asm"
+INCLUDE "text/pokedex_mon_attributes.asm"
+INCLUDE "data/dex_scroll_offsets.asm"
@@ -4161,1211 +4161,6 @@ SECTION "banka", ROMX, BANK[$a] INCLUDE "engine/pokedex.asm" -Func_28815: ; 0x28815 - ld a, [wd5be] - dec a - ld [wd5be], a - ret nz - ld a, [wBallHitWildMon] - inc a - and $7 - ld [wBallHitWildMon], a - jr nz, .asm_28836 - ld a, [wd5c3] - ld [wd5be], a - xor a - ld [wd5c4], a - ld c, $2 - jr .asm_28854 - -.asm_28836 - ld a, [wd5bc] - ld c, a - ld a, [wd5bd] - sub c - cp $1 - ld c, $0 - jr nc, .asm_28846 - ld c, $1 -.asm_28846 - ld b, $0 - ld hl, wd5c1 - add hl, bc - ld a, [hl] - ld [wd5be], a - xor a - ld [wd5c4], a -.asm_28854 - ld a, [wd5bc] - add c - ld [wd5bd], a - ret - -Func_2885c: ; 0x2885c - ld a, [wCurPokedexIndex] - ld c, a - ld b, $0 - ld hl, wPokedexFlags - add hl, bc - bit 1, [hl] - call nz, Func_287e7 - ld bc, $8888 - ld a, $66 - call LoadOAMData - ld bc, $6800 - ld a, $6a - call LoadOAMData - ret - -Func_2887c: ; 0x2887c - ld a, BANK(PokedexTilemap2) - ld hl, PokedexTilemap2 + $120 - deCoord 0, 8, vBGMap - ld bc, $0100 - call LoadVRAMData - ld a, $3f - ld [hLYC], a - ld a, $47 - ld [hNextLYCSub], a - ld b, $33 -.asm_28894 - push bc - ld a, $7a - sub b - ld [hNextLYCSub], a - rst AdvanceFrame - pop bc - dec b - dec b - dec b - jr nz, .asm_28894 - ret - -Func_288a2: ; 0x288a2 - ld b, $33 -.asm_288a4 - push bc - ld a, $44 - add b - ld [hNextLYCSub], a - rst AdvanceFrame - pop bc - dec b - dec b - dec b - jr nz, .asm_288a4 - ld a, $3b - ld [hLYC], a - ld [hNextLYCSub], a - ld a, BANK(PokedexTilemap2) - ld hl, PokedexTilemap2 + $100 - deCoord 0, 8, vBGMap - ld bc, $0020 - call LoadVRAMData - ret - -Func_288c6: ; 0x288c6 - ld a, [wCurPokedexIndex] - ld c, a - ld b, $0 - ld hl, wPokedexFlags - add hl, bc - bit 1, [hl] - ld hl, Unknown_2c000 - jr z, .asm_288f4 - ld a, [wCurPokedexIndex] - ld c, a - ld b, $0 - sla c - rl b - ld hl, PokedexDescriptionPointers - add hl, bc - ld a, BANK(PokedexDescriptionPointers) - call ReadByteFromBank - inc hl - ld c, a - ld a, BANK(PokedexDescriptionPointers) - call ReadByteFromBank - ld b, a - ld h, b - ld l, c -.asm_288f4 - xor a - ld [wd860], a - ld [wd861], a - ld bc, $906c - ld de, vTilesSH tile $10 - call Func_28d97 - rl a - ld [wd956], a - ld a, l - ld [wd957], a - ld a, h - ld [wd958], a - ret - -Func_28912: ; 0x28912 - ld bc, $906c - ld de, vTilesSH tile $10 - ld a, [wd957] - ld l, a - ld a, [wd958] - ld h, a - call Func_28d97 - rl a - ld [wd956], a - ld a, l - ld [wd957], a - ld a, h - ld [wd958], a - ret - -Func_28931: ; 0x28931 - ld a, [wCurPokedexIndex] - ld c, a - ld b, $0 - ld hl, wPokedexFlags - add hl, bc - ld a, [hl] - and a - ld hl, BlankDexName - jr z, .asm_2895d - ld a, [wCurPokedexIndex] - ld c, a - ld b, $0 - ld h, b - ld l, c - sla l - rl h - sla l - rl h - sla l - rl h - add hl, bc - add hl, bc - add hl, bc - ld bc, MonDexNames - add hl, bc -.asm_2895d - ld a, $ff - ld [wd860], a - xor a - ld [wd861], a - ld bc, $500a - ld de, vTilesBG tile $50 - call Func_28e09 - ret - -BlankDexName: - db " @" - -Func_28972: ; 0x28972 - ld a, [wPokedexOffset] - ld c, a - ld b, $6 -.asm_28978 - push bc - ld a, c - sla a - and $e - ld e, a - ld d, $0 - ld hl, TileLocations_287b7 - add hl, de - ld a, [hli] - ld e, a - ld a, [hl] - ld d, a - ld a, c - call Func_28993 - pop bc - inc c - dec b - jr nz, .asm_28978 - ret - -Func_28993: ; 0x28993 - push hl - ld c, a - ld b, $0 - ld hl, wPokedexFlags - add hl, bc - ld a, [hl] - and a - ld hl, BlankDexName2 - jr z, .asm_289b7 - ld h, b - ld l, c - sla l - rl h - sla l - rl h - sla l - rl h - add hl, bc - add hl, bc - add hl, bc - ld bc, MonDexNames - add hl, bc -.asm_289b7 - xor a - ld [wd860], a - ld [wd861], a - ld bc, $500a ; not a pointer - call Func_28e09 - pop hl - ret - -BlankDexName2: - db " @" - -Func_289c8: ; 0x289c8 - ld a, [wCurPokedexIndex] - ld c, a - ld b, $0 - ld hl, wPokedexFlags - add hl, bc - bit 1, [hl] - ld hl, BlankSpeciesName - jr z, .pokemonNotOwned - ld a, [wCurPokedexIndex] - ld c, a - ld b, $0 - ld hl, MonSpecies - add hl, bc - ld c, [hl] - ld h, b - ld l, c - sla l - rl h - sla l - rl h - sla l - rl h - add hl, bc - add hl, bc - add hl, bc ; value * 11 - sla l - rl h - add hl, bc ; value * 23 - ld bc, MonSpeciesNames - add hl, bc -.pokemonNotOwned - ld a, $ff - ld [wd860], a - ld a, $4 - ld [wd861], a - ld bc, $5816 - ld de, vTilesBG tile $5a - call Func_28e09 - ret - -BlankSpeciesName: - dw $4081 ; variable-width font character - db $00 - -Func_28a15: ; 0x28a15 - ld a, [wCurPokedexIndex] - ld c, a - ld b, $0 - ld h, b - ld l, c - sla l - rl h - add hl, bc - sla l - rl h - add hl, bc - sla l - rl h - add hl, bc - ld bc, PokedexMonAttributesTexts - add hl, bc - ld d, h - ld e, l - ld a, $0 - ld [wd865], a - push de - hlCoord 4, 2, vBGMap - call Func_28d71 - pop de - inc de - inc de - inc de - inc de - ld a, [wCurPokedexIndex] - ld c, a - ld b, $0 - ld hl, wPokedexFlags - add hl, bc - bit 1, [hl] - jr nz, .asm_28a54 - ld de, BlankPokemonTileData_28a7f -.asm_28a54 - push de - hlCoord 8, 6, vBGMap - call Func_28d71 - pop de - inc de - inc de - inc de - inc de - inc de - push de - hlCoord 14, 6, vBGMap - call Func_28d71 - pop de - inc de - inc de - inc de - inc de - inc de - hlCoord 16, 7, vBGMap - ld a, [rLCDC] - bit 7, a - jr nz, .asm_28a7a - ld a, [de] - ld [hl], a - ret - -.asm_28a7a - ld a, [de] - call PutTileInVRAM - ret - -BlankPokemonTileData_28a7f: - db $FF, $FF, $72, $FF - db $00 ; terminator - - db $FF, $FF, $FF, $FF - db $00 ; terminator - - db $83 ; tile id - -Func_28a8a: ; 0x28a8a - ld a, [wPokedexOffset] - ld c, a - ld b, $6 -.asm_28a90 - push bc - ld a, c - sla a - and $1e - ld e, a - ld d, $0 - ld hl, BGMapLocations_287c7 - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld a, c - call Func_28aaa - pop bc - inc c - dec b - jr nz, .asm_28a90 - ret - -Func_28aaa: ; 0x28aaa - push hl - ld c, a - ld b, $0 - ld h, b - ld l, c - sla l - rl h - add hl, bc - sla l - rl h - add hl, bc - sla l - rl h - add hl, bc - ld bc, PokedexMonAttributesTexts - add hl, bc - ld d, h - ld e, l - ld a, $23 - ld [wd865], a - pop hl - push hl - call Func_28d71 - pop hl - ret - -Func_28ad1: ; 0x28ad1 - ld a, [wPokedexOffset] - swap a - and $f0 - sub $3c - ld [hNextFrameHBlankSCX], a - ret - -Func_28add: ; 0x28add - ld a, [wCurPokedexIndex] - ld c, a - ld b, $0 - ld hl, wPokedexFlags - add hl, bc - ld a, [hl] - and a - jp z, LoadUncaughtPokemonBackgroundGfx - dec a - jp z, LoadSeenPokemonGfx - ld a, [wd960] - and a - jr z, .asm_28afc - call Func_28cc2 - jp z, Func_28bf5 -.asm_28afc - ld a, [wCurPokedexIndex] - ld c, a - ld b, $0 - sla c - rl b - add c - ld c, a - jr nc, .asm_28b0b - inc b -.asm_28b0b - push bc - ld hl, MonBillboardPicPointers - add hl, bc - ld a, Bank(MonBillboardPicPointers) - call ReadByteFromBank - inc hl - ld c, a - ld a, Bank(MonBillboardPicPointers) - call ReadByteFromBank - inc hl - ld b, a - ld a, Bank(MonBillboardPicPointers) - call ReadByteFromBank - ld h, b - ld l, c - ld de, vTilesBG tile $00 - ld bc, $0180 - call LoadOrCopyVRAMData - call Func_28cd4 - pop bc - ld a, [hGameBoyColorFlag] - and a - ret z - push bc - ld hl, MonBillboardPaletteMapPointers - add hl, bc - ld a, Bank(MonBillboardPaletteMapPointers) - call ReadByteFromBank - inc hl - ld e, a - ld a, Bank(MonBillboardPaletteMapPointers) - call ReadByteFromBank - inc hl - ld d, a - ld a, Bank(MonBillboardPaletteMapPointers) - call ReadByteFromBank - hlCoord 1, 3, vBGMap - call LoadBillboardPaletteMap - pop bc - 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 bc, $10b0 - ld hl, rBGPI - call Func_8e1 - ret - -LoadUncaughtPokemonBackgroundGfx: ; 0x28b76 - ld a, BANK(UncaughtPokemonBackgroundPic) - ld hl, UncaughtPokemonBackgroundPic - ld de, vTilesBG tile $00 - ld bc, $0180 - call LoadOrCopyVRAMData - call Func_28cd4 - ld a, [hGameBoyColorFlag] - and a - ret z - ld a, BANK(UncaughtPokemonPaletteMap) - ld de, UncaughtPokemonPaletteMap - hlCoord 1, 3, vBGMap - call LoadBillboardPaletteMap - ret - -UncaughtPokemonPaletteMap: - db $05, $05, $05, $05, $05, $05 - db $05, $05, $05, $05, $05, $05 - db $05, $05, $05, $05, $05, $05 - db $05, $05, $05, $05, $05, $05 - -LoadSeenPokemonGfx: ; 0x28baf - ld a, [wCurPokedexIndex] - ld c, a - ld b, $0 - sla c - rl b - add c - ld c, a - jr nc, .asm_28bbe - inc b -.asm_28bbe - ld hl, MonBillboardPicPointers - add hl, bc - ld a, Bank(MonBillboardPicPointers) - call ReadByteFromBank - inc hl - ld c, a - ld a, Bank(MonBillboardPicPointers) - call ReadByteFromBank - inc hl - ld b, a - ld a, Bank(MonBillboardPicPointers) - call ReadByteFromBank - ld hl, $0180 - add hl, bc - ld de, vTilesBG tile $00 - ld bc, $0180 - call LoadOrCopyVRAMData - call Func_28cd4 - ld a, [hGameBoyColorFlag] - and a - ret z - ld a, BANK(UncaughtPokemonPaletteMap) - ld de, UncaughtPokemonPaletteMap - hlCoord 1, 3, vBGMap - call LoadBillboardPaletteMap - ret - -Func_28bf5: ; 0x28bf5 - ld a, [wCurPokedexIndex] - ld c, a - ld b, $0 - sla c - rl b - add c - ld c, a - jr nc, .asm_28c04 - inc b -.asm_28c04 - push bc - ld a, $1 - ld [rVBK], a - ld hl, MonAnimatedPicPointers - add hl, bc - ld a, Bank(MonAnimatedPicPointers) - call ReadByteFromBank - inc hl - ld c, a - ld a, Bank(MonAnimatedPicPointers) - call ReadByteFromBank - inc hl - ld b, a - ld a, Bank(MonAnimatedPicPointers) - call ReadByteFromBank - ld h, b - ld l, c - ld de, vTilesOB - ld bc, $0300 - call LoadOrCopyVRAMData - xor a - ld [rVBK], a - pop bc - push bc - ld a, [wCurPokedexIndex] - ld c, a - ld b, $0 - ld hl, EvolutionLineIds - add hl, bc - ld a, BANK(EvolutionLineIds) - call ReadByteFromBank - ld c, a - ld b, $0 - sla c - rl b - add c - ld c, a - jr nc, .asm_28c4b - inc b -.asm_28c4b - ld hl, Data_13685 - add hl, bc - ld a, Bank(Data_13685) - call ReadByteFromBank - ld [wd5c1], a - ld [wd5be], a - inc hl - ld a, Bank(Data_13685) - call ReadByteFromBank - ld [wd5c2], a - inc hl - ld a, Bank(Data_13685) - call ReadByteFromBank - ld [wd5c3], a - ld a, [wCurPokedexIndex] - ld c, a - ld b, $0 - ld hl, MonAnimatedSpriteTypes - add hl, bc - ld a, Bank(MonAnimatedSpriteTypes) - call ReadByteFromBank - ld [wd5bc], a - ld [wd5bd], a - call Func_28cf8 - pop bc - ld a, [hGameBoyColorFlag] - and a - ret z - 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 - push af - push de - ld bc, $10b0 - ld hl, rBGPI - call Func_8e1 - pop de - pop af - push af - ld bc, $08d8 - ld hl, rOBPI - call Func_8e1 - pop af - ld bc, $08e8 - ld hl, rOBPI - call Func_8e1 - ret - -Func_28cc2: ; 0x28cc2 - 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 - -Func_28cd4: ; 0x28cd4 - xor a - ld hl, wd961 - cp [hl] - ret z - ld [hl], a - ld de, .Data_28ce0 - jr asm_28d1d - -.Data_28ce0: ; 0x28ce0 - db $0 - db $1 - db $2 - db $3 - db $4 - db $5 - db $6 - db $7 - db $8 - db $9 - db $a - db $b - db $c - db $d - db $e - db $f - db $10 - db $11 - db $12 - db $13 - db $14 - db $15 - db $16 - db $17 - -Func_28cf8: ; 0x28cf8 - ld a, $1 - ld hl, wd961 - cp [hl] - ret z - ld [hl], a - ld de, .data_28d05 - jr asm_28d1d - -.data_28d05 - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - db $fe - -asm_28d1d - hlCoord 1, 3, vBGMap - ld b, $4 -.asm_28d22 - ld c, $6 -.asm_28d24 - ld a, [de] - call PutTileInVRAM - inc de - inc hl - dec c - jr nz, .asm_28d24 - ld a, l - add $1a - ld l, a - dec b - jr nz, .asm_28d22 - ret - -CountNumSeenOwnedMons: ; 0x28d35 - ld hl, wPokedexFlags - ld de, $0000 ; keep a running count: d = owned, e = seen - ld b, NUM_POKEMON -.checkSeen - bit 0, [hl] ; is mon seen? - jr z, .checkOwned - inc e -.checkOwned - bit 1, [hl] ; is mon owned? - jr z, .nextMon - inc d -.nextMon - inc hl - dec b - jr nz, .checkSeen - push de - ld a, d - call ConvertHexByteToDecWord - ld a, e - ld [wNumPokemonSeen], a - ld a, d - ld [wNumPokemonSeen + 1], a - pop de - ld a, e - call ConvertHexByteToDecWord - ld a, e - ld [wNumPokemonOwned], a - ld a, d - ld [wNumPokemonOwned + 1], a - ret - -ClearPokedexData: ; 0x28d66 - ld hl, wPokedexFlags - xor a - ld b, NUM_POKEMON -.asm_28d6c - ld [hli], a - dec b - jr nz, .asm_28d6c - ret - -Func_28d71: ; 0x28d71 - ld a, [wd865] - ld c, a - ld a, [de] - inc de - and a - ret z - cp $20 - jr nz, .asm_28d81 - ld a, $ff - jr .asm_28d82 - -.asm_28d81 - add c -.asm_28d82 - call Func_28d88 - inc hl - jr Func_28d71 - -Func_28d88: ; 0x28d88 - push af - ld a, [rLCDC] - bit 7, a - jr nz, .asm_28d92 - pop af - ld [hl], a - ret - -.asm_28d92 - pop af - call PutTileInVRAM - ret - -Func_28d97: ; 0x28d97 - push de - ld a, b - ld [$ff8c], a - ld [$ff8d], a - ld a, c - ld [$ff8f], a - xor a - ld [$ff8e], a - ld [$ff90], a - ld [$ff91], a - call Func_28e73 -.asm_28daa - call Func_2957c - jr nc, .asm_28dcb - push hl - ld [$ff92], a - cp $ff - jr nz, .asm_28dbb - call Func_208c - jr .asm_28dc8 - -.asm_28dbb - ld c, a - ld b, $0 - ld hl, CharacterWidths - add hl, bc - ld a, [hl] - ld [$ff93], a - call LoadDexVWFCharacter -.asm_28dc8 - pop hl - jr nc, .asm_28daa -.asm_28dcb - pop de - push af - ld a, e - ld [wd863], a - ld a, d - ld [wd864], a - ld a, [wd862] - and a - jr nz, .asm_28ddd - pop af - ret - -.asm_28ddd - push hl - ld a, [wd861] - ld c, a - ld b, $0 - bit 7, c - jr z, .asm_28de9 - dec b -.asm_28de9 - ld hl, wc010 - add hl, bc - ld a, [$ff8f] - ld c, a - ld b, $0 - sla c - rl b - sla c - rl b - sla c - rl b - sla c - rl b - xor a - call LoadOrCopyVRAMData - pop hl - pop af - ret - -Func_28e09: ; 0x28e09 - push de - ld a, b - ld [$ff8c], a - ld [$ff8d], a - ld a, c - ld [$ff8f], a - xor a - ld [$ff8e], a - ld [$ff90], a - ld [$ff91], a - call Func_28e73 -.asm_28e1c - call Func_295e1 - jr nc, .asm_28e35 - push hl - ld [$ff92], a - ld c, a - ld b, $0 - ld hl, CharacterWidths - add hl, bc - ld a, [hl] - ld [$ff93], a - call LoadDexVWFCharacter - pop hl - jr nc, .asm_28e1c - nop -.asm_28e35 - pop de - push af - ld a, e - ld [wd863], a - ld a, d - ld [wd864], a - ld a, [wd862] - and a - jr nz, .asm_28e47 - pop af - ret - -.asm_28e47 - push hl - ld a, [wd861] - ld c, a - ld b, $0 - bit 7, c - jr z, .asm_28e53 - dec b -.asm_28e53 - ld hl, wc010 - add hl, bc - ld a, [$ff8f] - ld c, a - ld b, $0 - sla c - rl b - sla c - rl b - sla c - rl b - sla c - rl b - xor a - call LoadOrCopyVRAMData - pop hl - pop af - ret - -Func_28e73: ; 0x28e73 - push hl - ld a, [$ff8f] - ld c, a - ld b, $0 - sla c - rl b - sla c - rl b - sla c - rl b - sla c - rl b - ld hl, Func_29566 - ld a, l - sub c - ld l, a - ld a, h - sbc b - ld h, a - push hl - ld hl, wc000 - ld a, [wd860] - ret - -Func_28e9a: -REPT 20 * 87 - ld [hli], a -ENDR -Func_29566: -REPT 20 - ld [hli], a -ENDR - pop hl - ret - -Func_2957c: ; 0x2957c - ld a, BANK(PokedexDescriptionPointers) - call ReadByteFromBank - inc hl - and a - ret z - cp $d ; carriage return - jr nz, .asm_2958c - ld a, $ff - scf - ret - -.asm_2958c - cp "0" - jr c, .asm_29594 - cp "9" + 1 - jr c, .asm_295be -.asm_29594 - cp "A" - jr c, .asm_2959c - cp "Z" + 1 - jr c, .asm_295c2 -.asm_2959c - cp "a" - jr c, .asm_295a4 - cp "z" + 1 - jr c, .asm_295c6 -.asm_295a4 - cp " " - jr z, .asm_295ca - cp "," - jr z, .asm_295cd - cp "." - jr z, .asm_295d1 - cp "`" - jr z, .asm_295d5 - cp "-" - jr z, .asm_295d9 - cp "é" - jr z, .asm_295dd - and a - ret - -.asm_295be - sub $88 - scf - ret - -.asm_295c2 - sub $8e - scf - ret - -.asm_295c6 - sub $94 - scf - ret - -.asm_295ca - xor a - scf - ret - -.asm_295cd - ld a, $f3 - scf - ret - -.asm_295d1 - ld a, $f4 - scf - ret - -.asm_295d5 - ld a, $fa - scf - ret - -.asm_295d9 - ld a, $b2 - scf - ret - -.asm_295dd - ld a, $f9 - scf - ret - -Func_295e1: ; 0x295e1 - ld a, [hli] - and a - ret z - cp $80 - jr nc, .asm_295ed - ld c, a - ld b, $0 - jr .asm_295f0 - -.asm_295ed - ld b, a - ld a, [hli] - ld c, a -.asm_295f0 - ld a, b - and a - jr nz, .asm_295f9 - ld a, c - sub $20 - scf - ret - -.asm_295f9 - push hl - call GetCharacterWidthIndex - ld c, a - ld b, $0 - add hl, bc - ld a, [hl] - pop hl - scf - ret - -GetCharacterWidthIndex: ; 0x29605 - ld a, b - cp $81 - jr nz, .asm_29611 - ld hl, CharacterWidthIndices1 - ld a, c - sub $40 - ret - -.asm_29611 - cp $83 - jr nz, .asm_2961c - ld hl, CharacterWidthIndices3 - ld a, c - sub $40 - ret - -.asm_2961c - ld a, c - cp $9f - jr nc, .asm_29628 - ld hl, CharacterWidthIndices2 - ld a, c - sub $4f - ret - -.asm_29628 - ld hl, CharacterWidthIndices4 - ld a, c - sub $9f - ret - -INCLUDE "data/vwf_character_widths.asm" -INCLUDE "text/pokedex_mon_names.asm" -INCLUDE "data/mon_species.asm" -INCLUDE "text/pokedex_species.asm" -INCLUDE "text/pokedex_mon_attributes.asm" -INCLUDE "data/dex_scroll_offsets.asm" - SECTION "bankb", ROMX, BANK[$b] Unknown_2c000: ; 0x2c000 |