forked from zeldaret/tp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathd_camera.cpp
More file actions
8857 lines (7908 loc) · 310 KB
/
d_camera.cpp
File metadata and controls
8857 lines (7908 loc) · 310 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
//
// Generated By: dol2asm
// Translation Unit: d/d_camera
//
#include "d/d_camera.h"
#include "SSystem/SComponent/c_math.h"
#include "math.h"
#include "cmath.h"
#include "d/actor/d_a_alink.h"
#include "d/d_bg_s_sph_chk.h"
#include "d/d_com_inf_actor.h"
#include "d/d_com_inf_game.h"
#include "d/d_demo.h"
#include "dol2asm.h"
#include "f_op/f_op_camera.h"
#include "m_Do/m_Do_controller_pad.h"
#include "m_Do/m_Do_graphic.h"
#include "m_Do/m_Do_lib.h"
#include "d/actor/d_a_boomerang.h"
#include "d/actor/d_a_horse.h"
#include "d/actor/d_a_midna.h"
#include "d/actor/d_a_tag_mhint.h"
#include "d/actor/d_a_tag_mstop.h"
#include "d/actor/d_a_tag_mwait.h"
//
// Forward References:
//
static f32 func_8015FA2C(f32 param_0, f32 param_1, f32 param_2);
static void func_8015FA4C(fopAc_ac_c* param_0);
static bool func_8015FADC(f32 param_0, f32 param_1, f32* param_2);
static bool func_8015FB28(cXyz* param_0, cXyz* param_1, cXyz* param_2);
static void func_8015FBF8(fopAc_ac_c* param_0, fopAc_ac_c* param_1, cXyz* param_2,
f32 param_3, cSAngle param_4);
void Set__15dCamMapToolDataFllP10fopAc_ac_cUsUc();
void __ct__9dCamera_cFP12camera_class();
void func_801602C4();
void func_80160300();
void __dt__9dCamera_cFv();
void initialize__9dCamera_cFP12camera_classP10fopAc_ac_cUlUl();
void Start__9dCamera_cFv();
void QuickStart__9dCamera_cFv();
void Stop__9dCamera_cFv();
void Stay__9dCamera_cFv();
void ChangeModeOK__9dCamera_cFl();
void initPad__9dCamera_cFv();
void updatePad__9dCamera_cFv();
void initMonitor__9dCamera_cFv();
void updateMonitor__9dCamera_cFv();
void checkForceLockTarget__9dCamera_cFv();
void infoReport__9dCamera_cFv();
void Run__9dCamera_cFv();
void NotRun__9dCamera_cFv();
void V__9dCamera_cFv();
void U__9dCamera_cFv();
void SetTrimSize__9dCamera_cFl();
void SetTrimTypeForce__9dCamera_cFl();
void CalcTrimSize__9dCamera_cFv();
void Draw__9dCamera_cFv();
void setStageMapToolData__9dCamera_cFv();
void setMapToolData__9dCamera_cFv();
void SetTagData__9dCamera_cFP10fopAc_ac_clUsUc();
void setRoomMapToolData__9dCamera_cFP15dCamMapToolDatall();
void nextMode__9dCamera_cFl();
void onModeChange__9dCamera_cFll();
void ModeFix__9dCamera_cFl();
void nextType__9dCamera_cFl();
void onTypeChange__9dCamera_cFll();
void onStyleChange__9dCamera_cFll();
void onRoomChange__9dCamera_cFl();
void getParamTargetActor__9dCamera_cFl();
void GetCameraTypeFromMapToolID__9dCamera_cFll();
void GetCameraTypeFromCameraName__9dCamera_cFPCc();
void GetCameraTypeFromToolData__9dCamera_cFP24stage_camera2_data_class();
void pushInfo__9dCamera_cFPQ29dCamera_c10dCamInfo_cs();
void popInfo__9dCamera_cFPQ29dCamera_c10dCamInfo_c();
void heightOf__9dCamera_cFP10fopAc_ac_c();
void relationalPos__9dCamera_cFP10fopAc_ac_cP4cXyz();
void relationalPos__9dCamera_cFP10fopAc_ac_cP10fopAc_ac_cP4cXyzf();
void setUSOAngle__9dCamera_cFv();
void getUSOAngle__9dCamera_cF7cSAngle();
void pointInSight__9dCamera_cFP4cXyz();
void radiusActorInSight__9dCamera_cFP10fopAc_ac_cP10fopAc_ac_cP4cXyzP4cXyzfsf();
void groundHeight__9dCamera_cFP4cXyz();
void lineBGCheck__9dCamera_cFP4cXyzP4cXyzP11dBgS_LinChkUl();
void lineBGCheck__9dCamera_cFP4cXyzP4cXyzP4cXyzUl();
void lineBGCheck__9dCamera_cFP4cXyzP4cXyzUl();
void lineCollisionCheckBush__9dCamera_cFP4cXyzP4cXyz();
static void sph_chk_callback__FP11dBgS_SphChkP10cBgD_Vtx_tiiiP8cM3dGPlaPv();
void compWallMargin__9dCamera_cFP4cXyzP4cXyzf();
void __dt__14dBgS_CamSphChkFv();
void defaultTriming__9dCamera_cFv();
void setView__9dCamera_cFffff();
void forwardCheckAngle__9dCamera_cFv();
void bumpCheck__9dCamera_cFUl();
void __dt__Q214cCcD_ShapeAttr5ShapeFv();
void lineBGCheckBoth__9dCamera_cFP4cXyzP4cXyzP11dBgS_LinChkUl();
void radiusActorInSight__9dCamera_cFP10fopAc_ac_cP10fopAc_ac_cP10fopAc_ac_c();
static void func_80167CB8(fopAc_ac_c* param_0);
void jutOutCheck__9dCamera_cFP4cXyzf();
void tooNearEscape__9dCamera_cFP4cXyz();
void getWaterSurfaceHeight__9dCamera_cFP4cXyz();
void checkGroundInfo__9dCamera_cFv();
void chaseCamera__9dCamera_cFl();
static void func_8016C25C(daAlink_c* param_0);
void Val__7cSAngleCFv();
static void func_8016C2D4(cXyz& param_0);
void getHoldA__8mDoCPd_cFUl();
static void func_8016C330(u32 param_0, u32 param_1);
static void func_8016C34C(u32 param_0);
static void func_8016C368(u32 param_0, u32 param_1);
void lockonCamera__9dCamera_cFl();
static void func_8016E410(f32 param_0, f32 param_1, f32 param_2);
void __ct__7cSGlobeFv();
void LockEdge__12dAttention_cFv();
void getMsgCmdSpeaker__9dCamera_cFv();
void getMsgCmdCut__9dCamera_cFl();
void talktoCamera__9dCamera_cFl();
void talkBasePos__9dCamera_cFP10fopAc_ac_c();
void talkEyePos__9dCamera_cFP10fopAc_ac_c();
static void func_80174E50(cXyz param_0, cXyz param_1, fopAc_ac_c* param_2,
fopAc_ac_c* param_3, fopAc_ac_c* param_4);
bool CalcSubjectAngle__9dCamera_cFPsPs();
void SaveZoomRatio__9dCamera_cFv();
void subjectCamera__9dCamera_cFl();
void magneCamera__9dCamera_cFl();
void colosseumCamera__9dCamera_cFl();
bool test1Camera__9dCamera_cFl();
bool test2Camera__9dCamera_cFl();
void towerCamera__9dCamera_cFl();
void hookshotCamera__9dCamera_cFl();
void railCamera__9dCamera_cFl();
void paraRailCamera__9dCamera_cFl();
void rideCamera__9dCamera_cFl();
static void func_8017D934(cXyz& param_0);
bool manualCamera__9dCamera_cFl();
void observeCamera__9dCamera_cFl();
void fixedFrameCamera__9dCamera_cFl();
void fixedPositionCamera__9dCamera_cFl();
void oneSideCamera__9dCamera_cFl();
void eventCamera__9dCamera_cFl();
void currentEvCamera__9dCamera_cFv();
bool letCamera__9dCamera_cFl();
void setEventRecoveryTrans__9dCamera_cFs();
void runEventRecoveryTrans__9dCamera_cFv();
void EventRecoverNotime__9dCamera_cFv();
void Set__9dCamera_cF4cXyz4cXyz();
void Set__9dCamera_cF4cXyz4cXyzfs();
void Set__9dCamera_cF4cXyz4cXyzsf();
void Reset__9dCamera_cF4cXyz4cXyzfs();
void Reset__9dCamera_cF4cXyz4cXyz();
void Reset__9dCamera_cFv();
void shakeCamera__9dCamera_cFv();
void StartShake__9dCamera_cFlPUcl4cXyz();
void StopShake__9dCamera_cFv();
void StartBlure__9dCamera_cFiP10fopAc_ac_cff();
void ResetBlure__9dCamera_cFv();
void SetBlureAlpha__9dCamera_cFf();
void SetBlureScale__9dCamera_cFfff();
void SetBlurePosition__9dCamera_cFfff();
void SetBlureActor__9dCamera_cFP10fopAc_ac_c();
void onHorseDush__9dCamera_cFv();
void GetForceLockOnActor__9dCamera_cFv();
void ForceLockOn__9dCamera_cFP10fopAc_ac_c();
void ForceLockOff__9dCamera_cFUi();
void ForceLockOff__9dCamera_cFP10fopAc_ac_c();
void dCam_getAngleY__FP12camera_class();
void dCam_getAngleX__FP12camera_class();
void dCam_getControledAngleY__FP12camera_class();
void dCam_getCamera__Fv();
void dCam_getBody__Fv();
static void preparation__FP20camera_process_class();
static void view_setup__FP20camera_process_class();
static void store__FP20camera_process_class();
void Up__9dCamera_cFv();
void Eye__9dCamera_cFv();
void Center__9dCamera_cFv();
static void camera_execute__FP20camera_process_class();
static void camera_draw__FP20camera_process_class();
static void init_phase1__FP12camera_class();
static void init_phase2__FP12camera_class();
static void camera_create__FP12camera_class();
static void camera_delete__FP20camera_process_class();
static bool is_camera_delete__FPv();
void Init__14dCamForcusLineFv();
void Draw__14dCamForcusLineFv();
void Off__14dCamForcusLineFv();
void __sinit_d_camera_cpp();
static void func_801827EC();
static void func_801827F4();
static void func_801827FC();
static void func_80182804();
void getChainGrabActor__9daAlink_cFv();
void checkCokkoGlide__9daAlink_cCFv();
void checkCameraLargeDamage__9daAlink_cCFv();
void getHsSubChainTopPos__9daAlink_cCFv();
static void daAlink_getAlinkActorClass__Fv();
void checkCutHeadProc__9daAlink_cCFv();
void getRideActor__9daAlink_cFv();
static void dComIfGs_isTmpBit__FUs();
void __dt__14d2DBSplinePathFv();
void __ct__Q29dCamera_c10dCamInfo_cFv();
void __dt__Q29dCamera_c10dCamInfo_cFv();
void footHeightOf__9dCamera_cFP10fopAc_ac_c();
void push_any_key__9dCamera_cFv();
void clrFlag__9dCamera_cFUl();
void chkFlag__9dCamera_cFUl();
void GetCheckObjectCount__12dAttention_cFv();
static void dComIfGp_getAttention__Fv();
void Bank__9dCamera_cFv();
void checkThrowDamage__9daPy_py_cCFv();
void GetNP__8cM3dGPlaFv();
void GetCross__11cBgS_LinChkFv();
static void dComIfG_Bgsp__Fv();
void V__7cSGlobeCFv();
void checkGoronSideMove__9daPy_py_cCFv();
static void JMAFastSqrt__Ff();
void fabsf__3stdFf();
void __ct__7cSAngleFv();
void R__7cSGlobeFf();
static void dComIfGp_evmng_cameraPlay__Fv();
void R__7cSGlobeCFv();
bool __lt__7cSAngleCFRC7cSAngle();
bool __gt__7cSAngleCFRC7cSAngle();
void getRightFootPosP__9daPy_py_cFv();
void getLeftFootPosP__9daPy_py_cFv();
u32 getMidnaActor__9daPy_py_cFv();
void checkCopyRodThrowAfter__9daPy_py_cCFv();
void keepLock__12dAttention_cFi();
void checkRide__9daPy_py_cCFv();
void getRightHandPos__9daPy_py_cCFv();
void CheckFlag2__11dCamSetup_cFUs();
void CheckFlag__11dCamSetup_cFUs();
void WaitRollSpeed__11dCamSetup_cFv();
void WaitRollTimer__11dCamSetup_cFv();
void getTrigA__8mDoCPd_cFUl();
void __ops__7cSAngleCFv();
void ThrowTimer__11dCamSetup_cFv();
void ThrowCushion__11dCamSetup_cFv();
void ThrowVAngle__11dCamSetup_cFv();
void ThrowCtrAdjust__11dCamSetup_cFv();
void Arg2__11dCamParam_cFv();
void Arg1__11dCamParam_cFv();
void Arg0__11dCamParam_cFv();
void Fovy__11dCamParam_cFv();
void Arg2__11dCamParam_cFs();
void Arg1__11dCamParam_cFUc();
void Arg0__11dCamParam_cFUc();
void Fovy__11dCamParam_cFUc();
void U__7cSGlobeCFv();
void Flag__11dCamParam_cFlUs();
void __as__7cSAngleFRC7cSAngle();
void CheckFlag__11dCamParam_cFUs();
void Val__11dCamParam_cFli();
void ChargeBRatio__11dCamSetup_cFv();
void ChargeTimer__11dCamSetup_cFv();
void ChargeLatitude__11dCamSetup_cFv();
void getLashDashStart__9daHorse_cCFv();
void fabs__3stdFf();
void checkTurnStandCamera__9daHorse_cCFv();
void d2s__6cAngleFf();
void checkJump__9daHorse_cCFv();
static void fopAcM_GetParam__FPCv();
void checkNoAttention__12daTagMstop_cCFv();
void checkNoAttention__12daTagMhint_cCFv();
void set__4cXyzFfff();
void checkEndMessage__12daTagMwait_cFv();
extern char const* const d_d_camera__stringBase0;
//
// External References:
//
void onBlure__13mDoGph_gInf_cFv();
void onBlure__13mDoGph_gInf_cFPA4_Cf();
void __dt__4cXyzFv();
void mDoMtx_XrotM__FPA4_fs();
void mDoMtx_YrotM__FPA4_fs();
void mDoMtx_ZrotM__FPA4_fs();
void mDoMtx_lookAt__FPA4_fPC3VecPC3VecPC3Vecs();
void mDoMtx_concatProjView__FPA4_CfPA4_CfPA4_f();
void transM__14mDoMtx_stack_cFfff();
void scaleM__14mDoMtx_stack_cFRC4cXyz();
void __ct__4cXyzFv();
void setup__14mDoLib_clipperFffff();
void mDoLib_project__FP3VecP3Vec();
void fopAcIt_Judge__FPFPvPv_PvPv();
void fopAcM_setStageLayer__FPv();
void fopAcM_searchFromName4Event__FPCcs();
void __dt__8cM3dGPlaFv();
void fopCamM_GetParam__FP12camera_class();
void fpcSch_JudgeForPName__FPvPv();
void fpcSch_JudgeByID__FPvPv();
void getStatusRoomDt__20dStage_roomControl_cFi();
void dComIfGp_getRoomCamera__Fi();
void dComIfGp_getRoomArrow__Fi();
void dComLbG_PhaseHandler__FP30request_of_phase_process_classPPFPv_iPv();
void __dt__7cSAngleFv();
void __dt__8cM3dGCylFv();
void isEventBit__11dSv_event_cCFUs();
void isSwitch__10dSv_info_cCFii();
void __dt__8cM3dGLinFv();
void getActiveCamera__14dDemo_object_cFv();
void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci();
void searchMapEventData__14dEvt_control_cFUc();
void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci();
void getIsAddvance__16dEvent_manager_cFi();
void getMyActIdx__16dEvent_manager_cFiPCPCciii();
void cutEnd__16dEvent_manager_cFi();
void dPath_GetRoomPath__Fii();
void setViewPort__14dDlst_window_cFffffff();
void setScissor__14dDlst_window_cFffff();
void init__8cM_rnd_cFiii();
void update__18dDlst_effectLine_cFR4cXyzR8_GXColorUsUsUsUsffff();
void dKyw_get_wind_vec__Fv();
void dKyw_get_wind_pow__Fv();
void StartShock__12dVibration_cFii4cXyz();
void __dt__7cSGlobeFv();
void LockonTarget__12dAttention_cFl();
void LockonReleaseDistanse__12dAttention_cFv();
void ActionTarget__12dAttention_cFl();
void CheckObjectTarget__12dAttention_cFl();
void LockonTruth__12dAttention_cFv();
void LineCross__4cBgSFP11cBgS_LinChk();
void GroundCross__4cBgSFP11cBgS_GndChk();
void GetActorPointer__4cBgSCFi();
void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla();
void ChkMoveBG__4dBgSFRC13cBgS_PolyInfo();
void GetGroundCode__4dBgSFRC13cBgS_PolyInfo();
void GetCamMoveBG__4dBgSFRC13cBgS_PolyInfo();
void GetRoomCamId__4dBgSFRC13cBgS_PolyInfo();
void GetGrpSoundId__4dBgSFRC13cBgS_PolyInfo();
void ChkGrpInf__4dBgSFRC13cBgS_PolyInfoUl();
void RoofChk__4dBgSFP12dBgS_RoofChk();
void SphChk__4dBgSFP11dBgS_SphChkPv();
void MoveBgMatrixCrrPos__4dBgSFRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
void __ct__11dBgS_GndChkFv();
void __dt__11dBgS_GndChkFv();
void __dt__14dBgS_CamGndChkFv();
void __ct__18dBgS_CamGndChk_WtrFv();
void __dt__18dBgS_CamGndChk_WtrFv();
void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c();
void __ct__14dBgS_CamLinChkFv();
void __dt__14dBgS_CamLinChkFv();
void __ct__11dBgS_SphChkFv();
void __dt__11dBgS_SphChkFv();
void SetObj__16dBgS_PolyPassChkFv();
void ClrObj__16dBgS_PolyPassChkFv();
void SetCam__16dBgS_PolyPassChkFv();
void ClrCam__16dBgS_PolyPassChkFv();
void SetUnderwaterRoof__16dBgS_PolyPassChkFv();
void __ct__12dBgS_RoofChkFv();
void __dt__12dBgS_RoofChkFv();
void SetCam__12dCcMassS_MngFRC8cM3dGCps();
void GetResultCam__12dCcMassS_MngCFv();
void GetCamTopPos__12dCcMassS_MngFP3Vec();
void ChkCamera__4dCcSFR4cXyzR4cXyzfP10fopAc_ac_cP10fopAc_ac_cP10fopAc_ac_c();
void chkCameraPoint__4dCcSFRC4cXyzPQ214cCcD_ShapeAttr5ShapeP10fopAc_ac_cP10fopAc_ac_c();
void rationalBezierRatio__8dCamMathFff();
void zoomFovy__8dCamMathFff();
void __dt__7cDegreeFv();
void xyzRotateX__8dCamMathFR4cXyz7cSAngle();
void xyzRotateY__8dCamMathFR4cXyz7cSAngle();
void xyzHorizontalDistance__8dCamMathFR4cXyzR4cXyz();
bool Shift__9dCstick_cFUl();
void __ct__11dCamParam_cFl();
void __dt__11dCamParam_cFv();
void Change__11dCamParam_cFl();
void SearchStyle__11dCamParam_cFUl();
void __ct__11dCamSetup_cFv();
void __dt__11dCamSetup_cFv();
void CheckLatitudeRange__11dCamSetup_cFPs();
void PlayerHideDist__11dCamSetup_cFv();
void getEvIntData__9dCamera_cFPiPc();
void getEvFloatData__9dCamera_cFPfPc();
void getEvIntData__9dCamera_cFPiPci();
void getEvFloatData__9dCamera_cFPfPcf();
void getEvStringData__9dCamera_cFPcPcPc();
void getEvActor__9dCamera_cFPc();
void getEvActor__9dCamera_cFPcPc();
void pauseEvCamera__9dCamera_cFv();
void fixedFrameEvCamera__9dCamera_cFv();
void stokerEvCamera__9dCamera_cFv();
void rollingEvCamera__9dCamera_cFv();
void fixedPositionEvCamera__9dCamera_cFv();
void uniformTransEvCamera__9dCamera_cFv();
void uniformBrakeEvCamera__9dCamera_cFv();
void uniformAcceleEvCamera__9dCamera_cFv();
void __as__7cSGlobeFRC7cSGlobe();
void abs__4cXyzCFv();
void U__7cSGlobeFRC7cSAngle();
void __ami__4cXyzFRC3Vec();
void __apl__4cXyzFRC3Vec();
void watchActorEvCamera__9dCamera_cFv();
void V__7cSGlobeFRC7cSAngle();
void restorePosEvCamera__9dCamera_cFv();
void talktoEvCamera__9dCamera_cFv();
void maptoolIdEvCamera__9dCamera_cFv();
void styleEvCamera__9dCamera_cFv();
void gameOverEvCamera__9dCamera_cFv();
void tactEvCamera__9dCamera_cFv();
bool turnToActorEvCamera__9dCamera_cFv();
void stbWaitEvCamera__9dCamera_cFv();
void saveEvCamera__9dCamera_cFv();
void loadEvCamera__9dCamera_cFv();
void useItem0EvCamera__9dCamera_cFv();
void useItem1EvCamera__9dCamera_cFv();
void getItemEvCamera__9dCamera_cFv();
void possessedEvCamera__9dCamera_cFv();
void fixedFramesEvCamera__9dCamera_cFv();
void bSplineEvCamera__9dCamera_cFv();
void twoActor0EvCamera__9dCamera_cFv();
void peepHoleEvCamera__9dCamera_cFv();
void digHoleEvCamera__9dCamera_cFv();
void hintTalkEvCamera__9dCamera_cFv();
void bspTransEvCamera__9dCamera_cFv();
bool portalWarpEvCamera__9dCamera_cFv();
void attentionPos__9dCamera_cFP10fopAc_ac_c();
void directionOf__9dCamera_cFP10fopAc_ac_c();
void positionOf__9dCamera_cFP10fopAc_ac_c();
void setFlag__9dCamera_cFUl();
void eyePos__9dCamera_cFP10fopAc_ac_c();
//
// Declarations:
//
namespace {
/* 8015FA2C-8015FA4C 15A36C 0020+00 2/2 0/0 0/0 .text limitf__22@unnamed@d_camera_cpp@Ffff */
static f32 limitf(f32 value, f32 min, f32 max) {
if (value > max) {
return max;
} else if (value < min) {
return min;
}
return value;
}
inline static f32 rangef(f32 value1, f32 value2, f32 ratio) {
return value1 + (value2 - value1) * ratio;
}
inline static bool is_player(fopAc_ac_c* actor) {
return fopAcM_GetName(actor) == PROC_ALINK || fopAcM_GetName(actor) == PROC_ALINK;
}
/* 8015FA4C-8015FADC 15A38C 0090+00 1/1 0/0 0/0 .text
* hideActor__22@unnamed@d_camera_cpp@FP10fopAc_ac_c */
static void hideActor(fopAc_ac_c* actor) {
if (is_player(actor)) {
dComIfGp_onCameraAttentionStatus(0, 2);
if (((daPy_py_c*)actor)->checkHorseRide()) {
fopAcM_OnStatus(dComIfGp_getHorseActor(), 0x1000000);
}
} else {
fopAcM_OnStatus(actor, 0x1000000);
}
}
/* 8015FADC-8015FB28 15A41C 004C+00 1/1 0/0 0/0 .text defaultRadius__22@unnamed@d_camera_cpp@FffPf
*/
static bool defaultRadius(f32 param_0, f32 param_1, f32* param_2) {
f32 var_f30;
f32 var_f31;
if (param_0 < param_1) {
var_f31 = param_0;
var_f30 = param_1;
} else {
var_f30 = param_0;
var_f31 = param_1;
}
if (*param_2 > var_f30) {
*param_2 = var_f30;
return false;
}
if (*param_2 < var_f31) {
*param_2 = var_f31;
return false;
}
return true;
}
/* 8015FB28-8015FBF8 15A468 00D0+00 1/1 0/0 0/0 .text
* posInLine2D__22@unnamed@d_camera_cpp@FP4cXyzP4cXyzP4cXyz */
static bool posInLine2D(cXyz* param_0, cXyz* param_1, cXyz* param_2) {
if (param_0->x <= param_1->x) {
if (param_2->x < param_0->x)
return false;
if (param_2->x > param_1->x)
return false;
} else {
if (param_2->x <= param_1->x)
return false;
if (param_2->x >= param_0->x)
return false;
}
if (param_0->z <= param_1->z) {
if (param_2->z < param_0->z)
return false;
if (param_2->z > param_1->z)
return false;
} else {
if (param_2->z <= param_1->z)
return false;
if (param_2->z >= param_0->z)
return false;
}
return true;
}
/* 8015FBF8-8015FEB8 15A538 02C0+00 1/1 0/0 0/0 .text
* relationalPos2__22@unnamed@d_camera_cpp@FP10fopAc_ac_cP10fopAc_ac_cP4cXyzf7cSAngle */
static cXyz relationalPos2(fopAc_ac_c* i_actor1, fopAc_ac_c* i_actor2, cXyz* param_2, f32 param_3,
cSAngle param_4) {
if (i_actor1 == NULL || i_actor2 == NULL) {
return cXyz::Zero;
}
cXyz pos1 = i_actor1->attention_info.position;
cXyz pos2 = i_actor2->attention_info.position;
cXyz pos_diff = pos2 - pos1;
cSGlobe diff_globe(pos_diff);
pos_diff.normalize();
pos1 -= pos_diff * i_actor1->attention_info.field_0xa;
pos2 += pos_diff * i_actor2->attention_info.field_0xa;
cXyz mid = pos1 + (pos2 - pos1) * 0.5f;
cXyz vec = *param_2;
cSAngle angle = param_4 - diff_globe.U();
if (angle < cSAngle::_0) {
vec.x = -vec.x;
}
cSGlobe globe2(vec);
globe2.U(diff_globe.U() + globe2.U());
diff_globe.R(0.5f * diff_globe.R() * angle.Cos() * param_3);
cXyz ret = mid + diff_globe.Xyz() + globe2.Xyz();
return ret;
}
} // namespace
/* 8015FEB8-8016008C 15A7F8 01D4+00 4/4 0/0 0/0 .text Set__15dCamMapToolDataFllP10fopAc_ac_cUsUc
*/
int dCamMapToolData::Set(s32 param_0, s32 roomNo, fopAc_ac_c* param_2, u16 param_3, u8 param_4) {
if ((param_3 & 0xFF) > field_0x38) {
return 0;
}
stage_camera_class* room_cam = dComIfGp_getRoomCamera(roomNo);
stage_arrow_class* room_arrow = dComIfGp_getRoomArrow(roomNo);
if (room_cam != NULL && param_0 >= 0 && param_0 < room_cam->num) {
Clr();
field_0x30 = param_0;
field_0x0 = room_cam->m_entries[field_0x30];
field_0x3a = (field_0x0.field_0x14 >> 0xE) & 3;
if (param_3 & 0x8000) {
field_0x3a |= 0x10;
}
if (field_0x0.field_0x14 & 0x2000) {
field_0x0.field_0x14 |= 0xC000;
} else {
field_0x0.field_0x14 &= ~0xC000;
}
field_0x2c = field_0x0.m_arrow_idx;
if (room_arrow != NULL && field_0x2c >= 0 && field_0x2c < room_arrow->num) {
field_0x18 = room_arrow->m_entries[field_0x2c];
}
field_0x34 = param_2;
field_0x3b = param_4;
field_0x38 = param_3 & 0xFF;
return 1;
}
return 0;
}
/* ############################################################################################## */
/* 80393F68-80393F68 0205C8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80393F68 = "camtype.dat";
SECTION_DEAD static char const* const stringBase_80393F74 = "D_MN01A";
SECTION_DEAD static char const* const stringBase_80393F7C = "D_MN10A";
SECTION_DEAD static char const* const stringBase_80393F84 = "D_MN11A";
SECTION_DEAD static char const* const stringBase_80393F8C = "D_MN04A";
SECTION_DEAD static char const* const stringBase_80393F94 = "D_MN05A";
SECTION_DEAD static char const* const stringBase_80393F9C = "D_MN07A";
SECTION_DEAD static char const* const stringBase_80393FA4 = "FieldS";
SECTION_DEAD static char const* const stringBase_80393FAB = "Event";
SECTION_DEAD static char const* const stringBase_80393FB1 = "Water";
SECTION_DEAD static char const* const stringBase_80393FB7 = "Scope";
SECTION_DEAD static char const* const stringBase_80393FBD = "WaterSurf";
SECTION_DEAD static char const* const stringBase_80393FC7 = "HorseT";
SECTION_DEAD static char const* const stringBase_80393FCE = "Board";
SECTION_DEAD static char const* const stringBase_80393FD4 = "Canoe";
SECTION_DEAD static char const* const stringBase_80393FDA = "Keep";
SECTION_DEAD static char const* const stringBase_80393FDF = "Rodeo";
SECTION_DEAD static char const* const stringBase_80393FE5 = "MagneBoots";
SECTION_DEAD static char const* const stringBase_80393FF0 = "MagneRoof";
SECTION_DEAD static char const* const stringBase_80393FFA = "MagneWall";
SECTION_DEAD static char const* const stringBase_80394004 = "CoccoJump";
SECTION_DEAD static char const* const stringBase_8039400E = "Boar";
SECTION_DEAD static char const* const stringBase_80394013 = "GoatBattle";
SECTION_DEAD static char const* const stringBase_8039401E = "GoronJump";
SECTION_DEAD static char const* const stringBase_80394028 = "Spinner";
SECTION_DEAD static char const* const stringBase_80394030 = "HookWall";
SECTION_DEAD static char const* const stringBase_80394039 = "HookRoof";
SECTION_DEAD static char const* const stringBase_80394042 = "HookActor";
SECTION_DEAD static char const* const stringBase_8039404C = "RoofHung";
SECTION_DEAD static char const* const stringBase_80394055 = "Rotary";
SECTION_DEAD static char const* const stringBase_8039405C = "Street";
SECTION_DEAD static char const* const stringBase_80394063 = "StreetN";
SECTION_DEAD static char const* const stringBase_8039406B = "StreetP";
SECTION_DEAD static char const* const stringBase_80394073 = "Rampart2";
SECTION_DEAD static char const* const stringBase_8039407C = "Allay";
SECTION_DEAD static char const* const stringBase_80394082 = "AllayR";
SECTION_DEAD static char const* const stringBase_80394089 = "AllayR2";
SECTION_DEAD static char const* const stringBase_80394091 = "AllayS";
SECTION_DEAD static char const* const stringBase_80394098 = "AllayN";
SECTION_DEAD static char const* const stringBase_8039409F = "AllayR3";
SECTION_DEAD static char const* const stringBase_803940A7 = "CopyRodHall";
SECTION_DEAD static char const* const stringBase_803940B3 = "MidnaTag";
SECTION_DEAD static char const* const stringBase_803940BC = "WarpObj";
SECTION_DEAD static char const* const stringBase_803940C4 = "LV9GZeldaTri";
SECTION_DEAD static char const* const stringBase_803940D1 = "LV4BOSSSPJP";
SECTION_DEAD static char const* const stringBase_803940DD = "LV7BOSS";
SECTION_DEAD static char const* const stringBase_803940E5 = "TeppeiHook";
SECTION_DEAD static char const* const stringBase_803940F0 = "Peep";
SECTION_DEAD static char const* const stringBase_803940F5 = "DungeonS";
SECTION_DEAD static char const* const stringBase_803940FE = "Room";
SECTION_DEAD static char const* const stringBase_80394103 = "Cave";
SECTION_DEAD static char const* const stringBase_80394108 = "Timer";
SECTION_DEAD static char const* const stringBase_8039410E = "Target";
SECTION_DEAD static char const* const stringBase_80394115 = "Smoothless";
SECTION_DEAD static char const* const stringBase_80394120 = "Mode";
SECTION_DEAD static char const* const stringBase_80394125 = "Radius";
SECTION_DEAD static char const* const stringBase_8039412C = "RadiusNear";
SECTION_DEAD static char const* const stringBase_80394137 = "Longitude";
SECTION_DEAD static char const* const stringBase_80394141 = "Fovy";
SECTION_DEAD static char const* const stringBase_80394146 = "FovyNear";
SECTION_DEAD static char const* const stringBase_8039414F = "Latitude";
SECTION_DEAD static char const* const stringBase_80394158 = "Listener";
SECTION_DEAD static char const* const stringBase_80394161 = "@STARTER";
SECTION_DEAD static char const* const stringBase_8039416A = "Speaker";
SECTION_DEAD static char const* const stringBase_80394172 = "@TALKPARTNER";
SECTION_DEAD static char const* const stringBase_8039417F = "E_RD";
SECTION_DEAD static char const* const stringBase_80394184 = "PAUSE";
SECTION_DEAD static char const* const stringBase_8039418A = "WAIT";
SECTION_DEAD static char const* const stringBase_8039418F = "TALK";
SECTION_DEAD static char const* const stringBase_80394194 = "FIXEDPOS";
SECTION_DEAD static char const* const stringBase_8039419D = "FIXEDFRM";
SECTION_DEAD static char const* const stringBase_803941A6 = "UNITRANS";
SECTION_DEAD static char const* const stringBase_803941AF = "WATCHACTOR";
SECTION_DEAD static char const* const stringBase_803941BA = "RESTOREPOS";
SECTION_DEAD static char const* const stringBase_803941C5 = "GETITEM";
SECTION_DEAD static char const* const stringBase_803941CD = "GAMEOVER";
SECTION_DEAD static char const* const stringBase_803941D6 = "TURNTOACTOR";
SECTION_DEAD static char const* const stringBase_803941E2 = "ROLLING";
SECTION_DEAD static char const* const stringBase_803941EA = "TACT";
SECTION_DEAD static char const* const stringBase_803941EF = "WINDDIR";
SECTION_DEAD static char const* const stringBase_803941F7 = "PORTALWARP";
SECTION_DEAD static char const* const stringBase_80394202 = "STYLE";
SECTION_DEAD static char const* const stringBase_80394208 = "SAVE";
SECTION_DEAD static char const* const stringBase_8039420D = "LOAD";
SECTION_DEAD static char const* const stringBase_80394212 = "USEITEM0";
SECTION_DEAD static char const* const stringBase_8039421B = "USEITEM1";
SECTION_DEAD static char const* const stringBase_80394224 = "FIXEDFRMS";
SECTION_DEAD static char const* const stringBase_8039422E = "BSPLINE";
SECTION_DEAD static char const* const stringBase_80394236 = "POSSESSED";
SECTION_DEAD static char const* const stringBase_80394240 = "TWOACTOR0";
SECTION_DEAD static char const* const stringBase_8039424A = "STOKER";
SECTION_DEAD static char const* const stringBase_80394251 = "UNIBRAKE";
SECTION_DEAD static char const* const stringBase_8039425A = "UNIACCELE";
SECTION_DEAD static char const* const stringBase_80394264 = "STBWAIT";
SECTION_DEAD static char const* const stringBase_8039426C = "CURRENT";
SECTION_DEAD static char const* const stringBase_80394274 = "PEEPHOLE";
SECTION_DEAD static char const* const stringBase_8039427D = "DIGHOLE";
SECTION_DEAD static char const* const stringBase_80394285 = "HINTTALK";
SECTION_DEAD static char const* const stringBase_8039428E = "BSPTRANS";
SECTION_DEAD static char const* const stringBase_80394297 = "MAPTOOL";
#pragma pop
/* 803BA160-803BA16C 017280 000C+00 2/2 0/0 0/0 .data cNullVec__6Z2Calc */
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 803BA25C-803BA34C 01737C 00F0+00 2/3 3/3 0/0 .data engine_tbl__9dCamera_c */
engine_fn dCamera_c::engine_tbl[] = {
&dCamera_c::letCamera, &dCamera_c::chaseCamera, &dCamera_c::lockonCamera,
&dCamera_c::talktoCamera, &dCamera_c::subjectCamera, &dCamera_c::fixedPositionCamera,
&dCamera_c::fixedFrameCamera, &dCamera_c::towerCamera, &dCamera_c::rideCamera,
&dCamera_c::manualCamera, &dCamera_c::eventCamera, &dCamera_c::hookshotCamera,
&dCamera_c::colosseumCamera, &dCamera_c::observeCamera, &dCamera_c::magneCamera,
&dCamera_c::railCamera, &dCamera_c::paraRailCamera, &dCamera_c::oneSideCamera,
&dCamera_c::test1Camera, &dCamera_c::test2Camera,
};
namespace {
inline static int get_camera_id(camera_class* i_camera) {
return fopCamM_GetParam(i_camera);
}
inline static int get_controller_id(camera_class* i_camera) {
return dComIfGp_getCameraPlayer1ID(get_camera_id(i_camera));
}
inline static fopAc_ac_c* get_player_actor(camera_class* i_camera) {
return dComIfGp_getPlayer(dComIfGp_getCameraPlayer1ID(get_camera_id(i_camera)));
}
inline static dDlst_window_c* get_window(int param_0) {
return dComIfGp_getWindow(dComIfGp_getCameraWinID(param_0));
}
inline static dDlst_window_c* get_window(camera_class* i_camera) {
return dComIfGp_getWindow(dComIfGp_getCameraWinID(get_camera_id(i_camera)));
}
inline static fopAc_ac_c* get_boomerang_actor(fopAc_ac_c* i_actor) {
if (is_player(i_actor)) {
return static_cast<daAlink_c*>(i_actor)->getThrowBoomerangActor();
} else {
return NULL;
}
}
inline static cSAngle sAngleX(cXyz& i_vec) {
return cSAngle(cM_atan2s(i_vec.y, i_vec.z));
}
inline static bool lineCollisionCheck(cXyz param_0, cXyz param_1, fopAc_ac_c* param_2,
fopAc_ac_c* param_3, fopAc_ac_c* param_4) {
return dComIfG_Ccsp()->ChkCamera(param_0, param_1, 15.0f, param_2, param_3, param_4);
}
inline static f32 playerMaxSpeed() {
return 40.0f;
}
} // namespace
/* 8016008C-801602C4 15A9CC 0238+00 1/1 0/0 0/0 .text __ct__9dCamera_cFP12camera_class */
dCamera_c::dCamera_c(camera_class* i_camera) : mCamParam(0) {
initialize(i_camera, get_player_actor(i_camera), get_camera_id(i_camera),
get_controller_id(i_camera));
}
/* 80160304-80160470 15AC44 016C+00 1/1 0/0 0/0 .text __dt__9dCamera_cFv */
// NONMATCHING extra mWork destructor
dCamera_c::~dCamera_c() {
if (!daPy_py_c::checkPeepEndSceneChange()) {
dComIfGs_getTurnRestart().setCameraCtr(mCenter);
dComIfGs_getTurnRestart().setCameraEye(mEye);
dComIfGs_getTurnRestart().setCameraUp(mUp);
dComIfGs_getTurnRestart().setCameraFvy(mFovy);
fopAc_ac_c::setStopStatus(0);
}
}
enum SpecialType {
/* 0x00 */ CAM_TYPE_FIELD_S,
/* 0x01 */ CAM_TYPE_EVENT,
/* 0x02 */ CAM_TYPE_WATER,
/* 0x03 */ CAM_TYPE_SCOPE,
/* 0x04 */ CAM_TYPE_CANOE,
/* 0x05 */ CAM_TYPE_HORSE_T,
/* 0x06 */ CAM_TYPE_BOARD,
/* 0x07 */ CAM_TYPE_07,
/* 0x08 */ CAM_TYPE_KEEP,
/* 0x09 */ CAM_TYPE_RODEO,
/* 0x0A */ CAM_TYPE_MAGNE_BOOTS,
/* 0x0B */ CAM_TYPE_MAGNE_WALL,
/* 0x0C */ CAM_TYPE_MAGNE_ROOF,
/* 0x0D */ CAM_TYPE_WATER_SURF,
/* 0x0E */ CAM_TYPE_ROTARY,
/* 0x0F */ CAM_TYPE_STREET,
/* 0x10 */ CAM_TYPE_STREET_N,
/* 0x11 */ CAM_TYPE_STREET_P,
/* 0x12 */ CAM_TYPE_RAMPART_2,
/* 0x13 */ CAM_TYPE_ALLAY,
/* 0x14 */ CAM_TYPE_ALLAY_R,
/* 0x15 */ CAM_TYPE_ALLAY_R2,
/* 0x16 */ CAM_TYPE_ALLAY_S,
/* 0x17 */ CAM_TYPE_ALLAY_N,
/* 0x18 */ CAM_TYPE_ALLAY_R3,
/* 0x19 */ CAM_TYPE_HOOK_WALL,
/* 0x1A */ CAM_TYPE_HOOK_ROOF,
/* 0x1B */ CAM_TYPE_HOOK_ACTOR,
/* 0x1C */ CAM_TYPE_SPINNER,
/* 0x1D */ CAM_TYPE_GORON_JUMP,
/* 0x1E */ CAM_TYPE_GOAT_BATTLE,
/* 0x1F */ CAM_TYPE_BOAR,
/* 0x20 */ CAM_TYPE_COCCO_JUMP,
/* 0x21 */ CAM_TYPE_ROOF_HUNG,
/* 0x22 */ CAM_TYPE_COPY_ROD_HALL,
/* 0x23 */ CAM_TYPE_MIDNA_TAG,
/* 0x24 */ CAM_TYPE_WARP_OBJ,
/* 0x25 */ CAM_TYPE_LV9_GZELDA_TRI,
/* 0x26 */ CAM_TYPE_TEPPEI_HOOK,
/* 0x27 */ CAM_TYPE_LV4_BOSS_SPJP,
/* 0x28 */ CAM_TYPE_LV7_BOSS,
/* 0x29 */ CAM_TYPE_PEEP,
};
namespace {
/* 8042C8F8-8042C9A0 059618 00A8+00 12/12 0/0 0/0 .bss specialType__22@unnamed@d_camera_cpp@ */
static int specialType[42];
/* 80451020-80451024 000520 0004+00 4/4 0/0 0/0 .sbss Stage__22@unnamed@d_camera_cpp@ */
static int Stage;
inline static u32 check_owner_action(u32 param_0, u32 param_1) {
return dComIfGp_checkPlayerStatus0(param_0, param_1);
}
inline static u32 check_owner_action1(u32 param_0, u32 param_1) {
return dComIfGp_checkPlayerStatus1(param_0, param_1);
}
inline static bool isPlayerCharging(u32 param_0) {
return check_owner_action(param_0, 0x40000000);
}
inline static void setComStat(u32 param_0) {
dComIfGp_onCameraAttentionStatus(0, param_0);
}
inline static bool getComStat(u32 param_0) {
return dComIfGp_getCameraAttentionStatus(0) & param_0;
}
inline static void clrComStat(u32 param_0) {
dComIfGp_offCameraAttentionStatus(0, param_0);
}
inline static void setComZoomScale(f32 param_0) {
dComIfGp_setCameraZoomScale(0, param_0);
}
inline static void setComZoomForcus(f32 param_0) {
dComIfGp_setCameraZoomForcus(0, param_0);
}
} // namespace
/* 80160470-801614AC 15ADB0 103C+00 1/1 0/0 0/0 .text
* initialize__9dCamera_cFP12camera_classP10fopAc_ac_cUlUl */
void dCamera_c::initialize(camera_class* i_camera, fopAc_ac_c* i_player, u32 i_cameraID,
u32 i_padID) {
char* type_data =
(char*)dComIfG_getObjectRes(dComIfGp_getCameraParamFileName(0), "camtype.dat");
mCamTypeData = (dCamera_type_data*)(type_data + 8);
mCamTypeNum = *(int*)(type_data + 4);
field_0x0 = i_camera;
field_0x20 = 1;
field_0x21 = 0;
field_0x24 = 0;
mpPlayerActor = i_player;
mCameraID = i_cameraID;
mPadID = i_padID;
initMonitor();
initPad();
mFocusLine.Init();
field_0x004.mRoomNo = dComIfGp_roomControl_getStayNo();
const char* stage_name = dComIfGp_getStartStageName();
if (strcmp(stage_name, "D_MN01A") == 0) {
Stage = 0x68;
} else if (strcmp(stage_name, "D_MN10A") == 0) {
Stage = 0x69;
} else if (strcmp(stage_name, "D_MN11A") == 0) {
Stage = 0x6A;
} else if (strcmp(stage_name, "D_MN04A") == 0) {
Stage = 0x66;
} else if (strcmp(stage_name, "D_MN05A") == 0) {
Stage = 0x65;
} else if (strcmp(stage_name, "D_MN07A") == 0) {
Stage = 0x6B;
}
specialType[CAM_TYPE_FIELD_S] = GetCameraTypeFromCameraName("FieldS");
specialType[CAM_TYPE_EVENT] = GetCameraTypeFromCameraName("Event");
specialType[CAM_TYPE_WATER] = GetCameraTypeFromCameraName("Water");
specialType[CAM_TYPE_SCOPE] = GetCameraTypeFromCameraName("Scope");
specialType[CAM_TYPE_WATER_SURF] = GetCameraTypeFromCameraName("WaterSurf");
specialType[CAM_TYPE_HORSE_T] = GetCameraTypeFromCameraName("HorseT");
specialType[CAM_TYPE_BOARD] = GetCameraTypeFromCameraName("Board");
specialType[CAM_TYPE_CANOE] = GetCameraTypeFromCameraName("Canoe");
specialType[CAM_TYPE_KEEP] = GetCameraTypeFromCameraName("Keep");
specialType[CAM_TYPE_RODEO] = GetCameraTypeFromCameraName("Rodeo");
specialType[CAM_TYPE_MAGNE_BOOTS] = GetCameraTypeFromCameraName("MagneBoots");
specialType[CAM_TYPE_MAGNE_ROOF] = GetCameraTypeFromCameraName("MagneRoof");
specialType[CAM_TYPE_MAGNE_WALL] = GetCameraTypeFromCameraName("MagneWall");
specialType[CAM_TYPE_COCCO_JUMP] = GetCameraTypeFromCameraName("CoccoJump");
specialType[CAM_TYPE_BOAR] = GetCameraTypeFromCameraName("Boar");
specialType[CAM_TYPE_GOAT_BATTLE] = GetCameraTypeFromCameraName("GoatBattle");
specialType[CAM_TYPE_GORON_JUMP] = GetCameraTypeFromCameraName("GoronJump");
specialType[CAM_TYPE_SPINNER] = GetCameraTypeFromCameraName("Spinner");
specialType[CAM_TYPE_HOOK_WALL] = GetCameraTypeFromCameraName("HookWall");
specialType[CAM_TYPE_HOOK_ROOF] = GetCameraTypeFromCameraName("HookRoof");
specialType[CAM_TYPE_HOOK_ACTOR] = GetCameraTypeFromCameraName("HookActor");
specialType[CAM_TYPE_ROOF_HUNG] = GetCameraTypeFromCameraName("RoofHung");
specialType[CAM_TYPE_ROTARY] = GetCameraTypeFromCameraName("Rotary");
specialType[CAM_TYPE_STREET] = GetCameraTypeFromCameraName("Street");
specialType[CAM_TYPE_STREET_N] = GetCameraTypeFromCameraName("StreetN");
specialType[CAM_TYPE_STREET_P] = GetCameraTypeFromCameraName("StreetP");
specialType[CAM_TYPE_RAMPART_2] = GetCameraTypeFromCameraName("Rampart2");
specialType[CAM_TYPE_ALLAY] = GetCameraTypeFromCameraName("Allay");
specialType[CAM_TYPE_ALLAY_R] = GetCameraTypeFromCameraName("AllayR");
specialType[CAM_TYPE_ALLAY_R2] = GetCameraTypeFromCameraName("AllayR2");
specialType[CAM_TYPE_ALLAY_S] = GetCameraTypeFromCameraName("AllayS");
specialType[CAM_TYPE_ALLAY_N] = GetCameraTypeFromCameraName("AllayN");
specialType[CAM_TYPE_ALLAY_R3] = GetCameraTypeFromCameraName("AllayR3");
specialType[CAM_TYPE_COPY_ROD_HALL] = GetCameraTypeFromCameraName("CopyRodHall");
specialType[CAM_TYPE_MIDNA_TAG] = GetCameraTypeFromCameraName("MidnaTag");
specialType[CAM_TYPE_WARP_OBJ] = GetCameraTypeFromCameraName("WarpObj");
specialType[CAM_TYPE_LV9_GZELDA_TRI] = GetCameraTypeFromCameraName("LV9GZeldaTri");
specialType[CAM_TYPE_LV4_BOSS_SPJP] = GetCameraTypeFromCameraName("LV4BOSSSPJP");
specialType[CAM_TYPE_LV7_BOSS] = GetCameraTypeFromCameraName("LV7BOSS");
specialType[CAM_TYPE_TEPPEI_HOOK] = GetCameraTypeFromCameraName("TeppeiHook");
mCurType = mMapToolType = specialType[CAM_TYPE_FIELD_S];
specialType[CAM_TYPE_PEEP] = GetCameraTypeFromCameraName("Peep");
field_0x698 = 0xFF;
field_0x69c = 0;
mIsWolf = daPy_py_c::checkNowWolf() != 0;
mCurMode = 0;
field_0x680 = 0;
field_0x1ac = 11;
field_0x1b4 = 0.0f;
mEventFlags = 0;
field_0x1b0 = cSAngle::_0;
field_0xa8 = 0;
field_0xac = cM_rndFX(0x7FFF);
field_0x84 = 1.0f;
field_0x91c = 0.0f;
mTrimHeight = 0.0f;
mTrimSize = 0;
mTrimTypeForce = -1;
field_0x940 = 0;
field_0x944 = 0;
field_0x950 = field_0x940;
mBG.field_0x5c.field_0x0 = 0;
mBG.field_0x0.field_0x0 = 0;
mBG.field_0xc0.field_0x3c = 0xFF;
mBG.field_0x5c.field_0x58 = -1000000000.0f;
mBG.field_0x0.field_0x58 = -1000000000.0f;
mBG.field_0x0.field_0x4.OffNormalGrp();
mBG.field_0x0.field_0x4.OnWaterGrp();
mBG.field_0xc0.field_0x1 = 0;
mBG.field_0xc0.field_0x0 = 0;
mBG.field_0xc0.field_0x10 = cXyz::Zero;
mBG.field_0xc0.field_0x4 = mBG.field_0xc0.field_0x10;
mBG.field_0xc0.field_0x20 = 0;
mBG.field_0xc0.field_0x1e = cSAngle::_0;
mBG.field_0xc0.field_0x1c = mBG.field_0xc0.field_0x1e;
mBG.field_0xc0.field_0x34 = 0;
mBG.field_0x108.field_0x0 = 0;
mBG.field_0x108.field_0x4 = 0.0f;
mBG.field_0xc0.field_0x38 = -1000000000.0f;
mBG.field_0xc0.field_0x40 = 0xFF;
field_0x934 = mCamSetup.mBGChk.WallUpDistance();
mMapToolType = 0xFF;
field_0x7ac.Clr();
field_0x7e8.Clr();
field_0x824.Clr();
field_0x860.Clr();
field_0x89c.Clr();
field_0x8d8.Clr();
setStageMapToolData();
if (field_0x7e8.field_0x30 != 0xFF) {
mMapToolType = GetCameraTypeFromToolData(&field_0x7e8.field_0x0);
}
dStage_stageDt_c* stage_dt = dComIfGp_getStage();