mirror of
https://github.com/zeldaret/st
synced 2026-06-27 18:33:03 -04:00
Misc Stuff 3 (#39)
* cutscene stuff * fix build issues * revert accidental change and document random stuff * document cutscene indices * make mUnk_0D a bool + disambiguate a reloc * decomp some itcm functions
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
#pragma once
|
||||
|
||||
#include "global.h"
|
||||
#include "types.h"
|
||||
|
||||
#include "Save/AdventureFlags.hpp"
|
||||
|
||||
enum CutsceneIndex_ {
|
||||
/* 0 */ CutsceneIndex_TitleScreen,
|
||||
/* 1 */ CutsceneIndex_Intro,
|
||||
/* 2 */ CutsceneIndex_EngineerCertificate,
|
||||
/* 3 */ CutsceneIndex_SpiritTowerSplit_01, // Rails disappearing
|
||||
/* 4 */ CutsceneIndex_SpiritTowerSplit_02, // Spirit Tower split
|
||||
/* 5 */ CutsceneIndex_SpiritTowerSplit_03, // Tower parts aligning
|
||||
/* 6 */ CutsceneIndex_SpiritTowerSplit_04, // Demon Train appearing
|
||||
/* 7 */ CutsceneIndex_SpiritTowerSplit_05, // Zelda becoming a ghost
|
||||
/* 8 */ CutsceneIndex_WalkingToSpiritTower,
|
||||
/* 9 */ CutsceneIndex_FirstAnjeanMeeting,
|
||||
/* 10 */ CutsceneIndex_FirstPhantomPossession,
|
||||
/* 11 */ CutsceneIndex_ForestTempleCompleted_01, // Altar appearing in boss room
|
||||
/* 12 */ CutsceneIndex_ForestTempleCompleted_02, // Forest Realm Spirit Tracks restoring
|
||||
/* 13 */ CutsceneIndex_ForestTempleCompleted_03, // First part of Spirit Tower split re-attatching
|
||||
/* 14 */ CutsceneIndex_BlizzardTempleCompleted_01, // Altar appearing in boss room
|
||||
/* 15 */ CutsceneIndex_BlizzardTempleCompleted_02, // Snow Realm Spirit Tracks restoring
|
||||
/* 16 */ CutsceneIndex_BlizzardTempleCompleted_03, // Second part of Spirit Tower split re-attatching
|
||||
/* 17 */ CutsceneIndex_MarineTempleCompleted_01, // Altar appearing in boss room
|
||||
/* 18 */ CutsceneIndex_MarineTempleCompleted_02, // Ocean Realm Spirit Tracks restoring
|
||||
/* 19 */ CutsceneIndex_MarineTempleCompleted_03, // Third part of Spirit Tower split re-attatching
|
||||
/* 20 */ CutsceneIndex_StavenInTOSAfterFireGlyph_01, // Staven appearing in ToS
|
||||
/* 21 */ CutsceneIndex_StavenInTOSAfterFireGlyph_02, // Zelda and Link falling inside tower's lobby
|
||||
/* 22 */ CutsceneIndex_MountainTempleCompleted_01, // Altar appearing in boss room
|
||||
/* 23 */ CutsceneIndex_MountainTempleCompleted_02, // Fire Realm Spirit Tracks restoring
|
||||
/* 24 */ CutsceneIndex_MountainTempleCompleted_03, // Fourth part of Spirit Tower split re-attatching
|
||||
/* 25 */ CutsceneIndex_StavenPreBattle,
|
||||
/* 26 */ CutsceneIndex_StavenPostBattle,
|
||||
/* 27 */ CutsceneIndex_MalladusOnTOSSummit_01, // Malladus appearing
|
||||
/* 28 */ CutsceneIndex_MalladusOnTOSSummit_02, // Malladus and Cole leaving with the Demon Train
|
||||
/* 29 */ CutsceneIndex_PassengerCarAnjeanBowOfLight,
|
||||
/* 30 */ CutsceneIndex_LokomoSword,
|
||||
/* 31 */ CutsceneIndex_PassengerCarBeforeMalladusFight,
|
||||
/* 32 */ CutsceneIndex_BoardingDemonTrain,
|
||||
/* 33 */ CutsceneIndex_BeforeMalladusBeast_01, // Demon Train getting destroyed
|
||||
/* 34 */ CutsceneIndex_BeforeMalladusBeast_02, // Zelda getting her body back
|
||||
/* 35 */ CutsceneIndex_BeforeMalladusBeast_03, // Beast Malladus appearing
|
||||
/* 36 */ CutsceneIndex_PreCredits,
|
||||
/* 37 */ CutsceneIndex_Credits_01, // Credits followed by first ending
|
||||
/* 38 */ CutsceneIndex_Credits_02, // Credits followed by second ending
|
||||
/* 39 */ CutsceneIndex_Credits_03, // Credits followed by third ending
|
||||
/* 40 */ CutsceneIndex_SpiritPipes,
|
||||
/* 41 */ CutsceneIndex_ForestTracksRestoredFromGlyph,
|
||||
/* 42 */ CutsceneIndex_MalladusBeastDestroyed,
|
||||
/* 43 */ CutsceneIndex_Max,
|
||||
|
||||
CutsceneIndex_None = CutsceneIndex_Max,
|
||||
};
|
||||
|
||||
struct CutsceneParamsEntry {
|
||||
/* 00 */ const char *mUnk_00;
|
||||
/* 04 */ u8 mSceneIndex;
|
||||
/* 05 */ u8 mRoomIndex;
|
||||
/* 06 */ u8 mSpawnIndex;
|
||||
/* 07 */ u8 mCutsceneIndex; // note: this seems to be the index of the current entry?
|
||||
/* 08 */ u8 mNextSceneIndex;
|
||||
/* 09 */ u8 mNextRoomIndex;
|
||||
/* 0A */ u8 mNextSpawnIndex;
|
||||
/* 0B */ u8 mNextCutsceneIndex;
|
||||
/* 0C */ bool mNextIsCS; // doesn't makes sense with the array's data
|
||||
/* 0C */ bool mUnk_0D;
|
||||
/* 0E */ unk16 mUnk_0E;
|
||||
/* 10 */ AdventureFlag_Half mFlag;
|
||||
/* 12 */ unk16 mUnk_12; // pad?
|
||||
/* 14 */ u32 mUnk_14;
|
||||
/* 18 */ u32 mUnk_18;
|
||||
/* 1C */
|
||||
};
|
||||
|
||||
CutsceneParamsEntry *Cutscene_GetParamEntry(s32 csIndex);
|
||||
s32 func_ov000_020a7840(unk32 param1);
|
||||
bool Cutscene_IsAdventureFlagSet(s32 csIndex);
|
||||
|
||||
extern const CutsceneParamsEntry gCSParamsEntries[CutsceneIndex_Max];
|
||||
@@ -150,6 +150,7 @@ public:
|
||||
MapObject();
|
||||
|
||||
MapObjectId GetMapObjectId();
|
||||
void func_01fff590(unk32 param2);
|
||||
|
||||
bool func_ov000_0209d114();
|
||||
bool func_ov000_0209d12c();
|
||||
|
||||
@@ -4,12 +4,19 @@
|
||||
#include "Unknown/UnkStruct_ov000_020b34c4.hpp"
|
||||
#include "types.h"
|
||||
|
||||
typedef void (*UnkCallback_func_01fff4cc)(void *, void *);
|
||||
|
||||
struct UnkStruct_func_01fff498 {
|
||||
u8 ptrIndex;
|
||||
u8 valueIndex;
|
||||
};
|
||||
|
||||
class MapObjectManager {
|
||||
public:
|
||||
/* 00 */ MapObject **mMapObjTable;
|
||||
/* 04 */ MapObject **mMapObjTableEnd;
|
||||
/* 08 */ MapObject **mUnk_08; // pointer to first available slot?
|
||||
/* 0C */ void **mUnk_0C; // unknown table
|
||||
/* 0C */ s16 **mUnk_0C; // unknown table
|
||||
/* 10 */ void **mUnk_10; // unknown table end
|
||||
/* 14 */ void *mUnk_14;
|
||||
/* 18 */ unk16 mUnk_18;
|
||||
@@ -22,14 +29,19 @@ public:
|
||||
/* 6C */ void *mUnk_6C;
|
||||
/* 70 */
|
||||
|
||||
MapObject **func_01fff520(UnkStruct_ov000_020b34c4 *param1, void *);
|
||||
MapObject *func_01fff498(unk32 param1, unk32 param2);
|
||||
MapObject *func_01fff498(UnkStruct_func_01fff498 param1);
|
||||
void func_01fff4cc(UnkCallback_func_01fff4cc param1, void *param2);
|
||||
MapObject **func_01fff520(UnkStruct_ov000_020b34c4 *param1, MapObject **param2);
|
||||
|
||||
void func_ov000_0209c3a8();
|
||||
void func_ov000_0209c3e8();
|
||||
void func_ov000_0209c444();
|
||||
|
||||
void SetInstance(); // func_ov001_020baf4c
|
||||
void ClearInstance(); // func_ov001_020baf58
|
||||
|
||||
static void func_ov000_0209c490();
|
||||
static MapObjectManager *Create(); // func_ov001_020bac40
|
||||
};
|
||||
|
||||
extern MapObjectManager *gpMapObjManager;
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "types.h"
|
||||
|
||||
typedef u32 AdventureFlag;
|
||||
typedef u16 AdventureFlag_Half;
|
||||
enum AdventureFlag_ {
|
||||
/* 0x000 */ AdventureFlag_Unk_000 = FLAG(0, 0),
|
||||
/* 0x001 */ AdventureFlag_Unk_001 = FLAG(0, 1),
|
||||
@@ -160,7 +161,7 @@ enum AdventureFlag_ {
|
||||
/* 0x08F */ AdventureFlag_Unk_08F = FLAG(4, 15),
|
||||
/* 0x090 */ AdventureFlag_WatchedIntroCS = FLAG(4, 16),
|
||||
/* 0x091 */ AdventureFlag_WatchedFirstPhantomPossessionCS = FLAG(4, 17),
|
||||
/* 0x092 */ AdventureFlag_WatchedFireTempleCompletedCS = FLAG(4, 18),
|
||||
/* 0x092 */ AdventureFlag_WatchedForestTempleCompletedCS = FLAG(4, 18),
|
||||
/* 0x093 */ AdventureFlag_TalkedToZeldaMayscoreFirstTime = FLAG(4, 19),
|
||||
/* 0x094 */ AdventureFlag_TalkedToZeldaPhantomPossessionFirstTime = FLAG(4, 20),
|
||||
/* 0x095 */ AdventureFlag_Unk_095 = FLAG(4, 21),
|
||||
@@ -1070,4 +1071,5 @@ enum AdventureFlag_ {
|
||||
/* 0x3FD */ AdventureFlag_Unk_3FD = FLAG(31, 29),
|
||||
/* 0x3FE */ AdventureFlag_Unk_3FE = FLAG(31, 30),
|
||||
/* 0x3FF */ AdventureFlag_Unk_3FF = FLAG(31, 31),
|
||||
/* 0x400 */ AdventureFlag_None = 0x400,
|
||||
};
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "Cutscene/Cutscene.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_0204a060.hpp"
|
||||
#include "global.h"
|
||||
@@ -164,7 +165,7 @@ struct UnkStruct_SceneChange1 {
|
||||
/* 08 */ unk16 mUnk_08;
|
||||
/* 0A */ u8 mRoomIndex;
|
||||
/* 0B */ unk8 mSpawnIndex;
|
||||
/* 0C */ unk8 mUnk_0C;
|
||||
/* 0C */ bool mNextIsCS;
|
||||
/* 0D */ unk8 mUnk_0D;
|
||||
/* 0E */ unk8 mCutsceneIndex;
|
||||
/* 0F */ unk8 mUnk_0F;
|
||||
@@ -181,12 +182,30 @@ struct UnkStruct_SceneChange1 {
|
||||
this->mRoomIndex = 0xFF; // this changes when you enter a house, it's not clear if it has another purpose yet
|
||||
this->mSpawnIndex = 0; // changing this then saving will change your spawn location after opening the save again
|
||||
// (not the area)
|
||||
this->mUnk_0C = 0;
|
||||
this->mNextIsCS = false;
|
||||
this->mUnk_0D = 0;
|
||||
this->mCutsceneIndex = 0x2B; // array length of `data_ov000_020af780`
|
||||
this->mCutsceneIndex = CutsceneIndex_None;
|
||||
this->mUnk_0F = 0;
|
||||
this->mUnk_10 = 0;
|
||||
}
|
||||
|
||||
UnkStruct_SceneChange1(CutsceneParamsEntry *pEntry, bool nextIsCS) {
|
||||
u8 sceneIndex = pEntry->mSceneIndex;
|
||||
u8 cutsceneIndex = pEntry->mCutsceneIndex;
|
||||
u8 spawnIndex = pEntry->mSpawnIndex;
|
||||
u8 roomIndex = pEntry->mRoomIndex;
|
||||
|
||||
this->mNextSceneIndex = sceneIndex;
|
||||
this->mUnk_04 = 0;
|
||||
this->mUnk_08 = 0;
|
||||
this->mRoomIndex = roomIndex;
|
||||
this->mSpawnIndex = spawnIndex;
|
||||
this->mNextIsCS = nextIsCS;
|
||||
this->mUnk_0D = 0;
|
||||
this->mCutsceneIndex = cutsceneIndex;
|
||||
this->mUnk_0F = 0;
|
||||
this->mUnk_10 = 0;
|
||||
}
|
||||
};
|
||||
|
||||
class UnkStruct_WarpUnk1 : public UnkStruct_0204a060_Base {
|
||||
@@ -206,7 +225,7 @@ public:
|
||||
/* 08 */ unk32 mUnk_08;
|
||||
/* 0C */ u8 mUnk_0C;
|
||||
/* 0D */ unk8 mUnk_0D;
|
||||
/* 0E */ unk8 mUnk_0E;
|
||||
/* 0E */ u8 mCutsceneIndex;
|
||||
/* 0F */ unk8 mUnk_0F;
|
||||
/* 10 */ unk32 *mUnk_10;
|
||||
/* 14 */ UnkStruct_SceneChange1 mUnk_14;
|
||||
@@ -214,7 +233,7 @@ public:
|
||||
/* 54 */ void *mUnk_54; // vtable
|
||||
/* 58 */ UnkStruct_WarpUnk1 *mpWarpUnk1;
|
||||
/* 5C */ unk32 mUnk_5C;
|
||||
/* 60 */ unk32 mUnk_60;
|
||||
/* 60 */ unk32 mUnk_60; // related to ds download?
|
||||
/* 64 */ unk32 mUnk_64;
|
||||
/* 68 */
|
||||
|
||||
@@ -245,7 +264,7 @@ public:
|
||||
|
||||
UnkStruct_func_01ffd400 *func_01ffd400();
|
||||
|
||||
unk8 func_ov000_02070bd0(unk32, unk32);
|
||||
unk8 func_ov000_02070bd0(unk32 csIndex, unk32 param2);
|
||||
UnkStruct_027e09a4_58_78 *func_ov000_02070560();
|
||||
void func_ov000_020707a8(void *param1);
|
||||
void func_ov000_02070834(void *param1);
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
class UnkStruct_027e09b8 {
|
||||
public:
|
||||
/* 00 */ unk8 mUnk_00[0x14];
|
||||
/* 14 */ u32 mUnk_14[1]; //! TODO
|
||||
/* 14 */ u32 mAdventureFlags[32]; //! TODO
|
||||
|
||||
unk32 func_01ffd420();
|
||||
|
||||
|
||||
@@ -2,10 +2,16 @@
|
||||
|
||||
#include "types.h"
|
||||
|
||||
//! TODO: this is probably all fake to match func_01fff520
|
||||
|
||||
typedef bool (**UnkStruct_ov000_020b34c4_Callback)(void *, void *);
|
||||
|
||||
class UnkStruct_ov000_020b34c4 {
|
||||
public:
|
||||
/* 00 */ void *mUnk_00;
|
||||
/* 00 */ UnkStruct_ov000_020b34c4_Callback mUnk_00;
|
||||
/* 04 */ unk32 mUnk_04;
|
||||
|
||||
/* 00 */ virtual bool vfunc_00(void *param1);
|
||||
};
|
||||
|
||||
extern UnkStruct_ov000_020b34c4 data_ov000_020b34c4;
|
||||
|
||||
Reference in New Issue
Block a user