d_camera / m_Do_ext / d_particle + minor various wip (#210)

This commit is contained in:
TakaRikka
2022-10-03 15:26:26 -07:00
committed by GitHub
parent 0309490521
commit 4913395dbd
267 changed files with 5153 additions and 8112 deletions
+16 -16
View File
@@ -212,19 +212,19 @@ static int fopAc_Execute(void* actor) {
if (!fopAcM_checkStatus(ac, 0x20000000) && (move == 2 || (move != 0 && !fopAcM_checkStatus(ac, fopAc_ac_c::stopStatus) && (!fopAcM_checkStatus(ac, 0x80) || !fopAcM_CheckCondition(ac, 4))))) {
fopAcM_OffCondition(ac, 2);
ac->mNext = ac->mCurrent;
ac->next = ac->current;
ret = fpcMtd_Execute((process_method_class*)ac->mSubMtd, ac);
} else {
ac->mEvtInfo.suspendProc(ac);
fopAcM_OnCondition(ac, 2);
}
if (fopAcM_checkStatus(ac, 0x20) && ac->mOrig.mPosition.y - ac->mCurrent.mPosition.y > 5000.0f) {
if (fopAcM_checkStatus(ac, 0x20) && ac->orig.pos.y - ac->current.pos.y > 5000.0f) {
fopAcM_delete(ac);
}
if (ac->mCurrent.mPosition.y < -9.999999848243207e+30f) {
ac->mCurrent.mPosition.y = -9.999999848243207e+30f;
if (ac->current.pos.y < -9.999999848243207e+30f) {
ac->current.pos.y = -9.999999848243207e+30f;
}
dKy_depth_dist_set(ac);
@@ -308,19 +308,19 @@ static int fopAc_Create(void* actor) {
fopAcM_prm_class* append = fopAcM_GetAppend(ac);
if (append != NULL) {
fopAcM_SetParam(ac, append->mParameter);
ac->mOrig.mPosition = append->mPos;
ac->mOrig.mAngle = append->mAngle;
ac->orig.pos = append->mPos;
ac->orig.angle = append->mAngle;
ac->mCollisionRot = append->mAngle;
ac->mParentPcId = append->mParentPId;
ac->mSubtype = append->mSubtype;
ac->mScale.set(append->mScale[0] * 0.1f, append->mScale[1] * 0.1f, append->mScale[2] * 0.1f);
ac->mSetID = append->mEnemyNo;
ac->mOrig.mRoomNo = append->mRoomNo;
ac->orig.mRoomNo = append->mRoomNo;
}
ac->mNext = ac->mOrig;
ac->mCurrent = ac->mOrig;
ac->mEyePos = ac->mOrig.mPosition;
ac->next = ac->orig;
ac->current = ac->orig;
ac->mEyePos = ac->orig.pos;
ac->mMaxFallSpeed = -100.0f;
ac->mAttentionInfo.field_0x0[0] = 1;
ac->mAttentionInfo.field_0x0[1] = 2;
@@ -331,9 +331,9 @@ static int fopAc_Create(void* actor) {
ac->mAttentionInfo.field_0x4[1] = 15;
ac->mAttentionInfo.field_0x4[2] = 15;
ac->mAttentionInfo.field_0x8[0] = 51;
ac->mAttentionInfo.mPosition = ac->mOrig.mPosition;
ac->mAttentionInfo.mPosition = ac->orig.pos;
ac->mAttentionInfo.field_0xa = 30;
dKy_tevstr_init(&ac->mTevStr, ac->mOrig.mRoomNo, -1);
dKy_tevstr_init(&ac->mTevStr, ac->orig.mRoomNo, -1);
int roomNo = dComIfGp_roomControl_getStayNo();
if (roomNo >= 0) {
@@ -341,19 +341,19 @@ static int fopAc_Create(void* actor) {
}
dStage_FileList_dt_c* filelist = NULL;
if (ac->mOrig.mRoomNo >= 0) {
filelist = dComIfGp_roomControl_getStatusRoomDt(ac->mOrig.mRoomNo)->mRoomDt.getFileListInfo();
if (ac->orig.mRoomNo >= 0) {
filelist = dComIfGp_roomControl_getStatusRoomDt(ac->orig.mRoomNo)->mRoomDt.getFileListInfo();
}
if (filelist != NULL) {
if (!dStage_FileList_dt_GetEnemyAppear1Flag(filelist)) {
u32 sw = dStage_FileList_dt_GetBitSw(filelist);
if (sw != 0xFF && dComIfGs_isSwitch(sw, ac->mOrig.mRoomNo) && profile->field_0x2c == 2) {
if (sw != 0xFF && dComIfGs_isSwitch(sw, ac->orig.mRoomNo) && profile->field_0x2c == 2) {
return 5;
}
} else {
u32 sw = dStage_FileList_dt_GetBitSw(filelist);
if (sw != 0xFF && !dComIfGs_isSwitch(sw, ac->mOrig.mRoomNo) && profile->field_0x2c == 2) {
if (sw != 0xFF && !dComIfGs_isSwitch(sw, ac->orig.mRoomNo) && profile->field_0x2c == 2) {
return 5;
}
}
+30 -30
View File
@@ -494,7 +494,7 @@ s32 fopAcM_createChildFromOffset(s16 procName, unsigned int parentProcID, u32 ac
const cXyz* p_pos, int roomNo, const csXyz* p_angle,
const cXyz* p_scale, s8 subType, createFunc p_createFunc) {
fopAc_ac_c* parentActor = fopAcM_SearchByID(parentProcID);
s16 parent_angleY = parentActor->mCurrent.mAngle.y;
s16 parent_angleY = parentActor->current.angle.y;
cXyz tmpPos;
if (p_pos == NULL) {
@@ -509,7 +509,7 @@ s32 fopAcM_createChildFromOffset(s16 procName, unsigned int parentProcID, u32 ac
} else {
tmpRot = *p_angle;
}
cXyz parentPos = parentActor->mCurrent.mPosition;
cXyz parentPos = parentActor->current.pos;
csXyz newAngle(tmpRot);
newAngle.y += parent_angleY;
@@ -752,9 +752,9 @@ void fopAcM_calcSpeed(fopAc_ac_c* p_actor) {
/* 8001A660-8001A6CC 014FA0 006C+00 1/1 1/1 17/17 .text fopAcM_posMove__FP10fopAc_ac_cPC4cXyz */
void fopAcM_posMove(fopAc_ac_c* p_actor, const cXyz* p_movePos) {
p_actor->mCurrent.mPosition += p_actor->mSpeed;
p_actor->current.pos += p_actor->mSpeed;
if (p_movePos != NULL) {
p_actor->mCurrent.mPosition += *p_movePos;
p_actor->current.pos += *p_movePos;
}
}
@@ -768,7 +768,7 @@ void fopAcM_posMoveF(fopAc_ac_c* p_actor, const cXyz* p_movePos) {
/* 8001A710-8001A738 015050 0028+00 1/1 26/26 596/596 .text
* fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c */
s16 fopAcM_searchActorAngleY(const fopAc_ac_c* p_actorA, const fopAc_ac_c* p_actorB) {
return cLib_targetAngleY(&p_actorA->mCurrent.mPosition, &p_actorB->mCurrent.mPosition);
return cLib_targetAngleY(&p_actorA->current.pos, &p_actorB->current.pos);
}
/* ############################################################################################## */
@@ -793,7 +793,7 @@ inline f32 square(f32 f) {
/* 8001A738-8001A79C 015078 0064+00 0/0 0/0 13/13 .text
* fopAcM_searchActorAngleX__FPC10fopAc_ac_cPC10fopAc_ac_c */
#ifdef NON_MATCHING
#ifdef NONMATCHING
s16 fopAcM_searchActorAngleX(const fopAc_ac_c* p_actorA, const fopAc_ac_c* p_actorB) {
const cXyz& posA = fopAcM_GetPosition_p(p_actorA);
const cXyz& posB = fopAcM_GetPosition_p(p_actorB);
@@ -815,7 +815,7 @@ asm s16 fopAcM_searchActorAngleX(const fopAc_ac_c* p_actorA, const fopAc_ac_c* p
* fopAcM_seenActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c */
s32 fopAcM_seenActorAngleY(const fopAc_ac_c* p_actorA, const fopAc_ac_c* p_actorB) {
return abs(static_cast<s16>(
cLib_targetAngleY(&p_actorA->mCurrent.mPosition, &p_actorB->mCurrent.mPosition) -
cLib_targetAngleY(&p_actorA->current.pos, &p_actorB->current.pos) -
p_actorA->mCollisionRot.y));
}
@@ -849,20 +849,20 @@ inline f32 local_sqrtf(f32 mag) {
/* 8001A7E0-8001A914 015120 0134+00 0/0 5/5 188/188 .text
* fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c */
f32 fopAcM_searchActorDistance(const fopAc_ac_c* p_actorA, const fopAc_ac_c* p_actorB) {
cXyz tmp = (p_actorB->mCurrent.mPosition - p_actorA->mCurrent.mPosition);
cXyz tmp = (p_actorB->current.pos - p_actorA->current.pos);
return local_sqrtf(tmp.abs2());
}
/* 8001A914-8001A964 015254 0050+00 0/0 0/0 2/2 .text
* fopAcM_searchActorDistance2__FPC10fopAc_ac_cPC10fopAc_ac_c */
f32 fopAcM_searchActorDistance2(const fopAc_ac_c* p_actorA, const fopAc_ac_c* p_actorB) {
cXyz tmp = (p_actorB->mCurrent.mPosition - p_actorA->mCurrent.mPosition);
cXyz tmp = (p_actorB->current.pos - p_actorA->current.pos);
return tmp.abs2();
}
/* 8001A964-8001AA94 0152A4 0130+00 0/0 3/3 125/125 .text
* fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c */
#ifdef NON_MATCHING
#ifdef NONMATCHING
// matches besides data
f32 fopAcM_searchActorDistanceXZ(const fopAc_ac_c* p_actorA, const fopAc_ac_c* p_actorB) {
const cXyz& posA = fopAcM_GetPosition_p(p_actorA);
@@ -882,7 +882,7 @@ asm f32 fopAcM_searchActorDistanceXZ(const fopAc_ac_c* p_actorA, const fopAc_ac_
/* 8001AA94-8001AAE0 0153D4 004C+00 1/1 4/4 30/30 .text
* fopAcM_searchActorDistanceXZ2__FPC10fopAc_ac_cPC10fopAc_ac_c */
#ifdef NON_MATCHING
#ifdef NONMATCHING
// matches besides data
f32 fopAcM_searchActorDistanceXZ2(const fopAc_ac_c* p_actorA, const fopAc_ac_c* p_actorB) {
const cXyz& posA = fopAcM_GetPosition_p(p_actorA);
@@ -925,7 +925,7 @@ s32 fopAcM_rollPlayerCrash(fopAc_ac_c const* actor, f32 param_1, u32 param_2, f3
(player->checkFrontRoll() || player->checkWolfDash()) &&
fopAcM_searchPlayerDistanceXZ2(actor) < (tmp * tmp)) {
if (cM_scos(player->mCurrent.mAngle.y - fopAcM_searchPlayerAngleY(actor)) < param_6) {
if (cM_scos(player->current.angle.y - fopAcM_searchPlayerAngleY(actor)) < param_6) {
player->onFrollCrashFlg(param_2, param_5);
return 1;
}
@@ -1626,7 +1626,7 @@ SECTION_SDATA2 static f32 lit_5812 = 1.0f / 5.0f;
/* 8001C5B0-8001C870 016EF0 02C0+00 3/3 0/0 4/4 .text
* fopAcM_fastCreateItem__FPC4cXyziiPC5csXyzPC4cXyzPfPfiiPFPv_i */
// issue with makeItemParams
#ifdef NON_MATCHING
#ifdef NONMATCHING
void* fopAcM_fastCreateItem(const cXyz* p_pos, int i_itemNo, int i_roomNo, const csXyz* p_angle,
const cXyz* p_scale, f32* p_speedF, f32* p_speedY, int param_8,
int param_9, createFunc p_createFunc) {
@@ -1775,9 +1775,9 @@ asm void fopAcM_myRoomSearchEnemy(s8 param_0) {
* fopAcM_createDisappear__FPC10fopAc_ac_cPC4cXyzUcUcUc */
s32 fopAcM_createDisappear(const fopAc_ac_c* p_actor, const cXyz* p_pos, u8 param_3, u8 param_4,
u8 param_5) {
s8 roomNo = p_actor->mCurrent.mRoomNo;
s8 roomNo = p_actor->current.mRoomNo;
return fopAcM_GetID(fopAcM_fastCreate(PROC_DISAPPEAR, (param_5 << 0x10) | (param_3 << 0x8) | param_4,
p_pos, roomNo, &p_actor->mCurrent.mAngle, NULL, 0xFF, NULL,
p_pos, roomNo, &p_actor->current.angle, NULL, 0xFF, NULL,
NULL));
}
@@ -1824,7 +1824,7 @@ s32 fopAcM_otoCheck(fopAc_ac_c const* p_actor, f32 param_1) {
SND_INFLUENCE* sound = dKy_Sound_get();
if (sound->field_0x14 != -1 && fopAcM_GetID(p_actor) != sound->field_0x14) {
cXyz tmp = sound->field_0x0 - p_actor->mCurrent.mPosition;
cXyz tmp = sound->field_0x0 - p_actor->current.pos;
if (tmp.abs() < param_1) {
return sound->field_0xc;
@@ -1855,10 +1855,10 @@ s32 fopAcM_otherBgCheck(fopAc_ac_c const* param_0, fopAc_ac_c const* param_1) {
cXyz tmp1;
cXyz tmp0;
tmp0 = param_1->mCurrent.mPosition;
tmp0 = param_1->current.pos;
tmp0.y += lit_6035;
tmp1 = param_0->mCurrent.mPosition;
tmp1 = param_0->current.pos;
tmp1.y = param_0->mEyePos.y;
linChk.Set(&tmp1, &tmp0, param_0);
@@ -1877,7 +1877,7 @@ s32 fopAcM_wayBgCheck(fopAc_ac_c const* param_0, f32 param_1, f32 param_2) {
cXyz tmp0;
cXyz tmp2;
tmp0 = param_0->mCurrent.mPosition;
tmp0 = param_0->current.pos;
tmp0.y += param_2;
mDoMtx_YrotS((MtxP)calc_mtx, param_0->mCollisionRot.y);
@@ -1886,7 +1886,7 @@ s32 fopAcM_wayBgCheck(fopAc_ac_c const* param_0, f32 param_1, f32 param_2) {
tmp1.z = param_1;
MtxPosition(&tmp1, &tmp2);
PSVECAdd(&tmp2, &param_0->mCurrent.mPosition, &tmp2);
PSVECAdd(&tmp2, &param_0->current.pos, &tmp2);
linChk.Set(&tmp0, &tmp2, param_0);
@@ -1899,7 +1899,7 @@ s32 fopAcM_wayBgCheck(fopAc_ac_c const* param_0, f32 param_1, f32 param_2) {
/* 8001CFD8-8001D020 017918 0048+00 0/0 0/0 2/2 .text fopAcM_plAngleCheck__FPC10fopAc_ac_cs */
s32 fopAcM_plAngleCheck(fopAc_ac_c const* p_actor, s16 i_angle) {
s16 angle = p_actor->mCollisionRot.y - ((fopAc_ac_c*)dComIfGp_getPlayer(0))->mCollisionRot.y;
s16 angle = p_actor->mCollisionRot.y - dComIfGp_getPlayer(0)->mCollisionRot.y;
if (angle <= i_angle && angle >= (s16)-i_angle) {
return 0;
}
@@ -2013,29 +2013,29 @@ s32 fopAcM_riverStream(cXyz* param_0, s16* param_1, f32* param_2, f32 param_3) {
/* 8001D1FC-8001D32C 017B3C 0130+00 0/0 0/0 12/12 .text fopAcM_carryOffRevise__FP10fopAc_ac_c */
s32 fopAcM_carryOffRevise(fopAc_ac_c* param_0) {
fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0);
fopAc_ac_c* player = dComIfGp_getPlayer(0);
dBgS_LinChk linChk;
cXyz tmp1;
cXyz tmp0;
cXyz tmp2;
tmp0 = player->mCurrent.mPosition;
tmp0.y = param_0->mCurrent.mPosition.y;
tmp0 = player->current.pos;
tmp0.y = param_0->current.pos.y;
mDoMtx_YrotS((MtxP)calc_mtx, player->mCollisionRot.y);
tmp1.x = FLOAT_LABEL(lit_4645);
tmp1.y = param_0->mCurrent.mPosition.y - player->mCurrent.mPosition.y;
tmp1.y = param_0->current.pos.y - player->current.pos.y;
tmp1.z = 150.0f;
MtxPosition(&tmp1, &tmp2);
PSVECAdd(&tmp2, &player->mCurrent.mPosition, &tmp2);
PSVECAdd(&tmp2, &player->current.pos, &tmp2);
linChk.Set(&tmp0, &tmp2, param_0);
if (dComIfG_Bgsp().LineCross(&linChk)) {
param_0->mCurrent.mPosition.x = player->mCurrent.mPosition.x;
param_0->mCurrent.mPosition.z = player->mCurrent.mPosition.z;
param_0->mNext.mPosition = param_0->mCurrent.mPosition;
param_0->current.pos.x = player->current.pos.x;
param_0->current.pos.z = player->current.pos.z;
param_0->next.pos = param_0->current.pos;
param_0->mSpeedF = FLOAT_LABEL(lit_4645);
return 1;
}
@@ -2230,7 +2230,7 @@ asm s32 fopAcM_getWaterY(cXyz const* param_0, f32* param_1) {
* fpoAcM_relativePos__FPC10fopAc_ac_cPC4cXyzP4cXyz */
void fpoAcM_relativePos(fopAc_ac_c const* actor, cXyz const* p_inPos, cXyz* p_outPos) {
s16 angle = -actor->mCollisionRot.y;
cXyz pos = *p_inPos - actor->mCurrent.mPosition;
cXyz pos = *p_inPos - actor->current.pos;
p_outPos->x = (pos.z * cM_ssin(angle)) + (pos.x * cM_scos(angle));
p_outPos->y = pos.y;
+6 -6
View File
@@ -45,7 +45,7 @@ static s32 fopCam_Draw(camera_class* pCamera) {
s32 cam_proc = 1;
if (!dComIfGp_isPauseFlag()) {
cam_proc = fpcLf_DrawMethod(pCamera->pMthd, pCamera);
cam_proc = fpcLf_DrawMethod(pCamera->mpMtd, pCamera);
}
return cam_proc;
}
@@ -55,7 +55,7 @@ static s32 fopCam_Draw(camera_class* pCamera) {
#ifdef NONMATCHING
static void fopCam_Execute(camera_class* pCamera) {
if (!dComIfGp_isPauseFlag() && dScnPly_c::isPause()) {
fpcMtd_Execute((process_method_class*)pCamera->pMthd, pCamera);
fpcMtd_Execute((process_method_class*)pCamera->mpMtd, pCamera);
}
}
#else
@@ -72,9 +72,9 @@ static asm void fopCam_Execute(camera_class* param_0) {
/* 8001E1C8-8001E21C 018B08 0054+00 1/0 0/0 0/0 .text fopCam_IsDelete__FP12camera_class
*/
int fopCam_IsDelete(camera_class* pCamera) {
int delete_stat = fpcMtd_IsDelete((process_method_class*)pCamera->pMthd, pCamera);
int delete_stat = fpcMtd_IsDelete((process_method_class*)pCamera->mpMtd, pCamera);
if (delete_stat == 1) {
fopDwTg_DrawQTo(&pCamera->pCreateTag);
fopDwTg_DrawQTo(&pCamera->mCreateTag);
}
return delete_stat;
@@ -82,9 +82,9 @@ int fopCam_IsDelete(camera_class* pCamera) {
/* 8001E21C-8001E270 018B5C 0054+00 1/0 0/0 0/0 .text fopCam_Delete__FP12camera_class */
int fopCam_Delete(camera_class* pCamera) {
int delete_stat = fpcMtd_Delete((process_method_class*)pCamera->pMthd, pCamera);
int delete_stat = fpcMtd_Delete((process_method_class*)pCamera->mpMtd, pCamera);
if (delete_stat == 1) {
fopDwTg_DrawQTo(&pCamera->pCreateTag);
fopDwTg_DrawQTo(&pCamera->mCreateTag);
}
return delete_stat;
+14 -13
View File
@@ -132,21 +132,22 @@ request_base_class* fopOvlpReq_Request(overlap_request_class* pOvlpReq, s16 para
/* 8001E9F0-8001EA88 019330 0098+00 0/0 1/1 0/0 .text
* fopOvlpReq_Handler__FP21overlap_request_class */
int fopOvlpReq_Handler(overlap_request_class* pOvlpReq) {
int phsDo = cPhs_Do(&pOvlpReq->field_0x18, pOvlpReq);
switch (phsDo) {
case 2:
int phase_state = cPhs_Do(&pOvlpReq->field_0x18, pOvlpReq);
switch (phase_state) {
case cPhs_TWO_e:
return fopOvlpReq_Handler(pOvlpReq);
case 0:
return 0;
case 1:
return 0;
case 4:
return 4;
case 3:
case 5:
return 5;
case cPhs_ZERO_e:
return cPhs_ZERO_e;
case cPhs_ONE_e:
return cPhs_ZERO_e;
case cPhs_COMPLEATE_e:
return cPhs_COMPLEATE_e;
case cPhs_UNK3_e:
case cPhs_ERROR_e:
return cPhs_ERROR_e;
default:
return 5;
return cPhs_ERROR_e;
}
}
+4 -4
View File
@@ -17,7 +17,7 @@
* fopScnRq_phase_ClearOverlap__FP19scene_request_class */
static cPhs__Step fopScnRq_phase_ClearOverlap(scene_request_class* param_0) {
if (fopOvlpM_ClearOfReq() == 1) {
return cPhs_UNK_2;
return cPhs_TWO_e;
} else {
return cPhs_ZERO_e;
}
@@ -33,7 +33,7 @@ static cPhs__Step fopScnRq_phase_Execute(scene_request_class* param_0) {
* fopScnRq_phase_IsDoingOverlap__FP19scene_request_class */
static cPhs__Step fopScnRq_phase_IsDoingOverlap(scene_request_class* param_0) {
if (fopOvlpM_IsDoingReq() == 1) {
return cPhs_UNK_2;
return cPhs_TWO_e;
} else {
return cPhs_ZERO_e;
}
@@ -43,7 +43,7 @@ static cPhs__Step fopScnRq_phase_IsDoingOverlap(scene_request_class* param_0) {
* fopScnRq_phase_IsDoneOverlap__FP19scene_request_class */
static cPhs__Step fopScnRq_phase_IsDoneOverlap(scene_request_class* param_0) {
if (fopOvlpM_IsDone() == 1) {
return cPhs_UNK_2;
return cPhs_TWO_e;
} else {
return cPhs_ZERO_e;
}
@@ -60,7 +60,7 @@ static cPhs__Step fopScnRq_phase_Done(scene_request_class* pScnRq) {
fopScnPause_Disable((scene_class*)fpcEx_SearchByID(pScnRq->mCrtReq.mCreatingID));
}
l_fopScnRq_IsUsingOfOverlap = 0;
return cPhs_UNK_2;
return cPhs_TWO_e;
}
/* 8001EF24-8001EF6C 019864 0048+00 1/0 0/0 0/0 .text fopScnRq_Execute__FP19scene_request_class */