pokered/engine/menu/naming_screen.asm

505 lines
8.6 KiB
NASM
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

AskName: ; 64eb (1:64eb)
call SaveScreenTilesToBuffer1
call GetPredefRegisters
push hl
ld a, [W_ISINBATTLE] ; 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, $14
ld [wd125], a
call DisplayTextBoxID
pop hl
ld a, [wCurrentMenuItem] ; wCurrentMenuItem
and a
jr nz, .asm_654c
ld a, [wcfcb]
push af
xor a
ld [wcfcb], a
push hl
ld a, $2
ld [wd07d], a
call DisplayNamingScreen
ld a, [W_ISINBATTLE] ; W_ISINBATTLE
and a
jr nz, .asm_653e
call ReloadMapSpriteTilePatterns
.asm_653e
call LoadScreenTilesFromBuffer1
pop hl
pop af
ld [wcfcb], 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 "@"
Func_655c: ; 655c (1:655c)
ld hl, wHPBarMaxHP
xor a
ld [wcfcb], a
ld a, $2
ld [wd07d], a
call DisplayNamingScreen
call GBPalWhiteOutWithDelay3
call RestoreScreenTilesAndReloadTilePatterns
call LoadGBPal
ld a, [wcf4b]
cp $50
jr z, .asm_6594
ld hl, wPartyMonNicks ; wPartyMonNicks
ld bc, $b
ld a, [wWhichPokemon] ; 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 Func_7176c
hlCoord 0, 4
ld b, $9
ld c, $12
call TextBoxBorder
call PrintNamingText
ld a, $3
ld [wTopMenuItemY], a ; wTopMenuItemY
ld a, $1
ld [wTopMenuItemX], a ; wTopMenuItemX
ld [wLastMenuItem], a ; wLastMenuItem
ld [wCurrentMenuItem], a ; wCurrentMenuItem
ld a, $ff
ld [wMenuWatchedKeys], a ; wMenuWatchedKeys
ld a, $7
ld [wMaxMenuItem], a ; wMaxMenuItem
ld a, $50
ld [wcf4b], a
xor a
ld hl, wHPBarMaxHP + 1
ld [hli], a
ld [hli], a
ld [W_SUBANIMTRANSFORM], a ; W_SUBANIMTRANSFORM
.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] ; wCurrentMenuItem
push af
callba AnimatePartyMon_ForceSpeed1
pop af
ld [wCurrentMenuItem], a ; wCurrentMenuItem
call JoypadLowSensitivity
ld a, [hJoyPressed]
and a
jr z, .asm_65ff
ld hl, .unknownPointerTable_665e ; $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 ; W_SUBANIMTRANSFORM
ld hl, wd730
res 6, [hl]
ld a, [W_ISINBATTLE] ; 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 ; $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] ; wCurrentMenuItem
cp $5
jr nz, .asm_66a0
ld a, [wTopMenuItemX] ; wTopMenuItemX
cp $11
jr z, .asm_668c
.asm_66a0
ld a, [wCurrentMenuItem] ; wCurrentMenuItem
cp $6
jr nz, .asm_66ae
ld a, [wTopMenuItemX] ; wTopMenuItemX
cp $1
jr z, .asm_667e
.asm_66ae
ld hl, wMenuCursorLocation ; 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 ; $6885
jr z, .asm_66e3
cp $e4
ld de, Handakutens ; $68d6
jr z, .asm_66e3
ld a, [wd07d]
cp $2
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] ; wCurrentMenuItem
cp $6
ret z
ld a, [wTopMenuItemX] ; 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] ; wCurrentMenuItem
cp $6
ret z
ld a, [wTopMenuItemX] ; 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] ; wCurrentMenuItem
dec a
ld [wCurrentMenuItem], a ; wCurrentMenuItem
and a
ret nz
ld a, $6
ld [wCurrentMenuItem], a ; wCurrentMenuItem
ld a, $1
jr .asm_6755
.asm_673e
ld a, [wCurrentMenuItem] ; wCurrentMenuItem
inc a
ld [wCurrentMenuItem], a ; wCurrentMenuItem
cp $7
jr nz, .asm_6750
ld a, $1
ld [wCurrentMenuItem], a ; wCurrentMenuItem
jr .asm_6755
.asm_6750
cp $6
ret nz
ld a, $1
.asm_6755
ld [wTopMenuItemX], a ; wTopMenuItemX
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 ; $ffba
ld a, [wHPBarOldHP]
and a
ld de, LowerCaseAlphabet ; $679e
jr nz, .asm_677e
ld de, UpperCaseAlphabet ; $67d6
.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 ; $ffba
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, [wd07d]
cp $2
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, [wd07d]
cp $2
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 ; wTopMenuItemX
ld a, $5
ld [wCurrentMenuItem], a ; wCurrentMenuItem
ld a, [wd07d]
cp $2
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, [wd07d]
ld de, YourTextString ; $693f
and a
jr z, .notNickname
ld de, RivalsTextString ; $6945
dec a
jr z, .notNickname
ld a, [wcf91]
ld [wcd5d], a
push af
callba Func_71882
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 ; $6953
jr .placeString
.notNickname
call PlaceString
ld l, c
ld h, b
ld de, NameTextString ; $694d
.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?@"