pokered/engine/menu/naming_screen.asm

506 lines
8.1 KiB
NASM
Raw Normal View History

AskName: ; 64eb (1:64eb)
2014-05-22 22:13:20 +00:00
call SaveScreenTilesToBuffer1
call GetPredefRegisters
2014-05-22 22:13:20 +00:00
push hl
2015-02-07 20:27:36 +00:00
ld a, [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
hlCoord 14, 7
2014-05-22 22:13:20 +00:00
ld bc, $80f
2015-02-07 20:27:36 +00:00
ld a, TWO_OPTION_MENU
2015-02-07 10:43:08 +00:00
ld [wTextBoxID], a
2014-05-22 22:13:20 +00:00
call DisplayTextBoxID
pop hl
2015-02-07 20:27:36 +00:00
ld a, [wCurrentMenuItem]
2014-05-22 22:13:20 +00:00
and a
jr nz, .asm_654c
2014-09-13 07:50:56 +00:00
ld a, [wUpdateSpritesEnabled]
2014-05-22 22:13:20 +00:00
push af
xor a
2014-09-13 07:50:56 +00:00
ld [wUpdateSpritesEnabled], 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
2015-02-07 20:27:36 +00:00
ld a, [W_ISINBATTLE]
2014-05-22 22:13:20 +00:00
and a
jr nz, .asm_653e
call ReloadMapSpriteTilePatterns
2014-05-22 22:13:20 +00:00
.asm_653e
call LoadScreenTilesFromBuffer1
pop hl
pop af
2014-09-13 07:50:56 +00:00
ld [wUpdateSpritesEnabled], 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
2014-09-13 07:50:56 +00:00
ld [wUpdateSpritesEnabled], 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 RestoreScreenTilesAndReloadTilePatterns
2014-05-22 22:13:20 +00:00
call LoadGBPal
ld a, [wcf4b]
2014-05-22 22:13:20 +00:00
cp $50
jr z, .asm_6594
2015-02-07 20:27:36 +00:00
ld hl, wPartyMonNicks
2014-05-22 22:13:20 +00:00
ld bc, $b
2015-02-07 20:27:36 +00:00
ld a, [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
2015-03-14 02:22:55 +00:00
callba LoadMonPartySpriteGfx
hlCoord 0, 4
2014-05-22 22:13:20 +00:00
ld b, $9
ld c, $12
call TextBoxBorder
call PrintNamingText
ld a, $3
2015-02-07 20:27:36 +00:00
ld [wTopMenuItemY], a
2014-05-22 22:13:20 +00:00
ld a, $1
2015-02-07 20:27:36 +00:00
ld [wTopMenuItemX], a
ld [wLastMenuItem], a
ld [wCurrentMenuItem], a
2014-05-22 22:13:20 +00:00
ld a, $ff
2015-02-07 20:27:36 +00:00
ld [wMenuWatchedKeys], a
2014-05-22 22:13:20 +00:00
ld a, $7
2015-02-07 20:27:36 +00:00
ld [wMaxMenuItem], a
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
2015-07-13 20:35:35 +00:00
ld [wAnimCounter], a
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
2015-02-07 20:27:36 +00:00
ld a, [wCurrentMenuItem]
2014-05-22 22:13:20 +00:00
push af
callba AnimatePartyMon_ForceSpeed1
pop af
2015-02-07 20:27:36 +00:00
ld [wCurrentMenuItem], a
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
2015-02-07 20:27:36 +00:00
ld hl, .unknownPointerTable_665e
2014-05-22 22:13:20 +00:00
.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
2015-02-07 20:27:36 +00:00
ld [W_SUBANIMTRANSFORM], a
ld hl, wd730
2014-05-22 22:13:20 +00:00
res 6, [hl]
2015-02-07 20:27:36 +00:00
ld a, [W_ISINBATTLE]
2014-05-22 22:13:20 +00:00
and a
jp z, LoadTextBoxTilePatterns
2014-08-09 05:39:13 +00:00
ld hl, LoadHudTilePatterns
ld b, BANK(LoadHudTilePatterns)
2014-05-22 22:13:20 +00:00
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
2014-05-22 22:13:20 +00:00
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
2015-02-07 20:27:36 +00:00
ld a, [wCurrentMenuItem]
2014-05-22 22:13:20 +00:00
cp $5
jr nz, .asm_66a0
2015-02-07 20:27:36 +00:00
ld a, [wTopMenuItemX]
2014-05-22 22:13:20 +00:00
cp $11
jr z, .asm_668c
.asm_66a0
2015-02-07 20:27:36 +00:00
ld a, [wCurrentMenuItem]
2014-05-22 22:13:20 +00:00
cp $6
jr nz, .asm_66ae
2015-02-07 20:27:36 +00:00
ld a, [wTopMenuItemX]
2014-05-22 22:13:20 +00:00
cp $1
jr z, .asm_667e
.asm_66ae
2015-02-07 20:27:36 +00:00
ld hl, 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
2014-05-22 22:13:20 +00:00
jr z, .asm_66e3
cp $e4
ld de, Handakutens
2014-05-22 22:13:20 +00:00
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
2015-02-07 20:27:36 +00:00
ld a, [wCurrentMenuItem]
2014-05-22 22:13:20 +00:00
cp $6
ret z
2015-02-07 20:27:36 +00:00
ld a, [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
2015-02-07 20:27:36 +00:00
ld a, [wCurrentMenuItem]
2014-05-22 22:13:20 +00:00
cp $6
ret z
2015-02-07 20:27:36 +00:00
ld a, [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
2015-02-07 20:27:36 +00:00
ld a, [wCurrentMenuItem]
2014-05-22 22:13:20 +00:00
dec a
2015-02-07 20:27:36 +00:00
ld [wCurrentMenuItem], a
2014-05-22 22:13:20 +00:00
and a
ret nz
ld a, $6
2015-02-07 20:27:36 +00:00
ld [wCurrentMenuItem], a
2014-05-22 22:13:20 +00:00
ld a, $1
jr .asm_6755
.asm_673e
2015-02-07 20:27:36 +00:00
ld a, [wCurrentMenuItem]
2014-05-22 22:13:20 +00:00
inc a
2015-02-07 20:27:36 +00:00
ld [wCurrentMenuItem], a
2014-05-22 22:13:20 +00:00
cp $7
jr nz, .asm_6750
ld a, $1
2015-02-07 20:27:36 +00:00
ld [wCurrentMenuItem], a
2014-05-22 22:13:20 +00:00
jr .asm_6755
.asm_6750
cp $6
ret nz
ld a, $1
.asm_6755
2015-02-07 20:27:36 +00:00
ld [wTopMenuItemX], a
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
ld a, [wHPBarOldHP]
2014-05-22 22:13:20 +00:00
and a
ld de, LowerCaseAlphabet
2014-05-22 22:13:20 +00:00
jr nz, .asm_677e
ld de, UpperCaseAlphabet
2014-05-22 22:13:20 +00:00
.asm_677e
hlCoord 2, 5
2014-05-22 22:13:20 +00:00
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
2014-05-22 22:13:20 +00:00
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
2014-05-22 22:13:20 +00:00
ld bc, $10a
call ClearScreenArea
hlCoord 10, 2
ld de, wcf4b
2014-05-22 22:13:20 +00:00
call PlaceString
hlCoord 10, 3
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
2015-02-07 20:27:36 +00:00
ld [wTopMenuItemX], a
2014-05-22 22:13:20 +00:00
ld a, $5
2015-02-07 20:27:36 +00:00
ld [wCurrentMenuItem], a
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
hlCoord 10, 3
2014-05-22 22:13:20 +00:00
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)
hlCoord 0, 1
ld a, [wd07d]
2015-02-07 20:27:36 +00:00
ld de, YourTextString
2014-05-22 22:13:20 +00:00
and a
jr z, .notNickname
2015-02-07 20:27:36 +00:00
ld de, RivalsTextString
2014-05-22 22:13:20 +00:00
dec a
jr z, .notNickname
ld a, [wcf91]
2015-03-14 22:25:21 +00:00
ld [wMonPartySpriteSpecies], a
2014-05-22 22:13:20 +00:00
push af
2015-03-14 22:25:21 +00:00
callba WriteMonPartySpriteOAMBySpecies
2014-05-22 22:13:20 +00:00
pop af
ld [wd11e], a
2014-05-22 22:13:20 +00:00
call GetMonName
hlCoord 4, 1
2014-05-22 22:13:20 +00:00
call PlaceString
ld hl, $1
add hl, bc
ld [hl], $c9
hlCoord 1, 3
2015-02-07 20:27:36 +00:00
ld de, NicknameTextString
2014-05-22 22:13:20 +00:00
jr .placeString
.notNickname
call PlaceString
ld l, c
ld h, b
2015-02-07 20:27:36 +00:00
ld de, NameTextString
2014-05-22 22:13:20 +00:00
.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?@"