pokered/engine/movie/oak_speech/oak_speech.asm
2020-11-14 20:52:10 -06:00

233 lines
4.3 KiB
NASM

SetDefaultNames:
ld a, [wLetterPrintingDelayFlags]
push af
ld a, [wOptions]
push af
ld a, [wd732]
push af
ld hl, wPlayerName
ld bc, wBoxDataEnd - wPlayerName
xor a
call FillMemory
ld hl, wSpriteDataStart
ld bc, wSpriteDataEnd - wSpriteDataStart
xor a
call FillMemory
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
jp CopyData
OakSpeech:
ld a, SFX_STOP_ALL_MUSIC
call PlaySound
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, [wDefaultMap]
ld [wDestinationMap], a
call SpecialWarpIn
xor a
ldh [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, NIDORINO
ld [wd0b5], a
ld [wcf91], a
call GetMonHeader
hlcoord 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
ldh a, [hLoadedROMBank]
push af
ld a, SFX_SHRINK
call PlaySound
pop af
ldh [hLoadedROMBank], a
ld [MBC1RomBank], a
ld c, 4
call DelayFrames
ld de, RedSprite
ld hl, vSprites
lb bc, BANK(RedSprite), $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
ldh a, [hLoadedROMBank]
push af
ld a, BANK(Music_PalletTown)
ld [wAudioROMBank], a
ld [wAudioSavedROMBank], a
ld a, 10
ld [wAudioFadeOutControl], a
ld a, SFX_STOP_ALL_MUSIC
ld [wNewSoundID], a
call PlaySound
pop af
ldh [hLoadedROMBank], a
ld [MBC1RomBank], a
ld c, 20
call DelayFrames
hlcoord 6, 5
ld b, 7
ld c, 7
call ClearScreenArea
call LoadTextBoxTilePatterns
ld a, 1
ld [wUpdateSpritesEnabled], a
ld c, 50
call DelayFrames
call GBFadeOutToWhite
jp ClearScreen
OakSpeechText1:
text_far _OakSpeechText1
text_end
OakSpeechText2:
text_far _OakSpeechText2A
sound_cry_nidorina
text_far _OakSpeechText2B
text_end
IntroducePlayerText:
text_far _IntroducePlayerText
text_end
IntroduceRivalText:
text_far _IntroduceRivalText
text_end
OakSpeechText3:
text_far _OakSpeechText3
text_end
FadeInIntroPic:
ld hl, IntroFadePalettes
ld b, 6
.next
ld a, [hli]
ldh [rBGP], a
ld c, 10
call DelayFrames
dec b
jr nz, .next
ret
IntroFadePalettes:
db %01010100
db %10101000
db %11111100
db %11111000
db %11110100
db %11100100
MovePicLeft:
ld a, 119
ldh [rWX], a
call DelayFrame
ld a, %11100100
ldh [rBGP], a
.next
call DelayFrame
ldh a, [rWX]
sub 8
cp $FF
ret z
ldh [rWX], a
jr .next
DisplayPicCenteredOrUpperRight:
call GetPredefRegisters
IntroDisplayPicCenteredOrUpperRight:
; b = bank
; de = address of compressed pic
; c: 0 = centred, non-zero = upper-right
push bc
ld a, b
call UncompressSpriteFromDE
ld hl, sSpriteBuffer1
ld de, sSpriteBuffer0
ld bc, $310
call CopyData
ld de, vFrontPic
call InterlaceMergeSpriteBuffers
pop bc
ld a, c
and a
hlcoord 15, 1
jr nz, .next
hlcoord 6, 4
.next
xor a
ldh [hStartTileID], a
predef_jump CopyUncompressedPicToTilemap