pokecrystal-board/engine/movie/crystal_intro.asm

2133 lines
33 KiB
NASM
Raw Normal View History

2018-06-24 07:09:41 -07:00
Copyright_GFPresents:
2015-11-19 15:07:20 -08:00
ld de, MUSIC_NONE
call PlayMusic
call ClearBGPalettes
call ClearTileMap
2017-12-28 04:32:33 -08:00
ld a, HIGH(vBGMap0)
2015-11-19 15:07:20 -08:00
ld [hBGMapAddress + 1], a
2017-12-28 04:32:33 -08:00
xor a ; LOW(vBGMap0)
2015-11-19 15:07:20 -08:00
ld [hBGMapAddress], a
ld [hJoyDown], a
ld [hSCX], a
ld [hSCY], a
ld a, $90
ld [hWY], a
call WaitBGMap
ld b, SCGB_GAMEFREAK_LOGO
2015-11-19 15:07:20 -08:00
call GetSGBLayout
call SetPalettes
ld c, 10
call DelayFrames
2017-12-24 09:47:30 -08:00
callfar Copyright
2015-11-19 15:07:20 -08:00
call WaitBGMap
ld c, 100
call DelayFrames
call ClearTileMap
2017-12-24 09:47:30 -08:00
farcall GBCOnlyScreen
call .GetGFLogoGFX
2015-11-19 15:07:20 -08:00
.joy_loop
call JoyTextDelay
ld a, [hJoyLast]
and BUTTONS
jr nz, .pressed_button
ld a, [wJumptableIndex]
bit 7, a
jr nz, .finish
call PlaceGameFreakPresents
2017-12-24 09:47:30 -08:00
farcall PlaySpriteAnimations
2015-11-19 15:07:20 -08:00
call DelayFrame
jr .joy_loop
.pressed_button
call .StopGamefreakAnim
2015-11-19 15:07:20 -08:00
scf
ret
.finish
call .StopGamefreakAnim
2015-11-19 15:07:20 -08:00
and a
ret
2018-06-24 07:09:41 -07:00
.GetGFLogoGFX:
2015-11-19 15:07:20 -08:00
ld de, GameFreakLogo
2017-12-28 04:32:33 -08:00
ld hl, vTiles2
2018-01-14 16:43:35 -08:00
lb bc, BANK(GameFreakLogo), 28
2015-11-19 15:07:20 -08:00
call Get1bpp
ld a, [rSVBK]
push af
ld a, BANK(wDecompressScratch)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
ld hl, IntroLogoGFX
ld de, wDecompressScratch
2015-11-19 15:07:20 -08:00
ld a, BANK(IntroLogoGFX)
call FarDecompress
2017-12-28 04:32:33 -08:00
ld hl, vTiles0
ld de, wDecompressScratch
2015-11-19 15:07:20 -08:00
lb bc, 1, 8 tiles
call Request2bpp
2017-12-28 04:32:33 -08:00
ld hl, vTiles1
ld de, wDecompressScratch + $80 tiles
2015-11-19 15:07:20 -08:00
lb bc, 1, 8 tiles
call Request2bpp
pop af
ld [rSVBK], a
2017-12-24 09:47:30 -08:00
farcall ClearSpriteAnims
2015-11-19 15:07:20 -08:00
depixel 10, 11, 4, 0
2015-12-18 17:07:09 -08:00
ld a, SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
2015-11-19 15:07:20 -08:00
call _InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_YOFFSET
2015-11-19 15:07:20 -08:00
add hl, bc
ld [hl], $a0
ld hl, SPRITEANIMSTRUCT_0C
2015-11-19 15:07:20 -08:00
add hl, bc
ld [hl], $60
ld hl, SPRITEANIMSTRUCT_0D
2015-11-19 15:07:20 -08:00
add hl, bc
ld [hl], $30
xor a
ld [wJumptableIndex], a
2015-12-02 14:59:05 -08:00
ld [wIntroSceneFrameCounter], a
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
ld [hSCX], a
ld [hSCY], a
ld a, $1
ld [hBGMapMode], a
ld a, $90
ld [hWY], a
lb de, %11100100, %11100100
2015-11-19 15:07:20 -08:00
call DmgToCgbObjPals
ret
2018-06-24 07:09:41 -07:00
.StopGamefreakAnim:
2017-12-24 09:47:30 -08:00
farcall ClearSpriteAnims
2015-11-19 15:07:20 -08:00
call ClearTileMap
call ClearSprites
ld c, 16
call DelayFrames
ret
2018-06-24 07:09:41 -07:00
PlaceGameFreakPresents:
2015-11-19 15:07:20 -08:00
ld a, [wJumptableIndex]
ld e, a
ld d, 0
2015-12-26 18:59:03 -08:00
ld hl, .dw
2015-11-19 15:07:20 -08:00
add hl, de
add hl, de
2015-11-19 15:07:20 -08:00
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
2015-11-19 15:07:20 -08:00
2018-06-24 07:09:41 -07:00
.dw
2015-11-19 15:07:20 -08:00
dw PlaceGameFreakPresents_0
dw PlaceGameFreakPresents_1
dw PlaceGameFreakPresents_2
dw PlaceGameFreakPresents_3
2018-06-24 07:09:41 -07:00
PlaceGameFreakPresents_AdvanceIndex:
2015-11-19 15:07:20 -08:00
ld hl, wJumptableIndex
inc [hl]
ret
2018-06-24 07:09:41 -07:00
PlaceGameFreakPresents_0:
2015-11-19 15:07:20 -08:00
ret
2018-06-24 07:09:41 -07:00
PlaceGameFreakPresents_1:
2018-01-11 12:36:11 -08:00
ld hl, wIntroSceneTimer
2015-11-19 15:07:20 -08:00
ld a, [hl]
cp $20
jr nc, .PlaceGameFreak
inc [hl]
ret
.PlaceGameFreak:
2015-11-19 15:07:20 -08:00
ld [hl], 0
ld hl, .GAME_FREAK
decoord 5, 10
ld bc, .end - .GAME_FREAK
call CopyBytes
call PlaceGameFreakPresents_AdvanceIndex
ld de, SFX_GAME_FREAK_PRESENTS
call PlaySFX
ret
.GAME_FREAK:
2015-11-19 15:07:20 -08:00
; G A M E _ F R E A K
db 0, 1, 2, 3, 13, 4, 5, 3, 1, 6
.end
db "@"
2018-06-24 07:09:41 -07:00
PlaceGameFreakPresents_2:
2018-01-11 12:36:11 -08:00
ld hl, wIntroSceneTimer
2015-11-19 15:07:20 -08:00
ld a, [hl]
cp $40
jr nc, .place_presents
inc [hl]
ret
.place_presents
ld [hl], 0
ld hl, .presents
decoord 7, 11
2015-11-19 15:07:20 -08:00
ld bc, .end - .presents
call CopyBytes
call PlaceGameFreakPresents_AdvanceIndex
ret
.presents
db 7, 8, 9, 10, 11, 12
.end
db "@"
2018-06-24 07:09:41 -07:00
PlaceGameFreakPresents_3:
2018-01-11 12:36:11 -08:00
ld hl, wIntroSceneTimer
2015-11-19 15:07:20 -08:00
ld a, [hl]
cp $80
jr nc, .finish
inc [hl]
ret
.finish
ld hl, wJumptableIndex
set 7, [hl]
ret
2018-06-24 07:09:41 -07:00
GameFreakLogoJumper:
2016-05-13 22:11:01 -07:00
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
2015-11-19 15:07:20 -08:00
add hl, bc
ld e, [hl]
ld d, 0
ld hl, GameFreakLogoScenes
add hl, de
add hl, de
2015-11-19 15:07:20 -08:00
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
2015-11-19 15:07:20 -08:00
2018-06-24 07:09:41 -07:00
GameFreakLogoScenes:
2015-11-19 15:07:20 -08:00
dw GameFreakLogoScene1
dw GameFreakLogoScene2
dw GameFreakLogoScene3
dw GameFreakLogoScene4
dw GameFreakLogoScene5
2018-06-24 07:09:41 -07:00
GameFreakLogoScene1:
2016-05-13 22:11:01 -07:00
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
2015-11-19 15:07:20 -08:00
add hl, bc
inc [hl]
ret
2018-06-24 07:09:41 -07:00
GameFreakLogoScene2:
2015-12-04 05:46:11 -08:00
ld hl, SPRITEANIMSTRUCT_0C
2015-11-19 15:07:20 -08:00
add hl, bc
ld a, [hl]
and a
jr z, .asm_e4747
ld d, a
2015-12-04 05:46:11 -08:00
ld hl, SPRITEANIMSTRUCT_0D
2015-11-19 15:07:20 -08:00
add hl, bc
ld a, [hl]
2018-01-11 09:00:01 -08:00
and %111111
cp %100000
2015-11-19 15:07:20 -08:00
jr nc, .asm_e4723
2018-01-11 09:00:01 -08:00
add %100000
2015-11-19 15:07:20 -08:00
.asm_e4723
ld e, a
2017-12-24 09:47:30 -08:00
farcall BattleAnim_Sine_e
2015-12-04 05:46:11 -08:00
ld hl, SPRITEANIMSTRUCT_YOFFSET
2015-11-19 15:07:20 -08:00
add hl, bc
ld [hl], e
2015-12-04 05:46:11 -08:00
ld hl, SPRITEANIMSTRUCT_0D
2015-11-19 15:07:20 -08:00
add hl, bc
ld a, [hl]
dec [hl]
and $1f
ret nz
2015-12-04 05:46:11 -08:00
ld hl, SPRITEANIMSTRUCT_0C
2015-11-19 15:07:20 -08:00
add hl, bc
ld a, [hl]
sub $30
ld [hl], a
ld de, SFX_DITTO_BOUNCE
call PlaySFX
ret
2015-12-04 05:46:11 -08:00
2015-11-19 15:07:20 -08:00
.asm_e4747
2016-05-13 22:11:01 -07:00
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
2015-11-19 15:07:20 -08:00
add hl, bc
inc [hl]
2015-12-04 05:46:11 -08:00
ld hl, SPRITEANIMSTRUCT_0D
2015-11-19 15:07:20 -08:00
add hl, bc
ld [hl], $0
ld de, SFX_DITTO_POP_UP
call PlaySFX
ret
2018-06-24 07:09:41 -07:00
GameFreakLogoScene3:
2015-12-04 05:46:11 -08:00
ld hl, SPRITEANIMSTRUCT_0D
2015-11-19 15:07:20 -08:00
add hl, bc
ld a, [hl]
cp $20
jr nc, .asm_e4764
inc [hl]
ret
2015-12-04 05:46:11 -08:00
2015-11-19 15:07:20 -08:00
.asm_e4764
2016-05-13 22:11:01 -07:00
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
2015-11-19 15:07:20 -08:00
add hl, bc
inc [hl]
2015-12-04 05:46:11 -08:00
ld hl, SPRITEANIMSTRUCT_0D
2015-11-19 15:07:20 -08:00
add hl, bc
ld [hl], $0
ld de, SFX_DITTO_TRANSFORM
call PlaySFX
ret
2018-06-24 07:09:41 -07:00
GameFreakLogoScene4:
2015-12-04 05:46:11 -08:00
ld hl, SPRITEANIMSTRUCT_0D
2015-11-19 15:07:20 -08:00
add hl, bc
ld a, [hl]
cp $40
jr z, .asm_e47a3
inc [hl]
srl a
srl a
ld e, a
ld d, $0
ld hl, GameFreakLogoPalettes
add hl, de
add hl, de
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wOBPals2)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
ld a, [hli]
2018-01-01 06:08:21 -08:00
ld [wOBPals2 + 12], a
2015-11-19 15:07:20 -08:00
ld a, [hli]
2018-01-01 06:08:21 -08:00
ld [wOBPals2 + 13], a
2015-11-19 15:07:20 -08:00
pop af
ld [rSVBK], a
ld a, $1
ld [hCGBPalUpdate], a
ret
2015-12-04 05:46:11 -08:00
2015-11-19 15:07:20 -08:00
.asm_e47a3
2016-05-13 22:11:01 -07:00
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
2015-11-19 15:07:20 -08:00
add hl, bc
inc [hl]
call PlaceGameFreakPresents_AdvanceIndex
2018-06-24 07:09:41 -07:00
GameFreakLogoScene5:
2015-11-19 15:07:20 -08:00
ret
2018-06-24 07:09:41 -07:00
GameFreakLogoPalettes:
INCLUDE "gfx/intro/gamefreak_logo.pal"
2015-11-19 15:07:20 -08:00
2018-06-24 07:09:41 -07:00
GameFreakLogo:
2017-06-20 21:13:09 -07:00
INCBIN "gfx/splash/logo1.1bpp"
INCBIN "gfx/splash/logo2.1bpp"
2015-11-19 15:07:20 -08:00
2018-06-24 07:09:41 -07:00
CrystalIntro:
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wGBCPalettes)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
ld a, [hInMenu]
push af
ld a, [hVBlank]
push af
call .InitRAMAddrs
2018-06-24 07:09:41 -07:00
.loop
2015-11-19 15:07:20 -08:00
call JoyTextDelay
ld a, [hJoyLast]
and BUTTONS
jr nz, .ShutOffMusic
ld a, [wJumptableIndex]
bit 7, a
jr nz, .done
call IntroSceneJumper
2017-12-24 09:47:30 -08:00
farcall PlaySpriteAnimations
2015-11-19 15:07:20 -08:00
call DelayFrame
jp .loop
.ShutOffMusic:
2015-11-19 15:07:20 -08:00
ld de, MUSIC_NONE
call PlayMusic
.done
call ClearBGPalettes
call ClearSprites
call ClearTileMap
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
pop af
ld [hVBlank], a
pop af
ld [hInMenu], a
pop af
ld [rSVBK], a
ret
2018-06-24 07:09:41 -07:00
.InitRAMAddrs:
2015-11-19 15:07:20 -08:00
xor a
ld [hVBlank], a
ld a, $1
ld [hInMenu], a
xor a
ld [hMapAnims], a
ld [wJumptableIndex], a
ret
2018-06-24 07:09:41 -07:00
IntroSceneJumper:
2015-11-19 15:07:20 -08:00
ld a, [wJumptableIndex]
ld e, a
ld d, 0
ld hl, IntroScenes
add hl, de
add hl, de
2015-11-19 15:07:20 -08:00
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
2015-11-19 15:07:20 -08:00
2018-06-24 07:09:41 -07:00
IntroScenes:
2015-11-19 15:07:20 -08:00
dw IntroScene1
dw IntroScene2
dw IntroScene3
dw IntroScene4
dw IntroScene5
dw IntroScene6
dw IntroScene7
dw IntroScene8
dw IntroScene9
dw IntroScene10
dw IntroScene11
dw IntroScene12
dw IntroScene13
dw IntroScene14
dw IntroScene15
dw IntroScene16
dw IntroScene17
dw IntroScene18
dw IntroScene19
dw IntroScene20
dw IntroScene21
dw IntroScene22
dw IntroScene23
dw IntroScene24
dw IntroScene25
dw IntroScene26
dw IntroScene27
dw IntroScene28
2018-06-24 07:09:41 -07:00
NextIntroScene:
2015-11-19 15:07:20 -08:00
ld hl, wJumptableIndex
inc [hl]
ret
2018-06-24 07:09:41 -07:00
IntroScene1:
2015-11-19 15:07:20 -08:00
; Setup the next scene.
2015-12-02 14:59:05 -08:00
call Intro_ClearBGPals
2015-11-19 15:07:20 -08:00
call ClearSprites
call ClearTileMap
xor a
ld [hBGMapMode], a
ld a, $1
ld [rVBK], a
ld hl, IntroTilemap001
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, $0
ld [rVBK], a
ld hl, IntroUnownsGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles2 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_128Tiles
2015-11-19 15:07:20 -08:00
ld hl, IntroPulseGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles0 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_128Tiles
2015-11-19 15:07:20 -08:00
ld hl, IntroTilemap002
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wBGPals1)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette2
2018-01-01 06:08:21 -08:00
ld de, wBGPals1
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette2
2018-01-01 06:08:21 -08:00
ld de, wBGPals2
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
pop af
ld [rSVBK], a
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
2017-12-24 09:47:30 -08:00
farcall ClearSpriteAnims
2015-12-02 14:59:05 -08:00
call Intro_SetCGBPalUpdate
2015-11-19 15:07:20 -08:00
xor a
ld [wIntroSceneFrameCounter], a
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene2:
2015-11-19 15:07:20 -08:00
; First Unown (A) fades in, pulses, then fades out.
ld hl, wIntroSceneFrameCounter
ld a, [hl]
inc [hl]
cp $80
jr nc, .endscene
cp $60
jr nz, .DontPlaySound
push af
2015-12-02 14:59:05 -08:00
depixel 11, 11
call CrystalIntro_InitUnownAnim
2015-11-19 15:07:20 -08:00
ld de, SFX_INTRO_UNOWN_1
call PlaySFX
pop af
.DontPlaySound:
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
xor a
2015-12-02 14:59:05 -08:00
call CrystalIntro_UnownFade
2015-11-19 15:07:20 -08:00
ret
.endscene
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene3:
2015-11-19 15:07:20 -08:00
; More setup. Transition to the outdoor scene.
2015-12-02 14:59:05 -08:00
call Intro_ClearBGPals
2015-11-19 15:07:20 -08:00
call ClearSprites
call ClearTileMap
xor a
ld [hBGMapMode], a
ld a, $1
ld [rVBK], a
ld hl, IntroTilemap003
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, $0
ld [rVBK], a
ld hl, IntroBackgroundGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles2 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_128Tiles
2015-11-19 15:07:20 -08:00
ld hl, IntroTilemap004
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wBGPals1)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette1
2018-01-01 06:08:21 -08:00
ld de, wBGPals1
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette1
2018-01-01 06:08:21 -08:00
ld de, wBGPals2
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
pop af
ld [rSVBK], a
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
2015-12-02 14:59:05 -08:00
call Intro_ResetLYOverrides
call Intro_SetCGBPalUpdate
2015-11-19 15:07:20 -08:00
xor a
ld [wIntroSceneFrameCounter], a
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene4:
2015-11-19 15:07:20 -08:00
; Scroll the outdoor panorama for a bit.
2015-12-02 14:59:05 -08:00
call Intro_PerspectiveScrollBG
2015-11-19 15:07:20 -08:00
ld hl, wIntroSceneFrameCounter
ld a, [hl]
cp $80
jr z, .endscene
inc [hl]
ret
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
.endscene
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene5:
2015-11-19 15:07:20 -08:00
; Go back to the Unown.
2015-12-02 14:59:05 -08:00
call Intro_ClearBGPals
2015-11-19 15:07:20 -08:00
call ClearSprites
call ClearTileMap
xor a
ld [hBGMapMode], a
2016-06-13 19:53:33 -07:00
ld [hLCDCPointer], a
2015-11-19 15:07:20 -08:00
ld a, $1
ld [rVBK], a
ld hl, IntroTilemap005
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, $0
ld [rVBK], a
ld hl, IntroUnownsGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles2 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_128Tiles
2015-11-19 15:07:20 -08:00
ld hl, IntroPulseGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles0 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_128Tiles
2015-11-19 15:07:20 -08:00
ld hl, IntroTilemap006
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wBGPals1)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette2
2018-01-01 06:08:21 -08:00
ld de, wBGPals1
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette2
2018-01-01 06:08:21 -08:00
ld de, wBGPals2
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
pop af
ld [rSVBK], a
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
2017-12-24 09:47:30 -08:00
farcall ClearSpriteAnims
2015-12-02 14:59:05 -08:00
call Intro_SetCGBPalUpdate
2015-11-19 15:07:20 -08:00
xor a
2015-12-02 14:59:05 -08:00
ld [wIntroSceneFrameCounter], a
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene6:
2015-11-19 15:07:20 -08:00
; Two more Unown (I, H) fade in.
2015-12-02 14:59:05 -08:00
ld hl, wIntroSceneFrameCounter
2015-11-19 15:07:20 -08:00
ld a, [hl]
inc [hl]
cp $80
jr nc, .endscene
cp $60
jr z, .SecondUnown
cp $40
jr nc, .StopUnown
cp $20
jr z, .FirstUnown
jr .NoUnown
2015-12-02 14:59:05 -08:00
.FirstUnown:
2015-11-19 15:07:20 -08:00
push af
2015-12-02 14:59:05 -08:00
depixel 7, 15
call CrystalIntro_InitUnownAnim
2015-11-19 15:07:20 -08:00
ld de, SFX_INTRO_UNOWN_2
call PlaySFX
pop af
.NoUnown:
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
xor a
2015-12-02 14:59:05 -08:00
call CrystalIntro_UnownFade
2015-11-19 15:07:20 -08:00
ret
2015-12-02 14:59:05 -08:00
.SecondUnown:
2015-11-19 15:07:20 -08:00
push af
2015-12-02 14:59:05 -08:00
depixel 14, 6
call CrystalIntro_InitUnownAnim
2015-11-19 15:07:20 -08:00
ld de, SFX_INTRO_UNOWN_1
call PlaySFX
pop af
.StopUnown:
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
ld a, $1
2015-12-02 14:59:05 -08:00
call CrystalIntro_UnownFade
2015-11-19 15:07:20 -08:00
ret
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
.endscene
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene7:
2015-11-19 15:07:20 -08:00
; Back to the outdoor scene.
2015-12-02 14:59:05 -08:00
call Intro_ClearBGPals
2015-11-19 15:07:20 -08:00
call ClearSprites
call ClearTileMap
xor a
ld [hBGMapMode], a
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
ld a, $1
ld [rVBK], a
ld hl, IntroTilemap003
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld hl, IntroPichuWooperGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles0 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_128Tiles
2015-11-19 15:07:20 -08:00
ld a, $0
ld [rVBK], a
ld hl, IntroSuicuneRunGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles0 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_255Tiles
2015-11-19 15:07:20 -08:00
ld hl, IntroBackgroundGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles2 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_128Tiles
2015-11-19 15:07:20 -08:00
ld hl, IntroTilemap004
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wBGPals1)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2015-12-02 14:59:05 -08:00
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette1
2018-01-01 06:08:21 -08:00
ld de, wBGPals1
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
2015-12-02 14:59:05 -08:00
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette1
2018-01-01 06:08:21 -08:00
ld de, wBGPals2
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
pop af
ld [rSVBK], a
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
2015-12-02 14:59:05 -08:00
call Intro_ResetLYOverrides
2017-12-24 09:47:30 -08:00
farcall ClearSpriteAnims
2015-11-19 15:07:20 -08:00
depixel 13, 27, 4, 0
ld a, SPRITE_ANIM_INDEX_INTRO_SUICUNE
2015-11-19 15:07:20 -08:00
call _InitSpriteAnimStruct
ld a, $f0
2015-12-02 14:59:05 -08:00
ld [wGlobalAnimXOffset], a
call Intro_SetCGBPalUpdate
2015-11-19 15:07:20 -08:00
xor a
ld [wIntroSceneFrameCounter], a
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene8:
2015-11-19 15:07:20 -08:00
; Scroll the scene, then show Suicune running across the screen.
ld hl, wIntroSceneFrameCounter
ld a, [hl]
inc [hl]
cp $40
2015-12-02 14:59:05 -08:00
jr z, .suicune_sound
jr nc, .animate_suicune
call Intro_PerspectiveScrollBG
2015-11-19 15:07:20 -08:00
ret
2015-12-02 14:59:05 -08:00
.suicune_sound
2015-11-19 15:07:20 -08:00
ld de, SFX_INTRO_SUICUNE_3
call PlaySFX
2015-12-02 14:59:05 -08:00
.animate_suicune
ld a, [wGlobalAnimXOffset]
2015-11-19 15:07:20 -08:00
and a
2015-12-02 14:59:05 -08:00
jr z, .finish
2015-11-19 15:07:20 -08:00
sub $8
2015-12-02 14:59:05 -08:00
ld [wGlobalAnimXOffset], a
2015-11-19 15:07:20 -08:00
ret
2015-12-02 14:59:05 -08:00
.finish
2015-11-19 15:07:20 -08:00
ld de, SFX_INTRO_SUICUNE_2
call PlaySFX
2017-12-24 09:47:30 -08:00
farcall DeinitializeAllSprites
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene9:
2015-11-19 15:07:20 -08:00
; Set up the next scene (same bg).
xor a
2016-06-13 19:53:33 -07:00
ld [hLCDCPointer], a
2015-11-19 15:07:20 -08:00
call ClearSprites
2018-01-23 14:39:09 -08:00
hlcoord 0, 0, wAttrMap
2015-12-02 14:59:05 -08:00
; first 12 rows have palette 1
ld bc, 12 * SCREEN_WIDTH
2015-11-19 15:07:20 -08:00
ld a, $1
call ByteFill
2015-12-02 14:59:05 -08:00
; middle 3 rows have palette 2
ld bc, 3 * SCREEN_WIDTH
2015-11-19 15:07:20 -08:00
ld a, $2
call ByteFill
2015-12-02 14:59:05 -08:00
; last three rows have palette 3
ld bc, 3 * SCREEN_WIDTH
2015-11-19 15:07:20 -08:00
ld a, $3
call ByteFill
ld a, $2
ld [hBGMapMode], a
call DelayFrame
call DelayFrame
call DelayFrame
2015-12-02 14:59:05 -08:00
ld a, $c ; $980c
2015-11-19 15:07:20 -08:00
ld [hBGMapAddress], a
call DelayFrame
call DelayFrame
call DelayFrame
xor a
ld [hBGMapMode], a
ld [hBGMapAddress], a
2015-12-02 14:59:05 -08:00
ld [wGlobalAnimXOffset], a
2015-11-19 15:07:20 -08:00
xor a
2015-12-02 14:59:05 -08:00
ld [wIntroSceneFrameCounter], a
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene10:
2015-11-19 15:07:20 -08:00
; Wooper and Pichu enter.
2015-12-02 14:59:05 -08:00
call Intro_RustleGrass
ld hl, wIntroSceneFrameCounter
2015-11-19 15:07:20 -08:00
ld a, [hl]
inc [hl]
cp $c0
jr z, .done
cp $20
jr z, .wooper
cp $40
jr z, .pichu
ret
.pichu
depixel 21, 16, 1, 0
ld a, SPRITE_ANIM_INDEX_INTRO_PICHU
2015-11-19 15:07:20 -08:00
call _InitSpriteAnimStruct
ld de, SFX_INTRO_PICHU
call PlaySFX
ret
.wooper
depixel 22, 6
ld a, SPRITE_ANIM_INDEX_INTRO_WOOPER
2015-11-19 15:07:20 -08:00
call _InitSpriteAnimStruct
ld de, SFX_INTRO_PICHU
call PlaySFX
ret
.done
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene11:
2015-11-19 15:07:20 -08:00
; Back to Unown again.
2015-12-02 14:59:05 -08:00
call Intro_ClearBGPals
2015-11-19 15:07:20 -08:00
call ClearSprites
call ClearTileMap
xor a
ld [hBGMapMode], a
2016-06-13 19:53:33 -07:00
ld [hLCDCPointer], a
2015-11-19 15:07:20 -08:00
ld a, $1
ld [rVBK], a
ld hl, IntroTilemap007
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, $0
ld [rVBK], a
ld hl, IntroUnownsGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles2 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_128Tiles
2015-11-19 15:07:20 -08:00
ld hl, IntroTilemap008
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wBGPals1)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette2
2018-01-01 06:08:21 -08:00
ld de, wBGPals1
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette2
2018-01-01 06:08:21 -08:00
ld de, wBGPals2
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
pop af
ld [rSVBK], a
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
2017-12-24 09:47:30 -08:00
farcall ClearSpriteAnims
2015-12-02 14:59:05 -08:00
call Intro_SetCGBPalUpdate
2015-11-19 15:07:20 -08:00
xor a
ld [wIntroSceneFrameCounter], a
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene12:
2015-11-19 15:07:20 -08:00
; Even more Unown.
2015-12-02 14:59:05 -08:00
call .PlayUnownSound
2015-11-19 15:07:20 -08:00
ld hl, wIntroSceneFrameCounter
ld a, [hl]
inc [hl]
cp $c0
2015-12-02 14:59:05 -08:00
jr nc, .done
2015-11-19 15:07:20 -08:00
cp $80
2015-12-02 14:59:05 -08:00
jr nc, .second_half
; first half
2015-11-19 15:07:20 -08:00
ld c, a
and $1f
sla a
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
ld a, c
and $e0
srl a
swap a
2015-12-02 14:59:05 -08:00
call CrystalIntro_UnownFade
2015-11-19 15:07:20 -08:00
ret
2015-12-02 14:59:05 -08:00
.second_half
; double speed
2015-11-19 15:07:20 -08:00
ld c, a
and $f
sla a
sla a
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
ld a, c
and $70
or $40
swap a
2015-12-02 14:59:05 -08:00
call CrystalIntro_UnownFade
2015-11-19 15:07:20 -08:00
ret
2015-12-02 14:59:05 -08:00
.done
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
.PlayUnownSound:
2015-11-19 15:07:20 -08:00
ld a, [wIntroSceneFrameCounter]
ld c, a
ld hl, .UnownSounds
.loop
ld a, [hli]
cp -1
ret z
cp c
jr z, .playsound
inc hl
inc hl
2015-11-19 15:07:20 -08:00
jr .loop
.playsound
ld a, [hli]
ld d, [hl]
ld e, a
push de
call SFXChannelsOff
pop de
call PlaySFX
ret
2018-06-24 07:09:41 -07:00
.UnownSounds:
2015-11-19 15:07:20 -08:00
dbw $00, SFX_INTRO_UNOWN_3
dbw $20, SFX_INTRO_UNOWN_2
dbw $40, SFX_INTRO_UNOWN_1
dbw $60, SFX_INTRO_UNOWN_2
dbw $80, SFX_INTRO_UNOWN_3
dbw $90, SFX_INTRO_UNOWN_2
dbw $a0, SFX_INTRO_UNOWN_1
dbw $b0, SFX_INTRO_UNOWN_2
2018-06-24 07:09:41 -07:00
db -1
2015-11-19 15:07:20 -08:00
2018-06-24 07:09:41 -07:00
IntroScene13:
2015-11-19 15:07:20 -08:00
; Switch scenes again.
2015-12-02 14:59:05 -08:00
call Intro_ClearBGPals
2015-11-19 15:07:20 -08:00
call ClearSprites
call ClearTileMap
xor a
ld [hBGMapMode], a
ld a, $1
ld [rVBK], a
ld hl, IntroTilemap003
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, $0
ld [rVBK], a
ld hl, IntroSuicuneRunGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles0 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_255Tiles
2015-11-19 15:07:20 -08:00
ld hl, IntroBackgroundGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles2 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_128Tiles
2015-11-19 15:07:20 -08:00
ld hl, IntroTilemap004
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wBGPals1)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette1
2018-01-01 06:08:21 -08:00
ld de, wBGPals1
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette1
2018-01-01 06:08:21 -08:00
ld de, wBGPals2
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
pop af
ld [rSVBK], a
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
2017-12-24 09:47:30 -08:00
farcall ClearSpriteAnims
2015-11-19 15:07:20 -08:00
depixel 13, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_INTRO_SUICUNE
2015-11-19 15:07:20 -08:00
call _InitSpriteAnimStruct
ld de, MUSIC_CRYSTAL_OPENING
call PlayMusic
xor a
2015-12-02 14:59:05 -08:00
ld [wGlobalAnimXOffset], a
call Intro_SetCGBPalUpdate
2015-11-19 15:07:20 -08:00
xor a
2015-12-02 14:59:05 -08:00
ld [wIntroSceneFrameCounter], a
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene14:
2015-11-19 15:07:20 -08:00
; Suicune runs then jumps.
ld a, [hSCX]
sub 10
ld [hSCX], a
2015-12-02 14:59:05 -08:00
ld hl, wIntroSceneFrameCounter
2015-11-19 15:07:20 -08:00
ld a, [hl]
inc [hl]
cp $80
jr z, .done
cp $60
jr z, .jump
jr nc, .asm_e4e1a
cp $40
jr nc, .asm_e4e33
ret
.jump
ld de, SFX_INTRO_SUICUNE_4
call PlaySFX
.asm_e4e1a
ld a, $1
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-12-02 14:59:05 -08:00
ld a, [wGlobalAnimXOffset]
2015-11-19 15:07:20 -08:00
cp $88
jr c, .asm_e4e2c
sub $8
2015-12-02 14:59:05 -08:00
ld [wGlobalAnimXOffset], a
2015-11-19 15:07:20 -08:00
ret
.asm_e4e2c
2017-12-24 09:47:30 -08:00
farcall DeinitializeAllSprites
2015-11-19 15:07:20 -08:00
ret
.asm_e4e33
2015-12-02 14:59:05 -08:00
ld a, [wGlobalAnimXOffset]
2015-11-19 15:07:20 -08:00
sub $2
2015-12-02 14:59:05 -08:00
ld [wGlobalAnimXOffset], a
2015-11-19 15:07:20 -08:00
ret
.done
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene15:
2015-11-19 15:07:20 -08:00
; Transition to a new scene.
2015-12-02 14:59:05 -08:00
call Intro_ClearBGPals
2015-11-19 15:07:20 -08:00
call ClearSprites
call ClearTileMap
xor a
ld [hBGMapMode], a
ld a, $1
ld [rVBK], a
ld hl, IntroTilemap009
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, $0
ld [rVBK], a
ld hl, IntroSuicuneJumpGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles2 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_128Tiles
2015-11-19 15:07:20 -08:00
ld hl, IntroUnownBackGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles0 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_128Tiles
ld de, IntroGrass4GFX
2017-12-28 04:32:33 -08:00
ld hl, vTiles1 tile $00
2015-12-02 14:59:05 -08:00
lb bc, BANK(IntroGrass4GFX), 1
2015-11-19 15:07:20 -08:00
call Request2bpp
ld hl, IntroTilemap010
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
call Intro_LoadTilemap
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wBGPals1)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette5
2018-01-01 06:08:21 -08:00
ld de, wBGPals1
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette5
2018-01-01 06:08:21 -08:00
ld de, wBGPals2
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
pop af
ld [rSVBK], a
xor a
ld [hSCX], a
ld a, $90
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
2017-12-24 09:47:30 -08:00
farcall ClearSpriteAnims
2015-12-02 14:59:05 -08:00
call Intro_SetCGBPalUpdate
2015-11-19 15:07:20 -08:00
depixel 8, 5
ld a, SPRITE_ANIM_INDEX_INTRO_UNOWN_F
2015-11-19 15:07:20 -08:00
call _InitSpriteAnimStruct
depixel 12, 0
ld a, SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY
2015-11-19 15:07:20 -08:00
call _InitSpriteAnimStruct
xor a
2015-12-02 14:59:05 -08:00
ld [wIntroSceneFrameCounter], a
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene16:
2015-11-19 15:07:20 -08:00
; Suicune shows its face. An Unown appears in front.
2015-12-02 14:59:05 -08:00
ld hl, wIntroSceneFrameCounter
2015-11-19 15:07:20 -08:00
ld a, [hl]
inc [hl]
cp $80
jr nc, .done
2015-12-02 14:59:05 -08:00
call Intro_Scene16_AnimateSuicune
2015-11-19 15:07:20 -08:00
ld a, [hSCY]
and a
ret z
add 8
ld [hSCY], a
ret
.done
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene17:
2015-11-19 15:07:20 -08:00
; ...
2015-12-02 14:59:05 -08:00
call Intro_ClearBGPals
2015-11-19 15:07:20 -08:00
call ClearSprites
call ClearTileMap
xor a
ld [hBGMapMode], a
ld a, $1
ld [rVBK], a
ld hl, IntroTilemap011
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, $0
ld [rVBK], a
ld hl, IntroSuicuneCloseGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles1 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_255Tiles
2015-11-19 15:07:20 -08:00
ld hl, IntroTilemap012
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wBGPals1)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette4
2018-01-01 06:08:21 -08:00
ld de, wBGPals1
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette4
2018-01-01 06:08:21 -08:00
ld de, wBGPals2
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
pop af
ld [rSVBK], a
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
2017-12-24 09:47:30 -08:00
farcall ClearSpriteAnims
2015-12-02 14:59:05 -08:00
call Intro_SetCGBPalUpdate
2015-11-19 15:07:20 -08:00
xor a
2015-12-02 14:59:05 -08:00
ld [wIntroSceneFrameCounter], a
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene18:
2015-11-19 15:07:20 -08:00
; Suicune close up.
2015-12-02 14:59:05 -08:00
ld hl, wIntroSceneFrameCounter
2015-11-19 15:07:20 -08:00
ld a, [hl]
inc [hl]
cp $60
jr nc, .done
ld a, [hSCX]
cp $60
ret z
add 8
ld [hSCX], a
ret
.done
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene19:
2015-11-19 15:07:20 -08:00
; More setup.
2015-12-02 14:59:05 -08:00
call Intro_ClearBGPals
2015-11-19 15:07:20 -08:00
call ClearSprites
call ClearTileMap
xor a
ld [hBGMapMode], a
ld a, $1
ld [rVBK], a
ld hl, IntroTilemap013
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, $0
ld [rVBK], a
ld hl, IntroSuicuneBackGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles2 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_128Tiles
2015-11-19 15:07:20 -08:00
ld hl, IntroUnownsGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles1 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_128Tiles
ld de, IntroGrass4GFX
2017-12-28 04:32:33 -08:00
ld hl, vTiles1 tile $7f
2015-12-02 14:59:05 -08:00
lb bc, BANK(IntroGrass4GFX), 1
2015-11-19 15:07:20 -08:00
call Request2bpp
ld hl, IntroTilemap014
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
call Intro_LoadTilemap
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wBGPals1)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette5
2018-01-01 06:08:21 -08:00
ld de, wBGPals1
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette5
2018-01-01 06:08:21 -08:00
ld de, wBGPals2
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
pop af
ld [rSVBK], a
xor a
ld [hSCX], a
ld a, $d8
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
2017-12-24 09:47:30 -08:00
farcall ClearSpriteAnims
2015-12-04 05:46:11 -08:00
ld hl, wSpriteAnimDict
2015-11-19 15:07:20 -08:00
xor a
ld [hli], a
ld [hl], $7f
2015-12-02 14:59:05 -08:00
call Intro_SetCGBPalUpdate
2015-11-19 15:07:20 -08:00
depixel 12, 0
ld a, SPRITE_ANIM_INDEX_INTRO_SUICUNE_AWAY
2015-11-19 15:07:20 -08:00
call _InitSpriteAnimStruct
xor a
2015-12-02 14:59:05 -08:00
ld [wIntroSceneFrameCounter], a
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene20:
2015-11-19 15:07:20 -08:00
; Suicune running away. A bunch of Unown appear.
2015-12-02 14:59:05 -08:00
ld hl, wIntroSceneFrameCounter
2015-11-19 15:07:20 -08:00
ld a, [hl]
inc [hl]
cp $98
2015-12-02 14:59:05 -08:00
jr nc, .finished
2015-11-19 15:07:20 -08:00
cp $58
ret nc
cp $40
2015-12-02 14:59:05 -08:00
jr nc, .AppearUnown
2015-11-19 15:07:20 -08:00
cp $28
ret nc
ld a, [hSCY]
inc a
ld [hSCY], a
ret
.AppearUnown:
2015-11-19 15:07:20 -08:00
sub $18
ld c, a
and $3
cp $3
ret nz
ld a, c
and $1c
srl a
srl a
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
xor a
2015-12-02 14:59:05 -08:00
call Intro_Scene20_AppearUnown
2015-11-19 15:07:20 -08:00
ret
2015-12-02 14:59:05 -08:00
; unused
2015-11-19 15:07:20 -08:00
ld a, c
and $1c
srl a
srl a
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
ld a, 1
2015-12-02 14:59:05 -08:00
call Intro_Scene20_AppearUnown
2015-11-19 15:07:20 -08:00
ret
2015-12-02 14:59:05 -08:00
.finished
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene21:
2015-11-19 15:07:20 -08:00
; Suicune gets more distant and turns black.
2015-12-02 14:59:05 -08:00
call Intro_ColoredSuicuneFrameSwap
2015-11-19 15:07:20 -08:00
ld c, 3
call DelayFrames
xor a
ld [hBGMapMode], a
2015-12-02 14:59:05 -08:00
ld [wIntroSceneFrameCounter], a
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene22:
2015-12-02 14:59:05 -08:00
ld hl, wIntroSceneFrameCounter
2015-11-19 15:07:20 -08:00
ld a, [hl]
inc [hl]
cp $8
jr nc, .done
ret
.done
2017-12-24 09:47:30 -08:00
farcall DeinitializeAllSprites
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene23:
2015-11-19 15:07:20 -08:00
xor a
2015-12-02 14:59:05 -08:00
ld [wIntroSceneFrameCounter], a
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene24:
2015-11-19 15:07:20 -08:00
; Fade to white.
2015-12-02 14:59:05 -08:00
ld hl, wIntroSceneFrameCounter
2015-11-19 15:07:20 -08:00
ld a, [hl]
inc [hl]
cp $20
jr nc, .done
ld c, a
and $3
ret nz
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
ld a, c
and $1c
sla a
2015-12-02 14:59:05 -08:00
call Intro_Scene24_ApplyPaletteFade
2015-11-19 15:07:20 -08:00
ret
.done
ld a, $40
2015-12-02 14:59:05 -08:00
ld [wIntroSceneFrameCounter], a
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene25:
2015-11-19 15:07:20 -08:00
; Wait around a bit.
2015-12-02 14:59:05 -08:00
ld a, [wIntroSceneFrameCounter]
2015-11-19 15:07:20 -08:00
dec a
jr z, .done
2015-12-02 14:59:05 -08:00
ld [wIntroSceneFrameCounter], a
2015-11-19 15:07:20 -08:00
ret
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
.done
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene26:
2015-11-19 15:07:20 -08:00
; Load the final scene.
call ClearBGPalettes
call ClearSprites
call ClearTileMap
xor a
ld [hBGMapMode], a
ld a, $1
ld [rVBK], a
ld hl, IntroTilemap015
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, $0
ld [rVBK], a
ld hl, IntroCrystalUnownsGFX
2017-12-28 04:32:33 -08:00
ld de, vTiles2 tile $00
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_128Tiles
2015-11-19 15:07:20 -08:00
ld hl, IntroTilemap017
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-02 14:59:05 -08:00
call Intro_DecompressRequest2bpp_64Tiles
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wBGPals1)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette3
2018-01-01 06:08:21 -08:00
ld de, wBGPals1
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
2018-03-02 16:39:16 -08:00
ld hl, IntroPalette3
2018-01-01 06:08:21 -08:00
ld de, wBGPals2
2017-12-15 19:36:33 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
pop af
ld [rSVBK], a
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
2017-12-24 09:47:30 -08:00
farcall ClearSpriteAnims
2015-12-02 14:59:05 -08:00
call Intro_SetCGBPalUpdate
2015-11-19 15:07:20 -08:00
xor a
2015-12-02 14:59:05 -08:00
ld [wIntroSceneFrameCounter], a
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
call NextIntroScene
ret
2018-06-24 07:09:41 -07:00
IntroScene27:
2015-11-19 15:07:20 -08:00
; Spell out C R Y S T A L with Unown.
2018-01-11 12:36:11 -08:00
ld hl, wIntroSceneTimer
2015-11-19 15:07:20 -08:00
inc [hl]
2015-12-02 14:59:05 -08:00
ld hl, wIntroSceneFrameCounter
2015-11-19 15:07:20 -08:00
ld a, [hl]
inc [hl]
cp $80
jr nc, .done
ld c, a
and $f
2018-01-11 12:36:11 -08:00
ld [wIntroSceneTimer], a
2015-11-19 15:07:20 -08:00
ld a, c
and $70
swap a
2015-12-02 14:59:05 -08:00
call Intro_FadeUnownWordPals
2015-11-19 15:07:20 -08:00
ret
.done
call NextIntroScene
ld a, $80
2015-12-02 14:59:05 -08:00
ld [wIntroSceneFrameCounter], a
2015-11-19 15:07:20 -08:00
ret
2018-06-24 07:09:41 -07:00
IntroScene28:
2015-11-19 15:07:20 -08:00
; Cut out when the music ends, and lead into the title screen.
2015-12-02 14:59:05 -08:00
ld hl, wIntroSceneFrameCounter
2015-11-19 15:07:20 -08:00
ld a, [hl]
and a
jr z, .done
dec [hl]
cp $18
jr z, .clear
cp $8
ret nz
ld de, SFX_INTRO_WHOOSH
2015-11-19 15:07:20 -08:00
call PlaySFX
ret
.clear
call ClearBGPalettes
ret
.done
ld hl, wJumptableIndex
set 7, [hl]
ret
2018-06-24 07:09:41 -07:00
Intro_Scene24_ApplyPaletteFade:
2018-01-01 06:08:21 -08:00
; load the (a)th palette from .FadePals to all wBGPals2
2015-12-02 14:59:05 -08:00
ld hl, .FadePals
2015-11-19 15:07:20 -08:00
add l
ld l, a
ld a, $0
adc h
ld h, a
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wBGPals2)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2018-01-01 06:08:21 -08:00
ld de, wBGPals2
2015-12-02 14:59:05 -08:00
ld b, 8 ; number of BG pals
.loop1
2015-11-19 15:07:20 -08:00
push hl
2018-01-01 05:47:16 -08:00
ld c, 1 palettes
2015-12-02 14:59:05 -08:00
.loop2
2015-11-19 15:07:20 -08:00
ld a, [hli]
ld [de], a
inc de
dec c
2015-12-02 14:59:05 -08:00
jr nz, .loop2
2015-11-19 15:07:20 -08:00
pop hl
dec b
2015-12-02 14:59:05 -08:00
jr nz, .loop1
2015-11-19 15:07:20 -08:00
pop af
ld [rSVBK], a
ld a, $1
ld [hCGBPalUpdate], a
ret
2018-06-24 07:09:41 -07:00
.FadePals:
INCLUDE "gfx/intro/fade.pal"
2015-11-19 15:07:20 -08:00
2018-06-24 07:09:41 -07:00
CrystalIntro_InitUnownAnim:
2015-11-19 15:07:20 -08:00
push de
ld a, SPRITE_ANIM_INDEX_INTRO_UNOWN
2015-11-19 15:07:20 -08:00
call _InitSpriteAnimStruct
2015-12-02 14:59:05 -08:00
ld hl, SPRITEANIMSTRUCT_0C
2015-11-19 15:07:20 -08:00
add hl, bc
ld [hl], $8
ld a, SPRITE_ANIM_FRAMESET_INTRO_UNOWN_4
2015-12-05 12:38:25 -08:00
call ReinitSpriteAnimFrame
2015-11-19 15:07:20 -08:00
pop de
push de
ld a, SPRITE_ANIM_INDEX_INTRO_UNOWN
2015-11-19 15:07:20 -08:00
call _InitSpriteAnimStruct
2015-12-02 14:59:05 -08:00
ld hl, SPRITEANIMSTRUCT_0C
2015-11-19 15:07:20 -08:00
add hl, bc
ld [hl], $18
ld a, SPRITE_ANIM_FRAMESET_INTRO_UNOWN_3
2015-12-05 12:38:25 -08:00
call ReinitSpriteAnimFrame
2015-11-19 15:07:20 -08:00
pop de
push de
ld a, SPRITE_ANIM_INDEX_INTRO_UNOWN
2015-11-19 15:07:20 -08:00
call _InitSpriteAnimStruct
2015-12-02 14:59:05 -08:00
ld hl, SPRITEANIMSTRUCT_0C
2015-11-19 15:07:20 -08:00
add hl, bc
ld [hl], $28
ld a, SPRITE_ANIM_FRAMESET_INTRO_UNOWN_1
2015-12-05 12:38:25 -08:00
call ReinitSpriteAnimFrame
2015-11-19 15:07:20 -08:00
pop de
ld a, SPRITE_ANIM_INDEX_INTRO_UNOWN
2015-11-19 15:07:20 -08:00
call _InitSpriteAnimStruct
2015-12-02 14:59:05 -08:00
ld hl, SPRITEANIMSTRUCT_0C
2015-11-19 15:07:20 -08:00
add hl, bc
ld [hl], $38
ld a, SPRITE_ANIM_FRAMESET_INTRO_UNOWN_2
2015-12-05 12:38:25 -08:00
call ReinitSpriteAnimFrame
2015-11-19 15:07:20 -08:00
ret
2018-06-24 07:09:41 -07:00
CrystalIntro_UnownFade:
2015-11-19 15:07:20 -08:00
add a
add a
add a
2015-11-19 15:07:20 -08:00
ld e, a
ld d, $0
2018-01-01 06:08:21 -08:00
ld hl, wBGPals2
2015-11-19 15:07:20 -08:00
add hl, de
inc hl
inc hl
2018-01-11 12:36:11 -08:00
ld a, [wIntroSceneTimer]
2018-01-11 09:00:01 -08:00
and %111111
cp %011111
2015-12-02 14:59:05 -08:00
jr z, .okay
jr c, .okay
2015-11-19 15:07:20 -08:00
ld c, a
2018-01-11 09:00:01 -08:00
ld a, %111111
2015-11-19 15:07:20 -08:00
sub c
2015-12-02 14:59:05 -08:00
.okay
2015-11-19 15:07:20 -08:00
ld c, a
ld b, $0
ld a, [rSVBK]
push af
ld a, BANK(wBGPals2)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
push hl
push bc
2018-01-01 06:08:21 -08:00
ld hl, wBGPals2
2017-12-15 19:36:33 -08:00
ld bc, 8 palettes
2015-11-19 15:07:20 -08:00
xor a
call ByteFill
pop bc
pop hl
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
push hl
2015-12-02 14:59:05 -08:00
ld hl, .BWFade
2015-11-19 15:07:20 -08:00
add hl, bc
add hl, bc
2015-11-19 15:07:20 -08:00
ld a, [hli]
ld d, [hl]
ld e, a
pop hl
ld a, e
ld [hli], a
ld a, d
ld [hli], a
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
push hl
2015-12-02 14:59:05 -08:00
ld hl, .BlackLBlueFade
2015-11-19 15:07:20 -08:00
add hl, bc
add hl, bc
2015-11-19 15:07:20 -08:00
ld a, [hli]
ld d, [hl]
ld e, a
pop hl
ld a, e
ld [hli], a
ld a, d
ld [hli], a
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
push hl
2015-12-02 14:59:05 -08:00
ld hl, .BlackBlueFade
2015-11-19 15:07:20 -08:00
add hl, bc
add hl, bc
2015-11-19 15:07:20 -08:00
ld a, [hli]
ld d, [hl]
ld e, a
pop hl
ld a, e
ld [hli], a
ld a, d
ld [hli], a
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
pop af
ld [rSVBK], a
ld a, $1
ld [hCGBPalUpdate], a
ret
2018-06-24 07:09:41 -07:00
.BWFade:
2015-11-19 15:07:20 -08:00
; Fade between black and white.
hue = 0
rept 32
RGB hue, hue, hue
hue = hue + 1
endr
2018-06-24 07:09:41 -07:00
.BlackLBlueFade:
2015-11-19 15:07:20 -08:00
; Fade between black and light blue.
hue = 0
rept 32
RGB 0, hue / 2, hue
hue = hue + 1
endr
2018-06-24 07:09:41 -07:00
.BlackBlueFade:
2015-11-19 15:07:20 -08:00
; Fade between black and blue.
hue = 0
rept 32
RGB 0, 0, hue
hue = hue + 1
endr
2018-06-24 07:09:41 -07:00
Intro_Scene20_AppearUnown:
2015-12-02 14:59:05 -08:00
; Spawn the palette for the nth Unown
2015-11-19 15:07:20 -08:00
and a
2015-12-02 14:59:05 -08:00
jr nz, .load_pal_2
ld hl, .pal1
jr .got_pointer
.load_pal_2
ld hl, .pal2
.got_pointer
2018-01-11 12:36:11 -08:00
ld a, [wIntroSceneTimer]
2015-11-19 15:07:20 -08:00
and $7
add a
add a
add a
2015-11-19 15:07:20 -08:00
ld c, a
ld a, [rSVBK]
push af
ld a, BANK(wBGPals2)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
push bc
2018-01-01 06:08:21 -08:00
ld de, wBGPals2
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
ld a, c
add e
ld e, a
ld a, $0
adc d
ld d, a
2015-12-02 14:59:05 -08:00
2018-01-01 05:47:16 -08:00
ld bc, 1 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
pop bc
2015-12-02 14:59:05 -08:00
2018-01-01 06:08:21 -08:00
ld de, wBGPals1
2015-11-19 15:07:20 -08:00
ld a, c
add e
ld e, a
ld a, $0
adc d
ld d, a
2015-12-02 14:59:05 -08:00
2018-01-01 05:47:16 -08:00
ld bc, 1 palettes
2015-11-19 15:07:20 -08:00
call CopyBytes
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
pop af
ld [rSVBK], a
ld a, $1
ld [hCGBPalUpdate], a
ret
2018-06-24 07:09:41 -07:00
.pal1
2015-11-19 15:07:20 -08:00
RGB 24, 12, 09
RGB 31, 31, 31
RGB 12, 00, 31
RGB 00, 00, 00
2015-12-02 14:59:05 -08:00
2018-06-24 07:09:41 -07:00
.pal2
2015-11-19 15:07:20 -08:00
RGB 24, 12, 09
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
2015-12-02 14:59:05 -08:00
2018-06-24 07:09:41 -07:00
Intro_FadeUnownWordPals:
2015-11-19 15:07:20 -08:00
add a
add a
add a
2015-11-19 15:07:20 -08:00
ld e, a
ld d, $0
2018-01-01 06:08:21 -08:00
ld hl, wBGPals2
2015-11-19 15:07:20 -08:00
add hl, de
rept 4
inc hl
endr
2018-01-11 12:36:11 -08:00
ld a, [wIntroSceneTimer]
2015-11-19 15:07:20 -08:00
add a
ld c, a
ld b, $0
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wBGPals2)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
push hl
2015-12-02 14:59:05 -08:00
ld hl, .FastFadePalettes
2015-11-19 15:07:20 -08:00
add hl, bc
ld a, [hli]
ld d, [hl]
ld e, a
pop hl
ld a, e
ld [hli], a
ld a, d
ld [hli], a
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
push hl
2015-12-02 14:59:05 -08:00
ld hl, .SlowFadePalettes
2015-11-19 15:07:20 -08:00
add hl, bc
ld a, [hli]
ld d, [hl]
ld e, a
pop hl
ld a, e
ld [hli], a
ld a, d
ld [hli], a
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
pop af
ld [rSVBK], a
ld a, $1
ld [hCGBPalUpdate], a
ret
2018-06-24 07:09:41 -07:00
.FastFadePalettes:
2015-11-19 15:07:20 -08:00
hue = 31
rept 8
RGB hue, hue, hue
hue = hue + -1
RGB hue, hue, hue
hue = hue + -2
endr
2018-06-24 07:09:41 -07:00
.SlowFadePalettes:
2015-11-19 15:07:20 -08:00
hue = 31
rept 16
RGB hue, hue, hue
hue = hue + -1
endr
2018-06-24 07:09:41 -07:00
Intro_LoadTilemap:
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wDecompressScratch)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2015-12-02 14:59:05 -08:00
ld hl, wDecompressScratch
2015-11-19 15:07:20 -08:00
decoord 0, 0
ld b, SCREEN_HEIGHT
2015-12-02 14:59:05 -08:00
.row
2015-11-19 15:07:20 -08:00
ld c, SCREEN_WIDTH
2015-12-02 14:59:05 -08:00
.col
2015-11-19 15:07:20 -08:00
ld a, [hli]
ld [de], a
inc de
dec c
2015-12-02 14:59:05 -08:00
jr nz, .col
2018-01-22 16:29:22 -08:00
ld a, BG_MAP_WIDTH - SCREEN_WIDTH
2015-11-19 15:07:20 -08:00
add l
ld l, a
2018-01-22 16:29:22 -08:00
ld a, 0
2015-11-19 15:07:20 -08:00
adc h
ld h, a
dec b
2015-12-02 14:59:05 -08:00
jr nz, .row
2015-11-19 15:07:20 -08:00
pop af
ld [rSVBK], a
ret
2018-06-24 07:09:41 -07:00
Intro_Scene16_AnimateSuicune:
2015-12-02 14:59:05 -08:00
ld a, [wIntroSceneFrameCounter]
2015-11-19 15:07:20 -08:00
and $3
2015-12-02 14:59:05 -08:00
jr z, Intro_ColoredSuicuneFrameSwap
2015-11-19 15:07:20 -08:00
cp $3
2015-12-02 14:59:05 -08:00
jr z, .PrepareForSuicuneSwap
2015-11-19 15:07:20 -08:00
ret
2015-12-02 14:59:05 -08:00
.PrepareForSuicuneSwap:
2015-11-19 15:07:20 -08:00
xor a
ld [hBGMapMode], a
ret
2018-06-24 07:09:41 -07:00
Intro_ColoredSuicuneFrameSwap:
2015-11-19 15:07:20 -08:00
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
2015-12-02 14:59:05 -08:00
.loop
2015-11-19 15:07:20 -08:00
ld a, [hl]
and a
2015-12-02 14:59:05 -08:00
jr z, .skip
2015-11-19 15:07:20 -08:00
cp $80
2015-12-02 14:59:05 -08:00
jr nc, .skip
2015-11-19 15:07:20 -08:00
xor $8
ld [hl], a
2015-12-02 14:59:05 -08:00
.skip
2015-11-19 15:07:20 -08:00
inc hl
dec bc
ld a, c
or b
2015-12-02 14:59:05 -08:00
jr nz, .loop
2015-11-19 15:07:20 -08:00
ld a, $1
ld [hBGMapMode], a
ret
2018-06-24 07:09:41 -07:00
Intro_RustleGrass:
2015-12-02 14:59:05 -08:00
ld a, [wIntroSceneFrameCounter]
cp 36
2015-11-19 15:07:20 -08:00
ret nc
and $c
srl a
ld e, a
ld d, $0
2015-12-02 14:59:05 -08:00
ld hl, .RustlingGrassPointers
2015-11-19 15:07:20 -08:00
add hl, de
ld a, [hli]
2018-01-23 14:39:09 -08:00
ld [wRequested2bppSource], a
2015-11-19 15:07:20 -08:00
ld a, [hli]
2018-01-23 14:39:09 -08:00
ld [wRequested2bppSource + 1], a
2017-12-28 04:32:33 -08:00
ld a, LOW(vTiles2 tile $09)
2018-01-23 14:39:09 -08:00
ld [wRequested2bppDest], a
2017-12-28 04:32:33 -08:00
ld a, HIGH(vTiles2 tile $09)
2018-01-23 14:39:09 -08:00
ld [wRequested2bppDest + 1], a
2015-12-02 14:59:05 -08:00
ld a, 4
2018-01-23 14:39:09 -08:00
ld [wRequested2bppSize], a
2015-11-19 15:07:20 -08:00
ret
2018-06-24 07:09:41 -07:00
.RustlingGrassPointers:
2015-12-02 14:59:05 -08:00
dw IntroGrass1GFX
dw IntroGrass2GFX
dw IntroGrass3GFX
dw IntroGrass2GFX
2015-11-19 15:07:20 -08:00
2018-06-24 07:09:41 -07:00
Intro_SetCGBPalUpdate:
2015-11-19 15:07:20 -08:00
ld a, $1
ld [hCGBPalUpdate], a
ret
2018-06-24 07:09:41 -07:00
Intro_ClearBGPals:
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wBGPals2)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2015-12-02 14:59:05 -08:00
2018-01-01 06:08:21 -08:00
ld hl, wBGPals2
2018-01-01 05:47:16 -08:00
ld bc, 16 palettes
2015-11-19 15:07:20 -08:00
xor a
call ByteFill
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
pop af
ld [rSVBK], a
ld a, $1
ld [hCGBPalUpdate], a
call DelayFrame
call DelayFrame
ret
2018-06-24 07:09:41 -07:00
Intro_DecompressRequest2bpp_128Tiles:
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wDecompressScratch)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
push de
ld de, wDecompressScratch
2015-11-19 15:07:20 -08:00
call Decompress
pop hl
2015-12-02 14:59:05 -08:00
ld de, wDecompressScratch
2015-12-02 14:59:05 -08:00
lb bc, $01, $80
2015-11-19 15:07:20 -08:00
call Request2bpp
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
pop af
ld [rSVBK], a
ret
2018-06-24 07:09:41 -07:00
Intro_DecompressRequest2bpp_255Tiles:
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wDecompressScratch)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
push de
ld de, wDecompressScratch
2015-11-19 15:07:20 -08:00
call Decompress
pop hl
2015-12-02 14:59:05 -08:00
ld de, wDecompressScratch
2015-12-02 14:59:05 -08:00
lb bc, $01, $ff
2015-11-19 15:07:20 -08:00
call Request2bpp
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
pop af
ld [rSVBK], a
ret
2018-06-24 07:09:41 -07:00
Intro_DecompressRequest2bpp_64Tiles:
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
ld a, BANK(wDecompressScratch)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
push de
ld de, wDecompressScratch
2015-11-19 15:07:20 -08:00
call Decompress
pop hl
2015-12-02 14:59:05 -08:00
ld de, wDecompressScratch
2015-12-02 14:59:05 -08:00
lb bc, $01, $40
2015-11-19 15:07:20 -08:00
call Request2bpp
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
pop af
ld [rSVBK], a
ret
2018-06-24 07:09:41 -07:00
Intro_ResetLYOverrides:
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
2018-01-23 14:39:09 -08:00
ld a, BANK(wLYOverrides)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2015-12-02 14:59:05 -08:00
2018-01-23 14:39:09 -08:00
ld hl, wLYOverrides
ld bc, wLYOverridesEnd - wLYOverrides
2015-11-19 15:07:20 -08:00
xor a
call ByteFill
2015-12-02 14:59:05 -08:00
2015-11-19 15:07:20 -08:00
pop af
ld [rSVBK], a
2016-06-13 19:53:33 -07:00
ld a, rSCX - $ff00
ld [hLCDCPointer], a
2015-11-19 15:07:20 -08:00
ret
2018-06-24 07:09:41 -07:00
Intro_PerspectiveScrollBG:
2015-11-19 15:07:20 -08:00
ld a, [rSVBK]
push af
2018-01-23 14:39:09 -08:00
ld a, BANK(wLYOverrides)
2015-11-19 15:07:20 -08:00
ld [rSVBK], a
2015-12-02 14:59:05 -08:00
; Scroll the grass every frame.
; Scroll the trees every other frame and at half speed.
; This creates an illusion of perspective.
ld a, [wIntroSceneFrameCounter]
2015-11-19 15:07:20 -08:00
and $1
2015-12-02 14:59:05 -08:00
jr z, .skip
; trees in the back
2018-01-23 14:39:09 -08:00
ld hl, wLYOverrides
2015-11-19 15:07:20 -08:00
ld a, [hl]
inc a
ld bc, $5f
call ByteFill
2015-12-02 14:59:05 -08:00
.skip
; grass in the front
2018-01-23 14:39:09 -08:00
ld hl, wLYOverrides + $5f
2015-11-19 15:07:20 -08:00
ld a, [hl]
inc a
inc a
2015-11-19 15:07:20 -08:00
ld bc, $31
call ByteFill
2018-01-23 14:39:09 -08:00
ld a, [wLYOverrides + 0]
2015-11-19 15:07:20 -08:00
ld [hSCX], a
pop af
ld [rSVBK], a
ret
2018-06-24 07:09:41 -07:00
IntroSuicuneRunGFX:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/suicune_run.2bpp.lz"
2018-06-24 07:09:41 -07:00
IntroPichuWooperGFX:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/pichu_wooper.2bpp.lz"
2018-06-24 07:09:41 -07:00
IntroBackgroundGFX:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/background.2bpp.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap004:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/004.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap003:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/003.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroPalette1:
INCLUDE "gfx/intro/intro_1.pal"
2015-11-19 15:07:20 -08:00
2018-06-24 07:09:41 -07:00
IntroUnownsGFX:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/unowns.2bpp.lz"
2018-06-24 07:09:41 -07:00
IntroPulseGFX:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/pulse.2bpp.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap002:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/002.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap001:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/001.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap006:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/006.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap005:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/005.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap008:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/008.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap007:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/007.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroPalette2:
INCLUDE "gfx/intro/intro_2.pal"
2015-11-19 15:07:20 -08:00
2018-06-24 07:09:41 -07:00
IntroCrystalUnownsGFX:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/crystal_unowns.2bpp.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap017:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/017.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap015:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/015.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroPalette3:
INCLUDE "gfx/intro/intro_3.pal"
2015-11-19 15:07:20 -08:00
2018-06-24 07:09:41 -07:00
IntroSuicuneCloseGFX:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/suicune_close.2bpp.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap012:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/012.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap011:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/011.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroPalette4:
INCLUDE "gfx/intro/intro_4.pal"
2015-11-19 15:07:20 -08:00
2018-06-24 07:09:41 -07:00
IntroSuicuneJumpGFX:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/suicune_jump.2bpp.lz"
2018-06-24 07:09:41 -07:00
IntroSuicuneBackGFX:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/suicune_back.2bpp.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap010:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/010.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap009:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/009.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap014:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/014.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroTilemap013:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/013.tilemap.lz"
2018-06-24 07:09:41 -07:00
IntroPalette5:
INCLUDE "gfx/intro/intro_5.pal"
2015-11-19 15:07:20 -08:00
2018-06-24 07:09:41 -07:00
IntroUnownBackGFX:
2015-11-19 15:07:20 -08:00
INCBIN "gfx/intro/unown_back.2bpp.lz"
2018-06-24 07:09:41 -07:00
IntroGrass1GFX:
2015-12-02 14:59:05 -08:00
INCBIN "gfx/intro/grass1.2bpp"
2018-06-24 07:09:41 -07:00
IntroGrass2GFX:
2015-12-02 14:59:05 -08:00
INCBIN "gfx/intro/grass2.2bpp"
2018-06-24 07:09:41 -07:00
IntroGrass3GFX:
2015-12-02 14:59:05 -08:00
INCBIN "gfx/intro/grass3.2bpp"
2018-06-24 07:09:41 -07:00
IntroGrass4GFX:
2015-12-02 14:59:05 -08:00
INCBIN "gfx/intro/grass4.2bpp"