Scene Changes (#114)

* match function

* major cleanups

* rename switch functions

* use graph_alloc to fix fake matches

* more documentation

* more matches, lots of changes

* lots more work

* format

* Update z_scene_proc.c

* very hard lagrange interpolation function OK!

* remove any remaining

* documentation done, only two functions left

* a few more things

* one function left!

* document another oot leftover

* last function decompiled, not matched yet

* scene_proc complete

* start work on z_scene

* done with z_scene

* remove unessecary typedefs

* fix some things to remove warnings

* Add z_scene_table and decomp data

* Delete ctx.c

* add draw cfg enum

* cleanup

* most scene table functions done

* done for now

* all scene files done

* Update include/z64scene.h

Co-authored-by: Anghelo Carvajal <anghelo.carvajal.14@sansano.usm.cl>

* add missing macros

* fix some renames

* scene texture file rename

* added temporary structs so it still builds

* more structs

* even more old structs

* fix boyo

* should fix compile error

* lets hope nothing broke

* ub comment back

Co-authored-by: Anghelo Carvajal <anghelo.carvajal.14@sansano.usm.cl>
This commit is contained in:
Zelllll
2021-05-09 22:12:42 -04:00
committed by GitHub
co-authored by Anghelo Carvajal
parent e39141fb3d
commit 874a75f456
34 changed files with 4345 additions and 1573 deletions
+86 -86
View File
@@ -698,7 +698,7 @@ void func_800B5040(TargetContext* targetContext, Actor* actor, u8 type, GlobalCo
void Actor_TargetContextInit(TargetContext* targetCtxt, Actor* actor, GlobalContext* ctxt);
void func_800B5208(TargetContext* targetCtxt, GlobalContext* ctxt);
void func_800B5814(TargetContext* targetContext, ActorPlayer* player, Actor* param_3, GlobalContext* ctxt);
u32 Actor_GetSwitchFlag(GlobalContext* ctxt, s32 flag);
u32 Flags_GetSwitch(GlobalContext* ctxt, s32 flag);
void Actor_SetSwitchFlag(GlobalContext* ctxt, s32 flag);
void Actor_UnsetSwitchFlag(GlobalContext* ctxt, s32 flag);
u32 Actor_GetChestFlag(GlobalContext* ctxt, u32 flag);
@@ -2432,90 +2432,90 @@ void func_8012ED34(s16 param_1);
// void func_8012F1BC(void);
// void func_8012F22C(void);
// void func_8012F278(void);
s32 Scene_LoadObject(SceneContext* sceneCtxt, s16 id);
void Scene_Init(GlobalContext* ctxt, SceneContext* sceneCtxt);
void Scene_ReloadUnloadedObjects(SceneContext* sceneCtxt);
s32 Scene_FindSceneObjectIndex(SceneContext* sceneCtxt, s16 id);
s32 Scene_IsObjectLoaded(SceneContext* sceneCtxt, s32 index);
void Scene_DmaAllObjects(SceneContext* sceneCtxt);
void* func_8012F73C(SceneContext* sceneCtxt, s32 iParm2, s16 id);
void Scene_HeaderCommand00(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand01(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand02(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand03(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand04(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand06(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand07(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand08(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand0A(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand0B(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand0C(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand0D(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand0E(GlobalContext* ctxt, SceneCmd* entry);
void func_8012FEBC(GlobalContext* ctxt, u8* nbTransitionActors);
void Scene_HeaderCommand0F(GlobalContext* ctxt, SceneCmd* entry);
s32 func_8012FF10(GlobalContext* ctxt, s32 fileIndex);
void Scene_HeaderCommand11(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand12(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand10(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand05(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand13(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand09(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand15(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand16(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand18(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand17(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand1B(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand1C(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand1D(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand1E(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand19(GlobalContext* ctxt, SceneCmd* entry);
void Scene_HeaderCommand1A(GlobalContext* ctxt, SceneCmd* entry);
void func_801306A4(GlobalContext* ctxt);
s32 Scene_ProcessHeader(GlobalContext* ctxt, SceneCmd* header);
u32 Scene_CreateEntrance(u32 sceneIndex, u32 spawnIndex, u32 offset);
void func_80130784(u32 spawnIndex);
void SceneProc_DrawCurrentSceneAnimatedTextures(GlobalContext* ctxt);
void SceneProc_DrawSceneConfig0(GlobalContext* ctxt);
Gfx* SceneProc_SetTile1Layer(GlobalContext* ctxt, ScrollingTextureParams* params);
void SceneProc_DrawType0Texture(GlobalContext* ctxt, u32 segment, ScrollingTextureParams* params);
Gfx* SceneProc_SetTile2Layers(GlobalContext* ctxt, ScrollingTextureParams* params);
void SceneProc_DrawType1Texture(GlobalContext* ctxt, u32 segment, ScrollingTextureParams* params);
void SceneProc_DrawFlashingTexture(GlobalContext* ctxt, u32 segment, FlashingTexturePrimColor* primColor, Color_RGBA8* envColor);
void SceneProc_DrawType2Texture(GlobalContext* ctxt, u32 segment, FlashingTextureParams* params);
s32 SceneProc_Lerp(s32 a, s32 b, f32 t);
void SceneProc_DrawType3Texture(GlobalContext* ctxt, u32 segment, FlashingTextureParams* params);
f32 SceneProc_Interpolate(u32 numKeyFrames, f32* keyFrames, f32* values, f32 frame);
u8 SceneProc_InterpolateClamped(u32 numKeyFrames, f32* keyFrames, f32* values, f32 frame);
void SceneProc_DrawType4Texture(GlobalContext* ctxt, u32 segment, FlashingTextureParams* params);
void SceneProc_DrawType5Texture(GlobalContext* ctxt, u32 segment, CyclingTextureParams* params);
void SceneProc_DrawAnimatedTextures(GlobalContext* ctxt, AnimatedTexture* textures, f32 flashingAlpha, u32 step, u32 flags);
void SceneProc_DrawAllSceneAnimatedTextures(GlobalContext* ctxt, AnimatedTexture* textures);
void SceneProc_DrawOpaqueSceneAnimatedTextures(GlobalContext* ctxt, AnimatedTexture* textures);
void SceneProc_DrawTranslucentSceneAnimatedTextures(GlobalContext* ctxt, AnimatedTexture* textures);
void SceneProc_DrawAllSceneAnimatedTexturesWithAlpha(GlobalContext* ctxt, AnimatedTexture* textures, f32 alpha);
void SceneProc_DrawOpaqueSceneAnimatedTexturesWithAlpha(GlobalContext* ctxt, AnimatedTexture* textures, f32 alpha);
void SceneProc_DrawTranslucentSceneAnimatedTexturesWithAlpha(GlobalContext* ctxt, AnimatedTexture* textures, f32 alpha);
void SceneProc_DrawAllAnimatedTextures(GlobalContext* ctxt, AnimatedTexture* textures, u32 step);
void SceneProc_DrawOpaqueAnimatedTextures(GlobalContext* ctxt, AnimatedTexture* textures, u32 step);
void SceneProc_DrawTranslucentAnimatedTextures(GlobalContext* ctxt, AnimatedTexture* textures, u32 step);
void SceneProc_DrawAllAnimatedTexturesWithAlpha(GlobalContext* ctxt, AnimatedTexture* textures, f32 alpha, u32 step);
void SceneProc_DrawOpaqueAnimatedTexturesWithAlpha(GlobalContext* ctxt, AnimatedTexture* textures, f32 alpha, u32 step);
void SceneProc_DrawTranslucentAnimatedTexturesWithAlpha(GlobalContext* ctxt, AnimatedTexture* textures, f32 alpha, u32 step);
void SceneProc_DrawSceneConfig1(GlobalContext* ctxt);
void SceneProc_DrawSceneConfig3(GlobalContext* ctxt);
void SceneProc_DrawSceneConfig4(GlobalContext* ctxt);
void SceneProc_DrawSceneConfig2(GlobalContext* ctxt);
void func_80131DF0(GlobalContext* ctxt, u32 param_2, u32 flags);
void func_80131E58(GlobalContext* ctxt, u32 param_2, u32 flags);
void SceneProc_DrawSceneConfig5(GlobalContext* ctxt);
void SceneProc_DrawSceneConfig7(GlobalContext* ctxt);
void SceneProc_DrawSceneConfig6(GlobalContext* ctxt);
EntranceRecord* SceneTable_LookupEntrance(u32 entrance);
s32 SceneTable_LookupEntranceScene(u32 entrance);
s32 SceneTable_LookupEntranceAbsoluteScene(u32 entrance);
// void func_80132374(void);
s16 func_801323A0(u32 entrance);
s32 Object_Spawn(ObjectContext* objectCtx, s16 id);
void Object_InitBank(GameState* state, ObjectContext* objectCtx);
void Object_UpdateBank(ObjectContext* objectCtx);
s32 Object_GetIndex(ObjectContext* objectCtx, s16 id);
s32 Object_IsLoaded(ObjectContext* objectCtx, s32 index);
void Object_LoadAll(ObjectContext* objectCtx);
void* func_8012F73C(ObjectContext* objectCtx, s32 iParm2, s16 id);
void Scene_HeaderCmdSpawnList(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdActorList(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdActorCutsceneCamList(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdColHeader(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdRoomList(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdEntranceList(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdSpecialFiles(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdRoomBehavior(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdMesh(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdObjectList(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdLightList(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdPathList(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdTransiActorList(GlobalContext* globalCtx, SceneCmd* cmd);
void Transition_Init(GameState* state, TransitionContext* transitionCtx);
void Scene_HeaderCmdEnvLightSettings(GlobalContext* globalCtx, SceneCmd* cmd);
s32 Scene_LoadAreaTextures(GlobalContext* globalCtx, s32 fileIndex);
void Scene_HeaderCmdSkyboxSettings(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdSkyboxDisables(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdTimeSettings(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdWindSettings(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdExitList(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmd09(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdSoundSettings(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdEchoSetting(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdAltHeaderList(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdCutsceneList(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdActorCutsceneList(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdMiniMap(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmd1D(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdMiniMapCompassInfo(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdSetAreaVisitedFlag(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdAnimatedMaterials(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_SetExitFade(GlobalContext* globalCtx);
s32 Scene_ProcessHeader(GlobalContext* globalCtx, SceneCmd* header);
u16 Entrance_CreateIndex(s32 sceneIndex, s32 spawnIndex, s32 sceneSetup);
u16 Entrance_CreateIndexFromSpawn(s32 spawnIndex);
void Scene_ExecuteDrawConfig(GlobalContext* globalCtx);
void Scene_DrawConfigDefault(GlobalContext* globalCtx);
Gfx* AnimatedMat_TexScroll(GlobalContext* globalCtx, AnimatedMatTexScrollParams* params);
void AnimatedMat_DrawTexScroll(GlobalContext* globalCtx, s32 segment, void* params);
Gfx* AnimatedMat_TwoLayerTexScroll(GlobalContext* globalCtx, AnimatedMatTexScrollParams* params);
void AnimatedMat_DrawTwoTexScroll(GlobalContext* globalCtx, s32 segment, void* params);
void AnimatedMat_SetColor(GlobalContext* globalCtx, s32 segment, F3DPrimColor* primColor, F3DEnvColor* envColor);
void AnimatedMat_DrawColor(GlobalContext* globalCtx, s32 segment, void* params);
s32 AnimatedMat_Lerp(s32 min, s32 max, f32 norm);
void AnimatedMat_DrawColorLerp(GlobalContext* globalCtx, s32 segment, void* params);
f32 Scene_LagrangeInterp(s32 n, f32 x[], f32 fx[], f32 xp);
u8 Scene_LagrangeInterpColor(s32 n, f32 x[], f32 fx[], f32 xp);
void AnimatedMat_DrawColorNonLinearInterp(GlobalContext* globalCtx, s32 segment, void* params);
void AnimatedMat_DrawTexCycle(GlobalContext* globalCtx, s32 segment, void* params);
void AnimatedMat_DrawMain(GlobalContext* globalCtx, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step, u32 flags);
void AnimatedMat_Draw(GlobalContext* globalCtx, AnimatedMaterial* matAnim);
void AnimatedMat_DrawOpa(GlobalContext* globalCtx, AnimatedMaterial* matAnim);
void AnimatedMat_DrawXlu(GlobalContext* globalCtx, AnimatedMaterial* matAnim);
void AnimatedMat_DrawAlpha(GlobalContext* globalCtx, AnimatedMaterial* matAnim, f32 alphaRatio);
void AnimatedMat_DrawAlphaOpa(GlobalContext* globalCtx, AnimatedMaterial* matAnim, f32 alphaRatio);
void AnimatedMat_DrawAlphaXlu(GlobalContext* globalCtx, AnimatedMaterial* matAnim, f32 alphaRatio);
void AnimatedMat_DrawStep(GlobalContext* globalCtx, AnimatedMaterial* matAnim, u32 step);
void AnimatedMat_DrawStepOpa(GlobalContext* globalCtx, AnimatedMaterial* matAnim, u32 step);
void AnimatedMat_DrawStepXlu(GlobalContext* globalCtx, AnimatedMaterial* matAnim, u32 step);
void AnimatedMat_DrawAlphaStep(GlobalContext* globalCtx, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step);
void AnimatedMat_DrawAlphaStepOpa(GlobalContext* globalCtx, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step);
void AnimatedMat_DrawAlphaStepXlu(GlobalContext* globalCtx, AnimatedMaterial* matAnim, f32 alphaRatio, u32 step);
void Scene_DrawConfigMatAnim(GlobalContext* globalCtx);
void Scene_DrawConfig3(GlobalContext* globalCtx);
void Scene_DrawConfig4(GlobalContext* globalCtx);
void Scene_DrawConfigDoNothing(GlobalContext* globalCtx);
void Scene_SetRenderModeXlu(GlobalContext* globalCtx, s32 index, u32 flags);
void Scene_SetCullFlag(GlobalContext* globalCtx, s32 index, u32 flags);
void Scene_DrawConfig5(GlobalContext* globalCtx);
void Scene_DrawConfigMatAnimManualStep(GlobalContext* globalCtx);
void Scene_DrawConfigGreatBayTemple(GlobalContext* globalCtx);
EntranceTableEntry* Entrance_GetTableEntry(u16 entrance);
s32 Entrance_GetSceneNum(u16 entranceIndex);
s32 Entrance_GetSceneNumAbsolute(u16 entranceIndex);
s32 Entrance_GetSpawnNum(u16 entranceIndex);
s32 Entrance_GetTransitionFlags(u16 entranceIndex);
// void func_801323D0(void);
// void func_80132428(void);
// void func_80132494(void);
@@ -3016,7 +3016,7 @@ void Play_Update(GlobalContext* ctxt);
s32 func_801690CC(GlobalContext* gCtx);
// void func_80169100(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
// void func_801691F0(void);
void* Play_LoadScene(GlobalContext* ctxt, ObjectFileTableEntry* entry);
void* Play_LoadScene(GlobalContext* ctxt, RomFile* entry);
void func_8016927C(GlobalContext* ctxt, s16 sParm2);
// void func_801692C4(GlobalContext* ctxt, UNK_TYPE1 uParm2);
// void Play_SceneInit(GlobalContext* ctxt, s32 sceneIndex, UNK_TYPE1 param_3);
-3
View File
@@ -15,9 +15,6 @@
#define VIRTUAL_TO_PHYSICAL(addr) (uintptr_t)((u8*)(addr) - 0x80000000)
#define SEGMENTED_TO_VIRTUAL(addr) (void*)(PHYSICAL_TO_VIRTUAL(gSegments[SEGMENT_NUMBER(addr)]) + SEGMENT_OFFSET(addr))
#define ALIGN16(val) (((val) + 0xF) & ~0xF)
// Currently most often called ctxt in MM, TODO: Refactor names when its used
#define ACTIVE_CAM globalCtx->cameraPtrs[globalCtx->activeCamera]
+1 -1
View File
@@ -44,7 +44,7 @@ extern UNK_TYPE D_0E0001C8;
extern UNK_TYPE D_0E0002C8;
extern Gfx object_ikana_obj_001100[];
extern AnimatedTexture object_ikana_obj_001228[];
extern AnimatedMaterial object_ikana_obj_001228[];
extern Gfx object_fu_kaiten_0005D0[];
extern CollisionHeader object_fu_kaiten_002D30;
+11 -4
View File
@@ -1,7 +1,14 @@
#ifndef _STDBOOL_H_
#define _STDBOOL_H_
#ifndef _STDBOOL
#define _STDBOOL
#define __bool_true_false_are_defined 1
#ifndef __cplusplus
#define bool u32
#define false 0
#define true !false
#define true 1
#endif /* _STDBOOL_H_ */
#endif /* __cplusplus */
#endif /* _STDBOOL */
+6 -577
View File
File diff suppressed because it is too large Load Diff
+5 -51
View File
@@ -76,7 +76,7 @@ typedef struct {
/* 0x0 */ s8 segment;
/* 0x2 */ s16 type;
/* 0x4 */ void* params;
} AnimatedTexture; // size = 0x8
} AnimatedMaterial; // size = 0x8
typedef struct {
/* 0x0 */ u16 floorHead;
@@ -152,12 +152,6 @@ typedef struct {
/* 0x10 */ u32 collectibleFlags;
} CycleSceneFlags; // size = 0x14
typedef struct {
/* 0x0 */ u16 cycleLength;
/* 0x4 */ Gfx** textureDls;
/* 0x8 */ u8* textureDlOffsets;
} CyclingTextureParams; // size = 0xC
typedef struct {
/* 0x0 */ s16 x;
/* 0x2 */ s16 y;
@@ -205,14 +199,6 @@ typedef struct {
/* 0x7 */ u8 unk7;
} FireObjLightParams; // size = 0x8
typedef struct {
/* 0x0 */ u8 red;
/* 0x1 */ u8 green;
/* 0x2 */ u8 blue;
/* 0x3 */ u8 alpha;
/* 0x4 */ u8 lodFrac;
} FlashingTexturePrimColor; // size = 0x5
// Font textures are loaded into here
typedef struct {
/* 0x0000 */ u8 unk0[2][120][128];
@@ -308,11 +294,6 @@ typedef enum IRQ_TYPE {
IRQ_PRENMI_4 = 0x2A1
} IRQ_TYPE;
typedef struct {
/* 0x0 */ u32 vromStart;
/* 0x4 */ u32 vromEnd;
} ObjectFileTableEntry; // size = 0x8
typedef struct {
/* 0x00 */ u32 textSize;
/* 0x04 */ u32 dataSize;
@@ -439,17 +420,6 @@ typedef struct {
/* 0xE */ s16 color;
} TitleCardContext; // size = 0x10
typedef struct {
struct {
s8 room; // Room to switch to
s8 effects; // How the camera reacts during the transition
} /* 0x00 */ sides[2]; // 0 = front, 1 = back
/* 0x04 */ s16 id;
/* 0x06 */ Vec3s pos;
/* 0x0C */ s16 rotY;
/* 0x0E */ s16 params;
} TransitionActorEntry; // size = 0x10
typedef struct {
/* 0x0 */ s32 topY;
/* 0x4 */ s32 bottomY;
@@ -635,14 +605,6 @@ typedef enum {
GFXPRINT_OPEN = 0x80
} GfxPrintFlag;
typedef struct {
/* 0x0 */ u16 cycleLength;
/* 0x2 */ u16 numKeyFrames;
/* 0x4 */ FlashingTexturePrimColor* primColors;
/* 0x8 */ Color_RGBA8* envColors;
/* 0xC */ u16* keyFrames;
} FlashingTextureParams; // size = 0x10
typedef struct {
/* 0x00 */ void* loadedRamAddr;
/* 0x04 */ u32 vromStart;
@@ -1307,8 +1269,6 @@ typedef void(*cutscene_update_func)(GlobalContext* ctxt, CutsceneContext* cCtxt)
typedef void(*draw_func)(GlobalContext* ctxt, s16 index);
typedef void(*global_context_func)(GlobalContext*);
typedef void(*room_draw_func)(GlobalContext* ctxt, Room* room, u32 flags);
typedef struct {
@@ -1323,10 +1283,6 @@ typedef struct {
/* 0x20 */ u32 unk20;
} s801BB170; // size = 0x24
typedef void(*scene_header_func)(GlobalContext* ctxt, SceneCmd* entry);
typedef void(*scene_proc_draw_func)(GlobalContext* ctxt, u32 segment, void* params);
typedef struct Camera Camera;
typedef struct {
@@ -1665,17 +1621,15 @@ struct GlobalContext {
/* 0x17002 */ UNK_TYPE1 pad17002[0x2];
/* 0x17004 */ KankyoContext kankyoContext;
/* 0x17104 */ AnimationContext animationCtx;
/* 0x17D88 */ SceneContext sceneContext;
/* 0x17D88 */ ObjectContext objectCtx;
/* 0x186E0 */ RoomContext roomContext;
/* 0x18760 */ u8 transitionActorCount;
/* 0x18761 */ UNK_TYPE1 pad18761[0x3];
/* 0x18764 */ TransitionActorEntry* transitionActorList;
/* 0x18760 */ TransitionContext transitionCtx;
/* 0x18768 */ UNK_TYPE1 pad18768[0x48];
/* 0x187B0 */ MtxF unk187B0;
/* 0x187F0 */ UNK_TYPE1 pad187F0[0xC];
/* 0x187FC */ MtxF unk187FC;
/* 0x1883C */ UNK_TYPE1 pad1883C[0x4];
/* 0x18840 */ u32 unk18840;
/* 0x18840 */ u32 gameplayFrames;
/* 0x18844 */ u8 unk18844;
/* 0x18845 */ u8 unk18845;
/* 0x18846 */ u16 sceneNumActorsToLoad;
@@ -1690,7 +1644,7 @@ struct GlobalContext {
/* 0x18860 */ u16* setupExitList;
/* 0x18864 */ void* setupPathList;
/* 0x18868 */ UNK_PTR unk18868;
/* 0x1886C */ AnimatedTexture* sceneTextureAnimations;
/* 0x1886C */ AnimatedMaterial* sceneMaterialAnims;
/* 0x18870 */ UNK_TYPE1 pad18870[0x4];
/* 0x18874 */ u8 unk18874;
/* 0x18875 */ s8 unk18875;
+7
View File
@@ -1,6 +1,13 @@
#ifndef _Z64OBJECT_H_
#define _Z64OBJECT_H_
#define OBJECT_SPACE_SIZE_DEFAULT 1413120
#define OBJECT_SPACE_SIZE_CLOCK_TOWN 1566720
#define OBJECT_SPACE_SIZE_MILK_BAR 1617920
#define OBJECT_SPACE_SIZE_TERMINA_FIELD 1505280
#define OBJECT_EXCHANGE_BANK_MAX 35
typedef enum {
/* 0x000 */ OBJECT_UNSET_0,
/* 0x001 */ GAMEPLAY_KEEP,
+251 -26
View File
@@ -8,8 +8,8 @@
#define SPAWN_ROT_FLAGS(rotation, flags) (((rotation) << 7) | (flags))
typedef struct {
/* 0x0 */ u32 vromStart;
/* 0x4 */ u32 vromEnd;
/* 0x00 */ u32 vromStart;
/* 0x04 */ u32 vromEnd;
} RomFile; // size = 0x8
typedef struct {
@@ -67,7 +67,7 @@ typedef struct {
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 cUpElfMsgNum;
/* 0x04 */ u32 keepObjectId;
/* 0x04 */ u32 subKeepIndex;
} SCmdSpecialFiles;
typedef struct {
@@ -287,6 +287,22 @@ typedef struct {
/* 0x7A */ UNK_TYPE2 unk7A[3];
} RoomContext; // size = 0x80
typedef struct {
struct {
s8 room; // Room to switch to
s8 effects; // How the camera reacts during the transition
} /* 0x00 */ sides[2]; // 0 = front, 1 = back
/* 0x04 */ s16 id;
/* 0x06 */ Vec3s pos;
/* 0x0C */ s16 rotY;
/* 0x0E */ s16 params;
} TransitionActorEntry; // size = 0x10
typedef struct {
/* 0x00 */ u8 nbTransitionActors;
/* 0x04 */ TransitionActorEntry* transitionActorList;
} TransitionContext;
typedef struct {
/* 0x0 */ s16 id;
/* 0x2 */ Vec3s pos;
@@ -307,16 +323,16 @@ typedef struct {
} EntranceEntry; // size = 0x2
typedef struct {
/* 0x0 */ s8 scene; // TODO what does it means for this to be neagtive?
/* 0x1 */ s8 unk1;
/* 0x2 */ u16 unk2;
} EntranceRecord; // size = 0x4
/* 0x0 */ s8 sceneNum;
/* 0x1 */ s8 spawnNum;
/* 0x2 */ u16 flags;
} EntranceTableEntry; // size = 0x4
typedef struct {
/* 0x0 */ u32 entranceCount;
/* 0x4 */ EntranceRecord** entrances;
/* 0x0 */ u32 tableCount : 8;
/* 0x4 */ EntranceTableEntry** table;
/* 0x8 */ char* name;
} SceneEntranceTableEnty; // size = 0xC
} SceneEntranceTableEntry; // size = 0xC
typedef struct {
/* 0x00 */ u16 scenes[27];
@@ -332,32 +348,59 @@ typedef struct {
} ObjectStatus; // size = 0x44
typedef struct {
/* 0x0 */ u32 romStart;
/* 0x4 */ u32 romEnd;
/* 0x8 */ u16 unk8;
/* 0xA */ UNK_TYPE1 padA[0x1];
/* 0xB */ u8 sceneConfig; // TODO: This at least controls the behavior of animated textures. Does it do more?
/* 0xC */ UNK_TYPE1 padC[0x1];
/* 0xD */ u8 unkD;
/* 0xE */ UNK_TYPE1 padE[0x2];
} SceneTableEntry; // size = 0x10
/* 0x0 */ RomFile segment;
/* 0x8 */ u16 titleTextId;
/* 0xA */ u8 unk_A;
/* 0xB */ u8 drawConfig;
/* 0xC */ u8 unk_C;
/* 0xD */ char pad_D[3];
} SceneTableEntry; // size = 0x10;
typedef struct {
/* 0x0 */ u8 r;
/* 0x1 */ u8 g;
/* 0x2 */ u8 b;
/* 0x3 */ u8 a;
/* 0x4 */ u8 lodFrac;
} F3DPrimColor; // size = 0x5
typedef struct {
/* 0x0 */ u8 r;
/* 0x1 */ u8 g;
/* 0x2 */ u8 b;
/* 0x3 */ u8 a;
} F3DEnvColor; // size = 0x4
typedef struct {
/* 0x0 */ u16 keyFrameLength;
/* 0x2 */ u16 keyFrameCount;
/* 0x4 */ F3DPrimColor* primColors;
/* 0x8 */ F3DEnvColor* envColors;
/* 0xC */ u16* keyFrames;
} AnimatedMatColorParams; // size = 0x10
typedef struct {
/* 0x0 */ s8 xStep;
/* 0x1 */ s8 yStep;
/* 0x2 */ u8 width;
/* 0x3 */ u8 height;
} ScrollingTextureParams; // size = 0x4
} AnimatedMatTexScrollParams; // size = 0x4
typedef struct {
/* 0x000 */ void* objectVramStart;
/* 0x004 */ void* objectVramEnd;
/* 0x008 */ u8 objectCount;
/* 0x0 */ u16 keyFrameLength;
/* 0x4 */ void** textureList;
/* 0x8 */ u8* textureIndexList;
} AnimatedMatTexCycleParams; // size = 0xC
typedef struct {
/* 0x000 */ void* spaceStart;
/* 0x004 */ void* spaceEnd;
/* 0x008 */ u8 num;
/* 0x009 */ u8 spawnedObjectCount;
/* 0x00A */ u8 mainKeepIndex;
/* 0x00B */ u8 keepObjectId;
/* 0x00C */ ObjectStatus objects[35]; // TODO: OBJECT_EXCHANGE_BANK_MAX array size
} SceneContext; // size = 0x958
/* 0x00B */ u8 subKeepIndex;
/* 0x00C */ ObjectStatus status[OBJECT_EXCHANGE_BANK_MAX];
} ObjectContext; // size = 0x958
typedef struct {
u8 headerType;
@@ -625,4 +668,186 @@ typedef enum {
/* 0x70 */ SCENE_ALLEY
} SceneID;
// Scene draw configs
typedef enum {
/* 0 */ SCENE_DRAW_CFG_DEFAULT,
/* 1 */ SCENE_DRAW_CFG_MAT_ANIM,
/* 2 */ SCENE_DRAW_CFG_NOTHING,
/* 3 */ SCENE_DRAW_CFG_UNUSED_3,
/* 4 */ SCENE_DRAW_CFG_UNUSED_4,
/* 5 */ SCENE_DRAW_CFG_UNUSED_5,
/* 6 */ SCENE_DRAW_CFG_GREAT_BAY_TEMPLE,
/* 7 */ SCENE_DRAW_CFG_MAT_ANIM_MANUAL_STEP
} SceneDrawConfigIds;
// Scene commands
typedef enum {
/* 0x00 */ SCENE_CMD_ID_SPAWN_LIST,
/* 0x01 */ SCENE_CMD_ID_ACTOR_LIST,
/* 0x02 */ SCENE_CMD_ID_ACTOR_CUTSCENE_CAM_LIST,
/* 0x03 */ SCENE_CMD_ID_COL_HEADER,
/* 0x04 */ SCENE_CMD_ID_ROOM_LIST,
/* 0x05 */ SCENE_CMD_ID_WIND_SETTINGS,
/* 0x06 */ SCENE_CMD_ID_ENTRANCE_LIST,
/* 0x07 */ SCENE_CMD_ID_SPECIAL_FILES,
/* 0x08 */ SCENE_CMD_ID_ROOM_BEHAVIOR,
/* 0x09 */ SCENE_CMD_ID_UNUSED_09,
/* 0x0A */ SCENE_CMD_ID_MESH,
/* 0x0B */ SCENE_CMD_ID_OBJECT_LIST,
/* 0x0C */ SCENE_CMD_ID_LIGHT_LIST,
/* 0x0D */ SCENE_CMD_ID_PATH_LIST,
/* 0x0E */ SCENE_CMD_ID_TRANSI_ACTOR_LIST,
/* 0x0F */ SCENE_CMD_ID_ENV_LIGHT_SETTINGS,
/* 0x10 */ SCENE_CMD_ID_TIME_SETTINGS,
/* 0x11 */ SCENE_CMD_ID_SKYBOX_SETTINGS,
/* 0x12 */ SCENE_CMD_ID_SKYBOX_DISABLES,
/* 0x13 */ SCENE_CMD_ID_EXIT_LIST,
/* 0x14 */ SCENE_CMD_ID_END,
/* 0x15 */ SCENE_CMD_ID_SOUND_SETTINGS,
/* 0x16 */ SCENE_CMD_ID_ECHO_SETTINGS,
/* 0x17 */ SCENE_CMD_ID_CUTSCENE_LIST,
/* 0x18 */ SCENE_CMD_ID_ALTERNATE_HEADER_LIST,
/* 0x19 */ SCENE_CMD_ID_MISC_SETTINGS,
/* 0x1A */ SCENE_CMD_ID_ANIMATED_MATERIAL_LIST,
/* 0x1B */ SCENE_CMD_ID_ACTOR_CUTSCENE_LIST,
/* 0x1C */ SCENE_CMD_ID_MINIMAP_INFO,
/* 0x1D */ SCENE_CMD_ID_UNUSED_1D,
/* 0x1E */ SCENE_CMD_ID_MINIMAP_COMPASS_ICON_INFO,
/* 0x1F */ SCENE_CMD_MAX
} SceneCommandTypeID;
#define SCENE_CMD_SPAWN_LIST(numSpawns, spawnList) \
{ SCENE_CMD_ID_SPAWN_LIST, numSpawns, CMD_PTR(spawnList) }
#define SCENE_CMD_ACTOR_LIST(numActors, actorList) \
{ SCENE_CMD_ID_ACTOR_LIST, numActors, CMD_PTR(actorList) }
#define SCENE_CMD_ACTOR_CUTSCENE_CAM_LIST(camList) \
{ SCENE_CMD_ID_ACTOR_CUTSCENE_CAM_LIST, 0, CMD_PTR(camList) }
#define SCENE_CMD_COL_HEADER(colHeader) \
{ SCENE_CMD_ID_COL_HEADER, 0, CMD_PTR(colHeader) }
#define SCENE_CMD_ROOM_LIST(numRooms, roomList) \
{ SCENE_CMD_ID_ROOM_LIST, numRooms, CMD_PTR(roomList) }
#define SCENE_CMD_WIND_SETTINGS(xDir, yDir, zDir, strength) \
{ SCENE_CMD_ID_WIND_SETTINGS, 0, CMD_BBBB(xDir, yDir, zDir, strength) }
#define SCENE_CMD_ENTRANCE_LIST(entranceList) \
{ SCENE_CMD_ID_ENTRANCE_LIST, 0, CMD_PTR(entranceList) }
#define SCENE_CMD_SPECIAL_FILES(elfMessageFile, keepObjectId) \
{ SCENE_CMD_ID_SPECIAL_FILES, elfMessageFile, CMD_W(keepObjectId) }
#define SCENE_CMD_ROOM_BEHAVIOR(currRoomUnk3, currRoomUnk2, currRoomUnk5, msgCtxunk12044, enablePosLights, \
kankyoContextUnkE2) \
{ \
SCENE_CMD_ID_ROOM_BEHAVIOR, currRoomUnk3, \
currRoomUnk2 | _SHIFTL(currRoomUnk5, 8, 1) | _SHIFTL(msgCtxunk12044, 10, 1) | \
_SHIFTL(enablePosLights, 11, 1) | _SHIFTL(kankyoContextUnkE2, 12, 1) \
}
#define SCENE_CMD_MESH(meshHeader) \
{ SCENE_CMD_ID_MESH, 0, CMD_PTR(meshHeader) }
#define SCENE_CMD_OBJECT_LIST(numObjects, objectList) \
{ SCENE_CMD_ID_OBJECT_LIST, numObjects, CMD_PTR(objectList) }
#define SCENE_CMD_LIGHT_LIST(numLights, lightList) \
{ SCENE_CMD_ID_POS_LIGHT_LIST, numLights, CMD_PTR(lightList) }
#define SCENE_CMD_PATH_LIST(pathList) \
{ SCENE_CMD_ID_PATH_LIST, 0, CMD_PTR(pathList) }
#define SCENE_CMD_TRANSITION_ACTOR_LIST(numTransitionActors, transitionActorList) \
{ SCENE_CMD_ID_TRANSI_ACTOR_LIST, numTransitionActors, CMD_PTR(transitionActorList) }
#define SCENE_CMD_ENV_LIGHT_SETTINGS(numLightSettings, lightSettingsList) \
{ SCENE_CMD_ID_ENV_LIGHT_SETTINGS, numLightSettings, CMD_PTR(lightSettingsList) }
#define SCENE_CMD_TIME_SETTINGS(hour, min, speed) \
{ SCENE_CMD_ID_TIME_SETTINGS, 0, CMD_BBBB(hour, min, speed, 0) }
#define SCENE_CMD_SKYBOX_SETTINGS(externalTextureFileId, skyboxId, weather, lightMode) \
{ SCENE_CMD_ID_SKYBOX_SETTINGS, externalTextureFileId, CMD_BBBB(skyboxId, weather, lightMode, 0) }
#define SCENE_CMD_SKYBOX_DISABLES(disableSky, disableSunMoon) \
{ SCENE_CMD_ID_SKYBOX_DISABLES, 0, CMD_BBBB(disableSky, disableSunMoon, 0, 0) }
#define SCENE_CMD_EXIT_LIST(exitList) \
{ SCENE_CMD_ID_EXIT_LIST, 0, CMD_PTR(exitList) }
#define SCENE_CMD_END() \
{ SCENE_CMD_ID_END, 0, CMD_W(0) }
#define SCENE_CMD_SOUND_SETTINGS(audioSessionId, nighttimeSfx, bgmId) \
{ SCENE_CMD_ID_SOUND_SETTINGS, audioSessionId, CMD_BBBB(0, 0, nighttimeSfx, bgmId) }
#define SCENE_CMD_ECHO_SETTINGS(echo) \
{ SCENE_CMD_ID_ECHO_SETTINGS, 0, CMD_BBBB(0, 0, 0, echo) }
#define SCENE_CMD_CUTSCENE_LIST(numCutscene, cutsceneList) \
{ SCENE_CMD_ID_CUTSCENE_LIST, numCutscene, CMD_PTR(cutsceneList) }
#define SCENE_CMD_ALTERNATE_HEADER_LIST(alternateHeaderList) \
{ SCENE_CMD_ID_ALTERNATE_HEADER_LIST, 0, CMD_PTR(alternateHeaderList) }
#define SCENE_CMD_MISC_SETTINGS() \
{ SCENE_CMD_ID_MISC_SETTINGS, 0, CMD_W(0) }
#define SCENE_CMD_ANIMATED_MATERIAL_LIST(matAnimList) \
{ SCENE_CMD_ID_ANIMATED_MATERIAL_LIST, 0, CMD_PTR(matAnimList) }
#define SCENE_CMD_ACTOR_CUTSCENE_LIST(actorCutsceneCount, actorCutsceneList) \
{ SCENE_CMD_ID_ACTOR_CUTSCENE_LIST, actorCutsceneCount, CMD_PTR(actorCutsceneList) }
#define SCENE_CMD_MINIMAP_INFO(minimapInfo) \
{ SCENE_CMD_ID_MINIMAP_INFO, 0, CMD_PTR(minimapInfo) }
#define SCENE_CMD_MINIMAP_COMPASS_ICON_INFO(compassIconCount, compassIconInfo) \
{ SCENE_CMD_ID_MINIMAP_COMPASS_ICON_INFO, compassIconCount, CMD_PTR(compassIconInfo) }
//! @TODO: Remove these! These are only here for the time being to prevent compiler errors with scenes and rooms!
// ----> AnimatedMaterial
typedef struct {
/* 0x0 */ s8 segment;
/* 0x2 */ s16 type;
/* 0x4 */ void* params;
} AnimatedTexture; // size = 0x8
// ----> AnimatedMatTexScrollParams
typedef struct {
/* 0x0 */ s8 xStep;
/* 0x1 */ s8 yStep;
/* 0x2 */ u8 width;
/* 0x3 */ u8 height;
} ScrollingTextureParams; // size = 0x4
// ----> F3DPrimColor
typedef struct {
/* 0x0 */ u8 red;
/* 0x1 */ u8 green;
/* 0x2 */ u8 blue;
/* 0x3 */ u8 alpha;
/* 0x4 */ u8 lodFrac;
} FlashingTexturePrimColor; // size = 0x5
// ----> AnimatedMatColorParams
typedef struct {
/* 0x0 */ u16 cycleLength;
/* 0x2 */ u16 numKeyFrames;
/* 0x4 */ FlashingTexturePrimColor* primColors;
/* 0x8 */ Color_RGBA8* envColors;
/* 0xC */ u16* keyFrames;
} FlashingTextureParams; // size = 0x10
// ----> AnimatedMatTexCycleParams
typedef struct {
/* 0x0 */ u16 cycleLength;
/* 0x4 */ Gfx** textureDls;
/* 0x8 */ u8* textureDlOffsets;
} CyclingTextureParams; // size = 0xC
#endif
+5 -5
View File
@@ -410,7 +410,7 @@ SECTIONS
build/asm/code/code_0x8012EC80.o(.text)
build/src/code/z_scene.o(.text)
build/src/code/z_scene_proc.o(.text)
build/asm/code/z_scene_table.o(.text)
build/src/code/z_scene_table.o(.text)
build/asm/code/code_0x801323D0.o(.text)
build/src/code/z_skelanime.o(.text)
build/asm/code/z_skin.o(.text)
@@ -528,10 +528,10 @@ SECTIONS
build/src/code/z_rcp.o(.data)
build/asm/code/code_data_z_room.o(.data)
build/asm/code/code_data_0x801C1D30.o(.data)
build/asm/code/code_data_z_scene.o(.data)
build/src/code/z_scene.o(.data)
build/asm/code/code_data_0x801C2730.o(.data)
build/asm/code/code_data_z_scene_proc.o(.data)
build/asm/code/code_data_z_scene_table.o(.data)
build/src/code/z_scene_proc.o(.data)
build/src/code/z_scene_table.o(.data)
build/asm/code/code_data_0x801323D0.o(.data)
build/src/code/z_skelanime.o(.data)
build/src/code/z_skin_matrix.o(.data)
@@ -602,7 +602,7 @@ SECTIONS
build/asm/code/code_rodata_0x8012A080.o(.rodata)
build/asm/code/code_rodata_z_room.o(.rodata)
build/src/code/z_scene_proc.o(.rodata)
build/asm/code/code_rodata_z_scene_table.o(.rodata)
build/src/code/z_scene_table.o(.rodata)
build/asm/code/code_rodata_z_skin.o(.rodata)
build/src/code/z_skin_matrix.o(.rodata)
build/asm/code/code_rodata_z_sub_s.o(.rodata)
+3 -3
View File
@@ -171,7 +171,7 @@ void Actor_TargetContextInit(TargetContext* targetCtxt, Actor* actor, GlobalCont
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_actor//func_800B5814.asm")
u32 Actor_GetSwitchFlag(GlobalContext* ctxt, s32 flag) {
u32 Flags_GetSwitch(GlobalContext* ctxt, s32 flag) {
if (flag >= 0 && flag < 0x80) {
return ctxt->actorCtx.switchFlags[(flag & -0x20) >> 5] & (1 << (flag & 0x1F));
}
@@ -327,7 +327,7 @@ void Actor_SetScale(Actor* actor, f32 scale) {
void Actor_SetObjectSegment(GlobalContext* ctxt, Actor* actor) {
// TODO: Segment number enum
gSegments[6] = PHYSICAL_TO_VIRTUAL(ctxt->sceneContext.objects[actor->objBankIndex].segment);
gSegments[6] = PHYSICAL_TO_VIRTUAL(ctxt->objectCtx.status[actor->objBankIndex].segment);
}
#if 0
@@ -351,7 +351,7 @@ void Actor_InitToDefaultValues(Actor* actor, GlobalContext* ctxt) {
actor->naviMsgId = 255;
Actor_Setshape(&actor->shape, 0, 0, 0);
if (Scene_IsObjectLoaded(&ctxt->sceneContext, actor->objBankIndex) != 0) {
if (Object_IsLoaded(&ctxt->objectCtx, actor->objBankIndex) != 0) {
Actor_SetObjectSegment(ctxt, actor);
actor->init(actor, ctxt);
actor->init = NULL;
+1 -1
View File
@@ -10,7 +10,7 @@ void EffectSs_DrawGEffect(GlobalContext* globalCtx, EffectSs* this, void* textur
MtxF mfTrans11DA0;
s32 pad1;
Mtx* mtx;
void* object = globalCtx->sceneContext.objects[this->rgObjBankIdx].segment;
void* object = globalCtx->objectCtx.status[this->rgObjBankIdx].segment;
OPEN_DISPS(gfxCtx);
+10 -10
View File
@@ -149,15 +149,15 @@ void EnItem00_Init(Actor* thisx, GlobalContext* globalCtx) {
this->unk154 = 0.01f;
break;
case ITEM00_SHIELD_HERO:
this->actor.objBankIndex = Scene_FindSceneObjectIndex(&globalCtx->sceneContext, OBJECT_GI_SHIELD_2);
this->actor.objBankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_SHIELD_2);
EnItem00_SetObject(this, globalCtx, &shadowOffset, &shadowScale);
break;
case ITEM00_MAP:
this->actor.objBankIndex = Scene_FindSceneObjectIndex(&globalCtx->sceneContext, OBJECT_GI_MAP);
this->actor.objBankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_MAP);
EnItem00_SetObject(this, globalCtx, &shadowOffset, &shadowScale);
break;
case ITEM00_COMPASS:
this->actor.objBankIndex = Scene_FindSceneObjectIndex(&globalCtx->sceneContext, OBJECT_GI_COMPASS);
this->actor.objBankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_COMPASS);
EnItem00_SetObject(this, globalCtx, &shadowOffset, &shadowScale);
break;
default:
@@ -263,8 +263,8 @@ void EnItem00_Destroy(Actor* thisx, GlobalContext* globalCtx) {
void EnItem00_WaitForHeartObject(EnItem00* this, GlobalContext* globalCtx) {
s32 sp1C;
sp1C = Scene_FindSceneObjectIndex(&globalCtx->sceneContext, OBJECT_GI_HEARTS);
if (Scene_IsObjectLoaded(&globalCtx->sceneContext, sp1C)) {
sp1C = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_HEARTS);
if (Object_IsLoaded(&globalCtx->objectCtx, sp1C)) {
this->actor.objBankIndex = sp1C;
this->actionFunc = func_800A640C;
}
@@ -323,7 +323,7 @@ void func_800A6650(EnItem00* this, GlobalContext* globalCtx) {
if (this->actor.params <= ITEM00_RUPEE_RED) {
this->actor.shape.rot.y = this->actor.shape.rot.y + 960;
}
if ((globalCtx->unk18840 & 1) != 0) {
if ((globalCtx->gameplayFrames & 1) != 0) {
pos.x = this->actor.world.pos.x + randPlusMinusPoint5Scaled(10.0f);
pos.y = this->actor.world.pos.y + randPlusMinusPoint5Scaled(10.0f);
pos.z = this->actor.world.pos.z + randPlusMinusPoint5Scaled(10.0f);
@@ -377,7 +377,7 @@ void func_800A6780(EnItem00* this, GlobalContext* globalCtx) {
}
}
if ((globalCtx->unk18840 & 1) == 0) {
if ((globalCtx->gameplayFrames & 1) == 0) {
pos.x = this->actor.world.pos.x + ((Rand_ZeroOne() - 0.5f) * 10.0f);
pos.y = this->actor.world.pos.y + ((Rand_ZeroOne() - 0.5f) * 10.0f);
pos.z = this->actor.world.pos.z + ((Rand_ZeroOne() - 0.5f) * 10.0f);
@@ -639,8 +639,8 @@ void EnItem00_Draw(Actor* thisx, GlobalContext* globalCtx) {
case ITEM00_HEART:
if (this->unk152 < 0) {
if (this->unk152 == -1) {
s8 bankIndex = Scene_FindSceneObjectIndex(&globalCtx->sceneContext, OBJECT_GI_HEART);
if (Scene_IsObjectLoaded(&globalCtx->sceneContext, bankIndex)) {
s8 bankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_HEART);
if (Object_IsLoaded(&globalCtx->objectCtx, bankIndex)) {
this->actor.objBankIndex = bankIndex;
Actor_SetObjectSegment(globalCtx, &this->actor);
this->unk152 = -2;
@@ -767,7 +767,7 @@ void EnItem00_DrawHeartContainer(EnItem00* actor, GlobalContext* globalCtx) {
s32 pad;
s32 pad2;
if (Scene_FindSceneObjectIndex(&globalCtx->sceneContext, OBJECT_GI_HEARTS) == actor->actor.objBankIndex) {
if (Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_HEARTS) == actor->actor.objBankIndex) {
OPEN_DISPS(globalCtx->state.gfxCtx);
func_8012C2DC(globalCtx->state.gfxCtx);
+341 -285
View File
File diff suppressed because it is too large Load Diff
+668 -389
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -49,9 +49,9 @@ void BgIkanaRay_Init(Actor* thisx, GlobalContext* globalCtx) {
Collider_SetCylinder(globalCtx, collision, thisx, &bgIkanaRayCylinderInit);
Collider_UpdateCylinder(thisx, &THIS->collision);
THIS->animatedTextures = (AnimatedTexture*)Lib_SegmentedToVirtual(object_ikana_obj_001228);
THIS->animatedTextures = (AnimatedMaterial*)Lib_SegmentedToVirtual(object_ikana_obj_001228);
if (Actor_GetSwitchFlag(globalCtx, THIS->base.params & 0x7F) != 0) {
if (Flags_GetSwitch(globalCtx, THIS->base.params & 0x7F) != 0) {
BgIkanaRay_SetActivated(THIS);
} else {
BgIkanaRay_SetDeactivated(THIS);
@@ -70,7 +70,7 @@ void BgIkanaRay_SetDeactivated(BgIkanaRay* this) {
}
void BgIkanaRay_UpdateCheckForActivation(BgIkanaRay* this, GlobalContext* globalCtx) {
if (Actor_GetSwitchFlag(globalCtx, this->base.params & 0x7F) != 0) {
if (Flags_GetSwitch(globalCtx, this->base.params & 0x7F) != 0) {
BgIkanaRay_SetActivated(this);
}
}
@@ -90,6 +90,6 @@ void BgIkanaRay_Update(Actor* thisx, GlobalContext* globalCtx) {
}
void BgIkanaRay_Draw(Actor* thisx, GlobalContext* globalCtx) {
SceneProc_DrawAllSceneAnimatedTextures(globalCtx, THIS->animatedTextures);
AnimatedMat_Draw(globalCtx, THIS->animatedTextures);
func_800BE03C(globalCtx, object_ikana_obj_001100);
}
@@ -8,7 +8,7 @@ struct BgIkanaRay;
typedef struct BgIkanaRay {
/* 0x000 */ Actor base;
/* 0x144 */ ColliderCylinder collision;
/* 0x190 */ AnimatedTexture* animatedTextures;
/* 0x190 */ AnimatedMaterial* animatedTextures;
/* 0x194 */ void (*update)(struct BgIkanaRay*, GlobalContext*);
} BgIkanaRay; // size = 0x198
@@ -51,10 +51,10 @@ extern CollisionHeader D_06000F28;
extern UNK_PTR D_06000CE8;
s32 BgIkanaShutter_AllSwitchesPressed(BgIkanaShutter* this, GlobalContext* globalCtx) {
return Actor_GetSwitchFlag(globalCtx, this->dyna.actor.params & 0x7F) &&
Actor_GetSwitchFlag(globalCtx, (this->dyna.actor.params & 0x7F) + 1) &&
Actor_GetSwitchFlag(globalCtx, (this->dyna.actor.params & 0x7F) + 2) &&
Actor_GetSwitchFlag(globalCtx, (this->dyna.actor.params & 0x7F) + 3);
return Flags_GetSwitch(globalCtx, this->dyna.actor.params & 0x7F) &&
Flags_GetSwitch(globalCtx, (this->dyna.actor.params & 0x7F) + 1) &&
Flags_GetSwitch(globalCtx, (this->dyna.actor.params & 0x7F) + 2) &&
Flags_GetSwitch(globalCtx, (this->dyna.actor.params & 0x7F) + 3);
}
void BgIkanaShutter_Init(Actor* thisx, GlobalContext* globalCtx) {
@@ -35,11 +35,11 @@ static InitChainEntry sInitChain[] = {
};
extern Gfx D_06000100[];
extern AnimatedTexture D_060001F8;
extern AnimatedMaterial D_060001F8;
extern Gfx D_06000300[];
extern AnimatedTexture D_060003F8;
extern AnimatedMaterial D_060003F8;
extern Gfx D_06000500[];
extern AnimatedTexture D_060005F8;
extern AnimatedMaterial D_060005F8;
void BgKeikokuSpr_Init(Actor* thisx, GlobalContext* globalCtx) {
Actor_ProcessInitChain(thisx, sInitChain);
@@ -56,12 +56,12 @@ void BgKeikokuSpr_Draw(Actor* thisx, GlobalContext* globalCtx) {
OPEN_DISPS(globalCtx->state.gfxCtx);
SceneProc_DrawAllSceneAnimatedTextures(globalCtx, Lib_SegmentedToVirtual(&D_060001F8));
AnimatedMat_Draw(globalCtx, Lib_SegmentedToVirtual(&D_060001F8));
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, D_06000100);
SceneProc_DrawAllSceneAnimatedTextures(globalCtx, Lib_SegmentedToVirtual(&D_060003F8));
AnimatedMat_Draw(globalCtx, Lib_SegmentedToVirtual(&D_060003F8));
gSPDisplayList(POLY_XLU_DISP++, D_06000300);
SceneProc_DrawAllSceneAnimatedTextures(globalCtx, Lib_SegmentedToVirtual(&D_060005F8));
AnimatedMat_Draw(globalCtx, Lib_SegmentedToVirtual(&D_060005F8));
gSPDisplayList(POLY_XLU_DISP++, D_06000500);
CLOSE_DISPS(globalCtx->state.gfxCtx);
@@ -126,7 +126,7 @@ void BgKin2Fence_Init(Actor* thisx, GlobalContext* globalCtx) {
Collider_UpdateSpheres(i, &this->collider);
}
if (Actor_GetSwitchFlag(globalCtx, this->dyna.actor.params & 0x7F)) {
if (Flags_GetSwitch(globalCtx, this->dyna.actor.params & 0x7F)) {
BgKin2Fence_SetupDoNothing(this);
return;
}

Some files were not shown because too many files have changed in this diff Show More