ChoosePlayerName: ; 66db (1:66db) call OakSpeechSlidePicRight ld de, DefaultNamesPlayer call DisplayIntroNameTextBox ld a, [wCurrentMenuItem] and a jr z, .customName ld hl, DefaultNamesPlayerList call GetDefaultName ld de, wPlayerName call OakSpeechSlidePicLeft jr .done .customName ld hl, wPlayerName xor a ; NAME_PLAYER_SCREEN ld [wNamingScreenType], a call DisplayNamingScreen ld a, [wcf4b] cp "@" jr z, .customName call ClearScreen call Delay3 ld de, RedPicFront ld b, BANK(RedPicFront) call IntroDisplayPicCenteredOrUpperRight .done ld hl, YourNameIsText jp PrintText YourNameIsText: ; 671d (1:671d) TX_FAR _YourNameIsText db "@" ChooseRivalName: ; 6722 (1:6722) call OakSpeechSlidePicRight ld de, DefaultNamesRival call DisplayIntroNameTextBox ld a, [wCurrentMenuItem] and a jr z, .customName ld hl, DefaultNamesRivalList call GetDefaultName ld de, wRivalName call OakSpeechSlidePicLeft jr .done .customName ld hl, wRivalName ld a, NAME_RIVAL_SCREEN ld [wNamingScreenType], a call DisplayNamingScreen ld a, [wcf4b] cp "@" jr z, .customName call ClearScreen call Delay3 ld de, Rival1Pic ld b, $13 call IntroDisplayPicCenteredOrUpperRight .done ld hl, HisNameIsText jp PrintText HisNameIsText: ; 6765 (1:6765) TX_FAR _HisNameIsText db "@" OakSpeechSlidePicLeft: ; 676a (1:676a) push de coord hl, 0, 0 lb bc, 12, 11 call ClearScreenArea ; clear the name list text box ld c, 10 call DelayFrames pop de ld hl, wcd6d ld bc, NAME_LENGTH call CopyData call Delay3 coord hl, 12, 4 lb de, 6, 6 * SCREEN_WIDTH + 5 ld a, $ff jr OakSpeechSlidePicCommon OakSpeechSlidePicRight: ; 6790 (1:6790) coord hl, 5, 4 lb de, 6, 6 * SCREEN_WIDTH + 5 xor a OakSpeechSlidePicCommon: ; 6797 (1:6797) push hl push de push bc ld [hSlideDirection], a ld a, d ld [hSlideAmount], a ld a, e ld [hSlidingRegionSize], a ld c, a ld a, [hSlideDirection] and a jr nz, .next ; If sliding right, point hl to the end of the pic's tiles. ld d, 0 add hl, de .next ld d, h ld e, l .loop xor a ld [H_AUTOBGTRANSFERENABLED], a ld [H_AUTOBGTRANSFERPORTION], a ld a, [hSlideDirection] and a jr nz, .slideLeft ; sliding right ld a, [hli] ld [hld], a dec hl jr .next2 .slideLeft ld a, [hld] ld [hli], a inc hl .next2 dec c jr nz, .loop ld a, [hSlideDirection] and a jr z, .next3 ; If sliding left, we need to zero the last tile in the pic (there is no need ; to take a corresponding action when sliding right because hl initially points ; to a 0 tile in that case). dec hl xor a ld [hl], a .next3 ld a, 1 ld [H_AUTOBGTRANSFERENABLED], a call Delay3 ld a, [hSlidingRegionSize] ld c, a ld h, d ld l, e ld a, [hSlideDirection] and a jr nz, .slideLeft2 inc hl jr .next4 .slideLeft2 dec hl .next4 ld d, h ld e, l ld a, [hSlideAmount] dec a ld [hSlideAmount], a jr nz, .loop pop bc pop de pop hl ret DisplayIntroNameTextBox: ; 67ec (1:67ec) push de coord hl, 0, 0 lb bc, 10, 9 call TextBoxBorder coord hl, 3, 0 ld de, .namestring call PlaceString pop de coord hl, 2, 2 call PlaceString call UpdateSprites xor a ld [wCurrentMenuItem], a ld [wLastMenuItem], a inc a ld [wTopMenuItemX], a ld [wMenuWatchedKeys], a ; A_BUTTON inc a ld [wTopMenuItemY], a inc a ld [wMaxMenuItem], a jp HandleMenuInput .namestring ; 6822 (1:6822) db "NAME@" DefaultNamesPlayer: ; 6827 (1:6827) db "NEW NAME" next "YELLOW" next "ASH" next "JACK" db "@" DefaultNamesRival: ; 6840 (1:6840) db "NEW NAME" next "BLUE" next "GARY" next "JOHN" db "@" GetDefaultName: ; 6858 (1:6858) ; a = name index ; hl = name list ld b, a ld c, 0 .loop ld d, h ld e, l .innerLoop ld a, [hli] cp "@" jr nz, .innerLoop ld a, b cp c jr z, .foundName inc c jr .loop .foundName ld h, d ld l, e ld de, wcd6d ld bc, $14 jp CopyData DefaultNamesPlayerList: ; 687d (1:687d) db "NEW NAME@" db "YELLOW@" db "ASH@" db "JACK@" DefaultNamesRivalList: ; 688d (1:688d) db "NEW NAME@" db "BLUE@" db "GARY@" db "JOHN@" TextTerminator_6b20: ; 68a5 (1:68a5) db "@"