d_a_e_ge OK and linked (#2707)

* match one func and remove old comments

* d_a_e_ge matching and linked

* format files

* some docs

* try pal and jpn too

* remove comments

* merge upstream
This commit is contained in:
Trueffel 2025-09-29 01:13:39 +02:00 committed by GitHub
parent c3e67d6820
commit 9a97d89256
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 1374 additions and 979 deletions

View File

@ -1720,7 +1720,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_fs"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_fz"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_gb"),
ActorRel(NonMatching, "d_a_e_ge"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_ge"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_gi"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_gm"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_gob"),

View File

@ -1,36 +1,37 @@
#ifndef D_A_E_GE_H
#define D_A_E_GE_H
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "f_op/f_op_actor_mng.h"
/**
* @ingroup actors-enemies
* @class daE_GE_c
* @brief Guay
*
* @details
*
*
* @details
*
*/
class daE_GE_c : public fopEn_enemy_c {
public:
u8 getGroupNo() {
return mGroupNo;
}
typedef void (daE_GE_c::*actionFunc)();
/* 806C7AB8 */ void bckSet(int, f32, u8, f32);
/* 806C7B5C */ void bckCheck(int);
/* 806C7BB8 */ void draw();
/* 806C7CAC */ void checkBeforeBg(int, f32);
/* 806C7B5C */ bool bckCheck(int);
/* 806C7BB8 */ int draw();
/* 806C7CAC */ bool checkBeforeBg(int, f32);
/* 806C80F8 */ void setActionMode(int);
/* 806C8130 */ void damage_check();
/* 806C8374 */ void checkOtherAttacker();
/* 806C83F8 */ void searchNextAttacker();
/* 806C84A0 */ void checkCircleSpeedAdd(cXyz*, cXyz*);
/* 806C8374 */ bool checkOtherAttacker();
/* 806C83F8 */ bool searchNextAttacker();
/* 806C84A0 */ bool checkCircleSpeedAdd(cXyz*, cXyz*);
/* 806C8518 */ void setAddCalcSpeed(cXyz&, cXyz const&, f32, f32, f32, f32);
/* 806C88C8 */ void calcCircleFly(cXyz*, cXyz*, s16, f32, s16, f32);
/* 806C88C8 */ cXyz calcCircleFly(cXyz*, cXyz*, s16, f32, s16, f32);
/* 806C89C0 */ void executeWait();
/* 806C8C20 */ void executeFly();
/* 806C9150 */ void checkAttackPossible(s16, bool);
/* 806C9150 */ bool checkAttackPossible(s16, bool);
/* 806C921C */ void executeAttack();
/* 806C9F04 */ void setBackAnime(int);
/* 806CA024 */ void executeBack();
@ -45,24 +46,64 @@ public:
/* 806CBC38 */ void action();
/* 806CBE98 */ void mtx_set();
/* 806CBEF0 */ void cc_set();
/* 806CC068 */ void execute();
/* 806CC1E4 */ void _delete();
/* 806CC278 */ void CreateHeap();
/* 806CC390 */ void create();
/* 806CC068 */ int execute();
/* 806CC1E4 */ int _delete();
/* 806CC278 */ int CreateHeap();
/* 806CC390 */ int create();
s16 getSurpriseTime() { return mSurpriseTime; }
s32 getActionMode() { return mActionMode; }
s32 getMoveType() { // needs to be s32 for some reason
return mMoveType;
}
u8 getGroupNo() { return mGroupNo; }
private:
/* 0x5AC */ u8 field_0x5ac[1519];
/* 0x5AC */ request_of_phase_process_class mPhaseReq;
/* 0x5B4 */ mDoExt_McaMorfSO* mpMorfSO;
/* 0x5B8 */ Z2CreatureEnemy mSound;
/* 0x65C */ dBgS_AcchCir mAcchCir;
/* 0x69C */ dBgS_ObjAcch mObjAcch;
/* 0x874 */ dCcD_Stts mStts;
/* 0x8B0 */ dCcD_Sph mSphere;
/* 0x9E8 */ dCcD_Sph mSphere2;
/* 0xB20 */ dCcU_AtInfo mAtInfo;
/* 0xB44 */ u32 mSmokeKey;
/* 0xB48 */ u32 mSmokeKey2;
/* 0xB4C */ cXyz field_0xb4c;
/* 0xB58 */ f32 field_0xb58;
/* 0xB5C */ f32 field_0xb5c;
/* 0xB60 */ f32 field_0xb60;
/* 0xB64 */ f32 field_0xb64;
/* 0xB68 */ f32 field_0xb68;
/* 0xB6C */ u8 field_0xB6C[0xB70 - 0xB6C];
/* 0xB70 */ int mActionMode;
/* 0xB74 */ int mPrevActionMode;
/* 0xB78 */ int mMode;
/* 0xB7C */ int mSubMode;
/* 0xB80 */ int mBackAnimeTimer;
/* 0xB84 */ u32 mShadowKey;
/* 0xB88 */ s16 mHitDirectionY; // not really used
/* 0xB8A */ s16 field_0xb8a;
/* 0xB8C */ s16 field_0xb8c;
/* 0xB8E */ s16 field_0xb8e[2];
/* 0xB92 */ s16 mDamageCooldownTimer;
/* 0xB94 */ s16 mSurpriseTime;
/* 0xB96 */ s16 mAnmChangeTimer;
/* 0xB98 */ s16 mCircleFlyScale;
/* 0xB9A */ u8 mMoveType;
/* 0xB9B */ u8 mGroupNo;
/* 0xB9C */ u8 field_0xb9c[4];
/* 0xB9C */ u8 mSwitch;
/* 0xB9D */ u8 field_0xb9d;
/* 0xB9E */ u8 field_0xb9e;
/* 0xB9F */ u8 mHIOInit;
static u8 l_actionmenu[108];
static actionFunc l_actionmenu[9];
};
STATIC_ASSERT(sizeof(daE_GE_c) == 0xBA0);
class daE_GE_HIO_c {
/* 806C7A4C */ daE_GE_HIO_c();
/* 806CCA58 */ ~daE_GE_HIO_c();
};
#endif /* D_A_E_GE_H */

View File

@ -1353,7 +1353,6 @@ void daAlink_c::setHighModelFaceBtk(u16 i_anmID) {
/* 80119134-801191C4 113A74 0090+00 1/1 0/0 0/0 .text
* setDemoBrk__9daAlink_cFPP15J3DAnmTevRegKeyP8J3DModelUs */
// NONMATCHING - extra mr
void daAlink_c::setDemoBrk(J3DAnmTevRegKey** param_0, J3DModel* param_1, u16 i_anmID) {
J3DAnmTevRegKey* brk = static_cast<J3DAnmTevRegKey*>(dComIfG_getObjectIDRes(
dStage_roomControl_c::getDemoArcName(), i_anmID));

File diff suppressed because it is too large Load Diff

View File

@ -38,15 +38,15 @@ enum daE_HZ_Action {
/* 0 */ ACTION_WAIT,
/* 1 */ ACTION_HIDE,
/* 2 */ ACTION_ATTACK,
/* 3 */ ACTION_EXECUTE_AWAY,
/* 4 */ ACTION_EXECUTE_WIND,
/* 5 */ ACTION_EXECUTE_DAMAGE,
/* 6 */ ACTION_EXECUTE_DEATH,
/* 7 */ ACTION_EXECUTE_CHANCE,
/* 8 */ ACTION_EXECUTE_WIND_CHANCE,
/* 9 */ ACTION_EXECUTE_WIND_WALK,
/* 10 */ ACTION_EXECUTE_WATER_DEATH,
/* 11 */ ACTION_EXECUTE_DEATH_WAIT
/* 3 */ ACTION_AWAY,
/* 4 */ ACTION_WIND,
/* 5 */ ACTION_DAMAGE,
/* 6 */ ACTION_DEATH,
/* 7 */ ACTION_CHANCE,
/* 8 */ ACTION_WIND_CHANCE,
/* 9 */ ACTION_WIND_WALK,
/* 10 */ ACTION_WATER_DEATH,
/* 11 */ ACTION_DEATH_WAIT
};
/* 806EA60C-806EA690 0000EC 0084+00 1/1 0/0 0/0 .text __ct__12daE_HZ_HIO_cFv */
@ -300,7 +300,7 @@ bool daE_HZ_c::isWait() {
return true;
}
if (mAction == ACTION_EXECUTE_DEATH_WAIT && mMode == ACTION_EXECUTE_WIND) {
if (mAction == ACTION_DEATH_WAIT && mMode == ACTION_WIND) {
return true;
}
return false;
@ -308,7 +308,7 @@ bool daE_HZ_c::isWait() {
/* 806EB13C-806EB2E8 000C1C 01AC+00 1/1 0/0 0/0 .text checkFall__8daE_HZ_cFv */
void daE_HZ_c::checkFall() {
if (mAction == ACTION_EXECUTE_DEATH_WAIT || mAction == ACTION_EXECUTE_WATER_DEATH) {
if (mAction == ACTION_DEATH_WAIT || mAction == ACTION_WATER_DEATH) {
return;
}
if (mObjAcch.ChkGroundHit()) {
@ -1005,7 +1005,7 @@ void daE_HZ_c::executeWind() {
cLib_chaseAngleS(&field_0x6b2, 0, 0x100);
if (field_0x6b2 == 0) {
if (mpMorfSO->isStop()) {
setActionMode(ACTION_EXECUTE_CHANCE);
setActionMode(ACTION_CHANCE);
return;
}
}
@ -1041,7 +1041,7 @@ void daE_HZ_c::executeChance() {
}
if (mPiyoriTimer == 0) {
setTgSetBit(0);
setActionMode(ACTION_EXECUTE_AWAY);
setActionMode(ACTION_AWAY);
}
break;
}
@ -1053,7 +1053,7 @@ void daE_HZ_c::initRollDamage() {
shape_angle.z = 0;
shape_angle.x = 0;
if (mAction == ACTION_EXECUTE_DEATH) {
if (mAction == ACTION_DEATH) {
if (field_0x6cc == 0) {
speedF = 20.0f;
field_0x6b6 = 0x1000;
@ -1131,19 +1131,19 @@ void daE_HZ_c::executeDamage() {
mSound.startCreatureSound(Z2SE_CM_BODYFALL_S, 0, -1);
}
if (doRollDamage()) {
setActionMode(ACTION_EXECUTE_CHANCE);
setActionMode(ACTION_CHANCE);
return;
}
if (mPiyoriTimer == 0 && !speedF) {
speedF = 0.0f;
setTgSetBit(0);
setActionMode(ACTION_EXECUTE_AWAY);
setActionMode(ACTION_AWAY);
}
return;
case 2:
if (doRollDamage()) {
setActionMode(ACTION_EXECUTE_AWAY);
setActionMode(ACTION_AWAY);
mMode = 1;
}
break;
@ -1287,7 +1287,7 @@ void daE_HZ_c::executeWindChance() {
if (mPiyoriTimer != 0) {
mPiyoriTimer += 20;
}
setActionMode(ACTION_EXECUTE_CHANCE);
setActionMode(ACTION_CHANCE);
}
}
}
@ -1310,7 +1310,7 @@ void daE_HZ_c::executeWindWalk() {
mSound.startCreatureSound(Z2SE_EN_HZ_WALK, 0, -1);
}
if (mpMorfSO->isStop()) {
setActionMode(ACTION_EXECUTE_AWAY);
setActionMode(ACTION_AWAY);
initBackWalk();
}
break;
@ -1437,12 +1437,12 @@ void daE_HZ_c::damage_check() {
if (mAction != 1 || mMode < 4) {
if (mSpheres[0].ChkTgHit() && mSpheres[0].GetTgHitObj()->ChkAtType(AT_TYPE_BOOMERANG)) {
mSpheres[0].ClrTgHit();
if (mAction == ACTION_EXECUTE_CHANCE) {
setActionMode(ACTION_EXECUTE_WIND_CHANCE);
} else if (mAction == ACTION_EXECUTE_AWAY) {
setActionMode(ACTION_EXECUTE_WIND_WALK);
if (mAction == ACTION_CHANCE) {
setActionMode(ACTION_WIND_CHANCE);
} else if (mAction == ACTION_AWAY) {
setActionMode(ACTION_WIND_WALK);
} else {
setActionMode(ACTION_EXECUTE_WIND);
setActionMode(ACTION_WIND);
}
setTgSetBit(0);
mDamageDeathTimer = 10;
@ -1509,17 +1509,17 @@ void daE_HZ_c::damage_check() {
if (bVar) {
field_0x6cc = 1;
}
if (mAction == ACTION_EXECUTE_AWAY) {
if (mAction == ACTION_AWAY) {
field_0x6cc += 2;
}
setActionMode(ACTION_EXECUTE_DEATH);
setActionMode(ACTION_DEATH);
return;
}
if (mAction == ACTION_EXECUTE_AWAY) {
if (mAction == ACTION_AWAY) {
if (bVar) {
field_0x6cc = 1;
setActionMode(ACTION_EXECUTE_DAMAGE);
setActionMode(ACTION_DAMAGE);
return;
}
s16 angle = cLib_targetAngleY(&mSpheres[1].GetCoCP(), &player_pos) -
@ -1571,7 +1571,7 @@ void daE_HZ_c::damage_check() {
field_0x6cc = 2;
}
}
setActionMode(ACTION_EXECUTE_DAMAGE);
setActionMode(ACTION_DAMAGE);
return;
}
}
@ -1611,7 +1611,7 @@ void daE_HZ_c::action() {
damage_check();
if (mAction != 10 && checkWaterSurface()) {
setActionMode(ACTION_EXECUTE_WATER_DEATH);
setActionMode(ACTION_WATER_DEATH);
}
attention_info.flags = 4;
@ -1631,41 +1631,41 @@ void daE_HZ_c::action() {
executeAttack();
break;
case ACTION_EXECUTE_AWAY:
case ACTION_AWAY:
executeAway();
break;
case ACTION_EXECUTE_WIND:
case ACTION_WIND:
executeWind();
break;
case ACTION_EXECUTE_DAMAGE:
case ACTION_DAMAGE:
executeDamage();
break;
case ACTION_EXECUTE_DEATH:
case ACTION_DEATH:
attention_info.flags = 0;
executeDeath();
break;
case ACTION_EXECUTE_CHANCE:
case ACTION_CHANCE:
executeChance();
break;
case ACTION_EXECUTE_WIND_CHANCE:
case ACTION_WIND_CHANCE:
executeWindChance();
break;
case ACTION_EXECUTE_WIND_WALK:
case ACTION_WIND_WALK:
executeWindWalk();
break;
case ACTION_EXECUTE_WATER_DEATH:
case ACTION_WATER_DEATH:
attention_info.flags = 0;
executeWaterDeath();
break;
case ACTION_EXECUTE_DEATH_WAIT:
case ACTION_DEATH_WAIT:
attention_info.flags = 0;
executeDeathWait();
break;

View File

@ -1370,7 +1370,6 @@ dScnKy_env_light_c::dScnKy_env_light_c() {
/* 8019F4FC-8019F780 199E3C 0284+00 1/1 0/0 0/0 .text setDaytime__18dScnKy_env_light_cFv
*/
// NONMATCHING - getTimePass doing s8 check instead of int check
void dScnKy_env_light_c::setDaytime() {
mDate = dComIfGs_getDate();
daytime = dComIfGs_getTime();

View File

@ -2594,6 +2594,7 @@ void dMenu_Collect3D_c::setupItem3D(Mtx param_0) {
/* 801B7660-801B774C 1B1FA0 00EC+00 1/1 0/0 0/0 .text toItem3Dpos__17dMenu_Collect3D_cFfffP4cXyz
*/
// NONMATCHING
// This is mostly matching like this using O2 but still regalloc (f29/f31). The main issue is the use of dVar12
#pragma push
#pragma optimization_level 2

View File

@ -750,7 +750,6 @@ static cull_sphere l_cullSizeSphere[] = {
};
/* 8001ACEC-8001B058 01562C 036C+00 0/0 1/1 1/1 .text fopAcM_cullingCheck__FPC10fopAc_ac_c */
// NONMATCHING some stack / extra instructions regarding mDoLib_clipper::clip
s32 fopAcM_cullingCheck(fopAc_ac_c const* i_actor) {
MtxP mtx_p;
if (fopAcM_GetMtx(i_actor) == NULL) {