mirror of
https://github.com/zeldaret/st
synced 2026-05-24 07:10:56 -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:
@@ -1,2 +1,5 @@
|
||||
.text start:0x01ff8000 end:0x01fffe18 kind:code align:32
|
||||
.bss start:0x01fffe20 end:0x01fffe20 kind:bss align:32
|
||||
|
||||
src/ITCM/ITCM_MapObjectManager.cpp:
|
||||
.text start:0x01fff498 end:0x01fff5d0
|
||||
|
||||
@@ -204,11 +204,11 @@ _ZN12ActorManager13func_01fff3b4Ei kind:function(arm,size=0x8c) addr:0x01fff3b4
|
||||
func_01fff440 kind:function(arm,size=0x18) addr:0x01fff440
|
||||
_ZN5Actor10GetActorIdEv kind:function(arm,size=0xc) addr:0x01fff458
|
||||
_ZN5Actor8vfunc_10Ev kind:function(arm,size=0x34) addr:0x01fff464
|
||||
_ZN16MapObjectManager13func_01fff498Eii kind:function(arm,size=0x34) addr:0x01fff498
|
||||
func_01fff4cc kind:function(arm,size=0x54) addr:0x01fff4cc
|
||||
func_01fff520 kind:function(arm,size=0x64) addr:0x01fff520
|
||||
_ZN16MapObjectManager13func_01fff498E23UnkStruct_func_01fff498 kind:function(arm,size=0x34) addr:0x01fff498
|
||||
_ZN16MapObjectManager13func_01fff4ccEPFvPvS0_ES0_ kind:function(arm,size=0x54) addr:0x01fff4cc
|
||||
_ZN16MapObjectManager13func_01fff520EP24UnkStruct_ov000_020b34c4PP9MapObject kind:function(arm,size=0x64) addr:0x01fff520
|
||||
_ZN9MapObject14GetMapObjectIdEv kind:function(arm,size=0xc) addr:0x01fff584
|
||||
func_01fff590 kind:function(arm,size=0x40) addr:0x01fff590
|
||||
_ZN9MapObject13func_01fff590Ei kind:function(arm,size=0x40) addr:0x01fff590
|
||||
_ZN10ActorRupee13func_01fff5d0Eii kind:function(arm,size=0x3c) addr:0x01fff5d0
|
||||
_ZN18UnkStruct_027e09b413func_01fff60cEiiihii kind:function(arm,size=0x8c) addr:0x01fff60c
|
||||
func_01fff698 kind:function(arm,size=0x38) addr:0x01fff698
|
||||
|
||||
@@ -90,6 +90,11 @@ src/000_Second/MapObject/MapObjectMiniBlocks.cpp:
|
||||
.data start:0x020b3744 end:0x020b37ac
|
||||
.bss start:0x020b6228 end:0x020b62a0
|
||||
|
||||
src/000_Second/Cutscene/Cutscene.cpp:
|
||||
.text start:0x020a782c end:0x020a7908
|
||||
.rodata start:0x020af780 end:0x020afc3c
|
||||
.data start:0x020b4bd0 end:0x020b4d28
|
||||
|
||||
src/000_Second/Item/ItemManager.cpp:
|
||||
complete
|
||||
.text start:0x020a863c end:0x020a8ae0
|
||||
|
||||
@@ -2959,9 +2959,9 @@ func_ov000_020a7748 kind:function(arm,size=0x14) addr:0x020a7748
|
||||
func_ov000_020a775c kind:function(arm,size=0x28) addr:0x020a775c
|
||||
func_ov000_020a7784 kind:function(arm,size=0x4c) addr:0x020a7784
|
||||
func_ov000_020a77d0 kind:function(arm,size=0x5c) addr:0x020a77d0
|
||||
func_ov000_020a782c kind:function(arm,size=0x14) addr:0x020a782c
|
||||
_Z22Cutscene_GetParamEntryi kind:function(arm,size=0x14) addr:0x020a782c
|
||||
func_ov000_020a7840 kind:function(arm,size=0x84) addr:0x020a7840
|
||||
func_ov000_020a78c4 kind:function(arm,size=0x44) addr:0x020a78c4
|
||||
_Z27Cutscene_IsAdventureFlagSeti kind:function(arm,size=0x44) addr:0x020a78c4
|
||||
func_ov000_020a7908 kind:function(arm,size=0xdc) addr:0x020a7908
|
||||
func_ov000_020a79e4 kind:function(arm,size=0x6c) addr:0x020a79e4
|
||||
func_ov000_020a7a50 kind:function(arm,size=0x20) addr:0x020a7a50
|
||||
@@ -3274,7 +3274,7 @@ data_ov000_020af760 kind:data(any) addr:0x020af760
|
||||
data_ov000_020af764 kind:data(any) addr:0x020af764
|
||||
data_ov000_020af770 kind:data(any) addr:0x020af770
|
||||
data_ov000_020af77c kind:data(any) addr:0x020af77c
|
||||
data_ov000_020af780 kind:data(any) addr:0x020af780
|
||||
gCSParamsEntries kind:data(any) addr:0x020af780
|
||||
data_ov000_020afc3c kind:data(any) addr:0x020afc3c
|
||||
gQuiverCapacities kind:data(any) addr:0x020afc40
|
||||
gBombBagCapacities kind:data(any) addr:0x020afc43
|
||||
|
||||
@@ -80,7 +80,7 @@ from:0x02165f0c kind:arm_call to:0x02165f18 module:overlay(88)
|
||||
from:0x02165f24 kind:arm_call to:0x0216f414 module:overlay(88)
|
||||
from:0x02165f38 kind:arm_call to:0x02013724 module:main
|
||||
from:0x02165f48 kind:arm_call to:0x020a782c module:overlay(0)
|
||||
from:0x02165fa0 kind:arm_call to:0x020d1a08 module:overlays(20,24)
|
||||
from:0x02165fa0 kind:arm_call to:0x020d1a08 module:overlay(24)
|
||||
from:0x02165fec kind:arm_call to:0x02070a9c module:overlay(0)
|
||||
from:0x02165ff8 kind:load to:0x02049a2c module:main
|
||||
from:0x02165ffc kind:load to:0x020be079 module:overlay(1)
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
.text start:0x01ff8000 end:0x01fffe18 kind:code align:32
|
||||
.bss start:0x01fffe20 end:0x01fffe20 kind:bss align:32
|
||||
|
||||
src/ITCM/ITCM_MapObjectManager.cpp:
|
||||
.text start:0x01fff498 end:0x01fff5d0
|
||||
|
||||
@@ -204,11 +204,11 @@ _ZN12ActorManager13func_01fff3b4Ei kind:function(arm,size=0x8c) addr:0x01fff3b4
|
||||
func_01fff440 kind:function(arm,size=0x18) addr:0x01fff440
|
||||
_ZN5Actor10GetActorIdEv kind:function(arm,size=0xc) addr:0x01fff458
|
||||
_ZN5Actor8vfunc_10Ev kind:function(arm,size=0x34) addr:0x01fff464
|
||||
_ZN16MapObjectManager13func_01fff498Eii kind:function(arm,size=0x34) addr:0x01fff498
|
||||
func_01fff4cc kind:function(arm,size=0x54) addr:0x01fff4cc
|
||||
func_01fff520 kind:function(arm,size=0x64) addr:0x01fff520
|
||||
_ZN16MapObjectManager13func_01fff498E23UnkStruct_func_01fff498 kind:function(arm,size=0x34) addr:0x01fff498
|
||||
_ZN16MapObjectManager13func_01fff4ccEPFvPvS0_ES0_ kind:function(arm,size=0x54) addr:0x01fff4cc
|
||||
_ZN16MapObjectManager13func_01fff520EP24UnkStruct_ov000_020b34c4PP9MapObject kind:function(arm,size=0x64) addr:0x01fff520
|
||||
_ZN9MapObject14GetMapObjectIdEv kind:function(arm,size=0xc) addr:0x01fff584
|
||||
func_01fff590 kind:function(arm,size=0x40) addr:0x01fff590
|
||||
_ZN9MapObject13func_01fff590Ei kind:function(arm,size=0x40) addr:0x01fff590
|
||||
_ZN10ActorRupee13func_01fff5d0Eii kind:function(arm,size=0x3c) addr:0x01fff5d0
|
||||
_ZN18UnkStruct_027e09b413func_01fff60cEiiihii kind:function(arm,size=0x8c) addr:0x01fff60c
|
||||
func_01fff698 kind:function(arm,size=0x38) addr:0x01fff698
|
||||
|
||||
@@ -89,6 +89,11 @@ src/000_Second/MapObject/MapObjectMiniBlocks.cpp:
|
||||
.data start:0x020b4f44 end:0x020b4fac
|
||||
.bss start:0x020b7a38 end:0x020b7ab0
|
||||
|
||||
src/000_Second/Cutscene/Cutscene.cpp:
|
||||
.text start:0x020a902c end:0x020a9108
|
||||
.rodata start:0x020b0f90 end:0x020b144c
|
||||
.data start:0x020b63d0 end:0x020b6528
|
||||
|
||||
src/000_Second/Item/ItemManager.cpp:
|
||||
complete
|
||||
.text start:0x020a9e3c end:0x020aa2e0
|
||||
|
||||
@@ -2958,9 +2958,9 @@ func_ov000_020a8f48 kind:function(arm,size=0x14) addr:0x020a8f48
|
||||
func_ov000_020a8f5c kind:function(arm,size=0x28) addr:0x020a8f5c
|
||||
func_ov000_020a8f84 kind:function(arm,size=0x4c) addr:0x020a8f84
|
||||
func_ov000_020a8fd0 kind:function(arm,size=0x5c) addr:0x020a8fd0
|
||||
func_ov000_020a782c kind:function(arm,size=0x14) addr:0x020a902c
|
||||
_Z22Cutscene_GetParamEntryi kind:function(arm,size=0x14) addr:0x020a902c
|
||||
func_ov000_020a9040 kind:function(arm,size=0x84) addr:0x020a9040
|
||||
func_ov000_020a90c4 kind:function(arm,size=0x44) addr:0x020a90c4
|
||||
_Z27Cutscene_IsAdventureFlagSeti kind:function(arm,size=0x44) addr:0x020a90c4
|
||||
func_ov000_020a9108 kind:function(arm,size=0xdc) addr:0x020a9108
|
||||
func_ov000_020a91e4 kind:function(arm,size=0x6c) addr:0x020a91e4
|
||||
func_ov000_020a9250 kind:function(arm,size=0x20) addr:0x020a9250
|
||||
@@ -3274,7 +3274,7 @@ data_ov000_020b0f70 kind:data(any) addr:0x020b0f70
|
||||
data_ov000_020b0f74 kind:data(any) addr:0x020b0f74
|
||||
data_ov000_020b0f80 kind:data(any) addr:0x020b0f80
|
||||
data_ov000_020b0f8c kind:data(any) addr:0x020b0f8c
|
||||
data_ov000_020b0f90 kind:data(any) addr:0x020b0f90
|
||||
gCSParamsEntries kind:data(any) addr:0x020b0f90
|
||||
data_ov000_020b144c kind:data(any) addr:0x020b144c
|
||||
gQuiverCapacities kind:data(any) addr:0x020b1450
|
||||
gBombBagCapacities kind:data(any) addr:0x020b1453
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -0,0 +1,839 @@
|
||||
#include "Cutscene/Cutscene.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a4.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b8.hpp"
|
||||
|
||||
const CutsceneParamsEntry gCSParamsEntries[CutsceneIndex_Max] = {
|
||||
{
|
||||
// CutsceneIndex_TitleScreen
|
||||
.mUnk_00 = "d00_01",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_TitleScreen,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_TitleScreen,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x0048,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 1,
|
||||
.mUnk_18 = 0,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_Intro
|
||||
.mUnk_00 = "d02_01",
|
||||
.mSceneIndex = SceneIndex_f_first,
|
||||
.mRoomIndex = 0x0A,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_Intro,
|
||||
.mNextSceneIndex = SceneIndex_f_first,
|
||||
.mNextRoomIndex = 0x0A,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = true,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x0049,
|
||||
.mFlag = AdventureFlag_WatchedIntroCS,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_EngineerCertificate
|
||||
.mUnk_00 = "d03_01",
|
||||
.mSceneIndex = SceneIndex_f_hyral,
|
||||
.mRoomIndex = 0x06,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_EngineerCertificate,
|
||||
.mNextSceneIndex = SceneIndex_f_hyral,
|
||||
.mNextRoomIndex = 0x06,
|
||||
.mNextSpawnIndex = 0x04,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x004A,
|
||||
.mFlag = AdventureFlag_ObtainedEngineerCertificate,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_SpiritTowerSplit_01 (Rails disappearing)
|
||||
.mUnk_00 = "d04_01",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x03,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_SpiritTowerSplit_01,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x02,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_SpiritTowerSplit_02,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x004B,
|
||||
.mFlag = AdventureFlag_WatchedSpiritTowerSplitCS,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_SpiritTowerSplit_02 (Spirit Tower split)
|
||||
.mUnk_00 = "d04_02",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x02,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_SpiritTowerSplit_02,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x03,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_SpiritTowerSplit_03,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x004C,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 1,
|
||||
.mUnk_18 = 0,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_SpiritTowerSplit_03 (Tower parts aligning)
|
||||
.mUnk_00 = "d04_03",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x03,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_SpiritTowerSplit_03,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x03,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_SpiritTowerSplit_04,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x004D,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_SpiritTowerSplit_04 (Demon Train appearing)
|
||||
.mUnk_00 = "d04_04",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x03,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_SpiritTowerSplit_04,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x03,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_SpiritTowerSplit_05,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = true,
|
||||
.mUnk_0E = 0x0062,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_SpiritTowerSplit_05 (Zelda becoming a ghost)
|
||||
.mUnk_00 = "d04_05",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x03,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_SpiritTowerSplit_05,
|
||||
.mNextSceneIndex = SceneIndex_f_hyral,
|
||||
.mNextRoomIndex = 0x03,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x0062,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_WalkingToSpiritTower
|
||||
.mUnk_00 = "d05_01",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x03,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_WalkingToSpiritTower,
|
||||
.mNextSceneIndex = SceneIndex_d_main_f,
|
||||
.mNextRoomIndex = 0x01,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_FirstAnjeanMeeting,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x004E,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 1,
|
||||
.mUnk_18 = 0,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_FirstAnjeanMeeting
|
||||
.mUnk_00 = "d06_01",
|
||||
.mSceneIndex = SceneIndex_d_main_f,
|
||||
.mRoomIndex = 0x01,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_FirstAnjeanMeeting,
|
||||
.mNextSceneIndex = SceneIndex_d_main_f,
|
||||
.mNextRoomIndex = 0x01,
|
||||
.mNextSpawnIndex = 0x04,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x004F,
|
||||
.mFlag = AdventureFlag_MetAnjeanFirstTime,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_FirstPhantomPossession
|
||||
.mUnk_00 = "d07_01",
|
||||
.mSceneIndex = SceneIndex_d_main,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x02,
|
||||
.mCutsceneIndex = CutsceneIndex_FirstPhantomPossession,
|
||||
.mNextSceneIndex = SceneIndex_d_main,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x02,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x0050,
|
||||
.mFlag = AdventureFlag_WatchedFirstPhantomPossessionCS,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_ForestTempleCompleted_01 (Altar appearing in boss room)
|
||||
.mUnk_00 = "d08_01",
|
||||
.mSceneIndex = SceneIndex_b_forest,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_ForestTempleCompleted_01,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x01,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_ForestTempleCompleted_02,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = true,
|
||||
.mUnk_0E = 0x0051,
|
||||
.mFlag = AdventureFlag_WatchedForestTempleCompletedCS,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_ForestTempleCompleted_02 (Forest Realm Spirit Tracks restoring)
|
||||
.mUnk_00 = "d08_02",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x01,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_ForestTempleCompleted_02,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x02,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_ForestTempleCompleted_03,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = true,
|
||||
.mUnk_0E = 0x0052,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 1,
|
||||
.mUnk_18 = 0,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_ForestTempleCompleted_03 (First part of Spirit Tower split re-attatching)
|
||||
.mUnk_00 = "d08_03",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x02,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_ForestTempleCompleted_03,
|
||||
.mNextSceneIndex = SceneIndex_b_forest,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x02,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x0053,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 1,
|
||||
.mUnk_18 = 0,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_BlizzardTempleCompleted_01 (Altar appearing in boss room)
|
||||
.mUnk_00 = "d09_01",
|
||||
.mSceneIndex = SceneIndex_b_snow,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_BlizzardTempleCompleted_01,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x06,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_BlizzardTempleCompleted_02,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = true,
|
||||
.mUnk_0E = 0x0054,
|
||||
.mFlag = AdventureFlag_WatchedBlizzardTempleCompletedCS,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_BlizzardTempleCompleted_02 (Snow Realm Spirit Tracks restoring)
|
||||
.mUnk_00 = "d09_02",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x06,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_BlizzardTempleCompleted_02,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x07,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_BlizzardTempleCompleted_03,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = true,
|
||||
.mUnk_0E = 0x0055,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 1,
|
||||
.mUnk_18 = 0,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_BlizzardTempleCompleted_03 (Second part of Spirit Tower split re-attatching)
|
||||
.mUnk_00 = "d09_03",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x07,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_BlizzardTempleCompleted_03,
|
||||
.mNextSceneIndex = SceneIndex_b_snow,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x0053,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 1,
|
||||
.mUnk_18 = 0,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_MarineTempleCompleted_01 (Altar appearing in boss room)
|
||||
.mUnk_00 = "d10_01",
|
||||
.mSceneIndex = SceneIndex_b_water,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x01,
|
||||
.mCutsceneIndex = CutsceneIndex_MarineTempleCompleted_01,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x04,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_MarineTempleCompleted_02,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = true,
|
||||
.mUnk_0E = 0x0056,
|
||||
.mFlag = AdventureFlag_WatchedMarineTempleCompletedCS,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_MarineTempleCompleted_02 (Ocean Realm Spirit Tracks restoring)
|
||||
.mUnk_00 = "d10_02",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x04,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_MarineTempleCompleted_02,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x05,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_MarineTempleCompleted_03,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = true,
|
||||
.mUnk_0E = 0x0057,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 1,
|
||||
.mUnk_18 = 0,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_MarineTempleCompleted_03 (Third part of Spirit Tower split re-attatching)
|
||||
.mUnk_00 = "d10_03",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x05,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_MarineTempleCompleted_03,
|
||||
.mNextSceneIndex = SceneIndex_b_water,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x01,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x0053,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 1,
|
||||
.mUnk_18 = 0,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_StavenInTOSAfterFireGlyph_01 (Staven appearing in ToS)
|
||||
.mUnk_00 = "d11_01",
|
||||
.mSceneIndex = SceneIndex_d_main,
|
||||
.mRoomIndex = 0x0F,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_StavenInTOSAfterFireGlyph_01,
|
||||
.mNextSceneIndex = SceneIndex_d_main_f,
|
||||
.mNextRoomIndex = 0x01,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_StavenInTOSAfterFireGlyph_02,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x0061,
|
||||
.mFlag = AdventureFlag_MetStavenInTOSAfterFireGlyphCS,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_StavenInTOSAfterFireGlyph_02 (Zelda and Link falling inside tower's lobby)
|
||||
.mUnk_00 = "d11_02",
|
||||
.mSceneIndex = SceneIndex_d_main_f,
|
||||
.mRoomIndex = 0x01,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_StavenInTOSAfterFireGlyph_02,
|
||||
.mNextSceneIndex = SceneIndex_d_main_f,
|
||||
.mNextRoomIndex = 0x01,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x004F,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_MountainTempleCompleted_01 (Altar appearing in boss room)
|
||||
.mUnk_00 = "d12_01",
|
||||
.mSceneIndex = SceneIndex_b_flame,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_MountainTempleCompleted_01,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x08,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_MountainTempleCompleted_02,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = true,
|
||||
.mUnk_0E = 0x0058,
|
||||
.mFlag = AdventureFlag_WatchedMountainTempleCompletedCS,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_MountainTempleCompleted_02 (Fire Realm Spirit Tracks restoring)
|
||||
.mUnk_00 = "d12_02",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x08,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_MountainTempleCompleted_02,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x02,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_MountainTempleCompleted_03,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = true,
|
||||
.mUnk_0E = 0x0059,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 1,
|
||||
.mUnk_18 = 0,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_MountainTempleCompleted_03 (Fourth part of Spirit Tower split re-attatching)
|
||||
.mUnk_00 = "d12_03",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x09,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_MountainTempleCompleted_03,
|
||||
.mNextSceneIndex = SceneIndex_b_flame,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x01,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x0053,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 1,
|
||||
.mUnk_18 = 0,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_StavenPreBattle
|
||||
.mUnk_00 = "d13_01",
|
||||
.mSceneIndex = SceneIndex_b_deago,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x02,
|
||||
.mCutsceneIndex = CutsceneIndex_StavenPreBattle,
|
||||
.mNextSceneIndex = SceneIndex_b_deago,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x005A,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_StavenPostBattle
|
||||
.mUnk_00 = "d14_01",
|
||||
.mSceneIndex = SceneIndex_b_deago,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_StavenPostBattle,
|
||||
.mNextSceneIndex = SceneIndex_b_deago,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x03,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x005A,
|
||||
.mFlag = AdventureFlag_WatchedStavenPostBattleCS,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_MalladusOnTOSSummit_01 (Malladus appearing)
|
||||
.mUnk_00 = "d15_01",
|
||||
.mSceneIndex = SceneIndex_d_main_a,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_MalladusOnTOSSummit_01,
|
||||
.mNextSceneIndex = SceneIndex_d_main_a,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_MalladusOnTOSSummit_02,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x005B,
|
||||
.mFlag = AdventureFlag_WatchedMalladusOnTOSSummitCS,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_MalladusOnTOSSummit_02 (Malladus and Cole leaving with the Demon Train)
|
||||
.mUnk_00 = "d15_02",
|
||||
.mSceneIndex = SceneIndex_d_main_a,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_MalladusOnTOSSummit_02,
|
||||
.mNextSceneIndex = SceneIndex_f_passenger,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_PassengerCarAnjeanBowOfLight,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x005B,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_PassengerCarAnjeanBowOfLight
|
||||
.mUnk_00 = "d16_01",
|
||||
.mSceneIndex = SceneIndex_f_passenger,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_PassengerCarAnjeanBowOfLight,
|
||||
.mNextSceneIndex = SceneIndex_f_passenger,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x005C,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_LokomoSword
|
||||
.mUnk_00 = "d17_01",
|
||||
.mSceneIndex = SceneIndex_f_passenger,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_LokomoSword,
|
||||
.mNextSceneIndex = SceneIndex_t_area2,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x07,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x005C,
|
||||
.mFlag = AdventureFlag_WatchedLokomoSwordCS,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_PassengerCarBeforeMalladusFight
|
||||
.mUnk_00 = "d18_01",
|
||||
.mSceneIndex = SceneIndex_f_passenger,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_PassengerCarBeforeMalladusFight,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x0A,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_BoardingDemonTrain,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x005C,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_BoardingDemonTrain
|
||||
.mUnk_00 = "d19_01",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x0A,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_BoardingDemonTrain,
|
||||
.mNextSceneIndex = SceneIndex_b_last1,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x005D,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_BeforeMalladusBeast_01 (Demon Train getting destroyed)
|
||||
.mUnk_00 = "d20_01",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x0A,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_BeforeMalladusBeast_01,
|
||||
.mNextSceneIndex = SceneIndex_b_last2,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_BeforeMalladusBeast_02,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x005D,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_BeforeMalladusBeast_02 (Zelda getting her body back)
|
||||
.mUnk_00 = "d20_02",
|
||||
.mSceneIndex = SceneIndex_b_last2,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_BeforeMalladusBeast_02,
|
||||
.mNextSceneIndex = SceneIndex_b_last2,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_BeforeMalladusBeast_03,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = true,
|
||||
.mUnk_0E = 0x0060,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_BeforeMalladusBeast_03 (Beast Malladus appearing)
|
||||
.mUnk_00 = "d20_03",
|
||||
.mSceneIndex = SceneIndex_b_last2,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_BeforeMalladusBeast_03,
|
||||
.mNextSceneIndex = SceneIndex_b_last2,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x0060,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_PreCredits
|
||||
.mUnk_00 = "d21_01",
|
||||
.mSceneIndex = SceneIndex_b_last2,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_PreCredits,
|
||||
.mNextSceneIndex = SceneIndex_f_hyral,
|
||||
.mNextRoomIndex = 0x05,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_Credits_01,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x002D,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_Credits_01 (Credits followed by first ending)
|
||||
.mUnk_00 = "d23_01",
|
||||
.mSceneIndex = SceneIndex_f_hyral,
|
||||
.mRoomIndex = 0x05,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_Credits_01,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_TitleScreen,
|
||||
.mNextIsCS = true,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x005E,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_Credits_02 (Credits followed by second ending)
|
||||
.mUnk_00 = "d23_02",
|
||||
.mSceneIndex = SceneIndex_f_hyral,
|
||||
.mRoomIndex = 0x05,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_Credits_02,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_TitleScreen,
|
||||
.mNextIsCS = true,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x005E,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_Credits_03 (Credits followed by third ending)
|
||||
.mUnk_00 = "d23_03",
|
||||
.mSceneIndex = SceneIndex_f_hyral,
|
||||
.mRoomIndex = 0x05,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_Credits_03,
|
||||
.mNextSceneIndex = SceneIndex_demo_train,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_TitleScreen,
|
||||
.mNextIsCS = true,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x005E,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_SpiritPipes
|
||||
.mUnk_00 = "d24_01",
|
||||
.mSceneIndex = SceneIndex_f_hyral,
|
||||
.mRoomIndex = 0x05,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_SpiritPipes,
|
||||
.mNextSceneIndex = SceneIndex_f_hyral,
|
||||
.mNextRoomIndex = 0x05,
|
||||
.mNextSpawnIndex = 0x01,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x005F,
|
||||
.mFlag = AdventureFlag_ObtainedSpiritPipes,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_ForestTracksRestoredFromGlyph
|
||||
.mUnk_00 = "d25_01",
|
||||
.mSceneIndex = SceneIndex_demo_train,
|
||||
.mRoomIndex = 0x02,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_ForestTracksRestoredFromGlyph,
|
||||
.mNextSceneIndex = SceneIndex_d_main,
|
||||
.mNextRoomIndex = 0x02,
|
||||
.mNextSpawnIndex = 0x01,
|
||||
.mNextCutsceneIndex = CutsceneIndex_None,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = false,
|
||||
.mUnk_0E = 0x0053,
|
||||
.mFlag = AdventureFlag_ForestTracksRestoredFromGlyphCS,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 1,
|
||||
.mUnk_18 = 0,
|
||||
},
|
||||
{
|
||||
// CutsceneIndex_MalladusBeastDestroyed
|
||||
.mUnk_00 = "d26_01",
|
||||
.mSceneIndex = SceneIndex_b_last2,
|
||||
.mRoomIndex = 0x00,
|
||||
.mSpawnIndex = 0x00,
|
||||
.mCutsceneIndex = CutsceneIndex_MalladusBeastDestroyed,
|
||||
.mNextSceneIndex = SceneIndex_b_last2,
|
||||
.mNextRoomIndex = 0x00,
|
||||
.mNextSpawnIndex = 0x00,
|
||||
.mNextCutsceneIndex = CutsceneIndex_PreCredits,
|
||||
.mNextIsCS = false,
|
||||
.mUnk_0D = true,
|
||||
.mUnk_0E = 0x0060,
|
||||
.mFlag = AdventureFlag_None,
|
||||
.mUnk_12 = 0x0000,
|
||||
.mUnk_14 = 0,
|
||||
.mUnk_18 = 1,
|
||||
},
|
||||
};
|
||||
|
||||
CutsceneParamsEntry *Cutscene_GetParamEntry(s32 csIndex) {
|
||||
return (CutsceneParamsEntry *) &gCSParamsEntries[csIndex];
|
||||
}
|
||||
|
||||
s32 func_ov000_020a7840(unk32 param1) {}
|
||||
|
||||
bool Cutscene_IsAdventureFlagSet(s32 csIndex) {
|
||||
CutsceneParamsEntry *pEntry = Cutscene_GetParamEntry(csIndex);
|
||||
|
||||
if (pEntry->mFlag == AdventureFlag_None) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return GET_FLAG(data_027e09b8->mAdventureFlags, pEntry->mFlag);
|
||||
}
|
||||
@@ -347,11 +347,11 @@ THUMB bool ActorManager::func_ov001_020bb728(s32 param1) {
|
||||
|
||||
if (param1 == data_ov001_020c2638[i]) {
|
||||
value = data_ov001_020c2624[i] & 0x1F;
|
||||
value2 = data_027e09b8->mUnk_14[(u32) data_ov001_020c2624[i] >> 5];
|
||||
value2 = data_027e09b8->mAdventureFlags[(u32) data_ov001_020c2624[i] >> 5];
|
||||
|
||||
if ((1 << value) & value2) {
|
||||
value = data_ov001_020c262e[i] & 0x1F;
|
||||
value2 = data_027e09b8->mUnk_14[(u32) data_ov001_020c262e[i] >> 5];
|
||||
value2 = data_027e09b8->mAdventureFlags[(u32) data_ov001_020c262e[i] >> 5];
|
||||
|
||||
if (!((1 << value) & value2)) {
|
||||
continue;
|
||||
|
||||
@@ -1,23 +1,15 @@
|
||||
#include "Game/GameModeTitleScreen.hpp"
|
||||
#include "Cutscene/Cutscene.hpp"
|
||||
#include "Game/Game.hpp"
|
||||
#include "TitleScreen/TitleScreen.hpp"
|
||||
#include "Unknown/UnkStruct_0204a088.hpp"
|
||||
#include "Unknown/UnkStruct_0204a110.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a4.hpp"
|
||||
|
||||
struct UnkStruct_ov000_020a782c {
|
||||
/* 00 */ unk32 mUnk_00;
|
||||
/* 04 */ u8 mUnk_04;
|
||||
/* 05 */ u8 mUnk_05;
|
||||
/* 06 */ u8 mUnk_06;
|
||||
/* 07 */ u8 mUnk_07;
|
||||
};
|
||||
|
||||
extern "C" {
|
||||
void func_0201659c();
|
||||
void func_0200e234();
|
||||
void func_ov001_020b6520(unk32 param1);
|
||||
UnkStruct_ov000_020a782c *func_ov000_020a782c(unk32 param1);
|
||||
}
|
||||
|
||||
ARM GameModeTitleScreen::GameModeTitleScreen() {
|
||||
@@ -32,44 +24,9 @@ ARM GameModeTitleScreen::~GameModeTitleScreen() {
|
||||
func_0200e234();
|
||||
}
|
||||
|
||||
struct stack_struct {
|
||||
/* 00 */ unk32 mUnk_00;
|
||||
/* 04 */ unk32 mUnk_04;
|
||||
/* 08 */ unk16 mUnk_08;
|
||||
/* 0A */ unk8 mUnk_0A;
|
||||
/* 0B */ unk8 mUnk_0B;
|
||||
/* 0C */ unk8 mUnk_0C;
|
||||
/* 0D */ unk8 mUnk_0D;
|
||||
/* 0E */ unk8 mUnk_0E;
|
||||
/* 0F */ unk8 mmUnk_0F;
|
||||
/* 10 */ unk8 mUnk_10;
|
||||
/* 11 */ unk8 mUnk_11;
|
||||
/* 12 */ unk8 mUnk_12;
|
||||
/* 13 */ unk8 mUnk_13;
|
||||
/* 14 */
|
||||
};
|
||||
|
||||
ARM void GameModeTitleScreen::vfunc_08() {
|
||||
this->GameModeBase::vfunc_08();
|
||||
|
||||
UnkStruct_ov000_020a782c *iVar1 = func_ov000_020a782c(0);
|
||||
u8 mUnk_04 = iVar1->mUnk_04;
|
||||
u8 mUnk_07 = iVar1->mUnk_07;
|
||||
u8 mUnk_06 = iVar1->mUnk_06;
|
||||
u8 mUnk_05 = iVar1->mUnk_05;
|
||||
|
||||
stack_struct stack;
|
||||
stack.mUnk_00 = mUnk_04;
|
||||
stack.mUnk_04 = 0;
|
||||
stack.mUnk_08 = 0;
|
||||
stack.mUnk_0A = mUnk_05;
|
||||
stack.mUnk_0B = mUnk_06;
|
||||
stack.mUnk_0C = 1;
|
||||
stack.mUnk_0D = 0;
|
||||
stack.mUnk_0E = mUnk_07;
|
||||
stack.mmUnk_0F = 0;
|
||||
stack.mUnk_10 = 0;
|
||||
|
||||
UnkStruct_SceneChange1 stack(Cutscene_GetParamEntry(CutsceneIndex_TitleScreen), true);
|
||||
data_027e09a4->func_ov000_020707a8(&stack);
|
||||
}
|
||||
|
||||
|
||||
@@ -180,7 +180,7 @@ ARM bool ItemManager::func_ov110_02184a40(ItemId itemId) {
|
||||
|
||||
if (temp_r0_5 != 0) {
|
||||
temp_r0_5 &= 0xFFFF;
|
||||
SET_FLAG(data_027e09b8->mUnk_14, temp_r0_5);
|
||||
SET_FLAG(data_027e09b8->mAdventureFlags, temp_r0_5);
|
||||
}
|
||||
|
||||
data_027e0ce0->mUnk_34->func_ov110_02185d3c(itemId);
|
||||
@@ -669,7 +669,11 @@ ARM void PlayerGet::vfunc_10(unk32 param1, unk32 param2) {
|
||||
}
|
||||
|
||||
if (*(u16 *) this->mUnk_54.mUnk_00 == 0x1000) {
|
||||
MapObject *pMapObj = gpMapObjManager->func_01fff498(this->mUnk_54.mUnk_00[0], this->mUnk_54.mUnk_00[1]);
|
||||
UnkStruct_func_01fff498 stack;
|
||||
stack.ptrIndex = this->mUnk_54.mUnk_00[0];
|
||||
stack.valueIndex = this->mUnk_54.mUnk_00[1];
|
||||
|
||||
MapObject *pMapObj = gpMapObjManager->func_01fff498(stack);
|
||||
|
||||
if (pMapObj != NULL) {
|
||||
var_r5_2 = MapObjectId_None;
|
||||
@@ -697,9 +701,9 @@ ARM void PlayerGet::vfunc_10(unk32 param1, unk32 param2) {
|
||||
}
|
||||
|
||||
if (this->mUnk_54.mItemId == ItemId_ForestGlyph) {
|
||||
this->mUnk_72 = data_027e09a4->func_ov000_02070bd0(0x29, 0);
|
||||
this->mUnk_72 = data_027e09a4->func_ov000_02070bd0(CutsceneIndex_ForestTracksRestoredFromGlyph, 0);
|
||||
} else if (this->mUnk_54.mItemId == ItemId_FireGlyph) {
|
||||
this->mUnk_72 = data_027e09a4->func_ov000_02070bd0(0x14, 0);
|
||||
this->mUnk_72 = data_027e09a4->func_ov000_02070bd0(CutsceneIndex_StavenInTOSAfterFireGlyph_01, 0);
|
||||
}
|
||||
|
||||
if (this->mUnk_72 != 0) {
|
||||
|
||||
@@ -144,8 +144,11 @@ ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1
|
||||
break;
|
||||
default:
|
||||
if (this->mUnk_2C->mUnk_150 == 0x1000) {
|
||||
MapObjectUnkDRTY *pDRTY =
|
||||
(MapObjectUnkDRTY *) gpMapObjManager->func_01fff498(this->mUnk_2C->mUnk_150 >> 0x10, 0);
|
||||
UnkStruct_func_01fff498 stack;
|
||||
stack.ptrIndex = this->mUnk_2C->mUnk_150 >> 0x10;
|
||||
stack.valueIndex = 0;
|
||||
|
||||
MapObjectUnkDRTY *pDRTY = (MapObjectUnkDRTY *) gpMapObjManager->func_01fff498(stack);
|
||||
|
||||
if (pDRTY != NULL) {
|
||||
pDRTY->func_ov000_0209d6ac((Vec3p *) &this->mUnk_70);
|
||||
@@ -283,7 +286,11 @@ ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1
|
||||
return;
|
||||
}
|
||||
|
||||
MapObject *target = gpMapObjManager->func_01fff498(this->mUnk_8C >> 16, 0);
|
||||
UnkStruct_func_01fff498 stack;
|
||||
stack.ptrIndex = this->mUnk_8C >> 16;
|
||||
stack.valueIndex = 0;
|
||||
|
||||
MapObject *target = gpMapObjManager->func_01fff498(stack);
|
||||
if (target != NULL && target->GetMapObjectId() == MapObjectId_WPHL) {
|
||||
func_ov034_02121de4(target);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
#include "MapObject/MapObjectManager.hpp"
|
||||
|
||||
struct UnkStruct {
|
||||
unk32 one;
|
||||
unk32 two;
|
||||
unk32 three;
|
||||
unk32 four;
|
||||
};
|
||||
|
||||
extern "C" void func_01ffecdc(int, void *);
|
||||
|
||||
MapObject *MapObjectManager::func_01fff498(UnkStruct_func_01fff498 param1) {
|
||||
if (this->mUnk_0C[param1.valueIndex][param1.ptrIndex] < 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return this->mMapObjTable[this->mUnk_0C[param1.valueIndex][param1.ptrIndex]];
|
||||
}
|
||||
|
||||
void MapObjectManager::func_01fff4cc(UnkCallback_func_01fff4cc param1, void *param2) {
|
||||
MapObject **ptr = this->mMapObjTable;
|
||||
|
||||
while (ptr != this->mUnk_08) {
|
||||
if (*ptr != NULL && GET_FLAG((*ptr)->mFlags, MapObjFlag_Alive)) {
|
||||
param1(*ptr, param2);
|
||||
}
|
||||
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
MapObject **MapObjectManager::func_01fff520(UnkStruct_ov000_020b34c4 *param1, MapObject **param2) {
|
||||
MapObject **ptr = param2;
|
||||
|
||||
while (ptr != this->mUnk_08) {
|
||||
MapObject *ptr2 = *ptr;
|
||||
if (ptr2 != NULL && GET_FLAG((ptr2)->mFlags, MapObjFlag_Alive)) {
|
||||
|
||||
//! TODO: fake match
|
||||
if (param1->vfunc_00(ptr2)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ptr++;
|
||||
}
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
||||
MapObjectId MapObject::GetMapObjectId() {
|
||||
return this->mpProfile->mMapObjId;
|
||||
}
|
||||
|
||||
void MapObject::func_01fff590(unk32 param2) {
|
||||
UnkStruct stack;
|
||||
unk32 one;
|
||||
unk32 two;
|
||||
unk32 three;
|
||||
unk32 four;
|
||||
|
||||
four = this->mpProfile->mUnk_08;
|
||||
one = (three = this->mPos.x);
|
||||
two = this->mPos.y;
|
||||
three = this->mPos.z;
|
||||
|
||||
stack.one = one;
|
||||
stack.two = two;
|
||||
stack.three = three;
|
||||
stack.four = four;
|
||||
func_01ffecdc(param2, &stack);
|
||||
}
|
||||
@@ -131,6 +131,12 @@ config.auto_add_sources = False
|
||||
config.warn_missing_source = True
|
||||
|
||||
config.libs = [
|
||||
GameLib(
|
||||
"ITCM",
|
||||
[
|
||||
Object("ITCM/ITCM_MapObjectManager.cpp"),
|
||||
]
|
||||
),
|
||||
GameLib(
|
||||
"Main",
|
||||
[
|
||||
@@ -168,6 +174,7 @@ config.libs = [
|
||||
Object("000_Second/MapObject/MapObject.cpp"),
|
||||
Object("000_Second/MapObject/MapObjectSwitchStep.cpp"),
|
||||
Object("000_Second/MapObject/MapObjectMiniBlocks.cpp"),
|
||||
Object("000_Second/Cutscene/Cutscene.cpp"),
|
||||
Object("000_Second/Item/ItemManager.cpp"),
|
||||
Object("000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp"),
|
||||
Object("000_Second/Item/TreasureManager.cpp"),
|
||||
|
||||
Reference in New Issue
Block a user