pokered/engine/menu/naming_screen.asm
2015-07-13 13:35:35 -07:00

505 lines
8.1 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]
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, $2
ld [wd07d], 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 "@"
Func_655c: ; 655c (1:655c)
ld hl, wHPBarMaxHP
xor a
ld [wUpdateSpritesEnabled], 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
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, [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]
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, [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
ld a, $5
ld [wCurrentMenuItem], a
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
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?@"