summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rwxr-xr-xengine/breeding/egg.asm4
-rwxr-xr-xengine/compose_mail.asm517
-rwxr-xr-xengine/debug.asm8
-rwxr-xr-xengine/dummy_game.asm2
-rw-r--r--engine/engine_flags.asm2
-rw-r--r--engine/events.asm10
-rw-r--r--engine/events_2.asm4
-rwxr-xr-xengine/events_3.asm2
-rwxr-xr-xengine/evolve.asm19
-rwxr-xr-xengine/healmachineanim.asm46
-rwxr-xr-xengine/intro_menu.asm10
-rwxr-xr-xengine/link.asm4
-rw-r--r--engine/map_setup.asm2
-rwxr-xr-xengine/mon_icons.asm35
-rwxr-xr-xengine/money.asm2
-rwxr-xr-xengine/namingscreen.asm1057
-rwxr-xr-xengine/npc_movement.asm8
-rwxr-xr-xengine/npctrade.asm25
-rw-r--r--engine/phone.asm83
-rwxr-xr-xengine/player_movement.asm36
-rw-r--r--engine/pokedex.asm26
-rwxr-xr-xengine/pokegear.asm1138
-rw-r--r--engine/predef.asm6
-rwxr-xr-xengine/prof_oaks_pc.asm219
-rw-r--r--engine/scripting.asm4
-rwxr-xr-xengine/sprite_anims.asm14
-rwxr-xr-xengine/startmenu.asm4
-rwxr-xr-xengine/tile_events.asm10
-rwxr-xr-xengine/time.asm8
-rwxr-xr-xengine/time_capsule/conversion.asm4
-rwxr-xr-xengine/tmhm2.asm10
-rwxr-xr-xengine/town_map.asm171
-rwxr-xr-xengine/trade/animation.asm56
-rwxr-xr-xengine/trainer_card.asm4
-rwxr-xr-xengine/warp_connection.asm8
35 files changed, 1887 insertions, 1671 deletions
diff --git a/engine/breeding/egg.asm b/engine/breeding/egg.asm
index 0573e2ecd..cfe4d9a1c 100755
--- a/engine/breeding/egg.asm
+++ b/engine/breeding/egg.asm
@@ -677,9 +677,9 @@ Hatch_UpdateFrontpicBGMapCenter: ; 17254 (5:7254)
ld a, b
ld [hBGMapAddress + 1], a
ld a, c
- ld [hFillBox], a
+ ld [hGraphicStartTile], a
lb bc, 7, 7
- predef FillBox
+ predef PlaceGraphic
pop af
call Hatch_LoadFrontpicPal
call SetPalettes
diff --git a/engine/compose_mail.asm b/engine/compose_mail.asm
deleted file mode 100755
index 64165a13a..000000000
--- a/engine/compose_mail.asm
+++ /dev/null
@@ -1,517 +0,0 @@
-_ComposeMailMessage: ; 11e75 (mail?)
- ld hl, wc6d0
- ld [hl], e
- inc hl
- ld [hl], d
- ld a, [hMapAnims]
- push af
- xor a
- ld [hMapAnims], a
- ld a, [hInMenu]
- push af
- ld a, $1
- ld [hInMenu], a
- call .InitBlankMail
- call DelayFrame
-
-.loop
- call .DoMailEntry
- jr nc, .loop
-
- pop af
- ld [hInMenu], a
- pop af
- ld [hMapAnims], a
- ret
-
-.InitBlankMail: ; 11e9a (4:5e9a)
- call ClearBGPalettes
- call DisableLCD
- call Function11c51
- ld de, VTiles0 tile $00
- ld hl, .MailIcon
- ld bc, 8 tiles
- ld a, BANK(.MailIcon)
- call FarCopyBytes
- xor a
- ld hl, wSpriteAnimDict
- ld [hli], a
- ld [hl], a
-
- ; init mail icon
- depixel 3, 2
- ld a, SPRITE_ANIM_INDEX_00
- call _InitSpriteAnimStruct
-
- ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
- add hl, bc
- ld [hl], $0
- call .InitCharset
- ld a, $e3
- ld [rLCDC], a
- call .initwc6d3
- ld b, SCGB_08
- call GetSGBLayout
- call WaitBGMap
- call WaitTop
- ld a, %11100100
- call DmgToCgbBGPals
- ld a, %11100100
- call DmgToCgbObjPal0
- call Function11be0
- ld hl, wc6d0
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, $10
- add hl, de
- ld [hl], $4e
- ret
-
-; 11ef4 (4:5ef4)
-
-.MailIcon: ; 11ef4
-INCBIN "gfx/icon/mail2.2bpp"
-; 11f74
-
-.initwc6d3: ; 11f74 (4:5f74)
- ld a, $21
- ld [wc6d3], a
- ret
-
-; 11f7a (4:5f7a)
-
-.Dummy: ; dummied out
- db "メールを かいてね@"
-; 11f84
-
-.InitCharset: ; 11f84 (4:5f84)
- call WaitTop
- hlcoord 0, 0
- ld bc, 6 * SCREEN_WIDTH
- ld a, $60 ; border
- call ByteFill
- hlcoord 0, 6
- ld bc, 12 * SCREEN_WIDTH
- ld a, " "
- call ByteFill
- hlcoord 1, 1
- lb bc, 4, SCREEN_WIDTH - 2
- call ClearBox
- ld de, MailEntry_Uppercase
-
-.PlaceMailCharset: ; 11fa9 (4:5fa9)
- hlcoord 1, 7
- ld b, 6
-.next
- ld c, SCREEN_WIDTH - 1
-.loop_
- ld a, [de]
- ld [hli], a
- inc de
- dec c
- jr nz, .loop_
- push de
- ld de, SCREEN_WIDTH + 1
- add hl, de
- pop de
- dec b
- jr nz, .next
- ret
-
-.DoMailEntry: ; 11fc0 (4:5fc0)
- call JoyTextDelay
- ld a, [wJumptableIndex]
- bit 7, a
- jr nz, .exit_mail
- call .DoJumptable
- callba PlaySpriteAnimationsAndDelayFrame
- call .Update
- call DelayFrame
- and a
- ret
-
-.exit_mail
- callab ClearSpriteAnims
- call ClearSprites
- xor a
- ld [hSCX], a
- ld [hSCY], a
- scf
- ret
-
-.Update: ; 11feb (4:5feb)
- xor a
- ld [hBGMapMode], a
- hlcoord 1, 1
- lb bc, 4, 18
- call ClearBox
- ld hl, wc6d0
- ld e, [hl]
- inc hl
- ld d, [hl]
- hlcoord 2, 2
- call PlaceString
- ld a, $1
- ld [hBGMapMode], a
- ret
-
-.DoJumptable: ; 12008 (4:6008)
- ld a, [wJumptableIndex]
- ld e, a
- ld d, 0
- ld hl, .Jumptable
-rept 2
- add hl, de
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-
-.Jumptable: ; 12017 (4:6017)
- dw .init_blinking_cursor
- dw .process_joypad
-
-
-.init_blinking_cursor: ; 1201b (4:601b)
- depixel 9, 2
- ld a, SPRITE_ANIM_INDEX_09
- call _InitSpriteAnimStruct
- ld a, c
- ld [wc6d5], a
- ld a, b
- ld [wc6d6], a
- ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
- add hl, bc
- ld a, [hl]
- ld hl, SPRITEANIMSTRUCT_0E
- add hl, bc
- ld [hl], a
- ld hl, wJumptableIndex
- inc [hl]
- ret
-
-.process_joypad: ; 1203a (4:603a)
- ld hl, hJoyPressed ; $ffa7
- ld a, [hl]
- and A_BUTTON
- jr nz, .a
- ld a, [hl]
- and B_BUTTON
- jr nz, .b
- ld a, [hl]
- and START
- jr nz, .start
- ld a, [hl]
- and SELECT
- jr nz, .select
- ret
-
-.a
- call Function12185
- cp $1
- jr z, .select
- cp $2
- jr z, .b
- cp $3
- jr z, .finished
- call Function11c11
- call Function121ac
- jr c, .start
- ld hl, wc6d2
- ld a, [hl]
- cp $10
- ret nz
- inc [hl]
- call Function11bd0
- ld [hl], $f2
- dec hl
- ld [hl], $4e
- ret
-
-.start
- ld hl, wc6d5
- ld c, [hl]
- inc hl
- ld b, [hl]
- ld hl, SPRITEANIMSTRUCT_0C
- add hl, bc
- ld [hl], $9
- ld hl, SPRITEANIMSTRUCT_0D
- add hl, bc
- ld [hl], $5
- ret
-
-.b
- call Function11bbc
- ld hl, wc6d2
- ld a, [hl]
- cp $10
- ret nz
- dec [hl]
- call Function11bd0
- ld [hl], $f2
- inc hl
- ld [hl], $4e
- ret
-
-.finished
- call Function11bf7
- ld hl, wJumptableIndex
- set 7, [hl]
- ret
-
-.select
- ld hl, wcf64
- ld a, [hl]
- xor $1
- ld [hl], a
- jr nz, .switch_to_lowercase
- ld de, MailEntry_Uppercase
- call .PlaceMailCharset
- ret
-
-.switch_to_lowercase
- ld de, MailEntry_Lowercase
- call .PlaceMailCharset
- ret
-
-; called from engine/sprite_anims.asm
-Function120c1: ; 120c1 (4:60c1)
- call Function1210c
- ld hl, SPRITEANIMSTRUCT_0D
- add hl, bc
- ld a, [hl]
- ld e, a
- swap e
- ld hl, SPRITEANIMSTRUCT_YOFFSET
- add hl, bc
- ld [hl], e
- cp $5
- ld de, Unknown_120f8
- ld a, 0
- jr nz, .asm_120df
- ld de, Unknown_12102
- ld a, 1
-.asm_120df
- ld hl, SPRITEANIMSTRUCT_0E
- add hl, bc
- add [hl]
- ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
- add hl, bc
- ld [hl], a
- ld hl, SPRITEANIMSTRUCT_0C
- add hl, bc
- ld l, [hl]
- ld h, 0
- add hl, de
- ld a, [hl]
- ld hl, SPRITEANIMSTRUCT_XOFFSET
- add hl, bc
- ld [hl], a
- ret
-
-; 120f8 (4:60f8)
-
-Unknown_120f8: ; 120f8
- db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90
-Unknown_12102: ; 12102
- db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60
-; 1210c
-
-Function1210c: ; 1210c (4:610c)
- ld hl, hJoyLast
- ld a, [hl]
- and D_UP
- jr nz, .up
- ld a, [hl]
- and D_DOWN
- jr nz, .down
- ld a, [hl]
- and D_LEFT
- jr nz, .left
- ld a, [hl]
- and D_RIGHT
- jr nz, .right
- ret
-
-.right
- call Function1218b
- and a
- jr nz, .asm_12138
- ld hl, SPRITEANIMSTRUCT_0C
- add hl, bc
- ld a, [hl]
- cp $9
- jr nc, .asm_12135
- inc [hl]
- ret
-
-.asm_12135
- ld [hl], $0
- ret
-
-.asm_12138
- cp $3
- jr nz, .asm_1213d
- xor a
-.asm_1213d
- ld e, a
- add a
- add e
- ld hl, SPRITEANIMSTRUCT_0C
- add hl, bc
- ld [hl], a
- ret
-
-.left
- call Function1218b
- and a
- jr nz, .asm_12159
- ld hl, SPRITEANIMSTRUCT_0C
- add hl, bc
- ld a, [hl]
- and a
- jr z, .asm_12156
- dec [hl]
- ret
-
-.asm_12156
- ld [hl], $9
- ret
-
-.asm_12159
- cp $1
- jr nz, .asm_1215f
- ld a, $4
-.asm_1215f
-rept 2
- dec a
-endr
- ld e, a
- add a
- add e
- ld hl, SPRITEANIMSTRUCT_0C
- add hl, bc
- ld [hl], a
- ret
-
-.down
- ld hl, SPRITEANIMSTRUCT_0D
- add hl, bc
- ld a, [hl]
- cp $5
- jr nc, .asm_12175
- inc [hl]
- ret
-
-.asm_12175
- ld [hl], $0
- ret
-
-.up
- ld hl, SPRITEANIMSTRUCT_0D
- add hl, bc
- ld a, [hl]
- and a
- jr z, .asm_12182
- dec [hl]
- ret
-
-.asm_12182
- ld [hl], $5
- ret
-
-Function12185: ; 12185 (4:6185)
- ld hl, wc6d5
- ld c, [hl]
- inc hl
- ld b, [hl]
-
-Function1218b: ; 1218b (4:618b)
- ld hl, SPRITEANIMSTRUCT_0D
- add hl, bc
- ld a, [hl]
- cp $5
- jr nz, .asm_121aa
- ld hl, SPRITEANIMSTRUCT_0C
- add hl, bc
- ld a, [hl]
- cp $3
- jr c, .asm_121a4
- cp $6
- jr c, .asm_121a7
- ld a, $3
- ret
-
-.asm_121a4
- ld a, $1
- ret
-
-.asm_121a7
- ld a, $2
- ret
-
-.asm_121aa
- xor a
- ret
-
-Function121ac: ; 121ac (4:61ac)
- ld a, [wc6d7]
- jp Function11b17
-; 121b2 (4:61b2)
-
-Function121b2: ; unreferenced
- ld a, [wc6d2]
- and a
- ret z
- cp $11
- jr nz, .asm_121c3
- push hl
- ld hl, wc6d2
-rept 2
- dec [hl]
-endr
- jr .asm_121c8
-
-.asm_121c3
- push hl
- ld hl, wc6d2
- dec [hl]
-
-.asm_121c8
- call Function11bd0
- ld c, [hl]
- pop hl
-.asm_121cd
- ld a, [hli]
- cp $ff
- jp z, Function11b27
- cp c
- jr z, .asm_121d9
- inc hl
- jr .asm_121cd
-
-.asm_121d9
- ld a, [hl]
- jp Function11b23
-; 121dd
-
-MailEntry_Uppercase: ; 122dd
- db "A B C D E F G H I J"
- db "K L M N O P Q R S T"
- db "U V W X Y Z , ? !"
- db "1 2 3 4 5 6 7 8 9 0"
- db "<PK> <MN> <PO> <KE> é ♂ ♀ ¥ … ×"
- db "lower DEL END "
-; 1224f
-
-MailEntry_Lowercase: ; 1224f
- db "a b c d e f g h i j"
- db "k l m n o p q r s t"
- db "u v w x y z . - /"
- db "'d 'l 'm 'r 's 't 'v & ( )"
- db "<``> <''> [ ] ' : ; "
- db "UPPER DEL END "
-; 122c1
diff --git a/engine/debug.asm b/engine/debug.asm
index df5dbee56..d69cd254b 100755
--- a/engine/debug.asm
+++ b/engine/debug.asm
@@ -401,10 +401,10 @@ Function81adb: ; 81adb
ld de, VTiles2 tile $31
predef GetBackpic
ld a, $31
- ld [hFillBox], a
+ ld [hGraphicStartTile], a
hlcoord 2, 4
lb bc, 6, 6
- predef FillBox
+ predef PlaceGraphic
ld a, [wd003]
and a
jr z, .asm_81b66
@@ -433,10 +433,10 @@ Function81adb: ; 81adb
callab GetTrainerPic
xor a
ld [TempEnemyMonSpecies], a
- ld [hFillBox], a
+ ld [hGraphicStartTile], a
hlcoord 2, 3
lb bc, 7, 7
- predef FillBox
+ predef PlaceGraphic
.asm_81ba9
ld a, $1
diff --git a/engine/dummy_game.asm b/engine/dummy_game.asm
index 4e2e189da..116ad9439 100755
--- a/engine/dummy_game.asm
+++ b/engine/dummy_game.asm
@@ -109,7 +109,7 @@ endr
.spawn_object
depixel 6, 3, 4, 4
- ld a, SPRITE_ANIM_INDEX_0C
+ ld a, SPRITE_ANIM_INDEX_COMPOSE_MAIL_CURSOR
call _InitSpriteAnimStruct
ld a, 5
ld [wDummyGameNumberTriesRemaining], a
diff --git a/engine/engine_flags.asm b/engine/engine_flags.asm
index d8be9c494..2b441bab4 100644
--- a/engine/engine_flags.asm
+++ b/engine/engine_flags.asm
@@ -108,7 +108,7 @@ ENDM
engine_flag wMomSavingMoney, 0 ; mom saving money ; $8
engine_flag wMomSavingMoney, 7 ; dst
- engine_flag wdc39, 0 ; unused, possibly related to a 2-day timer
+ engine_flag wUnusedTwoDayTimerOn, 0 ; unused, possibly related to a 2-day timer
engine_flag StatusFlags, 0 ; pokedex
engine_flag StatusFlags, 1 ; unown dex
diff --git a/engine/events.asm b/engine/events.asm
index 9b4062aea..9b701be8a 100644
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -124,8 +124,8 @@ StartMap: ; 96724
call ClearJoypad
EnterMap: ; 9673e
xor a
- ld [wd453], a
- ld [wd454], a
+ ld [wXYComparePointer], a
+ ld [wXYComparePointer + 1], a
call SetUpFiveStepWildEncounterCooldown
callba RunMapSetupScript
call DisableEvents
@@ -378,7 +378,7 @@ CheckTileEvent: ; 96874
ret
.warp_tile
- ld a, [PlayerNextTile]
+ ld a, [PlayerStandingTile]
call CheckPitTile
jr nz, .not_pit
ld a, PLAYEREVENT_FALL
@@ -454,7 +454,7 @@ DoMapTrigger: ; 968ec
ld h, [hl]
ld l, a
rept 4
- add hl,de
+ add hl, de
endr
call GetMapScriptHeaderBank
@@ -1031,7 +1031,7 @@ DoPlayerEvent: ; 96beb
ld b, 0
ld hl, PlayerEventScriptPointers
rept 3
- add hl,bc
+ add hl, bc
endr
ld a, [hli]
ld [ScriptBank], a
diff --git a/engine/events_2.asm b/engine/events_2.asm
index 9d2763ac8..ec5026e40 100644
--- a/engine/events_2.asm
+++ b/engine/events_2.asm
@@ -161,7 +161,7 @@ CanUseSweetScent:: ; 97cfd
jr nc, .no
.ice_check
- ld a, [PlayerNextTile]
+ ld a, [PlayerStandingTile]
call CheckIceTile
jr z, .no
scf
@@ -235,7 +235,7 @@ ChooseWildEncounter_BugContest:: ; 97d31
; 97d64
TryWildEncounter_BugContest: ; 97d64
- ld a, [PlayerNextTile]
+ ld a, [PlayerStandingTile]
call CheckSuperTallGrassTile
ld b, 40 percent
jr z, .ok
diff --git a/engine/events_3.asm b/engine/events_3.asm
index 57554d3f1..55dc59a1a 100755
--- a/engine/events_3.asm
+++ b/engine/events_3.asm
@@ -288,7 +288,7 @@ CheckForHiddenItems: ; b8172
add SCREEN_HEIGHT / 4
ld [wd1ec], a
; Get the pointer for the first signpost header in the map...
- ld hl, wdc02
+ ld hl, wCurrentMapSignpostHeaderPointer
ld a, [hli]
ld h, [hl]
ld l, a
diff --git a/engine/evolve.asm b/engine/evolve.asm
index 4a959529a..b04a245e0 100755
--- a/engine/evolve.asm
+++ b/engine/evolve.asm
@@ -6,7 +6,6 @@ EvolvePokemon: ; 421d8
ld c, a
ld b, SET_FLAG
call EvoFlagAction
-
EvolveAfterBattle: ; 421e6
xor a
ld [wMonTriedToEvolve], a
@@ -19,7 +18,7 @@ EvolveAfterBattle: ; 421e6
push hl
-CheckForEvolvablePokemon: ; 421f5
+EvolveAfterBattle_MasterLoop
ld hl, CurPartyMon
inc [hl]
@@ -28,7 +27,7 @@ CheckForEvolvablePokemon: ; 421f5
inc hl
ld a, [hl]
cp $ff
- jp z, Evolution_ReturnToMap
+ jp z, .ReturnToMap
ld [Buffer1], a
@@ -40,7 +39,7 @@ CheckForEvolvablePokemon: ; 421f5
call EvoFlagAction
ld a, c
and a
- jp z, CheckForEvolvablePokemon
+ jp z, EvolveAfterBattle_MasterLoop
ld a, [Buffer1]
dec a
@@ -63,7 +62,7 @@ endr
.loop
ld a, [hli]
and a
- jr z, CheckForEvolvablePokemon
+ jr z, EvolveAfterBattle_MasterLoop
ld b, a
@@ -324,7 +323,7 @@ endr
push hl
ld l, e
ld h, d
- jp CheckForEvolvablePokemon
+ jp EvolveAfterBattle_MasterLoop
; 423f8
.dont_evolve_1
@@ -334,12 +333,10 @@ endr
.dont_evolve_3
inc hl
jp .loop
-; 423fe
-; dummy pop
+; XXX
pop hl
-
-Evolution_ReturnToMap: ; 423ff
+.ReturnToMap
pop de
pop bc
pop hl
@@ -393,7 +390,7 @@ CancelEvolution: ; 42454
call PrintText
call ClearTileMap
pop hl
- jp CheckForEvolvablePokemon
+ jp EvolveAfterBattle_MasterLoop
; 42461
IsMonHoldingEverstone: ; 42461
diff --git a/engine/healmachineanim.asm b/engine/healmachineanim.asm
index 57f03a8df..b4e0be1cf 100755
--- a/engine/healmachineanim.asm
+++ b/engine/healmachineanim.asm
@@ -19,7 +19,7 @@ HealMachineAnim: ; 12324
.DoJumptableFunctions: ; 1233e
xor a
- ld [wd1ec], a
+ ld [Buffer3], a
.jumpable_loop
ld a, [Buffer1]
ld e, a
@@ -31,10 +31,10 @@ endr
ld a, [hli]
ld h, [hl]
ld l, a
- ld a, [wd1ec]
+ ld a, [Buffer3]
ld e, a
inc a
- ld [wd1ec], a
+ ld [Buffer3], a
add hl, de
ld a, [hl]
cp 5
@@ -81,14 +81,14 @@ endr
.PC_LoadBallsOntoMachine: ; 12393
ld hl, Sprites + $80
- ld de, .PC_ElmsLab_TileMap
+ ld de, .PC_ElmsLab_OAM
call .PlaceHealingMachineTile
call .PlaceHealingMachineTile
jr .LoadBallsOntoMachine
.HOF_LoadBallsOntoMachine: ; 123a1
ld hl, Sprites + $80
- ld de, .HOF_TileMap
+ ld de, .HOF_OAM
.LoadBallsOntoMachine: ; 123a7
ld a, [PartyCount]
@@ -126,28 +126,28 @@ endr
ret
; 123dc
-.PC_ElmsLab_TileMap: ; 123dc
- db $20, $22, $7c, $16
- db $20, $26, $7c, $16
- db $26, $20, $7d, $16
- db $26, $28, $7d, $36
- db $2b, $20, $7d, $16
- db $2b, $28, $7d, $36
- db $30, $20, $7d, $16
- db $30, $28, $7d, $36
+.PC_ElmsLab_OAM: ; 123dc
+ dsprite 4, 0, 4, 2, $7c, $16
+ dsprite 4, 0, 4, 6, $7c, $16
+ dsprite 4, 6, 4, 0, $7d, $16
+ dsprite 4, 6, 5, 0, $7d, $36 ; xflip
+ dsprite 5, 3, 4, 0, $7d, $16
+ dsprite 5, 3, 5, 0, $7d, $36 ; xflip
+ dsprite 6, 0, 4, 0, $7d, $16
+ dsprite 6, 0, 5, 0, $7d, $36 ; xflip
; 123fc
.HealMachineGFX: ; 123fc
INCBIN "gfx/unknown/0123fc.2bpp"
; 1241c
-.HOF_TileMap: ; 1241c
- db $3c, $51, $7d, $16
- db $3c, $56, $7d, $16
- db $3b, $4d, $7d, $16
- db $3b, $5a, $7d, $16
- db $39, $49, $7d, $16
- db $39, $5d, $7d, $16
+.HOF_OAM: ; 1241c
+ dsprite 7, 4, 10, 1, $7d, $16
+ dsprite 7, 4, 10, 6, $7d, $16
+ dsprite 7, 3, 9, 5, $7d, $16
+ dsprite 7, 3, 11, 2, $7d, $16
+ dsprite 7, 1, 9, 1, $7d, $16
+ dsprite 7, 1, 11, 5, $7d, $16
; 12434
.LoadPalettes: ; 12434
@@ -241,10 +241,10 @@ endr
.PlaceHealingMachineTile: ; 124a3
push bc
ld a, [Buffer1]
- lb bc, $10, $20
+ bcpixel 2, 4
cp $1 ; ElmsLab
jr z, .okay
- lb bc, $00, $00
+ bcpixel 0, 0
.okay
ld a, [de]
diff --git a/engine/intro_menu.asm b/engine/intro_menu.asm
index 46c573483..6ece8e384 100755
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -318,7 +318,7 @@ InitializeNPCNames: ; 5ce9
InitializeWorld: ; 5d23
call ShrinkPlayer
- callba GetSpawnCoord
+ callba SpawnPlayer
callba _InitializeStartDay
ret
; 5d33
@@ -947,10 +947,10 @@ Intro_PrepTrainerPic: ; 619c
ld de, VTiles2
callba GetTrainerPic
xor a
- ld [hFillBox], a
+ ld [hGraphicStartTile], a
hlcoord 6, 4
lb bc, 7, 7
- predef FillBox
+ predef PlaceGraphic
ret
; 61b4
@@ -959,10 +959,10 @@ ShrinkFrame: ; 61b4
ld c, $31
predef DecompressPredef
xor a
- ld [hFillBox], a
+ ld [hGraphicStartTile], a
hlcoord 6, 4
lb bc, 7, 7
- predef FillBox
+ predef PlaceGraphic
ret
; 61cd
diff --git a/engine/link.asm b/engine/link.asm
index a4d23762b..e425ce4d8 100755
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -427,7 +427,7 @@ Gen2ToGen2LinkComms: ; 28177
or $3
ld [hl], a
ld hl, OTPlayerName
- ld de, OTName
+ ld de, OTClassName
ld bc, NAME_LENGTH
call CopyBytes
call ReturnToMapFromSubmenu
@@ -578,7 +578,7 @@ FixDataForLinkTransfer: ; 28434
rept 3
ld [hli], a
endr
- ld b, wc6d3 - (wMisc + 3)
+ ld b, $c8
xor a
.loop3
ld [hli], a
diff --git a/engine/map_setup.asm b/engine/map_setup.asm
index 50ab18335..8fa768c87 100644
--- a/engine/map_setup.asm
+++ b/engine/map_setup.asm
@@ -272,7 +272,7 @@ MapSetupCommands: ; 15440
dba GetCoordOfUpperLeftCorner ; 1f
dba RestoreFacingAfterWarp ; 20
dba SpawnInFacingDown ; 21
- dba GetSpawnCoord ; 22
+ dba SpawnPlayer ; 22
dba RefreshPlayerCoords ; 23
dba DelayClearingOldSprites ; 24
dba DelayLoadingNewSprites ; 25
diff --git a/engine/mon_icons.asm b/engine/mon_icons.asm
index f579d0cd5..5e41cd4a1 100755
--- a/engine/mon_icons.asm
+++ b/engine/mon_icons.asm
@@ -18,16 +18,16 @@ Function8e83f: ; 8e83f
push hl
push de
push bc
- call Function8e849
+ call .LoadIcon
pop bc
pop de
pop hl
ret
; 8e849
-Function8e849: ; 8e849
+.LoadIcon: ; 8e849
ld d, 0
- ld hl, .dw
+ ld hl, .Jumptable
rept 2
add hl, de
endr
@@ -38,23 +38,23 @@ endr
; 8e854
-.dw: ; 8e854 (23:6854)
+.Jumptable: ; 8e854 (23:6854)
dw Function8e8d5 ; init
dw Function8e961
dw Function8e97d
- dw Function8e99a
+ dw Trade_LoadMonIconGFX
dw Function8e898
dw Mobile_InitPartyMenuBGPal71
- dw Function8e862
+ dw .GetPartyMenuMonIcon
-Function8e862: ; 8e862 (23:6862)
+.GetPartyMenuMonIcon: ; 8e862 (23:6862)
call InitPartyMenuIcon
- call Function8e86c
+ call .GetPartyMonItemGFX
call SetPartyMonIconAnimSpeed
ret
-Function8e86c: ; 8e86c (23:686c)
+.GetPartyMonItemGFX: ; 8e86c (23:686c)
push bc
ld a, [hObjectStructIndexBuffer]
ld hl, PartyMon1Item
@@ -63,22 +63,23 @@ Function8e86c: ; 8e86c (23:686c)
pop bc
ld a, [hl]
and a
- jr z, .asm_8e890
+ jr z, .no_item
push hl
push bc
ld d, a
callab ItemIsMail
pop bc
pop hl
- jr c, .asm_8e88e
+ jr c, .not_mail
ld a, $6
- jr .asm_8e892
-.asm_8e88e
+ jr .got_tile
+.not_mail
ld a, $5
- ; jr .asm_8e892
-.asm_8e890
+ ; jr .got_tile
+
+.no_item
ld a, $4
-.asm_8e892
+.got_tile
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld [hl], a
@@ -246,7 +247,7 @@ Function8e97d: ; 8e97d (23:697d)
ld [hl], SPRITE_ANIM_SEQ_NULL
ret
-Function8e99a: ; 8e99a (23:699a)
+Trade_LoadMonIconGFX: ; 8e99a (23:699a)
ld a, [wd265]
call ReadMonMenuIcon
ld [CurIcon], a
diff --git a/engine/money.asm b/engine/money.asm
index d5d9b5c5c..aa1d7b696 100755
--- a/engine/money.asm
+++ b/engine/money.asm
@@ -86,7 +86,7 @@ CompareFunds: ; 1600d
jr .skip_carry
.set_carry
- ld a, TRUE
+ ld a, 1
and a
scf
.skip_carry
diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm
index f36e9b5eb..aac059a18 100755
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -3,14 +3,15 @@ _NamingScreen: ; 0x116b7
call NamingScreen
call ReturnToMapWithSpeechTextbox
ret
+
; 0x116c1
NamingScreen: ; 116c1
- ld hl, wc6d0
+ ld hl, wNamingScreenDestinationPointer
ld [hl], e
inc hl
ld [hl], d
- ld hl, wc6d4
+ ld hl, wNamingScreenType
ld [hl], b
ld hl, Options
ld a, [hl]
@@ -24,11 +25,11 @@ NamingScreen: ; 116c1
push af
ld a, $1
ld [hInMenu], a
- call Function116f8
+ call .SetUpNamingScreen
call DelayFrame
-.asm_116e5
- call Function11915
- jr nc, .asm_116e5
+.loop
+ call NamingScreenJoypadLoop
+ jr nc, .loop
pop af
ld [hInMenu], a
pop af
@@ -37,31 +38,33 @@ NamingScreen: ; 116c1
ld [Options], a
call ClearJoypad
ret
+
; 116f8
-Function116f8: ; 116f8
+.SetUpNamingScreen: ; 116f8
call ClearBGPalettes
ld b, SCGB_08
call GetSGBLayout
call DisableLCD
- call Function11c51
- call Function118a8
+ call LoadNamingScreenGFX
+ call NamingScreen_InitText
ld a, $e3
ld [rLCDC], a
- call Function1171d
+ call .GetNamingScreenSetup
call WaitBGMap
call WaitTop
call SetPalettes
- call Function11be0
+ call NamingScreen_InitNameEntry
ret
+
; 1171d
-Function1171d: ; 1171d
- ld a, [wc6d4]
+.GetNamingScreenSetup: ; 1171d
+ ld a, [wNamingScreenType]
and 7
ld e, a
ld d, 0
- ld hl, Jumptable_1172e
+ ld hl, .Jumptable
rept 2
add hl, de
endr
@@ -69,21 +72,20 @@ endr
ld h, [hl]
ld l, a
jp [hl]
-; 1172e
-
-
-Jumptable_1172e: ; 1172e (4:572e)
- dw Function1173e
- dw Function1178d
- dw Function117ae
- dw Function117d1
- dw Function117f5
- dw Function1182c
- dw Function1173e
- dw Function1173e
+; 1172e
-Function1173e: ; 1173e (4:573e)
+.Jumptable: ; 1172e (4:572e)
+ dw .Pokemon
+ dw .Player
+ dw .Rival
+ dw .Mom
+ dw .Box
+ dw .Tomodachi
+ dw .Pokemon
+ dw .Pokemon
+
+.Pokemon: ; 1173e (4:573e)
ld a, [CurPartySpecies]
ld [wd265], a
ld hl, Function8e83f
@@ -97,180 +99,192 @@ Function1173e: ; 1173e (4:573e)
call PlaceString
ld l, c
ld h, b
- ld de, Strings_11780
+ ld de, .NicknameStrings
call PlaceString
inc de
hlcoord 5, 4
call PlaceString
callba GetGender
- jr c, .asm_1177c
- ld a, $ef
- jr nz, .asm_11778
- ld a, $f5
-.asm_11778
+ jr c, .genderless
+ ld a, "♂"
+ jr nz, .place_gender
+ ld a, "♀"
+.place_gender
hlcoord 1, 2
ld [hl], a
-.asm_1177c
- call Function1187b
+.genderless
+ call .StoreMonIconParams
ret
+
; 11780 (4:5780)
-Strings_11780: ; 11780
+.NicknameStrings: ; 11780
db "'S@"
db "NICKNAME?@"
+
; 1178d
-Function1178d: ; 1178d (4:578d)
+.Player: ; 1178d (4:578d)
callba GetPlayerIcon
- call Function11847
+ call .LoadSprite
hlcoord 5, 2
- ld de, String_117a3
+ ld de, .PlayerNameString
call PlaceString
- call Function11882
+ call .StoreSpriteIconParams
ret
+
; 117a3 (4:57a3)
-String_117a3: ; 117a3
+.PlayerNameString: ; 117a3
db "YOUR NAME?@"
+
; 117ae
-Function117ae: ; 117ae (4:57ae)
+.Rival: ; 117ae (4:57ae)
ld de, SilverSpriteGFX
ld b, BANK(SilverSpriteGFX)
- call Function11847
+ call .LoadSprite
hlcoord 5, 2
- ld de, String_117c3
+ ld de, .RivalNameString
call PlaceString
- call Function11882
+ call .StoreSpriteIconParams
ret
+
; 117c3 (4:57c3)
-String_117c3: ; 117c3
+.RivalNameString: ; 117c3
db "RIVAL'S NAME?@"
+
; 117d1
-Function117d1: ; 117d1 (4:57d1)
+.Mom: ; 117d1 (4:57d1)
ld de, MomSpriteGFX
ld b, BANK(MomSpriteGFX)
- call Function11847
+ call .LoadSprite
hlcoord 5, 2
- ld de, String_117e6
+ ld de, .MomNameString
call PlaceString
- call Function11882
+ call .StoreSpriteIconParams
ret
+
; 117e6 (4:57e6)
-String_117e6: ; 117e6
+.MomNameString: ; 117e6
db "MOTHER'S NAME?@"
+
; 117f5
-Function117f5: ; 117f5 (4:57f5)
+.Box: ; 117f5 (4:57f5)
ld de, PokeBallSpriteGFX
ld hl, VTiles0 tile $00
lb bc, BANK(PokeBallSpriteGFX), $4
call Request2bpp
xor a
- ld hl, wc300
+ ld hl, wSpriteAnimDict
ld [hli], a
ld [hl], a
depixel 4, 4, 4, 0
- ld a, SPRITE_ANIM_INDEX_WALK_CYCLE
+ ld a, SPRITE_ANIM_INDEX_RED_WALK
call _InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld [hl], $0
hlcoord 5, 2
- ld de, String_11822
+ ld de, .BoxNameString
call PlaceString
- call Function11889
+ call .StoreBoxIconParams
ret
+
; 11822 (4:5822)
-String_11822: ; 11822
+.BoxNameString: ; 11822
db "BOX NAME?@"
+
; 1182c
-Function1182c: ; 1182c (4:582c)
+.Tomodachi: ; 1182c (4:582c)
hlcoord 3, 2
- ld de, String_11839
+ ld de, .oTomodachi_no_namae_sutoringu
call PlaceString
- call Function11882
+ call .StoreSpriteIconParams
ret
+
; 11839 (4:5839)
-String_11839: ; 11839
+.oTomodachi_no_namae_sutoringu: ; 11839
db "おともだち の なまえは?@"
+
; 11847
-Function11847: ; 11847 (4:5847)
+.LoadSprite: ; 11847 (4:5847)
push de
ld hl, VTiles0 tile $00
ld c, $4
push bc
call Request2bpp
pop bc
- ld hl, $c0
+ ld hl, 12 tiles
add hl, de
ld e, l
ld d, h
ld hl, VTiles0 tile $04
call Request2bpp
xor a
- ld hl, wc300
+ ld hl, wSpriteAnimDict
ld [hli], a
ld [hl], a
pop de
- ld b, SPRITE_ANIM_INDEX_WALK_CYCLE
+ ld b, SPRITE_ANIM_INDEX_RED_WALK
ld a, d
- cp $7a
- jr nz, .asm_11873
+ cp KrisSpriteGFX / $100
+ jr nz, .not_kris
ld a, e
- cp $40
- jr nz, .asm_11873
- ld b, SPRITE_ANIM_INDEX_1E
-.asm_11873
+ cp KrisSpriteGFX % $100
+ jr nz, .not_kris
+ ld b, SPRITE_ANIM_INDEX_BLUE_WALK
+.not_kris
ld a, b
depixel 4, 4, 4, 0
call _InitSpriteAnimStruct
ret
-Function1187b: ; 1187b (4:587b)
- ld a, $a
+.StoreMonIconParams: ; 1187b (4:587b)
+ ld a, PKMN_NAME_LENGTH - 1
hlcoord 5, 6
- jr Function11890
+ jr .StoreParams
-Function11882: ; 11882 (4:5882)
- ld a, $7
+.StoreSpriteIconParams: ; 11882 (4:5882)
+ ld a, PLAYER_NAME_LENGTH - 1
hlcoord 5, 6
- jr Function11890
+ jr .StoreParams
-Function11889: ; 11889 (4:5889)
- ld a, $8
+.StoreBoxIconParams: ; 11889 (4:5889)
+ ld a, BOX_NAME_LENGTH - 1
hlcoord 5, 4
- jr Function11890
+ jr .StoreParams
-Function11890: ; 11890 (4:5890)
- ld [wc6d3], a
+.StoreParams: ; 11890 (4:5890)
+ ld [wNamingScreenMaxNameLength], a
ld a, l
- ld [wc6d8], a
+ ld [wNamingScreenStringEntryCoord], a
ld a, h
- ld [wc6d9], a
+ ld [wNamingScreenStringEntryCoord + 1], a
ret
-
-Function1189c: ; 1189c
+NamingScreen_IsTargetBox: ; 1189c
push bc
push af
- ld a, [wc6d4]
+ ld a, [wNamingScreenType]
sub $3
ld b, a
pop af
dec b
pop bc
ret
+
; 118a8
-Function118a8: ; 118a8
+NamingScreen_InitText: ; 118a8
call WaitTop
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -278,31 +292,31 @@ Function118a8: ; 118a8
call ByteFill
hlcoord 1, 1
lb bc, 6, 18
- call Function1189c
- jr nz, .asm_118c4
+ call NamingScreen_IsTargetBox
+ jr nz, .not_box
lb bc, 4, 18
-.asm_118c4
+.not_box
call ClearBox
ld de, NameInputUpper
-Function118ca: ; 118ca
- call Function1189c
- jr nz, .asm_118d5
+NamingScreen_ApplyTextInputMode: ; 118ca
+ call NamingScreen_IsTargetBox
+ jr nz, .not_box
ld hl, BoxNameInputLower - NameInputLower
add hl, de
ld d, h
ld e, l
-.asm_118d5
+.not_box
push de
hlcoord 1, 8
lb bc, 7, 18
- call Function1189c
- jr nz, .asm_118e7
+ call NamingScreen_IsTargetBox
+ jr nz, .not_box_2
hlcoord 1, 6
lb bc, 9, 18
-.asm_118e7
+.not_box_2
call ClearBox
hlcoord 1, 16
lb bc, 1, 18
@@ -310,41 +324,42 @@ Function118ca: ; 118ca
pop de
hlcoord 2, 8
ld b, $5
- call Function1189c
- jr nz, .asm_11903
+ call NamingScreen_IsTargetBox
+ jr nz, .row
hlcoord 2, 6
ld b, $6
-.asm_11903
+.row
ld c, $11
-.asm_11905
+.col
ld a, [de]
ld [hli], a
inc de
dec c
- jr nz, .asm_11905
+ jr nz, .col
push de
- ld de, $17
+ ld de, 2 * SCREEN_WIDTH - $11
add hl, de
pop de
dec b
- jr nz, .asm_11903
+ jr nz, .row
ret
+
; 11915
-Function11915: ; 11915
+NamingScreenJoypadLoop: ; 11915
call JoyTextDelay
ld a, [wJumptableIndex]
bit 7, a
- jr nz, .asm_11930
- call Function11968
+ jr nz, .quit
+ call .RunJumptable
callba PlaySpriteAnimationsAndDelayFrame
- call Function11940
+ call .UpdateStringEntry
call DelayFrame
and a
ret
-.asm_11930
+.quit
callab ClearSpriteAnims
call ClearSprites
xor a
@@ -352,24 +367,25 @@ Function11915: ; 11915
ld [hSCY], a
scf
ret
+
; 11940
-Function11940: ; 11940
+.UpdateStringEntry: ; 11940
xor a
ld [hBGMapMode], a
hlcoord 1, 5
- call Function1189c
- jr nz, .asm_1194e
+ call NamingScreen_IsTargetBox
+ jr nz, .got_coords
hlcoord 1, 3
-.asm_1194e
+.got_coords
lb bc, 1, 18
call ClearBox
- ld hl, wc6d0
+ ld hl, wNamingScreenDestinationPointer
ld e, [hl]
inc hl
ld d, [hl]
- ld hl, wc6d8
+ ld hl, wNamingScreenStringEntryCoord
ld a, [hli]
ld h, [hl]
ld l, a
@@ -377,13 +393,14 @@ Function11940: ; 11940
ld a, $1
ld [hBGMapMode], a
ret
+
; 11968
-Function11968: ; 11968
+.RunJumptable: ; 11968
ld a, [wJumptableIndex]
ld e, a
ld d, $0
- ld hl, Jumptable_11977
+ ld hl, .Jumptable
rept 2
add hl, de
endr
@@ -391,26 +408,25 @@ endr
ld h, [hl]
ld l, a
jp [hl]
-; 11977
-
-Jumptable_11977: ; 11977 (4:5977)
- dw Function1197b
- dw Function119a1
+; 11977
+.Jumptable: ; 11977 (4:5977)
+ dw .InitCursor
+ dw .ReadButtons
-Function1197b: ; 1197b (4:597b)
+.InitCursor: ; 1197b (4:597b)
depixel 10, 3
- call Function1189c
- jr nz, .asm_11985
+ call NamingScreen_IsTargetBox
+ jr nz, .got_cursor_position
ld d, 8 * 8
-.asm_11985
+.got_cursor_position
ld a, SPRITE_ANIM_INDEX_02
call _InitSpriteAnimStruct
ld a, c
- ld [wc6d5], a
+ ld [wNamingScreenCursorObjectPointer], a
ld a, b
- ld [wc6d6], a
+ ld [wNamingScreenCursorObjectPointer + 1], a
ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld a, [hl]
@@ -421,7 +437,7 @@ Function1197b: ; 1197b (4:597b)
inc [hl]
ret
-Function119a1: ; 119a1 (4:59a1)
+.ReadButtons: ; 119a1 (4:59a1)
ld hl, hJoyPressed ; $ffa7
ld a, [hl]
and A_BUTTON
@@ -438,19 +454,19 @@ Function119a1: ; 119a1 (4:59a1)
ret
.a
- call Function11a0b
+ call .GetCursorPosition
cp $1
jr z, .select
cp $2
jr z, .b
cp $3
- jr z, .asm_119eb
- call Function11c11
- call Function11b14
+ jr z, .end
+ call NamingScreen_GetLastCharacter
+ call NamingScreen_TryAddCharacter
ret nc
.start
- ld hl, wc6d5
+ ld hl, wNamingScreenCursorObjectPointer
ld c, [hl]
inc hl
ld b, [hl]
@@ -460,17 +476,17 @@ Function119a1: ; 119a1 (4:59a1)
ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld [hl], $4
- call Function1189c
+ call NamingScreen_IsTargetBox
ret nz
inc [hl]
ret
.b
- call Function11bbc
+ call NamingScreen_DeleteCharacter
ret
-.asm_119eb
- call Function11bf7
+.end
+ call NamingScreen_StoreEntry
ld hl, wJumptableIndex
set 7, [hl]
ret
@@ -480,56 +496,59 @@ Function119a1: ; 119a1 (4:59a1)
ld a, [hl]
xor 1
ld [hl], a
- jr z, .asm_11a04
+ jr z, .upper
ld de, NameInputLower
- call Function118ca
+ call NamingScreen_ApplyTextInputMode
ret
-.asm_11a04
+.upper
ld de, NameInputUpper
- call Function118ca
+ call NamingScreen_ApplyTextInputMode
ret
-Function11a0b: ; 11a0b (4:5a0b)
- ld hl, wc6d5
+.GetCursorPosition: ; 11a0b (4:5a0b)
+ ld hl, wNamingScreenCursorObjectPointer
ld c, [hl]
inc hl
ld b, [hl]
-Function11a11: ; 11a11 (4:5a11)
+NamingScreen_GetCursorPosition: ; 11a11 (4:5a11)
ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
push bc
ld b, $4
- call Function1189c
- jr nz, .asm_11a1f
+ call NamingScreen_IsTargetBox
+ jr nz, .not_box
inc b
-.asm_11a1f
+.not_box
cp b
pop bc
- jr nz, .asm_11a39
+ jr nz, .not_bottom_row
ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
cp $3
- jr c, .asm_11a33
+ jr c, .case_switch
cp $6
- jr c, .asm_11a36
+ jr c, .delete
ld a, $3
ret
-.asm_11a33
+
+.case_switch
ld a, $1
ret
-.asm_11a36
+
+.delete
ld a, $2
ret
-.asm_11a39
+
+.not_bottom_row
xor a
ret
-Function11a3b: ; 11a3b (4:5a3b)
- call Function11a8b
+NamingScreen_AnimateCursor: ; 11a3b (4:5a3b)
+ call .GetDPad
ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
@@ -539,17 +558,17 @@ Function11a3b: ; 11a3b (4:5a3b)
add hl, bc
ld [hl], e
ld d, $4
- call Function1189c
- jr nz, .asm_11a53
+ call NamingScreen_IsTargetBox
+ jr nz, .ok
inc d
-.asm_11a53
+.ok
cp d
- ld de, Unknown_11a79
+ ld de, .LetterEntries
ld a, $0
- jr nz, .asm_11a60
- ld de, Unknown_11a82
+ jr nz, .ok2
+ ld de, .CaseDelEnd
ld a, $1
-.asm_11a60
+.ok2
ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
add [hl]
@@ -566,15 +585,18 @@ Function11a3b: ; 11a3b (4:5a3b)
add hl, bc
ld [hl], a
ret
+
; 11a79 (4:5a79)
-Unknown_11a79: ; 11a79
+.LetterEntries: ; 11a79
db $00, $10, $20, $30, $40, $50, $60, $70, $80
-Unknown_11a82: ; 11a82
+
+.CaseDelEnd: ; 11a82
db $00, $00, $00, $30, $30, $30, $60, $60, $60
+
; 11a8b
-Function11a8b: ; 11a8b (4:5a8b)
+.GetDPad: ; 11a8b (4:5a8b)
ld hl, hJoyLast
ld a, [hl]
and D_UP
@@ -589,8 +611,9 @@ Function11a8b: ; 11a8b (4:5a8b)
and D_RIGHT
jr nz, .right
ret
+
.right
- call Function11a11
+ call NamingScreen_GetCursorPosition
and a
jr nz, .asm_11ab7
ld hl, SPRITEANIMSTRUCT_0C
@@ -600,9 +623,11 @@ Function11a8b: ; 11a8b (4:5a8b)
jr nc, .asm_11ab4
inc [hl]
ret
+
.asm_11ab4
ld [hl], $0
ret
+
.asm_11ab7
cp $3
jr nz, .asm_11abc
@@ -615,8 +640,9 @@ Function11a8b: ; 11a8b (4:5a8b)
add hl, bc
ld [hl], a
ret
+
.left
- call Function11a11
+ call NamingScreen_GetCursorPosition
and a
jr nz, .asm_11ad8
ld hl, SPRITEANIMSTRUCT_0C
@@ -626,9 +652,11 @@ Function11a8b: ; 11a8b (4:5a8b)
jr z, .asm_11ad5
dec [hl]
ret
+
.asm_11ad5
ld [hl], $8
ret
+
.asm_11ad8
cp $1
jr nz, .asm_11ade
@@ -644,24 +672,28 @@ endr
add hl, bc
ld [hl], a
ret
+
.down
ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
- call Function1189c
+ call NamingScreen_IsTargetBox
jr nz, .asm_11af9
cp $5
jr nc, .asm_11aff
inc [hl]
ret
+
.asm_11af9
cp $4
jr nc, .asm_11aff
inc [hl]
ret
+
.asm_11aff
ld [hl], $0
ret
+
.up
ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
@@ -670,67 +702,70 @@ endr
jr z, .asm_11b0c
dec [hl]
ret
+
.asm_11b0c
ld [hl], $4
- call Function1189c
+ call NamingScreen_IsTargetBox
ret nz
inc [hl]
ret
-Function11b14: ; 11b14 (4:5b14)
- ld a, [wc6d7]
-
-Function11b17: ; 11b17 (4:5b17)
- ld a, [wc6d3]
+NamingScreen_TryAddCharacter: ; 11b14 (4:5b14)
+ ld a, [wNamingScreenLastCharacter] ; lost
+MailComposition_TryAddCharacter: ; 11b17 (4:5b17)
+ ld a, [wNamingScreenMaxNameLength]
ld c, a
- ld a, [wc6d2]
+ ld a, [wNamingScreenCurrNameLength]
cp c
ret nc
- ld a, [wc6d7]
+ ld a, [wNamingScreenLastCharacter]
-Function11b23: ; 11b23
- call Function11bd0
+NamingScreen_LoadNextCharacter: ; 11b23
+ call NamingScreen_GetTextCursorPosition
ld [hl], a
-Function11b27: ; 11b27
- ld hl, wc6d2
+NamingScreen_AdvanceCursor_CheckEndOfString: ; 11b27
+ ld hl, wNamingScreenCurrNameLength
inc [hl]
- call Function11bd0
+ call NamingScreen_GetTextCursorPosition
ld a, [hl]
- cp $50
- jr z, .asm_11b37
+ cp "@"
+ jr z, .end_of_string
ld [hl], $f2
and a
ret
-.asm_11b37
+
+.end_of_string
scf
ret
+
; 11b39 (4:5b39)
-Function11b39: ; 11b39
- ld a, [wc6d2]
+; XXX
+ ld a, [wNamingScreenCurrNameLength]
and a
ret z
push hl
- ld hl, wc6d2
+ ld hl, wNamingScreenCurrNameLength
dec [hl]
- call Function11bd0
+ call NamingScreen_GetTextCursorPosition
ld c, [hl]
pop hl
-.asm_11b48
+.loop
ld a, [hli]
cp $ff
- jr z, Function11b27
+ jr z, NamingScreen_AdvanceCursor_CheckEndOfString
cp c
- jr z, .asm_11b53
+ jr z, .done
inc hl
- jr .asm_11b48
+ jr .loop
-.asm_11b53
+.done
ld a, [hl]
- jr Function11b23
+ jr NamingScreen_LoadNextCharacter
+
; 11b56
Dakutens: ; Dummied out
@@ -748,15 +783,16 @@ Handakutens: ; Dummied out
db "はぱ", "ひぴ", "ふぷ", "へぺ", "ほぽ"
db "ハパ", "ヒピ", "フプ", "へぺ", "ホポ"
db $ff
+
; 11bbc
-Function11bbc: ; 11bbc (4:5bbc)
- ld hl, wc6d2
+NamingScreen_DeleteCharacter: ; 11bbc (4:5bbc)
+ ld hl, wNamingScreenCurrNameLength
ld a, [hl]
and a
ret z
dec [hl]
- call Function11bd0
+ call NamingScreen_GetTextCursorPosition
ld [hl], $f2
inc hl
ld a, [hl]
@@ -765,64 +801,65 @@ Function11bbc: ; 11bbc (4:5bbc)
ld [hl], $eb
ret
-Function11bd0: ; 11bd0 (4:5bd0)
+NamingScreen_GetTextCursorPosition: ; 11bd0 (4:5bd0)
push af
- ld hl, wc6d0
+ ld hl, wNamingScreenDestinationPointer
ld a, [hli]
ld h, [hl]
ld l, a
- ld a, [wc6d2]
+ ld a, [wNamingScreenCurrNameLength]
ld e, a
ld d, 0
add hl, de
pop af
ret
+
; 11be0
-Function11be0: ; 11be0
-; load $f2, ($eb * [wc6d3]), $50 into the dw address at wc6d0
- ld hl, wc6d0
+NamingScreen_InitNameEntry: ; 11be0
+; load $f2, ($eb * [wNamingScreenMaxNameLength]), $50 into the dw address at wNamingScreenDestinationPointer
+ ld hl, wNamingScreenDestinationPointer
ld a, [hli]
ld h, [hl]
ld l, a
- ld [hl], "·"
+ ld [hl], $f2
inc hl
- ld a, [wc6d3]
+ ld a, [wNamingScreenMaxNameLength]
dec a
ld c, a
- ld a, "→"
+ ld a, $eb
.loop
ld [hli], a
dec c
jr nz, .loop
ld [hl], "@"
ret
-; 11bf7
+; 11bf7
-Function11bf7: ; 11bf7 (4:5bf7)
- ld hl, wc6d0
+NamingScreen_StoreEntry: ; 11bf7 (4:5bf7)
+ ld hl, wNamingScreenDestinationPointer
ld a, [hli]
ld h, [hl]
ld l, a
- ld a, [wc6d3]
+ ld a, [wNamingScreenMaxNameLength]
ld c, a
-.asm_11c01
+.loop
ld a, [hl]
cp $eb
- jr z, .asm_11c0a
+ jr z, .terminator
cp $f2
- jr nz, .asm_11c0c
-.asm_11c0a
- ld [hl], $50
-.asm_11c0c
+ jr nz, .not_terminator
+.terminator
+ ld [hl], "@"
+.not_terminator
inc hl
dec c
- jr nz, .asm_11c01
+ jr nz, .loop
ret
-Function11c11: ; 11c11 (4:5c11)
- ld hl, wc6d5
+NamingScreen_GetLastCharacter: ; 11c11 (4:5c11)
+ ld hl, wNamingScreenCursorObjectPointer
ld c, [hl]
inc hl
ld b, [hl]
@@ -849,51 +886,51 @@ Function11c11: ; 11c11 (4:5c11)
srl a
ld d, a
hlcoord 0, 0
- ld bc, $14
-.asm_11c43
+ ld bc, SCREEN_WIDTH
+.loop
ld a, d
and a
- jr z, .asm_11c4b
+ jr z, .done
add hl, bc
dec d
- jr .asm_11c43
-.asm_11c4b
+ jr .loop
+
+.done
add hl, de
ld a, [hl]
- ld [wc6d7], a
+ ld [wNamingScreenLastCharacter], a
ret
-
-Function11c51: ; 11c51
+LoadNamingScreenGFX: ; 11c51
call ClearSprites
callab ClearSpriteAnims
call LoadStandardFont
call LoadFontsExtra
- ld de, GFX_11e65
+ ld de, NamingScreenGFX_MiddleLine
ld hl, VTiles1 tile $6b
- lb bc, BANK(GFX_11e65), 1
+ lb bc, BANK(NamingScreenGFX_MiddleLine), 1
call Get1bpp
- ld de, GFX_11e6d
+ ld de, NamingScreenGFX_UnderLine
ld hl, VTiles1 tile $72
- lb bc, BANK(GFX_11e6d), 1
+ lb bc, BANK(NamingScreenGFX_UnderLine), 1
call Get1bpp
ld de, VTiles2 tile $60
- ld hl, GFX_11cb7
- ld bc, $10
- ld a, BANK(GFX_11cb7)
+ ld hl, NamingScreenGFX_Border
+ ld bc, 1 tiles
+ ld a, BANK(NamingScreenGFX_Border)
call FarCopyBytes
ld de, VTiles0 tile $7e
- ld hl, GFX_11cc7
- ld bc, $20
- ld a, BANK(GFX_11cc7)
+ ld hl, NamingScreenGFX_Cursor
+ ld bc, 2 tiles
+ ld a, BANK(NamingScreenGFX_Cursor)
call FarCopyBytes
ld a, $5
- ld hl, wc312
+ ld hl, wSpriteAnimDict + 9 * 2
ld [hli], a
ld [hl], $7e
xor a
@@ -904,17 +941,18 @@ Function11c51: ; 11c51
ld [wJumptableIndex], a
ld [wcf64], a
ld [hBGMapMode], a
- ld [wc6d2], a
+ ld [wNamingScreenCurrNameLength], a
ld a, $7
ld [hWX], a
ret
+
; 11cb7
-GFX_11cb7: ; 11cb7
+NamingScreenGFX_Border: ; 11cb7
INCBIN "gfx/unknown/011cb7.2bpp"
; 11cc7
-GFX_11cc7: ; 11cc7
+NamingScreenGFX_Cursor: ; 11cc7
INCBIN "gfx/unknown/011cc7.2bpp"
; 11ce7
@@ -924,6 +962,7 @@ NameInputLower:
db "s t u v w x y z "
db "× ( ) : ; [ ] <PK> <MN>"
db "UPPER DEL END "
+
BoxNameInputLower:
db "a b c d e f g h i"
db "j k l m n o p q r"
@@ -931,12 +970,14 @@ BoxNameInputLower:
db "é 'd 'l 'm 'r 's 't 'v 0"
db "1 2 3 4 5 6 7 8 9"
db "UPPER DEL END "
+
NameInputUpper: ; Unreferenced?
db "A B C D E F G H I"
db "J K L M N O P Q R"
db "S T U V W X Y Z "
db "- ? ! / . , "
db "lower DEL END "
+
BoxNameInputUpper:
db "A B C D E F G H I"
db "J K L M N O P Q R"
@@ -944,16 +985,542 @@ BoxNameInputUpper:
db "× ( ) : ; [ ] <PK> <MN>"
db "- ? ! ♂ ♀ / . , &"
db "lower DEL END "
+
; 11e5d
GFX_11e5d: ; ????
INCBIN "gfx/unknown/011e5d.2bpp"
; 11e6d
-GFX_11e65:
+NamingScreenGFX_MiddleLine:
INCBIN "gfx/unknown/011e65.2bpp"
; 11e6d
-GFX_11e6d: ; 11e6d
+NamingScreenGFX_UnderLine: ; 11e6d
INCBIN "gfx/unknown/011e6d.2bpp"
; 11e75
+
+_ComposeMailMessage: ; 11e75 (mail?)
+ ld hl, wNamingScreenDestinationPointer
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld a, [hMapAnims]
+ push af
+ xor a
+ ld [hMapAnims], a
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+ call .InitBlankMail
+ call DelayFrame
+
+.loop
+ call .DoMailEntry
+ jr nc, .loop
+
+ pop af
+ ld [hInMenu], a
+ pop af
+ ld [hMapAnims], a
+ ret
+
+.InitBlankMail: ; 11e9a (4:5e9a)
+ call ClearBGPalettes
+ call DisableLCD
+ call LoadNamingScreenGFX
+ ld de, VTiles0 tile $00
+ ld hl, .MailIcon
+ ld bc, 8 tiles
+ ld a, BANK(.MailIcon)
+ call FarCopyBytes
+ xor a
+ ld hl, wSpriteAnimDict
+ ld [hli], a
+ ld [hl], a
+
+ ; init mail icon
+ depixel 3, 2
+ ld a, SPRITE_ANIM_INDEX_00
+ call _InitSpriteAnimStruct
+
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], $0
+ call .InitCharset
+ ld a, $e3
+ ld [rLCDC], a
+ call .initwNamingScreenMaxNameLength
+ ld b, SCGB_08
+ call GetSGBLayout
+ call WaitBGMap
+ call WaitTop
+ ld a, %11100100
+ call DmgToCgbBGPals
+ ld a, %11100100
+ call DmgToCgbObjPal0
+ call NamingScreen_InitNameEntry
+ ld hl, wNamingScreenDestinationPointer
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $10
+ add hl, de
+ ld [hl], $4e
+ ret
+
+; 11ef4 (4:5ef4)
+
+.MailIcon: ; 11ef4
+INCBIN "gfx/icon/mail2.2bpp"
+; 11f74
+
+.initwNamingScreenMaxNameLength: ; 11f74 (4:5f74)
+ ld a, MAIL_MSG_LENGTH + 1
+ ld [wNamingScreenMaxNameLength], a
+ ret
+
+; 11f7a (4:5f7a)
+
+.Dummy: ; dummied out
+ db "メールを かいてね@"
+
+; 11f84
+
+.InitCharset: ; 11f84 (4:5f84)
+ call WaitTop
+ hlcoord 0, 0
+ ld bc, 6 * SCREEN_WIDTH
+ ld a, $60 ; border
+ call ByteFill
+ hlcoord 0, 6
+ ld bc, 12 * SCREEN_WIDTH
+ ld a, " "
+ call ByteFill
+ hlcoord 1, 1
+ lb bc, 4, SCREEN_WIDTH - 2
+ call ClearBox
+ ld de, MailEntry_Uppercase
+
+.PlaceMailCharset: ; 11fa9 (4:5fa9)
+ hlcoord 1, 7
+ ld b, 6
+.next
+ ld c, SCREEN_WIDTH - 1
+.loop_
+ ld a, [de]
+ ld [hli], a
+ inc de
+ dec c
+ jr nz, .loop_
+ push de
+ ld de, SCREEN_WIDTH + 1
+ add hl, de
+ pop de
+ dec b
+ jr nz, .next
+ ret
+
+.DoMailEntry: ; 11fc0 (4:5fc0)
+ call JoyTextDelay
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .exit_mail
+ call .DoJumptable
+ callba PlaySpriteAnimationsAndDelayFrame
+ call .Update
+ call DelayFrame
+ and a
+ ret
+
+.exit_mail
+ callab ClearSpriteAnims
+ call ClearSprites
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ scf
+ ret
+
+.Update: ; 11feb (4:5feb)
+ xor a
+ ld [hBGMapMode], a
+ hlcoord 1, 1
+ lb bc, 4, 18
+ call ClearBox
+ ld hl, wNamingScreenDestinationPointer
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ hlcoord 2, 2
+ call PlaceString
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+
+.DoJumptable: ; 12008 (4:6008)
+ ld a, [wJumptableIndex]
+ ld e, a
+ ld d, 0
+ ld hl, .Jumptable
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+.Jumptable: ; 12017 (4:6017)
+ dw .init_blinking_cursor
+ dw .process_joypad
+
+.init_blinking_cursor: ; 1201b (4:601b)
+ depixel 9, 2
+ ld a, SPRITE_ANIM_INDEX_09
+ call _InitSpriteAnimStruct
+ ld a, c
+ ld [wNamingScreenCursorObjectPointer], a
+ ld a, b
+ ld [wNamingScreenCursorObjectPointer + 1], a
+ ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+ add hl, bc
+ ld a, [hl]
+ ld hl, SPRITEANIMSTRUCT_0E
+ add hl, bc
+ ld [hl], a
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+
+.process_joypad: ; 1203a (4:603a)
+ ld hl, hJoyPressed ; $ffa7
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, .a
+ ld a, [hl]
+ and B_BUTTON
+ jr nz, .b
+ ld a, [hl]
+ and START
+ jr nz, .start
+ ld a, [hl]
+ and SELECT
+ jr nz, .select
+ ret
+
+.a
+ call NamingScreen_PressedA_GetCursorCommand
+ cp $1
+ jr z, .select
+ cp $2
+ jr z, .b
+ cp $3
+ jr z, .finished
+ call NamingScreen_GetLastCharacter
+ call MailComposition_TryAddLastCharacter
+ jr c, .start
+ ld hl, wNamingScreenCurrNameLength
+ ld a, [hl]
+ cp $10
+ ret nz
+ inc [hl]
+ call NamingScreen_GetTextCursorPosition
+ ld [hl], $f2
+ dec hl
+ ld [hl], $4e
+ ret
+
+.start
+ ld hl, wNamingScreenCursorObjectPointer
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld [hl], $9
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld [hl], $5
+ ret
+
+.b
+ call NamingScreen_DeleteCharacter
+ ld hl, wNamingScreenCurrNameLength
+ ld a, [hl]
+ cp $10
+ ret nz
+ dec [hl]
+ call NamingScreen_GetTextCursorPosition
+ ld [hl], $f2
+ inc hl
+ ld [hl], $4e
+ ret
+
+.finished
+ call NamingScreen_StoreEntry
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+.select
+ ld hl, wcf64
+ ld a, [hl]
+ xor $1
+ ld [hl], a
+ jr nz, .switch_to_lowercase
+ ld de, MailEntry_Uppercase
+ call .PlaceMailCharset
+ ret
+
+.switch_to_lowercase
+ ld de, MailEntry_Lowercase
+ call .PlaceMailCharset
+ ret
+
+; called from engine/sprite_anims.asm
+
+ComposeMail_AnimateCursor: ; 120c1 (4:60c1)
+ call .GetDPad
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ swap e
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], e
+ cp $5
+ ld de, .LetterEntries
+ ld a, 0
+ jr nz, .got_pointer
+ ld de, .CaseDelEnd
+ ld a, 1
+.got_pointer
+ ld hl, SPRITEANIMSTRUCT_0E
+ add hl, bc
+ add [hl]
+ ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+ add hl, bc
+ ld [hl], a
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld l, [hl]
+ ld h, 0
+ add hl, de
+ ld a, [hl]
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
+ add hl, bc
+ ld [hl], a
+ ret
+
+; 120f8 (4:60f8)
+
+.LetterEntries: ; 120f8
+ db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90
+
+.CaseDelEnd: ; 12102
+ db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60
+
+; 1210c
+
+.GetDPad: ; 1210c (4:610c)
+ ld hl, hJoyLast
+ ld a, [hl]
+ and D_UP
+ jr nz, .up
+ ld a, [hl]
+ and D_DOWN
+ jr nz, .down
+ ld a, [hl]
+ and D_LEFT
+ jr nz, .left
+ ld a, [hl]
+ and D_RIGHT
+ jr nz, .right
+ ret
+
+.right
+ call ComposeMail_GetCursorPosition
+ and a
+ jr nz, .case_del_done_right
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+ cp $9
+ jr nc, .wrap_around_letter_right
+ inc [hl]
+ ret
+
+.wrap_around_letter_right
+ ld [hl], $0
+ ret
+
+.case_del_done_right
+ cp $3
+ jr nz, .wrap_around_command_right
+ xor a
+.wrap_around_command_right
+ ld e, a
+ add a
+ add e
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld [hl], a
+ ret
+
+.left
+ call ComposeMail_GetCursorPosition
+ and a
+ jr nz, .caps_del_done_left
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .wrap_around_letter_left
+ dec [hl]
+ ret
+
+.wrap_around_letter_left
+ ld [hl], $9
+ ret
+
+.caps_del_done_left
+ cp $1
+ jr nz, .wrap_around_command_left
+ ld a, $4
+.wrap_around_command_left
+rept 2
+ dec a
+endr
+ ld e, a
+ add a
+ add e
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld [hl], a
+ ret
+
+.down
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld a, [hl]
+ cp $5
+ jr nc, .wrap_around_down
+ inc [hl]
+ ret
+
+.wrap_around_down
+ ld [hl], $0
+ ret
+
+.up
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .wrap_around_up
+ dec [hl]
+ ret
+
+.wrap_around_up
+ ld [hl], $5
+ ret
+
+NamingScreen_PressedA_GetCursorCommand: ; 12185 (4:6185)
+ ld hl, wNamingScreenCursorObjectPointer
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+
+ComposeMail_GetCursorPosition: ; 1218b (4:618b)
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld a, [hl]
+ cp $5
+ jr nz, .letter
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+ cp $3
+ jr c, .case
+ cp $6
+ jr c, .del
+ ld a, $3
+ ret
+
+.case
+ ld a, $1
+ ret
+
+.del
+ ld a, $2
+ ret
+
+.letter
+ xor a
+ ret
+
+MailComposition_TryAddLastCharacter: ; 121ac (4:61ac)
+ ld a, [wNamingScreenLastCharacter]
+ jp MailComposition_TryAddCharacter
+
+; 121b2 (4:61b2)
+
+; XXX
+ ld a, [wNamingScreenCurrNameLength]
+ and a
+ ret z
+ cp $11
+ jr nz, .asm_121c3
+ push hl
+ ld hl, wNamingScreenCurrNameLength
+rept 2
+ dec [hl]
+endr
+ jr .asm_121c8
+
+.asm_121c3
+ push hl
+ ld hl, wNamingScreenCurrNameLength
+ dec [hl]
+
+.asm_121c8
+ call NamingScreen_GetTextCursorPosition
+ ld c, [hl]
+ pop hl
+.asm_121cd
+ ld a, [hli]
+ cp $ff
+ jp z, NamingScreen_AdvanceCursor_CheckEndOfString
+ cp c
+ jr z, .asm_121d9
+ inc hl
+ jr .asm_121cd
+
+.asm_121d9
+ ld a, [hl]
+ jp NamingScreen_LoadNextCharacter
+
+; 121dd
+
+MailEntry_Uppercase: ; 122dd
+ db "A B C D E F G H I J"
+ db "K L M N O P Q R S T"
+ db "U V W X Y Z , ? !"
+ db "1 2 3 4 5 6 7 8 9 0"
+ db "<PK> <MN> <PO> <KE> é ♂ ♀ ¥ … ×"
+ db "lower DEL END "
+
+; 1224f
+
+MailEntry_Lowercase: ; 1224f
+ db "a b c d e f g h i j"
+ db "k l m n o p q r s t"
+ db "u v w x y z . - /"
+ db "'d 'l 'm 'r 's 't 'v & ( )"
+ db "<``> <''> [ ] ' : ; "
+ db "UPPER DEL END "
+
+; 122c1
diff --git a/engine/npc_movement.asm b/engine/npc_movement.asm
index bc270305b..097c62017 100755
--- a/engine/npc_movement.asm
+++ b/engine/npc_movement.asm
@@ -234,14 +234,14 @@ CheckFacingObject:: ; 6fd9
call CheckCounterTile
jr nz, .asm_6ff1
- ld a, [PlayerNextMapX]
+ ld a, [PlayerStandingMapX]
sub d
cpl
inc a
add d
ld d, a
- ld a, [PlayerNextMapY]
+ ld a, [PlayerStandingMapY]
sub e
cpl
inc a
@@ -482,9 +482,9 @@ IsPersonMovingOffEdgeOfScreen: ; 70ed
; 7113
Function7113: ; unreferenced
- ld a, [PlayerNextMapX]
+ ld a, [PlayerStandingMapX]
ld d, a
- ld a, [PlayerNextMapY]
+ ld a, [PlayerStandingMapY]
ld e, a
ld bc, ObjectStructs
xor a
diff --git a/engine/npctrade.asm b/engine/npctrade.asm
index 7342f8a6c..a8d3b71aa 100755
--- a/engine/npctrade.asm
+++ b/engine/npctrade.asm
@@ -430,21 +430,22 @@ GetTradeMonNames: ; fce1b
NPCTrades: ; fce58
npctrade: MACRO
- db \1, \2, \3, \4
- dw \5
- db \6
- dw \7
- db \8, \9, 0
+ db \1, \2, \3, \4 ; dialog set, requested mon, offered mon, nickname
+ db \5, \6 ; dvs
+ shift
+ db \6 ; item
+ dw \7 ; OT ID
+ db \8, \9, 0 ; OT name, gender requested
ENDM
- npctrade 0, ABRA, MACHOP, "MUSCLE@@@@@", $6637, GOLD_BERRY, 37460, "MIKE@@@@@@@", TRADE_EITHER_GENDER
- npctrade 0, BELLSPROUT, ONIX, "ROCKY@@@@@@", $6696, BITTER_BERRY, 48926, "KYLE@@@@@@@", TRADE_EITHER_GENDER
- npctrade 1, KRABBY, VOLTORB, "VOLTY@@@@@@", $8898, PRZCUREBERRY, 29189, "TIM@@@@@@@@", TRADE_EITHER_GENDER
- npctrade 3, DRAGONAIR, DODRIO, "DORIS@@@@@@", $6677, SMOKE_BALL, 00283, "EMY@@@@@@@@", TRADE_FEMALE_ONLY
- npctrade 2, HAUNTER, XATU, "PAUL@@@@@@@", $8696, MYSTERYBERRY, 15616, "CHRIS@@@@@@", TRADE_EITHER_GENDER
- npctrade 3, CHANSEY, AERODACTYL, "AEROY@@@@@@", $6696, GOLD_BERRY, 26491, "KIM@@@@@@@@", TRADE_EITHER_GENDER
- npctrade 0, DUGTRIO, MAGNETON, "MAGGIE@@@@@", $6696, METAL_COAT, 50082, "FOREST@@@@@", TRADE_EITHER_GENDER
+ npctrade 0, ABRA, MACHOP, "MUSCLE@@@@@", $37, $66, GOLD_BERRY, 37460, "MIKE@@@@@@@", TRADE_EITHER_GENDER
+ npctrade 0, BELLSPROUT, ONIX, "ROCKY@@@@@@", $96, $66, BITTER_BERRY, 48926, "KYLE@@@@@@@", TRADE_EITHER_GENDER
+ npctrade 1, KRABBY, VOLTORB, "VOLTY@@@@@@", $98, $88, PRZCUREBERRY, 29189, "TIM@@@@@@@@", TRADE_EITHER_GENDER
+ npctrade 3, DRAGONAIR, DODRIO, "DORIS@@@@@@", $77, $66, SMOKE_BALL, 00283, "EMY@@@@@@@@", TRADE_FEMALE_ONLY
+ npctrade 2, HAUNTER, XATU, "PAUL@@@@@@@", $96, $86, MYSTERYBERRY, 15616, "CHRIS@@@@@@", TRADE_EITHER_GENDER
+ npctrade 3, CHANSEY, AERODACTYL, "AEROY@@@@@@", $96, $66, GOLD_BERRY, 26491, "KIM@@@@@@@@", TRADE_EITHER_GENDER
+ npctrade 0, DUGTRIO, MAGNETON, "MAGGIE@@@@@", $96, $66, METAL_COAT, 50082, "FOREST@@@@@", TRADE_EITHER_GENDER
; fcf38
diff --git a/engine/phone.asm b/engine/phone.asm
index 805f221a7..1a3023bf1 100644
--- a/engine/phone.asm
+++ b/engine/phone.asm
@@ -651,15 +651,16 @@ Function90380: ; 90380 (24:4380)
call GetCallerName
ret
-Function9038a: ; 9038a (24:438a)
+CheckCanDeletePhoneNumber: ; 9038a (24:438a)
ld a, c
call GetCallerTrainerClass
ld a, c
+ ; and a
ret nz
ld a, b
- cp $1
+ cp PHONECONTACT_MOM
ret z
- cp $4
+ cp PHONECONTACT_ELM
ret z
ld c, $1
ret
@@ -776,44 +777,44 @@ phone: MACRO
dba \7 ; script 2
ENDM
- phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
- phone TRAINER_NONE, PHONECONTACT_MOM, KRISS_HOUSE_1F, 7, MomPhoneScript, 0, UnusedPhoneScript
- phone TRAINER_NONE, PHONECONTACT_BIKESHOP, OAKS_LAB, 0, UnusedPhoneScript, 0, UnusedPhoneScript
- phone TRAINER_NONE, PHONECONTACT_BILL, N_A, 7, BillPhoneScript1, 0, BillPhoneScript2
- phone TRAINER_NONE, PHONECONTACT_ELM, ELMS_LAB, 7, ElmPhoneScript1, 0, ElmPhoneScript2
- phone SCHOOLBOY, JACK1, NATIONAL_PARK, 7, JackPhoneScript1, 7, JackPhoneScript2
- phone POKEFANF, BEVERLY1, NATIONAL_PARK, 7, BeverlyPhoneScript1, 7, BeverlyPhoneScript2
- phone SAILOR, HUEY1, OLIVINE_LIGHTHOUSE_2F, 7, HueyPhoneScript1, 7, HueyPhoneScript2
- phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
- phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
- phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
- phone COOLTRAINERM, GAVEN3, ROUTE_26, 7, GavenPhoneScript1, 7, GavenPhoneScript2
- phone COOLTRAINERF, BETH1, ROUTE_26, 7, BethPhoneScript1, 7, BethPhoneScript2
- phone BIRD_KEEPER, JOSE2, ROUTE_27, 7, JosePhoneScript1, 7, JosePhoneScript2
- phone COOLTRAINERF, REENA1, ROUTE_27, 7, ReenaPhoneScript1, 7, ReenaPhoneScript2
- phone YOUNGSTER, JOEY1, ROUTE_30, 7, JoeyPhoneScript1, 7, JoeyPhoneScript2
- phone BUG_CATCHER, WADE1, ROUTE_31, 7, WadePhoneScript1, 7, WadePhoneScript2
- phone FISHER, RALPH1, ROUTE_32, 7, RalphPhoneScript1, 7, RalphPhoneScript2
- phone PICNICKER, LIZ1, ROUTE_32, 7, LizPhoneScript1, 7, LizPhoneScript2
- phone HIKER, ANTHONY2, ROUTE_33, 7, AnthonyPhoneScript1, 7, AnthonyPhoneScript2
- phone CAMPER, TODD1, ROUTE_34, 7, ToddPhoneScript1, 7, ToddPhoneScript2
- phone PICNICKER, GINA1, ROUTE_34, 7, GinaPhoneScript1, 7, GinaPhoneScript2
- phone JUGGLER, IRWIN1, ROUTE_35, 7, IrwinPhoneScript1, 7, IrwinPhoneScript2
- phone BUG_CATCHER, ARNIE1, ROUTE_35, 7, ArniePhoneScript1, 7, ArniePhoneScript2
- phone SCHOOLBOY, ALAN1, ROUTE_36, 7, AlanPhoneScript1, 7, AlanPhoneScript2
- phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
- phone LASS, DANA1, ROUTE_38, 7, DanaPhoneScript1, 7, DanaPhoneScript2
- phone SCHOOLBOY, CHAD1, ROUTE_38, 7, ChadPhoneScript1, 7, ChadPhoneScript2
- phone POKEFANM, DEREK1, ROUTE_39, 7, DerekPhoneScript1, 7, DerekPhoneScript2
- phone FISHER, TULLY1, ROUTE_42, 7, TullyPhoneScript1, 7, TullyPhoneScript2
- phone POKEMANIAC, BRENT1, ROUTE_43, 7, BrentPhoneScript1, 7, BrentPhoneScript2
- phone PICNICKER, TIFFANY3, ROUTE_43, 7, TiffanyPhoneScript1, 7, TiffanyPhoneScript2
- phone BIRD_KEEPER, VANCE1, ROUTE_44, 7, VancePhoneScript1, 7, VancePhoneScript2
- phone FISHER, WILTON1, ROUTE_44, 7, WiltonPhoneScript1, 7, WiltonPhoneScript2
- phone BLACKBELT_T, KENJI3, ROUTE_45, 7, KenjiPhoneScript1, 7, KenjiPhoneScript2
- phone HIKER, PARRY1, ROUTE_45, 7, ParryPhoneScript1, 7, ParryPhoneScript2
- phone PICNICKER, ERIN1, ROUTE_46, 7, ErinPhoneScript1, 7, ErinPhoneScript2
- phone TRAINER_NONE, PHONECONTACT_BUENA, GOLDENROD_DEPT_STORE_ROOF, 7, BuenaPhoneScript1, 7, BuenaPhoneScript2
+ phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
+ phone TRAINER_NONE, PHONECONTACT_MOM, KRISS_HOUSE_1F, 7, MomPhoneScript, 0, UnusedPhoneScript
+ phone TRAINER_NONE, PHONECONTACT_BIKESHOP, OAKS_LAB, 0, UnusedPhoneScript, 0, UnusedPhoneScript
+ phone TRAINER_NONE, PHONECONTACT_BILL, N_A, 7, BillPhoneScript1, 0, BillPhoneScript2
+ phone TRAINER_NONE, PHONECONTACT_ELM, ELMS_LAB, 7, ElmPhoneScript1, 0, ElmPhoneScript2
+ phone SCHOOLBOY, JACK1, NATIONAL_PARK, 7, JackPhoneScript1, 7, JackPhoneScript2
+ phone POKEFANF, BEVERLY1, NATIONAL_PARK, 7, BeverlyPhoneScript1, 7, BeverlyPhoneScript2
+ phone SAILOR, HUEY1, OLIVINE_LIGHTHOUSE_2F, 7, HueyPhoneScript1, 7, HueyPhoneScript2
+ phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
+ phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
+ phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
+ phone COOLTRAINERM, GAVEN3, ROUTE_26, 7, GavenPhoneScript1, 7, GavenPhoneScript2
+ phone COOLTRAINERF, BETH1, ROUTE_26, 7, BethPhoneScript1, 7, BethPhoneScript2
+ phone BIRD_KEEPER, JOSE2, ROUTE_27, 7, JosePhoneScript1, 7, JosePhoneScript2
+ phone COOLTRAINERF, REENA1, ROUTE_27, 7, ReenaPhoneScript1, 7, ReenaPhoneScript2
+ phone YOUNGSTER, JOEY1, ROUTE_30, 7, JoeyPhoneScript1, 7, JoeyPhoneScript2
+ phone BUG_CATCHER, WADE1, ROUTE_31, 7, WadePhoneScript1, 7, WadePhoneScript2
+ phone FISHER, RALPH1, ROUTE_32, 7, RalphPhoneScript1, 7, RalphPhoneScript2
+ phone PICNICKER, LIZ1, ROUTE_32, 7, LizPhoneScript1, 7, LizPhoneScript2
+ phone HIKER, ANTHONY2, ROUTE_33, 7, AnthonyPhoneScript1, 7, AnthonyPhoneScript2
+ phone CAMPER, TODD1, ROUTE_34, 7, ToddPhoneScript1, 7, ToddPhoneScript2
+ phone PICNICKER, GINA1, ROUTE_34, 7, GinaPhoneScript1, 7, GinaPhoneScript2
+ phone JUGGLER, IRWIN1, ROUTE_35, 7, IrwinPhoneScript1, 7, IrwinPhoneScript2
+ phone BUG_CATCHER, ARNIE1, ROUTE_35, 7, ArniePhoneScript1, 7, ArniePhoneScript2
+ phone SCHOOLBOY, ALAN1, ROUTE_36, 7, AlanPhoneScript1, 7, AlanPhoneScript2
+ phone TRAINER_NONE, PHONE_00, N_A, 0, UnusedPhoneScript, 0, UnusedPhoneScript
+ phone LASS, DANA1, ROUTE_38, 7, DanaPhoneScript1, 7, DanaPhoneScript2
+ phone SCHOOLBOY, CHAD1, ROUTE_38, 7, ChadPhoneScript1, 7, ChadPhoneScript2
+ phone POKEFANM, DEREK1, ROUTE_39, 7, DerekPhoneScript1, 7, DerekPhoneScript2
+ phone FISHER, TULLY1, ROUTE_42, 7, TullyPhoneScript1, 7, TullyPhoneScript2
+ phone POKEMANIAC, BRENT1, ROUTE_43, 7, BrentPhoneScript1, 7, BrentPhoneScript2
+ phone PICNICKER, TIFFANY3, ROUTE_43, 7, TiffanyPhoneScript1, 7, TiffanyPhoneScript2
+ phone BIRD_KEEPER, VANCE1, ROUTE_44, 7, VancePhoneScript1, 7, VancePhoneScript2
+ phone FISHER, WILTON1, ROUTE_44, 7, WiltonPhoneScript1, 7, WiltonPhoneScript2
+ phone BLACKBELT_T, KENJI3, ROUTE_45, 7, KenjiPhoneScript1, 7, KenjiPhoneScript2
+ phone HIKER, PARRY1, ROUTE_45, 7, ParryPhoneScript1, 7, ParryPhoneScript2
+ phone PICNICKER, ERIN1, ROUTE_46, 7, ErinPhoneScript1, 7, ErinPhoneScript2
+ phone TRAINER_NONE, PHONECONTACT_BUENA, GOLDENROD_DEPT_STORE_ROOF, 7, BuenaPhoneScript1, 7, BuenaPhoneScript2
; 90627
SpecialPhoneCallList: ; 90627
diff --git a/engine/player_movement.asm b/engine/player_movement.asm
index a57e5cef1..4bc4c483e 100755
--- a/engine/player_movement.asm
+++ b/engine/player_movement.asm
@@ -118,7 +118,7 @@ DoPlayerMovement:: ; 80000
; Tiles such as waterfalls and warps move the player
; in a given direction, overriding input.
- ld a, [PlayerNextTile]
+ ld a, [PlayerStandingTile]
ld c, a
call CheckWhirlpoolTile
jr c, .asm_800c4
@@ -136,7 +136,7 @@ DoPlayerMovement:: ; 80000
jr z, .land2
cp $70 ; warps
jr z, .warps
- jr .asm_8013c
+ jr .no_walk
.water
ld a, c
@@ -147,7 +147,7 @@ DoPlayerMovement:: ; 80000
add hl, bc
ld a, [hl]
ld [WalkingDirection], a
- jr .asm_8013e
+ jr .continue_walk
.water_table
db RIGHT
@@ -164,9 +164,9 @@ DoPlayerMovement:: ; 80000
add hl, bc
ld a, [hl]
cp STANDING
- jr z, .asm_8013c
+ jr z, .no_walk
ld [WalkingDirection], a
- jr .asm_8013e
+ jr .continue_walk
.land1_table
db STANDING
@@ -187,9 +187,9 @@ DoPlayerMovement:: ; 80000
add hl, bc
ld a, [hl]
cp STANDING
- jr z, .asm_8013c
+ jr z, .no_walk
ld [WalkingDirection], a
- jr .asm_8013e
+ jr .continue_walk
.land2_table
db RIGHT
@@ -210,18 +210,18 @@ DoPlayerMovement:: ; 80000
cp $7a ; stairs
jr z, .down
cp $7b ; cave
- jr nz, .asm_8013c
+ jr nz, .no_walk
.down
ld a, DOWN
ld [WalkingDirection], a
- jr .asm_8013e
+ jr .continue_walk
-.asm_8013c
+.no_walk
xor a
ret
-.asm_8013e
+.continue_walk
ld a, STEP_WALK
call .DoStep
ld a, 5
@@ -277,7 +277,7 @@ DoPlayerMovement:: ; 80000
cp 2
jr z, .bump
- ld a, [PlayerNextTile]
+ ld a, [PlayerStandingTile]
call CheckIceTile
jr nc, .ice
@@ -362,7 +362,7 @@ DoPlayerMovement:: ; 80000
; 801f3
.TryJump: ; 801f3
- ld a, [PlayerNextTile]
+ ld a, [PlayerStandingTile]
ld e, a
and $f0
cp $a0 ; ledge
@@ -413,7 +413,7 @@ DoPlayerMovement:: ; 80000
ld d, 0
ld hl, .EdgeWarps
add hl, de
- ld a, [PlayerNextTile]
+ ld a, [PlayerStandingTile]
cp [hl]
jr nz, .not_warp
@@ -615,7 +615,7 @@ DoPlayerMovement:: ; 80000
; tile collision pointer
.table1
db STANDING, FACE_CURRENT, 0, 0
- dw PlayerNextTile
+ dw PlayerStandingTile
.table2
db RIGHT, FACE_RIGHT, 1, 0
dw TileRight
@@ -634,13 +634,13 @@ DoPlayerMovement:: ; 80000
ld a, 0
ld [hMapObjectIndexBuffer], a
; Load the next X coordinate into d
- ld a, [PlayerNextMapX]
+ ld a, [PlayerStandingMapX]
ld d, a
ld a, [WalkingX]
add d
ld d, a
; Load the next Y coordinate into e
- ld a, [PlayerNextMapY]
+ ld a, [PlayerStandingMapY]
ld e, a
ld a, [WalkingY]
add e
@@ -817,7 +817,7 @@ CheckStandingOnIce:: ; 80404
jr z, .not_ice
cp $f0
jr z, .not_ice
- ld a, [PlayerNextTile]
+ ld a, [PlayerStandingTile]
call CheckIceTile
jr nc, .yep
ld a, [PlayerState]
diff --git a/engine/pokedex.asm b/engine/pokedex.asm
index 7dcfd2fdf..b7125d85a 100644
--- a/engine/pokedex.asm
+++ b/engine/pokedex.asm
@@ -1079,7 +1079,7 @@ Pokedex_DrawMainScreenBG: ; 4074c (10:474c)
lb bc, 7, 7
call Pokedex_PlaceBorder
hlcoord 0, 9
- ld bc, $607
+ lb bc, 6, 7
call Pokedex_PlaceBorder
hlcoord 1, 11
ld de, String_SEEN
@@ -1105,11 +1105,11 @@ Pokedex_DrawMainScreenBG: ; 4074c (10:474c)
ld de, String_SELECT_OPTION
call Pokedex_PlaceString
hlcoord 8, 1
- ld b, $7
+ ld b, 7
ld a, $5a
call Pokedex_HLDownBRows
hlcoord 8, 10
- ld b, $6
+ ld b, 6
ld a, $5a
call Pokedex_HLDownBRows
hlcoord 8, 0
@@ -1135,22 +1135,22 @@ String_START_SEARCH: ; 407f2
Pokedex_DrawDexEntryScreenBG: ; 407fd
call Pokedex_FillBackgroundColor2
hlcoord 0, 0
- ld bc, $0f12
+ lb bc, 15, 18
call Pokedex_PlaceBorder
hlcoord 19, 0
ld [hl], $34
hlcoord 19, 1
- ld a, $7f
- ld b, $f
+ ld a, " "
+ ld b, 15
call Pokedex_HLDownBRows
ld [hl], $39
hlcoord 1, 10
- ld bc, $0013
+ ld bc, 19
ld a, $61
call ByteFill
hlcoord 1, 17
- ld bc, $0012
- ld a, $7f
+ ld bc, 18
+ ld a, " "
call ByteFill
hlcoord 9, 7
ld de, .Height
@@ -1263,7 +1263,7 @@ Pokedex_DrawSearchResultsScreenBG: ; 40962 (10:4962)
hlcoord 8, 0
ld [hl], $59
hlcoord 8, 1
- ld b, $7
+ ld b, 7
ld a, $5a
call Pokedex_HLDownBRows
hlcoord 8, 8
@@ -1717,7 +1717,7 @@ Pokedex_DisplayModeDescription: ; 40e5b
xor a
ld [hBGMapMode], a
hlcoord 0, 12
- lb bc, 4, SCREEN_WIDTH - 2
+ lb bc, 4, 18
call Pokedex_PlaceBorder
ld a, [wDexArrowCursorPosIndex]
ld hl, .Modes
@@ -1756,7 +1756,7 @@ Pokedex_DisplayChangingModesMessage: ; 40f08 (10:4f08)
xor a
ld [hBGMapMode], a
hlcoord 0, 12
- lb bc, 4, SCREEN_WIDTH - 2
+ lb bc, 4, 18
call Pokedex_PlaceBorder
ld de, String_ChangingModesPleaseWait
hlcoord 1, 14
@@ -1995,7 +1995,7 @@ Pokedex_DisplayTypeNotFoundMessage: ; 41107
xor a
ld [hBGMapMode], a
hlcoord 0, 12
- ld bc, $0412
+ lb bc, 4, 18
call Pokedex_PlaceBorder
ld de, .TypeNotFound
hlcoord 1, 14
diff --git a/engine/pokegear.asm b/engine/pokegear.asm
index 4ef65da8c..5379734e6 100755
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -3,27 +3,23 @@ PokeGear: ; 90b8d (24:4b8d)
ld a, [hl]
push af
set NO_TEXT_SCROLL, [hl]
-
ld a, [hInMenu]
push af
ld a, $1
ld [hInMenu], a
-
ld a, [VramState]
push af
xor a
ld [VramState], a
-
- call Function90bea
+ call .InitTilemap
call DelayFrame
-
.loop
call UpdateTime
call JoyTextDelay
ld a, [wJumptableIndex]
bit 7, a
jr nz, .done
- call Function90f04
+ call PokegearJumptable
callba PlaySpriteAnimations
call DelayFrame
jr .loop
@@ -45,10 +41,10 @@ PokeGear: ; 90b8d (24:4b8d)
ld [hBGMapAddress + 1], a
ld a, $90
ld [hWY], a
- call Function91492
+ call ExitPokegearRadio_HandleMusic
ret
-Function90bea: ; 90bea (24:4bea)
+.InitTilemap: ; 90bea (24:4bea)
call ClearBGPalettes
call ClearTileMap
call ClearSprites
@@ -58,27 +54,27 @@ Function90bea: ; 90bea (24:4bea)
ld [hSCX], a
ld a, $7
ld [hWX], a
- call Function90c4e
+ call Pokegear_LoadGFX
callba ClearSpriteAnims
call InitPokegearModeIndicatorArrow
ld a, 8
call SkipMusic
ld a, $e3
ld [rLCDC], a
- call Function90d70
+ call TownMap_InitCursorAndPlayerIconPositions
xor a
ld [wJumptableIndex], a
ld [wcf64], a
ld [wcf65], a
ld [wcf66], a
- ld [wc6d2], a
- ld [wc6d1], a
- ld [wc6d3], a
- ld [wc6d9], a
- ld [wc6da], a
- ld [wc6db], a
- call Function90d9e
- call Function90da8
+ ld [wPokegearPhoneScrollPosition], a
+ ld [wPokegearPhoneCursorPosition], a
+ ld [wPokegearPhoneSelectedPerson], a
+ ld [wPokegearRadioChannelBank], a
+ ld [wPokegearRadioChannelAddr], a
+ ld [wPokegearRadioChannelAddr + 1], a
+ call Pokegear_InitJumptableIndices
+ call InitPokegearTilemap
ld b, SCGB_POKEGEAR_PALS
call GetSGBLayout
call SetPalettes
@@ -89,23 +85,20 @@ Function90bea: ; 90bea (24:4bea)
call DmgToCgbObjPal0
ret
-Function90c4e: ; 90c4e
+Pokegear_LoadGFX: ; 90c4e
call ClearVBank1
ld hl, TownMapGFX
ld de, VTiles2
ld a, BANK(TownMapGFX)
call FarDecompress
-
ld hl, PokegearGFX
ld de, VTiles2 + $30 tiles
ld a, BANK(PokegearGFX)
call FarDecompress
-
ld hl, PokegearSpritesGFX
ld de, VTiles0
ld a, BANK(PokegearSpritesGFX)
call Decompress
-
ld a, [MapGroup]
ld b, a
ld a, [MapNumber]
@@ -113,23 +106,18 @@ Function90c4e: ; 90c4e
call GetWorldMapLocation
cp FAST_SHIP
jr z, .ssaqua
-
callba GetPlayerIcon
-
push de
ld h, d
ld l, e
ld a, b
-
; standing sprite
push af
ld de, VTiles0 tile $10
ld bc, 4 tiles
call FarCopyBytes
pop af
-
pop hl
-
; walking sprite
ld de, 12 tiles
add hl, de
@@ -144,6 +132,7 @@ Function90c4e: ; 90c4e
ld bc, 8 tiles
call CopyBytes
ret
+
; 90cb2
FastShipGFX: ; 90cb2
@@ -159,24 +148,25 @@ InitPokegearModeIndicatorArrow: ; 90d32 (24:4d32)
ld [hl], $0
ret
-Function90d41: ; 90d41 (24:4d41)
+AnimatePokegearModeIndicatorArrow: ; 90d41 (24:4d41)
ld hl, wcf64
ld e, [hl]
ld d, 0
- ld hl, Unknown_90d52
+ ld hl, .XCoords
add hl, de
ld a, [hl]
- ld hl, $6
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
ret
+
; 90d52 (24:4d52)
-Unknown_90d52: ; 90d52
+.XCoords: ; 90d52
db $00, $10, $20, $30
; 90d56
-Function90d56: ; 90d56
+TownMap_GetCurrentLandmark: ; 90d56
ld a, [MapGroup]
ld b, a
ld a, [MapNumber]
@@ -190,47 +180,43 @@ Function90d56: ; 90d56
ld c, a
call GetWorldMapLocation
ret
-; 90d70
+; 90d70
-Function90d70: ; 90d70 (24:4d70)
+TownMap_InitCursorAndPlayerIconPositions: ; 90d70 (24:4d70)
ld a, [MapGroup]
ld b, a
ld a, [MapNumber]
ld c, a
call GetWorldMapLocation
-
cp FAST_SHIP
jr z, .FastShip
-
cp SPECIAL_MAP
jr nz, .LoadLandmark
-
ld a, [BackupMapGroup]
ld b, a
ld a, [BackupMapNumber]
ld c, a
call GetWorldMapLocation
-
.LoadLandmark
- ld [wTownMapPlayerIconLandmark], a
- ld [wTownMapCursorLandmark], a
+ ld [wPokegearMapPlayerIconLandmark], a
+ ld [wPokegearMapCursorLandmark], a
ret
.FastShip
- ld [wTownMapPlayerIconLandmark], a
+ ld [wPokegearMapPlayerIconLandmark], a
ld a, NEW_BARK_TOWN
- ld [wTownMapCursorLandmark], a
+ ld [wPokegearMapCursorLandmark], a
ret
-Function90d9e: ; 90d9e (24:4d9e)
+Pokegear_InitJumptableIndices: ; 90d9e (24:4d9e)
ld a, $0
ld [wJumptableIndex], a
xor a
ld [wcf64], a
ret
-Function90da8: ; 90da8 (24:4da8)
+InitPokegearTilemap: ; 90da8 (24:4da8)
xor a
ld [hBGMapMode], a
hlcoord 0, 0
@@ -242,39 +228,37 @@ Function90da8: ; 90da8 (24:4da8)
add a
ld e, a
ld d, 0
- ld hl, Jumptable_90e12
+ ld hl, .Jumptable
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
- ld de, .asm_90dcb
+ ld de, .return_from_jumptable
push de
jp [hl]
-.asm_90dcb
- call Function90eb0
+.return_from_jumptable
+ call Pokegear_FinishTilemap
callba TownMapPals
ld a, [wcf65]
and a
- jr nz, .asm_90de8
-
+ jr nz, .kanto_0
xor a
ld [hBGMapAddress], a
ld a, VBGMap0 / $100
ld [hBGMapAddress + 1], a
- call Function90e00
+ call .UpdateBGMap
ld a, $90
- jr .asm_90df3
+ jr .finish
-.asm_90de8
+.kanto_0
xor a
ld [hBGMapAddress], a
ld a, VBGMap1 / $100
ld [hBGMapAddress + 1], a
- call Function90e00
+ call .UpdateBGMap
xor a
-
-.asm_90df3
+.finish
ld [hWY], a
ld a, [wcf65]
and 1
@@ -282,46 +266,48 @@ Function90da8: ; 90da8 (24:4da8)
ld [wcf65], a
ret
-Function90e00: ; 90e00 (24:4e00)
+.UpdateBGMap: ; 90e00 (24:4e00)
ld a, [hCGB]
and a
- jr z, .asm_90e0e
+ jr z, .dmg
ld a, $2
ld [hBGMapMode], a
ld c, 3
call DelayFrames
-.asm_90e0e
+.dmg
call WaitBGMap
ret
+
; 90e12 (24:4e12)
-Jumptable_90e12: ; 90e12
- dw Function90e1a
- dw Function90e3f
- dw Function90e82
- dw Function90e72
+.Jumptable: ; 90e12
+ dw .Clock
+ dw .Map
+ dw .Phone
+ dw .Radio
+
; 90e1a
-Function90e1a: ; 90e1a
+.Clock: ; 90e1a
ld de, ClockTilemapRLE
- call Function914bb
+ call Pokegear_LoadTilemapRLE
hlcoord 12, 1
ld de, .switch
call PlaceString
hlcoord 0, 12
lb bc, 4, 18
call TextBox
- call Function90f86
+ call Pokegear_UpdateClock
ret
+
; 90e36 (24:4e36)
.switch
db " SWITCH▶@"
; 90e3f
-Function90e3f: ; 90e3f
-
- ld a, [wTownMapPlayerIconLandmark]
+.Map: ; 90e3f
+ ld a, [wPokegearMapPlayerIconLandmark]
cp FAST_SHIP
jr z, .johto
cp KANTO_LANDMARK
@@ -329,6 +315,7 @@ Function90e3f: ; 90e3f
.johto
ld e, 0
jr .ok
+
.kanto
ld e, 1
.ok
@@ -341,32 +328,35 @@ Function90e3f: ; 90e3f
ld [hl], $6
hlcoord 19, 2
ld [hl], $17
- ld a, [wTownMapCursorLandmark]
- call Function910b4
+ ld a, [wPokegearMapCursorLandmark]
+ call PokegearMap_UpdateLandmarkName
ret
+
; 90e72
-Function90e72: ; 90e72
+.Radio: ; 90e72
ld de, RadioTilemapRLE
- call Function914bb
+ call Pokegear_LoadTilemapRLE
hlcoord 0, 12
lb bc, 4, 18
call TextBox
ret
+
; 90e82
-Function90e82: ; 90e82
+.Phone: ; 90e82
ld de, PhoneTilemapRLE
- call Function914bb
+ call Pokegear_LoadTilemapRLE
hlcoord 0, 12
lb bc, 4, 18
call TextBox
- call Function90e98
- call Function912d8
+ call .PlacePhoneBars
+ call PokegearPhone_UpdateDisplayList
ret
+
; 90e98
-Function90e98: ; 90e98 (24:4e98)
+.PlacePhoneBars: ; 90e98 (24:4e98)
hlcoord 17, 1
ld a, $3c
ld [hli], a
@@ -382,7 +372,7 @@ Function90e98: ; 90e98 (24:4e98)
ld [hl], $3f
ret
-Function90eb0: ; 90eb0 (24:4eb0)
+Pokegear_FinishTilemap: ; 90eb0 (24:4eb0)
hlcoord 0, 0
ld bc, $8
ld a, $4f
@@ -394,33 +384,32 @@ Function90eb0: ; 90eb0 (24:4eb0)
ld de, wPokegearFlags
ld a, [de]
bit 0, a
- call nz, Function90ee4
+ call nz, .PlaceMapIcon
ld a, [de]
bit 2, a
- call nz, Function90eeb
+ call nz, .PlacePhoneIcon
ld a, [de]
bit 1, a
- call nz, Function90ef2
+ call nz, .PlaceRadioIcon
hlcoord 0, 0
ld a, $46
- call Function90ef7
+ call .PlacePokegearCardIcon
ret
-Function90ee4: ; 90ee4 (24:4ee4)
+.PlaceMapIcon: ; 90ee4 (24:4ee4)
hlcoord 2, 0
ld a, $40
- jr Function90ef7
+ jr .PlacePokegearCardIcon
-Function90eeb: ; 90eeb (24:4eeb)
+.PlacePhoneIcon: ; 90eeb (24:4eeb)
hlcoord 4, 0
ld a, $44
- jr Function90ef7
+ jr .PlacePokegearCardIcon
-Function90ef2: ; 90ef2 (24:4ef2)
+.PlaceRadioIcon: ; 90ef2 (24:4ef2)
hlcoord 6, 0
ld a, $42
-
-Function90ef7: ; 90ef7 (24:4ef7)
+.PlacePokegearCardIcon: ; 90ef7 (24:4ef7)
ld [hli], a
inc a
ld [hld], a
@@ -432,97 +421,90 @@ Function90ef7: ; 90ef7 (24:4ef7)
ld [hld], a
ret
-Function90f04: ; 90f04 (24:4f04)
+PokegearJumptable: ; 90f04 (24:4f04)
ld a, [wJumptableIndex]
ld e, a
ld d, 0
- ld hl, Jumptable_90f13
-rept 2
+ ld hl, .Jumptable
+ add hl, de
add hl, de
-endr
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
-Jumptable_90f13: ; 90f13 (24:4f13)
- dw Function90f2d
- dw Function90f3e
- dw Function90fb4
- dw Function90fcd
- dw Function90fee
- dw Function90fcd
- dw Function90fe9
- dw Function91156
- dw Function91171
- dw Function911eb
- dw Function91256
- dw Function910f9
- dw Function91112
-
-
-Function90f2d: ; 90f2d (24:4f2d)
- call Function90da8
- ld hl, UnknownText_0x914d3
+.Jumptable: ; 90f13 (24:4f13)
+ dw PokegearClock_Init
+ dw PokegearClock_Joypad
+ dw PokegearMap_CheckRegion
+ dw PokegearMap_Init
+ dw PokegearMap_JohtoMap
+ dw PokegearMap_Init
+ dw PokegearMap_KantoMap
+ dw PokegearPhone_Init
+ dw PokegearPhone_Joypad
+ dw PokegearPhone_MakePhoneCall
+ dw PokegearPhone_FinishPhoneCall
+ dw PokegearRadio_Init
+ dw PokegearRadio_Joypad
+
+PokegearClock_Init: ; 90f2d (24:4f2d)
+ call InitPokegearTilemap
+ ld hl, PokegearText_PressAnyButtonToExit
call PrintText
ld hl, wJumptableIndex
inc [hl]
- call Function91492
+ call ExitPokegearRadio_HandleMusic
ret
-Function90f3e: ; 90f3e (24:4f3e)
- call Function90f7b
+PokegearClock_Joypad: ; 90f3e (24:4f3e)
+ call .UpdateClock
ld hl, hJoyLast
-
ld a, [hl]
and A_BUTTON + B_BUTTON + START + SELECT
- jr nz, .asm_90f75
-
+ jr nz, .quit
ld a, [hl]
and D_RIGHT
ret z
-
ld a, [wPokegearFlags]
bit 0, a
- jr z, .asm_90f5a
+ jr z, .no_map_card
ld c, $2
ld b, $1
- jr .asm_90f71
-.asm_90f5a
+ jr .done
+.no_map_card
ld a, [wPokegearFlags]
bit 2, a
- jr z, .asm_90f67
+ jr z, .no_phone_card
ld c, $7
ld b, $2
- jr .asm_90f71
-.asm_90f67
+ jr .done
+.no_phone_card
ld a, [wPokegearFlags]
bit 1, a
ret z
-
ld c, $b
ld b, $3
-
-.asm_90f71
- call Function91480
+.done
+ call Pokegear_SwitchPage
ret
-.asm_90f75
+.quit
ld hl, wJumptableIndex
set 7, [hl]
ret
-Function90f7b: ; 90f7b (24:4f7b)
+.UpdateClock: ; 90f7b (24:4f7b)
xor a
ld [hBGMapMode], a
- call Function90f86
+ call Pokegear_UpdateClock
ld a, $1
ld [hBGMapMode], a
ret
-Function90f86: ; 90f86 (24:4f86)
+Pokegear_UpdateClock: ; 90f86 (24:4f86)
hlcoord 3, 5
lb bc, 5, 14
call ClearBox
@@ -532,22 +514,23 @@ Function90f86: ; 90f86 (24:4f86)
ld c, a
decoord 6, 8
callba PrintHoursMins
- ld hl, UnknownText_0x90faf
+ ld hl, .DayText
bccoord 6, 6
call PlaceWholeStringInBoxAtOnce
ret
-; 90fa8 (24:4fa8)
-String_90fa8: db "ごぜん@"
-String_90fac: db "ごご@"
+; 90fa8 (24:4fa8)
+ db "ごぜん@"
+ db "ごご@"
-UnknownText_0x90faf: ; 0x90faf
+.DayText: ; 0x90faf
text_jump UnknownText_0x1c5821
db "@"
+
; 0x90fb4
-Function90fb4: ; 90fb4 (24:4fb4)
- ld a, [wTownMapPlayerIconLandmark]
+PokegearMap_CheckRegion: ; 90fb4 (24:4fb4)
+ ld a, [wPokegearMapPlayerIconLandmark]
cp FAST_SHIP
jr z, .johto
cp KANTO_LANDMARK
@@ -555,38 +538,37 @@ Function90fb4: ; 90fb4 (24:4fb4)
.johto
ld a, 3
jr .done
-
ret
.kanto
ld a, 5
.done
ld [wJumptableIndex], a
- call Function91492
+ call ExitPokegearRadio_HandleMusic
ret
-Function90fcd: ; 90fcd (24:4fcd)
- call Function90da8
- ld a, [wTownMapPlayerIconLandmark]
- call Function9106a
- ld a, [wTownMapCursorLandmark]
- call Function91098
+PokegearMap_Init: ; 90fcd (24:4fcd)
+ call InitPokegearTilemap
+ ld a, [wPokegearMapPlayerIconLandmark]
+ call PokegearMap_InitPlayerIcon
+ ld a, [wPokegearMapCursorLandmark]
+ call PokegearMap_InitCursor
ld a, c
- ld [wc6d5], a
+ ld [wPokegearMapCursorObjectPointer], a
ld a, b
- ld [wc6d6], a
+ ld [wPokegearMapCursorObjectPointer + 1], a
ld hl, wJumptableIndex
inc [hl]
ret
-Function90fe9: ; 90fe9 (24:4fe9)
+PokegearMap_KantoMap: ; 90fe9 (24:4fe9)
call TownMap_GetKantoLandmarkLimits
- jr Function90ff2
+ jr PokegearMap_ContinueMap
-Function90fee: ; 90fee (24:4fee)
- ld d, $2e
- ld e, $1
-Function90ff2: ; 90ff2 (24:4ff2)
+PokegearMap_JohtoMap: ; 90fee (24:4fee)
+ ld d, SILVER_CAVE
+ ld e, NEW_BARK_TOWN
+PokegearMap_ContinueMap: ; 90ff2 (24:4ff2)
ld hl, hJoyLast
ld a, [hl]
and B_BUTTON
@@ -597,18 +579,18 @@ Function90ff2: ; 90ff2 (24:4ff2)
ld a, [hl]
and D_LEFT
jr nz, .left
- call Function9102f
+ call .DPad
ret
.right
ld a, [wPokegearFlags]
bit 2, a
- jr z, .asm_91015
+ jr z, .no_phone
ld c, $7
ld b, $2
jr .done
-.asm_91015
+.no_phone
ld a, [wPokegearFlags]
bit 1, a
ret z
@@ -620,14 +602,15 @@ Function90ff2: ; 90ff2 (24:4ff2)
ld c, $0
ld b, $0
.done
- call Function91480
+ call Pokegear_SwitchPage
ret
+
.cancel
ld hl, wJumptableIndex
set 7, [hl]
ret
-Function9102f: ; 9102f (24:502f)
+.DPad: ; 9102f (24:502f)
ld hl, hJoyLast
ld a, [hl]
and D_UP
@@ -636,50 +619,49 @@ Function9102f: ; 9102f (24:502f)
and D_DOWN
jr nz, .down
ret
+
.up
- ld hl, wTownMapCursorLandmark
+ ld hl, wPokegearMapCursorLandmark
ld a, [hl]
cp d
- jr c, .asm_91047
+ jr c, .wrap_around_up
ld a, e
dec a
ld [hl], a
-.asm_91047
+.wrap_around_up
inc [hl]
- jr .done
+ jr .done_dpad
.down
- ld hl, wTownMapCursorLandmark
+ ld hl, wPokegearMapCursorLandmark
ld a, [hl]
cp e
- jr nz, .asm_91054
+ jr nz, .wrap_around_down
ld a, d
inc a
ld [hl], a
-.asm_91054
+.wrap_around_down
dec [hl]
-
-.done
- ld a, [wTownMapCursorLandmark]
- call Function910b4
- ld a, [wc6d5]
+.done_dpad
+ ld a, [wPokegearMapCursorLandmark]
+ call PokegearMap_UpdateLandmarkName
+ ld a, [wPokegearMapCursorObjectPointer]
ld c, a
- ld a, [wc6d6]
+ ld a, [wPokegearMapCursorObjectPointer + 1]
ld b, a
- ld a, [wTownMapCursorLandmark]
- call Function910d4
+ ld a, [wPokegearMapCursorLandmark]
+ call PokegearMap_UpdateCursorPosition
ret
-Function9106a: ; 9106a
+PokegearMap_InitPlayerIcon: ; 9106a
push af
depixel 0, 0
- ld b, SPRITE_ANIM_INDEX_WALK_CYCLE
+ ld b, SPRITE_ANIM_INDEX_RED_WALK
ld a, [PlayerGender]
bit 0, a
- jr z, .asm_91079
- ld b, SPRITE_ANIM_INDEX_1E
-
-.asm_91079
+ jr z, .got_gender
+ ld b, SPRITE_ANIM_INDEX_BLUE_WALK
+.got_gender
ld a, b
call _InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_TILE_ID
@@ -697,9 +679,10 @@ Function9106a: ; 9106a
add hl, bc
ld [hl], d
ret
+
; 91098
-Function91098: ; 91098
+PokegearMap_InitCursor: ; 91098
push af
depixel 0, 0
ld a, SPRITE_ANIM_INDEX_0D
@@ -712,12 +695,13 @@ Function91098: ; 91098
ld [hl], SPRITE_ANIM_SEQ_NULL
pop af
push bc
- call Function910d4
+ call PokegearMap_UpdateCursorPosition
pop bc
ret
+
; 910b4
-Function910b4: ; 910b4
+PokegearMap_UpdateLandmarkName: ; 910b4
push af
hlcoord 8, 0
lb bc, 2, 12
@@ -731,9 +715,10 @@ Function910b4: ; 910b4
hlcoord 8, 0
ld [hl], $34
ret
+
; 910d4
-Function910d4: ; 910d4
+PokegearMap_UpdateCursorPosition: ; 910d4
push bc
ld e, a
callba GetLandmarkCoords
@@ -745,6 +730,7 @@ Function910d4: ; 910d4
add hl, bc
ld [hl], d
ret
+
; 910e8
TownMap_GetKantoLandmarkLimits: ; 910e8
@@ -759,11 +745,11 @@ TownMap_GetKantoLandmarkLimits: ; 910e8
ld d, ROUTE_28
ld e, VICTORY_ROAD
ret
-; 910f9
+; 910f9
-Function910f9: ; 910f9 (24:50f9)
- call Function90da8
+PokegearRadio_Init: ; 910f9 (24:50f9)
+ call InitPokegearTilemap
depixel 4, 10, 4, 4
ld a, SPRITE_ANIM_INDEX_14
call _InitSpriteAnimStruct
@@ -775,7 +761,7 @@ Function910f9: ; 910f9 (24:50f9)
inc [hl]
ret
-Function91112: ; 91112 (24:5112)
+PokegearRadio_Joypad: ; 91112 (24:5112)
ld hl, hJoyLast
ld a, [hl]
and B_BUTTON
@@ -783,11 +769,11 @@ Function91112: ; 91112 (24:5112)
ld a, [hl]
and D_LEFT
jr nz, .left
- ld a, [wc6da]
+ ld a, [wPokegearRadioChannelAddr]
ld l, a
- ld a, [wc6db]
+ ld a, [wPokegearRadioChannelAddr + 1]
ld h, a
- ld a, [wc6d9]
+ ld a, [wPokegearRadioChannelBank]
and a
ret z
rst FarCall
@@ -796,24 +782,24 @@ Function91112: ; 91112 (24:5112)
.left
ld a, [wPokegearFlags]
bit 2, a
- jr z, .asm_9113b
+ jr z, .no_phone
ld c, $7
ld b, $2
- jr .asm_9114c
+ jr .switch_page
-.asm_9113b
+.no_phone
ld a, [wPokegearFlags]
bit 0, a
- jr z, .asm_91148
+ jr z, .no_map
ld c, $2
ld b, $1
- jr .asm_9114c
+ jr .switch_page
-.asm_91148
+.no_map
ld c, $0
ld b, $0
-.asm_9114c
- call Function91480
+.switch_page
+ call Pokegear_SwitchPage
ret
.cancel
@@ -821,20 +807,20 @@ Function91112: ; 91112 (24:5112)
set 7, [hl]
ret
-Function91156: ; 91156 (24:5156)
+PokegearPhone_Init: ; 91156 (24:5156)
ld hl, wJumptableIndex
inc [hl]
xor a
- ld [wc6d2], a
- ld [wc6d1], a
- ld [wc6d3], a
- call Function90da8
- call Function91492
- ld hl, UnknownText_0x914ce
+ ld [wPokegearPhoneScrollPosition], a
+ ld [wPokegearPhoneCursorPosition], a
+ ld [wPokegearPhoneSelectedPerson], a
+ call InitPokegearTilemap
+ call ExitPokegearRadio_HandleMusic
+ ld hl, PokegearText_WhomToCall
call PrintText
ret
-Function91171: ; 91171 (24:5171)
+PokegearPhone_Joypad: ; 91171 (24:5171)
ld hl, hJoyPressed
ld a, [hl]
and B_BUTTON
@@ -849,20 +835,21 @@ Function91171: ; 91171 (24:5171)
ld a, [hl]
and D_RIGHT
jr nz, .right
- call Function9126d
+ call PokegearPhone_GetDPad
ret
.left
ld a, [wPokegearFlags]
bit 0, a
- jr z, .asm_9119c
+ jr z, .no_map
ld c, $2
ld b, $1
- jr .asm_911ac
-.asm_9119c
+ jr .switch_page
+
+.no_map
ld c, $0
ld b, $0
- jr .asm_911ac
+ jr .switch_page
.right
ld a, [wPokegearFlags]
@@ -870,8 +857,8 @@ Function91171: ; 91171 (24:5171)
ret z
ld c, $b
ld b, $3
-.asm_911ac
- call Function91480
+.switch_page
+ call Pokegear_SwitchPage
ret
.b
@@ -881,55 +868,53 @@ Function91171: ; 91171 (24:5171)
.a
ld hl, wPhoneList
- ld a, [wc6d2]
+ ld a, [wPokegearPhoneScrollPosition]
ld e, a
ld d, 0
add hl, de
- ld a, [wc6d1]
+ ld a, [wPokegearPhoneCursorPosition]
ld e, a
ld d, 0
add hl, de
ld a, [hl]
and a
ret z
-
- ld [wc6d3], a
+ ld [wPokegearPhoneSelectedPerson], a
hlcoord 1, 4
- ld a, [wc6d1]
+ ld a, [wPokegearPhoneCursorPosition]
ld bc, 20 * 2
call AddNTimes
ld [hl], "▷"
- call Function91342
- jr c, .asm_911e5
-
+ call PokegearPhoneContactSubmenu
+ jr c, .quit_submenu
ld hl, wJumptableIndex
inc [hl]
ret
-.asm_911e5
+.quit_submenu
ld a, $8
ld [wJumptableIndex], a
ret
-Function911eb: ; 911eb (24:51eb)
+PokegearPhone_MakePhoneCall: ; 911eb (24:51eb)
call GetMapHeaderPhoneServiceNybble
and a
- jr nz, .asm_91234
+ jr nz, .no_service
ld hl, Options
res NO_TEXT_SCROLL, [hl]
xor a
ld [hInMenu], a
ld de, SFX_CALL
call PlaySFX
- ld hl, UnknownText_0x9124c
+ ld hl, .dotdotdot
call PrintText
call WaitSFX
ld de, SFX_CALL
call PlaySFX
- ld hl, UnknownText_0x9124c
+ ld hl, .dotdotdot
call PrintText
call WaitSFX
- ld a, [wc6d3]
+ ld a, [wPokegearPhoneSelectedPerson]
ld b, a
call Function90199
ld c, 10
@@ -938,45 +923,49 @@ Function911eb: ; 911eb (24:51eb)
set NO_TEXT_SCROLL, [hl]
ld a, $1
ld [hInMenu], a
- call Function912b7
+ call PokegearPhone_UpdateCursor
ld hl, wJumptableIndex
inc [hl]
ret
-.asm_91234
+
+.no_service
callba Phone_NoSignal
- ld hl, OutOfServiceAreaText
+ ld hl, .OutOfServiceArea
call PrintText
ld a, $8
ld [wJumptableIndex], a
- ld hl, UnknownText_0x914ce
+ ld hl, PokegearText_WhomToCall
call PrintText
ret
+
; 9124c (24:524c)
-UnknownText_0x9124c: ; 0x9124c
+.dotdotdot: ; 0x9124c
;
text_jump UnknownText_0x1c5824
db "@"
+
; 0x91251
-OutOfServiceAreaText: ; 0x91251
+.OutOfServiceArea: ; 0x91251
; You're out of the service area.
text_jump UnknownText_0x1c5827
db "@"
+
; 0x91256
-Function91256: ; 91256 (24:5256)
+PokegearPhone_FinishPhoneCall: ; 91256 (24:5256)
ld a, [hJoyPressed]
and A_BUTTON | B_BUTTON
ret z
callba HangUp
ld a, $8
ld [wJumptableIndex], a
- ld hl, UnknownText_0x914ce
+ ld hl, PokegearText_WhomToCall
call PrintText
ret
-Function9126d: ; 9126d (24:526d)
+PokegearPhone_GetDPad: ; 9126d (24:526d)
ld hl, hJoyLast
ld a, [hl]
and D_UP
@@ -987,52 +976,52 @@ Function9126d: ; 9126d (24:526d)
ret
.up
- ld hl, wc6d1
+ ld hl, wPokegearPhoneCursorPosition
ld a, [hl]
and a
- jr z, .asm_91285
+ jr z, .scroll_page_up
dec [hl]
- jr .asm_912a3
+ jr .done_joypad_same_page
-.asm_91285
- ld hl, wc6d2
+.scroll_page_up
+ ld hl, wPokegearPhoneScrollPosition
ld a, [hl]
and a
ret z
dec [hl]
- jr .asm_912ad
+ jr .done_joypad_update_page
.down
- ld hl, wc6d1
+ ld hl, wPokegearPhoneCursorPosition
ld a, [hl]
cp $3
- jr nc, .asm_91299
+ jr nc, .scroll_page_down
inc [hl]
- jr .asm_912a3
+ jr .done_joypad_same_page
-.asm_91299
- ld hl, wc6d2
+.scroll_page_down
+ ld hl, wPokegearPhoneScrollPosition
ld a, [hl]
cp $6
ret nc
inc [hl]
- jr .asm_912ad
+ jr .done_joypad_update_page
-.asm_912a3
+.done_joypad_same_page
xor a
ld [hBGMapMode], a
- call Function912b7
+ call PokegearPhone_UpdateCursor
call WaitBGMap
ret
-.asm_912ad
+.done_joypad_update_page
xor a
ld [hBGMapMode], a
- call Function912d8
+ call PokegearPhone_UpdateDisplayList
call WaitBGMap
ret
-Function912b7: ; 912b7 (24:52b7)
+PokegearPhone_UpdateCursor: ; 912b7 (24:52b7)
ld a, " "
hlcoord 1, 4
ld [hl], a
@@ -1043,41 +1032,40 @@ Function912b7: ; 912b7 (24:52b7)
hlcoord 1, 10
ld [hl], a
hlcoord 1, 4
- ld a, [wc6d1]
- ld bc, $28
+ ld a, [wPokegearPhoneCursorPosition]
+ ld bc, 2 * SCREEN_WIDTH
call AddNTimes
ld [hl], "▶"
ret
-Function912d8: ; 912d8 (24:52d8)
+PokegearPhone_UpdateDisplayList: ; 912d8 (24:52d8)
hlcoord 1, 3
- ld b, $9
- ld a, $7f
-.asm_912df
- ld c, $12
-.asm_912e1
+ ld b, 9
+ ld a, " "
+.row
+ ld c, 18
+.col
ld [hli], a
dec c
- jr nz, .asm_912e1
-rept 2
+ jr nz, .col
+ inc hl
inc hl
-endr
dec b
- jr nz, .asm_912df
- ld a, [wc6d2]
+ jr nz, .row
+ ld a, [wPokegearPhoneScrollPosition]
ld e, a
ld d, $0
ld hl, wPhoneList
add hl, de
xor a
- ld [wc6d0], a
-.asm_912f8
+ ld [wPokegearPhoneLoadNameBuffer], a
+.loop
ld a, [hli]
push hl
push af
hlcoord 2, 4
- ld a, [wc6d0]
- ld bc, $28
+ ld a, [wPokegearPhoneLoadNameBuffer]
+ ld bc, 2 * SCREEN_WIDTH
call AddNTimes
ld d, h
ld e, l
@@ -1085,66 +1073,66 @@ endr
ld b, a
call Function90380
pop hl
- ld a, [wc6d0]
+ ld a, [wPokegearPhoneLoadNameBuffer]
inc a
- ld [wc6d0], a
+ ld [wPokegearPhoneLoadNameBuffer], a
cp $4
- jr c, .asm_912f8
- call Function912b7
+ jr c, .loop
+ call PokegearPhone_UpdateCursor
ret
+
; 9131e (24:531e)
-Function9131e: ; 9131e
+PokegearPhone_DeletePhoneNumber: ; 9131e
ld hl, wPhoneList
- ld a, [wc6d2]
+ ld a, [wPokegearPhoneScrollPosition]
ld e, a
ld d, 0
add hl, de
- ld a, [wc6d1]
+ ld a, [wPokegearPhoneCursorPosition]
ld e, a
ld d, 0
add hl, de
ld [hl], 0
ld hl, wPhoneList
- ld c, $a
-.asm_91336
+ ld c, CONTACT_LIST_SIZE
+.loop
ld a, [hli]
and a
- jr nz, .asm_9133e
+ jr nz, .skip
ld a, [hld]
ld [hli], a
ld [hl], 0
-.asm_9133e
+.skip
dec c
- jr nz, .asm_91336
+ jr nz, .loop
ret
+
; 91342
-Function91342: ; 91342 (24:5342)
+PokegearPhoneContactSubmenu: ; 91342 (24:5342)
ld hl, wPhoneList
- ld a, [wc6d2]
+ ld a, [wPokegearPhoneScrollPosition]
ld e, a
ld d, 0
add hl, de
- ld a, [wc6d1]
+ ld a, [wPokegearPhoneCursorPosition]
ld e, a
ld d, 0
add hl, de
ld c, [hl]
- callba Function9038a
+ callba CheckCanDeletePhoneNumber
ld a, c
and a
- jr z, .asm_91366
-
- ld hl, Jumptable_91455
- ld de, Unknown_9143f
- jr .asm_9136c
-
-.asm_91366
- ld hl, Jumptable_9146a
- ld de, Unknown_9145b
-
-.asm_9136c
+ jr z, .cant_delete
+ ld hl, .CallDeleteCancelJumptable
+ ld de, .CallDeleteCancelStrings
+ jr .got_menu_data
+
+.cant_delete
+ ld hl, .CallCancelJumptable
+ ld de, .CallCancelStrings
+.got_menu_data
xor a
ld [hBGMapMode], a
push hl
@@ -1171,100 +1159,100 @@ Function91342: ; 91342 (24:5342)
call PlaceString
pop de
xor a
- ld [wc6d4], a
- call Function9141d
+ ld [wPokegearPhoneSubmenuCursor], a
+ call .UpdateCursor
call WaitBGMap
-
-.asm_91398
+.loop
push de
call JoyTextDelay
pop de
ld hl, hJoyPressed
ld a, [hl]
and D_UP
- jr nz, .asm_913b4
+ jr nz, .d_up
ld a, [hl]
and D_DOWN
- jr nz, .asm_913c1
+ jr nz, .d_down
ld a, [hl]
and A_BUTTON | B_BUTTON
- jr nz, .asm_913d4
+ jr nz, .a_b
call DelayFrame
- jr .asm_91398
+ jr .loop
-.asm_913b4
- ld hl, wc6d4
+.d_up
+ ld hl, wPokegearPhoneSubmenuCursor
ld a, [hl]
and a
- jr z, .asm_91398
+ jr z, .loop
dec [hl]
- call Function9141d
- jr .asm_91398
+ call .UpdateCursor
+ jr .loop
-.asm_913c1
+.d_down
ld hl, 2
add hl, de
- ld a, [wc6d4]
+ ld a, [wPokegearPhoneSubmenuCursor]
inc a
cp [hl]
- jr nc, .asm_91398
- ld [wc6d4], a
- call Function9141d
- jr .asm_91398
+ jr nc, .loop
+ ld [wPokegearPhoneSubmenuCursor], a
+ call .UpdateCursor
+ jr .loop
-.asm_913d4
+.a_b
xor a
ld [hBGMapMode], a
- call Function912d8
+ call PokegearPhone_UpdateDisplayList
ld a, $1
ld [hBGMapMode], a
pop hl
ld a, [hJoyPressed]
and B_BUTTON
- jr nz, Function913f1
-
- ld a, [wc6d4]
+ jr nz, .Cancel
+ ld a, [wPokegearPhoneSubmenuCursor]
ld e, a
ld d, 0
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
-Function913f1: ; 913f1
- ld hl, UnknownText_0x914ce
+.Cancel: ; 913f1
+ ld hl, PokegearText_WhomToCall
call PrintText
scf
ret
+
; 913f9 (24:53f9)
-Function913f9: ; 913f9
- ld hl, UnknownText_0x914d8
+.Delete: ; 913f9
+ ld hl, PokegearText_DeleteStoredNumber
call MenuTextBox
call YesNoBox
call ExitMenu
- jr c, .asm_91419
- call Function9131e
+ jr c, .CancelDelete
+ call PokegearPhone_DeletePhoneNumber
xor a
ld [hBGMapMode], a
- call Function912d8
- ld hl, UnknownText_0x914ce
+ call PokegearPhone_UpdateDisplayList
+ ld hl, PokegearText_WhomToCall
call PrintText
call WaitBGMap
-.asm_91419
+.CancelDelete
scf
ret
+
; 9141b
-Function9141b: ; 9141b
+.Call: ; 9141b
and a
ret
+
; 9141d
-Function9141d: ; 9141d (24:541d)
+.UpdateCursor: ; 9141d (24:541d)
push de
ld a, [de]
inc de
@@ -1276,22 +1264,23 @@ Function9141d: ; 9141d (24:541d)
ld c, a
push hl
ld a, " "
- ld de, 20 * 2
-.asm_9142c
+ ld de, SCREEN_WIDTH * 2
+.clear_column
ld [hl], a
add hl, de
dec c
- jr nz, .asm_9142c
+ jr nz, .clear_column
pop hl
- ld a, [wc6d4]
- ld bc, 20 * 2
+ ld a, [wPokegearPhoneSubmenuCursor]
+ ld bc, SCREEN_WIDTH * 2
call AddNTimes
ld [hl], "▶"
pop de
ret
+
; 9143f (24:543f)
-Unknown_9143f: ; 9143f
+.CallDeleteCancelStrings: ; 9143f
dwcoord 10, 6
db 3
db "CALL"
@@ -1300,13 +1289,14 @@ Unknown_9143f: ; 9143f
db "@"
; 91455
-Jumptable_91455: ; 91455
- dw Function9141b
- dw Function913f9
- dw Function913f1
+.CallDeleteCancelJumptable: ; 91455
+ dw .Call
+ dw .Delete
+ dw .Cancel
+
; 9145b
-Unknown_9145b: ; 9145b
+.CallCancelStrings: ; 9145b
dwcoord 10, 8
db 2
db "CALL"
@@ -1314,29 +1304,29 @@ Unknown_9145b: ; 9145b
db "@"
; 9146a
-Jumptable_9146a: ; 9146a
- dw Function9141b
- dw Function913f1
-; 9146e
+.CallCancelJumptable: ; 9146a
+ dw .Call
+ dw .Cancel
+; 9146e
-Function9146e: ; 9146e
+; XXX
ld a, [hHours]
cp 12
- jr c, .asm_9147b
+ jr c, .am
sub 12
ld [wd265], a
scf
ret
-.asm_9147b
+.am
ld [wd265], a
and a
ret
-; 91480
+; 91480
-Function91480: ; 91480 (24:5480)
+Pokegear_SwitchPage: ; 91480 (24:5480)
ld de, SFX_READ_TEXT_2
call PlaySFX
ld a, c
@@ -1346,23 +1336,23 @@ Function91480: ; 91480 (24:5480)
call DeleteSpriteAnimStruct2ToEnd
ret
-Function91492: ; 91492
- ld a, [wc6dc]
+ExitPokegearRadio_HandleMusic: ; 91492
+ ld a, [wPokegearRadioMusicPlaying]
cp $fe
- jr z, .asm_914a3
+ jr z, .restart_map_music
cp $ff
call z, EnterMapMusic
xor a
- ld [wc6dc], a
+ ld [wPokegearRadioMusicPlaying], a
ret
-.asm_914a3
+.restart_map_music
call RestartMapMusic
xor a
- ld [wc6dc], a
+ ld [wPokegearRadioMusicPlaying], a
ret
-; 914ab
+; 914ab
DeleteSpriteAnimStruct2ToEnd: ; 914ab (24:54ab)
ld hl, SpriteAnim2
@@ -1373,9 +1363,11 @@ DeleteSpriteAnimStruct2ToEnd: ; 914ab (24:54ab)
ld [wSpriteAnimCount], a
ret
-Function914bb: ; 914bb (24:54bb)
+Pokegear_LoadTilemapRLE: ; 914bb (24:54bb)
+ ; Format: repeat count, tile ID
+ ; Terminated with $FF
hlcoord 0, 0
-.asm_914be
+.loop
ld a, [de]
cp $ff
ret z
@@ -1385,49 +1377,52 @@ Function914bb: ; 914bb (24:54bb)
ld c, a
inc de
ld a, b
-.asm_914c8
+.load
ld [hli], a
dec c
- jr nz, .asm_914c8
- jr .asm_914be
+ jr nz, .load
+ jr .loop
+
; 914ce (24:54ce)
-UnknownText_0x914ce: ; 0x914ce
+PokegearText_WhomToCall: ; 0x914ce
; Whom do you want to call?
text_jump UnknownText_0x1c5847
db "@"
+
; 0x914d3
-UnknownText_0x914d3: ; 0x914d3
+PokegearText_PressAnyButtonToExit: ; 0x914d3
; Press any button to exit.
text_jump UnknownText_0x1c5862
db "@"
+
; 0x914d8
-UnknownText_0x914d8: ; 0x914d8
+PokegearText_DeleteStoredNumber: ; 0x914d8
; Delete this stored phone number?
text_jump UnknownText_0x1c587d
db "@"
-; 0x914dd
+; 0x914dd
PokegearSpritesGFX: ; 914dd
INCBIN "gfx/misc/pokegear_sprites.2bpp.lz"
; 9150d
RadioTilemapRLE: ; 9150d
-INCBIN "gfx/unknown/09150d.tilemap.rle"
-
+INCBIN "gfx/pokegear/radio.tilemap.rle"
PhoneTilemapRLE: ; 9158a
-INCBIN "gfx/unknown/09158a.tilemap.rle"
-
+INCBIN "gfx/pokegear/phone.tilemap.rle"
ClockTilemapRLE: ; 915db
-INCBIN "gfx/unknown/0915db.tilemap.rle"
+INCBIN "gfx/pokegear/clock.tilemap.rle"
; 9163e
+
_UpdateRadioStation: ; 9163e (24:563e)
jr UpdateRadioStation
; called from engine/sprite_anims.asm
+
AnimateTuningKnob: ; 91640 (24:5640)
push bc
call .TuningKnob
@@ -1453,9 +1448,8 @@ AnimateTuningKnob: ; 91640 (24:5640)
ld a, [hl]
and a
ret z
-rept 2
dec [hl]
-endr
+ dec [hl]
jr .update
.up
@@ -1463,12 +1457,9 @@ endr
ld a, [hl]
cp 80
ret nc
-rept 2
inc [hl]
-endr
-
+ inc [hl]
.update
-
UpdateRadioStation: ; 9166f (24:566f)
ld hl, wRadioTuningKnob
ld d, [hl]
@@ -1479,9 +1470,8 @@ UpdateRadioStation: ; 9166f (24:566f)
jr z, .nostation
cp d
jr z, .foundstation
-rept 2
inc hl
-endr
+ inc hl
jr .loop
.nostation
@@ -1495,8 +1485,9 @@ endr
ld de, .returnafterstation
push de
jp [hl]
+
.returnafterstation
- ld a, [wc6d9]
+ ld a, [wPokegearRadioChannelBank]
and a
ret z
xor a
@@ -1506,20 +1497,22 @@ endr
ld a, $1
ld [hBGMapMode], a
ret
+
; 916a1 (24:56a1)
-Function916a1: ; 916a1
- ld [wc6d9], a
+; XXX
+ ld [wPokegearRadioChannelBank], a
ld a, [hli]
- ld [wc6da], a
+ ld [wPokegearRadioChannelAddr], a
ld a, [hli]
- ld [wc6db], a
+ ld [wPokegearRadioChannelAddr + 1], a
ret
-; 916ad
+; 916ad
RadioChannels:
; frequencies and the shows that play on them.
+
; frequency value given here = 4 × ingame_frequency − 2
dbw 16, .PkmnTalkAndPokedexShow
dbw 28, .PokemonMusic
@@ -1534,6 +1527,7 @@ RadioChannels:
.PkmnTalkAndPokedexShow
; Pokédex Show in the morning
+
; Oak's Pokémon Talk in the afternoon and evening
call .InJohto
jr nc, .NoSignal
@@ -1558,7 +1552,7 @@ RadioChannels:
jp LoadStation_BuenasPassword
.RuinsOfAlphRadio
- ld a, [wTownMapPlayerIconLandmark]
+ ld a, [wPokegearMapPlayerIconLandmark]
cp RUINS_OF_ALPH
jr nz, .NoSignal
jp LoadStation_UnownRadio
@@ -1589,12 +1583,10 @@ RadioChannels:
.EvolutionRadio
; This station airs in the Lake of Rage area when Rocket are still in Mahogany.
-
ld a, [StatusFlags]
bit 4, a
jr z, .NoSignal
-
- ld a, [wTownMapPlayerIconLandmark]
+ ld a, [wPokegearMapPlayerIconLandmark]
cp MAHOGANY_TOWN
jr z, .ok
cp ROUTE_43
@@ -1610,8 +1602,9 @@ RadioChannels:
.InJohto
; if in Johto or on the S.S. Aqua, set carry
+
; otherwise clear carry
- ld a, [wTownMapPlayerIconLandmark]
+ ld a, [wPokegearMapPlayerIconLandmark]
cp FAST_SHIP
jr z, .johto
cp KANTO_LANDMARK
@@ -1619,12 +1612,11 @@ RadioChannels:
.kanto
and a
ret
+
.johto
scf
ret
-
-
LoadStation_OaksPokemonTalk: ; 91753 (24:5753)
xor a ; OAKS_POKEMON_TALK
ld [wd002], a
@@ -1682,6 +1674,7 @@ LoadStation_BuenasPassword: ; 917a5 (24:57a5)
ret z
ld de, BuenasPasswordName
ret
+
; 917c3 (24:57c3)
BuenasPasswordName: db "BUENA'S PASSWORD@"
@@ -1719,6 +1712,7 @@ LoadStation_LetsAllSing: ; 917ff (24:57ff)
call Radio_BackUpFarCallParams
ld de, LetsAllSingName
ret
+
; 91814 (24:5814)
LoadStation_RocketRadio: ; 91814
@@ -1731,6 +1725,7 @@ LoadStation_RocketRadio: ; 91814
call Radio_BackUpFarCallParams
ld de, LetsAllSingName
ret
+
; 91829
LoadStation_PokeFluteRadio: ; 91829 (24:5829)
@@ -1754,6 +1749,7 @@ LoadStation_EvolutionRadio: ; 9183e (24:583e)
call Radio_BackUpFarCallParams
ld de, UnknownStationName
ret
+
; 91853 (24:5853)
LoadStation_Dummy: ; 91853
@@ -1762,7 +1758,7 @@ LoadStation_Dummy: ; 91853
RadioMusicRestartDE: ; 91854 (24:5854)
push de
ld a, e
- ld [wc6dc], a
+ ld [wPokegearRadioMusicPlaying], a
ld de, MUSIC_NONE
call PlayMusic
pop de
@@ -1774,7 +1770,7 @@ RadioMusicRestartDE: ; 91854 (24:5854)
RadioMusicRestartPokemonChannel: ; 91868 (24:5868)
push de
ld a, $fe
- ld [wc6dc], a
+ ld [wPokegearRadioMusicPlaying], a
ld de, MUSIC_NONE
call PlayMusic
pop de
@@ -1783,20 +1779,20 @@ RadioMusicRestartPokemonChannel: ; 91868 (24:5868)
ret
Radio_BackUpFarCallParams: ; 9187c (24:587c)
- ld [wc6d9], a
+ ld [wPokegearRadioChannelBank], a
ld a, l
- ld [wc6da], a
+ ld [wPokegearRadioChannelAddr], a
ld a, h
- ld [wc6db], a
+ ld [wPokegearRadioChannelAddr + 1], a
ret
NoRadioStation: ; 91888 (24:5888)
call NoRadioMusic
call NoRadioName
xor a
- ld [wc6d9], a
- ld [wc6da], a
- ld [wc6db], a
+ ld [wPokegearRadioChannelBank], a
+ ld [wPokegearRadioChannelAddr], a
+ ld [wPokegearRadioChannelAddr + 1], a
ld a, $1
ld [hBGMapMode], a
ret
@@ -1805,7 +1801,7 @@ NoRadioMusic: ; 9189d (24:589d)
ld de, MUSIC_NONE
call PlayMusic
ld a, $ff
- ld [wc6dc], a
+ ld [wPokegearRadioMusicPlaying], a
ret
NoRadioName: ; 918a9 (24:58a9)
@@ -1818,6 +1814,7 @@ NoRadioName: ; 918a9 (24:58a9)
ld bc, $412
call TextBox
ret
+
; 918bf
OaksPkmnTalkName: db "OAK's <PK><MN> Talk@"
@@ -1825,12 +1822,181 @@ PokedexShowName: db "#DEX Show@"
PokemonMusicName: db "#MON Music@"
LuckyChannelName: db "Lucky Channel@"
UnknownStationName: db "?????@"
+
PlacesAndPeopleName: db "Places & People@"
LetsAllSingName: db "Let's All Sing!@"
PokeFluteStationName: db "# FLUTE@"
; 9191c
-INCLUDE "engine/town_map.asm"
+_TownMap: ; 9191c
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set NO_TEXT_SCROLL, [hl]
+
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+
+ ld a, [VramState]
+ push af
+ xor a
+ ld [VramState], a
+
+ call ClearBGPalettes
+ call ClearTileMap
+ call ClearSprites
+ call DisableLCD
+ call Pokegear_LoadGFX
+ callba ClearSpriteAnims
+ ld a, 8
+ call SkipMusic
+ ld a, $e3
+ ld [rLCDC], a
+ call TownMap_GetCurrentLandmark
+ ld [wd002], a
+ ld [wd003], a
+ xor a
+ ld [hBGMapMode], a
+ call .InitTilemap
+ call WaitBGMap2
+ ld a, [wd002]
+ call PokegearMap_InitPlayerIcon
+ ld a, [wd003]
+ call PokegearMap_InitCursor
+ ld a, c
+ ld [wd004], a
+ ld a, b
+ ld [wd005], a
+ ld b, SCGB_POKEGEAR_PALS
+ call GetSGBLayout
+ call SetPalettes
+ ld a, [hCGB]
+ and a
+ jr z, .dmg
+ ld a, %11100100
+ call DmgToCgbObjPal0
+ call DelayFrame
+
+.dmg
+ ld a, [wd002]
+ cp KANTO_LANDMARK
+ jr nc, .kanto
+ ld d, KANTO_LANDMARK - 1
+ ld e, 1
+ call .loop
+ jr .resume
+
+.kanto
+ call TownMap_GetKantoLandmarkLimits
+ call .loop
+
+.resume
+ pop af
+ ld [VramState], a
+ pop af
+ ld [hInMenu], a
+ pop af
+ ld [Options], a
+ call ClearBGPalettes
+ ret
+
+.loop
+ call JoyTextDelay
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and B_BUTTON
+ ret nz
+
+ ld hl, hJoyLast
+ ld a, [hl]
+ and D_UP
+ jr nz, .pressed_up
+
+ ld a, [hl]
+ and D_DOWN
+ jr nz, .pressed_down
+.loop2
+ push de
+ callba PlaySpriteAnimations
+ pop de
+ call DelayFrame
+ jr .loop
+
+.pressed_up
+ ld hl, wd003
+ ld a, [hl]
+ cp d
+ jr c, .okay
+ ld a, e
+ dec a
+ ld [hl], a
+
+.okay
+ inc [hl]
+ jr .next
+
+.pressed_down
+ ld hl, wd003
+ ld a, [hl]
+ cp e
+ jr nz, .okay2
+ ld a, d
+ inc a
+ ld [hl], a
+
+.okay2
+ dec [hl]
+
+.next
+ push de
+ ld a, [wd003]
+ call PokegearMap_UpdateLandmarkName
+ ld a, [wd004]
+ ld c, a
+ ld a, [wd005]
+ ld b, a
+ ld a, [wd003]
+ call PokegearMap_UpdateCursorPosition
+ pop de
+ jr .loop2
+; 91a04
+
+.InitTilemap: ; 91a04
+ ld a, [wd002]
+ cp KANTO_LANDMARK
+ jr nc, .kanto2
+ ld e, $0
+ jr .okay_tilemap
+
+.kanto2
+ ld e, $1
+.okay_tilemap
+ callba PokegearMap
+ ld a, $7
+ ld bc, 6
+ hlcoord 1, 0
+ call ByteFill
+ hlcoord 0, 0
+ ld [hl], $6
+ hlcoord 7, 0
+ ld [hl], $17
+ hlcoord 7, 1
+ ld [hl], $16
+ hlcoord 7, 2
+ ld [hl], $26
+ ld a, $7
+ ld bc, NAME_LENGTH
+ hlcoord 8, 2
+ call ByteFill
+ hlcoord 19, 2
+ ld [hl], $17
+ ld a, [wd003]
+ call PokegearMap_UpdateLandmarkName
+ callba TownMapPals
+ ret
+; 91a53
PlayRadio: ; 91a53
ld hl, Options
@@ -1845,15 +2011,14 @@ PlayRadio: ; 91a53
ld a, [hJoyPressed]
and A_BUTTON | B_BUTTON
jr nz, .stop
- ld a, [wc6da]
+ ld a, [wPokegearRadioChannelAddr]
ld l, a
- ld a, [wc6db]
+ ld a, [wPokegearRadioChannelAddr + 1]
ld h, a
- ld a, [wc6d9]
+ ld a, [wPokegearRadioChannelBank]
and a
jr z, .zero
rst FarCall
-
.zero
call DelayFrame
jr .loop
@@ -1861,8 +2026,9 @@ PlayRadio: ; 91a53
.stop
pop af
ld [Options], a
- call Function91492
+ call ExitPokegearRadio_HandleMusic
ret
+
; 91a87
.PlayStation: ; 91a87
@@ -1870,9 +2036,8 @@ PlayRadio: ; 91a53
ld [EnemyTurnsTaken], a
ld hl, .StationPointers
ld d, $0
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
@@ -1895,6 +2060,7 @@ endr
ld [hl], $73
call WaitBGMap
ret
+
; 91ab9
.StationPointers: ; 91ab9
@@ -1907,6 +2073,7 @@ endr
dw LoadStation_PlacesAndPeople
dw LoadStation_LetsAllSing
dw LoadStation_RocketRadio
+
; 91acb
.OakOrPnP: ; 91acb
@@ -1921,6 +2088,7 @@ endr
.kanto
jp LoadStation_PlacesAndPeople
+
; 91ae1
PokegearMap: ; 91ae1
@@ -1935,6 +2103,7 @@ PokegearMap: ; 91ae1
call LoadTownMapGFX
call FillKantoMap
ret
+
; 91af3
_FlyMap: ; 91af3
@@ -1985,7 +2154,6 @@ _FlyMap: ; 91af3
ld de, Flypoints + 1
add hl, de
ld a, [hl]
-
.exit
ld [wd002], a
pop af
@@ -2000,6 +2168,7 @@ _FlyMap: ; 91af3
ld a, [wd002]
ld e, a
ret
+
; 91b73
FlyMapScroll: ; 91b73
@@ -2024,7 +2193,6 @@ FlyMapScroll: ; 91b73
ld a, e
dec a
ld [hl], a
-
.NotAtEndYet
inc [hl]
call CheckIfVisitedFlypoint
@@ -2039,18 +2207,17 @@ FlyMapScroll: ; 91b73
ld a, d
inc a
ld [hl], a
-
.NotAtStartYet
dec [hl]
call CheckIfVisitedFlypoint
jr z, .ScrollPrev
-
.Finally
call TownMapBubble
call WaitBGMap
xor a
ld [hBGMapMode], a
ret
+
; 91bb5
TownMapBubble: ; 91bb5
@@ -2060,47 +2227,38 @@ TownMapBubble: ; 91bb5
hlcoord 1, 0
ld a, $30
ld [hli], a
-
; Top row
ld bc, 16
ld a, " "
call ByteFill
-
; Top-right corner
ld a, $31
ld [hl], a
hlcoord 1, 1
-
; Middle row
ld bc, 18
ld a, " "
call ByteFill
-
; Bottom-left corner
hlcoord 1, 2
ld a, $32
ld [hli], a
-
; Bottom row
ld bc, 16
ld a, " "
call ByteFill
-
; Bottom-right corner
ld a, $33
ld [hl], a
-
; Print "Where?"
hlcoord 2, 0
ld de, .Where
call PlaceString
-
; Print the name of the default flypoint
call .Name
-
; Up/down arrows
hlcoord 18, 1
ld [hl], $34
@@ -2118,13 +2276,12 @@ TownMapBubble: ; 91bb5
ld de, Flypoints
add hl, de
ld e, [hl]
-
callba GetLandmarkName
-
hlcoord 2, 1
ld de, StringBuffer1
call PlaceString
ret
+
; 91c17
GetMapCursorCoordinates: ; 91c17
@@ -2147,6 +2304,7 @@ GetMapCursorCoordinates: ; 91c17
add hl, bc
ld [hl], d
ret
+
; 91c3c
CheckIfVisitedFlypoint: ; 91c3c
@@ -2166,6 +2324,7 @@ CheckIfVisitedFlypoint: ; 91c3c
pop bc
and a
ret
+
; 91c50
HasVisitedSpawn: ; 91c50
@@ -2176,18 +2335,16 @@ HasVisitedSpawn: ; 91c50
predef FlagPredef
ld a, c
ret
+
; 91c5e
Flypoints: ; 91c5e
; landmark, spawn point
-
const_def
-
flypoint: MACRO
const FLY_\1
db \2, SPAWN_\1
ENDM
-
; Johto
flypoint NEW_BARK, NEW_BARK_TOWN
flypoint CHERRYGROVE, CHERRYGROVE_CITY
@@ -2201,10 +2358,9 @@ ENDM
flypoint LAKE, LAKE_OF_RAGE
flypoint BLACKTHORN, BLACKTHORN_CITY
flypoint MT_SILVER, SILVER_CAVE
-
; Kanto
-KANTO_FLYPOINT EQU const_value
+KANTO_FLYPOINT EQU const_value
flypoint PALLET, PALLET_TOWN
flypoint VIRIDIAN, VIRIDIAN_CITY
flypoint PEWTER, PEWTER_CITY
@@ -2217,54 +2373,46 @@ KANTO_FLYPOINT EQU const_value
flypoint FUCHSIA, FUCHSIA_CITY
flypoint CINNABAR, CINNABAR_ISLAND
flypoint INDIGO, INDIGO_PLATEAU
-
db -1
+
; 91c8f
ret_91c8f: ; 91c8f
ret
+
; 91c90
FlyMap: ; 91c90
-
ld a, [MapGroup]
ld b, a
ld a, [MapNumber]
ld c, a
call GetWorldMapLocation
-
; If we're not in a valid location, i.e. Pokecenter floor 2F,
-; the backup map information is used
+; the backup map information is used
cp SPECIAL_MAP
jr nz, .CheckRegion
-
ld a, [BackupMapGroup]
ld b, a
ld a, [BackupMapNumber]
ld c, a
call GetWorldMapLocation
-
.CheckRegion
; The first 46 locations are part of Johto. The rest are in Kanto
cp KANTO_LANDMARK
jr nc, .KantoFlyMap
-
.JohtoFlyMap
; Note that .NoKanto should be modified in tandem with this branch
-
push af
-
; Start from New Bark Town
ld a, FLY_NEW_BARK
ld [wd002], a
-
; Flypoints begin at New Bark Town...
ld [StartFlypoint], a
; ..and end at Silver Cave
ld a, FLY_MT_SILVER
ld [EndFlypoint], a
-
; Fill out the map
call FillJohtoMap
call .MapHud
@@ -2273,23 +2421,23 @@ FlyMap: ; 91c90
ret
.KantoFlyMap
-
; The event that there are no flypoints enabled in a map is not
+
; accounted for. As a result, if you attempt to select a flypoint
; when there are none enabled, the game will crash. Additionally,
+
; the flypoint selection has a default starting point that
; can be flown to even if none are enabled
; To prevent both of these things from happening when the player
; enters Kanto, fly access is restricted until Indigo Plateau is
-; visited and its flypoint enabled
+; visited and its flypoint enabled
push af
ld c, SPAWN_INDIGO
call HasVisitedSpawn
and a
jr z, .NoKanto
-
; Kanto's map is only loaded if we've visited Indigo Plateau
; Flypoints begin at Pallet Town...
@@ -2298,11 +2446,10 @@ FlyMap: ; 91c90
; ...and end at Indigo Plateau
ld a, FLY_INDIGO
ld [EndFlypoint], a
-
; Because Indigo Plateau is the first flypoint the player
+
; visits, it's made the default flypoint
ld [wd002], a
-
; Fill out the map
call FillKantoMap
call .MapHud
@@ -2316,30 +2463,25 @@ FlyMap: ; 91c90
; Start from New Bark Town
ld a, FLY_NEW_BARK
ld [wd002], a
-
; Flypoints begin at New Bark Town...
ld [StartFlypoint], a
; ..and end at Silver Cave
ld a, FLY_MT_SILVER
ld [EndFlypoint], a
-
call FillJohtoMap
-
pop af
-
.MapHud
call TownMapBubble
call TownMapPals
-
hlbgcoord 0, 0 ; BG Map 0
call TownMapBGUpdate
-
call TownMapMon
ld a, c
ld [wd003], a
ld a, b
ld [wd004], a
ret
+
; 91d11
_Area: ; 91d11
@@ -2355,17 +2497,14 @@ _Area: ; 91d11
ld [hBGMapMode], a
ld a, $1
ld [hInMenu], a
-
ld de, PokedexNestIconGFX
ld hl, VTiles0 tile $7f
lb bc, BANK(PokedexNestIconGFX), 1
call Request2bpp
-
call .GetPlayerOrFastShipIcon
ld hl, VTiles0 tile $78
ld c, 4
call Request2bpp
-
call LoadTownMapGFX
call FillKantoMap
call .PlaceString_MonsNest
@@ -2399,7 +2538,6 @@ _Area: ; 91d11
.select
call .HideNestsShowPlayer
-
.next
call DelayFrame
jr .loop
@@ -2411,6 +2549,7 @@ _Area: ; 91d11
pop af
ld [wd002], a
ret
+
; 91d9b
.LeftRightInput: ; 91d9b
@@ -2446,6 +2585,7 @@ _Area: ; 91d11
ld a, 1 ; Kanto
call .GetAndPlaceNest
ret
+
; 91dcd
.BlinkNestIcons: ; 91dcd
@@ -2465,6 +2605,7 @@ _Area: ; 91d11
ld bc, SpritesEnd - Sprites
call CopyBytes
ret
+
; 91de9
.PlaceString_MonsNest: ; 91de9
@@ -2487,6 +2628,7 @@ _Area: ; 91d11
ld de, .String_SNest
call PlaceString
ret
+
; 91e16
.String_SNest:
@@ -2530,12 +2672,12 @@ _Area: ; 91d11
ld bc, SpritesEnd - Sprites
call CopyBytes
ret
+
; 91e5a
.HideNestsShowPlayer: ; 91e5a
call .CheckPlayerLocation
ret c
-
ld a, [wd002]
ld e, a
callba GetLandmarkCoords
@@ -2546,22 +2688,18 @@ _Area: ; 91d11
.ShowPlayerLoop
ld a, [de]
cp $80
- jr z, .copy
-
+ jr z, .clear_oam
add b
ld [hli], a
inc de
-
ld a, [de]
add c
ld [hli], a
inc de
-
ld a, [de]
add $78 ; where the player's sprite is loaded
ld [hli], a
inc de
-
push bc
ld c, 0 ; RED
ld a, [PlayerGender]
@@ -2572,15 +2710,15 @@ _Area: ; 91d11
ld a, c
ld [hli], a
pop bc
-
jr .ShowPlayerLoop
-.copy
- ld hl, Sprites + $10
- ld bc, SpritesEnd - (Sprites + $10)
+.clear_oam
+ ld hl, Sprites + 4 * 4
+ ld bc, SpritesEnd - (Sprites + 4 * 4)
xor a
call ByteFill
ret
+
; 91e9c
.PlayerOAM: ; 91e9c
@@ -2593,6 +2731,7 @@ _Area: ; 91d11
.CheckPlayerLocation: ; 91ea9
; Don't show the player's sprite if you're
+
; not in the same region as what's currently
; on the screen.
ld a, [wd002]
@@ -2600,7 +2739,6 @@ _Area: ; 91d11
jr z, .johto
cp KANTO_LANDMARK
jr c, .johto
-
.kanto
ld a, [wd003]
and a
@@ -2611,7 +2749,6 @@ _Area: ; 91d11
ld a, [wd003]
and a
jr nz, .clear
-
.ok
and a
ret
@@ -2623,6 +2760,7 @@ _Area: ; 91d11
call ByteFill
scf
ret
+
; 91ed0
.GetPlayerOrFastShipIcon: ; 91ed0
@@ -2636,6 +2774,7 @@ _Area: ; 91d11
ld de, FastShipGFX
ld b, BANK(FastShipGFX)
ret
+
; 91ee4
TownMapBGUpdate: ; 91ee4
@@ -2646,29 +2785,26 @@ TownMapBGUpdate: ; 91ee4
ld [hBGMapAddress], a
ld a, h
ld [hBGMapAddress + 1], a
-
; Only update palettes on CGB
ld a, [hCGB]
and a
jr z, .tiles
-
; BG Map mode 2 (palettes)
ld a, 2
ld [hBGMapMode], a
-
; The BG Map is updated in thirds, so we wait
+
; 3 frames to update the whole screen's palettes.
ld c, 3
call DelayFrames
-
.tiles
; Update BG Map tiles
call WaitBGMap
-
; Turn off BG Map update
xor a
ld [hBGMapMode], a
ret
+
; 91eff
FillJohtoMap: ; 91eff
@@ -2677,7 +2813,6 @@ FillJohtoMap: ; 91eff
FillKantoMap: ; 91f04
ld de, KantoMap
-
FillTownMap: ; 91f07
hlcoord 0, 0
.loop
@@ -2688,11 +2823,11 @@ FillTownMap: ; 91f07
ld [hli], a
inc de
jr .loop
+
; 91f13
TownMapPals: ; 91f13
; Assign palettes based on tile ids
-
hlcoord 0, 0
decoord 0, 0, AttrMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -2700,17 +2835,15 @@ TownMapPals: ; 91f13
; Current tile
ld a, [hli]
push hl
-
; HP/borders use palette 0
cp $60
jr nc, .pal0
-
; The palette data is condensed to nybbles,
+
; least-significant first.
ld hl, TownMapPalMap
srl a
jr c, .odd
-
; Even-numbered tile ids take the bottom nybble...
add l
ld l, a
@@ -2735,7 +2868,6 @@ TownMapPals: ; 91f13
.pal0
xor a
-
.update
pop hl
ld [de], a
@@ -2766,16 +2898,13 @@ TownMapMon: ; 91f7b
add hl, de
ld a, [hl]
ld [wd265], a
-
; Get FlyMon icon
ld e, 8 ; starting tile in VRAM
callba GetSpeciesIcon
-
; Animation/palette
depixel 0, 0
ld a, SPRITE_ANIM_INDEX_00
call _InitSpriteAnimStruct
-
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $8
@@ -2783,19 +2912,17 @@ TownMapMon: ; 91f7b
add hl, bc
ld [hl], SPRITE_ANIM_SEQ_NULL
ret
+
; 91fa6
TownMapPlayerIcon: ; 91fa6
; Draw the player icon at town map location in a
push af
-
callba GetPlayerIcon
-
; Standing icon
ld hl, VTiles0 tile $10
ld c, 4 ; # tiles
call Request2bpp
-
; Walking icon
ld hl, $c0
add hl, de
@@ -2805,28 +2932,24 @@ TownMapPlayerIcon: ; 91fa6
ld c, 4 ; # tiles
ld a, BANK(ChrisSpriteGFX) ; does nothing
call Request2bpp
-
; Animation/palette
depixel 0, 0
- ld b, SPRITE_ANIM_INDEX_WALK_CYCLE ; Male
+ ld b, SPRITE_ANIM_INDEX_RED_WALK ; Male
ld a, [PlayerGender]
bit 0, a
jr z, .got_gender
- ld b, SPRITE_ANIM_INDEX_1E ; Female
+ ld b, SPRITE_ANIM_INDEX_BLUE_WALK ; Female
.got_gender
ld a, b
call _InitSpriteAnimStruct
-
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $10
-
pop af
ld e, a
push bc
callba GetLandmarkCoords
pop bc
-
ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld [hl], e
@@ -2834,6 +2957,7 @@ TownMapPlayerIcon: ; 91fa6
add hl, bc
ld [hl], d
ret
+
; 0x91ff2
LoadTownMapGFX: ; 91ff2
@@ -2842,8 +2966,8 @@ LoadTownMapGFX: ; 91ff2
lb bc, BANK(TownMapGFX), $30
call DecompressRequest2bpp
ret
-; 91fff
+; 91fff
JohtoMap: ; 91fff
INCBIN "gfx/misc/johto.bin"
@@ -2855,12 +2979,10 @@ INCBIN "gfx/misc/kanto.bin"
PokedexNestIconGFX: ; 922d1
INCBIN "gfx/pokegear/dexmap_nest_icon.2bpp"
-
FlyMapLabelBorderGFX: ; 922e1
INCBIN "gfx/pokegear/flymap_label_border.2bpp"
-Function92311: ; 92311
-; unreferenced
+; XXX
xor a
ld [wd002], a
call ClearBGPalettes
@@ -2913,7 +3035,7 @@ Function92311: ; 92311
.pressedB
ld a, -1
- jr .asm_9239f
+ jr .finished_a_b
.pressedA
ld a, [wd002]
@@ -2923,8 +3045,7 @@ Function92311: ; 92311
ld de, Flypoints + 1
add hl, de
ld a, [hl]
-
-.asm_9239f
+.finished_a_b
ld [wd002], a
pop af
ld [hInMenu], a
@@ -2938,6 +3059,7 @@ Function92311: ; 92311
ld a, [wd002]
ld e, a
ret
+
; 923b8
.HandleDPad: ; 923b8
@@ -2968,12 +3090,10 @@ Function92311: ; 92311
ld [hl], FLY_INDIGO + 1
.okay_ul
dec [hl]
-
.continue
ld a, [wd002]
cp KANTO_FLYPOINT
jr c, .johto
-
call FillKantoMap
xor a
ld b, $9c
@@ -2983,7 +3103,6 @@ Function92311: ; 92311
call FillJohtoMap
ld a, $90
ld b, $98
-
.finish
ld [hWY], a
ld a, b
@@ -2993,4 +3112,5 @@ Function92311: ; 92311
xor a
ld [hBGMapMode], a
ret
+
; 92402
diff --git a/engine/predef.asm b/engine/predef.asm
index f459747bb..f52127311 100644
--- a/engine/predef.asm
+++ b/engine/predef.asm
@@ -49,7 +49,7 @@ PredefPointers:: ; 856b
add_predef Predef_LinkTextbox ; $ 10
add_predef PrintMoveDesc
add_predef UpdatePlayerHUD
- add_predef FillBox
+ add_predef PlaceGraphic
add_predef CheckPlayerPartyForFitPkmn
add_predef UpdateEnemyHUD
add_predef StartBattle
@@ -88,7 +88,7 @@ PredefPointers:: ; 856b
add_predef PlayBattleAnim
add_predef Predef38 ; $38
add_predef Predef39
- add_predef Functionfd1d0
+ add_predef Predef3A
add_predef PartyMonItemName
add_predef GetFrontpic
add_predef GetBackpic
@@ -103,6 +103,6 @@ PredefPointers:: ; 856b
add_predef LoadMonAnimation
add_predef AnimateFrontpic
add_predef Functiond0669 ; $48
- add_predef Functiond066e
+ add_predef HOF_AnimateFrontpic
dbw $ff, Function2d43 ; ????
; 864c
diff --git a/engine/prof_oaks_pc.asm b/engine/prof_oaks_pc.asm
new file mode 100755
index 000000000..05ff2b691
--- /dev/null
+++ b/engine/prof_oaks_pc.asm
@@ -0,0 +1,219 @@
+
+ProfOaksPC: ; 0x265d3
+ ld hl, OakPCText1
+ call MenuTextBox
+ call YesNoBox
+ jr c, .shutdown
+ call ProfOaksPCBoot ; player chose "yes"?
+.shutdown
+ ld hl, OakPCText4
+ call PrintText
+ call JoyWaitAorB
+ call ExitMenu
+ ret
+
+ProfOaksPCBoot ; 0x265ee
+ ld hl, OakPCText2
+ call PrintText
+ call Rate
+ call PlaySFX ; sfx loaded by previous Rate function call
+ call JoyWaitAorB
+ call WaitSFX
+ ret
+
+ProfOaksPCRating: ; 0x26601
+ call Rate
+ push de
+ ld de, MUSIC_NONE
+ call PlayMusic
+ pop de
+ call PlaySFX
+ call JoyWaitAorB
+ call WaitSFX
+ ret
+
+Rate: ; 0x26616
+; calculate Seen/Owned
+ ld hl, PokedexSeen
+ ld b, EndPokedexSeen - PokedexSeen
+ call CountSetBits
+ ld [wd002], a
+ ld hl, PokedexCaught
+ ld b, EndPokedexCaught - PokedexCaught
+ call CountSetBits
+ ld [wd003], a
+
+; print appropriate rating
+ call .UpdateRatingBuffers
+ ld hl, OakPCText3
+ call PrintText
+ call JoyWaitAorB
+ ld a, [wd003]
+ ld hl, OakRatings
+ call FindOakRating
+ push de
+ call PrintText
+ pop de
+ ret
+
+.UpdateRatingBuffers: ; 0x26647
+ ld hl, StringBuffer3
+ ld de, wd002
+ call .UpdateRatingBuffer
+ ld hl, StringBuffer4
+ ld de, wd003
+ call .UpdateRatingBuffer
+ ret
+
+.UpdateRatingBuffer: ; 0x2665a
+ push hl
+ ld a, "@"
+ ld bc, ITEM_NAME_LENGTH
+ call ByteFill
+ pop hl
+ lb bc, PRINTNUM_RIGHTALIGN | 1, 3
+ call PrintNum
+ ret
+
+FindOakRating: ; 0x2666b
+; return sound effect in de
+; return text pointer in hl
+ nop
+ ld c, a
+.loop
+ ld a, [hli]
+ cp c
+ jr nc, .match
+rept 4
+ inc hl
+endr
+ jr .loop
+
+.match
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+
+OakRatings: ; 0x2667f
+oakrating: MACRO
+ db \1
+ dw \2, \3
+endm
+
+; if you caught at most this many, play this sound, load this text
+ oakrating 9, SFX_DEX_FANFARE_LESS_THAN_20, OakRating01
+ oakrating 19, SFX_DEX_FANFARE_LESS_THAN_20, OakRating02
+ oakrating 34, SFX_DEX_FANFARE_20_49, OakRating03
+ oakrating 49, SFX_DEX_FANFARE_20_49, OakRating04
+ oakrating 64, SFX_DEX_FANFARE_50_79, OakRating05
+ oakrating 79, SFX_DEX_FANFARE_50_79, OakRating06
+ oakrating 94, SFX_DEX_FANFARE_80_109, OakRating07
+ oakrating 109, SFX_DEX_FANFARE_80_109, OakRating08
+ oakrating 124, SFX_CAUGHT_MON, OakRating09
+ oakrating 139, SFX_CAUGHT_MON, OakRating10
+ oakrating 154, SFX_DEX_FANFARE_140_169, OakRating11
+ oakrating 169, SFX_DEX_FANFARE_140_169, OakRating12
+ oakrating 184, SFX_DEX_FANFARE_170_199, OakRating13
+ oakrating 199, SFX_DEX_FANFARE_170_199, OakRating14
+ oakrating 214, SFX_DEX_FANFARE_200_229, OakRating15
+ oakrating 229, SFX_DEX_FANFARE_200_229, OakRating16
+ oakrating 239, SFX_DEX_FANFARE_230_PLUS, OakRating17
+ oakrating 248, SFX_DEX_FANFARE_230_PLUS, OakRating18
+ oakrating 255, SFX_DEX_FANFARE_230_PLUS, OakRating19
+
+OakPCText1: ; 0x266de
+ text_jump _OakPCText1
+ db "@"
+
+OakPCText2: ; 0x266e3
+ text_jump _OakPCText2
+ db "@"
+
+OakPCText3: ; 0x266e8
+ text_jump _OakPCText3
+ db "@"
+
+OakRating01:
+ text_jump _OakRating01
+ db "@"
+
+OakRating02:
+ text_jump _OakRating02
+ db "@"
+
+OakRating03:
+ text_jump _OakRating03
+ db "@"
+
+OakRating04:
+ text_jump _OakRating04
+ db "@"
+
+OakRating05:
+ text_jump _OakRating05
+ db "@"
+
+OakRating06:
+ text_jump _OakRating06
+ db "@"
+
+OakRating07:
+ text_jump _OakRating07
+ db "@"
+
+OakRating08:
+ text_jump _OakRating08
+ db "@"
+
+OakRating09:
+ text_jump _OakRating09
+ db "@"
+
+OakRating10:
+ text_jump _OakRating10
+ db "@"
+
+OakRating11:
+ text_jump _OakRating11
+ db "@"
+
+OakRating12:
+ text_jump _OakRating12
+ db "@"
+
+OakRating13:
+ text_jump _OakRating13
+ db "@"
+
+OakRating14:
+ text_jump _OakRating14
+ db "@"
+
+OakRating15:
+ text_jump _OakRating15
+ db "@"
+
+OakRating16:
+ text_jump _OakRating16
+ db "@"
+
+OakRating17:
+ text_jump _OakRating17
+ db "@"
+
+OakRating18:
+ text_jump _OakRating18
+ db "@"
+
+OakRating19:
+ text_jump _OakRating19
+ db "@"
+
+OakPCText4: ; 0x2674c
+ text_jump _OakPCText4
+ db "@"
diff --git a/engine/scripting.asm b/engine/scripting.asm
index 0a68243d3..42d060e9b 100644
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -2806,9 +2806,9 @@ Script_xycompare: ; 97a01
; pointer (MultiByteParam)
call GetScriptByte
- ld [wd453], a
+ ld [wXYComparePointer], a
call GetScriptByte
- ld [wd454], a
+ ld [wXYComparePointer + 1], a
ret
; 97a0e
diff --git a/engine/sprite_anims.asm b/engine/sprite_anims.asm
index 827626114..50eb61df6 100755
--- a/engine/sprite_anims.asm
+++ b/engine/sprite_anims.asm
@@ -19,14 +19,14 @@ DoAnimFrame: ; 8d24b
dw .two ; bouncing mon icon, selected
dw .three ; bouncing mon icon, menu open
dw .four
- dw .five
+ dw .namingscreencursor
dw .GameFreakLogo ; Game Freak logo
dw .seven
dw .eight
dw .SlotsGolem ; Something to do with slots
dw .SlotsChansey ; Something to do with slots
dw .SlotsChanseyEgg ; Something to do with slots
- dw .twelve ; blinking cursor
+ dw .mailcompositioncursor ; blinking cursor
dw .thirteen
dw .fourteen
dw .fifteen
@@ -217,12 +217,12 @@ DoAnimFrame: ; 8d24b
ld [hl], a
ret
-.five: ; 8d36c (23:536c)
- callab Function11a3b
+.namingscreencursor: ; 8d36c (23:536c)
+ callab NamingScreen_AnimateCursor
ret
-.twelve: ; 8d373 (23:5373)
- callab Function120c1
+.mailcompositioncursor: ; 8d373 (23:5373)
+ callab ComposeMail_AnimateCursor
ret
.GameFreakLogo: ; 8d37a (23:537a)
@@ -409,7 +409,7 @@ DoAnimFrame: ; 8d24b
ret
.fifteen: ; 8d475 (23:5475)
- callab Function90d41
+ callab AnimatePokegearModeIndicatorArrow
ret
.fourteen: ; 8d47c (23:547c)
diff --git a/engine/startmenu.asm b/engine/startmenu.asm
index 6ba60af36..25a3eee39 100755
--- a/engine/startmenu.asm
+++ b/engine/startmenu.asm
@@ -393,7 +393,7 @@ endr
ld hl, StatusFlags2
bit 2, [hl] ; bug catching contest
ret z
- callba Function24bdc
+ callba StartMenu_DrawBugContestStatusBox
ret
; 128de
@@ -403,7 +403,7 @@ endr
jr nz, .contest
ret
.contest
- callba Function24be7
+ callba StartMenu_PrintBugContestStatus
ret
; 128ed
diff --git a/engine/tile_events.asm b/engine/tile_events.asm
index 8a6f2bc66..a6794e817 100755
--- a/engine/tile_events.asm
+++ b/engine/tile_events.asm
@@ -1,6 +1,6 @@
CheckWarpCollision:: ; 1499a
; Is this tile a warp?
- ld a, [PlayerNextTile]
+ ld a, [PlayerStandingTile]
cp $60
jr z, .warp
cp $68
@@ -19,7 +19,7 @@ CheckWarpCollision:: ; 1499a
CheckDirectionalWarp:: ; 149af
; If this is a directional warp, clear carry (press the designated button to warp).
; Else, set carry (immediate warp).
- ld a, [PlayerNextTile]
+ ld a, [PlayerStandingTile]
cp $70 ; Warp on down
jr z, .not_warp
cp $76 ; Warp on left
@@ -39,7 +39,7 @@ CheckDirectionalWarp:: ; 149af
CheckWarpFacingDown: ; 149c6
ld de, 1
ld hl, .blocks
- ld a, [PlayerNextTile]
+ ld a, [PlayerStandingTile]
call IsInArray
ret
; 149d3
@@ -58,7 +58,7 @@ CheckWarpFacingDown: ; 149c6
; 149dd
CheckGrassCollision:: ; 149dd
- ld a, [PlayerNextTile]
+ ld a, [PlayerStandingTile]
ld hl, .blocks
ld de, 1
call IsInArray
@@ -98,7 +98,7 @@ CheckCutCollision: ; 149f5
; 14a07
Function14a07:: ; 14a07
- ld a, [PlayerNextTile]
+ ld a, [PlayerStandingTile]
ld de, $1f
cp $71 ; door
ret z
diff --git a/engine/time.asm b/engine/time.asm
index 542141198..4240522c2 100755
--- a/engine/time.asm
+++ b/engine/time.asm
@@ -200,11 +200,9 @@ CheckPokerusTick:: ; 114e7
call CalcDaysSince
call GetDaysSince
and a
- jr z, .done
-
+ jr z, .done ; not even a day has passed since game start
ld b, a
callba ApplyPokerusTick
-
.done
xor a
ret
@@ -229,13 +227,13 @@ CheckUnusedTwoDayTimer: ; 1150c
ret
; 1151c
-Function1151c: ; unreferenced
+; XXX
ld hl, DailyFlags
set 2, [hl]
ret
; 11522
-Function11522: ; unreferenced
+; XXX
and a
ld hl, DailyFlags
bit 2, [hl]
diff --git a/engine/time_capsule/conversion.asm b/engine/time_capsule/conversion.asm
index e2c545c48..5d093d515 100755
--- a/engine/time_capsule/conversion.asm
+++ b/engine/time_capsule/conversion.asm
@@ -367,13 +367,13 @@ NewPokedexEntry: ; fb877
ld a, [hSCX]
add -5 ; 251 ; NUM_POKEMON
ld [hSCX], a
- call Functionfb8c8
+ call .ReturnFromDexRegistration
pop af
ld [hMapAnims], a
ret
; fb8c8
-Functionfb8c8: ; fb8c8
+.ReturnFromDexRegistration: ; fb8c8
call ClearTileMap
call LoadFontsExtra
call LoadStandardFont
diff --git a/engine/tmhm2.asm b/engine/tmhm2.asm
index fdb829034..94de4f3e3 100755
--- a/engine/tmhm2.asm
+++ b/engine/tmhm2.asm
@@ -196,16 +196,16 @@ TMHM_PocketLoop: ; 2c8d3 (b:48d3)
xor a
ld [hBGMapMode], a
call TMHM_DisplayPocketItems
- ld a, $2
+ ld a, 2
ld [w2DMenuCursorInitY], a
- ld a, $7
+ ld a, 7
ld [w2DMenuCursorInitX], a
- ld a, $1
+ ld a, 1
ld [w2DMenuNumCols], a
- ld a, $5
+ ld a, 5
sub d
inc a
- cp $6
+ cp 6
jr nz, .okay
dec a
.okay
diff --git a/engine/town_map.asm b/engine/town_map.asm
deleted file mode 100755
index 100aaae17..000000000
--- a/engine/town_map.asm
+++ /dev/null
@@ -1,171 +0,0 @@
-
-_TownMap: ; 9191c
- ld hl, Options
- ld a, [hl]
- push af
- set NO_TEXT_SCROLL, [hl]
-
- ld a, [hInMenu]
- push af
- ld a, $1
- ld [hInMenu], a
-
- ld a, [VramState]
- push af
- xor a
- ld [VramState], a
-
- call ClearBGPalettes
- call ClearTileMap
- call ClearSprites
- call DisableLCD
- call Function90c4e
- callba ClearSpriteAnims
- ld a, 8
- call SkipMusic
- ld a, $e3
- ld [rLCDC], a
- call Function90d56
- ld [wd002], a
- ld [wd003], a
- xor a
- ld [hBGMapMode], a
- call Function91a04
- call WaitBGMap2
- ld a, [wd002]
- call Function9106a
- ld a, [wd003]
- call Function91098
- ld a, c
- ld [wd004], a
- ld a, b
- ld [wd005], a
- ld b, SCGB_POKEGEAR_PALS
- call GetSGBLayout
- call SetPalettes
- ld a, [hCGB]
- and a
- jr z, .dmg
- ld a, %11100100
- call DmgToCgbObjPal0
- call DelayFrame
-
-.dmg
- ld a, [wd002]
- cp KANTO_LANDMARK
- jr nc, .kanto
- ld d, KANTO_LANDMARK - 1
- ld e, 1
- call .loop
- jr .resume
-
-.kanto
- call TownMap_GetKantoLandmarkLimits
- call .loop
-
-.resume
- pop af
- ld [VramState], a
- pop af
- ld [hInMenu], a
- pop af
- ld [Options], a
- call ClearBGPalettes
- ret
-
-.loop
- call JoyTextDelay
- ld hl, hJoyPressed
- ld a, [hl]
- and B_BUTTON
- ret nz
-
- ld hl, hJoyLast
- ld a, [hl]
- and D_UP
- jr nz, .pressed_up
-
- ld a, [hl]
- and D_DOWN
- jr nz, .pressed_down
-.loop2
- push de
- callba PlaySpriteAnimations
- pop de
- call DelayFrame
- jr .loop
-
-.pressed_up
- ld hl, wd003
- ld a, [hl]
- cp d
- jr c, .okay
- ld a, e
- dec a
- ld [hl], a
-
-.okay
- inc [hl]
- jr .next
-
-.pressed_down
- ld hl, wd003
- ld a, [hl]
- cp e
- jr nz, .okay2
- ld a, d
- inc a
- ld [hl], a
-
-.okay2
- dec [hl]
-
-.next
- push de
- ld a, [wd003]
- call Function910b4
- ld a, [wd004]
- ld c, a
- ld a, [wd005]
- ld b, a
- ld a, [wd003]
- call Function910d4
- pop de
- jr .loop2
-; 91a04
-
-Function91a04: ; 91a04
- ld a, [wd002]
- cp KANTO_LANDMARK
- jr nc, .kanto
- ld e, $0
- jr .okay
-
-.kanto
- ld e, $1
-
-.okay
- callba PokegearMap
- ld a, $7
- ld bc, 6
- hlcoord 1, 0
- call ByteFill
- hlcoord 0, 0
- ld [hl], $6
- hlcoord 7, 0
- ld [hl], $17
- hlcoord 7, 1
- ld [hl], $16
- hlcoord 7, 2
- ld [hl], $26
- ld a, $7
- ld bc, NAME_LENGTH
- hlcoord 8, 2
- call ByteFill
- hlcoord 19, 2
- ld [hl], $17
- ld a, [wd003]
- call Function910b4
- callba TownMapPals
- ret
-; 91a53
diff --git a/engine/trade/animation.asm b/engine/trade/animation.asm
index a084fc3be..719a230ff 100755
--- a/engine/trade/animation.asm
+++ b/engine/trade/animation.asm
@@ -3,12 +3,12 @@ TradeAnimation: ; 28f24
ld [wcf66], a
ld hl, wPlayerTrademonSenderName
ld de, wOTTrademonSenderName
- call Function297ff
+ call LinkTradeAnim_LoadTradePlayerNames
ld hl, wPlayerTrademonSpecies
ld de, wOTTrademonSpecies
- call Function29814
+ call LinkTradeAnim_LoadTradeMonSpecies
ld de, .data_28f3f
- jr Function28fa1
+ jr RunTradeAnimSequence
.data_28f3f
tradeanim_setup_givemon_scroll
@@ -54,12 +54,12 @@ TradeAnimationPlayer2: ; 28f63
ld [wcf66], a
ld hl, wOTTrademonSenderName
ld de, wPlayerTrademonSenderName
- call Function297ff
+ call LinkTradeAnim_LoadTradePlayerNames
ld hl, wOTTrademonSpecies
ld de, wPlayerTrademonSpecies
- call Function29814
+ call LinkTradeAnim_LoadTradeMonSpecies
ld de, .data_28f7e
- jr Function28fa1
+ jr RunTradeAnimSequence
.data_28f7e
tradeanim_ot_sends_text_2
@@ -99,7 +99,7 @@ TradeAnimationPlayer2: ; 28f63
tradeanim_scroll_out_right
tradeanim_end
-Function28fa1: ; 28fa1
+RunTradeAnimSequence: ; 28fa1
ld hl, wTradeAnimPointer
ld [hl], e
inc hl
@@ -116,7 +116,7 @@ Function28fa1: ; 28fa1
ld a, [hl]
push af
set 4, [hl]
- call Function28fdb
+ call .TradeAnimLayout
ld a, [wcf66]
and a
jr nz, .anim_loop
@@ -134,7 +134,7 @@ Function28fa1: ; 28fa1
ret
; 28fdb
-Function28fdb: ; 28fdb
+.TradeAnimLayout: ; 28fdb
xor a
ld [wJumptableIndex], a
call ClearBGPalettes
@@ -145,7 +145,7 @@ Function28fdb: ; 28fdb
callab ClearSpriteAnims
ld a, [hCGB]
and a
- jr z, .asm_2900b
+ jr z, .NotCGB
ld a, $1
ld [rVBK], a
ld hl, VTiles0
@@ -155,7 +155,7 @@ Function28fdb: ; 28fdb
ld a, $0
ld [rVBK], a
-.asm_2900b
+.NotCGB
hlbgcoord 0, 0
ld bc, sScratch - VBGMap0
ld a, " "
@@ -182,7 +182,7 @@ Function28fdb: ; 28fdb
ld [hWY], a
callba GetTrademonFrontpic
call EnableLCD
- call Function2982b
+ call LoadTradeBallAndCableGFX
ld a, [wPlayerTrademonSpecies]
ld hl, wPlayerTrademonDVs
ld de, VTiles0
@@ -313,7 +313,7 @@ TradeAnim_End: ; 29123
TradeAnim_TubeToOT1: ; 29129
ld a, $ed
call Function292f6
- ld a, [wc74c]
+ ld a, [wLinkTradeSendmonSpecies]
ld [wd265], a
xor a
depixel 5, 11, 4, 0
@@ -323,7 +323,7 @@ TradeAnim_TubeToOT1: ; 29129
TradeAnim_TubeToPlayer1: ; 2913c
ld a, $ee
call Function292f6
- ld a, [wc74d]
+ ld a, [wLinkTradeGetmonSpecies]
ld [wd265], a
ld a, $2
depixel 9, 18, 4, 4
@@ -350,7 +350,7 @@ Function2914e: ; 2914e
ld a, $70
ld [hWY], a
call EnableLCD
- call Function2985a
+ call LoadTradeBubbleGFX
pop de
ld a, SPRITE_ANIM_INDEX_11
call _InitSpriteAnimStruct
@@ -476,7 +476,7 @@ TradeAnim_TubeToPlayer8: ; 29229
ld a, $90
ld [hWY], a
call EnableLCD
- call Function2982b
+ call LoadTradeBallAndCableGFX
call WaitBGMap
call Function297ed
call TradeAnim_Next
@@ -864,9 +864,9 @@ TradeAnim_ShowFrontpic: ; 294c3
call Function297cf
hlcoord 7, 2
xor a
- ld [hFillBox], a
+ ld [hGraphicStartTile], a
lb bc, 7, 7
- predef FillBox
+ predef PlaceGraphic
call WaitBGMap
ret
; 294e7
@@ -1376,17 +1376,17 @@ Function297ed: ; 297ed
ld a, [hSGB]
and a
ld a, %11100100 ; 3,2,1,0
- jr z, .asm_297f6
+ jr z, .not_sgb
ld a, $f0
-.asm_297f6
+.not_sgb
call DmgToCgbObjPal0
ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
ret
; 297ff
-Function297ff: ; 297ff
+LinkTradeAnim_LoadTradePlayerNames: ; 297ff
push de
ld de, wLinkPlayer1Name
ld bc, NAME_LENGTH
@@ -1398,11 +1398,11 @@ Function297ff: ; 297ff
ret
; 29814
-Function29814: ; 29814
+LinkTradeAnim_LoadTradeMonSpecies: ; 29814
ld a, [hl]
- ld [wc74c], a
+ ld [wLinkTradeSendmonSpecies], a
ld a, [de]
- ld [wc74d], a
+ ld [wLinkTradeGetmonSpecies], a
ret
; 2981d
@@ -1416,7 +1416,7 @@ Function2981d: ; 2981d
ret
; 2982b
-Function2982b: ; 2982b
+LoadTradeBallAndCableGFX: ; 2982b
call DelayFrame
ld de, TradeBallGFX
ld hl, VTiles0 tile $62
@@ -1431,13 +1431,13 @@ Function2982b: ; 2982b
lb bc, BANK(TradeCableGFX), $4
call Request2bpp
xor a
- ld hl, wc300
+ ld hl, wSpriteAnimDict
ld [hli], a
ld [hl], $62
ret
; 2985a
-Function2985a: ; 2985a
+LoadTradeBubbleGFX: ; 2985a
call DelayFrame
ld e, $3
callab Function8e83f
@@ -1446,7 +1446,7 @@ Function2985a: ; 2985a
lb bc, BANK(TradeBubbleGFX), $4
call Request2bpp
xor a
- ld hl, wc300
+ ld hl, wSpriteAnimDict
ld [hli], a
ld [hl], $62
ret
diff --git a/engine/trainer_card.asm b/engine/trainer_card.asm
index ae8ad2aa5..4898d657a 100755
--- a/engine/trainer_card.asm
+++ b/engine/trainer_card.asm
@@ -245,8 +245,8 @@ TrainerCard_PrintTopHalfOfCard: ; 25299 (9:5299)
hlcoord 14, 1
lb bc, 5, 7
xor a
- ld [hFillBox], a
- predef FillBox
+ ld [hGraphicStartTile], a
+ predef PlaceGraphic
ret
; 252ec (9:52ec)
diff --git a/engine/warp_connection.asm b/engine/warp_connection.asm
index 7df4fc35b..6d7e00181 100755
--- a/engine/warp_connection.asm
+++ b/engine/warp_connection.asm
@@ -349,7 +349,7 @@ CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
ret
.down
- ld a, [PlayerNextMapY]
+ ld a, [PlayerStandingMapY]
sub 4
ld b, a
ld a, [MapHeight]
@@ -360,7 +360,7 @@ CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
ret
.up
- ld a, [PlayerNextMapY]
+ ld a, [PlayerStandingMapY]
sub 4
cp -1
jr z, .ok
@@ -368,7 +368,7 @@ CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
ret
.left
- ld a, [PlayerNextMapX]
+ ld a, [PlayerStandingMapX]
sub $4
cp -1
jr z, .ok
@@ -376,7 +376,7 @@ CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
ret
.right
- ld a, [PlayerNextMapX]
+ ld a, [PlayerStandingMapX]
sub 4
ld b, a
ld a, [MapWidth]