ref: d314bdb4fa6061fc8f288bae6c514df54047e79e
parent: 8612a4a531b755b1d323e834980dab5ae896499c
author: PikalaxALT <[email protected]>
date: Sun Nov 29 16:34:59 EST 2015
Pokedex labels
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -1430,8 +1430,8 @@
ld a, [hBattleTurn]
and a
jr z, .wild
- ld de, wc739
- ld hl, wc735
+ ld de, wWildMonPP
+ ld hl, wWildMonMoves
ld a, [wBattleMode]
dec a
jr z, .wild
@@ -3643,13 +3643,13 @@
ld a, [CurPartySpecies]
cp UNOWN
jr nz, .skip_unown
- ld a, [wdef4]
+ ld a, [wFirstUnownSeen]
and a
jr nz, .skip_unown
ld hl, EnemyMonDVs
predef GetUnownLetter
ld a, [UnownLetter]
- ld [wdef4], a
+ ld [wFirstUnownSeen], a
.skip_unown
ld hl, EnemyMonHP
@@ -6711,7 +6711,7 @@
ld bc, PKMN_NAME_LENGTH
call CopyBytes
-; Caught this mon
+; Saw this mon
ld a, [TempEnemyMonSpecies]
dec a
ld c, a
@@ -8531,7 +8531,7 @@
call ClearBox
call ClearSprites
ld a, [wBattleMode]
- cp $1
+ cp WILD_BATTLE
call z, UpdateEnemyHUD
ld a, $1
ld [hBGMapMode], a
@@ -8560,9 +8560,9 @@
BackUpVBGMap2: ; 3f568
ld a, [rSVBK]
push af
- ld a, $6 ; BANK(w6_d000)
+ ld a, $6 ; BANK(wBackupTilemap)
ld [rSVBK], a
- ld hl, w6_d000
+ ld hl, wBackupTilemap
ld bc, $40 tiles ; VBGMap3 - VBGMap2
ld a, $2
call ByteFill
@@ -8570,7 +8570,7 @@
push af
ld a, $1
ld [rVBK], a
- ld de, w6_d000
+ ld de, wBackupTilemap
hlbgcoord 0, 0 ; VBGMap2
lb bc, BANK(BackUpVBGMap2), $40
call Request2bpp
@@ -8637,16 +8637,16 @@
; 3f607
InitEnemyWildmon: ; 3f607
- ld a, $1
+ ld a, WILD_BATTLE
ld [wBattleMode], a
callba MobileFn_10605d
call LoadEnemyMon
ld hl, EnemyMonMoves
- ld de, wc735
+ ld de, wWildMonMoves
ld bc, NUM_MOVES
call CopyBytes
ld hl, EnemyMonPP
- ld de, wc739
+ ld de, wWildMonPP
ld bc, NUM_MOVES
call CopyBytes
ld hl, EnemyMonDVs
@@ -8654,11 +8654,11 @@
ld a, [CurPartySpecies]
cp UNOWN
jr nz, .skip_unown
- ld a, [wdef4]
+ ld a, [wFirstUnownSeen]
and a
jr nz, .skip_unown
ld a, [UnownLetter]
- ld [wdef4], a
+ ld [wFirstUnownSeen], a
.skip_unown
ld de, VTiles2
predef FrontpicPredef
@@ -9456,12 +9456,12 @@
ld a, $6
ld [rSVBK], a
- ld hl, w6_d000
- ld bc, w6_d400 - w6_d000
+ ld hl, wBackupTilemap
+ ld bc, wBackupAttrMap - wBackupTilemap
ld a, " "
call ByteFill
- ld de, w6_d000
+ ld de, wBackupTilemap
hlbgcoord 0, 0
lb bc, BANK(.BlankBGMap), $40
call Request2bpp
--- a/constants/map_setup_constants.asm
+++ b/constants/map_setup_constants.asm
@@ -15,50 +15,50 @@
; Command descriptions from Condensation water's scripting compendium. const_def
const_def
- const map_lcd_on
- const map_lcd_off
- const map_sound_off
- const map_music
- const map_start_music
- const map_fade_music
- const map_fade
- const map_bike_music
- const map_music_force
- const map_max_volume
- const map_load_blocks
- const map_connection_blocks
- const map_save_screen
- const map_buffer_screen
- const map_load_graphics
- const map_load_tileset_header
- const map_time_of_day
- const map_palettes
- const map_wildmons
- const map_sprites
- const map_change_callback
- const map_start_callback
- const map_load_objects
- const map_load_spawn
- const map_load_connection
- const map_load_warp
- const map_attributes
- const map_attributes_2
- const map_clear_bg_palettes
- const map_fade_out_palettes
- const map_fade_in_palettes
- const map_anchor_screen
- const map_warp_face
- const map_face_down
- const map_spawn_coord
- const map_player_coord
- const map_prolong_sprites
- const map_delay_sprites
- const map_update_roam
- const map_keep_roam
- const map_fade_out_music
- const map_animations_on
- const map_animations_off
- const map_keep_palettes
- const map_text_scroll_off
- const map_stop_script
+ const map_lcd_on ; 00
+ const map_lcd_off ; 01
+ const map_sound_off ; 02
+ const map_music ; 03
+ const map_start_music ; 04
+ const map_fade_music ; 05
+ const map_fade ; 06
+ const map_bike_music ; 07
+ const map_music_force ; 08
+ const map_max_volume ; 09
+ const map_load_blocks ; 0a
+ const map_connection_blocks ; 0b
+ const map_save_screen ; 0c
+ const map_buffer_screen ; 0d
+ const map_load_graphics ; 0e
+ const map_load_tileset_header ; 0f
+ const map_time_of_day ; 10
+ const map_palettes ; 11
+ const map_wildmons ; 12
+ const map_sprites ; 13
+ const map_change_callback ; 14
+ const map_start_callback ; 15
+ const map_load_objects ; 16
+ const map_load_spawn ; 17
+ const map_load_connection ; 18
+ const map_load_warp ; 19
+ const map_attributes ; 1a
+ const map_attributes_2 ; 1b
+ const map_clear_bg_palettes ; 1c
+ const map_fade_out_palettes ; 1d
+ const map_fade_in_palettes ; 1e
+ const map_anchor_screen ; 1f
+ const map_warp_face ; 20
+ const map_face_down ; 21
+ const map_spawn_coord ; 22
+ const map_player_coord ; 23
+ const map_prolong_sprites ; 24
+ const map_delay_sprites ; 25
+ const map_update_roam ; 26
+ const map_keep_roam ; 27
+ const map_fade_out_music ; 28
+ const map_animations_on ; 29
+ const map_animations_off ; 2a
+ const map_keep_palettes ; 2b
+ const map_text_scroll_off ; 2c
+ const map_stop_script ; 2d
map_end_setup_script EQU -1
--- a/constants/wram_constants.asm
+++ b/constants/wram_constants.asm
@@ -96,3 +96,10 @@
PC_DEPOSIT EQU 1
DAYCARE_WITHDRAW EQU 2
DAYCARE_DEPOSIT EQU 3
+
+; wCurrentDexMode
+ const_def
+ const DEXMODE_NEW
+ const DEXMODE_OLD
+ const DEXMODE_ABC
+ const DEXMODE_UNOWN
--- a/engine/battle_start.asm
+++ b/engine/battle_start.asm
@@ -120,7 +120,7 @@
ld a, $6
ld [rSVBK], a
push hl
- ld hl, w6_d000
+ ld hl, wBackupTilemap
ld bc, $28 * $10
.loop
@@ -132,7 +132,7 @@
jr nz, .loop
pop hl
- ld de, w6_d000
+ ld de, wBackupTilemap
ld b, BANK(Function8c2cf) ; BANK(@)
ld c, $28
call Request2bpp
--- a/engine/crystal_intro.asm
+++ b/engine/crystal_intro.asm
@@ -79,17 +79,17 @@
ld [rSVBK], a
ld hl, IntroLogoGFX
- ld de, w6_d000
+ ld de, wBackupTilemap
ld a, BANK(IntroLogoGFX)
call FarDecompress
ld hl, VTiles0
- ld de, w6_d000
+ ld de, wBackupTilemap
lb bc, 1, 8 tiles
call Request2bpp
ld hl, VTiles1
- ld de, w6_d000 + $80 tiles
+ ld de, wBackupTilemap + $80 tiles
lb bc, 1, 8 tiles
call Request2bpp
@@ -1886,7 +1886,7 @@
push af
ld a, $6
ld [rSVBK], a
- ld hl, w6_d000
+ ld hl, wBackupTilemap
decoord 0, 0
ld b, SCREEN_HEIGHT
.asm_e542a
@@ -2000,10 +2000,10 @@
ld a, $6
ld [rSVBK], a
push de
- ld de, w6_d000
+ ld de, wBackupTilemap
call Decompress
pop hl
- ld de, w6_d000
+ ld de, wBackupTilemap
ld bc, $180
call Request2bpp
pop af
@@ -2016,10 +2016,10 @@
ld a, $6
ld [rSVBK], a
push de
- ld de, w6_d000
+ ld de, wBackupTilemap
call Decompress
pop hl
- ld de, w6_d000
+ ld de, wBackupTilemap
ld bc, $1ff
call Request2bpp
pop af
@@ -2032,10 +2032,10 @@
ld a, $6
ld [rSVBK], a
push de
- ld de, w6_d000
+ ld de, wBackupTilemap
call Decompress
pop hl
- ld de, w6_d000
+ ld de, wBackupTilemap
ld bc, $140
call Request2bpp
pop af
--- a/engine/pokedex.asm
+++ b/engine/pokedex.asm
@@ -31,7 +31,7 @@
ld a, [wJumptableIndex]
bit 7, a
jr nz, .exit
- call Function4010b
+ call Pokedex_Main
call DelayFrame
jr .main
@@ -40,8 +40,8 @@
call PlaySFX
call WaitSFX
call ClearSprites
- ld a, [wc7d4]
- ld [wd959], a
+ ld a, [wCurrentDexMode]
+ ld [wLastDexMode], a
pop af
ld [hInMenu], a
@@ -63,7 +63,7 @@
call ClearBGPalettes
call ClearSprites
call ClearTileMap
- call Function414b7
+ call Pokedex_LoadGFX
ld hl, wPokedexDataStart
ld bc, wPokedexDataEnd - wPokedexDataStart
@@ -76,78 +76,78 @@
ld [wcf65], a
ld [wcf66], a
- call Function400a2
+ call Pokedex_CheckUnlockedUnownMode
- ld a, [wd959]
- ld [wc7d4], a
+ ld a, [wLastDexMode]
+ ld [wCurrentDexMode], a
- call Function40bdc
- call Function400b4
- call Function400ed
+ call Pokedex_ChangeMode
+ call Pokedex_InitCursorPosition
+ call Pokedex_GetLandmark
callba Function1de247
- call Function41af7
+ call Pokedex_ResetBGMapMode
ret
; 400a2
-Function400a2: ; 400a2
+Pokedex_CheckUnlockedUnownMode: ; 400a2
ld a, [StatusFlags]
bit 1, a
- jr nz, .asm_400ae
+ jr nz, .unlocked
xor a
- ld [wc7dc], a
+ ld [wUnlockedUnownMode], a
ret
-.asm_400ae
- ld a, 1
- ld [wc7dc], a
+.unlocked
+ ld a, TRUE
+ ld [wUnlockedUnownMode], a
ret
; 400b4
-Function400b4: ; 400b4
- ld hl, wc6d0
- ld a, [wc2d6]
+Pokedex_InitCursorPosition: ; 400b4
+ ld hl, wPokedexDataStart
+ ld a, [wLastDexEntry]
and a
- jr z, .asm_400ec
- cp $fc
- jr nc, .asm_400ec
+ jr z, .done
+ cp NUM_POKEMON + 1
+ jr nc, .done
ld b, a
- ld a, [wc7d2]
+ ld a, [wDexListingEnd]
cp $8
- jr c, .asm_400db
+ jr c, .only_one_page
sub $7
ld c, a
-.asm_400cc
+.loop1
ld a, b
cp [hl]
- jr z, .asm_400ec
+ jr z, .done
inc hl
- ld a, [wc7d0]
+ ld a, [wDexListingPage]
inc a
- ld [wc7d0], a
+ ld [wDexListingPage], a
dec c
- jr nz, .asm_400cc
+ jr nz, .loop1
-.asm_400db
+.only_one_page
ld c, $7
-.asm_400dd
+.loop2
ld a, b
cp [hl]
- jr z, .asm_400ec
+ jr z, .done
inc hl
- ld a, [wc7d1]
+ ld a, [wDexListingCursor]
inc a
- ld [wc7d1], a
+ ld [wDexListingCursor], a
dec c
- jr nz, .asm_400dd
+ jr nz, .loop2
-.asm_400ec
+.done
ret
; 400ed
-Function400ed: ; 400ed
+Pokedex_GetLandmark: ; 400ed
ld a, [MapGroup]
ld b, a
ld a, [MapNumber]
@@ -155,7 +155,7 @@
call GetWorldMapLocation
cp SPECIAL_MAP
- jr nz, .asm_40107
+ jr nz, .load
ld a, [BackupMapGroup]
ld b, a
@@ -163,20 +163,20 @@
ld c, a
call GetWorldMapLocation
-.asm_40107
- ld [wc7e4], a
+.load
+ ld [wDexCurrentLocation], a
ret
; 4010b
-Function4010b: ; 4010b
+Pokedex_Main: ; 4010b
ld a, [wJumptableIndex]
- ld hl, Jumptable_40115
- call Function41432
+ ld hl, .Jumptable
+ call Pokedex_LoadPointer
jp [hl]
; 40115
-Jumptable_40115: ; 40115 (10:4115)
+.Jumptable: ; 40115 (10:4115)
dw Function4013c
dw Function401ae
dw Function40217
@@ -188,17 +188,17 @@
dw Function403be
dw Function4050a
dw Function40562
- dw Function405bd
+ dw Pokedex_UnownMode ; Unown Dex
dw Function405df
- dw Function40136
+ dw Pokedex_CloseDex ; Exit
-Function40131: ; 40131 (10:4131)
+Pokedex_IncrementDexPointer: ; 40131 (10:4131)
ld hl, wJumptableIndex
inc [hl]
ret
-Function40136: ; 40136 (10:4136)
+Pokedex_CloseDex: ; 40136 (10:4136)
ld hl, wJumptableIndex
set 7, [hl]
ret
@@ -209,45 +209,46 @@
call ClearSprites
xor a
hlcoord 0, 0, AttrMap
- ld bc, $168
+ ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
call ByteFill
- callba Function1de171
+ callba DrawPokedexListWindow
hlcoord 0, 17
ld de, String_START_SEARCH
- call Function40acd
+ call Pokedex_PlaceString
ld a, $7
ld [wc7d3], a
call Function40b0f
- call Function41aeb
- call Function41af7
+ call Pokedex_SetBGMapMode_3ifDMG_4ifCGB
+ call Pokedex_ResetBGMapMode
call Function4074c
ld a, $5
ld [hSCX], a
- ld a, [wc7d4]
- cp $1
+
+ ld a, [wCurrentDexMode]
+ cp DEXMODE_OLD
ld a, $4a
- jr z, .asm_4017b
+ jr z, .okay
ld a, $47
-
-.asm_4017b
+.okay
ld [hWX], a
xor a
ld [hWY], a
call WaitBGMap
- call Function41af7
- ld a, $ff
+
+ call Pokedex_ResetBGMapMode
+ ld a, -1
ld [CurPartySpecies], a
ld a, $4
call Function41423
call Function41148
- callba Function1de171
+ callba DrawPokedexListWindow
hlcoord 0, 17
ld de, String_START_SEARCH
- call Function40acd
+ call Pokedex_PlaceString
ld a, $7
ld [wc7d3], a
call Function40b0f
- call Function40131
+ call Pokedex_IncrementDexPointer
ret
Function401ae: ; 401ae (10:41ae)
@@ -270,13 +271,13 @@
xor a
ld [hBGMapMode], a
call Function40b0f
- call Function41ad7
- call Function41af7
+ call Pokedex_SetBGMapMode3
+ call Pokedex_ResetBGMapMode
ret
.a
- call Function40bb1
- call Function40bd0
+ call Pokedex_GetMonAtCursorPosition
+ call Pokedex_CheckSeen
ret z
ld a, $2
ld [wJumptableIndex], a
@@ -318,23 +319,23 @@
xor a
ld [hBGMapMode], a
call ClearSprites
- call Function41478
+ call Pokedex_LoadCurrentFootprint
call Function407fd
call Function4134f
- call Function40bb1
- ld [wc2d6], a
+ call Pokedex_GetMonAtCursorPosition
+ ld [wLastDexEntry], a
callba DisplayDexEntry
- call Function40ba0
+ call Pokedex_DrawFootprint
call WaitBGMap
ld a, $a7
ld [hWX], a
- call Function40bb1
+ call Pokedex_GetMonAtCursorPosition
ld [CurPartySpecies], a
ld a, $4
call Function41423
ld a, [CurPartySpecies]
call PlayCry
- call Function40131
+ call Pokedex_IncrementDexPointer
ret
Function40258: ; 40258 (10:4258)
@@ -347,25 +348,25 @@
ld a, [hl]
and A_BUTTON
jr nz, .a
- call Function4066c
+ call Pokedex_NextOrPreviousDexEntry
ret nc
- call Function40131
+ call Pokedex_IncrementDexPointer
ret
.a
ld a, [wc7d8]
ld hl, Jumptable_402f2
- call Function41432
+ call Pokedex_LoadPointer
jp [hl]
.b
ld a, [LastVolume]
and a
- jr z, .asm_40288
+ jr z, .max_volume
ld a, $77
ld [LastVolume], a
-.asm_40288
+.max_volume
call MaxVolume
ld a, [wcf64]
ld [wJumptableIndex], a
@@ -376,8 +377,8 @@
ld a, [wPokedexStatus]
xor $1
ld [wPokedexStatus], a
- call Function40bb1
- ld [wc2d6], a
+ call Pokedex_GetMonAtCursorPosition
+ ld [wLastDexEntry], a
callba DisplayDexEntry
call WaitBGMap
ret
@@ -391,14 +392,14 @@
ld [hBGMapMode], a
call Function407fd
call Function4134f
- call Function41478
- call Function40bb1
- ld [wc2d6], a
+ call Pokedex_LoadCurrentFootprint
+ call Pokedex_GetMonAtCursorPosition
+ ld [wLastDexEntry], a
callba DisplayDexEntry
- call Function40ba0
+ call Pokedex_DrawFootprint
call Function4143b
call WaitBGMap
- call Function40bb1
+ call Pokedex_GetMonAtCursorPosition
ld [CurPartySpecies], a
ld a, $4
call Function41423
@@ -410,11 +411,12 @@
; 402e8 (10:42e8)
Unknown_402e8: ; 402e8
- dw $0430
+ db D_RIGHT | D_LEFT, 4
dwcoord 1, 17
dwcoord 6, 17
dwcoord 11, 17
dwcoord 15, 17
+
; 402f2
Jumptable_402f2: ; 402f2
@@ -433,8 +435,8 @@
ld [hWX], a
ld a, $90
ld [hWY], a
- call Function40bb1
- ld a, [wc7e4]
+ call Pokedex_GetMonAtCursorPosition
+ ld a, [wDexCurrentLocation]
ld e, a
predef Function91d11
call Function41401
@@ -449,7 +451,7 @@
call Function4038d
call Function4143b
call WaitBGMap
- call Function40bb1
+ call Pokedex_GetMonAtCursorPosition
ld [CurPartySpecies], a
ld a, $4
call Function41423
@@ -457,7 +459,7 @@
; 40340
Function40340: ; 40340
- call Function40bb1
+ call Pokedex_GetMonAtCursorPosition
ld a, [wd265]
call GetCryIndex
ld e, c
@@ -485,7 +487,7 @@
ld [wcf65], a
call ClearBGPalettes
call DisableLCD
- call Function414fb
+ call Pokedex_LoadInvertedFont
call Function4038d
call EnableLCD
call WaitBGMap
@@ -497,9 +499,9 @@
Function4038d: ; 4038d
call Function407fd
- call Function40bb1
+ call Pokedex_GetMonAtCursorPosition
callba DisplayDexEntry
- call Function40ba0
+ call Pokedex_DrawFootprint
ret
; 4039d
@@ -509,17 +511,17 @@
call ClearSprites
call Function4087c
call Function4134f
- ld a, [wc7d4]
+ ld a, [wCurrentDexMode]
ld [wc7d8], a
call Function40e5b
call WaitBGMap
ld a, $10
call Function41423
- call Function40131
+ call Pokedex_IncrementDexPointer
ret
Function403be: ; 403be (10:43be)
- ld a, [wc7dc]
+ ld a, [wUnlockedUnownMode]
and a
jr nz, .asm_403c9
ld de, Unknown_403f3
@@ -542,7 +544,7 @@
.asm_403e0
ld a, [wc7d8]
ld hl, Jumptable_40405
- call Function41432
+ call Pokedex_LoadPointer
jp [hl]
.asm_403ea
@@ -553,17 +555,17 @@
; 403f3 (10:43f3)
Unknown_403f3: ; 403f3
- dw $03c0
- dwcoord 2, 4
- dwcoord 2, 6
- dwcoord 2, 8
+ db D_UP | D_DOWN, 3
+ dwcoord 2, 4
+ dwcoord 2, 6
+ dwcoord 2, 8
; 403fb
Unknown_403fb: ; 403fb
- dw $04c0
- dwcoord 2, 4
- dwcoord 2, 6
- dwcoord 2, 8
+ db D_UP | D_DOWN, 4
+ dwcoord 2, 4
+ dwcoord 2, 6
+ dwcoord 2, 8
dwcoord 2, 10
; 40405
@@ -585,17 +587,17 @@
Function40415: ; 40415 (10:4415)
ld b, $2
Function40417: ; 40417 (10:4417)
- ld a, [wc7d4]
+ ld a, [wCurrentDexMode]
cp b
jr z, .asm_40431
ld a, b
- ld [wc7d4], a
- call Function40bdc
+ ld [wCurrentDexMode], a
+ call Pokedex_ChangeMode
call Function40f08
xor a
- ld [wc7d0], a
- ld [wc7d1], a
- call Function400b4
+ ld [wDexListingPage], a
+ ld [wDexListingCursor], a
+ call Pokedex_InitCursorPosition
.asm_40431
call Function41401
@@ -626,7 +628,7 @@
call WaitBGMap
ld a, $10
call Function41423
- call Function40131
+ call Pokedex_IncrementDexPointer
ret
Function40471: ; 40471 (10:4471)
@@ -646,7 +648,7 @@
.asm_4048b
ld a, [wc7d8]
ld hl, Jumptable_404a8
- call Function41432
+ call Pokedex_LoadPointer
jp [hl]
.asm_40495
@@ -657,7 +659,7 @@
; 4049e (10:449e)
Unknown_4049e: ; 4049e
- dw $04c0
+ db D_UP | D_DOWN, 4
dwcoord 2, 4
dwcoord 2, 6
dwcoord 2, 13
@@ -683,7 +685,7 @@
ld a, [wc7d7]
and a
jr nz, .asm_404dc
- call Function40bdc
+ call Pokedex_ChangeMode
call Function41107
xor a
ld [hBGMapMode], a
@@ -694,16 +696,16 @@
ret
.asm_404dc
- ld [wc7d2], a
- ld a, [wc7d0]
+ ld [wDexListingEnd], a
+ ld a, [wDexListingPage]
ld [wc7e0], a
- ld a, [wc7d1]
+ ld a, [wDexListingCursor]
ld [wc7e1], a
- ld a, [wc2d6]
+ ld a, [wLastDexEntry]
ld [wcf65], a
xor a
- ld [wc7d0], a
- ld [wc7d1], a
+ ld [wDexListingPage], a
+ ld [wDexListingCursor], a
call Function41401
ld a, $9
ld [wJumptableIndex], a
@@ -722,17 +724,17 @@
ld [hBGMapMode], a
xor a
hlcoord 0, 0, AttrMap
- ld bc, $168
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
call ByteFill
- call Function41ae1
- call Function41af7
- callba Function1de1d1
+ call Pokedex_SetBGMapMode4
+ call Pokedex_ResetBGMapMode
+ callba DrawPokedexSearchResultsWindow
call Function409cf
ld a, $4
ld [wc7d3], a
call Function40b0f
- call Function41ad7
- call Function41af7
+ call Pokedex_SetBGMapMode3
+ call Pokedex_ResetBGMapMode
call Function40962
ld a, $5
ld [hSCX], a
@@ -741,8 +743,8 @@
xor a
ld [hWY], a
call WaitBGMap
- call Function41af7
- callba Function1de1d1
+ call Pokedex_ResetBGMapMode
+ callba DrawPokedexSearchResultsWindow
call Function409cf
call Function41281
ld a, $ff
@@ -749,7 +751,7 @@
ld [CurPartySpecies], a
ld a, $4
call Function41423
- call Function40131
+ call Pokedex_IncrementDexPointer
ret
Function40562: ; 40562 (10:4562)
@@ -766,13 +768,13 @@
xor a
ld [hBGMapMode], a
call Function40b0f
- call Function41ad7
- call Function41af7
+ call Pokedex_SetBGMapMode3
+ call Pokedex_ResetBGMapMode
ret
.asm_40583
- call Function40bb1
- call Function40bd0
+ call Pokedex_GetMonAtCursorPosition
+ call Pokedex_CheckSeen
ret z
ld a, $2
ld [wJumptableIndex], a
@@ -782,14 +784,14 @@
.asm_40595
ld a, [wc7e0]
- ld [wc7d0], a
+ ld [wDexListingPage], a
ld a, [wc7e1]
- ld [wc7d1], a
+ ld [wDexListingCursor], a
ld a, [wcf65]
- ld [wc2d6], a
+ ld [wLastDexEntry], a
call Function41401
call ClearSprites
- call Function40bdc
+ call Pokedex_ChangeMode
ld a, $5
ld [wJumptableIndex], a
xor a
@@ -798,18 +800,18 @@
ld [hWX], a
ret
-Function405bd: ; 405bd (10:45bd)
- call Function41a2c
+Pokedex_UnownMode: ; 405bd (10:45bd)
+ call Pokedex_LoadUnownFont
call Function409f1
xor a
ld [wc7dd], a
call Function41a58
call Function40658
- callba Functionfba2e
+ callba PrintUnownWord
call WaitBGMap
ld a, $16
call Function41423
- call Function40131
+ call Pokedex_IncrementDexPointer
ret
Function405df: ; 405df (10:45df)
@@ -816,27 +818,27 @@
ld hl, hJoyPressed ; $ffa7
ld a, [hl]
and A_BUTTON | B_BUTTON
- jr nz, .asm_405eb
+ jr nz, .a_b
call Function40610
ret
-.asm_405eb
+.a_b
call Function41401
ld a, $7
ld [wJumptableIndex], a
call DelayFrame
- call Function41a24
- jr nz, .asm_40603
+ call Pokedex_CheckSGB
+ jr nz, .decompress
callba Function1ddf26
- jr .asm_4060f
+ jr .done
-.asm_40603
+.decompress
ld hl, PokedexLZ
ld de, VTiles2 tile $31
lb bc, BANK(PokedexLZ), $3a
call DecompressRequest2bpp
-.asm_4060f
+.done
ret
Function40610: ; 40610 (10:4610)
@@ -859,7 +861,7 @@
ret nc
ld a, [hl]
inc [hl]
- jr .asm_40635
+ jr .update
.left
ld hl, wc7dd
@@ -869,7 +871,7 @@
ld a, [hl]
dec [hl]
-.asm_40635
+.update
push af
xor a
ld [hBGMapMode], a
@@ -877,7 +879,7 @@
call Function40654
call Function41a58
call Function40658
- callba Functionfba2e
+ callba PrintUnownWord
ld a, $1
ld [hBGMapMode], a
call DelayFrame
@@ -904,11 +906,11 @@
ld [hl], c
ret
-Function4066c: ; 4066c (10:466c)
- ld a, [wc7d1]
- ld [wc7e2], a
- ld a, [wc7d0]
- ld [wc7e3], a
+Pokedex_NextOrPreviousDexEntry: ; 4066c (10:466c)
+ ld a, [wDexListingCursor]
+ ld [wBackupDexListingCursor], a
+ ld a, [wDexListingPage]
+ ld [wBackupDexListingPage], a
ld hl, hJoyLast
ld a, [hl]
and D_UP
@@ -922,36 +924,36 @@
.up
ld a, [wc7d3]
ld d, a
- ld a, [wc7d2]
+ ld a, [wDexListingEnd]
ld e, a
call Function406ea
- jr nc, .asm_406b7
- call Function40bb1
- call Function40bd0
- jr nz, .asm_406b5
+ jr nc, .nope
+ call Pokedex_GetMonAtCursorPosition
+ call Pokedex_CheckSeen
+ jr nz, .yep
jr .up
.down
ld a, [wc7d3]
ld d, a
- ld a, [wc7d2]
+ ld a, [wDexListingEnd]
ld e, a
call Function406fe
- jr nc, .asm_406b7
- call Function40bb1
- call Function40bd0
- jr nz, .asm_406b5
+ jr nc, .nope
+ call Pokedex_GetMonAtCursorPosition
+ call Pokedex_CheckSeen
+ jr nz, .yep
jr .down
-.asm_406b5
+.yep
scf
ret
-.asm_406b7
- ld a, [wc7e2]
- ld [wc7d1], a
- ld a, [wc7e3]
- ld [wc7d0], a
+.nope
+ ld a, [wBackupDexListingCursor]
+ ld [wDexListingCursor], a
+ ld a, [wBackupDexListingPage]
+ ld [wDexListingPage], a
and a
ret
@@ -958,7 +960,7 @@
Function406c5: ; 406c5 (10:46c5)
ld a, [wc7d3]
ld d, a
- ld a, [wc7d2]
+ ld a, [wDexListingEnd]
ld e, a
ld hl, hJoyLast
ld a, [hl]
@@ -979,7 +981,7 @@
jr asm_4073d
Function406ea: ; 406ea (10:46ea)
- ld hl, wc7d1
+ ld hl, wDexListingCursor
ld a, [hl]
and a
jr z, .asm_406f4
@@ -986,7 +988,7 @@
dec [hl]
jr asm_4073f
.asm_406f4
- ld hl, wc7d0
+ ld hl, wDexListingPage
ld a, [hl]
and a
jr z, asm_4073d
@@ -994,7 +996,7 @@
jr asm_4073f
Function406fe: ; 406fe (10:46fe)
- ld hl, wc7d1
+ ld hl, wDexListingCursor
ld a, [hl]
inc a
cp e
@@ -1004,7 +1006,7 @@
inc [hl]
jr asm_4073f
.asm_4070c
- ld hl, wc7d0
+ ld hl, wDexListingPage
add [hl]
cp e
jr nc, asm_4073d
@@ -1011,7 +1013,7 @@
inc [hl]
jr asm_4073f
asm_40716: ; 40716 (10:4716)
- ld hl, wc7d0
+ ld hl, wDexListingPage
ld a, [hl]
and a
jr z, asm_4073d
@@ -1025,7 +1027,7 @@
ld [hl], a
jr asm_4073f
asm_40728: ; 40728 (10:4728)
- ld hl, wc7d0
+ ld hl, wDexListingPage
ld a, d
add a
add [hl]
@@ -1065,20 +1067,20 @@
Function4074c: ; 4074c (10:474c)
hlcoord 0, 17
ld de, String_START_SEARCH
- call Function40acd
+ call Pokedex_PlaceString
ld a, $32
hlcoord 0, 0
- ld bc, $168
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
call ByteFill
hlcoord 0, 0
lb bc, 7, 7
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 0, 9
ld bc, $607
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 1, 11
ld de, String_SEEN
- call Function40acd
+ call Pokedex_PlaceString
ld hl, PokedexSeen ; wdeb9 (aliases: EndPokedexSeen)
ld b, EndPokedexSeen - PokedexSeen
call CountSetBits
@@ -1088,7 +1090,7 @@
call PrintNum
hlcoord 1, 14
ld de, String_OWN
- call Function40acd
+ call Pokedex_PlaceString
ld hl, PokedexCaught
ld b, EndPokedexCaught - PokedexCaught
call CountSetBits
@@ -1098,7 +1100,7 @@
call PrintNum
hlcoord 1, 17
ld de, String_SELECT_OPTION
- call Function40acd
+ call Pokedex_PlaceString
hlcoord 8, 1
ld b, $7
ld a, $5a
@@ -1115,7 +1117,7 @@
ld [hl], $54
hlcoord 8, 16
ld [hl], $5b
- call Function40ab2
+ call Pokedex_PlaceFrontpicTopLeftCorner
ret
; 407e1 (10:47e1)
@@ -1130,10 +1132,10 @@
; 407fd
Function407fd: ; 407fd
- call Function40aa6
+ call Pokedex_FillBackgroundColor2
hlcoord 0, 0
ld bc, $0f12
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 19, 0
ld [hl], $34
hlcoord 19, 1
@@ -1151,14 +1153,14 @@
call ByteFill
hlcoord 9, 7
ld de, Unknown_40852
- call Function40acd
+ call Pokedex_PlaceString
hlcoord 9, 9
ld de, Unknown_4085c
- call Function40acd
+ call Pokedex_PlaceString
hlcoord 0, 17
ld de, Unknown_40867
- call Function40acd
- call Function40ab2
+ call Pokedex_PlaceString
+ call Pokedex_PlaceFrontpicTopLeftCorner
ret
; 4084f
@@ -1173,20 +1175,20 @@
; 4087c
Function4087c: ; 4087c (10:487c)
- call Function40aa6
+ call Pokedex_FillBackgroundColor2
hlcoord 0, 2
lb bc, 8, 18
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 0, 12
lb bc, 4, 18
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 0, 1
ld de, Unknown_408b2
- call Function40acd
+ call Pokedex_PlaceString
hlcoord 3, 4
ld de, String_408bd
call PlaceString
- ld a, [wc7dc]
+ ld a, [wUnlockedUnownMode]
and a
ret z
hlcoord 3, 10
@@ -1211,19 +1213,19 @@
; 408f0
Function408f0: ; 408f0 (10:48f0)
- call Function40aa6
+ call Pokedex_FillBackgroundColor2
hlcoord 0, 2
lb bc, 14, 18
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 0, 1
ld de, Unknown_4092a
- call Function40acd
+ call Pokedex_PlaceString
hlcoord 8, 4
ld de, Unknown_40935
- call Function40acd
+ call Pokedex_PlaceString
hlcoord 8, 6
ld de, Unknown_40935
- call Function40acd
+ call Pokedex_PlaceString
hlcoord 3, 4
ld de, String_40940
call PlaceString
@@ -1254,13 +1256,13 @@
; 40962
Function40962: ; 40962 (10:4962)
- call Function40aa6
+ call Pokedex_FillBackgroundColor2
hlcoord 0, 0
lb bc, 7, 7
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 0, 11
lb bc, 5, 18
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 1, 12
ld de, String_409ae
call PlaceString
@@ -1280,7 +1282,7 @@
ld [hl], $69
hlcoord 8, 10
ld [hl], $6a
- call Function40ab2
+ call Pokedex_PlaceFrontpicTopLeftCorner
ret
; 409ae (10:49ae)
@@ -1310,28 +1312,28 @@
ret
Function409f1: ; 409f1 (10:49f1)
- call Function40aa6
+ call Pokedex_FillBackgroundColor2
hlcoord 2, 1
lb bc, 10, 13
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 2, 14
lb bc, 1, 13
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 2, 15
ld [hl], $3d
hlcoord 16, 15
ld [hl], $3e
hlcoord 6, 5
- call Function40ab5
+ call Pokedex_PlaceFrontpicAtHL
ld de, 0
ld b, 0
ld c, 26
-.asm_40a1d
+.loop
ld hl, UnownDex
add hl, de
ld a, [hl]
and a
- jr z, .asm_40a39
+ jr z, .done
push af
ld hl, Unknown_40a3e
rept 4
@@ -1341,13 +1343,13 @@
ld h, [hl]
ld l, a
pop af
- add $3f
+ add $40 - 1 ; Unown A
ld [hl], a
inc de
inc b
dec c
- jr nz, .asm_40a1d
-.asm_40a39
+ jr nz, .loop
+.done
ld a, b
ld [wc7de], a
ret
@@ -1354,6 +1356,7 @@
; 40a3e (10:4a3e)
Unknown_40a3e: ; 40a3e
+; letter, cursor
dwcoord 4,11, 3,11
dwcoord 4,10, 3,10
dwcoord 4, 9, 3, 9
@@ -1382,7 +1385,7 @@
dwcoord 14,10, 15,10
; 40aa6
-Function40aa6: ; 40aa6
+Pokedex_FillBackgroundColor2: ; 40aa6
hlcoord 0, 0
ld a, $32
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -1390,77 +1393,77 @@
ret
; 40ab2
-Function40ab2: ; 40ab2
+Pokedex_PlaceFrontpicTopLeftCorner: ; 40ab2
hlcoord 1, 1
-Function40ab5: ; 40ab5
+Pokedex_PlaceFrontpicAtHL: ; 40ab5
xor a
ld b, $7
-.asm_40ab8
+.row
ld c, $7
push af
push hl
-.asm_40abc
+.col
ld [hli], a
add $7
dec c
- jr nz, .asm_40abc
+ jr nz, .col
pop hl
- ld de, $0014
+ ld de, SCREEN_WIDTH
add hl, de
pop af
inc a
dec b
- jr nz, .asm_40ab8
+ jr nz, .row
ret
; 40acd
-Function40acd: ; 40acd
-.asm_40acd
+Pokedex_PlaceString: ; 40acd
+.loop
ld a, [de]
- cp $ff
+ cp -1
ret z
inc de
ld [hli], a
- jr .asm_40acd
+ jr .loop
; 40ad5
-Function40ad5: ; 40ad5
+Pokedex_PlaceBorder: ; 40ad5
push hl
ld a, $33
ld [hli], a
ld d, $34
- call Function40b06
+ call .FillRow
ld a, $35
ld [hl], a
pop hl
- ld de, $0014
+ ld de, SCREEN_WIDTH
add hl, de
-.asm_40ae6
+.loop
push hl
ld a, $36
ld [hli], a
ld d, $7f
- call Function40b06
+ call .FillRow
ld a, $37
ld [hl], a
pop hl
- ld de, $0014
+ ld de, SCREEN_WIDTH
add hl, de
dec b
- jr nz, .asm_40ae6
+ jr nz, .loop
ld a, $38
ld [hli], a
ld d, $39
- call Function40b06
+ call .FillRow
ld a, $3a
ld [hl], a
ret
; 40b06
-Function40b06: ; 40b06
+.FillRow: ; 40b06
ld e, c
-.asm_40b07
+.row_loop
ld a, e
and a
ret z
@@ -1467,36 +1470,41 @@
ld a, d
ld [hli], a
dec e
- jr .asm_40b07
+ jr .row_loop
; 40b0f
Function40b0f: ; 40b0f (10:4b0f)
- ld a, [wc7d4]
- cp $1
- jr z, .asm_40b1a
- ld c, $b
- jr .asm_40b1c
-.asm_40b1a
- ld c, $b
-.asm_40b1c
+; This check is completely useless.
+ ld a, [wCurrentDexMode]
+ cp DEXMODE_OLD
+ jr z, .okay
+ ld c, 11
+ jr .resume
+.okay
+ ld c, 11
+; End useless check
+.resume
+; Clear (2 * [wc7d3] + 1) by 11 box starting at 0,1
hlcoord 0, 1
ld a, [wc7d3]
add a
inc a
ld b, a
- ld a, $7f
- call Function413fe
- ld a, [wc7d0]
+ ld a, " "
+ call Pokedex_FillBox
+
+; Load de with wPokedexDataStart + [wDexListingPage]
+ ld a, [wDexListingPage]
ld e, a
ld d, $0
- ld hl, wc6d0
+ ld hl, wPokedexDataStart
add hl, de
ld e, l
ld d, h
hlcoord 0, 2
ld a, [wc7d3]
-.asm_40b3c
+.loop
push af
ld a, [de]
ld [wd265], a
@@ -1504,13 +1512,13 @@
push hl
call Function40b55
pop hl
- ld de, $28
+ ld de, 2 * SCREEN_WIDTH
add hl, de
pop de
inc de
pop af
dec a
- jr nz, .asm_40b3c
+ jr nz, .loop
call Function4143b
ret
@@ -1517,10 +1525,10 @@
Function40b55: ; 40b55 (10:4b55)
and a
ret z
- call Function40b6a
- call Function40b8d
+ call Pokedex_PrintNumberIfOldMode
+ call Pokedex_PlaceDefaultStringIfNotSeen
ret c
- call Function40b82
+ call Pokedex_PlaceCaughtSymbolIfCaught
push hl
call GetPokemonName
pop hl
@@ -1527,14 +1535,15 @@
call PlaceString
ret
-Function40b6a: ; 40b6a (10:4b6a)
- ld a, [wc7d4]
- cp $1
- jr z, .asm_40b72
+Pokedex_PrintNumberIfOldMode: ; 40b6a (10:4b6a)
+ ld a, [wCurrentDexMode]
+ cp DEXMODE_OLD
+ jr z, .printnum
ret
-.asm_40b72
+
+.printnum
push hl
- ld de, -20
+ ld de, -SCREEN_WIDTH
add hl, de
ld de, wd265
lb bc, PRINTNUM_LEADINGZEROS | 1, 3
@@ -1542,31 +1551,32 @@
pop hl
ret
-Function40b82: ; 40b82 (10:4b82)
- call Function40bc4
- jr nz, .asm_40b89
+Pokedex_PlaceCaughtSymbolIfCaught: ; 40b82 (10:4b82)
+ call Pokedex_CheckCaught
+ jr nz, .place_caught_symbol
inc hl
ret
-.asm_40b89
+
+.place_caught_symbol
ld a, $4f
ld [hli], a
ret
-Function40b8d: ; 40b8d (10:4b8d)
- call Function40bd0
+Pokedex_PlaceDefaultStringIfNotSeen: ; 40b8d (10:4b8d)
+ call Pokedex_CheckSeen
ret nz
inc hl
- ld de, String_40b9a
+ ld de, .NameNotSeen
call PlaceString
scf
ret
; 40b9a (10:4b9a)
-String_40b9a: ; 40b9a
+.NameNotSeen: ; 40b9a
db "-----@"
; 40ba0
-Function40ba0: ; 40ba0
+Pokedex_DrawFootprint: ; 40ba0
hlcoord 18, 1
ld a, $62
ld [hli], a
@@ -1581,13 +1591,13 @@
; 40bb1
-Function40bb1: ; 40bb1
- ld a, [wc7d1]
- ld hl, wc7d0
+Pokedex_GetMonAtCursorPosition: ; 40bb1
+ ld a, [wDexListingCursor]
+ ld hl, wDexListingPage
add [hl]
ld e, a
ld d, $0
- ld hl, wc6d0
+ ld hl, wPokedexDataStart
add hl, de
ld a, [hl]
ld [wd265], a
@@ -1595,7 +1605,7 @@
; 40bc4
-Function40bc4: ; 40bc4 (10:4bc4)
+Pokedex_CheckCaught: ; 40bc4 (10:4bc4)
push de
push hl
ld a, [wd265]
@@ -1606,7 +1616,7 @@
ret
-Function40bd0: ; 40bd0
+Pokedex_CheckSeen: ; 40bd0
push de
push hl
ld a, [wd265]
@@ -1619,100 +1629,100 @@
-Function40bdc: ; 40bdc
- ld hl, wc6d0
- ld bc, $100
+Pokedex_ChangeMode: ; 40bdc
+ ld hl, wPokedexDataStart
+ ld bc, wPokedexMetadata - wPokedexDataStart
xor a
call ByteFill
- ld a, [wc7d4]
- ld hl, Jumptable_40bf0
- call Function41432
+ ld a, [wCurrentDexMode]
+ ld hl, .Jumptable
+ call Pokedex_LoadPointer
jp [hl]
; 40bf0
-Jumptable_40bf0: ; 40bf0 (10:4bf0)
- dw Function40bf6
- dw Function40c08
- dw Function40c30
+.Jumptable: ; 40bf0 (10:4bf0)
+ dw .NewMode
+ dw .OldMode
+ dw Pokedex_ABCMode
-Function40bf6: ; 40bf6 (10:4bf6)
+.NewMode: ; 40bf6 (10:4bf6)
ld de, NewPokedexOrder
- ld hl, wc6d0
+ ld hl, wPokedexDataStart
ld c, NUM_POKEMON
-.asm_40bfe
+.loopnew
ld a, [de]
inc de
ld [hli], a
dec c
- jr nz, .asm_40bfe
- call Function40c18
+ jr nz, .loopnew
+ call .FindLastSeen
ret
-Function40c08: ; 40c08 (10:4c08)
- ld hl, wc6d0
+.OldMode: ; 40c08 (10:4c08)
+ ld hl, wPokedexDataStart
ld a, $1
ld c, NUM_POKEMON
-.asm_40c0f
+.loopold
ld [hli], a
inc a
dec c
- jr nz, .asm_40c0f
- call Function40c18
+ jr nz, .loopold
+ call .FindLastSeen
ret
-Function40c18: ; 40c18 (10:4c18)
- ld hl, wc7ca
+.FindLastSeen: ; 40c18 (10:4c18)
+ ld hl, wPokedexDataStart + NUM_POKEMON - 1
ld d, NUM_POKEMON
ld e, d
-.asm_40c1e
+.loopfindend
ld a, [hld]
ld [wd265], a
- call Function40bd0
- jr nz, .asm_40c2b
+ call Pokedex_CheckSeen
+ jr nz, .foundend
dec d
dec e
- jr nz, .asm_40c1e
-.asm_40c2b
+ jr nz, .loopfindend
+.foundend
ld a, d
- ld [wc7d2], a
+ ld [wDexListingEnd], a
ret
-Function40c30: ; 40c30
+Pokedex_ABCMode: ; 40c30
xor a
- ld [wc7d2], a
- ld hl, wc6d0
+ ld [wDexListingEnd], a
+ ld hl, wPokedexDataStart
ld de, AlphabeticalPokedexOrder
ld c, NUM_POKEMON
-.asm_40c3c
+.loop1abc
push bc
ld a, [de]
ld [wd265], a
- call Function40bd0
- jr z, .asm_40c51
+ call Pokedex_CheckSeen
+ jr z, .skipabc
ld a, [wd265]
ld [hli], a
- ld a, [wc7d2]
+ ld a, [wDexListingEnd]
inc a
- ld [wc7d2], a
+ ld [wDexListingEnd], a
-.asm_40c51
+.skipabc
inc de
pop bc
dec c
- jr nz, .asm_40c3c
- ld a, [wc7d2]
+ jr nz, .loop1abc
+ ld a, [wDexListingEnd]
ld c, 0
-.asm_40c5b
+.loop2abc
cp NUM_POKEMON
- jr z, .asm_40c64
+ jr z, .doneabc
ld [hl], c
inc hl
inc a
- jr .asm_40c5b
+ jr .loop2abc
-.asm_40c64
+.doneabc
ret
; 40c65
@@ -1726,11 +1736,11 @@
xor a
ld [hBGMapMode], a
hlcoord 0, 12
- ld bc, $0412
- call Function40ad5
+ lb bc, 4, SCREEN_WIDTH - 2
+ call Pokedex_PlaceBorder
ld a, [wc7d8]
ld hl, Unknown_40e7d
- call Function41432
+ call Pokedex_LoadPointer
ld e, l
ld d, h
hlcoord 1, 14
@@ -1741,28 +1751,28 @@
; 40e7d
Unknown_40e7d: ; 40e7d
- dw String_40e85
- dw String_40ea6
- dw String_40ec6
- dw String_40ee4
+ dw .NewMode
+ dw .OldMode
+ dw .ABCMode
+ dw .UnownMode
; 40e85
-String_40e85: ; 40e85
- db $e1, $e2, " are listed by"
+.NewMode: ; 40e85
+ db "<PK><MN> are listed by"
next "evolution type.@"
; 40ea6
-String_40ea6: ; 40ea6
- db $e1, $e2, " are listed by"
+.OldMode: ; 40ea6
+ db "<PK><MN> are listed by"
next "official type.@"
; 40ec6
-String_40ec6: ; 40ec6
- db $e1, $e2, " are listed"
+.ABCMode: ; 40ec6
+ db "<PK><MN> are listed"
next "alphabetically.@"
; 40ee4
-String_40ee4: ; 40ee4
+.UnownMode: ; 40ee4
db "UNOWN are listed"
next "in catching order.@"
; 40f08
@@ -1771,24 +1781,25 @@
xor a
ld [hBGMapMode], a
hlcoord 0, 12
- ld bc, $412
- call Function40ad5
- ld de, String_40f32
+ lb bc, 4, SCREEN_WIDTH - 2
+ call Pokedex_PlaceBorder
+ ld de, String_ChangingModesPleaseWait
hlcoord 1, 14
call PlaceString
ld a, $1
ld [hBGMapMode], a
- ld c, $40
+ ld c, 64
call DelayFrames
ld de, SFX_CHANGE_DEX_MODE
call PlaySFX
- ld c, $40
+ ld c, 64
call DelayFrames
ret
; 40f32 (10:4f32)
-String_40f32: ; 40f32
- db "Changing modes.", $4e, "Please wait.@"
+String_ChangingModesPleaseWait: ; 40f32
+ db "Changing modes."
+ next "Please wait.@"
; 40f4f
Function40f4f: ; 40f4f (10:4f4f)
@@ -1861,7 +1872,7 @@
hlcoord 9, 3
ld bc, $408
ld a, $7f
- call Function413fe
+ call Pokedex_FillBox
ld a, [wc7d5]
hlcoord 9, 4
call Function40fcd
@@ -1926,8 +1937,8 @@
add hl, de
ld a, [hl]
ld [wc7df], a
- ld hl, wc6d0
- ld de, wc6d0
+ ld hl, wPokedexDataStart
+ ld de, wPokedexDataStart
ld c, NUM_POKEMON
xor a
ld [wc7d7], a
@@ -1938,7 +1949,7 @@
jr z, .asm_410e0
ld [wd265], a
ld [CurSpecies], a
- call Function40bc4
+ call Pokedex_CheckCaught
jr z, .asm_410e0
push hl
push de
@@ -2008,7 +2019,7 @@
ld [hBGMapMode], a
hlcoord 0, 12
ld bc, $0412
- call Function40ad5
+ call Pokedex_PlaceBorder
ld de, String_41126
hlcoord 1, 14
call PlaceString
@@ -2025,7 +2036,7 @@
; 41148
Function41148: ; 41148 (10:5148)
- ld a, [wc7d4]
+ ld a, [wCurrentDexMode]
cp $1
jp z, Function41157
call Function41229
@@ -2034,7 +2045,7 @@
Function41157: ; 41157 (10:5157)
ld hl, Unknown_41167
- ld a, [wc7d1]
+ ld a, [wDexListingCursor]
or a
jr nz, .asm_41163
ld hl, Unknown_411c8
@@ -2133,7 +2144,7 @@
; 41281
Function41281: ; 41281 (10:5281)
- ld a, [wc7d4]
+ ld a, [wCurrentDexMode]
cp $1
jp z, Function41157
ld hl, Unknown_41290
@@ -2176,7 +2187,7 @@
ld a, [hl]
cp $ff
ret z
- ld a, [wc7d1]
+ ld a, [wDexListingCursor]
and $7
swap a
add [hl]
@@ -2196,11 +2207,11 @@
Function4130e: ; 4130e (10:530e)
push de
- ld a, [wc7d2]
+ ld a, [wDexListingEnd]
dec a
ld e, a
- ld a, [wc7d1]
- ld hl, wc7d0
+ ld a, [wDexListingCursor]
+ ld hl, wDexListingPage
add [hl]
cp e
jr z, .asm_4133f
@@ -2213,7 +2224,7 @@
ld a, d
or e
jr z, .asm_41341
- ld a, [wc7d2]
+ ld a, [wDexListingEnd]
ld c, a
.asm_41333
ld a, e
@@ -2247,6 +2258,7 @@
ret
Function4135a: ; 4135a (10:535a)
+; bc = [de] - 1
ld a, [de]
ld b, a
inc de
@@ -2254,52 +2266,55 @@
dec a
ld c, a
inc de
- call Function413e0
+ call Pokedex_BlinkInfoScreenCursor
+
ld hl, hJoyPressed ; $ffa7
ld a, [hl]
and D_LEFT | D_UP
and b
- jr nz, .asm_4138f
+ jr nz, .MoveCursorLeft
ld a, [hl]
and D_RIGHT | D_DOWN
and b
- jr nz, .asm_413a0
+ jr nz, .MoveCursorRight
ld a, [hl]
and SELECT
and b
- jr nz, .asm_413c1
- call Function413f5
- jr c, .asm_413bf
+ jr nz, .Select
+ call Pokedex_CursorFrameDelay
+ jr c, .NoAction
ld hl, hJoyLast
ld a, [hl]
and D_LEFT | D_UP
and b
- jr nz, .asm_4138f
+ jr nz, .MoveCursorLeft
ld a, [hl]
and D_RIGHT | D_DOWN
and b
- jr nz, .asm_413a0
- jr .asm_413bf
-.asm_4138f
+ jr nz, .MoveCursorRight
+ jr .NoAction
+
+.MoveCursorLeft
ld a, [wc7d8]
and a
- jr z, .asm_413bf
- call Function413d4
- ld [hl], $7f
+ jr z, .NoAction
+ call Pokedex_GetCursorPosition
+ ld [hl], " "
ld hl, wc7d8
dec [hl]
- jr .asm_413af
-.asm_413a0
+ jr .UpdateCursorPosition
+
+.MoveCursorRight
ld a, [wc7d8]
cp c
- jr nc, .asm_413bf
- call Function413d4
- ld [hl], $7f
+ jr nc, .NoAction
+ call Pokedex_GetCursorPosition
+ ld [hl], " "
ld hl, wc7d8
inc [hl]
-.asm_413af
- call Function413d4
- ld [hl], $ed
+.UpdateCursorPosition
+ call Pokedex_GetCursorPosition
+ ld [hl], "▶"
ld a, $c
ld [wc7d9], a
xor a
@@ -2306,22 +2321,24 @@
ld [wc7da], a
scf
ret
-.asm_413bf
+
+.NoAction
and a
ret
-.asm_413c1
- call Function413d4
- ld [hl], $7f
+
+.Select
+ call Pokedex_GetCursorPosition
+ ld [hl], " "
ld a, [wc7d8]
cp c
- jr c, .asm_413ce
+ jr c, .Update
ld a, $ff
-.asm_413ce
+.Update
inc a
ld [wc7d8], a
- jr .asm_413af
+ jr .UpdateCursorPosition
-Function413d4: ; 413d4 (10:53d4)
+Pokedex_GetCursorPosition: ; 413d4 (10:53d4)
ld a, [wc7d8]
add a
ld l, a
@@ -2332,30 +2349,32 @@
ld l, a
ret
-Function413e0: ; 413e0 (10:53e0)
+Pokedex_BlinkInfoScreenCursor: ; 413e0 (10:53e0)
ld hl, wc7da
ld a, [hl]
inc [hl]
and $8
- jr z, .asm_413ef
- call Function413d4
- ld [hl], $7f
+ jr z, .blink_on
+ call Pokedex_GetCursorPosition
+ ld [hl], " "
ret
-.asm_413ef
- call Function413d4
- ld [hl], $ed
+
+.blink_on
+ call Pokedex_GetCursorPosition
+ ld [hl], "▶"
ret
-Function413f5: ; 413f5 (10:53f5)
+Pokedex_CursorFrameDelay: ; 413f5 (10:53f5)
ld hl, wc7d9
ld a, [hl]
and a
ret z
+
dec [hl]
scf
ret
-Function413fe: ; 413fe (10:53fe)
+Pokedex_FillBox: ; 413fe (10:53fe)
jp FillBoxWithByte
Function41401: ; 41401 (10:5401)
@@ -2391,7 +2410,7 @@
; 41432
-Function41432: ; 41432
+Pokedex_LoadPointer: ; 41432
ld e, a
ld d, 0
rept 2
@@ -2404,10 +2423,10 @@
; 4143b
Function4143b: ; 4143b
- call Function40bb1
- call Function40bd0
- jr z, .asm_4145b
- ld a, [wdef4]
+ call Pokedex_GetMonAtCursorPosition
+ call Pokedex_CheckSeen
+ jr z, .QuestionMark
+ ld a, [wFirstUnownSeen]
ld [UnownLetter], a
ld a, [wd265]
ld [CurPartySpecies], a
@@ -2416,10 +2435,10 @@
predef GetFrontpic
ret
-.asm_4145b
+.QuestionMark
ld a, BANK(sScratch)
call GetSRAMBank
- callba Function1de0d7
+ callba LoadQuestionMarkPic
ld hl, VTiles2
ld de, sScratch
ld c, 7 * 7
@@ -2431,13 +2450,13 @@
; 41478
-Function41478: ; 41478 (10:5478)
- call Function40bb1
+Pokedex_LoadCurrentFootprint: ; 41478 (10:5478)
+ call Pokedex_GetMonAtCursorPosition
-Function4147b: ; 4147b
+Pokedex_LoadAnyFootprint: ; 4147b
ld a, [wd265]
dec a
- and $f8
+ and ($ff ^ $07) ; $f8 ; $1f << 3
srl a
srl a
srl a
@@ -2463,7 +2482,7 @@
; Whoever was editing footprints forgot to fix their
; tile editor. Now each bottom half is 8 tiles off.
- ld de, $80
+ ld de, 8 tiles
add hl, de
ld e, l
@@ -2476,28 +2495,28 @@
; 414b7
-Function414b7: ; 414b7
+Pokedex_LoadGFX: ; 414b7
call DisableLCD
ld hl, VTiles2
- ld bc, $0310
+ ld bc, $31 tiles
xor a
call ByteFill
- call Function414fb
+ call Pokedex_LoadInvertedFont
call LoadFontsExtra
ld hl, VTiles2 tile $60
- ld bc, $0200
- call Function41504
- call Function41a24
- jr nz, .asm_414e0
- callba Function1ddf1c
- jr .asm_414e9
+ ld bc, $20 tiles
+ call Pokedex_InvertTiles
+ call Pokedex_CheckSGB
+ jr nz, .LoadPokedexLZ
+ callba LoadSGBPokedexGFX
+ jr .LoadPokedexSlowpokeLZ
-.asm_414e0
+.LoadPokedexLZ
ld hl, PokedexLZ
ld de, VTiles2 tile $31
call Decompress
-.asm_414e9
+.LoadPokedexSlowpokeLZ
ld hl, PokedexSlowpokeLZ
ld de, VTiles0
call Decompress
@@ -2506,12 +2525,13 @@
call EnableLCD
ret
-Function414fb: ; 414fb
+Pokedex_LoadInvertedFont: ; 414fb
call LoadStandardFont
ld hl, VTiles1
- ld bc, $0800
+ ld bc, $80 tiles
-Function41504: ; 41504
+Pokedex_InvertTiles: ; 41504
+.loop
ld a, [hl]
xor $ff
ld [hli], a
@@ -2518,18 +2538,18 @@
dec bc
ld a, b
or c
- jr nz, Function41504
+ jr nz, .loop
ret
; 4150e
PokedexLZ: ; 4150e
-INCBIN "gfx/unknown/04150e.2bpp.lz"
+INCBIN "gfx/pokedex/pokedex.2bpp.lz"
; 416b0
PokedexSlowpokeLZ: ; 416b0
INCBIN "gfx/pokedex/slowpoke.2bpp.lz"
-Function41a24: ; 41a24
+Pokedex_CheckSGB: ; 41a24
ld a, [hCGB]
or a
ret nz
@@ -2538,20 +2558,20 @@
ret
; 41a2c
-Function41a2c: ; 41a2c
+Pokedex_LoadUnownFont: ; 41a2c
ld a, BANK(sScratch)
call GetSRAMBank
ld hl, UnownFont
ld de, sScratch + $188
- ld bc, $270
+ ld bc, 39 tiles
ld a, BANK(UnownFont)
call FarCopyBytes
ld hl, sScratch + $188
- ld bc, $1b0
- call Function41504
+ ld bc, 27 tiles
+ call Pokedex_InvertTiles
ld de, sScratch + $188
ld hl, VTiles2 tile $40
- lb bc, BANK(Function41a2c), $1b
+ lb bc, BANK(Pokedex_LoadUnownFont), 27
call Request2bpp
call CloseSRAM
ret
@@ -2577,24 +2597,24 @@
ret
; 41a7f
-Function41a7f: ; 41a7f
+_NewPokedexEntry: ; 41a7f
xor a
ld [hBGMapMode], a
callba Function1de247
- call Function41af7
+ call Pokedex_ResetBGMapMode
call DisableLCD
call LoadStandardFont
call LoadFontsExtra
- call Function414b7
- call Function4147b
+ call Pokedex_LoadGFX
+ call Pokedex_LoadAnyFootprint
ld a, [wd265]
ld [CurPartySpecies], a
call Function407fd
- call Function40ba0
+ call Pokedex_DrawFootprint
hlcoord 0, 17
ld [hl], $3b
inc hl
- ld bc, $13
+ ld bc, 19
ld a, " "
call ByteFill
callba DisplayDexEntry
@@ -2611,7 +2631,7 @@
; 41ad7
-Function41ad7: ; 41ad7 (10:5ad7)
+Pokedex_SetBGMapMode3: ; 41ad7 (10:5ad7)
ld a, $3
ld [hBGMapMode], a
ld c, 4
@@ -2618,7 +2638,7 @@
call DelayFrames
ret
-Function41ae1: ; 41ae1 (10:5ae1)
+Pokedex_SetBGMapMode4: ; 41ae1 (10:5ae1)
ld a, $4
ld [hBGMapMode], a
ld c, 4
@@ -2625,17 +2645,17 @@
call DelayFrames
ret
-Function41aeb: ; 41aeb (10:5aeb)
+Pokedex_SetBGMapMode_3ifDMG_4ifCGB: ; 41aeb (10:5aeb)
ld a, [hCGB]
and a
- jr z, .asm_41af3
- call Function41ae1
-.asm_41af3
- call Function41ad7
+ jr z, .DMG
+ call Pokedex_SetBGMapMode4
+.DMG
+ call Pokedex_SetBGMapMode3
ret
-Function41af7: ; 41af7
+Pokedex_ResetBGMapMode: ; 41af7
xor a
ld [hBGMapMode], a
ret
--- a/engine/time_capsule/conversion.asm
+++ b/engine/time_capsule/conversion.asm
@@ -355,7 +355,7 @@
ld [hSCX], a
xor a
ld [wPokedexStatus], a
- callba Function41a7f
+ callba _NewPokedexEntry
call WaitPressAorB_BlinkCursor
ld a, $1
ld [wPokedexStatus], a
@@ -366,7 +366,7 @@
call MaxVolume
call RotateThreePalettesRight
ld a, [hSCX]
- add $fb
+ add -5 ; 251 ; NUM_POKEMON
ld [hSCX], a
call Functionfb8c8
pop af
@@ -378,7 +378,7 @@
call ClearTileMap
call LoadFontsExtra
call LoadStandardFont
- callba Function40ab2
+ callba Pokedex_PlaceFrontpicTopLeftCorner
call Function3200
callba GetEnemyMonDVs
ld a, [hli]
--- /dev/null
+++ b/engine/warp_connection.asm
@@ -1,0 +1,440 @@
+
+RunCallback_05_03: ; 1045b0
+ call Clearwc7e8
+ call ResetMapBufferEventFlags
+ call ResetFlashIfOutOfCave
+ call GetCurrentMapTrigger
+ call ResetBikeFlags
+ ld a, $5
+ call RunMapCallback
+
+RunCallback_03: ; 1045c4
+ callba ClearCmdQueue
+ ld a, $3
+ call RunMapCallback
+ call GetMapHeaderTimeOfDayNybble
+ ld [wc2d0], a
+ ret
+
+
+EnterMapConnection: ; 1045d6
+; Return carry if a connection has been entered.
+ ld a, [wPlayerStepDirection]
+ and a
+ jp z, EnterSouthConnection
+ cp 1
+ jp z, EnterNorthConnection
+ cp 2
+ jp z, EnterWestConnection
+ cp 3
+ jp z, EnterEastConnection
+ ret
+; 1045ed
+
+
+EnterWestConnection: ; 1045ed
+ ld a, [WestConnectedMapGroup]
+ ld [MapGroup], a
+ ld a, [WestConnectedMapNumber]
+ ld [MapNumber], a
+ ld a, [WestConnectionStripXOffset]
+ ld [XCoord], a
+ ld a, [WestConnectionStripYOffset]
+ ld hl, YCoord
+ add [hl]
+ ld [hl], a
+ ld c, a
+ ld hl, WestConnectionWindow
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ srl c
+ jr z, .skip_to_load
+ ld a, [WestConnectedMapWidth]
+ add 6
+ ld e, a
+ ld d, 0
+
+.loop
+ add hl, de
+ dec c
+ jr nz, .loop
+
+.skip_to_load
+ ld a, l
+ ld [wd194], a
+ ld a, h
+ ld [wd194 + 1], a
+ jp EnteredConnection
+; 104629
+
+
+EnterEastConnection: ; 104629
+ ld a, [EastConnectedMapGroup]
+ ld [MapGroup], a
+ ld a, [EastConnectedMapNumber]
+ ld [MapNumber], a
+ ld a, [EastConnectionStripXOffset]
+ ld [XCoord], a
+ ld a, [EastConnectionStripYOffset]
+ ld hl, YCoord
+ add [hl]
+ ld [hl], a
+ ld c, a
+ ld hl, EastConnectionWindow
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ srl c
+ jr z, .skip_to_load
+ ld a, [EastConnectedMapWidth]
+ add 6
+ ld e, a
+ ld d, 0
+
+.loop
+ add hl, de
+ dec c
+ jr nz, .loop
+
+.skip_to_load
+ ld a, l
+ ld [wd194], a
+ ld a, h
+ ld [wd194 + 1], a
+ jp EnteredConnection
+; 104665
+
+
+EnterNorthConnection: ; 104665
+ ld a, [NorthConnectedMapGroup]
+ ld [MapGroup], a
+ ld a, [NorthConnectedMapNumber]
+ ld [MapNumber], a
+ ld a, [NorthConnectionStripYOffset]
+ ld [YCoord], a
+ ld a, [NorthConnectionStripXOffset]
+ ld hl, XCoord
+ add [hl]
+ ld [hl], a
+ ld c, a
+ ld hl, NorthConnectionWindow
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld b, 0
+ srl c
+ add hl, bc
+ ld a, l
+ ld [wd194], a
+ ld a, h
+ ld [wd194 + 1], a
+ jp EnteredConnection
+; 104696
+
+
+EnterSouthConnection: ; 104696
+ ld a, [SouthConnectedMapGroup]
+ ld [MapGroup], a
+ ld a, [SouthConnectedMapNumber]
+ ld [MapNumber], a
+ ld a, [SouthConnectionStripYOffset]
+ ld [YCoord], a
+ ld a, [SouthConnectionStripXOffset]
+ ld hl, XCoord
+ add [hl]
+ ld [hl], a
+ ld c, a
+ ld hl, SouthConnectionWindow
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld b, 0
+ srl c
+ add hl, bc
+ ld a, l
+ ld [wd194], a
+ ld a, h
+ ld [wd194 + 1], a
+ ; fallthrough
+; 1046c4
+
+EnteredConnection: ; 1046c4
+ scf
+ ret
+; 1046c6
+
+LoadWarpData: ; 1046c6
+ call .SaveDigWarp
+ call .SetSpawn
+ ld a, [wNextWarp]
+ ld [WarpNumber], a
+ ld a, [wNextMapGroup]
+ ld [MapGroup], a
+ ld a, [wNextMapNumber]
+ ld [MapNumber], a
+ ret
+
+.SaveDigWarp: ; 1046df (41:46df)
+ call GetMapPermission
+ call CheckOutdoorMap
+ ret nz
+ ld a, [wNextMapGroup]
+ ld b, a
+ ld a, [wNextMapNumber]
+ ld c, a
+ call GetAnyMapPermission
+ call CheckIndoorMap
+ ret nz
+ ld a, [wPrevMapGroup]
+ cp GROUP_MOUNT_MOON_SQUARE
+ jr nz, .not_mt_moon_or_tin_tower
+ ld a, [wPrevMapNumber]
+ cp MAP_MOUNT_MOON_SQUARE
+ ret z
+ cp MAP_TIN_TOWER_ROOF
+ ret z
+.not_mt_moon_or_tin_tower
+ ld a, [wPrevWarp]
+ ld [wDigWarp], a
+ ld a, [wPrevMapGroup]
+ ld [wDigMapGroup], a
+ ld a, [wPrevMapNumber]
+ ld [wDigMapNumber], a
+ ret
+
+.SetSpawn: ; 104718 (41:4718)
+ call GetMapPermission
+ call CheckOutdoorMap
+ ret nz
+ ld a, [wNextMapGroup]
+ ld b, a
+ ld a, [wNextMapNumber]
+ ld c, a
+ call GetAnyMapPermission
+ call CheckIndoorMap
+ ret nz
+ ld a, [wNextMapGroup]
+ ld b, a
+ ld a, [wNextMapNumber]
+ ld c, a
+ call GetAnyMapTileset
+ ld a, c
+ cp TILESET_POKECENTER
+ jr z, .pokecenter_pokecom
+ cp TILESET_POKECOM_CENTER
+ jr z, .pokecenter_pokecom
+ ret
+.pokecenter_pokecom
+ ld a, [wPrevMapGroup]
+ ld [wLastSpawnMapGroup], a
+ ld a, [wPrevMapNumber]
+ ld [wLastSpawnMapNumber], a
+ ret
+
+LoadMapTimeOfDay: ; 104750
+ ld hl, VramState
+ res 6, [hl]
+ ld a, $1
+ ld [wSpriteUpdatesEnabled], a
+ callba Function8c0e5
+ callba Function8c001
+ call OverworldTextModeSwitch
+ call Function104770
+ call Function1047a3
+ ret
+
+Function104770: ; 104770 (41:4770)
+ ld a, VBGMap0 / $100
+ ld [wBGMapAnchor + 1], a
+ xor a
+ ld [wBGMapAnchor], a
+ ld [hSCY], a
+ ld [hSCX], a
+ callba Function5958
+ ld a, [rVBK]
+ push af
+ ld a, $1
+ ld [rVBK], a
+ xor a
+ lb bc, 4, 0
+ hlbgcoord 0, 0
+ call ByteFill
+ pop af
+ ld [rVBK], a
+ ld a, $60
+ lb bc, 4, 0
+ hlbgcoord 0, 0
+ call ByteFill
+ ret
+
+Function1047a3: ; 1047a3 (41:47a3)
+ decoord 0, 0
+ call .copy
+ ld a, [hCGB]
+ and a
+ ret z
+
+ decoord 0, 0, AttrMap
+ ld a, $1
+ ld [rVBK], a
+.copy:
+ hlbgcoord 0, 0
+ ld c, SCREEN_WIDTH
+ ld b, SCREEN_HEIGHT
+.row
+ push bc
+.column
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec c
+ jr nz, .column
+ ld bc, $20 - SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .row
+ ld a, $0
+ ld [rVBK], a
+ ret
+
+LoadGraphics: ; 1047cf
+ call LoadTilesetHeader
+ call LoadTileset
+ xor a
+ ld [hMapAnims], a
+ xor a
+ ld [hTileAnimFrame], a
+ callba RefreshSprites
+ call LoadFontsExtra
+ callba Function106594
+ ret
+
+LoadMapPalettes: ; 1047eb
+ ld b, SCGB_09
+ jp GetSGBLayout
+; 1047f0
+
+RefreshMapSprites: ; 1047f0
+ call ClearSprites
+ callba ReturnFromMapSetupScript
+ call GetMovementPermissions
+ callba Function579d
+ callba CheckReplaceKrisSprite
+ ld hl, wPlayerSpriteSetupFlags
+ bit 6, [hl]
+ jr nz, .skip
+ ld hl, VramState
+ set 0, [hl]
+ call Function2e31
+.skip
+ ld a, [wPlayerSpriteSetupFlags]
+ and $1c
+ ld [wPlayerSpriteSetupFlags], a
+ ret
+
+CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
+ ld a, [wPlayerStepDirection]
+ cp STANDING
+ ret z
+ and a ; DOWN
+ jr z, .down
+ cp UP
+ jr z, .up
+ cp LEFT
+ jr z, .left
+ cp RIGHT
+ jr z, .right
+ and a
+ ret
+
+.down
+ ld a, [PlayerNextMapY]
+ sub 4
+ ld b, a
+ ld a, [MapHeight]
+ add a
+ cp b
+ jr z, .ok
+ and a
+ ret
+
+.up
+ ld a, [PlayerNextMapY]
+ sub 4
+ cp -1
+ jr z, .ok
+ and a
+ ret
+
+.left
+ ld a, [PlayerNextMapX]
+ sub $4
+ cp -1
+ jr z, .ok
+ and a
+ ret
+
+.right
+ ld a, [PlayerNextMapX]
+ sub 4
+ ld b, a
+ ld a, [MapWidth]
+ add a
+ cp b
+ jr z, .ok
+ and a
+ ret
+
+.ok
+ scf
+ ret
+
+
+GetCoordOfUpperLeftCorner:: ; 10486d
+ ld hl, OverworldMap
+ ld a, [XCoord]
+ bit 0, a
+ jr nz, .increment_then_halve1
+ srl a
+ add $1
+ jr .resume
+
+.increment_then_halve1
+ add $1
+ srl a
+
+.resume
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [MapWidth]
+ add $6
+ ld c, a
+ ld b, $0
+ ld a, [YCoord]
+ bit 0, a
+ jr nz, .increment_then_halve2
+ srl a
+ add $1
+ jr .resume2
+
+.increment_then_halve2
+ add $1
+ srl a
+
+.resume2
+ call AddNTimes
+ ld a, l
+ ld [wd194], a
+ ld a, h
+ ld [wd194 + 1], a
+ ld a, [YCoord]
+ and $1
+ ld [wd196], a
+ ld a, [XCoord]
+ and $1
+ ld [wd197], a
+ ret
+; 1048ba
--- a/event/photo.asm
+++ b/event/photo.asm
@@ -162,7 +162,7 @@
ld a, BANK(sScratch)
call GetSRAMBank
- ld de, w6_d000
+ ld de, wBackupTilemap
ld hl, sScratch
ld a, [hROMBank]
ld b, a
binary files /dev/null b/gfx/pics/questionmark/front.2bpp.lz differ
binary files /dev/null b/gfx/pokedex/pokedex.2bpp.lz differ
binary files /dev/null b/gfx/pokedex/sgb.2bpp.lz differ
binary files a/gfx/unknown/04150e.2bpp.lz /dev/null differ
binary files a/gfx/unknown/1ddf33.2bpp.lz /dev/null differ
binary files a/gfx/unknown/1de0e1.2bpp.lz /dev/null differ
--- a/home.asm
+++ b/home.asm
@@ -2192,7 +2192,7 @@
; 3f88
Function3f88:: ; 3f88
- ld hl, w6_d000
+ ld hl, wBackupTilemap
ld b, $0
.asm_3f8d
push bc
@@ -2213,7 +2213,7 @@
; 3f9f
Function3f9f:: ; 3f9f
- ld hl, w6_d000
+ ld hl, wBackupTilemap
.asm_3fa2
push bc
ld c, $8
--- a/home/map.asm
+++ b/home/map.asm
@@ -1425,10 +1425,10 @@
ld [rSVBK], a
ld a, e
- ld de, w6_d000
+ ld de, wBackupTilemap
call FarDecompress
- ld hl, w6_d000
+ ld hl, wBackupTilemap
ld de, VTiles2
ld bc, $60 tiles
call CopyBytes
--- a/main.asm
+++ b/main.asm
@@ -45,9 +45,9 @@
; 403f
PushOAM: ; 403f
- ld a, Sprites >> 8
+ ld a, Sprites / $100
ld [rDMA], a
- ld a, $28
+ ld a, 40
.loop
dec a
jr nz, .loop
@@ -149,12 +149,12 @@
ld [rSVBK], a
ld a, $60
- ld hl, w6_d000
+ ld hl, wBackupTilemap
lb bc, 4, 0
call ByteFill
- ld a, w6_d000 / $100
+ ld a, wBackupTilemap / $100
ld [rHDMA1], a
- ld a, w6_d000 % $100
+ ld a, wBackupTilemap % $100
ld [rHDMA2], a
ld a, (VBGMap0 % $8000) / $100
ld [rHDMA3], a
@@ -3616,9 +3616,9 @@
.CheckCanDig: ; cbb8
call GetMapPermission
- cp $4
+ cp CAVE
jr z, .incave
- cp $7
+ cp DUNGEON
jr z, .incave
.fail
ld a, $2
@@ -3625,7 +3625,7 @@
ret
.incave
- ld hl, wdca9
+ ld hl, wDigWarp
ld a, [hli]
and a
jr z, .fail
@@ -3640,8 +3640,8 @@
; cbd8
.DoDig: ; cbd8
- ld hl, wdca9
- ld de, wd146
+ ld hl, wDigWarp
+ ld de, wNextWarp
ld bc, 3
call CopyBytes
call GetPartyNick
@@ -3755,9 +3755,9 @@
jr .nope
.CheckIfSpawnPoint
- ld a, [wdcb2]
+ ld a, [wLastSpawnMapGroup]
ld d, a
- ld a, [wdcb3]
+ ld a, [wLastSpawnMapNumber]
ld e, a
callba IsSpawnPoint
jr nc, .nope
@@ -6559,11 +6559,11 @@
call AddNTimes
predef GetUnownLetter
callab UpdateUnownDex
- ld a, [wdef4]
+ ld a, [wFirstUnownSeen]
and a
jr nz, .done
ld a, [UnownLetter]
- ld [wdef4], a
+ ld [wFirstUnownSeen], a
.done
and a
@@ -18176,12 +18176,12 @@
push af
ld a, $6
ld [rSVBK], a
- ld hl, w6_d000
- ld bc, w6_d400 - w6_d000
+ ld hl, wBackupTilemap
+ ld bc, wBackupAttrMap - wBackupTilemap
ld a, " "
call ByteFill
hlbgcoord 0, 0
- ld de, w6_d000
+ ld de, wBackupTilemap
ld b, $0
ld c, $40
call Request2bpp
@@ -19615,15 +19615,15 @@
ld a, $6
ld [rSVBK], a
ld a, b
- ld de, w6_d000 + $800
+ ld de, wBackupTilemap + $800
call FarDecompress
pop bc
- ld hl, w6_d000
- ld de, w6_d000 + $800
+ ld hl, wBackupTilemap
+ ld de, wBackupTilemap + $800
call Function512ab
pop hl
push hl
- ld de, w6_d000
+ ld de, wBackupTilemap
ld c, 7 * 7
ld a, [hROMBank]
ld b, a
@@ -19666,7 +19666,7 @@
ld a, $1
ld [rVBK], a
push hl
- ld de, w6_d000
+ ld de, wBackupTilemap
ld c, 7 * 7
ld a, [hROMBank]
ld b, a
@@ -19697,7 +19697,7 @@
call Function5114f
pop bc
pop hl
- ld de, w6_d000
+ ld de, wBackupTilemap
ld a, [hROMBank]
ld b, a
call Get2bpp
@@ -19707,7 +19707,7 @@
; 5114f
Function5114f: ; 5114f
- ld hl, w6_d000
+ ld hl, wBackupTilemap
swap c
ld a, c
and $f
@@ -19766,14 +19766,14 @@
inc hl
ld a, d
call GetFarHalfword
- ld de, w6_d000
+ ld de, wBackupTilemap
pop af
call FarDecompress
- ld hl, w6_d000
+ ld hl, wBackupTilemap
ld c, 6 * 6
call Function5127c
pop hl
- ld de, w6_d000
+ ld de, wBackupTilemap
ld a, [hROMBank]
ld b, a
call Get2bpp
@@ -19872,10 +19872,10 @@
ld a, BANK(TrainerPicPointers)
call GetFarHalfword
pop af
- ld de, w6_d000
+ ld de, wBackupTilemap
call FarDecompress
pop hl
- ld de, w6_d000
+ ld de, wBackupTilemap
ld c, 7 * 7
ld a, [hROMBank]
ld b, a
@@ -19901,10 +19901,10 @@
push de
push bc
ld a, b
- ld de, w6_d000
+ ld de, wBackupTilemap
call FarDecompress
pop bc
- ld de, w6_d000
+ ld de, wBackupTilemap
pop hl
ld a, [hROMBank]
ld b, a
@@ -22096,7 +22096,7 @@
; fba2e
-Functionfba2e: ; fba2e (3e:7a2e)
+PrintUnownWord: ; fba2e (3e:7a2e)
hlcoord 4, 15
ld bc, 12
ld a, " "
@@ -22117,13 +22117,13 @@
ld e, a
ld d, [hl]
hlcoord 4, 15
-.asm_fba52
+.loop
ld a, [de]
- cp $ff
+ cp -1
ret z
inc de
ld [hli], a
- jr .asm_fba52
+ jr .loop
; fba5a (3e:7a5a)
UnownWords: ; fba5a
@@ -22220,18 +22220,18 @@
Function104006: ; 104006
decoord 0, 0, AttrMap
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function104263
decoord 0, 0
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function10425f
ld a, $0
ld [rVBK], a
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function10419d
ld a, $1
ld [rVBK], a
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function10419d
ret
; 10402d
@@ -22243,11 +22243,11 @@
Function104033: ; 104033
decoord 0, 0
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function10425f
ld a, $0
ld [rVBK], a
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function10419d
ret
; 104047
@@ -22259,11 +22259,11 @@
Function10404d: ; 10404d
decoord 0, 0, AttrMap
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function104263
ld a, $1
ld [rVBK], a
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function10419d
ret
; 104061
@@ -22275,10 +22275,10 @@
Function104067: ; 104067
decoord 0, 0, AttrMap
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function104263
decoord 0, 0
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function10425f
call DelayFrame
di
@@ -22286,11 +22286,11 @@
push af
ld a, $1
ld [rVBK], a
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function1041ad
ld a, $0
ld [rVBK], a
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function1041ad
pop af
ld [rVBK], a
@@ -22305,10 +22305,10 @@
Function1040a2: ; 1040a2
decoord 0, 0, AttrMap
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function104263
decoord 0, 0
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function10425f
call DelayFrame
di
@@ -22316,11 +22316,11 @@
push af
ld a, $1
ld [rVBK], a
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function1041c1
ld a, $0
ld [rVBK], a
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function1041c1
pop af
ld [rVBK], a
@@ -22375,10 +22375,10 @@
Function104116: ; 104116
decoord 0, 0, AttrMap
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function104263
decoord 0, 0
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function10425f
call DelayFrame
di
@@ -22386,11 +22386,11 @@
push af
ld a, $1
ld [rVBK], a
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function1041b7
ld a, $0
ld [rVBK], a
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function1041b7
pop af
ld [rVBK], a
@@ -22405,19 +22405,19 @@
Function10414e: ; 10414e
decoord 0, 0, AttrMap
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function104263
ld c, $ff
decoord 0, 0
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function104265
ld a, $1
ld [rVBK], a
- ld hl, w6_d400
+ ld hl, wBackupAttrMap
call Function1041ad
ld a, $0
ld [rVBK], a
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function1041ad
ret
; 104177
@@ -22436,7 +22436,7 @@
ld [rSVBK], a
ld a, [rVBK]
push af
- call Function10419c
+ call ._hl_
pop af
ld [rVBK], a
pop af
@@ -22448,7 +22448,7 @@
ret
; 10419c
-Function10419c: ; 10419c
+._hl_: ; 10419c
jp [hl]
; 10419d
@@ -22658,7 +22658,7 @@
push bc
push hl
- ; Copy c tiles of the 2bpp from b:de to w6_d000
+ ; Copy c tiles of the 2bpp from b:de to wBackupTilemap
ld a, b ; bank
ld l, c ; number of tiles
ld h, $0
@@ -22669,7 +22669,7 @@
ld c, l
ld h, d ; address
ld l, e
- ld de, w6_d000
+ ld de, wBackupTilemap
call FarCopyBytes
pop hl
@@ -22681,7 +22681,7 @@
ld d, h
ld e, l
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function104209
; restore the previous bank
@@ -22736,7 +22736,7 @@
ld b, h
ld h, d
ld l, e
- ld de, w6_d000
+ ld de, wBackupTilemap
call FarCopyBytesDouble_DoubleBankSwitch
pop hl
@@ -22748,7 +22748,7 @@
ld d, h
ld e, l
- ld hl, w6_d000
+ ld hl, wBackupTilemap
call Function104209
pop af
@@ -22762,22 +22762,22 @@
; 104309
Function104309:
- ld hl, w6_d000
+ ld hl, wBackupTilemap
decoord 0, 0
call Function10433a
- ld hl, w6_d000 + $80
+ ld hl, wBackupTilemap + $80
decoord 0, 0, AttrMap
call Function10433a
ld a, $1
ld [rVBK], a
ld c, $8
- ld hl, w6_d000 + $80
+ ld hl, wBackupTilemap + $80
debgcoord 0, 0, VBGMap1
call Function104209
ld a, $0
ld [rVBK], a
ld c, $8
- ld hl, w6_d000
+ ld hl, wBackupTilemap
debgcoord 0, 0, VBGMap1
call Function104209
ret
@@ -22785,7 +22785,7 @@
Function10433a: ; 10433a (41:433a)
ld b, 4
.outer_loop
- ld c, 20
+ ld c, SCREEN_WIDTH
.inner_loop
ld a, [de]
ld [hli], a
@@ -22793,7 +22793,7 @@
dec c
jr nz, .inner_loop
ld a, l
- add $20 - 20
+ add $20 - SCREEN_WIDTH
ld l, a
ld a, h
adc $0
@@ -22816,447 +22816,8 @@
BoulderDustGFX: INCBIN "gfx/misc/boulderdust.2bpp"
FishingRodGFX4: INCBIN "gfx/misc/fishing4.2bpp"
+INCLUDE "engine/warp_connection.asm"
-RunCallback_05_03: ; 1045b0
- call Clearwc7e8
- call ResetMapBufferEventFlags
- call ResetFlashIfOutOfCave
- call GetCurrentMapTrigger
- call ResetBikeFlags
- ld a, $5
- call RunMapCallback
-
-RunCallback_03: ; 1045c4
- callba ClearCmdQueue
- ld a, $3
- call RunMapCallback
- call GetMapHeaderTimeOfDayNybble
- ld [wc2d0], a
- ret
-
-
-EnterMapConnection: ; 1045d6
-; Return carry if a connection has been entered.
- ld a, [wPlayerStepDirection]
- and a
- jp z, EnterSouthConnection
- cp 1
- jp z, EnterNorthConnection
- cp 2
- jp z, EnterWestConnection
- cp 3
- jp z, EnterEastConnection
- ret
-; 1045ed
-
-
-EnterWestConnection: ; 1045ed
- ld a, [WestConnectedMapGroup]
- ld [MapGroup], a
- ld a, [WestConnectedMapNumber]
- ld [MapNumber], a
- ld a, [WestConnectionStripXOffset]
- ld [XCoord], a
- ld a, [WestConnectionStripYOffset]
- ld hl, YCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, WestConnectionWindow
- ld a, [hli]
- ld h, [hl]
- ld l, a
- srl c
- jr z, .skip_to_load
- ld a, [WestConnectedMapWidth]
- add 6
- ld e, a
- ld d, 0
-
-.loop
- add hl, de
- dec c
- jr nz, .loop
-
-.skip_to_load
- ld a, l
- ld [wd194], a
- ld a, h
- ld [wd194 + 1], a
- jp EnteredConnection
-; 104629
-
-
-EnterEastConnection: ; 104629
- ld a, [EastConnectedMapGroup]
- ld [MapGroup], a
- ld a, [EastConnectedMapNumber]
- ld [MapNumber], a
- ld a, [EastConnectionStripXOffset]
- ld [XCoord], a
- ld a, [EastConnectionStripYOffset]
- ld hl, YCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, EastConnectionWindow
- ld a, [hli]
- ld h, [hl]
- ld l, a
- srl c
- jr z, .skip_to_load
- ld a, [EastConnectedMapWidth]
- add 6
- ld e, a
- ld d, 0
-
-.loop
- add hl, de
- dec c
- jr nz, .loop
-
-.skip_to_load
- ld a, l
- ld [wd194], a
- ld a, h
- ld [wd194 + 1], a
- jp EnteredConnection
-; 104665
-
-
-EnterNorthConnection: ; 104665
- ld a, [NorthConnectedMapGroup]
- ld [MapGroup], a
- ld a, [NorthConnectedMapNumber]
- ld [MapNumber], a
- ld a, [NorthConnectionStripYOffset]
- ld [YCoord], a
- ld a, [NorthConnectionStripXOffset]
- ld hl, XCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, NorthConnectionWindow
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld b, 0
- srl c
- add hl, bc
- ld a, l
- ld [wd194], a
- ld a, h
- ld [wd194 + 1], a
- jp EnteredConnection
-; 104696
-
-
-EnterSouthConnection: ; 104696
- ld a, [SouthConnectedMapGroup]
- ld [MapGroup], a
- ld a, [SouthConnectedMapNumber]
- ld [MapNumber], a
- ld a, [SouthConnectionStripYOffset]
- ld [YCoord], a
- ld a, [SouthConnectionStripXOffset]
- ld hl, XCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, SouthConnectionWindow
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld b, 0
- srl c
- add hl, bc
- ld a, l
- ld [wd194], a
- ld a, h
- ld [wd194 + 1], a
- ; fallthrough
-; 1046c4
-
-EnteredConnection: ; 1046c4
- scf
- ret
-; 1046c6
-
-LoadWarpData: ; 1046c6
- call Function1046df
- call Function104718
- ld a, [wd146]
- ld [WarpNumber], a
- ld a, [wd147]
- ld [MapGroup], a
- ld a, [wd148]
- ld [MapNumber], a
- ret
-
-Function1046df: ; 1046df (41:46df)
- call GetMapPermission
- call CheckOutdoorMap
- ret nz
- ld a, [wd147]
- ld b, a
- ld a, [wd148]
- ld c, a
- call GetAnyMapPermission
- call CheckIndoorMap
- ret nz
- ld a, [wd14a]
- cp $f
- jr nz, .asm_104705
- ld a, [wd14b]
- cp $a
- ret z
- cp $c
- ret z
-.asm_104705
- ld a, [wd149]
- ld [wdca9], a
- ld a, [wd14a]
- ld [wdcaa], a
- ld a, [wd14b]
- ld [wdcab], a
- ret
-
-Function104718: ; 104718 (41:4718)
- call GetMapPermission
- call CheckOutdoorMap
- ret nz
- ld a, [wd147]
- ld b, a
- ld a, [wd148]
- ld c, a
- call GetAnyMapPermission
- call CheckIndoorMap
- ret nz
- ld a, [wd147]
- ld b, a
- ld a, [wd148]
- ld c, a
- call GetAnyMapTileset
- ld a, c
- cp $7
- jr z, .asm_104743
- cp $15
- jr z, .asm_104743
- ret
-.asm_104743
- ld a, [wd14a]
- ld [wdcb2], a
- ld a, [wd14b]
- ld [wdcb3], a
- ret
-
-LoadMapTimeOfDay: ; 104750
- ld hl, VramState
- res 6, [hl]
- ld a, $1
- ld [wSpriteUpdatesEnabled], a
- callba Function8c0e5
- callba Function8c001
- call OverworldTextModeSwitch
- call Function104770
- call Function1047a3
- ret
-
-Function104770: ; 104770 (41:4770)
- ld a, VBGMap0 / $100
- ld [wBGMapAnchor + 1], a
- xor a
- ld [wBGMapAnchor], a
- ld [hSCY], a
- ld [hSCX], a
- callba Function5958
- ld a, [rVBK]
- push af
- ld a, $1
- ld [rVBK], a
- xor a
- lb bc, 4, 0
- hlbgcoord 0, 0
- call ByteFill
- pop af
- ld [rVBK], a
- ld a, $60
- lb bc, 4, 0
- hlbgcoord 0, 0
- call ByteFill
- ret
-
-Function1047a3: ; 1047a3 (41:47a3)
- decoord 0, 0
- call .copy
- ld a, [hCGB]
- and a
- ret z
-
- decoord 0, 0, AttrMap
- ld a, $1
- ld [rVBK], a
-.copy:
- hlbgcoord 0, 0
- ld c, SCREEN_WIDTH
- ld b, SCREEN_HEIGHT
-.row
- push bc
-.column
- ld a, [de]
- inc de
- ld [hli], a
- dec c
- jr nz, .column
- ld bc, $20 - SCREEN_WIDTH
- add hl, bc
- pop bc
- dec b
- jr nz, .row
- ld a, $0
- ld [rVBK], a
- ret
-
-LoadGraphics: ; 1047cf
- call LoadTilesetHeader
- call LoadTileset
- xor a
- ld [hMapAnims], a
- xor a
- ld [hTileAnimFrame], a
- callba RefreshSprites
- call LoadFontsExtra
- callba Function106594
- ret
-
-LoadMapPalettes: ; 1047eb
- ld b, SCGB_09
- jp GetSGBLayout
-; 1047f0
-
-RefreshMapSprites: ; 1047f0
- call ClearSprites
- callba ReturnFromMapSetupScript
- call GetMovementPermissions
- callba Function579d
- callba CheckReplaceKrisSprite
- ld hl, wPlayerSpriteSetupFlags
- bit 6, [hl]
- jr nz, .skip
- ld hl, VramState
- set 0, [hl]
- call Function2e31
-.skip
- ld a, [wPlayerSpriteSetupFlags]
- and $1c
- ld [wPlayerSpriteSetupFlags], a
- ret
-
-CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
- ld a, [wPlayerStepDirection]
- cp STANDING
- ret z
- and a ; DOWN
- jr z, .down
- cp UP
- jr z, .up
- cp LEFT
- jr z, .left
- cp RIGHT
- jr z, .right
- and a
- ret
-
-.down
- ld a, [PlayerNextMapY]
- sub 4
- ld b, a
- ld a, [MapHeight]
- add a
- cp b
- jr z, .ok
- and a
- ret
-
-.up
- ld a, [PlayerNextMapY]
- sub 4
- cp -1
- jr z, .ok
- and a
- ret
-
-.left
- ld a, [PlayerNextMapX]
- sub $4
- cp -1
- jr z, .ok
- and a
- ret
-
-.right
- ld a, [PlayerNextMapX]
- sub 4
- ld b, a
- ld a, [MapWidth]
- add a
- cp b
- jr z, .ok
- and a
- ret
-
-.ok
- scf
- ret
-
-
-GetCoordOfUpperLeftCorner:: ; 10486d
- ld hl, OverworldMap
- ld a, [XCoord]
- bit 0, a
- jr nz, .increment_then_halve1
- srl a
- add $1
- jr .resume
-
-.increment_then_halve1
- add $1
- srl a
-
-.resume
- ld c, a
- ld b, $0
- add hl, bc
- ld a, [MapWidth]
- add $6
- ld c, a
- ld b, $0
- ld a, [YCoord]
- bit 0, a
- jr nz, .increment_then_halve2
- srl a
- add $1
- jr .resume2
-
-.increment_then_halve2
- add $1
- srl a
-
-.resume2
- call AddNTimes
- ld a, l
- ld [wd194], a
- ld a, h
- ld [wd194 + 1], a
- ld a, [YCoord]
- and $1
- ld [wd196], a
- ld a, [XCoord]
- and $1
- ld [wd197], a
- ret
-; 1048ba
-
INCLUDE "engine/mysterygift.asm"
INCLUDE "battle/used_move_text.asm"
@@ -23824,7 +23385,7 @@
INCLUDE "engine/diploma.asm"
-Function1ddf1c: ; 1ddf1c
+LoadSGBPokedexGFX: ; 1ddf1c
ld hl, LZ_1ddf33
ld de, VTiles2 tile $31
call Decompress
@@ -23840,21 +23401,21 @@
; 1ddf33 (77:5f33)
LZ_1ddf33: ; 1ddf33
-INCBIN "gfx/unknown/1ddf33.2bpp.lz"
+INCBIN "gfx/pokedex/sgb.2bpp.lz"
; 1de0d7
-Function1de0d7: ; 1de0d7
- ld hl, LZ_1de0e1
+LoadQuestionMarkPic: ; 1de0d7
+ ld hl, .QuestionMarkLZ
ld de, sScratch
call Decompress
ret
; 1de0e1
-LZ_1de0e1: ; 1de0e1
-INCBIN "gfx/unknown/1de0e1.2bpp.lz"
+.QuestionMarkLZ: ; 1de0e1
+INCBIN "gfx/pics/questionmark/front.2bpp.lz"
; 1de171
-Function1de171: ; 1de171 (77:6171)
+DrawPokedexListWindow: ; 1de171 (77:6171)
ld a, $32
hlcoord 0, 17
ld bc, 12
@@ -23864,46 +23425,49 @@
call ClearBox
ld a, $34
hlcoord 0, 0
- ld bc, $b
+ ld bc, 11
call ByteFill
ld a, $39
hlcoord 0, 16
- ld bc, $b
+ ld bc, 11
call ByteFill
hlcoord 5, 0
ld [hl], $3f
hlcoord 5, 16
ld [hl], $40
- ld a, [wc7d4]
- cp $1
- jr z, .asm_1de1bf
+ ld a, [wCurrentDexMode]
+ cp DEXMODE_OLD
+ jr z, .OldMode
+; scroll bar
hlcoord 11, 0
ld [hl], $50
ld a, $51
hlcoord 11, 1
ld b, SCREEN_HEIGHT - 3
- call Function1de27f
+ call Bank77_FillColumn
ld [hl], $52
- jr .asm_1de1d0
-.asm_1de1bf
+ jr .Done
+
+.OldMode
+; no scroll bar
hlcoord 11, 0
ld [hl], $66
ld a, $67
hlcoord 11, 1
ld b, SCREEN_HEIGHT - 3
- call Function1de27f
+ call Bank77_FillColumn
ld [hl], $68
-.asm_1de1d0
+.Done
ret
-Function1de1d1: ; 1de1d1 (77:61d1)
+DrawPokedexSearchResultsWindow: ; 1de1d1 (77:61d1)
ld a, $34
hlcoord 0, 0
- ld bc, $b
+ ld bc, 11
call ByteFill
ld a, $39
hlcoord 0, 10
- ld bc, $b
+ ld bc, 11
call ByteFill
hlcoord 5, 0
ld [hl], $3f
@@ -23914,15 +23478,15 @@
ld a, $67
hlcoord 11, 1
ld b, SCREEN_HEIGHT / 2
- call Function1de27f
+ call Bank77_FillColumn
ld [hl], $68
ld a, $34
hlcoord 0, 11
- ld bc, $b
+ ld bc, 11
call ByteFill
ld a, $39
hlcoord 0, 17
- ld bc, $b
+ ld bc, 11
call ByteFill
hlcoord 11, 11
ld [hl], $66
@@ -23929,20 +23493,21 @@
ld a, $67
hlcoord 11, 12
ld b, 5
- call Function1de27f
+ call Bank77_FillColumn
ld [hl], $68
hlcoord 0, 12
lb bc, 5, 11
call ClearBox
- ld de, String_1de23c
+ ld de, .esults_D
hlcoord 0, 12
call PlaceString
ret
; 1de23c (77:623c)
-String_1de23c: ; 1de23c
-; At a glance, this is less coherent in the Japanese charset.
+.esults_D: ; 1de23c
+; (SEARCH R)
db "ESULTS<NEXT>"
+; (### FOUN)
next "D!@"
; 1de247
@@ -23961,8 +23526,8 @@
ld [hl], $66
hlcoord 19, 1
ld a, $67
- ld b, SCREEN_HEIGHT - 3
- call Function1de27f
+ ld b, 15
+ call Bank77_FillColumn
ld [hl], $68
hlcoord 19, 17
ld [hl], $3c
@@ -23969,7 +23534,7 @@
xor a
ld b, SCREEN_HEIGHT
hlcoord 19, 0, AttrMap
- call Function1de27f
+ call Bank77_FillColumn
call Function3200
pop hl
ld a, l
@@ -23979,7 +23544,7 @@
ret
; 1de27f
-Function1de27f: ; 1de27f
+Bank77_FillColumn: ; 1de27f
push de
ld de, SCREEN_WIDTH
.loop
--- a/misc/fixed_words.asm
+++ b/misc/fixed_words.asm
@@ -308,7 +308,7 @@
callba ReloadMapPart
callba Function8cf53
callba LoadPokemonData
- callba Function40c30
+ callba Pokedex_ABCMode
ld a, [rSVBK]
push af
ld a, $5
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -6774,11 +6774,11 @@
call AddNTimes
predef GetUnownLetter
callba UpdateUnownDex
- ld a, [wdef4]
+ ld a, [wFirstUnownSeen]
and a
jr nz, .asm_102d98
ld a, [UnownLetter]
- ld [wdef4], a
+ ld [wFirstUnownSeen], a
.asm_102d98
and a
--- a/misc/mobile_41.asm
+++ b/misc/mobile_41.asm
@@ -1058,7 +1058,7 @@
jr asm_1064ed
asm_1064ed
- ld de, w6_d000
+ ld de, wBackupTilemap
ld b, $0
ld a, [rSVBK]
push af
--- a/misc/mobile_45.asm
+++ b/misc/mobile_45.asm
@@ -5662,7 +5662,7 @@
ld [rSVBK], a
ld hl, Unknown_117356
- ld de, w6_d000
+ ld de, wBackupTilemap
ld bc, $0300
call CopyBytes
--- a/misc/mobile_46.asm
+++ b/misc/mobile_46.asm
@@ -5986,7 +5986,7 @@
ld [wcd30], a
ld a, $2
ld [wc7d4], a
- callba Function40bdc
+ callba Pokedex_ChangeMode
ret
; 11ad6e
--- a/misc/mobile_5f.asm
+++ b/misc/mobile_5f.asm
@@ -418,12 +418,12 @@
call AddNTimes
predef GetUnownLetter
callab UpdateUnownDex
- ld a, [wdef4]
+ ld a, [wFirstUnownSeen]
and a
jr nz, .asm_17d223
ld a, [UnownLetter]
- ld [wdef4], a
+ ld [wFirstUnownSeen], a
.asm_17d223
ret
--- a/wram.asm
+++ b/wram.asm
@@ -335,7 +335,7 @@
wc2d0:: ds 4
wc2d4:: ds 1
wc2d5:: ds 1
-wc2d6:: ds 1
+wLastDexEntry:: ds 1
wc2d7:: ds 1
wPreviousLandmark:: ds 1
wCurrentLandmark:: ds 1
@@ -762,7 +762,6 @@
ds wPlayerTrademon - @
wc6d0::
-wPokedexDataStart::
PlayerSDefLevel:: ; c6d0
ds 1
wc6d1::
@@ -1003,10 +1002,20 @@
wc7ba:: ds 1
wc7bb:: ds 15
wc7ca:: ds 6
-wc7d0:: ds 1
-wc7d1:: ds 1
-wc7d2:: ds 1
-wc7d3:: ds 1
+
+ ds -$100
+wPokedexDataStart::
+wPokedexOrder:: ds NUM_POKEMON +- 1
+wPokedexOrderEnd:: ds 6
+wPokedexMetadata::
+wDexListingPage::
+wc7d0:: ds 1 ; Dex list page
+wDexListingCursor::
+wc7d1:: ds 1 ; Dex cursor
+wDexListingEnd::
+wc7d2:: ds 1 ; Last mon to display
+wc7d3:: ds 1 ; Number of mons visible per dex list page
+wCurrentDexMode:: ; Pokedex Mode
wc7d4:: ds 1 ; Index of the topmost visible item in a scrolling menu
wc7d5:: ds 1 ; Which row the cursor is at in a scrolling menu (0-6)
wc7d6:: ds 1
@@ -1015,14 +1024,17 @@
wc7d9:: ds 1
wc7da:: ds 1
wDexSearchSlowpokeFrame:: ds 1
-wc7dc:: ds 1
+wUnlockedUnownMode:: ds 1
wc7dd:: ds 1
wc7de:: ds 1
wc7df:: ds 1
wc7e0:: ds 1
wc7e1:: ds 1
+wBackupDexListingCursor::
wc7e2:: ds 1
+wBackupDexListingPage::
wc7e3:: ds 1
+wDexCurrentLocation::
wc7e4:: ds 1
IF DEF(CRYSTAL11)
wPokedexStatus::
@@ -1836,18 +1848,14 @@
wd144:: ds 2
; used when following a map warp
-wNextWarp::
-wd146:: ds 1
-wNextMapGroup::
-wd147:: ds 1
-wNextMapNumber::
-wd148:: ds 1
-wPrevWarp::
-wd149:: ds 1
-wPrevMapGroup::
-wd14a:: ds 1
-wPrevMapNumber::
-wd14b:: ds 1
+; d146
+wNextWarp:: ds 1
+wNextMapGroup:: ds 1
+wNextMapNumber:: ds 1
+wPrevWarp:: ds 1
+wPrevMapGroup:: ds 1
+wPrevMapNumber:: ds 1
+; d14c
wd14c:: ds 1 ; used in FollowNotExact
wd14d:: ds 1 ; used in FollowNotExact
@@ -2515,7 +2523,7 @@
wPokegearFlags:: ds 1
wRadioTuningKnob:: ds 1
-wd959:: ds 2
+wLastDexMode:: ds 2
WhichRegisteredItem:: ; d95b
ds 1
RegisteredItem:: ; d95c
@@ -2796,11 +2804,11 @@
wMapData::
VisitedSpawns:: ; dca5
- flag_array 27
+ flag_array NUM_SPAWNS
-wdca9:: ds 1
-wdcaa:: ds 1
-wdcab:: ds 1
+wDigWarp:: ds 1
+wDigMapGroup:: ds 1
+wDigMapNumber:: ds 1
; used on maps like second floor pokécenter, which are reused, so we know which
; map to return to
BackupWarpNumber:: ; dcac
@@ -2812,10 +2820,8 @@
ds 3
-wLastSpawnMapGroup::
-wdcb2:: ds 1
-wLastSpawnMapNumber::
-wdcb3:: ds 1
+wLastSpawnMapGroup:: ds 1
+wLastSpawnMapNumber:: ds 1
WarpNumber:: ; dcb4
ds 1
@@ -2876,7 +2882,7 @@
UnlockedUnowns:: ; def3
ds 1
-wdef4:: ds 1
+wFirstUnownSeen:: ds 1
wDaycareMan:: ; def5
@@ -3099,8 +3105,10 @@
SECTION "WRAM 6", WRAMX, BANK [6]
-w6_d000:: ds $400
-w6_d400:: ds $200
+wBackupTilemap:: ds $20 * SCREEN_HEIGHT
+ ds $1c0
+wBackupAttrMap:: ds $20 * SCREEN_HEIGHT
+ ds -$40
w6_d600:: ds $200
w6_d800::