summaryrefslogtreecommitdiff
path: root/include/d
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2022-02-24 14:04:56 -0800
committerTakaRikka <38417346+TakaRikka@users.noreply.github.com>2022-02-24 14:04:56 -0800
commitfdaeb3437d447b5a8cff31f56edc00f5ed671b1b (patch)
treef5ac21c079ed61c174f9d68f9c9a3f93b412ac0c /include/d
parent9ba9d7c06cde1db164e3282550855880148dc940 (diff)
shop_system stuff
Diffstat (limited to 'include/d')
-rw-r--r--include/d/a/d_a_npc.h309
-rw-r--r--include/d/a/d_a_shop_item_static.h48
-rw-r--r--include/d/com/d_com_inf_game.h27
-rw-r--r--include/d/d_attention.h1
-rw-r--r--include/d/d_lib.h5
-rw-r--r--include/d/d_select_cursor.h9
-rw-r--r--include/d/meter/d_meter2_info.h5
-rw-r--r--include/d/msg/d_msg_flow.h18
-rw-r--r--include/d/msg/d_msg_object.h25
-rw-r--r--include/d/particle/d_particle_copoly.h16
-rw-r--r--include/d/shop/d_shop_item_ctrl.h20
-rw-r--r--include/d/shop/d_shop_system.h161
12 files changed, 633 insertions, 11 deletions
diff --git a/include/d/a/d_a_npc.h b/include/d/a/d_a_npc.h
index 371fecaf1f..2c77d4d274 100644
--- a/include/d/a/d_a_npc.h
+++ b/include/d/a/d_a_npc.h
@@ -2,5 +2,314 @@
#define D_A_D_A_NPC_H
#include "dolphin/types.h"
+#include "d/com/d_com_inf_game.h"
+#include "global.h"
+
+class daNpcT_MotionSeqMngr_c {
+public:
+ struct sequenceStepData_c {};
+
+ /* 80145898 */ void initialize();
+ /* 801458C0 */ void play(u16, int*, f32*);
+ /* 80145A24 */ void checkEndSequence();
+
+private:
+ /* 0x00 */ sequenceStepData_c* field_0x0;
+ /* 0x04 */ int field_0x4;
+ /* 0x08 */ int mNo;
+ /* 0x0C */ int mOffset;
+ /* 0x10 */ int mStepNo;
+ /* 0x14 */ int field_0x14;
+ /* 0x18 */ f32 field_0x18;
+ /* 0x1C */ u8 field_0x1c;
+
+public:
+ /* 8014D0C0 */ virtual ~daNpcT_MotionSeqMngr_c();
+};
+
+class daNpcT_ActorMngr_c {
+private:
+ /* 0x0 */ u32 mActorID;
+
+public:
+ /* 801456D4 */ void initialize();
+ /* 801456E0 */ void entry(fopAc_ac_c*);
+ /* 801456FC */ void remove();
+ /* 80145708 */ void getActorP();
+
+ /* 8014D108 */ virtual ~daNpcT_ActorMngr_c();
+};
+
+class daNpcT_JntAnm_c {
+private:
+ /* 0x000 */ daNpcT_ActorMngr_c field_0x0;
+ /* 0x008 */ cXyz field_0x8;
+ /* 0x014 */ cXyz field_0x14;
+ /* 0x020 */ cXyz* field_0x20;
+ /* 0x024 */ cXyz field_0x24;
+ /* 0x030 */ cXyz field_0x30[3];
+ /* 0x054 */ cXyz field_0x54[3];
+ /* 0x078 */ cXyz field_0x78[3];
+ /* 0x09C */ cXyz field_0x9c[3];
+ /* 0x0C0 */ cXyz mRad[3];
+ /* 0x0E4 */ cXyz field_0xe4[3];
+ /* 0x108 */ cXyz field_0x108;
+ /* 0x114 */ cXyz field_0x114;
+ /* 0x120 */ cXyz field_0x120;
+ /* 0x12C */ csXyz mEyeAngle;
+ /* 0x132 */ csXyz field_0x132;
+ /* 0x138 */ int mMode;
+ /* 0x13C */ u8 field_0x13c[4];
+ /* 0x140 */ int field_0x140;
+ /* 0x144 */ u8 field_0x144[4];
+ /* 0x148 */ f32 field_0x148;
+ /* 0x14C */ f32 field_0x14c;
+ /* 0x150 */ csXyz field_0x150;
+ /* 0x156 */ u8 field_0x156;
+ /* 0x157 */ u8 mDirectFlag;
+ /* 0x158 */ u8 field_0x158;
+
+public:
+ /* 80146C98 */ void initialize();
+ /* 80146CD8 */ void setParam(fopAc_ac_c*, J3DModel*, cXyz*, int, int, int, f32, f32, f32, f32,
+ f32, f32, f32, f32, f32, f32, cXyz*);
+ /* 80147858 */ void calc(f32);
+ /* 80147C38 */ void calcJntRad(f32, f32, f32);
+
+ /* 8014D150 */ virtual ~daNpcT_JntAnm_c();
+};
+
+class daNpcT_DmgStagger_c {
+public:
+ /* 80147DCC */ void setParam(fopAc_ac_c*, fopAc_ac_c*, s16);
+ /* 80147E3C */ void calc(int);
+
+private:
+ /* 0x00 */ csXyz field_0x0[2];
+ /* 0x0C */ f32 field_0xc[2];
+ /* 0x14 */ s16 mStagger;
+ /* 0x16 */ s16 field_0x16;
+ /* 0x18 */ u8 mRebirth;
+};
+
+struct daNpcT_evtData_c {};
+
+struct daNpcT_faceMotionAnmData_c {};
+
+struct daNpcT_pntData_c {};
+
+struct daNpcT_motionAnmData_c {};
+
+class mDoExt_McaMorfSO;
+
+class daNpcT_c : public fopAc_ac_c {
+public:
+ /* 0x568 */ daNpcT_faceMotionAnmData_c* field_0x568;
+ /* 0x56C */ daNpcT_motionAnmData_c* field_0x56c;
+ /* 0x570 */ daNpcT_evtData_c* field_0x570;
+ /* 0x574 */ char** field_0x574;
+ /* 0x578 */ mDoExt_McaMorfSO* mMcaMorfAnm[2];
+ /* 0x580 */ Z2Creature field_0x580;
+ /* 0x610 */ mDoExt_bckAnm mBckAnm;
+ /* 0x62C */ mDoExt_btpAnm mBtpAnm;
+ /* 0x644 */ mDoExt_btkAnm mBtkAnm;
+ /* 0x65C */ mDoExt_brkAnm mBrkAnm;
+ /* 0x674 */ mDoExt_bpkAnm mBpkAnm;
+ /* 0x68C */ dBgS_ObjAcch field_0x68c;
+ /* 0x864 */ dCcD_Stts field_0x864;
+ /* 0x8A0 */ dBgS_AcchCir field_0x8a0;
+ /* 0x8E0 */ request_of_phase_process_class field_0x8e0[10];
+ /* 0x930 */ cBgS_GndChk field_0x930;
+ /* 0x96C */ u8 field_0xa6c[8];
+ /* 0x974 */ dMsgFlow_c mFlow;
+ /* 0x9C0 */ dPaPoT_c field_0x9c0;
+ /* 0xA40 */ dCcD_Stts field_0xa40;
+ /* 0xA7C */ u8 field_0xa7c[4];
+ /* 0xA80 */ f32 field_0xa80;
+ /* 0xA84 */ f32 field_0xa84;
+ /* 0xA89 */ u8 field_0xa88;
+ /* 0xA89 */ u8 field_0xa89;
+ /* 0xA8C */ dBgS_GndChk field_0xa8c;
+ /* 0xAE0 */ dBgS_LinChk field_0xae0;
+ /* 0xB50 */ daNpcT_MotionSeqMngr_c field_0xb50;
+ /* 0xB74 */ daNpcT_MotionSeqMngr_c field_0xb74;
+ /* 0xB98 */ daNpcT_ActorMngr_c field_0xb98;
+ /* 0xBA0 */ daNpcT_ActorMngr_c field_0xba0;
+ /* 0xBA8 */ daNpcT_JntAnm_c field_0xba8;
+ /* 0xD08 */ daNpcT_DmgStagger_c field_0xd08;
+ /* 0xD24 */ cXyz field_0xd24;
+ /* 0xD30 */ cXyz field_0xd30;
+ /* 0xD3C */ cXyz field_0xd3c;
+ /* 0xD48 */ cXyz field_0xd48;
+ /* 0xD54 */ cXyz field_0xd54;
+ /* 0xD60 */ cXyz field_0xd60;
+ /* 0xD6C */ cXyz field_0xd6c;
+ /* 0xD78 */ csXyz field_0xd78;
+ /* 0xD7E */ csXyz field_0xd7e;
+ /* 0xD84 */ csXyz field_0xd84;
+ /* 0xD8A */ csXyz field_0xd8a;
+ /* 0xD90 */ u32 field_0xd90;
+ /* 0xD94 */ u32 field_0xd94;
+ /* 0xD98 */ u32 field_0xd98;
+ /* 0xD9C */ u32 field_0xd9c;
+ /* 0xDA0 */ u8 field_0xda0[8];
+ /* 0xDA8 */ u32 field_0xda8;
+ /* 0xDAC */ int field_0xdac;
+ /* 0xDB0 */ int mCutType;
+ /* 0xDB4 */ int field_0xdb4;
+ /* 0xDB8 */ int field_0xdb8;
+ /* 0xDBC */ int mTimer;
+ /* 0xDC0 */ int field_0xdc0;
+ /* 0xDC4 */ u8 field_0xdc4[4];
+ /* 0xDC8 */ s16 field_0xdc8;
+ /* 0xDCA */ s16 field_0xdca;
+ /* 0xDCC */ u8 field_0xdcc[8];
+ /* 0xDD4 */ s16 field_0xdd4;
+ /* 0xDD8 */ s16 field_0xdd8;
+ /* 0xDDA */ s16 field_0xdda;
+ /* 0xDDC */ f32 field_0xddc;
+ /* 0xDE0 */ f32 field_0xde0;
+ /* 0xDE4 */ f32 field_0xde4;
+ /* 0xDE8 */ u8 field_0xde8[0xC];
+ /* 0xDF4 */ f32 field_0xdf4;
+ /* 0xDF8 */ u8 field_0xdf8[4];
+ /* 0xDFC */ f32 field_0xdfc;
+ /* 0xE00 */ cXyz field_0xe00;
+ /* 0xE0C */ cXyz field_0xe0c;
+ /* 0xE18 */ s16 field_0xe18;
+ /* 0xE1A */ s16 field_0xe1a;
+ /* 0xE1C */ s16 field_0xe1c;
+ /* 0xE1E */ u16 field_0xe1e;
+ /* 0xE20 */ u16 field_0xe20;
+ /* 0xE22 */ u16 field_0xe22;
+ /* 0xE24 */ u8 field_0xe24;
+ /* 0xE25 */ u8 field_0xe25;
+ /* 0xE26 */ u8 field_0xe26;
+ /* 0xE27 */ u8 field_0xe27;
+ /* 0xE28 */ u8 field_0xe28;
+ /* 0xE29 */ u8 field_0xe29;
+ /* 0xE2A */ u8 field_0xe2a;
+ /* 0xE2B */ u8 field_0xe2b;
+ /* 0xE2C */ u8 field_0xe2c;
+ /* 0xE2D */ u8 field_0xe2d;
+ /* 0xE2E */ u8 field_0xe2e[2];
+ /* 0xE30 */ u16 field_0xe30;
+ /* 0xE32 */ u8 field_0xe32;
+ /* 0xE33 */ u8 field_0xe33;
+ /* 0xE34 */ u8 field_0xe34;
+ /* 0xE35 */ u8 field_0xe35[7];
+ /* 0xE3C vtable */
+
+public:
+ /* 80147FA4 */ void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*);
+ /* 80147FD4 */ void srchActor(void*, void*);
+ /* 80148058 */ void getTrnsfrmAnmP(char const*, int);
+ /* 80148094 */ void getTrnsfrmKeyAnmP(char const*, int);
+ /* 801480D0 */ void getTexPtrnAnmP(char const*, int);
+ /* 8014810C */ void getTexSRTKeyAnmP(char const*, int);
+ /* 80148148 */ void getTevRegKeyAnmP(char const*, int);
+ /* 80148184 */ void getColorAnmP(char const*, int);
+ /* 801481C0 */ void setBckAnm(J3DAnmTransform*, f32, int, int, int, bool);
+ /* 80148204 */ void setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int);
+ /* 801482F8 */ void setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int);
+ /* 80148338 */ void setBtkAnm(J3DAnmTextureSRTKey*, J3DModelData*, f32, int);
+ /* 80148378 */ void setBrkAnm(J3DAnmTevRegKey*, J3DModelData*, f32, int);
+ /* 801483B8 */ void setBpkAnm(J3DAnmColor*, J3DModelData*, f32, int);
+ /* 801483F8 */ void loadRes(s8 const*, char const**);
+ /* 801484AC */ void deleteRes(s8 const*, char const**);
+ /* 8014852C */ void execute();
+ /* 8014886C */ void draw(int, int, f32, _GXColorS10*, f32, int, int, int);
+ /* 80148C70 */ void setEnvTevColor();
+ /* 80148CCC */ void setRoomNo();
+ /* 80148D10 */ void checkEndAnm(f32);
+ /* 80148DD0 */ void checkEndAnm(J3DFrameCtrl*, f32);
+ /* 80148E4C */ void playAllAnm();
+ /* 80149190 */ void setMtx();
+ /* 8014924C */ void ctrlFaceMotion();
+ /* 80149300 */ void ctrlMotion();
+ /* 801493B8 */ void ctrlMsgAnm(int*, int*, fopAc_ac_c*, int);
+ /* 8014A224 */ void evtChange();
+ /* 8014A388 */ void setFaceMotionAnm(int, bool);
+ /* 8014A908 */ void setPos(cXyz);
+ /* 8014AA18 */ void setAngle(s16);
+ /* 8014A99C */ void setAngle(csXyz);
+ /* 8014AA40 */ void hitChk(dCcD_GObjInf*, u32);
+ /* 8014AAD0 */ void setDamage(int, int, int);
+ /* 8014ABD0 */ void chkActorInSight(fopAc_ac_c*, f32, s16);
+ /* 8014ACF0 */ void chkPointInArea(cXyz, cXyz, f32, f32, f32, s16);
+ /* 8014ADA0 */ void chkPointInArea(cXyz, cXyz, cXyz, s16);
+ /* 8014AE1C */ void chkFindActor(fopAc_ac_c*, int, s16);
+ /* 8014B024 */ void chkWolfAction();
+ /* 8014B0C8 */ void chkFindWolf(s16, int, int, f32, f32, f32, f32, int);
+ /* 8014B338 */ void srchPlayerActor();
+ /* 8014B3EC */ void getAttnPos(fopAc_ac_c*);
+ /* 8014B4A4 */ void turn(s16, int, int);
+ /* 8014B648 */ void step(s16, int, int, int, int);
+ /* 8014B808 */ void calcSpeedAndAngle(cXyz, int, s16, s16);
+ /* 8014BB00 */ void getActorDistance(fopAc_ac_c*, int, int);
+ /* 8014BBF0 */ void initTalk(int, fopAc_ac_c**);
+ /* 8014BC78 */ void talkProc(int*, int, fopAc_ac_c**, int);
+ /* 8014BE2C */ void getNearestActorP(s16);
+ /* 8014BEE4 */ void getEvtAreaTagP(int, int);
+ /* 8014BFB0 */ void getShopItemTagP();
+ /* 8014C030 */ void setHitodamaPrtcl();
+
+ /* 8014CD20 */ virtual ~daNpcT_c();
+ /* 801490D4 */ virtual void ctrlBtk();
+ /* 8014CC14 */ virtual void ctrlSubFaceMotion(int);
+ /* 8014CC40 */ virtual bool checkChangeJoint(int);
+ /* 8014CC38 */ virtual bool checkRemoveJoint(int);
+ /* 8014CC5C */ virtual s32 getBackboneJointNo();
+ /* 8014CC54 */ virtual s32 getNeckJointNo();
+ /* 8014CC4C */ virtual s32 getHeadJointNo();
+ /* 8014CC90 */ virtual s32 getFootLJointNo();
+ /* 8014CC88 */ virtual s32 getFootRJointNo();
+ /* 8014D0A8 */ virtual bool getEyeballLMaterialNo();
+ /* 8014D0B0 */ virtual bool getEyeballRMaterialNo();
+ /* 8014D0B8 */ virtual bool getEyeballMaterialNo();
+ /* 8014951C */ virtual void ctrlJoint(J3DJoint*, J3DModel*);
+ /* 8014CC48 */ virtual void afterJntAnm(int);
+ /* 8014CC24 */ virtual void setParam();
+ /* 8014CC80 */ virtual bool checkChangeEvt();
+ /* 8014CC78 */ virtual bool evtTalk();
+ /* 8014CC70 */ virtual bool evtEndProc();
+ /* 8014CC68 */ virtual bool evtCutProc();
+ /* 8014CC64 */ virtual void setAfterTalkMotion();
+ /* 8014997C */ virtual void evtProc();
+ /* 8014CC20 */ virtual void action();
+ /* 8014CC1C */ virtual void beforeMove();
+ /* 8014CC18 */ virtual void afterMoved();
+ /* 8014CC10 */ virtual void setAttnPos();
+ /* 80149BB4 */ virtual void setFootPos();
+ /* 8014CC0C */ virtual void setCollision();
+ /* 80149D7C */ virtual void setFootPrtcl(cXyz*, f32, f32);
+ /* 8014A05C */ virtual bool checkCullDraw();
+ /* 8014A064 */ virtual void twilight();
+ /* 8014CC98 */ virtual bool chkXYItems();
+ /* 8014A0B0 */ virtual void evtOrder();
+ /* 8014CBF4 */ virtual void decTmr();
+ /* 8014A324 */ virtual void clrParam();
+ /* 8014CC30 */ virtual bool drawDbgInfo();
+ /* 8014CC28 */ virtual void drawOtherMdl();
+ /* 8014CC2C */ virtual void drawGhost();
+ /* 8014CCA0 */ virtual bool afterSetFaceMotionAnm(int, int, f32, int);
+ /* 8014CCE0 */ virtual bool afterSetMotionAnm(int, int, f32, int);
+ /* 8014CCB0 */ virtual void getFaceMotionAnm(daNpcT_faceMotionAnmData_c);
+ /* 8014CCF0 */ virtual void getMotionAnm(daNpcT_motionAnmData_c);
+ /* 8014CCEC */ virtual void changeAnm(int*, int*);
+ /* 8014CCAC */ virtual void changeBck(int*, int*);
+ /* 8014CCA8 */ virtual void changeBtp(int*, int*);
+ /* 8014CCE8 */ virtual void changeBtk(int*, int*);
+ /* 8014A628 */ virtual void setMotionAnm(int, f32, int);
+
+ static u8 const mCcDObjData[48];
+ static u8 mCcDCyl[68];
+ static u8 mCcDSph[64];
+ static u8 mFindActorPtrs[200];
+ static u8 mSrchName[2 + 2 /* padding */];
+ static u8 mFindCount[4];
+};
+
+STATIC_ASSERT(sizeof(daNpcT_c) == 0xE40);
#endif /* D_A_D_A_NPC_H */
diff --git a/include/d/a/d_a_shop_item_static.h b/include/d/a/d_a_shop_item_static.h
index c8e7d7359c..d6bc8342df 100644
--- a/include/d/a/d_a_shop_item_static.h
+++ b/include/d/a/d_a_shop_item_static.h
@@ -2,5 +2,53 @@
#define D_A_D_A_SHOP_ITEM_STATIC_H
#include "dolphin/types.h"
+#include "d/a/d_a_itembase.h"
+
+struct ResourceData {
+ char* get_arcName() const { return mArcName; }
+ s16 get_bmdName() const { return mBmdName; }
+ s16 get_btk1Name() const { return mBtkName; }
+ s16 get_bpk1Name() const { return mBpkName; }
+ s16 get_bck1Name() const { return mBckName; }
+ s16 get_bxa1Name() const { return mBxaName; }
+ s16 get_brk1Name() const { return mBrkName; }
+ s16 get_btp1Name() const { return mBtpName; }
+
+ /* 0x00 */ char* mArcName;
+ /* 0x04 */ s16 mBmdName;
+ /* 0x06 */ s16 mBtkName;
+ /* 0x08 */ s16 mBpkName;
+ /* 0x0A */ s16 mBckName;
+ /* 0x0C */ s16 mBxaName;
+ /* 0x0E */ s16 mBrkName;
+ /* 0x10 */ s16 mBtpName;
+ /* 0x14 */ f32 mOffsetY;
+ /* 0x18 */ f32 mScale;
+ /* 0x1C */ s16 mAngleOffsetX;
+ /* 0x1E */ SVec mAngle;
+ /* 0x24 */ u32 mFlag;
+ /* 0x28 */ u8 mShadowSize;
+ /* 0x29 */ u8 mCollisionH;
+ /* 0x2A */ u8 mCollisionR;
+ /* 0x2B */ s8 mTevFrm;
+ /* 0x2C */ s8 mBtpFrm;
+}; // Size: 0x30
+
+class daShopItem_c : public daItemBase_c {
+public:
+ /* 80037C14 */ csXyz* getRotateP();
+ /* 80037C1C */ cXyz* getPosP();
+
+ u8 getShopItemID() const { return mShopItemID; }
+
+ static ResourceData const mData[23];
+
+private:
+ /* 0x92C */ Mtx mMtx;
+ /* 0x95C */ int field_0x95c;
+ /* 0x960 */ s16 mAngleX;
+ /* 0x962 */ s16 mAngleY;
+ /* 0x964 */ u8 mShopItemID;
+};
#endif /* D_A_D_A_SHOP_ITEM_STATIC_H */
diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h
index 85a78ee2d1..d8dc4a7478 100644
--- a/include/d/com/d_com_inf_game.h
+++ b/include/d/com/d_com_inf_game.h
@@ -252,6 +252,16 @@ public:
m3DSetFlag = flag;
}
+ void setDoStatusForce(u8 status, u8 flag) {
+ mDoStatusForce = status;
+ mDoSetFlagForce = flag;
+ }
+
+ void setAStatusForce(u8 status, u8 flag) {
+ mAStatusForce = status;
+ mASetFlagForce = flag;
+ }
+
void setItemRupeeCount(int rupees) { mItemRupeeCount += rupees; }
void setItemMagicCount(s16 magic) { mItemMagicCount += magic; }
void setItemMaxMagicCount(s16 max) { mItemMaxMagicCount += max; }
@@ -341,6 +351,7 @@ public:
void offPauseFlag() { mPauseFlag = false; }
void show2dOn() { mShow2D = 1; }
s8 getLayerOld() { return mLayerOld; }
+ void setMesgCancelButton(u8 button) { mMesgCancelButton = button; }
public:
/* 0x00000 */ dBgS mBgs;
@@ -955,6 +966,10 @@ inline void dComIfGs_onSaveSwitch(int i_stageNo, int i_no) {
g_dComIfG_gameInfo.info.getSavedata().getSave(i_stageNo).getBit().onSwitch(i_no);
}
+inline void dComIfGs_onSaveSwitch(int i_no) {
+ g_dComIfG_gameInfo.info.getMemory().getBit().onSwitch(i_no);
+}
+
inline void dComIfGs_offSaveSwitch(int i_stageNo, int i_no) {
g_dComIfG_gameInfo.info.getSavedata().getSave(i_stageNo).getBit().offSwitch(i_no);
}
@@ -1444,6 +1459,14 @@ inline void dComIfGp_setSButtonStatusForce(u8 status, u8 flag) {
g_dComIfG_gameInfo.play.setSButtonStatusForce(status, flag);
}
+inline void dComIfGp_setDoStatusForce(u8 status, u8 flag) {
+ g_dComIfG_gameInfo.play.setDoStatusForce(status, flag);
+}
+
+inline void dComIfGp_setAStatusForce(u8 status, u8 flag) {
+ g_dComIfG_gameInfo.play.setAStatusForce(status, flag);
+}
+
inline u8 dComIfGp_getAStatus() {
return g_dComIfG_gameInfo.play.getAStatus();
}
@@ -1676,6 +1699,10 @@ inline void dComIfGp_offPauseFlag() {
g_dComIfG_gameInfo.play.offPauseFlag();
}
+inline void dComIfGp_setMesgCancelButton(u8 button) {
+ g_dComIfG_gameInfo.play.setMesgCancelButton(button);
+}
+
inline s32 dComIfGp_checkStatus(u16 flags) {
return g_dComIfG_gameInfo.play.checkStatus(flags);
}
diff --git a/include/d/d_attention.h b/include/d/d_attention.h
index 4f35de5604..faafe287d9 100644
--- a/include/d/d_attention.h
+++ b/include/d/d_attention.h
@@ -200,6 +200,7 @@ public:
/* 8016E424 */ void LockEdge();
/* 80182994 */ void GetCheckObjectCount();
/* 80182AD0 */ void keepLock(int);
+ /* 8014B010 */ void getDistTable(int);
dAttCatch_c& getCatghTarget() { return mCatghTarget; }
bool chkFlag(u32 flag) { return mFlags & flag; }
diff --git a/include/d/d_lib.h b/include/d/d_lib.h
index 27a0715dce..028b9b68e9 100644
--- a/include/d/d_lib.h
+++ b/include/d/d_lib.h
@@ -7,6 +7,11 @@ struct JKRAramArchive;
u32 dLib_getExpandSizeFromAramArchive(JKRAramArchive* arc, char const* resName);
struct STControl {
+ STControl() {
+ setWaitParm(15, 15, 0, 0, 0.9f, 0.5f, 0, 0x2000);
+ init();
+ }
+
/* 80032044 */ STControl(s16, s16, s16, s16, f32, f32, s16, s16);
/* 80032088 */ void setWaitParm(s16, s16, s16, s16, f32, f32, s16, s16);
/* 800320AC */ void init();
diff --git a/include/d/d_select_cursor.h b/include/d/d_select_cursor.h
index 5cb8af07a7..eee23d7f3a 100644
--- a/include/d/d_select_cursor.h
+++ b/include/d/d_select_cursor.h
@@ -42,7 +42,16 @@ public:
/* 80194C30 */ virtual void draw();
/* 801949EC */ virtual ~dSelect_cursor_c();
+ void setPos(f32 x, f32 y) {
+ field_0x58 = x;
+ field_0x5c = y;
+ }
+
private:
+ u8 field_0x4[0x54];
+ f32 field_0x58;
+ f32 field_0x5c;
+ u8 field_0x60[0x58];
};
#endif /* D_D_SELECT_CURSOR_H */
diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h
index 8028c7daff..3615280b07 100644
--- a/include/d/meter/d_meter2_info.h
+++ b/include/d/meter/d_meter2_info.h
@@ -148,6 +148,7 @@ public:
void offLifeGaugeSE() { mLifeGaugeSE = 0; }
u8 getLifeGaugeSE() { return mLifeGaugeSE; }
const char* getSaveStageName() { return mSaveStageName; }
+ void onShopTalkFlag() { mShopTalkFlag = true; }
public:
/* 0x04 */ u8 unk4[4];
@@ -430,6 +431,10 @@ inline const char* dMeter2Info_getSaveStageName() {
return g_meter2_info.getSaveStageName();
}
+inline void dMeter2Info_onShopTalkFlag() {
+ g_meter2_info.onShopTalkFlag();
+}
+
char* dMeter2Info_getNumberTextureName(int pIndex);
#endif /* D_METER_D_METER2_INFO_H */
diff --git a/include/d/msg/d_msg_flow.h b/include/d/msg/d_msg_flow.h
index f387463e3e..7682cafab4 100644
--- a/include/d/msg/d_msg_flow.h
+++ b/include/d/msg/d_msg_flow.h
@@ -22,10 +22,10 @@ public:
/* 80249F48 */ ~dMsgFlow_c();
/* 80249F90 */ void init(fopAc_ac_c*, int, int, fopAc_ac_c**);
/* 8024A13C */ void checkOpenDoor(fopAc_ac_c*, int*);
- /* 8024A2D8 */ void doFlow(fopAc_ac_c*, fopAc_ac_c**, int);
+ /* 8024A2D8 */ int doFlow(fopAc_ac_c*, fopAc_ac_c**, int);
/* 8024A424 */ void checkEventRender(int*, int*, int*, int*);
/* 8024A4C4 */ void remove();
- /* 8024A528 */ void getEventId(int*);
+ /* 8024A528 */ u16 getEventId(int*);
/* 8024A538 */ void getMsgNo();
/* 8024A540 */ void getNowMsgNo();
/* 8024A548 */ void getMsg();
@@ -47,7 +47,7 @@ public:
/* 8024B180 */ void query002(mesg_flow_node_branch*, fopAc_ac_c*, int);
/* 8024B208 */ void query003(mesg_flow_node_branch*, fopAc_ac_c*, int);
/* 8024B250 */ void query004(mesg_flow_node_branch*, fopAc_ac_c*, int);
- /* 8024B2C0 */ void query005(mesg_flow_node_branch*, fopAc_ac_c*, int);
+ /* 8024B2C0 */ u16 query005(mesg_flow_node_branch*, fopAc_ac_c*, int);
/* 8024B2F8 */ void query006(mesg_flow_node_branch*, fopAc_ac_c*, int);
/* 8024B32C */ void query007(mesg_flow_node_branch*, fopAc_ac_c*, int);
/* 8024B45C */ void query008(mesg_flow_node_branch*, fopAc_ac_c*, int);
@@ -140,19 +140,23 @@ public:
/* 8024DA78 */ void event041(mesg_flow_node_event*, fopAc_ac_c*);
/* 8024DAA8 */ bool event042(mesg_flow_node_event*, fopAc_ac_c*);
+ u8 isSelectMessage() { return mSelectMessage; }
+ void onNonStopJunpFlowFlag() { mNonStopJunpFlowFlag = 1; }
+ u16 getSelectNum() { return query005(NULL, NULL, 0); }
+
static u8 mQueryList[636];
static u8 mEventList[516];
private:
/* 0x00 */ void* vtable;
- /* 0x04 */ void* field_0x04;
- /* 0x08 */ void* field_0x08;
- /* 0x0C */ void* field_0x0c;
+ /* 0x04 */ void* mFlow_p;
+ /* 0x08 */ void* mLabelInfo_p;
+ /* 0x0C */ void* mFlowNodeTBL;
/* 0x10 */ u16 field_0x10;
/* 0x12 */ u16 field_0x12;
/* 0x14 */ fopAc_ac_c* field_0x14;
/* 0x18 */ int field_0x18;
- /* 0x1C */ u16 field_0x1c;
+ /* 0x1C */ u16 mFlow;
/* 0x1E */ u8 field_0x1e[2];
/* 0x20 */ int mMsg;
/* 0x24 */ u8 mSelectMessage;
diff --git a/include/d/msg/d_msg_object.h b/include/d/msg/d_msg_object.h
index b9d4b0f6f9..df2380affc 100644
--- a/include/d/msg/d_msg_object.h
+++ b/include/d/msg/d_msg_object.h
@@ -79,7 +79,7 @@ public:
/* 8023768C */ void getSelectBombPriceLocal();
/* 8023773C */ void setEquipBombInfoLocal();
/* 80237748 */ void updateEquipBombInfoLocal();
- /* 802378B8 */ void setShopWaitTimer(u8);
+ /* 802378B8 */ static void setShopWaitTimer(u8);
/* 802378CC */ void setSelectWordFlagLocal(u8);
/* 802378D4 */ void isHowlHearingModeLocal();
/* 80237934 */ void isCameraCancelFlag();
@@ -123,12 +123,12 @@ public:
/* 8023826C */ void setTalkActor(fopAc_ac_c*);
/* 8023829C */ void onMsgSendControl();
/* 802382C8 */ void offMsgSendControl();
- /* 802382F4 */ void isMsgSendControl();
- /* 80238320 */ void onMsgSend();
+ /* 802382F4 */ static int isMsgSendControl();
+ /* 80238320 */ static void onMsgSend();
/* 8023834C */ void offMsgSend();
/* 80238378 */ void isMsgSend();
/* 802383A4 */ void isMouthCheck();
- /* 802383D0 */ void getMessageID();
+ /* 802383D0 */ static u32 getMessageID();
/* 802383E4 */ void getSmellTypeMessageID();
/* 80238410 */ void setSmellType(u8);
/* 80238440 */ void getSelectCursorPos();
@@ -150,7 +150,16 @@ public:
/* 80238638 */ void getItemEquipButton();
/* 8023864C */ void setSelectCancelPos(u8);
+ void setShopWaitTimerLocal(u8 timer) { field_0x4c9 = timer; }
+ u8 getSelectPushFlag() { return mSelectPushFlag; }
+ u8 getSelectCancelPos() { return mSelectCancelPos; }
+
/* 0x100 */ fopAc_ac_c* field_0x100;
+ /* 0x104 */ u8 field_0x104[0x9D];
+ /* 0x1A1 */ u8 mSelectCancelPos;
+ /* 0x1A2 */ u8 mSelectPushFlag;
+ /* 0x1A3 */ u8 field_0x1a3[0x326];
+ /* 0x4C9 */ u8 field_0x4c9;
};
s16 dMsgObject_getGroupID();
@@ -163,8 +172,16 @@ inline bool dMsgObject_isTalkNowCheck() {
return dMsgObject_getMsgObjectClass()->getStatus() != 1 ? true : false;
}
+inline u32 dMsgObject_getMessageID() {
+ return dMsgObject_c::getMessageID();
+}
+
inline void dMsgObject_readMessageGroup(mDoDvdThd_mountXArchive_c** param_0) {
dMsgObject_getMsgObjectClass()->readMessageGroup(param_0);
}
+inline void dMsgObject_setShopWaitTimer(u8 timer) {
+ dMsgObject_c::setShopWaitTimer(timer);
+}
+
#endif /* D_MSG_D_MSG_OBJECT_H */
diff --git a/include/d/particle/d_particle_copoly.h b/include/d/particle/d_particle_copoly.h
index 561b75ea19..6364c0bee7 100644
--- a/include/d/particle/d_particle_copoly.h
+++ b/include/d/particle/d_particle_copoly.h
@@ -28,4 +28,20 @@ public:
/* 0x37 */ u8 field_0x37;
};
+struct dPaPoT_c {
+ /* 8005115C */ void setEffectTwo(dKy_tevstr_c const*, cXyz const*, u32, u32, cXyz const*,
+ cXyz const*, cXyz const*, csXyz const*, cXyz const*, s8, f32,
+ f32);
+ /* 80051294 */ void clearTwoAllID();
+ /* 80051470 */ void getRightEffType(int) const;
+ /* 8005147C */ void getLeftEffType(int) const;
+ /* 80051494 */ void getRightEmitter(int, int);
+ /* 800514DC */ void getLeftEmitter(int, int);
+
+ static u8 m_typeTwoData[36];
+ static u8 m_emitterTwoData[36];
+
+ u8 field_0x0[0x80];
+};
+
#endif /* D_PARTICLE_D_PARTICLE_COPOLY_H */
diff --git a/include/d/shop/d_shop_item_ctrl.h b/include/d/shop/d_shop_item_ctrl.h
index 662cb26b8d..72f6aa0174 100644
--- a/include/d/shop/d_shop_item_ctrl.h
+++ b/include/d/shop/d_shop_item_ctrl.h
@@ -2,5 +2,25 @@
#define D_SHOP_D_SHOP_ITEM_CTRL_H
#include "dolphin/types.h"
+#include "d/a/d_a_shop_item_static.h"
+
+class dShopItemCtrl_c {
+public:
+ /* 80196914 */ dShopItemCtrl_c();
+ /* 801969A0 */ cXyz getCurrentPos(int);
+ /* 80196A3C */ bool isHomePos(int);
+ /* 80196AF0 */ void setRotateAnime(int);
+ /* 80196BA4 */ void setZoomAnime(int, cXyz*, s16, bool);
+
+ /* 80196958 */ virtual ~dShopItemCtrl_c();
+
+ void setItemIndex(int i, u32 index) { mItemIndex[i] = index; }
+ u32 getItemIndex(int i) { return mItemIndex[i]; }
+ u16 getMessageIndex(int i) { return mMessageIndex[i]; }
+
+private:
+ /* 0x04 */ u32 mItemIndex[7];
+ /* 0x20 */ u16 mMessageIndex[7];
+};
#endif /* D_SHOP_D_SHOP_ITEM_CTRL_H */
diff --git a/include/d/shop/d_shop_system.h b/include/d/shop/d_shop_system.h
index 9728f22184..7408358232 100644
--- a/include/d/shop/d_shop_system.h
+++ b/include/d/shop/d_shop_system.h
@@ -2,5 +2,166 @@
#define D_SHOP_D_SHOP_SYSTEM_H
#include "dolphin/types.h"
+#include "d/shop/d_shop_item_ctrl.h"
+#include "d/a/d_a_npc.h"
+
+typedef int (*ShopCam_actionFunc)(void);
+
+class ShopCam_action_c {
+public:
+ /* 80196544 */ void setCamDataIdx(fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*, cXyz*,
+ cXyz*);
+ /* 80196608 */ void setCamDataIdx2(fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*,
+ fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*, cXyz*, cXyz*);
+ /* 801968B8 */ void setMasterCamCtrPos(cXyz*);
+
+ void setCameraSpeed(f32 param_0, f32 param_1, f32 param_2, f32 param_3) {
+ field_0xc0 = param_0;
+ field_0xc4 = param_1;
+ field_0xc8 = param_2;
+ field_0xcc = param_3;
+ }
+
+ void SetSelectIdx(s16 idx) {
+ mSelectIdx = idx;
+ setCameraSpeed(0.25f, 20.0f, 0.25f, 5.0f);
+ }
+
+ /* 0x00 */ int field_0x0;
+ /* 0x04 */ int field_0x4;
+ /* 0x08 */ ShopCam_actionFunc mCamActionFunc;
+ /* 0x0C */ u8 field_0xc[0xC];
+ /* 0x18 */ fopAc_ac_c* field_0x18;
+ /* 0x1C */ fopAc_ac_c* field_0x1c;
+ /* 0x20 */ fopAc_ac_c* field_0x20;
+ /* 0x24 */ fopAc_ac_c* field_0x24;
+ /* 0x28 */ fopAc_ac_c* field_0x28;
+ /* 0x2C */ fopAc_ac_c* field_0x2c;
+ /* 0x30 */ fopAc_ac_c* field_0x30;
+ /* 0x34 */ f32 field_0x34;
+ /* 0x38 */ cXyz field_0x38;
+ /* 0x44 */ cXyz field_0x44;
+ /* 0x50 */ f32 field_0x50;
+ /* 0x54 */ cXyz field_0x54;
+ /* 0x60 */ cXyz field_0x60;
+ /* 0x6C */ f32 field_0x6c;
+ /* 0x70 */ cXyz field_0x70;
+ /* 0x7C */ cXyz field_0x7c;
+ /* 0x88 */ cXyz field_0x88;
+ /* 0x94 */ f32 field_0x94;
+ /* 0x98 */ cXyz field_0x98;
+ /* 0xA4 */ cXyz field_0xa4;
+ /* 0xB0 */ cXyz field_0xb0;
+ /* 0xBC */ f32 field_0xbc;
+ /* 0xC0 */ f32 field_0xc0;
+ /* 0xC4 */ f32 field_0xc4;
+ /* 0xC8 */ f32 field_0xc8;
+ /* 0xCC */ f32 field_0xcc;
+ /* 0xD0 */ u8 field_0xd0[4];
+ /* 0xD4 */ s16 mSelectIdx;
+ /* 0xD6 */ s16 field_0xd6;
+ /* 0xD8 */ s16 field_0xd8;
+ /* 0xDA */ u8 field_0xda;
+};
+
+class dShopSystem_c : public daNpcT_c {
+public:
+ enum {
+ /* 0x0 */ SEQ_WAIT,
+ /* 0x1 */ SEQ_START,
+ /* 0x2 */ SEQ_SELECT_WAIT,
+ /* 0x3 */ SEQ_SELECT_START,
+ /* 0x4 */ SEQ_SELECT,
+ /* 0x5 */ SEQ_MOVING,
+ /* 0x6 */ SEQ_DECIDE,
+ /* 0x7 */ SEQ_CHOOSE,
+ /* 0x8 */ SEQ_DECIDE_YES,
+ /* 0x9 */ SEQ_DECIDE_NO,
+ /* 0xA */ SEQ_FINISH,
+ };
+
+ /* 80197338 */ void initShopSystem();
+ /* 801975C0 */ void onFlag(int);
+ /* 801975DC */ void offFlag(int);
+ /* 801975F8 */ BOOL isFlag(int);
+ /* 80197618 */ void onSoldOutItemFlag(int);
+ /* 80197634 */ void offSoldOutItemFlag(int);
+ /* 80197650 */ BOOL isSoldOutItemFlag(int);
+ /* 80197670 */ int checkController(u8, dMsgFlow_c*);
+ /* 80197808 */ int chooseItem3(u8);
+ /* 80197DD0 */ int chooseItem5(u8);
+ /* 80198250 */ int chooseItem4(u8);
+ /* 80198444 */ int moveCursor(int, u8);
+ /* 80198488 */ int moveCursor0(int, u8);
+ /* 80198708 */ int moveCursor1(int, u8);
+ /* 80198878 */ int drawCursor();
+ /* 80198950 */ int itemRotate();
+ /* 80198A2C */ int itemZoom(cXyz*);
+ /* 801990B0 */ int seq_wait(fopAc_ac_c*, dMsgFlow_c*);
+ /* 801990B8 */ int seq_start(fopAc_ac_c*, dMsgFlow_c*);
+ /* 8019936C */ int seq_select_wait(fopAc_ac_c*, dMsgFlow_c*);
+ /* 801993C4 */ int seq_select_start(fopAc_ac_c*, dMsgFlow_c*);
+ /* 8019959C */ int seq_select(fopAc_ac_c*, dMsgFlow_c*);
+ /* 80199A18 */ int seq_moving(fopAc_ac_c*, dMsgFlow_c*);
+ /* 80199BF8 */ int seq_decide(fopAc_ac_c*, dMsgFlow_c*);
+ /* 80199D14 */ int seq_choose(fopAc_ac_c*, dMsgFlow_c*);
+ /* 80199E28 */ int seq_decide_yes(fopAc_ac_c*, dMsgFlow_c*);
+ /* 80199FA4 */ int seq_decide_no(fopAc_ac_c*, dMsgFlow_c*);
+ /* 8019A020 */ int seq_finish(fopAc_ac_c*, dMsgFlow_c*);
+ /* 8019A0C0 */ bool seq_event(fopAc_ac_c*, dMsgFlow_c*);
+ /* 8019A0D0 */ int shop_init(bool);
+ /* 8019A158 */ void shop_process(fopAc_ac_c*, dMsgFlow_c*);
+ /* 8019A238 */ void createShopItem(int);
+ /* 8019A344 */ void setSeq(u8);
+ /* 8019A354 */ void setSoldOutFlag();
+ /* 8019A364 */ void setSoldOut();
+ /* 8019A4F4 */ void setSoldOutItemHide();
+ /* 8019A564 */ void deleteObject();
+ /* 8019A5D0 */ void searchItemActor();
+ /* 8019AB00 */ int getFlowNodeNum();
+ /* 8019AB1C */ void setSellItemMax(u8);
+ /* 8019AB24 */ bool checkShopOpen();
+ /* 8019AB60 */ bool checkLeftTrigger(STControl*);
+ /* 8019AB84 */ bool checkRightTrigger(STControl*);
+ /* 8019ABA8 */ bool dpdMove();
+
+ /* 801974E4 */ virtual ~dShopSystem_c();
+ /* 8019ACF0 */ virtual bool getResName2(int);
+ /* 8019ACE0 */ virtual int beforeStartSeqAction(dMsgFlow_c*, int);
+ /* 8019ACE8 */ virtual int beforeSelectSeqAction(dMsgFlow_c*, int);
+
+ bool chkSpMode() { return mSpMode == 1; }
+ void offSpMode() { mSpMode = 0; }
+ u8 getEventParamU8(int param_0) { return (mEventParam >> (3 - param_0) * 8) & 0xFF; }
+
+private:
+ /* 0xE40 */ STControl* mpStick;
+ /* 0xE44 */ dSelect_cursor_c* mpDrawCursor;
+ /* 0xE48 */ dShopItemCtrl_c mItemCtrl;
+ /* 0xE78 */ ShopCam_action_c mShopCamAction;
+ /* 0xF54 */ u32 mEventParam;
+ /* 0xF58 */ int field_0xf58;
+ /* 0xF5C */ int field_0xf5c;
+ /* 0xF60 */ int field_0xf60;
+ /* 0xF64 */ int field_0xf64;
+ /* 0xF68 */ s16 field_0xf68;
+ /* 0xF6A */ u16 mFlag;
+ /* 0xF6C */ u16 field_0xf6c;
+ /* 0xF6E */ u8 mCursorPos;
+ /* 0xF6F */ u8 mLastCursorPos;
+ /* 0xF70 */ u8 mSeq;
+ /* 0xF71 */ u8 field_0xf71;
+ /* 0xF72 */ u8 mWaitTimer;
+ /* 0xF73 */ u8 mSoldOutFlag;
+ /* 0xF74 */ u8 mSoldOutItemFlags;
+ /* 0xF75 */ u8 mSpMode;
+ /* 0xF76 */ u8 field_0xf76;
+ /* 0xF77 */ u8 field_0xf77;
+ /* 0xF78 */ u8 field_0xf78;
+ /* 0xF79 */ u8 field_0xf79;
+ /* 0xF7A */ u8 field_0xf7a;
+};
+
+typedef int (dShopSystem_c::*processFunc)(fopAc_ac_c*, dMsgFlow_c*);
#endif /* D_SHOP_D_SHOP_SYSTEM_H */