shithub: pokered

ref: 5a14234b49e8870a33b80fb768928c194756255c
dir: /engine/menu/naming_screen.asm/

View raw version
AskForMonNickname: ; 64eb (1:64eb)
	call SaveScreenTilesToBuffer1
	call GetPredefRegisters
	push hl
	ld a, [W_ISINBATTLE] ; $d057
	dec a
	ld hl, wTileMap
	ld b, $4
	ld c, $b
	call z, ClearScreenArea ; only if in wild batle
	ld a, [$cf91]
	ld [$d11e], a
	call GetMonName
	ld hl, DoYouWantToNicknameText
	call PrintText
	FuncCoord 14, 7 ; $c43a
	ld hl, Coord
	ld bc, $80f
	ld a, $14
	ld [$d125], a
	call DisplayTextBoxID
	pop hl
	ld a, [wCurrentMenuItem] ; $cc26
	and a
	jr nz, .asm_654c
	ld a, [$cfcb]
	push af
	xor a
	ld [$cfcb], a
	push hl
	ld a, $2
	ld [$d07d], a
	call DisplayNamingScreen
	ld a, [W_ISINBATTLE] ; $d057
	and a
	jr nz, .asm_653e
	call Func_3e08
.asm_653e
	call LoadScreenTilesFromBuffer1
	pop hl
	pop af
	ld [$cfcb], a
	ld a, [$cf4b]
	cp $50
	ret nz
.asm_654c
	ld d, h
	ld e, l
	ld hl, $cd6d
	ld bc, $000b
	jp CopyData

DoYouWantToNicknameText: ; 0x6557
	TX_FAR _DoYouWantToNicknameText
	db "@"

Func_655c: ; 655c (1:655c)
	ld hl, $cee9
	xor a
	ld [$cfcb], a
	ld a, $2
	ld [$d07d], a
	call DisplayNamingScreen
	call GBPalWhiteOutWithDelay3
	call Func_3dbe
	call LoadGBPal
	ld a, [$cf4b]
	cp $50
	jr z, .asm_6594
	ld hl, W_PARTYMON1NAME ; $d2b5
	ld bc, $b
	ld a, [wWhichPokemon] ; $cf92
	call AddNTimes
	ld e, l
	ld d, h
	ld hl, $cee9
	ld bc, $b
	call CopyData
	and a
	ret
.asm_6594
	scf
	ret

DisplayNamingScreen: ; 6596 (1:6596)
	push hl
	ld hl, $d730
	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 ; $c3f0
	ld hl, Coord
	ld b, $9
	ld c, $12
	call TextBoxBorder
	call PrintNamingText
	ld a, $3
	ld [wTopMenuItemY], a ; $cc24
	ld a, $1
	ld [wTopMenuItemX], a ; $cc25
	ld [wLastMenuItem], a ; $cc2a
	ld [wCurrentMenuItem], a ; $cc26
	ld a, $ff
	ld [wMenuWatchedKeys], a ; $cc29
	ld a, $7
	ld [wMaxMenuItem], a ; $cc28
	ld a, $50
	ld [$cf4b], a
	xor a
	ld hl, $ceea
	ld [hli], a
	ld [hli], a
	ld [W_SUBANIMTRANSFORM], a ; $d08b
.asm_65ed
	call PrintAlphabet
	call GBPalNormal
.asm_65f3
	ld a, [$ceea]
	and a
	jr nz, .asm_662d
	call Func_680e
.asm_65fc
	call PlaceMenuCursor
.asm_65ff
	ld a, [wCurrentMenuItem] ; $cc26
	push af
	callba AnimatePartyMon_ForceSpeed1
	pop af
	ld [wCurrentMenuItem], a ; $cc26
	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, $cf4b
	ld bc, $b
	call CopyData
	call GBPalWhiteOutWithDelay3
	call ClearScreen
	call ClearSprites
	call GoPAL_SET_CF1C
	call GBPalNormal
	xor a
	ld [W_SUBANIMTRANSFORM], a ; $d08b
	ld hl, $d730
	res 6, [hl]
	ld a, [W_ISINBATTLE] ; $d057
	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, [$ceeb]
	xor $1
	ld [$ceeb], a
	ret
.asm_668c
	ld a, $1
	ld [$ceea], a
	ret
.asm_6692
	ld a, [wCurrentMenuItem] ; $cc26
	cp $5
	jr nz, .asm_66a0
	ld a, [wTopMenuItemX] ; $cc25
	cp $11
	jr z, .asm_668c
.asm_66a0
	ld a, [wCurrentMenuItem] ; $cc26
	cp $6
	jr nz, .asm_66ae
	ld a, [wTopMenuItemX] ; $cc25
	cp $1
	jr z, .asm_667e
.asm_66ae
	ld hl, wMenuCursorLocation ; $cc30
	ld a, [hli]
	ld h, [hl]
	ld l, a
	inc hl
	ld a, [hl]
	ld [$ceed], a
	call CalcStringLength
	ld a, [$ceed]
	cp $e5
	ld de, Dakutens ; $6885
	jr z, .asm_66e3
	cp $e4
	ld de, Handakutens ; $68d6
	jr z, .asm_66e3
	ld a, [$d07d]
	cp $2
	jr nc, .checkMonNameLength
	ld a, [$cee9]
	cp $7 ; max length of player/rival names
	jr .checkNameLength
.checkMonNameLength
	ld a, [$cee9]
	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, [$ceed]
	ld [hli], a
	ld [hl], $50
	ld a, (SFX_02_40 - SFX_Headers_02) / 3
	call PlaySound
	ret
.deleteLetter
	ld a, [$cee9]
	and a
	ret z
	call CalcStringLength
	dec hl
	ld [hl], $50
	ret
.asm_6702
	ld a, [wCurrentMenuItem] ; $cc26
	cp $6
	ret z
	ld a, [wTopMenuItemX] ; $cc25
	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] ; $cc26
	cp $6
	ret z
	ld a, [wTopMenuItemX] ; $cc25
	dec a
	jp z, .asm_6728
	dec a
	jr .asm_6755
.asm_6728
	ld a, $11
	jr .asm_6755
.asm_672c
	ld a, [wCurrentMenuItem] ; $cc26
	dec a
	ld [wCurrentMenuItem], a ; $cc26
	and a
	ret nz
	ld a, $6
	ld [wCurrentMenuItem], a ; $cc26
	ld a, $1
	jr .asm_6755
.asm_673e
	ld a, [wCurrentMenuItem] ; $cc26
	inc a
	ld [wCurrentMenuItem], a ; $cc26
	cp $7
	jr nz, .asm_6750
	ld a, $1
	ld [wCurrentMenuItem], a ; $cc26
	jr .asm_6755
.asm_6750
	cp $6
	ret nz
	ld a, $1
.asm_6755
	ld [wTopMenuItemX], a ; $cc25
	jp EraseMenuCursor

LoadEDTile: ; 675b (1:675b)
	ld de, ED_Tile
	ld hl, $8f00
	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, [$ceeb]
	and a
	ld de, LowerCaseAlphabet ; $679e
	jr nz, .asm_677e
	ld de, UpperCaseAlphabet ; $67d6
.asm_677e
	FuncCoord 2, 5 ; $c406
	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 [$cee9], a
	FuncCoord 10, 2 ; $c3d2
	ld hl, Coord
	ld bc, $10a
	call ClearScreenArea
	FuncCoord 10, 2 ; $c3d2
	ld hl, Coord
	ld de, $cf4b
	call PlaceString
	FuncCoord 10, 3 ; $c3e6
	ld hl, Coord
	ld a, [$d07d]
	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, [$d07d]
	cp $2
	ld a, [$cee9]
	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 ; $cc25
	ld a, $5
	ld [wCurrentMenuItem], a ; $cc26
	ld a, [$d07d]
	cp $2
	ld a, $9
	jr nc, .asm_6867
	ld a, $6
.asm_6867
	ld c, a
	ld b, $0
	FuncCoord 10, 3 ; $c3e6
	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 [$ceed], 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 $cf4b and stores it in c
CalcStringLength: ; 68eb (1:68eb)
	ld hl, $cf4b
	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 ; $c3b4
	ld hl, Coord
	ld a, [$d07d]
	ld de, YourTextString ; $693f
	and a
	jr z, .notNickname
	ld de, RivalsTextString ; $6945
	dec a
	jr z, .notNickname
	ld a, [$cf91]
	ld [$cd5d], a
	push af
	callba Func_71882
	pop af
	ld [$d11e], a
	call GetMonName
	FuncCoord 4, 1 ; $c3b8
	ld hl, Coord
	call PlaceString
	ld hl, $1
	add hl, bc
	ld [hl], $c9
	FuncCoord 1, 3 ; $c3dd
	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?@"