d_a_myna equivalent (#2516)

This commit is contained in:
hatal175 2025-07-04 06:50:31 +03:00 committed by GitHub
parent ffa8e9bb9a
commit a41de30a24
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 40 additions and 138 deletions

View File

@ -1753,7 +1753,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_mg_fshop"), ActorRel(NonMatching, "d_a_mg_fshop"),
ActorRel(MatchingFor("GZ2E01"), "d_a_mirror"), ActorRel(MatchingFor("GZ2E01"), "d_a_mirror"),
ActorRel(NonMatching, "d_a_movie_player", extra_cflags=["-O3,p"]), ActorRel(NonMatching, "d_a_movie_player", extra_cflags=["-O3,p"]),
ActorRel(NonMatching, "d_a_myna"), ActorRel(Equivalent, "d_a_myna"), # weak function order
ActorRel(NonMatching, "d_a_ni"), ActorRel(NonMatching, "d_a_ni"),
ActorRel(NonMatching, "d_a_npc_aru"), ActorRel(NonMatching, "d_a_npc_aru"),
ActorRel(NonMatching, "d_a_npc_ash"), ActorRel(NonMatching, "d_a_npc_ash"),

View File

@ -8,6 +8,35 @@
#include "m_Do/m_Do_ext.h" #include "m_Do/m_Do_ext.h"
#include "m_Do/m_Do_hostIO.h" #include "m_Do/m_Do_hostIO.h"
class daMyna_HIO_c : public mDoHIO_entry_c {
public:
/* 8094A960 */ virtual ~daMyna_HIO_c() {}
// Must be inlined but defined in .cpp for sinit to match
inline daMyna_HIO_c();
void genMessage(JORMContext*);
/* 0x04 */ f32 field_0x04; // DAT_8094ba40
/* 0x08 */ f32 field_0x08; // DAT_8094ba44
/* 0x0C */ f32 field_0x0C; // DAT_8094ba48
/* 0x10 */ f32 field_0x10; // DAT_8094ba4c
/* 0x14 */ f32 field_0x14; // DAT_8094ba50
/* 0x18 */ f32 field_0x18; // DAT_8094ba54
/* 0x1C */ f32 field_0x1C; // DAT_8094ba58
/* 0x20 */ f32 field_0x20; // DAT_8094ba5c
/* 0x24 */ s16 field_0x24; // DAT_8094ba60
/* 0x26 */ s16 field_0x26; // DAT_8094ba62
/* 0x28 */ s16 field_0x28; // DAT_8094ba64
/* 0x2A */ s16 field_0x2A; // DAT_8094ba66
/* 0x2C */ s16 field_0x2C; // DAT_8094ba68
/* 0x2E */ s16 field_0x2E; // DAT_8094ba6a
/* 0x30 */ s16 field_0x30; // DAT_8094ba6c
};
STATIC_ASSERT(sizeof(daMyna_HIO_c) == 0x34);
// This struct may end up belonging elsewhere // This struct may end up belonging elsewhere
struct ShopItem { struct ShopItem {
/* 0x0 */ u32 mTargetActorID; /* 0x0 */ u32 mTargetActorID;
@ -184,32 +213,5 @@ public:
STATIC_ASSERT(sizeof(daMyna_c) == 0x93C); STATIC_ASSERT(sizeof(daMyna_c) == 0x93C);
class daMyna_HIO_c : public mDoHIO_entry_c {
public:
/* 8094A960 */ virtual ~daMyna_HIO_c() {}
// Must be inlined but defined in .cpp for sinit to match
inline daMyna_HIO_c();
void genMessage(JORMContext*);
/* 0x04 */ f32 field_0x04; // DAT_8094ba40
/* 0x08 */ f32 field_0x08; // DAT_8094ba44
/* 0x0C */ f32 field_0x0C; // DAT_8094ba48
/* 0x10 */ f32 field_0x10; // DAT_8094ba4c
/* 0x14 */ f32 field_0x14; // DAT_8094ba50
/* 0x18 */ f32 field_0x18; // DAT_8094ba54
/* 0x1C */ f32 field_0x1C; // DAT_8094ba58
/* 0x20 */ f32 field_0x20; // DAT_8094ba5c
/* 0x24 */ s16 field_0x24; // DAT_8094ba60
/* 0x26 */ s16 field_0x26; // DAT_8094ba62
/* 0x28 */ s16 field_0x28; // DAT_8094ba64
/* 0x2A */ s16 field_0x2A; // DAT_8094ba66
/* 0x2C */ s16 field_0x2C; // DAT_8094ba68
/* 0x2E */ s16 field_0x2E; // DAT_8094ba6a
/* 0x30 */ s16 field_0x30; // DAT_8094ba6c
};
STATIC_ASSERT(sizeof(daMyna_HIO_c) == 0x34);
#endif /* D_A_MYNA_H */ #endif /* D_A_MYNA_H */

View File

@ -11,20 +11,7 @@
#include "d/actor/d_a_tag_myna_light.h" #include "d/actor/d_a_tag_myna_light.h"
#include "SSystem/SComponent/c_math.h" #include "SSystem/SComponent/c_math.h"
/* 8094B360-8094B36C 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ UNK_REL_DATA
static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 8094B36C-8094B380 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
static u32 lit_1787[1 + 4 /* padding */] = {
0x02000201,
/* padding */
0x40080000,
0x00000000,
0x3FE00000,
0x00000000,
};
/* 8094B488-8094B590 000128 0108+00 2/3 0/0 0/0 .data init_proc */ /* 8094B488-8094B590 000128 0108+00 2/3 0/0 0/0 .data init_proc */
static daMyna_c::ProcFunc init_proc[] = { static daMyna_c::ProcFunc init_proc[] = {
@ -94,98 +81,7 @@ static int jntNodeCallBack(J3DJoint* i_jnt, int param_1) {
return 1; return 1;
} }
/* 8094B9F0-8094B9F4 000008 0001+03 2/2 0/0 0/0 .bss @1109 */ UNK_REL_BSS
static u8 lit_1109[1 + 3 /* padding */];
/* 8094B9F4-8094B9F8 00000C 0001+03 0/0 0/0 0/0 .bss @1107 */
#pragma push
#pragma force_active on
static u8 lit_1107[1 + 3 /* padding */];
#pragma pop
/* 8094B9F8-8094B9FC 000010 0001+03 0/0 0/0 0/0 .bss @1105 */
#pragma push
#pragma force_active on
static u8 lit_1105[1 + 3 /* padding */];
#pragma pop
/* 8094B9FC-8094BA00 000014 0001+03 0/0 0/0 0/0 .bss @1104 */
#pragma push
#pragma force_active on
static u8 lit_1104[1 + 3 /* padding */];
#pragma pop
/* 8094BA00-8094BA04 000018 0001+03 0/0 0/0 0/0 .bss @1099 */
#pragma push
#pragma force_active on
static u8 lit_1099[1 + 3 /* padding */];
#pragma pop
/* 8094BA04-8094BA08 00001C 0001+03 0/0 0/0 0/0 .bss @1097 */
#pragma push
#pragma force_active on
static u8 lit_1097[1 + 3 /* padding */];
#pragma pop
/* 8094BA08-8094BA0C 000020 0001+03 0/0 0/0 0/0 .bss @1095 */
#pragma push
#pragma force_active on
static u8 lit_1095[1 + 3 /* padding */];
#pragma pop
/* 8094BA0C-8094BA10 000024 0001+03 0/0 0/0 0/0 .bss @1094 */
#pragma push
#pragma force_active on
static u8 lit_1094[1 + 3 /* padding */];
#pragma pop
/* 8094BA10-8094BA14 000028 0001+03 0/0 0/0 0/0 .bss @1057 */
#pragma push
#pragma force_active on
static u8 lit_1057[1 + 3 /* padding */];
#pragma pop
/* 8094BA14-8094BA18 00002C 0001+03 0/0 0/0 0/0 .bss @1055 */
#pragma push
#pragma force_active on
static u8 lit_1055[1 + 3 /* padding */];
#pragma pop
/* 8094BA18-8094BA1C 000030 0001+03 0/0 0/0 0/0 .bss @1053 */
#pragma push
#pragma force_active on
static u8 lit_1053[1 + 3 /* padding */];
#pragma pop
/* 8094BA1C-8094BA20 000034 0001+03 0/0 0/0 0/0 .bss @1052 */
#pragma push
#pragma force_active on
static u8 lit_1052[1 + 3 /* padding */];
#pragma pop
/* 8094BA20-8094BA24 000038 0001+03 0/0 0/0 0/0 .bss @1014 */
#pragma push
#pragma force_active on
static u8 lit_1014[1 + 3 /* padding */];
#pragma pop
/* 8094BA24-8094BA28 00003C 0001+03 0/0 0/0 0/0 .bss @1012 */
#pragma push
#pragma force_active on
static u8 lit_1012[1 + 3 /* padding */];
#pragma pop
/* 8094BA28-8094BA2C 000040 0001+03 0/0 0/0 0/0 .bss @1010 */
#pragma push
#pragma force_active on
static u8 lit_1010[1 + 3 /* padding */];
#pragma pop
/* 8094BA2C-8094BA30 000044 0001+03 0/0 0/0 0/0 .bss @1009 */
#pragma push
#pragma force_active on
static u8 lit_1009[1 + 3 /* padding */];
#pragma pop
/* 8094BA3C-8094BA70 000054 0034+00 15/15 0/0 0/0 .bss l_HOSTIO */ /* 8094BA3C-8094BA70 000054 0034+00 15/15 0/0 0/0 .bss l_HOSTIO */
static daMyna_HIO_c l_HOSTIO; static daMyna_HIO_c l_HOSTIO;
@ -1754,16 +1650,20 @@ void daMyna_c::animeControl() {
case 8: case 8:
attr = J3DFrameCtrl::EMode_NONE; attr = J3DFrameCtrl::EMode_NONE;
break; break;
case 14: case 13:
attr = J3DFrameCtrl::EMode_NONE; attr = J3DFrameCtrl::EMode_NONE;
break; break;
case 14:
break;
} }
setMcaMorfAnm(getTrnsfrmKeyAnm(l_bckFileNameTBL[field_0x935]), rate, morf, attr, 0, -1); J3DAnmTransformKey* anm = getTrnsfrmKeyAnm(l_bckFileNameTBL[field_0x935]);
if (cLib_checkBit<u16>(field_0x914, 0x40) == 0) { setMcaMorfAnm(anm, rate, morf, attr, 0, -1);
if (cLib_checkBit<u16>((u16)field_0x914, 0x40) == 0) {
int attribute = 2;
J3DAnmTexPattern* btp = getTexPtrnAnm(l_btpFileNameTBL[field_0x936]); J3DAnmTexPattern* btp = getTexPtrnAnm(l_btpFileNameTBL[field_0x936]);
if (btp != NULL) { if (btp != NULL) {
setBtpAnm(btp, mpMorf->getModel()->getModelData(), 1.0f, 2); setBtpAnm(btp, mpMorf->getModel()->getModelData(), 1.0f, attribute);
cLib_onBit<u16>(field_0x914, 0x44); cLib_onBit<u16>(field_0x914, 0x44);
} }
} }