diff options
Diffstat (limited to 'engine/menus/naming_screen.asm')
-rw-r--r-- | engine/menus/naming_screen.asm | 1391 |
1 files changed, 1391 insertions, 0 deletions
diff --git a/engine/menus/naming_screen.asm b/engine/menus/naming_screen.asm new file mode 100644 index 00000000..ca0eb213 --- /dev/null +++ b/engine/menus/naming_screen.asm @@ -0,0 +1,1391 @@ +NamingScreen_: ; 11aa3 (4:5aa3) + call DisableSpriteUpdates + call NamingScreen + call ReturnToMapWithSpeechTextbox + ret + +NamingScreen: ; 11aad (4:5aad) + ld hl, wNamingScreenDestinationPointer + ld [hl], e + inc hl + ld [hl], d + ld hl, wNamingScreenType + ld [hl], b + ld hl, wOptions + ld a, [hl] + push af + set NO_TEXT_SCROLL, [hl] + ldh a, [hMapAnims] + push af + xor a + ldh [hMapAnims], a + ldh a, [hInMenu] + push af + ld a, $1 + ldh [hInMenu], a + call Function11ae4 + call DelayFrame +.asm_11ad1 + call Function11cd4 + jr nc, .asm_11ad1 + pop af + ldh [hInMenu], a + pop af + ldh [hMapAnims], a + pop af + ld [wOptions], a + call ClearJoypad + ret + +Function11ae4: ; 11ae4 (4:5ae4) + call ClearBGPalettes + ld b, $8 + call GetSGBLayout + call DisableLCD + call Function1201e + call Function11c67 + ld a, $e3 + ldh [rLCDC], a + call Function11b09 + call WaitBGMap + call WaitTop + call SetPalettes + call Function11fad + ret + +Function11b09: ; 11b09 (4:5b09) + ld a, [wNamingScreenType] + and $7 + ld e, a + ld d, $0 + ld hl, .Jumptable + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.Jumptable + dw Function11b2a + dw Function11b79 + dw Function11b97 + dw Function11bb8 + dw Function11bda + dw Function11b2a + dw Function11b2a + dw Function11b2a + +Function11b2a: + ld a, [wCurPartySpecies] + ld [wd151], a + ld hl, LoadMenuMonIcon + ld a, BANK(LoadMenuMonIcon) + ld e, $1 + rst FarCall + ld a, [wCurPartySpecies] + ld [wd151], a + call GetPokemonName + hlcoord 5, 2 + call PlaceString + ld l, c + ld h, b + ld de, .Strings + call PlaceString + inc de + hlcoord 5, 4 + call PlaceString + farcall GetGender + jr c, .asm_11b68 + ld a, "♂" + jr nz, .place_gender + ld a, "♀" +.place_gender + hlcoord 1, 2 + ld [hl], a +.asm_11b68 + call Function11c3a + ret + +.Strings: + db "'S@" + db "NICKNAME?@" + +Function11b79: + ld de, PlayerSpriteGFX ; $4000 + call Function11c11 + hlcoord 5, 2 + ld de, .String + call PlaceString + call Function11c41 + ret + +.String: + db "YOUR NAME?@" + +Function11b97: + ld de, SilverSpriteGFX ; $43c0 + call Function11c11 + hlcoord 5, 2 + ld de, .String + call PlaceString + call Function11c41 + ret + +.String: + db "RIVAL'S NAME?@" + +Function11bb8: + ld de, MomSpriteGFX ; $4fc0 + call Function11c11 + hlcoord 5, 2 + ld de, .String + call PlaceString + call Function11c41 + ret + +.String: + db "MOTHER'S NAME?@" + +Function11bda: + ld de, $7380 + ld hl, $8000 + lb bc, $31, 4 + call Request2bpp + xor a + ld hl, wMisc + ld [hli], a + ld [hl], a + lb de, $24, $20 + ld a, $1c + call InitSpriteAnimStruct + ld hl, $1 + add hl, bc + ld [hl], $0 + hlcoord 5, 2 + ld de, .String + call PlaceString + call Function11c48 + ret + +.String: + db "BOX NAME?@" + +Function11c11: ; 11c11 (4:5c11) + push de + ld hl, $8000 + lb bc, BANK(PlayerSpriteGFX), 4 + call Request2bpp + pop de + ld hl, $c0 + add hl, de + ld e, l + ld d, h + ld hl, $8040 + lb bc, BANK(PlayerSpriteGFX), 4 + call Request2bpp + xor a + ld hl, wMisc + ld [hli], a + ld [hl], a + lb de, $24, $20 + ld a, $1c + call InitSpriteAnimStruct + ret + +Function11c3a: ; 11c3a (4:5c3a) + ld a, $a + hlcoord 5, 6 + jr asm_11c4f + +Function11c41: ; 11c41 (4:5c41) + ld a, $7 + hlcoord 5, 6 + jr asm_11c4f + +Function11c48: ; 11c48 (4:5c48) + ld a, $8 + hlcoord 5, 4 + jr asm_11c4f + +asm_11c4f + ld [wc5d3], a + ld a, l + ld [wc5d8], a + ld a, h + ld [wc5d9], a + ret + +Function11c5b: ; 11c5b (4:5c5b) + push bc + push af + ld a, [wNamingScreenType] + sub $3 + ld b, a + pop af + dec b + pop bc + ret + +Function11c67: ; 11c67 (4:5c67) + call WaitTop + hlcoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + ld a, $60 + call ByteFill + hlcoord 1, 1 + lb bc, $6, $12 + call Function11c5b + jr nz, .asm_11c83 + lb bc, $4, $12 +.asm_11c83 + call ClearBox + ld de, NameInputUpper ; $616f +Function11c89: ; 11c89 (4:5c89) + call Function11c5b + jr nz, .asm_11c94 + ld hl, $55 + add hl, de + ld d, h + ld e, l +.asm_11c94 + push de + hlcoord 1, 8 + lb bc, $7, $12 + call Function11c5b + jr nz, .asm_11ca6 + hlcoord 1, 6 + lb bc, $9, $12 +.asm_11ca6 + call ClearBox + hlcoord 1, 16 + lb bc, $1, $12 + call ClearBox + pop de + hlcoord 2, 8 + ld b, $5 + call Function11c5b + jr nz, .asm_11cc2 + hlcoord 2, 6 + ld b, $6 +.asm_11cc2 + ld c, $11 +.asm_11cc4 + ld a, [de] + ld [hli], a + inc de + dec c + jr nz, .asm_11cc4 + push de + ld de, $17 + add hl, de + pop de + dec b + jr nz, .asm_11cc2 + ret + +Function11cd4: ; 11cd4 (4:5cd4) + call JoyTextDelay + ld a, [wce63] + bit 7, a + jr nz, .asm_11cef + call Function11d27 + farcall AnimatedObjects_PlayFrameAndDelay + call Function11cff + call DelayFrame + and a + ret + +.asm_11cef + callfar ClearAnimatedObjectBuffer + call ClearSprites + xor a + ldh [hSCX], a + ldh [hSCY], a + scf + ret + +Function11cff: ; 11cff (4:5cff) + xor a + ldh [hBGMapMode], a + hlcoord 1, 5 + call Function11c5b + jr nz, .asm_11d0d + hlcoord 1, 3 +.asm_11d0d + ld bc, $112 + call ClearBox + ld hl, wNamingScreenDestinationPointer + ld e, [hl] + inc hl + ld d, [hl] + ld hl, wc5d8 + ld a, [hli] + ld h, [hl] + ld l, a + call PlaceString + ld a, $1 + ldh [hBGMapMode], a + ret + +Function11d27: ; 11d27 (4:5d27) + ld a, [wce63] + ld e, a + ld d, $0 + ld hl, $5d36 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.Jumptable: + dw Function11d3a + dw Function11d60 + +Function11d3a: + lb de, $50, $18 + call Function11c5b + jr nz, .asm_11d44 + ld d, $40 +.asm_11d44 + ld a, $14 + call InitSpriteAnimStruct + ld a, c + ld [wc5d5], a + ld a, b + ld [wc5d6], a + ld hl, $1 + add hl, bc + ld a, [hl] + ld hl, $e + add hl, bc + ld [hl], a + ld hl, wce63 + inc [hl] + ret + +Function11d60: + ld hl, hJoyPressed + ld a, [hl] + and $1 + jr nz, .asm_11d78 + ld a, [hl] + and $2 + jr nz, .asm_11da6 + ld a, [hl] + and $8 + jr nz, .asm_11d8e + ld a, [hl] + and $4 + jr nz, .asm_11db3 + ret + +.asm_11d78 + call Function11dca + cp $1 + jr z, .asm_11db3 + cp $2 + jr z, .asm_11da6 + cp $3 + jr z, .asm_11daa + call Function11fde + call Function11ed3 + ret nc +.asm_11d8e + ld hl, wc5d5 + ld c, [hl] + inc hl + ld b, [hl] + ld hl, $c + add hl, bc + ld [hl], $8 + ld hl, $d + add hl, bc + ld [hl], $4 + call Function11c5b + ret nz + inc [hl] + ret + +.asm_11da6 + call Function11f89 + ret + +.asm_11daa + call Function11fc4 + ld hl, wce63 + set 7, [hl] + ret + +.asm_11db3 + ld hl, wce64 + ld a, [hl] + xor $1 + ld [hl], a + jr z, .asm_11dc3 + ld de, $60b4 + call Function11c89 + ret + +.asm_11dc3 + ld de, $616f + call Function11c89 + ret + +Function11dca: ; 11dca (4:5dca) + ld hl, wc5d5 + ld c, [hl] + inc hl + ld b, [hl] +Function11dd0: ; 11dd0 (4:5dd0) + ld hl, $d + add hl, bc + ld a, [hl] + push bc + ld b, $4 + call Function11c5b + jr nz, .asm_11dde + inc b +.asm_11dde + cp b + pop bc + jr nz, .asm_11df8 + ld hl, $c + add hl, bc + ld a, [hl] + cp $3 + jr c, .asm_11df2 + cp $6 + jr c, .asm_11df5 + ld a, $3 + ret + +.asm_11df2 + ld a, $1 + ret + +.asm_11df5 + ld a, $2 + ret + +.asm_11df8 + xor a + ret + +Function11dfa: + call Function11e4a + ld hl, $d + add hl, bc + ld a, [hl] + ld e, a + swap e + ld hl, $7 + add hl, bc + ld [hl], e + ld d, $4 + call Function11c5b + jr nz, .asm_11e12 + inc d +.asm_11e12 + cp d + ld de, .LetterEntries + ld a, $0 + jr nz, .asm_11e1f + ld de, .CaseDelEnd + ld a, $1 +.asm_11e1f + ld hl, $e + add hl, bc + add [hl] + ld hl, $1 + add hl, bc + ld [hl], a + ld hl, $c + add hl, bc + ld l, [hl] + ld h, $0 + add hl, de + ld a, [hl] + ld hl, $6 + add hl, bc + ld [hl], a + ret + +.LetterEntries: + db $00, $10, $20, $30, $40, $50, $60, $70, $80 + +.CaseDelEnd: + db $00, $00, $00, $30, $30, $30, $60, $60, $60 + +Function11e4a: ; 11e4a (4:5e4a) + ld hl, hJoyLast + ld a, [hl] + and $40 + jr nz, .asm_11ec1 + ld a, [hl] + and $80 + jr nz, .asm_11ea8 + ld a, [hl] + and $20 + jr nz, .asm_11e84 + ld a, [hl] + and $10 + jr nz, .asm_11e62 + ret + +.asm_11e62 + call Function11dd0 + and a + jr nz, .asm_11e76 + ld hl, $c + add hl, bc +.asm_11e6c + ld a, [hl] + cp $8 + jr nc, .asm_11e73 + inc [hl] + ret + +.asm_11e73 + ld [hl], $0 + ret + +.asm_11e76 + cp $3 + jr nz, .asm_11e7b + xor a +.asm_11e7b + ld e, a + add a + add e + ld hl, $c + add hl, bc + ld [hl], a + ret + +.asm_11e84 + call Function11dd0 + and a + jr nz, .asm_11e97 + ld hl, $c + add hl, bc + ld a, [hl] + and a + jr z, .asm_11e94 + dec [hl] + ret + +.asm_11e94 + ld [hl], $8 + ret + +.asm_11e97 + cp $1 + jr nz, .asm_11e9d + ld a, $4 +.asm_11e9d + dec a + dec a + ld e, a + add a + add e + ld hl, $c + add hl, bc + ld [hl], a + ret + +.asm_11ea8 + ld hl, $d + add hl, bc + ld a, [hl] + call Function11c5b + jr nz, .asm_11eb8 + cp $5 + jr nc, .asm_11ebe + inc [hl] + ret + +.asm_11eb8 + cp $4 + jr nc, .asm_11ebe + inc [hl] + ret + +.asm_11ebe + ld [hl], $0 + ret + +.asm_11ec1 + ld hl, $d + add hl, bc + ld a, [hl] + and a + jr z, .asm_11ecb + dec [hl] + ret + +.asm_11ecb + ld [hl], $4 + call Function11c5b + ret nz + inc [hl] + ret + +Function11ed3: ; 11ed3 (4:5ed3) + ld a, [wc5d7] + ld hl, Dakutens + cp $e5 + jr z, asm_11f06 + ld hl, Handakutens + cp $e4 + jr z, asm_11f06 +Function11ee4: ; 11ee4 (4:5ee4) + ld a, [wc5d3] + ld c, a + ld a, [wc5d2] + cp c + ret nc + ld a, [wc5d7] +asm_11ef0 + call Function11f9d + ld [hl], a +asm_11ef4 + ld hl, wc5d2 + inc [hl] + call Function11f9d + ld a, [hl] + cp $50 + jr z, .asm_11f04 + ld [hl], $f2 + and a + ret + +.asm_11f04 + scf + ret + +asm_11f06 + ld a, [wc5d2] + and a + ret z + push hl + ld hl, wc5d2 + dec [hl] + call Function11f9d + ld c, [hl] + pop hl +.asm_11f15 + ld a, [hli] + cp $ff + jr z, asm_11ef4 + cp c + jr z, .asm_11f20 + inc hl + jr .asm_11f15 + +.asm_11f20 + ld a, [hl] + jr asm_11ef0 + +Dakutens: ; Dummied out + db "かが", "きぎ", "くぐ", "けげ", "こご" + db "さざ", "しじ", "すず", "せぜ", "そぞ" + db "ただ", "ちぢ", "つづ", "てで", "とど" + db "はば", "ひび", "ふぶ", "へべ", "ほぼ" + db "カガ", "キギ", "クグ", "ケゲ", "コゴ" + db "サザ", "シジ", "スズ", "セゼ", "ソゾ" + db "タダ", "チヂ", "ツヅ", "テデ", "トド" + db "ハバ", "ヒビ", "フブ", "へべ", "ホボ" + db $ff + +Handakutens: ; Dummied out + db "はぱ", "ひぴ", "ふぷ", "へぺ", "ほぽ" + db "ハパ", "ヒピ", "フプ", "へぺ", "ホポ" + db $ff + +Function11f89: ; 11f89 (4:5f89) + ld hl, wc5d2 + ld a, [hl] + and a + ret z + dec [hl] + call Function11f9d + ld [hl], $f2 + inc hl + ld a, [hl] + cp $f2 + ret nz + ld [hl], $eb + ret + +Function11f9d: ; 11f9d (4:5f9d) + push af + ld hl, wNamingScreenDestinationPointer + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wc5d2] + ld e, a + ld d, $0 + add hl, de + pop af + ret + +Function11fad: ; 11fad (4:5fad) + ld hl, wNamingScreenDestinationPointer + ld a, [hli] + ld h, [hl] + ld l, a + ld [hl], $f2 + inc hl + ld a, [wc5d3] + dec a + ld c, a + ld a, $eb +.asm_11fbd + ld [hli], a + dec c + jr nz, .asm_11fbd + ld [hl], $50 + ret + +Function11fc4: ; 11fc4 (4:5fc4) + ld hl, wNamingScreenDestinationPointer + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wc5d3] + ld c, a +.asm_11fce + ld a, [hl] + cp $eb + jr z, .asm_11fd7 + cp $f2 + jr nz, .asm_11fd9 +.asm_11fd7 + ld [hl], $50 +.asm_11fd9 + inc hl + dec c + jr nz, .asm_11fce + ret + +Function11fde: ; 11fde (4:5fde) + ld hl, wc5d5 + ld c, [hl] + inc hl + ld b, [hl] + ld hl, $6 + add hl, bc + ld a, [hl] + ld hl, $4 + add hl, bc + add [hl] + sub $8 + srl a + srl a + srl a + ld e, a + ld hl, $7 + add hl, bc + ld a, [hl] + ld hl, $5 + add hl, bc + add [hl] + sub $10 + srl a + srl a + srl a + ld d, a + hlcoord 0, 0 + ld bc, $14 +.asm_12010 + ld a, d + and a + jr z, .asm_12018 + add hl, bc + dec d + jr .asm_12010 + +.asm_12018 + add hl, de + ld a, [hl] + ld [wc5d7], a + ret + +Function1201e: ; 1201e (4:601e) + call ClearSprites + callfar ClearAnimatedObjectBuffer + call Functiond9e + call LoadFontsExtra + ld de, NamingScreenGFX_MiddleLine ; $6232 + ld hl, $8eb0 + lb bc, BANK(NamingScreenGFX_MiddleLine), 1 + call Get1bpp + ld de, NamingScreenGFX_UnderLine ; $623a + ld hl, $8f20 + lb bc, BANK(NamingScreenGFX_UnderLine), 1 + call Get1bpp + ld de, $9600 + ld hl, NamingScreenGFX_Border + ld bc, $10 + ld a, BANK(NamingScreenGFX_Border) + call FarCopyBytes + ld de, $87e0 + ld hl, NamingScreenGFX_Cursor + ld bc, $20 + ld a, BANK(NamingScreenGFX_Cursor) + call FarCopyBytes + ld a, $5 + ld hl, wAnimatedObjectDynamicVTileOffsets + 9 * 2 + ld [hli], a + ld [hl], $7e + xor a + ldh [hSCY], a + ld [wGlobalAnimYOffset], a + ldh [hSCX], a + ld [wGlobalAnimXOffset], a + ld [wce63], a + ld [wce64], a + ldh [hBGMapMode], a + ld [wc5d2], a + ld a, $7 + ldh [hWX], a + ret + +NamingScreenGFX_Border: INCBIN "gfx/namingscreen/border.2bpp" +NamingScreenGFX_Cursor: INCBIN "gfx/namingscreen/cursor.2bpp" + +NameInputLower: + 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 "× ( ) : ; [ ] <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" + db "s t u v w x y z " + db "é 'd 'l 'm 'r 's 't 'v 0" + db "1 2 3 4 5 6 7 8 9" + db "UPPER DEL END " + +NameInputUpper: + 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" + db "S T U V W X Y Z " + db "× ( ) : ; [ ] <PK> <MN>" + db "- ? ! ♂ ♀ / . , &" + db "lower DEL END " + +NamingScreenGFX_ED: INCBIN "gfx/namingscreen/ed.1bpp" ; leftover from gen 1 +NamingScreenGFX_MiddleLine: INCBIN "gfx/namingscreen/middleline.1bpp" +NamingScreenGFX_UnderLine: INCBIN "gfx/namingscreen/underline.1bpp" + +_ComposeMailMessage: + ld hl, wNamingScreenDestinationPointer + ld [hl], e + inc hl + ld [hl], d + ldh a, [hMapAnims] + push af + xor a + ldh [hMapAnims], a + ldh a, [hInMenu] + push af + ld a, $1 + ldh [hInMenu], a + call Function12267 + call DelayFrame +.asm_1225b + call Function1238d + jr nc, .asm_1225b + pop af + ldh [hInMenu], a + pop af + ldh [hMapAnims], a + ret + +Function12267: ; 12267 (4:6267) + call ClearBGPalettes + call DisableLCD + call Function1201e + ld de, $8000 + ld hl, MailIcon ; $62c1 + ld bc, $80 + ld a, BANK(MailIcon) + call FarCopyBytes + xor a + ld hl, wTilemapEnd + ld [hli], a + ld [hl], a + lb de, $18, $10 + ld a, $0 + call InitSpriteAnimStruct + ld hl, $2 + add hl, bc + ld [hl], $0 + call Function12351 + ld a, $e3 + ldh [rLCDC], a + call Function12341 + ld b, $8 + call GetSGBLayout + call WaitBGMap + call WaitTop + ld a, $e4 + call DmgToCgbBGPals + ld a, $e4 + call DmgToCgbObjPal0 + call Function11fad + ld hl, wNamingScreenDestinationPointer + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $10 + add hl, de + ld [hl], $4e + ret + +MailIcon: INCBIN "gfx/namingscreen/mail_icon.2bpp" + +Function12341: ; 12341 (4:6341) + ld a, $21 + ld [wc5d3], a + ret + + db "メールを かいてね@" + +Function12351: ; 12351 (4:6351) + call WaitTop + hlcoord 0, 0 + ld bc, $78 + ld a, $60 + call ByteFill + hlcoord 0, 6 + ld bc, $f0 + ld a, $7f + call ByteFill + hlcoord 1, 1 + ld bc, IncGradGBPalTable_13 + call ClearBox + ld de, MailEntry_Uppercase +Function12376: ; 12376 (4:6376) + hlcoord 1, 7 + ld b, $6 +.asm_1237b + ld c, $13 +.asm_1237d + ld a, [de] + ld [hli], a + inc de + dec c + jr nz, .asm_1237d + push de + ld de, $15 + add hl, de + pop de + dec b + jr nz, .asm_1237b + ret + +Function1238d: ; 1238d (4:638d) + call JoyTextDelay + ld a, [wce63] + bit 7, a + jr nz, .asm_123a8 + call Function123d5 + farcall AnimatedObjects_PlayFrameAndDelay + call Function123b8 + call DelayFrame + and a + ret + +.asm_123a8 + callfar ClearAnimatedObjectBuffer + call ClearSprites + xor a + ldh [hSCX], a + ldh [hSCY], a + scf + ret + +Function123b8: ; 123b8 (4:63b8) + xor a + ldh [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 + ldh [hBGMapMode], a + ret + +Function123d5: ; 123d5 (4:63d5) + ld a, [wce63] + ld e, a + ld d, $0 + ld hl, .Jumptable ; $63e4 + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.Jumptable: + dw Function123e8 + dw Function12407 + +Function123e8: + lb de, $48, $10 + ld a, $1b + call InitSpriteAnimStruct + ld a, c + ld [wc5d5], a + ld a, b + ld [wc5d6], a + ld hl, $1 + add hl, bc + ld a, [hl] + ld hl, $e + add hl, bc + ld [hl], a + ld hl, wce63 + inc [hl] + ret + +Function12407: + ld hl, hJoyPressed + ld a, [hl] + and $1 + jr nz, .asm_1241f + ld a, [hl] + and $2 + jr nz, .asm_1245a + ld a, [hl] + and $8 + jr nz, .asm_12447 + ld a, [hl] + and $4 + jr nz, .asm_12477 + ret + +.asm_1241f + call Function12552 + cp $1 + jr z, .asm_12477 + cp $2 + jr z, .asm_1245a + cp $3 + jr z, .asm_1246e + call Function11fde + call Function12579 + jr c, .asm_12447 + ld hl, wc5d2 + ld a, [hl] + cp $10 + ret nz + inc [hl] + call Function11f9d + ld [hl], $f2 + dec hl + ld [hl], $4e + ret + +.asm_12447 + ld hl, wc5d5 + ld c, [hl] + inc hl + ld b, [hl] + ld hl, $c + add hl, bc + ld [hl], $9 + ld hl, $d + add hl, bc + ld [hl], $5 + ret + +.asm_1245a + call Function11f89 + ld hl, wc5d2 + ld a, [hl] + cp $10 + ret nz + dec [hl] + call Function11f9d + ld [hl], $f2 + inc hl + ld [hl], $4e + ret + +.asm_1246e + call Function11fc4 + ld hl, wce63 + set 7, [hl] + ret + +.asm_12477 + ld hl, wce64 + ld a, [hl] + xor $1 + ld [hl], a + jr nz, .asm_12487 + ld de, MailEntry_Uppercase ; $65b6 + call Function12376 + ret + +.asm_12487 + ld de, MailEntry_Lowercase ; $6628 + call Function12376 + ret + +Function1248e: + call Function124d9 + ld hl, $d + add hl, bc + ld a, [hl] + ld e, a + swap e + ld hl, $7 + add hl, bc + ld [hl], e + cp $5 + ld de, .LetterEntries + ld a, $0 + jr nz, .asm_124ac + ld de, .CaseDelEnd + ld a, $1 +.asm_124ac + ld hl, $e + add hl, bc + add [hl] + ld hl, $1 + add hl, bc + ld [hl], a + ld hl, $c + add hl, bc + ld l, [hl] + ld h, $0 + add hl, de + ld a, [hl] + ld hl, $6 + add hl, bc + ld [hl], a + ret + +.LetterEntries: + db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90 + +.CaseDelEnd: + db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60 + +Function124d9: ; 124d9 (4:64d9) + ld hl, hJoyLast + ld a, [hl] + and $40 + jr nz, .asm_12545 + ld a, [hl] + and $80 + jr nz, .asm_12537 + ld a, [hl] + and $20 + jr nz, .asm_12513 + ld a, [hl] + and $10 + jr nz, .asm_124f1 + ret + +.asm_124f1 + call Function12558 + and a + jr nz, .asm_12505 + ld hl, $c +.asm_124f9 + add hl, bc + ld a, [hl] + cp $9 + jr nc, .asm_12502 + inc [hl] + ret + +.asm_12502 + ld [hl], $0 +.asm_12504 + ret + +.asm_12505 + cp $3 + jr nz, .asm_1250a + xor a +.asm_1250a + ld e, a + add a + add e + ld hl, $c + add hl, bc + ld [hl], a + ret + +.asm_12513 + call Function12558 + and a + jr nz, .asm_12526 + ld hl, $c + add hl, bc + ld a, [hl] + and a + jr z, .asm_12523 + dec [hl] + ret + +.asm_12523 + ld [hl], $9 + ret + +.asm_12526 + cp $1 + jr nz, .asm_1252c + ld a, $4 +.asm_1252c + dec a + dec a + ld e, a + add a + add e + ld hl, $c + add hl, bc + ld [hl], a +.asm_12536 + ret + +.asm_12537 + ld hl, $d + add hl, bc + ld a, [hl] + cp $5 + jr nc, .asm_12542 + inc [hl] + ret + +.asm_12542 + ld [hl], $0 + ret + +.asm_12545 + ld hl, $d + add hl, bc + ld a, [hl] + and a + jr z, .asm_1254f + dec [hl] + ret + +.asm_1254f + ld [hl], $5 + ret + +Function12552: ; 12552 (4:6552) + ld hl, wc5d5 + ld c, [hl] + inc hl + ld b, [hl] +Function12558: ; 12558 (4:6558) + ld hl, $d + add hl, bc + ld a, [hl] + cp $5 + jr nz, .asm_12577 + ld hl, $c + add hl, bc + ld a, [hl] + cp $3 + jr c, .asm_12571 + cp $6 + jr c, .asm_12574 + ld a, $3 + ret + +.asm_12571 + ld a, $1 + ret + +.asm_12574 + ld a, $2 + ret + +.asm_12577 + xor a + ret + +Function12579: ; 12579 (4:6579) + ld a, [wc5d7] + ld hl, $5f23 + cp $e5 + jr z, .asm_1258b + ld hl, $5f74 + cp $e4 + jp nz, Function11ee4 +.asm_1258b + ld a, [wc5d2] + and a + ret z + cp $11 + jr nz, .asm_1259c + push hl + ld hl, wc5d2 + dec [hl] + dec [hl] + jr .asm_125a1 + +.asm_1259c + push hl + ld hl, wc5d2 + dec [hl] +.asm_125a1 + call Function11f9d + ld c, [hl] + pop hl +.asm_125a6 + ld a, [hli] + cp $ff + jp z, asm_11ef4 + cp c + jr z, .asm_125b2 + inc hl + jr .asm_125a6 + +.asm_125b2 + ld a, [hl] + jp asm_11ef0 + +MailEntry_Uppercase: + 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 " + +MailEntry_Lowercase: + 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 " |