identified/labeled camera functions

This commit is contained in:
Banjo Kazooie
2023-03-10 21:52:35 -06:00
parent 13728811aa
commit 7f3dd5aa12
164 changed files with 1583 additions and 1522 deletions

View File

@@ -395,7 +395,7 @@ void bsant_die_init(void){
gravity_set(-1200.0f);
pitch_setAngVel(1000.0f, 12.0f);
func_802914CC(0xd);
func_802BF2C0(30.0f);
ncDynamicCamD_func_802BF2C0(30.0f);
func_8029C984();
D_8037D294 = 0;
baMarker_collisionOff();

View File

@@ -5,7 +5,7 @@
extern void func_8028FDC8(f32);
extern void baModel_setYDisplacement(f32);
extern f32 func_8029B2D0(void);
extern void func_802BFE50(f32, f32, f32);
extern void ncDynamicCam4_func_802BFE50(f32, f32, f32);
extern void func_80354030(f32[3], f32);
@@ -35,7 +35,7 @@ int func_802A3350(void){
void func_802A339C(f32 arg0[3], f32 arg1[3], f32 arg2){
func_8024C5A8(arg0);
ml_vec3f_scale(arg0, arg2);
func_8024C764(arg1);
viewport_getRotation(arg1);
}
void func_802A33D8(void){
@@ -330,7 +330,7 @@ void func_802A3F9C(void){
pitch_setIdeal(sp1C[0]);
func_8029E070(1);
func_802914CC(4);
func_802BFE74(1);
ncDynamicCam4_func_802BFE74(1);
func_802A3430();
FUNC_8030E624(SFX_52_BANJO_YAH_OH, 1.0f, 28000);
D_8037D345 = 0;
@@ -377,7 +377,7 @@ void func_802A411C(void) {
if (animctrl_isAt(sp58, 0.6905f)) {
func_802978DC(8);
func_802914CC(5);
func_802BF590(&D_8037D338);
ncDynamicCam5_func_802BF590(&D_8037D338);
animctrl_setDuration(sp58, 0.05f);
func_80299CF4(SFX_50_KAZOOIE_RRRUH, 1.3f, 0x7FFF);
D_8037D345 = 1;
@@ -573,7 +573,7 @@ void func_802A48B4(void) {
if (item_getCount(ITEM_14_HEALTH) == 0) {
func_8029C984();
func_8029151C(0xD);
func_802BF2C0(30.0f);
ncDynamicCamD_func_802BF2C0(30.0f);
func_8029B930();
func_8029E3C0(0, 2.5f);
D_8037D344 = 2;
@@ -652,7 +652,7 @@ void func_802A4A78(s32 arg0) {
func_80297BF8(-4000.0f);
func_8029E070(1);
func_802914CC(4);
func_802BFE50(12.0f, 10000.0f, 800.0f);
ncDynamicCam4_func_802BFE50(12.0f, 10000.0f, 800.0f);
baMarker_collisionOff();
func_802A3430();
}
@@ -728,7 +728,7 @@ void func_802A4D90(void) {
gravity_set(-1800.0f);
baMarker_collisionOff();
func_802914CC(4);
func_802BFE50(12.0f, 10000.0f, 800.0f);
ncDynamicCam4_func_802BFE50(12.0f, 10000.0f, 800.0f);
}
void func_802A4EC8(void) {

View File

@@ -441,7 +441,7 @@ void func_802A8098(void) {
}
if (func_8029E284(1, 1.9f)) {
func_802914CC(0xD);
func_802BF2C0(80.0f);
ncDynamicCamD_func_802BF2C0(80.0f);
if (D_8037D394) {
func_8029E3C0(0, 0.5f);
} else {

View File

@@ -10,7 +10,7 @@ void func_80297970(f32);
void baModel_setYDisplacement(f32);
void func_80297BF8(f32);
void func_802BFE50(f32, f32, f32);
void ncDynamicCam4_func_802BFE50(f32, f32, f32);
void yaw_setVelocityBounded(f32, f32);
f32 func_8029B2D0(void);
f32 func_8029B2DC(void);
@@ -123,7 +123,7 @@ void _bsBeeFly_updateYaw(void){
f32 sp30;
f32 stickX;
stickX = func_8029B2D0();
func_802BFE50(2.0f, 2000.0f, 350.0f);
ncDynamicCam4_func_802BFE50(2.0f, 2000.0f, 350.0f);
if(button_held(BUTTON_R)){
yaw_setVelocityBounded(500.0f, 30.0f);
sp34 = 6.0f;

View File

@@ -9,7 +9,7 @@ void yaw_applyIdeal(void);
void func_8029797C(f32);
f32 func_80297A64(void);
void func_802979AC(f32, f32);
void func_802BF2C0(f32);
void ncDynamicCamD_func_802BF2C0(f32);
f32 baanim_getTimer(void);
void baanim_setEndAndDuration(f32, f32);
@@ -425,7 +425,7 @@ void bsbeemain_die_init(void){
baMarker_collisionOff();
func_80292E48();
func_802914CC(0xd);
func_802BF2C0(30.0f);
ncDynamicCamD_func_802BF2C0(30.0f);
func_8029C984();
func_8030E58C(SFX_36_BANJO_DOH, 1.8f);
func_8029E3C0(0, 2.9f);

View File

@@ -443,7 +443,7 @@ void bscroc_die_init(void){
baMarker_collisionOff();
func_80292E48();
func_802914CC(0xd);
func_802BF2C0(30.0f);
ncDynamicCamD_func_802BF2C0(30.0f);
func_8029C984();
func_8030E58C(SFX_36_BANJO_DOH, 1.8f);
func_8029E3C0(0, 2.9f);

View File

@@ -53,7 +53,7 @@ void bsdie_init(void){
pitch_setAngVel(1000.0f, 12.0f);
func_8029E070(1);
func_8029151C(0xd);
func_802BF2C0(30.0f);
ncDynamicCamD_func_802BF2C0(30.0f);
func_8029C984();
func_8029E3C0(0,2.9f);
D_8037D414 = 0;

View File

@@ -21,14 +21,14 @@ void bsDroneLook_init(void) {
func_8029C7F4(1, 1, 3, 2);
func_80297970(0.0f);
func_80297A0C(0);
func_802BE8D8();
ncDynamicCamera_enterFirstPerson();
__bsDroneLook_getEyePos(eye_position);
func_802C2A64(eye_position);
ncFirstPersonCamera_setZoomedOutPosition(eye_position);
player_getRotation(eye_rotation);
eye_rotation[0] = 0.0f;
eye_rotation[1] += 180.0f;
eye_rotation[2] = 0.0f;
func_802C2A8C(eye_rotation);
ncFirstPersonCamera_setZoomedOutRotation(eye_rotation);
miscflag_set(0x17);
}
@@ -41,13 +41,13 @@ void bsDroneLook_update(void) {
next_state = 0;
dt = time_getDelta();
if (func_802C2B00() == 2) {
func_802C2ADC(eye_rotation);
if (ncFirstPersonCamera_getState() == 2) {
ncFirstPersonCamera_getZoomedInRotation(eye_rotation);
eye_rotation[0] -= func_8029B2DC() * 90.0f * dt;
eye_rotation[1] -= func_8029B2D0() * 90.0f * dt;
eye_rotation[2] = 0.0f;
eye_rotation[0] = (eye_rotation[0] > 180.0f) ? ml_max_f(305.0f, eye_rotation[0]) : ml_min_f(70.0f, eye_rotation[0]);
func_802C2A8C(eye_rotation);
ncFirstPersonCamera_setZoomedOutRotation(eye_rotation);
yaw_setIdeal(eye_rotation[1] + 180.0f);
exit_first_person = FALSE;
if (button_pressed(BUTTON_B) || button_pressed(BUTTON_A) || button_pressed(BUTTON_C_UP)) {
@@ -65,7 +65,7 @@ void bsDroneLook_update(void) {
}
}
__bsDroneLook_getEyePos(eye_position);
func_802C2A64(eye_position);
ncFirstPersonCamera_setZoomedOutPosition(eye_position);
bs_setState(next_state);
}
@@ -73,6 +73,6 @@ void bsDroneLook_end(void) {
if (func_80298850() == 0) {
func_80299D2C(SFX_12E_CAMERA_ZOOM_MEDIUM, 1.2f, 12000);
}
func_802BE91C();
ncDynamicCamera_exitFirstPerson();
miscflag_clear(0x17);
}

View File

@@ -454,7 +454,7 @@ void bspumpkin_die_init(void) {
gravity_set(-1200.0f);
pitch_setAngVel(1000.0f, 12.0f);
func_802914CC(0xD);
func_802BF2C0(30.0f);
ncDynamicCamD_func_802BF2C0(30.0f);
func_8029C984();
baMarker_collisionOff();
func_80292E48();

View File

@@ -5,7 +5,7 @@
void func_80292E80(s32, f32);
f32 func_8029B41C(void);
void func_802BF2C0(f32);
void ncDynamicCamD_func_802BF2C0(f32);
void func_802B6270(void){
baanim_playForDuration_once(ASSET_77_ANIM_BSTIMEOUT, 3.2f);
@@ -13,7 +13,7 @@ void func_802B6270(void){
func_80297970(0.0f);
func_802914CC(0xd);
yaw_setIdeal(func_8029B41C() + 35.0f);
func_802BF2C0(80.0f);
ncDynamicCamD_func_802BF2C0(80.0f);
func_8025A58C(0,0xfa0);
func_8025A70C(COMUSIC_3C_MINIGAME_LOSS);
func_8024BD08(0);
@@ -54,7 +54,7 @@ void func_802B63F8(void){
func_80297970(0.0f);
func_802914CC(0xd);
yaw_setIdeal(func_8029B41C() + 35.0f);
func_802BF2C0(80.0f);
ncDynamicCamD_func_802BF2C0(80.0f);
func_8025A58C(0,0xfa0);
func_8025A70C(COMUSIC_3C_MINIGAME_LOSS);
func_8024BD08(0);

View File

@@ -463,7 +463,7 @@ void bswalrus_die_init(void){
gravity_set(-1200.0f);
pitch_setAngVel(1000.0f, 12.0f);
func_802914CC(0xd);
func_802BF2C0(30.0f);
ncDynamicCamD_func_802BF2C0(30.0f);
func_8025AB00();
func_8025A2FC(0, 0xfa0);
func_8025A70C(0x1A);
@@ -727,7 +727,7 @@ void bswalrus_timeout_init(void) {
func_8029C7F4(1, 1, 3, 7);
func_80297970(0.0f);
func_802914CC(0xD);
func_802BF2C0(60.0f);
ncDynamicCamD_func_802BF2C0(60.0f);
func_8025A58C(0, 4000);
func_8025A70C(COMUSIC_3C_MINIGAME_LOSS);
func_8024BD08(0);

View File

@@ -87,7 +87,7 @@ f32 func_802D7038(Actor *this) {
void func_802D7124(Actor *actor, f32 arg1) {
f32 sp1C[3];
func_8024C5CC(&sp1C);
viewport_getPosition(&sp1C);
if ((actor->position[0] - sp1C[0]) * (actor->position[0] - sp1C[0]) + (actor->position[2] - sp1C[2]) * (actor->position[2] - sp1C[2]) < 12250000.0f) {
func_802D729C(actor, arg1);
}

View File

@@ -135,9 +135,9 @@ void chBottlesBonus_func_802DD080(Gfx **gfx, Mtx **mtx) {
sp18[1] = 270.0f;
sp18[2] = 0.0f;
}
func_8024CD88(sp24);
func_8024CE18(sp18);
func_8024CFD4();
viewport_setPosition(sp24);
viewport_setRotation(sp18);
viewport_update();
func_8024C904(gfx, mtx);
}

View File

@@ -22,7 +22,7 @@ extern ActorInfo D_80372870 = {
};
/* .code */
void func_80357150(Actor *this){
void __clucker_setDeathCutsceneCamera(Actor *this){
f32 sp34[3];
f32 sp28[3];
f32 sp1C[3];
@@ -44,7 +44,7 @@ void func_80357150(Actor *this){
sp28[0] = -50.0f;
sp28[1] = this->yaw + 20.0f;
sp28[2] = 0.0f;
func_802BAE6C(sp34, sp28);
ncStaticCamera_setPositionAndRotation(sp34, sp28);
}
void func_80357264(Actor *this, s32 next_state){
@@ -95,8 +95,8 @@ void func_80357264(Actor *this, s32 next_state){
){
levelSpecificFlags_set(0x14, TRUE);
func_80324E38(0.0f, 3);
func_80357150(this);
func_80324E88(2.0f);
__clucker_setDeathCutsceneCamera(this);
timed_exitStaticCamera(2.0f);
func_80324E38(2.0f, 0);
}//L80357518
func_8030E6D4(SFX_1E_HITTING_AN_ENEMY_2);

View File

@@ -27,7 +27,7 @@ void func_802CD870(Actor *this){
void func_802CD898(Actor *this){
marker_despawn(this->marker);
func_802BBC58(2);
camera_setType(2);
}
void func_802CD8C0(Actor *this){
@@ -76,8 +76,8 @@ void func_802CD8C0(Actor *this){
mapSpecificFlags_set(4, TRUE);
}
else{
func_802BBC58(2);
func_802BD0D8(0xf);
camera_setType(2);
ncDynamicCamera_setState(0xf);
}
marker_despawn(this->marker);
}
@@ -87,12 +87,12 @@ void func_802CD8C0(Actor *this){
void func_802CDAC4(Actor *this){
f32 sp1C[3];
func_802BBC58(1);
func_8024CD88(this->position);
camera_setType(1);
viewport_setPosition(this->position);
sp1C[0] = this->pitch;
sp1C[1] = this->yaw;
sp1C[2] = 0.0f;
func_8024CE18(sp1C);
viewport_setRotation(sp1C);
}
void func_802CDB18(Actor *this){

View File

@@ -146,9 +146,9 @@ void __chCrab_spawn_mutant_crab_jiggy(void) {
void __chCrab_mutantTextCallback(ActorMarker *caller, enum asset_e text_id, s32 model_id){
if (text_id == ASSET_D33_DIALOG_MUTANT_CRAB_DEFEAT) {
func_80324E38(0.0f, 3);
timed_setCameraToNode(0.0f, 4);
timed_setStaticCameraToNode(0.0f, 4);
timedFunc_set_0(0.1f, __chCrab_spawn_mutant_crab_jiggy);
func_80324E88(3.0f);
timed_exitStaticCamera(3.0f);
func_80324E38(3.0f, 0);
return;
}

View File

@@ -528,7 +528,7 @@ void func_802C4C14(Actor *this){
ml_vec3f_copy(D_80365DD0[i], sp34);
}
}
func_802BAEB4(
ncStaticCamera_setPositionAndTarget(
func_802C44EC(D_80365DD0[D_8037DCE8], D_80365DD0[D_80365E00], D_8037DD30),
func_802C44EC(D_80365E04[D_8037DCE8], D_80365E04[D_80365E00], D_8037DD30)
);

View File

@@ -136,7 +136,7 @@ void func_802D9600(Actor * this){
}
void func_802D9658(Actor *this){
timed_setCameraToNode(0.0f, D_80367DC4[this->unkF4_8-9].camera_node);
timed_setStaticCameraToNode(0.0f, D_80367DC4[this->unkF4_8-9].camera_node);
}
void func_802D9698(ActorMarker *marker, enum asset_e arg1, s32 arg2){
@@ -155,7 +155,7 @@ void func_802D9698(ActorMarker *marker, enum asset_e arg1, s32 arg2){
func_80347A14(1);
actor->unk138_24 = FALSE;
}
func_80324E88(0.0f);
timed_exitStaticCamera(0.0f);
if(actor->state == 5){
func_8028F918(0);
func_802D9600(actor);
@@ -170,7 +170,7 @@ void func_802D9830(ActorMarker *marker, enum asset_e arg1, s32 arg2){
Actor *actor = marker_getActor(marker);
switch(arg2){
case 1:
timed_setCameraToNode(0.0f, 0x11);
timed_setStaticCameraToNode(0.0f, 0x11);
levelSpecificFlags_set(0x1A, 1);
break;
case 2:
@@ -178,7 +178,7 @@ void func_802D9830(ActorMarker *marker, enum asset_e arg1, s32 arg2){
func_802D9658(actor);
break;
case 3:
timed_setCameraToNode(0.0f, 0x29);
timed_setStaticCameraToNode(0.0f, 0x29);
levelSpecificFlags_set(0x1A, 1);
break;
case 4:

View File

@@ -40,9 +40,9 @@ Actor *chOverlayNoController_draw(ActorMarker *marker, Gfx **gdl, Mtx **mptr, Vt
func_8024E258();
{sp58[0] = 0.0f; sp58[1] = 0.0f; sp58[2] = 1312.5f;};
{sp4C[0] = 0.0f; sp4C[1] = 0.0f; sp4C[2] = 0.0f;};
func_8024CD88(sp58);
func_8024CE18(sp4C);
func_8024CFD4();
viewport_setPosition(sp58);
viewport_setRotation(sp4C);
viewport_update();
func_8024C904(gdl, mptr);
{sp40[0] = 0.0f; sp40[1] = 0.0f; sp40[2] = 0.0f;};
{sp34[0] = 0.0f; sp34[1] = 165.0f; sp34[2] = 0.0f;};

View File

@@ -50,9 +50,9 @@ Actor *chOverlayPressStart_draw(ActorMarker *marker, Gfx **gdl, Mtx **mptr, Vtx
func_8024E258();
{sp58[0] = 0.0f; sp58[1] = 0.0f; sp58[2] = 1312.5f;};
{sp4C[0] = 0.0f; sp4C[1] = 0.0f; sp4C[2] = 0.0f;};
func_8024CD88(sp58);
func_8024CE18(sp4C);
func_8024CFD4();
viewport_setPosition(sp58);
viewport_setRotation(sp4C);
viewport_update();
func_8024C904(gdl, mptr);
{sp40[0] = 0.0f; sp40[1] = 0.0f; sp40[2] = 0.0f;};
{sp34[0] = 0.0f; sp34[1] = 400.0f; sp34[2] = 0.0f;};

View File

@@ -52,7 +52,7 @@ void __chTermite_updateWalkSFX(Actor *this) {
f32 sp24[3];
f32 sp20;
func_8024C5CC(&sp24);
viewport_getPosition(&sp24);
sp20 = ml_map_f( (300.0f - sp24[0])*(300.0f - sp24[0]) + (this->position[1] - sp24[1])*(this->position[1] - sp24[1]) + (-858.0f - sp24[2])*(-858.0f - sp24[2])
, 7617600.0f, 8236900.0f
, 8000.0f, 1000.0f

View File

@@ -202,7 +202,7 @@ f32 func_8029B41C(void){
f32 sp1C;
player_getPosition(sp2C);
func_8024C5CC(sp20);
viewport_getPosition(sp20);
func_80257F18(sp2C, sp20, &sp1C);
return sp1C;
}
@@ -362,7 +362,7 @@ void func_8029B984(f32 dst[3]){
f32 sp18[3];
_player_getPosition(plyr_pos);
func_8024C5CC(sp18);
viewport_getPosition(sp18);
ml_vec3f_diff_copy(dst, sp18, plyr_pos);
}
@@ -722,9 +722,9 @@ void func_8029C674(void) {
if (func_80298850() == 4) {
D_8037D1E8 = TRUE;
miscflag_set(0x17);
func_802BE8D8();
ncDynamicCamera_enterFirstPerson();
func_8028E9C4(5, sp1C);
func_802C2A64(sp1C);
ncFirstPersonCamera_setZoomedOutPosition(sp1C);
}
}
@@ -736,18 +736,18 @@ void func_8029C6D0(void) {
if (func_80298850() == 4 && D_8037D1E8) {
func_8028E9C4(5, sp18);
func_802C2A64(sp18);
ncFirstPersonCamera_setZoomedOutPosition(sp18);
func_8028E9C4(5, sp30);
func_80298800(sp24);
func_802BC434(sp3C, sp24, sp30);
func_802C2A8C(sp3C);
ncFirstPersonCamera_setZoomedOutRotation(sp3C);
}
}
void func_8029C748(void) {
if (D_8037D1E8) {
miscflag_clear(0x17);
func_802BE91C();
ncDynamicCamera_exitFirstPerson();
}
}

View File

@@ -4,49 +4,49 @@
typedef struct {
f32 unk0[3];
f32 unkC[3];
} Struct_core2_33AB0_0;
f32 position[3];
f32 rotation[3];
} CameraNodeType2;
void func_802BAAD4(Struct_core2_33AB0_0 *this, f32 src[3]);
void func_802BAB1C(Struct_core2_33AB0_0 *this, f32 src[3]);
void ncCameraNodeType2_setPosition(CameraNodeType2 *this, f32 src[3]);
void ncCameraNodeType2_setRotation(CameraNodeType2 *this, f32 src[3]);
/* .code */
Struct_core2_33AB0_0 *func_802BAA40(void){
Struct_core2_33AB0_0 *this;
CameraNodeType2 *ncCameraNodeType2_new(void){
CameraNodeType2 *this;
f32 sp18[3];
this = (Struct_core2_33AB0_0 *)malloc(sizeof(Struct_core2_33AB0_0));
this = (CameraNodeType2 *)malloc(sizeof(CameraNodeType2));
ml_vec3f_clear(sp18);
func_802BAAD4(this, sp18);
func_802BAB1C(this, sp18);
ncCameraNodeType2_setPosition(this, sp18);
ncCameraNodeType2_setRotation(this, sp18);
return this;
}
void func_802BAA88(Struct_core2_33AB0_0 *this){
void ncCameraNodeType2_free(CameraNodeType2 *this){
free(this);
}
void func_802BAAA8(Struct_core2_33AB0_0 *this, f32 dst[3]){\
ml_vec3f_copy(dst, this->unk0);
void ncCameraNodeType2_getPosition(CameraNodeType2 *this, f32 dst[3]){\
ml_vec3f_copy(dst, this->position);
}
void func_802BAAD4(Struct_core2_33AB0_0 *this, f32 src[3]){
ml_vec3f_copy(this->unk0, src);
void ncCameraNodeType2_setPosition(CameraNodeType2 *this, f32 src[3]){
ml_vec3f_copy(this->position, src);
}
void func_802BAAF4(Struct_core2_33AB0_0 *this, f32 dst[3]){\
ml_vec3f_copy(dst, this->unkC);
void ncCameraNodeType2_getRotation(CameraNodeType2 *this, f32 dst[3]){\
ml_vec3f_copy(dst, this->rotation);
}
void func_802BAB1C(Struct_core2_33AB0_0 *this, f32 src[3]){
ml_vec3f_copy(this->unkC, src);
void ncCameraNodeType2_setRotation(CameraNodeType2 *this, f32 src[3]){
ml_vec3f_copy(this->rotation, src);
}
void func_802BAB3C(Struct61s *file_ptr, Struct_core2_33AB0_0 *arg1){
void ncCameraNodeType2_fromFile(Struct61s *file_ptr, CameraNodeType2 *arg1){
while(!file_isNextByteExpected(file_ptr, 0)){
if(!file_getNFloats_ifExpected(file_ptr, 1, arg1->unk0, 3)){
file_getNFloats_ifExpected(file_ptr, 2, arg1->unkC, 3);
if(!file_getNFloats_ifExpected(file_ptr, 1, arg1->position, 3)){
file_getNFloats_ifExpected(file_ptr, 2, arg1->rotation, 3);
}//L802BAA0C
}
}

View File

@@ -33,8 +33,8 @@ void func_802BAC58(void) {
f32 sp28[3];
f32 sp1C[3];
func_8024C5CC(sp34);
func_8024C764(sp28);
viewport_getPosition(sp34);
viewport_getRotation(sp28);
func_802BEA4C(sp28, sp34, 150.0f, sp1C);
if (D_8037D810 == NULL) {
D_8037D810 = func_8032FBE4(sp1C, func_802BABC0, 1, 0x15D);

View File

@@ -1,71 +0,0 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
extern void func_8025727C(f32, f32, f32, f32, f32, f32, f32*, f32*);
/* .bss */
f32 D_8037D820[4];
f32 D_8037D830[4];
/* .code */
void func_802BACD0(void){
ml_vec3f_clear(D_8037D820);
ml_vec3f_clear(D_8037D830);
}
void func_802BAD00(void){}
void func_802BAD08(f32 arg0[3]){
func_8025727C(
arg0[0], arg0[1], arg0[2],
D_8037D820[0], D_8037D820[1], D_8037D820[2],
&D_8037D830[0], &D_8037D830[1]
);
D_8037D830[0] = mlNormalizeAngle(-D_8037D830[0]);
D_8037D830[2] = 0.0f;
}
void func_802BAD84(f32 arg0[3]){
ml_vec3f_copy(D_8037D820, arg0);
}
void func_802BADAC(void){
func_8024CD88(D_8037D820);
func_8024CE18(D_8037D830);
}
void func_802BADDC(s32 camera_node_index){
UNK_TYPE(s32) sp1C;
sp1C = func_802B9E70(camera_node_index);
func_802BAAA8(sp1C, D_8037D820);
func_802BAAF4(sp1C, D_8037D830);
}
void set_camera_to_node(s32 camera_node_index){
func_802BBC58(3);
func_802BADDC(camera_node_index);
}
void func_802BAE4C(void){
func_802BBC58(2);
}
void func_802BAE6C(f32 arg0[3], f32 arg1[3]){
func_802BBC58(3);
ml_vec3f_copy(D_8037D820, arg0);
ml_vec3f_copy(D_8037D830, arg1);
}
void func_802BAEB4(f32 arg0[3], f32 arg1[3]){
func_802BBC58(3);
ml_vec3f_copy(D_8037D820, arg0);
func_802BAD08(arg1);
}
void func_802BAEF4(f32 dst[3]){
dst[0] = D_8037D820[0];
dst[1] = D_8037D820[1];
dst[2] = D_8037D820[2];
}

View File

@@ -2,10 +2,6 @@
#include "functions.h"
#include "variables.h"
extern void rumbleManager_80250E6C(f32, f32);
extern void func_80258E60(f32[3], f32[3], f32);
extern void func_80258EF4(f32[3], f32[3], f32);
extern void func_80258F88(f32[3], f32[3], f32);
extern void func_802BE720(void);
typedef struct {
@@ -454,7 +450,7 @@ void func_802BAFE4(s32 arg0) {
break;
default:
timed_setCameraToNode(temp_f0, D_803654B8[arg0][phi_s1 + 1]);
timed_setStaticCameraToNode(temp_f0, D_803654B8[arg0][phi_s1 + 1]);
break;
}
}
@@ -462,7 +458,7 @@ void func_802BAFE4(s32 arg0) {
if (D_803654B8[arg0][phi_s1] == -4) {
func_80324E38(temp_f0, 4);
} else {
func_80324E88(temp_f0);
timed_exitStaticCamera(temp_f0);
}
for(phi_s1 = 0; phi_s1 < phi_s0; phi_s1++){
func_80324E38(temp_f0, 0);

View File

@@ -4,9 +4,9 @@
extern void rumbleManager_80250E6C(f32, f32);
extern void func_80258E60(f32[3], f32[3], f32);
extern void func_80258EF4(f32[3], f32[3], f32);
extern void func_80258F88(f32[3], f32[3], f32);
extern void ml_translate_y_local(f32[3], f32[3], f32);
extern void ml_translate_z_local(f32[3], f32[3], f32);
extern void ml_translate_x_local(f32[3], f32[3], f32);
extern void func_802BE720(void);
typedef struct {
@@ -84,57 +84,57 @@ void func_802BB41C(s32 arg0){
D_8037D840[arg0].unk1C = 1;
}
void func_802BB434(s32 arg0, f32 dst[3], f32 src[3], f32 arg3) {
void func_802BB434(s32 arg0, f32 position[3], f32 rotation[3], f32 delta) {
switch (arg0) {
case 1:
func_80258F88(dst, src, arg3);
ml_translate_x_local(position, rotation, delta);
return;
case 0:
func_80258E60(dst, src, arg3);
ml_translate_y_local(position, rotation, delta);
return;
case 2:
func_80258EF4(dst, src, arg3);
ml_translate_z_local(position, rotation, delta);
return;
case 3:
dst[1] += arg3;
position[1] += delta;
return;
}
}
void func_802BB4D8(s32 arg0, s32 arg1) {
void func_802BB4D8(f32 position[3], f32 rotation[3]) {
f32 temp_f0;
f32 temp_f22;
f32 dt;
s32 phi_s1;
temp_f22 = time_getDelta();
dt = time_getDelta();
for(phi_s1 = 0; phi_s1 < 4; phi_s1++){
switch (D_8037D840[phi_s1].unk1C) {
case 2:
if (D_8037D840[phi_s1].unk10 >= 0.0f) {
D_8037D840[phi_s1].unk14 = 1.0f;
} else {
D_8037D840[phi_s1].unk14 = -1.0f;
}
func_802BB434(phi_s1, arg0, arg1, D_8037D840[phi_s1].unk10);
D_8037D840[phi_s1].unk1C = 3;
break;
case 3:
if (D_8037D840[phi_s1].unk18 != 0.0f) {
temp_f0 = ml_max_f(0.0f, D_8037D840[phi_s1].unk18 - temp_f22);
D_8037D840[phi_s1].unk18 = temp_f0;
D_8037D840[phi_s1].unk10 = ml_map_f(temp_f0, D_8037D840[phi_s1].unk0, 0.0f, D_8037D840[phi_s1].unkC, D_8037D840[phi_s1].unk8);
} else {
D_8037D840[phi_s1].unk10 *= D_8037D840[phi_s1].unk4;
}
if (level_get() != LEVEL_D_CUTSCENE) {
rumbleManager_80250E6C(D_8037D840[phi_s1].unk10 * 0.25, temp_f22);
}
func_802BB434(phi_s1, arg0, arg1, D_8037D840[phi_s1].unk14*D_8037D840[phi_s1].unk10);
D_8037D840[phi_s1].unk14 = (f32) -D_8037D840[phi_s1].unk14;
if (((f64) D_8037D840[phi_s1].unk4 != 1.0) && ((f64) mlAbsF(D_8037D840[phi_s1].unk10) < 0.001)) {
D_8037D840[phi_s1].unk1C = 1U;
}
break;
case 2:
if (D_8037D840[phi_s1].unk10 >= 0.0f) {
D_8037D840[phi_s1].unk14 = 1.0f;
} else {
D_8037D840[phi_s1].unk14 = -1.0f;
}
func_802BB434(phi_s1, position, rotation, D_8037D840[phi_s1].unk10);
D_8037D840[phi_s1].unk1C = 3;
break;
case 3:
if (D_8037D840[phi_s1].unk18 != 0.0f) {
temp_f0 = ml_max_f(0.0f, D_8037D840[phi_s1].unk18 - dt);
D_8037D840[phi_s1].unk18 = temp_f0;
D_8037D840[phi_s1].unk10 = ml_map_f(temp_f0, D_8037D840[phi_s1].unk0, 0.0f, D_8037D840[phi_s1].unkC, D_8037D840[phi_s1].unk8);
} else {
D_8037D840[phi_s1].unk10 *= D_8037D840[phi_s1].unk4;
}
if (level_get() != LEVEL_D_CUTSCENE) {
rumbleManager_80250E6C(D_8037D840[phi_s1].unk10 * 0.25, dt);
}
func_802BB434(phi_s1, position, rotation, D_8037D840[phi_s1].unk14*D_8037D840[phi_s1].unk10);
D_8037D840[phi_s1].unk14 = (f32) -D_8037D840[phi_s1].unk14;
if (((f64) D_8037D840[phi_s1].unk4 != 1.0) && ((f64) mlAbsF(D_8037D840[phi_s1].unk10) < 0.001)) {
D_8037D840[phi_s1].unk1C = 1U;
}
break;
}
}
}

View File

@@ -1,6 +1,7 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
#include "core2/nc/camera.h"
extern Actor *func_80328230(enum actor_e, f32[3], f32[3]);
extern void func_802BEA4C(f32[3], f32[3], f32, f32[3]);
@@ -22,7 +23,7 @@ s16 D_803657E0[] = {
};
/* .bss */
s32 D_8037D8C0;
s32 ncCameraType;
u8 D_8037D8C4;
u8 D_8037D8C5;
u8 D_8037D8C6;
@@ -112,17 +113,17 @@ f32 func_802BB938(f32 arg0[3], f32 arg1[3]) {
}
void func_802BBA84(void) {
f32 sp54[3];
f32 vp_position[3];
f32 sp48[3];
f32 sp3C[3];
f32 sp30[3];
f32 sp24[3];
f32 vp_rotation[3];
f32 min[3];
f32 max[3];
mapModel_getBounds(sp30, sp24);
func_8024C5CC(sp54);
func_8024C764(sp3C);
mapModel_getBounds(min, max);
viewport_getPosition(vp_position);
viewport_getRotation(vp_rotation);
func_8024C5A8(sp48);
D_8037D8CC = (f32) func_8033EAF8(sp30, sp24, sp54, sp48);
D_8037D8CC = (f32) func_8033EAF8(min, max, vp_position, sp48);
D_8037D8CC += 100.0f;
if (D_8037D8CC < 1000.0f) {
D_8037D8CC = 1000.0f;
@@ -143,33 +144,33 @@ void func_802BBA84(void) {
D_8037D8C8 = 10.0f;
return;
}
D_8037D8C8 = ml_min_f(D_8037D8C8, func_802BB938(sp54, sp3C));
D_8037D8C8 = ml_min_f(D_8037D8C8, func_802BB938(vp_position, vp_rotation));
}
void func_802BBC58(s32 arg0) {
switch (D_8037D8C0) {
case 3:
func_802BAD00();
void camera_setType(enum camera_type_e camera_type) {
switch (ncCameraType) {
case CAMERA_TYPE_3_STATIC:
ncStaticCamera_end();
break;
case 4:
func_802BED00();
case CAMERA_TYPE_4_RANDOM:
ncRandomCamera_end();
break;
case 1:
case 2:
case CAMERA_TYPE_1_UNKNOWN:
case CAMERA_TYPE_2_DYNAMIC:
break;
}
switch (arg0) {
case 3:
func_802BACD0(arg0);
switch (camera_type) {
case CAMERA_TYPE_3_STATIC:
ncStaticCamera_init();
break;
case 4:
func_802BEC60(arg0);
case CAMERA_TYPE_4_RANDOM:
ncRandomCamera_init();
break;
case 1:
case 2:
case CAMERA_TYPE_1_UNKNOWN:
case CAMERA_TYPE_2_DYNAMIC:
break;
}
D_8037D8C0 = arg0;
ncCameraType = camera_type;
}
@@ -259,47 +260,47 @@ void func_802BC044(void) {
func_802BCBD4();
func_802BEF78();
func_802BB2A8();
D_8037D8C0 = 0;
func_802BBC58(2);
ncCameraType = 0;
camera_setType(2);
}
void func_802BC10C(void){
func_802BB2A0();
func_802BBC58(1);
camera_setType(1);
func_802BCD30();
func_802BEF70();
func_802BABD8();
}
void func_802BC14C(void){
void ncCamera_update(void){
f32 sp2C[3];
f32 sp20[3];
s32 v0;
v0 = D_8037D8C0;
v0 = ncCameraType;
if(!D_8037D8C5 && !D_8037D8C6){
v0 = 0;
}
switch(v0){
case 2:
func_802BCEC4();
case CAMERA_TYPE_2_DYNAMIC://dynamic viewport position
ncDynamicCamera_update();
break;
case 3:
func_802BADAC();
case CAMERA_TYPE_3_STATIC://set viewport to static location
ncStaticCamera_update();
break;
case 4:
func_802BED30();
case CAMERA_TYPE_4_RANDOM: //set viewport to random location
ncRandomCamera_update();
break;
}
func_8024C5CC(sp2C);
func_8024C764(sp20);
viewport_getPosition(sp2C);
viewport_getRotation(sp20);
func_802BB4D8(sp2C, sp20);
func_8024CD88(sp2C);
func_8024CE18(sp20);
func_8024CFD4();
viewport_setPosition(sp2C);
viewport_setRotation(sp20);
viewport_update();
func_802BEFB0();
func_802BBA84();
}
@@ -313,13 +314,13 @@ void func_802BC21C(s32 arg0, s32 arg1){
}
}
s32 func_802BC248(void){
return D_8037D8C0;
s32 ncCamera_getType(void){
return ncCameraType;
}
void func_802BC254(void){
D_8037D8C6 = 1;
func_802BC14C();
ncCamera_update();
D_8037D8C6 = 0;
}
@@ -341,21 +342,21 @@ void func_802BC2CC(s32 arg0) {
func_80347A14(0);
}
if (func_80320454(0xE, 0) || func_802D686C() || (arg0 == 0x63) || !func_802BB720(arg0, D_8037D908, D_8037D918, &sp1C)) {
if (D_8037D8C0 == 2) {
if (ncCameraType == CAMERA_TYPE_2_DYNAMIC) {
func_802BE794();
}
func_802BC254();
func_802BC254();
return;
}
if (D_8037D8C0 == 2) {
if (ncCameraType == CAMERA_TYPE_2_DYNAMIC) {
func_802BE894(D_8037D918, D_8037D908);
}
func_8024CD88(D_8037D908);
func_8024CE18(D_8037D918);
func_8024CFD4();
viewport_setPosition(D_8037D908);
viewport_setRotation(D_8037D918);
viewport_update();
__spawnQueue_add_2((GenMethod_2)func_802BC2A0, reinterpret_cast(s32, sp24), reinterpret_cast(s32, sp20));
if (D_8037D8C0 == 2) {
if (ncCameraType == CAMERA_TYPE_2_DYNAMIC) {
func_802BE720();
if (sp1C != 0x63) {
func_802BC254();

View File

@@ -3,7 +3,7 @@
#include "variables.h"
s32 func_80259254(f32 *, f32, f32, f32);
void func_802C2ADC(f32 *);
void ncFirstPersonCamera_getZoomedInRotation(f32 *);
extern u8 D_8037DCCA;
extern u8 D_8037DCCB;
@@ -98,7 +98,7 @@ s32 func_8028A5C0(void){
D_8037DCCC = 1;
}//L8028A764
else if(jiggyscore_isCollected(0x10)){
func_802C2ADC(sp30);
ncFirstPersonCamera_getZoomedInRotation(sp30);
if( (((D_8036361C[0] <= sp30[0])? (sp30[0] - D_8036361C[0]) : -(sp30[0] - D_8036361C[0])) < 4.0f)
&& (((D_8036361C[1] <= sp30[1])? (sp30[1] - D_8036361C[1]) : -(sp30[1] - D_8036361C[1])) < 20.0f)
){

View File

@@ -1,50 +0,0 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
/* .bss */
struct {
f32 unk0[3];
f32 unkC[3];
f32 unk18[3];
f32 unk24[3];
}D_8037DA50;
/* .code */
void func_802BEC60(void) {
s32 sp24[3];
s32 sp18[3];
func_8024C5CC(D_8037DA50.unk0);
func_8024C764(D_8037DA50.unkC);
mapModel_getBounds(sp24, sp18);
D_8037DA50.unk18[0] = (f32) sp24[0];
D_8037DA50.unk18[1] = (f32) sp24[1];
D_8037DA50.unk18[2] = (f32) sp24[2];
D_8037DA50.unk24[0] = (f32) sp18[0];
D_8037DA50.unk24[1] = (f32) sp18[1];
D_8037DA50.unk24[2] = (f32) sp18[2];
}
void func_802BED00(void){
func_8024CD88(D_8037DA50.unk0);
func_8024CE18(D_8037DA50.unkC);
}
void func_802BED30(void) {
f32 sp24[3];
f32 sp18[3];
sp24[0] = randf2(D_8037DA50.unk18[0], D_8037DA50.unk24[0]);\
sp24[1] = randf2(D_8037DA50.unk18[1], D_8037DA50.unk24[1]);\
sp24[2] = randf2(D_8037DA50.unk18[2], D_8037DA50.unk24[2]);
sp18[0] = randf2(-90.0f, 90.0f);\
sp18[1] = randf2(0.0f, 360.0f);\
sp18[2] = 0.0f;
func_8024CD88(sp24);
func_8024CE18(sp18);
}

View File

@@ -94,7 +94,7 @@ void func_802BEFB0(void) {
return;
}
D_8037DA80.unk10 += time_getDelta();
func_8024C5CC(sp30);
viewport_getPosition(sp30);
sp24[0] = sp30[0];
sp24[1] = sp30[1] + 10000.0f;
sp24[2] = sp30[2];

View File

@@ -1,183 +0,0 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
extern f32 func_802BD51C(void);
void func_802C0150(s32 arg0);
/* .bss */
u8 D_8037DB40;
f32 D_8037DB48[3];
f32 D_8037DB58[3];
f32 D_8037DB70;
f32 D_8037DB78[3];
f32 D_8037DB84[3];
f32 D_8037DB90[3];
f32 D_8037DB9C;
/* .code */
void func_802C0120(void){
D_8037DB40 = 0;
func_802C0150(2);
}
void func_802C0148(void){}
void func_802C0150(s32 arg0) {
D_8037DB40 = arg0;
if (arg0 == 6) {
func_802BD4C0(D_8037DB48);
ml_vec3f_clear(D_8037DB58);
}
}
s32 func_802C0190(void){
return D_8037DB40;
}
void func_802C019C(f32 arg0[3]){
func_802BD3CC(arg0);
}
void func_802C01BC(f32 arg0[3]){
func_802BD4C0(arg0);
}
void func_802C01DC(f32 arg0[3]) {
f32 sp1C[3];
func_8028E7EC(sp1C);
player_getPosition(arg0);
arg0[0] = sp1C[0];
arg0[1] += 90.0f;
arg0[2] = sp1C[2];
}
void func_802C0234(f32 arg0[3]) {
player_getPosition(arg0);
arg0[1] += 60.0f;
}
void func_802C026C(f32 arg0[3]) {
f32 sp1C[3];
func_802BD4C0(arg0);
player_getPosition(sp1C);
arg0[1] = sp1C[1];
arg0[1] += 60.0f;
}
void func_802C02B4(f32 arg0[3]){
func_802BD4C0(arg0);
}
void func_802C02D4(f32 arg0[3]) {
switch(D_8037DB40){
case 1:
func_802C019C(arg0);
break;
case 2:
func_802C01BC(arg0);
break;
case 3:
func_802C01DC(arg0);
break;
case 4:
func_802C0234(arg0);
break;
case 5:
func_802C026C(arg0);
break;
case 6:
func_802C02B4(arg0);
break;
}
}
void func_802C0370(){
func_802BD384(D_8037DB84);
}
void func_802C0394(f32 src[3]){
ml_vec3f_copy(D_8037DB90, src);
}
void func_802C03BC(void) {
f32 sp2C[3];
f32 sp20[3];
f32 sp1C;
func_802BD384(D_8037DB78);
ml_vec3f_diff_copy(sp20, D_8037DB90, D_8037DB84);
ml_vec3f_diff_copy(sp2C, D_8037DB78, D_8037DB84);
ml_vec3f_normalize(sp20);
ml_vec3f_normalize(sp2C);
sp1C = sp20[0]*sp2C[0] + sp20[1]*sp2C[1] + sp20[2]*sp2C[2];
if (sp1C < 0.0f || D_8037DB9C < 0.0f) {
func_802BD334(D_8037DB84);
}
D_8037DB9C = sp1C;
}
void func_802C0490(f32 arg0[3]){
func_802C02D4(arg0);
}
void func_802C04B0(void) {
f32 sp34[3];
f32 sp28[3];
f32 sp1C[3];
func_802BD384(sp34);
func_802C0490(sp1C);
ml_vec3f_diff_copy(sp28,sp34, sp1C);
func_8025801C(sp28, &D_8037DB70);
}
void func_802C04F8(void) {
func_802BE244(5.0f, 10.0f);
func_802BE230(3.0f, 8.0f);
func_802C0150(2);
func_802C04B0();
}
void func_802C0550(void){}
void func_802C0558(void) {
f32 sp4C[3];
f32 sp40[3];
f32 sp34[3];
f32 sp28[3];
s32 sp24;
func_802C0370();
func_802C0490(sp4C);
func_80256E24(sp34, 0.0f, D_8037DB70, 0.0f, 0.0f, func_802BD8D4());
ml_vec3f_add(sp40, sp4C, sp34);
sp40[1] = func_802BD51C();
func_802C0394(sp40);
func_802BE190(sp40);
sp24 = 0;
if (func_802BE60C() != 0) {
if (func_802BC84C(1) != 0) {
sp24 = 1;
} else {
func_802C03BC();
}
func_802C04B0();
}
func_802C0490(sp4C);
func_802BE6FC(sp28, sp4C);
if (sp24) {
func_802BD35C(sp28);
}
func_802BD904(sp28);
}

View File

@@ -110,7 +110,7 @@ int func_8028ACD8(void){
return 0;
}
if(func_802C2B00() == 3)
if(ncFirstPersonCamera_getState() == 3)
return 0;
if(!func_8028B2E8() && !player_inWater())

View File

@@ -12,7 +12,6 @@ f32 D_8037DC30[3];
f32 D_8037DC3C;
f32 D_8037DC40;
u8 D_8037DC44;
f32 D_8037DC50[3];
/* .code */
void func_802C2250(void){}
@@ -24,8 +23,8 @@ void func_802C2258(void){
void func_802C2264(f32 arg0){
D_8037DC40 = arg0;
D_8037DC3C = D_8037DC40;
func_802BD384(D_8037DC20);
func_802BD3A8(D_8037DC30);
ncDynamicCamera_getPosition(D_8037DC20);
ncDynamicCamera_getRotation(D_8037DC30);
D_8037DC44 = 1;
}
@@ -34,7 +33,7 @@ void func_802C22B4(void){
}
void func_802C22C0(f32 *arg0, f32 *arg1){
void func_802C22C0(f32 vp_position[3], f32 vp_rotation[3]){
f32 tmpf_1[3];
f32 tmpf_2[3];
f32 tmp;
@@ -43,9 +42,9 @@ void func_802C22C0(f32 *arg0, f32 *arg1){
return;
if(D_8037DC44 == 1){
ml_vec3f_diff(D_8037DC20, arg0);
D_8037DC30[0] = mlDiffDegF(D_8037DC30[0], arg1[0]);
D_8037DC30[1] = mlDiffDegF(D_8037DC30[1], arg1[1]);
ml_vec3f_diff(D_8037DC20, vp_position);
D_8037DC30[0] = mlDiffDegF(D_8037DC30[0], vp_rotation[0]);
D_8037DC30[1] = mlDiffDegF(D_8037DC30[1], vp_rotation[1]);
D_8037DC30[2] = 0.0f;
D_8037DC44 = 2;
}
@@ -56,42 +55,16 @@ void func_802C22C0(f32 *arg0, f32 *arg1){
tmp = ml_map_f(D_8037DC3C, 0.0f, D_8037DC40, 0.0f, 1.0f);
ml_vec3f_scale_copy(tmpf_1, D_8037DC20, tmp);
ml_vec3f_scale_copy(tmpf_2, D_8037DC30, tmp);
arg0[0] += tmpf_1[0];
arg0[1] += tmpf_1[1];
arg0[2] += tmpf_1[2];
arg1[0] += tmpf_2[0];
arg1[1] += tmpf_2[1];
arg1[2] += tmpf_2[2];
arg1[0] = mlNormalizeAngle(arg1[0]);
arg1[1] = mlNormalizeAngle(arg1[1]);
arg1[2] = 0.0f;
vp_position[0] += tmpf_1[0];
vp_position[1] += tmpf_1[1];
vp_position[2] += tmpf_1[2];
vp_rotation[0] += tmpf_2[0];
vp_rotation[1] += tmpf_2[1];
vp_rotation[2] += tmpf_2[2];
vp_rotation[0] = mlNormalizeAngle(vp_rotation[0]);
vp_rotation[1] = mlNormalizeAngle(vp_rotation[1]);
vp_rotation[2] = 0.0f;
}
}
void func_802C2460(void){
f32 sp24[3];
f32 sp12[3];
func_8024C5CC(sp24);
func_8024C764(sp12);
func_802BD334(sp24);
func_802BD35C(sp12);
player_getPosition(D_8037DC50);
func_80291488(5);
}
void func_802C24AC(void){}
void func_802C24B4(void){
f32 sp24[3];
f32 sp18[3];
player_getPosition(sp24);
ml_vec3f_diff_copy(sp18, D_8037DC50, sp24);
if( !(gu_sqrtf(sp18[0]*sp18[0] + sp18[1]*sp18[1] + sp18[2]*sp18[2]) < 2.0f)){
func_80291488(2);
func_802BD0D8(0xB);
func_802BE720();
}
}

View File

@@ -1,134 +0,0 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
extern void func_802BD780(f32[3], f32[3], f32, f32, f32, f32);
extern f32 func_80257CF8(f32, f32, f32, f32, f32);
void func_802C29A0(s32 arg0);
/* .bss */
struct{
f32 unk0[3];
f32 unkC[3];
f32 unk18[3];
f32 unk24[3];
f32 unk30[3];
f32 unk3C[3];
f32 unk48;
u8 unk4C;
} D_8037DC60;
/* .code */
bool func_802C2550(void) {
return (ml_distance_vec3f(D_8037DC60.unk0, D_8037DC60.unk18) < 40.0f);
}
void func_802C2598(f32 arg0[3], f32 arg1[3]) {
s32 i;
func_80259430(&D_8037DC60.unk48);
for( i = 0; i<3; i++){
D_8037DC60.unk0[i] = func_80257CF8(D_8037DC60.unk48, 1.0f, 0.0f, D_8037DC60.unk30[i], D_8037DC60.unk18[i]);
D_8037DC60.unkC[i] = mlNormalizeAngle(D_8037DC60.unk3C[i] + func_80257CF8(D_8037DC60.unk48, 0.5f, 0.0f, 0.0f, mlDiffDegF(D_8037DC60.unk24[i], D_8037DC60.unk3C[i])));
}
if (D_8037DC60.unk48 == 0.0f) {
func_802C29A0(2);
}
if (func_802C2550() && func_8028F150()) {
func_8028FCC8(0);
}
ml_vec3f_copy(arg0, D_8037DC60.unk0);
ml_vec3f_copy(arg1, D_8037DC60.unkC);
}
void func_802C26D8(f32 arg0[3], f32 arg1[3]) {
s32 i;
func_80259430(&D_8037DC60.unk48);
for( i = 0; i<3; i++){
D_8037DC60.unk0[i] = func_80257CF8(D_8037DC60.unk48, 1.0f, 0.0f, D_8037DC60.unk18[i], arg0[i]);
D_8037DC60.unkC[i] = mlNormalizeAngle(D_8037DC60.unk24[i] + func_80257CF8(D_8037DC60.unk48, 1.0f, 0.5f, 0.0f, mlDiffDegF(arg1[i], D_8037DC60.unk24[i])));
}
if (D_8037DC60.unk48 == 0.0f) {
func_802C29A0(4);
}
if (!func_802C2550() && !func_8028F150()) {
func_8028FCC8(1);
}
ml_vec3f_copy(arg0, D_8037DC60.unk0);
ml_vec3f_copy(arg1, D_8037DC60.unkC);
}
void func_802C2838(f32 arg0[3], f32 arg1[3]) {
ml_vec3f_copy(D_8037DC60.unk0, D_8037DC60.unk18);
func_802BD780(D_8037DC60.unk24, D_8037DC60.unkC, 10.0f, 20.0f, 120.0f, 200.0f);
D_8037DC60.unkC[2] = 0.0f;
ml_vec3f_copy(arg0, D_8037DC60.unk0);
ml_vec3f_copy(arg1, D_8037DC60.unkC);
}
void func_802C28C8(void){
ml_vec3f_clear(D_8037DC60.unk0);
ml_vec3f_clear(D_8037DC60.unkC);
ml_vec3f_clear(D_8037DC60.unk18);
ml_vec3f_clear(D_8037DC60.unk24);
ml_vec3f_clear(D_8037DC60.unk30);
ml_vec3f_clear(D_8037DC60.unk3C);
D_8037DC60.unk4C = 0;
}
void func_802C292C(f32 arg0[3], f32 arg1[3]) {
switch (D_8037DC60.unk4C) {
case 1:
func_802C2598(arg0, arg1);
break;
case 2:
func_802C2838(arg0, arg1);
break;
case 3:
func_802C26D8(arg0, arg1);
/* fallthrough */
case 4:
break;
}
}
void func_802C29A0(s32 arg0) {
if (arg0 == 1) {
if (D_8037DC60.unk4C == 3) {
ml_vec3f_copy(D_8037DC60.unk30, D_8037DC60.unk0);
ml_vec3f_copy(D_8037DC60.unk3C, D_8037DC60.unkC);
} else {
func_802BD384(D_8037DC60.unk0);
func_802BD3A8(D_8037DC60.unkC);
func_802BD384(D_8037DC60.unk30);
func_802BD3A8(D_8037DC60.unk3C);
}
D_8037DC60.unk48 = 1.0f;
}
if (arg0 == 3) {
D_8037DC60.unk48 = 1.0f;
}
D_8037DC60.unk4C = arg0;
}
void func_802C2A64(f32 src[3]){
ml_vec3f_copy(D_8037DC60.unk18, src);
}
void func_802C2A8C(f32 src[3]){
D_8037DC60.unk24[0] = mlNormalizeAngle(src[0]);
D_8037DC60.unk24[1] = mlNormalizeAngle(src[1]);
D_8037DC60.unk24[2] = mlNormalizeAngle(src[2]);
}
void func_802C2ADC(f32 dst[3]){
ml_vec3f_copy(dst, D_8037DC60.unk24);
}
s32 func_802C2B00(void){
return D_8037DC60.unk4C;
}

View File

@@ -25,7 +25,7 @@ Actor *func_802CA7BC(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
Actor *this;
f32 sp60;
f32 sp54[3];
f32 sp48[3];
f32 rotation[3];
f32 sp44;
f32 sp40;
f32 sp34[3];
@@ -48,12 +48,12 @@ Actor *func_802CA7BC(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
func_80258108(sp34, &this->yaw, &this->pitch);
sp48[0] = this->pitch;
sp48[1] = this->yaw;
sp48[2] = this->roll;
rotation[0] = this->pitch;
rotation[1] = this->yaw;
rotation[2] = this->roll;
sp44 = ml_map_f(sp54[1] - sp40, 0.0f, 300.0f, 0.43f, 0.28f);
modelRender_preDraw((GenMethod_1)func_802CA790, (s32)this);
modelRender_draw(gfx, mtx, this->position, sp48, sp44, NULL, func_80330B1C(marker));
modelRender_draw(gfx, mtx, this->position, rotation, sp44, NULL, func_80330B1C(marker));
return this;
}
@@ -63,7 +63,7 @@ void func_802CA92C(Actor *this){
f32 sp28[3];
this->marker->collidable = FALSE;
player_getPosition(this->position);
func_8024C5CC(sp34);
viewport_getPosition(sp34);
ml_vec3f_diff_copy(sp28, sp34, this->position);
ml_vec3f_set_length_copy(sp28, sp28, 180.0f);
this->position_x += sp28[0];

View File

@@ -435,7 +435,7 @@ void func_802CCC5C(Actor *this) {
}
if (this->state == 1) {
player_getPosition(sp8C);
func_8024C5CC(sp80);
viewport_getPosition(sp80);
func_8024C5A8(sp74);
sp5C[0] = this->position[0] - sp80[0];
sp5C[1] = this->position[1] - sp80[1];

View File

@@ -1167,8 +1167,8 @@ void func_802D6344(void){
void func_802D6388(void){
timedFunc_set_0(5.0f, func_802D6114);
func_802BBC58(1);
set_camera_to_node(D_80367688);
camera_setType(1);
ncStaticCamera_setToNode(D_80367688);
D_8037DE08 = 0.5f;
}
@@ -1188,7 +1188,7 @@ void func_802D63D4(void){
break;
case 0x2D: //L802D6440
func_802D6388();
func_802BAEF4(sp1C);
ncStaticCamera_getPosition(sp1C);
func_8028F85C(sp1C);
break;
default: //L802D6460

View File

@@ -23,32 +23,32 @@ ActorMarker *D_8037DE40;
/* .code */
Actor *func_802DC320(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
Actor *this;
f32 sp58[3];
f32 sp4C[3];
f32 sp40[3];
f32 vp_position[3];
f32 vp_rotation[3];
f32 model_position[3];
f32 sp34[3];
this = marker_getActor(marker);
modelRender_preDraw( (GenMethod_1)func_803253A0, (s32)this);
modelRender_postDraw((GenMethod_1)func_80325794, (s32)marker);
func_8024E258();
sp58[0] = 0.0f;
sp58[1] = 0.0f;
sp58[2] = 937.5f;
sp4C[0] = 0.0f;
sp4C[1] = 0.0f;
sp4C[2] = 0.0f;
func_8024CD88(sp58);
func_8024CE18(sp4C);
func_8024CFD4();
vp_position[0] = 0.0f;
vp_position[1] = 0.0f;
vp_position[2] = 937.5f;
vp_rotation[0] = 0.0f;
vp_rotation[1] = 0.0f;
vp_rotation[2] = 0.0f;
viewport_setPosition(vp_position);
viewport_setRotation(vp_rotation);
viewport_update();
func_8024C904(gfx, mtx);
sp40[0] = 0.0f;
sp40[1] = 0.0f;
sp40[2] = 0.0f;
model_position[0] = 0.0f;
model_position[1] = 0.0f;
model_position[2] = 0.0f;
sp34[0] = 0.0f;
sp34[1] = 137.5f;
sp34[2] = 0.0f;
modelRender_draw(gfx, mtx, sp40, NULL, 1.0f, sp34, func_80330B1C(marker));
modelRender_draw(gfx, mtx, model_position, NULL, 1.0f, sp34, func_80330B1C(marker));
func_8024E2FC();
func_8024C904(gfx, mtx);
return this;

View File

@@ -37,9 +37,9 @@ Actor *func_802DC7E0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
sp4C[0] = 0.0f;
sp4C[1] = 0.0f;
sp4C[2] = 0.0f;
func_8024CD88(sp58);
func_8024CE18(sp4C);
func_8024CFD4();
viewport_setPosition(sp58);
viewport_setRotation(sp4C);
viewport_update();
func_8024C904(gfx, mtx);
sp40[0] = 0.0f;
sp40[1] = 0.0f;

View File

@@ -145,6 +145,6 @@ void func_802E08F0(Actor *this) {
if (actor_animationIsAt(this, 0.99f) != 0) {
marker_despawn(this->marker);
}
func_8024C764(sp24);
viewport_getRotation(sp24);
this->yaw = sp24[1];
}

View File

@@ -67,7 +67,7 @@ void func_802E3800(void){
func_8024CDF8(0.0f, 0.0f, 0.0f);
func_8024CE40(-30.0f, 30.0f, 0.0f);
func_8024C510(3000.0f);
func_8024CFD4();
viewport_update();
}
void func_802E3854(void){

View File

@@ -215,7 +215,7 @@ void func_802ECBD4(BKVertexList *dst, BKVertexList *src, f32 arg2[3], f32 arg3[3
f32 temp_f0;
s32 pad40;
func_8024C5CC(sp74);
viewport_getPosition(sp74);
func_8024C5A8(sp68);
mlMtxIdent();
func_80252CC4(arg2, arg3, 1.0f, NULL);

View File

@@ -160,7 +160,7 @@ void func_802F1A10(Struct_Core2_6A4B0_2 *arg0, f32 angle_degrees) {
cos = cosf(angle_degrees * 2 * BAD_PI);
sin = sinf(angle_degrees * 2 * BAD_PI);
func_8024C5CC(spC0);
viewport_getPosition(spC0);
spCC[0] = (-(framebuffer_width / 2) * 4) + 8;
spCC[1] = ((framebuffer_height / 2) * 4) - 0x38;
spCC[2] = -0xA;
@@ -214,7 +214,7 @@ void func_802F1CAC(Struct_Core2_6A4B0_2 *arg0) {
s32 *var_s2;
func_8024C5CC(sp78);
viewport_getPosition(sp78);
sp84[0] = (s32) ((1000.0f - sp78[0]) - 200.0f);
sp84[1] = (s32) ((0.0f - sp78[1]) + 300.0f);
sp84[2] = (s32) ((2000.0f - sp78[2]) + 0.0f);

View File

@@ -67,7 +67,7 @@ void func_802F1FC0(Struct65s *self, Gfx **gfx, Mtx **mtx, Vtx **vtx) {
s32 width;
s32 height;
func_8024C5CC(spDC);
viewport_getPosition(spDC);
spD0[0] = self->unk0[0] - spDC[0];
spD0[1] = self->unk0[1] - spDC[1];
spD0[2] = self->unk0[2] - spDC[2];
@@ -326,7 +326,7 @@ void func_802F2ED0(Struct64s *arg0, Gfx **gfx, Mtx **mtx, Vtx **vtx) {
f32 sp38[3];
if (arg0 != NULL && arg0->unk4) {
func_8024C764(sp38);
viewport_getRotation(sp38);
mlMtxIdent();
mlMtxRotPitch(-sp38[0]);
mlMtxRotYaw(-sp38[1]);

View File

@@ -36,7 +36,7 @@ ParticleEmitter *func_802F4274(f32 arg0[3]) {
ml_vec3f_copy(sp2C, arg0);
func_8024559C(sp2C, &sp20, &sp28);
sp2C[1] = sp28 + 14.0f;
func_8024C5CC(sp38);
viewport_getPosition(sp38);
sp44[0] = sp38[0] - sp2C[0];
sp44[2] = sp38[2] - sp2C[2];
sp44[1] = 0.0f;

View File

@@ -820,7 +820,7 @@ void func_8028F85C(f32 arg0[3]){
func_8028A8D0();
func_8028B71C();
func_80290B6C();
func_80291358();
cameraMode_update();
}
void func_8028F8A4(f32 rotation[3]){

View File

@@ -20,7 +20,7 @@ void func_802F7EB0(struct3s *this){
player_getPosition(plyrPos);
func_8024C5A8(camNorm);
func_8024C764(camRot);
viewport_getRotation(camRot);
sp50 = vector_pushBackNew(&this->unk20);
tmpf = randf2(50.0f, 1100.0f);
sp4C[0] = 0.0f;

View File

@@ -21,7 +21,7 @@ void func_802F87B0(struct6s *this){
player_getPosition(plyrPos);
func_8024C5A8(camNorm);
func_8024C764(camRot);
viewport_getRotation(camRot);
ptr = vector_pushBackNew(&this->unk1C);
f20 = randf2(50.0f, 1200.0f);
sp4C[0] = 0.0f;

View File

@@ -7,7 +7,7 @@ typedef struct {
f32 unkC[3];
}Struct_core2_72060_0;
extern f32 func_8024C788();
extern f32 viewport_getYaw();
extern int func_8024DD34(f32, f32, f32);
extern void func_80251B5C(f32, f32, f32);
extern void func_80251F8C(f32);
@@ -166,7 +166,7 @@ void func_802F919C(void) {
} else {
var_f20 = 70.0f;
}
ml_vec3f_yaw_rotate_copy(sp4C, sp4C, func_8024C788() + randf2(-var_f20, var_f20));
ml_vec3f_yaw_rotate_copy(sp4C, sp4C, viewport_getYaw() + randf2(-var_f20, var_f20));
sp4C[0] += D_80381040[0];
sp4C[1] += D_80381040[1];
sp4C[2] += D_80381040[2];
@@ -200,8 +200,8 @@ void func_802F962C(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
void *phi_s0_2;
if ((D_80369280 != NULL) && (D_80369284 != 0)) {
func_8024C5CC(D_80381050);
func_8024C764(D_80381060);
viewport_getPosition(D_80381050);
viewport_getRotation(D_80381060);
D_80381090 = (s32)D_80369288 + D_80369288->gfx_list_offset_C + sizeof(BKGfxList);
temp_s3 = (BKVertexList *)((s32)D_80369288 + D_80369288->vtx_list_offset_10);
D_8038108C = func_802EC920(temp_s3);

View File

@@ -384,8 +384,8 @@ void func_80302C94(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
return;
func_8032D3A8();
func_8024C5CC(sp6C);
func_8024C764(sp54);
viewport_getPosition(sp6C);
viewport_getRotation(sp54);
func_80256664(sp54);
cube_positionToIndices(sp60, sp6C);
sp60[0] -= D_80381FA0.min[0];\

View File

@@ -218,7 +218,7 @@ s32 func_8030CDE4(struct45s *arg0){
f32 temp_f0;
f32 pad;
func_8024C5CC(&sp44);
viewport_getPosition(&sp44);
func_8024C5A8(&sp38);
sp2C[0] = arg0->position[0] - sp44[0];
sp2C[1] = arg0->position[1] - sp44[1];

View File

@@ -183,7 +183,7 @@ void func_8031CD44(s32 arg0, s32 arg1, f32 arg2, f32 arg3, s32 arg4) {
sp30[0] = sp24[0];
sp30[1] = arg2;
sp30[2] = sp24[2];
func_802BD328(0);
ncDynamicCamera_setUpdateEnabled(0);
func_8031CB50(arg0, arg1, 1);
func_8028F3D8(sp30, 1.0f, NULL, NULL);
}
@@ -216,7 +216,7 @@ void func_8031CE70(f32 *arg0, s32 arg1, s32 arg2) {
}
if (ml_distance_vec3f(arg0, sp38) < phi_f2) {
if (phi_s0->unk8 == 0x184) {
func_802BD328(0);
ncDynamicCamera_setUpdateEnabled(0);
func_8031CB50(arg1, arg2, 1);
func_8028F3D8(sp38, 1.0f, NULL, NULL);
} else if (phi_s0->unk8 == 0x185) {

View File

@@ -63,7 +63,7 @@ void func_80322130(Struct_core2_9B180_0 *arg0) {
}
sp1C[1] = D_80383334;
func_8028FAB0(sp1C);
func_802BD0D8(6);
ncDynamicCamera_setState(6);
}
}

View File

@@ -83,7 +83,7 @@ int func_80290D48(void){
if(bsBeeFly_inSet(sp1C) && !func_802BA4D0(func_802B9E48(camera_node_index))){
return FALSE;
}
func_802BD0D8(0x11);
ncDynamicCamera_setState(0x11);
func_802BF798(camera_node_index);
func_80291488(0x9);
return TRUE;
@@ -91,8 +91,8 @@ int func_80290D48(void){
if(bsBeeFly_inSet(sp1C) && !func_802BA89C(func_802B9E5C(camera_node_index))){
return FALSE;
}
func_802BD0D8(0x8);
func_802BF9B8(camera_node_index);
ncDynamicCamera_setState(0x8);
ncDynamicCam8_func_802BF9B8(camera_node_index);
func_80291488(0x9);
return TRUE;
default://L80290E7C
@@ -106,7 +106,7 @@ int func_80290E8C(void){
if(func_8028EE84() != BSWATERGROUP_2_UNDERWATER)
return FALSE;
func_802BD0D8(3);
ncDynamicCamera_setState(3);
func_80291488(0xB);
if( map_get() == MAP_B_CC_CLANKERS_CAVERN
&& player_getYPosition() < 1201.0f
@@ -154,13 +154,13 @@ int func_8029105C(s32 arg0){
if(func_80298850())
return FALSE;
if(should_rotate_camera_left() && func_802C1DB0(-45.0f)){
if(should_rotate_camera_left() && ncDynamicCamA_func_802C1DB0(-45.0f)){
func_80291488(arg0);
func_8029103C();
return TRUE;
}
if(should_rotate_camera_right() && func_802C1DB0(45.0f)){
if(should_rotate_camera_right() && ncDynamicCamA_func_802C1DB0(45.0f)){
func_80291488(arg0);
func_8029103C();
return TRUE;
@@ -171,7 +171,7 @@ int func_8029105C(s32 arg0){
//_camera_mode_1_update
void func_80291108(void){
if(!func_80290D48() && func_802BD0CC() == 0x10){
if(!func_80290D48() && ncDynamicCamera_getState() == 0x10){
func_80290F14();
func_8029105C(8);
}
@@ -182,7 +182,7 @@ void func_80291154(void){
int tmp;
if(!func_80290D48() && !func_80290E8C()){
if(button_held(BUTTON_R)){
func_802BD0D8(0x13);
ncDynamicCamera_setState(0x13);
func_80291488(0x4);
func_80290F14();
}
@@ -190,7 +190,7 @@ void func_80291154(void){
tmp = func_8029105C(7);
func_80290F14();
if(!tmp)
func_802BD0D8(0xB);
ncDynamicCamera_setState(0xB);
}
}
}
@@ -213,7 +213,7 @@ void func_802911E0(void){
void func_80291268(void){
if( !func_80290D48() && !func_80290E8C()){
func_80290F14();
if(!func_8029105C(7) && func_802C1EE0()){
if(!func_8029105C(7) && ncDynamicCamA_func_802C1EE0()){
func_80291488(2);
}
}
@@ -223,7 +223,7 @@ void func_80291268(void){
void func_802912D0(void){
if(!func_80290D48()){
func_80290F14();
if(!func_8029105C(8) && func_802C1EE0()){
if(!func_8029105C(8) && ncDynamicCamA_func_802C1EE0()){
func_802914CC(0x10);
}
@@ -238,7 +238,7 @@ void func_80291328(void){
}
/* camera update */
void func_80291358(void){
void cameraMode_update(void){
func_8029E1A8(7);
func_80290298();
func_8029028C(0);
@@ -248,7 +248,7 @@ void func_80291358(void){
break;
if(D_8037C060){
func_80291488(1);
func_802BD0D8(D_8037C060);
ncDynamicCamera_setState(D_8037C060);
}
else{
func_80291488(2);
@@ -276,7 +276,7 @@ void func_80291358(void){
default://80291438
if(D_8037C060){
func_80291488(1);
func_802BD0D8(D_8037C060);
ncDynamicCamera_setState(D_8037C060);
}
else{
func_80291154();
@@ -305,13 +305,13 @@ void func_802914CC(s32 arg0){
D_8037C060 = arg0;
if(D_8037C062 != 9 && D_8037C062 != 0xa){
func_80291488(1);
func_802BD0D8(arg0);
ncDynamicCamera_setState(arg0);
}
}
void func_8029151C(s32 arg0){
func_80291488(6);
func_802BD0D8(arg0);
ncDynamicCamera_setState(arg0);
}
void func_80291548(void){

View File

@@ -309,7 +309,7 @@ Actor *func_80325CAC(ActorMarker *marker, Gfx **gfx, Gfx **mtx, Vtx **vtx) {
this->position[1] -= D_8036E58C[1];
this->position[2] -= D_8036E58C[2];
}
func_8024C764(rotation);
viewport_getRotation(rotation);
rotation[2] += this->roll;
func_80338338(0xFF, 0xFF, 0xFF);
if (this->unk124_11 != 0) {

View File

@@ -329,7 +329,7 @@ s32 func_80334ECC(void) {
func_802F11E8();
func_80288210();
func_80288834();
func_802BC14C();
ncCamera_update();
func_803045D8();
func_80332E08();
func_803465E4();

View File

@@ -443,7 +443,7 @@ void func_803380F8(Gfx **gfx, Mtx **mtx, f32 arg2[3]) {
f32 sp2C[3];
f32 sp20[3];
func_8024C5CC(sp2C);
viewport_getPosition(sp2C);
sp20[0] = arg2[0] - sp2C[0];
sp20[1] = arg2[1] - sp2C[1];
sp20[2] = arg2[2] - sp2C[2];
@@ -457,7 +457,7 @@ void func_803381B4(Gfx **gfx, Mtx **mtx, f32 arg2[3]) {
f32 sp2C[3];
f32 sp20[3];
func_8024C5CC(sp2C);
viewport_getPosition(sp2C);
sp20[0] = arg2[0] - sp2C[0];
sp20[1] = arg2[1] - sp2C[1];
sp20[2] = arg2[2] - sp2C[2];

View File

@@ -11,29 +11,29 @@ void func_8033EAB0(s32 arg0[3], s32 arg1[3], s32 arg2[3], s32 arg3[3]) {
}
}
s32 func_8033EAF8(s32 arg0[3], s32 arg1[3], f32 arg2[3], f32 arg3[3]) {
f32 sp14[3];
f32 temp_f2;
f32 var_f0;
s32 var_a0;
s32 var_v0;
s32 var_v1;
s32 func_8033EAF8(s32 min_coord[3], s32 max_coord[3], f32 position[3], f32 arg3[3]) {
f32 dCorner[3];
f32 dot_product;
f32 max;
s32 ix;
s32 iy;
s32 iz;
var_f0 = 0.0f;
for(var_v0 = 0; var_v0 < 2; var_v0++){
for(var_v1 = 0; var_v1 < 2; var_v1++){
for(var_a0 = 0; var_a0 < 2; var_a0++){
sp14[0] = (f32)((var_v0) ? arg0[0] : arg1[0]) - arg2[0];
sp14[1] = (f32)((var_v1) ? arg0[1] : arg1[1]) - arg2[1];
sp14[2] = (f32)((var_a0) ? arg0[2] : arg1[2]) - arg2[2];
temp_f2 = (arg3[0] * sp14[0]) + (arg3[1] * sp14[1]) + (arg3[2] * sp14[2]);
if (var_f0 < temp_f2) {
var_f0 = temp_f2;
max = 0.0f;
for(ix = 0; ix < 2; ix++){
for(iy = 0; iy < 2; iy++){
for(iz = 0; iz < 2; iz++){
dCorner[0] = ((ix) ? min_coord[0] : max_coord[0]) - position[0];
dCorner[1] = ((iy) ? min_coord[1] : max_coord[1]) - position[1];
dCorner[2] = ((iz) ? min_coord[2] : max_coord[2]) - position[2];
dot_product = (arg3[0] * dCorner[0]) + (arg3[1] * dCorner[1]) + (arg3[2] * dCorner[2]);
if (max < dot_product) {
max = dot_product;
}
}
}
}
return (s32) var_f0;
return (s32) max;
}
bool func_8033EC10(s32 arg0[3], s32 arg1[3], s32 arg2[3]) {

View File

@@ -40,7 +40,7 @@ void func_8033F7F0(u8 arg0, Gfx **gfx, Mtx **mtx, Vtx **vtx){
if(sp54->unk28_23 != 1){
ml_vec3f_copy(sp48, sp54->unk4);
sp48[1] += (sp54->unk1C*sp54->unk20[1])/100.0;
func_8024C5CC(sp3C);
viewport_getPosition(sp3C);
ml_vec3f_diff_copy(sp30, sp48, sp3C);
if(sp54->unk28_12){
func_80251BCC(func_8024DD90());

View File

@@ -51,7 +51,7 @@ void func_80344138(BKSpriteDisplayData *self, s32 frame, s32 mirrored, f32 posit
f32 sp38;
f32 sp34;
func_8024C5CC(sp6C);
viewport_getPosition(sp6C);
func_8024C5A8(sp60);
sp50[0] = position[0] - sp6C[0];
sp50[1] = position[1] - sp6C[1];
@@ -109,7 +109,7 @@ void func_80344424(BKSpriteDisplayData *arg0, s32 frame, bool mirrored, f32 posi
f32 sp38;
f32 sp34;
func_8024C5CC(sp6C);
viewport_getPosition(sp6C);
func_8024C5A8(sp60);
sp50[0] = position[0] - sp6C[0];
sp50[1] = position[1] - sp6C[1];
@@ -167,7 +167,7 @@ void func_80344720(BKSpriteDisplayData *arg0, s32 frame, bool mirrored, f32 posi
f32 var_f14;
BKSpriteFrameDisplayData *temp_a3;
func_8024C5CC(sp5C);
viewport_getPosition(sp5C);
func_8024C5A8(sp50);
sp40[0] = position[0] - sp5C[0];
sp40[1] = position[1] - sp5C[1];

View File

@@ -233,7 +233,7 @@ void func_803465E4(void){
if(func_80334904() != 2) return;
if(D_80385FE8){
if( func_802BC248() != 3
if( ncCamera_getType() != 3 //CAMERA_TYPE_3_STATIC
&& func_8028F070()
&& map_get() != MAP_33_UNUSED
&& map_get() != MAP_91_FILE_SELECT

View File

@@ -3,7 +3,7 @@
#include "variables.h"
extern bool func_8028F170(f32, f32);
extern void func_8024C5CC(f32[3]);
extern void viewport_getPosition(f32[3]);
typedef struct {
f32 unk0;
@@ -129,8 +129,8 @@ void func_80350818(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
temp_s1 = D_80386170.unk4;
if (( temp_s1 != NULL) && D_8038617C.unk0) {
func_8024C5CC(spDC);
func_8024C764(spD0);
viewport_getPosition(spDC);
viewport_getRotation(spD0);
sp9C[0] = temp_s1->unk4[0];
sp9C[1] = temp_s1->unk4[1];
sp9C[2] = temp_s1->unk4[2];
@@ -196,7 +196,7 @@ void func_80350CA4(void) {
s32 var_v0;
if (D_80386170.unk4 != NULL) {
func_8024C5CC(sp54);
viewport_getPosition(sp54);
sp48[0] = D_80386170.unk4->unk4[0];
sp48[1] = D_80386170.unk4->unk4[1];
sp48[2] = D_80386170.unk4->unk4[2];

View File

@@ -309,7 +309,7 @@ void func_80295C14(void){
func_8029D968();
func_80297CF8();
func_80294E60();
func_80291358();//camera_update
cameraMode_update();
func_802919A0();
if(D_8037C3B0){
D_8037C3B0();

97
src/core2/code_F8EAF0.c Normal file
View File

@@ -0,0 +1,97 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
extern f32 func_802BD51C(void);
void func_802C0150(s32 arg0);
/* .bss */
u8 D_8037DB40;
f32 D_8037DB48[3];
f32 D_8037DB58[3];
/* .code */
void func_802C0120(void){
D_8037DB40 = 0;
func_802C0150(2);
}
void func_802C0148(void){}
void func_802C0150(s32 arg0) {
D_8037DB40 = arg0;
if (arg0 == 6) {
func_802BD4C0(D_8037DB48);
ml_vec3f_clear(D_8037DB58);
}
}
s32 func_802C0190(void){
return D_8037DB40;
}
void func_802C019C(f32 arg0[3]){
func_802BD3CC(arg0);
}
void func_802C01BC(f32 arg0[3]){
func_802BD4C0(arg0);
}
void func_802C01DC(f32 arg0[3]) {
f32 sp1C[3];
func_8028E7EC(sp1C);
player_getPosition(arg0);
arg0[0] = sp1C[0];
arg0[1] += 90.0f;
arg0[2] = sp1C[2];
}
void func_802C0234(f32 arg0[3]) {
player_getPosition(arg0);
arg0[1] += 60.0f;
}
void func_802C026C(f32 arg0[3]) {
f32 sp1C[3];
func_802BD4C0(arg0);
player_getPosition(sp1C);
arg0[1] = sp1C[1];
arg0[1] += 60.0f;
}
void func_802C02B4(f32 arg0[3]){
func_802BD4C0(arg0);
}
void func_802C02D4(f32 arg0[3]) {
switch(D_8037DB40){
case 1:
func_802C019C(arg0);
break;
case 2:
func_802C01BC(arg0);
break;
case 3:
func_802C01DC(arg0);
break;
case 4:
func_802C0234(arg0);
break;
case 5:
func_802C026C(arg0);
break;
case 6:
func_802C02B4(arg0);
break;
}
}

View File

@@ -356,8 +356,8 @@ void gcparade_init(void) {
var_s2 = FALSE;
D_803830F0.unk5 = 0;
if(D_803830F0.parade_element->exit >= 0) {
func_802BBC58(1);
set_camera_to_node(D_803830F0.parade_element->exit);
camera_setType(1);
ncStaticCamera_setToNode(D_803830F0.parade_element->exit);
if (D_803830F0.parade_element->unk8 > 0) {
temp_v0 = func_80304FC4(&D_8036DDAC, &D_80383100, 0x14);
for(var_s0 = 0;(var_s0 < temp_v0) && !var_s2; var_s0++ ){
@@ -369,7 +369,7 @@ void gcparade_init(void) {
}
}
if (!var_s2) {
func_802BAEF4(sp40);
ncStaticCamera_getPosition(sp40);
func_8028F85C(sp40);
}
}

View File

@@ -1218,7 +1218,7 @@ void __gcpausemenu_drawSprite(Gfx** gdl, Mtx** mptr, Vtx** vptr, BKSprite* sprit
func_80338338(0xFF, 0xFF, 0xFF);
func_803382FC(a);
func_8033837C(0);
func_8024C5CC(sp50);
viewport_getPosition(sp50);
sp34 = func_8024DE1C(x, y, sp5C, sp44);
mlMtxIdent(); //matrix_stack_identity
@@ -1337,9 +1337,9 @@ void gcpausemenu_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
sp8C[0] = 0.0f;
sp8C[1] = 0.0f;
sp8C[2] = 0.0f;
func_8024CD88(sp98);
func_8024CE18(sp8C);
func_8024CFD4();
viewport_setPosition(sp98);
viewport_setRotation(sp8C);
viewport_update();
func_8024C904(gfx, mtx);
sp98[0] = 0.0f;
sp98[1] = 0.0f;
@@ -1382,9 +1382,9 @@ void gcpausemenu_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
sp8C[1] = 0.0f;
sp8C[2] = 0.0f;
func_8024CD88(sp98);
func_8024CE18(sp8C);
func_8024CFD4();
viewport_setPosition(sp98);
viewport_setRotation(sp8C);
viewport_update();
func_8024C904(gfx, mtx);
sp98[0] = 0.0f;

View File

@@ -78,7 +78,7 @@ void sky_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx){
if(gcSky.model_bins[0]){
func_80254084(gfx, 0, 0, (s32)(f32) framebuffer_width, (s32)(f32)framebuffer_height,0, 0, 0); //fill screen with black
func_8024C904(gfx, mtx);
func_8024C5CC(position);
viewport_getPosition(position);
for(i = 0; i < 3; i++){
iAsset = gcSky.model_bins[i];
if(iAsset){

View File

@@ -211,9 +211,9 @@ void gctransition_draw(Gfx **gdl, Mtx **mptr, Vtx **vptr){
sp68[1] = 0.0f;
sp68[2] = 0.0f;
func_8024CE60(D_8036C440, D_8036C444);
func_8024CD88(sp74); //camera_setPosition
func_8024CE18(sp68); //camera_setRotation
func_8024CFD4(); //camera_updateNormal
viewport_setPosition(sp74); //viewport_getPosition
viewport_setRotation(sp68); //viewport_getRotation
viewport_update(); //camera_updateNormal
func_8024C904(gdl, mptr);
sp58[0] = 0.0f;

View File

@@ -9,11 +9,11 @@ extern bool func_802ED420(BKModelUnk20List *arg0, u8 *arg1, u32 arg2);
extern void func_802ED52C(BKModelUnk20List *, f32[3], f32);
extern void func_80252AF0(f32[3], f32[3], f32[3], f32, f32[3]);
extern void mlMtxRotate(f32, f32, f32);
extern void func_8024C5CC(f32[3]);
extern void func_8024C764(f32[3]);
extern void func_8024CD88(f32[3]);
extern void func_8024CE18(f32[3]);
extern void func_8024CFD4(void);
extern void viewport_getPosition(f32[3]);
extern void viewport_getRotation(f32[3]);
extern void viewport_setPosition(f32[3]);
extern void viewport_setRotation(f32[3]);
extern void viewport_update(void);
extern void func_8033BD4C(BKModelBin *);
extern s32 func_8024DB50(f32[3], f32);
extern void func_80251788(f32, f32, f32);
@@ -695,9 +695,9 @@ void modelRender_reset(void){
func_8033A45C(1,1);
func_8033A45C(2,0);
if(D_80383758.unk18){
func_8024CD88(D_80383758.unk1C);
func_8024CE18(D_80383758.unk28);
func_8024CFD4();
viewport_setPosition(D_80383758.unk1C);
viewport_setRotation(D_80383758.unk28);
viewport_update();
}
}
@@ -1033,8 +1033,8 @@ BKModelBin *modelRender_draw(Gfx **gfx, Mtx **mtx, f32 position[3], f32 rotation
}
D_80370990 = 0;
func_8024C5CC(modelRenderCameraPosition);
func_8024C764(modelRenderCameraRotation);
viewport_getPosition(modelRenderCameraPosition);
viewport_getRotation(modelRenderCameraRotation);
if(D_80383758.unk18){
D_80383758.unk1C[0] = modelRenderCameraPosition[0];
D_80383758.unk1C[1] = modelRenderCameraPosition[1];
@@ -1074,9 +1074,9 @@ BKModelBin *modelRender_draw(Gfx **gfx, Mtx **mtx, f32 position[3], f32 rotation
modelRenderCameraRotation[0] = D_80383758.unkC[0],
modelRenderCameraRotation[1] = D_80383758.unkC[1],
modelRenderCameraRotation[2] = D_80383758.unkC[2];
func_8024CD88(modelRenderCameraPosition);
func_8024CE18(modelRenderCameraRotation);
func_8024CFD4();
viewport_setPosition(modelRenderCameraPosition);
viewport_setRotation(modelRenderCameraRotation);
viewport_update();
camera_focus[0] = object_position[0] - modelRenderCameraPosition[0];
camera_focus[1] = object_position[1] - modelRenderCameraPosition[1];
camera_focus[2] = object_position[2] - modelRenderCameraPosition[2];
@@ -1418,8 +1418,8 @@ void func_8033A28C(bool arg0){
void func_8033A298(bool arg0){
D_80383758.unk18 = arg0;
if(arg0){
func_8024C5CC(D_80383758.unk0);
func_8024C764(D_80383758.unkC);
viewport_getPosition(D_80383758.unk0);
viewport_getRotation(D_80383758.unkC);
}
}

View File

@@ -92,7 +92,7 @@ void func_802B9EBC(s32 camera_node_index, s32 arg1){
func_802BA76C(ncCameraNodeList[camera_node_index].data_ptr);
break;
case 2:// L802B9F38
func_802BAA88(ncCameraNodeList[camera_node_index].data_ptr);
ncCameraNodeType2_free(ncCameraNodeList[camera_node_index].data_ptr);
break;
case 0:// L802B9F40
break;
@@ -112,7 +112,7 @@ void func_802B9EBC(s32 camera_node_index, s32 arg1){
ncCameraNodeList[camera_node_index].data_ptr = func_802BA6D4();
break;
case 2:// L802B9FB0
ncCameraNodeList[camera_node_index].data_ptr = func_802BAA40();
ncCameraNodeList[camera_node_index].data_ptr = ncCameraNodeType2_new();
break;
case 0:// L802B9FBC
break;
@@ -136,7 +136,7 @@ void __ncCameraNodeList_nodeFromFile(Struct61s *file_ptr, s32 arg1){
func_802BA93C(file_ptr, func_802B9E5C(arg1));
break;
case 2:// L802BA084
func_802BAB3C(file_ptr, func_802B9E70(arg1));
ncCameraNodeType2_fromFile(file_ptr, func_802B9E70(arg1));
break;
case 0:// L802BA098
break;

View File

@@ -0,0 +1,47 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
extern f32 func_80259198(f32, f32);
extern f32 func_802BD51C(void);
extern f32 player_getYaw(void);
extern void func_802BD870(f32, f32, f32, f32);
void ncDynamicCam1_init(void){
func_802BD870(12.0f, 10.0f, 120.0f, 120.0f);
}
void ncDynamicCam1_end(void){}
void ncDynamicCam1_update(void) {
f32 sp8C[3];
f32 sp80[3];
f32 sp74[3];
f32 sp68[3];
f32 sp5C[3];
f32 sp50[3];
f32 sp4C;
f32 sp48;
f32 temp_f20;
f32 sp40;
f32 sp3C;
ncDynamicCamera_getPosition(sp74);
func_802BD4C0(sp8C);
sp3C = func_802BD8D4();
temp_f20 = time_getDelta();
ml_vec3f_diff_copy(sp50, sp74, sp8C);
sp4C = gu_sqrtf((sp50[0] * sp50[0]) + (sp50[2] * sp50[2]));
sp4C += func_80259198((sp3C - sp4C) * temp_f20 * 2, temp_f20 * 120.0f);
func_8025801C(sp50, &sp48);
sp40 = func_80259198(mlDiffDegF(mlNormalizeAngle(180.0f + player_getYaw()), sp48) * (temp_f20 * 1), temp_f20 * 50.0f);
sp48 = mlNormalizeAngle(sp48 + sp40);
func_80256E24(sp68, 0.0f, sp48, 0.0f, 0.0f, sp4C);
ml_vec3f_add(sp80, sp8C, sp68);
sp80[1] = sp74[1] + ((func_802BD51C() - sp74[1]) * temp_f20 * 2);
ncDynamicCamera_setPosition(sp80);
func_8025727C(sp8C[0], sp8C[1], sp8C[2], sp80[0], sp80[1], sp80[2], &sp5C[0], &sp5C[1]);
sp5C[0] = -sp5C[0];
sp5C[2] = 0.0f;
func_802BD720(sp5C);
}

View File

@@ -21,22 +21,22 @@ void func_802BF12C(void){
f32 sp28[3];
f32 sp1C[3];
func_802BD384(sp34);
ncDynamicCamera_getPosition(sp34);
func_802BF0E0(sp1C);
ml_vec3f_diff_copy(sp28, sp34, sp1C);
func_8025801C(sp28, &D_8037DAA0);
}
void func_802BF174(void){
void ncDynamicCam10_init(void){
func_802BE244(4.0f, 16.0f);
func_802BE230(1.1f, 14.0f);
func_802C0150(3);
func_802BF12C();
}
void func_802BF1CC(void){}
void ncDynamicCam10_end(void){}
void func_802BF1D4(void){
void ncDynamicCam10_update(void){
f32 sp5C[3];
f32 sp50[3];
f32 sp44[3];

View File

@@ -16,14 +16,14 @@ f32 D_8037DAE8;
f32 D_8037DAEC;
/* .code */
void func_802BF5C0(void){
void ncDynamicCam11_init(void){
D_8037DAE5 = TRUE;
func_802C0150(1);
}
void func_802BF5EC(void){}
void ncDynamicCam11_end(void){}
void func_802BF5F4(void) {
void ncDynamicCam11_update(void) {
f32 sp64[3];
f32 sp58[3];
f32 sp4C[3];
@@ -35,7 +35,7 @@ void func_802BF5F4(void) {
if (D_8037DAE5 == 0) {
func_802C02D4(sp64);
func_802BD384(sp58);
ncDynamicCamera_getPosition(sp58);
ml_vec3f_diff_copy(sp24, sp58, sp64);
sp24[1] = 0.0f;
sp20 = gu_sqrtf( sp24[0]*sp24[0] + sp24[2]*sp24[2] );
@@ -59,7 +59,7 @@ void func_802BF5F4(void) {
if (D_8037DAE4) {
func_802BE60C();
}
func_802BD384(sp58);
ncDynamicCamera_getPosition(sp58);
func_802BC434(sp4C, sp64, sp58);
func_802BC434(sp40, sp64, D_8037DAD0);
if (sp30 < 150.0f) {

View File

@@ -34,7 +34,6 @@ struct {
u8 unk2E;
u8 unk2F;
}D_8037DBE0;
f32 D_8037DC10;
/* .code */
bool __is_flying_in_FP(void){
@@ -62,14 +61,14 @@ void func_802C0F4C(void){
func_802C0EE4();
}
void func_802C0F6C(void){
void dynamicCam12_init(void){
func_802C0150(4);
func_802BE244(5.0f, 10.0f);
func_802BE230(3.0f, 8.0f);
func_802BD82C(100.0f, 100.0f);
}
void func_802C0FCC(void){
void ncDynamicCam12_end(void){
func_802C0EE4();
func_802BD840();
}
@@ -176,7 +175,7 @@ s32 func_802C11C8(f32 arg0[3]) {
return 2;
}
void func_802C14E0(void) {
void ncDynamicCam12_update(void) {
f32 sp5C[3];
f32 sp50[3];
f32 sp4C;
@@ -187,7 +186,7 @@ void func_802C14E0(void) {
if (D_8037DBE0.unk2C == 1) {
D_8037DBE0.unk2C = 2;
}
func_802BD384(sp40);
ncDynamicCamera_getPosition(sp40);
if ((D_8037DBE0.unk28 == -1) || (func_802C11C8(sp40) == 0) || __is_flying_in_FP()) {
D_8037DBE0.unk28 = 0;
return;
@@ -202,7 +201,7 @@ void func_802C14E0(void) {
ml_vec3f_add(sp40, D_8037DBE0.unkC, sp50);
}
}
func_802BD334(sp40);
ncDynamicCamera_setPosition(sp40);
func_802C02D4(sp5C);
func_802BE6FC(sp34, sp5C);
func_802BD904(sp34);
@@ -253,8 +252,8 @@ void func_802C16CC(s32 arg0) {
D_8037DBE0.unk2F = 1;
break;
}
D_8037DBE0.unk2D = func_802BD0CC();
func_802BD384(sp3C);
D_8037DBE0.unk2D = ncDynamicCamera_getState();
ncDynamicCamera_getPosition(sp3C);
ml_vec3f_copy(D_8037DBE0.unkC, sp3C);
D_8037DBE0.unk18 = 0.0f;
D_8037DBE0.unk28 = sp38;
@@ -264,7 +263,7 @@ void func_802C16CC(s32 arg0) {
D_8037DBE0.unk2C = 1;
func_80323240(func_802C0EC0(), D_8037DBE0.unk8, D_8037DBE0.unk1C);
if (func_802C11C8(D_8037DBE0.unk1C) == 1) {
func_802BD0D8(0x12);
ncDynamicCamera_setState(0x12);
func_80291488(0xA);
return;
}
@@ -278,95 +277,3 @@ void func_802C16CC(s32 arg0) {
bool func_802C189C(void){
return D_8037DBE0.unk28 < 1;
}
void func_802C18B0(void){
func_802BD870(12.0f, 10.0f, 120.0f, 120.0f);
}
void func_802C18F0(void){}
void func_802C18F8(void) {
f32 sp8C[3];
f32 sp80[3];
f32 sp74[3];
f32 sp68[3];
f32 sp5C[3];
f32 sp50[3];
f32 sp4C;
f32 sp48;
f32 temp_f20;
f32 sp40;
f32 sp3C;
func_802BD384(sp74);
func_802BD4C0(sp8C);
sp3C = func_802BD8D4();
temp_f20 = time_getDelta();
ml_vec3f_diff_copy(sp50, sp74, sp8C);
sp4C = gu_sqrtf((sp50[0] * sp50[0]) + (sp50[2] * sp50[2]));
sp4C += func_80259198((sp3C - sp4C) * temp_f20 * 2, temp_f20 * 120.0f);
func_8025801C(sp50, &sp48);
sp40 = func_80259198(mlDiffDegF(mlNormalizeAngle(180.0f + player_getYaw()), sp48) * (temp_f20 * 1), temp_f20 * 50.0f);
sp48 = mlNormalizeAngle(sp48 + sp40);
func_80256E24(sp68, 0.0f, sp48, 0.0f, 0.0f, sp4C);
ml_vec3f_add(sp80, sp8C, sp68);
sp80[1] = sp74[1] + ((func_802BD51C() - sp74[1]) * temp_f20 * 2);
func_802BD334(sp80);
func_8025727C(sp8C[0], sp8C[1], sp8C[2], sp80[0], sp80[1], sp80[2], &sp5C[0], &sp5C[1]);
sp5C[0] = -sp5C[0];
sp5C[2] = 0.0f;
func_802BD720(sp5C);
}
void func_802C1AD0(void){}
void func_802C1AD8(void){
func_802BD870(10.0f, 20.0f, 120.0f, 200.0f);
func_802C0150(4);
D_8037DC10 = 600.0f;
}
void func_802C1B20(f32 arg0){
D_8037DC10 = arg0;
}
void func_802C1B2C(void) {
f32 sp7C[3];
f32 sp70[3];
f32 sp64[3];
f32 sp58[3];
f32 sp4C[3];
f32 sp40[3];
f32 sp3C;
f32 sp38;
f32 sp34;
f32 sp30;
func_802BD384(sp64);
sp34 = D_8037DC10;
func_802C02D4(sp7C);
sp30 = time_getDelta();
if (sp30);
ml_vec3f_diff_copy(sp40, sp64, sp7C);
sp3C = gu_sqrtf(sp40[0]*sp40[0] + sp40[2]*sp40[2]);
sp3C += func_80259198(sp30*(sp34 - sp3C)*2 , sp30 * 800.0f);
func_8025727C(sp7C[0], sp7C[1], sp7C[2], sp64[0], sp64[1], sp64[2], &sp4C[0], &sp4C[1]);
sp40[1] = sp30 * 0.77 * mlDiffDegF(mlNormalizeAngle(player_getYaw() + 180.0f), sp4C[1]);
sp40[1] = func_80259198(sp40[1], sp30 * 300.0f);
sp4C[1] = mlNormalizeAngle(sp4C[1] + sp40[1]);
func_80256E24(&sp58, 0.0f, sp4C[1], 0.0f, 0.0f, sp3C);
sp70[0] = sp7C[0] + sp58[0];
sp70[1] = sp64[1];
sp70[2] = sp7C[2] + sp58[2];
sp40[1] = sp7C[1] - sp64[1];
if (mlAbsF(sp40[1]) > 200.0f) {
sp70[1] = sp64[1] - ((sp40[1] > 0.0f) ? sp30 * (200.0f - sp40[1]) * 2 : sp30 * (-200.0f - sp40[1]) * 2);
}
func_802BD334(sp70);
if (func_802BE60C()) {
func_802BC84C(0);
}
func_802BE6FC(sp4C, sp7C);
func_802BD720(sp4C);
}

View File

@@ -21,14 +21,14 @@ bool func_802C0640(void){
return mlAbsF(mlDiffDegF(D_8037DBA4, D_8037DBA8)) < 4.0;
}
void func_802C0694(void){}
void ncDynamicCam13_end(void){}
void func_802C069C(void) {
f32 sp34[3];
f32 sp28[3];
f32 sp1C[3];
func_802BD384(sp34);
ncDynamicCamera_getPosition(sp34);
func_802C02D4(sp1C);
ml_vec3f_diff_copy(sp28, sp34, sp1C);
D_8037DBA0 = gu_sqrtf(sp28[0]*sp28[0] + sp28[2]*sp28[2]);
@@ -36,7 +36,7 @@ void func_802C069C(void) {
D_8037DBAC = 0.0f;
}
void func_802C0710(void) {
void ncDynamicCam13_init(void) {
func_802BE230(5.0f, 8.0f);
func_802BE244(8.0f, 15.0f);
func_802C0150(6);
@@ -49,7 +49,7 @@ f32 func_802C0780(void){
return func_802BD51C();
}
void func_802C07A0(void) {
void ncDynamicCam13_update(void) {
f32 sp84[3];
f32 sp78[3];
f32 sp6C[3];
@@ -61,7 +61,7 @@ void func_802C07A0(void) {
f32 sp34[3];
f32 sp28[3];
func_802BD384(sp54);
ncDynamicCamera_getPosition(sp54);
func_802C02D4(sp84);
sp44 = time_getDelta();
func_802BDB30(D_8037DBA4, &D_8037DBA8, &D_8037DBAC, 800.0f, 160.0f, 100.0f);
@@ -71,17 +71,17 @@ void func_802C07A0(void) {
func_80256E24(sp60, 0.0f, D_8037DBA8, 0.0f, 0.0f, sp40);
ml_vec3f_add(sp78, sp84, sp60);
sp78[1] = sp54[1] + (func_802C0780() - sp54[1]) * sp44 * 2;
func_802BD334(sp78);
ncDynamicCamera_setPosition(sp78);
if (func_802BE60C() && func_802BC84C(0)) {
func_802C069C();
}
func_802BE6FC(sp48, sp84);
func_802BD3A8(sp34);
ncDynamicCamera_getRotation(sp34);
sp28[0] = mlDiffDegF(sp48[0], sp34[0]);
sp28[1] = mlDiffDegF(sp48[1], sp34[1]);
sp28[2] = 0.0f;
sp48[0] = sp34[0] + (sp28[0] * sp44 * 4);
func_802BD35C(sp48);
ncDynamicCamera_setRotation(sp48);
}
void func_802C095C(void){

View File

@@ -0,0 +1,62 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
extern f32 func_80259198(f32, f32);
extern f32 player_getYaw(void);
extern void func_802BD870(f32, f32, f32, f32);
f32 D_8037DC10;
void ncDynamicCam3_end(void){}
void ncDynamicCam3_init(void){
func_802BD870(10.0f, 20.0f, 120.0f, 200.0f);
func_802C0150(4);
D_8037DC10 = 600.0f;
}
void func_802C1B20(f32 arg0){
D_8037DC10 = arg0;
}
void ncDynamicCam3_update(void) {
f32 sp7C[3];
f32 sp70[3];
f32 sp64[3];
f32 sp58[3];
f32 sp4C[3];
f32 sp40[3];
f32 sp3C;
f32 sp38;
f32 sp34;
f32 sp30;
ncDynamicCamera_getPosition(sp64);
sp34 = D_8037DC10;
func_802C02D4(sp7C);
sp30 = time_getDelta();
if (sp30);
ml_vec3f_diff_copy(sp40, sp64, sp7C);
sp3C = gu_sqrtf(sp40[0]*sp40[0] + sp40[2]*sp40[2]);
sp3C += func_80259198(sp30*(sp34 - sp3C)*2 , sp30 * 800.0f);
func_8025727C(sp7C[0], sp7C[1], sp7C[2], sp64[0], sp64[1], sp64[2], &sp4C[0], &sp4C[1]);
sp40[1] = sp30 * 0.77 * mlDiffDegF(mlNormalizeAngle(player_getYaw() + 180.0f), sp4C[1]);
sp40[1] = func_80259198(sp40[1], sp30 * 300.0f);
sp4C[1] = mlNormalizeAngle(sp4C[1] + sp40[1]);
func_80256E24(&sp58, 0.0f, sp4C[1], 0.0f, 0.0f, sp3C);
sp70[0] = sp7C[0] + sp58[0];
sp70[1] = sp64[1];
sp70[2] = sp7C[2] + sp58[2];
sp40[1] = sp7C[1] - sp64[1];
if (mlAbsF(sp40[1]) > 200.0f) {
sp70[1] = sp64[1] - ((sp40[1] > 0.0f) ? sp30 * (200.0f - sp40[1]) * 2 : sp30 * (-200.0f - sp40[1]) * 2);
}
ncDynamicCamera_setPosition(sp70);
if (func_802BE60C()) {
func_802BC84C(0);
}
func_802BE6FC(sp4C, sp7C);
func_802BD720(sp4C);
}

View File

@@ -7,8 +7,8 @@ extern f32 player_getYaw(void);
extern f32 player_getPitch(void);
extern void func_802BD870(f32, f32, f32, f32);
void func_802BFE50(f32 arg0, f32 arg1, f32 arg2);
void func_802BFE74(bool);
void ncDynamicCam4_func_802BFE50(f32 arg0, f32 arg1, f32 arg2);
void ncDynamicCam4_func_802BFE74(bool);
/* .bss */
f32 D_8037DB10;
@@ -18,19 +18,19 @@ f32 D_8037DB1C;
f32 D_8037DB20;
/* .code */
void func_802BFA60(void) {
void ncDynamicCam4_init(void) {
func_802BD870(10.0f, 20.0f, 120.0f, 200.0f);
if (map_get() == MAP_90_GL_BATTLEMENTS) {
func_802BFE50(10.0f, 800.0f, 1350.0f);
ncDynamicCam4_func_802BFE50(10.0f, 800.0f, 1350.0f);
} else {
func_802BFE50(2.0f, 800.0f, 350.0f);
ncDynamicCam4_func_802BFE50(2.0f, 800.0f, 350.0f);
}
func_802BFE74(0);
ncDynamicCam4_func_802BFE74(0);
}
void func_802BFAE8(void){}
void ncDynamicCam4_end(void){}
void func_802BFAF0(void) {
void ncDynamicCam4_update(void) {
f32 sp84[3];
f32 sp78[3];
f32 sp6C[3];
@@ -43,7 +43,7 @@ void func_802BFAF0(void) {
f32 sp38;
f32 sp34;
func_802BD384(sp6C);
ncDynamicCamera_getPosition(sp6C);
func_802BD4C0(sp84);
sp84[1] += 40.0f;
sp34 = player_getPitch();
@@ -75,20 +75,20 @@ void func_802BFAF0(void) {
func_80256E24(sp60, -sp54[0], sp54[1], 0.0f, 0.0f, sp44);
ml_vec3f_add(sp78, sp84, sp60);
func_802BD334(sp78);
ncDynamicCamera_setPosition(sp78);
func_8025727C(sp84[0], sp84[1], sp84[2], sp78[0], sp78[1], sp78[2], &sp54[0], &sp54[1]);
sp54[0] = -sp54[0];
sp54[2] = 0.0f;
func_802BD720(sp54);
}
void func_802BFE50(f32 arg0, f32 arg1, f32 arg2){
void ncDynamicCam4_func_802BFE50(f32 arg0, f32 arg1, f32 arg2){
D_8037DB10 = arg0;
D_8037DB14 = arg1;
D_8037DB18 = arg2;
}
void func_802BFE74(bool arg0) {
void ncDynamicCam4_func_802BFE74(bool arg0) {
if (arg0) {
D_8037DB1C = 6.0f;
D_8037DB20 = 270.0f;

View File

@@ -7,16 +7,16 @@ f32 D_8037DAB0[3];
f32 D_8037DABC;
/* .code */
void func_802BF3F0(void) {
void ncDynamicCam5_init(void) {
func_802BE244(5.0f, 10.0f);
func_802BE230(5.0f, 8.0f);
ml_vec3f_clear(D_8037DAB0);
D_8037DABC = 0.0f;
}
void func_802BF44C(void){}
void ncDynamicCam5_end(void){}
void func_802BF454(void) {
void ncDynamicCam5_update(void) {
f32 sp74[3];
f32 sp68[3];
f32 sp5C[3];
@@ -26,7 +26,7 @@ void func_802BF454(void) {
s32 pad34;
f32 sp30;
func_802BD384(sp44);
ncDynamicCamera_getPosition(sp44);
player_getPosition(sp74);
sp74[1] += 60.0f;
ml_vec3f_diff_copy(sp5C, sp44, sp74);
@@ -35,13 +35,13 @@ void func_802BF454(void) {
ml_vec3f_scale_copy(sp50, D_8037DAB0, sp30);
ml_vec3f_diff_copy(sp68, sp74, sp50);
func_802BE190(sp68);
func_802BD384(sp68);
ncDynamicCamera_getPosition(sp68);
func_8025727C(sp74[0], sp74[1], sp74[2], sp68[0], sp68[1], sp68[2], &sp38[0], &sp38[1]);
sp38[0] = -sp38[0];
sp38[2] = 0.0f;
func_802BD904(sp38);
}
void func_802BF590(f32 arg0[3]){
void ncDynamicCam5_func_802BF590(f32 arg0[3]){
ml_vec3f_normalize_copy(D_8037DAB0, arg0);
}

View File

@@ -13,13 +13,13 @@ u8 D_8037DB0D;
u8 D_8037DB0E;
/* .code */
void func_802BF870(void){
void ncDynamicCam8_init(void){
D_8037DB0E = TRUE;
}
void func_802BF880(void){}
void ncDynamicCam8_end(void){}
void func_802BF888(void) {
void ncDynamicCam8_update(void) {
f32 sp5C[3];
f32 sp50[3];
f32 sp44[3];
@@ -31,7 +31,7 @@ void func_802BF888(void) {
if(D_8037DB0E)
return;
func_802BD384(sp44);
ncDynamicCamera_getPosition(sp44);
sp20[0] = D_8037DB00[0];
sp20[1] = D_8037DB00[1];
sp20[2] = D_8037DB00[2];
@@ -46,7 +46,7 @@ void func_802BF888(void) {
if (D_8037DB0D) {
func_802BE60C();
}
func_802BD384(sp44);
ncDynamicCamera_getPosition(sp44);
func_802BD4C0(sp5C);
ml_vec3f_diff_copy(sp50, sp5C, sp44);
func_802BC434(sp38, sp5C, sp44);
@@ -58,7 +58,7 @@ void func_802BF888(void) {
}
void func_802BF9B8(s32 arg0) {
void ncDynamicCam8_func_802BF9B8(s32 arg0) {
f32 sp2C;
f32 sp28;
s32 temp_s0;

View File

@@ -12,25 +12,25 @@ f32 D_8037DBC0;
f32 D_8037DBC8[3];
/* .code */
void func_802C09A0(void) {
void ncDynamicCam9_init(void) {
func_802BD870(6.0f, 10.0f, 50.0f, 120.0f);
func_802BD384(D_8037DBC8);
ncDynamicCamera_getPosition(D_8037DBC8);
}
void func_802C09E0(void){}
void ncDynamicCam9_end(void){}
f32 func_802C09E8(void) {
f32 sp2C[3];
f32 sp20[3];
f32 ncDynamicCam9_func_802C09E8(void) {
f32 d_pos[3];
f32 player_position[3];
player_getPosition(sp20);
sp2C[0] = D_8037DBB0[0] - sp20[0];
sp2C[1] = 0.0f;
sp2C[2] = D_8037DBB0[2] - sp20[2];
return ml_min_f(gu_sqrtf(sp2C[0]*sp2C[0] + sp2C[2]*sp2C[2]), D_8037DBBC) / D_8037DBBC;
player_getPosition(player_position);
d_pos[0] = D_8037DBB0[0] - player_position[0];
d_pos[1] = 0.0f;
d_pos[2] = D_8037DBB0[2] - player_position[2];
return ml_min_f(gu_sqrtf(d_pos[0]*d_pos[0] + d_pos[2]*d_pos[2]), D_8037DBBC) / D_8037DBBC;
}
void func_802C0A60(f32 arg0[3]) {
void ncDynamicCam9_func_802C0A60(f32 arg0[3]) {
f32 sp54[3];
f32 sp48[3];
f32 sp3C[3];
@@ -48,32 +48,32 @@ void func_802C0A60(f32 arg0[3]) {
arg0[2] += sp3C[2];
}
void func_802C0B70(f32 arg0[3], f32 arg1[3]) {
void ncDynamicCam9_func_802C0B70(f32 arg0[3], f32 arg1[3]) {
f32 sp3C[3];
f32 sp30[3];
f32 sp2C;
f32 dt;
sp2C = time_getDelta();
func_802BD384(sp30);
dt = time_getDelta();
ncDynamicCamera_getPosition(sp30);
ml_vec3f_diff_copy(sp3C, arg1, sp30);
sp3C[0] *= sp2C * 1.5;
sp3C[1] *= sp2C * 1.0;
sp3C[2] *= sp2C * 1.5;
sp3C[0] = func_80259198(sp3C[0], sp2C * 1000.0);
sp3C[1] = func_80259198(sp3C[1], sp2C * 1000.0);
sp3C[2] = func_80259198(sp3C[2], sp2C * 1000.0);
sp3C[0] *= dt * 1.5;
sp3C[1] *= dt * 1.0;
sp3C[2] *= dt * 1.5;
sp3C[0] = func_80259198(sp3C[0], dt * 1000.0);
sp3C[1] = func_80259198(sp3C[1], dt * 1000.0);
sp3C[2] = func_80259198(sp3C[2], dt * 1000.0);
ml_vec3f_add(arg0, sp30, sp3C);
func_802BD334(arg0);
ncDynamicCamera_setPosition(arg0);
}
void func_802C0C5C(f32 arg0[3], f32 arg1[3]) {
void ncDynamicCam9_func_802C0C5C(f32 arg0[3], f32 arg1[3]) {
f32 sp54[3];
f32 sp48[3];
f32 sp3C[3];
f32 sp38;
f32 temp_f14;
sp38 = func_802C09E8();
sp38 = ncDynamicCam9_func_802C09E8();
func_802BD4C0(sp48);
ml_vec3f_diff_copy(sp3C, sp48, D_8037DBB0);
ml_vec3f_scale(sp3C, ml_map_f(sp38, 0.4f, 0.75f, 0.5f, 1.0f));
@@ -84,29 +84,29 @@ void func_802C0C5C(f32 arg0[3], f32 arg1[3]) {
arg0[2] = 0.0f;
}
void func_802C0D60(void) {
void ncDynamicCam9_update(void) {
f32 sp44[3];
f32 sp38[3];
f32 sp2C[3];
f32 sp20[3];
f32 temp_f0;
func_802BD384(sp44);
func_802BD3A8(sp38);
if (func_802C09E8() > 0.25){
func_802C0A60(sp2C);
func_802C0C5C(sp20, sp2C);
ncDynamicCamera_getPosition(sp44);
ncDynamicCamera_getRotation(sp38);
if (ncDynamicCam9_func_802C09E8() > 0.25){
ncDynamicCam9_func_802C0A60(sp2C);
ncDynamicCam9_func_802C0C5C(sp20, sp2C);
temp_f0 = mlNormalizeAngle(sp20[1] - sp38[1]);
if((temp_f0 > 200.0f) || (temp_f0 < 160.0f)) {
ml_vec3f_copy(D_8037DBC8, sp2C);
}
}
func_802C0B70(sp2C, D_8037DBC8);
func_802C0C5C(sp20, sp2C);
ncDynamicCam9_func_802C0B70(sp2C, D_8037DBC8);
ncDynamicCam9_func_802C0C5C(sp20, sp2C);
func_802BD720(sp20);
}
void func_802C0E38(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4){
void ncDynamicCam9_func_802C0E38(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4){
D_8037DBB0[0] = arg0;
D_8037DBB0[1] = arg1;
D_8037DBB0[2] = arg2;

View File

@@ -6,7 +6,7 @@ extern f32 func_802BD51C(void);
extern void func_802BDCE0(f32, f32*, f32*, f32, f32);
extern void func_802BDE88(f32*, f32*, f32, f32, f32);
extern void func_802589E4(f32[3], f32, f32);
extern void func_802BD0D8(s32);
extern void ncDynamicCamera_setState(s32);
/* .data */
f32 D_80365DA0 = 0.0f;
@@ -17,21 +17,21 @@ u8 D_80365DB0 = 0;
f32 D_80365DB4 = 0.0f;
/* .code */
void func_802C1DA0(void){}
void ncDynamicCamA_init(void){}
void func_802C1DA8(void){}
void ncDynamicCamA_end(void){}
bool func_802C1DB0(f32 arg0) {
bool ncDynamicCamA_func_802C1DB0(f32 arg0) {
f32 pad4C;
f32 sp40[3];
f32 camera_position[3];
f32 sp34[3];
f32 sp28[3];
f32 sp1C[3];
func_802BD384(sp40);
ncDynamicCamera_getPosition(camera_position);
func_802C02D4(sp28);
ml_vec3f_diff_copy(sp34, sp40, sp28);
ml_vec3f_diff_copy(sp34, camera_position, sp28);
D_80365DAC = gu_sqrtf(sp34[0]*sp34[0] + sp34[2]*sp34[2]);
func_8025801C(sp34, &D_80365DA4);
D_80365DA8 = 0.0f;
@@ -41,24 +41,24 @@ bool func_802C1DB0(f32 arg0) {
func_802589E4(sp1C, mlNormalizeAngle(D_80365DA4 + pad4C), D_80365DAC);
sp1C[0] += sp28[0];
sp1C[2] += sp28[2];
pad4C = sp40[1];
pad4C = camera_position[1];
sp1C[1] = pad4C;
if (func_802BCE0C(sp40, sp1C)) {
func_802BD0D8(0xA);
if (func_802BCE0C(camera_position, sp1C)) {
ncDynamicCamera_setState(0xA);
return TRUE;
}
return FALSE;
}
bool func_802C1EE0(void){
bool ncDynamicCamA_func_802C1EE0(void){
return D_80365DB0;
}
f32 func_802C1EEC(void){
f32 ncDynamicCamA_func_802C1EEC(void){
f32 sp1C[3];
if(func_802C0190() == 3){
func_802BD384(sp1C);
ncDynamicCamera_getPosition(sp1C);
return sp1C[1];
}
else{
@@ -66,7 +66,7 @@ f32 func_802C1EEC(void){
}
}
void func_802C1F30(void) {
void ncDynamicCamA_update(void) {
f32 spB4[3];
f32 spA8[3];
f32 sp9C[3];
@@ -84,8 +84,8 @@ void func_802C1F30(void) {
f32 sp2C[3];
s32 phi_a0;
func_802BD384(sp6C);
func_802BD384(sp9C);
ncDynamicCamera_getPosition(sp6C);
ncDynamicCamera_getPosition(sp9C);
func_802C02D4(spB4);
sp80 = time_getDelta();
@@ -100,8 +100,8 @@ void func_802C1F30(void) {
func_802BDE88(&D_80365DB4, &D_80365DAC, func_802BD8D4(), 0.01f, 0.008f);
func_80256E24(sp90, 0.0f, D_80365DA4, 0.0f, 0.0f, D_80365DAC);
ml_vec3f_add(spA8, spB4, sp90);
spA8[1] = sp9C[1] + ((func_802C1EEC() - sp9C[1]) * sp80 * 2);
func_802BD334(spA8);
spA8[1] = sp9C[1] + ((ncDynamicCamA_func_802C1EEC() - sp9C[1]) * sp80 * 2);
ncDynamicCamera_setPosition(spA8);
sp78 = 0;
sp7C = 0;
if (func_802BE60C() != 0) {
@@ -117,22 +117,22 @@ void func_802C1F30(void) {
}
func_802BE6FC(sp84, spB4);
if (sp7C != 0) {
func_802BD384(sp44);
ncDynamicCamera_getPosition(sp44);
ml_vec3f_diff_copy(sp50, sp44, spB4);
D_80365DAC = gu_sqrtf((sp50[0] * sp50[0]) + (sp50[2] * sp50[2]));
}
if (sp78 != 0) {
D_80365DB0 = 1;
func_802BD35C(sp84);
ncDynamicCamera_setRotation(sp84);
return;
}
func_802BD3A8(sp38);
ncDynamicCamera_getRotation(sp38);
sp2C[0] = mlDiffDegF(sp84[0], sp38[0]);
sp2C[1] = mlDiffDegF(sp84[1], sp38[1]);
sp2C[2] = 0.0f;
sp84[0] = sp38[0] + (sp2C[0] * sp80 * 4.0f);
sp84[1] = sp38[1] + sp2C[1];
func_802BD35C(sp84);
ncDynamicCamera_setRotation(sp84);
if (D_80365DB0 != 0) {
D_80365DB4 = 0.0f;
}

View File

@@ -0,0 +1,95 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
extern f32 func_802BD51C(void);
extern void func_802C0150(s32 arg0);
f32 D_8037DB70;
struct {
f32 D_8037DB78[3];
f32 D_8037DB84[3];
f32 D_8037DB90[3];
}cameraStateB;
void func_802C0370(){
ncDynamicCamera_getPosition(cameraStateB.D_8037DB84);
}
void func_802C0394(f32 src[3]){
ml_vec3f_copy(cameraStateB.D_8037DB90, src);
}
void func_802C03BC(void) {
f32 sp2C[3];
f32 sp20[3];
f32 sp1C;
static f32 D_8037DB9C;
ncDynamicCamera_getPosition(cameraStateB.D_8037DB78);
ml_vec3f_diff_copy(sp20, cameraStateB.D_8037DB90, cameraStateB.D_8037DB84);
ml_vec3f_diff_copy(sp2C, cameraStateB.D_8037DB78, cameraStateB.D_8037DB84);
ml_vec3f_normalize(sp20);
ml_vec3f_normalize(sp2C);
sp1C = sp20[0]*sp2C[0] + sp20[1]*sp2C[1] + sp20[2]*sp2C[2];
if (sp1C < 0.0f || D_8037DB9C < 0.0f) {
ncDynamicCamera_setPosition(cameraStateB.D_8037DB84);
}
D_8037DB9C = sp1C;
}
void func_802C0490(f32 arg0[3]){
func_802C02D4(arg0);
}
void func_802C04B0(void) {
f32 sp34[3];
f32 sp28[3];
f32 sp1C[3];
ncDynamicCamera_getPosition(sp34);
func_802C0490(sp1C);
ml_vec3f_diff_copy(sp28,sp34, sp1C);
func_8025801C(sp28, &D_8037DB70);
}
void ncDynamicCamB_init(void) {
func_802BE244(5.0f, 10.0f);
func_802BE230(3.0f, 8.0f);
func_802C0150(2);
func_802C04B0();
}
void ncDynamicCamB_end(void){}
void ncDynamicCamB_update(void) {
f32 sp4C[3];
f32 sp40[3];
f32 sp34[3];
f32 sp28[3];
s32 sp24;
func_802C0370();
func_802C0490(sp4C);
func_80256E24(sp34, 0.0f, D_8037DB70, 0.0f, 0.0f, func_802BD8D4());
ml_vec3f_add(sp40, sp4C, sp34);
sp40[1] = func_802BD51C();
func_802C0394(sp40);
func_802BE190(sp40);
sp24 = 0;
if (func_802BE60C() != 0) {
if (func_802BC84C(1) != 0) {
sp24 = 1;
} else {
func_802C03BC();
}
func_802C04B0();
}
func_802C0490(sp4C);
func_802BE6FC(sp28, sp4C);
if (sp24) {
ncDynamicCamera_setRotation(sp28);
}
func_802BD904(sp28);
}

View File

@@ -16,26 +16,26 @@ void func_802BFED0(void){
f32 sp1C[3];
player_getPosition(sp28);
func_802BD384(sp1C);
ncDynamicCamera_getPosition(sp1C);
func_80257F18(sp28, sp1C, &sp34);
D_8037DB30.unk8 = sp34;
D_8037DB30.unk4 = 0.0f;
}
void func_802BFF1C(void) {
void ncDynamicCamC_init(void) {
func_802BE244(4.0f, 16.0f);
func_802BE230(1.8f, 14.0f);
D_8037DB30.unk0 = 290.0f;
func_802BFED0();
}
void func_802BFF78(void){}
void ncDynamicCamC_end(void){}
void func_802BFF80(f32 arg0){
D_8037DB30.unk0 = arg0;
}
void func_802BFF8C(void) {
void ncDynamicCamC_update(void) {
f32 sp54[3];
f32 sp48[3];
f32 sp3C[3];
@@ -66,7 +66,7 @@ void func_802BFF8C(void) {
}
break;
}
func_802BD384(sp54);
ncDynamicCamera_getPosition(sp54);
player_getPosition(sp3C);
sp3C[1] += 100.0f;
func_8025727C(sp3C[0], sp3C[1], sp3C[2], sp54[0], sp54[1], sp54[2], &sp48[0], &sp48[1]);

View File

@@ -6,18 +6,18 @@
f32 D_80365D90 = 30.0f;
/* .code */
void func_802BF270(void){
void ncDynamicCamD_init(void){
func_802BE244(4.0f, 16.0f);
func_802BE230(1.4f, 14.0f);
}
void func_802BF2B8(void){}
void ncDynamicCamD_end(void){}
void func_802BF2C0(f32 arg0){
void ncDynamicCamD_func_802BF2C0(f32 arg0){
D_80365D90 = arg0;
}
void func_802BF2CC(void) {
void ncDynamicCamD_update(void) {
f32 sp54[3];
f32 sp48[3];
f32 sp3C[3];
@@ -26,14 +26,14 @@ void func_802BF2CC(void) {
player_getPosition(sp3C);
sp3C[1] += 120.0f;
func_802BD384(sp54);
ncDynamicCamera_getPosition(sp54);
func_80257F18(sp3C, sp54, &sp2C);
func_80256E24(sp30, 0.0f, sp2C, 0.0f, 0.0f, 200.0f);
sp3C[0] += sp30[0];
sp3C[1] += sp30[1];
sp3C[2] += sp30[2];
func_802BE190(sp3C);
func_802BD384(sp54);
ncDynamicCamera_getPosition(sp54);
player_getPosition(sp3C);
sp3C[1] += D_80365D90;
func_8025727C(sp3C[0], sp3C[1], sp3C[2], sp54[0], sp54[1], sp54[2], &sp48[0], &sp48[1]);

View File

@@ -0,0 +1,31 @@
#include <ultra64.h>
#include "functions.h"
static f32 __playerStartPosition[3];
void ncDynamicCamF_init(void){
f32 sp24[3];
f32 sp12[3];
viewport_getPosition(sp24);
viewport_getRotation(sp12);
ncDynamicCamera_setPosition(sp24);
ncDynamicCamera_setRotation(sp12);
player_getPosition(__playerStartPosition);
func_80291488(5);
}
void ncDynamicCamF_end(void){}
void ncDynamicCamF_update(void){
f32 player_position[3];
f32 d_position[3];
player_getPosition(player_position);
ml_vec3f_diff_copy(d_position, __playerStartPosition, player_position);
if( !(gu_sqrtf(d_position[0]*d_position[0] + d_position[1]*d_position[1] + d_position[2]*d_position[2]) < 2.0f)){
func_80291488(2);
ncDynamicCamera_setState(0xB);
func_802BE720();
}
}

View File

@@ -19,9 +19,9 @@ typedef struct {
s32 unk4;
}Struct_core2_356B0_0;
void func_802BD0D8(s32 arg0);
void func_802BD334(f32 arg0[3]);
void func_802BD384(f32 arg0[3]);
void ncDynamicCamera_setState(s32 state);
void ncDynamicCamera_setPosition(f32 arg0[3]);
void ncDynamicCamera_getPosition(f32 arg0[3]);
void func_802BD780(f32[3], f32[3], f32, f32, f32, f32);
void func_802BD840(void);
void func_802BD870(f32 arg0, f32 arg1, f32 arg2, f32 arg3);
@@ -39,8 +39,8 @@ Struct_core2_356B0_0 D_80365D58 = {D_80365D00, 18};
/* .bss */
s32 D_8037D940;
f32 D_8037D948[3];
f32 D_8037D958[3];
f32 D_8037D968[3];
f32 cameraPosition[3];
f32 cameraRotation[3];
f32 D_8037D96C;
f32 D_8037D974;
f32 D_8037D978;
@@ -62,10 +62,10 @@ f32 D_8037D9D8;
f32 D_8037D9E0[3];
f32 D_8037D9EC;
f32 D_8037D9F0;
u8 D_8037D9F4;
u8 D_8037D9F5;
u8 dynamicCameraState;
u8 cameraUpdateEnabled;
u8 D_8037D9F6;
u8 D_8037D9F7;
u8 dynamicCameraInFirstPerson;
/* .code */
bool func_802BC640(f32 arg0[3], f32 arg1[3], f32 arg2, s32 arg3) {
@@ -103,7 +103,7 @@ bool func_802BC640(f32 arg0[3], f32 arg1[3], f32 arg2, s32 arg3) {
func_80244D94(arg0, sp78, sp88, 0x9E0000, 40.0f);
func_8024575C(arg0, sp78, 40.0f, sp88, 4, 0x9E0000);
if (phi_f26 < func_80258708(arg0, sp78)) {
func_802BD334(sp78);
ncDynamicCamera_setPosition(sp78);
ml_vec3f_clear(D_8037D9C8);
ml_vec3f_clear(D_8037D9E0);
return TRUE;
@@ -130,7 +130,7 @@ s32 func_802BC84C(s32 arg0){
else{
func_8028EC64(sp50);
}
func_802BD384(sp38);
ncDynamicCamera_getPosition(sp38);
ml_vec3f_diff_copy(sp5C, sp50, sp38);
ml_vec3f_normalize_copy(sp68, sp5C);
ml_vec3f_copy(sp44, sp50);
@@ -183,10 +183,10 @@ void func_802BCA58(void) {
s32 pad44;
s32 pad40;
f32 sp34[3];
f32 sp28[3];
f32 player_position[3];
player_getPosition(sp28);
ml_vec3f_diff_copy(sp34, sp28, D_8037D958);
player_getPosition(player_position);
ml_vec3f_diff_copy(sp34, player_position, cameraPosition);
sp4C = player_getYaw();
sp48 = ml_map_f(mlAbsF((f32) (mlNormalizeAngle(D_8037D96C - sp4C) - 180.0)), 0.0f, 180.0f, D_8037D97C, D_8037D980);
func_80256E24(D_8037D9A8, 0.0f, sp4C, 0.0f, 0.0f, ml_map_f(gu_sqrtf(sp34[0]*sp34[0] + sp34[2]*sp34[2]), 300.0f, 450.0f, 0.0f, sp48));
@@ -203,18 +203,18 @@ void func_802BCA58(void) {
void func_802BCBD4(void) {
D_8037D940 = 0;
D_8037D9F5 = 1;
cameraUpdateEnabled = TRUE;
func_802BD8EC(130.0f);
func_802BD870(10.0f, 10.0f, 120.0f, 120.0f);
func_802BE230(1.4f, 14.0f);
func_802BD840();
func_802C28C8();
ncFirstPersonCamera_reset();
func_802C0120();
func_802C2258();
func_802C0F4C();
func_8024C764(D_8037D968);
func_8024C5CC(D_8037D958);
ml_vec3f_copy(D_8037D948, D_8037D958);
viewport_getRotation(cameraRotation);
viewport_getPosition(cameraPosition);
ml_vec3f_copy(D_8037D948, cameraPosition);
ml_vec3f_clear(D_8037D9C8);
ml_vec3f_clear(D_8037D9E0);
ml_vec3f_clear(D_8037D9A8);
@@ -225,12 +225,12 @@ void func_802BCBD4(void) {
D_8037D9A0 = 0.0f;
D_8037D9F6 = 0;
D_8037D978 = 100.0f;
D_8037D9F4 = 0;
func_802BD0D8(1);
dynamicCameraState = 0;
ncDynamicCamera_setState(1);
}
void func_802BCD30(void){
func_802BD0D8(0);
ncDynamicCamera_setState(0);
func_802C2250();
func_802C0148();
}
@@ -243,7 +243,7 @@ f32 func_802BCD60(void) {
if ((D_8037D940 & 1) && !func_802BC428())
return D_8037D9A0;
ml_vec3f_copy(sp28, D_8037D958);
ml_vec3f_copy(sp28, cameraPosition);
temp_v0 = func_80245314(sp28, sp34, 10.0f, -600.0f, 0x800000);
if (temp_v0 == 0) {
D_8037D9A0 = sp28[1] - 600.0f;
@@ -276,36 +276,36 @@ void func_802BCE94(void){
func_802BC84C(0);
}
void func_802BCEC4(void){
void ncDynamicCamera_update(void){
f32 sp24[3];
f32 sp18[3];
if(!D_8037D9F5)
if(!cameraUpdateEnabled)
return;
func_802BCD60();
D_8037D948[0] = D_8037D958[0];
D_8037D948[1] = D_8037D958[1];
D_8037D948[2] = D_8037D958[2];
D_8037D948[0] = cameraPosition[0];
D_8037D948[1] = cameraPosition[1];
D_8037D948[2] = cameraPosition[2];
func_802BCA58();
switch(D_8037D9F4){
switch(dynamicCameraState){
case 1:// L802BCF3C
func_802C18F8();
ncDynamicCam1_update();
func_802BCE94();
break;
case 3:// L802BCF54
func_802C1B2C();
ncDynamicCam3_update();
break;
case 4:// L802BCF64
func_802BFAF0();
ncDynamicCam4_update();
func_802BCE94();
break;
case 5:// L802BCF7C
func_802BF454();
ncDynamicCam5_update();
func_802BCE94();
break;
@@ -314,215 +314,215 @@ void func_802BCEC4(void){
break;
case 8:// L802BCFA4
func_802BF888();
ncDynamicCam8_update();
break;
case 9:// L802BCFB4
func_802C0D60();
ncDynamicCam9_update();
func_802BCE94();
break;
case 0xA:// L802BCFCC
func_802C1F30();
ncDynamicCamA_update();
break;
case 0xB:// L802BCFDC
func_802C0558();
ncDynamicCamB_update();
break;
case 0xC:// L802BCFEC
func_802BFF8C();
ncDynamicCamC_update();
func_802BCE94();
break;
case 0xD:// L802BD004
func_802BF2CC();
ncDynamicCamD_update();
func_802BCE94();
break;
case 0xF:// L802BD01C
func_802C24B4();
ncDynamicCamF_update();
break;
case 0x10:// L802BD02C
func_802BF1D4();
ncDynamicCam10_update();
break;
case 0x11:// L802BD03C
func_802BF5F4();
ncDynamicCam11_update();
break;
case 0x12:// L802BD04C
func_802C14E0();
ncDynamicCam12_update();
break;
case 0x13:// L802BD05C
func_802C07A0();
ncDynamicCam13_update();
break;
}//// L802BD064
ml_vec3f_copy(sp24, D_8037D958);
ml_vec3f_copy(sp18, D_8037D968);
ml_vec3f_copy(sp24, cameraPosition);
ml_vec3f_copy(sp18, cameraRotation);
func_802C22C0(sp24, sp18);
if(D_8037D9F7){
func_802C292C(sp24, sp18);
if(dynamicCameraInFirstPerson){
ncFirstPersonCamera_getPositionAndRotation(sp24, sp18);
}
func_8024CD88(sp24);
func_8024CE18(sp18);
viewport_setPosition(sp24);
viewport_setRotation(sp18);
}
int func_802BD0CC(void){
return D_8037D9F4;
int ncDynamicCamera_getState(void){
return dynamicCameraState;
}
void func_802BD0D8(s32 arg0){
if(arg0 == D_8037D9F4)
void ncDynamicCamera_setState(s32 state){
if(state == dynamicCameraState)
return;
switch(D_8037D9F4){
switch(dynamicCameraState){
case 0x1://L802BD114
func_802C18F0();
ncDynamicCam1_end();
break;
case 0x3://L802BD124
func_802C1AD0();
ncDynamicCam3_end();
break;
case 0x4://L802BD134
func_802BFAE8();
ncDynamicCam4_end();
break;
case 0x5://L802BD144
func_802BF44C();
ncDynamicCam5_end();
break;
case 0x8://L802BD154
func_802BF880();
ncDynamicCam8_end();
break;
case 0x9://L802BD164
func_802C09E0();
ncDynamicCam9_end();
break;
case 0xa://L802BD174
func_802C1DA8();
ncDynamicCamA_end();
break;
case 0xb://L802BD184
func_802C0550();
ncDynamicCamB_end();
break;
case 0xc://L802BD194
func_802BFF78();
ncDynamicCamC_end();
break;
case 0xd://L802BD1A4
func_802BF2B8();
ncDynamicCamD_end();
break;
case 0xf://L802BD1B4
func_802C24AC();
ncDynamicCamF_end();
break;
case 0x10://L802BD1C4
func_802BF1CC();
ncDynamicCam10_end();
break;
case 0x11://L802BD1D4
func_802BF5EC();
ncDynamicCam11_end();
break;
case 0x12://L802BD1E4
func_802C0FCC();
ncDynamicCam12_end();
break;
case 0x13://L802BD1F4
func_802C0694();
ncDynamicCam13_end();
break;
}//L802BD1FC
switch (arg0)
switch (state)
{
case 0x1: //L802BD224
func_802C18B0();
ncDynamicCam1_init();
break;
case 0x3: //L802BD234
func_802C1AD8();
ncDynamicCam3_init();
break;
case 0x4: //L802BD244
func_802BFA60();
ncDynamicCam4_init();
break;
case 0x5: //L802BD254
func_802BF3F0();
ncDynamicCam5_init();
break;
case 0x8: //L802BD264
func_802BF870();
ncDynamicCam8_init();
break;
case 0x9: //L802BD274
func_802C09A0();
ncDynamicCam9_init();
break;
case 0xa: //L802BD284
func_802C1DA0();
ncDynamicCamA_init();
break;
case 0xb: //L802BD294
func_802C04F8();
ncDynamicCamB_init();
break;
case 0xc: //L802BD2A4
func_802BFF1C();
ncDynamicCamC_init();
break;
case 0xd: //L802BD2B4
func_802BF270();
ncDynamicCamD_init();
break;
case 0xf: //L802BD2C4
func_802C2460();
ncDynamicCamF_init();
break;
case 0x10: //L802BD2D4
func_802BF174();
ncDynamicCam10_init();
break;
case 0x11: //L802BD2E4
func_802BF5C0();
ncDynamicCam11_init();
break;
case 0x12: //L802BD2F4
func_802C0F6C();
dynamicCam12_init();
break;
case 0x13: //L802BD304
func_802C0710();
ncDynamicCam13_init();
break;
}
D_8037D9F4 = arg0;
dynamicCameraState = state;
}
void func_802BD328(s32 arg0){
D_8037D9F5 = arg0;
void ncDynamicCamera_setUpdateEnabled(bool arg0){
cameraUpdateEnabled = arg0;
}
void func_802BD334(f32 arg0[3]){
ml_vec3f_copy(D_8037D958, arg0);
void ncDynamicCamera_setPosition(f32 arg0[3]){
ml_vec3f_copy(cameraPosition, arg0);
}
void func_802BD35C(f32 arg0[3]){
ml_vec3f_copy(D_8037D968, arg0);
void ncDynamicCamera_setRotation(f32 arg0[3]){
ml_vec3f_copy(cameraRotation, arg0);
}
void func_802BD384(f32 arg0[3]){
ml_vec3f_copy(arg0, D_8037D958);
void ncDynamicCamera_getPosition(f32 arg0[3]){
ml_vec3f_copy(arg0, cameraPosition);
}
void func_802BD3A8(f32 arg0[3]){
ml_vec3f_copy(arg0, D_8037D968);
void ncDynamicCamera_getRotation(f32 arg0[3]){
ml_vec3f_copy(arg0, cameraRotation);
}
void func_802BD3CC(f32 arg0[3]) {
@@ -591,9 +591,9 @@ void func_802BD610(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3, f32 arg4, f32 a
void func_802BD720(f32 arg0[3]) {
f32 sp24[3];
func_802BD3A8(sp24);
ncDynamicCamera_getRotation(sp24);
func_802BD780(arg0, sp24, D_8037D984, D_8037D988, D_8037D98C, D_8037D990);
func_802BD35C(sp24);
ncDynamicCamera_setRotation(sp24);
}
void func_802BD780(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3, f32 arg4, f32 arg5) {
@@ -649,27 +649,27 @@ f32 func_802BD8F8(void){
return D_8037D974;
}
void func_802BD904(f32 arg0[3]) {
f32 sp5C[3];
void func_802BD904(f32 target_rotation[3]) {
f32 camera_rotation[3];
f32 sp50[3];
f32 sp44[3];
f32 sp38[3];
f32 sp34;
f32 dt;
f32 sp30;
if (func_802BC428()) {
ml_vec3f_clear(D_8037D9C8);
func_802BD35C(arg0);
ncDynamicCamera_setRotation(target_rotation);
return;
}
sp34 = time_getDelta();
func_802BD3A8(sp5C);
sp50[0] = mlDiffDegF(arg0[0], sp5C[0]);
sp50[1] = mlDiffDegF(arg0[1], sp5C[1]);
dt = time_getDelta();
ncDynamicCamera_getRotation(camera_rotation);
sp50[0] = mlDiffDegF(target_rotation[0], camera_rotation[0]);
sp50[1] = mlDiffDegF(target_rotation[1], camera_rotation[1]);
sp50[2] = 0.0f;
sp44[0] = sp50[0] * sp34 * D_8037D9D4;
sp44[1] = sp50[1] * sp34 * D_8037D9D4;
sp44[0] = sp50[0] * dt * D_8037D9D4;
sp44[1] = sp50[1] * dt * D_8037D9D4;
sp44[2] = 0.0f;
sp38[0] = sp44[0] - D_8037D9C8[0];
sp38[1] = sp44[1] - D_8037D9C8[1];
@@ -681,16 +681,16 @@ void func_802BD904(f32 arg0[3]) {
sp30 = mlAbsF(D_8037D9C8[0]);
if ((mlAbsF(sp50[0]) < sp30) && (D_8037D9C8[0]*sp50[0] > 0.0f)) {
D_8037D9C8[0] = 0.0f;
sp5C[0] = arg0[0];
camera_rotation[0] = target_rotation[0];
}
sp30 = mlAbsF(D_8037D9C8[1]);
if ((mlAbsF(sp50[1]) < sp30) && (D_8037D9C8[1]*sp50[1] > 0.0f)) {
D_8037D9C8[1] = 0.0f;
sp5C[1] = arg0[1];
camera_rotation[1] = target_rotation[1];
}
sp5C[0] = mlNormalizeAngle(sp5C[0] + D_8037D9C8[0]);
sp5C[1] = mlNormalizeAngle(sp5C[1] + D_8037D9C8[1]);
func_802BD35C(sp5C);
camera_rotation[0] = mlNormalizeAngle(camera_rotation[0] + D_8037D9C8[0]);
camera_rotation[1] = mlNormalizeAngle(camera_rotation[1] + D_8037D9C8[1]);
ncDynamicCamera_setRotation(camera_rotation);
}
void func_802BDB30(f32 arg0, f32 *arg1, f32 *arg2, f32 arg3, f32 arg4, f32 arg5) {
@@ -822,16 +822,16 @@ void func_802BE190(f32 arg0[3]){
if(func_802BC428()){
ml_vec3f_clear(D_8037D9E0);
func_802BD334(arg0);
ncDynamicCamera_setPosition(arg0);
return;
}
end = func_8033DD90()*5;
func_802BD384(sp34);
ncDynamicCamera_getPosition(sp34);
for(i = 0; i < end; i++){
func_802BDF5C(arg0, sp34);
}
func_802BD334(sp34);
ncDynamicCamera_setPosition(sp34);
}
void func_802BE230(f32 arg0, f32 arg1){
@@ -926,13 +926,13 @@ int func_802BE60C(void){
if(map_get() == MAP_91_FILE_SELECT)
return 0;
ml_vec3f_copy(sp1C, D_8037D958);
func_802BE484(D_8037D948, D_8037D958);
return !(sp1C[0] == D_8037D958[0]) || !(sp1C[1] == D_8037D958[1]) || !(sp1C[2] == D_8037D958[2]);
ml_vec3f_copy(sp1C, cameraPosition);
func_802BE484(D_8037D948, cameraPosition);
return !(sp1C[0] == cameraPosition[0]) || !(sp1C[1] == cameraPosition[1]) || !(sp1C[2] == cameraPosition[2]);
}
void func_802BE6FC(f32 arg0[3], f32 arg1[3]){
func_802BC434(arg0, arg1, D_8037D958);
func_802BC434(arg0, arg1, cameraPosition);
}
void func_802BE720(void){
@@ -940,29 +940,29 @@ void func_802BE720(void){
f32 sp28[3];
f32 sp1C[3];
func_8024C5CC(sp28);
func_8024C764(sp1C);
func_802BD334(sp28);
func_802BD35C(sp1C);
viewport_getPosition(sp28);
viewport_getRotation(sp1C);
ncDynamicCamera_setPosition(sp28);
ncDynamicCamera_setRotation(sp1C);
sp34 = func_802BD0CC();
func_802BD0D8(0);
func_802BD0D8(sp34);
sp34 = ncDynamicCamera_getState();
ncDynamicCamera_setState(0);
ncDynamicCamera_setState(sp34);
ml_vec3f_clear(D_8037D9C8);
ml_vec3f_clear(D_8037D9E0);
func_802C28C8();
ncFirstPersonCamera_reset();
}
void func_802BE794(void){
f32 sp2C[3];
f32 sp20[3];
if(D_8037D9F4 == 1 || D_8037D9F4 == 0xb || D_8037D9F4 == 3){
if(dynamicCameraState == 1 || dynamicCameraState == 0xb || dynamicCameraState == 3){
player_getPosition(sp2C);
sp2C[1] += 100.0f;
player_getRotation(sp20);
sp20[1] = mlNormalizeAngle(sp20[1] + 180.0f);
func_8024CD88(sp2C);
func_8024CE18(sp20);
viewport_setPosition(sp2C);
viewport_setRotation(sp20);
func_8024C510(300.0f);
func_802BE720();
}//L802BE828
@@ -983,20 +983,20 @@ int func_802BE834(f32 arg0[3]){
}
void func_802BE894(f32 arg0[3], f32 arg1[3]){
void func_802BE894(f32 position[3], f32 rotation[3]){
f32 sp1C[3];
func_802C02D4(sp1C);
func_802BC434(arg0, sp1C, arg1);
arg0[2] = 0.0f;
func_802BC434(position, sp1C, rotation);
position[2] = 0.0f;
}
void func_802BE8D8(void){
D_8037D9F7 = 1;
func_802C29A0(1);
func_802C2A64(D_8037D958);
func_802C2A8C(D_8037D968);
void ncDynamicCamera_enterFirstPerson(void){
dynamicCameraInFirstPerson = TRUE;
ncFirstPersonCamera_setState(1);
ncFirstPersonCamera_setZoomedOutPosition(cameraPosition);
ncFirstPersonCamera_setZoomedOutRotation(cameraRotation);
}
void func_802BE91C(void){
func_802C29A0(3);
void ncDynamicCamera_exitFirstPerson(void){
ncFirstPersonCamera_setState(3);
}

View File

@@ -0,0 +1,143 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
extern void func_802BD780(f32[3], f32[3], f32, f32, f32, f32);
extern f32 func_80257CF8(f32, f32, f32, f32, f32);
enum nc_first_person_state{
FIRSTPERSON_STATE_1_ENTER = 1,
FIRSTPERSON_STATE_2_IDLE,
FIRSTPERSON_STATE_3_EXIT,
FIRSTPERSON_STATE_4_DONE,
};
void ncFirstPersonCamera_setState(enum nc_first_person_state state);
/* .bss */
struct{
f32 position[3]; //first_person_position
f32 rotation[3];
f32 zoomed_in_position[3];
f32 zoomed_in_rotation[3];
f32 zoomed_out_position[3];
f32 zoomed_out_rotation[3];
f32 transistion_timer;
u8 state;
} D_8037DC60;
/* .code */
bool __ncFirstPersonCamera_fullyZoomedIn(void) {
return (ml_distance_vec3f(D_8037DC60.position, D_8037DC60.zoomed_in_position) < 40.0f);
}
void __ncFirstPersonCamera_getPositionAndRotation_entering(f32 arg0[3], f32 arg1[3]) {
s32 i;
func_80259430(&D_8037DC60.transistion_timer);
for( i = 0; i<3; i++){
D_8037DC60.position[i] = func_80257CF8(D_8037DC60.transistion_timer, 1.0f, 0.0f, D_8037DC60.zoomed_out_position[i], D_8037DC60.zoomed_in_position[i]);
D_8037DC60.rotation[i] = mlNormalizeAngle(D_8037DC60.zoomed_out_rotation[i] + func_80257CF8(D_8037DC60.transistion_timer, 0.5f, 0.0f, 0.0f, mlDiffDegF(D_8037DC60.zoomed_in_rotation[i], D_8037DC60.zoomed_out_rotation[i])));
}
if (D_8037DC60.transistion_timer == 0.0f) {
ncFirstPersonCamera_setState(2);
}
if (__ncFirstPersonCamera_fullyZoomedIn() && func_8028F150()) {
func_8028FCC8(0);
}
ml_vec3f_copy(arg0, D_8037DC60.position);
ml_vec3f_copy(arg1, D_8037DC60.rotation);
}
void __ncFirstPersonCamera_getPositionAndRotation_exiting(f32 arg0[3], f32 arg1[3]) {
s32 i;
func_80259430(&D_8037DC60.transistion_timer);
for( i = 0; i<3; i++){
D_8037DC60.position[i] = func_80257CF8(D_8037DC60.transistion_timer, 1.0f, 0.0f, D_8037DC60.zoomed_in_position[i], arg0[i]);
D_8037DC60.rotation[i] = mlNormalizeAngle(D_8037DC60.zoomed_in_rotation[i] + func_80257CF8(D_8037DC60.transistion_timer, 1.0f, 0.5f, 0.0f, mlDiffDegF(arg1[i], D_8037DC60.zoomed_in_rotation[i])));
}
if (D_8037DC60.transistion_timer == 0.0f) {
ncFirstPersonCamera_setState(4);
}
if (!__ncFirstPersonCamera_fullyZoomedIn() && !func_8028F150()) {
func_8028FCC8(1);
}
ml_vec3f_copy(arg0, D_8037DC60.position);
ml_vec3f_copy(arg1, D_8037DC60.rotation);
}
void __ncFirstPersonCamera_getPositionAndRotation_idle(f32 arg0[3], f32 arg1[3]) {
ml_vec3f_copy(D_8037DC60.position, D_8037DC60.zoomed_in_position);
func_802BD780(D_8037DC60.zoomed_in_rotation, D_8037DC60.rotation, 10.0f, 20.0f, 120.0f, 200.0f);
D_8037DC60.rotation[2] = 0.0f;
ml_vec3f_copy(arg0, D_8037DC60.position);
ml_vec3f_copy(arg1, D_8037DC60.rotation);
}
void ncFirstPersonCamera_reset(void){
ml_vec3f_clear(D_8037DC60.position);
ml_vec3f_clear(D_8037DC60.rotation);
ml_vec3f_clear(D_8037DC60.zoomed_in_position);
ml_vec3f_clear(D_8037DC60.zoomed_in_rotation);
ml_vec3f_clear(D_8037DC60.zoomed_out_position);
ml_vec3f_clear(D_8037DC60.zoomed_out_rotation);
D_8037DC60.state = 0;
}
void ncFirstPersonCamera_getPositionAndRotation(f32 position[3], f32 rotation[3]) {
switch (D_8037DC60.state) {
case FIRSTPERSON_STATE_1_ENTER:
__ncFirstPersonCamera_getPositionAndRotation_entering(position, rotation);
break;
case FIRSTPERSON_STATE_2_IDLE:
__ncFirstPersonCamera_getPositionAndRotation_idle(position, rotation);
break;
case FIRSTPERSON_STATE_3_EXIT:
__ncFirstPersonCamera_getPositionAndRotation_exiting(position, rotation);
/* fallthrough */
case FIRSTPERSON_STATE_4_DONE:
break;
}
}
void ncFirstPersonCamera_setState(enum nc_first_person_state next_state) {
if (next_state == FIRSTPERSON_STATE_1_ENTER) {
if (D_8037DC60.state == FIRSTPERSON_STATE_3_EXIT) {
ml_vec3f_copy(D_8037DC60.zoomed_out_position, D_8037DC60.position);
ml_vec3f_copy(D_8037DC60.zoomed_out_rotation, D_8037DC60.rotation);
} else {
ncDynamicCamera_getPosition(D_8037DC60.position);
ncDynamicCamera_getRotation(D_8037DC60.rotation);
ncDynamicCamera_getPosition(D_8037DC60.zoomed_out_position);
ncDynamicCamera_getRotation(D_8037DC60.zoomed_out_rotation);
}
D_8037DC60.transistion_timer = 1.0f;
}
if (next_state == FIRSTPERSON_STATE_3_EXIT) {
D_8037DC60.transistion_timer = 1.0f;
}
D_8037DC60.state = next_state;
}
void ncFirstPersonCamera_setZoomedOutPosition(f32 src[3]){
ml_vec3f_copy(D_8037DC60.zoomed_in_position, src);
}
void ncFirstPersonCamera_setZoomedOutRotation(f32 src[3]){
D_8037DC60.zoomed_in_rotation[0] = mlNormalizeAngle(src[0]);
D_8037DC60.zoomed_in_rotation[1] = mlNormalizeAngle(src[1]);
D_8037DC60.zoomed_in_rotation[2] = mlNormalizeAngle(src[2]);
}
void ncFirstPersonCamera_getZoomedInRotation(f32 dst[3]){
ml_vec3f_copy(dst, D_8037DC60.zoomed_in_rotation);
}
s32 ncFirstPersonCamera_getState(void){
return D_8037DC60.state;
}

View File

@@ -0,0 +1,50 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
/* .bss */
struct {
f32 storedPosition[3];
f32 storedRotation[3];
f32 minPosition[3];
f32 maxPosition[3];
}D_8037DA50;
/* .code */
void ncRandomCamera_init(void) {
s32 sp24[3];
s32 sp18[3];
viewport_getPosition(D_8037DA50.storedPosition);
viewport_getRotation(D_8037DA50.storedRotation);
mapModel_getBounds(sp24, sp18);
D_8037DA50.minPosition[0] = (f32) sp24[0];
D_8037DA50.minPosition[1] = (f32) sp24[1];
D_8037DA50.minPosition[2] = (f32) sp24[2];
D_8037DA50.maxPosition[0] = (f32) sp18[0];
D_8037DA50.maxPosition[1] = (f32) sp18[1];
D_8037DA50.maxPosition[2] = (f32) sp18[2];
}
void ncRandomCamera_end(void){
viewport_setPosition(D_8037DA50.storedPosition);
viewport_setRotation(D_8037DA50.storedRotation);
}
void ncRandomCamera_update(void) {
f32 sp24[3];
f32 sp18[3];
sp24[0] = randf2(D_8037DA50.minPosition[0], D_8037DA50.maxPosition[0]);\
sp24[1] = randf2(D_8037DA50.minPosition[1], D_8037DA50.maxPosition[1]);\
sp24[2] = randf2(D_8037DA50.minPosition[2], D_8037DA50.maxPosition[2]);
sp18[0] = randf2(-90.0f, 90.0f);\
sp18[1] = randf2(0.0f, 360.0f);\
sp18[2] = 0.0f;
viewport_setPosition(sp24);
viewport_setRotation(sp18);
}

View File

@@ -0,0 +1,73 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
#include "core2/nc/camera.h"
extern void func_8025727C(f32, f32, f32, f32, f32, f32, f32*, f32*);
/* .bss */
static f32 ncStaticCameraPosition[3];
static f32 ncStaticCameraRotation[3];
/* .code */
void ncStaticCamera_init(void){
ml_vec3f_clear(ncStaticCameraPosition);
ml_vec3f_clear(ncStaticCameraRotation);
}
void ncStaticCamera_end(void){}
void ncStaticCamera_rotateToTarget(f32 target[3]){
func_8025727C(
target[0], target[1], target[2],
ncStaticCameraPosition[0], ncStaticCameraPosition[1], ncStaticCameraPosition[2],
&ncStaticCameraRotation[0], &ncStaticCameraRotation[1]
);
ncStaticCameraRotation[0] = mlNormalizeAngle(-ncStaticCameraRotation[0]);
ncStaticCameraRotation[2] = 0.0f;
}
void ncStaticCamera_setPosition(f32 arg0[3]){
ml_vec3f_copy(ncStaticCameraPosition, arg0);
}
void ncStaticCamera_update(void){
viewport_setPosition(ncStaticCameraPosition);
viewport_setRotation(ncStaticCameraRotation);
}
void __ncStaticCamera_setToNode(s32 camera_node_index){
UNK_TYPE(s32) sp1C;
sp1C = func_802B9E70(camera_node_index);
ncCameraNodeType2_getPosition(sp1C, ncStaticCameraPosition);
ncCameraNodeType2_getRotation(sp1C, ncStaticCameraRotation);
}
void ncStaticCamera_setToNode(s32 camera_node_index){
camera_setType(CAMERA_TYPE_3_STATIC);
__ncStaticCamera_setToNode(camera_node_index);
}
void ncStaticCamera_exit(void){
camera_setType(CAMERA_TYPE_2_DYNAMIC);
}
void ncStaticCamera_setPositionAndRotation(f32 arg0[3], f32 arg1[3]){
camera_setType(CAMERA_TYPE_3_STATIC);
ml_vec3f_copy(ncStaticCameraPosition, arg0);
ml_vec3f_copy(ncStaticCameraRotation, arg1);
}
void ncStaticCamera_setPositionAndTarget(f32 arg0[3], f32 arg1[3]){
camera_setType(CAMERA_TYPE_3_STATIC);
ml_vec3f_copy(ncStaticCameraPosition, arg0);
ncStaticCamera_rotateToTarget(arg1);
}
void ncStaticCamera_getPosition(f32 dst[3]){
dst[0] = ncStaticCameraPosition[0];
dst[1] = ncStaticCameraPosition[1];
dst[2] = ncStaticCameraPosition[2];
}

View File

@@ -4,8 +4,8 @@
#include "core2/timedfunc.h"
void func_802BAE4C(void);
void set_camera_to_node(s32);
void ncStaticCamera_exit(void);
void ncStaticCamera_setToNode(s32);
typedef struct timed_function_queue_s{
f32 time;
@@ -215,12 +215,12 @@ void func_80324E38(f32 time, s32 arg0){
timedFunc_set_1(time, (GenMethod_1) func_80324BA0, arg0);
}
void timed_setCameraToNode(f32 time, s32 arg0){
timedFunc_set_1(time, (GenMethod_1) set_camera_to_node, arg0);
void timed_setStaticCameraToNode(f32 time, s32 arg0){
timedFunc_set_1(time, (GenMethod_1) ncStaticCamera_setToNode, arg0);
}
void func_80324E88(f32 time){
timedFunc_set_0(time, (GenMethod_0) func_802BAE4C);
void timed_exitStaticCamera(f32 time){
timedFunc_set_0(time, (GenMethod_0) ncStaticCamera_exit);
}
void timedFunc_set_0(f32 time, GenMethod_0 funcPtr){