d_a_npc_blue_ns mostly done (#2747)

* d_a_npc_blue_ns mostly done

* d_a_obj_poCandle / d_a_obj_poTbox done
This commit is contained in:
TakaRikka
2025-10-21 21:33:59 +03:00
committed by GitHub
parent 428a2c5447
commit 9155add1f6
13 changed files with 2294 additions and 2374 deletions
+3 -3
View File
@@ -1842,7 +1842,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_npc_ash", extra_cflags=[DANPCF_C_HACK]),
ActorRel(NonMatching, "d_a_npc_ashB", extra_cflags=[DANPCF_C_HACK]),
ActorRel(NonMatching, "d_a_npc_bans"),
ActorRel(NonMatching, "d_a_npc_blue_ns"),
ActorRel(NonMatching, "d_a_npc_blue_ns", extra_cflags=[DANPCF_C_HACK]),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_bou"),
ActorRel(NonMatching, "d_a_npc_bouS"),
ActorRel(NonMatching, "d_a_npc_cdn3"),
@@ -2150,9 +2150,9 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_picture"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_pillar"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_pleaf"),
ActorRel(NonMatching, "d_a_obj_poCandle"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_poCandle"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_poFire"),
ActorRel(NonMatching, "d_a_obj_poTbox"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_poTbox"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_prop"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01"), "d_a_obj_pumpkin"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_rcircle"),
+2 -1
View File
@@ -1047,7 +1047,7 @@ protected:
/* 0x992 */ s16 field_0x992;
/* 0x994 */ s16 mTurnStartAngle;
/* 0x996 */ s16 mTurnTargetAngle;
/* 0x998 */ u16 field_0x998;
/* 0x998 */ s16 field_0x998;
/* 0x99C */ u32 mAnmFlags;
/* 0x9A0 */ u32 mShadowKey;
/* 0x9A4 */ u32 field_0x9a4;
@@ -1250,6 +1250,7 @@ BOOL daNpcF_pntVsLineSegmentLengthSquare2D(f32 i_pntX, f32 i_pntZ, f32 i_startX,
f32* o_dist2);
BOOL daNpcF_chkPassed(cXyz i_pos, dPnt* i_points, u16 i_idx, u16 i_num, BOOL i_isClosed,
BOOL i_isReversed);
BOOL daNpcF_chkDoBtnEqSpeak(fopAc_ac_c* i_actor_p);
class daNpcF_MatAnm_c : public J3DMaterialAnm {
private:
+106 -49
View File
@@ -2,6 +2,8 @@
#define D_A_NPC_BLUE_NS_H
#include "d/actor/d_a_npc.h"
#include "d/actor/d_a_tag_yami.h"
#include "d/actor/d_a_obj_carry.h"
/**
* @ingroup actors-npcs
@@ -11,78 +13,133 @@
* @details
*
*/
class daNpcBlueNS_c : public fopAc_ac_c {
class daNpcBlueNS_c : public daNpcF_c {
public:
typedef BOOL (daNpcBlueNS_c::*EventFn)(int);
/* 8096896C */ daNpcBlueNS_c();
/* 80968B80 */ ~daNpcBlueNS_c();
/* 80968D44 */ void Create();
/* 80968FE4 */ void CreateHeap();
/* 80969138 */ void isDelete();
/* 809691A8 */ void Delete();
/* 809691DC */ void Execute();
/* 80969200 */ void _Execute();
/* 80968D44 */ int Create();
/* 80968FE4 */ int CreateHeap();
/* 80969138 */ int isDelete();
/* 809691A8 */ int Delete();
/* 809691DC */ int Execute();
/* 80969200 */ int _Execute();
/* 80969468 */ void callEvt_changeYami();
/* 80969504 */ void create_Yamijin(int);
/* 809695F0 */ void col_check();
/* 80969698 */ void holyball_check_main(fopAc_ac_c*);
/* 80969870 */ void Draw();
/* 809699D0 */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 80969B68 */ void createHeapCallBack(fopAc_ac_c*);
/* 80969B88 */ void ctrlJointCallBack(J3DJoint*, int);
/* 80969BD4 */ void setParam();
/* 80969504 */ fpc_ProcID create_Yamijin(int);
/* 809695F0 */ BOOL col_check();
/* 80969698 */ BOOL holyball_check_main(fopAc_ac_c*);
/* 80969870 */ int Draw();
/* 809699D0 */ int ctrlJoint(J3DJoint*, J3DModel*);
/* 80969B68 */ static int createHeapCallBack(fopAc_ac_c*);
/* 80969B88 */ static int ctrlJointCallBack(J3DJoint*, int);
/* 80969C48 */ void srchActor();
/* 80969C90 */ void srchHollyBall();
/* 80969CF8 */ void srchTagYami();
/* 80969D60 */ void _search_Tag(void*, void*);
/* 80969DE4 */ void _search_HollyBall_Y(void*, void*);
/* 80969E9C */ void _search_HollyBall_G(void*, void*);
/* 80969F54 */ void main();
/* 8096A090 */ void setAttnPos();
/* 8096A238 */ bool setMotionAnm(int, f32);
/* 8096A308 */ void setMotion(int, f32, int);
/* 8096A350 */ bool drawDbgInfo();
/* 80969D60 */ static void* _search_Tag(void*, void*);
/* 80969DE4 */ static void* _search_HollyBall_Y(void*, void*);
/* 80969E9C */ static void* _search_HollyBall_G(void*, void*);
/* 8096A358 */ void reset();
/* 8096A518 */ void playMotion();
/* 8096A750 */ void setAction(int (daNpcBlueNS_c::*)(int));
/* 8096A750 */ int setAction(int (daNpcBlueNS_c::*)(int));
/* 8096A7F8 */ void setLookMode(int);
/* 8096A81C */ void lookat();
/* 8096A9FC */ void step(s16, int);
/* 8096AAF0 */ void chkFindPlayer();
/* 8096ABD4 */ void wait(int);
/* 8096AD70 */ void down(int);
/* 8096AE5C */ void talk(int);
/* 8096AFC8 */ void demo(int);
/* 8096A9FC */ BOOL step(s16, int);
/* 8096AAF0 */ BOOL chkFindPlayer();
/* 8096ABD4 */ int wait(int);
/* 8096AD70 */ int down(int);
/* 8096AE5C */ int talk(int);
/* 8096AFC8 */ int demo(int);
/* 8096B204 */ void ChgPtclDisp();
/* 8096B320 */ void downSE();
/* 8096B3D8 */ void lightsowrdSE();
/* 8096B490 */ void appearSE();
/* 8096B548 */ void _Evt_ChgYami_Chibi(int);
/* 8096B5F0 */ void _Evt_ChgYami_Chibi_CutInit(int const&);
/* 8096B688 */ void _Evt_ChgYami_Chibi_CutMain(int const&);
/* 8096B7B8 */ void _Evt_ChgYami_Debu(int);
/* 8096B860 */ void _Evt_ChgYami_Debu_CutInit(int const&);
/* 8096B8F8 */ void _Evt_ChgYami_Debu_CutMain(int const&);
/* 8096BA28 */ void _Evt_ChgYami_Noppo(int);
/* 8096BAD0 */ void _Evt_ChgYami_Noppo_CutInit(int const&);
/* 8096BB68 */ void _Evt_ChgYami_Noppo_CutMain(int const&);
/* 8096BC98 */ void _Evt_ChgYami_STNoppo(int);
/* 8096BD40 */ void _Evt_ChgYami_STNoppo_CutInit(int const&);
/* 8096BDD8 */ void _Evt_ChgYami_STNoppo_CutMain(int const&);
/* 8096C8B0 */ void adjustShapeAngle();
/* 8096B548 */ BOOL _Evt_ChgYami_Chibi(int);
/* 8096B5F0 */ BOOL _Evt_ChgYami_Chibi_CutInit(const int&);
/* 8096B688 */ BOOL _Evt_ChgYami_Chibi_CutMain(const int&);
/* 8096B7B8 */ BOOL _Evt_ChgYami_Debu(int);
/* 8096B860 */ BOOL _Evt_ChgYami_Debu_CutInit(const int&);
/* 8096B8F8 */ BOOL _Evt_ChgYami_Debu_CutMain(const int&);
/* 8096BA28 */ BOOL _Evt_ChgYami_Noppo(int);
/* 8096BAD0 */ BOOL _Evt_ChgYami_Noppo_CutInit(const int&);
/* 8096BB68 */ BOOL _Evt_ChgYami_Noppo_CutMain(const int&);
/* 8096BC98 */ BOOL _Evt_ChgYami_STNoppo(int);
/* 8096BD40 */ BOOL _Evt_ChgYami_STNoppo_CutInit(const int&);
/* 8096BDD8 */ BOOL _Evt_ChgYami_STNoppo_CutMain(const int&);
/* 80968B80 */ virtual ~daNpcBlueNS_c();
/* 80969BD4 */ virtual void setParam();
/* 80969F54 */ virtual BOOL main();
/* 8096C8B0 */ virtual void adjustShapeAngle() {}
/* 8096A090 */ virtual void setAttnPos();
/* 8096A238 */ virtual void setMotionAnm(int, f32);
/* 8096A308 */ virtual void setMotion(int, f32, int);
/* 8096A350 */ virtual BOOL drawDbgInfo();
static u8 mEvtSeqList[84];
int getType() { return fopAcM_GetParam(this) & 0xFF; }
u8 getSwitchBitNo() { return (fopAcM_GetParam(this) >> 8) & 0xFF; }
u8 _chk_TagPrm(fopAc_ac_c* i_tag) { return (fopAcM_GetParam(i_tag) & 0xFF) == mType % 3; }
private:
/* 0x568 */ u8 field_0x568[0xe14 - 0x568];
BOOL holyball_check_yellow() { return holyball_check_main(mpHolyBallY); }
BOOL holyball_check_green() { return holyball_check_main(mpHolyBallG); }
BOOL holyball_check() { return holyball_check_yellow() || holyball_check_green(); }
int getFlowNodeNo() {
int var_r30;
u16 temp_r0 = home.angle.x;
if (temp_r0 == 0xFFFF) {
var_r30 = -1;
} else {
var_r30 = temp_r0;
}
return var_r30;
}
static EventFn mEvtSeqList[];
/* 0xB48 */ Z2Creature mSound;
/* 0xBD8 */ u8 field_0xBD8[0xBDC - 0xBD8];
/* 0xBDC */ daNpcF_Lookat_c mLookat;
/* 0xC78 */ daNpcF_ActorMngr_c mActorMngr[1];
/* 0xC80 */ u8 field_0xC80[0xC84 - 0xC80];
/* 0xC84 */ dCcD_Cyl mCyl;
/* 0xDC0 */ u16 field_0xdc0;
/* 0xDC4 */ int (daNpcBlueNS_c::*mAction)(int);
/* 0xDD0 */ request_of_phase_process_class mPhase[1];
/* 0xDD8 */ int field_0xdd8;
/* 0xDDC */ int field_0xddc;
/* 0xDE0 */ int field_0xde0;
/* 0xDE4 */ int mFlowNodeNo;
/* 0xDE8 */ s16 mLookMode;
/* 0xDEA */ s16 field_0xdea;
/* 0xDEC */ u8 field_0xdec;
/* 0xDF0 */ daObjCarry_c* mpHolyBallY;
/* 0xDF4 */ daObjCarry_c* mpHolyBallG;
/* 0xDF8 */ daTagYami_c* mpTagYami;
/* 0xDFC */ fopAc_ac_c* mpNpcYami;
/* 0xE00 */ fpc_ProcID mYamijinId;
/* 0xE04 */ int field_0xe04;
/* 0xE08 */ int field_0xe08;
/* 0xE0C */ int field_0xe0c;
/* 0xE10 */ s8 field_0xe10;
/* 0xE11 */ u8 mType;
/* 0xE12 */ s8 field_0xe12;
};
STATIC_ASSERT(sizeof(daNpcBlueNS_c) == 0xe14);
struct daNpcBlueNS_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
/* 0x6C */ f32 field_0x6c;
};
class daNpcBlueNS_Param_c {
public:
/* 8096C8B4 */ ~daNpcBlueNS_Param_c();
/* 8096C8B4 */ virtual ~daNpcBlueNS_Param_c() {}
static u8 const m[112];
static const daNpcBlueNS_HIOParam m;
};
+14 -1
View File
@@ -57,11 +57,24 @@ public:
/* 80B495C8 */ void checkRemoveJoint(int);
/* 80B495D8 */ void evtEndProc();
void vanish_off() {
field_0xf81 = 0;
}
void on_CoHit() {
field_0xe44.OnCoSetBit();
field_0xe44.OnTgSetBit();
}
static char* mCutNameList[2];
static u8 mCutList[24];
private:
/* 0x568 */ u8 field_0x568[0xfcc - 0x568];
/* 0x568 */ u8 field_0x568[0xe44 - 0x568];
/* 0xE44 */ dCcD_Cyl field_0xe44;
/* 0xF80 */ u8 field_0xf80;
/* 0xF81 */ u8 field_0xf81;
/* 0xF82 */ u8 field_0xf82[0xFCC - 0xF82];
};
STATIC_ASSERT(sizeof(daNpc_yamiS_c) == 0xfcc);
+14 -1
View File
@@ -59,11 +59,24 @@ public:
/* 80B4CD18 */ void checkChangeJoint(int);
/* 80B4CD28 */ void checkRemoveJoint(int);
void vanish_off() {
field_0xf81 = 0;
}
void on_CoHit() {
field_0xe44.OnCoSetBit();
field_0xe44.OnTgSetBit();
}
static char* mCutNameList[2];
static u8 mCutList[24];
private:
/* 0x568 */ u8 field_0x568[0xfcc - 0x568];
/* 0x568 */ u8 field_0x568[0xe44 - 0x568];
/* 0xE44 */ dCcD_Cyl field_0xe44;
/* 0xF80 */ u8 field_0xf80;
/* 0xF81 */ u8 field_0xf81;
/* 0xF82 */ u8 field_0xf82[0xFCC - 0xF82];
};
STATIC_ASSERT(sizeof(daNpc_yamiT_c) == 0xfcc);
+37 -23
View File
@@ -2,6 +2,8 @@
#define D_A_OBJ_POCANDLE_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_movebg_actor.h"
#include "d/d_event_lib.h"
/**
* @ingroup actors-objects
@@ -11,16 +13,16 @@
* @details
*
*/
class daPoCandle_c : public fopAc_ac_c {
class daPoCandle_c : public dBgS_MoveBgActor, public request_of_phase_process_class, public dEvLib_callback_c {
public:
daPoCandle_c() : dEvLib_callback_c(this) {}
/* 80CB1AE4 */ void setBaseMtx();
/* 80CB1B6C */ void CreateHeap();
/* 80CB1BD8 */ void create();
/* 80CB1BD8 */ int create();
/* 80CB1D74 */ void lightInit();
/* 80CB1E00 */ void setLight();
/* 80CB1E30 */ void cutLight();
/* 80CB1E60 */ void pointLightProc();
/* 80CB1F10 */ void Execute(Mtx**);
/* 80CB2140 */ void init_modeWait();
/* 80CB214C */ void modeWait();
/* 80CB21D8 */ void init_modeOnFire();
@@ -28,32 +30,44 @@ public:
/* 80CB22F4 */ void modeOnSwWait();
/* 80CB2354 */ void init_modeEnd();
/* 80CB2360 */ void modeEnd();
/* 80CB2364 */ void eventStart();
/* 80CB2388 */ void Draw();
/* 80CB242C */ void Delete();
/* 80CB2610 */ ~daPoCandle_c();
/* 80CB1B6C */ virtual int CreateHeap();
/* 80CB1F10 */ virtual int Execute(Mtx**);
/* 80CB2388 */ virtual int Draw();
/* 80CB242C */ virtual int Delete();
/* 80CB3E3C */ cXyz getFirePos() { return static_cast<cXyz>(mFirePos); }
u8 getIDNum() {return mIDNum;}
void setFireFlag(u8 flag) { field_0x5D2 = flag; }
/* 80CB2610 */ virtual ~daPoCandle_c() {}
/* 80CB2364 */ virtual bool eventStart();
/* 80CB3E3C */ cXyz getFirePos() { return mFirePos; }
int getLightType() { return fopAcM_GetParamBit(this, 0x10, 8); }
int getSwBit() { return fopAcM_GetParamBit(this, 0, 8); }
int getID() { return fopAcM_GetParamBit(this, 8, 8); }
u8 getIDNum() { return mIDNum; }
void setFireFlag(u8 flag) { mFireFlag = flag; }
private:
/* 0x568 */ u8 field_0x568[0x5C4 - 0x568];
/* 0x5B8 */ request_of_phase_process_class mPhase;
/* 0x5C0 */ J3DModel* mpModel;
/* 0x5C4 */ cXyz mFirePos;
/* 0x5D0 */ u8 field_0x5D0[0x5D2 - 0x5D0];
/* 0x5D2 */ u8 field_0x5D2;
/* 0x5D3 */ u8 field_0x5D3[0x5D5 - 0x5D3];
/* 0x5D0 */ u8 field_0x5d0;
/* 0x5D1 */ u8 mOnPlight;
/* 0x5D2 */ u8 mFireFlag;
/* 0x5D3 */ u8 mSwWaitTimer;
/* 0x5D4 */ u8 mSwbit;
/* 0x5D5 */ u8 mIDNum;
/* 0x5DB */ u8 field_0x5DB[0x614 - 0x5D6];
/* 0x5D6 */ u8 mMode;
/* 0x5D7 */ u8 mIsSwitch;
/* 0x5D8 */ u32 mGlowEmtID;
/* 0x5DC */ u32 mFireEmtID;
/* 0x5E0 */ cXyz mLightPos;
/* 0x5EC */ u8 mLightType;
/* 0x5F0 */ f32 mPlightRefDist;
/* 0x5F4 */ LIGHT_INFLUENCE mLight;
};
STATIC_ASSERT(sizeof(daPoCandle_c) == 0x614);
class daPoCandle_HIO_c {
public:
/* 80CB1A6C */ daPoCandle_HIO_c();
/* 80CB2508 */ ~daPoCandle_HIO_c();
};
#endif /* D_A_OBJ_POCANDLE_H */
+23 -14
View File
@@ -2,6 +2,7 @@
#define D_A_OBJ_POTBOX_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_movebg_actor.h"
/**
* @ingroup actors-objects
@@ -11,12 +12,10 @@
* @details
*
*/
class daPoTbox_c : public fopAc_ac_c {
class daPoTbox_c : public dBgS_MoveBgActor {
public:
/* 80CB42C8 */ void setBaseMtx();
/* 80CB43D0 */ void CreateHeap();
/* 80CB46C4 */ void create();
/* 80CB499C */ void Execute(Mtx**);
/* 80CB46C4 */ int create();
/* 80CB4AA8 */ void init_modeWait();
/* 80CB4AB4 */ void modeWait();
/* 80CB4B10 */ void init_modeOpen();
@@ -25,20 +24,30 @@ public:
/* 80CB4C60 */ void modeOpenEnd();
/* 80CB4C84 */ void init_modeEnd();
/* 80CB4C90 */ void modeEnd();
/* 80CB4C94 */ void Draw();
/* 80CB4E14 */ void Delete();
/* 80CB43D0 */ virtual int CreateHeap();
/* 80CB499C */ virtual int Execute(Mtx**);
/* 80CB4C94 */ virtual int Draw();
/* 80CB4E14 */ virtual int Delete();
int getSw() { return fopAcM_GetParamBit(this, 0, 8); }
int getStat() { return fopAcM_GetParamBit(this, 8, 4); }
private:
/* 0x568 */ u8 field_0x568[0x608 - 0x568];
/* 0x5A0 */ request_of_phase_process_class mPhase;
/* 0x5A8 */ J3DModel* mpBoxModel;
/* 0x5AC */ J3DModel* mpAnimModel;
/* 0x5B0 */ J3DModel* mpLightModel;
/* 0x5B4 */ dBgW* mpBgw2;
/* 0x5B8 */ mDoExt_bckAnm mBck;
/* 0x5D4 */ mDoExt_btkAnm mBtk;
/* 0x5EC */ mDoExt_brkAnm mBrk;
/* 0x604 */ u8 mMode;
/* 0x605 */ u8 field_0x605;
/* 0x606 */ u8 mStat;
/* 0x607 */ u8 mIsSwitch;
};
STATIC_ASSERT(sizeof(daPoTbox_c) == 0x608);
class daPoTbox_HIO_c {
public:
/* 80CB424C */ daPoTbox_HIO_c();
/* 80CB4F14 */ ~daPoTbox_HIO_c();
};
#endif /* D_A_OBJ_POTBOX_H */
+10
View File
@@ -15,6 +15,16 @@ class JKRSolidHeap;
struct ResTIMG;
class Z2Creature;
namespace mDoExt {
extern u8 HeapAdjustVerbose;
extern u8 HeapAdjustQuiet;
};
#if DEBUG
void DummyCheckHeap_create();
void DummyCheckHeap_destroy();
#endif
class mDoExt_baseAnm {
public:
mDoExt_baseAnm() {}
+2 -2
View File
@@ -1906,8 +1906,8 @@ int daNpcF_getPlayerInfoFromPlayerList(int param_0, int i_roomNo, cXyz& param_2,
}
/* 80155854-80155968 150194 0114+00 0/0 0/0 1/1 .text daNpcF_chkDoBtnEqSpeak__FP10fopAc_ac_c */
bool daNpcF_chkDoBtnEqSpeak(fopAc_ac_c* i_actor_p) {
bool ret = FALSE;
BOOL daNpcF_chkDoBtnEqSpeak(fopAc_ac_c* i_actor_p) {
BOOL ret = FALSE;
if (daPy_getPlayerActorClass()->checkPriActorOwn(i_actor_p)) {
for (int i = 0; i < dComIfGp_getAttention()->GetActionCount(); i++) {
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+85 -14
View File
@@ -20,14 +20,85 @@
#include "f_op/f_op_scene_mng.h"
#include "m_Do/m_Do_lib.h"
class l_HIO {
public:
/* 8001E098 */ ~l_HIO() {}
};
#define MAKE_ITEM_PARAMS(itemNo, itemBitNo, param_2, param_3) \
((itemNo & 0xFF) << 0 | (itemBitNo & 0xFF) << 0x8 | param_2 << 0x10 | (param_3 & 0xF) << 0x18)
namespace fopAcM {
extern u8 HeapAdjustEntry;
extern u8 HeapAdjustUnk;
extern u8 HeapAdjustVerbose;
extern u8 HeapAdjustQuiet;
extern u8 HeapDummyCreate;
} // namespace fopAcM
class l_HIO : public JORReflexible {
public:
/* 8001E098 */ ~l_HIO() {
#if DEBUG
erase();
#endif
}
#if DEBUG
l_HIO() {
mId = -1;
}
void entry() {
if (mId < 0) {
mId = mDoHIO_CREATE_CHILD("アクターマネージャ", this);
}
}
void erase() {
if (mId >= 0) {
mDoHIO_DELETE_CHILD(mId);
mId = -1;
}
}
void listenPropertyEvent(const JORPropertyEvent*);
void genMessage(JORMContext*);
#endif
#if DEBUG
/* 0x4 */ s8 mId;
#endif
};
#if DEBUG
void l_HIO::genMessage(JORMContext* mctx) {
mctx->genLabel("アクターソリッドヒープ用プリント表示制御", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
mctx->genCheckBox("HeapAdjustEntry(ぴったりサイズで格納しようとします)", &fopAcM::HeapAdjustEntry, 1, 0,
NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
mctx->genCheckBox("HeapAdjustVerbose(アジャストの情報を表示します)", &fopAcM::HeapAdjustVerbose, 1, 0, NULL,
0xFFFF, 0xFFFF, 0x200, 0x18);
mctx->genCheckBox("HeapAdjustQuiet(アジャストの情報を表示しません)", &fopAcM::HeapAdjustQuiet, 1, 0, NULL,
0xFFFF, 0xFFFF, 0x200, 0x18);
mctx->genCheckBox("HeapDummyCreate(調査のため、ダミー領域に一度格納します)", &fopAcM::HeapDummyCreate, 1,
0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
mctx->genCheckBox("mDoExt::HeapAdjustVerbose(mDoExtのほうでアジャストの情報を表示します)",
&mDoExt::HeapAdjustVerbose, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
mctx->genCheckBox("mDoExt::HeapAdjustQuiet(mDoExtのほうでアジャストの情報を表示しません)",
&mDoExt::HeapAdjustQuiet, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
}
void l_HIO::listenPropertyEvent(const JORPropertyEvent* property) {
JORMContext* mctx = attachJORMContext(8);
JORReflexible::listenPropertyEvent(property);
if ((u8*)property->id == &fopAcM::HeapDummyCreate) {
if (fopAcM::HeapDummyCreate) {
DummyCheckHeap_create();
} else {
DummyCheckHeap_destroy();
}
}
releaseJORMContext(mctx);
}
#endif
/* 800198A4-800198C4 0141E4 0020+00 0/0 1/1 0/0 .text fopAcM_FastCreate__FsPFPv_iPvPv */
fopAc_ac_c* fopAcM_FastCreate(s16 i_procName, FastCreateReqFunc i_createFunc, void* i_createData,
void* i_append) {
@@ -305,11 +376,11 @@ s32 fopAcM_callCallback(fopAc_ac_c* i_actor, heapCallbackFunc i_callback, JKRHea
}
/* 80450CC8-80450CCC -00001 0004+00 2/2 0/0 0/0 .sbss None */
namespace fopAcM {
bool HeapAdjustEntry;
bool HeapAdjustVerbose;
bool HeapAdjustQuiet;
} // namespace fopAcM
u8 fopAcM::HeapAdjustEntry;
u8 fopAcM::HeapAdjustUnk;
u8 fopAcM::HeapAdjustVerbose;
u8 fopAcM::HeapAdjustQuiet;
u8 fopAcM::HeapDummyCreate;
/* 8001A1E8-8001A4B0 014B28 02C8+00 1/1 0/0 0/0 .text
* fopAcM_entrySolidHeap___FP10fopAc_ac_cPFP10fopAc_ac_c_iUl */
@@ -432,12 +503,12 @@ bool fopAcM_entrySolidHeap_(fopAc_ac_c* i_actor, heapCallbackFunc i_heapCallback
/* 8001A4B0-8001A528 014DF0 0078+00 0/0 4/4 446/446 .text
* fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl */
bool fopAcM_entrySolidHeap(fopAc_ac_c* i_actor, heapCallbackFunc i_heapCallback, u32 i_size) {
bool var_r31 = fopAcM::HeapAdjustVerbose;
u8 var_r31 = fopAcM::HeapAdjustUnk;
if (i_size & 0x80000000) {
fopAcM::HeapAdjustVerbose = true;
fopAcM::HeapAdjustUnk = true;
}
bool var_r30 = fopAcM::HeapAdjustEntry;
u8 var_r30 = fopAcM::HeapAdjustEntry;
if (i_size & 0x20000000) {
fopAcM::HeapAdjustEntry = false;
} else if (i_size & 0x10000000) {
@@ -445,7 +516,7 @@ bool fopAcM_entrySolidHeap(fopAc_ac_c* i_actor, heapCallbackFunc i_heapCallback,
}
bool result = fopAcM_entrySolidHeap_(i_actor, i_heapCallback, i_size & 0xFFFFFF);
fopAcM::HeapAdjustVerbose = var_r31;
fopAcM::HeapAdjustUnk = var_r31;
fopAcM::HeapAdjustEntry = var_r30;
return result;
}