ref: 5d3b958763d48e6049e13b068d2f2d5382cdcad2
dir: /engine/menu/naming_screen.asm/
AskName: ; 64eb (1:64eb) call SaveScreenTilesToBuffer1 call GetPredefRegisters push hl ld a, [W_ISINBATTLE] dec a ld hl, wTileMap ld b, $4 ld c, $b call z, ClearScreenArea ; only if in wild batle ld a, [wcf91] ld [wd11e], a call GetMonName ld hl, DoYouWantToNicknameText call PrintText hlCoord 14, 7 ld bc, $80f ld a, TWO_OPTION_MENU ld [wTextBoxID], a call DisplayTextBoxID pop hl ld a, [wCurrentMenuItem] and a jr nz, .asm_654c ld a, [wUpdateSpritesEnabled] push af xor a ld [wUpdateSpritesEnabled], a push hl ld a, NAME_MON_SCREEN ld [wNamingScreenType], a call DisplayNamingScreen ld a, [W_ISINBATTLE] and a jr nz, .asm_653e call ReloadMapSpriteTilePatterns .asm_653e call LoadScreenTilesFromBuffer1 pop hl pop af ld [wUpdateSpritesEnabled], a ld a, [wcf4b] cp $50 ret nz .asm_654c ld d, h ld e, l ld hl, wcd6d ld bc, $000b jp CopyData DoYouWantToNicknameText: ; 0x6557 TX_FAR _DoYouWantToNicknameText db "@" DisplayNameRaterScreen: ; 655c (1:655c) ld hl, wHPBarMaxHP xor a ld [wUpdateSpritesEnabled], a ld a, NAME_MON_SCREEN ld [wNamingScreenType], a call DisplayNamingScreen call GBPalWhiteOutWithDelay3 call RestoreScreenTilesAndReloadTilePatterns call LoadGBPal ld a, [wcf4b] cp $50 jr z, .asm_6594 ld hl, wPartyMonNicks ld bc, $b ld a, [wWhichPokemon] call AddNTimes ld e, l ld d, h ld hl, wHPBarMaxHP ld bc, $b call CopyData and a ret .asm_6594 scf ret DisplayNamingScreen: ; 6596 (1:6596) push hl ld hl, wd730 set 6, [hl] call GBPalWhiteOutWithDelay3 call ClearScreen call UpdateSprites ld b, $8 call GoPAL_SET call LoadHpBarAndStatusTilePatterns call LoadEDTile callba LoadMonPartySpriteGfx hlCoord 0, 4 ld b, $9 ld c, $12 call TextBoxBorder call PrintNamingText ld a, $3 ld [wTopMenuItemY], a ld a, $1 ld [wTopMenuItemX], a ld [wLastMenuItem], a ld [wCurrentMenuItem], a ld a, $ff ld [wMenuWatchedKeys], a ld a, $7 ld [wMaxMenuItem], a ld a, $50 ld [wcf4b], a xor a ld hl, wHPBarMaxHP + 1 ld [hli], a ld [hli], a ld [wAnimCounter], a .asm_65ed call PrintAlphabet call GBPalNormal .asm_65f3 ld a, [wHPBarMaxHP + 1] and a jr nz, .asm_662d call Func_680e .asm_65fc call PlaceMenuCursor .asm_65ff ld a, [wCurrentMenuItem] push af callba AnimatePartyMon_ForceSpeed1 pop af ld [wCurrentMenuItem], a call JoypadLowSensitivity ld a, [hJoyPressed] and a jr z, .asm_65ff ld hl, .unknownPointerTable_665e .asm_661a sla a jr c, .asm_6624 inc hl inc hl inc hl inc hl jr .asm_661a .asm_6624 ld a, [hli] ld e, a ld a, [hli] ld d, a ld a, [hli] ld h, [hl] ld l, a push de jp [hl] .asm_662d pop de ld hl, wcf4b ld bc, $b call CopyData call GBPalWhiteOutWithDelay3 call ClearScreen call ClearSprites call GoPAL_SET_CF1C call GBPalNormal xor a ld [W_SUBANIMTRANSFORM], a ld hl, wd730 res 6, [hl] ld a, [W_ISINBATTLE] and a jp z, LoadTextBoxTilePatterns ld hl, LoadHudTilePatterns ld b, BANK(LoadHudTilePatterns) jp Bankswitch .unknownPointerTable_665e: ; 665e (1:665e) dw .asm_65fc dw .asm_673e dw .asm_65fc dw .asm_672c dw .asm_65fc dw .asm_6718 dw .asm_65fc dw .asm_6702 dw .asm_65f3 dw .asm_668c dw .asm_65ed dw .asm_6683 dw .asm_65f3 dw .deleteLetter dw .asm_65f3 dw .asm_6692 .asm_667e pop de ld de, .asm_65ed push de .asm_6683 ld a, [wHPBarOldHP] xor $1 ld [wHPBarOldHP], a ret .asm_668c ld a, $1 ld [wHPBarMaxHP + 1], a ret .asm_6692 ld a, [wCurrentMenuItem] cp $5 jr nz, .asm_66a0 ld a, [wTopMenuItemX] cp $11 jr z, .asm_668c .asm_66a0 ld a, [wCurrentMenuItem] cp $6 jr nz, .asm_66ae ld a, [wTopMenuItemX] cp $1 jr z, .asm_667e .asm_66ae ld hl, wMenuCursorLocation ld a, [hli] ld h, [hl] ld l, a inc hl ld a, [hl] ld [wHPBarNewHP], a call CalcStringLength ld a, [wHPBarNewHP] cp $e5 ld de, Dakutens jr z, .asm_66e3 cp $e4 ld de, Handakutens jr z, .asm_66e3 ld a, [wNamingScreenType] cp NAME_MON_SCREEN jr nc, .checkMonNameLength ld a, [wHPBarMaxHP] cp $7 ; max length of player/rival names jr .checkNameLength .checkMonNameLength ld a, [wHPBarMaxHP] cp $a ; max length of pokemon nicknames .checkNameLength jr c, .addLetter ret .asm_66e3 push hl call Func_6871 pop hl ret nc dec hl .addLetter ld a, [wHPBarNewHP] ld [hli], a ld [hl], $50 ld a, (SFX_02_40 - SFX_Headers_02) / 3 call PlaySound ret .deleteLetter ld a, [wHPBarMaxHP] and a ret z call CalcStringLength dec hl ld [hl], $50 ret .asm_6702 ld a, [wCurrentMenuItem] cp $6 ret z ld a, [wTopMenuItemX] cp $11 jp z, .asm_6714 inc a inc a jr .asm_6755 .asm_6714 ld a, $1 jr .asm_6755 .asm_6718 ld a, [wCurrentMenuItem] cp $6 ret z ld a, [wTopMenuItemX] dec a jp z, .asm_6728 dec a jr .asm_6755 .asm_6728 ld a, $11 jr .asm_6755 .asm_672c ld a, [wCurrentMenuItem] dec a ld [wCurrentMenuItem], a and a ret nz ld a, $6 ld [wCurrentMenuItem], a ld a, $1 jr .asm_6755 .asm_673e ld a, [wCurrentMenuItem] inc a ld [wCurrentMenuItem], a cp $7 jr nz, .asm_6750 ld a, $1 ld [wCurrentMenuItem], a jr .asm_6755 .asm_6750 cp $6 ret nz ld a, $1 .asm_6755 ld [wTopMenuItemX], a jp EraseMenuCursor LoadEDTile: ; 675b (1:675b) ld de, ED_Tile ld hl, vFont + $700 ld bc, $1 jp CopyVideoDataDouble ED_Tile: ; 6767 (1:6767) INCBIN "gfx/ED_tile.1bpp" PrintAlphabet: ; 676f (1:676f) xor a ld [H_AUTOBGTRANSFERENABLED], a ld a, [wHPBarOldHP] and a ld de, LowerCaseAlphabet jr nz, .asm_677e ld de, UpperCaseAlphabet .asm_677e hlCoord 2, 5 ld bc, $509 .asm_6784 push bc .asm_6785 ld a, [de] ld [hli], a inc hl inc de dec c jr nz, .asm_6785 ld bc, $16 add hl, bc pop bc dec b jr nz, .asm_6784 call PlaceString ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a jp Delay3 LowerCaseAlphabet: ; 679e (1:679e) db "abcdefghijklmnopqrstuvwxyz ×():;[]",$e1,$e2,"-?!♂♀/",$f2,",¥UPPER CASE@" UpperCaseAlphabet: ; 67d6 (1:67d6) db "ABCDEFGHIJKLMNOPQRSTUVWXYZ ×():;[]",$e1,$e2,"-?!♂♀/",$f2,",¥lower case@" Func_680e: ; 680e (1:680e) call CalcStringLength ld a, c ld [wHPBarMaxHP], a hlCoord 10, 2 ld bc, $10a call ClearScreenArea hlCoord 10, 2 ld de, wcf4b call PlaceString hlCoord 10, 3 ld a, [wNamingScreenType] cp NAME_MON_SCREEN jr nc, .asm_6835 ld b, $7 jr .asm_6837 .asm_6835 ld b, $a .asm_6837 ld a, $76 .asm_6839 ld [hli], a dec b jr nz, .asm_6839 ld a, [wNamingScreenType] cp NAME_MON_SCREEN ld a, [wHPBarMaxHP] jr nc, .asm_684b cp $7 jr .asm_684d .asm_684b cp $a .asm_684d jr nz, .asm_6867 call EraseMenuCursor ld a, $11 ld [wTopMenuItemX], a ld a, $5 ld [wCurrentMenuItem], a ld a, [wNamingScreenType] cp NAME_MON_SCREEN ld a, $9 jr nc, .asm_6867 ld a, $6 .asm_6867 ld c, a ld b, $0 hlCoord 10, 3 add hl, bc ld [hl], $77 ret Func_6871: ; 6871 (1:6871) push de call CalcStringLength dec hl ld a, [hl] pop hl ld de, $2 call IsInArray ret nc inc hl ld a, [hl] ld [wHPBarNewHP], a ret Dakutens: ; 6885 (1:6885) db "かが", "きぎ", "くぐ", "けげ", "こご" db "さざ", "しじ", "すず", "せぜ", "そぞ" db "ただ", "ちぢ", "つづ", "てで", "とど" db "はば", "ひび", "ふぶ", "へべ", "ほぼ" db "カガ", "キギ", "クグ", "ケゲ", "コゴ" db "サザ", "シジ", "スズ", "セゼ", "ソゾ" db "タダ", "チヂ", "ツヅ", "テデ", "トド" db "ハバ", "ヒビ", "フブ", "へべ", "ホボ" db $ff Handakutens: ; 68d6 (1:68d6) db "はぱ", "ひぴ", "ふぷ", "へぺ", "ほぽ" db "ハパ", "ヒピ", "フプ", "へぺ", "ホポ" db $ff ; calculates the length of the string at wcf4b and stores it in c CalcStringLength: ; 68eb (1:68eb) ld hl, wcf4b ld c, $0 .asm_68f0 ld a, [hl] cp $50 ret z inc hl inc c jr .asm_68f0 PrintNamingText: ; 68f8 (1:68f8) hlCoord 0, 1 ld a, [wNamingScreenType] ld de, YourTextString and a jr z, .notNickname ld de, RivalsTextString dec a jr z, .notNickname ld a, [wcf91] ld [wMonPartySpriteSpecies], a push af callba WriteMonPartySpriteOAMBySpecies pop af ld [wd11e], a call GetMonName hlCoord 4, 1 call PlaceString ld hl, $1 add hl, bc ld [hl], $c9 hlCoord 1, 3 ld de, NicknameTextString jr .placeString .notNickname call PlaceString ld l, c ld h, b ld de, NameTextString .placeString jp PlaceString YourTextString: ; 693f (1:693f) db "YOUR @" RivalsTextString: ; 6945 (1:6945) db "RIVAL's @" NameTextString: ; 694d (1:694d) db "NAME?@" NicknameTextString: ; 6953 (1:6953) db "NICKNAME?@"