1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-05 07:24:34 +00:00

decompile z_camera (#398)

* cleanup

* name camera action functions

* decompile a few small functions, name a few Camera struct members

* decompile camera data, decompile a few camera functions

* Split ASM for code_800BB0A0

* removing code_800BB0A0.s

* PR Requests, Camera WIP

* remove #define NON_MATCHING from db_camera

* rename code_8007BF90.c to z_olib.c, rename functions in z_olib.c

* camera wip

* rename some struct memebers, some decomp wip

* pr updates

* camera wip

* name some fields in Camera Struct, being making sense of Camera_Update

* Camera WIP

* wip

* wip

* add z64camera.h header, begin creating CameraSetting macros

* wip

* wip

* wip

* wip

* migrate camera bss to c

* match a couple functions in db_camera

* match some small db_camera functions

* wip

* migrate db_camera rodata, match a few functions

* remote db_camera.rodata.s

* match some of db_camera

* identify types of some unknown data pieces

* some small wip

* Match Camera_Init, some function changes, some struct name changes.  Change unk_C0 and unk_CC to floats from Vec3fs

* add naming for a few more Camera struct members

* wip

* match func_80043F94

* Match Camera_Jump1

* document some of Camera_Jump1

* wip

* match Camera_Jump3

* Match Camera_Update, FeelsAmazing

* wip

* wip

* match Camera_SetParam

* minor cleanup

* wip

* wip

* match Camera_KeepOn0

* some documentation, modify some matching functions to match style of others.

* match Camera_Demo1

* match camera_demo9

* document Camera_Demo1 and Camera_Demo9

* wip

* Match camera_battle4

* match camera_unique2

* Match Camera_Unique3

* match camera_special6

* match Camera_Special5

* wip

* document camera_special6

* naming updates

* match camera_Unique1

* match Camera_Unique0

* wip

* Match Camera_CalcUpFromPitchYawRoll

* match func_80045508

* document Camera_Battle4

* document several camera functions, move camera data to separate file

* rename phi/theta to pitch/yaw

* wip

* uniq9 wip

* Camera_Unqiue9 OK

* document Camera_Unique9

* name unk_160 in camera struct

* wip

* wip

* minor updates

* fix conflicts

* wip

* wip

* Olib updates

* wip

* wip

* rename most Math3D functions, few matches, documentation

* wip

* document most of math3d

* wip

* wip

* wip

* pr updates

* Match Camera_Fixed4

* match func_80058E8C

* pr updates

* add missing comment block finalizer

* Merge math3dupdates

* match Camera_ChangeSetting

* Match Camera_ChangeMode

* match func_80058148

* Match Camera_Special9

* decompile the rest of camera data

* match Camera_Demo5

* name a few camera functions in z_play

* match func_80046CB4, some work on other fucntions

* wip

* impove some non matchings

* fix function rename

* match func_800588B4

* match Camera_Subj4

* wip

* Camera_Demo3 matching, Camera_Battle1 big progress

* Camera_Normal2 OK

* wip

* match Camera_Parallel1

* normalize some things across functions

* match Camera_Normal1

* Match Camera_Normal3

* some cleanup

* more cleanup

* more cleanup , match Camera_CalcDefaultPitch

* data formatting

* Match Camera_Jump2

* document Camera_Jump2

* Match Camera_KeepOn3

* document some of Camera_KeepOn3

* improve some non_matchings

* match func_80045C74 and func_800460A8

* code cleanup, documentation

* match Camera_KeepOn1

* Match Camera_Subj3

* Match Camera_Battle1

* remove non_matching from func_80044adc and func_80046e20

* name several members of Battle1

* more documentation on Battle1

* cleanup

* renaming Camera_Vec3fScaleXYZFactor to Camera_Vec3fTranslateByUnitVector

* reorganize update structs, remove final references to params, remove CameraParams union

* implement camera enums into player

* Renaming Camera_GetDir to Camera_GetInputDir, Camera_GetRealDir to Camera_GetCamDir, etc, implement camera enum's into player

* remove non-global camera variables from variables.h

* clean up some variable declarations

* finish pr comment updates

* fix some warnings

* data formatting

* finish commenting on data

* delete unused asm

* remove asm

Co-authored-by: fig <fig02srl@gmail.com>
This commit is contained in:
krimtonz 2020-12-06 16:39:47 -06:00 committed by GitHub
parent dadee87f94
commit 321388673b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
243 changed files with 13819 additions and 28653 deletions

View file

@ -395,7 +395,7 @@ f32 func_8002DB8C(Actor* actorA, Actor* actorB);
f32 func_8002DBB0(Actor* actor, Vec3f* arg1);
void func_8002DBD0(Actor* actor, Vec3f* result, Vec3f* arg2);
f32 Actor_HeightDiff(Actor* actorA, Actor* actorB);
f32 Player_GetCameraYOffset(Player* player);
f32 Player_GetHeight(Player* player);
f32 func_8002DCE4(Player* player);
s32 func_8002DD6C(Player* player);
s32 func_8002DD78(Player* player);
@ -597,7 +597,8 @@ s32 func_8003D594(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, f32, CollisionPoly*
s32 func_8003D7A0(CollisionContext*, f32*, Vec3f*, f32, UNK_PTR, u32*, Actor*);
// ? func_8003D7F0(?);
// ? func_8003DD28(?);
// ? func_8003DD6C(?);
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);
@ -651,13 +652,13 @@ void DynaPolyInfo_Free(GlobalContext* globalCtx, DynaCollisionContext* dynaColCt
void DynaPolyInfo_Alloc(UNK_PTR arg0, UNK_PTR arg1);
// ? func_80041978(?);
// ? func_800419B0(?);
// ? func_80041A28(?);
// ? func_80041A4C(?);
s32 func_80041A28(CollisionContext* colCtx, CollisionPoly*, u32);
s32 func_80041A4C(CollisionContext* colCtx, s32 camDataIdx, s32 arg2);
// ? func_80041B24(?);
// ? func_80041B80(?);
struct_80041C10_ret* func_80041C10(CollisionContext* colCtx, s32, s32);
// ? func_80041C98(?);
UNK_TYPE func_80041D4C(CollisionContext*, CollisionPoly*, CollisionPoly*);
u16 func_80041B80(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
Vec3s* func_80041C10(CollisionContext* colCtx, s32, s32);
Vec3s* func_80041C98(CollisionContext* colCtx, CollisionPoly*, s32);
u32 func_80041D4C(CollisionContext* colCtx, CollisionPoly* poly, s32 bgId);
// ? func_80041D94(?);
// ? func_80041DB8(?);
// ? func_80041EC8(?);
@ -665,15 +666,14 @@ UNK_TYPE func_80041D4C(CollisionContext*, CollisionPoly*, CollisionPoly*);
u16 func_80041F34(CollisionContext*, CollisionPoly*, u32);
s32 func_80041FA0(CollisionContext*, CollisionPoly*, u32);
s32 func_80042048(CollisionContext*, CollisionPoly*, s32);
s32 func_80042108(CollisionContext*, CollisionPoly*, u32);
s32 func_8004213C(GlobalContext*, CollisionContext*, f32, f32, f32*, UNK_PTR);
// ? 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);
// ? func_80042538(?);
// ? func_80042548(?);
// ? func_8004259C(?);
s32 func_800427B4(CollisionPoly*, CollisionPoly*, s32, s32, Vec3f*);
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*);
@ -695,94 +695,30 @@ s32 func_8004356C(DynaPolyActor* dynaActor);
s32 func_80043590(DynaPolyActor* dynaActor);
s32 func_800435B4(DynaPolyActor* dynaActor);
s32 func_800435D8(GlobalContext* globalCtx, DynaPolyActor* dyna, s16 arg2, s16 arg3, s16 arg4);
f32 func_800437F0(f32, f32);
// ? func_8004389C(?);
// ? func_800438DC(?);
// ? func_8004391C(?);
// ? func_800439AC(?);
// ? func_80043A3C(?);
// ? func_80043ABC(?);
// ? func_80043B60(?);
// ? func_80043BC4(?);
// ? func_80043C28(?);
// ? func_80043CAC(?);
// ? func_80043D18(?);
// ? func_80043F34(?);
// ? func_80043F94(?);
// ? func_80044340(?);
// ? func_800443A0(?);
// ? func_80044434(?);
// ? func_80044510(?);
// ? func_80044568(?);
// ? func_80044740(?);
// ? func_8004476C(?);
// ? func_8004479C(?);
// ? func_8004481C(?);
// ? func_800448CC(?);
// ? func_800449AC(?);
// ? func_80044A74(?);
// ? func_80044ADC(?);
// ? func_80044E68(?);
// ? func_800450A4(?);
// ? Camera_CopyModeValuesToPREG(?);
// ? Camera_CopyPREGToModeValues(?);
// ? func_80045350(?);
// ? func_8004545C(?);
// ? func_80045508(?);
// ? func_80045714(?);
// ? func_800457A8(?);
// ? func_800458D4(?);
// ? func_80045B08(?);
// ? func_80045C74(?);
// ? func_800460A8(?);
// ? func_800466F8(?);
// ? func_800468CC(?);
// ? func_800469C0(?);
// ? func_80046B44(?);
// ? func_80046CB4(?);
// ? func_80046E20(?);
// ? func_80047394(?);
// ? Camera_Normal1(?);
// ? Camera_Unique2(?);
// ? Camera_Unique9(?);
// ? func_80054314(?);
// ? func_8005445C(?);
// ? func_80054478(?);
void func_80057C6C(Camera* camera, View* view, CollisionContext* colCtx, GlobalContext* globalCtx);
// ? func_80057FC4(?);
// ? func_80058148(?);
void Camera_ChangeStatus(Camera* camera, s16 status);
// ? func_800584E8(?);
// ? func_800588B4(?);
// ? func_80058CF8(?);
// ? func_80058D34(?);
// ? func_80058E8C(?);
// ? func_800591EC(?);
void func_80059EC8(Camera* camera);
// ? func_8005A02C(?);
// ? Camera_ChangeMode(?);
s32 func_8005A444(Camera* camera, s16 arg1);
s32 func_8005A470(Camera* camera, s16 arg1);
// ? Camera_ChangeSetting(?);
s32 func_8005A77C(Camera* camera, s16 button);
// ? func_8005A7A8(?);
// ? func_8005A8C4(?);
s16 func_8005A948(Camera* camera);
Vec3s* func_8005A970(Vec3s*, Camera*);
s16 func_8005A9CC(s32 arg0);
s16 func_8005A9F4(Camera* camera);
s32 func_8005AA1C(Camera* camera, s32, s16, s32);
s32 Camera_SetParam(Camera*, s32, void*);
// ? func_8005AC48(?);
// ? func_8005AC60(?);
// ? func_8005AC6C(?);
s32 func_8005AD40(Camera* camera, Actor* doorActor, s16 arg2, f32 arg3, s16 arg4, s16 arg5, s16 arg6);
// ? func_8005AE64(?);
Vec3f* func_8005AFB4(Vec3f* dst, Camera* camera);
void Camera_SetCameraData(Camera*, s16, CutsceneCameraPoint*, CutsceneCameraPoint*, s16, s16, s32);
// ? func_8005B044(?);
s32 func_8005B198();
s16 func_8005B1A4(Camera* camera);
void Camera_Init(Camera* camera, View* view, CollisionContext* colCtx, GlobalContext* globalCtx);
void Camera_InitPlayerSettings(Camera* camera, Player* player);
s16 Camera_ChangeStatus(Camera* camera, s16 status);
Vec3s* Camera_Update(Vec3s* outDir, Camera* camera);
void Camera_Finish(Camera* camera);
s32 Camera_ChangeMode(Camera* camera, s16 mode);
s32 Camera_ChangeSetting(Camera* camera, s16 setting);
s32 Camera_ChangeDataIdx(Camera* camera, s32 camDataIdx);
s16 Camera_GetInputDirYaw(Camera* camera);
Vec3s* Camera_GetCamDir(Vec3s* dir, Camera* camera);
s16 Camera_GetCamDirPitch(Camera* camera);
s16 Camera_GetCamDirYaw(Camera* camera);
s32 Camera_AddQuake(Camera* camera, s32 arg1, s16 y, s32 countdown);
s32 Camera_SetParam(Camera* camera, s32 param, void* value);
s32 func_8005AC48(Camera* camera, s16 arg1);
s32 Camera_ResetAnim(Camera* camera);
s32 Camera_SetCSParams(Camera* camera, CutsceneCameraPoint* atPoints, CutsceneCameraPoint* eyePoints, Player* player,
s16 relativeToPlayer);
s32 Camera_ChangeDoorCam(Camera* camera, Actor* doorActor, s16 camDataIdx, f32 arg3, s16 timer1, s16 timer2,
s16 timer3);
s32 Camera_Copy(Camera* dstCamera, Camera* srcCamera);
Vec3f* Camera_GetSkyboxOffset(Vec3f* dst, Camera* camera);
void Camera_SetCameraData(Camera* camera, s16 setDataFlags, void* data0,
void* data1, s16 data2, s16 data3, UNK_TYPE arg6);
DamageTable* DamageTable_Get(s32 index);
// ? func_8005B280(?);
void func_8005B2AC(GraphicsContext* gfx, Vec3f* vA, Vec3f* vB, Vec3f* vC, u8 r, u8 g, u8 b);
@ -906,7 +842,8 @@ void func_80061EFC(CollisionCheckInfo* info, DamageTable* damageTable, Collision
// ? func_800622E4(?);
s32 CollisionCheck_GeneralLineOcCheck(GlobalContext* globalCtx, CollisionCheckContext* colChkCtx, Vec3f* camera_3C,
Vec3f* arg3, Actor** arg4, s32 arg5);
// ? func_800626B0(?);
s32 func_800626B0(GlobalContext* globalCtx, CollisionCheckContext* colChkCtx, Vec3f* camera_3C, Vec3f* arg3,
Actor** arg4, s32 arg5);
void Collider_CylinderUpdate(Actor* actor, ColliderCylinder* collider);
void func_80062718(ColliderCylinder* collider, Vec3s* pos);
void func_80062734(ColliderQuad* collider, Vec3f* a, Vec3f* b, Vec3f* c, Vec3f* d);
@ -923,6 +860,7 @@ s32 func_80062ECC(f32, f32, f32, Vec3f*, Vec3f*, Vec3f*, Vec3f*, Vec3f*);
void SaveContext_Init(void);
// ? func_800636C0(?);
void func_8006375C(s32 arg0, s32 arg1, const char* text);
void func_8006376C(u8 x, u8 y, u8 colorId, const char* text);
// ? func_8006376C(?);
// ? func_80063828(?);
void func_8006390C(Input* input);
@ -988,8 +926,8 @@ f32 func_8006F93C(u16, u16, u16);
f32 func_8006F9BC(u16 endFrame, u16 startFrame, u16 frames, u16, u16);
// ? func_8006FB94(?);
// ? func_8006FC88(?);
// ? func_80070600(?);
// ? func_800706A0(?);
void func_80070600(GlobalContext* globalCtx, s32 waterboxProperties);
void func_800706A0(GlobalContext* globalCtx);
// ? func_80070718(?);
// ? func_80070C24(?);
// ? func_800730DC(?);
@ -1119,7 +1057,7 @@ Vec3f* OLib_Vec3fDiffRad(Vec3f* dest, Vec3f* a, Vec3f* b);
// ? func_8007C850(?);
// ? func_8007FFE0(?);
// ? func_80080024(?);
s16 func_800800F8(GlobalContext* globalCtx, s16 arg1, s16 arg2, Actor* actor, s16 arg4);
s16 func_800800F8(GlobalContext* globalCtx, s16 csID, s16 timer, Actor* actor, s16 camIdx);
void func_800803F0(GlobalContext* globalCtx, s16 camId);
s16 func_80080480(GlobalContext* globalCtx, Actor* actor);
void func_800806BC(GlobalContext* globalCtx, Actor* actor, u16 sfxId);
@ -1238,7 +1176,7 @@ u32 Quake_SetUnkValues(s16 idx, s16 arg1, SubQuakeRequest14 arg2);
void Quake_Init();
s16 Quake_Add(Camera* cam, u32 callbackIdx);
u32 Quake_RemoveFromIdx(s16 idx);
s16 Quake_Calc(Camera* camera, UnkQuakeCalcStruct* camData);
s16 Quake_Calc(Camera* camera, QuakeCamCalc* camData);
Gfx* Gfx_SetFog(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f);
Gfx* Gfx_SetFogWithSync(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f);
Gfx* Gfx_SetFog2(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f);
@ -1557,9 +1495,9 @@ void ShrinkWindow_Update(s32 updateRate);
// ? func_800B4AA8(?);
// ? func_800B4AE4(?);
// ? func_800B4B20(?);
// ? func_800B4D58(?);
// ? func_800B4DE4(?);
// ? func_800B4E7C(?);
void DbgCamera_Init(DBCamera* dbCamera, Camera* camera);
void DbgCamera_Enable(DBCamera* dbCamera, Camera* camera);
void DbgCamera_Update(DBCamera* dbCamera, Camera* camera);
// ? func_800B8730(?);
// ? func_800B87D8(?);
// ? func_800B8978(?);
@ -1568,10 +1506,10 @@ void ShrinkWindow_Update(s32 updateRate);
// ? func_800B8F58(?);
// ? func_800B9060(?);
// ? func_800B91B0(?);
// ? func_800B958C(?);
void DbgCamera_FirstInit(Camera* camera, DBCamera* dbCamera);
// ? func_800B9638(?);
// ? func_800BB0A0(?);
// ? func_800BB2B4(?);
s32 func_800BB2B4(Vec3f* pos, f32* roll, f32* fov, CutsceneCameraPoint* point, s16* keyframe, f32* curFrame);
s32 Mempak_Init(s32 controllerNb);
s32 Mempak_GetFreeBytes(s32 controllerNb);
s32 Mempak_FindFile(s32 controllerNb, char start, char end);
@ -1609,13 +1547,13 @@ s16 Gameplay_ChangeCameraStatus(GlobalContext* globalCtx, s16 camId, s16 status)
void Gameplay_ClearCamera(GlobalContext* globalCtx, s16 camId);
void Gameplay_ClearAllSubCameras(GlobalContext* globalCtx);
Camera* Gameplay_GetCamera(GlobalContext* globalCtx, s16 camId);
s32 func_800C04D8(GlobalContext* globalCtx, s16 camId, Vec3f* arg2, Vec3f* arg3);
s32 func_800C05E4(GlobalContext* globalCtx, s16 camId, Vec3f* arg2, Vec3f* arg3, Vec3f* arg4);
s32 func_800C0704(GlobalContext* globalCtx, s16 camId, f32 arg2);
s32 func_800C0744(GlobalContext* globalCtx, s16 camId, s16 arg2);
void func_800C078C(GlobalContext* globalCtx, s16 camId1, s16 camId2);
s32 Gameplay_CameraSetAtEye(GlobalContext* globalCtx, s16 camId, Vec3f* arg2, Vec3f* arg3);
s32 Gameplay_CameraSetAtEyeUp(GlobalContext* globalCtx, s16 camId, Vec3f* at, Vec3f* eye, Vec3f* up);
s32 Gameplay_CameraSetFov(GlobalContext* globalCtx, s16 camId, f32 fov);
s32 Gameplay_SetCameraRoll(GlobalContext* globalCtx, s16 camId, s16 roll);
void Gameplay_CopyCamera(GlobalContext* globalCtx, s16 camId1, s16 camId2);
s32 func_800C0808(GlobalContext* globalCtx, s16 camId, Player* player, s16 arg3);
void func_800C0874(GlobalContext* globalCtx, s16 camId, s16 arg2);
s32 Gameplay_CameraChangeSetting(GlobalContext* globalCtx, s16 camId, s16 arg2);
void func_800C08AC(GlobalContext* globalCtx, s16 camId, s16 arg2);
void Gameplay_SaveSceneFlags(GlobalContext* globalCtx);
void Gameplay_SetupRespawnPoint(GlobalContext* globalCtx, s32 respawnMode, s32 playerParams);
@ -2307,7 +2245,7 @@ void func_800F6584(UNK_TYPE);
void func_800F66DC(s8);
void func_800F6700(s8 outputMode);
void func_800F67A0(u8);
// ? func_800F6828(?);
void func_800F6828(u8);
void func_800F68BC(s8);
// ? func_800F68D4(?);
// ? func_800F691C(?);