mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
Name some SurfaceType_ functions (#1155)
* enums * renaming functions * fixes * SurfaceType_IsSoft * type fixing * format * Update src/code/z_bgcheck.c Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Update src/code/z_bgcheck.c Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Update src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * review Co-authored-by: engineer124 <engineer124engineer124@gmail.com> * SurfaceType_GetFloorEffect Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com> * format * bss * cleanups * extra material docs * cleanup * cleanups * Remove Bg prefix * minor fixes * Remove BG_ * SURFACE_MATERIAL_DIRT_SHALLOW * format * bss * bss * review Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * format * format again * bug * format * namefixer * bss * bss * bss * review --------- Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> Co-authored-by: engineer124 <engineer124engineer124@gmail.com> Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
This commit is contained in:
co-authored by
engineer124
engineer124
Dragorn421
parent
4647ebb91b
commit
38d21bbe97
@@ -776,164 +776,6 @@ void* ActorOverlayTable_FaultAddrConv(void* address, void* param);
|
||||
void ActorOverlayTable_Init(void);
|
||||
void ActorOverlayTable_Cleanup(void);
|
||||
|
||||
void SSNode_SetValue(SSNode* node, s16* polyIndex, u16 next);
|
||||
void SSList_SetNull(SSList* ssList);
|
||||
void SSNodeList_SetSSListHead(SSNodeList* list, SSList* ssList, s16* polyIndex);
|
||||
void DynaSSNodeList_SetSSListHead(DynaSSNodeList* list, SSList* ssList, s16* polyIndex);
|
||||
void DynaSSNodeList_Init(PlayState* play, DynaSSNodeList* list);
|
||||
void DynaSSNodeList_Alloc(PlayState* play, DynaSSNodeList* list, u32 numNodes);
|
||||
void DynaSSNodeList_ResetCount(DynaSSNodeList* list);
|
||||
u16 DynaSSNodeList_GetNextNodeIdx(DynaSSNodeList* list);
|
||||
void BgCheck_Vec3sToVec3f(Vec3s* src, Vec3f* dest);
|
||||
void BgCheck_Vec3fToVec3s(Vec3s* dest, Vec3f* src);
|
||||
f32 func_800BFD84(CollisionPoly *poly, f32 arg1, f32 arg2);
|
||||
s32 func_800BFDEC(CollisionPoly* polyA, CollisionPoly* polyB, u32* outVtxId0, u32* outVtxId1);
|
||||
s16 CollisionPoly_GetMinY(CollisionPoly* poly, Vec3s* vertices);
|
||||
void CollisionPoly_GetNormalF(CollisionPoly* poly, f32* nx, f32* ny, f32* nz);
|
||||
void func_800C0094(CollisionPoly* poly, f32 tx, f32 ty, f32 tz, MtxF* dest);
|
||||
f32 CollisionPoly_GetPointDistanceFromPlane(CollisionPoly* poly, Vec3f* point);
|
||||
void CollisionPoly_GetVerticesByBgId(CollisionPoly* poly, s32 bgId, CollisionContext* colCtx, Vec3f* dest);
|
||||
s32 CollisionPoly_SphVsPoly(CollisionPoly* poly, Vec3s* vtxList, Vec3f* center, f32 radius);
|
||||
void StaticLookup_AddPolyToSSList(CollisionContext* colCtx, SSList* ssList, CollisionPoly* polyList, Vec3s* vtxList, s16 polyId);
|
||||
void StaticLookup_AddPoly(StaticLookup* lookup, CollisionContext* colCtx, CollisionPoly* polyList, Vec3s* vtxList, s16 index);
|
||||
void BgCheck_GetSubdivisionMinBounds(CollisionContext* colCtx, Vec3f* pos, s32* sx, s32* sy, s32* sz);
|
||||
void BgCheck_GetSubdivisionMaxBounds(CollisionContext* colCtx, Vec3f* pos, s32* sx, s32* sy, s32* sz);
|
||||
void BgCheck_GetPolySubdivisionBounds(CollisionContext* colCtx, Vec3s* vtxList, CollisionPoly* polyList, s32* subdivMinX, s32* subdivMinY, s32* subdivMinZ, s32* subdivMaxX, s32* subdivMaxY, s32* subdivMaxZ, s16 polyId);
|
||||
s32 BgCheck_PolyIntersectsSubdivision(Vec3f* min, Vec3f* max, CollisionPoly* polyList, Vec3s* vtxList, s16 polyId);
|
||||
u32 BgCheck_InitStaticLookup(CollisionContext* colCtx, PlayState* play, StaticLookup* lookupTbl);
|
||||
s32 BgCheck_IsSmallMemScene(PlayState* play);
|
||||
s32 BgCheck_TryGetCustomMemsize(s32 sceneId, u32* memSize);
|
||||
void BgCheck_SetSubdivisionDimension(f32 min, s32 subdivAmount, f32* max, f32* subdivLength, f32* subdivLengthInv);
|
||||
s32 BgCheck_GetSpecialSceneMaxObjects(PlayState* play, s32* maxNodes, s32* maxPolygons, s32* maxVertices);
|
||||
void BgCheck_Allocate(CollisionContext* colCtx, PlayState* play, CollisionHeader* colHeader);
|
||||
void BgCheck_SetContextFlags(CollisionContext* colCtx, u32 flags);
|
||||
void BgCheck_UnsetContextFlags(CollisionContext* colCtx, u32 flags);
|
||||
CollisionHeader* BgCheck_GetCollisionHeader(CollisionContext* colCtx, s32 bgId);
|
||||
f32 BgCheck_RaycastFloorImpl(PlayState* play, CollisionContext* colCtx, u16 xpFlags, CollisionPoly** outPoly, s32* outBgId, Vec3f* pos, Actor* actor, u32 arg7, f32 checkDist, s32 arg9);
|
||||
f32 BgCheck_CameraRaycastFloor1(CollisionContext* colCtx, CollisionPoly** outPoly, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor1(CollisionContext* colCtx, CollisionPoly** outPoly, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor2(PlayState* play, CollisionContext* colCtx, CollisionPoly** outPoly, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor2_1(PlayState* play, CollisionContext* colCtx, CollisionPoly** outPoly, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor3(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor5(CollisionContext* colCtx, CollisionPoly** outPoly, s32* outBgId, Actor* actor, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor5_2(PlayState* play, CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor5_3(PlayState* play, CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor6(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos, f32 checkDist);
|
||||
f32 BgCheck_EntityRaycastFloor7(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos);
|
||||
f32 BgCheck_AnyRaycastFloor1(CollisionContext* colCtx, CollisionPoly* outPoly, Vec3f* pos);
|
||||
f32 BgCheck_AnyRaycastFloor2(CollisionContext* colCtx, CollisionPoly* outPoly, s32* bgId, Vec3f* pos);
|
||||
f32 BgCheck_CameraRaycastFloor2(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor8(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor9(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Vec3f* pos);
|
||||
s32 BgCheck_CheckWallImpl(CollisionContext* colCtx, u16 xpFlags, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 radius, CollisionPoly** outPoly, s32* outBgId, Actor* actor, f32 checkHeight, u8 argA);
|
||||
s32 BgCheck_EntitySphVsWall1(CollisionContext* colCtx, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 radius, CollisionPoly** outPoly, f32 checkHeight);
|
||||
s32 BgCheck_EntitySphVsWall2(CollisionContext* colCtx, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 radius, CollisionPoly** outPoly, s32* outBgId, f32 checkHeight);
|
||||
s32 BgCheck_EntitySphVsWall3(CollisionContext* colCtx, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 radius, CollisionPoly** outPoly, s32* outBgId, Actor* actor, f32 checkHeight);
|
||||
s32 BgCheck_EntitySphVsWall4(CollisionContext* colCtx, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 radius, CollisionPoly** outPoly, s32* outBgId, Actor* actor, f32 checkHeight);
|
||||
s32 BgCheck_CheckCeilingImpl(CollisionContext* colCtx, u16 xpFlags, f32* outY, Vec3f* pos, f32 checkHeight, CollisionPoly** outPoly, s32* outBgId, Actor* actor);
|
||||
s32 BgCheck_AnyCheckCeiling(CollisionContext* colCtx, f32* outY, Vec3f* pos, f32 checkHeight);
|
||||
s32 BgCheck_EntityCheckCeiling(CollisionContext* colCtx, f32* outY, Vec3f* pos, f32 checkHeight, CollisionPoly** outPoly, s32* outBgId, Actor* actor);
|
||||
s32 BgCheck_CameraLineTest1(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId);
|
||||
s32 BgCheck_CameraLineTest2(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId);
|
||||
s32 BgCheck_EntityLineTest1(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId);
|
||||
s32 BgCheck_EntityLineTest2(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId, Actor* actor);
|
||||
s32 BgCheck_EntityLineTest3(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId, Actor* actor, f32 checkDist);
|
||||
s32 BgCheck_ProjectileLineTest(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId);
|
||||
s32 BgCheck_AnyLineTest1(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkOneFace);
|
||||
s32 BgCheck_AnyLineTest2(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace);
|
||||
s32 BgCheck_AnyLineTest3(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId);
|
||||
s32 BgCheck_SphVsFirstPolyImpl(CollisionContext* colCtx, u16 xpFlags, CollisionPoly** outPoly, s32* outBgId, Vec3f* center, f32 radius, Actor* actor, u16 bciFlags);
|
||||
s32 BgCheck_SphVsFirstPoly(CollisionContext* colCtx, Vec3f* center, f32 radius);
|
||||
s32 BgCheck_SphVsFirstWall(CollisionContext* colCtx, Vec3f* center, f32 radius);
|
||||
void SSNodeList_Init(SSNodeList* this);
|
||||
void SSNodeList_Alloc(PlayState* play, SSNodeList* this, s32 tblMax, s32 numPolys);
|
||||
SSNode* SSNodeList_GetNextNode(SSNodeList* this);
|
||||
u16 SSNodeList_GetNextNodeIdx(SSNodeList* this);
|
||||
void ScaleRotPos_Init(ScaleRotPos* srp);
|
||||
void ScaleRotPos_SetValue(ScaleRotPos* srp, Vec3f* scale, Vec3s* rot, Vec3f* pos);
|
||||
s32 ScaleRotPos_IsEqual(ScaleRotPos* a, ScaleRotPos* b);
|
||||
void DynaLookup_ResetLists(DynaLookup* dynaLookup);
|
||||
void DynaLookup_Reset(DynaLookup* dynaLookup);
|
||||
void DynaLookup_ResetVtxStartIndex(u16* vtxStartIndex);
|
||||
void DynaLookup_ResetWaterBoxStartIndex(u16* waterBoxStartIndex);
|
||||
void BgActor_Init(PlayState* play, BgActor* bgActor);
|
||||
void BgActor_SetActor(BgActor* bgActor, Actor* actor, CollisionHeader* colHeader);
|
||||
s32 BgActor_IsTransformUnchanged(BgActor* bgActor);
|
||||
void DynaPoly_NullPolyList(CollisionPoly** polyList);
|
||||
void DynaPoly_AllocPolyList(PlayState* play, CollisionPoly** polyList, s32 numPolys);
|
||||
void DynaPoly_NullVtxList(Vec3s** vtxList);
|
||||
void DynaPoly_AllocVtxList(PlayState* play, Vec3s** vtxList, s32 numVtx);
|
||||
void DynaPoly_InitWaterBoxList(DynaWaterBoxList* waterBoxList);
|
||||
void DynaPoly_AllocWaterBoxList(PlayState* play, DynaWaterBoxList* waterBoxList, s32 numWaterBoxes);
|
||||
void DynaPoly_SetBgActorPrevTransform(PlayState* play, BgActor* bgActor);
|
||||
s32 DynaPoly_IsBgIdBgActor(s32 bgId);
|
||||
void DynaPoly_Init(PlayState* play, DynaCollisionContext* dyna);
|
||||
void DynaPoly_Alloc(PlayState* play, DynaCollisionContext* dyna);
|
||||
s32 DynaPoly_SetBgActor(PlayState* play, DynaCollisionContext* dyna, Actor* actor, CollisionHeader* colHeader);
|
||||
DynaPolyActor* DynaPoly_GetActor(CollisionContext* colCtx, s32 bgId);
|
||||
void func_800C62BC(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C6314(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C636C(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C63C4(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C641C(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C6474(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C6554(PlayState* play, DynaCollisionContext* dyna);
|
||||
void DynaPoly_DeleteBgActor(PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void BgCheck_CalcWaterboxDimensions(Vec3f* minPos, Vec3f* maxXPos, Vec3f* maxZPos, Vec3s* minPosOut, s16* xLength, s16* zLength);
|
||||
void DynaPoly_ExpandSRT(PlayState* play, DynaCollisionContext* dyna, s32 bgId, s32* vtxStartIndex, s32* polyStartIndex, s32* waterBoxStartIndex);
|
||||
void BgCheck_ResetFlagsIfLoadedActor(PlayState* play, DynaCollisionContext* dyna, Actor* actor);
|
||||
void DynaPoly_Setup(PlayState* play, DynaCollisionContext* dyna);
|
||||
void func_800C756C(DynaCollisionContext* dyna, s32* numPolygons, s32* numVertices, s32* numWaterBoxes);
|
||||
void DynaPoly_UpdateBgActorTransforms(PlayState* play, DynaCollisionContext* dyna);
|
||||
void CollisionHeader_SegmentedToVirtual(CollisionHeader* colHeader);
|
||||
void CollisionHeader_GetVirtual(CollisionHeader* colHeader, CollisionHeader** dest);
|
||||
void BgCheck_InitCollisionHeaders(CollisionContext* colCtx, PlayState* play);
|
||||
|
||||
u32 SurfaceType_GetBgCamIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u16 BgCheck_GetBgCamSettingImpl(CollisionContext* colCtx, u32 bgCamIndex, s32 bgId);
|
||||
u16 BgCheck_GetBgCamSetting(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u16 BgCheck_GetBgCamCountImpl(CollisionContext* colCtx, u32 bgCamIndex, s32 bgId);
|
||||
u16 BgCheck_GetBgCamCount(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
Vec3s* BgCheck_GetBgCamFuncDataImpl(CollisionContext* colCtx, s32 bgCamIndex, s32 bgId);
|
||||
Vec3s* BgCheck_GetBgCamFuncData(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
|
||||
u32 SurfaceType_GetSceneExitIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 func_800C99D4(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 func_800C99FC(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 func_800C9A24(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 func_800C9A4C(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 func_800C9A7C(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 func_800C9AB0(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 func_800C9AE4(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 func_800C9B18(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 func_800C9B40(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 func_800C9B68(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_IsHorseBlocked(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 func_800C9BB8(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u16 SurfaceType_GetSfx(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 func_800C9C24(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId, s32 arg3);
|
||||
u32 SurfaceType_GetSlope(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_GetLightSettingIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_GetEcho(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_IsHookshotSurface(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 SurfaceType_IsIgnoredByEntities(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 SurfaceType_IsIgnoredByProjectiles(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 SurfaceType_IsFloorConveyor(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 func_800C9DDC(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_GetConveyorSpeed(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_GetConveyorDirection(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_IsWallDamage(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 WaterBox_GetSurfaceImpl(PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox, s32* bgId);
|
||||
s32 WaterBox_GetSurface1(PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox);
|
||||
s32 WaterBox_GetSurface1_2(PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox);
|
||||
s32 WaterBox_GetSurface2(PlayState* play, CollisionContext* colCtx, Vec3f* pos, f32 surfaceCheckDist, WaterBox** outWaterBox, s32* bgId);
|
||||
f32 func_800CA568(CollisionContext* colCtx, s32 waterBoxId, s32 bgId);
|
||||
u16 WaterBox_GetBgCamSetting(CollisionContext* colCtx, WaterBox* waterBox, s32 bgId);
|
||||
void WaterBox_GetSceneBgCamSetting(CollisionContext* colCtx, WaterBox* waterBox);
|
||||
u32 WaterBox_GetLightSettingIndex(CollisionContext* colCtx, WaterBox* waterBox);
|
||||
s32 func_800CA6F0(PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox, s32* bgId);
|
||||
s32 func_800CA9D0(PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox);
|
||||
s32 func_800CAA14(CollisionPoly* polyA, CollisionPoly* polyB, Vec3f* pointA, Vec3f* pointB, Vec3f* closestPoint);
|
||||
void BgCheck2_UpdateActorPosition(CollisionContext* colCtx, s32 bgId, Actor* actor);
|
||||
void BgCheck2_UpdateActorYRotation(CollisionContext* colCtx, s32 bgId, Actor* actor);
|
||||
void BgCheck2_AttachToMesh(CollisionContext* colCtx, Actor* actor, s32 bgId);
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
#define SFX_FLAG_MASK 0xC00
|
||||
#define SFX_FLAG 0x800
|
||||
|
||||
#define NA_SE_NONE 0
|
||||
|
||||
// ------------ PLAYER ------------
|
||||
|
||||
#define NA_SE_PL_WALK_GROUND 0x800
|
||||
|
||||
+10
-10
@@ -54,16 +54,16 @@ typedef struct {
|
||||
} __OSThreadprofile; // size = 0x10
|
||||
|
||||
typedef struct OSThread {
|
||||
/*0x00*/ struct OSThread* next;
|
||||
/*0x04*/ OSPri priority;
|
||||
/*0x08*/ struct OSThread** queue;
|
||||
/*0x0C*/ struct OSThread* tlnext;
|
||||
/*0x10*/ u16 state;
|
||||
/*0x12*/ u16 flags;
|
||||
/*0x14*/ OSId id;
|
||||
/*0x18*/ s32 fp;
|
||||
/*0x1C*/ __OSThreadprofile* thprof;
|
||||
/*0x20*/ __OSThreadContext context;
|
||||
/* 0x00 */ struct OSThread* next;
|
||||
/* 0x04 */ OSPri priority;
|
||||
/* 0x08 */ struct OSThread** queue;
|
||||
/* 0x0C */ struct OSThread* tlnext;
|
||||
/* 0x10 */ u16 state;
|
||||
/* 0x12 */ u16 flags;
|
||||
/* 0x14 */ OSId id;
|
||||
/* 0x18 */ s32 fp;
|
||||
/* 0x1C */ __OSThreadprofile* thprof;
|
||||
/* 0x20 */ __OSThreadContext context;
|
||||
} OSThread; // size = 0x1B0
|
||||
|
||||
#endif
|
||||
|
||||
+280
-13
@@ -48,11 +48,6 @@ struct DynaPolyActor;
|
||||
#define COLPOLY_IGNORE_ENTITY (1 << 1)
|
||||
#define COLPOLY_IGNORE_PROJECTILES (1 << 2)
|
||||
|
||||
// Surface Types
|
||||
#define COLPOLY_SURFACE_GROUND 0
|
||||
#define COLPOLY_SURFACE_SAND 1
|
||||
#define COLPOLY_SURFACE_SNOW 14
|
||||
|
||||
// CollisionContext flags
|
||||
#define BGCHECK_FLAG_REVERSE_CONVEYOR_FLOW 1
|
||||
|
||||
@@ -114,6 +109,120 @@ typedef struct {
|
||||
// 0x0000_00FF = bgCam index
|
||||
} WaterBox; // size = 0x10
|
||||
|
||||
typedef enum FloorType {
|
||||
/* 0 */ FLOOR_TYPE_0,
|
||||
/* 1 */ FLOOR_TYPE_1,
|
||||
/* 2 */ FLOOR_TYPE_2,
|
||||
/* 3 */ FLOOR_TYPE_3,
|
||||
/* 4 */ FLOOR_TYPE_4,
|
||||
/* 5 */ FLOOR_TYPE_5,
|
||||
/* 6 */ FLOOR_TYPE_6,
|
||||
/* 7 */ FLOOR_TYPE_7,
|
||||
/* 8 */ FLOOR_TYPE_8,
|
||||
/* 9 */ FLOOR_TYPE_9,
|
||||
/* 10 */ FLOOR_TYPE_10,
|
||||
/* 11 */ FLOOR_TYPE_11,
|
||||
/* 12 */ FLOOR_TYPE_12,
|
||||
/* 13 */ FLOOR_TYPE_13,
|
||||
/* 14 */ FLOOR_TYPE_14,
|
||||
/* 15 */ FLOOR_TYPE_15
|
||||
} FloorType;
|
||||
|
||||
typedef enum WallType {
|
||||
/* 0 */ WALL_TYPE_0,
|
||||
/* 1 */ WALL_TYPE_1,
|
||||
/* 2 */ WALL_TYPE_2,
|
||||
/* 3 */ WALL_TYPE_3,
|
||||
/* 4 */ WALL_TYPE_4,
|
||||
/* 5 */ WALL_TYPE_5,
|
||||
/* 6 */ WALL_TYPE_6,
|
||||
/* 7 */ WALL_TYPE_7,
|
||||
/* 8 */ WALL_TYPE_8,
|
||||
/* 9 */ WALL_TYPE_9,
|
||||
/* 10 */ WALL_TYPE_10,
|
||||
/* 11 */ WALL_TYPE_11,
|
||||
/* 12 */ WALL_TYPE_12,
|
||||
/* 32 */ WALL_TYPE_MAX = 32
|
||||
} WallType;
|
||||
|
||||
#define WALL_FLAG_0 (1 << 0)
|
||||
#define WALL_FLAG_1 (1 << 1)
|
||||
#define WALL_FLAG_2 (1 << 2)
|
||||
#define WALL_FLAG_3 (1 << 3)
|
||||
#define WALL_FLAG_4 (1 << 4)
|
||||
#define WALL_FLAG_5 (1 << 5)
|
||||
#define WALL_FLAG_6 (1 << 6)
|
||||
|
||||
// SurfaceType can leave footsteps imprints in the material
|
||||
#define MATERIAL_PROPERTY_SOFT_IMPRINT (1 << 0)
|
||||
|
||||
typedef enum FloorProperty {
|
||||
/* 0 */ FLOOR_PROPERTY_0,
|
||||
/* 1 */ FLOOR_PROPERTY_1,
|
||||
/* 2 */ FLOOR_PROPERTY_2,
|
||||
/* 5 */ FLOOR_PROPERTY_5 = 5,
|
||||
/* 6 */ FLOOR_PROPERTY_6,
|
||||
/* 7 */ FLOOR_PROPERTY_7,
|
||||
/* 8 */ FLOOR_PROPERTY_8,
|
||||
/* 9 */ FLOOR_PROPERTY_9,
|
||||
/* 11 */ FLOOR_PROPERTY_11 = 11,
|
||||
/* 12 */ FLOOR_PROPERTY_12,
|
||||
/* 13 */ FLOOR_PROPERTY_13
|
||||
} FloorProperty;
|
||||
|
||||
typedef enum SurfaceSfxOffset {
|
||||
/* 0 */ SURFACE_SFX_OFFSET_DIRT,
|
||||
/* 1 */ SURFACE_SFX_OFFSET_SAND,
|
||||
/* 2 */ SURFACE_SFX_OFFSET_STONE,
|
||||
/* 3 */ SURFACE_SFX_OFFSET_DIRT_SHALLOW,
|
||||
/* 4 */ SURFACE_SFX_OFFSET_WATER_SHALLOW,
|
||||
/* 5 */ SURFACE_SFX_OFFSET_WATER_DEEP,
|
||||
/* 6 */ SURFACE_SFX_OFFSET_TALL_GRASS,
|
||||
/* 7 */ SURFACE_SFX_OFFSET_LAVA, // MAGMA?
|
||||
/* 8 */ SURFACE_SFX_OFFSET_GRASS,
|
||||
/* 9 */ SURFACE_SFX_OFFSET_CARPET,
|
||||
/* 10 */ SURFACE_SFX_OFFSET_WOOD,
|
||||
/* 11 */ SURFACE_SFX_OFFSET_BRIDGE, // WOOD_PLANK?
|
||||
/* 12 */ SURFACE_SFX_OFFSET_VINE, // METAL?
|
||||
/* 13 */ SURFACE_SFX_OFFSET_DIRT_DEEP,
|
||||
/* 14 */ SURFACE_SFX_OFFSET_SNOW,
|
||||
/* 15 */ SURFACE_SFX_OFFSET_ICE
|
||||
} SurfaceSfxOffset;
|
||||
|
||||
typedef enum SurfaceMaterial {
|
||||
/* 0 */ SURFACE_MATERIAL_DIRT,
|
||||
/* 1 */ SURFACE_MATERIAL_SAND,
|
||||
/* 2 */ SURFACE_MATERIAL_STONE,
|
||||
/* 3 */ SURFACE_MATERIAL_DIRT_SHALLOW,
|
||||
/* 4 */ SURFACE_MATERIAL_WATER_SHALLOW,
|
||||
/* 5 */ SURFACE_MATERIAL_WATER_DEEP,
|
||||
/* 6 */ SURFACE_MATERIAL_TALL_GRASS,
|
||||
/* 7 */ SURFACE_MATERIAL_LAVA, // MAGMA?
|
||||
/* 8 */ SURFACE_MATERIAL_GRASS,
|
||||
/* 9 */ SURFACE_MATERIAL_BRIDGE, // WOOD_PLANK?
|
||||
/* 10 */ SURFACE_MATERIAL_WOOD,
|
||||
/* 11 */ SURFACE_MATERIAL_DIRT_SOFT,
|
||||
/* 12 */ SURFACE_MATERIAL_ICE,
|
||||
/* 13 */ SURFACE_MATERIAL_CARPET,
|
||||
/* 14 */ SURFACE_MATERIAL_SNOW,
|
||||
/* 15 */ SURFACE_MATERIAL_MAX
|
||||
} SurfaceMaterial;
|
||||
|
||||
typedef enum FloorEffect {
|
||||
/* 0 */ FLOOR_EFFECT_0,
|
||||
/* 1 */ FLOOR_EFFECT_1,
|
||||
/* 2 */ FLOOR_EFFECT_2,
|
||||
/* 3 */ FLOOR_EFFECT_3
|
||||
} FloorEffect;
|
||||
|
||||
typedef enum ConveyorSpeed {
|
||||
/* 0 */ CONVEYOR_SPEED_DISABLED,
|
||||
/* 1 */ CONVEYOR_SPEED_SLOW,
|
||||
/* 2 */ CONVEYOR_SPEED_MEDIUM,
|
||||
/* 3 */ CONVEYOR_SPEED_FAST,
|
||||
/* 4 */ CONVEYOR_SPEED_MAX
|
||||
} ConveyorSpeed;
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u32 data[2];
|
||||
|
||||
@@ -219,14 +328,14 @@ typedef struct {
|
||||
} DynaCollisionContext; // size = 0x1418
|
||||
|
||||
typedef struct {
|
||||
/* 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;
|
||||
/* 0x0000 */ CollisionHeader* colHeader; // scene's static collision
|
||||
/* 0x0004 */ Vec3f minBounds; // minimum coordinates of collision bounding box
|
||||
/* 0x0010 */ Vec3f maxBounds; // maximum coordinates of collision bounding box
|
||||
/* 0x001C */ Vec3i subdivAmount; // x, y, z subdivisions of the scene's static collision
|
||||
/* 0x0028 */ Vec3f subdivLength; // x, y, z subdivision worldspace lengths
|
||||
/* 0x0034 */ Vec3f subdivLengthInv; // inverse of subdivision length
|
||||
/* 0x0040 */ StaticLookup* lookupTbl; // 3d array of length subdivAmount
|
||||
/* 0x0044 */ SSNodeList polyNodes;
|
||||
/* 0x0050 */ DynaCollisionContext dyna;
|
||||
/* 0x1468 */ u32 memSize; // Size of all allocated memory plus CollisionContext
|
||||
/* 0x146C */ u32 flags; // bit 0 reverses conveyor direction (i.e. water flow in Great Bay Temple)
|
||||
@@ -317,4 +426,162 @@ typedef struct {
|
||||
/* 0x8 */ s32 nodeListMax; // if -1, dynamically compute max nodes
|
||||
} BgCheckSceneSubdivisionEntry; // size = 0xC
|
||||
|
||||
void SSNode_SetValue(SSNode* node, s16* polyIndex, u16 next);
|
||||
void SSList_SetNull(SSList* ssList);
|
||||
void SSNodeList_SetSSListHead(SSNodeList* list, SSList* ssList, s16* polyIndex);
|
||||
void DynaSSNodeList_SetSSListHead(DynaSSNodeList* list, SSList* ssList, s16* polyIndex);
|
||||
void DynaSSNodeList_Init(struct PlayState* play, DynaSSNodeList* list);
|
||||
void DynaSSNodeList_Alloc(struct PlayState* play, DynaSSNodeList* list, u32 numNodes);
|
||||
void DynaSSNodeList_ResetCount(DynaSSNodeList* list);
|
||||
u16 DynaSSNodeList_GetNextNodeIdx(DynaSSNodeList* list);
|
||||
void BgCheck_Vec3sToVec3f(Vec3s* src, Vec3f* dest);
|
||||
void BgCheck_Vec3fToVec3s(Vec3s* dest, Vec3f* src);
|
||||
f32 func_800BFD84(CollisionPoly *poly, f32 arg1, f32 arg2);
|
||||
s32 func_800BFDEC(CollisionPoly* polyA, CollisionPoly* polyB, u32* outVtxId0, u32* outVtxId1);
|
||||
s16 CollisionPoly_GetMinY(CollisionPoly* poly, Vec3s* vertices);
|
||||
void CollisionPoly_GetNormalF(CollisionPoly* poly, f32* nx, f32* ny, f32* nz);
|
||||
void func_800C0094(CollisionPoly* poly, f32 tx, f32 ty, f32 tz, MtxF* dest);
|
||||
f32 CollisionPoly_GetPointDistanceFromPlane(CollisionPoly* poly, Vec3f* point);
|
||||
void CollisionPoly_GetVerticesByBgId(CollisionPoly* poly, s32 bgId, CollisionContext* colCtx, Vec3f* dest);
|
||||
s32 CollisionPoly_SphVsPoly(CollisionPoly* poly, Vec3s* vtxList, Vec3f* center, f32 radius);
|
||||
void StaticLookup_AddPolyToSSList(CollisionContext* colCtx, SSList* ssList, CollisionPoly* polyList, Vec3s* vtxList, s16 polyId);
|
||||
void StaticLookup_AddPoly(StaticLookup* lookup, CollisionContext* colCtx, CollisionPoly* polyList, Vec3s* vtxList, s16 index);
|
||||
void BgCheck_GetSubdivisionMinBounds(CollisionContext* colCtx, Vec3f* pos, s32* sx, s32* sy, s32* sz);
|
||||
void BgCheck_GetSubdivisionMaxBounds(CollisionContext* colCtx, Vec3f* pos, s32* sx, s32* sy, s32* sz);
|
||||
void BgCheck_GetPolySubdivisionBounds(CollisionContext* colCtx, Vec3s* vtxList, CollisionPoly* polyList, s32* subdivMinX, s32* subdivMinY, s32* subdivMinZ, s32* subdivMaxX, s32* subdivMaxY, s32* subdivMaxZ, s16 polyId);
|
||||
s32 BgCheck_PolyIntersectsSubdivision(Vec3f* min, Vec3f* max, CollisionPoly* polyList, Vec3s* vtxList, s16 polyId);
|
||||
u32 BgCheck_InitStaticLookup(CollisionContext* colCtx, struct PlayState* play, StaticLookup* lookupTbl);
|
||||
s32 BgCheck_IsSmallMemScene(struct PlayState* play);
|
||||
s32 BgCheck_TryGetCustomMemsize(s32 sceneId, u32* memSize);
|
||||
void BgCheck_SetSubdivisionDimension(f32 min, s32 subdivAmount, f32* max, f32* subdivLength, f32* subdivLengthInv);
|
||||
s32 BgCheck_GetSpecialSceneMaxObjects(struct PlayState* play, s32* maxNodes, s32* maxPolygons, s32* maxVertices);
|
||||
void BgCheck_Allocate(CollisionContext* colCtx, struct PlayState* play, CollisionHeader* colHeader);
|
||||
void BgCheck_SetContextFlags(CollisionContext* colCtx, u32 flags);
|
||||
void BgCheck_UnsetContextFlags(CollisionContext* colCtx, u32 flags);
|
||||
CollisionHeader* BgCheck_GetCollisionHeader(CollisionContext* colCtx, s32 bgId);
|
||||
f32 BgCheck_RaycastFloorImpl(struct PlayState* play, CollisionContext* colCtx, u16 xpFlags, CollisionPoly** outPoly, s32* outBgId, Vec3f* pos, Actor* actor, u32 arg7, f32 checkDist, s32 arg9);
|
||||
f32 BgCheck_CameraRaycastFloor1(CollisionContext* colCtx, CollisionPoly** outPoly, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor1(CollisionContext* colCtx, CollisionPoly** outPoly, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor2(struct PlayState* play, CollisionContext* colCtx, CollisionPoly** outPoly, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor2_1(struct PlayState* play, CollisionContext* colCtx, CollisionPoly** outPoly, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor3(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor5(CollisionContext* colCtx, CollisionPoly** outPoly, s32* outBgId, Actor* actor, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor5_2(struct PlayState* play, CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor5_3(struct PlayState* play, CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor6(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos, f32 checkDist);
|
||||
f32 BgCheck_EntityRaycastFloor7(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos);
|
||||
f32 BgCheck_AnyRaycastFloor1(CollisionContext* colCtx, CollisionPoly* outPoly, Vec3f* pos);
|
||||
f32 BgCheck_AnyRaycastFloor2(CollisionContext* colCtx, CollisionPoly* outPoly, s32* bgId, Vec3f* pos);
|
||||
f32 BgCheck_CameraRaycastFloor2(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor8(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos);
|
||||
f32 BgCheck_EntityRaycastFloor9(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Vec3f* pos);
|
||||
s32 BgCheck_CheckWallImpl(CollisionContext* colCtx, u16 xpFlags, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 radius, CollisionPoly** outPoly, s32* outBgId, Actor* actor, f32 checkHeight, u8 argA);
|
||||
s32 BgCheck_EntitySphVsWall1(CollisionContext* colCtx, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 radius, CollisionPoly** outPoly, f32 checkHeight);
|
||||
s32 BgCheck_EntitySphVsWall2(CollisionContext* colCtx, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 radius, CollisionPoly** outPoly, s32* outBgId, f32 checkHeight);
|
||||
s32 BgCheck_EntitySphVsWall3(CollisionContext* colCtx, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 radius, CollisionPoly** outPoly, s32* outBgId, Actor* actor, f32 checkHeight);
|
||||
s32 BgCheck_EntitySphVsWall4(CollisionContext* colCtx, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 radius, CollisionPoly** outPoly, s32* outBgId, Actor* actor, f32 checkHeight);
|
||||
s32 BgCheck_CheckCeilingImpl(CollisionContext* colCtx, u16 xpFlags, f32* outY, Vec3f* pos, f32 checkHeight, CollisionPoly** outPoly, s32* outBgId, Actor* actor);
|
||||
s32 BgCheck_AnyCheckCeiling(CollisionContext* colCtx, f32* outY, Vec3f* pos, f32 checkHeight);
|
||||
s32 BgCheck_EntityCheckCeiling(CollisionContext* colCtx, f32* outY, Vec3f* pos, f32 checkHeight, CollisionPoly** outPoly, s32* outBgId, Actor* actor);
|
||||
s32 BgCheck_CameraLineTest1(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId);
|
||||
s32 BgCheck_CameraLineTest2(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId);
|
||||
s32 BgCheck_EntityLineTest1(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId);
|
||||
s32 BgCheck_EntityLineTest2(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId, Actor* actor);
|
||||
s32 BgCheck_EntityLineTest3(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId, Actor* actor, f32 checkDist);
|
||||
s32 BgCheck_ProjectileLineTest(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId);
|
||||
s32 BgCheck_AnyLineTest1(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkOneFace);
|
||||
s32 BgCheck_AnyLineTest2(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace);
|
||||
s32 BgCheck_AnyLineTest3(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 checkWall, s32 checkFloor, s32 checkCeil, s32 checkOneFace, s32* bgId);
|
||||
s32 BgCheck_SphVsFirstPolyImpl(CollisionContext* colCtx, u16 xpFlags, CollisionPoly** outPoly, s32* outBgId, Vec3f* center, f32 radius, Actor* actor, u16 bciFlags);
|
||||
s32 BgCheck_SphVsFirstPoly(CollisionContext* colCtx, Vec3f* center, f32 radius);
|
||||
s32 BgCheck_SphVsFirstWall(CollisionContext* colCtx, Vec3f* center, f32 radius);
|
||||
void SSNodeList_Init(SSNodeList* this);
|
||||
void SSNodeList_Alloc(struct PlayState* play, SSNodeList* this, s32 tblMax, s32 numPolys);
|
||||
SSNode* SSNodeList_GetNextNode(SSNodeList* this);
|
||||
u16 SSNodeList_GetNextNodeIdx(SSNodeList* this);
|
||||
void ScaleRotPos_Init(ScaleRotPos* srp);
|
||||
void ScaleRotPos_SetValue(ScaleRotPos* srp, Vec3f* scale, Vec3s* rot, Vec3f* pos);
|
||||
s32 ScaleRotPos_IsEqual(ScaleRotPos* a, ScaleRotPos* b);
|
||||
void DynaLookup_ResetLists(DynaLookup* dynaLookup);
|
||||
void DynaLookup_Reset(DynaLookup* dynaLookup);
|
||||
void DynaLookup_ResetVtxStartIndex(u16* vtxStartIndex);
|
||||
void DynaLookup_ResetWaterBoxStartIndex(u16* waterBoxStartIndex);
|
||||
void BgActor_Init(struct PlayState* play, BgActor* bgActor);
|
||||
void BgActor_SetActor(BgActor* bgActor, Actor* actor, CollisionHeader* colHeader);
|
||||
s32 BgActor_IsTransformUnchanged(BgActor* bgActor);
|
||||
void DynaPoly_NullPolyList(CollisionPoly** polyList);
|
||||
void DynaPoly_AllocPolyList(struct PlayState* play, CollisionPoly** polyList, s32 numPolys);
|
||||
void DynaPoly_NullVtxList(Vec3s** vtxList);
|
||||
void DynaPoly_AllocVtxList(struct PlayState* play, Vec3s** vtxList, s32 numVtx);
|
||||
void DynaPoly_InitWaterBoxList(DynaWaterBoxList* waterBoxList);
|
||||
void DynaPoly_AllocWaterBoxList(struct PlayState* play, DynaWaterBoxList* waterBoxList, s32 numWaterBoxes);
|
||||
void DynaPoly_SetBgActorPrevTransform(struct PlayState* play, BgActor* bgActor);
|
||||
s32 DynaPoly_IsBgIdBgActor(s32 bgId);
|
||||
void DynaPoly_Init(struct PlayState* play, DynaCollisionContext* dyna);
|
||||
void DynaPoly_Alloc(struct PlayState* play, DynaCollisionContext* dyna);
|
||||
s32 DynaPoly_SetBgActor(struct PlayState* play, DynaCollisionContext* dyna, Actor* actor, CollisionHeader* colHeader);
|
||||
DynaPolyActor* DynaPoly_GetActor(CollisionContext* colCtx, s32 bgId);
|
||||
void func_800C62BC(struct PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C6314(struct PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C636C(struct PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C63C4(struct PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C641C(struct PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C6474(struct PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void func_800C6554(struct PlayState* play, DynaCollisionContext* dyna);
|
||||
void DynaPoly_DeleteBgActor(struct PlayState* play, DynaCollisionContext* dyna, s32 bgId);
|
||||
void BgCheck_CalcWaterboxDimensions(Vec3f* minPos, Vec3f* maxXPos, Vec3f* maxZPos, Vec3s* minPosOut, s16* xLength, s16* zLength);
|
||||
void DynaPoly_ExpandSRT(struct PlayState* play, DynaCollisionContext* dyna, s32 bgId, s32* vtxStartIndex, s32* polyStartIndex, s32* waterBoxStartIndex);
|
||||
void BgCheck_ResetFlagsIfLoadedActor(struct PlayState* play, DynaCollisionContext* dyna, Actor* actor);
|
||||
void DynaPoly_Setup(struct PlayState* play, DynaCollisionContext* dyna);
|
||||
void func_800C756C(DynaCollisionContext* dyna, s32* numPolygons, s32* numVertices, s32* numWaterBoxes);
|
||||
void DynaPoly_UpdateBgActorTransforms(struct PlayState* play, DynaCollisionContext* dyna);
|
||||
void CollisionHeader_SegmentedToVirtual(CollisionHeader* colHeader);
|
||||
void CollisionHeader_GetVirtual(CollisionHeader* colHeader, CollisionHeader** dest);
|
||||
void BgCheck_InitCollisionHeaders(CollisionContext* colCtx, struct PlayState* play);
|
||||
|
||||
u32 SurfaceType_GetBgCamIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u16 BgCheck_GetBgCamSettingImpl(CollisionContext* colCtx, u32 bgCamIndex, s32 bgId);
|
||||
u16 BgCheck_GetBgCamSetting(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u16 BgCheck_GetBgCamCountImpl(CollisionContext* colCtx, u32 bgCamIndex, s32 bgId);
|
||||
u16 BgCheck_GetBgCamCount(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
Vec3s* BgCheck_GetBgCamFuncDataImpl(CollisionContext* colCtx, s32 bgCamIndex, s32 bgId);
|
||||
Vec3s* BgCheck_GetBgCamFuncData(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
|
||||
u32 SurfaceType_GetSceneExitIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
FloorType SurfaceType_GetFloorType(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 func_800C99FC(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 SurfaceType_GetWallFlags(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 SurfaceType_CheckWallFlag0(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 SurfaceType_CheckWallFlag1(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 SurfaceType_CheckWallFlag2(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
FloorProperty SurfaceType_GetFloorProperty2(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
FloorProperty SurfaceType_GetFloorProperty(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_IsSoft(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_IsHorseBlocked(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
SurfaceMaterial SurfaceType_GetMaterial(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u16 SurfaceType_GetSfxOffset(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 SurfaceType_HasMaterialProperty(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId, s32 propertyType);
|
||||
FloorEffect SurfaceType_GetFloorEffect(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_GetLightSettingIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_GetEcho(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_IsHookshotSurface(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 SurfaceType_IsIgnoredByEntities(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 SurfaceType_IsIgnoredByProjectiles(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 SurfaceType_IsFloorConveyor(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 func_800C9DDC(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
ConveyorSpeed SurfaceType_GetConveyorSpeed(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_GetConveyorDirection(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
u32 SurfaceType_IsWallDamage(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
|
||||
s32 WaterBox_GetSurfaceImpl(struct PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox, s32* bgId);
|
||||
s32 WaterBox_GetSurface1(struct PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox);
|
||||
s32 WaterBox_GetSurface1_2(struct PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox);
|
||||
s32 WaterBox_GetSurface2(struct PlayState* play, CollisionContext* colCtx, Vec3f* pos, f32 surfaceCheckDist, WaterBox** outWaterBox, s32* bgId);
|
||||
f32 func_800CA568(CollisionContext* colCtx, s32 waterBoxId, s32 bgId);
|
||||
u16 WaterBox_GetBgCamSetting(CollisionContext* colCtx, WaterBox* waterBox, s32 bgId);
|
||||
void WaterBox_GetSceneBgCamSetting(CollisionContext* colCtx, WaterBox* waterBox);
|
||||
u32 WaterBox_GetLightSettingIndex(CollisionContext* colCtx, WaterBox* waterBox);
|
||||
s32 func_800CA6F0(struct PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox, s32* bgId);
|
||||
s32 func_800CA9D0(struct PlayState* play, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox);
|
||||
s32 func_800CAA14(CollisionPoly* polyA, CollisionPoly* polyB, Vec3f* pointA, Vec3f* pointB, Vec3f* closestPoint);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -802,8 +802,8 @@ void Fault_ThreadEntry(void* arg) {
|
||||
u32 pad;
|
||||
OSThread* faultedThread;
|
||||
|
||||
osSetEventMesg(10, &sFaultContext->queue, (OSMesg)1);
|
||||
osSetEventMesg(12, &sFaultContext->queue, (OSMesg)2);
|
||||
osSetEventMesg(OS_EVENT_CPU_BREAK, &sFaultContext->queue, (OSMesg)1);
|
||||
osSetEventMesg(OS_EVENT_FAULT, &sFaultContext->queue, (OSMesg)2);
|
||||
while (1) {
|
||||
do {
|
||||
osRecvMesg(&sFaultContext->queue, &msg, OS_MESG_BLOCK);
|
||||
|
||||
@@ -161,7 +161,7 @@ void IrqMgr_Init(IrqMgr* irqmgr, void* stack, OSPri pri, u8 retraceCount) {
|
||||
irqmgr->lastPrenmiTime = 0;
|
||||
|
||||
osCreateMesgQueue(&irqmgr->irqQueue, (OSMesg*)irqmgr->irqBuffer, ARRAY_COUNT(irqmgr->irqBuffer));
|
||||
osSetEventMesg(0xE, &irqmgr->irqQueue, (OSMesg)0x29D);
|
||||
osSetEventMesg(OS_EVENT_PRENMI, &irqmgr->irqQueue, (OSMesg)0x29D);
|
||||
osViSetEvent(&irqmgr->irqQueue, (OSMesg)0x29A, retraceCount);
|
||||
|
||||
osCreateThread(&irqmgr->thread, Z_THREAD_ID_IRQMGR, IrqMgr_ThreadEntry, irqmgr, stack, pri);
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
#include "stack.h"
|
||||
#include "stackcheck.h"
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
#include "stackcheck.h"
|
||||
|
||||
|
||||
+9
-8
@@ -234,8 +234,9 @@ void ActorShadow_DrawFeet(Actor* actor, Lights* mapper, PlayState* play) {
|
||||
if (distToFloor <= 10.0f) {
|
||||
actor->shape.feetFloorFlags |= spB8;
|
||||
|
||||
if ((actor->depthInWater < 0.0f) && (bgId == 0x32) && ((actor->shape.unk_17 & spB8) != 0)) {
|
||||
if (func_800C9C24(&play->colCtx, poly, bgId, 1)) {
|
||||
if ((actor->depthInWater < 0.0f) && (bgId == BGCHECK_SCENE) && (actor->shape.unk_17 & spB8)) {
|
||||
if (SurfaceType_HasMaterialProperty(&play->colCtx, poly, bgId,
|
||||
MATERIAL_PROPERTY_SOFT_IMPRINT)) {
|
||||
SkinMatrix_MtxFCopy(&sp13C, &spFC);
|
||||
SkinMatrix_MulYRotation(&spFC, actor->shape.rot.y);
|
||||
EffFootmark_Add(play, &spFC, actor, i, feetPosPtr, (actor->shape.shadowScale * 0.3f),
|
||||
@@ -2183,20 +2184,20 @@ void Actor_PlaySfx(Actor* actor, u16 sfxId) {
|
||||
}
|
||||
|
||||
void func_800B8EF4(PlayState* play, Actor* actor) {
|
||||
u32 sfxId;
|
||||
SurfaceSfxOffset surfaceSfxOffset;
|
||||
|
||||
if (actor->bgCheckFlags & BGCHECKFLAG_WATER) {
|
||||
if (actor->depthInWater < 20.0f) {
|
||||
sfxId = NA_SE_PL_WALK_WATER0 - SFX_FLAG;
|
||||
surfaceSfxOffset = SURFACE_SFX_OFFSET_WATER_SHALLOW;
|
||||
} else {
|
||||
sfxId = NA_SE_PL_WALK_WATER1 - SFX_FLAG;
|
||||
surfaceSfxOffset = SURFACE_SFX_OFFSET_WATER_DEEP;
|
||||
}
|
||||
} else {
|
||||
sfxId = SurfaceType_GetSfx(&play->colCtx, actor->floorPoly, actor->floorBgId);
|
||||
surfaceSfxOffset = SurfaceType_GetSfxOffset(&play->colCtx, actor->floorPoly, actor->floorBgId);
|
||||
}
|
||||
|
||||
Audio_PlaySfxAtPos(&actor->projectedPos, NA_SE_EV_BOMB_BOUND);
|
||||
Audio_PlaySfxAtPos(&actor->projectedPos, sfxId + SFX_FLAG);
|
||||
Audio_PlaySfxAtPos(&actor->projectedPos, NA_SE_PL_WALK_GROUND + surfaceSfxOffset);
|
||||
}
|
||||
|
||||
void func_800B8F98(Actor* actor, u16 sfxId) {
|
||||
@@ -2248,7 +2249,7 @@ void func_800B9098(Actor* actor) {
|
||||
}
|
||||
|
||||
s32 func_800B90AC(PlayState* play, Actor* actor, CollisionPoly* polygon, s32 bgId, Vec3f* arg4) {
|
||||
if (func_800C99D4(&play->colCtx, polygon, bgId) == 8) {
|
||||
if (SurfaceType_GetFloorType(&play->colCtx, polygon, bgId) == FLOOR_TYPE_8) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
+75
-124
@@ -6,44 +6,51 @@
|
||||
#define DYNA_RAYCAST_WALLS 2
|
||||
#define DYNA_RAYCAST_CEILINGS 4
|
||||
|
||||
u32 sWallFlags[32] = {
|
||||
0, 1, 3, 5, 8, 16, 32, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
u32 sWallFlags[WALL_TYPE_MAX] = {
|
||||
0, // WALL_TYPE_0
|
||||
WALL_FLAG_0, // WALL_TYPE_1
|
||||
WALL_FLAG_0 | WALL_FLAG_1, // WALL_TYPE_2
|
||||
WALL_FLAG_0 | WALL_FLAG_2, // WALL_TYPE_3
|
||||
WALL_FLAG_3, // WALL_TYPE_4
|
||||
WALL_FLAG_4, // WALL_TYPE_5
|
||||
WALL_FLAG_5, // WALL_TYPE_6
|
||||
WALL_FLAG_6, // WALL_TYPE_7
|
||||
};
|
||||
|
||||
u16 sSurfaceTypeSfx[] = {
|
||||
/* 0x00 */ NA_SE_PL_WALK_GROUND - SFX_FLAG,
|
||||
/* 0x01 */ NA_SE_PL_WALK_SAND - SFX_FLAG,
|
||||
/* 0x02 */ NA_SE_PL_WALK_CONCRETE - SFX_FLAG,
|
||||
/* 0x03 */ NA_SE_PL_WALK_DIRT - SFX_FLAG,
|
||||
/* 0x04 */ NA_SE_PL_WALK_WATER0 - SFX_FLAG,
|
||||
/* 0x05 */ NA_SE_PL_WALK_WATER1 - SFX_FLAG,
|
||||
/* 0x06 */ NA_SE_PL_WALK_WATER2 - SFX_FLAG,
|
||||
/* 0x07 */ NA_SE_PL_WALK_MAGMA - SFX_FLAG,
|
||||
/* 0x08 */ NA_SE_PL_WALK_GRASS - SFX_FLAG,
|
||||
/* 0x09 */ NA_SE_PL_WALK_GLASS - SFX_FLAG,
|
||||
/* 0x0A */ NA_SE_PL_WALK_LADDER - SFX_FLAG,
|
||||
/* 0x0B */ NA_SE_PL_WALK_GROUND - SFX_FLAG,
|
||||
/* 0x0C */ NA_SE_PL_WALK_ICE - SFX_FLAG,
|
||||
/* 0x0D */ NA_SE_PL_WALK_IRON - SFX_FLAG,
|
||||
/* 0x0E */ NA_SE_PL_WALK_SNOW - SFX_FLAG
|
||||
u16 sSurfaceSfxOffsets[SURFACE_MATERIAL_MAX] = {
|
||||
SURFACE_SFX_OFFSET_DIRT, // SURFACE_MATERIAL_DIRT
|
||||
SURFACE_SFX_OFFSET_SAND, // SURFACE_MATERIAL_SAND
|
||||
SURFACE_SFX_OFFSET_STONE, // SURFACE_MATERIAL_STONE
|
||||
SURFACE_SFX_OFFSET_DIRT_SHALLOW, // SURFACE_MATERIAL_DIRT_SHALLOW
|
||||
SURFACE_SFX_OFFSET_WATER_SHALLOW, // SURFACE_MATERIAL_WATER_SHALLOW
|
||||
SURFACE_SFX_OFFSET_WATER_DEEP, // SURFACE_MATERIAL_WATER_DEEP
|
||||
SURFACE_SFX_OFFSET_TALL_GRASS, // SURFACE_MATERIAL_TALL_GRASS
|
||||
SURFACE_SFX_OFFSET_LAVA, // SURFACE_MATERIAL_LAVA
|
||||
SURFACE_SFX_OFFSET_GRASS, // SURFACE_MATERIAL_GRASS
|
||||
SURFACE_SFX_OFFSET_BRIDGE, // SURFACE_MATERIAL_BRIDGE
|
||||
SURFACE_SFX_OFFSET_WOOD, // SURFACE_MATERIAL_WOOD
|
||||
SURFACE_SFX_OFFSET_DIRT, // SURFACE_MATERIAL_DIRT_SOFT
|
||||
SURFACE_SFX_OFFSET_ICE, // SURFACE_MATERIAL_ICE
|
||||
SURFACE_SFX_OFFSET_CARPET, // SURFACE_MATERIAL_CARPET
|
||||
SURFACE_SFX_OFFSET_SNOW, // SURFACE_MATERIAL_SNOW
|
||||
};
|
||||
|
||||
u8 D_801B46C0[] = {
|
||||
/* 0x00 */ 1,
|
||||
/* 0x01 */ 1,
|
||||
/* 0x02 */ 0,
|
||||
/* 0x03 */ 1,
|
||||
/* 0x04 */ 0,
|
||||
/* 0x05 */ 0,
|
||||
/* 0x06 */ 0,
|
||||
/* 0x07 */ 0,
|
||||
/* 0x08 */ 0,
|
||||
/* 0x09 */ 0,
|
||||
/* 0x0A */ 0,
|
||||
/* 0x0B */ 0,
|
||||
/* 0x0C */ 0,
|
||||
/* 0x0D */ 0,
|
||||
/* 0x0E */ 1
|
||||
u8 sSurfaceMaterialProperties[SURFACE_MATERIAL_MAX] = {
|
||||
MATERIAL_PROPERTY_SOFT_IMPRINT, // SURFACE_MATERIAL_DIRT
|
||||
MATERIAL_PROPERTY_SOFT_IMPRINT, // SURFACE_MATERIAL_SAND
|
||||
0, // SURFACE_MATERIAL_STONE
|
||||
MATERIAL_PROPERTY_SOFT_IMPRINT, // SURFACE_MATERIAL_DIRT_SHALLOW
|
||||
0, // SURFACE_MATERIAL_WATER_SHALLOW
|
||||
0, // SURFACE_MATERIAL_WATER_DEEP
|
||||
0, // SURFACE_MATERIAL_TALL_GRASS
|
||||
0, // SURFACE_MATERIAL_LAVA
|
||||
0, // SURFACE_MATERIAL_GRASS
|
||||
0, // SURFACE_MATERIAL_BRIDGE
|
||||
0, // SURFACE_MATERIAL_WOOD
|
||||
0, // SURFACE_MATERIAL_DIRT_SOFT
|
||||
0, // SURFACE_MATERIAL_ICE
|
||||
0, // SURFACE_MATERIAL_CARPET
|
||||
MATERIAL_PROPERTY_SOFT_IMPRINT, // SURFACE_MATERIAL_SNOW
|
||||
};
|
||||
|
||||
s16 sSmallMemSceneIds[] = {
|
||||
@@ -51,9 +58,9 @@ s16 sSmallMemSceneIds[] = {
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
s16 sceneId;
|
||||
u32 memSize;
|
||||
} BgCheckSceneMemEntry;
|
||||
/* 0x0 */ s16 sceneId;
|
||||
/* 0x4 */ u32 memSize;
|
||||
} BgCheckSceneMemEntry; // size = 0x8
|
||||
|
||||
BgCheckSceneMemEntry sSceneMemList[] = {
|
||||
{ SCENE_00KEIKOKU, 0xC800 },
|
||||
@@ -1734,7 +1741,7 @@ f32 BgCheck_RaycastFloorImpl(PlayState* play, CollisionContext* colCtx, u16 xpFl
|
||||
}
|
||||
}
|
||||
|
||||
if ((yIntersect != BGCHECK_Y_MIN) && func_800C9B68(colCtx, *outPoly, *outBgId)) {
|
||||
if ((yIntersect != BGCHECK_Y_MIN) && SurfaceType_IsSoft(colCtx, *outPoly, *outBgId)) {
|
||||
yIntersect -= 1.0f;
|
||||
}
|
||||
return yIntersect;
|
||||
@@ -3204,7 +3211,8 @@ f32 BgCheck_RaycastFloorDynaList(DynaRaycast* dynaRaycast, u32 listType) {
|
||||
(COLPOLY_VIA_FLAG_TEST(polyList[id].flags_vIB, 4) &&
|
||||
(((dynaRaycast->actor != NULL) && (dynaRaycast->actor->category != ACTORCAT_PLAYER)) ||
|
||||
((dynaRaycast->actor == NULL) && (dynaRaycast->xpFlags != COLPOLY_IGNORE_CAMERA)))) ||
|
||||
((dynaRaycast->unk_24 & 0x20) && func_800C9B68(dynaRaycast->colCtx, &polyList[id], dynaRaycast->unk1C))) {
|
||||
((dynaRaycast->unk_24 & 0x20) &&
|
||||
SurfaceType_IsSoft(dynaRaycast->colCtx, &polyList[id], dynaRaycast->unk1C))) {
|
||||
if (curNode->next == SS_NULL) {
|
||||
break;
|
||||
} else {
|
||||
@@ -4187,17 +4195,11 @@ Vec3s* BgCheck_GetBgCamFuncData(CollisionContext* colCtx, CollisionPoly* poly, s
|
||||
return BgCheck_GetBgCamFuncDataImpl(colCtx, SurfaceType_GetBgCamIndex(colCtx, poly, bgId), bgId);
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType Get Scene Exit Index
|
||||
*/
|
||||
u32 SurfaceType_GetSceneExitIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return SurfaceType_GetData(colCtx, poly, bgId, 0) >> 8 & 0x1F;
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType Get ? Property (& 0x0003_E000)
|
||||
*/
|
||||
u32 func_800C99D4(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
FloorType SurfaceType_GetFloorType(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return SurfaceType_GetData(colCtx, poly, bgId, 0) >> 13 & 0x1F;
|
||||
}
|
||||
|
||||
@@ -4208,126 +4210,85 @@ u32 func_800C99FC(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return SurfaceType_GetData(colCtx, poly, bgId, 0) >> 18 & 7;
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType Get Wall Property (Internal)
|
||||
*/
|
||||
u32 func_800C9A24(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
WallType SurfaceType_GetWallType(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return SurfaceType_GetData(colCtx, poly, bgId, 0) >> 21 & 0x1F;
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType Get Wall Flags
|
||||
*/
|
||||
s32 func_800C9A4C(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return sWallFlags[func_800C9A24(colCtx, poly, bgId)];
|
||||
s32 SurfaceType_GetWallFlags(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return sWallFlags[SurfaceType_GetWallType(colCtx, poly, bgId)];
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType Is Wall Flag (1 << 0) Set
|
||||
*/
|
||||
s32 func_800C9A7C(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return (func_800C9A4C(colCtx, poly, bgId) & 1) ? true : false;
|
||||
s32 SurfaceType_CheckWallFlag0(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return (SurfaceType_GetWallFlags(colCtx, poly, bgId) & WALL_FLAG_0) ? true : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType Is Wall Flag (1 << 1) Set
|
||||
*/
|
||||
s32 func_800C9AB0(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return (func_800C9A4C(colCtx, poly, bgId) & 2) ? true : false;
|
||||
s32 SurfaceType_CheckWallFlag1(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return (SurfaceType_GetWallFlags(colCtx, poly, bgId) & WALL_FLAG_1) ? true : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType Is Wall Flag (1 << 2) Set
|
||||
*/
|
||||
s32 func_800C9AE4(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return (func_800C9A4C(colCtx, poly, bgId) & 4) ? true : false;
|
||||
s32 SurfaceType_CheckWallFlag2(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return (SurfaceType_GetWallFlags(colCtx, poly, bgId) & WALL_FLAG_2) ? true : false;
|
||||
}
|
||||
|
||||
u32 func_800C9B18(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
FloorProperty SurfaceType_GetFloorProperty2(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return SurfaceType_GetData(colCtx, poly, bgId, 0) >> 26 & 0xF;
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType Get Floor Property
|
||||
*/
|
||||
u32 func_800C9B40(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
FloorProperty SurfaceType_GetFloorProperty(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return SurfaceType_GetData(colCtx, poly, bgId, 0) >> 26 & 0xF;
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType Is Floor Minus 1
|
||||
*/
|
||||
u32 func_800C9B68(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
u32 SurfaceType_IsSoft(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return SurfaceType_GetData(colCtx, poly, bgId, 0) >> 30 & 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType Is Horse Blocked
|
||||
*/
|
||||
u32 SurfaceType_IsHorseBlocked(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return SurfaceType_GetData(colCtx, poly, bgId, 0) >> 31 & 1;
|
||||
}
|
||||
|
||||
u32 func_800C9BB8(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
SurfaceMaterial SurfaceType_GetMaterial(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return SurfaceType_GetData(colCtx, poly, bgId, 1) & 0xF;
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType Get Poly Sfx
|
||||
*/
|
||||
u16 SurfaceType_GetSfx(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
s32 id = func_800C9BB8(colCtx, poly, bgId);
|
||||
u16 SurfaceType_GetSfxOffset(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
SurfaceMaterial surfaceMaterial = SurfaceType_GetMaterial(colCtx, poly, bgId);
|
||||
|
||||
if ((id < 0) || (id > 14)) {
|
||||
return NA_SE_PL_WALK_GROUND - SFX_FLAG;
|
||||
if ((surfaceMaterial < 0) || (surfaceMaterial >= ARRAY_COUNT(sSurfaceSfxOffsets))) {
|
||||
return SURFACE_SFX_OFFSET_DIRT;
|
||||
}
|
||||
return sSurfaceTypeSfx[id];
|
||||
|
||||
return sSurfaceSfxOffsets[surfaceMaterial];
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType Get ? (same indexer as Get Poly Sfx)
|
||||
* Checks if the material has the bitwise propertyType
|
||||
*/
|
||||
s32 func_800C9C24(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId, s32 arg3) {
|
||||
s32 id = func_800C9BB8(colCtx, poly, bgId);
|
||||
s32 SurfaceType_HasMaterialProperty(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId, s32 propertyType) {
|
||||
SurfaceMaterial surfaceMaterial = SurfaceType_GetMaterial(colCtx, poly, bgId);
|
||||
|
||||
if ((id < 0) || (id > 14)) {
|
||||
if ((surfaceMaterial < 0) || (surfaceMaterial >= ARRAY_COUNT(sSurfaceMaterialProperties))) {
|
||||
return 0;
|
||||
}
|
||||
return D_801B46C0[id] & arg3;
|
||||
|
||||
return sSurfaceMaterialProperties[surfaceMaterial] & propertyType;
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType get terrain slope surface
|
||||
*/
|
||||
u32 SurfaceType_GetSlope(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
FloorEffect SurfaceType_GetFloorEffect(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return SurfaceType_GetData(colCtx, poly, bgId, 1) >> 4 & 3;
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType get surface lighting setting
|
||||
*/
|
||||
u32 SurfaceType_GetLightSettingIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return SurfaceType_GetData(colCtx, poly, bgId, 1) >> 6 & 0x1F;
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType get echo
|
||||
*/
|
||||
u32 SurfaceType_GetEcho(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return SurfaceType_GetData(colCtx, poly, bgId, 1) >> 11 & 0x3F;
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType Is Hookshot Surface
|
||||
*/
|
||||
u32 SurfaceType_IsHookshotSurface(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return SurfaceType_GetData(colCtx, poly, bgId, 1) >> 17 & 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* CollisionPoly is ignored by entities
|
||||
* Returns true if poly is ignored by entities, else false
|
||||
*/
|
||||
s32 SurfaceType_IsIgnoredByEntities(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
u32 flags;
|
||||
|
||||
@@ -4338,10 +4299,6 @@ s32 SurfaceType_IsIgnoredByEntities(CollisionContext* colCtx, CollisionPoly* pol
|
||||
return !!flags;
|
||||
}
|
||||
|
||||
/**
|
||||
* CollisionPoly is ignored by projectiles
|
||||
* Returns true if poly is ignored by projectiles, else false
|
||||
*/
|
||||
s32 SurfaceType_IsIgnoredByProjectiles(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
u32 flags;
|
||||
|
||||
@@ -4384,10 +4341,7 @@ s32 func_800C9DDC(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return !!flags;
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType Get Conveyor Surface Speed
|
||||
*/
|
||||
u32 SurfaceType_GetConveyorSpeed(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
ConveyorSpeed SurfaceType_GetConveyorSpeed(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return SurfaceType_GetData(colCtx, poly, bgId, 1) >> 18 & 7;
|
||||
}
|
||||
|
||||
@@ -4405,9 +4359,6 @@ u32 SurfaceType_GetConveyorDirection(CollisionContext* colCtx, CollisionPoly* po
|
||||
return data & 0x3F;
|
||||
}
|
||||
|
||||
/**
|
||||
* SurfaceType is Wall Damage
|
||||
*/
|
||||
u32 SurfaceType_IsWallDamage(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId) {
|
||||
return (SurfaceType_GetData(colCtx, poly, bgId, 1) & 0x8000000) ? true : false;
|
||||
}
|
||||
|
||||
@@ -250,19 +250,20 @@ void EnHy_UpdateCollider(EnHy* enHy, PlayState* play) {
|
||||
s32 EnHy_PlayWalkingSound(EnHy* enHy, PlayState* play, f32 distAboveThreshold) {
|
||||
u8 wasLeftFootOnGround = enHy->isLeftFootOnGround;
|
||||
u8 wasRightFootOnGround = enHy->isRightFootOnGround;
|
||||
s32 waterSfxId;
|
||||
SurfaceSfxOffset surfaceSfxOffset;
|
||||
u16 sfxId;
|
||||
u8 isFootOnGround;
|
||||
|
||||
if (enHy->actor.bgCheckFlags & BGCHECKFLAG_WATER) {
|
||||
if (enHy->actor.depthInWater < 20.0f) {
|
||||
waterSfxId = NA_SE_PL_WALK_WATER0 - SFX_FLAG;
|
||||
surfaceSfxOffset = SURFACE_SFX_OFFSET_WATER_SHALLOW;
|
||||
} else {
|
||||
waterSfxId = NA_SE_PL_WALK_WATER1 - SFX_FLAG;
|
||||
surfaceSfxOffset = SURFACE_SFX_OFFSET_WATER_DEEP;
|
||||
}
|
||||
sfxId = waterSfxId + SFX_FLAG;
|
||||
sfxId = NA_SE_PL_WALK_GROUND + surfaceSfxOffset;
|
||||
} else {
|
||||
sfxId = SurfaceType_GetSfx(&play->colCtx, enHy->actor.floorPoly, enHy->actor.floorBgId) + SFX_FLAG;
|
||||
sfxId = NA_SE_PL_WALK_GROUND +
|
||||
SurfaceType_GetSfxOffset(&play->colCtx, enHy->actor.floorPoly, enHy->actor.floorBgId);
|
||||
}
|
||||
|
||||
enHy->isLeftFootOnGround = isFootOnGround = SubS_IsFloorAbove(play, &enHy->leftFootPos, distAboveThreshold);
|
||||
|
||||
@@ -106,7 +106,7 @@ void Message_CloseTextbox(PlayState* play) {
|
||||
msgCtx->stateTimer = 2;
|
||||
msgCtx->msgMode = 0x43;
|
||||
msgCtx->unk12020 = 0;
|
||||
play_sound(NA_SE_PL_WALK_GROUND - SFX_FLAG);
|
||||
play_sound(NA_SE_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
#include "buffers.h"
|
||||
#include "z64debug_display.h"
|
||||
|
||||
+8
-8
@@ -477,13 +477,13 @@ void Distortion_ClearType(s32 type) {
|
||||
/**
|
||||
* Checks that the bg surface is an underwater conveyor type and if so, returns the conveyor speed
|
||||
*/
|
||||
s32 Distortion_GetUnderwaterCurrentSpeed(Player* player) {
|
||||
ConveyorSpeed Distortion_GetUnderwaterCurrentSpeed(Player* player) {
|
||||
if (!SurfaceType_IsFloorConveyor(&sDistortionRequest.play->colCtx, player->actor.floorPoly,
|
||||
player->actor.floorBgId)) {
|
||||
return SurfaceType_GetConveyorSpeed(&sDistortionRequest.play->colCtx, player->actor.floorPoly,
|
||||
player->actor.floorBgId);
|
||||
}
|
||||
return 0;
|
||||
return CONVEYOR_SPEED_DISABLED;
|
||||
}
|
||||
|
||||
void Distortion_Update(void) {
|
||||
@@ -709,21 +709,21 @@ void Distortion_Update(void) {
|
||||
rotZ = 0.3f;
|
||||
|
||||
switch (Distortion_GetUnderwaterCurrentSpeed(player)) {
|
||||
case 3:
|
||||
case CONVEYOR_SPEED_FAST:
|
||||
xScale = -0.06f;
|
||||
yScale = 0.1f;
|
||||
zScale = 0.03f;
|
||||
speed = 0.33f;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case CONVEYOR_SPEED_MEDIUM:
|
||||
xScale = -0.06f;
|
||||
yScale = 0.1f;
|
||||
zScale = 0.03f;
|
||||
speed = 0.33f;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case CONVEYOR_SPEED_SLOW:
|
||||
xScale = -0.06f;
|
||||
yScale = 0.1f;
|
||||
zScale = 0.03f;
|
||||
@@ -759,21 +759,21 @@ void Distortion_Update(void) {
|
||||
rotY = 0.0f;
|
||||
rotZ = 0.0f;
|
||||
switch (Distortion_GetUnderwaterCurrentSpeed(player)) {
|
||||
case 3:
|
||||
case CONVEYOR_SPEED_FAST:
|
||||
xScale = 0.12f;
|
||||
yScale = 0.12f;
|
||||
zScale = 0.08f;
|
||||
speed = 0.18f;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case CONVEYOR_SPEED_MEDIUM:
|
||||
xScale = 0.12f;
|
||||
yScale = 0.12f;
|
||||
zScale = 0.08f;
|
||||
speed = 0.12f;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case CONVEYOR_SPEED_SLOW:
|
||||
xScale = 0.12f;
|
||||
yScale = 0.12f;
|
||||
zScale = 0.08f;
|
||||
|
||||
@@ -19,7 +19,7 @@ void osCreatePiManager(OSPri pri, OSMesgQueue* cmdQ, OSMesg* cmdBuf, s32 cmdMsgC
|
||||
if (!__osPiAccessQueueEnabled) {
|
||||
__osPiCreateAccessQueue();
|
||||
}
|
||||
osSetEventMesg(8, &D_8009E3D0, (OSMesg)0x22222222);
|
||||
osSetEventMesg(OS_EVENT_PI, &D_8009E3D0, (OSMesg)0x22222222);
|
||||
oldPri = -1;
|
||||
myPri = osGetThreadPri(NULL);
|
||||
if (myPri < pri) {
|
||||
|
||||
@@ -336,8 +336,8 @@ void func_80B7F398(BgIkanaBlock* this, PlayState* play) {
|
||||
if (func_80B7EE70(this, play)) {
|
||||
Actor_PlaySfx(&this->dyna.actor, NA_SE_EV_BLOCK_BOUND);
|
||||
Actor_PlaySfx(&this->dyna.actor,
|
||||
SurfaceType_GetSfx(&play->colCtx, this->dyna.actor.floorPoly, this->dyna.actor.floorBgId) +
|
||||
SFX_FLAG);
|
||||
NA_SE_PL_WALK_GROUND + SurfaceType_GetSfxOffset(&play->colCtx, this->dyna.actor.floorPoly,
|
||||
this->dyna.actor.floorBgId));
|
||||
func_80B7F0A4(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -648,7 +648,7 @@ void DmStk_PlaySfxForPlayingWithFairiesCutscene(DmStk* this, PlayState* play) {
|
||||
case 72:
|
||||
case 77:
|
||||
case 79:
|
||||
Actor_PlaySfx(&this->actor, NA_SE_PL_WALK_WATER2);
|
||||
Actor_PlaySfx(&this->actor, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_TALL_GRASS);
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_STALKIDS_WALK);
|
||||
break;
|
||||
|
||||
|
||||
@@ -47,8 +47,8 @@ void func_808BAAF4(DoorWarp1* this, PlayState* play);
|
||||
void func_808BABF4(DoorWarp1* this, PlayState* play);
|
||||
void func_808BB8D4(DoorWarp1* this, PlayState* play, s32 arg2);
|
||||
|
||||
static s16 D_808BC000;
|
||||
static f32 D_808BC004;
|
||||
s16 D_808BC000;
|
||||
f32 D_808BC004;
|
||||
|
||||
ActorInit Door_Warp1_InitVars = {
|
||||
ACTOR_DOOR_WARP1,
|
||||
|
||||
@@ -211,9 +211,9 @@ void EnBbfall_Thaw(EnBbfall* this, PlayState* play) {
|
||||
*/
|
||||
s32 EnBbfall_IsTouchingLava(EnBbfall* this, PlayState* play) {
|
||||
if (!SurfaceType_IsWallDamage(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId)) {
|
||||
u32 floorType = func_800C99D4(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId);
|
||||
FloorType floorType = SurfaceType_GetFloorType(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId);
|
||||
|
||||
if ((floorType == 2) || (floorType == 3) || (floorType == 9)) {
|
||||
if ((floorType == FLOOR_TYPE_2) || (floorType == FLOOR_TYPE_3) || (floorType == FLOOR_TYPE_9)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,7 +230,7 @@ void EnBom_Move(EnBom* this, PlayState* play) {
|
||||
Math_StepToF(&this->actor.speed, 0.0f, 0.08f);
|
||||
} else {
|
||||
Vec3f* sp58;
|
||||
u32 sp54 = func_800C99D4(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId);
|
||||
FloorType floorType = SurfaceType_GetFloorType(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId);
|
||||
Vec3f slopeNormal;
|
||||
s16 downwardSlopeYaw;
|
||||
f32 sp40;
|
||||
@@ -239,11 +239,11 @@ void EnBom_Move(EnBom* this, PlayState* play) {
|
||||
|
||||
sp58 = &D_80872E68[this->isPowderKeg];
|
||||
|
||||
if (sp54 == 5) {
|
||||
if (floorType == FLOOR_TYPE_5) {
|
||||
sp58 = &D_80872E68[2];
|
||||
}
|
||||
|
||||
if ((sp54 == 4) || (sp54 == 14) || (sp54 == 15)) {
|
||||
if ((floorType == FLOOR_TYPE_4) || (floorType == FLOOR_TYPE_14) || (floorType == FLOOR_TYPE_15)) {
|
||||
s16 sp36;
|
||||
|
||||
Math_ApproachF(&this->actor.shape.yOffset, 0.0f, 0.1f, 50.0f);
|
||||
@@ -262,8 +262,8 @@ void EnBom_Move(EnBom* this, PlayState* play) {
|
||||
sp3C += 3.0f * slopeNormal.z;
|
||||
sp38 = sqrtf(SQ(sp40) + SQ(sp3C));
|
||||
|
||||
if ((sp38 < this->actor.speed) ||
|
||||
(SurfaceType_GetSlope(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId) == 1)) {
|
||||
if ((sp38 < this->actor.speed) || (SurfaceType_GetFloorEffect(&play->colCtx, this->actor.floorPoly,
|
||||
this->actor.floorBgId) == FLOOR_EFFECT_1)) {
|
||||
if (sp38 > 16.0f) {
|
||||
this->actor.speed = 16.0f;
|
||||
} else {
|
||||
@@ -286,7 +286,7 @@ void EnBom_Move(EnBom* this, PlayState* play) {
|
||||
if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND_TOUCH) {
|
||||
Actor_PlaySfx(&this->actor, this->isPowderKeg ? NA_SE_EV_TRE_BOX_BOUND : NA_SE_EV_BOMB_BOUND);
|
||||
if (this->actor.velocity.y < sp58->y) {
|
||||
if ((sp54 == 4) || (sp54 == 14) || (sp54 == 15)) {
|
||||
if ((floorType == FLOOR_TYPE_4) || (floorType == FLOOR_TYPE_14) || (floorType == FLOOR_TYPE_15)) {
|
||||
this->actor.velocity.y = 0.0f;
|
||||
} else {
|
||||
this->actor.velocity.y = this->actor.velocity.y * sp58->z;
|
||||
@@ -327,7 +327,7 @@ void EnBom_Explode(EnBom* this, PlayState* play) {
|
||||
static Color_RGBA8 D_80872E90 = { 185, 140, 70, 255 };
|
||||
static Color_RGBA8 D_80872E94 = { 255, 255, 255, 255 };
|
||||
s32 i;
|
||||
s32 temp_s0;
|
||||
FloorType floorType;
|
||||
f32 temp_f20;
|
||||
s32 pad;
|
||||
f32 spCC;
|
||||
@@ -394,11 +394,11 @@ void EnBom_Explode(EnBom* this, PlayState* play) {
|
||||
spB4.y = this->actor.world.pos.y + 500.0f;
|
||||
spB4.z = this->actor.world.pos.z + spC0.z;
|
||||
if (BgCheck_EntityRaycastFloor3(&play->colCtx, &spB0, &spAC, &spB4) != BGCHECK_Y_MIN) {
|
||||
temp_s0 = func_800C99D4(&play->colCtx, spB0, spAC);
|
||||
floorType = SurfaceType_GetFloorType(&play->colCtx, spB0, spAC);
|
||||
temp_f20 = BgCheck_EntityRaycastFloor1(&play->colCtx, &spB0, &spB4);
|
||||
|
||||
if ((temp_s0 == 4) || (temp_s0 == 15) || (temp_s0 == 14)) {
|
||||
if (temp_s0 == 4) {
|
||||
if ((floorType == FLOOR_TYPE_4) || (floorType == FLOOR_TYPE_15) || (floorType == FLOOR_TYPE_14)) {
|
||||
if (floorType == FLOOR_TYPE_4) {
|
||||
sp84 = D_80872E90;
|
||||
sp80 = D_80872E90;
|
||||
} else {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user