mirror of
https://github.com/zeldaret/mm.git
synced 2026-05-31 01:15:20 -04:00
Adds in scene support (#117)
* 1 scene done, Z2_SOUGEN OK * All scenes OK * Makefile improvements * Use WIP ZAPD branch as submodule * Add spawn rotation flag macro * Fix bad merge * Move scenes to be in their own subfolders * Rename and restructure extracted baserom files * Progress tracking for assets * Add asset progress to csv * Use master ZAPD * Use distclean like in OOT * Fix up a few things with the makefile * Fix scenes not being dumped from ELF Co-authored-by: Rozelette <Uberpanzermensch@gmail.com>
This commit is contained in:
+2
-2
@@ -1,7 +1,7 @@
|
||||
#ifndef _ULTRA64_PFS_H_
|
||||
#define _ULTRA64_PFS_H_
|
||||
|
||||
#include "global.h"
|
||||
#include "os.h"
|
||||
|
||||
/* File System size */
|
||||
#define OS_PFS_VERSION 0x0200
|
||||
@@ -38,7 +38,7 @@
|
||||
#define PFS_ERR_NOPACK 1 /* no memory card is plugged or */
|
||||
#define PFS_ERR_NEW_PACK 2 /* ram pack has been changed to a different one */
|
||||
#define PFS_ERR_INCONSISTENT 3 /* need to run Pfschecker*/
|
||||
#define PFS_ERR_CONTRFAIL CONT_OVERRUN_ERROR
|
||||
#define PFS_ERR_CONTRFAIL CONT_OVERRUN_ERROR
|
||||
#define PFS_ERR_INVALID 5 /* invalid parameter or file not exist*/
|
||||
#define PFS_ERR_BAD_DATA 6 /* the data read from pack are bad*/
|
||||
#define PFS_DATA_FULL 7 /* no free pages on ram pack*/
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
#ifndef _COMMAND_MACROS_BASE_H_
|
||||
#define _COMMAND_MACROS_BASE_H_
|
||||
|
||||
/**
|
||||
* Command Base macros intended for use in designing of more specific command macros
|
||||
* Each macro packs bytes (B), halfowrds (H) and words (W, for consistency) into a single word
|
||||
*/
|
||||
|
||||
#define CMD_BBBB(a, b, c, d) (_SHIFTL(a, 24, 8) | _SHIFTL(b, 16, 8) | _SHIFTL(c, 8, 8) | _SHIFTL(d, 0, 8))
|
||||
|
||||
#define CMD_BBH(a, b, c) (_SHIFTL(a, 24, 8) | _SHIFTL(b, 16, 8) | _SHIFTL(c, 0, 16))
|
||||
|
||||
#define CMD_HBB(a, b, c) (_SHIFTL(a, 16, 16) | _SHIFTL(b, 8, 8) | _SHIFTL(c, 0, 8))
|
||||
|
||||
#define CMD_HH(a, b) (_SHIFTL(a, 16, 16) | _SHIFTL(b, 0, 16))
|
||||
|
||||
#define CMD_W(a) (a)
|
||||
|
||||
#endif
|
||||
+41
-41
@@ -918,33 +918,33 @@ void ActorOverlayTable_FaultPrint(void* arg0, void* arg1); // ActorOverlayTable_
|
||||
void* ActorOverlayTable_FaultAddrConv(void* arg0, void* arg1); // ActorOverlayTable_FaultAddrConv
|
||||
void ActorOverlayTable_Init(void); // ActorOverlayTable_Init
|
||||
void ActorOverlayTable_Cleanup(void); // ActorOverlayTable_Cleanup
|
||||
void BgCheck_PolygonLinkedListNodeInit(BgPolygonLinkedListNode* node, s16* polyIndex, u16 next);
|
||||
void BgCheck_PolygonLinkedListNodeInit(SSNode* node, s16* polyIndex, u16 next);
|
||||
void BgCheck_PolygonLinkedListResetHead(u16* head);
|
||||
void BgCheck_ScenePolygonListsNodeInsert(BgScenePolygonLists* list, u16* head, s16* polyIndex);
|
||||
void BgCheck_PolygonLinkedListNodeInsert(BgPolygonLinkedList* list, u16* head, s16* polyIndex);
|
||||
void BgCheck_PolygonLinkedListInit(GlobalContext* ctxt, BgPolygonLinkedList* list);
|
||||
void BgCheck_PolygonLinkedListAlloc(GlobalContext* ctxt, BgPolygonLinkedList* list, u32 numNodes);
|
||||
void BgCheck_PolygonLinkedListReset(BgPolygonLinkedList* list);
|
||||
u16 BgCheck_AllocPolygonLinkedListNode(BgPolygonLinkedList* list);
|
||||
void BgCheck_CreateVec3fFromVertex(BgVertex* vertex, Vec3f* vector);
|
||||
void BgCheck_CreateVertexFromVec3f(BgVertex* vertex, Vec3f* vector);
|
||||
void BgCheck_ScenePolygonListsNodeInsert(SSNodeList* list, u16* head, s16* polyIndex);
|
||||
void BgCheck_PolygonLinkedListNodeInsert(DynaSSNodeList* list, u16* head, s16* polyIndex);
|
||||
void BgCheck_PolygonLinkedListInit(GlobalContext* ctxt, DynaSSNodeList* list);
|
||||
void BgCheck_PolygonLinkedListAlloc(GlobalContext* ctxt, DynaSSNodeList* list, u32 numNodes);
|
||||
void BgCheck_PolygonLinkedListReset(DynaSSNodeList* list);
|
||||
u16 BgCheck_AllocPolygonLinkedListNode(DynaSSNodeList* list);
|
||||
void BgCheck_CreateVec3fFromVertex(Vec3s* vertex, Vec3f* vector);
|
||||
void BgCheck_CreateVertexFromVec3f(Vec3s* vertex, Vec3f* vector);
|
||||
float func_800BFD84(CollisionPoly* polygon, f32 param_2, f32 param_3);
|
||||
s32 func_800BFDEC(CollisionPoly* param_1, CollisionPoly* param_2, u32* param_3, u32* param_4);
|
||||
s32 BgCheck_PolygonGetMinY(CollisionPoly* polygons, BgVertex* vertices);
|
||||
s32 BgCheck_PolygonGetMinY(CollisionPoly* polygons, Vec3s* vertices);
|
||||
void BgCheck_PolygonGetNormal(CollisionPoly* polygon, f32* normalX, f32* normalY, f32* normalZ);
|
||||
void func_800C0094(struct CollisionPoly* param_1, f32 xOffset, f32 yOffset, f32 zOffset, MtxF* matrix);
|
||||
f32 func_800C01B8(CollisionPoly* param_1, Vec3f* param_2);
|
||||
void BgCheck_CreateColTriParamsFromPolygon(CollisionPoly* polygon, BgVertex* vertices, TriNorm* tri);
|
||||
void BgCheck_CreateColTriParamsFromPolygon(CollisionPoly* polygon, Vec3s* vertices, TriNorm* tri);
|
||||
void func_800C02C0(CollisionPoly* poly, s32 index, CollisionContext* bgCtxt, TriNorm* tri);
|
||||
// void func_800C0340(CollisionPoly* param_1, BgVertex* param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// UNK_TYPE4 func_800C0474(CollisionPoly* param_1, BgVertex* param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_800C0340(CollisionPoly* param_1, Vec3s* param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// UNK_TYPE4 func_800C0474(CollisionPoly* param_1, Vec3s* param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_800C0668(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
// void func_800C06A8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
// void func_800C074C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
// void func_800C07F0(void);
|
||||
void BgCheck_PolygonCollidesWithSphere(CollisionPoly* polygon, BgVertex* verticies, Vec3f* pos, f32 readius);
|
||||
void BgCheck_ScenePolygonListsInsertSorted(CollisionContext* bgCtxt, u16* head, CollisionPoly* polygons, BgVertex* vertices, s16 index);
|
||||
void BgCheck_ScenePolygonListsInsert(BgMeshSubdivision* subdivision, CollisionContext* bgCtxt, CollisionPoly* polygons, BgVertex* vertices, s16 index);
|
||||
void BgCheck_PolygonCollidesWithSphere(CollisionPoly* polygon, Vec3s* verticies, Vec3f* pos, f32 readius);
|
||||
void BgCheck_ScenePolygonListsInsertSorted(CollisionContext* bgCtxt, u16* head, CollisionPoly* polygons, Vec3s* vertices, s16 index);
|
||||
void BgCheck_ScenePolygonListsInsert(StaticLookup* subdivision, CollisionContext* bgCtxt, CollisionPoly* polygons, Vec3s* vertices, s16 index);
|
||||
// void func_800C0E74(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10);
|
||||
// void func_800C10FC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9);
|
||||
// void func_800C1238(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE1 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11);
|
||||
@@ -959,17 +959,17 @@ void BgCheck_ScenePolygonListsInsert(BgMeshSubdivision* subdivision, CollisionCo
|
||||
// void func_800C25E0(void);
|
||||
void BgCheck_GetPolyMinSubdivisions(CollisionContext* bgCtxt, Vec3f* min, s32* xSubdivision, s32* ySubdivision, s32* zSubdivision);
|
||||
void BgCheck_GetPolyMaxSubdivisions(CollisionContext* bgCtxt, Vec3f* max, s32* xSubdivision, s32* ySubdivision, s32* zSubdivision);
|
||||
void BgCheck_GetPolyMinMaxSubdivisions(CollisionContext* bgCtxt, BgVertex* vertices, CollisionPoly* polygons, s32* minX, s32* minY, s32* minZ, s32* maxX, s32* maxY, s32* maxZ, s16 index);
|
||||
// UNK_TYPE4 func_800C2BE0(Vec3f* param_1, Vec3f* param_2, CollisionPoly* polygons, BgVertex* vertices, s16 index);
|
||||
u32 BgCheck_SplitScenePolygonsIntoSubdivisions(CollisionContext* bgCtxt, GlobalContext* ctxt, BgMeshSubdivision* subdivisions);
|
||||
void BgCheck_GetPolyMinMaxSubdivisions(CollisionContext* bgCtxt, Vec3s* vertices, CollisionPoly* polygons, s32* minX, s32* minY, s32* minZ, s32* maxX, s32* maxY, s32* maxZ, s16 index);
|
||||
// UNK_TYPE4 func_800C2BE0(Vec3f* param_1, Vec3f* param_2, CollisionPoly* polygons, Vec3s* vertices, s16 index);
|
||||
u32 BgCheck_SplitScenePolygonsIntoSubdivisions(CollisionContext* bgCtxt, GlobalContext* ctxt, StaticLookup* subdivisions);
|
||||
s32 BgCheck_GetIsDefaultSpecialScene(GlobalContext* ctxt);
|
||||
s32 BgCheck_GetSpecialSceneMaxMemory(s32 sceneId, u32* maxMemory);
|
||||
void BgCheck_CalcSubdivisionSize(f32 min, s32 subdivisions, f32* max, f32* subdivisionSize, f32* inverseSubdivisionSize);
|
||||
s32 BgCheck_GetSpecialSceneMaxObjects(GlobalContext* ctxt, u32* maxNodes, u32* maxPolygons, u32* maxVertices);
|
||||
void BgCheck_Init(CollisionContext* bgCtxt, GlobalContext* ctxt, BgMeshHeader* mesh);
|
||||
void BgCheck_Init(CollisionContext* bgCtxt, GlobalContext* ctxt, CollisionHeader* mesh);
|
||||
void func_800C3C00(CollisionContext* bgCtxt, u32 param_2);
|
||||
void func_800C3C14(CollisionContext* bgCtxt, u32 param_2);
|
||||
BgMeshHeader* BgCheck_GetActorMeshHeader(CollisionContext* bgCtxt, s32 index);
|
||||
CollisionHeader* BgCheck_GetActorMeshHeader(CollisionContext* bgCtxt, s32 index);
|
||||
// void func_800C3C94(void);
|
||||
f32 func_800C3D50(s32 arg0, CollisionContext* bgCtxt, s32 arg2, CollisionPoly* arg3, s32* arg4, Vec3f* pos, Actor* actor, s32 arg7, f32 arg8, s32 arg9);
|
||||
// void func_800C3F40(void);
|
||||
@@ -1009,31 +1009,31 @@ s32 func_800C576C(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u3
|
||||
// void func_800C5954(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE2 param_8);
|
||||
// void func_800C5A20(void);
|
||||
// void func_800C5A64(void);
|
||||
void BgCheck_ScenePolygonListsInit(BgScenePolygonLists* param_1);
|
||||
void BgCheck_ScenePolygonListsAlloc(GlobalContext* ctxt, BgScenePolygonLists* lists, s32 numNodes, u32 numPolygons);
|
||||
void BgCheck_ScenePolygonListsInit(SSNodeList* param_1);
|
||||
void BgCheck_ScenePolygonListsAlloc(GlobalContext* ctxt, SSNodeList* lists, s32 numNodes, u32 numPolygons);
|
||||
s32 func_800C5B80(u16* param_1);
|
||||
u16 BgCheck_ScenePolygonListsReserveNode(BgScenePolygonLists* lists);
|
||||
void BgCheck_ActorMeshParamsInit(ActorMeshParams* params);
|
||||
void BgCheck_SetActorMeshParams(ActorMeshParams* params, Vec3f* scale, Vec3s* rotation, Vec3f* position);
|
||||
s32 BgCheck_AreActorMeshParamsEqual(ActorMeshParams* param_1, ActorMeshParams* param_2);
|
||||
void BgCheck_ActorMeshPolyListsHeadsInit(ActorMeshPolyLists* lists);
|
||||
void BgCheck_ActorMeshPolyListsInit(ActorMeshPolyLists* lists);
|
||||
u16 BgCheck_ScenePolygonListsReserveNode(SSNodeList* lists);
|
||||
void BgCheck_ActorMeshParamsInit(ScaleRotPos* params);
|
||||
void BgCheck_SetActorMeshParams(ScaleRotPos* params, Vec3f* scale, Vec3s* rotation, Vec3f* position);
|
||||
s32 BgCheck_AreActorMeshParamsEqual(ScaleRotPos* param_1, ScaleRotPos* param_2);
|
||||
void BgCheck_ActorMeshPolyListsHeadsInit(DynaLookup* lists);
|
||||
void BgCheck_ActorMeshPolyListsInit(DynaLookup* lists);
|
||||
void BgCheck_ActorMeshVerticesIndexInit(s16* index);
|
||||
void BgCheck_ActorMeshWaterboxesIndexInit(s16* index);
|
||||
void BgCheck_ActorMeshInit(GlobalContext* ctxt, ActorMesh* mesh);
|
||||
void BgCheck_ActorMeshInitFromActor(ActorMesh* actorMesh, DynaPolyActor* actor, BgMeshHeader* header);
|
||||
s32 BgCheck_HasActorMeshChanged(ActorMesh* mesh);
|
||||
void BgCheck_ActorMeshInit(GlobalContext* ctxt, BgActor* mesh);
|
||||
void BgCheck_ActorMeshInitFromActor(BgActor* actorMesh, DynaPolyActor* actor, CollisionHeader* header);
|
||||
s32 BgCheck_HasActorMeshChanged(BgActor* mesh);
|
||||
void BgCheck_PolygonsInit(CollisionPoly** polygons);
|
||||
void BgCheck_PolygonsAlloc(GlobalContext* ctxt, CollisionPoly* polygons, u32 numPolygons);
|
||||
void BgCheck_VerticesInit(BgVertex** vertices);
|
||||
void BgCheck_VerticesListAlloc(GlobalContext* ctxt, BgVertex** vertices, u32 numVertices);
|
||||
void BgCheck_WaterboxListInit(BgWaterboxList* waterboxList);
|
||||
void BgCheck_WaterboxListAlloc(GlobalContext* ctxt, BgWaterboxList* waterboxList, u32 numWaterboxes);
|
||||
void BgCheck_ActorMeshUpdateParams(GlobalContext* ctxt, ActorMesh* mesh);
|
||||
void BgCheck_VerticesInit(Vec3s** vertices);
|
||||
void BgCheck_VerticesListAlloc(GlobalContext* ctxt, Vec3s** vertices, u32 numVertices);
|
||||
void BgCheck_WaterboxListInit(DynaSSWaterboxList* waterboxList);
|
||||
void BgCheck_WaterboxListAlloc(GlobalContext* ctxt, DynaSSWaterboxList* waterboxList, u32 numWaterboxes);
|
||||
void BgCheck_ActorMeshUpdateParams(GlobalContext* ctxt, BgActor* mesh);
|
||||
s32 BgCheck_IsActorMeshIndexValid(s32 index);
|
||||
void BgCheck_DynaInit(GlobalContext* ctxt, DynaCollisionContext* param_2);
|
||||
void BgCheck_DynaAlloc(GlobalContext* ctxt, DynaCollisionContext* dyna);
|
||||
s32 BgCheck_AddActorMesh(GlobalContext* ctxt, DynaCollisionContext* dyna, DynaPolyActor* actor, BgMeshHeader* header);
|
||||
s32 BgCheck_AddActorMesh(GlobalContext* ctxt, DynaCollisionContext* dyna, DynaPolyActor* actor, CollisionHeader* header);
|
||||
DynaPolyActor* BgCheck_GetActorOfMesh(CollisionContext* bgCtxt, s32 index);
|
||||
void func_800C62BC(GlobalContext* ctxt, DynaCollisionContext* dyna, s32 index);
|
||||
void func_800C6314(GlobalContext* ctxt, DynaCollisionContext* dyna, s32 index);
|
||||
@@ -1061,8 +1061,8 @@ void BgCheck_UpdateAllActorMeshes(GlobalContext* ctxt, DynaCollisionContext* dyn
|
||||
// void func_800C90AC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7);
|
||||
// void func_800C921C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE2 param_7, UNK_TYPE4 param_8);
|
||||
// void func_800C9380(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE2 param_8);
|
||||
void BgCheck_RelocateMeshHeaderPointers(BgMeshHeader* header);
|
||||
void BgCheck_RelocateMeshHeader(BgMeshHeader* meshSegPtr, BgMeshHeader** param_2);
|
||||
void BgCheck_RelocateMeshHeaderPointers(CollisionHeader* header);
|
||||
void BgCheck_RelocateMeshHeader(CollisionHeader* meshSegPtr, CollisionHeader** param_2);
|
||||
void BgCheck_RelocateAllMeshHeaders(CollisionContext* bgCtxt, GlobalContext* ctxt);
|
||||
// void func_800C9640(void);
|
||||
u32 BgCheck_GetPolygonAttributes(CollisionContext* bgCtxt, CollisionPoly* polygon, s32 index, s32 attributeIndex);
|
||||
@@ -1116,7 +1116,7 @@ void BgCheck2_UpdateActorYRotation(CollisionContext* bgCtxt, s32 index, Actor* a
|
||||
void BgCheck2_AttachToMesh(CollisionContext* bgCtxt, Actor* actor, s32 index);
|
||||
u32 BgCheck2_UpdateActorAttachedToMesh(CollisionContext* bgCtxt, s32 index, Actor* actor);
|
||||
void BcCheck3_BgActorInit(DynaPolyActor* actor, UNK_TYPE4 param_2);
|
||||
void BgCheck3_LoadMesh(GlobalContext* ctxt, DynaPolyActor* actor, BgMeshHeader* meshHeader);
|
||||
void BgCheck3_LoadMesh(GlobalContext* ctxt, DynaPolyActor* actor, CollisionHeader* meshHeader);
|
||||
void BgCheck3_ResetFlags(DynaPolyActor* actor);
|
||||
void func_800CAE88(DynaPolyActor* actor);
|
||||
void func_800CAE9C(DynaPolyActor* actor);
|
||||
|
||||
@@ -56,6 +56,21 @@ extern GraphicsContext* __gfxCtx;
|
||||
} \
|
||||
(void)0
|
||||
|
||||
/**
|
||||
* `x` vertex x
|
||||
* `y` vertex y
|
||||
* `z` vertex z
|
||||
* `s` texture s coordinate
|
||||
* `t` texture t coordinate
|
||||
* `crnx` red component of color vertex, or x component of normal vertex
|
||||
* `cgny` green component of color vertex, or y component of normal vertex
|
||||
* `cbnz` blue component of color vertex, or z component of normal vertex
|
||||
* `a` alpha
|
||||
*/
|
||||
#define VTX(x,y,z,s,t,crnx,cgny,cbnz,a) { { { x, y, z }, 0, { s, t }, { crnx, cgny, cbnz, a } } }
|
||||
|
||||
#define VTX_T(x,y,z,s,t,cr,cg,cb,a) { { x, y, z }, 0, { s, t }, { cr, cg, cb, a } }
|
||||
|
||||
#define GRAPH_ALLOC(gfxCtx, size) \
|
||||
((gfxCtx)->polyOpa.d = (Gfx*)((u8*)(gfxCtx)->polyOpa.d - (size)))
|
||||
|
||||
|
||||
@@ -21,7 +21,4 @@ typedef struct {
|
||||
/* 0x4 */ OSPri priority;
|
||||
} __OSThreadTail;
|
||||
|
||||
#include <global.h> // TODO this is just so libultra files can see function and variable declarations.
|
||||
// Once all data sections have been split up, it should be removed.
|
||||
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -46,6 +46,6 @@ extern Gfx object_ikana_obj_001100[];
|
||||
extern AnimatedTexture object_ikana_obj_001228[];
|
||||
|
||||
extern Gfx object_fu_kaiten_0005D0[];
|
||||
extern BgMeshHeader object_fu_kaiten_002D30;
|
||||
extern CollisionHeader object_fu_kaiten_002D30;
|
||||
|
||||
#endif
|
||||
|
||||
+34
-34
@@ -28,27 +28,27 @@ DECLARE_ROM_SEGMENT(dmadata)
|
||||
DECLARE_ROM_SEGMENT(Audiobank)
|
||||
DECLARE_ROM_SEGMENT(Audioseq)
|
||||
DECLARE_ROM_SEGMENT(Audiotable)
|
||||
DECLARE_ROM_SEGMENT(jpn_font_static)
|
||||
DECLARE_ROM_SEGMENT(kanji)
|
||||
DECLARE_ROM_SEGMENT(link_animetion)
|
||||
DECLARE_ROM_SEGMENT(icon_item_field_static)
|
||||
DECLARE_ROM_SEGMENT(icon_item_dungeon_static)
|
||||
DECLARE_ROM_SEGMENT(icon_item_gameover_static)
|
||||
DECLARE_ROM_SEGMENT(_013_0x00963540)
|
||||
DECLARE_ROM_SEGMENT(_014_0x00967260)
|
||||
DECLARE_ROM_SEGMENT(icon_item_jpn_static)
|
||||
DECLARE_ROM_SEGMENT(icon_item_vtx_static)
|
||||
DECLARE_ROM_SEGMENT(map_i_static)
|
||||
DECLARE_ROM_SEGMENT(map_grand_static)
|
||||
DECLARE_ROM_SEGMENT(item_name_static)
|
||||
DECLARE_ROM_SEGMENT(map_name_static)
|
||||
DECLARE_ROM_SEGMENT(_019_0x00980f60)
|
||||
DECLARE_ROM_SEGMENT(_020_0x009c6230)
|
||||
DECLARE_ROM_SEGMENT(_022_0x009caaf0)
|
||||
DECLARE_ROM_SEGMENT(_023_0x009d1500)
|
||||
DECLARE_ROM_SEGMENT(_024_0x009d3760)
|
||||
DECLARE_ROM_SEGMENT(icon_item_static_test)
|
||||
DECLARE_ROM_SEGMENT(icon_item_24_static_test)
|
||||
DECLARE_ROM_SEGMENT(schedule_dma_static_test)
|
||||
DECLARE_ROM_SEGMENT(schedule_static)
|
||||
DECLARE_ROM_SEGMENT(story_static)
|
||||
DECLARE_ROM_SEGMENT(do_action_static)
|
||||
DECLARE_ROM_SEGMENT(message_static)
|
||||
DECLARE_ROM_SEGMENT(message_texture_static)
|
||||
DECLARE_ROM_SEGMENT(nes_font_static)
|
||||
DECLARE_ROM_SEGMENT(en_message_data_static)
|
||||
DECLARE_ROM_SEGMENT(message_data_static)
|
||||
DECLARE_ROM_SEGMENT(staff_message_data_static)
|
||||
|
||||
DECLARE_SEGMENT(code)
|
||||
@@ -409,11 +409,11 @@ DECLARE_OVERLAY_SEGMENT(En_Po_Fusen)
|
||||
DECLARE_OVERLAY_SEGMENT(En_Door_Etc)
|
||||
DECLARE_OVERLAY_SEGMENT(En_Bigokuta)
|
||||
DECLARE_OVERLAY_SEGMENT(Bg_Icefloe)
|
||||
DECLARE_ROM_SEGMENT(_385_0x00cfc450)
|
||||
DECLARE_ROM_SEGMENT(_386_0x00cfc970)
|
||||
DECLARE_ROM_SEGMENT(_387_0x00cfd400)
|
||||
DECLARE_ROM_SEGMENT(_388_0x00cfdf10)
|
||||
DECLARE_ROM_SEGMENT(_389_0x00cfe150)
|
||||
DECLARE_OVERLAY_SEGMENT(fbdemo_triforce)
|
||||
DECLARE_OVERLAY_SEGMENT(fbdemo_wipe1)
|
||||
DECLARE_OVERLAY_SEGMENT(fbdemo_wipe3)
|
||||
DECLARE_OVERLAY_SEGMENT(fbdemo_wipe4)
|
||||
DECLARE_OVERLAY_SEGMENT(fbdemo_wipe5)
|
||||
DECLARE_OVERLAY_SEGMENT(Effect_Ss_Sbn)
|
||||
DECLARE_OVERLAY_SEGMENT(Obj_Ocarinalift)
|
||||
DECLARE_OVERLAY_SEGMENT(En_Time_Tag)
|
||||
@@ -1139,27 +1139,27 @@ DECLARE_ROM_SEGMENT(object_fusen)
|
||||
DECLARE_ROM_SEGMENT(object_ending_obj)
|
||||
DECLARE_ROM_SEGMENT(object_gi_mask13)
|
||||
|
||||
DECLARE_ROM_SEGMENT(_1114_0x01607b40)
|
||||
DECLARE_ROM_SEGMENT(_1115_0x0160b1d0)
|
||||
DECLARE_ROM_SEGMENT(_1116_0x0160c540)
|
||||
DECLARE_ROM_SEGMENT(_1117_0x0160ed50)
|
||||
DECLARE_ROM_SEGMENT(_1118_0x01611e20)
|
||||
DECLARE_ROM_SEGMENT(_1119_0x01615e00)
|
||||
DECLARE_ROM_SEGMENT(_1120_0x01619170)
|
||||
DECLARE_ROM_SEGMENT(_1121_0x01619190)
|
||||
DECLARE_ROM_SEGMENT(scene_texture_01)
|
||||
DECLARE_ROM_SEGMENT(scene_texture_02)
|
||||
DECLARE_ROM_SEGMENT(scene_texture_03)
|
||||
DECLARE_ROM_SEGMENT(scene_texture_04)
|
||||
DECLARE_ROM_SEGMENT(scene_texture_05)
|
||||
DECLARE_ROM_SEGMENT(scene_texture_06)
|
||||
DECLARE_ROM_SEGMENT(scene_texture_07)
|
||||
DECLARE_ROM_SEGMENT(scene_texture_08)
|
||||
DECLARE_ROM_SEGMENT(nintendo_rogo_static)
|
||||
DECLARE_ROM_SEGMENT(title_static)
|
||||
DECLARE_ROM_SEGMENT(_1124_0x0163f490)
|
||||
DECLARE_ROM_SEGMENT(_1125_0x0163fc10)
|
||||
DECLARE_ROM_SEGMENT(_1126_0x0163ffc0)
|
||||
DECLARE_ROM_SEGMENT(_1127_0x01643d50)
|
||||
DECLARE_ROM_SEGMENT(_1128_0x01644c80)
|
||||
DECLARE_ROM_SEGMENT(_1129_0x01646b60)
|
||||
DECLARE_ROM_SEGMENT(_1130_0x01649020)
|
||||
DECLARE_ROM_SEGMENT(_1131_0x0164ad90)
|
||||
DECLARE_ROM_SEGMENT(vr_fine_static)
|
||||
DECLARE_ROM_SEGMENT(vr_cloud_static)
|
||||
DECLARE_ROM_SEGMENT(vr_pal_static)
|
||||
DECLARE_ROM_SEGMENT(memerrmsg)
|
||||
DECLARE_ROM_SEGMENT(locerrmsg)
|
||||
DECLARE_ROM_SEGMENT(parameter_static)
|
||||
DECLARE_ROM_SEGMENT(week_static)
|
||||
DECLARE_ROM_SEGMENT(daytelop_static)
|
||||
DECLARE_ROM_SEGMENT(ger_daytelop_static)
|
||||
DECLARE_ROM_SEGMENT(fra_daytelop_static)
|
||||
DECLARE_ROM_SEGMENT(spa_daytelop_static)
|
||||
DECLARE_ROM_SEGMENT(d2_fine_static)
|
||||
DECLARE_ROM_SEGMENT(d2_cloud_static)
|
||||
DECLARE_ROM_SEGMENT(d2_fine_pal_static)
|
||||
DECLARE_ROM_SEGMENT(elf_message_field)
|
||||
DECLARE_ROM_SEGMENT(elf_message_ydan)
|
||||
|
||||
@@ -1562,7 +1562,7 @@ DECLARE_ROM_SEGMENT(Z2_12HAKUGINMAE_room_00)
|
||||
DECLARE_ROM_SEGMENT(Z2_17SETUGEN)
|
||||
DECLARE_ROM_SEGMENT(Z2_17SETUGEN_room_00)
|
||||
|
||||
DECLARE_ROM_SEGMENT(_1455_0x01d35b80)
|
||||
DECLARE_ROM_SEGMENT(Z2_17SETUGEN2)
|
||||
DECLARE_ROM_SEGMENT(Z2_17SETUGEN2_room_00)
|
||||
|
||||
DECLARE_ROM_SEGMENT(Z2_SEA_BS)
|
||||
|
||||
+9
-83
@@ -22,6 +22,7 @@
|
||||
|
||||
#include <z64actor.h>
|
||||
#include <z64animation.h>
|
||||
#include <z64bgcheck.h>
|
||||
#include <z64collision_check.h>
|
||||
#include <z64cutscene.h>
|
||||
#include <z64dma.h>
|
||||
@@ -548,29 +549,19 @@ typedef struct {
|
||||
/* 0x14 */ Vec3f pos;
|
||||
} ActorMeshParams; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 type;
|
||||
union {
|
||||
u16 vtxData[3];
|
||||
struct {
|
||||
/* 0x02 */ u16 flags_vIA; // 0xE000 is poly exclusion flags (xpFlags), 0x1FFF is vtxId
|
||||
/* 0x04 */ u16 flags_vIB; // 0xE000 is flags, 0x1FFF is vtxId
|
||||
// 0x2000 = poly IsConveyor surface
|
||||
/* 0x06 */ u16 vIC;
|
||||
};
|
||||
};
|
||||
/* 0x08 */ Vec3s normal; // Unit normal vector
|
||||
// Value ranges from -0x7FFF to 0x7FFF, representing -1.0 to 1.0; 0x8000 is invalid
|
||||
|
||||
/* 0x0E */ s16 dist; // Plane distance from origin along the normal
|
||||
} CollisionPoly; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ BgPolygonLinkedListNode* nodes;
|
||||
/* 0x4 */ u32 nextFreeNode;
|
||||
/* 0x8 */ s32 maxNodes;
|
||||
} BgPolygonLinkedList; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ f32 x[4];
|
||||
/* 0x10 */ f32 y[4];
|
||||
/* 0x20 */ f32 z[4];
|
||||
/* 0x30 */ f32 w[4];
|
||||
} z_Matrix; // size = 0x40
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ Vec3s pos;
|
||||
} BgVertex; // size = 0x6
|
||||
@@ -758,19 +749,6 @@ typedef struct {
|
||||
|
||||
typedef void(*fault_update_input_func)(Input* input);
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3s min;
|
||||
/* 0x06 */ Vec3s max;
|
||||
/* 0x0C */ u16 numVertices;
|
||||
/* 0x10 */ BgVertex* vertices;
|
||||
/* 0x14 */ u16 numPolygons;
|
||||
/* 0x18 */ CollisionPoly* polygons;
|
||||
/* 0x1C */ BgPolygonAttributes* attributes;
|
||||
/* 0x20 */ UNK_PTR cameraData;
|
||||
/* 0x24 */ u16 numWaterBoxes;
|
||||
/* 0x28 */ BgWaterBox* waterboxes;
|
||||
} BgMeshHeader; // size = 0x2C
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ View view;
|
||||
/* 0x168 */ UNK_TYPE1 pad168[0x84];
|
||||
@@ -1044,19 +1022,6 @@ typedef struct {
|
||||
/* 0x3CA0 */ SaveContextExtra extra;
|
||||
} SaveContext; // size = 0x48C8
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ BgMeshHeader* sceneMesh;
|
||||
/* 0x04 */ Vec3f sceneMin;
|
||||
/* 0x10 */ Vec3f sceneMax;
|
||||
/* 0x1C */ s32 xSubdivisions;
|
||||
/* 0x20 */ s32 ySubdivisions;
|
||||
/* 0x24 */ s32 zSubdivisions;
|
||||
/* 0x28 */ Vec3f subdivisionSize;
|
||||
/* 0x34 */ Vec3f inverseSubdivisionSize;
|
||||
/* 0x40 */ BgMeshSubdivision* subdivisions;
|
||||
/* 0x44 */ BgScenePolygonLists scenePolyLists;
|
||||
} StaticCollisionContext; // size = 0x50
|
||||
|
||||
typedef struct ActorBgMbarChair ActorBgMbarChair;
|
||||
|
||||
typedef struct ActorEnBji01 ActorEnBji01;
|
||||
@@ -1065,10 +1030,6 @@ typedef struct ActorEnTest ActorEnTest;
|
||||
|
||||
typedef struct ActorListEntry ActorListEntry;
|
||||
|
||||
typedef struct DynaCollisionContext DynaCollisionContext;
|
||||
|
||||
typedef struct CollisionContext CollisionContext;
|
||||
|
||||
typedef struct ArenaNode_t {
|
||||
/* 0x0 */ s16 magic; // Should always be 0x7373
|
||||
/* 0x2 */ s16 isFree;
|
||||
@@ -1094,41 +1055,6 @@ typedef struct ActorObjBell ActorObjBell;
|
||||
|
||||
typedef struct DaytelopContext DaytelopContext;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ DynaPolyActor* actor;
|
||||
/* 0x04 */ BgMeshHeader* header;
|
||||
/* 0x08 */ ActorMeshPolyLists polyLists;
|
||||
/* 0x10 */ s16 verticesStartIndex;
|
||||
/* 0x12 */ s16 waterboxesStartIndex;
|
||||
/* 0x14 */ ActorMeshParams prevParams;
|
||||
/* 0x34 */ ActorMeshParams currParams;
|
||||
/* 0x54 */ Vec3s averagePos;
|
||||
/* 0x5A */ s16 radiusFromAveragePos;
|
||||
/* 0x5C */ f32 minY;
|
||||
/* 0x60 */ f32 maxY;
|
||||
} ActorMesh; // size = 0x64
|
||||
|
||||
struct DynaCollisionContext {
|
||||
/* 0x0000 */ u8 unk0;
|
||||
/* 0x0001 */ UNK_TYPE1 pad1[0x3];
|
||||
/* 0x0004 */ ActorMesh actorMeshArr[50];
|
||||
/* 0x138C */ u16 flags[50]; // bit 0 - Is mesh active
|
||||
/* 0x13F0 */ CollisionPoly* polygons;
|
||||
/* 0x13F4 */ BgVertex* vertices;
|
||||
/* 0x13F8 */ BgWaterboxList waterboxes;
|
||||
/* 0x1400 */ BgPolygonLinkedList polygonList;
|
||||
/* 0x140C */ u32 maxNodes;
|
||||
/* 0x1410 */ u32 maxPolygons;
|
||||
/* 0x1414 */ u32 maxVertices;
|
||||
/* 0x1418 */ u32 maxMemory;
|
||||
/* 0x141C */ u32 unk141C;
|
||||
}; // size = 0x1420
|
||||
|
||||
struct CollisionContext {
|
||||
/* 0x0000 */ StaticCollisionContext stat;
|
||||
/* 0x0050 */ DynaCollisionContext dyna;
|
||||
}; // size = 0x1470
|
||||
|
||||
typedef struct ActorBgIknvObj ActorBgIknvObj;
|
||||
|
||||
typedef struct FaultAddrConvClient FaultAddrConvClient;
|
||||
@@ -1701,7 +1627,7 @@ struct GlobalContext {
|
||||
/* 0x18848 */ u8 numRooms;
|
||||
/* 0x18849 */ UNK_TYPE1 pad18849;
|
||||
/* 0x1884A */ s16 unk1884A;
|
||||
/* 0x1884C */ RoomFileLocation* roomList;
|
||||
/* 0x1884C */ RomFile* roomList;
|
||||
/* 0x18850 */ ActorEntry* linkActorEntry;
|
||||
/* 0x18854 */ ActorEntry* setupActorList;
|
||||
/* 0x18858 */ UNK_PTR unk18858;
|
||||
|
||||
@@ -0,0 +1,203 @@
|
||||
#ifndef _Z_BGCHECK_
|
||||
#define _Z_BGCHECK_
|
||||
|
||||
struct GlobalContext;
|
||||
struct Actor;
|
||||
struct DynaPolyActor;
|
||||
|
||||
#define COLPOLY_NORMAL_FRAC (1.0f / SHT_MAX)
|
||||
#define COLPOLY_SNORMAL(x) ((s16)((x) * SHT_MAX))
|
||||
#define COLPOLY_GET_NORMAL(n) ((n)*COLPOLY_NORMAL_FRAC)
|
||||
#define COLPOLY_VIA_FLAG_TEST(vIA, flags) ((vIA) & (((flags)&7) << 13))
|
||||
#define COLPOLY_VTX_INDEX(vI) ((vI)&0x1FFF)
|
||||
|
||||
#define DYNAPOLY_INVALIDATE_LOOKUP (1 << 0)
|
||||
|
||||
#define BGACTOR_NEG_ONE -1
|
||||
#define BG_ACTOR_MAX 50
|
||||
#define BGCHECK_SCENE BG_ACTOR_MAX
|
||||
#define BGCHECK_Y_MIN -32000.0f
|
||||
#define BGCHECK_XYZ_ABSMAX 32760.0f
|
||||
#define BGCHECK_SUBDIV_OVERLAP 50
|
||||
#define BGCHECK_SUBDIV_MIN 150.0f
|
||||
|
||||
#define FUNC_80041EA4_RESPAWN 5
|
||||
#define FUNC_80041EA4_MOUNT_WALL 6
|
||||
#define FUNC_80041EA4_STOP 8
|
||||
#define FUNC_80041EA4_VOID_OUT 12
|
||||
|
||||
#define WATERBOX_ROOM(p) ((p >> 13) & 0x3F)
|
||||
|
||||
typedef struct {
|
||||
Vec3f scale;
|
||||
Vec3s rot;
|
||||
Vec3f pos;
|
||||
} ScaleRotPos;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 type;
|
||||
union {
|
||||
u16 vtxData[3];
|
||||
struct {
|
||||
/* 0x02 */ u16 flags_vIA; // 0xE000 is poly exclusion flags (xpFlags), 0x1FFF is vtxId
|
||||
/* 0x04 */ u16 flags_vIB; // 0xE000 is flags, 0x1FFF is vtxId
|
||||
// 0x2000 = poly IsConveyor surface
|
||||
/* 0x06 */ u16 vIC;
|
||||
};
|
||||
};
|
||||
/* 0x08 */ Vec3s normal; // Unit normal vector
|
||||
// Value ranges from -0x7FFF to 0x7FFF, representing -1.0 to 1.0; 0x8000 is invalid
|
||||
|
||||
/* 0x0E */ s16 dist; // Plane distance from origin along the normal
|
||||
} CollisionPoly; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 cameraSType;
|
||||
/* 0x02 */ s16 numCameras;
|
||||
/* 0x04 */ Vec3s* camPosData;
|
||||
} CamData;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 xMin;
|
||||
/* 0x02 */ s16 ySurface;
|
||||
/* 0x04 */ s16 zMin;
|
||||
/* 0x06 */ s16 xLength;
|
||||
/* 0x08 */ s16 zLength;
|
||||
/* 0x0C */ u32 properties;
|
||||
|
||||
// 0x0008_0000 = ?
|
||||
// 0x0007_E000 = Room Index, 0x3F = all rooms
|
||||
// 0x0000_1F00 = Lighting Settings Index
|
||||
// 0x0000_00FF = CamData index
|
||||
} WaterBox; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
u32 data[2];
|
||||
|
||||
// Type 1
|
||||
// 0x0800_0000 = wall damage
|
||||
} SurfaceType;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3s minBounds; // minimum coordinates of poly bounding box
|
||||
/* 0x06 */ Vec3s maxBounds; // maximum coordinates of poly bounding box
|
||||
/* 0x0C */ u16 nbVertices;
|
||||
/* 0x10 */ Vec3s* vtxList;
|
||||
/* 0x14 */ u16 nbPolygons;
|
||||
/* 0x18 */ CollisionPoly* polyList;
|
||||
/* 0x1C */ SurfaceType* surfaceTypeList;
|
||||
/* 0x20 */ CamData* cameraDataList;
|
||||
/* 0x24 */ u16 nbWaterBoxes;
|
||||
/* 0x28 */ WaterBox* waterBoxes;
|
||||
} CollisionHeader; // original name: BGDataInfo
|
||||
|
||||
typedef struct {
|
||||
s16 polyId;
|
||||
u16 next; // next SSNode index
|
||||
} SSNode;
|
||||
|
||||
typedef struct {
|
||||
u16 head; // first SSNode index
|
||||
} SSList;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 max; // original name: short_slist_node_size
|
||||
/* 0x02 */ u16 count; // original name: short_slist_node_last_index
|
||||
/* 0x04 */ SSNode* tbl; // original name: short_slist_node_tbl
|
||||
/* 0x08 */ u8* polyCheckTbl; // points to an array of bytes, one per static poly. Zero initialized when starting a
|
||||
// bg check, and set to 1 if that poly has already been tested.
|
||||
} SSNodeList;
|
||||
|
||||
typedef struct {
|
||||
SSNode* tbl;
|
||||
s32 count;
|
||||
s32 max;
|
||||
} DynaSSNodeList;
|
||||
|
||||
typedef struct {
|
||||
SSList floor;
|
||||
SSList wall;
|
||||
SSList ceiling;
|
||||
} StaticLookup;
|
||||
|
||||
typedef struct {
|
||||
u16 polyStartIndex;
|
||||
SSList ceiling;
|
||||
SSList wall;
|
||||
SSList floor;
|
||||
} DynaLookup;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ struct Actor* actor;
|
||||
/* 0x04 */ CollisionHeader* colHeader;
|
||||
/* 0x08 */ DynaLookup dynaLookup;
|
||||
/* 0x10 */ u16 vtxStartIndex;
|
||||
/* 0x14 */ ScaleRotPos prevTransform;
|
||||
/* 0x34 */ ScaleRotPos curTransform;
|
||||
/* 0x54 */ Sphere16 boundingSphere;
|
||||
/* 0x5C */ f32 minY;
|
||||
/* 0x60 */ f32 maxY;
|
||||
} BgActor; // size = 0x64
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ UNK_TYPE1 pad0[0x4];
|
||||
/* 0x4 */ WaterBox* boxes;
|
||||
} DynaSSWaterboxList; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u8 bitFlag;
|
||||
/* 0x0004 */ BgActor bgActors[BG_ACTOR_MAX];
|
||||
/* 0x138C */ u16 bgActorFlags[BG_ACTOR_MAX]; // & 0x0008 = no dyna ceiling
|
||||
/* 0x13F0 */ CollisionPoly* polyList;
|
||||
/* 0x13F4 */ Vec3s* vtxList;
|
||||
/* 0x13F8 */ DynaSSWaterboxList waterboxes;
|
||||
/* 0x1400 */ DynaSSNodeList polyNodes;
|
||||
/* 0x140C */ s32 polyNodesMax;
|
||||
/* 0x1410 */ s32 polyListMax;
|
||||
/* 0x1414 */ s32 vtxListMax;
|
||||
} DynaCollisionContext; // size = 0x1418
|
||||
|
||||
typedef struct CollisionContext {
|
||||
/* 0x00 */ CollisionHeader* colHeader; // scene's static collision
|
||||
/* 0x04 */ Vec3f minBounds; // minimum coordinates of collision bounding box
|
||||
/* 0x10 */ Vec3f maxBounds; // maximum coordinates of collision bounding box
|
||||
/* 0x1C */ Vec3i subdivAmount; // x, y, z subdivisions of the scene's static collision
|
||||
/* 0x28 */ Vec3f subdivLength; // x, y, z subdivision worldspace lengths
|
||||
/* 0x34 */ Vec3f subdivLengthInv; // inverse of subdivision length
|
||||
/* 0x40 */ StaticLookup* lookupTbl; // 3d array of length subdivAmount
|
||||
/* 0x44 */ SSNodeList polyNodes;
|
||||
/* 0x50 */ DynaCollisionContext dyna;
|
||||
/* 0x1460 */ u32 memSize; // Size of all allocated memory plus CollisionContext
|
||||
/* 0x146C */ u32 unk146C;
|
||||
} CollisionContext; // size = 0x1470
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ struct GlobalContext* globalCtx;
|
||||
/* 0x04 */ struct CollisionContext* colCtx;
|
||||
/* 0x08 */ u16 xpFlags;
|
||||
/* 0x0C */ CollisionPoly** resultPoly;
|
||||
/* 0x10 */ f32 yIntersect;
|
||||
/* 0x14 */ Vec3f* pos;
|
||||
/* 0x18 */ s32* bgId;
|
||||
/* 0x1C */ struct Actor* actor;
|
||||
/* 0x20 */ u32 unk_20;
|
||||
/* 0x24 */ f32 chkDist;
|
||||
/* 0x28 */ DynaCollisionContext* dyna;
|
||||
/* 0x2C */ SSList* ssList;
|
||||
} DynaRaycast;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ struct CollisionContext* colCtx;
|
||||
/* 0x04 */ u16 xpFlags;
|
||||
/* 0x08 */ DynaCollisionContext* dyna;
|
||||
/* 0x0C */ SSList* ssList;
|
||||
/* 0x10 */ Vec3f* posA;
|
||||
/* 0x14 */ Vec3f* posB;
|
||||
/* 0x18 */ Vec3f* posResult;
|
||||
/* 0x1C */ CollisionPoly** resultPoly;
|
||||
/* 0x20 */ s32 chkOneFace; // bccFlags & 0x8
|
||||
/* 0x24 */ f32* distSq; // distance from posA to poly squared
|
||||
/* 0x28 */ f32 chkDist; // distance from poly
|
||||
} DynaLineTest;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,21 @@
|
||||
#ifndef _Z64CUTSCENE_COMMANDS_H_
|
||||
#define _Z64CUTSCENE_COMMANDS_H_
|
||||
|
||||
#include "command_macros_base.h"
|
||||
#include "z64cutscene.h"
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
* s32 totalEntries (e), s32 endFrame (n)
|
||||
* FORMAT
|
||||
* eeeeeeee nnnnnnnn
|
||||
* size = 0x8
|
||||
*/
|
||||
#define CS_BEGIN_CUTSCENE(totalEntries, endFrame) CMD_W(totalEntries), CMD_W(endFrame)
|
||||
|
||||
/**
|
||||
* Marks the end of a cutscene
|
||||
*/
|
||||
#define CS_END() 0xFFFFFFFF
|
||||
|
||||
#endif
|
||||
+125
-2
@@ -5,10 +5,12 @@
|
||||
#include <z64dma.h>
|
||||
#include <unk.h>
|
||||
|
||||
#define SPAWN_ROT_FLAGS(rotation, flags) (((rotation) << 7) | (flags))
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u32 vromStart;
|
||||
/* 0x4 */ u32 vromEnd;
|
||||
} RoomFileLocation; // size = 0x8
|
||||
} RomFile; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
@@ -170,6 +172,12 @@ typedef struct {
|
||||
/* 0x04 */ void* segment;
|
||||
} SCmdCutsceneData;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 cameraMovement;
|
||||
/* 0x04 */ u32 area;
|
||||
} SCmdMiscSettings;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 code;
|
||||
/* 0x01 */ u8 data1;
|
||||
@@ -351,6 +359,121 @@ typedef struct {
|
||||
/* 0x00C */ ObjectStatus objects[35]; // TODO: OBJECT_EXCHANGE_BANK_MAX array size
|
||||
} SceneContext; // size = 0x958
|
||||
|
||||
typedef struct {
|
||||
u8 headerType;
|
||||
} MeshHeaderBase;
|
||||
|
||||
typedef struct {
|
||||
MeshHeaderBase base;
|
||||
|
||||
u8 numEntries;
|
||||
u32 dListStart;
|
||||
u32 dListEnd;
|
||||
} MeshHeader0;
|
||||
|
||||
typedef struct {
|
||||
u32 opaqueDList;
|
||||
u32 translucentDList;
|
||||
} MeshEntry0;
|
||||
|
||||
typedef struct {
|
||||
MeshHeaderBase base;
|
||||
u8 format;
|
||||
u32 entryRecord;
|
||||
} MeshHeader1Base;
|
||||
|
||||
typedef struct {
|
||||
MeshHeader1Base base;
|
||||
u32 imagePtr; // 0x08
|
||||
u32 unknown; // 0x0C
|
||||
u32 unknown2; // 0x10
|
||||
u16 bgWidth; // 0x14
|
||||
u16 bgHeight; // 0x16
|
||||
u8 imageFormat; // 0x18
|
||||
u8 imageSize; // 0x19
|
||||
u16 imagePal; // 0x1A
|
||||
u16 imageFlip; // 0x1C
|
||||
} MeshHeader1Single;
|
||||
|
||||
typedef struct {
|
||||
MeshHeader1Base base;
|
||||
u8 bgCnt;
|
||||
u32 bgRecordPtr;
|
||||
} MeshHeader1Multi;
|
||||
|
||||
typedef struct {
|
||||
u16 unknown; // 0x00
|
||||
s8 bgID; // 0x02
|
||||
u32 imagePtr; // 0x04
|
||||
u32 unknown2; // 0x08
|
||||
u32 unknown3; // 0x0C
|
||||
u16 bgWidth; // 0x10
|
||||
u16 bgHeight; // 0x12
|
||||
u8 imageFmt; // 0x14
|
||||
u8 imageSize; // 0x15
|
||||
u16 imagePal; // 0x16
|
||||
u16 imageFlip; // 0x18
|
||||
} BackgroundRecord;
|
||||
|
||||
typedef struct {
|
||||
s16 playerXMax, playerZMax;
|
||||
s16 playerXMin, playerZMin;
|
||||
u32 opaqueDList;
|
||||
u32 translucentDList;
|
||||
} MeshEntry2;
|
||||
|
||||
typedef struct {
|
||||
MeshHeaderBase base;
|
||||
u8 numEntries;
|
||||
u32 dListStart;
|
||||
u32 dListEnd;
|
||||
} MeshHeader2;
|
||||
|
||||
typedef struct {
|
||||
u8 ambientClrR, ambientClrG, ambientClrB;
|
||||
u8 diffuseClrA_R, diffuseClrA_G, diffuseClrA_B;
|
||||
u8 diffuseDirA_X, diffuseDirA_Y, diffuseDirA_Z;
|
||||
u8 diffuseClrB_R, diffuseClrB_G, diffuseClrB_B;
|
||||
u8 diffuseDirB_X, diffuseDirB_Y, diffuseDirB_Z;
|
||||
u8 fogClrR, fogClrG, fogClrB;
|
||||
u16 unk;
|
||||
u16 drawDistance;
|
||||
} LightSettings;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 count; // number of points in the path
|
||||
/* 0x01 */ s8 unk1;
|
||||
/* 0x02 */ s16 unk2;
|
||||
/* 0x04 */ Vec3s* points; // Segment Address to the array of points
|
||||
} Path; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ UNK_TYPE2 unk0;
|
||||
/* 0x02 */ UNK_TYPE2 unk2;
|
||||
/* 0x04 */ UNK_TYPE2 unk4;
|
||||
/* 0x06 */ UNK_TYPE2 unk6;
|
||||
/* 0x08 */ UNK_TYPE2 unk8;
|
||||
} MinimapEntry; // size = 0xA
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ MinimapEntry* entry;
|
||||
/* 0x04 */ UNK_TYPE unk4;
|
||||
} MinimapList; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ UNK_TYPE2 unk0;
|
||||
/* 0x02 */ UNK_TYPE2 unk2;
|
||||
/* 0x04 */ UNK_TYPE2 unk4;
|
||||
/* 0x06 */ UNK_TYPE2 unk6;
|
||||
/* 0x08 */ UNK_TYPE2 unk8;
|
||||
} MinimapChest; // size = 0xA
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 type;
|
||||
/* 0x00 */ s16 numPoints;
|
||||
/* 0x00 */ Vec3s* points;
|
||||
} CsCameraEntry;
|
||||
|
||||
typedef union {
|
||||
/* Command: N/A */ SCmdBase base;
|
||||
/* Command: 0x00 */ SCmdSpawnList spawnList;
|
||||
@@ -376,7 +499,7 @@ typedef union {
|
||||
/* Command: 0x14 */ SCmdEndMarker endMarker;
|
||||
/* Command: 0x15 */ SCmdSoundSettings soundSettings;
|
||||
/* Command: 0x16 */ SCmdEchoSettings echoSettings;
|
||||
/* Command: 0x17 */ SCmdCutsceneData cutsceneData;
|
||||
/* Command: 0x17 */ SCmdMiscSettings miscSettings;
|
||||
/* Command: 0x18 */ SCmdAltHeaders altHeaders;
|
||||
/* Command: 0x19 */ SCmdWorldMapVisited worldMapVisited;
|
||||
/* Command: 0x1A */ SCmdTextureAnimations textureAnimations;
|
||||
|
||||
Reference in New Issue
Block a user