mirror of
https://github.com/pret/pokeheartgold.git
synced 2025-02-19 21:01:40 +00:00
address review comments, part 1
This commit is contained in:
parent
8206b746d1
commit
450a1c8042
@ -8,6 +8,12 @@
|
||||
#include "unk_02023694.h"
|
||||
#include "unk_02014DA0.h"
|
||||
|
||||
enum IntroMovieSceneState {
|
||||
INTRO_MOVIE_SCENE_INIT,
|
||||
INTRO_MOVIE_SCENE_RUN,
|
||||
INTRO_MOVIE_SCENE_CLEANUP,
|
||||
};
|
||||
|
||||
typedef struct IntroMovieScene1Data {
|
||||
u8 state;
|
||||
u8 needFreeGfx;
|
||||
|
@ -57,51 +57,51 @@ typedef struct UnkImageStruct {
|
||||
int vramTransfer;
|
||||
} UnkImageStruct;
|
||||
|
||||
void sub_02023EA4(Sprite *, int);
|
||||
void sub_02023EA4(Sprite *sprite, int a1);
|
||||
struct Sprite *CreateSprite(const struct SpriteTemplate *template);
|
||||
void Set2dSpriteAnimActiveFlag(Sprite *, int);
|
||||
void Set2dSpriteAnimActiveFlag(Sprite *sprite, int a1);
|
||||
SpriteList *SpriteList_Create(struct SpriteListParam *param);
|
||||
void SpriteList_Delete(SpriteList *);
|
||||
void sub_0202457C(SpriteList *);
|
||||
void Sprite_Delete(Sprite *);
|
||||
void Sprite_SetMatrix(Sprite *, VecFx32 *);
|
||||
NNSG2dImagePaletteProxy *sub_02024B34(Sprite *);
|
||||
NNS_G2D_VRAM_TYPE Sprite_GetVramType(Sprite*);
|
||||
void sub_0202487C(Sprite*, u8);
|
||||
void Set2dSpriteVisibleFlag(Sprite *, int);
|
||||
void sub_02024868(Sprite *, int);
|
||||
VecFx32 *Sprite_GetMatrixPtr(Sprite *);
|
||||
VecFx32* sub_020248B0(Sprite*);
|
||||
void sub_020247F4(Sprite*, VecFx32*);
|
||||
void sub_02024818(Sprite*, u32);
|
||||
u16 sub_020248B4(Sprite*);
|
||||
void sub_02024890(Sprite*, u8);
|
||||
void sub_020247E4(Sprite*, VecFx32*);
|
||||
void sub_02024B38(Sprite*, BOOL);
|
||||
void sub_02024B78(Sprite* sprite, GXOamMode mode);
|
||||
GXOamMode sub_02024BAC(Sprite* sprite);
|
||||
u32 sub_02024C9C(Sprite*);
|
||||
u32 Get2dSpriteAnimSeqNo(Sprite*);
|
||||
void Set2dSpriteAnimSeqNo(Sprite *, int);
|
||||
void TryChange2dSpriteAnimSeqNo(Sprite *, int);
|
||||
u16 Get2dSpriteCurrentAnimSeqNo(Sprite *);
|
||||
void Sprite_ResetAnimCtrlState(Sprite*);
|
||||
void Sprite_SetAnimCtrlCurrentFrame(Sprite*, u16);
|
||||
u16 Sprite_GetAnimCtrlCurrentFrame(Sprite*);
|
||||
BOOL Get2dSpriteVisibleFlag(Sprite*);
|
||||
void Sprite_SetPalOffset(Sprite*, u8);
|
||||
void Sprite_TickCellOrMulticellAnimation(Sprite*, fx32);
|
||||
void Sprite_SetPalIndex(Sprite*, int);
|
||||
void sub_02024A48(Sprite*, int);
|
||||
int Sprite_GetPalIndex(Sprite*);
|
||||
void sub_02024AA8(void *, s32);
|
||||
u8 Sprite_GetPalOffset(Sprite*);
|
||||
void Sprite_SetPriority(Sprite*, u8);
|
||||
u8 Sprite_GetPriority(Sprite*);
|
||||
void Sprite_SetDrawPriority(Sprite*, u16);
|
||||
u16 Sprite_GetDrawPriority(Sprite*);
|
||||
NNSG2dImageProxy *sub_02024B1C(Sprite *);
|
||||
int Sprite_IsCellAnimationRunning(Sprite *);
|
||||
NNSG2dCellAnimation *sub_02024CB8(Sprite *a0);
|
||||
void SpriteList_Delete(SpriteList *spriteList);
|
||||
void sub_0202457C(SpriteList *spriteList);
|
||||
void Sprite_Delete(Sprite *sprite);
|
||||
void Sprite_SetMatrix(Sprite *sprite, VecFx32 *vec);
|
||||
NNSG2dImagePaletteProxy *sub_02024B34(Sprite *sprite);
|
||||
NNS_G2D_VRAM_TYPE Sprite_GetVramType(Sprite *sprite);
|
||||
void sub_0202487C(Sprite *sprite, u8 a1);
|
||||
void Set2dSpriteVisibleFlag(Sprite *sprite, int a1);
|
||||
void sub_02024868(Sprite *sprite, int a1);
|
||||
VecFx32 *Sprite_GetMatrixPtr(Sprite *sprite);
|
||||
VecFx32* sub_020248B0(Sprite *sprite);
|
||||
void sub_020247F4(Sprite *sprite, VecFx32 *vec);
|
||||
void sub_02024818(Sprite *sprite, u32 a1);
|
||||
u16 sub_020248B4(Sprite *sprite);
|
||||
void sub_02024890(Sprite *sprite, u8 a1);
|
||||
void sub_020247E4(Sprite *sprite, VecFx32 *vec);
|
||||
void sub_02024B38(Sprite *sprite, BOOL a1);
|
||||
void sub_02024B78(Sprite *sprite, GXOamMode mode);
|
||||
GXOamMode sub_02024BAC(Sprite *sprite);
|
||||
u32 sub_02024C9C(Sprite *sprite);
|
||||
u32 Get2dSpriteAnimSeqNo(Sprite *sprite);
|
||||
void Set2dSpriteAnimSeqNo(Sprite *sprite, int a1);
|
||||
void TryChange2dSpriteAnimSeqNo(Sprite *sprite, int a1);
|
||||
u16 Get2dSpriteCurrentAnimSeqNo(Sprite *sprite);
|
||||
void Sprite_ResetAnimCtrlState(Sprite *sprite);
|
||||
void Sprite_SetAnimCtrlCurrentFrame(Sprite *sprite, u16 a1);
|
||||
u16 Sprite_GetAnimCtrlCurrentFrame(Sprite *sprite);
|
||||
BOOL Get2dSpriteVisibleFlag(Sprite *sprite);
|
||||
void Sprite_SetPalOffset(Sprite *sprite, u8 a1);
|
||||
void Sprite_TickCellOrMulticellAnimation(Sprite *sprite, fx32 a1);
|
||||
void Sprite_SetPalIndex(Sprite *sprite, int a1);
|
||||
void sub_02024A48(Sprite *sprite, int a1);
|
||||
int Sprite_GetPalIndex(Sprite *sprite);
|
||||
void sub_02024AA8(Sprite *sprite, s32 a1);
|
||||
u8 Sprite_GetPalOffset(Sprite *sprite);
|
||||
void Sprite_SetPriority(Sprite *sprite, u8 a1);
|
||||
u8 Sprite_GetPriority(Sprite *sprite);
|
||||
void Sprite_SetDrawPriority(Sprite *sprite, u16 a1);
|
||||
u16 Sprite_GetDrawPriority(Sprite *sprite);
|
||||
NNSG2dImageProxy *sub_02024B1C(Sprite *sprite);
|
||||
int Sprite_IsCellAnimationRunning(Sprite *sprite);
|
||||
NNSG2dCellAnimation *sub_02024CB8(Sprite *sprite);
|
||||
|
||||
#endif //POKEHEARTGOLD_UNK_02023694_H
|
||||
|
@ -42,7 +42,7 @@ static inline void G2_SetWndOutsidePlane(int wnd, BOOL effect) {
|
||||
tmp = ((reg_G2_WINOUT & ~REG_G2_WINOUT_WINOUT_MASK) | ((u32)wnd << REG_G2_WINOUT_WINOUT_SHIFT));
|
||||
|
||||
if (effect) {
|
||||
tmp |= (0x20 << REG_G2_WINOUT_WINOUT_SHIFT); // EFCT
|
||||
tmp |= (0x20 << REG_G2_WINOUT_WINOUT_SHIFT);
|
||||
}
|
||||
|
||||
reg_G2_WINOUT = (u16)tmp;
|
||||
@ -134,7 +134,7 @@ static inline void G2_SetWnd0InsidePlane(int wnd, BOOL effect) {
|
||||
tmp = ((reg_G2_WININ & ~REG_G2_WININ_WIN0IN_MASK) | ((u32)wnd << REG_G2_WININ_WIN0IN_SHIFT));
|
||||
|
||||
if (effect) {
|
||||
tmp |= (0x20 << REG_G2_WININ_WIN0IN_SHIFT); // EFCT
|
||||
tmp |= (0x20 << REG_G2_WININ_WIN0IN_SHIFT);
|
||||
}
|
||||
|
||||
reg_G2_WININ = (u16)tmp;
|
||||
@ -146,7 +146,7 @@ static inline void G2_SetWnd1InsidePlane(int wnd, BOOL effect) {
|
||||
tmp = ((reg_G2_WININ & ~REG_G2_WININ_WIN1IN_MASK) | ((u32)wnd << REG_G2_WININ_WIN1IN_SHIFT));
|
||||
|
||||
if (effect) {
|
||||
tmp |= (0x20 << REG_G2_WININ_WIN1IN_SHIFT); // EFCT
|
||||
tmp |= (0x20 << REG_G2_WININ_WIN1IN_SHIFT);
|
||||
}
|
||||
|
||||
reg_G2_WININ = (u16)tmp;
|
||||
@ -159,7 +159,7 @@ static inline void G2S_SetWnd0InsidePlane(int wnd, BOOL effect) {
|
||||
((u32)wnd << REG_G2S_DB_WININ_WIN0IN_SHIFT));
|
||||
|
||||
if (effect) {
|
||||
tmp |= (0x20 << REG_G2S_DB_WININ_WIN0IN_SHIFT); // EFCT
|
||||
tmp |= (0x20 << REG_G2S_DB_WININ_WIN0IN_SHIFT);
|
||||
}
|
||||
|
||||
reg_G2S_DB_WININ = (u16)tmp;
|
||||
@ -171,7 +171,7 @@ static inline void G2S_SetWnd1InsidePlane(int wnd, BOOL effect) {
|
||||
tmp = ((reg_G2S_DB_WININ & ~REG_G2S_DB_WININ_WIN1IN_MASK) | ((u32)wnd << REG_G2S_DB_WININ_WIN1IN_SHIFT));
|
||||
|
||||
if (effect) {
|
||||
tmp |= (0x20 << REG_G2S_DB_WININ_WIN1IN_SHIFT); // EFCT
|
||||
tmp |= (0x20 << REG_G2S_DB_WININ_WIN1IN_SHIFT);
|
||||
}
|
||||
|
||||
reg_G2S_DB_WININ = (u16)tmp;
|
||||
@ -184,7 +184,7 @@ static inline void G2S_SetWndOutsidePlane(int wnd, BOOL effect) {
|
||||
((u32)wnd << REG_G2S_DB_WINOUT_WINOUT_SHIFT));
|
||||
|
||||
if (effect) {
|
||||
tmp |= (0x20 << REG_G2S_DB_WINOUT_WINOUT_SHIFT); // EFCT
|
||||
tmp |= (0x20 << REG_G2S_DB_WINOUT_WINOUT_SHIFT);
|
||||
}
|
||||
|
||||
reg_G2S_DB_WINOUT = (u16)tmp;
|
||||
|
@ -17,6 +17,12 @@
|
||||
#include "unk_02022588.h"
|
||||
#include "unk_02023694.h"
|
||||
|
||||
enum IntroMovieOverlayState {
|
||||
INTRO_MOVIE_INIT,
|
||||
INTRO_MOVIE_RUN,
|
||||
INTRO_MOVIE_DONE
|
||||
};
|
||||
|
||||
BOOL IntroMovie_Init(OVY_MANAGER *man, int *state);
|
||||
BOOL IntroMovie_Main(OVY_MANAGER *man, int *state);
|
||||
BOOL IntroMovie_Exit(OVY_MANAGER *man, int *state);
|
||||
@ -77,12 +83,12 @@ BOOL IntroMovie_Main(OVY_MANAGER *man, int *state) {
|
||||
}
|
||||
|
||||
switch (*state) {
|
||||
case 0:
|
||||
case INTRO_MOVIE_INIT:
|
||||
data->scene1Data.skipAllowedPtr = &data->skipAllowed;
|
||||
sub_02004EC4(2, SEQ_GS_TITLE, 1);
|
||||
++(*state);
|
||||
break;
|
||||
case 1:
|
||||
case INTRO_MOVIE_RUN:
|
||||
if (sIntroMovieSceneFuncs[data->sceneNumber](data, IntroMovie_GetSceneDataPtr(data))) {
|
||||
++data->sceneNumber;
|
||||
data->sceneStep = 0;
|
||||
@ -94,7 +100,7 @@ BOOL IntroMovie_Main(OVY_MANAGER *man, int *state) {
|
||||
++data->sceneTimer;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case INTRO_MOVIE_DONE:
|
||||
return TRUE;
|
||||
default:
|
||||
GF_ASSERT(FALSE);
|
||||
|
@ -9,6 +9,20 @@
|
||||
#include "system.h"
|
||||
#include "demo/opening/gs_opening.naix"
|
||||
|
||||
enum IntroScene1State {
|
||||
INTRO_SCENE1_APPEAR_COPYRIGHT,
|
||||
INTRO_SCENE1_WAIT_COPYRIGHT,
|
||||
INTRO_SCENE1_WAIT_FADEOUT_COPYRIGHT,
|
||||
INTRO_SCENE1_WAIT_APPEAR_GAMEFREAK,
|
||||
INTRO_SCENE1_WAIT_GAMEFREAK,
|
||||
INTRO_SCENE1_APPEAR_BG_IMAGE,
|
||||
INTRO_SCENE1_WAIT_START_BG_SCROLL,
|
||||
INTRO_SCENE1_WAIT_BG_SCROLL,
|
||||
INTRO_SCENE1_WAIT_APPEAR_BIRD,
|
||||
INTRO_SCENE1_DELAY90_START_FADEOUT,
|
||||
INTRO_SCENE1_WAIT_FADEOUT,
|
||||
};
|
||||
|
||||
// Copyright, Gamefreak logo, and sunrise
|
||||
|
||||
void IntroMovie_Scene1_VBlankCB(void *pVoid);
|
||||
@ -32,16 +46,16 @@ BOOL IntroMovie_Scene1(IntroMovieOvyData *data, void *pVoid) {
|
||||
}
|
||||
|
||||
switch (sceneData->state) {
|
||||
case 0:
|
||||
case INTRO_MOVIE_SCENE_INIT:
|
||||
IntroMovie_Scene1_Init(data, sceneData);
|
||||
++sceneData->state;
|
||||
break;
|
||||
case 1:
|
||||
case INTRO_MOVIE_SCENE_RUN:
|
||||
if (IntroMovie_Scene1_Main(data, sceneData, IntroMovie_GetTotalFrameCount(data))) {
|
||||
++sceneData->state;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case INTRO_MOVIE_SCENE_CLEANUP:
|
||||
IntroMovie_Scene1_Exit(data, sceneData);
|
||||
return TRUE;
|
||||
}
|
||||
@ -77,25 +91,25 @@ BOOL IntroMovie_Scene1_Main(IntroMovieOvyData *data, IntroMovieScene1Data *scene
|
||||
IntroMovieBgLinearAnims *bgAnimCnt = IntroMovie_GetBgLinearAnimsController(data);
|
||||
u8 timer = IntroMovie_GetSceneStepTimer(data);
|
||||
switch (IntroMovie_GetSceneStep(data)) {
|
||||
case 0: // Copyright appear
|
||||
case INTRO_SCENE1_APPEAR_COPYRIGHT: // Copyright appear
|
||||
BgSetPosTextAndCommit(bgConfig, GF_BG_LYR_MAIN_0, BG_POS_OP_SET_Y, 0x80);
|
||||
GfGfx_EngineATogglePlanes(GX_PLANEMASK_BG0, GF_PLANE_TOGGLE_ON);
|
||||
GfGfx_EngineBTogglePlanes(GX_PLANEMASK_BG0, GF_PLANE_TOGGLE_ON);
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
break;
|
||||
case 1: // Wait 30 frames then start fade out
|
||||
case INTRO_SCENE1_WAIT_COPYRIGHT: // Wait 30 frames then start fade out
|
||||
if (timer >= 30) {
|
||||
IntroMovie_StartBlendFadeEffect(&bgAnimCnt->blend[0], 1, 0x20, 60, 1, 0);
|
||||
IntroMovie_StartBlendFadeEffect(&bgAnimCnt->blend[1], 1, 0x20, 60, 1, 1);
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
}
|
||||
break;
|
||||
case 2: // Wait for fade out (60 frames)
|
||||
case INTRO_SCENE1_WAIT_FADEOUT_COPYRIGHT: // Wait for fade out (60 frames)
|
||||
if (bgAnimCnt->blend[0].finished && bgAnimCnt->blend[1].finished) {
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
}
|
||||
break;
|
||||
case 3: // Delay 20 frames then appear GameFreak logo
|
||||
case INTRO_SCENE1_WAIT_APPEAR_GAMEFREAK: // Delay 20 frames then appear GameFreak logo
|
||||
if (timer >= 20) {
|
||||
*sceneData->skipAllowedPtr = TRUE;
|
||||
GfGfx_EngineBTogglePlanes(GX_PLANEMASK_BG0, GF_PLANE_TOGGLE_OFF);
|
||||
@ -105,18 +119,18 @@ BOOL IntroMovie_Scene1_Main(IntroMovieOvyData *data, IntroMovieScene1Data *scene
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
}
|
||||
break;
|
||||
case 4: // Delay 110 frames
|
||||
case INTRO_SCENE1_WAIT_GAMEFREAK: // Delay 110 frames
|
||||
if (timer >= 110) {
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
}
|
||||
break;
|
||||
case 5: // Appear sunrise or sunset background
|
||||
case INTRO_SCENE1_APPEAR_BG_IMAGE: // Appear sunrise or sunset background
|
||||
GfGfx_EngineATogglePlanes((GXPlaneMask)(GX_PLANEMASK_BG1 | GX_PLANEMASK_BG2 | GX_PLANEMASK_BG3), GF_PLANE_TOGGLE_ON);
|
||||
GfGfx_EngineBTogglePlanes(GX_PLANEMASK_BG3, GF_PLANE_TOGGLE_ON);
|
||||
Set2dSpriteVisibleFlag(sceneData->sunSprite, TRUE);
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
break;
|
||||
case 6: // Start scrolling background
|
||||
case INTRO_SCENE1_WAIT_START_BG_SCROLL: // Start scrolling background
|
||||
if (timer >= 1) {
|
||||
IntroMovie_StartBlendFadeEffect(&bgAnimCnt->blend[0], 1, 0x1E, 0x50, 1, 1);
|
||||
IntroMovie_StartBlendFadeEffect(&bgAnimCnt->blend[1], 2, 0x1E, 0x50, 1, 0);
|
||||
@ -126,24 +140,24 @@ BOOL IntroMovie_Scene1_Main(IntroMovieOvyData *data, IntroMovieScene1Data *scene
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
}
|
||||
break;
|
||||
case 7: // Wait blend and scroll effects (240 frames)
|
||||
case INTRO_SCENE1_WAIT_BG_SCROLL: // Wait blend and scroll effects (240 frames)
|
||||
if (bgAnimCnt->blend[0].finished && bgAnimCnt->blend[1].finished && IntroMovie_WaitBgScrollAnim(bgAnimCnt->scroll, GF_BG_LYR_MAIN_1) && IntroMovie_WaitBgScrollAnim(bgAnimCnt->scroll, GF_BG_LYR_MAIN_2)) {
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
}
|
||||
break;
|
||||
case 8: // Delay 128 frames then start box legendary anim
|
||||
case INTRO_SCENE1_WAIT_APPEAR_BIRD: // Delay 128 frames then start box legendary anim
|
||||
if (timer >= 128) {
|
||||
IntroMovie_StartSpriteAnimAndMakeVisible(sceneData->birdSprite, TRUE);
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
}
|
||||
break;
|
||||
case 9: // Run anim 90 frames then start fade to white
|
||||
case INTRO_SCENE1_DELAY90_START_FADEOUT: // Run anim 90 frames then start fade to white
|
||||
if (timer >= 90) {
|
||||
BeginNormalPaletteFade(0, 0, 0, RGB_WHITE, 65, 1, HEAP_ID_INTRO_MOVIE);
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
}
|
||||
break;
|
||||
case 10: // Wait fade to white (65 frames)
|
||||
case INTRO_SCENE1_WAIT_FADEOUT: // Wait fade to white (65 frames)
|
||||
if (IsPaletteFadeFinished()) {
|
||||
return TRUE;
|
||||
}
|
||||
@ -183,145 +197,137 @@ void IntroMovie_Scene1_InitBgs(IntroMovieOvyData *data) {
|
||||
}
|
||||
|
||||
{
|
||||
BgTemplate bgTemplate = {
|
||||
0, 0,
|
||||
GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
0x00000000,
|
||||
GF_BG_SCR_SIZE_256x256,
|
||||
GX_BG_COLORMODE_16,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
BgTemplate bgTemplate = {
|
||||
.x = 0, .y = 0,
|
||||
.bufferSize = GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
.baseTile = 0x00000000,
|
||||
.size = GF_BG_SCR_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x0000,
|
||||
.charBase = GX_BG_CHARBASE_0x04000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 0,
|
||||
.areaOver = GX_BG_AREAOVER_XLU,
|
||||
.mosaic = FALSE
|
||||
};
|
||||
InitBgFromTemplate(bgConfig, GF_BG_LYR_SUB_0, &bgTemplate, 0);
|
||||
}
|
||||
|
||||
{
|
||||
BgTemplate bgTemplate = {
|
||||
0, 0,
|
||||
GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
0x00000000,
|
||||
GF_BG_SCR_SIZE_256x256,
|
||||
GX_BG_COLORMODE_16,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
BgTemplate bgTemplate = {
|
||||
.x = 0, .y = 0,
|
||||
.bufferSize = GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
.baseTile = 0x00000000,
|
||||
.size = GF_BG_SCR_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x0800,
|
||||
.charBase = GX_BG_CHARBASE_0x04000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 1,
|
||||
.areaOver = GX_BG_AREAOVER_XLU,
|
||||
.mosaic = FALSE
|
||||
};
|
||||
InitBgFromTemplate(bgConfig, GF_BG_LYR_SUB_1, &bgTemplate, 0);
|
||||
}
|
||||
|
||||
{
|
||||
BgTemplate bgTemplate = {
|
||||
0, 0,
|
||||
GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
0x00000000,
|
||||
GF_BG_SCR_SIZE_256x256,
|
||||
GX_BG_COLORMODE_16,
|
||||
2,
|
||||
3,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
BgTemplate bgTemplate = {
|
||||
.x = 0, .y = 0,
|
||||
.bufferSize = GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
.baseTile = 0x00000000,
|
||||
.size = GF_BG_SCR_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x1000,
|
||||
.charBase = GX_BG_CHARBASE_0x0c000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 2,
|
||||
.areaOver = GX_BG_AREAOVER_XLU,
|
||||
.mosaic = FALSE
|
||||
};
|
||||
InitBgFromTemplate(bgConfig, GF_BG_LYR_SUB_2, &bgTemplate, 0);
|
||||
}
|
||||
|
||||
{
|
||||
BgTemplate bgTemplate = {
|
||||
0, 0,
|
||||
GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
0x00000000,
|
||||
GF_BG_SCR_SIZE_256x256,
|
||||
GX_BG_COLORMODE_16,
|
||||
3,
|
||||
4,
|
||||
0,
|
||||
3,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
BgTemplate bgTemplate = {
|
||||
.x = 0, .y = 0,
|
||||
.bufferSize = GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
.baseTile = 0x00000000,
|
||||
.size = GF_BG_SCR_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x1800,
|
||||
.charBase = GX_BG_CHARBASE_0x10000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 3,
|
||||
.areaOver = GX_BG_AREAOVER_XLU,
|
||||
.mosaic = FALSE
|
||||
};
|
||||
InitBgFromTemplate(bgConfig, GF_BG_LYR_SUB_3, &bgTemplate, 0);
|
||||
}
|
||||
|
||||
{
|
||||
BgTemplate bgTemplate = {
|
||||
0, 0,
|
||||
GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
0x00000000,
|
||||
GF_BG_SCR_SIZE_256x256,
|
||||
GX_BG_COLORMODE_16,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
BgTemplate bgTemplate = {
|
||||
.x = 0, .y = 0,
|
||||
.bufferSize = GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
.baseTile = 0x00000000,
|
||||
.size = GF_BG_SCR_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x0000,
|
||||
.charBase = GX_BG_CHARBASE_0x04000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 0,
|
||||
.areaOver = GX_BG_AREAOVER_XLU,
|
||||
.mosaic = FALSE
|
||||
};
|
||||
InitBgFromTemplate(bgConfig, GF_BG_LYR_MAIN_0, &bgTemplate, 0);
|
||||
}
|
||||
|
||||
{
|
||||
BgTemplate bgTemplate = {
|
||||
0, 0,
|
||||
GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
0x00000000,
|
||||
GF_BG_SCR_SIZE_256x256,
|
||||
GX_BG_COLORMODE_16,
|
||||
1,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
BgTemplate bgTemplate = {
|
||||
.x = 0, .y = 0,
|
||||
.bufferSize = GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
.baseTile = 0x00000000,
|
||||
.size = GF_BG_SCR_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x0800,
|
||||
.charBase = GX_BG_CHARBASE_0x08000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 1,
|
||||
.areaOver = GX_BG_AREAOVER_XLU,
|
||||
.mosaic = FALSE
|
||||
};
|
||||
InitBgFromTemplate(bgConfig, GF_BG_LYR_MAIN_1, &bgTemplate, 0);
|
||||
}
|
||||
|
||||
{
|
||||
BgTemplate bgTemplate = {
|
||||
0, 0,
|
||||
GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
0x00000000,
|
||||
GF_BG_SCR_SIZE_256x256,
|
||||
GX_BG_COLORMODE_16,
|
||||
2,
|
||||
2,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
BgTemplate bgTemplate = {
|
||||
.x = 0, .y = 0,
|
||||
.bufferSize = GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
.baseTile = 0x00000000,
|
||||
.size = GF_BG_SCR_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x1000,
|
||||
.charBase = GX_BG_CHARBASE_0x08000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 2,
|
||||
.areaOver = GX_BG_AREAOVER_XLU,
|
||||
.mosaic = FALSE
|
||||
};
|
||||
InitBgFromTemplate(bgConfig, GF_BG_LYR_MAIN_2, &bgTemplate, 0);
|
||||
}
|
||||
|
||||
{
|
||||
BgTemplate bgTemplate = {
|
||||
0, 0,
|
||||
GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
0x00000000,
|
||||
GF_BG_SCR_SIZE_256x256,
|
||||
GX_BG_COLORMODE_16,
|
||||
3,
|
||||
2,
|
||||
0,
|
||||
3,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
BgTemplate bgTemplate = {
|
||||
.x = 0, .y = 0,
|
||||
.bufferSize = GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
.baseTile = 0x00000000,
|
||||
.size = GF_BG_SCR_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x1800,
|
||||
.charBase = GX_BG_CHARBASE_0x08000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 3,
|
||||
.areaOver = GX_BG_AREAOVER_XLU,
|
||||
.mosaic = FALSE
|
||||
};
|
||||
InitBgFromTemplate(bgConfig, GF_BG_LYR_MAIN_3, &bgTemplate, 0);
|
||||
}
|
||||
|
@ -11,6 +11,17 @@
|
||||
#include "unk_02022588.h"
|
||||
#include "demo/opening/gs_opening.naix"
|
||||
|
||||
enum IntroScene2State {
|
||||
INTRO_SCENE2_START_FLYIN,
|
||||
INTRO_SCENE2_FLYIN,
|
||||
INTRO_SCENE2_START_SLOW_PAN_ETHAN,
|
||||
INTRO_SCENE2_SLOW_PAN_ETHAN,
|
||||
INTRO_SCENE2_FAST_PAN_TO_LYRA,
|
||||
INTRO_SCENE2_SLOW_PAN_LYRA,
|
||||
INTRO_SCENE2_CIRCLE_WIPE_OUT,
|
||||
INTRO_SCENE2_END,
|
||||
};
|
||||
|
||||
void IntroMovie_Scene2_VBlankCB(void *pVoid);
|
||||
void IntroMovie_Scene2_Init(IntroMovieOvyData *data, IntroMovieScene2Data *sceneData);
|
||||
BOOL IntroMovie_Scene2_Main(IntroMovieOvyData *data, IntroMovieScene2Data *sceneData, int a2);
|
||||
@ -48,16 +59,16 @@ BOOL IntroMovie_Scene2(IntroMovieOvyData *data, void *pVoid) {
|
||||
}
|
||||
|
||||
switch (sceneData->state) {
|
||||
case 0:
|
||||
case INTRO_MOVIE_SCENE_INIT:
|
||||
IntroMovie_Scene2_Init(data, sceneData);
|
||||
++sceneData->state;
|
||||
break;
|
||||
case 1:
|
||||
case INTRO_MOVIE_SCENE_RUN:
|
||||
if (IntroMovie_Scene2_Main(data, sceneData, IntroMovie_GetTotalFrameCount(data))) {
|
||||
++sceneData->state;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case INTRO_MOVIE_SCENE_CLEANUP:
|
||||
IntroMovie_Scene2_Exit(data, sceneData);
|
||||
return TRUE;
|
||||
}
|
||||
@ -103,12 +114,12 @@ BOOL IntroMovie_Scene2_Main(IntroMovieOvyData *data, IntroMovieScene2Data *scene
|
||||
IntroMovieBgLinearAnims *bgAnimCnt = IntroMovie_GetBgLinearAnimsController(data);
|
||||
u8 stepTimer = IntroMovie_GetSceneStepTimer(data);
|
||||
switch (IntroMovie_GetSceneStep(data)) {
|
||||
case 0:
|
||||
case INTRO_SCENE2_START_FLYIN:
|
||||
BeginNormalPaletteFade(0, 1, 1, RGB_WHITE, 3, 1, HEAP_ID_INTRO_MOVIE);
|
||||
sceneData->flowerIndex = 0;
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
break;
|
||||
case 1:
|
||||
case INTRO_SCENE2_FLYIN:
|
||||
if (sceneData->flowerIndex < NELEMS(sIntroMovie_Scene2_FlowerSpriteAppearTiming) && sIntroMovie_Scene2_FlowerSpriteAppearTiming[sceneData->flowerIndex] == stepTimer) {
|
||||
IntroMovie_StartSpriteAnimAndMakeVisible(sceneData->flowerSprites[sceneData->flowerIndex], TRUE);
|
||||
++sceneData->flowerIndex;
|
||||
@ -122,7 +133,7 @@ BOOL IntroMovie_Scene2_Main(IntroMovieOvyData *data, IntroMovieScene2Data *scene
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case INTRO_SCENE2_START_SLOW_PAN_ETHAN:
|
||||
if (IntroMovie_WaitBgScrollAnim(bgAnimCnt->scroll, GF_BG_LYR_MAIN_1) && IntroMovie_WaitBgScrollAnim(bgAnimCnt->scroll, GF_BG_LYR_MAIN_0) && IntroMovie_Scene2_WaitSpritePanEffect(sceneData, 0) && IntroMovie_Scene2_WaitSpritePanEffect(sceneData, 1) && IsPaletteFadeFinished()) {
|
||||
IntroMovie_StartBgScroll_NotVBlank(bgConfig, bgAnimCnt->scroll, GF_BG_LYR_MAIN_1, 0x20, 0, 0x5A);
|
||||
IntroMovie_StartBgScroll_NotVBlank(bgConfig, bgAnimCnt->scroll, GF_BG_LYR_MAIN_0, 0x20, 0, 0x5A);
|
||||
@ -131,7 +142,7 @@ BOOL IntroMovie_Scene2_Main(IntroMovieOvyData *data, IntroMovieScene2Data *scene
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
case INTRO_SCENE2_SLOW_PAN_ETHAN:
|
||||
if (IntroMovie_WaitBgScrollAnim(bgAnimCnt->scroll, GF_BG_LYR_MAIN_1) && IntroMovie_WaitBgScrollAnim(bgAnimCnt->scroll, GF_BG_LYR_MAIN_0) && IntroMovie_Scene2_WaitSpritePanEffect(sceneData, 0) && IntroMovie_Scene2_WaitSpritePanEffect(sceneData, 1)) {
|
||||
IntroMovie_StartBgScroll_NotVBlank(bgConfig, bgAnimCnt->scroll, GF_BG_LYR_MAIN_1, 0x40, 0, 7);
|
||||
IntroMovie_StartBgScroll_NotVBlank(bgConfig, bgAnimCnt->scroll, GF_BG_LYR_MAIN_0, 0x40, 0, 7);
|
||||
@ -140,7 +151,7 @@ BOOL IntroMovie_Scene2_Main(IntroMovieOvyData *data, IntroMovieScene2Data *scene
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
case INTRO_SCENE2_FAST_PAN_TO_LYRA:
|
||||
if (IntroMovie_WaitBgScrollAnim(bgAnimCnt->scroll, GF_BG_LYR_MAIN_1) && IntroMovie_WaitBgScrollAnim(bgAnimCnt->scroll, GF_BG_LYR_MAIN_0) && IntroMovie_Scene2_WaitSpritePanEffect(sceneData, 0) && IntroMovie_Scene2_WaitSpritePanEffect(sceneData, 1)) {
|
||||
IntroMovie_StartBgScroll_NotVBlank(bgConfig, bgAnimCnt->scroll, GF_BG_LYR_MAIN_1, 0x20, 0, 0x42);
|
||||
IntroMovie_StartBgScroll_NotVBlank(bgConfig, bgAnimCnt->scroll, GF_BG_LYR_MAIN_0, 0x20, 0, 0x42);
|
||||
@ -149,7 +160,7 @@ BOOL IntroMovie_Scene2_Main(IntroMovieOvyData *data, IntroMovieScene2Data *scene
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
case INTRO_SCENE2_SLOW_PAN_LYRA:
|
||||
if (IntroMovie_WaitBgScrollAnim(bgAnimCnt->scroll, GF_BG_LYR_MAIN_1) && IntroMovie_WaitBgScrollAnim(bgAnimCnt->scroll, GF_BG_LYR_MAIN_0) && IntroMovie_Scene2_WaitSpritePanEffect(sceneData, 0) && IntroMovie_Scene2_WaitSpritePanEffect(sceneData, 1)) {
|
||||
IntroMovie_StartBgScroll_NotVBlank(bgConfig, bgAnimCnt->scroll, GF_BG_LYR_MAIN_1, 0, -0x80, 10);
|
||||
IntroMovie_StartBgScroll_NotVBlank(bgConfig, bgAnimCnt->scroll, GF_BG_LYR_MAIN_0, 0, -0x40, 5);
|
||||
@ -158,13 +169,13 @@ BOOL IntroMovie_Scene2_Main(IntroMovieOvyData *data, IntroMovieScene2Data *scene
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
case INTRO_SCENE2_CIRCLE_WIPE_OUT:
|
||||
if (IntroMovie_WaitBgScrollAnim(bgAnimCnt->scroll, GF_BG_LYR_MAIN_1) && IntroMovie_WaitBgScrollAnim(bgAnimCnt->scroll, GF_BG_LYR_MAIN_0) && IntroMovie_Scene2_WaitSpritePanEffect(sceneData, 0) && IntroMovie_Scene2_WaitSpritePanEffect(sceneData, 1)) {
|
||||
IntroMovie_BeginCircleWipeEffect(data, 1, 1, 8);
|
||||
IntroMovie_AdvanceSceneStep(data);
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
case INTRO_SCENE2_END:
|
||||
if (IntroMovie_WaitCircleWipeEffect(data)) {
|
||||
return TRUE;
|
||||
}
|
||||
@ -213,72 +224,68 @@ void IntroMovie_Scene2_InitBgs(IntroMovieOvyData *data) {
|
||||
|
||||
{
|
||||
BgTemplate bgTemplate = {
|
||||
0, 0,
|
||||
GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
0,
|
||||
GF_BG_SCR_SIZE_256x256,
|
||||
GX_BG_COLORMODE_16,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
.x = 0, .y = 0,
|
||||
.bufferSize = GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
.baseTile = 0,
|
||||
.size = GF_BG_SCR_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x0000,
|
||||
.charBase = GX_BG_CHARBASE_0x04000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 0,
|
||||
.areaOver = GX_BG_AREAOVER_XLU,
|
||||
.mosaic = FALSE
|
||||
};
|
||||
InitBgFromTemplate(bgConfig, GF_BG_LYR_SUB_0, &bgTemplate, GX_BGMODE_0);
|
||||
}
|
||||
|
||||
{
|
||||
BgTemplate bgTemplate = {
|
||||
0, 0,
|
||||
GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
0,
|
||||
GF_BG_SCR_SIZE_256x256,
|
||||
GX_BG_COLORMODE_16,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
.x = 0, .y = 0,
|
||||
.bufferSize = GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
.baseTile = 0,
|
||||
.size = GF_BG_SCR_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x0000,
|
||||
.charBase = GX_BG_CHARBASE_0x08000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 0,
|
||||
.areaOver = GX_BG_AREAOVER_XLU,
|
||||
.mosaic = FALSE
|
||||
};
|
||||
InitBgFromTemplate(bgConfig, GF_BG_LYR_MAIN_0, &bgTemplate, GX_BGMODE_0);
|
||||
}
|
||||
|
||||
{
|
||||
BgTemplate bgTemplate = {
|
||||
0, 0,
|
||||
GF_BG_BUF_SIZE_512x512_4BPP,
|
||||
0,
|
||||
GF_BG_SCR_SIZE_512x512,
|
||||
GX_BG_COLORMODE_16,
|
||||
1,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
.x = 0, .y = 0,
|
||||
.bufferSize = GF_BG_BUF_SIZE_512x512_4BPP,
|
||||
.baseTile = 0,
|
||||
.size = GF_BG_SCR_SIZE_512x512,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x0800,
|
||||
.charBase = GX_BG_CHARBASE_0x08000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 1,
|
||||
.areaOver = GX_BG_AREAOVER_XLU,
|
||||
.mosaic = FALSE
|
||||
};
|
||||
InitBgFromTemplate(bgConfig, GF_BG_LYR_MAIN_1, &bgTemplate, GX_BGMODE_0);
|
||||
}
|
||||
|
||||
{
|
||||
BgTemplate bgTemplate = {
|
||||
0, 0,
|
||||
GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
0,
|
||||
GF_BG_SCR_SIZE_256x256,
|
||||
GX_BG_COLORMODE_16,
|
||||
5,
|
||||
2,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
.x = 0, .y = 0,
|
||||
.bufferSize = GF_BG_BUF_SIZE_256x256_4BPP,
|
||||
.baseTile = 0,
|
||||
.size = GF_BG_SCR_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x2800,
|
||||
.charBase = GX_BG_CHARBASE_0x08000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 2,
|
||||
.areaOver = GX_BG_AREAOVER_XLU,
|
||||
.mosaic = FALSE
|
||||
};
|
||||
InitBgFromTemplate(bgConfig, GF_BG_LYR_MAIN_2, &bgTemplate, GX_BGMODE_0);
|
||||
}
|
||||
|
@ -132,16 +132,16 @@ BOOL IntroMovie_Scene3(IntroMovieOvyData *data, void *pVoid) {
|
||||
}
|
||||
|
||||
switch (sceneData->state) {
|
||||
case 0:
|
||||
case INTRO_MOVIE_SCENE_INIT:
|
||||
IntroMovie_Scene3_Init(data, sceneData);
|
||||
++sceneData->state;
|
||||
break;
|
||||
case 1:
|
||||
case INTRO_MOVIE_SCENE_RUN:
|
||||
if (IntroMovie_Scene3_Main(data, sceneData, IntroMovie_GetTotalFrameCount(data))) {
|
||||
++sceneData->state;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case INTRO_MOVIE_SCENE_CLEANUP:
|
||||
IntroMovie_Scene3_Exit(data, sceneData);
|
||||
return TRUE;
|
||||
}
|
||||
@ -186,9 +186,9 @@ void IntroMovie_Scene3_Show2DGfx(IntroMovieScene3Data *sceneData, BgConfig *bgCo
|
||||
|
||||
BOOL IntroMovie_Scene3_Main(IntroMovieOvyData *data, IntroMovieScene3Data *sceneData, int totalFrames) {
|
||||
u8 stepTimer;
|
||||
BgConfig *bgConfig = IntroMovie_GetBgConfig(data); // r7
|
||||
IntroMovieBgLinearAnims *bgAnimCnt = IntroMovie_GetBgLinearAnimsController(data); // r4
|
||||
stepTimer = IntroMovie_GetSceneStepTimer(data); // sp10
|
||||
BgConfig *bgConfig = IntroMovie_GetBgConfig(data);
|
||||
IntroMovieBgLinearAnims *bgAnimCnt = IntroMovie_GetBgLinearAnimsController(data);
|
||||
stepTimer = IntroMovie_GetSceneStepTimer(data);
|
||||
IntroMovie_Scene3_Animate3DMap(sceneData);
|
||||
switch (IntroMovie_GetSceneStep(data)) {
|
||||
case 0: // Show New Bark
|
||||
|
Loading…
x
Reference in New Issue
Block a user