d_a_kb Almost Matching (#1040)

* d_a_kb Almost Matching

- Get most of the logic in

Still need to switch over from inheritance to composition, will fix at least 2/3 of the functions

* Switch Inheritance -> Composition

Causes regressions in way_check and target_set

* Use More Enums

Now uses res/loop mode/item number/sound/particle/collision attribute/event flag enums properly

* Fix d_a_npc_people

Used kb_class in a couple spots

* Another Inline

Found it in the debug map

* Joint Enums

- Add joint enums with note about normal/big pigs needing to have (at least partially) identical joint setups

* Assert for Joint Numbers

- Make sure the joint numbers match for the normal pig + big pig models
- Update/extend note accordingly
This commit is contained in:
SuperDude88
2026-06-26 17:45:09 -04:00
committed by GitHub
parent f0f98bbcc3
commit 4b401652d9
3 changed files with 2339 additions and 96 deletions
+57 -23
View File
@@ -6,12 +6,13 @@
#include "d/d_bg_s_acch.h"
#include "SSystem/SComponent/c_phase.h"
#include "d/d_path.h"
#include "d/d_particle.h"
class mDoExt_McaMorf;
class J3DTexNoAnm;
class J3DMaterialTable;
class kb_class : public fopAc_ac_c {
class kb_class {
public:
void taura_pos_set(cXyz pos) {
m450 = pos;
@@ -19,57 +20,90 @@ public:
}
public:
/* 0x000 */ fopAc_ac_c actor;
/* 0x290 */ dKy_tevstr_c mTevStr;
/* 0x340 */ u8 m340[0x3F4 - 0x340];
/* 0x340 */ dKy_tevstr_c m340;
/* 0x3F0 */ u32 mShadowId;
/* 0x3F4 */ request_of_phase_process_class mPhs;
/* 0x3FC */ mDoExt_McaMorf* mpMorf;
/* 0x400 */ u8 mShapeType;
/* 0x401 */ u8 m401;
/* 0x402 */ u8 mbCanBeBigPig;
/* 0x403 */ u8 m403[0x408 - 0x403];
/* 0x403 */ u8 m403;
/* 0x404 */ u8 m404;
/* 0x405 */ u8 m405;
/* 0x406 */ u8 m406;
/* 0x407 */ u8 m407;
/* 0x408 */ u8 m408;
/* 0x409 */ u8 m409[0x40C - 0x409];
/* 0x409 */ u8 m409;
/* 0x40A */ u8 m40A;
/* 0x40B */ u8 m40B;
/* 0x40C */ dPath* mpPath;
/* 0x410 */ u8 m410[0x41D - 0x410];
/* 0x41D */ u8 m41D;
/* 0x41E */ u8 m41E[0x420 - 0x41E];
/* 0x41E */ s16 m41E;
/* 0x420 */ s16 m420;
/* 0x422 */ s16 m422;
/* 0x424 */ s16 m424;
/* 0x426 */ s16 m426;
/* 0x428 */ s16 m428;
/* 0x42A */ s16 m42A;
/* 0x42C */ u8 m42C[0x446 - 0x42C];
/* 0x426 */ s16 m426[8];
/* 0x436 */ s16 m436;
/* 0x438 */ s16 m438;
/* 0x43A */ s16 m43A;
/* 0x42C */ u8 m43C[0x440 - 0x43C];
/* 0x440 */ s16 m440;
/* 0x442 */ s16 m442;
/* 0x444 */ s16 m444;
/* 0x446 */ s16 m446;
/* 0x448 */ u8 m448[0x450 - 0x448];
/* 0x448 */ s16 m448;
/* 0x44A */ s16 m44A;
/* 0x44C */ s16 m44C;
/* 0x44E */ s16 m44E;
/* 0x450 */ cXyz m450;
/* 0x45C */ f32 m45C;
/* 0x460 */ u8 m460[0x464 - 0x460];
/* 0x464 */ f32 m464;
/* 0x468 */ u8 m468[0x4A4 - 0x468];
/* 0x45C */ cXyz m45C;
/* 0x468 */ cXyz field_0x468[2];
/* 0x480 */ cXyz field_0x480[2];
/* 0x498 */ cXyz field_0x498;
/* 0x4A4 */ cXyz m4A4;
/* 0x4B0 */ u8 m4B0[0x4B4 - 0x4B0];
/* 0x4B0 */ f32 m4B0;
/* 0x4B4 */ f32 m4B4;
/* 0x4B8 */ f32 m4B8;
/* 0x4BC */ u8 m4BC[0x4C4 - 0x4BC];
/* 0x4BC */ f32 m4BC;
/* 0x4C0 */ f32 m4C0;
/* 0x4C4 */ f32 m4C4;
/* 0x4C8 */ u8 m4C8[0x4CC - 0x4C8];
/* 0x4C8 */ f32 m4C8;
/* 0x4CC */ f32 m4CC;
/* 0x4D0 */ u8 m4D0[0x4D4 - 0x4D0];
/* 0x4D4 */ f32 m4D4;
/* 0x4D8 */ u8 m4D8[0x4E8 - 0x4D8];
/* 0x4D8 */ fpc_ProcID m4D8;
/* 0x4DC */ cXyz m4DC;
/* 0x4E8 */ cXyz m4E8;
/* 0x4F4 */ u8 m4F4[0x504 - 0x4F4];
/* 0x4F4 */ csXyz m4F4;
/* 0x4FA */ csXyz m4FA;
/* 0x500 */ J3DAnmTexPattern* m500;
/* 0x504 */ J3DTexNoAnm* mpTexNoAnm;
/* 0x508 */ u8 m508[0x50C - 0x508];
/* 0x508 */ u8 m508;
/* 0x509 */ u8 m509;
/* 0x50A */ u8 m50A;
/* 0x50C */ int m50C;
/* 0x510 */ u8 m510[0x5F8 - 0x510];
/* 0x510 */ u8 m510[0x514 - 0x510];
/* 0x514 */ cXyz m514;
/* 0x520 */ cXyz m520;
/* 0x52C */ u8 m52C[0x53C - 0x52C];
/* 0x53C */ f32 m53C;
/* 0x540 */ dPa_rippleEcallBack m540;
/* 0x554 */ dPa_smokeEcallBack m554;
/* 0x574 */ dPa_smokeEcallBack m574;
/* 0x594 */ dPa_followEcallBack m594;
/* 0x5A8 */ dPa_followEcallBack m5A8[2];
/* 0x5D0 */ f32 m5D0;
/* 0x5D4 */ cXyz m5D4[2];
/* 0x5EC */ csXyz m5EC[2];
/* 0x5F8 */ J3DMaterialTable* mpMaterialTable;
/* 0x5FC */ dBgS_AcchCir mAcchCir;
/* 0x63C */ dBgS_Acch mAcch;
/* 0x63C */ dBgS_ObjAcch mAcch;
/* 0x800 */ dCcD_Stts mStts;
/* 0x83C */ dCcD_Sph mSph;
/* 0x968 */ u8 m968[0xA94 - 0x968];
/* 0x968 */ dCcD_Sph m968;
};
#endif /* D_A_KB_H */
+2278 -69
View File
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -4495,7 +4495,7 @@ cPhs_State daNpcPeople_c::createInit() {
kb_class* pig = (kb_class*)fopAcM_searchFromName("Pig", 0xF00, l_pig_para[i]);
if (pig != NULL) {
pig->taura_pos_set(current.pos);
pig->current.pos = current.pos;
pig->actor.current.pos = current.pos;
}
}
}
@@ -8337,8 +8337,8 @@ BOOL daNpcPeople_c::checkPig() {
kb_class* pPig = (kb_class*)fopAcM_searchFromName("Pig", 0xF00, l_pig_para[i]);
if(pPig && pPig->m408 == 0) {
f32 temp;
dNpc_calc_DisXZ_AngY(current.pos, pPig->current.pos, &temp, NULL);
if(temp < 400.0f && std::abs(current.pos.y - pPig->current.pos.y) <= 10.0f) {
dNpc_calc_DisXZ_AngY(current.pos, pPig->actor.current.pos, &temp, NULL);
if(temp < 400.0f && std::abs(current.pos.y - pPig->actor.current.pos.y) <= 10.0f) {
pPig->taura_pos_set(current.pos);
mOrderEventNum = 2;
mEtcFlag |= 0x80;
@@ -8380,7 +8380,7 @@ void daNpcPeople_c::resetPig() {
#endif
kb_class* pig = (kb_class*)fopAcM_searchFromName("Pig", 0xF00, l_pig_para[i]);
if (pig != NULL) {
pig->current.pos = pig->home.pos;
pig->actor.current.pos = pig->actor.home.pos;
pig->m408 = 0;
}
}