work on d_a_spinner

This commit is contained in:
Trueffeloot
2023-08-05 22:58:21 +02:00
parent 044f4753be
commit 166d6fc0e5
17 changed files with 209 additions and 786 deletions
+186 -442
View File
@@ -3,287 +3,15 @@
// Translation Unit: d_a_spinner
//
// #include "rel/d/a/d_a_spinner/d_a_spinner.h"
#include "rel/d/a/d_a_spinner/d_a_spinner.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct csXyz {};
struct Vec {};
struct cXyz {
/* 80266B34 */ void operator-(Vec const&) const;
/* 80266F48 */ void normalizeZP();
/* 80267128 */ void atan2sX_Z() const;
/* 80267150 */ void atan2sY_XZ() const;
/* 804D1E4C */ ~cXyz();
};
struct mDoMtx_stack_c {
/* 8000CD64 */ void transS(cXyz const&);
/* 8000CF44 */ void ZXYrotM(csXyz const&);
static u8 now[48];
};
struct J3DModelData {};
struct J3DAnmTransform {};
struct mDoExt_bckAnm {
/* 8000D7DC */ void init(J3DAnmTransform*, int, int, f32, s16, s16, bool);
/* 8000D9CC */ void entry(J3DModelData*, f32);
};
struct mDoExt_baseAnm {
/* 8000D428 */ void play();
};
struct mDoCPd_c {
static u8 m_cpadInfo[256];
};
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
/* 80018C8C */ ~fopAc_ac_c();
};
struct daSpinner_c {
/* 804D198C */ void createHeap();
/* 804D1A70 */ void create();
/* 804D1FD0 */ ~daSpinner_c();
/* 804D21E0 */ void setRoomInfo();
/* 804D2278 */ void setMatrix();
/* 804D2320 */ void setEffect();
/* 804D25F4 */ void posMove();
/* 804D3090 */ void setReflectAngle();
/* 804D3174 */ void setWallHit(s16, u32);
/* 804D34B0 */ void setAnm();
/* 804D3618 */ void setNextPathNum();
/* 804D3694 */ void getPathNextPos();
/* 804D36F4 */ void checkLineWallHit(cXyz*, cXyz*);
/* 804D3774 */ void checkPathMove();
/* 804D3D60 */ void setSpreadEffect();
/* 804D3F14 */ void clearSpreadEffect();
/* 804D3F8C */ void execute();
/* 804D4BB4 */ void draw();
};
struct J3DModel {};
struct daMirror_c {
/* 8003194C */ void entry(J3DModel*);
};
struct daAlink_c {
/* 8009D884 */ void getAlinkArcName();
/* 8009DA60 */ void checkStageName(char const*);
/* 8010D93C */ void getSpinnerGravity() const;
/* 8010D94C */ void getSpinnerMaxFallSpeed() const;
/* 8010D95C */ void getSpinnerJumpRate() const;
/* 8010D96C */ void getSpinnerRideMoveTime();
/* 8010D9B0 */ void getSpinnerRideSpeedF();
/* 8010D9F4 */ void getSpinnerRideDecSpeedMax() const;
/* 8010DA04 */ void getSpinnerRideDecSpeedMin() const;
/* 8010DA14 */ void getSpinnerRideDecSpeedRate() const;
/* 8010DA24 */ void getSpinnerRideRotAngleMax() const;
/* 8010DA34 */ void getSpinnerRideRotAngleMin() const;
};
struct dVibration_c {
/* 8006FA24 */ void StartShock(int, int, cXyz);
};
struct dKy_tevstr_c {};
struct dScnKy_env_light_c {
/* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*);
/* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*);
};
struct dRes_info_c {};
struct dRes_control_c {
/* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
};
struct dPa_levelEcallBack {};
struct cBgS_PolyInfo {
/* 802680B0 */ ~cBgS_PolyInfo();
};
struct _GXColor {};
struct dPa_control_c {
struct level_c {
/* 8004B918 */ void getEmitter(u32);
};
/* 8004C218 */ void setHitMark(u16, fopAc_ac_c*, cXyz const*, csXyz const*, cXyz const*, u32);
/* 8004D068 */ void setPoly(u16, cBgS_PolyInfo&, cXyz const*, dKy_tevstr_c const*, csXyz const*,
cXyz const*, int, dPa_levelEcallBack*, s8, cXyz const*);
/* 8004D4CC */ void set(u32, u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*,
cXyz const*, u8, dPa_levelEcallBack*, s8, _GXColor const*,
_GXColor const*, cXyz const*, f32);
};
struct dBgS {
/* 80074BE8 */ void GetPolyColor(cBgS_PolyInfo const&);
/* 80074CBC */ void GetSpecialCode(cBgS_PolyInfo const&);
/* 80074E50 */ void GetPolyAtt0(cBgS_PolyInfo const&);
/* 80074EF0 */ void GetGroundCode(cBgS_PolyInfo const&);
/* 80075100 */ void GetRoomId(cBgS_PolyInfo const&);
};
struct dBgS_AcchCir {
/* 80075EAC */ dBgS_AcchCir();
/* 80075F40 */ void SetWallR(f32);
/* 80075F58 */ void SetWall(f32, f32);
/* 804D1EF8 */ ~dBgS_AcchCir();
};
struct dBgS_Acch {
/* 80075F94 */ ~dBgS_Acch();
/* 800760A0 */ dBgS_Acch();
/* 80076288 */ void Set(fopAc_ac_c*, int, dBgS_AcchCir*);
/* 80076AAC */ void CrrPos(dBgS&);
};
struct dPaPo_c {
/* 80050C9C */ void init(dBgS_Acch*, f32, f32);
/* 80051008 */ void setEffectCenter(dKy_tevstr_c const*, cXyz const*, u32, u32, cXyz const*,
csXyz const*, cXyz const*, s8, f32, f32);
};
struct dDlst_shadowControl_c {
static u8 mSimpleTexObj[32];
};
struct cCcD_Obj {};
struct dCcMassS_Mng {
/* 80085D98 */ void Set(cCcD_Obj*, u8);
};
struct dCcD_Stts {
/* 80083860 */ void Init(int, int, fopAc_ac_c*);
};
struct dCcD_SrcCyl {};
struct dCcD_GStts {
/* 80083760 */ dCcD_GStts();
/* 804D1DF0 */ ~dCcD_GStts();
};
struct dCcD_GObjInf {
/* 80083A28 */ dCcD_GObjInf();
/* 800840E4 */ ~dCcD_GObjInf();
/* 800842C0 */ void ChkAtHit();
/* 800843A8 */ void GetAtHitGObj();
};
struct dCcD_GAtTgCoCommonBase {
/* 80083688 */ void GetAc();
};
struct dCcD_Cyl {
/* 800848B4 */ void Set(dCcD_SrcCyl const&);
/* 80084908 */ void StartCAt(cXyz&);
/* 80084954 */ void MoveCAt(cXyz&);
};
struct dBgS_PolyPassChk {
/* 80078E98 */ void SetLink();
};
struct dBgS_LinkLinChk {
/* 80078030 */ dBgS_LinkLinChk();
/* 8007808C */ ~dBgS_LinkLinChk();
};
struct dBgS_LinkAcch {
/* 804D1E88 */ ~dBgS_LinkAcch();
};
struct dBgS_LinChk {
/* 80077D64 */ void Set(cXyz const*, cXyz const*, fopAc_ac_c const*);
};
struct camera_class {};
struct cM3dGPla {
/* 804D3468 */ ~cM3dGPla();
};
struct cM3dGLin {
/* 8026F31C */ void SetStartEnd(Vec const&, Vec const&);
/* 804D3048 */ ~cM3dGLin();
};
struct cM3dGCyl {
/* 8026F200 */ void SetR(f32);
/* 804D1D60 */ ~cM3dGCyl();
};
struct cM3dGCir {
/* 8026EF18 */ ~cM3dGCir();
};
struct cM3dGAab {
/* 804D1DA8 */ ~cM3dGAab();
};
struct cCcS {
/* 80264BA8 */ void Set(cCcD_Obj*);
};
struct cCcD_GStts {
/* 804D4D28 */ ~cCcD_GStts();
};
struct cBgS_LinChk {};
struct cBgS {
/* 800743B4 */ void LineCross(cBgS_LinChk*);
/* 80074744 */ void GetTriPla(cBgS_PolyInfo const&, cM3dGPla*) const;
};
struct _GXTexObj {};
struct Z2SoundObjSimple {
/* 802BE844 */ Z2SoundObjSimple();
};
struct Z2SoundObjBase {
/* 802BDF48 */ ~Z2SoundObjBase();
/* 802BDFF8 */ void deleteObject();
};
struct Z2CreatureLink {
/* 802C4814 */ void startHitItemSE(u32, u32, Z2SoundObjBase*, f32);
};
struct JMath {
static u8 sincosTable_[65536];
};
struct JGeometry {
template <typename A1>
struct TVec3 {};
/* TVec3<f32> */
struct TVec3__template0 {};
};
struct J3DFrameCtrl {
/* 803283FC */ void init(s16);
/* 804D1F68 */ ~J3DFrameCtrl();
};
#include "d/bg/d_bg_w.h"
#include "d/cc/d_cc_d.h"
#include "d/a/d_a_alink.h"
#include "m_Do/m_Do_controller_pad.h"
#include "rel/d/a/d_a_mirror/d_a_mirror.h"
#include "SSystem/SComponent/c_math.h"
//
// Forward References:
@@ -432,13 +160,6 @@ extern "C" void __ct__16Z2SoundObjSimpleFv();
extern "C" void startHitItemSE__14Z2CreatureLinkFUlUlP14Z2SoundObjBasef();
extern "C" void __dl__FPv();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void PSMTXCopy();
extern "C" void PSMTXTrans();
extern "C" void PSMTXMultVec();
extern "C" void PSVECAdd();
extern "C" void PSVECScale();
extern "C" void PSVECSquareMag();
extern "C" void PSVECSquareDistance();
extern "C" void __destroy_arr();
extern "C" void __construct_array();
extern "C" void _savegpr_21();
@@ -452,10 +173,7 @@ extern "C" void _restgpr_24();
extern "C" void _restgpr_25();
extern "C" void _restgpr_26();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void abs();
extern "C" extern void* g_fopAc_Method[8];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" void _restgpr_29();;
extern "C" extern void* __vt__8dCcD_Cyl[36];
extern "C" extern void* __vt__9dCcD_Stts[11];
extern "C" extern void* __vt__12cCcD_CylAttr[25];
@@ -464,12 +182,8 @@ extern "C" extern void* __vt__9cCcD_Stts[8];
extern "C" extern void* __vt__16Z2SoundObjSimple[8];
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
extern "C" extern u8 g_env_light[4880];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" extern u32 __float_nan;
extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
extern "C" void __register_global_object();
//
@@ -488,24 +202,32 @@ SECTION_RODATA static f32 const lit_4168 = 1.0f;
COMPILER_STRIP_GATE(0x804D4D9C, &lit_4168);
/* 804D198C-804D1A50 0000EC 00C4+00 1/1 0/0 0/0 .text createHeap__11daSpinner_cFv */
#ifdef NONMATCHING
// Matches with literals
int daSpinner_c::createHeap() {
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x21);
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
if (mpModel == NULL) {
return 0;
}
field_0x588 = (J3DAnmTransform*)dComIfG_getObjectRes(daAlink_c::getAlinkArcName(), 0x16);
return mBck.init(field_0x588, 1, 2, 1.0f, 0, -1, false) != 0 ? 1 : 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSpinner_c::createHeap() {
asm int daSpinner_c::createHeap() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/createHeap__11daSpinner_cFv.s"
}
#pragma pop
#endif
/* 804D1A50-804D1A70 0001B0 0020+00 1/1 0/0 0/0 .text daSpinner_createHeap__FP10fopAc_ac_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daSpinner_createHeap(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_createHeap__FP10fopAc_ac_c.s"
static int daSpinner_createHeap(fopAc_ac_c* i_this) {
return static_cast<daSpinner_c*>(i_this)->createHeap();
}
#pragma pop
/* ############################################################################################## */
/* 804D4DA0-804D4DA4 000010 0004+00 0/1 0/0 0/0 .rodata @4241 */
@@ -577,12 +299,18 @@ COMPILER_STRIP_GATE(0x804D4DC0, &lit_4249);
#pragma pop
/* 804D4EA8-804D4EEC 000000 0044+00 1/1 0/0 0/0 .data l_cylSrc */
SECTION_DATA static u8 l_cylSrc[68] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69,
0x13, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x42, 0xAA, 0x00, 0x00,
static dCcD_SrcCyl l_cylSrc = {
{
{0, {{AT_TYPE_SPINNER, 1, 0x12}, {0, 0}, 0x69}},
{dCcD_SE_SPINNER, 1, 0, 0, {0}},
{dCcD_SE_NONE, 0, 0, 0, {0}},
{0},
},
{
{0.0f, 0.0f, 0.0f},
40.0f,
85.0f,
}
};
/* 804D4EEC-804D4F0C -00001 0020+00 1/0 0/0 0/0 .data l_daSpinner_Method */
@@ -680,7 +408,7 @@ SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSpinner_c::create() {
asm int daSpinner_c::create() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/create__11daSpinner_cFv.s"
}
@@ -690,7 +418,8 @@ asm void daSpinner_c::create() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cM3dGCyl::~cM3dGCyl() {
// cM3dGCyl::~cM3dGCyl()
extern "C" asm void __dt__8cM3dGCylFv() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__8cM3dGCylFv.s"
}
@@ -700,7 +429,8 @@ asm cM3dGCyl::~cM3dGCyl() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cM3dGAab::~cM3dGAab() {
// cM3dGAab::~cM3dGAab()
extern "C" asm void __dt__8cM3dGAabFv() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__8cM3dGAabFv.s"
}
@@ -710,7 +440,8 @@ asm cM3dGAab::~cM3dGAab() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dCcD_GStts::~dCcD_GStts() {
// dCcD_GStts::~dCcD_GStts()
extern "C" asm void __dt__10dCcD_GSttsFv() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__10dCcD_GSttsFv.s"
}
@@ -720,7 +451,8 @@ asm dCcD_GStts::~dCcD_GStts() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cXyz::~cXyz() {
// cXyz::~cXyz()
extern "C" asm void __dt__4cXyzFv() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__4cXyzFv.s"
}
@@ -730,7 +462,8 @@ asm cXyz::~cXyz() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dBgS_LinkAcch::~dBgS_LinkAcch() {
// dBgS_LinkAcch::~dBgS_LinkAcch()
extern "C" asm void __dt__13dBgS_LinkAcchFv() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__13dBgS_LinkAcchFv.s"
}
@@ -740,7 +473,8 @@ asm dBgS_LinkAcch::~dBgS_LinkAcch() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dBgS_AcchCir::~dBgS_AcchCir() {
// dBgS_AcchCir::~dBgS_AcchCir()
extern "C" asm void __dt__12dBgS_AcchCirFv() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__12dBgS_AcchCirFv.s"
}
@@ -750,21 +484,17 @@ asm dBgS_AcchCir::~dBgS_AcchCir() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DFrameCtrl::~J3DFrameCtrl() {
// J3DFrameCtrl::~J3DFrameCtrl()
extern "C" asm void __dt__12J3DFrameCtrlFv() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__12J3DFrameCtrlFv.s"
}
#pragma pop
/* 804D1FB0-804D1FD0 000710 0020+00 1/0 0/0 0/0 .text daSpinner_Create__FP10fopAc_ac_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daSpinner_Create(fopAc_ac_c* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Create__FP10fopAc_ac_c.s"
static int daSpinner_Create(fopAc_ac_c* i_this) {
return static_cast<daSpinner_c*>(i_this)->create();
}
#pragma pop
/* 804D1FD0-804D21B8 000730 01E8+00 1/1 0/0 0/0 .text __dt__11daSpinner_cFv */
#pragma push
@@ -778,44 +508,36 @@ asm daSpinner_c::~daSpinner_c() {
/* 804D21B8-804D21E0 000918 0028+00 1/0 0/0 0/0 .text daSpinner_Delete__FP11daSpinner_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daSpinner_Delete(daSpinner_c* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Delete__FP11daSpinner_c.s"
static int daSpinner_Delete(daSpinner_c* i_this) {
i_this->~daSpinner_c();
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 804D4DC8-804D4DCC 000038 0004+00 1/1 0/0 0/0 .rodata @4409 */
SECTION_RODATA static f32 const lit_4409 = -1000000000.0f;
COMPILER_STRIP_GATE(0x804D4DC8, &lit_4409);
/* 804D21E0-804D2278 000940 0098+00 2/2 0/0 0/0 .text setRoomInfo__11daSpinner_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSpinner_c::setRoomInfo() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/setRoomInfo__11daSpinner_cFv.s"
void daSpinner_c::setRoomInfo() {
int roomNo;
if (mAcch.GetGroundH() != -1000000000.0f) {
roomNo = dComIfG_Bgsp().GetRoomId(mAcch.m_gnd);
mTevStr.mEnvrIdxOverride = dComIfG_Bgsp().GetPolyColor(mAcch.m_gnd);
} else {
roomNo = dComIfGp_roomControl_getStayNo();
}
mTevStr.mRoomNo = roomNo;
field_0xa6e = dComIfGp_getReverb(roomNo);
mStts.SetRoomId(roomNo);
fopAcM_SetRoomNo(this, roomNo);
}
#pragma pop
/* ############################################################################################## */
/* 804D4DCC-804D4DD0 00003C 0004+00 1/1 0/0 0/0 .rodata @4429 */
SECTION_RODATA static f32 const lit_4429 = 90.0f;
COMPILER_STRIP_GATE(0x804D4DCC, &lit_4429);
/* 804D2278-804D2320 0009D8 00A8+00 2/2 0/0 0/0 .text setMatrix__11daSpinner_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSpinner_c::setMatrix() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/setMatrix__11daSpinner_cFv.s"
void daSpinner_c::setMatrix() {
mDoMtx_stack_c::transS(current.pos.x, current.pos.y + field_0xa84 + 90.0f, current.pos.z);
mDoMtx_stack_c::ZXYrotM(shape_angle);
mDoMtx_stack_c::YrotM(field_0xa7e);
PSMTXCopy(mDoMtx_stack_c::now, mpModel->mBaseTransformMtx);
mBck.entry(mpModel->getModelData());
mpModel->calc();
}
#pragma pop
/* ############################################################################################## */
/* 804D4DD0-804D4DD4 000040 0004+00 0/1 0/0 0/0 .rodata @4591 */
@@ -1038,7 +760,7 @@ COMPILER_STRIP_GATE(0x804D4E0C, &lit_4938);
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSpinner_c::posMove() {
asm int daSpinner_c::posMove() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/posMove__11daSpinner_cFv.s"
}
@@ -1048,21 +770,35 @@ asm void daSpinner_c::posMove() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cM3dGLin::~cM3dGLin() {
// cM3dGLin::~cM3dGLin()
extern "C" asm void __dt__8cM3dGLinFv() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__8cM3dGLinFv.s"
}
#pragma pop
/* 804D3090-804D3174 0017F0 00E4+00 3/3 0/0 0/0 .text setReflectAngle__11daSpinner_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSpinner_c::setReflectAngle() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/setReflectAngle__11daSpinner_cFv.s"
void daSpinner_c::setReflectAngle() {
if (mpPathMove != NULL) {
current.angle.y += 0x8000;
current.angle.x *= -1;
setNextPathNum();
field_0xa73 *= -1;
field_0xa76 *= -1;
} else {
s16 angle = current.angle.y - field_0xa80;
int l_abs = abs(angle);
if (l_abs > 0x4800) {
current.angle.y = (field_0xa80 << 1) - (current.angle.y + 0x8000);
}
else if (angle > 0x3800) {
current.angle.y = field_0xa80 + 0x3800;
}
else if (angle < -0x3800) {
current.angle.y = field_0xa80 - 0x3800;
}
}
}
#pragma pop
/* ############################################################################################## */
/* 804D4E10-804D4E14 000080 0004+00 0/1 0/0 0/0 .rodata @5053 */
@@ -1086,7 +822,8 @@ asm void daSpinner_c::setWallHit(s16 param_0, u32 param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cM3dGPla::~cM3dGPla() {
// cM3dGPla::~cM3dGPla()
extern "C" asm void __dt__8cM3dGPlaFv() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__8cM3dGPlaFv.s"
}
@@ -1101,6 +838,31 @@ COMPILER_STRIP_GATE(0x804D4E14, &lit_5091);
#pragma pop
/* 804D34B0-804D3618 001C10 0168+00 1/1 0/0 0/0 .text setAnm__11daSpinner_cFv */
#ifdef NONMATCHING
// Matches with literals
void daSpinner_c::setAnm() {
if (mBck.isStop() && field_0xa75 != 0) {
mBck.init(field_0x588, 1, -1, 1.0f, 0, -1, true);
daAlink_getAlinkActorClass()->seStartOnlyReverb(Z2SE_AL_SPINNER_EXTEND);
dComIfGp_getVibration().StartShock(2, 1, cXyz(0.0f, 1.0f, 0.0f));
if (mJumpFlg == 0) {
speed.y = 20.0f;
mJumpFlg = 1;
mButtonJump = 1;
}
if (mpPathMove != NULL) {
s16 targetAngle = cLib_targetAngleY(&mpPathMove->m_points[field_0xa72].m_position, &current.pos);
if (s16(targetAngle - current.angle.y) > 0) {
current.angle.y += 0x3000;
} else {
current.angle.y -= 0x3000;
}
clearPathMove();
mAcch.ClrWallHit();
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1109,98 +871,92 @@ asm void daSpinner_c::setAnm() {
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/setAnm__11daSpinner_cFv.s"
}
#pragma pop
#endif
/* 804D3618-804D3694 001D78 007C+00 2/2 0/0 0/0 .text setNextPathNum__11daSpinner_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSpinner_c::setNextPathNum() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/setNextPathNum__11daSpinner_cFv.s"
int daSpinner_c::setNextPathNum() {
if (field_0xa72 == 0 && field_0xa73 == -1) {
field_0xa72 = mpPathMove->m_num - 1;
} else if (field_0xa72 == mpPathMove->m_num - 1 && field_0xa73 == 1) {
field_0xa72 = 0;
} else {
field_0xa72 += field_0xa73;
return 1;
}
return 0;
}
#pragma pop
/* 804D3694-804D36F4 001DF4 0060+00 1/1 0/0 0/0 .text getPathNextPos__11daSpinner_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSpinner_c::getPathNextPos() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/getPathNextPos__11daSpinner_cFv.s"
cXyz* daSpinner_c::getPathNextPos() {
s32 add = field_0xa72 + field_0xa73;
if (add < 0) {
return &(mpPathMove->m_points + mpPathMove->m_num - 1)->m_position;
}
if (add >= mpPathMove->m_num) {
return &mpPathMove->m_points->m_position;
}
return &mpPathMove->m_points[add].m_position;
}
#pragma pop
/* ############################################################################################## */
/* 804D4EA0-804D4EA0 000110 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_804D4EA0 = "D_MN10A";
#pragma pop
/* 804D36F4-804D3774 001E54 0080+00 1/1 0/0 0/0 .text checkLineWallHit__11daSpinner_cFP4cXyzP4cXyz
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSpinner_c::checkLineWallHit(cXyz* param_0, cXyz* param_1) {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/checkLineWallHit__11daSpinner_cFP4cXyzP4cXyz.s"
int daSpinner_c::checkLineWallHit(cXyz* i_start, cXyz* i_end) {
mLinChk.Set(i_start, i_end, this);
if (dComIfG_Bgsp().LineCross(&mLinChk) != 0) {
if (dBgS_CheckBWallPoly(mLinChk) != 0 || daAlink_c::checkStageName("D_MN10A") != 0) {
return 1;
}
}
return 0;
}
#pragma pop
/* ############################################################################################## */
/* 804D4E18-804D4E24 000088 000C+00 0/1 0/0 0/0 .rodata sideCheckVec0$5143 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const sideCheckVec0[12] = {
0x41, 0xF0, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00,
static const Vec sideCheckVec0 = {
30.0f, 10.0f, 5.0f,
};
COMPILER_STRIP_GATE(0x804D4E18, &sideCheckVec0);
#pragma pop
/* 804D4E24-804D4E30 000094 000C+00 0/1 0/0 0/0 .rodata sideCheckVec1$5144 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const sideCheckVec1[12] = {
0xC1, 0xF0, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00,
static const Vec sideCheckVec1 = {
-30.0f, 10.0f, 5.0f,
};
COMPILER_STRIP_GATE(0x804D4E24, &sideCheckVec1);
#pragma pop
/* 804D4E30-804D4E3C 0000A0 000C+00 0/1 0/0 0/0 .rodata initSide0$5145 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const initSide0[12] = {
0x42, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
static const Vec initSide0 = {
53.0f, 0.0f, 0.0f,
};
COMPILER_STRIP_GATE(0x804D4E30, &initSide0);
#pragma pop
/* 804D4E3C-804D4E48 0000AC 000C+00 0/1 0/0 0/0 .rodata initSide1$5146 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const initSide1[12] = {
0xC2, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
static const Vec initSide1 = {
-53.0f, 0.0f, 0.0f,
};
COMPILER_STRIP_GATE(0x804D4E3C, &initSide1);
#pragma pop
/* 804D4E48-804D4E54 0000B8 000C+00 0/1 0/0 0/0 .rodata initSideOld0$5147 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const initSideOld0[12] = {
0x42, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
static const Vec initSideOld0 = {
78.0f, 0.0f, 0.0f,
};
COMPILER_STRIP_GATE(0x804D4E48, &initSideOld0);
#pragma pop
/* 804D4E54-804D4E60 0000C4 000C+00 0/1 0/0 0/0 .rodata initSideOld1$5148 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const initSideOld1[12] = {
0xC2, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
static const Vec initSideOld1 = {
-78.0f, 0.0f, 0.0f,
};
COMPILER_STRIP_GATE(0x804D4E54, &initSideOld1);
#pragma pop
/* 804D4E60-804D4E68 0000D0 0008+00 0/1 0/0 0/0 .rodata @5295 */
@@ -1216,23 +972,20 @@ COMPILER_STRIP_GATE(0x804D4E60, &lit_5295);
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSpinner_c::checkPathMove() {
asm int daSpinner_c::checkPathMove() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/checkPathMove__11daSpinner_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 804D4E68-804D4E6C 0000D8 0004+00 0/1 0/0 0/0 .rodata effName$5299 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const effName[4] = {
0x08,
0xC5,
0x08,
0xC6,
static const u16 effName[2] = {
2245,
2246,
};
COMPILER_STRIP_GATE(0x804D4E68, &effName);
#pragma pop
/* 804D4E6C-804D4E70 0000DC 0004+00 0/1 0/0 0/0 .rodata @5361 */
@@ -1254,14 +1007,14 @@ asm void daSpinner_c::setSpreadEffect() {
/* 804D3F14-804D3F8C 002674 0078+00 2/2 0/0 0/0 .text clearSpreadEffect__11daSpinner_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSpinner_c::clearSpreadEffect() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/clearSpreadEffect__11daSpinner_cFv.s"
void daSpinner_c::clearSpreadEffect() {
for (int i = 0; i < 2; i++) {
JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0xa8c[i]);
if (emitter != NULL) {
emitter->stopDrawParticle();
}
}
}
#pragma pop
/* ############################################################################################## */
/* 804D4E70-804D4E74 0000E0 0004+00 0/1 0/0 0/0 .rodata @5671 */
@@ -1338,7 +1091,7 @@ COMPILER_STRIP_GATE(0x804D4E94, &lit_5680);
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSpinner_c::execute() {
asm int daSpinner_c::execute() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/execute__11daSpinner_cFv.s"
}
@@ -1346,14 +1099,9 @@ asm void daSpinner_c::execute() {
/* 804D4B94-804D4BB4 0032F4 0020+00 1/0 0/0 0/0 .text daSpinner_Execute__FP11daSpinner_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daSpinner_Execute(daSpinner_c* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Execute__FP11daSpinner_c.s"
static int daSpinner_Execute(daSpinner_c* i_this) {
return i_this->execute();
}
#pragma pop
/* ############################################################################################## */
/* 804D4E98-804D4E9C 000108 0004+00 0/1 0/0 0/0 .rodata @5723 */
@@ -1374,27 +1122,23 @@ COMPILER_STRIP_GATE(0x804D4E9C, &lit_5724);
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daSpinner_c::draw() {
asm int daSpinner_c::draw() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/draw__11daSpinner_cFv.s"
}
#pragma pop
/* 804D4D08-804D4D28 003468 0020+00 1/0 0/0 0/0 .text daSpinner_Draw__FP11daSpinner_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daSpinner_Draw(daSpinner_c* param_0) {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/daSpinner_Draw__FP11daSpinner_c.s"
static int daSpinner_Draw(daSpinner_c* i_this) {
return i_this->draw();
}
#pragma pop
/* 804D4D28-804D4D70 003488 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cCcD_GStts::~cCcD_GStts() {
// cCcD_GStts::~cCcD_GStts()
extern "C" asm void __dt__10cCcD_GSttsFv() {
nofralloc
#include "asm/rel/d/a/d_a_spinner/d_a_spinner/__dt__10cCcD_GSttsFv.s"
}