1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-12 02:44:54 +00:00

z_bgcheck.c, 800430A0.c, 80043480.c (#256)

* beginning of migrating changes

* got matching

* changed order a bit

* clean up bgcheck

* fix conflict

* fix conflict again

* first stab at identifying types, some oks

* Clean up most bad structs/pointer math, move relevant structs to z64bgcheck.h, get some OKs

* more OKs, z_bgcheck.bss migration, update some sys_math3d.c args

* couple more OKs

* pushing some OKs

* fix compilation issues

* code_800430A0.c OK, more files decomp'd

* 8003A3E0 big OK :)

* Decomp most of func_8003C614, decomp helper funcs

* Decomp SurfaceType, CamData, and WaterBox property related functions

* more OKs, big OK in 8003C078

* more OKs, more progress, move a function definition in z_collision_check to functions.h

* more clean-ups, more OKs, dyn_vtx is now defined as u8*

* 8003A5B8, 8003A7D8, 8003C614, 8003DD6C OK, document function args better

* data migrated, more OKs

* 80041240 OK, func_8003B3C8 and func_8003BB18 disassembled

* func_80040284, 800409A8 non_matching, add IS_ZERO macro

* All asm files have C representations, some big OKs, lots of minor tweaks

* More OKs, non-matching code cleanup

* 8003FBF4 and 80040BE4 OK, improve codegen for most functions

* format z_bgcheck.c

* fix warnings, compile errors on NON_MATCHING

* func_8003EE80 is now NON_MATCHING

* begin documenting some functions

* formatting

* more documentation, func_8003A95C OK

* fix PHYSICAL_TO_VIRTUAL changes

* fix var rename

* More documentation, functions 80040E40, 80041648 OK, change types to not be compatible with ZAP

* func_8004239C ok, more NON_MATCHING improvements, more documentation

* Implement most suggested changes

* Convert comments to slower comments

* /**

* Implement ZAP2 changes

* my anti-virus ate my format.sh results

* Rename a couple hundred functions, fix minor stuff

* rename var so that clang formats correctly

* run format.sh

* implement Petrie's matches/suggestions

* format

* matches

* and the asm

* slight error

* Add SSList

* two more matches

* stuff

* implement code changes

* clean up Petrie's matchings

Co-authored-by: Arthur <arthurtilly413@gmail.com>
Co-authored-by: fig02 <fig02srl@gmail.com>
Co-authored-by: petrie911 <pmontag@DESKTOP-LG8A167.localdomain>
This commit is contained in:
mzxrules 2021-01-08 06:12:58 -05:00 committed by GitHub
parent 209f0d21b8
commit 3cef03f5ff
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
416 changed files with 6610 additions and 13487 deletions

View file

@ -454,7 +454,7 @@ void func_8002F91C(Actor* actor, u16 sfxId);
void func_8002F948(Actor* actor, u16 sfxId);
void func_8002F974(Actor* actor, u16 sfxId);
void func_8002F994(Actor* actor, s32 arg1);
s32 func_8002F9EC(GlobalContext* globalCtx, Actor* actor, CollisionPoly* arg2, u32 arg3, Vec3f* arg4);
s32 func_8002F9EC(GlobalContext* globalCtx, Actor* actor, CollisionPoly* poly, s32 bgId, Vec3f* pos);
void func_800304B0(GlobalContext* globalCtx);
void func_800304DC(GlobalContext* globalCtx, ActorContext* actorCtx, ActorEntry* actorEntry);
void Actor_UpdateAll(GlobalContext* globalCtx, ActorContext* actorCtx);
@ -532,178 +532,185 @@ void ActorOverlayTable_LogPrint(void);
void ActorOverlayTable_Init(void);
void ActorOverlayTable_Cleanup(void);
// ? func_80038600(?);
// ? func_80038708(?);
// ? func_8003871C(?);
// ? SSNode_SetValue(?);
// ? SSNode_SetNull(?);
// ? func_80038728(?);
// ? func_80038780(?);
// ? func_800387FC(?);
// ? func_8003880C(?);
// ? func_80038870(?);
// ? func_80038878(?);
// ? DynaSSNodeList_Initialize(?);
// ? DynaSSNodeList_Alloc(?);
// ? DynaSSNodeList_ResetCount(?);
u16 DynaSSNodeList_GetNextNodeIdx(DynaSSNodeList*);
// ? func_800388A8(?);
// ? func_800388E8(?);
// ? func_80038924(?);
// ? func_800389D4(?);
void func_80038A28(CollisionPoly* poly, f32 x, f32 y, f32 z, MtxF* mtxF);
f32 func_80038B7C(CollisionPoly*, Vec3f*);
void func_80038C78(CollisionPoly*, u8, CollisionContext*, Vec3f*);
void func_80038A28(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);
// ? func_80038BE0(?);
// ? func_80038D48(?);
// ? func_80038E78(?);
// ? func_80038F20(?);
// ? func_80038F60(?);
// ? func_80039000(?);
// ? func_800390A0(?);
// ? func_8003937C(?);
// ? func_80039448(?);
// ? CollisionPoly_CheckYIntersectApprox1(?);
// ? CollisionPoly_CheckYIntersect(?);
// ? CollisionPoly_CheckYIntersectApprox2(?);
// ? CollisionPoly_CheckXIntersectApprox(?);
// ? CollisionPoly_CheckZIntersectApprox(?);
// ? CollisionPoly_LineVsPoly(?);
// ? CollisionPoly_SphVsPoly(?);
// ? StaticLookup_AddPolyToNodeList(?);
// ? func_8003965C(?);
// ? func_800396F0(?);
// ? func_8003992C(?);
// ? func_80039A3C(?);
// ? func_80039AEC(?);
// ? func_8003A3E0(?);
// ? func_8003A5B8(?);
// ? BgCheck_ComputeWallDisplacement(?);
// ? BgCheck_SphVsStaticWall(?);
s32 BgCheck_CheckStaticCeiling(StaticLookup* lookup, u16 xpFlags, CollisionContext* colCtx, f32* outY, Vec3f* pos, f32 checkHeight, CollisionPoly** outPoly);
s32 func_8003A5B8(SSList* headNodeId, CollisionContext* colCtx, u16 xpFlags1, u16 xpFlags2, Vec3f* posA, Vec3f* posB, Vec3f* outPos, CollisionPoly** outPoly, f32* outDistSq, f32 chkDist, s32 bccFlags);
// ? func_8003A7D8(?);
// ? func_8003A95C(?);
// ? func_8003AB28(?);
// ? func_8003AC54(?);
// ? func_8003AD00(?);
// ? func_8003ADC8(?);
// ? BgCheck_SphVsFirstStaticPolyList(?);
// ? BgCheck_SphVsFirstStaticPoly(?);
// ? BgCheck_GetNearestStaticLookup(?);
// ? BgCheck_GetStaticLookup(?);
void BgCheck_GetStaticLookupIndicesFromPos(CollisionContext* colCtx, Vec3f* pos, Vec3i* arg2);
// ? func_8003AEA8(?);
// ? func_8003B04C(?);
// ? func_8003B218(?);
// ? func_8003B3C8(?);
// ? func_8003BB18(?);
// ? func_8003BF18(?);
// ? func_8003BF5C(?);
// ? func_8003BFF4(?);
// ? func_8003C078(?);
// ? T_BGCheck_getBGDataInfo(?);
// ? func_8003C55C(?);
// ? func_8003C614(?);
f32 func_8003C890(CollisionContext*, CollisionPoly**, Vec3f*);
f32 func_8003C8EC(GlobalContext*, CollisionContext*, CollisionPoly**, Vec3f*);
f32 func_8003C940(CollisionContext*, CollisionPoly**, s32*, Vec3f*);
f32 func_8003C9A4(CollisionContext*, CollisionPoly**, UNK_PTR, Actor*, Vec3f*);
f32 func_8003CA0C(GlobalContext* globalCtx, CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor,
Vec3f* pos);
f32 func_8003CA64(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos, f32 chkDist);
f32 func_8003CB30(CollisionContext*, CollisionPoly*, Vec3f*, MtxF*);
f32 func_8003CCA4(CollisionContext*, CollisionPoly**, s32*, Vec3f*);
// ? func_8003CDD4(?);
s32 func_8003D464(CollisionContext* colCtx, Vec3f* posResult, Vec3f* posNext, Vec3f* posPrev, f32 arg4,
CollisionPoly** outPoly, f32 checkHeight);
s32 func_8003D52C(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, f32, CollisionPoly**, u32*, Actor*, f32);
s32 func_8003D594(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, f32, CollisionPoly**, u32*, Actor*, f32);
// ? func_8003D600(?);
s32 func_8003D7A0(CollisionContext*, f32*, Vec3f*, f32, UNK_PTR, u32*, Actor*);
// ? func_8003D7F0(?);
// ? func_8003DD28(?);
s32 func_8003DD6C(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, UNK_TYPE, UNK_TYPE, UNK_TYPE, UNK_TYPE,
UNK_PTR);
s32 func_8003DE84(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32, u32*);
s32 func_8003DF10(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32, u32*, Actor*);
s32 func_8003DFA0(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32, u32*, Actor*, f32);
s32 func_8003E0B8(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly,
s32 chkOneFace);
s32 func_8003E0FC(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32);
// ? func_8003E0FC(?);
s32 func_8003E188(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32, f32*);
// ? func_8003E214(?);
s32 func_8003E30C(CollisionContext* colCtx, Vec3f* center, f32 radius);
// ? func_8003E398(?);
// ? func_8003E3AC(?);
// ? func_8003E4DC(?);
// ? func_8003E530(?);
// ? func_8003E568(?);
// ? func_8003E5B4(?);
// ? func_8003E688(?);
// ? func_8003E6C4(?);
// ? func_8003E6E4(?);
// ? func_8003E6EC(?);
// ? func_8003E750(?);
// ? func_8003E804(?);
// ? func_8003E82C(?);
// ? func_8003E834(?);
// ? func_8003E888(?);
// ? func_8003E890(?);
// ? func_8003E8EC(?);
// ? func_8003E934(?);
// ? func_8003E954(?);
// ? func_8003E9A0(?);
void func_8003EBF8(GlobalContext* globalCtx, DynaCollisionContext* dynaColCtx, UNK_TYPE dynaPolyId);
void func_8003EC50(GlobalContext* globalCtx, DynaCollisionContext* dynaColCtx, UNK_TYPE dynaPolyId);
void func_8003ECA8(GlobalContext* globalCtx, DynaCollisionContext* dynaColCtx, UNK_TYPE dynaPolyId);
u32 DynaPolyInfo_RegisterActor(GlobalContext* globalCtx, DynaCollisionContext* dynaColCtx, Actor* actor, UNK_TYPE arg3);
DynaPolyActor* DynaPolyInfo_GetActor(CollisionContext* colCtx, UNK_TYPE dynaPolyId);
void DynaPolyInfo_Free(GlobalContext* globalCtx, DynaCollisionContext* dynaColCtx, UNK_TYPE dynaPolyId);
// ? func_8003EE80(?);
// ? func_8003F8EC(?);
// ? func_8003F984(?);
// ? func_8003FB64(?);
// ? func_8003FBF4(?);
// ? func_8003FDDC(?);
// ? func_80040284(?);
// ? func_800409A8(?);
// ? func_80040BE4(?);
// ? func_80040E40(?);
// ? BgCheck_IsSpotScene(?);
// ? BgCheck_TryGetCustomMemsize(?);
// ? BgCheck_SetSubdivisionDimension(?);
void BgCheck_Allocate(CollisionContext* colCtx, GlobalContext* globalCtx, CollisionHeader* colHeader);
// ? BgCheck_GetCollisionHeader(?);
s32 BgCheck_PosInStaticBoundingBox(CollisionContext* colCtx, Vec3f* pos);
f32 BgCheck_EntityRaycastFloor1(CollisionContext* colCtx, CollisionPoly** outPoly, Vec3f* pos);
f32 BgCheck_EntityRaycastFloor2(GlobalContext* globalCtx, CollisionContext* colCtx, CollisionPoly** outPoly, Vec3f* pos);
f32 BgCheck_EntityRaycastFloor3(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Vec3f* pos);
f32 BgCheck_EntityRaycastFloor4(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* arg4);
f32 BgCheck_EntityRaycastFloor5(GlobalContext* globalCtx, CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos);
f32 BgCheck_EntityRaycastFloor6(CollisionContext* colCtx, CollisionPoly** outPoly, s32* bgId, Actor* actor, Vec3f* pos, f32 chkDist);
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_SphVsWallImpl(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);
// ? BgCheck_CheckCeilingImpl(?);
s32 BgCheck_AnyCheckCeiling(CollisionContext* colCtx, f32* outY, Vec3f* pos, f32 checkHeight);
s32 BgCheck_EntityCheckCeiling(CollisionContext* colCtx, f32* arg1, Vec3f* arg2, f32 arg3, CollisionPoly** outPoly, s32* outBgId, Actor* actor);
s32 BgCheck_LineTestImpl(CollisionContext* colCtx, u16 xpFlags1, u16 xpFlags2, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32* bgId, Actor* actor, f32 chkDist, u32 bccFlags);
s32 BgCheck_CameraLineTest1(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 chkWall, s32 chkFloor, s32 chkCeil, s32 chkOneFace, s32* bgId);
s32 BgCheck_CameraLineTest2(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 chkWall, s32 chkFloor, s32 chkCeil, s32 chkOneFace, s32* bgId);
s32 BgCheck_EntityLineTest1(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 chkWall, s32 chkFloor, s32 chkCeil, s32 chkOneFace, s32* bgId);
s32 BgCheck_EntityLineTest2(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 chkWall, s32 chkFloor, s32 chkCeil, s32 chkOneFace, s32* bgId, Actor* actor);
s32 BgCheck_EntityLineTest3(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 chkWall, s32 chkFloor, s32 chkCeil, s32 chkOneFace, s32* bgId, Actor* actor, f32 chkDist);
s32 BgCheck_ProjectileLineTest(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 chkWall, s32 chkFloor, s32 chkCeil, s32 chkOneFace, s32* bgId);
s32 BgCheck_AnyLineTest1(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 chkOneFace);
s32 BgCheck_AnyLineTest2(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 chkWall, s32 chkFloor, s32 chkCeil, s32 chkOneFace);
s32 BgCheck_AnyLineTest3(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, s32 chkWall, s32 chkFloor, s32 chkCeil, s32 chkOneFace, s32* bgId);
// ? BgCheck_SphVsFirstPolyImpl(?);
s32 BgCheck_SphVsFirstPoly(CollisionContext* colCtx, Vec3f* center, f32 radius);
void SSNodeList_Initialize(SSNodeList*);
void SSNodeList_Alloc(GlobalContext* globalCtx, SSNodeList* this, s32 tblMax, s32 numPolys);
u16 SSNodeList_GetNextNodeIdx(SSNodeList* this);
// ? ScaleRotPos_Initialize(?);
// ? ScaleRotPos_SetValue(?);
// ? ScaleRotPos_Equals(?);
// ? DynaLookup_ResetLists(?);
// ? DynaLookup_Reset(?);
// ? DynaLookup_ResetVtxStartIndex(?);
// ? BgActor_Initialize(?);
// ? BgActor_SetActor(?);
// ? BgActor_HasTransformChanged(?);
// ? DynaPoly_NullPolyList(?);
// ? DynaPoly_AllocPolyList(?);
// ? DynaPoly_NullVtxList(?);
// ? DynaPoly_AllocVtxList(?);
// ? DynaPoly_SetBgActorPrevTransform(?);
s32 DynaPoly_IsBgIdBgActor(s32 bgId);
void DynaPoly_Init(GlobalContext* globalCtx, DynaCollisionContext* dyna);
void DynaPoly_Alloc(GlobalContext* globalCtx, DynaCollisionContext* dyna);
void func_8003EBF8(GlobalContext* globalCtx, DynaCollisionContext* dyna, s32 bgId);
void func_8003EC50(GlobalContext* globalCtx, DynaCollisionContext* dyna, s32 bgId);
void func_8003ECA8(GlobalContext* globalCtx, DynaCollisionContext* dyna, s32 bgId);
s32 DynaPoly_SetBgActor(GlobalContext* globalCtx, DynaCollisionContext* dyna, Actor* actor, CollisionHeader* colHeader);
Actor* DynaPoly_GetActor(CollisionContext* colCtx, s32 bgId);
void DynaPoly_DeleteBgActor(GlobalContext* globalCtx, DynaCollisionContext* dyna, s32 bgId);
// ? DynaPoly_ExpandSRT(?);
void func_8003F8EC(GlobalContext* globalCtx, DynaCollisionContext* dyna, Actor* actor);
void DynaPoly_Setup(GlobalContext* globalCtx, DynaCollisionContext* dyna);
void DynaPoly_UpdateBgActorTransforms(GlobalContext* globalCtx, DynaCollisionContext* dyna);
// ? BgCheck_RaycastFloorDynaList(?);
f32 BgCheck_RaycastFloorDyna(DynaRaycast* dynaRaycast);
// ? BgCheck_SphVsDynaWallInBgActor(?);
s32 BgCheck_SphVsDynaWall(CollisionContext* colCtx, u16 xpFlags, f32* outX, f32* outZ, Vec3f* pos, f32 radius, CollisionPoly** outPoly, s32* outBgId, Actor* actor);
// ? BgCheck_CheckDynaCeilingList(?);
s32 BgCheck_CheckDynaCeiling(CollisionContext* colCtx, u16 xpFlags, f32* outY, Vec3f* pos, f32 chkDist, CollisionPoly** outPoly, s32* outBgId, Actor* actor);
// ? func_80040FA4(?);
// ? func_80041128(?);
// ? func_80041240(?);
// ? func_800413F8(?);
// ? func_80041510(?);
// ? func_80041648(?);
// ? func_800417A0(?);
void DynaPolyInfo_Alloc(UNK_PTR arg0, UNK_PTR arg1);
// ? func_80041978(?);
// ? func_800419B0(?);
s32 func_80041A28(CollisionContext* colCtx, CollisionPoly*, u32);
s32 func_80041A4C(CollisionContext* colCtx, s32 camDataIdx, s32 arg2);
s32 func_80041240(CollisionContext* colCtx, u16 xpFlags, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly, f32* distSq, s32* outBgId, Actor* actor, f32 chkDist, s32 bccFlags);
// ? BgCheck_SphVsFirstDynaPolyList(?);
// ? BgCheck_SphVsFirstDynaPolyInBgActor(?);
s32 BgCheck_SphVsFirstDynaPoly(CollisionContext* colCtx, u16 xpFlags, CollisionPoly** outPoly, s32* outBgId, Vec3f* center, f32 radius, Actor* actor, u16 bciFlags);
// ? CollisionHeader_SegmentedToVirtual(?);
void CollisionHeader_GetVirtual(void* colHeader, CollisionHeader** dest);
void BgCheck_ResetPolyCheckTbl(SSNodeList* nodeList, s32 numPolys);
// ? SurfaceType_GetData(?);
u32 SurfaceType_GetCamDataIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
u16 func_80041A4C(CollisionContext* colCtx, u32 camId, s32 bgId);
u16 SurfaceType_GetCameraSType(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
// ? func_80041B24(?);
u16 func_80041B80(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
Vec3s* func_80041C10(CollisionContext* colCtx, s32, s32);
Vec3s* func_80041C98(CollisionContext* colCtx, CollisionPoly*, s32);
u16 SurfaceType_GetNumCameras(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
Vec3s* func_80041C10(CollisionContext* colCtx, s32 camId, s32 bgId);
Vec3s* SurfaceType_GetCamPosData(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
u32 SurfaceType_GetSceneExitIndex(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
u32 func_80041D4C(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
s32 func_80041E4C(CollisionContext* colCtx, CollisionPoly* wallPoly, u8 source);
s32 func_80041EA4(CollisionContext* colCtx, CollisionPoly* floorPoly, s32 source);
u32 func_80041D70(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
// ? func_80041D94(?);
s32 func_80041DB8(CollisionContext* colCtx, CollisionPoly* floorPoly, s32 source);
s32 func_80041DE4(CollisionContext* colCtx, CollisionPoly* floorPoly, s32 source);
s32 func_80041E18(CollisionContext* colCtx, CollisionPoly* floorPoly, s32 source);
// ? func_80041EC8(?);
// ? func_80041F10(?);
u16 func_80041F34(CollisionContext*, CollisionPoly*, u32);
s32 func_80041FA0(CollisionContext*, CollisionPoly*, u32);
s32 func_80041FC4(CollisionContext* colCtx, CollisionPoly* floorPoly, s32 source);
s32 func_80042048(CollisionContext*, CollisionPoly*, s32);
s32 func_80042084(CollisionContext* colCtx, CollisionPoly* floorPoly, s32 source);
s32 func_800420C0(CollisionContext* colCtx, CollisionPoly* floorPoly, s32 source);
s32 func_800420E4(CollisionContext* colCtx, CollisionPoly* floorPoly, s32 source);
// ? func_80042108(?);
s32 func_8004213C(GlobalContext*, CollisionContext*, f32, f32, f32*, WaterBox**);
s32 func_8004239C(GlobalContext* globalCtx, CollisionContext* colCtx, Vec3f* arg2, f32 arg3, WaterBox** arg4);
s32 func_80042244(GlobalContext* globalCtx, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface,
WaterBox** outWaterBox);
u32 func_80042538(CollisionContext* colCtx, WaterBox* waterBox);
u16 func_80042548(CollisionContext* colCtx, WaterBox* waterBox);
u32 func_8004259C(CollisionContext* colCtx, WaterBox* waterBox);
s32 func_800427B4(CollisionPoly*, CollisionPoly*, Vec3f*, Vec3f*, Vec3f*);
// ? func_80042868(?);
// ? func_80042B2C(?);
void func_80042C3C(GlobalContext*, CollisionContext*);
// ? func_80042CB8(?);
// ? func_80042EF8(?);
void func_80042FC4(GlobalContext*, CollisionContext*);
s32 func_80041DB8(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
s32 func_80041DE4(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
s32 func_80041E18(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
s32 func_80041E4C(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
u32 func_80041EA4(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
u32 func_80041EC8(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
u32 SurfaceType_IsHorseBlocked(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
u32 func_80041F10(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
u16 SurfaceType_GetSfx(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
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_IsConveyor(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_GetSurface1(GlobalContext* globalCtx, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox);
s32 WaterBox_GetSurface2(GlobalContext* globalCtx, CollisionContext* colCtx, Vec3f* pos, f32 surfaceChkDist, WaterBox** outWaterBox);
s32 WaterBox_GetSurfaceImpl(GlobalContext* globalCtx, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox);
u32 WaterBox_GetCamDataIndex(CollisionContext* colCtx, WaterBox* waterBox);
u16 WaterBox_GetCameraSType(CollisionContext* colCtx, WaterBox* waterBox);
u32 WaterBox_GetLightSettingIndex(CollisionContext* colCtx, WaterBox* waterBox);
s32 func_80042708(CollisionPoly* polyA, CollisionPoly* polyB, Vec3f* point, Vec3f* closestPoint);
s32 func_800427B4(CollisionPoly* polyA, CollisionPoly* polyB, Vec3f* pointA, Vec3f* pointB, Vec3f* closestPoint);
// ? BgCheck_DrawDynaPolyList(?);
// ? BgCheck_DrawBgActor(?);
void BgCheck_DrawDynaCollision(GlobalContext*, CollisionContext*);
// ? BgCheck_DrawStaticPoly(?);
// ? BgCheck_DrawStaticPolyList(?);
void BgCheck_DrawStaticCollision(GlobalContext*, CollisionContext*);
// ? func_800430A0(?);
// ? func_800432A0(?);
// ? func_80043334(?);
// ? func_800433A4(?);
void DynaPolyInfo_SetActorMove(DynaPolyActor* actor, DynaPolyMoveFlag flags);
void func_80043334(CollisionContext* colCtx, Actor* actor, s32 bgId);
s32 func_800433A4(CollisionContext* colCtx, s32 bgId, Actor* actor);
void DynaPolyActor_Init(DynaPolyActor* dynaActor, DynaPolyMoveFlag flags);
void func_800434A0(DynaPolyActor* dynaActor);
void func_800434A8(DynaPolyActor* actor);
void func_800434C8(CollisionContext* colCtx, u32 floorPolySource);
void func_80043508(CollisionContext* colCtx, u32 floorPolySource);
void func_80043538(DynaPolyActor* actor);
void func_800434A8(DynaPolyActor* dynaActor);
void func_800434C8(CollisionContext* colCtx, s32 floorPolySource);
void func_80043508(CollisionContext* colCtx, s32 floorPolySource);
void func_80043538(DynaPolyActor* dynaActor);
s32 func_80043548(DynaPolyActor* dynaActor);
s32 func_8004356C(DynaPolyActor* dynaActor);
s32 func_80043590(DynaPolyActor* dynaActor);
@ -835,7 +842,12 @@ s32 CollisionCheck_SetAC_SAC(GlobalContext* globalCtx, CollisionCheckContext* co
s32 CollisionCheck_SetOC(GlobalContext* globalCtx, CollisionCheckContext* colChkCtx, Collider* collider);
s32 CollisionCheck_SetOC_SAC(GlobalContext* globalCtx, CollisionCheckContext* colChkCtx, Collider* collider, s32 index);
s32 CollisionCheck_SetOCLine(GlobalContext* globalCtx, CollisionCheckContext* colChkCtx, OcLine* collider);
void func_8005DFAC(GlobalContext* globalCtx, Collider* collider, Vec3f* v);
// ? func_8005DF2C(?);
// ? func_8005DF50(?);
// ? func_8005DF74(?);
void func_8005DFAC(GlobalContext* globalCtx, Collider* collider, Vec3f* pos);
void func_8005E10C(GlobalContext* globalCtx, Collider* collider, Vec3f* pos);
// ? func_8005E2EC(?);
// ? func_8005E4F8(?);
// ? func_8005E604(?);
// ? func_8005E800(?);
@ -2633,5 +2645,4 @@ void func_80820434(GlobalContext*, GraphicsContext*);
void func_80821C10(GlobalContext*);
void func_80825C14(GlobalContext*);
void func_808161AC(GlobalContext*);
#endif