Fix Cutscene Bss (#1305)

* demo bss

* fix bss

* sPad

* also matching

* static bss pad

* ultratypes

* spacing

* cleanup
This commit is contained in:
engineer124
2023-08-04 16:36:03 -04:00
committed by GitHub
parent 27ccadc77e
commit 4ae00e909e
3 changed files with 21 additions and 39 deletions
-19
View File
@@ -225,11 +225,7 @@ extern ActorOverlay gActorOverlayTable[ACTOR_ID_MAX];
extern ActorId gMaxActorId;
extern BgCheckSceneSubdivisionEntry sSceneSubdivisionList[];
extern BgSpecialSceneMaxObjects sCustomDynapolyMem[];
// extern UNK_TYPE1 D_801B4708;
extern u8 gOpeningEntranceIndex;
extern ActorCutscene sGlobalCutsceneList[8];
extern GameStateOverlay gGameStateOverlayTable[];
extern s32 gGraphNumGameStates;
@@ -1973,21 +1969,6 @@ extern TriNorm D_801EF5C8;
extern TriNorm D_801EF600;
extern TriNorm D_801EF638;
extern SaveContext gSaveContext;
// extern UNK_TYPE2 D_801F3F38;
// extern UNK_TYPE1 D_801F3F3A;
// extern UNK_TYPE1 D_801F3F3B;
// extern UNK_TYPE1 D_801F3F3C;
// extern UNK_TYPE1 D_801F3F42;
// extern UNK_TYPE1 D_801F3F4A;
// extern UNK_TYPE1 D_801F3F5A;
// extern UNK_TYPE1 D_801F3F80;
// extern UNK_TYPE1 D_801F3F83;
// extern UNK_TYPE1 D_801F48C8;
extern UNK_TYPE D_801F4DDC;
extern u8 gDisablePlayerCsModeStartPos;
extern s16 gDungeonBossWarpSceneId;
// extern UNK_TYPE1 D_801F4E20;
extern u8 D_801F4E30;
+7 -1
View File
@@ -781,7 +781,7 @@ typedef struct {
/* 0x2E */ UNK_TYPE1 unk_2E[2];
} CutsceneCameraInterp; // size = 0x30
typedef struct {
typedef struct CutsceneCamera {
/* 0x00 */ s16 splineIndex;
/* 0x02 */ s16 cmdIndex;
/* 0x04 */ s16 splineNeedsInit;
@@ -856,4 +856,10 @@ void CutsceneFlags_Set(struct PlayState* play, s16 flag);
void CutsceneFlags_Unset(struct PlayState* play, s16 flag);
s32 CutsceneFlags_Get(struct PlayState* play, s16 flag);
extern u8 gOpeningEntranceIndex;
extern u8 D_801F4DDC;
extern u8 gDisablePlayerCsModeStartPos;
extern s16 gDungeonBossWarpSceneId;
#endif
+14 -19
View File
@@ -1,4 +1,17 @@
#include "prevent_bss_reordering.h"
#include "PR/ultratypes.h"
// Variables are put before most headers as a hacky way to bypass bss reordering
struct CutsceneCamera;
s16 sCutsceneQuakeIndex;
struct CutsceneCamera sCutsceneCameraInfo;
u16 sCueTypeList[10];
u8 D_801F4DDC;
static s16 sBssPad;
u8 gDisablePlayerCsModeStartPos;
s16 gDungeonBossWarpSceneId;
#include "global.h"
#include "z64quake.h"
#include "z64rumble.h"
@@ -14,24 +27,12 @@ void CutsceneHandler_RunScript(PlayState* play, CutsceneContext* csCtx);
void CutsceneHandler_StopScript(PlayState* play, CutsceneContext* csCtx);
void Cutscene_SetupScripted(PlayState* play, CutsceneContext* csCtx);
// Unused
UNK_TYPE4 D_801BB120 = 0;
static s32 sPad = 0;
u16 sCurTextId = 0;
u16 sCurOcarinaAction = 0;
u8 gOpeningEntranceIndex = 0;
u8 sCutsceneStoredPlayerForm = 0;
// bss
#ifndef NON_MATCHING
static u16 sSeqId;
#endif
s16 sCutsceneQuakeIndex;
CutsceneCamera sCutsceneCameraInfo;
u16 sCueTypeList[10];
UNK_TYPE D_801F4DDC;
u8 gDisablePlayerCsModeStartPos;
s16 gDungeonBossWarpSceneId;
void Cutscene_InitContext(PlayState* play, CutsceneContext* csCtx) {
s32 i;
@@ -454,8 +455,6 @@ void Cutscene_SetSfxReverbIndexTo1(PlayState* play, CutsceneContext* csCtx, CsCm
}
}
#ifdef NON_MATCHING
// needs in-function static bss
void CutsceneCmd_ModifySequence(PlayState* play, CutsceneContext* csCtx, CsCmdModifySeq* cmd) {
static u16 sSeqId;
u8 dayMinusOne;
@@ -506,10 +505,6 @@ void CutsceneCmd_ModifySequence(PlayState* play, CutsceneContext* csCtx, CsCmdMo
}
}
}
#else
void CutsceneCmd_ModifySequence(PlayState* play, CutsceneContext* csCtx, CsCmdModifySeq* cmd);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_demo/CutsceneCmd_ModifySequence.s")
#endif
void CutsceneCmd_FadeOutAmbience(PlayState* play, CutsceneContext* csCtx, CsCmdFadeOutAmbience* cmd) {
if ((csCtx->curFrame == cmd->startFrame) && (csCtx->curFrame < cmd->endFrame)) {