Merge pull request #293 from robojumper/some-cam-stuff

Some camera stuff
This commit is contained in:
robojumper
2026-03-01 21:46:15 +01:00
committed by GitHub
45 changed files with 3445 additions and 445 deletions
+24 -7
View File
@@ -410,21 +410,35 @@ toBeSorted/d_enemy_sword_mdl.cpp:
.data start:0x8050E060 end:0x8050E090
.sdata2 start:0x80579230 end:0x80579238
toBeSorted/d_camera.cpp:
.text start:0x8006BBE0 end:0x80083370 align:16
.ctors start:0x804DB6AC end:0x804DB6B0
.sbss start:0x80575290 end:0x80575370
toBeSorted/d_camera_base.cpp:
.text start:0x8006BBE0 end:0x8006BE20 align:16
toBeSorted/d_event_1.cpp:
toBeSorted/d_camera_game.cpp:
.text start:0x8006BE20 end:0x80083370 align:16
.ctors start:0x804DB6AC end:0x804DB6B0
.data start:0x8050E090 end:0x8050EA18
.sdata start:0x80571D70 end:0x80571ED8
.sbss start:0x80575290 end:0x80575370
.sdata2 start:0x80579238 end:0x80579418
.bss start:0x805A08C8 end:0x805A1660
toBeSorted/d_camera_event.cpp:
.text start:0x80083370 end:0x800928F0 align:16
.ctors start:0x804DB6B0 end:0x804DB6B4
.data start:0x8050EA18 end:0x8050F180
.sdata2 start:0x80579418 end:0x80579538
.bss start:0x805A1660 end:0x805A2F18
toBeSorted/unk_map_cam.cpp:
toBeSorted/d_camera_map.cpp:
.text start:0x800928F0 end:0x8009345C align:16
.ctors start:0x804DB6B4 end:0x804DB6B8
.data start:0x8050F180 end:0x8050F1C8
.sdata2 start:0x80579538 end:0x805795A0
.bss start:0x805A2F18 end:0x805A2F58
toBeSorted/unk_vec_math_event.cpp:
toBeSorted/d_camera_math.cpp:
.text start:0x80093460 end:0x80093A74 align:16
.sdata2 start:0x805795A0 end:0x80579600
toBeSorted/attention.cpp:
.text start:0x80093A80 end:0x80096EAC align:16
@@ -1353,7 +1367,10 @@ d/d_camera.cpp:
.text start:0x8019D160 end:0x8019ED0C align:16
.ctors start:0x804DB800 end:0x804DB804
.data start:0x8052C180 end:0x8052C230
.sdata start:0x80572EA0 end:0x80572EB8
.sbss start:0x80575708 end:0x80575710
.sdata2 start:0x8057AF50 end:0x8057AFA8
.bss start:0x805B27A0 end:0x805B27D8
d/d_light_obj.cpp:
.text start:0x8019ED10 end:0x801A65C8 align:16
+309 -280
View File
@@ -3063,113 +3063,113 @@ fn_8006B810 = .text:0x8006B810; // type:function size:0x5C
fn_8006B870 = .text:0x8006B870; // type:function size:0x10
calc__16dEnemySwordMdl_cFRC6mMtx_cRC7mVec3_cb = .text:0x8006B880; // type:function size:0x2A8
entry__16dEnemySwordMdl_cFP12dAcObjBase_cP15dShadowCircle_cP7mQuat_c = .text:0x8006BB30; // type:function size:0xA4
fn_8006BBE0 = .text:0x8006BBE0; // type:function size:0x70
fn_8006BC50 = .text:0x8006BC50; // type:function size:0x18
fn_8006BC70 = .text:0x8006BC70; // type:function size:0xA8
fn_8006BD20 = .text:0x8006BD20; // type:function size:0x4
fn_8006BD30 = .text:0x8006BD30; // type:function size:0x24
fn_8006BD60 = .text:0x8006BD60; // type:function size:0x44
fn_8006BDB0 = .text:0x8006BDB0; // type:function size:0xC
fn_8006BDC0 = .text:0x8006BDC0; // type:function size:0xC
fn_8006BDD0 = .text:0x8006BDD0; // type:function size:0x8
fn_8006BDE0 = .text:0x8006BDE0; // type:function size:0x40
fn_8006BE20 = .text:0x8006BE20; // type:function size:0x40
doCreate__13dCameraBase_cFl = .text:0x8006BBE0; // type:function size:0x70
doRemove__13dCameraBase_cFv = .text:0x8006BC50; // type:function size:0x18
doExecute__13dCameraBase_cFv = .text:0x8006BC70; // type:function size:0xA8
onBecomeActive__13dCameraBase_cFv = .text:0x8006BD20; // type:function size:0x4 scope:weak
doDraw__13dCameraBase_cFv = .text:0x8006BD30; // type:function size:0x24
setView__13dCameraBase_cFRC7CamView = .text:0x8006BD60; // type:function size:0x44 scope:weak
deactivate__13dCameraBase_cFv = .text:0x8006BDB0; // type:function size:0xC scope:weak
activate__13dCameraBase_cFv = .text:0x8006BDC0; // type:function size:0xC scope:weak
getView__13dCameraBase_cFv = .text:0x8006BDD0; // type:function size:0x8 scope:weak
__dt__7CamViewFv = .text:0x8006BDE0; // type:function size:0x40 scope:weak
__dt__17dCameraGame_HIO_cFv = .text:0x8006BE20; // type:function size:0x40
debugNotif = .text:0x8006BE60; // type:function size:0x50
debugPrintf4 = .text:0x8006BEB0; // type:function size:0x50
debugPrintf4__FPCce = .text:0x8006BEB0; // type:function size:0x50
debugPrintf6 = .text:0x8006BF00; // type:function size:0x50
fn_8006BF50 = .text:0x8006BF50; // type:function size:0x4
fn_8006BF60 = .text:0x8006BF60; // type:function size:0x8
GetCameraDatTrendIndex = .text:0x8006BF70; // type:function size:0xF0
getCurrentRoomId = .text:0x8006C060; // type:function size:0x10
fn_8006C070 = .text:0x8006C070; // type:function size:0x5C
fn_8006C0D0 = .text:0x8006C0D0; // type:function size:0x10
fn_8006C0E0 = .text:0x8006C0E0; // type:function size:0x28
GetCameraDatStyleIdx = .text:0x8006C110; // type:function size:0x48
SetCameraParamTrendIndexes = .text:0x8006C160; // type:function size:0x208
initCameraParamData = .text:0x8006C370; // type:function size:0xEC
getTrendIndex__13dCameraGame_cFPCc = .text:0x8006BF70; // type:function size:0xF0
getCurrentRoomId__Fv = .text:0x8006C060; // type:function size:0x10
getCam__Fll = .text:0x8006C070; // type:function size:0x5C
getCam__FRC5CamId = .text:0x8006C0D0; // type:function size:0x10
getCamTrend__FRC5CamId = .text:0x8006C0E0; // type:function size:0x28
getStyleIndex__13dCameraGame_cFUl = .text:0x8006C110; // type:function size:0x48
cacheIdxes__13dCameraGame_cFv = .text:0x8006C160; // type:function size:0x208
initCamParamDat__13dCameraGame_cFv = .text:0x8006C370; // type:function size:0xEC
fn_8006C460 = .text:0x8006C460; // type:function size:0x6DC
fn_8006CB40 = .text:0x8006CB40; // type:function size:0x9C
fn_8006CBE0 = .text:0x8006CBE0; // type:function size:0x8
fn_8006CBF0 = .text:0x8006CBF0; // type:function size:0x78
fn_8006CC70 = .text:0x8006CC70; // type:function size:0x10
fn_8006CC80 = .text:0x8006CC80; // type:function size:0x8
doInit__17GameCameraHandlerFP13dCameraGame_cUsi = .text:0x8006CB40; // type:function size:0x9C
init__17GameCameraHandlerFv = .text:0x8006CBE0; // type:function size:0x8
doExecute__17GameCameraHandlerFv = .text:0x8006CBF0; // type:function size:0x78
vt_0x0C__17GameCameraHandlerFv = .text:0x8006CC70; // type:function size:0x10
vt_0x10__17GameCameraHandlerFv = .text:0x8006CC80; // type:function size:0x8
fn_8006CC90 = .text:0x8006CC90; // type:function size:0x48
fn_8006CCE0 = .text:0x8006CCE0; // type:function size:0x164
searchForBossActor = .text:0x8006CE50; // type:function size:0xD8
fn_8006CF30 = .text:0x8006CF30; // type:function size:0x2F4
fn_8006D230 = .text:0x8006D230; // type:function size:0x1618
init__19GameCameraHandler03Fv = .text:0x8006CF30; // type:function size:0x2F4
vt_0x10__19GameCameraHandler03Fv = .text:0x8006D230; // type:function size:0x1618
fn_8006E850 = .text:0x8006E850; // type:function size:0x130
fn_8006E980 = .text:0x8006E980; // type:function size:0x108
fn_8006EA90 = .text:0x8006EA90; // type:function size:0x294
fn_8006ED30 = .text:0x8006ED30; // type:function size:0x2F8
fn_8006F030 = .text:0x8006F030; // type:function size:0x814
fn_8006F850 = .text:0x8006F850; // type:function size:0x1F04
fn_80071760 = .text:0x80071760; // type:function size:0x340
fn_80071AA0 = .text:0x80071AA0; // type:function size:0x198
fn_80071C40 = .text:0x80071C40; // type:function size:0x10F4
init__19GameCameraHandler01Fv = .text:0x8006ED30; // type:function size:0x2F8
vt_0x0C__19GameCameraHandler01Fv = .text:0x8006F030; // type:function size:0x814
vt_0x10__19GameCameraHandler01Fv = .text:0x8006F850; // type:function size:0x1F04
init__19GameCameraHandler02Fv = .text:0x80071760; // type:function size:0x340
vt_0x0C__19GameCameraHandler02Fv = .text:0x80071AA0; // type:function size:0x198
vt_0x10__19GameCameraHandler02Fv = .text:0x80071C40; // type:function size:0x10F4
fn_80072D40 = .text:0x80072D40; // type:function size:0x4E8
fn_80073230 = .text:0x80073230; // type:function size:0x414
fn_80073650 = .text:0x80073650; // type:function size:0x384
fn_800739E0 = .text:0x800739E0; // type:function size:0x1F0
fn_80073BD0 = .text:0x80073BD0; // type:function size:0x760
fn_80074330 = .text:0x80074330; // type:function size:0x698
fn_800749D0 = .text:0x800749D0; // type:function size:0x748
init__19GameCameraHandler04Fv = .text:0x80073650; // type:function size:0x384
vt_0x10__19GameCameraHandler04Fv = .text:0x800739E0; // type:function size:0x1F0
init__19GameCameraHandler05Fv = .text:0x80073BD0; // type:function size:0x760
vt_0x0C__19GameCameraHandler05Fv = .text:0x80074330; // type:function size:0x698
vt_0x10__19GameCameraHandler05Fv = .text:0x800749D0; // type:function size:0x748
fn_80075120 = .text:0x80075120; // type:function size:0x14
fn_80075140 = .text:0x80075140; // type:function size:0x14
fn_80075160 = .text:0x80075160; // type:function size:0x78
fn_800751E0 = .text:0x800751E0; // type:function size:0x3C4
fn_800755B0 = .text:0x800755B0; // type:function size:0xAE8
fn_800760A0 = .text:0x800760A0; // type:function size:0x1BD4
fn_80077C80 = .text:0x80077C80; // type:function size:0x2EC
fn_80077F70 = .text:0x80077F70; // type:function size:0x2D0
fn_80078240 = .text:0x80078240; // type:function size:0x2F4
fn_80078540 = .text:0x80078540; // type:function size:0x13C
fn_80078680 = .text:0x80078680; // type:function size:0x2E4
fn_80078970 = .text:0x80078970; // type:function size:0x954
init__19GameCameraHandler06Fv = .text:0x800751E0; // type:function size:0x3C4
vt_0x0C__19GameCameraHandler06Fv = .text:0x800755B0; // type:function size:0xAE8
vt_0x10__19GameCameraHandler06Fv = .text:0x800760A0; // type:function size:0x1BD4
init__19GameCameraHandler07Fv = .text:0x80077C80; // type:function size:0x2EC
vt_0x0C__19GameCameraHandler07Fv = .text:0x80077F70; // type:function size:0x2D0
vt_0x10__19GameCameraHandler07Fv = .text:0x80078240; // type:function size:0x2F4
init__19GameCameraHandler08Fv = .text:0x80078540; // type:function size:0x13C
vt_0x0C__19GameCameraHandler08Fv = .text:0x80078680; // type:function size:0x2E4
vt_0x10__19GameCameraHandler08Fv = .text:0x80078970; // type:function size:0x954
fn_800792D0 = .text:0x800792D0; // type:function size:0x254
fn_80079530 = .text:0x80079530; // type:function size:0x28C
fn_800797C0 = .text:0x800797C0; // type:function size:0x56C
fn_80079D30 = .text:0x80079D30; // type:function size:0x1128
fn_8007AE60 = .text:0x8007AE60; // type:function size:0x34
fn_8007AEA0 = .text:0x8007AEA0; // type:function size:0x8
fn_8007AEB0 = .text:0x8007AEB0; // type:function size:0x10
init__19GameCameraHandler09Fv = .text:0x80079530; // type:function size:0x28C
vt_0x0C__19GameCameraHandler09Fv = .text:0x800797C0; // type:function size:0x56C
vt_0x10__19GameCameraHandler09Fv = .text:0x80079D30; // type:function size:0x1128
init__19GameCameraHandler10Fv = .text:0x8007AE60; // type:function size:0x34
vt_0x0C__19GameCameraHandler10Fv = .text:0x8007AEA0; // type:function size:0x8
vt_0x10__19GameCameraHandler10Fv = .text:0x8007AEB0; // type:function size:0x10
fn_8007AEC0 = .text:0x8007AEC0; // type:function size:0xFC
fn_8007AFC0 = .text:0x8007AFC0; // type:function size:0x2E8
fn_8007B2B0 = .text:0x8007B2B0; // type:function size:0x684
fn_8007B940 = .text:0x8007B940; // type:function size:0x17CC
fn_8007D110 = .text:0x8007D110; // type:function size:0xAC
fn_8007D1C0 = .text:0x8007D1C0; // type:function size:0xADC
fn_8007DCA0 = .text:0x8007DCA0; // type:function size:0xE8
fn_8007DD90 = .text:0x8007DD90; // type:function size:0x10
fn_8007DDA0 = .text:0x8007DDA0; // type:function size:0x30
fn_8007DDD0 = .text:0x8007DDD0; // type:function size:0x33C
fn_8007E110 = .text:0x8007E110; // type:function size:0x4
fn_8007E120 = .text:0x8007E120; // type:function size:0x4
fn_8007E130 = .text:0x8007E130; // type:function size:0x7C
fn_8007E1B0 = .text:0x8007E1B0; // type:function size:0x51C
fn_8007E6D0 = .text:0x8007E6D0; // type:function size:0x1CC
fn_8007E8A0 = .text:0x8007E8A0; // type:function size:0x230
fn_8007EAD0 = .text:0x8007EAD0; // type:function size:0x75C
fn_8007F230 = .text:0x8007F230; // type:function size:0x94
fn_8007F2D0 = .text:0x8007F2D0; // type:function size:0x38
fn_8007F310 = .text:0x8007F310; // type:function size:0x1EC
fn_8007F500 = .text:0x8007F500; // type:function size:0xF4
fn_8007F600 = .text:0x8007F600; // type:function size:0x34
fn_8007F640 = .text:0x8007F640; // type:function size:0x70
fn_8007F6B0 = .text:0x8007F6B0; // type:function size:0x130
fn_8007F7E0 = .text:0x8007F7E0; // type:function size:0x384
fn_8007FB70 = .text:0x8007FB70; // type:function size:0x168
fn_8007FCE0 = .text:0x8007FCE0; // type:function size:0x128
fn_8007FE10 = .text:0x8007FE10; // type:function size:0x268
init__19GameCameraHandler11Fv = .text:0x8007AFC0; // type:function size:0x2E8
vt_0x0C__19GameCameraHandler11Fv = .text:0x8007B2B0; // type:function size:0x684
vt_0x10__19GameCameraHandler11Fv = .text:0x8007B940; // type:function size:0x17CC
init__19GameCameraHandler12Fv = .text:0x8007D110; // type:function size:0xAC
vt_0x10__19GameCameraHandler12Fv = .text:0x8007D1C0; // type:function size:0xADC
loadStyle__8CamStyleFUs = .text:0x8007DCA0; // type:function size:0xE8
getFloat__8CamStyleCFl = .text:0x8007DD90; // type:function size:0x10
getFlag__8CamStyleCFl = .text:0x8007DDA0; // type:function size:0x30
__ct__17dCameraGame_HIO_cFv = .text:0x8007DDD0; // type:function size:0x33C
create__17dCameraGame_HIO_cFv = .text:0x8007E110; // type:function size:0x4
remove__17dCameraGame_HIO_cFv = .text:0x8007E120; // type:function size:0x4
fn_8007E130__12UnkCamChecksFP13dCameraGame_c = .text:0x8007E130; // type:function size:0x7C
fn_8007E1B0__12UnkCamChecksFP12dAcObjBase_c = .text:0x8007E1B0; // type:function size:0x51C
__ct__13dCameraGame_cFv = .text:0x8007E6D0; // type:function size:0x1CC
create__13dCameraGame_cFv = .text:0x8007E8A0; // type:function size:0x230
execute__13dCameraGame_cFv = .text:0x8007EAD0; // type:function size:0x75C
chkCamera__FR7mVec3_cR7mVec3_cP12dAcObjBase_c = .text:0x8007F230; // type:function size:0x94
chkCo__FRC7mVec3_c = .text:0x8007F2D0; // type:function size:0x38
chkCameraPoint__FRC7mVec3_cRC7mVec3_cR7mVec3_cP12dAcObjBase_c = .text:0x8007F310; // type:function size:0x1EC
linCrossAttentionTarget__FRC7mVec3_cRC7mVec3_cR11dBgS_LinChki = .text:0x8007F500; // type:function size:0xF4
linCross__FR11dBgS_LinChki = .text:0x8007F600; // type:function size:0x34
linCrossAttentionTarget__FRC7mVec3_cRC7mVec3_ci = .text:0x8007F640; // type:function size:0x70
linCrossAttentionTarget__FRC7mVec3_cRC7mVec3_cR7mVec3_c = .text:0x8007F6B0; // type:function size:0x130
unkCamLineChk__FR14dBgS_CamLinChkR14dBgS_CamLinChkUl = .text:0x8007F7E0; // type:function size:0x384
unkCamCallback1__FP11dBgS_SphChkP10cBgD_Vtx_tiiiP8cM3dGPlaPv = .text:0x8007FB70; // type:function size:0x168
unkCamCallback2__FP11dBgS_SphChkP10cBgD_Vtx_tiiiP8cM3dGPlaPv = .text:0x8007FCE0; // type:function size:0x128
fn_8007FE10__FR7mVec3_cR7mVec3_cR7mVec3_cf = .text:0x8007FE10; // type:function size:0x268
fn_80080080 = .text:0x80080080; // type:function size:0x10
fn_80080090 = .text:0x80080090; // type:function size:0x86C
fn_80080900 = .text:0x80080900; // type:function size:0x8
RemoveCameraParamData = .text:0x80080910; // type:function size:0x44
fn_80080960 = .text:0x80080960; // type:function size:0x118
fn_80080A80 = .text:0x80080A80; // type:function size:0x6C
fn_80080AF0 = .text:0x80080AF0; // type:function size:0x10
fn_80080B00 = .text:0x80080B00; // type:function size:0x6C
fn_80080B70 = .text:0x80080B70; // type:function size:0x220
draw__13dCameraGame_cFv = .text:0x80080900; // type:function size:0x8
remove__13dCameraGame_cFv = .text:0x80080910; // type:function size:0x44
overrideCam__13dCameraGame_cFllsb = .text:0x80080960; // type:function size:0x118
setCam__13dCameraGame_cFss = .text:0x80080A80; // type:function size:0x6C
setCam__13dCameraGame_cFRC5CamId = .text:0x80080AF0; // type:function size:0x10
clearCamIds__13dCameraGame_cFv = .text:0x80080B00; // type:function size:0x6C
getCamId__13dCameraGame_cFv = .text:0x80080B70; // type:function size:0x220
fn_80080D90 = .text:0x80080D90; // type:function size:0x7C8
getNewStyle = .text:0x80081560; // type:function size:0x34
getNewMode = .text:0x800815A0; // type:function size:0x440
@@ -3177,23 +3177,23 @@ fn_800819E0 = .text:0x800819E0; // type:function size:0x244
fn_80081C30 = .text:0x80081C30; // type:function size:0x25C
doModeChange = .text:0x80081E90; // type:function size:0xEC
doStyleChange = .text:0x80081F80; // type:function size:0x58
fn_80081FE0 = .text:0x80081FE0; // type:function size:0x40
fn_80082020 = .text:0x80082020; // type:function size:0xB4
fn_800820E0 = .text:0x800820E0; // type:function size:0xC8
fn_800821B0 = .text:0x800821B0; // type:function size:0xC0
isCurrentTrend__13dCameraGame_cCFPCc = .text:0x80081FE0; // type:function size:0x40
setView__13dCameraGame_cFRC7CamView = .text:0x80082020; // type:function size:0xB4
onBecomeActive__13dCameraGame_cFv = .text:0x800820E0; // type:function size:0xC8
onBecomeInactive__13dCameraGame_cFv = .text:0x800821B0; // type:function size:0xC0
fn_80082270 = .text:0x80082270; // type:function size:0x44
fn_800822C0 = .text:0x800822C0; // type:function size:0x10
fn_800822D0 = .text:0x800822D0; // type:function size:0x24
fn_80082300 = .text:0x80082300; // type:function size:0xC
fn_80082310 = .text:0x80082310; // type:function size:0xB0
fn_800823C0 = .text:0x800823C0; // type:function size:0xCF8
fn_800830C0 = .text:0x800830C0; // type:function size:0x60
fn_80083120 = .text:0x80083120; // type:function size:0x60
fn_80083180 = .text:0x80083180; // type:function size:0x60
fn_800831E0 = .text:0x800831E0; // type:function size:0x70
fn_80083250 = .text:0x80083250; // type:function size:0x60
fn_800832B0 = .text:0x800832B0; // type:function size:0x60
fn_80083310 = .text:0x80083310; // type:function size:0x60
__dt__13dCameraGame_cFv = .text:0x80082310; // type:function size:0xB0
__sinit_\d_camera_game_cpp = .text:0x800823C0; // type:function size:0xCF8
__dt__19GameCameraHandler06Fv = .text:0x800830C0; // type:function size:0x60
__dt__19GameCameraHandler08Fv = .text:0x80083120; // type:function size:0x60
__dt__19GameCameraHandler02Fv = .text:0x80083180; // type:function size:0x60
__dt__19GameCameraHandler03Fv = .text:0x800831E0; // type:function size:0x70
__dt__19GameCameraHandler05Fv = .text:0x80083250; // type:function size:0x60
__dt__19GameCameraHandler07Fv = .text:0x800832B0; // type:function size:0x60
__dt__19GameCameraHandler11Fv = .text:0x80083310; // type:function size:0x60
debugPrintf = .text:0x80083370; // type:function size:0x50
debugErrorf = .text:0x800833C0; // type:function size:0x50
debugPrintMaybe = .text:0x80083410; // type:function size:0x54
@@ -3201,8 +3201,8 @@ getActorName = .text:0x80083470; // type:function size:0x8
fn_80083480 = .text:0x80083480; // type:function size:0x14
fn_800834A0 = .text:0x800834A0; // type:function size:0x4
fn_800834B0 = .text:0x800834B0; // type:function size:0x8
fn_800834C0 = .text:0x800834C0; // type:function size:0x40
fn_80083500 = .text:0x80083500; // type:function size:0x28
__dt__18dCameraEvent_HIO_cFv = .text:0x800834C0; // type:function size:0x40
__ct__18dCameraEvent_HIO_cFv = .text:0x80083500; // type:function size:0x28
fn_80083530 = .text:0x80083530; // type:function size:0xD4
getEventDZevDat = .text:0x80083610; // type:function size:0xC
fn_80083620 = .text:0x80083620; // type:function size:0x4
@@ -3226,7 +3226,7 @@ fn_80084060 = .text:0x80084060; // type:function size:0xBC
fn_80084120 = .text:0x80084120; // type:function size:0x10A8
fn_800851D0 = .text:0x800851D0; // type:function size:0x49C
fn_80085670 = .text:0x80085670; // type:function size:0x1414
fn_80086A90 = .text:0x80086A90; // type:function size:0x30
__ct__7CamViewFv = .text:0x80086A90; // type:function size:0x30
fn_80086AC0 = .text:0x80086AC0; // type:function size:0xC80
fn_80087740 = .text:0x80087740; // type:function size:0x8
fn_80087750 = .text:0x80087750; // type:function size:0x128
@@ -3277,12 +3277,12 @@ fn_80090AD0 = .text:0x80090AD0; // type:function size:0x48C
fn_80090F60 = .text:0x80090F60; // type:function size:0x360
fn_800912C0 = .text:0x800912C0; // type:function size:0x244
getEventSubMgrDefForIndex = .text:0x80091510; // type:function size:0x30
fn_80091540 = .text:0x80091540; // type:function size:0xD0
__ct__14dCameraEvent_cFv = .text:0x80091540; // type:function size:0xD0
fn_80091610 = .text:0x80091610; // type:function size:0xC4
fn_800916E0 = .text:0x800916E0; // type:function size:0x8
advanceCameraRelatedEventSubmanagers = .text:0x800916F0; // type:function size:0x134
fn_80091830 = .text:0x80091830; // type:function size:0xA8
fn_800918E0 = .text:0x800918E0; // type:function size:0xA8
fn_800918E0__14dCameraEvent_cFls = .text:0x800918E0; // type:function size:0xA8
fn_80091990 = .text:0x80091990; // type:function size:0xF4
fn_80091A90 = .text:0x80091A90; // type:function size:0x44
fn_80091AE0 = .text:0x80091AE0; // type:function size:0xA4
@@ -3290,7 +3290,7 @@ fn_80091B90 = .text:0x80091B90; // type:function size:0x8C
fn_80091C20 = .text:0x80091C20; // type:function size:0x8
fn_80091C30 = .text:0x80091C30; // type:function size:0x74
fn_80091CB0 = .text:0x80091CB0; // type:function size:0x40
initEventRelocationStuff = .text:0x80091CF0; // type:function size:0x6A4
__sinit_\d_camera_event_cpp = .text:0x80091CF0; // type:function size:0x6A4
ActorReference__ActorReference = .text:0x800923A0; // type:function size:0x14
EventSystemActorRelation__EventSystemActorRelation = .text:0x800923C0; // type:function size:0x44
EventSystemActorRelation____dt = .text:0x80092410; // type:function size:0x60
@@ -3304,31 +3304,31 @@ fn_80092730 = .text:0x80092730; // type:function size:0x60
fn_80092790 = .text:0x80092790; // type:function size:0x60
fn_800927F0 = .text:0x800927F0; // type:function size:0xA0
fn_80092890 = .text:0x80092890; // type:function size:0x60
fn_800928F0 = .text:0x800928F0; // type:function size:0x40
fn_80092930 = .text:0x80092930; // type:function size:0x88
fn_800929C0 = .text:0x800929C0; // type:function size:0x1BC
fn_80092B80 = .text:0x80092B80; // type:function size:0x138
fn_80092CC0 = .text:0x80092CC0; // type:function size:0x50
fn_80092D10 = .text:0x80092D10; // type:function size:0x170
fn_80092E80 = .text:0x80092E80; // type:function size:0x8
fn_80092E90 = .text:0x80092E90; // type:function size:0x430
fn_800932C0 = .text:0x800932C0; // type:function size:0x8
fn_800932D0 = .text:0x800932D0; // type:function size:0x8
fn_800932E0 = .text:0x800932E0; // type:function size:0x8
fn_800932F0 = .text:0x800932F0; // type:function size:0x4C
fn_80093340 = .text:0x80093340; // type:function size:0x14
fn_80093360 = .text:0x80093360; // type:function size:0x18
fn_80093380 = .text:0x80093380; // type:function size:0x18
fn_800933A0 = .text:0x800933A0; // type:function size:0x64
fn_80093410 = .text:0x80093410; // type:function size:0x40
fn_80093450 = .text:0x80093450; // type:function size:0xC
fn_80093460 = .text:0x80093460; // type:function size:0x18C
fn_800935F0 = .text:0x800935F0; // type:function size:0xD8
fn_800936D0 = .text:0x800936D0; // type:function size:0xF4
fn_800937D0 = .text:0x800937D0; // type:function size:0x98
fn_80093870 = .text:0x80093870; // type:function size:0xA4
fn_80093920 = .text:0x80093920; // type:function size:0xA4
fn_800939D0 = .text:0x800939D0; // type:function size:0xA4
__dt__16dCameraMap_HIO_cFv = .text:0x800928F0; // type:function size:0x40
__ct__16dCameraMap_HIO_cFv = .text:0x80092930; // type:function size:0x88
fn_800929C0__FRC7mVec3_cRC7mVec3_cP12dAcObjBase_c = .text:0x800929C0; // type:function size:0x1BC
onBecomeActive__12dCameraMap_cFv = .text:0x80092B80; // type:function size:0x138
onBecomeInactive__12dCameraMap_cFv = .text:0x80092CC0; // type:function size:0x50
create__12dCameraMap_cFv = .text:0x80092D10; // type:function size:0x170
remove__12dCameraMap_cFv = .text:0x80092E80; // type:function size:0x8
execute__12dCameraMap_cFv = .text:0x80092E90; // type:function size:0x430
vt_0x34__12dCameraMap_cFv = .text:0x800932C0; // type:function size:0x8
draw__12dCameraMap_cFv = .text:0x800932D0; // type:function size:0x8
isActiveOrAnimating__12dCameraMap_cCFv = .text:0x800932E0; // type:function size:0x8
startOut__12dCameraMap_cFv = .text:0x800932F0; // type:function size:0x4C
fn_80093340__12dCameraMap_cFv = .text:0x80093340; // type:function size:0x14
setNoCameraTransition__12dCameraMap_cFv = .text:0x80093360; // type:function size:0x18
setCameraTransition__12dCameraMap_cFv = .text:0x80093380; // type:function size:0x18
setView__12dCameraMap_cFRC7CamView = .text:0x800933A0; // type:function size:0x64
__dt__12dCameraMap_cFv = .text:0x80093410; // type:function size:0x40 scope:weak
__sinit_\d_camera_map_cpp = .text:0x80093450; // type:function size:0xC scope:local
camEaseIn__Fff = .text:0x80093460; // type:function size:0x18C
camEaseInOut__Fff = .text:0x800935F0; // type:function size:0xD8
camGetPointOnLine__FRC7mVec3_cRC7mVec3_cRC7mVec3_c = .text:0x800936D0; // type:function size:0xF4
camOffsetPoint__FP12dAcObjBase_cRC7mVec3_c = .text:0x800937D0; // type:function size:0x98
camOffsetPoint__FP12dAcObjBase_cRC7mVec3_cRC7mAng3_c = .text:0x80093870; // type:function size:0xA4
camPointToLocal__FP12dAcObjBase_cRC7mVec3_c = .text:0x80093920; // type:function size:0xA4
camPointToLocal__FP12dAcObjBase_cRC7mVec3_cRC7mAng3_c = .text:0x800939D0; // type:function size:0xA4
getPosCopy3__FRC12dAcObjBase_c = .text:0x80093A80; // type:function size:0x1C
__dt__16dAttention_HIO_cFv = .text:0x80093AA0; // type:function size:0x40
init__16dAttention_HIO_cFv = .text:0x80093AE0; // type:function size:0x4
@@ -3510,7 +3510,7 @@ fn_8009C8E0 = .text:0x8009C8E0; // type:function size:0x10
fn_8009C8F0 = .text:0x8009C8F0; // type:function size:0x8
EventRelocTable__processAdvancement2 = .text:0x8009C900; // type:function size:0x4
__ct__17ActorEventRelatedFR9dAcBase_cPv = .text:0x8009C910; // type:function size:0x70
fn_8009C980 = .text:0x8009C980; // type:function size:0x70
__ct__17ActorEventRelatedFiPv = .text:0x8009C980; // type:function size:0x70
__dt__17ActorEventRelatedFv = .text:0x8009C9F0; // type:function size:0x70
fn_8009CA60 = .text:0x8009CA60; // type:function size:0x4C
fn_8009CAB0 = .text:0x8009CAB0; // type:function size:0x44
@@ -7850,7 +7850,7 @@ canCenterCursor1__13dLytMapMain_cCFl = .text:0x8013AC00; // type:function size:0
setCursorType__13dLytMapMain_cFv = .text:0x8013AC10; // type:function size:0x138
fn_8013AD50__13dLytMapMain_cFv = .text:0x8013AD50; // type:function size:0x370
calculateBoundingWorldHitboxes__13dLytMapMain_cFv = .text:0x8013B0C0; // type:function size:0x28C
fn_8013B350 = .text:0x8013B350; // type:function size:0x10
fn_8013B350__13dLytMapMain_cFv = .text:0x8013B350; // type:function size:0x10
initializeState_Invisible__13dLytMapMain_cFv = .text:0x8013B360; // type:function size:0x4
executeState_Invisible__13dLytMapMain_cFv = .text:0x8013B370; // type:function size:0x4
finalizeState_Invisible__13dLytMapMain_cFv = .text:0x8013B380; // type:function size:0x4
@@ -10544,8 +10544,8 @@ fn_80198D70 = .text:0x80198D70; // type:function size:0x14
StageManager__init2 = .text:0x80198D90; // type:function size:0x25C
changeState__80sStateMgr_c<11dStageMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x80198FF0; // type:function size:0x10
fn_80199000 = .text:0x80199000; // type:function size:0x110
fn_80199110 = .text:0x80199110; // type:function size:0x8
fn_80199120 = .text:0x80199120; // type:function size:0x10
getCamera__11dStageMgr_cFl = .text:0x80199110; // type:function size:0x8
getScreen__11dStageMgr_cFl = .text:0x80199120; // type:function size:0x10
addObjId__11dStageMgr_cFUs = .text:0x80199130; // type:function size:0x8
addStageArcn__11dStageMgr_cFPCc = .text:0x80199140; // type:function size:0x8
addActorId__11dStageMgr_cFUs = .text:0x80199150; // type:function size:0x8
@@ -10588,7 +10588,7 @@ fn_8019A010 = .text:0x8019A010; // type:function size:0xC
fn_8019A020 = .text:0x8019A020; // type:function size:0xC
fn_8019A030 = .text:0x8019A030; // type:function size:0x1C
fn_8019A050 = .text:0x8019A050; // type:function size:0x1C
fn_8019A070 = .text:0x8019A070; // type:function size:0x30
setGlobalAlpha__11dStageMgr_cFUc = .text:0x8019A070; // type:function size:0x30
getGlobalAlpha__11dStageMgr_cCFv = .text:0x8019A0A0; // type:function size:0x20
fn_8019A0C0 = .text:0x8019A0C0; // type:function size:0x2C8
fn_8019A390 = .text:0x8019A390; // type:function size:0x44
@@ -10701,47 +10701,47 @@ AcLast__destroy = .text:0x8019D050; // type:function size:0x8
AcLast__update = .text:0x8019D060; // type:function size:0x5C
AcLast__draw = .text:0x8019D0C0; // type:function size:0x38
AcLast__dtor = .text:0x8019D100; // type:function size:0x5C
fn_8019D160 = .text:0x8019D160; // type:function size:0x40
fn_8019D1A0 = .text:0x8019D1A0; // type:function size:0x6C
dCamera__ctor = .text:0x8019D210; // type:function size:0x30
dCamera__ctorCont = .text:0x8019D240; // type:function size:0x234
dCamera__init = .text:0x8019D480; // type:function size:0x248
debugWarn2 = .text:0x8019D6D0; // type:function size:0x50
debugPrintf7 = .text:0x8019D720; // type:function size:0x50
fn_8019D770 = .text:0x8019D770; // type:function size:0x78
fn_8019D7F0 = .text:0x8019D7F0; // type:function size:0xA0
fn_8019D890 = .text:0x8019D890; // type:function size:0x2E8
fn_8019DB80 = .text:0x8019DB80; // type:function size:0x158
fn_8019DCE0 = .text:0x8019DCE0; // type:function size:0x140
fn_8019DE20 = .text:0x8019DE20; // type:function size:0x3C
__dt__13dCamera_HIO_cFv = .text:0x8019D160; // type:function size:0x40
__ct__13dCamera_HIO_cFv = .text:0x8019D1A0; // type:function size:0x6C
dCamera_c_classInit__Fv = .text:0x8019D210; // type:function size:0x30
__ct__9dCamera_cFv = .text:0x8019D240; // type:function size:0x234
create__9dCamera_cFv = .text:0x8019D480; // type:function size:0x248
debugWarn2__FPCce = .text:0x8019D6D0; // type:function size:0x50
debugPrintf7__FPCce = .text:0x8019D720; // type:function size:0x50
doDelete__9dCamera_cFv = .text:0x8019D770; // type:function size:0x78
setWorldOffset__9dCamera_cFff = .text:0x8019D7F0; // type:function size:0xA0
execute__9dCamera_cFv = .text:0x8019D890; // type:function size:0x2E8
checkCameraChange__9dCamera_cFv = .text:0x8019DB80; // type:function size:0x158
updateView__9dCamera_cFv = .text:0x8019DCE0; // type:function size:0x140
draw__9dCamera_cFv = .text:0x8019DE20; // type:function size:0x3C
isUnderwater__9dCamera_cCFv = .text:0x8019DE60; // type:function size:0xC
fn_8019DE70 = .text:0x8019DE70; // type:function size:0x2A4
fn_8019E120 = .text:0x8019E120; // type:function size:0xC4
fn_8019E1F0 = .text:0x8019E1F0; // type:function size:0x10
fn_8019E200 = .text:0x8019E200; // type:function size:0x18C
fn_8019E390 = .text:0x8019E390; // type:function size:0xC
apply__9dCamera_cFv = .text:0x8019DE70; // type:function size:0x2A4
setActiveCamera__9dCamera_cFl = .text:0x8019E120; // type:function size:0xC4
getEventLetterboxAmount__9dCamera_cFv = .text:0x8019E1F0; // type:function size:0x10
setFrustum__9dCamera_cFfff = .text:0x8019E200; // type:function size:0x18C
getYAngle__9dCamera_cCFv = .text:0x8019E390; // type:function size:0xC
getYRot__9dCamera_cCFv = .text:0x8019E3A0; // type:function size:0x8
fn_8019E3B0__9dCamera_cCFv = .text:0x8019E3B0; // type:function size:0xC
fn_8019E3C0 = .text:0x8019E3C0; // type:function size:0x44
fn_8019E410__9dCamera_cFv = .text:0x8019E410; // type:function size:0x1C
fn_8019E430__9dCamera_cFv = .text:0x8019E430; // type:function size:0x18
fn_8019E450 = .text:0x8019E450; // type:function size:0x7C
fn_8019E4D0 = .text:0x8019E4D0; // type:function size:0x5C
fn_8019E530 = .text:0x8019E530; // type:function size:0x130
fn_8019E660 = .text:0x8019E660; // type:function size:0x8
getXZAngle__9dCamera_cCFv = .text:0x8019E3B0; // type:function size:0xC
fn_8019E3C0__9dCamera_cCFv = .text:0x8019E3C0; // type:function size:0x44
enterMap__9dCamera_cFv = .text:0x8019E410; // type:function size:0x1C
leaveMap__9dCamera_cFv = .text:0x8019E430; // type:function size:0x18
applyTilt__9dCamera_cFv = .text:0x8019E450; // type:function size:0x7C
fn_8019E4D0__9dCamera_cCFv = .text:0x8019E4D0; // type:function size:0x5C
updateUnderwaterDepth__9dCamera_cFRC7mVec3_c = .text:0x8019E530; // type:function size:0x130
isUnderwater___9dCamera_cCFv = .text:0x8019E660; // type:function size:0x8
getUnderwaterDepth__9dCamera_cCFv = .text:0x8019E670; // type:function size:0x8
fn_8019E680 = .text:0x8019E680; // type:function size:0x1D8
fn_8019E860 = .text:0x8019E860; // type:function size:0x1C
fn_8019E880 = .text:0x8019E880; // type:function size:0x8
fn_8019E890 = .text:0x8019E890; // type:function size:0x40
fn_8019E8D0 = .text:0x8019E8D0; // type:function size:0x54
fn_8019E930 = .text:0x8019E930; // type:function size:0xC
fn_8019E940 = .text:0x8019E940; // type:function size:0xC0
fn_8019EA00__9dCamera_cFRC7mVec3_cRC7mVec3_cff = .text:0x8019EA00; // type:function size:0x70
execute__Q29dCamera_c13screen_shakerFv = .text:0x8019E680; // type:function size:0x1D8
getShakeOffset__Q29dCamera_c13screen_shakerCFv = .text:0x8019E860; // type:function size:0x1C
setCamera__Q29dCamera_c11substruct_1FP9dCamera_c = .text:0x8019E880; // type:function size:0x8
fn_8019E890__Q29dCamera_c11substruct_1Fv = .text:0x8019E890; // type:function size:0x40
fn_8019E8D0__Q29dCamera_c11substruct_1FRC4mAng = .text:0x8019E8D0; // type:function size:0x54
fn_8019E930__Q29dCamera_c11substruct_1CFv = .text:0x8019E930; // type:function size:0xC
fn_8019E940__Q29dCamera_c11substruct_1Fv = .text:0x8019E940; // type:function size:0xC0
setEventCamView__9dCamera_cFRC7mVec3_cRC7mVec3_cff = .text:0x8019EA00; // type:function size:0x70
fn_8019EA70__9dCamera_cFb = .text:0x8019EA70; // type:function size:0x11C
fn_8019EB90 = .text:0x8019EB90; // type:function size:0xC
fn_8019EBA0 = .text:0x8019EBA0; // type:function size:0x160
fn_8019ED00 = .text:0x8019ED00; // type:function size:0xC
fn_8019EB90__9dCamera_cFv = .text:0x8019EB90; // type:function size:0xC
__dt__9dCamera_cFv = .text:0x8019EBA0; // type:function size:0x160 scope:weak
__sinit_\d_camera_cpp = .text:0x8019ED00; // type:function size:0xC scope:local
GetInstance__11dObjLight_cFv = .text:0x8019ED10; // type:function size:0x8
ObjLight__ctor = .text:0x8019ED20; // type:function size:0x30
spawnLightObject = .text:0x8019ED50; // type:function size:0x40
@@ -11183,11 +11183,11 @@ setSpawnData__12SpawnInfoExtFPCcUcUcUcRC7mVec3_c4mAng = .text:0x801BB2F0; // typ
set__14LinkReloadInfoFUcRC7mVec3_c4mAngUl = .text:0x801BB380; // type:function size:0x34
isCurrentStage__9dScGame_cFPCc = .text:0x801BB3C0; // type:function size:0x10
isStageSkyloftLayer20__9dScGame_cFv = .text:0x801BB3D0; // type:function size:0x54
isInCredits = .text:0x801BB430; // type:function size:0x54
isStateLayerWithSeekerStoneHintMenu__9dScGame_cFv = .text:0x801BB490; // type:function size:0x78
isInCredits__9dScGame_cFv = .text:0x801BB430; // type:function size:0x54
isSeekerStoneStageAndLayer__9dScGame_cFv = .text:0x801BB490; // type:function size:0x78
copySpawnNextToCurrent__9dScGame_cFv = .text:0x801BB510; // type:function size:0xBC
actuallyTriggerEntrance__9dScGame_cFPCcUcUcUciiUcUsSc = .text:0x801BB5D0; // type:function size:0x104
setCamera = .text:0x801BB6E0; // type:function size:0x10
setCamera__9dScGame_cFlP9dCamera_c = .text:0x801BB6E0; // type:function size:0x10
getCamera__9dScGame_cFl = .text:0x801BB6F0; // type:function size:0x10
fn_801BB700 = .text:0x801BB700; // type:function size:0x4C
fn_801BB750 = .text:0x801BB750; // type:function size:0x4C
@@ -17804,7 +17804,7 @@ getStatus__12mFaderBase_cCFv = .text:0x802F0730; // type:function size:0x8
fadeIn__12mFaderBase_cFv = .text:0x802F0740; // type:function size:0x28
fadeOut__12mFaderBase_cFv = .text:0x802F0770; // type:function size:0x2C
calc__12mFaderBase_cFv = .text:0x802F07A0; // type:function size:0x7C
mFrustum_c__set = .text:0x802F0820; // type:function size:0xB8
set__10mFrustum_cFffffRC6mMtx_c = .text:0x802F0820; // type:function size:0xB8
set__10mFrustum_cFffffffRC6mMtx_cb = .text:0x802F08E0; // type:function size:0x370
fn_802F0C50 = .text:0x802F0C50; // type:function size:0x160
fn_802F0DB0 = .text:0x802F0DB0; // type:function size:0x8
@@ -17837,7 +17837,7 @@ XrotS__6mMtx_cFRC4mAng = .text:0x802F16B0; // type:function size:0xBC
XrotM__6mMtx_cFRC4mAng = .text:0x802F1770; // type:function size:0x4C
YrotS__6mMtx_cFRC4mAng = .text:0x802F17C0; // type:function size:0xBC
YrotM__6mMtx_cFRC4mAng = .text:0x802F1880; // type:function size:0x4C
ZrotS__6mMtx_cF4mAng = .text:0x802F18D0; // type:function size:0xBC
ZrotS__6mMtx_cFRC4mAng = .text:0x802F18D0; // type:function size:0xBC
ZrotM__6mMtx_cFRC4mAng = .text:0x802F1990; // type:function size:0x4C
ZXYrotS__6mMtx_cFRC4mAngRC4mAngRC4mAng = .text:0x802F19E0; // type:function size:0x60
ZXYrotM__6mMtx_cFRC4mAngRC4mAngRC4mAng = .text:0x802F1A40; // type:function size:0x60
@@ -19761,8 +19761,8 @@ CalcParticleAngle__4dCcSFP8cCcD_ObjP8cCcD_ObjP7mAng3_cb = .text:0x80356D20; // t
fn_80356fd0__4dCcSFP7mVec3_cP8cCcD_ObjP8cCcD_Obj = .text:0x80356FD0; // type:function size:0x184
ProcAtTgHitmark__4dCcSFP8cCcD_ObjP8cCcD_ObjP7mVec3_cUlP7mVec3_c = .text:0x80357160; // type:function size:0x21C
SetAtTgObjInf__4dCcSFbbP8cCcD_ObjP8cCcD_ObjP7mVec3_cb = .text:0x80357380; // type:function size:0x274
ChkCamera__4dCcSFR7mVec3_cR7mVec3_cP12dAcObjBase_cP12dAcObjBase_cP12dAcObjBase_cf = .text:0x80357600; // type:function size:0x1E8
ChkCameraPoint__4dCcSFRC7mVec3_cRC7mVec3_cR7mVec3_cP12dAcObjBase_cP12dAcObjBase_cP12dAcObjBase_cf = .text:0x803577F0; // type:function size:0x2D4
ChkCamera__4dCcSFR7mVec3_cR7mVec3_cfP12dAcObjBase_cP12dAcObjBase_cP12dAcObjBase_c = .text:0x80357600; // type:function size:0x1E8
ChkCameraPoint__4dCcSFRC7mVec3_cRC7mVec3_cR7mVec3_cfP12dAcObjBase_cP12dAcObjBase_cP12dAcObjBase_c = .text:0x803577F0; // type:function size:0x2D4
ChkCo__4dCcSFRC7mVec3_cP12dAcObjBase_c = .text:0x80357AD0; // type:function size:0x1B4
fn_80357c90__4dCcSFRC7mVec3_cRC7mVec3_cUlPPv = .text:0x80357C90; // type:function size:0x218
Set__4dCcSFP8cCcD_Obj = .text:0x80357EB0; // type:function size:0x13C
@@ -30925,7 +30925,7 @@ lbl_8050E678 = .data:0x8050E678; // type:object size:0x40
lbl_8050E6B8 = .data:0x8050E6B8; // type:object size:0x7C
lbl_8050E734 = .data:0x8050E734; // type:object size:0xA data:string
lbl_8050E740 = .data:0x8050E740; // type:object size:0xB data:string
lbl_8050E750 = .data:0x8050E750; // type:object size:0xD0
sCamDefs = .data:0x8050E750; // type:object size:0xD0
lbl_8050E820 = .data:0x8050E820; // type:object size:0xB data:string
lbl_8050E82C = .data:0x8050E82C; // type:object size:0xE data:string
lbl_8050E83C = .data:0x8050E83C; // type:object size:0x1D data:string
@@ -30933,10 +30933,23 @@ lbl_8050E85C = .data:0x8050E85C; // type:object size:0x16 data:string
lbl_8050E874 = .data:0x8050E874; // type:object size:0x15 data:string
lbl_8050E88C = .data:0x8050E88C; // type:object size:0x16 data:string
lbl_8050E8A4 = .data:0x8050E8A4; // type:object size:0xE data:string
lbl_8050E8B4 = .data:0x8050E8B4; // type:object size:0x110
lbl_8050E9C4 = .data:0x8050E9C4; // type:object size:0xC
lbl_8050E9D0 = .data:0x8050E9D0; // type:object size:0x34
lbl_8050EA04 = .data:0x8050EA04; // type:object size:0x14
lbl_8050E8B4 = .data:0x8050E8B4; // type:object size:0xA data:string
__vt__19GameCameraHandler12 = .data:0x8050E8C0; // type:object size:0x14
__vt__19GameCameraHandler11 = .data:0x8050E8D4; // type:object size:0x14
__vt__19GameCameraHandler10 = .data:0x8050E8E8; // type:object size:0x14
__vt__19GameCameraHandler09 = .data:0x8050E8FC; // type:object size:0x14
__vt__19GameCameraHandler08 = .data:0x8050E910; // type:object size:0x14
__vt__19GameCameraHandler07 = .data:0x8050E924; // type:object size:0x14
__vt__19GameCameraHandler06 = .data:0x8050E938; // type:object size:0x14
__vt__19GameCameraHandler05 = .data:0x8050E94C; // type:object size:0x14
__vt__19GameCameraHandler04 = .data:0x8050E960; // type:object size:0x14
__vt__19GameCameraHandler02 = .data:0x8050E974; // type:object size:0x14
__vt__19GameCameraHandler01 = .data:0x8050E988; // type:object size:0x14
__vt__19GameCameraHandler03 = .data:0x8050E99C; // type:object size:0x14
__vt__17GameCameraHandler = .data:0x8050E9B0; // type:object size:0x14
__vt__17dCameraGame_HIO_c = .data:0x8050E9C4; // type:object size:0xC
__vt__13dCameraGame_c = .data:0x8050E9D0; // type:object size:0x34
__vt__19GameCameraHandler00 = .data:0x8050EA04; // type:object size:0x14
lbl_8050EA18 = .data:0x8050EA18; // type:object size:0x13 data:string
lbl_8050EA2C = .data:0x8050EA2C; // type:object size:0x60
lbl_8050EA8C = .data:0x8050EA8C; // type:object size:0x54
@@ -30960,11 +30973,11 @@ lbl_8050EF88 = .data:0x8050EF88; // type:object size:0x31 data:string
lbl_8050EFBC = .data:0x8050EFBC; // type:object size:0x14 data:string
lbl_8050EFD0 = .data:0x8050EFD0; // type:object size:0x33 data:string
lbl_8050F004 = .data:0x8050F004; // type:object size:0x12C
lbl_8050F130 = .data:0x8050F130; // type:object size:0xC
lbl_8050F13C = .data:0x8050F13C; // type:object size:0x34
__vt__18dCameraEvent_HIO_c = .data:0x8050F130; // type:object size:0xC
__vt__14dCameraEvent_c = .data:0x8050F13C; // type:object size:0x34
lbl_8050F170 = .data:0x8050F170; // type:object size:0x10
lbl_8050F180 = .data:0x8050F180; // type:object size:0x10
lbl_8050F190 = .data:0x8050F190; // type:object size:0x38
__vt__16dCameraMap_HIO_c = .data:0x8050F180; // type:object size:0xC
__vt__12dCameraMap_c = .data:0x8050F190; // type:object size:0x38
lbl_8050F1C8 = .data:0x8050F1C8; // type:object size:0xA data:string
lbl_8050F1D4 = .data:0x8050F1D4; // type:object size:0x9 data:string
lbl_8050F1E0 = .data:0x8050F1E0; // type:object size:0x11 data:string
@@ -35626,12 +35639,12 @@ lbl_8052C0F0 = .data:0x8052C0F0; // type:object size:0x38
g_profile_LAST = .data:0x8052C128; // type:object size:0xC
AcLast__vtable = .data:0x8052C134; // type:object size:0x4C
g_profile_CAMERA = .data:0x8052C180; // type:object size:0xC
lbl_8052C18C = .data:0x8052C18C; // type:object size:0x1D data:string
lbl_8052C1AC = .data:0x8052C1AC; // type:object size:0xC data:string
lbl_8052C1B8 = .data:0x8052C1B8; // type:object size:0x9 data:string
lbl_8052C1C4 = .data:0x8052C1C4; // type:object size:0xE data:string
lbl_8052C1D4 = .data:0x8052C1D4; // type:object size:0xC
dCamera__vtable = .data:0x8052C1E0; // type:object size:0x50
@28488 = .data:0x8052C18C; // type:object size:0x1D scope:local data:string
@28490 = .data:0x8052C1AC; // type:object size:0xC scope:local data:string
@28503 = .data:0x8052C1B8; // type:object size:0x9 scope:local data:string
@28766 = .data:0x8052C1C4; // type:object size:0xE scope:local data:string
__vt__13dCamera_HIO_c = .data:0x8052C1D4; // type:object size:0xC
__vt__9dCamera_c = .data:0x8052C1E0; // type:object size:0x4C
g_profile_LIGHT_OBJECT = .data:0x8052C230; // type:object size:0xC
jumptable_8052C23C = .data:0x8052C23C; // type:object size:0x2C scope:local
jumptable_8052C268 = .data:0x8052C268; // type:object size:0x24 scope:local
@@ -40712,10 +40725,10 @@ lbl_80572E84 = .sdata:0x80572E84; // type:object size:0x5 data:string
lbl_80572E8C = .sdata:0x80572E8C; // type:object size:0x5 data:string
lbl_80572E94 = .sdata:0x80572E94; // type:object size:0x7 data:string
lbl_80572E9C = .sdata:0x80572E9C; // type:object size:0x4
lbl_80572EA0 = .sdata:0x80572EA0; // type:object size:0x4 data:4byte
lbl_80572EA4 = .sdata:0x80572EA4; // type:object size:0x4 data:4byte
lbl_80572EA8 = .sdata:0x80572EA8; // type:object size:0x5 data:string
lbl_80572EB0 = .sdata:0x80572EB0; // type:object size:0x8 data:string
@26678 = .sdata:0x80572EA0; // type:object size:0x4 scope:local data:4byte
@26679 = .sdata:0x80572EA4; // type:object size:0x4 scope:local data:4byte
@28489 = .sdata:0x80572EA8; // type:object size:0x5 scope:local data:string
@28606 = .sdata:0x80572EB0; // type:object size:0x8 scope:local data:string
lbl_80572EB8 = .sdata:0x80572EB8; // type:object size:0x5 data:string
lbl_80572EC0 = .sdata:0x80572EC0; // type:object size:0x5 data:string
lbl_80572EC8 = .sdata:0x80572EC8; // type:object size:0x6 data:string
@@ -42247,12 +42260,12 @@ lbl_80575338 = .sbss:0x80575338; // type:object size:0x4
lbl_8057533C = .sbss:0x8057533C; // type:object size:0x4 data:4byte
lbl_80575340 = .sbss:0x80575340; // type:object size:0x4 data:4byte
lbl_80575344 = .sbss:0x80575344; // type:object size:0x4 data:4byte
CAMERA_PARAMETER_DATA = .sbss:0x80575348; // type:object size:0x4 data:4byte
CAMERA_PARAM_FLOAT_START = .sbss:0x8057534C; // type:object size:0x4 data:4byte
CAMERA_PARAM_FLAG_START = .sbss:0x80575350; // type:object size:0x4 data:4byte
CAMERA_PARAM_STYLE_START = .sbss:0x80575354; // type:object size:0x4 data:4byte
CAMERA_PARAM_TREND_START = .sbss:0x80575358; // type:object size:0x4 data:4byte
CAM_STYLE_IDX_TA22 = .sbss:0x8057535C; // type:object size:0x4 data:4byte
sHeader__13dCameraGame_c = .sbss:0x80575348; // type:object size:0x4 data:4byte
sFloats__13dCameraGame_c = .sbss:0x8057534C; // type:object size:0x4 data:4byte
sFlags__13dCameraGame_c = .sbss:0x80575350; // type:object size:0x4 data:4byte
sStyles__13dCameraGame_c = .sbss:0x80575354; // type:object size:0x4 data:4byte
sTrends__13dCameraGame_c = .sbss:0x80575358; // type:object size:0x4 data:4byte
sStyleIdxes__13dCameraGame_c = .sbss:0x8057535C; // type:object size:0x4 data:4byte
GROOSENATOR_REF = .sbss:0x80575360; // type:object size:0x4 data:4byte
lbl_80575364 = .sbss:0x80575364; // type:object size:0x4 data:4byte
lbl_80575368 = .sbss:0x80575368; // type:object size:0x8 data:4byte
@@ -42401,7 +42414,7 @@ lbl_805756FE = .sbss:0x805756FE; // type:object size:0x1 data:byte
lbl_805756FF = .sbss:0x805756FF; // type:object size:0x1 data:byte
lbl_80575700 = .sbss:0x80575700; // type:object size:0x4 data:4byte
lbl_80575704 = .sbss:0x80575704; // type:object size:0x4 data:4byte
lbl_80575708 = .sbss:0x80575708; // type:object size:0x8 data:4byte
@LOCAL@execute__Q29dCamera_c13screen_shakerFv@upOrDown = .sbss:0x80575708; // type:object size:0x4 scope:local data:4byte
LIGHT_OBJECT = .sbss:0x80575710; // type:object size:0x4 data:4byte
lbl_80575714 = .sbss:0x80575714; // type:object size:0x1 data:byte
lbl_80575715 = .sbss:0x80575715; // type:object size:0x1 data:byte
@@ -45180,29 +45193,29 @@ lbl_80579528 = .sdata2:0x80579528; // type:object size:0x4 align:4 data:float
lbl_8057952C = .sdata2:0x8057952C; // type:object size:0x4 align:4 data:float
lbl_80579530 = .sdata2:0x80579530; // type:object size:0x4 align:4 data:float
lbl_80579534 = .sdata2:0x80579534; // type:object size:0x4 align:4 data:float
lbl_80579538 = .sdata2:0x80579538; // type:object size:0x4 align:4 data:float
lbl_8057953C = .sdata2:0x8057953C; // type:object size:0x4 align:4 data:float
lbl_80579540 = .sdata2:0x80579540; // type:object size:0x4 align:4 data:float
lbl_80579544 = .sdata2:0x80579544; // type:object size:0x4 align:4 data:float
lbl_80579548 = .sdata2:0x80579548; // type:object size:0x4 align:4 data:float
lbl_8057954C = .sdata2:0x8057954C; // type:object size:0x4 align:4 data:float
lbl_80579550 = .sdata2:0x80579550; // type:object size:0x4 align:4 data:float
lbl_80579554 = .sdata2:0x80579554; // type:object size:0x4 align:4 data:float
lbl_80579558 = .sdata2:0x80579558; // type:object size:0x4 align:4 data:float
lbl_8057955C = .sdata2:0x8057955C; // type:object size:0x4 align:4 data:float
lbl_80579560 = .sdata2:0x80579560; // type:object size:0x4 align:4 data:float
lbl_80579564 = .sdata2:0x80579564; // type:object size:0x4 align:4 data:float
lbl_80579568 = .sdata2:0x80579568; // type:object size:0x4 align:4 data:float
lbl_8057956C = .sdata2:0x8057956C; // type:object size:0x4 align:4 data:float
lbl_80579570 = .sdata2:0x80579570; // type:object size:0x4 align:4 data:float
lbl_80579574 = .sdata2:0x80579574; // type:object size:0x4 align:4 data:float
lbl_80579578 = .sdata2:0x80579578; // type:object size:0x4 align:4 data:float
lbl_8057957C = .sdata2:0x8057957C; // type:object size:0x4 align:4 data:float
lbl_80579580 = .sdata2:0x80579580; // type:object size:0x4 align:4 data:float
lbl_80579584 = .sdata2:0x80579584; // type:object size:0x4 align:4 data:float
lbl_80579588 = .sdata2:0x80579588; // type:object size:0x4 align:4 data:float
lbl_80579590 = .sdata2:0x80579590; // type:object size:0x8 align:8 data:double
lbl_80579598 = .sdata2:0x80579598; // type:object size:0x4 align:4 data:float
@28181 = .sdata2:0x80579538; // type:object size:0x4 scope:local align:4 data:float
@28182 = .sdata2:0x8057953C; // type:object size:0x4 scope:local align:4 data:float
@28183 = .sdata2:0x80579540; // type:object size:0x4 scope:local align:4 data:float
@28184 = .sdata2:0x80579544; // type:object size:0x4 scope:local align:4 data:float
@28185 = .sdata2:0x80579548; // type:object size:0x4 scope:local align:4 data:float
@28186 = .sdata2:0x8057954C; // type:object size:0x4 scope:local align:4 data:float
@28187 = .sdata2:0x80579550; // type:object size:0x4 scope:local align:4 data:float
@28188 = .sdata2:0x80579554; // type:object size:0x4 scope:local align:4 data:float
@28189 = .sdata2:0x80579558; // type:object size:0x4 scope:local align:4 data:float
@28190 = .sdata2:0x8057955C; // type:object size:0x4 scope:local align:4 data:float
@28191 = .sdata2:0x80579560; // type:object size:0x4 scope:local align:4 data:float
@28192 = .sdata2:0x80579564; // type:object size:0x4 scope:local align:4 data:float
@28243 = .sdata2:0x80579568; // type:object size:0x4 scope:local align:4 data:float
@28244 = .sdata2:0x8057956C; // type:object size:0x4 scope:local align:4 data:float
@28283 = .sdata2:0x80579570; // type:object size:0x4 scope:local align:4 data:float
@28337 = .sdata2:0x80579574; // type:object size:0x4 scope:local align:4 data:float
@28338 = .sdata2:0x80579578; // type:object size:0x4 scope:local align:4 data:float
@28339 = .sdata2:0x8057957C; // type:object size:0x4 scope:local align:4 data:float
@28340 = .sdata2:0x80579580; // type:object size:0x4 scope:local align:4 data:float
@28414 = .sdata2:0x80579584; // type:object size:0x4 scope:local align:4 data:float
@28415 = .sdata2:0x80579588; // type:object size:0x4 scope:local align:4 data:float
@28418 = .sdata2:0x80579590; // type:object size:0x8 scope:local align:8 data:double
@28432 = .sdata2:0x80579598; // type:object size:0x4 scope:local align:4 data:float
lbl_805795A0 = .sdata2:0x805795A0; // type:object size:0x8 align:8 data:double
lbl_805795A8 = .sdata2:0x805795A8; // type:object size:0x8 align:8 data:double
lbl_805795B0 = .sdata2:0x805795B0; // type:object size:0x4 align:4 data:float
@@ -47131,26 +47144,26 @@ lbl_8057AF3C = .sdata2:0x8057AF3C; // type:object size:0x4 align:4 data:float
lbl_8057AF40 = .sdata2:0x8057AF40; // type:object size:0x4 align:4 data:float
lbl_8057AF44 = .sdata2:0x8057AF44; // type:object size:0x4 align:4 data:float
lbl_8057AF48 = .sdata2:0x8057AF48; // type:object size:0x4 align:4 data:float
lbl_8057AF50 = .sdata2:0x8057AF50; // type:object size:0x4 align:4 data:float
lbl_8057AF54 = .sdata2:0x8057AF54; // type:object size:0x4 align:4 data:float
lbl_8057AF58 = .sdata2:0x8057AF58; // type:object size:0x4 align:4 data:float
lbl_8057AF5C = .sdata2:0x8057AF5C; // type:object size:0x4 align:4 data:float
lbl_8057AF60 = .sdata2:0x8057AF60; // type:object size:0x4 align:4 data:float
lbl_8057AF64 = .sdata2:0x8057AF64; // type:object size:0x4 align:4 data:float
lbl_8057AF68 = .sdata2:0x8057AF68; // type:object size:0x4 align:4 data:float
lbl_8057AF6C = .sdata2:0x8057AF6C; // type:object size:0x4 align:4 data:float
lbl_8057AF70 = .sdata2:0x8057AF70; // type:object size:0x4 align:4 data:float
lbl_8057AF74 = .sdata2:0x8057AF74; // type:object size:0x4 align:4 data:float
lbl_8057AF78 = .sdata2:0x8057AF78; // type:object size:0x4 align:4 data:float
lbl_8057AF80 = .sdata2:0x8057AF80; // type:object size:0x8 align:8 data:double
lbl_8057AF88 = .sdata2:0x8057AF88; // type:object size:0x4 align:4 data:float
lbl_8057AF8C = .sdata2:0x8057AF8C; // type:object size:0x4 align:4 data:float
lbl_8057AF90 = .sdata2:0x8057AF90; // type:object size:0x4 align:4 data:float
lbl_8057AF94 = .sdata2:0x8057AF94; // type:object size:0x4 align:4 data:float
lbl_8057AF98 = .sdata2:0x8057AF98; // type:object size:0x4 align:4 data:float
lbl_8057AF9C = .sdata2:0x8057AF9C; // type:object size:0x4 align:4 data:float
lbl_8057AFA0 = .sdata2:0x8057AFA0; // type:object size:0x4 align:4 data:float
lbl_8057AFA4 = .sdata2:0x8057AFA4; // type:object size:0x4 align:4 data:float
@28173 = .sdata2:0x8057AF50; // type:object size:0x4 scope:local align:4 data:float
@28174 = .sdata2:0x8057AF54; // type:object size:0x4 scope:local align:4 data:float
@28175 = .sdata2:0x8057AF58; // type:object size:0x4 scope:local align:4 data:float
@28176 = .sdata2:0x8057AF5C; // type:object size:0x4 scope:local align:4 data:float
@28177 = .sdata2:0x8057AF60; // type:object size:0x4 scope:local align:4 data:float
@28178 = .sdata2:0x8057AF64; // type:object size:0x4 scope:local align:4 data:float
@28383 = .sdata2:0x8057AF68; // type:object size:0x4 scope:local align:4 data:float
@28384 = .sdata2:0x8057AF6C; // type:object size:0x4 scope:local align:4 data:float
@28385 = .sdata2:0x8057AF70; // type:object size:0x4 scope:local align:4 data:float
@28568 = .sdata2:0x8057AF74; // type:object size:0x4 scope:local align:4 data:float
@28569 = .sdata2:0x8057AF78; // type:object size:0x4 scope:local align:4 data:float
@28572 = .sdata2:0x8057AF80; // type:object size:0x8 scope:local align:8 data:double
@28883 = .sdata2:0x8057AF88; // type:object size:0x4 scope:local align:4 data:float
@28884 = .sdata2:0x8057AF8C; // type:object size:0x4 scope:local align:4 data:float
@28885 = .sdata2:0x8057AF90; // type:object size:0x4 scope:local align:4 data:float
@28925 = .sdata2:0x8057AF94; // type:object size:0x4 scope:local align:4 data:float
@28926 = .sdata2:0x8057AF98; // type:object size:0x4 scope:local align:4 data:float
@28927 = .sdata2:0x8057AF9C; // type:object size:0x4 scope:local align:4 data:float
@28928 = .sdata2:0x8057AFA0; // type:object size:0x4 scope:local align:4 data:float
@28929 = .sdata2:0x8057AFA4; // type:object size:0x4 scope:local align:4 data:float
lbl_8057AFA8 = .sdata2:0x8057AFA8; // type:object size:0x4 align:4 data:float
lbl_8057AFAC = .sdata2:0x8057AFAC; // type:object size:0x4 align:4 data:float
lbl_8057AFB0 = .sdata2:0x8057AFB0; // type:object size:0x4 align:4 data:float
@@ -51242,35 +51255,51 @@ sRumblePreset10__9dRumble_c = .bss:0x805A07F0; // type:object size:0xC data:4byt
@LOCAL@start__9dRumble_cFRC14dRumbleEntry_cUl@rumble_string = .bss:0x805A0840; // type:object size:0x21 scope:local data:byte
@LOCAL@getCurrentStageDirectory__22CurrentStageArcManagerFv@sStageDirTmp = .bss:0x805A0868; // type:object size:0x40 scope:local data:byte
s_roomArcTmp = .bss:0x805A08A8; // type:object size:0x20 scope:local data:byte
lbl_805A08C8 = .bss:0x805A08C8; // type:object size:0x138 data:2byte
lbl_805A0A00 = .bss:0x805A0A00; // type:object size:0x28 data:byte
lbl_805A0A28 = .bss:0x805A0A28; // type:object size:0x28 data:byte
lbl_805A0A50 = .bss:0x805A0A50; // type:object size:0x28 data:byte
lbl_805A0A78 = .bss:0x805A0A78; // type:object size:0x28 data:byte
lbl_805A0AA0 = .bss:0x805A0AA0; // type:object size:0x28 data:byte
lbl_805A0AC8 = .bss:0x805A0AC8; // type:object size:0x28 data:byte
lbl_805A0AF0 = .bss:0x805A0AF0; // type:object size:0x28 data:byte
lbl_805A0B18 = .bss:0x805A0B18; // type:object size:0x28 data:byte
lbl_805A0B40 = .bss:0x805A0B40; // type:object size:0x28 data:byte
lbl_805A0B68 = .bss:0x805A0B68; // type:object size:0x28 data:byte
lbl_805A0B90 = .bss:0x805A0B90; // type:object size:0x28 data:byte
lbl_805A0BB8 = .bss:0x805A0BB8; // type:object size:0x28 data:byte
lbl_805A0BE0 = .bss:0x805A0BE0; // type:object size:0x28 data:byte
CAM_TREND_IDX_BalanceBall = .bss:0x805A0C08; // type:object size:0x90 data:4byte
lbl_805A0C98 = .bss:0x805A0C98; // type:object size:0x208 data:4byte
lbl_805A0EA0 = .bss:0x805A0EA0; // type:object size:0x28 data:byte
lbl_805A0EC8 = .bss:0x805A0EC8; // type:object size:0xD0 data:byte
lbl_805A0F98 = .bss:0x805A0F98; // type:object size:0x120 data:byte
lbl_805A10B8 = .bss:0x805A10B8; // type:object size:0xA8 data:byte
lbl_805A1160 = .bss:0x805A1160; // type:object size:0x84 data:byte
lbl_805A11E4 = .bss:0x805A11E4; // type:object size:0x9C data:byte
lbl_805A1280 = .bss:0x805A1280; // type:object size:0xC8 data:byte
lbl_805A1348 = .bss:0x805A1348; // type:object size:0x78 data:byte
lbl_805A13C0 = .bss:0x805A13C0; // type:object size:0xA0 data:byte
lbl_805A1460 = .bss:0x805A1460; // type:object size:0xA0 data:byte
lbl_805A1500 = .bss:0x805A1500; // type:object size:0x38 data:byte
lbl_805A1538 = .bss:0x805A1538; // type:object size:0xD8 data:byte
lbl_805A1610 = .bss:0x805A1610; // type:object size:0x50 data:byte
sHio = .bss:0x805A08C8; // type:object size:0x138 scope:local data:2byte
style00 = .bss:0x805A0A00; // type:object size:0x28 data:byte
style01 = .bss:0x805A0A28; // type:object size:0x28 data:byte
style02 = .bss:0x805A0A50; // type:object size:0x28 data:byte
style03 = .bss:0x805A0A78; // type:object size:0x28 data:byte
style04 = .bss:0x805A0AA0; // type:object size:0x28 data:byte
style05 = .bss:0x805A0AC8; // type:object size:0x28 data:byte
style06 = .bss:0x805A0AF0; // type:object size:0x28 data:byte
style07 = .bss:0x805A0B18; // type:object size:0x28 data:byte
style08 = .bss:0x805A0B40; // type:object size:0x28 data:byte
style09 = .bss:0x805A0B68; // type:object size:0x28 data:byte
style10 = .bss:0x805A0B90; // type:object size:0x28 data:byte
style11 = .bss:0x805A0BB8; // type:object size:0x28 data:byte
style12 = .bss:0x805A0BE0; // type:object size:0x28 data:byte
sTrendIdxes__13dCameraGame_c = .bss:0x805A0C08; // type:object size:0x84 data:4byte
lbl_805A0C8C = .bss:0x805A0C8C; // type:object size:0xC data:4byte
sRef = .bss:0x805A0C98; // type:object size:0xC scope:local data:4byte
sVecs1 = .bss:0x805A0CA8; // type:object size:0x20 scope:local data:4byte
sVecs2 = .bss:0x805A0CC8; // type:object size:0x20 scope:local data:4byte
sVecs3 = .bss:0x805A0CE8; // type:object size:0x20 scope:local data:4byte
sVecs4 = .bss:0x805A0D08; // type:object size:0x20 scope:local data:4byte
lbl_805A0D28 = .bss:0x805A0D28; // type:object size:0xC data:4byte
camHandlerUnused00 = .bss:0x805A0D38; // type:object size:0xB8 data:4byte
lbl_805A0DF0 = .bss:0x805A0DF0; // type:object size:0xC data:byte
camHandlerUnused01 = .bss:0x805A0E00; // type:object size:0xA0 data:byte
camHandler00 = .bss:0x805A0EA0; // type:object size:0x28 data:byte
camHandler01 = .bss:0x805A0EC8; // type:object size:0xC0 data:byte
lbl_805A0F88 = .bss:0x805A0F88; // type:object size:0xC data:byte
camHandler02 = .bss:0x805A0F98; // type:object size:0x110 data:byte
lbl_805A10A8 = .bss:0x805A10A8; // type:object size:0xC data:byte
camHandler03 = .bss:0x805A10B8; // type:object size:0xA8 data:byte
camHandler04 = .bss:0x805A1160; // type:object size:0x78 data:byte
lbl_805A11D8 = .bss:0x805A11D8; // type:object size:0xC data:byte
camHandler05 = .bss:0x805A11E4; // type:object size:0x8C data:byte
lbl_805A1270 = .bss:0x805A1270; // type:object size:0xC data:byte
camHandler06 = .bss:0x805A1280; // type:object size:0xB8 data:byte
lbl_805A1338 = .bss:0x805A1338; // type:object size:0xC data:byte
camHandler07 = .bss:0x805A1348; // type:object size:0x68 data:byte
lbl_805A13B0 = .bss:0x805A13B0; // type:object size:0xC data:byte
camHandler08 = .bss:0x805A13C0; // type:object size:0xA0 data:byte
camHandler09 = .bss:0x805A1460; // type:object size:0xA0 data:byte
camHandler10 = .bss:0x805A1500; // type:object size:0x28 data:byte
lbl_805A1528 = .bss:0x805A1528; // type:object size:0xC data:byte
camHandler11 = .bss:0x805A1538; // type:object size:0xD8 data:byte
camHandler12 = .bss:0x805A1610; // type:object size:0x50 data:byte
lbl_805A1660 = .bss:0x805A1660; // type:object size:0x20
lbl_805A1680 = .bss:0x805A1680; // type:object size:0xF68
lbl_805A25E8 = .bss:0x805A25E8; // type:object size:0x50
@@ -51290,7 +51319,7 @@ lbl_805A2BF0 = .bss:0x805A2BF0; // type:object size:0xB8 data:byte
lbl_805A2CA8 = .bss:0x805A2CA8; // type:object size:0x140 data:byte
lbl_805A2DE8 = .bss:0x805A2DE8; // type:object size:0xA8 data:byte
lbl_805A2E90 = .bss:0x805A2E90; // type:object size:0x88 data:byte
lbl_805A2F18 = .bss:0x805A2F18; // type:object size:0x40
sHio = .bss:0x805A2F18; // type:object size:0x40 scope:local
lbl_805A2F58 = .bss:0x805A2F58; // type:object size:0x10
attnVectors = .bss:0x805A2F68; // type:object size:0x30
sHio = .bss:0x805A2F98; // type:object size:0x18 scope:local
@@ -52223,7 +52252,7 @@ StageMgr__STATE_READ_OBJECT_SOUND = .bss:0x805B26B0; // type:object size:0x40 da
StageMgr__STATE_SCENE_CHANGE_SAVE = .bss:0x805B26F0; // type:object size:0x40 data:4byte
StageMgr__STATE_RESTART_SCENE_WAIT = .bss:0x805B2730; // type:object size:0x40 data:4byte
StageMgr__STATE_RESTART_SCENE = .bss:0x805B2770; // type:object size:0x30 data:4byte
lbl_805B27A0 = .bss:0x805B27A0; // type:object size:0x38
sHio = .bss:0x805B27A0; // type:object size:0x34 scope:local
lbl_805B27D8 = .bss:0x805B27D8; // type:object size:0xD8 align:4 data:float
lbl_805B28B0 = .bss:0x805B28B0; // type:object size:0x10
WeatherTag__STATE_WAIT = .bss:0x805B28C0; // type:object size:0x30 data:4byte
+6 -5
View File
@@ -484,10 +484,11 @@ config.libs = [
Object(Matching, "toBeSorted/actor_info.cpp"),
Object(NonMatching, "toBeSorted/d_sword_swing_effect_mgr.cpp"),
Object(NonMatching, "toBeSorted/d_enemy_sword_mdl.cpp"),
Object(NonMatching, "toBeSorted/d_camera.cpp"),
Object(NonMatching, "toBeSorted/d_event_1.cpp"),
Object(NonMatching, "toBeSorted/unk_map_cam.cpp"),
Object(NonMatching, "toBeSorted/unk_vec_math_event.cpp"),
Object(Matching, "toBeSorted/d_camera_base.cpp"),
Object(NonMatching, "toBeSorted/d_camera_game.cpp"),
Object(NonMatching, "toBeSorted/d_camera_event.cpp"),
Object(Matching, "toBeSorted/d_camera_map.cpp"),
Object(NonMatching, "toBeSorted/d_camera_math.cpp"),
Object(NonMatching, "toBeSorted/attention.cpp"),
Object(NonMatching, "toBeSorted/d_t_camera.cpp"),
Object(Matching, "toBeSorted/dowsing_target.cpp"),
@@ -617,7 +618,7 @@ config.libs = [
Object(NonMatching, "d/d_hbm.cpp"),
Object(NonMatching, "d/d_stage_mgr.cpp"),
Object(NonMatching, "d/d_last.cpp"),
Object(NonMatching, "d/d_camera.cpp"),
Object(Matching, "d/d_camera.cpp"),
Object(NonMatching, "d/d_light_obj.cpp"),
Object(NonMatching, "d/tg/d_t_weather.cpp"),
Object(Matching, "d/d_message.cpp"),
+1 -1
View File
@@ -8,7 +8,7 @@
struct cBgD_Vtx_t;
class dBgS_SphChk;
typedef void *(*SphChk_Callback)(dBgS_SphChk *, cBgD_Vtx_t *, int, int, int, cM3dGPla *, void *);
typedef void (*SphChk_Callback)(dBgS_SphChk *, cBgD_Vtx_t *, int, int, int, cM3dGPla *, void *);
class dBgS_SphChk : public cM3dGSph, public cBgS_PolyInfo, public cBgS_Chk, public dBgS_Chk {
public:
+2 -2
View File
@@ -64,9 +64,9 @@ public:
static u32 ProcAtTgHitmark(cCcD_Obj *, cCcD_Obj *, mVec3_c *, u32, mVec3_c *);
static void SetAtTgObjInf(bool, bool, cCcD_Obj *, cCcD_Obj *, mVec3_c *, bool);
bool ChkCamera(mVec3_c &, mVec3_c &, dAcObjBase_c *, dAcObjBase_c *, dAcObjBase_c *, f32);
bool ChkCamera(mVec3_c &, mVec3_c &, f32, dAcObjBase_c *, dAcObjBase_c *, dAcObjBase_c *);
bool
ChkCameraPoint(const mVec3_c &, const mVec3_c &, mVec3_c &, dAcObjBase_c *, dAcObjBase_c *, dAcObjBase_c *, f32);
ChkCameraPoint(const mVec3_c &, const mVec3_c &, mVec3_c &, f32, dAcObjBase_c *, dAcObjBase_c *, dAcObjBase_c *);
bool ChkCo(const mVec3_c &, dAcObjBase_c *);
bool fn_80357c90(const mVec3_c &, const mVec3_c &, u32, cCcD_ShapeAttr **, f32);
+2 -1
View File
@@ -37,7 +37,7 @@ struct CAM {
/* 0x04 */ mVec3_c position;
/* 0x10 */ f32 angle;
/* 0x14 */ u8 _0x14[8];
/* 0x1C */ char name[16];
/* 0x1C */ char trendName[16];
};
// Size 0x38
@@ -61,6 +61,7 @@ struct EVNT {
// Size 0x???
struct bzsFILE {
/* 0x00 */ s16 field_0x00;
// ???
};
+175 -53
View File
@@ -3,84 +3,206 @@
#include "common.h"
#include "d/d_base.h"
#include "egg/gfx/eggCamera.h"
#include "m/m_angle.h"
#include "m/m_frustum.h"
#include "m/m_mtx.h"
#include "m/m_vec.h"
extern "C" bool fn_80081FE0(void *, const char *);
extern "C" bool fn_800918E0(void *, s32, s16);
extern "C" void fn_80080960(void *, s32, s32, s8, s32);
extern "C" void fn_80093340(void *);
extern "C" void fn_80093360(void *);
extern "C" void fn_80093380(void *);
#include "toBeSorted/d_camera_base.h"
#include "toBeSorted/d_camera_event.h"
#include "toBeSorted/d_camera_game.h"
#include "toBeSorted/d_camera_map.h"
class dCamera_c : public dBase_c {
private:
class substruct_1 {
public:
substruct_1() : mActive(false), mFSStickAngle(0), field_0x04(0) {}
void setCamera(dCamera_c *cam);
void fn_8019E890();
mAng fn_8019E930() const;
void fn_8019E940();
private:
void fn_8019E8D0(const mAng &ang);
/* 0x00 */ bool mActive;
/* 0x02 */ mAng mFSStickAngle;
/* 0x04 */ mAng field_0x04;
/* 0x08 */ dCamera_c *mpCamera;
};
class screen_shaker {
public:
screen_shaker() {}
void init(dCamera_c *cam) {
mpCamera = cam;
mScreenShakeIntensity = 0.0f;
mShakeOffset = mVec3_c::Zero;
}
void setScreenShakeIntensity(f32 val) {
mScreenShakeIntensity = val;
}
bool execute();
mVec3_c getShakeOffset() const;
private:
/* 0x00 */ dCamera_c *mpCamera;
/* 0x04 */ f32 mScreenShakeIntensity;
/* 0x08 */ mVec3_c mShakeOffset;
};
enum CameraIdx_e {
CAM_GAME_0,
CAM_GAME_1,
CAM_EVENT,
CAM_MAP,
CAM_MAX,
};
enum Flags_e {
CAM_FLAGS_MAP = (1 << 1),
CAM_FLAGS_0x4 = (1 << 2),
CAM_FLAGS_0x10 = (1 << 4),
CAM_FLAGS_EVENT = (1 << 5),
CAM_FLAGS_UNDERWATER = (1 << 6),
CAM_FLAGS_IN_EVENT = (1 << 7),
CAM_FLAGS_0x100 = (1 << 8),
CAM_FLAGS_NO_LETTERBOX_IN_EVENT = (1 << 9),
};
public:
bool isCurrentTrend(const char *name) const {
return fn_80081FE0(field_0xD98, name);
dCamera_c();
virtual int create() override;
virtual int doDelete() override;
virtual int execute() override;
virtual int draw() override;
void setWorldOffset(f32 x, f32 z);
void setFrustum(f32 fov, f32 near, f32 far);
dCameraGame_c *getGameCam1() {
return static_cast<dCameraGame_c *>(mpCameras[CAM_GAME_0]);
}
void *getField_0xD98() const {
return field_0xD98;
dCameraGame_c *getGameCam2() {
return static_cast<dCameraGame_c *>(mpCameras[CAM_GAME_1]);
}
const mVec3_c &getPositionMaybe() const {
return mPositionMaybe;
dCameraEvent_c *getEventCam() {
return static_cast<dCameraEvent_c *>(mpCameras[CAM_EVENT]);
}
const mVec3_c &getField_0x78() const {
return field_0x78;
dCameraMap_c *getMapCam() {
return static_cast<dCameraMap_c *>(mpCameras[CAM_MAP]);
}
f32 getField_0x2A8() const {
return field_0x2A8;
const mVec3_c &getPosition() const {
return mView.mPosition;
}
const mVec3_c &getTarget() const {
return mView.mTarget;
}
f32 getWaterHeight() const {
return mWaterHeight;
}
// TODO what makes this different?
mAng getYRot() const;
bool doFn_800918E0(s32 a1, s16 a2) {
return fn_800918E0(field_0xDA0, a1, a2);
}
void doFn_80093340() {
fn_80093340(field_0xDA4);
}
void doFn_80093360() {
fn_80093360(field_0xDA4);
}
void doFn_80093380() {
fn_80093380(field_0xDA4);
}
void setScreenShakeIntensity(f32 val) {
mScreenShakeIntensity = val;
mScreenShaker.setScreenShakeIntensity(val);
}
UNKWORD getField_0xDA8() const {
return field_0xDA8;
return mActiveCameraIdx;
}
bool isUnderwater() const;
f32 getUnderwaterDepth() const;
void fn_8019EA00(const mVec3_c&, const mVec3_c&, f32, f32);
void fn_8019E430();
void fn_8019E410();
mAng fn_8019E3B0() const;
void fn_8019EA70(bool);
bool fn_8019EA70(bool);
bool setEventCamView(const mVec3_c &, const mVec3_c &, f32, f32);
mAng getYAngle() const;
mAng getXZAngle() const;
void apply();
bool fn_8019E3C0() const;
void enterMap();
void leaveMap();
bool fn_8019E4D0() const;
f32 fn_8019EB90();
private:
/* 0x068 */ u8 _0x068[0x6C - 0x068];
/* 0x06C */ mVec3_c mPositionMaybe;
/* 0x078 */ mVec3_c field_0x78;
/* 0x084 */ u8 _0x084[0x2A8 - 0x084];
/* 0x2A8 */ f32 field_0x2A8;
/* 0x2AC */ u8 _0x2AC[0xD98 - 0x2AC];
/* 0xD98 */ void *field_0xD98;
/* 0xD9C */ u8 _0xD9C[0xDA0 - 0xD9C];
/* 0xDA0 */ void *field_0xDA0;
/* 0xDA4 */ void *field_0xDA4;
/* 0xDA8 */ UNKWORD field_0xDA8;
/* 0xDAC */ u8 _0xDAC[0xDB0 - 0xDAC];
/* 0xDB0 */ f32 mScreenShakeIntensity;
void onFlag(u32 flag) {
mFlags |= flag;
}
void offFlag(u32 flag) {
mFlags &= ~flag;
}
bool checkFlag(u32 flag) const {
return mFlags & flag;
}
void updateView();
void applyTilt();
s32 setActiveCamera(s32 newCamIdx);
void fn_8019DB80();
f32 fn_8019E1F0();
void checkCameraChange();
f32 getEventLetterboxAmount();
void updateUnderwaterDepth(const mVec3_c &pos);
bool isUnderwater_() const;
/* 0x068 */ s32 mMyCameraIndex;
/* 0x06C */ CamView mView;
/* 0x08C */ mVec3_c field_0x08C;
/* 0x098 */ mAng mYAngle;
/* 0x09A */ mAng mXZAngle;
/* 0x09C */ mFrustum_c mFrustum;
/* 0x18C */ mMtx_c mMtx;
/* 0x1BC */ mMtx_c mMtxInv;
/* 0x1EC */ u8 field_0x1EC[0x1F8 - 0x1EC];
/* 0x1F8 */ UNKWORD field_0x1F8;
/* 0x1FC */ u8 field_0x1FC;
/* 0x200 */ EGG::Screen *mpScreen;
/* 0x204 */ EGG::LookAtCamera mLookAtCamera;
/* 0x28C */ f32 mLetterboxAmount;
/* 0x290 */ f32 field_0x290;
/* 0x294 */ f32 mGlobalAlpha;
/* 0x298 */ u8 field_0x298;
/* 0x299 */ u8 field_0x299;
/* 0x29C */ f32 field_0x29C;
/* 0x2A0 */ u8 field_0x2A0;
/* 0x2A1 */ u8 field_0x2A1;
/* 0x2A4 */ f32 mUnderwaterDepth;
/* 0x2A8 */ f32 mWaterHeight;
/* 0x2AC */ bool mIsUnderwater;
/* 0x2B0 */ u32 mFlags;
/* 0x2B4 */ dCameraGame_c mGameCam1;
/* 0x728 */ dCameraGame_c mGameCam2;
/* 0xB9C */ dCameraEvent_c mEventCam;
/* 0xCD0 */ dCameraMap_c mMapCam;
/* 0xD98 */ dCameraBase_c *mpCameras[CAM_MAX];
/* 0xDA8 */ s32 mActiveCameraIdx;
/* 0xDAC */ screen_shaker mScreenShaker;
/* 0xDC0 */ substruct_1 field_0xDC0;
/* 0xDCC */ bool field_0xDCC;
/* 0xDD0 */ CamView mView1;
};
#endif
+4
View File
@@ -132,6 +132,10 @@ public:
mpFile = file;
}
const bzsFILE *getFile() const {
return mpFile;
}
void setScen(const SCEN *scen, u16 count) {
mScenCount = count;
mpScen = scen;
+9 -1
View File
@@ -34,6 +34,10 @@ public:
f32 fn_801BBEC0() const;
void setLetterboxAmount(f32 v) {
mLetterboxAmount = v;
}
private:
/* 0x98 */ f32 mLetterboxAmount;
};
@@ -152,7 +156,7 @@ public:
static bool isCurrentStage(const char *stageName);
static bool isStageSkyloftLayer20();
static bool isInCredits();
static bool isStateLayerWithSeekerStoneHintMenu();
static bool isSeekerStoneStageAndLayer();
static SpawnInfo currentSpawnInfo;
static SpawnInfo nextSpawnInfo;
@@ -223,6 +227,10 @@ public:
return mFader.isStatus(mFaderBase_c::FADING_IN);
}
void setTargetingScreenLetterboxAmount(f32 amt) {
mScreen1.setLetterboxAmount(amt);
}
f32 targetingScreenFn_801BBEC0() const {
return mScreen1.fn_801BBEC0();
}
+6
View File
@@ -52,6 +52,7 @@ public:
STATE_FUNC_DECLARE(dStageMgr_c, RestartScene);
public:
void setGlobalAlpha(u8 alpha);
u8 getGlobalAlpha() const;
bool isAreaTypeNormal() const;
@@ -123,6 +124,10 @@ public:
void initUnkWithWater(u32 val, d3d::UnkWithWater *waterThing);
void destroyUnkWithWater(u32 val, d3d::UnkWithWater *waterThing);
const STIF *getStif() const {
return mpStif;
}
const RMPL *getRmpl() const {
return mpRmpl;
}
@@ -173,6 +178,7 @@ public:
void addActorId(u16 actorId);
nw4r::g3d::Camera getCamera(s32 idx);
EGG::Screen *getScreen(s32 idx);
void fn_80199B60(u8);
+11 -2
View File
@@ -587,6 +587,7 @@ public:
void queueMapEvent(s32 mapEvent, s32 surfaceProvince, s32 c);
void startMapEvent(s32 mapEvent, s32 surfaceProvince, s32 c);
bool isVisibleNoIntro() const;
void fn_8013B350();
const dMapSaveObjDefinition *getSaveObjDefinition(s32 province, s32 statueIdx) const;
@@ -836,7 +837,7 @@ private:
/* 0x8C84 */ u8 field_0x8C84;
/* 0x8C88 */ f32 field_0x8C88;
/* 0x8C8C */ f32 field_0x8C8C;
/* 0x8C8C */ f32 mOutDuration;
/* 0x8C90 */ bool mMapUpDirection;
/* 0x8C91 */ bool mNextMapUpDirection;
/* 0x8C92 */ bool mMapUpDirectionAfterZoomToDetail;
@@ -850,7 +851,7 @@ private:
/* 0x8CA8 */ s32 mNextMapMode;
/* 0x8CAC */ u8 field_0x8CAC;
/* 0x8CAD */ bool mDoCameraTransition;
/* 0x8CAD */ bool mCameraTransitionPossible;
/* 0x8CAE */ bool field_0x8CAE;
/* 0x8CB0 */ u32 mEventTimer;
@@ -958,6 +959,14 @@ public:
return mMapMain.isVisibleNoIntro();
}
void doFn_8013B350() {
mMapMain.fn_8013B350();
}
f32 getOutDuration() const {
return mMapMain.mOutDuration;
}
bool build();
bool remove();
bool execute();
+4
View File
@@ -110,6 +110,10 @@ public:
SetSizeY(size.y);
}
f32 GetAspect() const {
return GetSize().x / GetSize().y;
}
void SetNearZ(f32 nearZ) {
mNearZ = nearZ;
}
+3
View File
@@ -124,6 +124,9 @@ public:
static f32 s2r_c(f32 ang) {
return ang * sAngToRad;
}
static f32 s2n_c(f32 ang) {
return ang * sAngToNorm;
}
static f32 r2s_c(f32 ang) {
return ang * sRadToAng;
}
+2
View File
@@ -8,7 +8,9 @@
// Bunch of untested assumptions in here
class mFrustum_c {
public:
void set(f32, f32, f32 near, f32 far, const mMtx_c &mtx);
void set(f32, f32, f32, f32, f32 near, f32 far, const mMtx_c &mtx, bool);
/* 0x00 */ mMtx_c mView;
/* 0x30 */ nw4r::math::PLANE mPlane_0x30;
/* 0x40 */ nw4r::math::PLANE mPlane_0x40;
+1
View File
@@ -9,6 +9,7 @@
class ActorEventRelated {
public:
ActorEventRelated(dAcBase_c &owner, void *);
ActorEventRelated(UNKWORD, void *);
~ActorEventRelated();
bool isThisActorInEvent();
+11
View File
@@ -222,6 +222,17 @@ public:
bool checkLink2() const;
dAcObjBase_c *getTargetedActor() {
if (!isInNormalGameState() || !mTargeted) {
return nullptr;
}
return getTargetedActorUnchecked();
}
dAcObjBase_c *getTargetedActorUnchecked() {
return mGroups[1].getOtherPool()->getActor(mModels.mCurrentTargetInfoIdx);
}
private:
bool isInNormalGameState() const;
bool checkZButtonPressed() const;
+61
View File
@@ -0,0 +1,61 @@
#ifndef TO_BE_SORTED_D_CAMERA_BASE_H
#define TO_BE_SORTED_D_CAMERA_BASE_H
#include "common.h"
#include "m/m_vec.h"
// A basic description of a camera perspective, simplified.
struct CamView {
CamView() : mPosition(0.0f, 0.0f, 0.0f), mTarget(0.0f, 0.0f, 1.0f), mFov(50.0f), mTilt(0.0f) {}
CamView(const mVec3_c &pos, const mVec3_c &target, f32 fov, f32 tilt) : mPosition(pos), mTarget(target), mFov(fov), mTilt(tilt) {}
~CamView() {}
/* 0x00 */ mVec3_c mPosition;
/* 0x0C */ mVec3_c mTarget;
/* 0x18 */ f32 mFov;
/* 0x1C */ f32 mTilt;
};
// Abstract camera base class. The game camera class will hold various subclasses
// of this base class.
class dCameraBase_c {
protected:
/* 0x00 */ bool mCreated;
/* 0x01 */ u8 mPrevIsActive;
/* 0x02 */ bool mIsActive;
/* 0x04 */ s32 mIndex;
/* 0x08 */ CamView mView;
public:
dCameraBase_c() : mCreated(false), mPrevIsActive(0), mIsActive(false), mIndex(-1) {}
bool doCreate(s32 index);
bool doRemove();
bool doExecute();
bool doDraw();
// vt at 0x28
/* vt 0x08 */ virtual void onBecomeActive() {}
/* vt 0x0C */ virtual void onBecomeInactive() {}
/* vt 0x10 */ virtual bool create();
/* vt 0x14 */ virtual bool remove();
/* vt 0x18 */ virtual bool execute();
/* vt 0x1C */ virtual bool draw();
/* vt 0x20 */ virtual ~dCameraBase_c() {}
/* vt 0x24 */ virtual CamView &getView() {
// TODO - const?
return mView;
}
/* vt 0x28 */ virtual void activate() {
mIsActive = true;
}
/* vt 0x2C */ virtual void deactivate() {
mIsActive = false;
}
/* vt 0x30 */ virtual void setView(const CamView &view) {
// TODO - is this actually a base impl?
mView = view;
}
};
#endif
+34
View File
@@ -0,0 +1,34 @@
#ifndef TO_BE_SORTED_D_CAMERA_EVENT_H
#define TO_BE_SORTED_D_CAMERA_EVENT_H
#include "toBeSorted/actor_event.h"
#include "toBeSorted/d_camera_base.h"
class dCameraEvent_c : public dCameraBase_c {
public:
dCameraEvent_c();
/* vt 0x08 */ virtual void onBecomeActive() override;
/* vt 0x0C */ virtual void onBecomeInactive() override;
/* vt 0x10 */ virtual bool create() override;
/* vt 0x14 */ virtual bool remove() override;
/* vt 0x18 */ virtual bool execute() override;
/* vt 0x1C */ virtual bool draw() override;
/* vt 0x20 */ virtual ~dCameraEvent_c() {}
void fn_800918E0(s32, s16);
private:
/* 0x2C */ u8 field_0x2C[0x48 - 0x2C];
/* 0x48 */ u8 field_0x48;
/* 0x4A */ s16 field_0x4A;
/* 0x4C */ u8 field_0x4C[0x50 - 0x4C];
/* 0x50 */ ActorEventRelated mEventRelated;
/* 0xA0 */ u8 field_0xA0;
/* 0xA4 */ s32 field_0xA4;
/* 0xA8 */ u8 field_0xA8[0xAC - 0xA8];
/* 0xAC */ s32 field_0xAC;
/* 0xB0 */ u8 field_0xB0[0xB4 - 0xB0];
/* 0xB4 */ CamView mViews[4];
};
#endif
+279
View File
@@ -0,0 +1,279 @@
#ifndef TO_BE_SORTED_D_CAMERA_GAME_H
#define TO_BE_SORTED_D_CAMERA_GAME_H
#include "common.h"
#include "d/a/d_a_base.h"
#include "d/a/d_a_player.h"
#include "d/a/obj/d_a_obj_base.h"
#include "d/col/bg/d_bg_s_gnd_chk.h"
#include "m/m_vec.h"
#include "toBeSorted/d_camera_base.h"
#include "toBeSorted/deg_angle_util.h"
class dCamera_c;
// Size: 0xC
struct CamParamHeader {
/* 0x00 */ u32 magic;
/* 0x04 */ s16 numFloats;
/* 0x06 */ s16 numFlags;
/* 0x08 */ s16 numStyles;
/* 0x0A */ s16 numTrends;
};
// Size: 0xA
#pragma pack(push, 2)
struct CamParamStyle {
/* 0x00 */ u8 id[4];
/* 0x04 */ u8 _0x04[2];
/* 0x06 */ u16 floatParamOffset;
/* 0x08 */ u16 flagParamOffset;
};
#pragma pack(pop)
// Size: 0x24
struct CamParamTrend {
/* 0x00 */ char name[16]; // not sure
/* 0x10 */ u8 _0x10[0x24 - 0x10];
};
enum CamTrendIndex_e {
CAM_TREND_IDX_BalanceBall,
CAM_TREND_IDX_Swim,
CAM_TREND_IDX_Surface,
CAM_TREND_IDX_SkyDive,
CAM_TREND_IDX_Dive,
CAM_TREND_IDX_Lift,
CAM_TREND_IDX_Crawl,
CAM_TREND_IDX_Field,
CAM_TREND_IDX_Dungeon,
CAM_TREND_IDX_mogu,
CAM_TREND_IDX_Tornade,
CAM_TREND_IDX_Rope,
CAM_TREND_IDX_Tightrope,
CAM_TREND_IDX_Parachute,
CAM_TREND_IDX_DialKey,
CAM_TREND_IDX_BirdRide,
CAM_TREND_IDX_Trolley,
CAM_TREND_IDX_Boomerang,
CAM_TREND_IDX_Room,
CAM_TREND_IDX_AfterCrawl,
CAM_TREND_IDX_TerryShip_Island,
CAM_TREND_IDX_Catapult,
CAM_TREND_IDX_TightropeHang,
CAM_TREND_IDX_BossKey,
CAM_TREND_IDX_SkyDiveNear,
CAM_TREND_IDX_mogu2,
CAM_TREND_IDX_ClawShot,
CAM_TREND_IDX_Town,
CAM_TREND_IDX_Cannon,
CAM_TREND_IDX_BirdRideLD,
CAM_TREND_IDX_Nushi,
CAM_TREND_IDX_Island,
CAM_TREND_IDX_Windmill,
CAM_TREND_IDX_MAX,
};
enum CamStyleIndex_e {
CAM_STYLE_IDX_TA22,
CAM_STYLE_IDX_MAX,
};
class dCameraGame_c;
struct CamId {
CamId() : roomCamId(-1), roomId(-1), field_0x04(0) {}
s16 roomCamId;
s16 roomId;
s16 field_0x04;
void clear() {
roomCamId = -1;
roomId = dAcPy_c::GetLinkM()->mRoomID;
field_0x04 = 0;
}
bool isValid() const {
if (field_0x04 < 3 && roomId != dAcPy_c::GetLinkM()->mRoomID) {
return false;
} else {
return field_0x04 >= -1 && roomCamId >= 0 && roomCamId < 0xFF;
}
}
};
struct UnkCamCheck {
/* 0x000 */ u8 field_0x000;
/* 0x004 */ dBgS_CamGndChk chk;
/* 0x094 */ f32 field_0x094;
/* 0x098 */ CamId camId;
};
struct UnkCamRef {
/* 0x00 */ bool field_0x00;
/* 0x04 */ mVec3_c field_0x04;
/* 0x10 */ dAcRef_c<dAcObjBase_c> mMoveBgActorRef;
};
struct UnkCamChecks {
/* 0x000 */ UnkCamCheck mChk1;
/* 0x0A0 */ UnkCamCheck mChk2;
/* 0x140 */ UnkCamRef mRef;
/* 0x15C */ UNKWORD field_0x15C;
/* 0x160 */ UNKWORD field_0x160;
/* 0x164 */ CamId field_0x164;
/* 0x16A */ u8 field_0x16A;
/* 0x16B */ u8 field_0x16B;
/* 0x16C */ CamId field_0x16C;
/* 0x174 */ dCameraGame_c *mpCamera;
void fn_8007E130(dCameraGame_c *system);
void fn_8007E1B0(dAcObjBase_c *ac);
};
class CamStyle {
public:
void loadStyle(u16 styleIdx);
f32 getFloat(s32 idx) const;
bool getFlag(s32 idx) const;
// TODO: Probably wrong
CamStyle(const UNKWORD &u1, const UNKWORD &u2, f32 *pFloats, s32 numFloats, u16 *pFlags, s32 numFlags)
: field_0x08(u1),
mpFloats(pFloats),
mpParamFloats(pFloats),
mNumFloats(numFloats),
mpFlags(pFlags),
mpParamFlags(pFlags),
mNumFlags(numFlags),
field_0x18(u1) {
mId[0] = '?';
// TODO maybe implicitly generated
mId[4] = '\0';
mId[3] = '\0';
mId[2] = '\0';
mId[1] = '\0';
mStyleIndex = -1;
}
private:
/* 0x00 */ u8 mId[5];
/* 0x06 */ u16 mStyleIndex;
/* 0x08 */ UNKWORD field_0x08;
/* 0x0C */ f32 *mpFloats;
/* 0x10 */ const f32 *mpParamFloats;
/* 0x14 */ s32 mNumFloats;
/* 0x18 */ UNKWORD field_0x18;
/* 0x1C */ u16 *mpFlags;
/* 0x20 */ const u16 *mpParamFlags;
/* 0x24 */ s32 mNumFlags;
};
class dCameraGame_c : public dCameraBase_c {
public:
static bool initCamParamDat();
static s32 getTrendIndex(const char *name);
static s32 getStyleIndex(u32 id);
static s32 sTrendIdxes[CAM_TREND_IDX_MAX];
static s32 sStyleIdxes[CAM_STYLE_IDX_MAX];
static const CamParamStyle *getStyle(s32 idx) {
return &sStyles[idx];
}
static const f32 *getFloats(s32 idx) {
return &sFloats[idx];
}
static const u16 *getFlags(s32 idx) {
return &sFlags[idx];
}
dCameraGame_c();
/* vt 0x08 */ virtual void onBecomeActive() override;
/* vt 0x0C */ virtual void onBecomeInactive() override;
/* vt 0x10 */ virtual bool create() override;
/* vt 0x14 */ virtual bool remove() override;
/* vt 0x18 */ virtual bool execute() override;
/* vt 0x1C */ virtual bool draw() override;
/* vt 0x20 */ virtual ~dCameraGame_c() {}
/* vt 0x30 */ virtual void setView(const CamView &view) override;
CamId getCamId0x60() {
return field_0x060;
}
bool getField_0x078() const {
return field_0x078;
}
f32 getField_0x0AC() const {
return field_0x0AC;
}
void clearCamIds();
bool isCurrentTrend(const char *name) const;
void onFlag(u32 flag) {
mFlags |= flag;
}
void offFlag(u32 flag) {
mFlags &= ~flag;
}
void overrideCam(s32 camId, s32 priority, s16 roomId, bool unk);
private:
CamId getCamId();
void setCam(const CamId &id);
void setCam(s16 roomCamId, s16 roomId);
static void cacheIdxes();
static CamParamHeader *sHeader;
static f32 *sFloats;
static u16 *sFlags;
static CamParamStyle *sStyles;
static CamParamTrend *sTrends;
/* 0x02C */ dPolar field_0x02C;
/* 0x038 */ CamView mView2;
/* 0x058 */ u32 mFlags;
/* 0x05C */ UNKWORD field_0x05C;
/* 0x060 */ CamId field_0x060;
/* 0x068 */ s32 mCurrentTrendIdx;
/* 0x06C */ UNKWORD field_0x06C;
/* 0x070 */ UNKWORD field_0x070;
/* 0x074 */ UNKWORD field_0x074;
/* 0x078 */ bool field_0x078;
/* 0x079 */ u8 field_0x079;
/* 0x07A */ u8 field_0x07A;
/* 0x07C */ UNKWORD field_0x07C;
/* 0x080 */ CamId field_0x080;
/* 0x086 */ CamId field_0x086;
/* 0x08C */ UNKWORD field_0x08C;
/* 0x090 */ UNKWORD field_0x090;
/* 0x094 */ s16 field_0x094;
/* 0x096 */ s16 field_0x096;
/* 0x098 */ dAcObjBase_c *field_0x098;
/* 0x09C */ dAcRef_c<dAcObjBase_c> mRef;
/* 0x0A8 */ UNKWORD field_0x0A8;
/* 0x0AC */ f32 field_0x0AC;
/* 0x0B0 */ f32 field_0x0B0;
/* 0x0B4 */ UnkCamChecks mChk;
/* 0x22C */ UNKWORD field_0x22C;
/* 0x230 */ UNKWORD field_0x230;
/* 0x234 */ mVec3_c field_0x234;
/* 0x240 */ mVec3_c field_0x240;
/* 0x24C */ u8 _0x24C[0x264 - 0x24C];
/* 0x264 */ f32 field_0x264;
/* 0x268 */ f32 field_0x268;
/* 0x26C */ u8 _0x0[0x474 - 0x26C];
};
#endif
+48
View File
@@ -0,0 +1,48 @@
#ifndef TO_BE_SORTED_D_CAMERA_MAP_H
#define TO_BE_SORTED_D_CAMERA_MAP_H
#include "common.h"
#include "m/m_vec.h"
#include "toBeSorted/d_camera_base.h"
class dAcObjBase_c;
class dCameraMap_c : public dCameraBase_c {
public:
dCameraMap_c() : field_0xC4(0.0f) {}
/* vt 0x08 */ virtual void onBecomeActive() override;
/* vt 0x0C */ virtual void onBecomeInactive() override;
/* vt 0x10 */ virtual bool create() override;
/* vt 0x14 */ virtual bool remove() override;
/* vt 0x18 */ virtual bool execute() override;
/* vt 0x1C */ virtual bool draw() override;
/* vt 0x20 */ virtual ~dCameraMap_c() {}
/* vt 0x30 */ virtual void setView(const CamView &view) override;
// Not sure what this is...
/* vt 0x34 */ virtual bool vt_0x34();
void fn_80093340();
void setNoCameraTransition();
void setCameraTransition();
bool isActiveOrAnimating() const;
void startOut();
private:
/* 0x2C */ mVec3_c field_0x2C;
/* 0x38 */ f32 field_0x38;
/* 0x3C */ f32 field_0x3C;
/* 0x40 */ f32 field_0x40;
/* 0x44 */ dAcObjBase_c *field_0x44;
/* 0x48 */ CamView mView1;
/* 0x68 */ CamView mSourceView;
/* 0x88 */ CamView mTargetView;
/* 0xA8 */ u8 _0xA8[0xAC - 0xA8];
/* 0xAC */ bool mIsMovingOut;
/* 0xB0 */ UNKWORD field_0xB0;
/* 0xB4 */ bool mIsActiveOrAnimating;
/* 0xB8 */ s32 mTimer;
/* 0xBC */ u8 _0xBC[0xC4 - 0xBC];
/* 0xC4 */ f32 field_0xC4;
};
#endif
+54
View File
@@ -0,0 +1,54 @@
#ifndef TOBESORTED_D_CAMERA_MATH_H
#define TOBESORTED_D_CAMERA_MATH_H
#include "common.h"
#include "m/m_angle.h"
#include "m/m_vec.h"
class dAcObjBase_c;
/**
* @brief A function that looks like an ease-in tween.
*
* @param arg The time argument in [0, 1]
* @param param The power of the easing function. 0 = linear, 1 = quite powerful
* @return f32 The result in [0, 1]
*/
f32 camEaseIn(f32 arg, f32 param);
/**
* @brief A function that looks like an ease-in-out tween.
*
* @param arg The time argument in [0, 1]
* @param param The power of the easing function. 0 = linear, 1 = a little bit
* @return f32 The result in [0, 1]
*/
f32 camEaseInOut(f32 arg, f32 param);
/**
* @brief Get a point on the line from origin to target that is as
* far away from origin as point is away from origin.
*/
mVec3_c camGetPointOnLine(const mVec3_c &target, const mVec3_c &origin, const mVec3_c &point);
/**
* @brief Get a point relative to ac's position. localOffset is rotated by the actor's XY rotation first.
*/
mVec3_c camOffsetPoint(dAcObjBase_c *ac, const mVec3_c &localOffset);
/**
* @brief Like the other camOffsetPoint, but with an explicitly passed rotation.
*/
mVec3_c camOffsetPoint(dAcObjBase_c *ac, const mVec3_c &localOffset, const mAng3_c &rot);
/**
* @brief The inverse of camOffsetPoint
*/
mVec3_c camPointToLocal(dAcObjBase_c *ac, const mVec3_c &pos);
/**
* @brief The inverse of camOffsetPoint
*/
mVec3_c camPointToLocal(dAcObjBase_c *ac, const mVec3_c &pos, const mAng3_c &rot);
#endif
+1
View File
@@ -43,6 +43,7 @@ public:
struct dPolar {
public:
dPolar() : R(0.0f), U(0.0f), V(0.0f) {}
dPolar(f32 r, f32 u, f32 v);
dPolar(const mVec3_c &v);
+10 -10
View File
@@ -3095,12 +3095,12 @@ void dAcBlastboss_c::executeLightningStrike() {
field_0x2CFC = 60.0f;
mLightingStrikeState = LIGHTNING_STRIKE_DEMO;
// huh
field_0x2D10.x = cam->getField_0x78().x;
field_0x2D10.y = cam->getField_0x78().y;
field_0x2D10.z = cam->getField_0x78().z;
field_0x2D04.x = cam->getPositionMaybe().x;
field_0x2D04.y = cam->getPositionMaybe().y;
field_0x2D04.z = cam->getPositionMaybe().z;
field_0x2D10.x = cam->getTarget().x;
field_0x2D10.y = cam->getTarget().y;
field_0x2D10.z = cam->getTarget().z;
field_0x2D04.x = cam->getPosition().x;
field_0x2D04.y = cam->getPosition().y;
field_0x2D04.z = cam->getPosition().z;
mIsPhaseTwo = -1;
// fall-through
} else {
@@ -3303,7 +3303,7 @@ void dAcBlastboss_c::executeLightningStrike() {
f32 fac = val * 3.0f;
tmp1.y += mAng(val * 0x1C20).cos() * fac;
}
cam->fn_8019EA00(tmp1, field_0x2D04, field_0x2CFC, 0.0f);
cam->setEventCamView(tmp1, field_0x2D04, field_0x2CFC, 0.0f);
if (b2) {
mtx1.transS(0.5f, 0.5f, 0.0f);
// REGSWAP
@@ -3315,11 +3315,11 @@ void dAcBlastboss_c::executeLightningStrike() {
}
if (field_0x114C != 0) {
mtx.YrotS(cam->fn_8019E3B0());
mtx.YrotS(cam->getXZAngle());
v.set(0.0f, 10.0f, 10000.0f);
MTXMultVec(mtx, v, v);
v.x += cam->getPositionMaybe().x;
v.z += cam->getPositionMaybe().z;
v.x += cam->getPosition().x;
v.z += cam->getPosition().z;
mtx.transS(v);
v.set(0.7f, 0.7f, 0.7f);
mThunderMdl.setScale(v);
+1 -1
View File
@@ -1436,7 +1436,7 @@ void dAcEsm_c::fn_187_6C20(bool param0) {
if (!param0) {
dCamera_c *cam = dScGame_c::getCamera(0);
mAngle.y = cLib::targetAngleY(cam->getPositionMaybe(), cam->getField_0x78());
mAngle.y = cLib::targetAngleY(cam->getPosition(), cam->getTarget());
mAngle.y += cM::rndFX(16384.f);
}
+1 -1
View File
@@ -570,7 +570,7 @@ void dAcOsoil_c::handleModelsOpacities() {
if (dAcPy_c::LINK->mPosition.squareDistance(mPosition) < 1000000.f) {
dCamera_c* camera = dScGame_c::getCamera();
if (camera != nullptr) {
f32 dist = (camera->getPositionMaybe() - mPosition).y * (1.f / 80.f);
f32 dist = (camera->getPosition() - mPosition).y * (1.f / 80.f);
if (dist < 0.1f) {
dist = 0.f;
} else if (dist > 1) {
+2 -3
View File
@@ -39,7 +39,6 @@ int dTgGateToGround_c::doDelete() {
int dTgGateToGround_c::actorExecute() {
dAcPy_c *player;
dCamera_c *cam;
if (params_FF_FF_00_00 != -1 && StoryflagManager::sInstance->getCounterOrFlag(params_FF_FF_00_00) == 0) {
return SUCCEEDED;
@@ -57,8 +56,8 @@ int dTgGateToGround_c::actorExecute() {
}
} else {
if (params_00_00_00_FF != -1) {
cam = dScGame_c::getCamera(0);
fn_80080960(cam->getField_0xD98(), params_00_00_00_FF, 0, mRoomID, 0);
// TODO Cast is maybe fake but I can't get overrideCam to match otherwise
dScGame_c::getCamera(0)->getGameCam1()->overrideCam(params_00_00_00_FF, 0, (u16)mRoomID, false);
}
delayFrames = 0;
}
+6 -6
View File
@@ -76,8 +76,8 @@ void dSporeProc_c::execute() {
mVec3_c camPos;
mVec3_c camTowards;
camPos = pCam->getPositionMaybe();
camTowards = pCam->getField_0x78() - camPos;
camPos = pCam->getPosition();
camTowards = pCam->getTarget() - camPos;
if (pCam != nullptr && camTowards.normalizeRS()) {
mVec3_c v;
@@ -158,9 +158,9 @@ void dSporeProc_c::execute() {
mSporesPos[i] += point * (field_0x12D8[i] * 5.f);
}
f32 camY = pCam->getField_0x2A8();
if (end != camY && mSporesPos[i].y < camY) {
mSporesPos[i].y = camY;
f32 waterHeight = pCam->getWaterHeight();
if (end != waterHeight && mSporesPos[i].y < waterHeight) {
mSporesPos[i].y = waterHeight;
}
} break;
}
@@ -212,7 +212,7 @@ void dSporeProc_c::drawXlu() {
);
dCamera_c *pCam = dScGame_c::getCamera();
mVec3_c pos = pCam->getPositionMaybe();
mVec3_c pos = pCam->getPosition();
if (dTgSiren_c::isOutOfTime()) {
color0.r = 0xFF;
+1 -1
View File
@@ -119,7 +119,7 @@ void dTgTumbleWeed_c::doSpawnTumbleweed() {
pos.rotY(angle);
pos *= 600.f;
pos += pCam->getPositionMaybe();
pos += pCam->getPosition();
if (dBgS_ObjGndChk::CheckPos(pos + mVec3_c::Ey * 100.f)) {
pos.y = dBgS_ObjGndChk::GetGroundHeight() + 10.f;
+1 -1
View File
@@ -401,7 +401,7 @@ void dBgS_Acch::LineCheck(dBgS &bgs) {
} while (i < GetTblSize());
}
extern "C" void *fn_80359C80(dBgS_SphChk *, cBgD_Vtx_t *, int, int, int, cM3dGPla *, void *);
extern "C" void fn_80359C80(dBgS_SphChk *, cBgD_Vtx_t *, int, int, int, cM3dGPla *, void *);
void dBgS_Acch::SphCheck() {
f32 height = field_0x1D0;
+3 -4
View File
@@ -98,11 +98,10 @@ u32 dCcS::ProcAtTgHitmark(cCcD_Obj *, cCcD_Obj *, mVec3_c *, u32, mVec3_c *) {}
void dCcS::SetAtTgObjInf(bool, bool, cCcD_Obj *, cCcD_Obj *, mVec3_c *, bool) {}
bool dCcS::ChkCamera(mVec3_c &, mVec3_c &, dAcObjBase_c *, dAcObjBase_c *, dAcObjBase_c *, f32) {}
bool dCcS::ChkCamera(mVec3_c &, mVec3_c &, f32, dAcObjBase_c *, dAcObjBase_c *, dAcObjBase_c *) {}
bool dCcS::ChkCameraPoint(
const mVec3_c &, const mVec3_c &, mVec3_c &, dAcObjBase_c *, dAcObjBase_c *, dAcObjBase_c *, f32
) {}
bool dCcS::
ChkCameraPoint(const mVec3_c &, const mVec3_c &, mVec3_c &, f32, dAcObjBase_c *, dAcObjBase_c *, dAcObjBase_c *) {}
bool dCcS::ChkCo(const mVec3_c &, dAcObjBase_c *) {}
+591
View File
@@ -0,0 +1,591 @@
#include "d/d_camera.h"
#include "c/c_math.h"
#include "common.h"
#include "d/a/d_a_player.h"
#include "d/col/bg/d_bg_s_gnd_chk.h"
#include "d/col/bg/d_bg_s_lin_chk.h"
#include "d/col/bg/d_bg_s_roof_chk.h"
#include "d/d_gfx.h"
#include "d/d_pad.h"
#include "d/d_sc_game.h"
#include "d/d_stage_mgr.h"
#include "d/snd/d_snd_3d_manager.h"
#include "egg/gfx/eggFrustum.h"
#include "egg/math/eggMatrix.h"
#include "f/f_base.h"
#include "f/f_profile.h"
#include "m/m_angle.h"
#include "m/m_mtx.h"
#include "m/m_vec.h"
#include "nw4r/g3d/g3d_camera.h"
#include "toBeSorted/d_camera_base.h"
#include "toBeSorted/d_camera_math.h"
#include "toBeSorted/event_manager.h"
class dCamera_HIO_c {
public:
dCamera_HIO_c();
virtual ~dCamera_HIO_c();
/* 0x04 */ f32 field_0x04;
/* 0x08 */ f32 field_0x08;
/* 0x0C */ f32 field_0x0C;
/* 0x10 */ s16 field_0x10;
/* 0x12 */ s16 field_0x12;
/* 0x14 */ f32 field_0x14;
/* 0x18 */ u16 field_0x18;
/* 0x1C */ f32 field_0x1C;
/* 0x20 */ f32 field_0x20;
/* 0x24 */ s16 field_0x24;
/* 0x28 */ f32 field_0x28;
/* 0x2C */ f32 field_0x2C;
/* 0x30 */ s16 field_0x30;
};
dCamera_HIO_c::~dCamera_HIO_c() {}
dCamera_HIO_c::dCamera_HIO_c() {
field_0x04 = 1.0f;
field_0x08 = 240000.0f;
field_0x14 = 0.1f;
field_0x18 = 0x1555;
field_0x1C = 30.0f;
field_0x20 = 30.0f;
field_0x24 = 8;
field_0x28 = 0.7f;
field_0x2C = 0.2f;
field_0x30 = 0;
field_0x0C = 1.0f;
field_0x10 = 1;
field_0x12 = 1;
}
static dCamera_HIO_c sHio;
SPECIAL_BASE_PROFILE(CAMERA, dCamera_c, fProfile::CAMERA, 0xA, 0x30);
void debugWarn2(const char *fmt, ...);
void debugPrintf7(const char *fmt, ...);
dCamera_c::dCamera_c()
: mMyCameraIndex(0),
mpScreen(dStageMgr_c::GetInstance()->getScreen(0)),
mYAngle(0),
mXZAngle(0),
field_0x1F8(0),
field_0x1FC(0),
mFlags(0) {
mScreenShaker.init(this);
field_0xDC0.setCamera(this);
field_0x08C = mVec3_c(0.0f, 1.0f, 0.0f);
mActiveCameraIdx = 0;
for (int i = 0; i < CAM_MAX; i++) {
mpCameras[i] = nullptr;
}
}
int dCamera_c::create() {
mFlags = 0;
mMyCameraIndex = getFromParams(0, 0xF);
dScGame_c::setCamera(mMyCameraIndex, nullptr);
mpCameras[CAM_GAME_0] = &mGameCam1;
mpCameras[CAM_GAME_1] = &mGameCam2;
mpCameras[CAM_EVENT] = &mEventCam;
mpCameras[CAM_MAP] = &mMapCam;
for (int i = 0; i < CAM_MAX; i++) {
if (mpCameras[i] == nullptr) {
continue;
}
if (!mpCameras[i]->doCreate(i)) {
return NOT_READY;
}
}
debugWarn2("u can NOT use debug camera!!"); // aww
mActiveCameraIdx = 0;
mpCameras[0]->activate();
mLetterboxAmount = getEventLetterboxAmount();
field_0x290 = 1.0f;
onFlag(CAM_FLAGS_IN_EVENT);
// TODO maybe struct + inline
mGlobalAlpha = 1.0f;
field_0x298 = field_0x299 = 0;
field_0x29C = 1.0f;
field_0x2A0 = field_0x2A1 = 0;
mView1 = mpCameras[mActiveCameraIdx]->getView();
field_0xDCC = false;
mYAngle = 0;
mXZAngle = 0;
dScGame_c::setCamera(mMyCameraIndex, this);
updateView();
apply();
const STIF *stif = dStageMgr_c::GetInstance()->getStif();
if (stif != nullptr) {
sHio.field_0x04 = stif->field_0x00;
sHio.field_0x08 = stif->field_0x04;
}
field_0x1FC = 0;
if ((dScGame_c::isCurrentStage("F000") && 26 <= dScGame_c::currentSpawnInfo.layer &&
dScGame_c::currentSpawnInfo.layer <= 28) ||
dScGame_c::isInCredits() || dScGame_c::isSeekerStoneStageAndLayer()) {
onFlag(CAM_FLAGS_NO_LETTERBOX_IN_EVENT);
dScGame_c::GetInstance()->setTargetingScreenLetterboxAmount(0.0f);
}
debugPrintf7("create ok!!");
return SUCCEEDED;
}
// Maybe inlines that couldn't be inlined due to variadics...
void debugWarn2(const char *fmt, ...) {
// no-op
}
void debugPrintf7(const char *fmt, ...) {
// no-op
}
int dCamera_c::doDelete() {
debugPrintf7("delete!!");
for (int i = 0; i < CAM_MAX; i++) {
// No null check needed :)
mpCameras[i]->doRemove();
}
dScGame_c::setCamera(mMyCameraIndex, nullptr);
return SUCCEEDED;
}
void dCamera_c::setWorldOffset(f32 x, f32 z) {
mView.mPosition.x += x;
mView.mPosition.z += z;
mView.mTarget.x += x;
mView.mTarget.z += z;
// TODO maybe inline
getGameCam1()->setView(mView);
getGameCam1()->onFlag(0x1);
getGameCam1()->onFlag(0x4000);
updateView();
apply();
}
int dCamera_c::execute() {
dAcPy_c *link = dAcPy_c::GetLinkM();
checkCameraChange();
for (int i = 0; i < CAM_MAX; i++) {
if (mpCameras[i] != nullptr) {
mpCameras[i]->doExecute();
}
}
if (mActiveCameraIdx == CAM_EVENT) {
// hmmmm
static_cast<dCameraGame_c *>(mpCameras[0])->clearCamIds();
}
updateView();
apply();
field_0xDC0.fn_8019E940();
field_0xDCC = false;
if (mActiveCameraIdx == CAM_EVENT) {
onFlag(CAM_FLAGS_IN_EVENT);
}
if (checkFlag(CAM_FLAGS_0x100 | CAM_FLAGS_IN_EVENT)) {
field_0x290 += (1.0f / sHio.field_0x24);
if (field_0x290 > 1.0f) {
field_0x290 = 1.0f;
}
} else {
field_0x290 = field_0x290 - (1.0f / sHio.field_0x24);
if (field_0x290 < 0.0f) {
field_0x290 = 0.0f;
}
}
f32 scale = checkFlag(CAM_FLAGS_IN_EVENT) != 0 ? getEventLetterboxAmount() : sHio.field_0x20;
f32 target = camEaseInOut(field_0x290, 1.0f);
mLetterboxAmount += (target * scale - mLetterboxAmount) * 0.5f;
if (mActiveCameraIdx == CAM_EVENT && checkFlag(CAM_FLAGS_NO_LETTERBOX_IN_EVENT) != 0) {
mLetterboxAmount = 0.0f;
}
dScGame_c::GetInstance()->setTargetingScreenLetterboxAmount(mLetterboxAmount);
offFlag(CAM_FLAGS_0x100 | CAM_FLAGS_IN_EVENT);
if (!link->checkActionFlagsCont(0x400000)) {
field_0x299 = 0;
}
f32 alphaTarget;
f32 alphaUpdateSpeed = sHio.field_0x2C;
if (EventManager::isInEvent()) {
alphaUpdateSpeed = 1.0f;
if (field_0x2A1 != 0) {
alphaTarget = field_0x2A0 ? sHio.field_0x28 : 0.0f;
} else {
alphaTarget = 1.0f;
}
} else {
if (field_0x299 != 0) {
alphaTarget = field_0x298 ? sHio.field_0x28 : 0.0f;
} else {
alphaTarget = 1.0f;
}
}
mGlobalAlpha += alphaUpdateSpeed * (alphaTarget - mGlobalAlpha);
dStageMgr_c::GetInstance()->setGlobalAlpha((u8)(mGlobalAlpha * 255.1f) & 0xFF);
return SUCCEEDED;
}
void dCamera_c::checkCameraChange() {
offFlag(CAM_FLAGS_0x10);
if (checkFlag(CAM_FLAGS_0x4)) {
getGameCam1()->onFlag(0x400);
offFlag(CAM_FLAGS_0x4);
}
if (checkFlag(CAM_FLAGS_MAP) && mActiveCameraIdx == CAM_MAP && !mMapCam.isActiveOrAnimating()) {
offFlag(CAM_FLAGS_MAP);
onFlag(CAM_FLAGS_0x4);
getGameCam1()->onFlag(0x10000);
debugPrintf7("off map");
}
if (EventManager::isInEvent()) {
onFlag(CAM_FLAGS_EVENT);
offFlag(CAM_FLAGS_MAP);
} else {
offFlag(CAM_FLAGS_EVENT);
}
if (checkFlag(CAM_FLAGS_EVENT)) {
if (mActiveCameraIdx != CAM_EVENT) {
setActiveCamera(CAM_EVENT);
}
} else if (checkFlag(CAM_FLAGS_MAP)) {
if (mActiveCameraIdx != CAM_MAP) {
setActiveCamera(CAM_MAP);
}
} else {
if (mActiveCameraIdx != CAM_GAME_0) {
setActiveCamera(CAM_GAME_0);
}
}
}
void dCamera_c::updateView() {
if (field_0xDCC) {
mView = mView1;
field_0xDCC = 0;
} else {
mView = mpCameras[mActiveCameraIdx]->getView();
}
mVec3_c dir = mView.mTarget - mView.mPosition;
mYAngle = cM::atan2s(dir.y, dir.absXZ());
mXZAngle = cM::atan2s(dir.x, dir.z);
}
int dCamera_c::draw() {
if (mpCameras[mActiveCameraIdx] != nullptr) {
mpCameras[mActiveCameraIdx]->doDraw();
}
return SUCCEEDED;
}
bool dCamera_c::isUnderwater() const {
return checkFlag(CAM_FLAGS_UNDERWATER);
}
void dCamera_c::apply() {
updateUnderwaterDepth(mView.mPosition);
if (isUnderwater_()) {
onFlag(CAM_FLAGS_UNDERWATER);
} else {
offFlag(CAM_FLAGS_UNDERWATER);
}
if (mScreenShaker.execute()) {
mView.mPosition += mScreenShaker.getShakeOffset();
mView.mTarget += mScreenShaker.getShakeOffset();
}
mLookAtCamera.mPos = mView.mPosition;
mLookAtCamera.mAt = mView.mTarget;
if (mLookAtCamera.mAt.x == mLookAtCamera.mPos.x && mLookAtCamera.mAt.z == mLookAtCamera.mPos.z) {
mLookAtCamera.mPos.z += 1.0f;
}
mLookAtCamera.mUp = mVec3_c::Ey;
mLookAtCamera.doUpdateMatrix();
mMtx.copyFrom(mLookAtCamera.getViewMatrix());
// TODO: Maybe mutating mtx wasn't intended here but it's probably unproblematic
mMtx.inverse();
mMtxInv = mMtx;
mMtxInv.m[0][3] = 0.0f;
mMtxInv.m[1][3] = 0.0f;
mMtxInv.m[2][3] = 0.0f;
dSnd3DManager_c::GetInstance()->updateFromCamera(mLookAtCamera);
applyTilt();
setFrustum(mView.mFov, sHio.field_0x04, sHio.field_0x08);
nw4r::g3d::Camera cam = dStageMgr_c::GetInstance()->getCamera(mMyCameraIndex);
mpScreen->CopyToG3D(cam);
mLookAtCamera.setG3DCamera(cam);
}
s32 dCamera_c::setActiveCamera(s32 newCamIdx) {
if (mpCameras[newCamIdx] == nullptr) {
return mActiveCameraIdx;
} else if (mActiveCameraIdx == newCamIdx) {
return newCamIdx;
} else {
for (int i = 0; i < CAM_MAX; i++) {
mpCameras[i]->deactivate();
}
mpCameras[newCamIdx]->activate();
debugPrintf7("unit %d -> %d", mActiveCameraIdx, newCamIdx);
mActiveCameraIdx = newCamIdx;
return newCamIdx;
}
}
f32 dCamera_c::getEventLetterboxAmount() {
return sHio.field_0x1C;
}
void dCamera_c::setFrustum(f32 fov, f32 near, f32 far) {
if (dGfx_c::isTvMode4To3()) {
mpScreen->Reset(
0.0f, dGfx_c::getEFBHeightDifferenceF(), dGfx_c::getCurrentScreenWidthF(), dGfx_c::getHeightScaledF(),
mpScreen->GetCanvasMode()
);
} else {
mpScreen->Reset(
0.0f, 0.0f, dGfx_c::getCurrentScreenWidthF(), dGfx_c::getCurrentScreenHeightF(), mpScreen->GetCanvasMode()
);
if (dGfx_c::isTvMode4To3()) {
// Unreachable...
fov *= sHio.field_0x0C;
}
}
mpScreen->SetProjectionType(EGG::Frustum::PROJ_PERSP);
mpScreen->SetNearZ(near);
mpScreen->SetFarZ(far);
mpScreen->SetFovy(fov);
// Possible fakematch: Either the internals of EGG::Matrix34f allow
// copying the data via compiler-generated struct copies (lwz/stw),
// or this is really what they did. NSMBW symbols confirm that this function
// takes mMtx_c while it's clear that EGG cameras return EGG matrices.
mMtx_c mtx = *(mMtx_c *)&mLookAtCamera.getViewMatrix();
mFrustum.set(fov, mpScreen->GetAspect(), near, far, mtx);
}
mAng dCamera_c::getYAngle() const {
return mYAngle;
}
mAng dCamera_c::getYRot() const {
return field_0xDC0.fn_8019E930();
}
mAng dCamera_c::getXZAngle() const {
return mXZAngle;
}
bool dCamera_c::fn_8019E3C0() const {
if (mActiveCameraIdx == CAM_GAME_0) {
return mGameCam1.getField_0x078() == true;
} else if (mActiveCameraIdx == CAM_GAME_1) {
return mGameCam2.getField_0x078() == true;
}
return false;
}
void dCamera_c::enterMap() {
if (!checkFlag(CAM_FLAGS_MAP)) {
onFlag(CAM_FLAGS_MAP);
}
}
void dCamera_c::leaveMap() {
if (checkFlag(CAM_FLAGS_MAP)) {
mMapCam.startOut();
}
}
void dCamera_c::applyTilt() {
EGG::Matrix34f &mtx = mLookAtCamera.getViewMatrix();
mMtx_c rotMtx;
rotMtx.ZrotS(mAng::fromDeg(-mView.mTilt));
MTXConcat(rotMtx, mtx.m, mtx.m);
}
bool dCamera_c::fn_8019E4D0() const {
dAcPy_c *link = dAcPy_c::GetLinkM();
return !EventManager::isInEvent() && !(link != nullptr && link->checkActionFlagsCont(0x5d7));
}
void dCamera_c::updateUnderwaterDepth(const mVec3_c &pos) {
mVec3_c chkPos = pos;
dBgS_RoofChk roofChk;
roofChk.SetPos(&chkPos);
roofChk.SetUnderwaterRoof();
roofChk.SetField_0x7C(1);
f32 f = dBgS::GetInstance()->RoofChk(&roofChk);
if (f != 1e9f) {
chkPos.y = f;
} else {
chkPos.y += 10000.0f;
}
dBgS_ObjGndChk_Wtr wtrChk;
wtrChk.SetPos(chkPos);
f32 waterHeight = dBgS::GetInstance()->GroundCross(&wtrChk);
if (waterHeight != 1e9f) {
mIsUnderwater = waterHeight > pos.y;
mWaterHeight = waterHeight;
} else {
mIsUnderwater = false;
mWaterHeight = -1e9f;
}
if (mIsUnderwater) {
mUnderwaterDepth = waterHeight - pos.y;
} else {
mUnderwaterDepth = 0.0f;
}
}
bool dCamera_c::isUnderwater_() const {
return mIsUnderwater;
}
f32 dCamera_c::getUnderwaterDepth() const {
return mUnderwaterDepth;
}
bool dCamera_c::screen_shaker::execute() {
mShakeOffset = mVec3_c::Zero;
bool ret = false;
if (mScreenShakeIntensity > 0.001f) {
static s32 upOrDown = 0;
upOrDown = upOrDown ^ 1;
f32 f;
if (upOrDown) {
f = 400.0f;
} else {
f = -400.0f;
}
mVec3_c shakeOffset(cM::rndFX(100.0f), cM::rndF(f), 0.0f);
shakeOffset.normalize();
// Note: the difference in coordinates here is due to the camera view using a different
// coordinate convention than game code.
shakeOffset.rotX(mpCamera->getYAngle());
shakeOffset.rotY(mpCamera->getXZAngle());
mVec3_c chckVector = shakeOffset * (mScreenShakeIntensity + 5.0f);
shakeOffset *= mScreenShakeIntensity;
mVec3_c pos = mpCamera->getPosition();
mVec3_c dest = pos + chckVector;
dBgS_CamLinChk chk;
chk.Set(&pos, &dest, nullptr);
if (!dBgS::GetInstance()->LineCross(&chk)) {
mShakeOffset = shakeOffset;
ret = true;
}
}
mScreenShakeIntensity = 0.0f;
return ret;
}
mVec3_c dCamera_c::screen_shaker::getShakeOffset() const {
return mShakeOffset;
}
void dCamera_c::substruct_1::setCamera(dCamera_c *cam) {
mpCamera = cam;
}
void dCamera_c::substruct_1::fn_8019E890() {
fn_8019E8D0(mpCamera->getXZAngle());
}
void dCamera_c::substruct_1::fn_8019E8D0(const mAng &ang) {
if (!mActive) {
mActive = true;
field_0x04 = ang;
mFSStickAngle = dPad::getFSStickAngle();
}
}
mAng dCamera_c::substruct_1::fn_8019E930() const {
return field_0x04;
}
void dCamera_c::substruct_1::fn_8019E940() {
if (mActive) {
mAng angle = mFSStickAngle - dPad::getFSStickAngle();
f32 distance = dPad::getFSStickDistance();
if (distance < sHio.field_0x14 || mAng::abs(angle) > sHio.field_0x18) {
mActive = false;
}
}
if (!mActive) {
field_0x04 = mpCamera->getXZAngle();
mFSStickAngle = dPad::getFSStickAngle();
}
}
bool dCamera_c::setEventCamView(const mVec3_c &target, const mVec3_c &pos, f32 fov, f32 tilt) {
CamView view(pos, target, fov, tilt);
getEventCam()->setView(view);
return true;
}
bool dCamera_c::fn_8019EA70(bool b) {
CamView view = getEventCam()->getView();
mVec3_c dest;
dest = camGetPointOnLine(view.mTarget, view.mPosition, dAcPy_c::GetLinkM()->mPositionCopy3);
view.mTarget = dest;
// TODO maybe inline
getGameCam1()->setView(view);
getGameCam1()->onFlag(0x1);
if (b) {
getGameCam1()->onFlag(0x4000);
} else {
getGameCam1()->offFlag(0x200);
}
return true;
}
f32 dCamera_c::fn_8019EB90() {
return getGameCam1()->getField_0x0AC();
}
+1 -1
View File
@@ -476,7 +476,7 @@ bool dFlow_c::handleEventInternal(const MsbFlowInfo *element) {
case EVENT_CAMERA_42: {
s32 p1 = (params1n2 >> 16) & 0xFFFF;
s32 p2 = params1n2 & 0xFFFF;
dScGame_c::getCamera(0)->doFn_800918E0(p1, p2);
dScGame_c::getCamera(0)->getEventCam()->fn_800918E0(p1, p2);
break;
}
case EVENT_LYT_MINI_GAME: {
+1 -1
View File
@@ -134,7 +134,7 @@ void dStageMgr_c::initializeState_ReadLayerObjectRes() {
parseBzsStageRoom(roomId, bzs);
}
if (dScGame_c::isStateLayerWithSeekerStoneHintMenu()) {
if (dScGame_c::isSeekerStoneStageAndLayer()) {
mLayoutArcCtrl2.set(sSeekerStoneLayoutArcs, ARRAY_LENGTH(sSeekerStoneLayoutArcs));
mLayoutArcCtrl2.load(dHeap::work2Heap.heap);
addActorId(fProfile::LYT_SEEKER_STONE);
+43 -39
View File
@@ -2224,7 +2224,7 @@ static const char *sPriorityGroupNames[] = {
};
void dLytMapMain_c::build() {
mIsVisible = 0;
mIsVisible = false;
field_0x8DB0 = 0;
if (dScGame_c::isCurrentStage("F102")) {
// awesome but unnecessary
@@ -2359,7 +2359,7 @@ void dLytMapMain_c::build() {
mAnmGroups[MAP_MAIN_ANIM_IN].unbind();
mAnmGroups[MAP_MAIN_ANIM_OUT].bind(false);
field_0x8C8C = mAnmGroups[MAP_MAIN_ANIM_OUT].getLastFrame();
mOutDuration = mAnmGroups[MAP_MAIN_ANIM_OUT].getLastFrame();
mAnmGroups[MAP_MAIN_ANIM_OUT].unbind();
field_0x8CAC = 0;
mDisplayedBeaconCount = getMaxBeaconCount();
@@ -3182,18 +3182,17 @@ void dLytMapMain_c::setupEvent(s32 event, s32 arg1, s32 arg2) {
}
mMarkers.setLinkRot(link->getRotation());
// TODO - mAng nonsense?
field_0x8D68 = dScGame_c::getCamera(0)->fn_8019E3B0();
field_0x8D68 = dScGame_c::getCamera(0)->getXZAngle();
mpAllPane->SetVisible(false);
getGlobal()->setField_0x55(field_0x8CAE);
mDoCameraTransition = false;
mCameraTransitionPossible = false;
switch (event) {
case MAP_EVENT_NONE: {
if (mRoomType != ROOMTYPE_BOSS_HOUSE && mRoomType != ROOMTYPE_SKYFIELD_INTERIOR && field_0x8CAE) {
mCurrentMapMode = dLytMapGlobal_c::MAPMODE_ZOOM;
mNextMapMode = mCurrentMapMode;
mMapUpDirection = false;
mDoCameraTransition = true;
mCameraTransitionPossible = true;
} else {
if (!sSavedMapData.entries[mRoomType].isValid) {
if (MinigameManager::isInMinigameState(MinigameManager::SPIRAL_CHARGE_TUTORIAL)) {
@@ -3201,7 +3200,7 @@ void dLytMapMain_c::setupEvent(s32 event, s32 arg1, s32 arg2) {
fn_80142C80(mCurrentMapMode);
// TODO - regswap (???)
mMapUpDirection = false;
mDoCameraTransition = true;
mCameraTransitionPossible = true;
} else {
loadMapState();
if (mRoomType == ROOMTYPE_SKYFIELD) {
@@ -3212,21 +3211,21 @@ void dLytMapMain_c::setupEvent(s32 event, s32 arg1, s32 arg2) {
mMapUpDirection = true;
}
if (mMapUpDirection == false) {
mDoCameraTransition = true;
mCameraTransitionPossible = true;
}
}
} else {
loadMapState();
if (mMapUpDirection == false) {
mDoCameraTransition = true;
mCameraTransitionPossible = true;
}
}
if (link->checkActionFlags(daPlayerActBase_c::FLG0_CRAWLING)) {
mDoCameraTransition = false;
mCameraTransitionPossible = false;
}
}
if (mRoomType == ROOMTYPE_DUNGEON) {
mDoCameraTransition = false;
mCameraTransitionPossible = false;
}
break;
}
@@ -3255,7 +3254,7 @@ void dLytMapMain_c::setupEvent(s32 event, s32 arg1, s32 arg2) {
case 1: mCurrentMapMode = dLytMapGlobal_c::MAPMODE_ZOOM; break;
}
mMapUpDirection = true;
mDoCameraTransition = false;
mCameraTransitionPossible = false;
break;
}
case MAP_EVENT_MAP_INTRO: {
@@ -3265,7 +3264,7 @@ void dLytMapMain_c::setupEvent(s32 event, s32 arg1, s32 arg2) {
mCurrentMapMode = dLytMapGlobal_c::MAPMODE_WORLD;
}
mMapUpDirection = true;
mDoCameraTransition = false;
mCameraTransitionPossible = false;
break;
}
case MAP_EVENT_DUNGEON_MAP_GET:
@@ -3278,20 +3277,20 @@ void dLytMapMain_c::setupEvent(s32 event, s32 arg1, s32 arg2) {
case MAP_EVENT_SW_BANK_SMALL: {
mCurrentMapMode = dLytMapGlobal_c::MAPMODE_STAGE;
mMapUpDirection = true;
mDoCameraTransition = false;
mCameraTransitionPossible = false;
break;
}
case MAP_EVENT_FIELD_MAP_CHANGE_5:
case MAP_EVENT_FIELD_MAP_CHANGE_8: {
mCurrentMapMode = dLytMapGlobal_c::MAPMODE_STAGE;
mMapUpDirection = true;
mDoCameraTransition = false;
mCameraTransitionPossible = false;
break;
}
case MAP_EVENT_SAVE_OBJ: {
mCurrentMapMode = dLytMapGlobal_c::MAPMODE_PROVINCE;
mMapUpDirection = true;
mDoCameraTransition = false;
mCameraTransitionPossible = false;
break;
}
}
@@ -3300,16 +3299,16 @@ void dLytMapMain_c::setupEvent(s32 event, s32 arg1, s32 arg2) {
mNextMapMode = mCurrentMapMode;
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD || mCurrentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE ||
mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD_SKY) {
mDoCameraTransition = false;
mCameraTransitionPossible = false;
}
if (mDoCameraTransition) {
dScGame_c::getCamera(0)->doFn_80093380();
if (mCameraTransitionPossible) {
dScGame_c::getCamera(0)->getMapCam()->setCameraTransition();
} else {
dScGame_c::getCamera(0)->doFn_80093360();
dScGame_c::getCamera(0)->doFn_80093340();
dScGame_c::getCamera(0)->getMapCam()->setNoCameraTransition();
dScGame_c::getCamera(0)->getMapCam()->fn_80093340();
}
dScGame_c::getCamera(0)->fn_8019E410();
dScGame_c::getCamera(0)->enterMap();
dLytMapMain_vt0x10();
s32 floor = dStage_c::GetInstance()->getMapRelated()->getField_0x1EC();
mCurrentFloor = floor;
@@ -3349,27 +3348,27 @@ void dLytMapMain_c::setupEvent(s32 event, s32 arg1, s32 arg2) {
void dLytMapMain_c::close() {
dBase_c::s_DrawControlFlags &= ~dBase_c::BASE_PROP_0x10;
mDoCameraTransition = false;
mCameraTransitionPossible = false;
if (mMapEvent == MAP_EVENT_NONE) {
if (mRoomType == ROOMTYPE_FIELD || mRoomType == ROOMTYPE_SKYLOFT) {
if (!field_0x8CAE && !mMapUpDirection) {
mDoCameraTransition = true;
mCameraTransitionPossible = true;
}
} else if (mRoomType == ROOMTYPE_DUNGEON && !field_0x8CAE && !mMapUpDirection) {
mDoCameraTransition = false;
dScGame_c::getCamera(0)->doFn_80093340();
mCameraTransitionPossible = false;
dScGame_c::getCamera(0)->getMapCam()->fn_80093340();
}
}
if (mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD || mCurrentMapMode == dLytMapGlobal_c::MAPMODE_PROVINCE ||
mCurrentMapMode == dLytMapGlobal_c::MAPMODE_WORLD_SKY) {
mDoCameraTransition = false;
mCameraTransitionPossible = false;
}
if (mDoCameraTransition) {
dScGame_c::getCamera(0)->doFn_80093380();
if (mCameraTransitionPossible) {
dScGame_c::getCamera(0)->getMapCam()->setCameraTransition();
} else {
dScGame_c::getCamera(0)->doFn_80093360();
dScGame_c::getCamera(0)->getMapCam()->setNoCameraTransition();
}
if (mMapEvent == MAP_EVENT_NONE) {
@@ -3377,7 +3376,7 @@ void dLytMapMain_c::close() {
}
mEventDone = false;
dScGame_c::getCamera(0)->fn_8019E430();
dScGame_c::getCamera(0)->leaveMap();
dSndPlayerMgr_c::GetInstance()->leaveMap();
mStateMgr.changeState(StateID_Out);
@@ -4088,6 +4087,10 @@ void dLytMapMain_c::setupFlags() {
}
}
void dLytMapMain_c::fn_8013B350() {
field_0x8C84 = 1;
}
void dLytMapMain_c::initializeState_In() {
if (mMapEvent == MAP_EVENT_SAVE_OBJ) {
displaySaveObjs();
@@ -4096,7 +4099,7 @@ void dLytMapMain_c::initializeState_In() {
}
}
if (mDoCameraTransition || mMapEvent == MAP_EVENT_MAP_INTRO) {
if (mCameraTransitionPossible || mMapEvent == MAP_EVENT_MAP_INTRO) {
mpInOutAnmGroup = &mAnmGroups[MAP_MAIN_ANIM_IN];
} else {
mpInOutAnmGroup = &mAnmGroups[MAP_MAIN_ANIM_IN_NO_CAM];
@@ -4108,10 +4111,11 @@ void dLytMapMain_c::initializeState_In() {
mPinIconAggregate.setScale(getGlobal()->getZoomFrame());
}
void dLytMapMain_c::executeState_In() {
mIsVisible = 1;
mIsVisible = true;
dLytMapGlobal_c *global = getGlobal();
if ((!mDoCameraTransition || !field_0x8C84) && mDoCameraTransition) {
// ???
if ((!mCameraTransitionPossible || !field_0x8C84) && mCameraTransitionPossible) {
return;
}
@@ -4596,7 +4600,7 @@ void dLytMapMain_c::initializeState_Out() {
mPopupInfo.mStateMgr.changeState(StateID_Out);
}
dLytMeter_c::GetInstance()->setMeterMode(dLytMeterMain_c::MODE_MAP_INIT);
if (mDoCameraTransition || mMapEvent == MAP_EVENT_MAP_INTRO) {
if (mCameraTransitionPossible || mMapEvent == MAP_EVENT_MAP_INTRO) {
mpInOutAnmGroup = &mAnmGroups[MAP_MAIN_ANIM_OUT];
} else {
mpInOutAnmGroup = &mAnmGroups[MAP_MAIN_ANIM_OUT_NO_CAM];
@@ -4604,7 +4608,7 @@ void dLytMapMain_c::initializeState_Out() {
mpInOutAnmGroup->bind(false);
mpInOutAnmGroup->setFrame(0.0f);
field_0x8C8C = mpInOutAnmGroup->getLastFrame();
mOutDuration = mpInOutAnmGroup->getLastFrame();
if (fn_80141530()) {
dBase_c::s_NextExecuteControlFlags &= ~dBase_c::BASE_PROP_0x10;
@@ -4620,7 +4624,7 @@ void dLytMapMain_c::executeState_Out() {
dBase_c::s_NextExecuteControlFlags &= ~dBase_c::BASE_PROP_0x10;
mLyt.calc();
mpInOutAnmGroup->unbind();
mIsVisible = 0;
mIsVisible = false;
mStateMgr.changeState(StateID_Invisible);
}
}
@@ -5047,8 +5051,8 @@ void dLytMapMain_c::forceOut() {
mAnmGroups[MAP_MAIN_ANIM_OUT].unbind();
dBase_c::s_NextExecuteControlFlags &= ~dBase_c::BASE_PROP_0x10;
dBase_c::s_DrawControlFlags &= ~dBase_c::BASE_PROP_0x10;
dScGame_c::getCamera(0)->doFn_80093360();
dScGame_c::getCamera(0)->fn_8019E430();
dScGame_c::getCamera(0)->getMapCam()->setNoCameraTransition();
dScGame_c::getCamera(0)->leaveMap();
mStateMgr.changeState(StateID_Invisible);
}
+2 -2
View File
@@ -268,9 +268,9 @@ bool dLytMeterABtn_c::execute() {
field_0x1BC = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_A);
field_0x1C0 = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_A);
if (field_0x1BC == 0x76) {
if (field_0x1BC == LytDoButtonRelated::ACT_IE_ETC_REMOVE_BEACON) {
state = true;
} else if (field_0x1BC == 0x57) {
} else if (field_0x1BC == LytDoButtonRelated::ACT_IE_INFO_GRAB_3) {
state = false;
}
+12 -9
View File
@@ -372,7 +372,7 @@ void dLytMeterDowsing_c::executeState_Invisible() {
}
void dLytMeterDowsing_c::finalizeState_Invisible() {
if (getSelectedDowsingSlot() != DowsingTarget::SLOT_NONE &&
LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52) {
LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == LytDoButtonRelated::ACT_IE_INFO_DOWSE) {
mAnm[DOWSING_ANIM_DECIDE].setToEnd();
mAnm[DOWSING_ANIM_DECIDE].setAnimEnable(true);
mLyt.calc();
@@ -404,7 +404,7 @@ void dLytMeterDowsing_c::executeState_Wait() {
dLytMeter_c::GetMain()->fn_800D5380(0) && !dLytMeter_c::GetMain()->isInModeMap() &&
!dLytMeter_c::GetMain()->isInModePause() && getSelectedDowsingSlot() != DowsingTarget::SLOT_LOOK &&
getSelectedDowsingSlot() != DowsingTarget::SLOT_NONE &&
LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52) {
LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == LytDoButtonRelated::ACT_IE_INFO_DOWSE) {
mAnm[DOWSING_ANIM_IN].setBackwardsOnce();
mAnm[DOWSING_ANIM_IN].setToEnd2();
mAnm[DOWSING_ANIM_IN].setAnimEnable(true);
@@ -498,7 +498,7 @@ void dLytMeterDowsing_c::initializeState_MenuSelectingOut() {
mAnm[DOWSING_ANIM_IN].setAnimEnable(true);
field_0x550A = 0;
if (getSelectedDowsingSlot() != DowsingTarget::SLOT_NONE &&
LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52) {
LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == LytDoButtonRelated::ACT_IE_INFO_DOWSE) {
if (getSelectedDowsingSlot() != DowsingTarget::SLOT_LOOK) {
field_0x550A = 1;
}
@@ -551,8 +551,9 @@ void dLytMeterDowsing_c::initializeState_ToUse() {
mAnm[DOWSING_ANIM_INPUT_0].setAnimEnable(true);
if (FileManager::GetInstance()->getDowsingSlotIdx() != 8 &&
LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52 && dLytMeter_c::GetMain()->fn_800D5380(0) &&
!dLytMeter_c::GetMain()->isInModeMap() && !dLytMeter_c::GetMain()->isInModePause()) {
LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == LytDoButtonRelated::ACT_IE_INFO_DOWSE &&
dLytMeter_c::GetMain()->fn_800D5380(0) && !dLytMeter_c::GetMain()->isInModeMap() &&
!dLytMeter_c::GetMain()->isInModePause()) {
mAnm[DOWSING_ANIM_RESET].setAnimEnable(true);
mAnm[DOWSING_ANIM_RESET].setBackwardsOnce();
mAnm[DOWSING_ANIM_RESET].setToStart();
@@ -560,8 +561,9 @@ void dLytMeterDowsing_c::initializeState_ToUse() {
}
void dLytMeterDowsing_c::executeState_ToUse() {
if (FileManager::GetInstance()->getDowsingSlotIdx() != 8 &&
LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52 && dLytMeter_c::GetMain()->fn_800D5380(0) &&
!dLytMeter_c::GetMain()->isInModeMap() && !dLytMeter_c::GetMain()->isInModePause()) {
LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == LytDoButtonRelated::ACT_IE_INFO_DOWSE &&
dLytMeter_c::GetMain()->fn_800D5380(0) && !dLytMeter_c::GetMain()->isInModeMap() &&
!dLytMeter_c::GetMain()->isInModePause()) {
if (mAnm[DOWSING_ANIM_INPUT_0].isStop2()) {
if (!mAnm[DOWSING_ANIM_RESET].isEnabled() || mAnm[DOWSING_ANIM_RESET].isStop2()) {
mStateMgr.changeState(StateID_Wait);
@@ -594,8 +596,9 @@ void dLytMeterDowsing_c::initializeState_ToUnuse() {
mAnm[DOWSING_ANIM_INPUT_0].setAnimEnable(true);
if (FileManager::GetInstance()->getDowsingSlotIdx() != 8 &&
LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == 0x52 && dLytMeter_c::GetMain()->fn_800D5380(0) &&
!dLytMeter_c::GetMain()->isInModeMap() && !dLytMeter_c::GetMain()->isInModePause()) {
LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_C) == LytDoButtonRelated::ACT_IE_INFO_DOWSE &&
dLytMeter_c::GetMain()->fn_800D5380(0) && !dLytMeter_c::GetMain()->isInModeMap() &&
!dLytMeter_c::GetMain()->isInModePause()) {
mAnm[DOWSING_ANIM_RESET].setAnimEnable(true);
mAnm[DOWSING_ANIM_RESET].setForwardOnce();
mAnm[DOWSING_ANIM_RESET].setToStart();
@@ -436,7 +436,7 @@ bool dLytMeterGanbariGauge_c::execute() {
}
}
mVec3_c diff = dAcPy_c::GetLink()->mPositionCopy3 - dScGame_c::getCamera(0)->getPositionMaybe();
mVec3_c diff = dAcPy_c::GetLink()->mPositionCopy3 - dScGame_c::getCamera(0)->getPosition();
f32 len = diff.mag();
mVec3_c v;
d3d::worldToScreen(v, dAcPy_c::GetLink()->mPositionCopy3);
@@ -656,8 +656,8 @@ bool dLytMeterGanbariGauge_c::fn_80104760() const {
}
bool dLytMeterGanbariGauge_c::fn_801047B0() const {
if (fn_80081FE0(dScGame_c::getCamera(0)->getField_0xD98(), "mogu") ||
fn_80081FE0(dScGame_c::getCamera(0)->getField_0xD98(), "mogu2")) {
if (dScGame_c::getCamera(0)->getGameCam1()->isCurrentTrend("mogu") ||
dScGame_c::getCamera(0)->getGameCam1()->isCurrentTrend("mogu2")) {
return true;
}
return false;
+2 -2
View File
@@ -186,9 +186,9 @@ bool dLytMeterZBtn_c::execute() {
return true;
}
field_0x1C4 = true;
if ((!fn_80081FE0(dScGame_c::getCamera(0)->getField_0xD98(), "mogu") ||
if ((!dScGame_c::getCamera(0)->getGameCam1()->isCurrentTrend("mogu") ||
AttentionManager::GetInstance()->checkLink2()) &&
LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_Z) == 0x67) {
LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_Z) == LytDoButtonRelated::ACT_IE_ETC_VIEW_SURFACE) {
field_0x1C4 = false;
LytDoButtonRelated::set(LytDoButtonRelated::DO_BUTTON_Z, LytDoButtonRelated::ACT_IE_NONE);
}
+3 -3
View File
@@ -1056,12 +1056,12 @@ bool dTgMassObjInstance::checkForHit(
param_5->mCutCounter++;
mVec3_c local16C(mGroundHeight.x, mGroundHeight.y, mGroundHeight.z);
mColor local17C = 0xFFFFFFFF;
f32 camField2A8 = dScGame_c::getCamera()->getField_0x2A8();
f32 waterHeight = dScGame_c::getCamera()->getWaterHeight();
local17C.r = mTevColor.r;
local17C.g = mTevColor.g;
local17C.b = mTevColor.b;
local17C.a = mTevColor.a;
if (local16C.y + 100.f < camField2A8 && mMassObjSubtype <= 5) {
if (local16C.y + 100.f < waterHeight && mMassObjSubtype <= 5) {
if (dScGame_c::isCurrentStage("D100")) {
mMassObjSubtype = 6;
} else {
@@ -1424,7 +1424,7 @@ extern void LoadMaterial(
);
void GrassModelData::draw(f32 param_1, f32 param_2, nw4r::math::MTX34 *pMtx) {
mVec3_c cameraPosition = dScGame_c::getCamera()->getPositionMaybe();
mVec3_c cameraPosition = dScGame_c::getCamera()->getPosition();
bool isInFaronWoods = dScGame_c::isCurrentStage("F100");
nw4r::g3d::ResMatMisc miscData(mResMat.GetResMatMisc());
miscData.SetLightSetIdx(1);
+2 -6
View File
@@ -416,11 +416,9 @@ void AttentionGroup::fn_800964B0() {
}
}
extern "C" f32 lbl_8057CD9C;
f32 AttentionManager::targetScore(dAcObjBase_c *target, dAcObjBase_c *origin) {
s16 angle = cLib::targetAngleY(target->mPosition, origin->mPosition) - origin->mRotation.y.mVal;
f32 viewAngle = fabsf(angle * lbl_8057CD9C);
f32 viewAngle = fabsf(mAng::s2n_c(angle));
if (viewAngle > 0.5f) {
return viewAngle;
}
@@ -429,9 +427,7 @@ f32 AttentionManager::targetScore(dAcObjBase_c *target, dAcObjBase_c *origin) {
// Maybe checks if actor is currently targeted
bool AttentionManager::fn_80096B40(dAcObjBase_c *actor) {
AttentionPool *refs = mGroups[1].getOtherPool();
dAcObjBase_c *ac = refs->getActor(mModels.mCurrentTargetInfoIdx);
if (ac == actor) {
if (getTargetedActorUnchecked() == actor) {
mHasTarget = 1;
}
return true;
+57
View File
@@ -0,0 +1,57 @@
#include "toBeSorted/d_camera_base.h"
#include "common.h"
// All of these base functions and the vtable got stripped
bool dCameraBase_c::create() {
return true;
}
bool dCameraBase_c::remove() {
return true;
}
bool dCameraBase_c::execute() {
return true;
}
bool dCameraBase_c::draw() {
return true;
}
bool dCameraBase_c::doCreate(s32 index) {
if (!mCreated) {
if (!create()) {
return false;
}
mCreated = true;
mIndex = index;
}
return true;
}
bool dCameraBase_c::doRemove() {
mPrevIsActive = false;
return remove();
}
bool dCameraBase_c::doExecute() {
if (mIsActive && !mPrevIsActive) {
onBecomeActive();
} else if (!mIsActive && mPrevIsActive) {
onBecomeInactive();
}
mPrevIsActive = mIsActive;
if (!mIsActive) {
return false;
} else {
return execute();
}
}
bool dCameraBase_c::doDraw() {
if (mPrevIsActive) {
return draw();
}
return false;
}
+21
View File
@@ -0,0 +1,21 @@
#include "toBeSorted/d_camera_event.h"
#include "common.h"
class dCameraEvent_HIO_c {
public:
dCameraEvent_HIO_c();
virtual ~dCameraEvent_HIO_c();
/* 0x04 */ f32 field_0x04;
/* 0x08 */ f32 field_0x08;
/* 0x0A */ s16 field_0x0A;
};
dCameraEvent_HIO_c::~dCameraEvent_HIO_c() {}
dCameraEvent_HIO_c::dCameraEvent_HIO_c() : field_0x04(0.0f), field_0x08(180.0f), field_0x0A(0) {}
static dCameraEvent_HIO_c sHio;
dCameraEvent_c::dCameraEvent_c()
: field_0x48(0), field_0x4A(-1), mEventRelated(1, nullptr), field_0xA0(0), field_0xA4(-1), field_0xAC(-1) {}
File diff suppressed because it is too large Load Diff
+241
View File
@@ -0,0 +1,241 @@
#include "toBeSorted/d_camera_map.h"
#include "common.h"
#include "d/a/d_a_player.h"
#include "d/a/obj/d_a_obj_base.h"
#include "d/col/bg/d_bg_s.h"
#include "d/col/bg/d_bg_s_lin_chk.h"
#include "d/col/cc/d_cc_s.h"
#include "d/d_sc_game.h"
#include "d/lyt/d_lyt_map.h"
#include "m/m_vec.h"
#include "toBeSorted/d_camera_math.h"
#include "toBeSorted/deg_angle_util.h"
class dCameraMap_HIO_c {
public:
dCameraMap_HIO_c();
virtual ~dCameraMap_HIO_c();
/* 0x04 */ f32 field_0x04;
/* 0x08 */ f32 field_0x08;
/* 0x0C */ f32 field_0x0C;
/* 0x10 */ f32 field_0x10;
/* 0x14 */ f32 field_0x14;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 field_0x1C;
/* 0x20 */ f32 field_0x20;
/* 0x24 */ f32 field_0x24;
/* 0x28 */ s16 field_0x28;
/* 0x2C */ f32 field_0x2C;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 field_0x34;
/* 0x38 */ u8 _0x38[0x3C - 0x38];
/* 0x3C */ u16 field_0x3C;
/* 0x3E */ u16 field_0x3E;
};
dCameraMap_HIO_c::~dCameraMap_HIO_c() {}
dCameraMap_HIO_c::dCameraMap_HIO_c() {
field_0x04 = 2000.0f;
field_0x08 = 1000.0f;
field_0x0C = 0.6f;
field_0x10 = 0.75f;
field_0x18 = 10000.0f;
field_0x14 = 2500.0f;
field_0x20 = 89.0f;
field_0x1C = 3.0f;
field_0x24 = 90.0f;
field_0x28 = 5;
field_0x3E = 2;
field_0x2C = 0.7f;
field_0x30 = 0.2f;
field_0x34 = 0.9f;
field_0x3C = 0;
}
static dCameraMap_HIO_c sHio;
mVec3_c fn_800929C0(const mVec3_c &p2, const mVec3_c &p3, dAcObjBase_c *obj) {
mVec3_c ret;
mVec3_c v1 = p3;
dAcPy_c *link = dAcPy_c::LINK;
dAcObjBase_c *other = nullptr;
if (obj != nullptr && obj != link) {
other = obj;
}
mVec3_c v2 = p3;
dAcObjBase_c *controllingActor = (dAcObjBase_c *)link->getLinkage().mControllingActor.p_owner;
for (int i = 0; i < 3; i++) {
ret = v1;
if (!dCcS::GetInstance()->ChkCameraPoint(p2, v2, v1, 15.0f, link, other, controllingActor)) {
break;
}
if (p2 == v1) {
break;
}
mVec3_c tmp = p3 - v1;
tmp.normalize();
v2 = v1 - tmp * 2.0f;
}
return ret;
}
void dCameraMap_c::onBecomeActive() {
mTimer = 0;
mSourceView = mView;
mTargetView = mView;
if (!(sHio.field_0x3C & 0x100)) {
mTargetView.mPosition = mTargetView.mTarget;
}
mTargetView.mPosition.y += sHio.field_0x08;
mTargetView.mFov = sHio.field_0x24;
mTargetView.mTilt = 0.0f;
dLytMap_c::GetInstance()->doFn_8013B350();
dPolar polar(mView.mPosition - mView.mTarget);
field_0xC4 = polar.V.value;
mIsMovingOut = false;
mIsActiveOrAnimating = true;
}
void dCameraMap_c::onBecomeInactive() {
mIsMovingOut = true;
dScGame_c::getCamera()->getGameCam1()->setView(mView);
}
bool dCameraMap_c::create() {
dAcPy_c *link = dAcPy_c::GetLinkM();
if (link == nullptr) {
return false;
}
field_0x44 = link;
mView.mTarget = link->mPosition + mVec3_c(0.0f, 100.0f, 0.0f);
mVec3_c v(0.0f, 200.0f, 500.0f);
v.rotY(link->mRotation.y - 0x8000);
mView.mPosition = mView.mTarget + v;
mView.mFov = 55.0f;
mView1 = mView;
field_0x3C = sHio.field_0x04;
field_0x40 = 0.0f;
field_0x38 = 0.0f;
field_0x2C = mVec3_c::Zero;
mIsActiveOrAnimating = false;
mIsMovingOut = true;
field_0xB0 = 0;
mTimer = 0;
return true;
}
bool dCameraMap_c::remove() {
return true;
}
bool dCameraMap_c::execute() {
s16 duration = sHio.field_0x28;
if ((sHio.field_0x3C & 0x200) && mIsMovingOut) {
// TODO no-op
duration = sHio.field_0x28;
}
field_0x40 = 1.0f;
if (sHio.field_0x3C & 0x8) {
mTargetView = mSourceView;
}
dBgS_CamLinChk chk;
chk.Set(&mSourceView.mPosition, &mTargetView.mPosition, (dAcObjBase_c *)nullptr);
if (dBgS::GetInstance()->LineCross(&chk)) {
mTargetView = mSourceView;
}
if (sHio.field_0x3C & 0x10) {
if (sHio.field_0x3E == 1) {
// Reorients the main camera to point to north when opening the map without a transition... unused
dPolar polar(mSourceView.mPosition - mSourceView.mTarget);
polar.V.Set(0.0f);
mSourceView.mPosition = mSourceView.mTarget + polar.toCartesian();
}
mTargetView = mSourceView;
mTimer = 1;
}
if (mIsMovingOut) {
if (mTimer > 0) {
mTimer--;
if (mTimer == 0) {
mIsActiveOrAnimating = false;
}
}
} else {
if (mTimer < duration) {
mTimer++;
}
}
f32 f = (f32)mTimer / (f32)duration;
f32 f5 = camEaseInOut(f, sHio.field_0x2C);
f32 f6 = camEaseInOut(f, sHio.field_0x30);
f32 f8 = f5 * 0.99f;
f32 tiltFovInterp = camEaseInOut(f, sHio.field_0x34);
mView.mTarget = mSourceView.mTarget + (mTargetView.mTarget - mSourceView.mTarget) * f5;
mView.mPosition.x = mSourceView.mPosition.x + (mTargetView.mPosition.x - mSourceView.mPosition.x) * f8;
mView.mPosition.y = mSourceView.mPosition.y + (mTargetView.mPosition.y - mSourceView.mPosition.y) * f6;
mView.mPosition.z = mSourceView.mPosition.z + (mTargetView.mPosition.z - mSourceView.mPosition.z) * f8;
mView.mPosition = fn_800929C0(mView.mTarget, mView.mPosition, field_0x44);
mView.mFov = mSourceView.mFov + (mTargetView.mFov - mSourceView.mFov) * tiltFovInterp;
mView.mTilt = mSourceView.mTilt + (mTargetView.mTilt - mSourceView.mTilt) * tiltFovInterp;
return true;
}
bool dCameraMap_c::vt_0x34() {
return true;
}
bool dCameraMap_c::draw() {
return true;
}
bool dCameraMap_c::isActiveOrAnimating() const {
return mIsActiveOrAnimating;
}
void dCameraMap_c::startOut() {
mIsMovingOut = true;
if (sHio.field_0x3C & 0x200) {
mTimer = dLytMap_c::GetInstance()->getOutDuration() + 0.1f;
}
}
void dCameraMap_c::fn_80093340() {
sHio.field_0x3E = 2;
}
void dCameraMap_c::setNoCameraTransition() {
sHio.field_0x3C |= 0x10 | 0x8;
}
void dCameraMap_c::setCameraTransition() {
sHio.field_0x3C &= ~(0x10 | 0x8);
}
void dCameraMap_c::setView(const CamView &view) {
mView1 = view;
mView = view;
}
+127
View File
@@ -0,0 +1,127 @@
#include "toBeSorted/d_camera_math.h"
#include "common.h"
#include "d/a/obj/d_a_obj_base.h"
#include "m/m_vec.h"
#include "toBeSorted/deg_angle_util.h"
#include <math.h>
void d_camera_math_float_order() {
// Maybe more functions here
0.5;
1.0;
0.0f;
-1.0;
2.0;
4.0;
-1e-7;
}
f32 camEaseIn(f32 arg, f32 param) {
// TODO - regswaps, maybe equivalent
f64 factor;
if (arg >= 0.0f) {
factor = 1.0;
} else {
factor = -1.0;
arg = -arg;
}
f64 f1 = 2.0 * arg * param - 2.0 * arg - 2.0 * param;
f64 tmp = (-f1 - 1.0);
f64 f6 = f1 * f1 - tmp * 4.0 * arg;
if (f6 > -1e-7) {
f6 = sqrt(f6);
} else {
f6 = 0.0;
}
f64 f2 = 2.0 * tmp;
f64 f2_ = (-f1 - f6);
if (f2 > 1e-7 || f2 < -1e-7) {
f2 = f2_ / f2;
f6 = 1.0 - f2;
f6 = f2 * f2 + f6 * f6 + param * 2.0 * f6 * f2;
// What
if (f6 > 1.0000000116860974e-7) {
f6 = (f2 * f2) / f6;
} else {
f6 = 0.0;
}
} else {
f32 a = camEaseIn(arg - 1e-6f, param);
f32 b = camEaseIn(arg + 1e-6f, param);
f6 = (a + b) * 0.5;
}
return f6 * factor;
}
f32 camEaseInOut(f32 arg, f32 param) {
if (arg <= 0.0f) {
return 0.0f;
} else if (arg >= 1.0f) {
return 1.0f;
}
f32 f1;
f32 result;
if (arg <= 0.5f) {
f1 = arg * 2.0f;
result = camEaseIn(f1, param) * 0.5f;
} else {
f1 = (1.0f - arg) * 2.0f;
result = (1.0f - camEaseIn(f1, param)) * 0.5f + 0.5f;
}
return result * (1.0f - f1) + arg * f1;
}
mVec3_c camGetPointOnLine(const mVec3_c &target, const mVec3_c &origin, const mVec3_c &point) {
// NONMATCHING - stack swap between the two temporary vectors
dPolar p(target - origin);
p.R = (point - origin).mag();
return origin + p.toCartesian();
}
mVec3_c camOffsetPoint(dAcObjBase_c *ac, const mVec3_c &localOffset) {
mVec3_c result = localOffset;
if (ac != nullptr) {
result.rotX(ac->mRotation.x);
result.rotY(ac->mRotation.y);
result += ac->mPosition;
}
return result;
}
mVec3_c camOffsetPoint(dAcObjBase_c *ac, const mVec3_c &localOffset, const mAng3_c &rot) {
mVec3_c result = localOffset;
if (ac != nullptr) {
result.rotX(rot.x);
result.rotY(rot.y);
result += ac->mPosition;
}
return result;
}
mVec3_c camPointToLocal(dAcObjBase_c *ac, const mVec3_c &pos) {
mVec3_c result = pos;
if (ac != nullptr) {
result -= ac->mPosition;
// TODO: Shouldn't these be in the opposite order for a true inverse?
result.rotX(-ac->mRotation.x);
result.rotY(-ac->mRotation.y);
}
return result;
}
mVec3_c camPointToLocal(dAcObjBase_c *ac, const mVec3_c &pos, const mAng3_c &rot) {
mVec3_c result = pos;
if (ac != nullptr) {
result -= ac->mPosition;
// TODO: Shouldn't these be in the opposite order for a true inverse?
result.rotX(-rot.x);
result.rotY(-rot.y);
}
return result;
}