pokeyellow/engine/oak_speech.asm
luckytyphlosion 335bf36311 oak_speech2.asm
Also replace W_RIVALNAME with wRivalName
2015-11-01 15:42:29 -05:00

244 lines
4.6 KiB
NASM
Executable File

SetDefaultNames: ; 5e27 (1:5e27)
ld a, [wLetterPrintingDelayFlags]
push af
ld a, [wOptions]
push af
ld a, [wd732]
push af
ld a, [wd498]
push af
ld hl, wPlayerName
ld bc, wBoxDataEnd - wPlayerName
xor a
call FillMemory
ld hl, wSpriteStateData1
ld bc, $200
xor a
call FillMemory
xor a
ld [wd495], a
ld [wd496], a
ld [wd497], a
pop af
ld [wd498], a
pop af
ld [wd732], a
pop af
ld [wOptions], a
pop af
ld [wLetterPrintingDelayFlags], a
ld a, [wOptionsInitialized]
and a
call z, InitOptions
ld hl, NintenText
ld de, wPlayerName
ld bc, NAME_LENGTH
call CopyData
ld hl, SonyText
ld de, wRivalName
ld bc, NAME_LENGTH
call CopyData ; rip optimizations
ret
OakSpeech: ; 5e85 (1:5e85)
call StopAllMusic ; stop music
ld a, BANK(Music_Routes2)
ld c,a
ld a, MUSIC_ROUTES2
call PlayMusic
call ClearScreen
call LoadTextBoxTilePatterns
call SetDefaultNames
predef InitPlayerData2
ld hl,wNumBoxItems
ld a,POTION
ld [wcf91],a
ld a,1
ld [wItemQuantity],a
call AddItemToInventory ; give one potion
ld a,[W_ANIMATIONID]
ld [wDestinationMap],a
call SpecialWarpIn
xor a
ld [hTilesetType],a
ld a,[wd732]
bit 1,a ; possibly a debug mode bit
jp nz,.skipChoosingNames
ld de,ProfOakPic
lb bc, Bank(ProfOakPic), $00
call IntroDisplayPicCenteredOrUpperRight
call FadeInIntroPic
ld hl,OakSpeechText1
call PrintText
call GBFadeOutToWhite
call ClearScreen
ld a,PIKACHU
ld [wd0b5],a
ld [wcf91],a
call GetMonHeader
coord hl, 6, 4
call LoadFlippedFrontSpriteByMonIndex
call MovePicLeft
ld hl,OakSpeechText2
call PrintText
call GBFadeOutToWhite
call ClearScreen
ld de,RedPicFront
lb bc, Bank(RedPicFront), $00
call IntroDisplayPicCenteredOrUpperRight
call MovePicLeft
ld hl,IntroducePlayerText
call PrintText
call ChoosePlayerName
call GBFadeOutToWhite
call ClearScreen
ld de,Rival1Pic
lb bc, Bank(Rival1Pic), $00
call IntroDisplayPicCenteredOrUpperRight
call FadeInIntroPic
ld hl,IntroduceRivalText
call PrintText
call ChooseRivalName
.skipChoosingNames
call GBFadeOutToWhite
call ClearScreen
ld de,RedPicFront
lb bc, Bank(RedPicFront), $00
call IntroDisplayPicCenteredOrUpperRight
call GBFadeInFromWhite
ld a,[wd72d]
and a
jr nz,.next
ld hl,OakSpeechText3
call PrintText
.next
ld a,[H_LOADEDROMBANK]
push af
ld a,SFX_SHRINK
call PlaySound
pop af
call BankswitchCommon
ld c,4
call DelayFrames
ld hl,vSprites
ld de,RedSprite
ld b, BANK(RedSprite)
ld c, $0C
call CopyVideoData
ld de,ShrinkPic1
lb bc, BANK(ShrinkPic1), $00
call IntroDisplayPicCenteredOrUpperRight
ld c,4
call DelayFrames
ld de,ShrinkPic2
lb bc, BANK(ShrinkPic2), $00
call IntroDisplayPicCenteredOrUpperRight
call ResetPlayerSpriteData
ld a,[H_LOADEDROMBANK]
push af
ld a, BANK(Music_PalletTown)
ld [wAudioROMBank],a
ld [wAudioSavedROMBank],a
ld a, 10
ld [wAudioFadeOutControl],a
call StopAllMusic ; stop music
pop af
call BankswitchCommon
ld c,20
call DelayFrames
coord hl, 6, 5
lb bc, 7, 7
call ClearScreenArea
call LoadTextBoxTilePatterns
ld a,1
ld [wUpdateSpritesEnabled],a
ld c,50
call DelayFrames
call GBFadeOutToWhite
call ClearScreen ; rip more tail-end optimizations
ret
OakSpeechText1: ; 5fb9 (1:5fb9)
TX_FAR _OakSpeechText1
db "@"
OakSpeechText2: ; 5fbe (1:5fbe)
TX_FAR _OakSpeechText2A
db $14 ; play NIDORINA cry from TextCommandSounds
TX_FAR _OakSpeechText2B
db "@"
IntroducePlayerText: ; 5fc8 (1:5fc8)
TX_FAR _IntroducePlayerText
db "@"
IntroduceRivalText: ; 5fcd (1:5fcd)
TX_FAR _IntroduceRivalText
db "@"
OakSpeechText3: ; 5fd2 (1:5fd2)
TX_FAR _OakSpeechText3
db "@"
FadeInIntroPic: ; 5fd7 (1:5fd7)
ld hl,IntroFadePalettes
ld b,6
.next
ld a,[hli]
ld [rBGP],a
call UpdateGBCPal_BGP
ld c,10
call DelayFrames
dec b
jr nz,.next
ret
IntroFadePalettes: ; 5feb (1:5feb)
db %01010100
db %10101000
db %11111100
db %11111000
db %11110100
db %11100100
MovePicLeft: ; 5ff1 (1:5ff1)
ld a,119
ld [rWX],a
call DelayFrame
ld a,%11100100
ld [rBGP],a
call UpdateGBCPal_BGP
.next
call DelayFrame
ld a,[rWX]
sub 8
cp $FF
ret z
ld [rWX],a
jr .next
DisplayPicCenteredOrUpperRight: ; 600d (1:600d)
call GetPredefRegisters
IntroDisplayPicCenteredOrUpperRight: ; 6010 (1:6010)
; b = bank
; de = address of compressed pic
; c: 0 = centred, non-zero = upper-right
push bc
ld a,b
call UncompressSpriteFromDE
ld a, $0
call SwitchSRAMBankAndLatchClockData
ld hl,S_SPRITEBUFFER1
ld de,S_SPRITEBUFFER0
ld bc,$310
call CopyData
call PrepareRTCDataAndDisableSRAM
ld de,vFrontPic
call InterlaceMergeSpriteBuffers
pop bc
ld a,c
and a
coord hl, 15, 1
jr nz,.next
coord hl, 6, 4
.next
xor a
ld [hStartTileID],a
predef_jump CopyUncompressedPicToTilemap