mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-23 06:54:16 -04:00
+2
-2
@@ -1429,7 +1429,7 @@ config.libs = [
|
||||
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_swpush", extra_cflags=['-pragma "nosyminline on"']),
|
||||
ActorRel(Matching, "d_a_obj_table"),
|
||||
ActorRel(Matching, "d_a_obj_tenmado"),
|
||||
ActorRel(Matching, "d_a_obj_tide"),
|
||||
ActorRel(Equivalent, "d_a_obj_tide"),
|
||||
ActorRel(Matching, "d_a_obj_timer"),
|
||||
ActorRel(Equivalent, "d_a_obj_toripost", extra_cflags=['-pragma "nosyminline on"']), # weak func order
|
||||
ActorRel(Matching, "d_a_obj_tousekiki", extra_cflags=['-pragma "nosyminline on"']),
|
||||
@@ -1465,7 +1465,7 @@ config.libs = [
|
||||
ActorRel(Matching, "d_a_tama", extra_cflags=['-pragma "nosyminline on"']),
|
||||
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_tbox", extra_cflags=['-pragma "nosyminline on"']),
|
||||
ActorRel(Matching, "d_a_tpota", extra_cflags=['-pragma "nosyminline on"']),
|
||||
ActorRel(NonMatching, "d_a_tsubo"),
|
||||
ActorRel(Equivalent, "d_a_tsubo", extra_cflags=['-pragma "nosyminline on"']),
|
||||
ActorRel(Matching, "d_a_warpdm20", extra_cflags=['-pragma "nosyminline on"']),
|
||||
ActorRel(Matching, "d_a_warphr", extra_cflags=['-pragma "nosyminline on"']),
|
||||
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_wbird"),
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
namespace daObjEff {
|
||||
class Act_c : public fopAc_ac_c {
|
||||
public:
|
||||
|
||||
typedef BOOL (Act_c::*Proc)();
|
||||
typedef void (Act_c::*voidProc)();
|
||||
typedef bool (Act_c::*HeapProc)();
|
||||
@@ -19,12 +20,12 @@ namespace daObjEff {
|
||||
PRM_TYPE_S = 0,
|
||||
};
|
||||
|
||||
static void make_barrel_smoke(cXyz* pos) { fopAcM_create(PROC_Obj_Eff, NULL, pos); }
|
||||
void make_land_smoke(cXyz*, float) {}
|
||||
void make_pinecone_smoke(cXyz*) {}
|
||||
void make_skull_smoke(cXyz*) {}
|
||||
void make_stool_smoke(cXyz*) {}
|
||||
void make_woodBox_smoke(cXyz*) {}
|
||||
static void make_barrel_smoke(cXyz* pos) { fopAcM_create(PROC_Obj_Eff, 0, pos); }
|
||||
static void make_land_smoke(cXyz*, float) {}
|
||||
static void make_pinecone_smoke(cXyz* pos) { fopAcM_create(PROC_Obj_Eff, 4, pos); }
|
||||
static void make_skull_smoke(cXyz* pos) { fopAcM_create(PROC_Obj_Eff, 2, pos); }
|
||||
static void make_stool_smoke(cXyz* pos) { fopAcM_create(PROC_Obj_Eff, 1, pos); }
|
||||
static void make_woodBox_smoke(cXyz*) {}
|
||||
int prm_get_type() const {
|
||||
return daObj::PrmAbstract(this, PRM_TYPE_W, PRM_TYPE_S);
|
||||
}
|
||||
|
||||
+211
-51
@@ -13,28 +13,160 @@
|
||||
#include "m_Do/m_Do_mtx.h"
|
||||
|
||||
namespace daTsubo {
|
||||
enum DataFlag_e {
|
||||
DATA_FLAG_1_e = 0x1,
|
||||
DATA_FLAG_2_e = 0x2,
|
||||
DATA_FLAG_4_e = 0x4,
|
||||
DATA_FLAG_8_e = 0x8,
|
||||
DATA_FLAG_10_e = 0x10,
|
||||
DATA_FLAG_20_e = 0x20,
|
||||
};
|
||||
|
||||
class Act_c : public fopAc_ac_c {
|
||||
public:
|
||||
enum Prm_e {
|
||||
PRM_TYPE_W = 0x04,
|
||||
PRM_TYPE_S = 0x18,
|
||||
PRM_ITEMNO_W = 6,
|
||||
PRM_ITEMNO_S = 0,
|
||||
|
||||
PRM_STICK_W = 0x01,
|
||||
PRM_STICK_S = 0x1F,
|
||||
PRM_SPEC_W = 6,
|
||||
PRM_SPEC_S = 8,
|
||||
|
||||
PRM_MOVEBG_W = 2,
|
||||
PRM_MOVEBG_S = 14,
|
||||
|
||||
PRM_ITEMSAVE_W = 7,
|
||||
PRM_ITEMSAVE_S = 16,
|
||||
|
||||
PRM_TYPE_W = 4,
|
||||
PRM_TYPE_S = 24,
|
||||
|
||||
PRM_CULL_W = 3,
|
||||
PRM_CULL_S = 28,
|
||||
|
||||
PRM_STICK_W = 1,
|
||||
PRM_STICK_S = 31,
|
||||
};
|
||||
|
||||
enum Type {
|
||||
TYPE_WATER_JUG = 0x2,
|
||||
TYPE_KUTANI = 0xE,
|
||||
};
|
||||
|
||||
struct Data_c {
|
||||
const Vec* get_particle_scale() const { return &m74; }
|
||||
|
||||
/* 0x00 */ f32 mGravity;
|
||||
/* 0x04 */ f32 m04;
|
||||
/* 0x08 */ f32 mAttnY;
|
||||
/* 0x0C */ f32 mModelScale;
|
||||
/* 0x10 */ u8 m10;
|
||||
/* 0x14 */ f32 m14;
|
||||
/* 0x18 */ f32 m18;
|
||||
/* 0x1C */ f32 m1C;
|
||||
/* 0x20 */ f32 m20;
|
||||
/* 0x24 */ f32 m24;
|
||||
/* 0x28 */ s16 m28;
|
||||
/* 0x2A */ s16 m2A;
|
||||
/* 0x2C */ s16 m2C;
|
||||
/* 0x30 */ f32 m30;
|
||||
/* 0x34 */ f32 m34;
|
||||
/* 0x38 */ f32 m38;
|
||||
/* 0x3C */ f32 m3C;
|
||||
/* 0x40 */ f32 m40;
|
||||
/* 0x44 */ f32 m44;
|
||||
/* 0x48 */ f32 m48;
|
||||
/* 0x4C */ f32 m4C;
|
||||
/* 0x50 */ f32 m50;
|
||||
/* 0x54 */ s16 m54;
|
||||
/* 0x56 */ s16 m56;
|
||||
/* 0x58 */ f32 m58;
|
||||
/* 0x5C */ f32 m5C;
|
||||
/* 0x60 */ u8 m60;
|
||||
/* 0x61 */ u8 m61;
|
||||
/* 0x62 */ u8 m62;
|
||||
/* 0x63 */ u8 m63;
|
||||
/* 0x64 */ u8 m64;
|
||||
/* 0x65 */ u8 m65;
|
||||
/* 0x68 */ DataFlag_e mFlag;
|
||||
/* 0x6C */ u16 m6C;
|
||||
/* 0x6E */ u8 m6E;
|
||||
/* 0x6F */ u8 mAcchCirRad;
|
||||
/* 0x70 */ u8 m70;
|
||||
/* 0x71 */ u8 mAcchRoofHeight;
|
||||
/* 0x72 */ u8 mAttnDist;
|
||||
/* 0x74 */ Vec m74;
|
||||
/* 0x80 */ u32 m80;
|
||||
/* 0x84 */ s32 mSoundID_Break;
|
||||
/* 0x88 */ s32 m88;
|
||||
/* 0x8C */ s32 mSoundID_FallLava;
|
||||
/* 0x90 */ s32 mSoundID_FallWater;
|
||||
/* 0x94 */ s32 mSoundID_Hit;
|
||||
/* 0x98 */ s16 mCullSphX_Move;
|
||||
/* 0x9A */ s16 mCullSphY_Move;
|
||||
/* 0x9C */ s16 mCullSphZ_Move;
|
||||
/* 0x9E */ s16 mCullSphR_Move;
|
||||
/* 0xA0 */ u8 mA0[0xA4 - 0xA0];
|
||||
/* 0xA4 */ s16 mCullSphX_Draw;
|
||||
/* 0xA6 */ s16 mCullSphY_Draw;
|
||||
/* 0xA8 */ s16 mCullSphZ_Draw;
|
||||
/* 0xAA */ s16 mCullSphR_Draw;
|
||||
/* 0xAC */ u8 mAC[0xB0 - 0xAC];
|
||||
/* 0xB0 */ f32 mB0;
|
||||
/* 0xB4 */ u8 mB4[0xB8 - 0xB4];
|
||||
/* 0xB8 */ u32 mHeapSize;
|
||||
/* 0xBC */ f32 mBC;
|
||||
/* 0xC0 */ f32 mC0;
|
||||
/* 0xC4 */ f32 mC4;
|
||||
/* 0xC8 */ f32 mC8;
|
||||
}; // size = 0xCC
|
||||
|
||||
struct AttrSpine_c {
|
||||
/* 0x00 */ f32 m00;
|
||||
/* 0x04 */ f32 m04;
|
||||
/* 0x08 */ f32 m08;
|
||||
/* 0x0C */ f32 m0C;
|
||||
/* 0x10 */ f32 m10;
|
||||
/* 0x14 */ f32 m14;
|
||||
/* 0x18 */ s16 m18;
|
||||
/* 0x1A */ s16 m1A;
|
||||
/* 0x1C */ s16 m1C;
|
||||
/* 0x1E */ s16 m1E;
|
||||
/* 0x20 */ f32 m20;
|
||||
/* 0x24 */ f32 m24;
|
||||
/* 0x28 */ f32 m28;
|
||||
/* 0x2C */ f32 m2C;
|
||||
/* 0x30 */ s16 m30;
|
||||
}; // size = 0x34
|
||||
|
||||
struct SpecBokoData {
|
||||
/* 0x00 */ s16 m00;
|
||||
/* 0x02 */ s16 m02;
|
||||
/* 0x04 */ f32 m04;
|
||||
/* 0x08 */ f32 m08;
|
||||
}; // size = 0xC
|
||||
|
||||
struct M7A0 {
|
||||
/* 0x00 */ fpc_ProcID m00;
|
||||
/* 0x04 */ u8 m04;
|
||||
/* 0x06 */ s16 m06;
|
||||
/* 0x08 */ s16 m08;
|
||||
/* 0x0C */ f32 m0C;
|
||||
/* 0x10 */ f32 m10;
|
||||
/* 0x14 */ f32 m14;
|
||||
/* 0x18 */ s8 m18;
|
||||
}; // size = 0x1C
|
||||
|
||||
int prm_get_type() const { return daObj::PrmAbstract(this, PRM_TYPE_W, PRM_TYPE_S); }
|
||||
bool prm_chk_type_kutani() const { return prm_get_type() == TYPE_KUTANI; }
|
||||
|
||||
void attrSpine() {}
|
||||
void data() const {}
|
||||
void data_spec_boko(int) {}
|
||||
void is_switch() const {}
|
||||
const AttrSpine_c& attrSpine() { return M_attrSpine; }
|
||||
const Data_c& data() const { return M_data[mType]; }
|
||||
const SpecBokoData& data_spec_boko(int index) { return M_data_spec_boko[index]; }
|
||||
BOOL is_switch() const {
|
||||
int sw = prmZ_get_swSave();
|
||||
return fopAcM_isSwitch(const_cast<Act_c*>(this), sw);
|
||||
}
|
||||
|
||||
bool pos_init() {
|
||||
if (m678 == 2) {
|
||||
current.pos = home.pos;
|
||||
@@ -50,18 +182,18 @@ namespace daTsubo {
|
||||
|
||||
mDoMtx_identity(mPoseMtx);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
void prmZ_get_swSave() const {}
|
||||
void prm_get_cull() const {}
|
||||
void prm_get_itemNo() const {}
|
||||
void prm_get_itemSave() const {}
|
||||
void prm_get_moveBg() const {}
|
||||
void prm_get_spec() const {}
|
||||
|
||||
int prm_get_stick() const {
|
||||
u8 prmZ_get_swSave() const { return mSwitchNo; }
|
||||
s32 prm_get_cull() const { return daObj::PrmAbstract(this, PRM_CULL_W, PRM_CULL_S); }
|
||||
s32 prm_get_itemNo() const { return daObj::PrmAbstract(this, PRM_ITEMNO_W, PRM_ITEMNO_S); }
|
||||
s32 prm_get_itemSave() const { return daObj::PrmAbstract(this, PRM_ITEMSAVE_W, PRM_ITEMSAVE_S); }
|
||||
bool prm_get_moveBg() const { return daObj::PrmAbstract(this, PRM_MOVEBG_W, PRM_MOVEBG_S) == 1u; }
|
||||
s32 prm_get_spec() const { return daObj::PrmAbstract(this, PRM_SPEC_W, PRM_SPEC_S); }
|
||||
|
||||
bool prm_get_stick() const {
|
||||
return daObj::PrmAbstract(this, PRM_STICK_W, PRM_STICK_S);
|
||||
}
|
||||
|
||||
@@ -78,21 +210,21 @@ namespace daTsubo {
|
||||
|
||||
void prm_make_skull() {}
|
||||
void prm_make_yw1() {}
|
||||
void prm_off_moveBg() {}
|
||||
void prm_off_stick() {}
|
||||
void prm_set_cull_non() {}
|
||||
void prm_off_moveBg() { fopAcM_SetParam(this, base.mParameters | 0xC000); }
|
||||
void prm_off_stick() { fopAcM_SetParam(this, base.mParameters & ~0x80000000); }
|
||||
void prm_set_cull_non() { fopAcM_SetParam(this, base.mParameters & ~0x70000000); }
|
||||
void prm_set_itemNo(int) {}
|
||||
void set_drop_spd_y0(float) {}
|
||||
void spec_chk_prm_boko() const {}
|
||||
bool spec_chk_prm_boko() const { return prm_get_spec() != 0x3F; }
|
||||
|
||||
void prmZ_init();
|
||||
void solidHeapCB(fopAc_ac_c*);
|
||||
void create_heap();
|
||||
static BOOL solidHeapCB(fopAc_ac_c*);
|
||||
bool create_heap();
|
||||
void create_init_cull();
|
||||
void create_init_cc();
|
||||
void create_init_bgc();
|
||||
cPhs_State _create();
|
||||
void _is_delete();
|
||||
bool _is_delete();
|
||||
bool _delete();
|
||||
void spec_make_boko(int);
|
||||
void spec_init();
|
||||
@@ -122,22 +254,22 @@ namespace daTsubo {
|
||||
void mode_sink();
|
||||
void mode_afl_init();
|
||||
void mode_afl();
|
||||
void mode_proc_call();
|
||||
bool mode_proc_call();
|
||||
void cull_set_draw();
|
||||
void cull_set_move();
|
||||
void damaged(int, cBgS_PolyInfo*, bool, const cXyz*);
|
||||
void damaged(int, cBgS_PolyInfo*);
|
||||
void damaged_lava();
|
||||
void damage_tg_acc();
|
||||
void damage_cc_proc();
|
||||
void damage_bg_proc();
|
||||
void damage_bg_proc_directly();
|
||||
void damage_kill_proc();
|
||||
bool damage_tg_acc();
|
||||
bool damage_cc_proc();
|
||||
bool damage_bg_proc();
|
||||
bool damage_bg_proc_directly();
|
||||
bool damage_kill_proc();
|
||||
void crr_pos(const cXyz&);
|
||||
void crr_pos_water();
|
||||
void crr_pos_lava();
|
||||
void water_tention();
|
||||
void reflect(cXyz*, const cBgS_PolyInfo&, float);
|
||||
static f32 reflect(cXyz*, const cBgS_PolyInfo&, float);
|
||||
void bound(float);
|
||||
void moment_small(const cXyz*);
|
||||
void moment_big(const cXyz*);
|
||||
@@ -186,9 +318,10 @@ namespace daTsubo {
|
||||
void eff_hit_lava_splash();
|
||||
void eff_kutani_set();
|
||||
void eff_kutani_init();
|
||||
void chk_sink_lava();
|
||||
void chk_sink_water();
|
||||
void chk_sinkdown_water();
|
||||
void bg_crr_lava();
|
||||
bool chk_sink_lava();
|
||||
bool chk_sink_water();
|
||||
bool chk_sinkdown_water();
|
||||
void calc_drop_param(float*, float*, float*) const;
|
||||
void calc_afl_param(float*, float*, float*) const;
|
||||
void se_fall_water();
|
||||
@@ -201,29 +334,48 @@ namespace daTsubo {
|
||||
void cam_lockoff() const;
|
||||
bool _execute();
|
||||
bool _draw();
|
||||
|
||||
#if VERSION == VERSION_DEMO
|
||||
static dBgS_ObjGndChk_Yogan M_bg_lava;
|
||||
#endif
|
||||
static fopAc_ac_c* M_spec_act[];
|
||||
static const char* const M_arcname[];
|
||||
static const dCcD_SrcCyl M_cyl_src;
|
||||
static const Data_c M_data[];
|
||||
static const SpecBokoData M_data_spec_boko[];
|
||||
static const AttrSpine_c M_attrSpine;
|
||||
|
||||
public:
|
||||
/* 0x290 */ request_of_phase_process_class mPhs;
|
||||
/* 0x290 */ request_of_phase_process_class mPhase;
|
||||
/* 0x298 */ J3DModel* mpModel;
|
||||
/* 0x29C */ u8 m29C[0x2A0 - 0x29C];
|
||||
/* 0x2A0 */ dBgS_Acch mAcch;
|
||||
/* 0x29C */ mDoExt_brkAnm* mpBrk;
|
||||
/* 0x2A0 */ dBgS_ObjAcch mAcch;
|
||||
/* 0x464 */ dBgS_AcchCir mAcchCir;
|
||||
/* 0x4A4 */ dBgS_GndChk mGndChk;
|
||||
/* 0x4F8 */ u32 m4F8;
|
||||
/* 0x4FC */ u32 m4FC;
|
||||
/* 0x500 */ u32 m500;
|
||||
/* 0x504 */ u8 m504[0x508 - 0x504];
|
||||
#if VERSION == VERSION_DEMO
|
||||
/* 0x638 */ dCcD_Stts mStts;
|
||||
/* 0x4F8 */ f32 m4F8;
|
||||
/* 0x508 */ dCcD_Cyl mCyl;
|
||||
#else
|
||||
/* 0x4A4 */ dBgS_ObjGndChk_Yogan mGndChkYogan;
|
||||
/* 0x4F8 */ f32 m4F8;
|
||||
/* 0x4FC */ f32 m4FC;
|
||||
/* 0x500 */ f32 m500;
|
||||
/* 0x504 */ bool m504;
|
||||
/* 0x505 */ bool m505;
|
||||
/* 0x508 */ dCcD_Cyl mCyl;
|
||||
/* 0x638 */ dCcD_Stts mStts;
|
||||
/* 0x674 */ int mType;
|
||||
/* 0x678 */ int m678;
|
||||
#endif
|
||||
/* 0x674 */ s32 mType;
|
||||
/* 0x678 */ s32 m678;
|
||||
/* 0x67C */ u16 mSwitchNo;
|
||||
/* 0x67E */ u8 m67E[0x67F - 0x67E];
|
||||
/* 0x67E */ u8 m67E;
|
||||
/* 0x67F */ u8 m67F;
|
||||
/* 0x680 */ u8 m680[0x682 - 0x680];
|
||||
/* 0x680 */ u8 m680;
|
||||
/* 0x681 */ s8 m681;
|
||||
/* 0x682 */ u8 m682;
|
||||
/* 0x683 */ u8 m683;
|
||||
/* 0x684 */ u8 m684[0x686 - 0x684];
|
||||
/* 0x684 */ u8 m684;
|
||||
/* 0x685 */ bool m685;
|
||||
/* 0x686 */ u8 m686;
|
||||
/* 0x687 */ u8 m687[0x688 - 0x687];
|
||||
/* 0x688 */ cSAngle m688;
|
||||
@@ -243,12 +395,20 @@ namespace daTsubo {
|
||||
/* 0x70C */ dPa_followEcallBack m70C[3];
|
||||
/* 0x748 */ dPa_followEcallBack m748[3];
|
||||
/* 0x784 */ dPa_followEcallBack m784;
|
||||
/* 0x798 */ u8 m798[0x800 - 0x798];
|
||||
/* 0x798 */ u8 m798;
|
||||
/* 0x799 */ u8 m799[0x7A0 - 0x799];
|
||||
/* 0x7A0 */ M7A0 m7A0[3];
|
||||
/* 0x7F4 */ cXyz m7F4;
|
||||
/* 0x800 */ s16 m800;
|
||||
/* 0x802 */ u8 m802[0x814 - 0x802];
|
||||
/* 0x802 */ s16 m802;
|
||||
/* 0x804 */ s16 m804;
|
||||
/* 0x806 */ s16 m806;
|
||||
/* 0x808 */ f32 m808;
|
||||
/* 0x80C */ f32 m80C;
|
||||
/* 0x810 */ u8 m810;
|
||||
/* 0x811 */ u8 m811;
|
||||
/* 0x814 */ cXyz m814;
|
||||
/* 0x820 */ u8 m820[0xF00 - 0x820];
|
||||
}; // Size: 0xF00
|
||||
}; // Size: 0x820
|
||||
|
||||
namespace Method {
|
||||
cPhs_State Create(void*);
|
||||
|
||||
@@ -525,6 +525,8 @@ public:
|
||||
static MtxP getWindViewMatrix() { return mWindViewMatrix; }
|
||||
static Mtx mWindViewMatrix;
|
||||
|
||||
static dPa_selectTexEcallBack* getTsuboSelectTexEcallBack(int index) { return &mTsubo[index]; }
|
||||
|
||||
/* 0x0000 */ JKRSolidHeap* mHeap;
|
||||
/* 0x0004 */ JPAResourceManager* mCommonResMng;
|
||||
/* 0x0008 */ dPa_modelControl_c* mModelControl;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#define ARRAY_SIZE(o) (sizeof(o) / sizeof(o[0]))
|
||||
#define ARRAY_SSIZE(o) ((s32)(sizeof(o) / sizeof(o[0])))
|
||||
|
||||
// Align X to the previous N bytes (N must be power of two)
|
||||
#define ALIGN_PREV(X, N) ((X) & ~((N)-1))
|
||||
|
||||
@@ -277,8 +277,8 @@ void Act_c::mode_norm_init() {
|
||||
/* 00000DD8-00000FAC .text mode_norm__Q29daObjTide5Act_cFv */
|
||||
void Act_c::mode_norm() {
|
||||
bool uVar1;
|
||||
daTagWaterlevel::State_e uVar3;
|
||||
f32 fVar2;
|
||||
daTagWaterlevel::State_e uVar3;
|
||||
|
||||
fVar2 = daTagWaterlevel::Act_c::get_now();
|
||||
uVar3 = daTagWaterlevel::Act_c::get_state();
|
||||
|
||||
+3289
-250
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user