123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- ChoosePlayerName:
- 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:
- TX_FAR _YourNameIsText
- db "@"
- ChooseRivalName:
- 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:
- TX_FAR _HisNameIsText
- db "@"
- OakSpeechSlidePicLeft:
- 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:
- coord hl, 5, 4
- lb de, 6, 6 * SCREEN_WIDTH + 5
- xor a
- OakSpeechSlidePicCommon:
- 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 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).
- xor a
- dec hl
- 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:
- push de
- coord hl, 0, 0
- ld b, $a
- ld c, $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
- db "NAME@"
- IF DEF(_RED)
- DefaultNamesPlayer:
- db "NEW NAME"
- next "RED"
- next "ASH"
- next "JACK"
- db "@"
- DefaultNamesRival:
- db "NEW NAME"
- next "BLUE"
- next "GARY"
- next "JOHN"
- db "@"
- ENDC
- IF DEF(_BLUE)
- DefaultNamesPlayer:
- db "NEW NAME"
- next "BLUE"
- next "GARY"
- next "JOHN"
- db "@"
- DefaultNamesRival:
- db "NEW NAME"
- next "RED"
- next "ASH"
- next "JACK"
- db "@"
- ENDC
- GetDefaultName:
- ; 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
- IF DEF(_RED)
- DefaultNamesPlayerList:
- db "NEW NAME@"
- db "RED@"
- db "ASH@"
- db "JACK@"
- DefaultNamesRivalList:
- db "NEW NAME@"
- db "BLUE@"
- db "GARY@"
- db "JOHN@"
- ENDC
- IF DEF(_BLUE)
- DefaultNamesPlayerList:
- db "NEW NAME@"
- db "BLUE@"
- db "GARY@"
- db "JOHN@"
- DefaultNamesRivalList:
- db "NEW NAME@"
- db "RED@"
- db "ASH@"
- db "JACK@"
- ENDC
- TextTerminator_6b20:
- db "@"
|