mirror of
https://github.com/zeldaret/ss
synced 2026-06-01 01:39:17 -04:00
progress on d_a_obj_ivy_rope (#109)
* init * couple more funcs * progress * smol progress * smol progress 2 * Dont get your hopes up, I just had some lingering things :P * fix merge
This commit is contained in:
@@ -17,3 +17,6 @@ REL/global_destructor_chain.c:
|
||||
REL/d/a/obj/d_a_obj_ivy_rope.cpp:
|
||||
.text start:0x000000F0 end:0x0000F2E8 align:16
|
||||
.ctors start:0x00000000 end:0x00000004
|
||||
.rodata start:0x00000000 end:0x00000310
|
||||
.data start:0x00000000 end:0x000005D4
|
||||
.bss start:0x00000008 end:0x000002A0
|
||||
|
||||
@@ -3,16 +3,16 @@ _epilog = .text:0x00000030; // type:function size:0x2C scope:global
|
||||
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
__register_global_object = .text:0x00000070; // type:function size:0x1C scope:global
|
||||
__destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global
|
||||
fn_256_F0 = .text:0x000000F0; // type:function size:0x40
|
||||
__dt__7mVec3_cFv = .text:0x000000F0; // type:function size:0x40
|
||||
dAcOivyRope_c_classInit__Fv = .text:0x00000130; // type:function size:0x22C
|
||||
fn_256_360 = .text:0x00000360; // type:function size:0x58
|
||||
__dt__15dShadowCircle_cFv = .text:0x00000360; // type:function size:0x58
|
||||
__dt__26sFState_c<13dAcOivyRope_c>Fv = .text:0x000003C0; // type:function size:0x58
|
||||
__dt__29sFStateFct_c<13dAcOivyRope_c>Fv = .text:0x00000420; // type:function size:0x6C
|
||||
__dt__82sStateMgr_c<13dAcOivyRope_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000490; // type:function size:0xA0
|
||||
__dt__52sFStateMgr_c<13dAcOivyRope_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000530; // type:function size:0xA4
|
||||
fn_256_5E0 = .text:0x000005E0; // type:function size:0x4
|
||||
__ct__7mVec3_cFv = .text:0x000005E0; // type:function size:0x4 scope:weak
|
||||
__dt__13dAcOivyRope_cFv = .text:0x000005F0; // type:function size:0x1F4
|
||||
AcOivyRope__initTightRope = .text:0x000007F0; // type:function size:0x54C
|
||||
initTightRope__13dAcOivyRope_cFv = .text:0x000007F0; // type:function size:0x54C
|
||||
AcOivyRope__handleSubtype1update = .text:0x00000D40; // type:function size:0x37C
|
||||
fn_256_10C0__13dAcOivyRope_cFv = .text:0x000010C0; // type:function size:0xDC
|
||||
fn_256_11A0 = .text:0x000011A0; // type:function size:0x94
|
||||
@@ -45,7 +45,7 @@ fn_256_4520 = .text:0x00004520; // type:function size:0x238
|
||||
fn_256_4760 = .text:0x00004760; // type:function size:0x514
|
||||
fn_256_4C80 = .text:0x00004C80; // type:function size:0x14
|
||||
fn_256_4CA0 = .text:0x00004CA0; // type:function size:0x298
|
||||
fn_256_4F40 = .text:0x00004F40; // type:function size:0x250
|
||||
createBase__13dAcOivyRope_cFv = .text:0x00004F40; // type:function size:0x250
|
||||
fn_256_5190 = .text:0x00005190; // type:function size:0x3FC
|
||||
fn_256_5590 = .text:0x00005590; // type:function size:0x258
|
||||
fn_256_57F0 = .text:0x000057F0; // type:function size:0x304
|
||||
@@ -72,7 +72,7 @@ initializeState_TerryRopeWait__13dAcOivyRope_cFv = .text:0x00006640; // type:fun
|
||||
executeState_TerryRopeWait__13dAcOivyRope_cFv = .text:0x000066C0; // type:function size:0x5C
|
||||
finalizeState_TerryRopeWait__13dAcOivyRope_cFv = .text:0x00006720; // type:function size:0x4
|
||||
createHeap__13dAcOivyRope_cFv = .text:0x00006730; // type:function size:0x478
|
||||
AcOivyRope__init = .text:0x00006BB0; // type:function size:0x748
|
||||
create__13dAcOivyRope_cFv = .text:0x00006BB0; // type:function size:0x748
|
||||
fn_256_7300 = .text:0x00007300; // type:function size:0x8
|
||||
fn_256_7310 = .text:0x00007310; // type:function size:0xB8
|
||||
fn_256_73D0 = .text:0x000073D0; // type:function size:0x18C
|
||||
@@ -200,15 +200,17 @@ lbl_256_data_2A0 = .data:0x000002A0; // type:object size:0x30
|
||||
lbl_256_data_2D0 = .data:0x000002D0; // type:object size:0x18
|
||||
lbl_256_data_2E8 = .data:0x000002E8; // type:object size:0x18
|
||||
lbl_256_data_300 = .data:0x00000300; // type:object size:0x2A0
|
||||
lbl_256_data_5A0 = .data:0x000005A0; // type:object size:0x34
|
||||
__vt__28sFStateID_c<13dAcOivyRope_c> = .data:0x000005A0; // type:object size:0x34
|
||||
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
|
||||
lbl_256_bss_8 = .bss:0x00000008; // type:object size:0x10 data:4byte
|
||||
lbl_256_bss_18 = .bss:0x00000018; // type:object size:0x40 data:4byte
|
||||
lbl_256_bss_58 = .bss:0x00000058; // type:object size:0x40 data:4byte
|
||||
lbl_256_bss_98 = .bss:0x00000098; // type:object size:0x40 data:4byte
|
||||
AcOivyRope__STATE_ROPE_CUT = .bss:0x000000D8; // type:object size:0x40 data:4byte
|
||||
AcOivyRope__STATE_TERRY_ROPE_WAIT = .bss:0x00000118; // type:object size:0xC0 data:4byte
|
||||
AcOivyRope__STATE_TERRY_ROPE_INIT = .bss:0x000001D8; // type:object size:0x40 data:4byte
|
||||
AcOivyRope__STATE_TERRY_ROPE_PLAYER_CARRY = .bss:0x00000218; // type:object size:0x70 data:4byte
|
||||
lbl_256_bss_8 = .bss:0x00000008; // type:object size:0xC data:4byte
|
||||
StateID_RopeWait__13dAcOivyRope_c = .bss:0x00000018; // type:object size:0x30 data:4byte
|
||||
StateID_PlayerGrip__13dAcOivyRope_c = .bss:0x00000058; // type:object size:0x30 data:4byte
|
||||
StateID_RopeReturn__13dAcOivyRope_c = .bss:0x00000098; // type:object size:0x30 data:4byte
|
||||
StateID_RopeCut__13dAcOivyRope_c = .bss:0x000000D8; // type:object size:0x30 data:4byte
|
||||
StateID_TerryRopeWait__13dAcOivyRope_c = .bss:0x00000118; // type:object size:0x30 data:4byte
|
||||
StateID_TerryRopeUp__13dAcOivyRope_c = .bss:0x00000158; // type:object size:0x30 data:4byte
|
||||
StateID_TerryRopeDown__13dAcOivyRope_c = .bss:0x00000198; // type:object size:0x30 data:4byte
|
||||
StateID_TerryRopeInit__13dAcOivyRope_c = .bss:0x000001D8; // type:object size:0x30 data:4byte
|
||||
StateID_TerryRopePlayerCarry__13dAcOivyRope_c = .bss:0x00000218; // type:object size:0x30 data:4byte
|
||||
lbl_256_bss_288 = .bss:0x00000288; // type:object size:0x8 data:byte
|
||||
lbl_256_bss_290 = .bss:0x00000290; // type:object size:0x10 data:float
|
||||
|
||||
@@ -9,6 +9,7 @@ namespace cLib {
|
||||
s32 targetAngleY(const mVec3_c &target, const mVec3_c &source);
|
||||
s32 targetAngleX(const mVec3_c &target, const mVec3_c &source);
|
||||
f32 addCalcPosXZ(mVec3_c *src, const mVec3_c &target, f32 scale, f32 maxStep, f32 minStep);
|
||||
f32 addCalcPos(mVec3_c *src, const mVec3_c &target, f32 scale, f32 maxStep, f32 minStep);
|
||||
|
||||
// made up name
|
||||
f32 easeOut(f32 value, f32 exponent);
|
||||
|
||||
@@ -98,7 +98,7 @@ public:
|
||||
/* vt 0x0D8 */ virtual void getItemFromClawshotsMaybe();
|
||||
/* vt 0x0DC */ virtual void vt_0x0DC(dAcBase_c *, mVec3_c &);
|
||||
/* vt 0x0E0 */ virtual void isUsingBomb();
|
||||
/* vt 0x0E4 */ virtual void vt_0x0E4();
|
||||
/* vt 0x0E4 */ virtual mVec3_c &getCenterTranslation() const;
|
||||
/* vt 0x0E8 */ virtual void vt_0x0E8();
|
||||
/* vt 0x0EC */ virtual void vt_0x0EC();
|
||||
/* vt 0x0F0 */ virtual void vt_0x0F0();
|
||||
|
||||
@@ -1,14 +1,34 @@
|
||||
#ifndef D_A_OBJ_IVY_ROPE_H
|
||||
#define D_A_OBJ_IVY_ROPE_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/c/c_cc_d.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "d/d_rope_model.h"
|
||||
#include "d/d_shadow.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "s/s_State.hpp"
|
||||
#include "s/s_StateMgr.hpp"
|
||||
#include "toBeSorted/actor_event.h"
|
||||
#include "toBeSorted/actor_on_rail.h"
|
||||
#include "toBeSorted/attention.h"
|
||||
|
||||
class dAcOivyRope_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcOivyRope_c() : mStateMgr(*this, sStateID::null) {}
|
||||
virtual ~dAcOivyRope_c() {}
|
||||
dAcOivyRope_c() : mField_0x330(0), mStateMgr(*this, sStateID::null), mStts2(this), mEvent(*this, nullptr) {}
|
||||
virtual ~dAcOivyRope_c();
|
||||
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int draw() override;
|
||||
virtual bool createHeap() override;
|
||||
virtual int actorExecute() override;
|
||||
virtual int actorExecuteInEvent() override;
|
||||
virtual void registerInEvent() override;
|
||||
virtual bool canBeLinkedToWoodTag() override;
|
||||
virtual bool drop() override;
|
||||
|
||||
STATE_FUNC_DECLARE(dAcOivyRope_c, RopeWait);
|
||||
STATE_FUNC_DECLARE(dAcOivyRope_c, PlayerGrip);
|
||||
@@ -20,8 +40,216 @@ public:
|
||||
STATE_FUNC_DECLARE(dAcOivyRope_c, TerryRopeInit);
|
||||
STATE_FUNC_DECLARE(dAcOivyRope_c, TerryRopePlayerCarry);
|
||||
|
||||
void initTightRope();
|
||||
void fn_256_10C0();
|
||||
|
||||
UNKTYPE fn_256_11A0(UNKTYPE);
|
||||
UNKTYPE fn_256_1240(UNKTYPE);
|
||||
UNKTYPE fn_256_1480(UNKTYPE);
|
||||
UNKTYPE fn_256_2160(UNKTYPE);
|
||||
void fn_256_26B0(int, bool, f32);
|
||||
UNKTYPE fn_256_2C40(UNKTYPE);
|
||||
UNKTYPE fn_256_2D00(UNKTYPE);
|
||||
UNKTYPE fn_256_2DC0(UNKTYPE);
|
||||
UNKTYPE fn_256_2EA0(UNKTYPE);
|
||||
void fn_256_30A0(mVec3_c &out);
|
||||
UNKTYPE fn_256_33B0(UNKTYPE);
|
||||
UNKTYPE fn_256_34B0(UNKTYPE);
|
||||
UNKTYPE fn_256_3540(UNKTYPE);
|
||||
UNKTYPE fn_256_35E0(UNKTYPE);
|
||||
UNKTYPE fn_256_36A0(UNKTYPE);
|
||||
UNKTYPE fn_256_3770(UNKTYPE);
|
||||
UNKTYPE fn_256_3A20(UNKTYPE);
|
||||
UNKTYPE fn_256_3B90(UNKTYPE);
|
||||
UNKTYPE calcDistance(UNKTYPE);
|
||||
UNKTYPE fn_256_3E30(UNKTYPE);
|
||||
UNKTYPE fn_256_3E70(UNKTYPE);
|
||||
UNKTYPE fn_256_3F60(UNKTYPE);
|
||||
UNKTYPE fn_256_43B0(UNKTYPE);
|
||||
UNKTYPE fn_256_4520(UNKTYPE);
|
||||
UNKTYPE fn_256_4760(UNKTYPE);
|
||||
UNKTYPE fn_256_4C80(UNKTYPE);
|
||||
UNKTYPE fn_256_4CA0(UNKTYPE);
|
||||
int createBase();
|
||||
UNKTYPE fn_256_5190(UNKTYPE);
|
||||
UNKTYPE fn_256_5590(UNKTYPE);
|
||||
UNKTYPE fn_256_57F0(UNKTYPE);
|
||||
UNKTYPE fn_256_5B00(UNKTYPE);
|
||||
UNKTYPE fn_256_5B64(UNKTYPE);
|
||||
UNKTYPE fn_256_5B70(UNKTYPE);
|
||||
UNKTYPE fn_256_5DB0(UNKTYPE);
|
||||
UNKTYPE fn_256_5FF0(UNKTYPE);
|
||||
UNKTYPE fn_256_6100(UNKTYPE);
|
||||
UNKTYPE fn_256_61F0(UNKTYPE);
|
||||
UNKTYPE fn_256_7300(UNKTYPE);
|
||||
UNKTYPE fn_256_7310(UNKTYPE);
|
||||
UNKTYPE fn_256_73D0(UNKTYPE);
|
||||
UNKTYPE fn_256_7560(UNKTYPE);
|
||||
UNKTYPE fn_256_7680(UNKTYPE);
|
||||
UNKTYPE fn_256_7D50(UNKTYPE);
|
||||
UNKTYPE fn_256_8060(UNKTYPE);
|
||||
UNKTYPE fn_256_8590(UNKTYPE);
|
||||
UNKTYPE fn_256_8990(UNKTYPE);
|
||||
UNKTYPE fn_256_8D10(UNKTYPE);
|
||||
void fn_256_9120(u16);
|
||||
UNKTYPE fn_256_9280(UNKTYPE);
|
||||
UNKTYPE fn_256_9450(UNKTYPE);
|
||||
UNKTYPE fn_256_9C80(UNKTYPE);
|
||||
UNKTYPE fn_256_A040(UNKTYPE);
|
||||
void fn_256_A2C0(bool);
|
||||
bool fn_256_A750(bool bool0, f32 float0);
|
||||
f32 fn_256_AA40();
|
||||
f32 fn_256_AAB0(f32, f32);
|
||||
int fn_256_AAF0(f32, f32);
|
||||
void fn_256_ABA0();
|
||||
void fn_256_AC00();
|
||||
void fn_256_AE00();
|
||||
void fn_256_B2B0();
|
||||
void fn_256_BAB0(mVec3_c &out, int idx, s16 xRot, s16 yRot);
|
||||
void fn_256_BB70();
|
||||
void fn_256_BE80();
|
||||
void fn_256_BFF0(int, f32, f32);
|
||||
f32 fn_256_C200(int);
|
||||
void fn_256_C410();
|
||||
bool fn_256_C6F0();
|
||||
void fn_256_C740();
|
||||
void fn_256_C810(mVec3_c &pOut, int idx);
|
||||
void fn_256_C960();
|
||||
void fn_256_C980(f32, f32);
|
||||
UNKTYPE fn_256_C9B0(UNKTYPE);
|
||||
void fn_256_CD40();
|
||||
void fn_256_CE20(f32 *, f32 *, f32 *);
|
||||
void fn_256_CFA0(bool);
|
||||
void fn_256_D050();
|
||||
void fn_256_D110();
|
||||
void fn_256_D1B0();
|
||||
void fn_256_D2B0();
|
||||
void fn_256_D3D0(mVec3_c &pOut1, mVec3_c &pOut2, s16 param2, bool bool0, f32 float0);
|
||||
const mVec3_c &fn_256_D730(s32 idx); // Get Path Point
|
||||
void fn_256_D7A0(s32, const mVec3_c &); // Set Path Point
|
||||
void fn_256_D850(); // Draw Shadow
|
||||
void fn_256_DAA0(bool, bool, f32, f32);
|
||||
void fn_256_DE80();
|
||||
void fn_256_DEE0();
|
||||
u32 fn_256_DF30();
|
||||
void fn_256_E3E0();
|
||||
bool fn_256_E790();
|
||||
|
||||
bool checkSubtype(u32 sub) {
|
||||
return mSubtype == sub;
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x??? */ STATE_MGR_DECLARE(dAcOivyRope_c);
|
||||
/* 0x 330 */ UNKWORD mField_0x330;
|
||||
/* 0x 334 */ m3d::smdl_c mMdlArr[2];
|
||||
/* 0x 36C */ dShadowCircle_c mShadow;
|
||||
/* 0x 374 */ dCcD_Sph mSph;
|
||||
/* 0x 4C4 */ dCcD_Cps mCps1;
|
||||
/* 0x 634 */ dCcD_Cps mCps2;
|
||||
/* 0x 7A4 */ dCcD_Cps mCpsArr[3];
|
||||
/* 0x BF4 */ dCcD_Cyl mCyl;
|
||||
/* 0x D44 */ STATE_MGR_DECLARE(dAcOivyRope_c);
|
||||
/* 0x D80 */ dMultiMat_c mRopeMdl;
|
||||
/* 0x DCC */ dSkinMat_c mCoilMdl;
|
||||
/* 0x E24 */ dMultiMat_c mRopeMdl2;
|
||||
/* 0x E70 */ ActorOnRail3 mPath;
|
||||
/* 0x E88 */ u8 _E88[0xE94 - 0xE88];
|
||||
/* 0x E94 */ cCcD_Stts mStts2;
|
||||
/* 0x ED0 */ ActorEventRelated mEvent;
|
||||
/* 0x F20 */ mVec3_c mTightropeEnd;
|
||||
/* 0x F2C */ mVec3_c mTightropeStart;
|
||||
/* 0x F38 */ mVec3_c mField_0xF38;
|
||||
/* 0x F44 */ mVec3_c mField_0xF44;
|
||||
/* 0x F50 */ mVec3_c mField_0xF50;
|
||||
/* 0x F5C */ u8 _F5C[0xF68 - 0xF5C];
|
||||
/* 0x F68 */ mVec3_c mField_0xF68;
|
||||
/* 0x F74 */ u8 _F74[0xFA4 - 0xF74];
|
||||
/* 0x FA4 */ f32 mField_0xFA4;
|
||||
/* 0x FA8 */ f32 mField_0xFA8;
|
||||
/* 0x FAC */ f32 mField_0xFAC;
|
||||
/* 0x FB0 */ f32 mField_0xFB0;
|
||||
/* 0x FB4 */ f32 mField_0xFB4;
|
||||
/* 0x FB8 */ f32 mDistance;
|
||||
/* 0x FBC */ f32 mOldDistance;
|
||||
/* 0x FC0 */ UNKWORD mField_0xFC0;
|
||||
/* 0x FC4 */ f32 mField_0xFC4;
|
||||
/* 0x FC8 */ UNKWORD mField_0xFC8;
|
||||
/* 0x FCC */ mAng mField_0xFCC;
|
||||
/* 0x FCE */ u16 mField_0xFCE;
|
||||
/* 0x FD0 */ u8 _FD0[0xFD2 - 0xFD0];
|
||||
/* 0x FD2 */ s16 mField_0xFD2;
|
||||
/* 0x FD4 */ s16 mField_0xFD4;
|
||||
/* 0x FD6 */ s16 mField_0xFD6;
|
||||
/* 0x FD8 */ s16 mField_0xFD8;
|
||||
/* 0x FDA */ mAng mField_0xFDA;
|
||||
/* 0x FDC */ s16 mField_0xFDC;
|
||||
/* 0x FDA */ u8 _FDE[0xFE2 - 0xFDE];
|
||||
/* 0x FE2 */ s16 mField_0xFE2;
|
||||
/* 0x FE4 */ u8 mDropsceneFlag;
|
||||
/* 0x FE5 */ u8 mWoodTagSceneflag;
|
||||
/* 0x FE6 */ u8 mSegmentCount;
|
||||
/* 0x FE7 */ u8 mSubtype;
|
||||
/* 0x FE8 */ bool mbField_0xFE8;
|
||||
/* 0x FE9 */ u8 mField_0xFE9;
|
||||
/* 0x FEA */ u8 mField_0xFEA;
|
||||
/* 0x FEB */ u8 mField_0xFEB;
|
||||
/* 0x FEC */ u8 mField_0xFEC;
|
||||
/* 0x FED */ u8 mEventIdx;
|
||||
/* 0x FEE */ u8 mField_0xFEE;
|
||||
/* 0x FEF */ u8 mField_0xFEF;
|
||||
/* 0x FF0 */ u8 mField_0xFF0[4];
|
||||
/* 0x FF4 */ u8 mField_0xFF4;
|
||||
/* 0x FF5 */ u8 mField_0xFF5;
|
||||
/* 0x FF6 */ u8 mField_0xFF6;
|
||||
/* 0x FF7 */ u8 mField_0xFF7;
|
||||
/* 0x FF8 */ u8 mField_0xFF8;
|
||||
/* 0x FF9 */ u8 _FF9[0x1005 - 0xFF9];
|
||||
/* 0x1005 */ u8 mField_0x1005;
|
||||
/* 0x1006 */ u8 _1006[0x1010 - 0x1006];
|
||||
/* 0x1010 */ mVec3_c mField_0x1010;
|
||||
/* 0x101C */ mVec3_c mField_0x101C;
|
||||
/* 0x1028 */ f32 mField_0x1028;
|
||||
/* 0x102C */ f32 mField_0x102C;
|
||||
/* 0x1030 */ mAng mField_0x1030;
|
||||
/* 0x1032 */ mAng mField_0x1032;
|
||||
/* 0x1034 */ u8 _1034[0x1038 - 0x1034];
|
||||
/* 0x1038 */ u8 mField_0x1038;
|
||||
/* 0x1039 */ u8 mField_0x1039; // TODO make field enum
|
||||
/* 0x103A */ s8 mField_0x103A;
|
||||
/* 0x103B */ u8 mField_0x103B;
|
||||
/* 0x103C */ u8 mField_0x103C;
|
||||
/* 0x103D */ u8 mField_0x103D;
|
||||
/* 0x103E */ bool mDropped;
|
||||
/* 0x1040 */ f32 mField_0x1040;
|
||||
/* 0x1044 */ u8 _1044[0x1050 - 0x1044];
|
||||
/* 0x1050 */ f32 mField_0x1050;
|
||||
/* 0x1054 */ u8 _1054[0x105E - 0x1054];
|
||||
/* 0x105E */ u8 mField_0x105E;
|
||||
/* 0x105F */ u8 mField_0x105F;
|
||||
/* 0x1060 */ u8 mField_0x1060;
|
||||
/* 0x1061 */ u8 mField_0x1061;
|
||||
/* 0x1062 */ u8 mField_0x1062;
|
||||
/* 0x1064 */ f32 mField_0x1064;
|
||||
/* 0x1068 */ f32 mField_0x1068;
|
||||
/* 0x106C */ f32 mField_0x106C;
|
||||
/* 0x1070 */ u8 _1070[0x1083 - 0x1070];
|
||||
/* 0x1083 */ u8 mField_0x1083;
|
||||
/* 0x1084 */ u8 _1084[0x1088 - 0x1084];
|
||||
/* 0x1088 */ dCcD_Cps mCpsArr2[16];
|
||||
/* 0x2788 */ mVec3_c *mPnts1;
|
||||
/* 0x278C */ mVec3_c *mPnts2;
|
||||
/* 0x2790 */ u16 mField_0x2790;
|
||||
/* 0x2792 */ u8 mField_0x2792;
|
||||
/* 0x2793 */ bool mbField_0x2793;
|
||||
/* 0x2794 */ u8 _2794[0x27C0 - 0x2794];
|
||||
/* 0x27C0 */ f32 mField_0x27C0;
|
||||
/* 0x27C4 */ bool mbField_0x27C4;
|
||||
/* 0x27C5 */ bool mbField_0x27C5;
|
||||
|
||||
static InteractionTargetDef sInteraction;
|
||||
static dCcD_SrcCps sCpsSrc;
|
||||
static dCcD_SrcSph sSphSrc;
|
||||
static dCcD_SrcCyl sCylSrc;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -293,6 +293,9 @@ public:
|
||||
/* 0x38 */ int mRank;
|
||||
|
||||
cCcD_Stts(dAcObjBase_c *);
|
||||
~cCcD_Stts() {
|
||||
mpActor = nullptr;
|
||||
}
|
||||
void Move();
|
||||
int GetID() const;
|
||||
void PlusCcMove(f32, f32, f32);
|
||||
@@ -357,6 +360,8 @@ enum dCcD_ObjAtType {
|
||||
/* 0x 0200 0000 */ AT_TYPE_0x2000000 = (1 << 25),
|
||||
/* 0x 0400 0000 */ AT_TYPE_KOLOKTOS_SWORD = (1 << 26),
|
||||
/* 0x 0800 0000 */ AT_TYPE_0x8000000 = (1 << 27),
|
||||
/* 0x 0148 8200 */ AT_TYPE_COMMON0 =
|
||||
AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND,
|
||||
};
|
||||
|
||||
enum cCcD_AtModifiers_e {
|
||||
@@ -790,8 +795,14 @@ public:
|
||||
mCo.OnSPrm(f);
|
||||
}
|
||||
|
||||
void SetTgType(u32 flag) {
|
||||
mTg.SetType(flag);
|
||||
void SetTgType(u32 type) {
|
||||
mTg.SetType(type);
|
||||
}
|
||||
void OnTgType(u32 type) {
|
||||
mTg.OnType(type);
|
||||
}
|
||||
void OffTgType(u32 type) {
|
||||
mTg.OffType(type);
|
||||
}
|
||||
void SetAtFlag(u32 flag) {
|
||||
mAt.SetSPrm(flag);
|
||||
@@ -913,6 +924,10 @@ public:
|
||||
return mTg.MskSPrm(0x400);
|
||||
}
|
||||
|
||||
void OnTg_0x200000() {
|
||||
mTg.OnSPrm(0x200000);
|
||||
}
|
||||
|
||||
void SetTg_0x4B(u8 val) {
|
||||
mTg.Set_0x4B(val);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#define D_CC_D_H
|
||||
|
||||
#include "d/col/c/c_cc_d.h"
|
||||
#include "d/col/c/c_m3d.h"
|
||||
#include "m/m_vec.h"
|
||||
|
||||
struct dCcD_SrcCps {
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
#ifndef D_ROPE_MODEL_H
|
||||
#define D_ROPE_MODEL_H
|
||||
|
||||
#include "m/m3d/m_bline.h"
|
||||
|
||||
//
|
||||
// The names in this file are made up based on the usage in setupGX
|
||||
//
|
||||
|
||||
class dMultiMat_c : public m3d::blineMat_c {
|
||||
public:
|
||||
dMultiMat_c() {}
|
||||
virtual void setupGX(bool bTransparent) override;
|
||||
};
|
||||
|
||||
class dSkinMat_c : public m3d::blineMat_c {
|
||||
public:
|
||||
dSkinMat_c() : mField_0x4C(-1), mField_0x50(0xFF), mField_0x54(0xFF) {}
|
||||
virtual void setupGX(bool bTransparent) override;
|
||||
|
||||
/* 0x4C */ s32 mField_0x4C;
|
||||
/* 0x50 */ s32 mField_0x50;
|
||||
/* 0x54 */ s32 mField_0x54;
|
||||
};
|
||||
|
||||
#endif
|
||||
+11
-10
@@ -1,9 +1,11 @@
|
||||
#ifndef M3D_BLINE_H
|
||||
#define M3D_BLINE_H
|
||||
|
||||
#include "common.h"
|
||||
#include "egg/gfx/eggTexture.h"
|
||||
#include "m/m3d/m_proc.h"
|
||||
#include "m/m_math.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/ut/ut_Color.h"
|
||||
|
||||
namespace m3d {
|
||||
@@ -11,26 +13,20 @@ namespace m3d {
|
||||
// The Actual line
|
||||
class bline_c {
|
||||
public:
|
||||
bline_c() : mpPathArr(0), mpVtxPosArr(0), mpVtxNrmArr(0), mpVtxTexArr(0), mFlags(0) {}
|
||||
bline_c() : mpPathArr(nullptr), mpVtxPosArr(nullptr), mpVtxNrmArr(nullptr), mpVtxTexArr(nullptr), mFlags(0) {}
|
||||
// This is mainly a Guess, When the array is created, it has both a ctor/dtor
|
||||
struct VtxPos {
|
||||
mVec3_c pos1;
|
||||
mVec3_c pos2;
|
||||
};
|
||||
struct Vec3u8 {
|
||||
Vec3u8() {}
|
||||
u8 x, y, z;
|
||||
};
|
||||
// This is mainly a Guess, When the array is created, it has only a ctor
|
||||
struct VtxNrm {
|
||||
#pragma warning off(10402)
|
||||
union {
|
||||
struct {
|
||||
Vec3u8 nrm1;
|
||||
Vec3u8 nrm2;
|
||||
};
|
||||
EGG::Vector3s nrm_u16; // There is a short by short copy later
|
||||
};
|
||||
#pragma warning on(10402)
|
||||
Vec3u8 nrm1;
|
||||
Vec3u8 nrm2;
|
||||
};
|
||||
// This is mainly a Guess, When the array is created, it doesnt use the array alloc
|
||||
struct VtxTex {
|
||||
@@ -44,6 +40,10 @@ public:
|
||||
void remove();
|
||||
void draw();
|
||||
|
||||
mVec3_c &getPathPoint(u16 idx) {
|
||||
return mpPathArr[idx];
|
||||
}
|
||||
|
||||
// vt at 0x08
|
||||
virtual ~bline_c();
|
||||
|
||||
@@ -63,6 +63,7 @@ public:
|
||||
|
||||
class blineMat_c : public proc_c {
|
||||
public:
|
||||
blineMat_c() : mpLineArr(nullptr) {}
|
||||
virtual ~blineMat_c();
|
||||
virtual void remove() override;
|
||||
virtual void drawOpa() override;
|
||||
|
||||
+12
-2
@@ -17,7 +17,7 @@ class mMtx_c : public EGG::Matrix34f {
|
||||
typedef const f32 (*MtxRefConst)[4];
|
||||
|
||||
public:
|
||||
mMtx_c(){};
|
||||
mMtx_c() {};
|
||||
mMtx_c(f32 xx, f32 xy, f32 xz, f32 xw, f32 yx, f32 yy, f32 yz, f32 yw, f32 zx, f32 zy, f32 zz, f32 zw);
|
||||
|
||||
operator MtxRef() {
|
||||
@@ -78,17 +78,27 @@ public:
|
||||
return ret;
|
||||
}
|
||||
|
||||
void multVec(const mVec3_c &in, mVec3_c &out) const {
|
||||
PSMTXMultVec(*this, in, out);
|
||||
}
|
||||
|
||||
mMtx_c &operator+=(const mMtx_c &rhs) {
|
||||
PSMTXConcat(*this, rhs, *this);
|
||||
return *this;
|
||||
}
|
||||
|
||||
mVec3_c operator*(const mVec3_c &rhs) {
|
||||
mVec3_c out;
|
||||
PSMTXMultVec(*this, rhs, out);
|
||||
return out;
|
||||
}
|
||||
|
||||
void applyQuat(mQuat_c &quat) {
|
||||
PSMTXMultVec(m, quat.v, quat.v);
|
||||
}
|
||||
|
||||
void fn_802F1C40(s32, s32);
|
||||
void makeRotationFromVecs(const mVec3_c&, const mVec3_c&, f32);
|
||||
void makeRotationFromVecs(const mVec3_c &, const mVec3_c &, f32);
|
||||
|
||||
public:
|
||||
static mMtx_c Identity;
|
||||
|
||||
@@ -73,4 +73,13 @@ private:
|
||||
mVec3_c mPosition;
|
||||
};
|
||||
|
||||
class ActorOnRail3 {
|
||||
ActorOnRail mPath;
|
||||
u16 mSomePntIdx;
|
||||
u32 mFlags;
|
||||
|
||||
public:
|
||||
ActorOnRail3() : mSomePntIdx(0), mFlags(0) {}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -16,45 +16,16 @@ STATE_DEFINE(dAcOtoD3StoneFigure_c, Eyes);
|
||||
f32 dAcOtoD3StoneFigure_c::sRadius = 85.0f;
|
||||
f32 dAcOtoD3StoneFigure_c::sHeight = 290.0f;
|
||||
|
||||
// clang-format off
|
||||
dCcD_SrcCyl dAcOtoD3StoneFigure_c::sCcSrc = {
|
||||
{
|
||||
{
|
||||
0,
|
||||
0,
|
||||
{
|
||||
0,
|
||||
0,
|
||||
0
|
||||
},
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
},
|
||||
{
|
||||
~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND),
|
||||
0x1000111,
|
||||
{
|
||||
0x0,
|
||||
0x06,
|
||||
0x407
|
||||
},
|
||||
0,
|
||||
0
|
||||
},
|
||||
{
|
||||
0xE9
|
||||
}
|
||||
},
|
||||
{
|
||||
dAcOtoD3StoneFigure_c::sRadius,
|
||||
dAcOtoD3StoneFigure_c::sHeight
|
||||
}
|
||||
{{0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND),
|
||||
0x1000111,
|
||||
{0, 0x06, 0x407},
|
||||
0,
|
||||
0},
|
||||
{0xE9}},
|
||||
{dAcOtoD3StoneFigure_c::sRadius, dAcOtoD3StoneFigure_c::sHeight}
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
bool dAcOtoD3StoneFigure_c::createHeap() {
|
||||
const char *modelName = getModelName();
|
||||
|
||||
@@ -16,7 +16,6 @@ STATE_DEFINE(dAcArrow_c, Bound);
|
||||
// clang-format off
|
||||
|
||||
cCcD_SrcGObj dAcArrow_c::sCcSrcInf = {
|
||||
|
||||
{AT_TYPE_ARROW, 0x8BB, {0x15,0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{
|
||||
~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_ARROW | AT_TYPE_0x100 | AT_TYPE_WIND | AT_TYPE_SLINGSHOT),
|
||||
|
||||
+3
-10
@@ -7,7 +7,6 @@
|
||||
#include "nw4r/g3d/g3d_light.h"
|
||||
#include "nw4r/g3d/g3d_state.h"
|
||||
|
||||
|
||||
namespace m3d {
|
||||
|
||||
blineMat_c::~blineMat_c() {
|
||||
@@ -61,7 +60,7 @@ void blineMat_c::update() {
|
||||
|
||||
getCurrentCamera().GetCameraMtx(&camMtx);
|
||||
PSMTXInverse(camMtx, camMtx);
|
||||
PSMTXMultVec(camMtx, mVec3_c::zero, vec);
|
||||
PSMTXMultVec(camMtx, mVec3_c::Zero, vec);
|
||||
|
||||
for (bline_c *line = (bline_c *)nw4r::ut::List_GetNext(&mLines, 0); line != nullptr;
|
||||
line = (bline_c *)nw4r::ut::List_GetNext(&mLines, line)) {
|
||||
@@ -85,15 +84,9 @@ void blineMat_c::setupGX(bool bTransparent) {
|
||||
0, &mask_diff_color, &mask_diff_alpha, &mask_spec_color, &mask_spec_alpha, &ambObj
|
||||
);
|
||||
|
||||
nw4r::ut::Color ambColor(0xFF, 0xFF, 0xFF, 0xFF);
|
||||
nw4r::ut::Color matColor(0xFF, 0xFF, 0xFF, 0xFF);
|
||||
GXSetChanMatColor(GX_COLOR0, matColor);
|
||||
GXSetChanMatColor(GX_COLOR0, nw4r::ut::Color(0xFF, 0xFF, 0xFF, 0xFF));
|
||||
|
||||
ambColor.r = ambObj.r;
|
||||
ambColor.g = ambObj.g;
|
||||
ambColor.b = ambObj.b;
|
||||
ambColor.a = ambObj.a;
|
||||
GXSetChanAmbColor(GX_COLOR0, ambColor);
|
||||
GXSetChanAmbColor(GX_COLOR0, nw4r::ut::Color(ambObj.r, ambObj.g, ambObj.b, ambObj.a));
|
||||
|
||||
GXSetNumChans(1);
|
||||
GXSetChanCtrl(GX_COLOR0, TRUE, GX_SRC_REG, GX_SRC_REG, (GXLightID)mask_diff_color, GX_DF_CLAMP, GX_AF_NONE);
|
||||
|
||||
Reference in New Issue
Block a user