mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-01-23 09:16:20 -08:00
Document splash screen animation
This commit is contained in:
parent
2b2c1ac649
commit
733664b18f
@ -221,7 +221,7 @@ DoAnimFrame:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.GameFreakLogo:
|
.GameFreakLogo:
|
||||||
callfar PlaceGameFreakLogo
|
callfar GameFreakLogoSpriteAnim
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.GSIntroStar
|
.GSIntroStar
|
||||||
|
@ -969,7 +969,7 @@ Intro_PlacePlayerSprite:
|
|||||||
NUM_TITLESCREENOPTIONS EQU const_value
|
NUM_TITLESCREENOPTIONS EQU const_value
|
||||||
|
|
||||||
IntroSequence:
|
IntroSequence:
|
||||||
callfar Copyright_GameFreakPresents
|
callfar SplashScreen
|
||||||
jr c, StartTitleScreen
|
jr c, StartTitleScreen
|
||||||
farcall CrystalIntro
|
farcall CrystalIntro
|
||||||
|
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
Copyright_GameFreakPresents:
|
SplashScreen:
|
||||||
; Play the copyright screen and GameFreak Presents sequence.
|
; Play the copyright screen and GameFreak Presents sequence.
|
||||||
; Return carry if user cancels animation by pressing a button.
|
; Return carry if user cancels animation by pressing a button.
|
||||||
|
|
||||||
|
; Reinitialize everything
|
||||||
ld de, MUSIC_NONE
|
ld de, MUSIC_NONE
|
||||||
call PlayMusic
|
call PlayMusic
|
||||||
call ClearBGPalettes
|
call ClearBGPalettes
|
||||||
@ -21,13 +22,19 @@ Copyright_GameFreakPresents:
|
|||||||
call SetPalettes
|
call SetPalettes
|
||||||
ld c, 10
|
ld c, 10
|
||||||
call DelayFrames
|
call DelayFrames
|
||||||
|
|
||||||
|
; Draw copyright screen
|
||||||
callfar Copyright
|
callfar Copyright
|
||||||
call WaitBGMap
|
call WaitBGMap
|
||||||
ld c, 100
|
ld c, 100
|
||||||
call DelayFrames
|
call DelayFrames
|
||||||
call ClearTilemap
|
call ClearTilemap
|
||||||
|
|
||||||
|
; Stop here if not in GBC mode
|
||||||
farcall GBCOnlyScreen
|
farcall GBCOnlyScreen
|
||||||
call .GetGFLogoGFX
|
|
||||||
|
; Play GameFreak logo animation
|
||||||
|
call GameFreakPresentsInit
|
||||||
.joy_loop
|
.joy_loop
|
||||||
call JoyTextDelay
|
call JoyTextDelay
|
||||||
ldh a, [hJoyLast]
|
ldh a, [hJoyLast]
|
||||||
@ -36,22 +43,22 @@ Copyright_GameFreakPresents:
|
|||||||
ld a, [wJumptableIndex]
|
ld a, [wJumptableIndex]
|
||||||
bit 7, a
|
bit 7, a
|
||||||
jr nz, .finish
|
jr nz, .finish
|
||||||
call PlaceGameFreakPresents
|
call GameFreakPresentsScene
|
||||||
farcall PlaySpriteAnimations
|
farcall PlaySpriteAnimations
|
||||||
call DelayFrame
|
call DelayFrame
|
||||||
jr .joy_loop
|
jr .joy_loop
|
||||||
|
|
||||||
.pressed_button
|
.pressed_button
|
||||||
call .StopGamefreakAnim
|
call GameFreakPresentsEnd
|
||||||
scf
|
scf
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.finish
|
.finish
|
||||||
call .StopGamefreakAnim
|
call GameFreakPresentsEnd
|
||||||
and a
|
and a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.GetGFLogoGFX:
|
GameFreakPresentsInit:
|
||||||
ld de, GameFreakLogoGFX
|
ld de, GameFreakLogoGFX
|
||||||
ld hl, vTiles2
|
ld hl, vTiles2
|
||||||
lb bc, BANK(GameFreakLogoGFX), 28
|
lb bc, BANK(GameFreakLogoGFX), 28
|
||||||
@ -86,28 +93,28 @@ Copyright_GameFreakPresents:
|
|||||||
call InitSpriteAnimStruct
|
call InitSpriteAnimStruct
|
||||||
ld hl, SPRITEANIMSTRUCT_YOFFSET
|
ld hl, SPRITEANIMSTRUCT_YOFFSET
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], $a0
|
ld [hl], 160
|
||||||
ld hl, SPRITEANIMSTRUCT_0C
|
ld hl, SPRITEANIMSTRUCT_0C
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], $60
|
ld [hl], 96
|
||||||
ld hl, SPRITEANIMSTRUCT_0D
|
ld hl, SPRITEANIMSTRUCT_0D
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], $30
|
ld [hl], 48
|
||||||
xor a
|
xor a
|
||||||
ld [wJumptableIndex], a
|
ld [wJumptableIndex], a
|
||||||
ld [wIntroSceneFrameCounter], a
|
ld [wIntroSceneFrameCounter], a
|
||||||
ld [wIntroSceneTimer], a
|
ld [wIntroSceneTimer], a
|
||||||
ldh [hSCX], a
|
ldh [hSCX], a
|
||||||
ldh [hSCY], a
|
ldh [hSCY], a
|
||||||
ld a, $1
|
ld a, 1
|
||||||
ldh [hBGMapMode], a
|
ldh [hBGMapMode], a
|
||||||
ld a, $90
|
ld a, 144
|
||||||
ldh [hWY], a
|
ldh [hWY], a
|
||||||
lb de, %11100100, %11100100
|
lb de, %11100100, %11100100
|
||||||
call DmgToCgbObjPals
|
call DmgToCgbObjPals
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.StopGamefreakAnim:
|
GameFreakPresentsEnd:
|
||||||
farcall ClearSpriteAnims
|
farcall ClearSpriteAnims
|
||||||
call ClearTilemap
|
call ClearTilemap
|
||||||
call ClearSprites
|
call ClearSprites
|
||||||
@ -115,27 +122,27 @@ Copyright_GameFreakPresents:
|
|||||||
call DelayFrames
|
call DelayFrames
|
||||||
ret
|
ret
|
||||||
|
|
||||||
PlaceGameFreakPresents:
|
GameFreakPresentsScene:
|
||||||
jumptable .scenes, wJumptableIndex
|
jumptable .scenes, wJumptableIndex
|
||||||
|
|
||||||
.scenes
|
.scenes
|
||||||
dw GameFreakPresentsScene0
|
dw GameFreakPresents_WaitSpriteAnim
|
||||||
dw GameFreakPresentsScene1
|
dw GameFreakPresents_PlaceGameFreak
|
||||||
dw GameFreakPresentsScene2
|
dw GameFreakPresents_PlacePresents
|
||||||
dw GameFreakPresentsScene3
|
dw GameFreakPresents_DelayEnd
|
||||||
|
|
||||||
PlaceGameFreakPresents_NextScene:
|
GameFreakPresents_NextScene:
|
||||||
ld hl, wJumptableIndex
|
ld hl, wJumptableIndex
|
||||||
inc [hl]
|
inc [hl]
|
||||||
ret
|
ret
|
||||||
|
|
||||||
GameFreakPresentsScene0:
|
GameFreakPresents_WaitSpriteAnim:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
GameFreakPresentsScene1:
|
GameFreakPresents_PlaceGameFreak:
|
||||||
ld hl, wIntroSceneTimer
|
ld hl, wIntroSceneTimer
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
cp $20
|
cp 32
|
||||||
jr nc, .PlaceGameFreak
|
jr nc, .PlaceGameFreak
|
||||||
inc [hl]
|
inc [hl]
|
||||||
ret
|
ret
|
||||||
@ -146,7 +153,7 @@ GameFreakPresentsScene1:
|
|||||||
decoord 5, 10
|
decoord 5, 10
|
||||||
ld bc, .end - .GAME_FREAK
|
ld bc, .end - .GAME_FREAK
|
||||||
call CopyBytes
|
call CopyBytes
|
||||||
call PlaceGameFreakPresents_NextScene
|
call GameFreakPresents_NextScene
|
||||||
ld de, SFX_GAME_FREAK_PRESENTS
|
ld de, SFX_GAME_FREAK_PRESENTS
|
||||||
call PlaySFX
|
call PlaySFX
|
||||||
ret
|
ret
|
||||||
@ -157,10 +164,10 @@ GameFreakPresentsScene1:
|
|||||||
.end
|
.end
|
||||||
db "@"
|
db "@"
|
||||||
|
|
||||||
GameFreakPresentsScene2:
|
GameFreakPresents_PlacePresents:
|
||||||
ld hl, wIntroSceneTimer
|
ld hl, wIntroSceneTimer
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
cp $40
|
cp 64
|
||||||
jr nc, .place_presents
|
jr nc, .place_presents
|
||||||
inc [hl]
|
inc [hl]
|
||||||
ret
|
ret
|
||||||
@ -171,7 +178,7 @@ GameFreakPresentsScene2:
|
|||||||
decoord 7, 11
|
decoord 7, 11
|
||||||
ld bc, .end - .presents
|
ld bc, .end - .presents
|
||||||
call CopyBytes
|
call CopyBytes
|
||||||
call PlaceGameFreakPresents_NextScene
|
call GameFreakPresents_NextScene
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.presents
|
.presents
|
||||||
@ -179,10 +186,10 @@ GameFreakPresentsScene2:
|
|||||||
.end
|
.end
|
||||||
db "@"
|
db "@"
|
||||||
|
|
||||||
GameFreakPresentsScene3:
|
GameFreakPresents_DelayEnd:
|
||||||
ld hl, wIntroSceneTimer
|
ld hl, wIntroSceneTimer
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
cp $80
|
cp 128
|
||||||
jr nc, .finish
|
jr nc, .finish
|
||||||
inc [hl]
|
inc [hl]
|
||||||
ret
|
ret
|
||||||
@ -192,7 +199,7 @@ GameFreakPresentsScene3:
|
|||||||
set 7, [hl]
|
set 7, [hl]
|
||||||
ret
|
ret
|
||||||
|
|
||||||
PlaceGameFreakLogo:
|
GameFreakLogoSpriteAnim:
|
||||||
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
|
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld e, [hl]
|
ld e, [hl]
|
||||||
@ -206,95 +213,110 @@ PlaceGameFreakLogo:
|
|||||||
jp hl
|
jp hl
|
||||||
|
|
||||||
.scenes:
|
.scenes:
|
||||||
dw GameFreakLogoScene1
|
dw GameFreakLogo_Init
|
||||||
dw GameFreakLogoScene2
|
dw GameFreakLogo_Bounce
|
||||||
dw GameFreakLogoScene3
|
dw GameFreakLogo_Ditto
|
||||||
dw GameFreakLogoScene4
|
dw GameFreakLogo_Transform
|
||||||
dw GameFreakLogoScene5
|
dw GameFreakLogo_Done
|
||||||
|
|
||||||
GameFreakLogoScene1:
|
GameFreakLogo_Init:
|
||||||
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
|
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
|
||||||
add hl, bc
|
add hl, bc
|
||||||
inc [hl]
|
inc [hl]
|
||||||
ret
|
ret
|
||||||
|
|
||||||
GameFreakLogoScene2:
|
GameFreakLogo_Bounce:
|
||||||
ld hl, SPRITEANIMSTRUCT_0C
|
; Bounce with a height of 0C, 0C / 48 times.
|
||||||
|
; By default, this is twice, with a height of 96 pixels and 48 pixels.
|
||||||
|
; Sine offset starts at 48 (32+32/2, or pi+pi/2), so it starts at the maximum
|
||||||
|
; value of the sine wave (i.e. the top of the screen).
|
||||||
|
|
||||||
|
ld hl, SPRITEANIMSTRUCT_0C ; jump height
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
and a
|
and a
|
||||||
jr z, .asm_e4747
|
jr z, .done
|
||||||
|
|
||||||
|
; Load the sine offset, make sure it doesn't reach the negative part of the wave
|
||||||
ld d, a
|
ld d, a
|
||||||
ld hl, SPRITEANIMSTRUCT_0D
|
ld hl, SPRITEANIMSTRUCT_0D ; sine offset
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
and %111111
|
and $3f ; full circle = 2*pi = 2*32
|
||||||
cp %100000
|
cp 32
|
||||||
jr nc, .asm_e4723
|
jr nc, .no_negative
|
||||||
add %100000
|
add 32
|
||||||
.asm_e4723
|
.no_negative
|
||||||
|
|
||||||
ld e, a
|
ld e, a
|
||||||
farcall BattleAnim_Sine_e
|
farcall BattleAnim_Sine_e ; e = d * sin(e * pi/32)
|
||||||
ld hl, SPRITEANIMSTRUCT_YOFFSET
|
ld hl, SPRITEANIMSTRUCT_YOFFSET
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], e
|
ld [hl], e
|
||||||
ld hl, SPRITEANIMSTRUCT_0D
|
|
||||||
|
; Decrement the sine offset
|
||||||
|
ld hl, SPRITEANIMSTRUCT_0D ; sine offset
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
dec [hl]
|
dec [hl]
|
||||||
and $1f
|
and $1f ; a%32 == 0
|
||||||
ret nz
|
ret nz
|
||||||
ld hl, SPRITEANIMSTRUCT_0C
|
|
||||||
|
; If the ditto's reached the ground, decrement the jump height and play the sfx
|
||||||
|
ld hl, SPRITEANIMSTRUCT_0C ; jump height
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
sub $30
|
sub 48
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
ld de, SFX_DITTO_BOUNCE
|
ld de, SFX_DITTO_BOUNCE
|
||||||
call PlaySFX
|
call PlaySFX
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.asm_e4747
|
.done
|
||||||
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
|
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
|
||||||
add hl, bc
|
add hl, bc
|
||||||
inc [hl]
|
inc [hl]
|
||||||
ld hl, SPRITEANIMSTRUCT_0D
|
ld hl, SPRITEANIMSTRUCT_0D
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], $0
|
ld [hl], 0
|
||||||
ld de, SFX_DITTO_POP_UP
|
ld de, SFX_DITTO_POP_UP
|
||||||
call PlaySFX
|
call PlaySFX
|
||||||
ret
|
ret
|
||||||
|
|
||||||
GameFreakLogoScene3:
|
GameFreakLogo_Ditto:
|
||||||
ld hl, SPRITEANIMSTRUCT_0D
|
; Wait a little, then start transforming
|
||||||
|
ld hl, SPRITEANIMSTRUCT_0D ; frame count
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
cp $20
|
cp 32
|
||||||
jr nc, .asm_e4764
|
jr nc, .start_transform
|
||||||
inc [hl]
|
inc [hl]
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.asm_e4764
|
.start_transform
|
||||||
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
|
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
|
||||||
add hl, bc
|
add hl, bc
|
||||||
inc [hl]
|
inc [hl]
|
||||||
ld hl, SPRITEANIMSTRUCT_0D
|
ld hl, SPRITEANIMSTRUCT_0D
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], $0
|
ld [hl], 0
|
||||||
ld de, SFX_DITTO_TRANSFORM
|
ld de, SFX_DITTO_TRANSFORM
|
||||||
call PlaySFX
|
call PlaySFX
|
||||||
ret
|
ret
|
||||||
|
|
||||||
GameFreakLogoScene4:
|
GameFreakLogo_Transform:
|
||||||
ld hl, SPRITEANIMSTRUCT_0D
|
ld hl, SPRITEANIMSTRUCT_0D ; frame count
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
cp $40
|
cp 64
|
||||||
jr z, .asm_e47a3
|
jr z, .done
|
||||||
inc [hl]
|
inc [hl]
|
||||||
|
|
||||||
|
; Fade ditto's palettes while it's transforming
|
||||||
srl a
|
srl a
|
||||||
srl a
|
srl a
|
||||||
ld e, a
|
ld e, a
|
||||||
ld d, $0
|
ld d, 0
|
||||||
ld hl, GameFreakDittoPaletteFade
|
ld hl, GameFreakDittoPaletteFade
|
||||||
add hl, de
|
add hl, de
|
||||||
add hl, de
|
add hl, de
|
||||||
@ -312,12 +334,12 @@ GameFreakLogoScene4:
|
|||||||
ldh [hCGBPalUpdate], a
|
ldh [hCGBPalUpdate], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.asm_e47a3
|
.done
|
||||||
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
|
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
|
||||||
add hl, bc
|
add hl, bc
|
||||||
inc [hl]
|
inc [hl]
|
||||||
call PlaceGameFreakPresents_NextScene
|
call GameFreakPresents_NextScene
|
||||||
GameFreakLogoScene5:
|
GameFreakLogo_Done:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
GameFreakDittoPaletteFade:
|
GameFreakDittoPaletteFade:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user