mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-11 05:08:07 -04:00
d_demo work
This commit is contained in:
@@ -32,7 +32,7 @@ struct TControl {
|
||||
return mResource != NULL && mResource->getGroupID() == groupID;
|
||||
}
|
||||
|
||||
const char* getMessageData_cached_messageEntry_(u16 messageIndex, const void* messageEntry) const {}
|
||||
const char* getMessageData_cached_messageEntry_(u16 messageIndex, const void* messageEntry) const { /* TODO */ return NULL; }
|
||||
|
||||
bool isReady_update_() const { return mMessageEntry != NULL && mMessageDataStart != 0 && mBaseProcSeq != NULL; }
|
||||
bool isReady_render_() const { return mMessageEntry != NULL && mMessageDataCurrent != NULL && mBaseProcRender != NULL; }
|
||||
|
||||
@@ -37,10 +37,16 @@ public:
|
||||
|
||||
TControl();
|
||||
virtual ~TControl();
|
||||
void setFactory(JStudio::TFactory*);
|
||||
void transformOnSet_setOrigin(const Vec&, f32);
|
||||
void transformOnGet_setOrigin(const Vec&, f32);
|
||||
|
||||
void setFactory(JStudio::TFactory* factory) {
|
||||
stb::TFactory* stb_factory = factory;
|
||||
fvb::TFactory* fvb_factory = factory == NULL ? NULL : &factory->fvb_Factory;
|
||||
stb::TControl::setFactory(stb_factory);
|
||||
fvb_Control.setFactory(fvb_factory);
|
||||
}
|
||||
|
||||
void stb_destroyObject_all() { stb::TControl::destroyObject_all(); }
|
||||
void fvb_destroyObject_all() { fvb_Control.destroyObject_all(); }
|
||||
|
||||
@@ -55,13 +61,13 @@ public:
|
||||
void transformOnGet_enable(bool param_0) { mTransformOnGet = param_0; }
|
||||
|
||||
void transform_enable(bool param_0) {
|
||||
transformOnSet_enable(param_0);
|
||||
transformOnGet_enable(param_0);
|
||||
transformOnSet_enable(param_0);
|
||||
}
|
||||
|
||||
void transform_setOrigin(const Vec& xyz, f32 rotY) {
|
||||
transformOnSet_setOrigin(xyz, rotY);
|
||||
transformOnGet_setOrigin(xyz, rotY);
|
||||
transformOnSet_setOrigin(xyz, rotY);
|
||||
}
|
||||
|
||||
f32 transformOnSet_getRotationY() const { return mTransformOnSet_RotationY; }
|
||||
|
||||
@@ -69,17 +69,15 @@ struct TAdaptor_sound : public JStudio::TAdaptor_sound {
|
||||
}; // Size: 0x104
|
||||
|
||||
struct TCreateObject : public JStudio::TCreateObject {
|
||||
TCreateObject(JAIBasic* jai, const JStage::TSystem* system)
|
||||
TCreateObject(JAIBasic* jai)
|
||||
{
|
||||
mSound = jai;
|
||||
mSystem = system;
|
||||
}
|
||||
virtual ~TCreateObject(); // _08
|
||||
virtual bool create(JStudio::TObject** newObject, const JStudio::stb::data::TParse_TBlock_object& data); // _0C
|
||||
|
||||
/* 0x00 */ /* JStudio::TCreateObject */
|
||||
/* 0x0C */ JAIBasic* mSound;
|
||||
/* 0x10 */ const JStage::TSystem* mSystem;
|
||||
};
|
||||
} // namespace JStudio_JAudio
|
||||
|
||||
|
||||
@@ -8,17 +8,15 @@
|
||||
namespace JStudio_JParticle {
|
||||
struct TCreateObject : public JStudio::TCreateObject {
|
||||
TCreateObject(JPAEmitterManager* p_emitMgr, const JStage::TSystem* p_system) {
|
||||
pJPAEmitterManager_ = p_emitMgr;
|
||||
pJSGSystem_ = p_system;
|
||||
mPermit_onExit_notEnd = false;
|
||||
mEmitterMgr = p_emitMgr;
|
||||
mSystem = p_system;
|
||||
}
|
||||
|
||||
virtual ~TCreateObject();
|
||||
virtual bool create(JStudio::TObject**, JStudio::stb::data::TParse_TBlock_object const&);
|
||||
|
||||
/* 0x0C */ JPAEmitterManager* pJPAEmitterManager_;
|
||||
/* 0x10 */ const JStage::TSystem* pJSGSystem_;
|
||||
/* 0x14 */ bool mPermit_onExit_notEnd;
|
||||
/* 0x0C */ JPAEmitterManager* mEmitterMgr;
|
||||
/* 0x10 */ const JStage::TSystem* mSystem;
|
||||
};
|
||||
|
||||
struct TAdaptor_particle : public JStudio::TAdaptor_particle {
|
||||
|
||||
+18
-19
@@ -15,22 +15,21 @@
|
||||
#include "JSystem/J3DGraphAnimator/J3DModelData.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "JSystem/JUtility/JUTNameTab.h"
|
||||
#include "JSystem/JStudio/JStudio/jstudio-control.h"
|
||||
#include "JSystem/JStudio/JStudio_JAudio/control.h"
|
||||
#include "JSystem/JStudio/JStudio_JMessage/control.h"
|
||||
#include "JSystem/JStudio/JStudio_JParticle/control.h"
|
||||
#include "JSystem/JStudio/JStudio_JStage/control.h"
|
||||
#include "m_Do/m_Do_mtx.h"
|
||||
|
||||
class dDemo_system_c;
|
||||
namespace JStudio {
|
||||
class TControl {
|
||||
public:
|
||||
TControl();
|
||||
/* 0x00 */ u32 field_0x00[10];
|
||||
};
|
||||
}
|
||||
class dMesg_tControl {
|
||||
class fopAc_ac_c;
|
||||
|
||||
class dMesg_tControl : public JMessage::TControl {
|
||||
public:
|
||||
dMesg_tControl();
|
||||
/* 0x00 */ u32 field_0x00[29];
|
||||
};
|
||||
class fopAc_ac_c;
|
||||
|
||||
/* 0x3C */ u8 field_0x3C[0x74 - 0x3C];
|
||||
}; // Size: 0x74
|
||||
|
||||
class dDemo_actor_c : public JStage::TActor {
|
||||
public:
|
||||
@@ -243,9 +242,9 @@ public:
|
||||
dDemo_manager_c();
|
||||
~dDemo_manager_c();
|
||||
|
||||
void create(u8 const*, cXyz*, f32);
|
||||
bool create(const u8*, cXyz*, f32);
|
||||
void remove();
|
||||
void update();
|
||||
bool update();
|
||||
|
||||
int getFrame() { return mFrame; }
|
||||
u32 getFrameNoMsg() { return mFrameNoMsg; }
|
||||
@@ -253,12 +252,12 @@ public:
|
||||
|
||||
/* 0x00 */ dDemo_system_c* mSystem;
|
||||
/* 0x04 */ JStudio::TControl* mControl;
|
||||
/* 0x08 */ void* mStage;
|
||||
/* 0x0C */ void* mAudio;
|
||||
/* 0x10 */ void* mParticle;
|
||||
/* 0x14 */ void* mFactory;
|
||||
/* 0x08 */ JStudio_JStage::TCreateObject* mStage;
|
||||
/* 0x0C */ JStudio_JAudio::TCreateObject* mAudio;
|
||||
/* 0x10 */ JStudio_JParticle::TCreateObject* mParticle;
|
||||
/* 0x14 */ JStudio::TFactory* mFactory;
|
||||
/* 0x18 */ dMesg_tControl* mMesgControl;
|
||||
/* 0x1C */ void* mMessage;
|
||||
/* 0x1C */ JStudio_JMessage::TCreateObject* mMessage;
|
||||
/* 0x20 */ dDemo_object_c mDemoObj;
|
||||
/* 0xD0 */ char* mCurFile;
|
||||
/* 0xD4 */ int mFrame;
|
||||
|
||||
@@ -475,7 +475,9 @@ public:
|
||||
static void offStatus(u8 status) { mStatus &= ~status; }
|
||||
static u8 mStatus;
|
||||
|
||||
static JPAEmitterManager* getEmitterManager() { return mEmitterMng; }
|
||||
static JPAEmitterManager* mEmitterMng;
|
||||
|
||||
static dPa_stripesEcallBack mStripes;
|
||||
static dPa_kageroEcallBack mKagero;
|
||||
static dPa_smokeEcallBack mSmokeEcallback;
|
||||
|
||||
@@ -13,8 +13,9 @@
|
||||
JStudio::TControl::TControl() {
|
||||
mTransformOnSet = false;
|
||||
mTransformOnGet = false;
|
||||
Vec aVStack_20 = {0.0f,0.0f,0.0f};
|
||||
transform_setOrigin(aVStack_20, 0.0f);
|
||||
Vec aVStack_20 = {0.0f, 0.0f, 0.0f};
|
||||
transformOnSet_setOrigin(aVStack_20, 0.0f);
|
||||
transformOnGet_setOrigin(aVStack_20, 0.0f);
|
||||
}
|
||||
|
||||
/* 8026E110-8026E180 .text __dt__Q27JStudio8TControlFv */
|
||||
|
||||
@@ -52,7 +52,7 @@ bool TCreateObject::create(JStudio::TObject** newObject, const JStudio::stb::dat
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
*newObject = func(data, pJPAEmitterManager_, pJSGSystem_);
|
||||
*newObject = func(data, mEmitterMgr, mSystem);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -442,7 +442,7 @@ BOOL sound_attention(fopAc_ac_c* actor, void* userWork) {
|
||||
|
||||
/* 8009EAA4-8009EB38 .text runSoundProc__12dAttention_cFv */
|
||||
void dAttention_c::runSoundProc() {
|
||||
mEnemyBsPcId = -1;
|
||||
mEnemyBsPcId = fpcM_ERROR_PROCESS_ID_e;
|
||||
mEnemyDistance = 10000.0f;
|
||||
if (!(mFlags & 0x80000000)) {
|
||||
fopAcIt_Executor((fopAcIt_ExecutorFunc)sound_attention, this);
|
||||
@@ -639,15 +639,15 @@ fopAc_ac_c* dAttLook_c::convPId(unsigned int i_procID) {
|
||||
|
||||
/* 8009FE40-8009FE58 .text init__10dAttLook_cFv */
|
||||
void dAttLook_c::init() {
|
||||
field_0x0 = -1;
|
||||
mLookTargetID = -1;
|
||||
field_0x0 = fpcM_ERROR_PROCESS_ID_e;
|
||||
mLookTargetID = fpcM_ERROR_PROCESS_ID_e;
|
||||
field_0x4 = 3;
|
||||
}
|
||||
|
||||
/* 8009FE58-8009FE74 .text proc__10dAttLook_cFv */
|
||||
void dAttLook_c::proc() {
|
||||
mLookTargetID = field_0x0;
|
||||
field_0x0 = -1;
|
||||
field_0x0 = fpcM_ERROR_PROCESS_ID_e;
|
||||
field_0x4 = 3;
|
||||
}
|
||||
|
||||
|
||||
+87
-20
@@ -6,6 +6,7 @@
|
||||
#include "d/d_demo.h"
|
||||
#include "f_op/f_op_camera_mng.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "m_Do/m_Do_printf.h"
|
||||
|
||||
/* 800692C4-80069330 .text __ct__13dDemo_actor_cFv */
|
||||
dDemo_actor_c::dDemo_actor_c() {
|
||||
@@ -20,7 +21,15 @@ dDemo_actor_c::dDemo_actor_c() {
|
||||
|
||||
/* 80069330-800693C0 .text __dt__13dDemo_actor_cFv */
|
||||
dDemo_actor_c::~dDemo_actor_c() {
|
||||
/* Nonmatching */
|
||||
fopAc_ac_c* actor = getActor();
|
||||
if (actor) {
|
||||
actor->demoActorID = 0;
|
||||
}
|
||||
mActorPcId = fpcM_ERROR_PROCESS_ID_e;
|
||||
mBckId = -1;
|
||||
mBtpId = -1;
|
||||
mBtkId = -1;
|
||||
mBrkId = -1;
|
||||
}
|
||||
|
||||
/* 800693C0-800693F4 .text getActor__13dDemo_actor_cFv */
|
||||
@@ -31,7 +40,7 @@ fopAc_ac_c* dDemo_actor_c::getActor() {
|
||||
/* 800693F4-80069434 .text setActor__13dDemo_actor_cFP10fopAc_ac_c */
|
||||
void dDemo_actor_c::setActor(fopAc_ac_c* ac) {
|
||||
if (ac == NULL)
|
||||
mActorPcId = -1;
|
||||
mActorPcId = fpcM_ERROR_PROCESS_ID_e;
|
||||
else
|
||||
mActorPcId = fopAcM_GetID(ac);
|
||||
mBckId = -1;
|
||||
@@ -70,6 +79,10 @@ void dDemo_getJaiPointer(const char*, u32, int, u16*) {
|
||||
/* 800698C0-80069BC0 .text dDemo_setDemoData__FP10fopAc_ac_cUcP14mDoExt_McaMorfPCciPUsUlSc */
|
||||
BOOL dDemo_setDemoData(fopAc_ac_c*, u8, mDoExt_McaMorf*, const char*, int, u16*, u32, s8) {
|
||||
/* Nonmatching */
|
||||
char* a_name;
|
||||
JUT_ASSERT(0, a_name != 0);
|
||||
void* i_key;
|
||||
JUT_ASSERT(0, i_key != 0);
|
||||
}
|
||||
|
||||
/* 80069BC0-80069BDC .text JSGSetData__13dDemo_actor_cFUlPCvUl */
|
||||
@@ -479,47 +492,101 @@ void* dDemo_system_c::JSGFindObject(const char* name, JStage::TEObject type) con
|
||||
|
||||
/* 8006A92C-8006ADA0 .text __ct__15dDemo_manager_cFv */
|
||||
dDemo_manager_c::dDemo_manager_c() {
|
||||
/* Nonmatching */
|
||||
mCurFile = NULL;
|
||||
mFrame = 0;
|
||||
|
||||
mMesgControl = new dMesg_tControl();
|
||||
JUT_ASSERT(0x5b6, mMesgControl != 0);
|
||||
JUT_ASSERT(0x5b7, mMesgControl != 0);
|
||||
mSystem = new dDemo_system_c();
|
||||
JUT_ASSERT(0x5ba, mSystem != 0);
|
||||
mControl = new JStudio::TControl();
|
||||
// TODO: finish this once we make progress on JStudio headers
|
||||
// mFactory->appendCreateObj(mStage);
|
||||
// mFactory->appendCreateObj(mAudio);
|
||||
// mFactory->appendCreateObj(mParticle);
|
||||
JUT_ASSERT(0x5bc, mControl != 0);
|
||||
mStage = new JStudio_JStage::TCreateObject(mSystem);
|
||||
JUT_ASSERT(0x5be, mStage != 0);
|
||||
mAudio = new JStudio_JAudio::TCreateObject(mDoAud_zelAudio_c::getInterface());
|
||||
JUT_ASSERT(0x5c0, mAudio != 0);
|
||||
mParticle = new JStudio_JParticle::TCreateObject(dPa_control_c::getEmitterManager(), mSystem);
|
||||
JUT_ASSERT(0x5c3, mParticle != 0);
|
||||
mMessage = new JStudio_JMessage::TCreateObject(mMesgControl);
|
||||
JUT_ASSERT(0x5c6, mMessage != 0);
|
||||
mFactory = new JStudio::TFactory();
|
||||
JUT_ASSERT(0x5c9, mFactory != 0);
|
||||
|
||||
// This gets compiled to a double literal, but the lack of precision indicates it was written as a float literal.
|
||||
mControl->mSecondPerFrame = 1/30.0f;
|
||||
mControl->setFactory(mFactory);
|
||||
mFactory->appendCreateObject(mStage);
|
||||
mFactory->appendCreateObject(mAudio);
|
||||
mFactory->appendCreateObject(mParticle);
|
||||
mSystem->setObject(&mDemoObj);
|
||||
// mFactory->appendCreateObj(mMessage);
|
||||
mFactory->appendCreateObject(mMessage);
|
||||
mMode = 0;
|
||||
}
|
||||
|
||||
/* 8006ADA0-8006AEFC .text __dt__15dDemo_manager_cFv */
|
||||
dDemo_manager_c::~dDemo_manager_c() {
|
||||
/* Nonmatching */
|
||||
remove();
|
||||
delete mFactory;
|
||||
delete mMessage;
|
||||
delete mParticle;
|
||||
delete mAudio;
|
||||
delete mStage;
|
||||
delete mControl;
|
||||
delete mSystem;
|
||||
delete mMesgControl;
|
||||
}
|
||||
|
||||
/* 8006AEFC-8006AF5C .text __dt__14dMesg_tControlFv */
|
||||
// dMesg_tControl::~dMesg_tControl() {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 8006AF5C-8006AFBC .text __dt__14dDemo_system_cFv */
|
||||
dDemo_system_c::~dDemo_system_c() {}
|
||||
|
||||
/* 8006AFBC-8006B0D4 .text create__15dDemo_manager_cFPCUcP4cXyzf */
|
||||
void dDemo_manager_c::create(const u8*, cXyz*, f32) {
|
||||
/* Nonmatching */
|
||||
bool dDemo_manager_c::create(const u8* r29, cXyz* r30, f32 f31) {
|
||||
JStudio::TParse sp0C(mControl);
|
||||
const void* sp08 = r29;
|
||||
if (!sp0C.parse_next(&sp08, 0)) {
|
||||
// "Demo data loading error!!\n"
|
||||
OSReport_Error("デモデータ読み込みエラー!!\n");
|
||||
return false;
|
||||
}
|
||||
mControl->forward(0);
|
||||
if (r30 == NULL) {
|
||||
mControl->transform_enable(false);
|
||||
} else {
|
||||
mControl->transform_enable(true);
|
||||
mControl->transform_setOrigin(*r30, f31);
|
||||
}
|
||||
mFrame = 0;
|
||||
mFrameNoMsg = 0;
|
||||
mCurFile = (char*)r29;
|
||||
mMode = 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
static void dummy() {
|
||||
// "Demo data reloading error!!\n"
|
||||
OSReport_Error("デモデータ再読み込みエラー!!\n");
|
||||
}
|
||||
|
||||
/* 8006B0D4-8006B12C .text remove__15dDemo_manager_cFv */
|
||||
void dDemo_manager_c::remove() {
|
||||
/* Nonmatching */
|
||||
mControl->destroyObject_all();
|
||||
mDemoObj.remove();
|
||||
mCurFile = NULL;
|
||||
mMode = 0;
|
||||
}
|
||||
|
||||
/* 8006B12C-8006B1B4 .text update__15dDemo_manager_cFv */
|
||||
void dDemo_manager_c::update() {
|
||||
/* Nonmatching */
|
||||
bool dDemo_manager_c::update() {
|
||||
if (mCurFile == NULL) {
|
||||
return false;
|
||||
}
|
||||
if (mControl->forward(1)) {
|
||||
mFrame++;
|
||||
if (!mControl->isSuspended()) {
|
||||
mFrameNoMsg++;
|
||||
}
|
||||
} else {
|
||||
mMode = 2;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user