pokered/engine/menu/naming_screen.asm

516 lines
8.7 KiB
NASM
Raw Normal View History

2014-05-22 22:13:20 +00:00
AskForMonNickname: ; 64eb (1:64eb)
call SaveScreenTilesToBuffer1
call GetPredefRegisters
2014-05-22 22:13:20 +00:00
push hl
ld a, [W_ISINBATTLE] ; W_ISINBATTLE
2014-05-22 22:13:20 +00:00
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
2014-05-22 22:13:20 +00:00
call GetMonName
ld hl, DoYouWantToNicknameText
call PrintText
FuncCoord 14, 7
2014-05-22 22:13:20 +00:00
ld hl, Coord
ld bc, $80f
ld a, $14
ld [wd125], a
2014-05-22 22:13:20 +00:00
call DisplayTextBoxID
pop hl
ld a, [wCurrentMenuItem] ; wCurrentMenuItem
2014-05-22 22:13:20 +00:00
and a
jr nz, .asm_654c
ld a, [wcfcb]
2014-05-22 22:13:20 +00:00
push af
xor a
ld [wcfcb], a
2014-05-22 22:13:20 +00:00
push hl
ld a, $2
ld [wd07d], a
2014-05-22 22:13:20 +00:00
call DisplayNamingScreen
ld a, [W_ISINBATTLE] ; W_ISINBATTLE
2014-05-22 22:13:20 +00:00
and a
jr nz, .asm_653e
call Func_3e08
.asm_653e
call LoadScreenTilesFromBuffer1
pop hl
pop af
ld [wcfcb], a
ld a, [wcf4b]
2014-05-22 22:13:20 +00:00
cp $50
ret nz
.asm_654c
ld d, h
ld e, l
ld hl, wcd6d
2014-05-22 22:13:20 +00:00
ld bc, $000b
jp CopyData
DoYouWantToNicknameText: ; 0x6557
TX_FAR _DoYouWantToNicknameText
db "@"
Func_655c: ; 655c (1:655c)
ld hl, wHPBarMaxHP
2014-05-22 22:13:20 +00:00
xor a
ld [wcfcb], a
2014-05-22 22:13:20 +00:00
ld a, $2
ld [wd07d], a
2014-05-22 22:13:20 +00:00
call DisplayNamingScreen
call GBPalWhiteOutWithDelay3
call Func_3dbe
call LoadGBPal
ld a, [wcf4b]
2014-05-22 22:13:20 +00:00
cp $50
jr z, .asm_6594
ld hl, W_PARTYMON1NAME ; W_PARTYMON1NAME
2014-05-22 22:13:20 +00:00
ld bc, $b
ld a, [wWhichPokemon] ; wWhichPokemon
2014-05-22 22:13:20 +00:00
call AddNTimes
ld e, l
ld d, h
ld hl, wHPBarMaxHP
2014-05-22 22:13:20 +00:00
ld bc, $b
call CopyData
and a
ret
.asm_6594
scf
ret
DisplayNamingScreen: ; 6596 (1:6596)
push hl
ld hl, wd730
2014-05-22 22:13:20 +00:00
set 6, [hl]
call GBPalWhiteOutWithDelay3
call ClearScreen
call UpdateSprites
ld b, $8
call GoPAL_SET
call LoadHpBarAndStatusTilePatterns
call LoadEDTile
callba Func_7176c
FuncCoord 0, 4
2014-05-22 22:13:20 +00:00
ld hl, Coord
ld b, $9
ld c, $12
call TextBoxBorder
call PrintNamingText
ld a, $3
ld [wTopMenuItemY], a ; wTopMenuItemY
2014-05-22 22:13:20 +00:00
ld a, $1
ld [wTopMenuItemX], a ; wTopMenuItemX
ld [wLastMenuItem], a ; wLastMenuItem
ld [wCurrentMenuItem], a ; wCurrentMenuItem
2014-05-22 22:13:20 +00:00
ld a, $ff
ld [wMenuWatchedKeys], a ; wMenuWatchedKeys
2014-05-22 22:13:20 +00:00
ld a, $7
ld [wMaxMenuItem], a ; wMaxMenuItem
2014-05-22 22:13:20 +00:00
ld a, $50
ld [wcf4b], a
2014-05-22 22:13:20 +00:00
xor a
ld hl, wHPBarMaxHP + 1
2014-05-22 22:13:20 +00:00
ld [hli], a
ld [hli], a
ld [W_SUBANIMTRANSFORM], a ; W_SUBANIMTRANSFORM
2014-05-22 22:13:20 +00:00
.asm_65ed
call PrintAlphabet
call GBPalNormal
.asm_65f3
ld a, [wHPBarMaxHP + 1]
2014-05-22 22:13:20 +00:00
and a
jr nz, .asm_662d
call Func_680e
.asm_65fc
call PlaceMenuCursor
.asm_65ff
ld a, [wCurrentMenuItem] ; wCurrentMenuItem
2014-05-22 22:13:20 +00:00
push af
callba AnimatePartyMon_ForceSpeed1
pop af
ld [wCurrentMenuItem], a ; wCurrentMenuItem
2014-05-25 18:21:48 +00:00
call JoypadLowSensitivity
2014-05-25 17:51:53 +00:00
ld a, [hJoyPressed]
2014-05-22 22:13:20 +00:00
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
2014-05-22 22:13:20 +00:00
ld bc, $b
call CopyData
call GBPalWhiteOutWithDelay3
call ClearScreen
2014-05-23 22:34:35 +00:00
call ClearSprites
2014-05-22 22:13:20 +00:00
call GoPAL_SET_CF1C
call GBPalNormal
xor a
ld [W_SUBANIMTRANSFORM], a ; W_SUBANIMTRANSFORM
ld hl, wd730
2014-05-22 22:13:20 +00:00
res 6, [hl]
ld a, [W_ISINBATTLE] ; W_ISINBATTLE
2014-05-22 22:13:20 +00:00
and a
jp z, LoadTextBoxTilePatterns
ld hl, Func_3ee5b
ld b, BANK(Func_3ee5b)
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]
2014-05-22 22:13:20 +00:00
xor $1
ld [wHPBarOldHP], a
2014-05-22 22:13:20 +00:00
ret
.asm_668c
ld a, $1
ld [wHPBarMaxHP + 1], a
2014-05-22 22:13:20 +00:00
ret
.asm_6692
ld a, [wCurrentMenuItem] ; wCurrentMenuItem
2014-05-22 22:13:20 +00:00
cp $5
jr nz, .asm_66a0
ld a, [wTopMenuItemX] ; wTopMenuItemX
2014-05-22 22:13:20 +00:00
cp $11
jr z, .asm_668c
.asm_66a0
ld a, [wCurrentMenuItem] ; wCurrentMenuItem
2014-05-22 22:13:20 +00:00
cp $6
jr nz, .asm_66ae
ld a, [wTopMenuItemX] ; wTopMenuItemX
2014-05-22 22:13:20 +00:00
cp $1
jr z, .asm_667e
.asm_66ae
ld hl, wMenuCursorLocation ; wMenuCursorLocation
2014-05-22 22:13:20 +00:00
ld a, [hli]
ld h, [hl]
ld l, a
inc hl
ld a, [hl]
ld [wHPBarNewHP], a
2014-05-22 22:13:20 +00:00
call CalcStringLength
ld a, [wHPBarNewHP]
2014-05-22 22:13:20 +00:00
cp $e5
ld de, Dakutens ; $6885
jr z, .asm_66e3
cp $e4
ld de, Handakutens ; $68d6
jr z, .asm_66e3
ld a, [wd07d]
2014-05-22 22:13:20 +00:00
cp $2
jr nc, .checkMonNameLength
ld a, [wHPBarMaxHP]
2014-05-22 22:13:20 +00:00
cp $7 ; max length of player/rival names
jr .checkNameLength
.checkMonNameLength
ld a, [wHPBarMaxHP]
2014-05-22 22:13:20 +00:00
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]
2014-05-22 22:13:20 +00:00
ld [hli], a
ld [hl], $50
ld a, (SFX_02_40 - SFX_Headers_02) / 3
call PlaySound
ret
.deleteLetter
ld a, [wHPBarMaxHP]
2014-05-22 22:13:20 +00:00
and a
ret z
call CalcStringLength
dec hl
ld [hl], $50
ret
.asm_6702
ld a, [wCurrentMenuItem] ; wCurrentMenuItem
2014-05-22 22:13:20 +00:00
cp $6
ret z
ld a, [wTopMenuItemX] ; wTopMenuItemX
2014-05-22 22:13:20 +00:00
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
2014-05-22 22:13:20 +00:00
cp $6
ret z
ld a, [wTopMenuItemX] ; wTopMenuItemX
2014-05-22 22:13:20 +00:00
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
2014-05-22 22:13:20 +00:00
dec a
ld [wCurrentMenuItem], a ; wCurrentMenuItem
2014-05-22 22:13:20 +00:00
and a
ret nz
ld a, $6
ld [wCurrentMenuItem], a ; wCurrentMenuItem
2014-05-22 22:13:20 +00:00
ld a, $1
jr .asm_6755
.asm_673e
ld a, [wCurrentMenuItem] ; wCurrentMenuItem
2014-05-22 22:13:20 +00:00
inc a
ld [wCurrentMenuItem], a ; wCurrentMenuItem
2014-05-22 22:13:20 +00:00
cp $7
jr nz, .asm_6750
ld a, $1
ld [wCurrentMenuItem], a ; wCurrentMenuItem
2014-05-22 22:13:20 +00:00
jr .asm_6755
.asm_6750
cp $6
ret nz
ld a, $1
.asm_6755
ld [wTopMenuItemX], a ; wTopMenuItemX
2014-05-22 22:13:20 +00:00
jp EraseMenuCursor
LoadEDTile: ; 675b (1:675b)
ld de, ED_Tile
2014-05-29 08:31:46 +00:00
ld hl, vFont + $700
2014-05-22 22:13:20 +00:00
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]
2014-05-22 22:13:20 +00:00
and a
ld de, LowerCaseAlphabet ; $679e
jr nz, .asm_677e
ld de, UpperCaseAlphabet ; $67d6
.asm_677e
FuncCoord 2, 5
2014-05-22 22:13:20 +00:00
ld hl, Coord
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
FuncCoord 10, 2
2014-05-22 22:13:20 +00:00
ld hl, Coord
ld bc, $10a
call ClearScreenArea
FuncCoord 10, 2
2014-05-22 22:13:20 +00:00
ld hl, Coord
ld de, wcf4b
2014-05-22 22:13:20 +00:00
call PlaceString
FuncCoord 10, 3
2014-05-22 22:13:20 +00:00
ld hl, Coord
ld a, [wd07d]
2014-05-22 22:13:20 +00:00
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]
2014-05-22 22:13:20 +00:00
cp $2
ld a, [wHPBarMaxHP]
2014-05-22 22:13:20 +00:00
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
2014-05-22 22:13:20 +00:00
ld a, $5
ld [wCurrentMenuItem], a ; wCurrentMenuItem
ld a, [wd07d]
2014-05-22 22:13:20 +00:00
cp $2
ld a, $9
jr nc, .asm_6867
ld a, $6
.asm_6867
ld c, a
ld b, $0
FuncCoord 10, 3
2014-05-22 22:13:20 +00:00
ld hl, Coord
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
2014-05-22 22:13:20 +00:00
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
2014-05-22 22:13:20 +00:00
CalcStringLength: ; 68eb (1:68eb)
ld hl, wcf4b
2014-05-22 22:13:20 +00:00
ld c, $0
.asm_68f0
ld a, [hl]
cp $50
ret z
inc hl
inc c
jr .asm_68f0
PrintNamingText: ; 68f8 (1:68f8)
FuncCoord 0, 1
2014-05-22 22:13:20 +00:00
ld hl, Coord
ld a, [wd07d]
2014-05-22 22:13:20 +00:00
ld de, YourTextString ; $693f
and a
jr z, .notNickname
ld de, RivalsTextString ; $6945
dec a
jr z, .notNickname
ld a, [wcf91]
ld [wcd5d], a
2014-05-22 22:13:20 +00:00
push af
callba Func_71882
pop af
ld [wd11e], a
2014-05-22 22:13:20 +00:00
call GetMonName
FuncCoord 4, 1
2014-05-22 22:13:20 +00:00
ld hl, Coord
call PlaceString
ld hl, $1
add hl, bc
ld [hl], $c9
FuncCoord 1, 3
2014-05-22 22:13:20 +00:00
ld hl, Coord
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?@"