summaryrefslogtreecommitdiff
path: root/src/d/d_demo.cpp
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2022-08-30 14:22:17 -0700
committerGitHub <noreply@github.com>2022-08-30 15:22:17 -0600
commitf8979749e3ef8e8cacf2ea8f474c7f23fc5cb6b3 (patch)
tree69659df2105266e9b26a4d50b9a2d610b3e437a2 /src/d/d_demo.cpp
parentbc30d007e11458a198c5725626a10bb06a5da536 (diff)
j2d / map_path work, d_drawlist / d_attention cleanup (#208)
* work on fop actor / actor mng, daalink, d_a_obj_item * d_a_title mostly decompiled * daalink / d_event / JMessage / dmsg_out_font work * msg_scrn_base / msg_scrn_boss * some work on mDo machine, d_menu_save, d_tresure, and various * remove asm * progress * finish d_menu_save / d_pane_class_alpha / d_pane_class / rename some data * rename more data * remove asm / progress * match all of d_pane_class * fixes / some dKankyo doc * bunch of j2d work. d_drawlist / d_attention cleanup * progress / asm * cleanup wip * decompile JStage * setup some more JStudio structs * set up d_demo classes * some d_demo work * cleanup dolphin os stuff * some initial dEvent documentation * some At collision documentation * match JUTConsole::doDraw * dbgs work / split up some of d_a_alink into .inc files * d_a_alink_spinner work
Diffstat (limited to 'src/d/d_demo.cpp')
-rw-r--r--src/d/d_demo.cpp843
1 files changed, 358 insertions, 485 deletions
diff --git a/src/d/d_demo.cpp b/src/d/d_demo.cpp
index 11400f2804..ee205a18c8 100644
--- a/src/d/d_demo.cpp
+++ b/src/d/d_demo.cpp
@@ -4,284 +4,11 @@
//
#include "d/d_demo.h"
-#include "JSystem/JGadget/binary.h"
-#include "JSystem/JStudio/JStudio/fvb.h"
-#include "JSystem/JStudio/JStudio/stb.h"
+#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
#include "dolphin/types.h"
-
-//
-// Types:
-//
-
-struct _GXColor {};
-
-struct mDoGph_gInf_c {
- /* 80007FD8 */ void fadeOut(f32, _GXColor&);
-};
-
-struct Vec {};
-
-struct J3DAnmTransform {};
-
-struct mDoExt_McaMorf {
- /* 8001037C */ void setAnm(J3DAnmTransform*, int, f32, f32, f32, f32, void*);
- /* 800105C8 */ void play(Vec*, u32, s8);
-};
-
-struct jmessage_tControl {
- /* 80039B0C */ ~jmessage_tControl();
- /* 802299EC */ jmessage_tControl();
-};
-
-struct fopAc_ac_c {};
-
-struct daMP_c {
- /* 80031AD0 */ void daMP_c_THPPlayerPlay();
-};
-
-struct dStage_roomControl_c {
- static u8 mDemoArcName[10 + 2 /* padding */];
-};
-
-struct dRes_info_c {};
-
-struct dRes_control_c {
- /* 8003C37C */ void getRes(char const*, char const*, dRes_info_c*, int);
- /* 8003C400 */ void getIDRes(char const*, u16, dRes_info_c*, int);
-};
-
-struct dPa_levelEcallBack {};
-
-struct dKy_tevstr_c {};
-
-struct csXyz {};
-
-struct cXyz {
- /* 80009184 */ ~cXyz();
-};
-
-struct dPa_control_c {
- /* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*,
- u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*,
- cXyz const*, f32);
-
- static u8 mEmitterMng[4];
-};
-
-struct dMsgObject_c {
- /* 80237AB0 */ void setDemoMessage(u32);
-};
-
-struct _GXSpotFn {};
-
-struct _GXDistAttnFn {};
-
-struct JStage {
- struct TELight {};
-
- struct TObject {
- /* 80280E1C */ bool JSGGetName() const;
- /* 80280E24 */ void JSGUpdate();
- /* 80280E28 */ bool JSGGetFlag() const;
- /* 80280E30 */ void JSGSetFlag(u32);
- /* 80280E34 */ bool JSGGetData(u32, void*, u32) const;
- /* 80280E3C */ void JSGSetData(u32, void const*, u32);
- /* 80280E40 */ void JSGGetParent(JStage::TObject**, u32*) const;
- /* 80280E44 */ void JSGSetParent(JStage::TObject*, u32);
- /* 80280E48 */ void JSGSetRelation(bool, JStage::TObject*, u32);
- /* 80280E4C */ s32 JSGFindNodeID(char const*) const;
- /* 80280E54 */ void JSGGetNodeTransformation(u32, f32 (*)[4]) const;
- };
-
- struct TEObject {};
-
- struct TActor {
- /* 80280A48 */ ~TActor();
- /* 80280AA8 */ s32 JSGFGetType() const;
- /* 80280AC8 */ s32 JSGGetShape() const;
- /* 80280AD4 */ s32 JSGGetAnimation() const;
- /* 80280AE0 */ void JSGGetAnimationFrame() const;
- /* 80280AF4 */ void JSGGetAnimationTransition() const;
- /* 80280B00 */ s32 JSGGetTextureAnimation() const;
- /* 80280B0C */ void JSGGetTextureAnimationFrame() const;
- };
-
- struct TAmbientLight {
- /* 80280B20 */ ~TAmbientLight();
- /* 80280B80 */ s32 JSGFGetType() const;
- /* 80280B88 */ void JSGGetColor() const;
- };
-
- struct TECameraProjection {};
-
- struct TECameraView {};
-
- struct TCamera {
- /* 80280BA0 */ ~TCamera();
- /* 80280C00 */ s32 JSGFGetType() const;
- /* 80280C08 */ bool JSGGetProjectionType() const;
- /* 80280C10 */ void JSGSetProjectionType(JStage::TECameraProjection);
- /* 80280C48 */ void JSGGetProjectionField(f32*) const;
- /* 80280C4C */ void JSGSetProjectionField(f32 const*);
- /* 80280C50 */ bool JSGGetViewType() const;
- /* 80280C58 */ void JSGSetViewType(JStage::TECameraView);
- };
-
- struct TFog {
- /* 80280C80 */ ~TFog();
- /* 80280CE0 */ s32 JSGFGetType() const;
- /* 80280CE8 */ bool JSGGetFogFunction() const;
- /* 80280CF4 */ void JSGGetStartZ() const;
- /* 80280D00 */ void JSGGetEndZ() const;
- /* 80280D10 */ void JSGGetColor() const;
- };
-
- struct TLight {
- /* 80280D28 */ ~TLight();
- /* 80280D88 */ s32 JSGFGetType() const;
- /* 80280D90 */ bool JSGGetLightType() const;
- /* 80280D9C */ void JSGGetColor() const;
- /* 80280DB4 */ void JSGGetDistanceAttenuation(f32*, f32*, _GXDistAttnFn*) const;
- /* 80280DBC */ void JSGGetAngleAttenuation(f32*, _GXSpotFn*) const;
- /* 80280DC4 */ void JSGGetPosition(Vec*) const;
- /* 80280DCC */ void JSGGetDirection(Vec*) const;
- };
-
- struct TSystem {
- /* 80280E90 */ ~TSystem();
- /* 80280EF0 */ bool JSGFGetType() const;
- /* 80280F00 */ bool JSGCreateObject(char const*, JStage::TEObject, u32);
- /* 80280F08 */ void JSGDestroyObject(JStage::TObject*);
- /* 80280F0C */ bool JSGGetSystemData(u32);
- /* 80280F14 */ void JSGSetSystemData(u32, u32);
- };
-};
-
-struct dDemo_system_c {
- /* 80039528 */ void JSGFindObject(JStage::TObject**, char const*, JStage::TEObject) const;
- /* 80039AAC */ ~dDemo_system_c();
-};
-
-struct dDemo_particle_c {
- /* 80039F1C */ void emitter_create(u32);
- /* 80039F9C */ ~dDemo_particle_c();
-};
-
-struct dDemo_light_c {
- /* 80038E20 */ void JSGSetLightType(JStage::TELight);
- /* 80038E34 */ void JSGSetPosition(Vec const&);
- /* 80038E5C */ void JSGSetColor(_GXColor);
- /* 80038E8C */ void JSGSetDistanceAttenuation(f32, f32, _GXDistAttnFn);
- /* 80038EA8 */ void JSGSetAngleAttenuation(f32, _GXSpotFn);
- /* 80038EC0 */ void JSGSetDirection(Vec const&);
- /* 80039468 */ ~dDemo_light_c();
-};
-
-struct _GXFogType {};
-
-struct dDemo_fog_c {
- /* 80038EE8 */ void JSGSetFogFunction(_GXFogType);
- /* 80038EFC */ void JSGSetStartZ(f32);
- /* 80038F10 */ void JSGSetEndZ(f32);
- /* 80038F24 */ void JSGSetColor(_GXColor);
- /* 80039408 */ ~dDemo_fog_c();
-};
-
-struct dDemo_camera_c {
- /* 80038AC4 */ void JSGGetProjectionNear() const;
- /* 80038AF8 */ void JSGSetProjectionNear(f32);
- /* 80038B0C */ void JSGGetProjectionFar() const;
- /* 80038B40 */ void JSGSetProjectionFar(f32);
- /* 80038B54 */ void JSGGetProjectionFovy() const;
- /* 80038B88 */ void JSGSetProjectionFovy(f32);
- /* 80038B9C */ void JSGGetProjectionAspect() const;
- /* 80038BD0 */ void JSGSetProjectionAspect(f32);
- /* 80038BE4 */ void JSGGetViewPosition(Vec*) const;
- /* 80038C44 */ void JSGSetViewPosition(Vec const&);
- /* 80038C6C */ void JSGGetViewUpVector(Vec*) const;
- /* 80038CD0 */ void JSGSetViewUpVector(Vec const&);
- /* 80038CF8 */ void JSGGetViewTargetPosition(Vec*) const;
- /* 80038D5C */ void JSGSetViewTargetPosition(Vec const&);
- /* 80038D84 */ void JSGGetViewRoll() const;
- /* 80038DDC */ void JSGSetViewRoll(f32);
- /* 80039FFC */ ~dDemo_camera_c();
-};
-
-struct dDemo_ambient_c {
- /* 80038DF0 */ void JSGSetColor(_GXColor);
- /* 800394C8 */ ~dDemo_ambient_c();
-};
-
-struct JUTNameTab {
- /* 802DEA58 */ void getIndex(char const*) const;
-};
-
-namespace JStudio {
-namespace ctb {
-struct TControl {
- /* 8028112C */ void destroyObject_all();
-};
-
-}; // namespace ctb
-
-struct TCreateObject {
- /* 80285488 */ ~TCreateObject();
-};
-
-struct TFactory {
- /* 80285560 */ void appendCreateObject(JStudio::TCreateObject*);
-};
-
-struct TControl {
- /* 80285114 */ TControl();
- /* 80285228 */ void setFactory(JStudio::TFactory*);
- /* 80285250 */ void transformOnSet_setOrigin_TxyzRy(Vec const&, f32);
- /* 802852D0 */ void transformOnGet_setOrigin_TxyzRy(Vec const&, f32);
-};
-
-struct TParse {
- /* 8028566C */ TParse(JStudio::TControl*);
- /* 802856A8 */ ~TParse();
-};
-
-struct TAdaptor {
- /* 80286018 */ void adaptor_do_prepare();
- /* 8028601C */ void adaptor_do_begin();
- /* 80286020 */ void adaptor_do_end();
- /* 80286024 */ void adaptor_do_update(u32);
- /* 80286028 */ void adaptor_do_data(void const*, u32, void const*, u32);
-};
-
-struct TAdaptor_message {
- /* 802875E0 */ ~TAdaptor_message();
-};
-
-struct TObject_message {
- /* 80287640 */ TObject_message(JStudio::stb::data::TParse_TBlock_object const&,
- JStudio::TAdaptor_message*);
-};
-
-struct TObject {};
-
-}; // namespace JStudio
-
-struct JPABaseEmitter {};
-
-struct JStudio_JParticle {
- struct TCreateObject {
- /* 8028E3A0 */ ~TCreateObject();
- /* 8028E400 */ void create(JStudio::TObject**,
- JStudio::stb::data::TParse_TBlock_object const&);
- /* 8028E4E4 */ void emitter_destroy(JPABaseEmitter*);
- };
-};
-
-struct JMessage {
- struct TControl {
- /* 802A758C */ ~TControl();
- };
-};
+#include "rel/d/a/d_a_movie_player/d_a_movie_player.h"
+#include "d/msg/d_msg_object.h"
//
// Forward References:
@@ -398,7 +125,6 @@ extern "C" u8 m_branchData__7dDemo_c[4];
// External References:
//
-extern "C" void OSReport_Error();
extern "C" void fadeOut__13mDoGph_gInf_cFfR8_GXColor();
extern "C" void __dt__4cXyzFv();
extern "C" void setAnm__14mDoExt_McaMorfFP15J3DAnmTransformiffffPv();
@@ -498,7 +224,6 @@ extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl();
extern "C" void getIndex__10JUTNameTabCFPCc();
-extern "C" void PSMTXCopy();
extern "C" void __register_global_object();
extern "C" void _savegpr_21();
extern "C" void _savegpr_27();
@@ -508,9 +233,6 @@ extern "C" void _restgpr_21();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
-extern "C" void strncmp();
-extern "C" void strcmp();
-extern "C" void strlen();
extern "C" extern void* __vt__Q26JStage6TActor[35 + 1 /* padding */];
extern "C" extern void* __vt__Q26JStage13TAmbientLight[17 + 1 /* padding */];
extern "C" extern void* __vt__Q26JStage7TCamera[37 + 1 /* padding */];
@@ -527,12 +249,7 @@ extern "C" extern void* __vt__Q214JStudio_JStage13TCreateObject[4];
extern "C" extern void* __vt__Q215JStudio_JAudio213TCreateObject[4];
extern "C" extern void* __vt__Q217JStudio_JParticle13TCreateObject[6];
extern "C" u8 mDemoArcName__20dStage_roomControl_c[10 + 2 /* padding */];
-extern "C" extern u8 g_dComIfG_gameInfo[122384];
-extern "C" extern u8 g_env_light[4880];
-extern "C" extern u32 g_blackColor;
-extern "C" extern u32 __float_max;
extern "C" extern u8 data_80450B74[4];
-extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
extern "C" u8 mEmitterMng__13dPa_control_c[4];
//
@@ -786,6 +503,55 @@ SECTION_DATA extern void* data_803A7BF4[9] = {
(void*)func_80037E44,
};
+namespace {
+/* 80037DE4-80037E44 032724 0060+00 1/0 0/0 0/0 .text
+ * __dt__Q220@unnamed@d_demo_cpp@24jstudio_tAdaptor_messageFv */
+#pragma push
+#pragma optimization_level 0
+#pragma optimizewithasm off
+asm jstudio_tAdaptor_message::~jstudio_tAdaptor_message() {
+ nofralloc
+#include "asm/d/d_demo/func_80037DE4.s"
+}
+#pragma pop
+
+/* 80037E44-80037E74 032784 0030+00 1/0 0/0 0/0 .text
+ * adaptor_do_MESSAGE__Q220@unnamed@d_demo_cpp@24jstudio_tAdaptor_messageFQ37JStudio4data15TEOperationDataPCvUl
+ */
+#pragma push
+#pragma optimization_level 0
+#pragma optimizewithasm off
+asm void jstudio_tAdaptor_message::adaptor_do_MESSAGE(JStudio::data::TEOperationData param_0, const void* param_1, u32 param_2) {
+ nofralloc
+#include "asm/d/d_demo/func_80037E44.s"
+}
+#pragma pop
+
+/* 80037E74-80037ED4 0327B4 0060+00 1/0 0/0 0/0 .text
+ * __dt__Q220@unnamed@d_demo_cpp@29jstudio_tCreateObject_messageFv */
+#pragma push
+#pragma optimization_level 0
+#pragma optimizewithasm off
+asm jstudio_tCreateObject_message::~jstudio_tCreateObject_message() {
+ nofralloc
+#include "asm/d/d_demo/func_80037E74.s"
+}
+#pragma pop
+
+/* 80037ED4-80038020 032814 014C+00 1/0 0/0 0/0 .text
+ * create__Q220@unnamed@d_demo_cpp@29jstudio_tCreateObject_messageFPPQ27JStudio7TObjectRCQ47JStudio3stb4data20TParse_TBlock_object
+ */
+#pragma push
+#pragma optimization_level 0
+#pragma optimizewithasm off
+asm void jstudio_tCreateObject_message::create(JStudio::TObject** param_0, const JStudio::stb::data::TParse_TBlock_object& param_1) {
+ nofralloc
+#include "asm/d/d_demo/func_80037ED4.s"
+}
+#pragma pop
+
+}; // namespace
+
/* 80037DE4-80037E44 032724 0060+00 1/0 0/0 0/0 .text
* __dt__Q220@unnamed@d_demo_cpp@24jstudio_tAdaptor_messageFv */
#pragma push
@@ -858,7 +624,8 @@ asm dDemo_actor_c::dDemo_actor_c() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm dDemo_actor_c::~dDemo_actor_c() {
+// asm dDemo_actor_c::~dDemo_actor_c() {
+extern "C" asm void __dt__13dDemo_actor_cFv() {
nofralloc
#include "asm/d/d_demo/__dt__13dDemo_actor_cFv.s"
}
@@ -903,40 +670,40 @@ asm void dDemo_actor_c::getPrm_Morf() {
static u8 dummy[20];
/* 80450E00-80450E04 000300 0004+00 2/2 0/0 0/0 .sbss m_system__7dDemo_c */
-u8 dDemo_c::m_system[4];
+dDemo_system_c* dDemo_c::m_system;
/* 80450E04-80450E08 000304 0004+00 6/6 3/3 0/0 .sbss m_control__7dDemo_c */
-JStudio::stb::TControl* dDemo_c::m_control;
+JStudio::TControl* dDemo_c::m_control;
/* 80450E08-80450E0C 000308 0004+00 2/2 0/0 0/0 .sbss m_stage__7dDemo_c */
-u8 dDemo_c::m_stage[4];
+JStudio_JStage::TCreateObject* dDemo_c::m_stage;
/* 80450E0C-80450E10 00030C 0004+00 2/2 0/0 0/0 .sbss m_audio__7dDemo_c */
-u8 dDemo_c::m_audio[4];
+JStudio_JAudio2::TCreateObject* dDemo_c::m_audio;
/* 80450E10-80450E14 000310 0004+00 2/2 0/0 0/0 .sbss m_particle__7dDemo_c */
-u8 dDemo_c::m_particle[4];
+dDemo_particle_c* dDemo_c::m_particle;
/* 80450E14-80450E18 000314 0004+00 2/2 0/0 0/0 .sbss m_message__7dDemo_c */
-u8 dDemo_c::m_message[4];
+jstudio_tCreateObject_message* dDemo_c::m_message;
/* 80450E18-80450E1C 000318 0004+00 2/2 0/0 0/0 .sbss m_factory__7dDemo_c */
-u8 dDemo_c::m_factory[4];
+JStudio::TFactory* dDemo_c::m_factory;
/* 80450E1C-80450E20 00031C 0004+00 2/2 1/1 0/0 .sbss m_mesgControl__7dDemo_c */
-u8 dDemo_c::m_mesgControl[4];
+jmessage_tControl* dDemo_c::m_mesgControl;
/* 80450E20-80450E24 000320 0004+00 5/5 9/9 7/7 .sbss m_object__7dDemo_c */
dDemo_object_c* dDemo_c::m_object;
/* 80450E24-80450E28 000324 0004+00 4/4 0/0 0/0 .sbss m_data__7dDemo_c */
-u8 dDemo_c::m_data[4];
+const u8* dDemo_c::m_data;
/* 80450E28-80450E2C 000328 0004+00 2/2 0/0 1/1 .sbss m_frame__7dDemo_c */
-u8 dDemo_c::m_frame[4];
+int dDemo_c::m_frame;
/* 80450E2C-80450E30 00032C 0004+00 2/2 0/0 0/0 .sbss m_translation__7dDemo_c */
-u8 dDemo_c::m_translation[4];
+cXyz* dDemo_c::m_translation;
/* 80450E30-80450E34 000330 0004+00 2/2 0/0 0/0 .sbss m_rotationY__7dDemo_c */
f32 dDemo_c::m_rotationY;
@@ -948,13 +715,13 @@ u32 dDemo_c::m_frameNoMsg;
s32 dDemo_c::m_mode;
/* 80450E3C-80450E40 00033C 0004+00 2/2 1/1 0/0 .sbss m_status__7dDemo_c */
-u8 dDemo_c::m_status[4];
+u32 dDemo_c::m_status;
/* 80450E40-80450E44 000340 0002+02 2/2 0/0 0/0 .sbss m_branchType__7dDemo_c */
-u8 dDemo_c::m_branchType[2 + 2 /* padding */];
+u16 dDemo_c::m_branchType;
/* 80450E44-80450E48 000344 0004+00 5/5 0/0 0/0 .sbss m_branchData__7dDemo_c */
-u8 dDemo_c::m_branchData[4];
+const u8* dDemo_c::m_branchData;
/* 80450E48-80450E4C -00001 0004+00 1/1 0/0 0/0 .sbss None */
/* 80450E48 0001+00 data_80450E48 None */
@@ -1004,14 +771,9 @@ asm void dDemo_setDemoData(fopAc_ac_c* param_0, u8 param_1, mDoExt_McaMorf* para
#pragma pop
/* 800387A8-800387EC 0330E8 0044+00 1/1 0/0 0/0 .text branchFile__FPCc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void branchFile(char const* param_0) {
- nofralloc
-#include "asm/d/d_demo/branchFile__FPCc.s"
+static void branchFile(char const* resName) {
+ dDemo_c::setBranchData((u8*)dComIfG_getObjectRes(dStage_roomControl_c::getDemoArcName(), resName));
}
-#pragma pop
/* ############################################################################################## */
/* 803797F8-803797F8 005E58 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -1021,13 +783,7 @@ SECTION_DEAD static char const* const stringBase_803797F8 = "-";
#pragma pop
/* 80450620-80450628 0000A0 0002+06 3/3 1/1 0/0 .sdata m_branchId__7dDemo_c */
-SECTION_SDATA u16 dDemo_c::m_branchId[1 + 3 /* padding */] = {
- 0xFFFF,
- /* padding */
- 0x0000,
- 0x0000,
- 0x0000,
-};
+SECTION_SDATA s16 dDemo_c::m_branchId = -1;
/* 800387EC-80038920 03312C 0134+00 1/0 0/0 0/0 .text JSGSetData__13dDemo_actor_cFUlPCvUl
*/
@@ -1159,7 +915,7 @@ static asm void getView() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dDemo_camera_c::JSGGetProjectionNear() const {
+asm f32 dDemo_camera_c::JSGGetProjectionNear() const {
nofralloc
#include "asm/d/d_demo/JSGGetProjectionNear__14dDemo_camera_cCFv.s"
}
@@ -1179,7 +935,7 @@ asm void dDemo_camera_c::JSGSetProjectionNear(f32 param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dDemo_camera_c::JSGGetProjectionFar() const {
+asm f32 dDemo_camera_c::JSGGetProjectionFar() const {
nofralloc
#include "asm/d/d_demo/JSGGetProjectionFar__14dDemo_camera_cCFv.s"
}
@@ -1203,7 +959,7 @@ SECTION_SDATA2 static f32 lit_4642 = 60.0f;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dDemo_camera_c::JSGGetProjectionFovy() const {
+asm f32 dDemo_camera_c::JSGGetProjectionFovy() const {
nofralloc
#include "asm/d/d_demo/JSGGetProjectionFovy__14dDemo_camera_cCFv.s"
}
@@ -1228,7 +984,7 @@ SECTION_SDATA2 static f32 lit_4655 = 19.0f / 14.0f;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dDemo_camera_c::JSGGetProjectionAspect() const {
+asm f32 dDemo_camera_c::JSGGetProjectionAspect() const {
nofralloc
#include "asm/d/d_demo/JSGGetProjectionAspect__14dDemo_camera_cCFv.s"
}
@@ -1324,7 +1080,7 @@ SECTION_SDATA2 static f32 lit_4710[1 + 1 /* padding */] = {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dDemo_camera_c::JSGGetViewRoll() const {
+asm f32 dDemo_camera_c::JSGGetViewRoll() const {
nofralloc
#include "asm/d/d_demo/JSGGetViewRoll__14dDemo_camera_cCFv.s"
}
@@ -1456,113 +1212,150 @@ asm void dDemo_fog_c::JSGSetColor(_GXColor param_0) {
#pragma pop
/* 80038F54-80038F70 033894 001C+00 1/1 0/0 0/0 .text __ct__14dDemo_object_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dDemo_object_c::dDemo_object_c() {
- nofralloc
-#include "asm/d/d_demo/__ct__14dDemo_object_cFv.s"
+dDemo_object_c::dDemo_object_c() {
+ mActorNum = 0;
+ mLightNum = 0;
+ mpCamera = NULL;
+ mpAmbient = NULL;
+ mpFog = NULL;
}
-#pragma pop
/* 80038F70-80038FC0 0338B0 0050+00 1/1 0/0 0/0 .text __dt__14dDemo_object_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dDemo_object_c::~dDemo_object_c() {
- nofralloc
-#include "asm/d/d_demo/__dt__14dDemo_object_cFv.s"
+dDemo_object_c::~dDemo_object_c() {
+ remove();
}
-#pragma pop
/* 80038FC0-80039088 033900 00C8+00 1/1 0/0 0/0 .text appendActor__14dDemo_object_cFP10fopAc_ac_c
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dDemo_object_c::appendActor(fopAc_ac_c* param_0) {
- nofralloc
-#include "asm/d/d_demo/appendActor__14dDemo_object_cFP10fopAc_ac_c.s"
+JStage::TObject* dDemo_object_c::appendActor(fopAc_ac_c* p_actor) {
+ dDemo_actor_c* demoActor = dDemo_c::getActor(p_actor->mDemoActorId);
+
+ if (demoActor != NULL) {
+ return demoActor;
+ }
+
+ if (mActorNum >= 32) {
+ return NULL;
+ }
+
+ demoActor = new dDemo_actor_c();
+ if (demoActor == NULL) {
+ return NULL;
+ }
+
+ u8 curActorNum = mActorNum;
+ mActorNum++;
+ mpActors[curActorNum] = demoActor;
+ demoActor->setActor(p_actor);
+ p_actor->mDemoActorId = mActorNum;
+
+ if (p_actor->field_0x524 != NULL) {
+ demoActor->setModel((J3DModel*)p_actor->field_0x524);
+ }
+
+ return demoActor;
}
-#pragma pop
/* 80039088-800390AC 0339C8 0024+00 2/2 6/6 7/7 .text getActor__14dDemo_object_cFUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm dDemo_actor_c* dDemo_object_c::getActor(u8 param_0) {
- nofralloc
-#include "asm/d/d_demo/getActor__14dDemo_object_cFUc.s"
+dDemo_actor_c* dDemo_object_c::getActor(u8 actorId) {
+ if (actorId == 0 || actorId > 32) {
+ return NULL;
+ }
+
+ return mpActors[actorId - 1];
}
-#pragma pop
/* 800390AC-80039128 0339EC 007C+00 1/1 0/0 0/0 .text createCamera__14dDemo_object_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dDemo_object_c::createCamera() {
- nofralloc
-#include "asm/d/d_demo/createCamera__14dDemo_object_cFv.s"
+JStage::TObject* dDemo_object_c::createCamera() {
+ if (mpCamera != NULL) {
+ return mpCamera;
+ }
+
+ mpCamera = new dDemo_camera_c();
+ return mpCamera;
}
-#pragma pop
/* 80039128-8003913C 033A68 0014+00 0/0 3/3 0/0 .text getActiveCamera__14dDemo_object_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dDemo_object_c::getActiveCamera() {
- nofralloc
-#include "asm/d/d_demo/getActiveCamera__14dDemo_object_cFv.s"
+JStage::TObject* dDemo_object_c::getActiveCamera() {
+ if (mpCamera != NULL) {
+ return mpCamera;
+ }
+
+ return NULL;
}
-#pragma pop
/* 8003913C-800391B8 033A7C 007C+00 1/1 0/0 0/0 .text createAmbient__14dDemo_object_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dDemo_object_c::createAmbient() {
- nofralloc
-#include "asm/d/d_demo/createAmbient__14dDemo_object_cFv.s"
+JStage::TObject* dDemo_object_c::createAmbient() {
+ if (mpAmbient != NULL) {
+ return mpAmbient;
+ }
+
+ mpAmbient = new dDemo_ambient_c();
+ return mpAmbient;
}
-#pragma pop
/* 800391B8-80039258 033AF8 00A0+00 1/1 0/0 0/0 .text appendLight__14dDemo_object_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dDemo_object_c::appendLight() {
- nofralloc
-#include "asm/d/d_demo/appendLight__14dDemo_object_cFv.s"
+JStage::TObject* dDemo_object_c::appendLight() {
+ if (mLightNum >= 8) {
+ return NULL;
+ }
+
+ dDemo_light_c* demoLight = new dDemo_light_c();
+ if (demoLight == NULL) {
+ return NULL;
+ }
+
+ u8 curLightNum = mLightNum;
+ mLightNum++;
+ mpLights[curLightNum] = demoLight;
+
+ return demoLight;
}
-#pragma pop
/* 80039258-800392D4 033B98 007C+00 1/1 0/0 0/0 .text createFog__14dDemo_object_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dDemo_object_c::createFog() {
- nofralloc
-#include "asm/d/d_demo/createFog__14dDemo_object_cFv.s"
+JStage::TObject* dDemo_object_c::createFog() {
+ if (mpFog != NULL) {
+ return mpFog;
+ }
+
+ mpFog = new dDemo_fog_c();
+ return mpFog;
}
-#pragma pop
/* 800392D4-80039408 033C14 0134+00 2/2 0/0 0/0 .text remove__14dDemo_object_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dDemo_object_c::remove() {
- nofralloc
-#include "asm/d/d_demo/remove__14dDemo_object_cFv.s"
+void dDemo_object_c::remove() {
+ while (mActorNum != 0) {
+ delete mpActors[--mActorNum];
+ }
+
+ if (mpCamera != NULL) {
+ delete mpCamera;
+ mpCamera = NULL;
+ }
+
+ if (mpAmbient != NULL) {
+ delete mpAmbient;
+ mpAmbient = NULL;
+ }
+
+ while (mLightNum != 0) {
+ delete mpLights[--mLightNum];
+ }
+
+ if (mpFog != NULL) {
+ delete mpFog;
+ mpFog = NULL;
+ }
}
-#pragma pop
/* 80039408-80039468 033D48 0060+00 1/0 0/0 0/0 .text __dt__11dDemo_fog_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm dDemo_fog_c::~dDemo_fog_c() {
+// asm dDemo_fog_c::~dDemo_fog_c() {
+extern "C" asm void __dt__11dDemo_fog_cFv() {
nofralloc
#include "asm/d/d_demo/__dt__11dDemo_fog_cFv.s"
}
@@ -1572,7 +1365,8 @@ asm dDemo_fog_c::~dDemo_fog_c() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm dDemo_light_c::~dDemo_light_c() {
+// asm dDemo_light_c::~dDemo_light_c() {
+extern "C" asm void __dt__13dDemo_light_cFv() {
nofralloc
#include "asm/d/d_demo/__dt__13dDemo_light_cFv.s"
}
@@ -1582,36 +1376,80 @@ asm dDemo_light_c::~dDemo_light_c() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm dDemo_ambient_c::~dDemo_ambient_c() {
+// asm dDemo_ambient_c::~dDemo_ambient_c() {
+extern "C" asm void __dt__15dDemo_ambient_cFv() {
nofralloc
#include "asm/d/d_demo/__dt__15dDemo_ambient_cFv.s"
}
#pragma pop
-/* ############################################################################################## */
-/* 803797F8-803797F8 005E58 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_803797FA = "d_act";
-#pragma pop
-
/* 80039528-80039678 033E68 0150+00 1/0 0/0 0/0 .text
* JSGFindObject__14dDemo_system_cCFPPQ26JStage7TObjectPCcQ26JStage8TEObject */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dDemo_system_c::JSGFindObject(JStage::TObject** param_0, char const* param_1,
- JStage::TEObject param_2) const {
- nofralloc
-#include "asm/d/d_demo/JSGFindObject__14dDemo_system_cCFPPQ26JStage7TObjectPCcQ26JStage8TEObject.s"
+bool dDemo_system_c::JSGFindObject(JStage::TObject** p_TObj, char const* actorName,
+ JStage::TEObject objType) const {
+ if (mpObject == NULL) {
+ return true;
+ }
+
+ if (objType == JStage::TOBJ_ACTOR || objType == JStage::TOBJ_ACTOR_UNK) {
+ fopAc_ac_c* actor = fopAcM_searchFromName(actorName, 0, 0);
+
+ if (actor == NULL) {
+ if (objType == JStage::TOBJ_ACTOR && !strncmp(actorName, "d_act", 5)) {
+ actor = (fopAc_ac_c*)fopAcM_fastCreate(actorName, 0, NULL, -1, NULL, NULL, NULL, NULL);
+ if (actor == NULL) {
+ return true;
+ }
+ fopAcM_setStageLayer(actor);
+ } else {
+ return true;
+ }
+ }
+
+ *p_TObj = mpObject->appendActor(actor);
+ } else if (objType == JStage::TOBJ_CAMERA) {
+ *p_TObj = mpObject->createCamera();
+ } else if (objType == JStage::TOBJ_AMBIENT) {
+ *p_TObj = mpObject->createAmbient();
+ } else if (objType == JStage::TOBJ_LIGHT) {
+ *p_TObj = mpObject->appendLight();
+ } else if (objType == JStage::TOBJ_FOG) {
+ *p_TObj = mpObject->createFog();
+ }
+
+ return *p_TObj == NULL;
}
-#pragma pop
/* ############################################################################################## */
/* 80451DE0-80451DE8 0003E0 0008+00 1/1 0/0 0/0 .sdata2 @5123 */
-SECTION_SDATA2 static f64 lit_5123 = 0.03333333507180214;
+SECTION_SDATA2 static f64 lit_5123 = 1.0 / 29.999998435378155;
/* 80039678-80039910 033FB8 0298+00 0/0 1/1 0/0 .text create__7dDemo_cFv */
+#ifdef NONMATCHING
+void dDemo_c::create() {
+ m_system = new dDemo_system_c();
+ m_control = new JStudio::TControl();
+ m_mesgControl = new jmessage_tControl();
+ m_stage = new JStudio_JStage::TCreateObject(m_system);
+ m_audio = new JStudio_JAudio2::TCreateObject(Z2GetSoundStarter(), m_system);
+ m_particle = new dDemo_particle_c(dPa_control_c::getEmitterManager(), m_system);
+ m_message = new jstudio_tCreateObject_message();
+ m_factory = new JStudio::TFactory();
+ m_object = new dDemo_object_c();
+
+ m_control->setSecondPerFrame(1.0 / 29.999998435378155);
+ m_control->setFactory(m_factory);
+ m_control->appendCreateObject(m_stage);
+ m_control->appendCreateObject(m_audio);
+ m_control->appendCreateObject(m_particle);
+ m_control->appendCreateObject(m_message);
+
+ m_system->setObject(m_object);
+ m_data = NULL;
+ m_mode = 0;
+ reset();
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1620,6 +1458,7 @@ asm void dDemo_c::create() {
#include "asm/d/d_demo/create__7dDemo_cFv.s"
}
#pragma pop
+#endif
/* 80039910-80039AAC 034250 019C+00 0/0 1/1 0/0 .text remove__7dDemo_cFv */
#pragma push
@@ -1635,7 +1474,8 @@ asm void dDemo_c::remove() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm dDemo_system_c::~dDemo_system_c() {
+// asm dDemo_system_c::~dDemo_system_c() {
+extern "C" asm void __dt__14dDemo_system_cFv() {
nofralloc
#include "asm/d/d_demo/__dt__14dDemo_system_cFv.s"
}
@@ -1645,105 +1485,136 @@ asm dDemo_system_c::~dDemo_system_c() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm jmessage_tControl::~jmessage_tControl() {
+// asm jmessage_tControl::~jmessage_tControl() {
+extern "C" asm void __dt__17jmessage_tControlFv() {
nofralloc
#include "asm/d/d_demo/__dt__17jmessage_tControlFv.s"
}
#pragma pop
-/* ############################################################################################## */
-/* 803797F8-803797F8 005E58 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80379800 = "デモデータ読み込みエラー!!\n";
-#pragma pop
+/* 80039B6C-80039CF8 0344AC 018C+00 1/1 1/1 0/0 .text start__7dDemo_cFPCUcP4cXyzf */
+int dDemo_c::start(u8 const* p_data, cXyz* p_translation, f32 rotationY) {
+ m_control->reset();
+ JStudio::TParse parser(m_control);
-/* 8042465C-80424668 05137C 000C+00 1/1 0/0 0/0 .bss @5233 */
-static u8 lit_5233[12];
+ if (!parser.parse(p_data, 0)) {
+ // "Demo data read error!!\n"
+ OSReport_Error("デモデータ読み込みエラー!!\n");
+ return 0;
+ }
-/* 80424668-80424678 051388 000C+04 1/1 0/0 0/0 .bss l_translation$5232 */
-static f32 l_translation[3 + 1 /* padding */];
+ if (m_data == NULL) {
+ m_control->setSuspend(0);
+ }
+
+ m_control->forward(0);
+ m_translation = p_translation;
-/* 80450E50-80450E58 000350 0008+00 1/1 0/0 0/0 .sbss None */
-static u8 data_80450E50[8];
+ if (p_translation != NULL) {
+ static cXyz l_translation;
+ l_translation = *m_translation;
+ m_translation = &l_translation;
+ m_rotationY = rotationY;
-/* 80039B6C-80039CF8 0344AC 018C+00 1/1 1/1 0/0 .text start__7dDemo_cFPCUcP4cXyzf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dDemo_c::start(u8 const* param_0, cXyz* param_1, f32 param_2) {
- nofralloc
-#include "asm/d/d_demo/start__7dDemo_cFPCUcP4cXyzf.s"
+ m_control->transform_enable(true);
+ m_control->transform_setOrigin(*m_translation, m_rotationY);
+ }
+
+ m_mode = 1;
+ reset();
+
+ m_data = NULL;
+ m_branchData = (u8*)p_data;
+ return 1;
}
-#pragma pop
/* 80039CF8-80039D4C 034638 0054+00 1/1 2/2 0/0 .text end__7dDemo_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dDemo_c::end() {
- nofralloc
-#include "asm/d/d_demo/end__7dDemo_cFv.s"
+void dDemo_c::end() {
+ m_control->destroyObject_all();
+ m_object->remove();
+ m_data = NULL;
+ m_mode = 0;
}
-#pragma pop
/* 80039D4C-80039DA4 03468C 0058+00 1/1 0/0 0/0 .text branch__7dDemo_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dDemo_c::branch() {
- nofralloc
-#include "asm/d/d_demo/branch__7dDemo_cFv.s"
-}
-#pragma pop
+void dDemo_c::branch() {
+ m_control->destroyObject_all();
+ const u8* branchData = m_branchData;
+ m_branchData = NULL;
-/* ############################################################################################## */
-/* 80451DE8-80451DF0 0003E8 0004+04 1/1 0/0 0/0 .sdata2 @5322 */
-SECTION_SDATA2 static f32 lit_5322[1 + 1 /* padding */] = {
- 1.0f / 10.0f,
- /* padding */
- 0.0f,
-};
+ start(branchData, m_translation, m_rotationY);
+}
/* 80039DA4-80039EDC 0346E4 0138+00 0/0 1/1 0/0 .text update__7dDemo_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dDemo_c::update() {
- nofralloc
-#include "asm/d/d_demo/update__7dDemo_cFv.s"
+int dDemo_c::update() {
+ if (m_data == NULL) {
+ if (m_branchData == NULL) {
+ return 0;
+ } else {
+ m_data = m_branchData;
+ m_branchData = NULL;
+ return 1;
+ }
+ } else if (isStatus(1)) {
+ daMP_c::daMP_c_THPPlayerPlay();
+ if (isStatus(1)) {
+ return 1;
+ }
+ }
+
+ if (m_control->forward(1) != 0) {
+ m_frame++;
+
+ if (m_control->getSuspend() <= 0) {
+ m_frameNoMsg++;
+ }
+ } else {
+ m_mode = 2;
+ }
+
+ if (m_branchData != NULL) {
+ branch();
+ }
+
+ if (dComIfGs_staffroll_next_go_check() != 0) {
+ dScnKy_env_light_c* env_light = &g_env_light;
+
+ if (dComIfGs_staffroll_next_go_check() > 10) {
+ env_light->field_0x130c = 0;
+ m_mode = 2;
+ } else {
+ if (dComIfGs_staffroll_next_go_check() == 1) {
+ mDoGph_gInf_c::fadeOut(0.1f, g_blackColor);
+ }
+ env_light->field_0x130c++;
+ }
+ }
+
+ return 1;
}
-#pragma pop
/* 80039EDC-80039EEC 03481C 0010+00 1/1 0/0 0/0 .text setBranchType__7dDemo_cFUs */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dDemo_c::setBranchType(u16 param_0) {
- nofralloc
-#include "asm/d/d_demo/setBranchType__7dDemo_cFUs.s"
+void dDemo_c::setBranchType(u16 type) {
+ m_branchType = type;
+ m_branchId = -1;
}
-#pragma pop
/* 80039EEC-80039F04 03482C 0018+00 0/0 2/2 0/0 .text setBranchId__7dDemo_cFUss */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dDemo_c::setBranchId(u16 param_0, s16 param_1) {
- nofralloc
-#include "asm/d/d_demo/setBranchId__7dDemo_cFUss.s"
+void dDemo_c::setBranchId(u16 param_0, s16 branchId) {
+ if (param_0 != m_branchType) {
+ return;
+ }
+
+ m_branchId = branchId;
}
-#pragma pop
/* 80039F04-80039F1C 034844 0018+00 2/2 0/0 0/0 .text reset__7dDemo_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dDemo_c::reset() {
- nofralloc
-#include "asm/d/d_demo/reset__7dDemo_cFv.s"
+void dDemo_c::reset() {
+ m_frame = 0;
+ m_frameNoMsg = 0;
+ m_status = 0;
+ m_branchData = NULL;
}
-#pragma pop
/* 80039F1C-80039F9C 03485C 0080+00 1/0 0/0 0/0 .text emitter_create__16dDemo_particle_cFUl */
#pragma push
@@ -1759,7 +1630,8 @@ asm void dDemo_particle_c::emitter_create(u32 param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm dDemo_particle_c::~dDemo_particle_c() {
+// asm dDemo_particle_c::~dDemo_particle_c() {
+extern "C" asm void __dt__16dDemo_particle_cFv() {
nofralloc
#include "asm/d/d_demo/__dt__16dDemo_particle_cFv.s"
}
@@ -1769,7 +1641,8 @@ asm dDemo_particle_c::~dDemo_particle_c() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm dDemo_camera_c::~dDemo_camera_c() {
+// asm dDemo_camera_c::~dDemo_camera_c() {
+extern "C" asm void __dt__14dDemo_camera_cFv() {
nofralloc
#include "asm/d/d_demo/__dt__14dDemo_camera_cFv.s"
}
@@ -1802,7 +1675,7 @@ asm void dDemo_actor_c::JSGGetNodeTransformation(u32 param_0, f32 (*param_1)[4])
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dDemo_actor_c::JSGGetAnimationFrameMax() const {
+asm f32 dDemo_actor_c::JSGGetAnimationFrameMax() const {
nofralloc
#include "asm/d/d_demo/JSGGetAnimationFrameMax__13dDemo_actor_cCFv.s"
}
@@ -1813,7 +1686,7 @@ asm void dDemo_actor_c::JSGGetAnimationFrameMax() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dDemo_actor_c::JSGGetTextureAnimationFrameMax() const {
+asm f32 dDemo_actor_c::JSGGetTextureAnimationFrameMax() const {
nofralloc
#include "asm/d/d_demo/JSGGetTextureAnimationFrameMax__13dDemo_actor_cCFv.s"
}