ref: 407b813250a768a85c619e06c3f1f010575f31c4
parent: 48da6c53be768e85b8ba47430e2fc0f3dd4de61e
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Thu Aug 27 08:25:34 EDT 2020
Separate splash screen, intro, and credits (like pokegold/pokecrystal)
--- a/Makefile
+++ b/Makefile
@@ -114,16 +114,16 @@
gfx/battle/attack_anim_1.2bpp: tools/gfx += --trim-whitespace
gfx/battle/attack_anim_2.2bpp: tools/gfx += --trim-whitespace
-gfx/intro_credits/blue_jigglypuff_1.2bpp: rgbgfx += -h
-gfx/intro_credits/blue_jigglypuff_2.2bpp: rgbgfx += -h
-gfx/intro_credits/blue_jigglypuff_3.2bpp: rgbgfx += -h
-gfx/intro_credits/red_nidorino_1.2bpp: rgbgfx += -h
-gfx/intro_credits/red_nidorino_2.2bpp: rgbgfx += -h
-gfx/intro_credits/red_nidorino_3.2bpp: rgbgfx += -h
-gfx/intro_credits/gengar.2bpp: rgbgfx += -h
-gfx/intro_credits/gengar.2bpp: tools/gfx += --remove-duplicates --preserve=0x19,0x76
+gfx/intro/blue_jigglypuff_1.2bpp: rgbgfx += -h
+gfx/intro/blue_jigglypuff_2.2bpp: rgbgfx += -h
+gfx/intro/blue_jigglypuff_3.2bpp: rgbgfx += -h
+gfx/intro/red_nidorino_1.2bpp: rgbgfx += -h
+gfx/intro/red_nidorino_2.2bpp: rgbgfx += -h
+gfx/intro/red_nidorino_3.2bpp: rgbgfx += -h
+gfx/intro/gengar.2bpp: rgbgfx += -h
+gfx/intro/gengar.2bpp: tools/gfx += --remove-duplicates --preserve=0x19,0x76
-gfx/intro_credits/the_end.2bpp: tools/gfx += --interleave --png=$<
+gfx/credits/the_end.2bpp: tools/gfx += --interleave --png=$<
gfx/slots/red_slots_1.2bpp: tools/gfx += --trim-whitespace
gfx/slots/blue_slots_1.2bpp: tools/gfx += --trim-whitespace
--- a/data/tilemaps.asm
+++ b/data/tilemaps.asm
@@ -31,13 +31,13 @@
INCBIN "gfx/pokemon/slide_down_7x3.tilemap"
GengarIntroTiles1:
- INCBIN "gfx/intro_credits/gengar_1.tilemap"
+ INCBIN "gfx/intro/gengar_1.tilemap"
GengarIntroTiles2:
- INCBIN "gfx/intro_credits/gengar_2.tilemap"
+ INCBIN "gfx/intro/gengar_2.tilemap"
GengarIntroTiles3:
- INCBIN "gfx/intro_credits/gengar_3.tilemap"
+ INCBIN "gfx/intro/gengar_3.tilemap"
GameBoyTiles:
INCBIN "gfx/trade/game_boy.tilemap"
--- a/engine/movie/credits.asm
+++ b/engine/movie/credits.asm
@@ -266,5 +266,5 @@
INCLUDE "data/credits/credits_text.asm"
TheEndGfx:
- INCBIN "gfx/intro_credits/the_end.2bpp"
+ INCBIN "gfx/credits/the_end.2bpp"
TheEndGfxEnd:
--- a/engine/movie/gamefreak.asm
+++ /dev/null
@@ -1,243 +1,0 @@
-LoadShootingStarGraphics:
- ld a, $f9
- ldh [rOBP0], a
- ld a, $a4
- ldh [rOBP1], a
- ld de, AnimationTileset2 tile 3 ; star tile (top left quadrant)
- ld hl, vChars1 tile $20
- lb bc, BANK(AnimationTileset2), 1
- call CopyVideoData
- ld de, AnimationTileset2 tile 19 ; star tile (bottom left quadrant)
- ld hl, vChars1 tile $21
- lb bc, BANK(AnimationTileset2), 1
- call CopyVideoData
- ld de, FallingStar
- ld hl, vChars1 tile $22
- lb bc, BANK(FallingStar), (FallingStarEnd - FallingStar) / $10
- call CopyVideoData
- ld hl, GameFreakLogoOAMData
- ld de, wOAMBuffer + $60
- ld bc, GameFreakLogoOAMDataEnd - GameFreakLogoOAMData
- call CopyData
- ld hl, GameFreakShootingStarOAMData
- ld de, wOAMBuffer
- ld bc, GameFreakShootingStarOAMDataEnd - GameFreakShootingStarOAMData
- jp CopyData
-
-AnimateShootingStar:
- call LoadShootingStarGraphics
- ld a, SFX_SHOOTING_STAR
- call PlaySound
-
-; Move the big star down and left across the screen.
- ld hl, wOAMBuffer
- lb bc, $a0, $4
-.bigStarLoop
- push hl
- push bc
-.bigStarInnerLoop
- ld a, [hl] ; Y
- add 4
- ld [hli], a
- ld a, [hl] ; X
- add -4
- ld [hli], a
- inc hl
- inc hl
- dec c
- jr nz, .bigStarInnerLoop
- ld c, 1
- call CheckForUserInterruption
- pop bc
- pop hl
- ret c
- ld a, [hl]
- cp 80
- jr nz, .next
- jr .bigStarLoop
-.next
- cp b
- jr nz, .bigStarLoop
-
-; Clear big star OAM.
- ld hl, wOAMBuffer
- ld c, 4
- ld de, 4
-.clearOAMLoop
- ld [hl], 160
- add hl, de
- dec c
- jr nz, .clearOAMLoop
-
-; Make Gamefreak logo flash.
- ld b, 3
-.flashLogoLoop
- ld hl, rOBP0
- rrc [hl]
- rrc [hl]
- ld c, 10
- call CheckForUserInterruption
- ret c
- dec b
- jr nz, .flashLogoLoop
-
-; Copy 24 instances of the small stars OAM data.
-; Note that their coordinates put them off-screen.
- ld de, wOAMBuffer
- ld a, 24
-.initSmallStarsOAMLoop
- push af
- ld hl, SmallStarsOAM
- ld bc, SmallStarsOAMEnd - SmallStarsOAM
- call CopyData
- pop af
- dec a
- jr nz, .initSmallStarsOAMLoop
-
-; Animate the small stars falling from the Gamefreak logo.
- xor a
- ld [wMoveDownSmallStarsOAMCount], a
- ld hl, SmallStarsWaveCoordsPointerTable
- ld c, 6
-.smallStarsLoop
- ld a, [hli]
- ld e, a
- ld a, [hli]
- ld d, a
- push bc
- push hl
- ld hl, wOAMBuffer + $50
- ld c, 4
-.smallStarsInnerLoop ; introduce new wave of 4 small stars OAM entries
- ld a, [de]
- cp $ff
- jr z, .next2
- ld [hli], a ; Y
- inc de
- ld a, [de]
- ld [hli], a ; X
- inc de
- inc hl
- inc hl
- dec c
- jr nz, .smallStarsInnerLoop
- ld a, [wMoveDownSmallStarsOAMCount]
- cp 24
- jr z, .next2
- add 6 ; should be 4, but the extra 2 aren't visible on screen
- ld [wMoveDownSmallStarsOAMCount], a
-.next2
- call MoveDownSmallStars
- push af
-
-; shift the existing OAM entries down to make room for the next wave
- ld hl, wOAMBuffer + $10
- ld de, wOAMBuffer
- ld bc, $50
- call CopyData
-
- pop af
- pop hl
- pop bc
- ret c
- dec c
- jr nz, .smallStarsLoop
- and a
- ret
-
-SmallStarsOAM:
- dbsprite 0, 0, 0, 0, $A2, OAM_BEHIND_BG | OAM_OBP1
-SmallStarsOAMEnd:
-
-SmallStarsWaveCoordsPointerTable:
- dw SmallStarsWave1Coords
- dw SmallStarsWave2Coords
- dw SmallStarsWave3Coords
- dw SmallStarsWave4Coords
- dw SmallStarsEmptyWave
- dw SmallStarsEmptyWave
-
-; The stars that fall from the Gamefreak logo come in 4 waves of 4 OAM entries.
-; These arrays contain the Y and X coordinates of each OAM entry.
-
-SmallStarsWave1Coords:
- db $68, $30
- db $68, $40
- db $68, $58
- db $68, $78
-
-SmallStarsWave2Coords:
- db $68, $38
- db $68, $48
- db $68, $60
- db $68, $70
-
-SmallStarsWave3Coords:
- db $68, $34
- db $68, $4C
- db $68, $54
- db $68, $64
-
-SmallStarsWave4Coords:
- db $68, $3C
- db $68, $5C
- db $68, $6C
- db $68, $74
-
-SmallStarsEmptyWave:
- db $FF
-
-MoveDownSmallStars:
- ld b, 8
-.loop
- ld hl, wOAMBuffer + $5c
- ld a, [wMoveDownSmallStarsOAMCount]
- ld de, -4
- ld c, a
-.innerLoop
- inc [hl] ; Y
- add hl, de
- dec c
- jr nz, .innerLoop
-; Toggle the palette so that the lower star in the small stars tile blinks in
-; and out.
- ldh a, [rOBP1]
- xor %10100000
- ldh [rOBP1], a
-
- ld c, 3
- call CheckForUserInterruption
- ret c
- dec b
- jr nz, .loop
- ret
-
-GameFreakLogoOAMData:
- dbsprite 10, 9, 0, 0, $8d, 0
- dbsprite 11, 9, 0, 0, $8e, 0
- dbsprite 10, 10, 0, 0, $8f, 0
- dbsprite 11, 10, 0, 0, $90, 0
- dbsprite 10, 11, 0, 0, $91, 0
- dbsprite 11, 11, 0, 0, $92, 0
- dbsprite 6, 12, 0, 0, $80, 0
- dbsprite 7, 12, 0, 0, $81, 0
- dbsprite 8, 12, 0, 0, $82, 0
- dbsprite 9, 12, 0, 0, $83, 0
- dbsprite 10, 12, 0, 0, $93, 0
- dbsprite 11, 12, 0, 0, $84, 0
- dbsprite 12, 12, 0, 0, $85, 0
- dbsprite 13, 12, 0, 0, $83, 0
- dbsprite 14, 12, 0, 0, $81, 0
- dbsprite 15, 12, 0, 0, $86, 0
-GameFreakLogoOAMDataEnd:
-
-GameFreakShootingStarOAMData:
- dbsprite 20, 0, 0, 0, $a0, OAM_OBP1
- dbsprite 21, 0, 0, 0, $a0, OAM_OBP1 | OAM_HFLIP
- dbsprite 20, 1, 0, 0, $a1, OAM_OBP1
- dbsprite 21, 1, 0, 0, $a1, OAM_OBP1 | OAM_HFLIP
-GameFreakShootingStarOAMDataEnd:
-
-FallingStar:
- INCBIN "gfx/intro_credits/falling_star.2bpp"
-FallingStarEnd:
--- a/engine/movie/intro.asm
+++ b/engine/movie/intro.asm
@@ -433,32 +433,32 @@
db ANIMATION_END
GameFreakIntro:
- INCBIN "gfx/intro_credits/gamefreak_presents.2bpp"
- INCBIN "gfx/intro_credits/gamefreak_logo.2bpp"
+ INCBIN "gfx/splash/gamefreak_presents.2bpp"
+ INCBIN "gfx/splash/gamefreak_logo.2bpp"
ds 16, $00 ; blank tile
GameFreakIntroEnd:
FightIntroBackMon:
- INCBIN "gfx/intro_credits/gengar.2bpp"
+ INCBIN "gfx/intro/gengar.2bpp"
ds 16, $00 ; blank tile
FightIntroBackMonEnd:
-FightIntroFrontMon:
-
IF DEF(_RED)
- INCBIN "gfx/intro_credits/red_nidorino_1.2bpp"
+FightIntroFrontMon:
+ INCBIN "gfx/intro/red_nidorino_1.2bpp"
FightIntroFrontMon2:
- INCBIN "gfx/intro_credits/red_nidorino_2.2bpp"
+ INCBIN "gfx/intro/red_nidorino_2.2bpp"
FightIntroFrontMon3:
- INCBIN "gfx/intro_credits/red_nidorino_3.2bpp"
+ INCBIN "gfx/intro/red_nidorino_3.2bpp"
ENDC
IF DEF(_BLUE)
- INCBIN "gfx/intro_credits/blue_jigglypuff_1.2bpp"
+FightIntroFrontMon:
+ INCBIN "gfx/intro/blue_jigglypuff_1.2bpp"
FightIntroFrontMon2:
- INCBIN "gfx/intro_credits/blue_jigglypuff_2.2bpp"
+ INCBIN "gfx/intro/blue_jigglypuff_2.2bpp"
FightIntroFrontMon3:
- INCBIN "gfx/intro_credits/blue_jigglypuff_3.2bpp"
+ INCBIN "gfx/intro/blue_jigglypuff_3.2bpp"
ENDC
FightIntroFrontMonEnd:
--- /dev/null
+++ b/engine/movie/splash.asm
@@ -1,0 +1,243 @@
+LoadShootingStarGraphics:
+ ld a, $f9
+ ldh [rOBP0], a
+ ld a, $a4
+ ldh [rOBP1], a
+ ld de, AnimationTileset2 tile 3 ; star tile (top left quadrant)
+ ld hl, vChars1 tile $20
+ lb bc, BANK(AnimationTileset2), 1
+ call CopyVideoData
+ ld de, AnimationTileset2 tile 19 ; star tile (bottom left quadrant)
+ ld hl, vChars1 tile $21
+ lb bc, BANK(AnimationTileset2), 1
+ call CopyVideoData
+ ld de, FallingStar
+ ld hl, vChars1 tile $22
+ lb bc, BANK(FallingStar), (FallingStarEnd - FallingStar) / $10
+ call CopyVideoData
+ ld hl, GameFreakLogoOAMData
+ ld de, wOAMBuffer + $60
+ ld bc, GameFreakLogoOAMDataEnd - GameFreakLogoOAMData
+ call CopyData
+ ld hl, GameFreakShootingStarOAMData
+ ld de, wOAMBuffer
+ ld bc, GameFreakShootingStarOAMDataEnd - GameFreakShootingStarOAMData
+ jp CopyData
+
+AnimateShootingStar:
+ call LoadShootingStarGraphics
+ ld a, SFX_SHOOTING_STAR
+ call PlaySound
+
+; Move the big star down and left across the screen.
+ ld hl, wOAMBuffer
+ lb bc, $a0, $4
+.bigStarLoop
+ push hl
+ push bc
+.bigStarInnerLoop
+ ld a, [hl] ; Y
+ add 4
+ ld [hli], a
+ ld a, [hl] ; X
+ add -4
+ ld [hli], a
+ inc hl
+ inc hl
+ dec c
+ jr nz, .bigStarInnerLoop
+ ld c, 1
+ call CheckForUserInterruption
+ pop bc
+ pop hl
+ ret c
+ ld a, [hl]
+ cp 80
+ jr nz, .next
+ jr .bigStarLoop
+.next
+ cp b
+ jr nz, .bigStarLoop
+
+; Clear big star OAM.
+ ld hl, wOAMBuffer
+ ld c, 4
+ ld de, 4
+.clearOAMLoop
+ ld [hl], 160
+ add hl, de
+ dec c
+ jr nz, .clearOAMLoop
+
+; Make Gamefreak logo flash.
+ ld b, 3
+.flashLogoLoop
+ ld hl, rOBP0
+ rrc [hl]
+ rrc [hl]
+ ld c, 10
+ call CheckForUserInterruption
+ ret c
+ dec b
+ jr nz, .flashLogoLoop
+
+; Copy 24 instances of the small stars OAM data.
+; Note that their coordinates put them off-screen.
+ ld de, wOAMBuffer
+ ld a, 24
+.initSmallStarsOAMLoop
+ push af
+ ld hl, SmallStarsOAM
+ ld bc, SmallStarsOAMEnd - SmallStarsOAM
+ call CopyData
+ pop af
+ dec a
+ jr nz, .initSmallStarsOAMLoop
+
+; Animate the small stars falling from the Gamefreak logo.
+ xor a
+ ld [wMoveDownSmallStarsOAMCount], a
+ ld hl, SmallStarsWaveCoordsPointerTable
+ ld c, 6
+.smallStarsLoop
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ push bc
+ push hl
+ ld hl, wOAMBuffer + $50
+ ld c, 4
+.smallStarsInnerLoop ; introduce new wave of 4 small stars OAM entries
+ ld a, [de]
+ cp $ff
+ jr z, .next2
+ ld [hli], a ; Y
+ inc de
+ ld a, [de]
+ ld [hli], a ; X
+ inc de
+ inc hl
+ inc hl
+ dec c
+ jr nz, .smallStarsInnerLoop
+ ld a, [wMoveDownSmallStarsOAMCount]
+ cp 24
+ jr z, .next2
+ add 6 ; should be 4, but the extra 2 aren't visible on screen
+ ld [wMoveDownSmallStarsOAMCount], a
+.next2
+ call MoveDownSmallStars
+ push af
+
+; shift the existing OAM entries down to make room for the next wave
+ ld hl, wOAMBuffer + $10
+ ld de, wOAMBuffer
+ ld bc, $50
+ call CopyData
+
+ pop af
+ pop hl
+ pop bc
+ ret c
+ dec c
+ jr nz, .smallStarsLoop
+ and a
+ ret
+
+SmallStarsOAM:
+ dbsprite 0, 0, 0, 0, $A2, OAM_BEHIND_BG | OAM_OBP1
+SmallStarsOAMEnd:
+
+SmallStarsWaveCoordsPointerTable:
+ dw SmallStarsWave1Coords
+ dw SmallStarsWave2Coords
+ dw SmallStarsWave3Coords
+ dw SmallStarsWave4Coords
+ dw SmallStarsEmptyWave
+ dw SmallStarsEmptyWave
+
+; The stars that fall from the Gamefreak logo come in 4 waves of 4 OAM entries.
+; These arrays contain the Y and X coordinates of each OAM entry.
+
+SmallStarsWave1Coords:
+ db $68, $30
+ db $68, $40
+ db $68, $58
+ db $68, $78
+
+SmallStarsWave2Coords:
+ db $68, $38
+ db $68, $48
+ db $68, $60
+ db $68, $70
+
+SmallStarsWave3Coords:
+ db $68, $34
+ db $68, $4C
+ db $68, $54
+ db $68, $64
+
+SmallStarsWave4Coords:
+ db $68, $3C
+ db $68, $5C
+ db $68, $6C
+ db $68, $74
+
+SmallStarsEmptyWave:
+ db $FF
+
+MoveDownSmallStars:
+ ld b, 8
+.loop
+ ld hl, wOAMBuffer + $5c
+ ld a, [wMoveDownSmallStarsOAMCount]
+ ld de, -4
+ ld c, a
+.innerLoop
+ inc [hl] ; Y
+ add hl, de
+ dec c
+ jr nz, .innerLoop
+; Toggle the palette so that the lower star in the small stars tile blinks in
+; and out.
+ ldh a, [rOBP1]
+ xor %10100000
+ ldh [rOBP1], a
+
+ ld c, 3
+ call CheckForUserInterruption
+ ret c
+ dec b
+ jr nz, .loop
+ ret
+
+GameFreakLogoOAMData:
+ dbsprite 10, 9, 0, 0, $8d, 0
+ dbsprite 11, 9, 0, 0, $8e, 0
+ dbsprite 10, 10, 0, 0, $8f, 0
+ dbsprite 11, 10, 0, 0, $90, 0
+ dbsprite 10, 11, 0, 0, $91, 0
+ dbsprite 11, 11, 0, 0, $92, 0
+ dbsprite 6, 12, 0, 0, $80, 0
+ dbsprite 7, 12, 0, 0, $81, 0
+ dbsprite 8, 12, 0, 0, $82, 0
+ dbsprite 9, 12, 0, 0, $83, 0
+ dbsprite 10, 12, 0, 0, $93, 0
+ dbsprite 11, 12, 0, 0, $84, 0
+ dbsprite 12, 12, 0, 0, $85, 0
+ dbsprite 13, 12, 0, 0, $83, 0
+ dbsprite 14, 12, 0, 0, $81, 0
+ dbsprite 15, 12, 0, 0, $86, 0
+GameFreakLogoOAMDataEnd:
+
+GameFreakShootingStarOAMData:
+ dbsprite 20, 0, 0, 0, $a0, OAM_OBP1
+ dbsprite 21, 0, 0, 0, $a0, OAM_OBP1 | OAM_HFLIP
+ dbsprite 20, 1, 0, 0, $a1, OAM_OBP1
+ dbsprite 21, 1, 0, 0, $a1, OAM_OBP1 | OAM_HFLIP
+GameFreakShootingStarOAMDataEnd:
+
+FallingStar:
+ INCBIN "gfx/splash/falling_star.2bpp"
+FallingStarEnd:
binary files /dev/null b/gfx/credits/the_end.png differ
--- a/gfx/font.asm
+++ b/gfx/font.asm
@@ -13,7 +13,7 @@
BattleHudTiles3: INCBIN "gfx/battle/battle_hud_3.1bpp"
BattleHudTiles3End:
-NintendoCopyrightLogoGraphics: INCBIN "gfx/intro_credits/copyright.2bpp"
+NintendoCopyrightLogoGraphics: INCBIN "gfx/splash/copyright.2bpp"
GamefreakLogoGraphics: INCBIN "gfx/title/gamefreak_inc.2bpp"
GamefreakLogoGraphicsEnd:
binary files /dev/null b/gfx/intro/blue_jigglypuff_1.png differ
binary files /dev/null b/gfx/intro/blue_jigglypuff_2.png differ
binary files /dev/null b/gfx/intro/blue_jigglypuff_3.png differ
binary files /dev/null b/gfx/intro/gengar.png differ
binary files /dev/null b/gfx/intro/gengar_1.tilemap differ
binary files /dev/null b/gfx/intro/gengar_2.tilemap differ
binary files /dev/null b/gfx/intro/gengar_3.tilemap differ
binary files /dev/null b/gfx/intro/red_nidorino_1.png differ
binary files /dev/null b/gfx/intro/red_nidorino_2.png differ
binary files /dev/null b/gfx/intro/red_nidorino_3.png differ
binary files a/gfx/intro_credits/blue_jigglypuff_1.png /dev/null differ
binary files a/gfx/intro_credits/blue_jigglypuff_2.png /dev/null differ
binary files a/gfx/intro_credits/blue_jigglypuff_3.png /dev/null differ
binary files a/gfx/intro_credits/copyright.png /dev/null differ
binary files a/gfx/intro_credits/falling_star.png /dev/null differ
binary files a/gfx/intro_credits/gamefreak_logo.png /dev/null differ
binary files a/gfx/intro_credits/gamefreak_presents.png /dev/null differ
binary files a/gfx/intro_credits/gengar.png /dev/null differ
binary files a/gfx/intro_credits/gengar_1.tilemap /dev/null differ
binary files a/gfx/intro_credits/gengar_2.tilemap /dev/null differ
binary files a/gfx/intro_credits/gengar_3.tilemap /dev/null differ
binary files a/gfx/intro_credits/red_nidorino_1.png /dev/null differ
binary files a/gfx/intro_credits/red_nidorino_2.png /dev/null differ
binary files a/gfx/intro_credits/red_nidorino_3.png /dev/null differ
binary files a/gfx/intro_credits/the_end.png /dev/null differ
binary files /dev/null b/gfx/splash/copyright.png differ
binary files /dev/null b/gfx/splash/falling_star.png differ
binary files /dev/null b/gfx/splash/gamefreak_logo.png differ
binary files /dev/null b/gfx/splash/gamefreak_presents.png differ
--- a/main.asm
+++ b/main.asm
@@ -314,7 +314,7 @@
SECTION "bank1C", ROMX
-INCLUDE "engine/movie/gamefreak.asm"
+INCLUDE "engine/movie/splash.asm"
INCLUDE "engine/movie/hall_of_fame.asm"
INCLUDE "engine/overworld/healing_machine.asm"
INCLUDE "engine/overworld/player_animations.asm"