summaryrefslogtreecommitdiff
path: root/engine/namingscreen.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/namingscreen.asm')
-rwxr-xr-xengine/namingscreen.asm985
1 files changed, 754 insertions, 231 deletions
diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm
index f36e9b5eb..188665bc4 100755
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -6,11 +6,11 @@ _NamingScreen: ; 0x116b7
; 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 +24,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
@@ -39,29 +39,29 @@ NamingScreen: ; 116c1
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
@@ -72,18 +72,18 @@ endr
; 1172e
-Jumptable_1172e: ; 1172e (4:572e)
- dw Function1173e
- dw Function1178d
- dw Function117ae
- dw Function117d1
- dw Function117f5
- dw Function1182c
- dw Function1173e
- dw Function1173e
+.Jumptable: ; 1172e (4:572e)
+ dw .Pokemon
+ dw .Player
+ dw .Rival
+ dw .Mom
+ dw .Box
+ dw .Tomodachi
+ dw .Pokemon
+ dw .Pokemon
-Function1173e: ; 1173e (4:573e)
+.Pokemon: ; 1173e (4:573e)
ld a, [CurPartySpecies]
ld [wd265], a
ld hl, Function8e83f
@@ -97,74 +97,74 @@ 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
@@ -180,36 +180,36 @@ Function117f5: ; 117f5 (4:57f5)
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
@@ -222,46 +222,46 @@ Function11847: ; 11847 (4:5847)
pop de
ld b, SPRITE_ANIM_INDEX_WALK_CYCLE
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
+ cp KrisSpriteGFX % $100
+ jr nz, .not_kris
ld b, SPRITE_ANIM_INDEX_1E
-.asm_11873
+.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
@@ -270,7 +270,7 @@ Function1189c: ; 1189c
ret
; 118a8
-Function118a8: ; 118a8
+NamingScreen_InitText: ; 118a8
call WaitTop
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -278,31 +278,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 +310,41 @@ 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
@@ -354,22 +354,22 @@ Function11915: ; 11915
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
@@ -379,11 +379,11 @@ Function11940: ; 11940
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
@@ -394,21 +394,21 @@ endr
; 11977
-Jumptable_11977: ; 11977 (4:5977)
- dw Function1197b
- dw Function119a1
+.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 hl, SPRITEANIMSTRUCT_FRAMESET_ID
@@ -421,7 +421,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 +438,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 +460,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 +480,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 +542,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]
@@ -568,13 +571,14 @@ Function11a3b: ; 11a3b (4:5a3b)
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
@@ -590,7 +594,7 @@ Function11a8b: ; 11a8b (4:5a8b)
jr nz, .right
ret
.right
- call Function11a11
+ call NamingScreen_GetCursorPosition
and a
jr nz, .asm_11ab7
ld hl, SPRITEANIMSTRUCT_0C
@@ -616,7 +620,7 @@ Function11a8b: ; 11a8b (4:5a8b)
ld [hl], a
ret
.left
- call Function11a11
+ call NamingScreen_GetCursorPosition
and a
jr nz, .asm_11ad8
ld hl, SPRITEANIMSTRUCT_0C
@@ -648,7 +652,7 @@ endr
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
@@ -672,65 +676,65 @@ endr
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
@@ -750,13 +754,13 @@ Handakutens: ; Dummied out
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,13 +769,13 @@ 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
@@ -779,18 +783,18 @@ Function11bd0: ; 11bd0 (4:5bd0)
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
@@ -800,29 +804,29 @@ Function11be0: ; 11be0
; 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 +853,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 +908,17 @@ 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
@@ -950,10 +954,529 @@ 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 Function12185
+ cp $1
+ jr z, .select
+ cp $2
+ jr z, .b
+ cp $3
+ jr z, .finished
+ call NamingScreen_GetLastCharacter
+ call Function121ac
+ 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
+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, wNamingScreenCursorObjectPointer
+ 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, [wNamingScreenLastCharacter]
+ jp MailComposition_TryAddCharacter
+; 121b2 (4:61b2)
+
+Function121b2: ; unreferenced
+ 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