z_scene functions now use the same structs as OOT (#3)

* z_scene now uses OOT structs where available

Additionally commits a decompiled z_actor function.

* Fixes audio_setBGM function call in Scene_HeaderCommand15

* Update structs.h

Co-authored-by: rozlette <uberpanzermensch@gmail.com>
Co-authored-by: Egor Ananyin <ananinegor@gmail.com>
This commit is contained in:
Kenix3
2020-04-29 23:14:29 -04:00
committed by GitHub
parent 5687f3741a
commit f230898dfe
4 changed files with 233 additions and 251 deletions
+2 -2
View File
@@ -1937,8 +1937,8 @@ void func_80105294(void); // func_80105294
void func_80105318(void); // func_80105318
void func_80105328(void); // func_80105328
void func_8010534C(void); // func_8010534C
void func_8010549C(GlobalContext* ctxt, u32 segmentAddress); // func_8010549C
void func_8010565C(GlobalContext* ctxt, u8 num, u32 segmentAddress); // func_8010565C
void func_8010549C(GlobalContext* ctxt, void* segmentAddress); // func_8010549C
void func_8010565C(GlobalContext* ctxt, u8 num, void* segmentAddress); // func_8010565C
void func_80105818(GlobalContext* ctxt, unsigned int uParm2, TransitionActorInit* puParm3); // func_80105818
void func_80105A40(void); // func_80105A40
void func_80105B34(void); // func_80105B34
+174 -186
View File
@@ -628,215 +628,200 @@ typedef struct {
} RoomMeshType2Params; // size = 0x10
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdActorList; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ u32 data2;
} SCmdBase;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdAltHeaders; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdSpawnList;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 data2;
} SCmdBase; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdActorList;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdColHeader; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdCsCameraList;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdCsCameraList; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdColHeader;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdCutsceneActorList; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdRoomList;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdCutsceneData; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x02 */ UNK_TYPE1 pad2[2];
/* 0x04 */ s8 west;
/* 0x05 */ s8 vertical;
/* 0x06 */ s8 south;
/* 0x07 */ u8 clothIntensity;
} SCmdWindSettings;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x5];
/* 0x7 */ u8 echo;
} SCmdEchoSettings; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdEntranceList;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 data2;
} SCmdEndMarker; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 cUpElfMsgNum;
/* 0x04 */ u32 keepObjectId;
} SCmdSpecialFiles;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdEntranceList; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 gpFlag1;
/* 0x04 */ u32 gpFlag2;
} SCmdRoomBehavior;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdExitList; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdMesh;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdLightList; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdObjectList;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdLightSettingList; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdLightList;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdMesh; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdPathList;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdMinimapChests; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdTransiActorList;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ UNK_TYPE1 pad1[0x3];
/* 0x4 */ u32 segment;
} SCmdMinimapSettings; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdLightSettingList;
// Cloudmodding has this as Environment Settings
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 cameraMovement;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 area;
} SCmdMiscSettings; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x02 */ UNK_TYPE1 pad2[2];
/* 0x04 */ u8 hour;
/* 0x05 */ u8 min;
/* 0x06 */ u8 unk6;
} SCmdTimeSettings;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdObjectList; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x02 */ UNK_TYPE1 pad2[2];
/* 0x04 */ u8 skyboxId;
/* 0x05 */ u8 unk5;
/* 0x06 */ u8 unk6;
} SCmdSkyboxSettings;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdPathList; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x02 */ UNK_TYPE1 pad2[2];
/* 0x04 */ u8 unk4;
/* 0x05 */ u8 unk5;
} SCmdSkyboxDisables;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 gpFlag1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 gpFlag2;
} SCmdRoomBehavior; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdExitList;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdRoomList; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ u32 data2;
} SCmdEndMarker;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u8 unk4;
/* 0x5 */ u8 unk5;
} SCmdSkyboxDisables; // size = 0x6
/* 0x00 */ u8 code;
/* 0x01 */ u8 bgmId;
/* 0x02 */ UNK_TYPE1 pad2[4];
/* 0x06 */ u8 nighttimeSFX;
/* 0x07 */ u8 musicSeq;
} SCmdSoundSettings;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u8 skyboxId;
/* 0x5 */ u8 unk5;
/* 0x6 */ u8 unk6;
} SCmdSkyboxSettings; // size = 0x7
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x02 */ UNK_TYPE1 pad2[5];
/* 0x07 */ u8 echo;
} SCmdEchoSettings;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 bgmId;
/* 0x2 */ UNK_TYPE1 pad2[0x4];
/* 0x6 */ u8 nighttimeSFX;
/* 0x7 */ u8 musicSeq;
} SCmdSoundSettings; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdCutsceneData;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdSpawnList; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdAltHeaders;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 cUpElfMsgNum;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 keepObjectId;
} SCmdSpecialFiles; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ u32 data2;
} SCmdWorldMapVisited;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u8 hour;
/* 0x5 */ u8 min;
/* 0x6 */ u8 unk6;
} SCmdTimeSettings; // size = 0x7
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdTextureAnimations;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ u32 segment;
} SCmdTransiActorList; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdCutsceneActorList;
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[0x2];
/* 0x4 */ s8 unk4;
/* 0x5 */ s8 unk5;
/* 0x6 */ s8 unk6;
/* 0x7 */ u8 unk7;
} SCmdWindSettings; // size = 0x8
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdMinimapSettings;
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdMinimapChests;
// Extra information in the save context that is not saved
typedef struct {
@@ -889,35 +874,38 @@ typedef struct {
} SaveContext_struct2; // size = 0x22
typedef union {
SCmdBase base;
SCmdSpawnList spawnList;
SCmdActorList actorList;
SCmdCsCameraList csCameraList;
SCmdRoomList roomList;
SCmdEntranceList entranceList;
SCmdObjectList objectList;
SCmdLightList lightList;
SCmdPathList pathList;
SCmdTransiActorList transiActorList;
SCmdLightSettingList lightSettingList;
SCmdExitList exitList;
SCmdColHeader colHeader;
SCmdMesh mesh;
SCmdSpecialFiles specialFiles;
SCmdCutsceneData cutsceneData;
SCmdRoomBehavior roomBehavior;
SCmdWindSettings windSettings;
SCmdTimeSettings timeSettings;
SCmdSkyboxSettings skyboxSettings;
SCmdSkyboxDisables skyboxDisables;
SCmdEndMarker endMarker;
SCmdSoundSettings soundSettings;
SCmdEchoSettings echoSettings;
SCmdMiscSettings miscSettings;
SCmdAltHeaders altHeaders;
SCmdCutsceneActorList cutsceneActorList;
SCmdMinimapSettings minimapSettings;
SCmdMinimapChests minimapChests;
/* Command: N/A */ SCmdBase base;
/* Command: 0x00 */ SCmdSpawnList spawnList;
/* Command: 0x01 */ SCmdActorList actorList;
/* Command: 0x02 */ SCmdCsCameraList csCameraList;
/* Command: 0x03 */ SCmdColHeader colHeader;
/* Command: 0x04 */ SCmdRoomList roomList;
/* Command: 0x05 */ SCmdWindSettings windSettings;
/* Command: 0x06 */ SCmdEntranceList entranceList;
/* Command: 0x07 */ SCmdSpecialFiles specialFiles;
/* Command: 0x08 */ SCmdRoomBehavior roomBehavior;
/* Command: 0x09 */ // Unused
/* Command: 0x0A */ SCmdMesh mesh;
/* Command: 0x0B */ SCmdObjectList objectList;
/* Command: 0x0C */ SCmdLightList lightList;
/* Command: 0x0D */ SCmdPathList pathList;
/* Command: 0x0E */ SCmdTransiActorList transiActorList;
/* Command: 0x0F */ SCmdLightSettingList lightSettingList;
/* Command: 0x10 */ SCmdTimeSettings timeSettings;
/* Command: 0x11 */ SCmdSkyboxSettings skyboxSettings;
/* Command: 0x12 */ SCmdSkyboxDisables skyboxDisables;
/* Command: 0x13 */ SCmdExitList exitList;
/* Command: 0x14 */ SCmdEndMarker endMarker;
/* Command: 0x15 */ SCmdSoundSettings soundSettings;
/* Command: 0x16 */ SCmdEchoSettings echoSettings;
/* Command: 0x17 */ SCmdCutsceneData cutsceneData;
/* Command: 0x18 */ SCmdAltHeaders altHeaders;
/* Command: 0x19 */ SCmdWorldMapVisited worldMapVisited;
/* Command: 0x1A */ SCmdTextureAnimations textureAnimations;
/* Command: 0x1B */ SCmdCutsceneActorList cutsceneActorList;
/* Command: 0x1C */ SCmdMinimapSettings minimapSettings;
/* Command: 0x1D */ // Unused
/* Command: 0x1E */ SCmdMinimapChests minimapChests;
} SceneCmd; // size = 0x8
typedef struct {
@@ -1769,12 +1757,12 @@ typedef struct {
/* 0xA9 */ UNK_TYPE1 unkA9;
/* 0xAA */ UNK_TYPE1 unkAA;
/* 0xAB */ UNK_TYPE1 unkAB;
/* 0xAC */ s16 unkAC;
/* 0xAE */ s16 unkAE;
/* 0xB0 */ s16 unkB0;
/* 0xAC */ s16 windWest;
/* 0xAE */ s16 windVertical;
/* 0xB0 */ s16 windSouth;
/* 0xB2 */ UNK_TYPE1 unkB2;
/* 0xB3 */ UNK_TYPE1 unkB3;
/* 0xB4 */ f32 unkB4;
/* 0xB4 */ f32 windClothIntensity;
/* 0xB8 */ u8 environmentSettingsCount;
/* 0xB9 */ UNK_TYPE1 unkB9;
/* 0xBA */ UNK_TYPE1 unkBA;