Port JStudio work to new branch (#160)

* build fix

* stb

* functionvalue

* fvb

* jstudio cleanup

* d
This commit is contained in:
notyourav
2021-11-26 06:50:22 -08:00
committed by GitHub
parent 74ed2da8bc
commit c4ef30bc95
35 changed files with 2540 additions and 2121 deletions
+4 -23
View File
@@ -7,25 +7,6 @@
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
namespace JGadget {
struct binary {
struct TEBit {};
struct TParse_header_block {
/* 802DC8C8 */ ~TParse_header_block();
/* 802DC910 */ void parse_next(void const**, u32);
};
/* 802DC864 */ void parseVariableUInt_16_32_following(void const*, u32*, u32*,
JGadget::binary::TEBit*);
};
}; // namespace JGadget
//
// Forward References:
//
@@ -53,9 +34,9 @@ extern "C" extern void* __vt__Q37JGadget6binary19TParse_header_block[5];
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JGadget::binary::parseVariableUInt_16_32_following(void const* param_0, u32* param_1,
u32* param_2,
JGadget::binary::TEBit* param_3) {
asm const void*
JGadget::binary::parseVariableUInt_16_32_following(void const* param_0, u32* param_1, u32* param_2,
JGadget::binary::TEBit* param_3) {
nofralloc
#include "asm/JSystem/JGadget/binary/parseVariableUInt_16_32_following__Q27JGadget6binaryFPCvPUlPUlPQ37JGadget6binary5TEBit.s"
}
@@ -77,7 +58,7 @@ asm JGadget::binary::TParse_header_block::~TParse_header_block() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JGadget::binary::TParse_header_block::parse_next(void const** param_0, u32 param_1) {
asm bool JGadget::binary::TParse_header_block::parse_next(void const** param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/JGadget/binary/parse_next__Q37JGadget6binary19TParse_header_blockFPPCvUl.s"
}
+2 -1
View File
@@ -104,7 +104,8 @@ asm void JGadget::TNodeLinkList::Insert(JGadget::TNodeLinkList::iterator param_0
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JGadget::TNodeLinkList::Erase(JGadget::TLinkListNode* param_0) {
asm JGadget::TNodeLinkList::iterator
JGadget::TNodeLinkList::Erase(JGadget::TLinkListNode* param_0) {
nofralloc
#include "asm/JSystem/JGadget/linklist/Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode.s"
}
+1 -19
View File
@@ -4,6 +4,7 @@
//
#include "JSystem/JMessage/resource.h"
#include "JSystem/JGadget/binary.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -58,25 +59,6 @@ struct JMessage {
};
};
namespace JGadget {
struct binary {
struct TParse_header_block {
/* 802DC8C8 */ ~TParse_header_block();
};
};
struct TLinkListNode {};
struct TNodeLinkList {
struct iterator {};
/* 802DCA1C */ ~TNodeLinkList();
/* 802DCBA8 */ void Insert(JGadget::TNodeLinkList::iterator, JGadget::TLinkListNode*);
/* 802DCBD4 */ void Erase(JGadget::TLinkListNode*);
};
}; // namespace JGadget
//
// Forward References:
//
+4
View File
@@ -6,7 +6,9 @@ LIBJSTUDIO_A_CPP_FILES := \
libs/JSystem/JStudio/JStudio/ctb.cpp \
libs/JSystem/JStudio/JStudio/ctb-data.cpp \
libs/JSystem/JStudio/JStudio/functionvalue.cpp \
libs/JSystem/JStudio/JStudio/functionvalue-inline.cpp \
libs/JSystem/JStudio/JStudio/fvb.cpp \
libs/JSystem/JStudio/JStudio/fvb-inline.cpp \
libs/JSystem/JStudio/JStudio/fvb-data.cpp \
libs/JSystem/JStudio/JStudio/fvb-data-parse.cpp \
libs/JSystem/JStudio/JStudio/jstudio-control.cpp \
@@ -22,7 +24,9 @@ LIBJSTUDIO_A_O_FILES := \
$(BUILD_DIR)/libs/JSystem/JStudio/JStudio/ctb.o \
$(BUILD_DIR)/libs/JSystem/JStudio/JStudio/ctb-data.o \
$(BUILD_DIR)/libs/JSystem/JStudio/JStudio/functionvalue.o \
$(BUILD_DIR)/libs/JSystem/JStudio/JStudio/functionvalue-inline.o \
$(BUILD_DIR)/libs/JSystem/JStudio/JStudio/fvb.o \
$(BUILD_DIR)/libs/JSystem/JStudio/JStudio/fvb-inline.o \
$(BUILD_DIR)/libs/JSystem/JStudio/JStudio/fvb-data.o \
$(BUILD_DIR)/libs/JSystem/JStudio/JStudio/fvb-data-parse.o \
$(BUILD_DIR)/libs/JSystem/JStudio/JStudio/jstudio-control.o \
+6 -23
View File
@@ -4,6 +4,7 @@
//
#include "JSystem/JStudio/JStudio/ctb.h"
#include "JSystem/JGadget/binary.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -55,14 +56,13 @@ struct TParse {
}; // namespace ctb
struct object {
struct TPRObject_ID_equal {};
namespace object {
struct TPRObject_ID_equal {};
struct TIDData {
/* 80288988 */ void isEqual(JStudio::object::TIDData const&,
JStudio::object::TIDData const&);
};
struct TIDData {
/* 80288988 */ void isEqual(JStudio::object::TIDData const&, JStudio::object::TIDData const&);
};
}; // namespace object
}; // namespace JStudio
@@ -73,23 +73,6 @@ struct TLinkList {};
struct TLinkList__template0 {
struct iterator {};
};
struct binary {
struct TParse_header_block {
/* 802DC8C8 */ ~TParse_header_block();
};
};
struct TLinkListNode {};
struct TNodeLinkList {
struct iterator {};
/* 802DCA1C */ ~TNodeLinkList();
/* 802DCBA8 */ void Insert(JGadget::TNodeLinkList::iterator, JGadget::TLinkListNode*);
/* 802DCBD4 */ void Erase(JGadget::TLinkListNode*);
};
}; // namespace JGadget
namespace std {
@@ -0,0 +1,44 @@
#include "JSystem/JStudio/JStudio/functionvalue.h"
#include "global.h"
namespace std {
template <typename A1>
struct less {};
/* less<f64> */
struct less__template0 {};
template <typename A1, typename B1, typename C1>
void upper_bound(/* ... */);
}; // namespace std
/* 80283E24-80283EB8 27E764 0094+00 1/1 0/0 0/0 .text
* upper_bound<Q37JStudio29TFunctionValue_list_parameter15TIterator_data_,d,Q23std7less<d>>__3stdFQ37JStudio29TFunctionValue_list_parameter15TIterator_data_Q37JStudio29TFunctionValue_list_parameter15TIterator_data_RCdQ23std7less<d>
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
#pragma force_active on
extern "C" inline asm void
func_80283E24(void* _this, JStudio::TFunctionValue_list_parameter::TIterator_data_ param_0,
JStudio::TFunctionValue_list_parameter::TIterator_data_ param_1, f64 const& param_2,
std::less<f64> param_3) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80283E24.s"
}
#pragma pop
/* 80283EB8-80283F80 27E7F8 00C8+00 1/1 0/0 0/0 .text
* upper_bound<Q37JStudio22TFunctionValue_hermite15TIterator_data_,d,Q23std7less<d>>__3stdFQ37JStudio22TFunctionValue_hermite15TIterator_data_Q37JStudio22TFunctionValue_hermite15TIterator_data_RCdQ23std7less<d>
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
#pragma force_active on
extern "C" inline asm void func_80283EB8(void* _this,
JStudio::TFunctionValue_hermite::TIterator_data_ param_0,
JStudio::TFunctionValue_hermite::TIterator_data_ param_1,
f64 const& param_2, std::less<f64> param_3) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80283EB8.s"
}
#pragma pop
File diff suppressed because it is too large Load Diff
@@ -11,30 +11,6 @@
// Types:
//
namespace JStudio {
namespace fvb {
struct data {
struct TParse_TParagraph {
struct TData {};
/* 802850AC */ void getData(JStudio::fvb::data::TParse_TParagraph::TData*) const;
};
};
}; // namespace fvb
}; // namespace JStudio
namespace JGadget {
struct binary {
struct TEBit {};
/* 802DC864 */ void parseVariableUInt_16_32_following(void const*, u32*, u32*,
JGadget::binary::TEBit*);
};
}; // namespace JGadget
//
// Forward References:
//
-10
View File
@@ -11,16 +11,6 @@
// Types:
//
namespace JStudio {
namespace fvb {
struct data {
static f32 ga4cSignature[1 + 1 /* padding */];
};
}; // namespace fvb
}; // namespace JStudio
//
// Forward References:
//
@@ -0,0 +1,31 @@
#include "JSystem/JStudio/JStudio/object-id.h"
namespace JGadget {
/* TLinkList<JStudio::fvb::TObject, 12> */
struct TLinkList__template1 {
struct iterator {};
};
/* TVector_pointer<JStudio::TFunctionValue*> */
struct TVector_pointer__template0 {};
}; // namespace JGadget
extern "C" void
isEqual__Q37JStudio6object7TIDDataFRCQ37JStudio6object7TIDDataRCQ37JStudio6object7TIDData();
extern "C" void _savegpr_28();
extern "C" void _restgpr_28();
/* 80285018-802850AC 27F958 0094+00 1/1 0/0 0/0 .text
* find_if<Q37JGadget37TLinkList<Q37JStudio3fvb7TObject,-12>8iterator,Q37JStudio6object18TPRObject_ID_equal>__3stdFQ37JGadget37TLinkList<Q37JStudio3fvb7TObject,-12>8iteratorQ37JGadget37TLinkList<Q37JStudio3fvb7TObject,-12>8iteratorQ37JStudio6object18TPRObject_ID_equal
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_80285018(void* _this, JGadget::TLinkList__template1::iterator param_0,
JGadget::TLinkList__template1::iterator param_1,
JStudio::object::TPRObject_ID_equal param_2) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/fvb/func_80285018.s"
}
#pragma pop
File diff suppressed because it is too large Load Diff
@@ -4,6 +4,9 @@
//
#include "JSystem/JStudio/JStudio/jstudio-control.h"
#include "JSystem/JGadget/binary.h"
#include "JSystem/JStudio/JStudio/fvb.h"
#include "JSystem/JStudio/JStudio/stb.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -18,38 +21,6 @@ struct TCreateObject {
/* 80285488 */ ~TCreateObject();
};
namespace stb {
struct data {
struct TParse_TBlock_object {};
struct TParse_THeader {};
struct TParse_TBlock {};
};
struct TControl {
/* 802890B4 */ TControl();
/* 80289194 */ ~TControl();
};
struct TObject {};
struct TFactory {
/* 802895B4 */ ~TFactory();
/* 80289604 */ void destroy(JStudio::stb::TObject*);
};
struct TParse {
/* 80289640 */ TParse(JStudio::stb::TControl*);
/* 80289660 */ ~TParse();
/* 802896C0 */ void parseHeader_next(void const**, u32*, u32);
/* 8028978C */ void parseBlock_next(void const**, u32*, u32);
/* 802897E8 */ void parseBlock_block(JStudio::stb::data::TParse_TBlock const&, u32);
/* 80289820 */ void parseBlock_object(JStudio::stb::data::TParse_TBlock_object const&, u32);
};
}; // namespace stb
struct TFactory {
/* 802854D0 */ ~TFactory();
/* 80285560 */ void appendCreateObject(JStudio::TCreateObject*);
@@ -95,47 +66,12 @@ struct TParse {
/* 802858F0 */ void parseBlock_block_ctb_(JStudio::stb::data::TParse_TBlock const&, u32);
};
namespace fvb {
struct TControl {
/* 80284668 */ TControl();
/* 80284698 */ ~TControl();
};
struct TFactory {
/* 80284918 */ ~TFactory();
};
struct TParse {
/* 80284ADC */ TParse(JStudio::fvb::TControl*);
/* 80284AFC */ ~TParse();
};
}; // namespace fvb
struct data {
static u8 ga8cSignature[8];
};
}; // namespace JStudio
namespace JGadget {
struct binary {
struct TParse_header_block {
/* 802DC910 */ void parse_next(void const**, u32);
};
};
struct TLinkListNode {};
struct TNodeLinkList {
struct iterator {};
/* 802DCA1C */ ~TNodeLinkList();
/* 802DCBA8 */ void Insert(JGadget::TNodeLinkList::iterator, JGadget::TLinkListNode*);
};
}; // namespace JGadget
//
// Forward References:
//
@@ -4,6 +4,8 @@
//
#include "JSystem/JStudio/JStudio/jstudio-object.h"
#include "JSystem/JStudio/JStudio/fvb.h"
#include "JSystem/JStudio/JStudio/stb.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -73,18 +75,6 @@ struct TVariableValue {
static u8 soOutput_none_[4 + 4 /* padding */];
};
namespace stb {
struct data {
struct TParse_TBlock_object {};
};
struct TObject {
/* 80288AC0 */ TObject(JStudio::stb::data::TParse_TBlock_object const&);
/* 80288B30 */ ~TObject();
};
}; // namespace stb
struct TObject {
/* 802866B0 */ ~TObject();
/* 80286734 */ void forward_value(u32);
@@ -214,14 +204,6 @@ struct TObject_sound {
/* 80287F04 */ ~TObject_sound();
};
namespace fvb {
struct TControl {
/* 80284834 */ void getObject(void const*, u32);
/* 802848D4 */ void getObject_index(u32);
};
}; // namespace fvb
}; // namespace JStudio
//
@@ -11,16 +11,6 @@
// Types:
//
namespace JStudio {
struct object {
struct TIDData {
/* 80288988 */ void isEqual(JStudio::object::TIDData const&,
JStudio::object::TIDData const&);
};
};
}; // namespace JStudio
//
// Forward References:
//
+71 -83
View File
@@ -5,106 +5,94 @@
#include "JSystem/JStudio/JStudio/stb-data-parse.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
#include "global.h"
namespace JStudio {
namespace stb {
struct data {
struct TParse_TSequence {
struct TData {};
namespace data {
/* 802899BC */ void getData(JStudio::stb::data::TParse_TSequence::TData*) const;
};
extern "C" u32 gauDataSize_TEParagraph_data__Q37JStudio3stb4data[];
struct TParse_TParagraph {
struct TData {};
void TParse_TSequence::getData(TData* pData) const {
ASSERT(pData != 0);
/* 80289A08 */ void getData(JStudio::stb::data::TParse_TParagraph::TData*) const;
};
struct TParse_TParagraph_data {
struct TData {};
/* 80289A80 */ void getData(JStudio::stb::data::TParse_TParagraph_data::TData*) const;
};
static u8 const gauDataSize_TEParagraph_data[32];
};
}; // namespace stb
}; // namespace JStudio
namespace JGadget {
struct binary {
struct TEBit {};
/* 802DC864 */ void parseVariableUInt_16_32_following(void const*, u32*, u32*,
JGadget::binary::TEBit*);
};
}; // namespace JGadget
//
// Forward References:
//
extern "C" void
getData__Q47JStudio3stb4data16TParse_TSequenceCFPQ57JStudio3stb4data16TParse_TSequence5TData();
extern "C" void
getData__Q47JStudio3stb4data17TParse_TParagraphCFPQ57JStudio3stb4data17TParse_TParagraph5TData();
extern "C" void
getData__Q47JStudio3stb4data22TParse_TParagraph_dataCFPQ57JStudio3stb4data22TParse_TParagraph_data5TData();
//
// External References:
//
extern "C" void
parseVariableUInt_16_32_following__Q27JGadget6binaryFPCvPUlPUlPQ37JGadget6binary5TEBit();
extern "C" u8 const gauDataSize_TEParagraph_data__Q37JStudio3stb4data[32];
//
// Declarations:
//
/* 802899BC-80289A08 2842FC 004C+00 0/0 1/1 0/0 .text
* getData__Q47JStudio3stb4data16TParse_TSequenceCFPQ57JStudio3stb4data16TParse_TSequence5TData */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::data::TParse_TSequence::getData(
JStudio::stb::data::TParse_TSequence::TData* param_0) const {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb-data-parse/func_802899BC.s"
pData->content = NULL;
pData->next = NULL;
u32 head = get_head();
u8 type = head >> 24;
u32 param = head & 0xffffff;
pData->type = type;
pData->param = param;
if (type != 0) {
const void* next = (const void*)((int)getRaw() + 4);
if (type <= 0x7f) {
pData->next = next;
} else {
pData->content = next;
pData->next = (const void*)((int)next + param);
}
}
}
#pragma pop
/* 80289A08-80289A80 284348 0078+00 0/0 1/1 0/0 .text
* getData__Q47JStudio3stb4data17TParse_TParagraphCFPQ57JStudio3stb4data17TParse_TParagraph5TData */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::data::TParse_TParagraph::getData(
JStudio::stb::data::TParse_TParagraph::TData* param_0) const {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb-data-parse/func_80289A08.s"
void TParse_TParagraph::getData(TData* pData) const {
ASSERT(pData != 0);
const void* data = getRaw();
u32 result;
const void* next = parseVariableUInt_16_32_following(data, &result, &pData->type, NULL);
pData->param = result;
if (result == 0) {
pData->content = NULL;
pData->next = next;
} else {
pData->content = next;
pData->next = (const void*)((int)next + align_roundUp(result, 4));
}
}
#pragma pop
#ifdef NONMATCHING
void TParse_TParagraph_data::getData(data::TParse_TParagraph_data::TData* pData) const {
ASSERT(pData != 0);
pData->_4 = 0;
pData->_8 = 0;
pData->_c = NULL;
pData->_10 = 0;
u8* p = (u8*)getRaw();
if (p != NULL) {
u8 val = *p;
pData->_0 = val & ~8;
if (val != 0) {
u32 count = 1;
p++;
if (val & 8) {
count = *(p++);
}
pData->_8 = count;
pData->_c = p;
u8 idx = val & 7;
if (idx) {
u32 size = gauDataSize_TEParagraph_data[idx];
pData->_4 = size;
pData->_10 = p + size * count;
}
}
}
}
#else
/* 80289A80-80289B00 2843C0 0080+00 0/0 3/3 1/1 .text
* getData__Q47JStudio3stb4data22TParse_TParagraph_dataCFPQ57JStudio3stb4data22TParse_TParagraph_data5TData
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::data::TParse_TParagraph_data::getData(
JStudio::stb::data::TParse_TParagraph_data::TData* param_0) const {
asm void TParse_TParagraph_data::getData(TParse_TParagraph_data::TData* param_0) const {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb-data-parse/func_80289A80.s"
}
#pragma pop
#endif
} // namespace data
} // namespace stb
} // namespace JStudio
+7 -39
View File
@@ -7,49 +7,17 @@
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
namespace JStudio {
namespace stb {
struct data {
static u8 const gauDataSize_TEParagraph_data[32];
static u32 ga4cSignature[1 + 1 /* padding */];
};
namespace data {
}; // namespace stb
}; // namespace JStudio
//
// Forward References:
//
extern "C" u8 const gauDataSize_TEParagraph_data__Q37JStudio3stb4data[32];
extern "C" u32 ga4cSignature__Q37JStudio3stb4data[1 + 1 /* padding */];
//
// External References:
//
//
// Declarations:
//
/* ############################################################################################## */
/* 8039AB88-8039ABA8 0271E8 0020+00 0/0 1/1 0/0 .rodata
* gauDataSize_TEParagraph_data__Q37JStudio3stb4data */
SECTION_RODATA u8 const JStudio::stb::data::gauDataSize_TEParagraph_data[32] = {
const u8 gauDataSize_TEParagraph_data[32] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04,
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40,
};
COMPILER_STRIP_GATE(0x8039AB88, &JStudio::stb::data::gauDataSize_TEParagraph_data);
/* 804554D8-804554E0 003AD8 0004+04 0/0 1/1 0/0 .sdata2 ga4cSignature__Q37JStudio3stb4data
*/
SECTION_SDATA2 u32 JStudio::stb::data::ga4cSignature[1 + 1 /* padding */] = {
0x53544200,
/* padding */
0x00000000,
};
const u32 ga4cSignature = 'STB\0';
} // namespace data
} // namespace stb
} // namespace JStudio
+383 -464
View File
@@ -1,8 +1,3 @@
//
// Generated By: dol2asm
// Translation Unit: stb
//
#include "JSystem/JStudio/JStudio/stb.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -11,171 +6,26 @@
// Types:
//
namespace JStudio {
namespace stb {
struct data {
struct TParse_TBlock_object {};
struct TParse_THeader {};
struct TParse_TBlock {};
struct TParse_TSequence {
struct TData {};
/* 802899BC */ void getData(JStudio::stb::data::TParse_TSequence::TData*) const;
};
struct TParse_TParagraph {
struct TData {};
/* 80289A08 */ void getData(JStudio::stb::data::TParse_TParagraph::TData*) const;
};
static u32 gu32Mask_TSequence_value_signExpansion[1 + 1 /* padding */];
static u32 ga4cSignature[1 + 1 /* padding */];
};
struct TObject {
/* 80288AC0 */ TObject(JStudio::stb::data::TParse_TBlock_object const&);
/* 80288A78 */ TObject(u32, void const*, u32);
/* 80288B30 */ ~TObject();
/* 80288B78 */ void setFlag_operation(u8, int);
/* 80288BD0 */ void reset(void const*);
/* 80288BE8 */ void forward(u32);
/* 80288E18 */ void do_begin();
/* 80288E1C */ void do_end();
/* 80288E20 */ void do_paragraph(u32, void const*, u32);
/* 80288E24 */ void do_wait(u32);
/* 80288E28 */ void do_data(void const*, u32, void const*, u32);
/* 80288E2C */ void process_sequence_();
/* 80288F80 */ void process_paragraph_reserved_(u32, void const*, u32);
};
struct TObject_control {
/* 80289068 */ TObject_control(void const*, u32);
/* 80289134 */ ~TObject_control();
};
struct TControl {
/* 802890B4 */ TControl();
/* 80289194 */ ~TControl();
/* 80289228 */ void appendObject(JStudio::stb::TObject*);
/* 80289278 */ void removeObject(JStudio::stb::TObject*);
/* 802892B0 */ void destroyObject(JStudio::stb::TObject*);
/* 80289300 */ void destroyObject_all();
/* 80289364 */ void getObject(void const*, u32);
/* 80289404 */ void reset();
/* 802894B4 */ void forward(u32);
};
struct TFactory {
/* 802895B4 */ ~TFactory();
/* 802895FC */ bool create(JStudio::stb::data::TParse_TBlock_object const&);
/* 80289604 */ void destroy(JStudio::stb::TObject*);
};
struct TParse {
/* 80289640 */ TParse(JStudio::stb::TControl*);
/* 80289660 */ ~TParse();
/* 802896C0 */ void parseHeader_next(void const**, u32*, u32);
/* 8028978C */ void parseBlock_next(void const**, u32*, u32);
/* 802897E0 */ bool parseHeader(JStudio::stb::data::TParse_THeader const&, u32);
/* 802897E8 */ void parseBlock_block(JStudio::stb::data::TParse_TBlock const&, u32);
/* 80289820 */ void parseBlock_object(JStudio::stb::data::TParse_TBlock_object const&, u32);
};
}; // namespace stb
struct object {
struct TPRObject_ID_equal {};
struct TIDData {
/* 80288988 */ void isEqual(JStudio::object::TIDData const&,
JStudio::object::TIDData const&);
};
};
}; // namespace JStudio
namespace JGadget {
template <typename A1, typename B1>
struct TLinkList {};
/* TLinkList<JStudio::stb::TObject, 12> */
struct TLinkList__template2 {
struct iterator {};
};
struct binary {
struct TParse_header_block {
/* 802DC8C8 */ ~TParse_header_block();
};
};
struct TLinkListNode {};
struct TNodeLinkList {
struct iterator {};
/* 802DCA1C */ ~TNodeLinkList();
/* 802DCBA8 */ void Insert(JGadget::TNodeLinkList::iterator, JGadget::TLinkListNode*);
/* 802DCBD4 */ void Erase(JGadget::TLinkListNode*);
};
}; // namespace JGadget
namespace std {
template <typename A1, typename B1>
void find_if(/* ... */);
/* 80289928 */ /* std::find_if<JGadget::TLinkList<JStudio::stb::TObject, 12>::iterator,
JStudio::object::TPRObject_ID_equal> */
void func_80289928(void* _this, JGadget::TLinkList__template2::iterator,
JGadget::TLinkList__template2::iterator, JStudio::object::TPRObject_ID_equal);
void func_80289928(void* _this, JGadget::TLinkList<JStudio::stb::TObject, 12>::iterator,
JGadget::TLinkList<JStudio::stb::TObject, 12>::iterator,
JStudio::object::TPRObject_ID_equal);
}; // namespace std
//
// Forward References:
//
extern "C" void __ct__Q37JStudio3stb7TObjectFUlPCvUl();
extern "C" void __ct__Q37JStudio3stb7TObjectFRCQ47JStudio3stb4data20TParse_TBlock_object();
extern "C" void __dt__Q37JStudio3stb7TObjectFv();
extern "C" void setFlag_operation__Q37JStudio3stb7TObjectFUci();
extern "C" void reset__Q37JStudio3stb7TObjectFPCv();
extern "C" void forward__Q37JStudio3stb7TObjectFUl();
extern "C" void do_begin__Q37JStudio3stb7TObjectFv();
extern "C" void do_end__Q37JStudio3stb7TObjectFv();
extern "C" void do_paragraph__Q37JStudio3stb7TObjectFUlPCvUl();
extern "C" void do_wait__Q37JStudio3stb7TObjectFUl();
extern "C" void do_data__Q37JStudio3stb7TObjectFPCvUlPCvUl();
extern "C" void process_sequence___Q37JStudio3stb7TObjectFv();
extern "C" void process_paragraph_reserved___Q37JStudio3stb7TObjectFUlPCvUl();
extern "C" void __ct__Q37JStudio3stb15TObject_controlFPCvUl();
extern "C" void __ct__Q37JStudio3stb8TControlFv();
extern "C" void __dt__Q37JStudio3stb15TObject_controlFv();
extern "C" void __dt__Q37JStudio3stb8TControlFv();
extern "C" void appendObject__Q37JStudio3stb8TControlFPQ37JStudio3stb7TObject();
extern "C" void removeObject__Q37JStudio3stb8TControlFPQ37JStudio3stb7TObject();
extern "C" void destroyObject__Q37JStudio3stb8TControlFPQ37JStudio3stb7TObject();
extern "C" void destroyObject_all__Q37JStudio3stb8TControlFv();
extern "C" void getObject__Q37JStudio3stb8TControlFPCvUl();
extern "C" void reset__Q37JStudio3stb8TControlFv();
extern "C" void forward__Q37JStudio3stb8TControlFUl();
extern "C" void __dt__Q37JStudio3stb8TFactoryFv();
extern "C" bool create__Q37JStudio3stb8TFactoryFRCQ47JStudio3stb4data20TParse_TBlock_object();
extern "C" void destroy__Q37JStudio3stb8TFactoryFPQ37JStudio3stb7TObject();
extern "C" void __ct__Q37JStudio3stb6TParseFPQ37JStudio3stb8TControl();
extern "C" void __dt__Q37JStudio3stb6TParseFv();
extern "C" void parseHeader_next__Q37JStudio3stb6TParseFPPCvPUlUl();
extern "C" void parseBlock_next__Q37JStudio3stb6TParseFPPCvPUlUl();
extern "C" bool parseHeader__Q37JStudio3stb6TParseFRCQ47JStudio3stb4data14TParse_THeaderUl();
extern "C" void parseBlock_block__Q37JStudio3stb6TParseFRCQ47JStudio3stb4data13TParse_TBlockUl();
extern "C" void
parseBlock_object__Q37JStudio3stb6TParseFRCQ47JStudio3stb4data20TParse_TBlock_objectUl();
extern "C" void func_80289928(void* _this, JGadget::TLinkList__template2::iterator,
JGadget::TLinkList__template2::iterator,
extern "C" void func_80289928(void* _this, JGadget::TLinkList<JStudio::stb::TObject, 12>::iterator,
JGadget::TLinkList<JStudio::stb::TObject, 12>::iterator,
JStudio::object::TPRObject_ID_equal);
extern "C" u32 gu32Mask_TSequence_value_signExpansion__Q37JStudio3stb4data[1 + 1 /* padding */];
//
// External References:
@@ -184,13 +34,6 @@ extern "C" u32 gu32Mask_TSequence_value_signExpansion__Q37JStudio3stb4data[1 + 1
extern "C" void
isEqual__Q37JStudio6object7TIDDataFRCQ37JStudio6object7TIDDataRCQ37JStudio6object7TIDData();
extern "C" void
getData__Q47JStudio3stb4data16TParse_TSequenceCFPQ57JStudio3stb4data16TParse_TSequence5TData();
extern "C" void
getData__Q47JStudio3stb4data17TParse_TParagraphCFPQ57JStudio3stb4data17TParse_TParagraph5TData();
extern "C" void __dl__FPv();
extern "C" void __dt__Q37JGadget6binary19TParse_header_blockFv();
extern "C" void __dt__Q27JGadget13TNodeLinkListFv();
extern "C" void
Insert__Q27JGadget13TNodeLinkListFQ37JGadget13TNodeLinkList8iteratorPQ27JGadget13TLinkListNode();
extern "C" void Erase__Q27JGadget13TNodeLinkListFPQ27JGadget13TLinkListNode();
extern "C" void _savegpr_25();
@@ -199,274 +42,331 @@ extern "C" void _savegpr_29();
extern "C" void _restgpr_25();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void memcmp();
extern "C" extern void* __vt__Q37JGadget6binary19TParse_header_block[5];
extern "C" u32 ga4cSignature__Q37JStudio3stb4data[1 + 1 /* padding */];
extern "C" int memcmp(const void*, const void*, u32);
//
// Declarations:
//
namespace JStudio {
namespace stb {
/* ############################################################################################## */
/* 803C56A0-803C56C0 0227C0 0020+00 2/2 0/0 0/0 .data __vt__Q37JStudio3stb6TParse */
SECTION_DATA extern void* __vt__Q37JStudio3stb6TParse[8] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__Q37JStudio3stb6TParseFv,
(void*)parseHeader_next__Q37JStudio3stb6TParseFPPCvPUlUl,
(void*)parseBlock_next__Q37JStudio3stb6TParseFPPCvPUlUl,
(void*)parseHeader__Q37JStudio3stb6TParseFRCQ47JStudio3stb4data14TParse_THeaderUl,
(void*)parseBlock_block__Q37JStudio3stb6TParseFRCQ47JStudio3stb4data13TParse_TBlockUl,
(void*)parseBlock_object__Q37JStudio3stb6TParseFRCQ47JStudio3stb4data20TParse_TBlock_objectUl,
};
// unchecked, in debug dol
const char* TObject::toString_status(int status) {
const char* result;
/* 803C56C0-803C56D4 0227E0 0014+00 1/1 1/1 0/0 .data __vt__Q37JStudio3stb8TFactory */
SECTION_DATA extern void* __vt__Q37JStudio3stb8TFactory[5] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__Q37JStudio3stb8TFactoryFv,
(void*)create__Q37JStudio3stb8TFactoryFRCQ47JStudio3stb4data20TParse_TBlock_object,
(void*)destroy__Q37JStudio3stb8TFactoryFPQ37JStudio3stb7TObject,
};
/* 803C56D4-803C56E0 0227F4 000C+00 2/2 0/0 0/0 .data __vt__Q37JStudio3stb8TControl */
SECTION_DATA extern void* __vt__Q37JStudio3stb8TControl[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__Q37JStudio3stb8TControlFv,
};
/* 803C56E0-803C5700 022800 0020+00 3/3 0/0 0/0 .data __vt__Q37JStudio3stb15TObject_control */
SECTION_DATA extern void* __vt__Q37JStudio3stb15TObject_control[8] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__Q37JStudio3stb15TObject_controlFv,
(void*)do_begin__Q37JStudio3stb7TObjectFv,
(void*)do_end__Q37JStudio3stb7TObjectFv,
(void*)do_paragraph__Q37JStudio3stb7TObjectFUlPCvUl,
(void*)do_wait__Q37JStudio3stb7TObjectFUl,
(void*)do_data__Q37JStudio3stb7TObjectFPCvUlPCvUl,
};
/* 803C5700-803C5720 022820 0020+00 3/3 0/0 0/0 .data __vt__Q37JStudio3stb7TObject */
SECTION_DATA extern void* __vt__Q37JStudio3stb7TObject[8] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__Q37JStudio3stb7TObjectFv,
(void*)do_begin__Q37JStudio3stb7TObjectFv,
(void*)do_end__Q37JStudio3stb7TObjectFv,
(void*)do_paragraph__Q37JStudio3stb7TObjectFUlPCvUl,
(void*)do_wait__Q37JStudio3stb7TObjectFUl,
(void*)do_data__Q37JStudio3stb7TObjectFPCvUlPCvUl,
};
/* 80288A78-80288AC0 2833B8 0048+00 1/1 0/0 0/0 .text __ct__Q37JStudio3stb7TObjectFUlPCvUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JStudio::stb::TObject::TObject(u32 param_0, void const* param_1, u32 param_2) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/__ct__Q37JStudio3stb7TObjectFUlPCvUl.s"
switch (status) {
default:
result = "(undefined)";
break;
case 0:
result = "still";
break;
case 1:
result = "end";
break;
case 2:
result = "wait";
break;
case 4:
result = "suspend";
break;
case 8:
result = "inactive";
break;
}
return result;
}
#pragma pop
/* 80288AC0-80288B30 283400 0070+00 0/0 1/1 0/0 .text
* __ct__Q37JStudio3stb7TObjectFRCQ47JStudio3stb4data20TParse_TBlock_object */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JStudio::stb::TObject::TObject(JStudio::stb::data::TParse_TBlock_object const& param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/__ct__Q37JStudio3stb7TObjectFRCQ47JStudio3stb4data20TParse_TBlock_object.s"
TObject::TObject(u32 arg1, const void* id, u32 id_size)
: TObject_ID(id, id_size), pControl(NULL), signature(arg1), mFlag(0), bSequence_(0), _20(0),
pSequence(NULL), pSequence_next(NULL), u32Wait_(0), mStatus(STATUS_STILL) {}
TObject::TObject(const data::TParse_TBlock_object& object)
: TObject_ID(object.get_ID(), object.get_IDSize()), pControl(NULL),
signature(object.get_type()), mFlag(object.get_flag()), bSequence_(0), _20(0), pSequence(0),
pSequence_next(object.getContent()), u32Wait_(0), mStatus(STATUS_STILL) {}
TObject::~TObject() {
JUT_EXPECT(getControl() == NULL);
}
#pragma pop
/* 80288B30-80288B78 283470 0048+00 3/2 1/1 0/0 .text __dt__Q37JStudio3stb7TObjectFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JStudio::stb::TObject::~TObject() {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/__dt__Q37JStudio3stb7TObjectFv.s"
void TObject::setFlag_operation(u8 op, int val) {
switch (op) {
default:
JUTWarn w;
w << "unknown flag-operation : " << op;
break;
case 1:
mFlag |= val;
break;
case 2:
mFlag &= val;
break;
case 3:
mFlag ^= val;
break;
}
}
#pragma pop
/* 80288B78-80288BD0 2834B8 0058+00 2/2 0/0 0/0 .text
* setFlag_operation__Q37JStudio3stb7TObjectFUci */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TObject::setFlag_operation(u8 param_0, int param_1) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/setFlag_operation__Q37JStudio3stb7TObjectFUci.s"
void TObject::reset(const void* arg1) {
bSequence_ = 0;
mStatus = STATUS_STILL;
pSequence_next = arg1;
u32Wait_ = 0;
}
#pragma pop
/* 80288BD0-80288BE8 283510 0018+00 2/2 0/0 0/0 .text reset__Q37JStudio3stb7TObjectFPCv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TObject::reset(void const* param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/reset__Q37JStudio3stb7TObjectFPCv.s"
int TObject::forward(u32 arg1) {
u8 temp = false;
while (true) {
if (mFlag & 0x8000) {
switch (getStatus()) {
case STATUS_STILL:
case STATUS_END:
break;
case STATUS_WAIT:
case STATUS_SUSPEND:
setStatus_(STATUS_INACTIVE);
if (bSequence_) {
on_end();
}
break;
case STATUS_INACTIVE:
break;
default:
ASSERT(false);
break;
}
return 1;
}
if (getStatus() == STATUS_INACTIVE) {
ASSERT(bSequence_);
on_begin();
setStatus_(STATUS_WAIT);
}
ASSERT(getStatus() != STATUS_INACTIVE);
TControl* control = getControl();
if ((control != NULL && control->isSuspended()) || isSuspended()) {
if (bSequence_) {
ASSERT((getStatus() == STATUS_WAIT) || (getStatus() == STATUS_SUSPEND));
setStatus_(STATUS_SUSPEND);
on_wait(arg1);
}
return 1;
}
while (true) {
void* nextseq = (void*)getSequence_next();
setSequence_(nextseq);
if (nextseq == NULL) {
if (bSequence_) {
ASSERT(getStatus() != STATUS_STILL);
if (!temp) {
on_wait(0);
}
bSequence_ = false;
setStatus_(STATUS_END);
on_end();
}
return 0;
}
if (!bSequence_) {
ASSERT(getStatus() == STATUS_STILL);
bSequence_ = true;
on_begin();
}
setStatus_(STATUS_WAIT);
if (u32Wait_ == 0) {
process_sequence_();
if (u32Wait_ == 0) {
break;
}
}
ASSERT(u32Wait_ > 0);
temp = true;
if (arg1 >= u32Wait_) {
u32 wait = u32Wait_;
arg1 -= u32Wait_;
u32Wait_ = 0;
on_wait(wait);
} else {
u32Wait_ -= arg1;
on_wait(arg1);
return 1;
}
}
}
}
#pragma pop
/* 80288BE8-80288E18 283528 0230+00 1/1 0/0 0/0 .text forward__Q37JStudio3stb7TObjectFUl
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TObject::forward(u32 param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/forward__Q37JStudio3stb7TObjectFUl.s"
}
#pragma pop
/* 80288E18-80288E1C 283758 0004+00 2/0 0/0 0/0 .text do_begin__Q37JStudio3stb7TObjectFv
*/
void JStudio::stb::TObject::do_begin() {
void TObject::do_begin() {
/* empty function */
}
/* 80288E1C-80288E20 28375C 0004+00 2/0 0/0 0/0 .text do_end__Q37JStudio3stb7TObjectFv */
void JStudio::stb::TObject::do_end() {
void TObject::do_end() {
/* empty function */
}
/* 80288E20-80288E24 283760 0004+00 2/0 0/0 0/0 .text do_paragraph__Q37JStudio3stb7TObjectFUlPCvUl
*/
void JStudio::stb::TObject::do_paragraph(u32 param_0, void const* param_1, u32 param_2) {
void TObject::do_paragraph(u32 param_0, void const* param_1, u32 param_2) {
/* empty function */
}
/* 80288E24-80288E28 283764 0004+00 2/0 0/0 0/0 .text do_wait__Q37JStudio3stb7TObjectFUl
*/
void JStudio::stb::TObject::do_wait(u32 param_0) {
void TObject::do_wait(u32 param_0) {
/* empty function */
}
/* 80288E28-80288E2C 283768 0004+00 2/0 0/0 0/0 .text do_data__Q37JStudio3stb7TObjectFPCvUlPCvUl
*/
void JStudio::stb::TObject::do_data(void const* param_0, u32 param_1, void const* param_2,
u32 param_3) {
void TObject::do_data(void const* param_0, u32 param_1, void const* param_2, u32 param_3) {
/* empty function */
}
/* ############################################################################################## */
/* 804554D0-804554D8 003AD0 0004+04 1/1 0/0 0/0 .sdata2
* gu32Mask_TSequence_value_signExpansion__Q37JStudio3stb4data */
SECTION_SDATA2 u32
JStudio::stb::data::gu32Mask_TSequence_value_signExpansion[1 + 1 /* padding */] = {
0xFF000000,
/* padding */
0x00000000,
};
void TObject::process_sequence_() {
ASSERT(getWait() == 0);
data::TParse_TSequence seq(getSequence());
/* 80288E2C-80288F80 28376C 0154+00 1/1 0/0 0/0 .text process_sequence___Q37JStudio3stb7TObjectFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TObject::process_sequence_() {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/process_sequence___Q37JStudio3stb7TObjectFv.s"
data::TParse_TSequence::TData dat;
seq.getData(&dat);
u8 type = dat.type;
u32 u32Value = dat.param;
const void* pContent = dat.content;
const void* pNext = dat.next;
setSequence_next(dat.next);
switch (type) {
case 0:
JUT_EXPECT(u32Value == 0);
JUT_EXPECT(pContent == 0);
break;
case 1:
JUT_EXPECT(pContent == 0);
setFlag_operation_(u32Value);
break;
case 2:
JUT_EXPECT(pContent == 0);
setWait(u32Value);
break;
case 3:
JUT_EXPECT(pContent == 0);
s32 off = toInt32FromUInt24_(u32Value);
void* nextseq = (void*)getSequence_offset(off);
setSequence_next(nextseq);
break;
case 4:
JUT_EXPECT(pContent == 0);
u32 val = toInt32FromUInt24_(u32Value);
suspend(val);
break;
case 0x80:
ASSERT(pContent != 0);
void* p = (void*)pContent;
data::TParse_TParagraph para(NULL);
while (p < pNext) {
para.setRaw(p);
data::TParse_TParagraph::TData para_dat;
para.getData(&para_dat);
if (para_dat.type <= 0xff) {
process_paragraph_reserved_(para_dat.type, para_dat.content, para_dat.param);
} else {
on_paragraph(para_dat.type, para_dat.content, para_dat.param);
}
p = (void*)para_dat.next;
ASSERT(p != 0);
}
JUT_EXPECT(p == pNext);
break;
default:
JUTWarn w;
w << "unknown sequence : " << dat.type;
break;
}
}
#pragma pop
/* 80288F80-80289068 2838C0 00E8+00 1/1 0/0 0/0 .text
* process_paragraph_reserved___Q37JStudio3stb7TObjectFUlPCvUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TObject::process_paragraph_reserved_(u32 param_0, void const* param_1,
u32 param_2) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/process_paragraph_reserved___Q37JStudio3stb7TObjectFUlPCvUl.s"
void TObject::process_paragraph_reserved_(u32 arg1, const void* pContent, u32 uSize) {
switch (arg1) {
case 0x1:
ASSERT(pContent != 0);
ASSERT(uSize == 4);
setFlag_operation_(*(u32*)pContent);
break;
case 0x2:
ASSERT(pContent != 0);
ASSERT(uSize == 4);
setWait(*(u32*)pContent);
break;
case 0x3:
ASSERT(pContent != 0);
ASSERT(uSize == 4);
const void* seq = getSequence_offset(*(s32*)pContent);
setSequence_next(seq);
break;
case 0x80:
on_data(NULL, 0, pContent, uSize);
break;
case 0x81:
data::TParse_TParagraph_dataID dataID(pContent);
const void* temp = dataID.getContent();
on_data(dataID.get_ID(), dataID.get_IDSize(), temp,
uSize - ((u32)temp - (u32)dataID.getRaw()));
break;
case 0x82:
ASSERT(pContent != 0);
break;
}
}
#pragma pop
/* 80289068-802890B4 2839A8 004C+00 1/1 0/0 0/0 .text __ct__Q37JStudio3stb15TObject_controlFPCvUl
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JStudio::stb::TObject_control::TObject_control(void const* param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/__ct__Q37JStudio3stb15TObject_controlFPCvUl.s"
TObject_control::TObject_control(const void* arg1, u32 arg2) : TObject(-1, arg1, arg2) {}
TControl::TControl() : _4(0), _8(0), pFactory(NULL), mObject_control(NULL, 0), _54(0) {
resetStatus_();
mObject_control.setControl_(this);
}
#pragma pop
/* 802890B4-80289134 2839F4 0080+00 0/0 1/1 0/0 .text __ct__Q37JStudio3stb8TControlFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JStudio::stb::TControl::TControl() {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/__ct__Q37JStudio3stb8TControlFv.s"
// TObject_control::TObject_control() definition gets inlined here
TControl::~TControl() {
mObject_control.setControl_(NULL);
JUT_EXPECT(ocObject_.empty());
}
#pragma pop
/* 80289134-80289194 283A74 0060+00 1/0 0/0 0/0 .text __dt__Q37JStudio3stb15TObject_controlFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JStudio::stb::TObject_control::~TObject_control() {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/__dt__Q37JStudio3stb15TObject_controlFv.s"
#ifdef NONMATCHING
void TControl::appendObject(TObject* p) {
p->setControl(this);
mObjectContainer.Push_back(p);
}
#pragma pop
/* 80289194-80289228 283AD4 0094+00 1/0 1/1 0/0 .text __dt__Q37JStudio3stb8TControlFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JStudio::stb::TControl::~TControl() {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/__dt__Q37JStudio3stb8TControlFv.s"
}
#pragma pop
#else
/* 80289228-80289278 283B68 0050+00 1/1 0/0 0/0 .text
* appendObject__Q37JStudio3stb8TControlFPQ37JStudio3stb7TObject */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TControl::appendObject(JStudio::stb::TObject* param_0) {
asm void TControl::appendObject(TObject* param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/appendObject__Q37JStudio3stb8TControlFPQ37JStudio3stb7TObject.s"
}
#pragma pop
#endif
/* 80289278-802892B0 283BB8 0038+00 1/1 0/0 0/0 .text
* removeObject__Q37JStudio3stb8TControlFPQ37JStudio3stb7TObject */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TControl::removeObject(JStudio::stb::TObject* param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/removeObject__Q37JStudio3stb8TControlFPQ37JStudio3stb7TObject.s"
void TControl::removeObject(TObject* p) {
ASSERT(p != 0);
ASSERT(p->getControl() == this);
p->setControl_(NULL);
mObjectContainer.Erase(p);
}
#pragma pop
/* 802892B0-80289300 283BF0 0050+00 1/1 0/0 0/0 .text
* destroyObject__Q37JStudio3stb8TControlFPQ37JStudio3stb7TObject */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TControl::destroyObject(JStudio::stb::TObject* param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/destroyObject__Q37JStudio3stb8TControlFPQ37JStudio3stb7TObject.s"
void TControl::destroyObject(TObject* p) {
removeObject(p);
ASSERT(pFactory != 0);
pFactory->destroy(p);
}
#pragma pop
/* 80289300-80289364 283C40 0064+00 0/0 2/2 0/0 .text destroyObject_all__Q37JStudio3stb8TControlFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TControl::destroyObject_all() {
asm void TControl::destroyObject_all() {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/destroyObject_all__Q37JStudio3stb8TControlFv.s"
}
@@ -476,7 +376,7 @@ asm void JStudio::stb::TControl::destroyObject_all() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TControl::getObject(void const* param_0, u32 param_1) {
asm TObject* TControl::getObject(void const* param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/getObject__Q37JStudio3stb8TControlFPCvUl.s"
}
@@ -486,7 +386,7 @@ asm void JStudio::stb::TControl::getObject(void const* param_0, u32 param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TControl::reset() {
asm void TControl::reset() {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/reset__Q37JStudio3stb8TControlFv.s"
}
@@ -497,113 +397,131 @@ asm void JStudio::stb::TControl::reset() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TControl::forward(u32 param_0) {
asm void TControl::forward(u32 param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/forward__Q37JStudio3stb8TControlFUl.s"
}
#pragma pop
/* 802895B4-802895FC 283EF4 0048+00 1/0 1/1 0/0 .text __dt__Q37JStudio3stb8TFactoryFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JStudio::stb::TFactory::~TFactory() {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/__dt__Q37JStudio3stb8TFactoryFv.s"
}
#pragma pop
TFactory::~TFactory() {}
/* 802895FC-80289604 283F3C 0008+00 1/0 0/0 0/0 .text
* create__Q37JStudio3stb8TFactoryFRCQ47JStudio3stb4data20TParse_TBlock_object */
bool JStudio::stb::TFactory::create(JStudio::stb::data::TParse_TBlock_object const& param_0) {
return false;
TObject* TFactory::create(data::TParse_TBlock_object const& param_0) {
return NULL;
}
/* 80289604-80289640 283F44 003C+00 1/0 1/0 0/0 .text
* destroy__Q37JStudio3stb8TFactoryFPQ37JStudio3stb7TObject */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TFactory::destroy(JStudio::stb::TObject* param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/destroy__Q37JStudio3stb8TFactoryFPQ37JStudio3stb7TObject.s"
void TFactory::destroy(TObject* p) {
delete p;
}
#pragma pop
/* 80289640-80289660 283F80 0020+00 0/0 1/1 0/0 .text
* __ct__Q37JStudio3stb6TParseFPQ37JStudio3stb8TControl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JStudio::stb::TParse::TParse(JStudio::stb::TControl* param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/__ct__Q37JStudio3stb6TParseFPQ37JStudio3stb8TControl.s"
TParse::TParse(TControl* pControl) : pControl(pControl) {}
TParse::~TParse() {}
bool TParse::parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 flags) {
ASSERT(ppData_inout != 0);
ASSERT(puBlock_out != 0);
const void* pData = *ppData_inout;
ASSERT(pData != 0);
const data::TParse_THeader header(pData);
*ppData_inout = header.getContent();
*puBlock_out = header.get_blockNumber();
if (memcmp(header.get_signature(), &data::ga4cSignature, 4) != 0) {
JUTWarn w;
w << "unknown signature";
return false;
}
if (header.get_byteOrder() != 0xFEFF) {
JUTWarn w;
w << "illegal byte-order";
return false;
}
u16 version = header.get_version();
if (version < 1) {
JUTWarn w;
w << "obselete version : " << (long)0;
return false;
} else if (version > 3) {
JUTWarn w;
w << "unknown version : " << version;
return false;
}
return parseHeader(header, flags);
}
#pragma pop
/* 80289660-802896C0 283FA0 0060+00 1/0 1/1 0/0 .text __dt__Q37JStudio3stb6TParseFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JStudio::stb::TParse::~TParse() {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/__dt__Q37JStudio3stb6TParseFv.s"
bool TParse::parseBlock_next(void const** ppData_inout, u32* puData_out, u32 flags) {
ASSERT(ppData_inout != 0);
ASSERT(puData_out != 0);
const void* pData = *ppData_inout;
ASSERT(pData != 0);
data::TParse_TBlock blk(pData);
*ppData_inout = blk.getNext();
*puData_out = blk.get_size();
return parseBlock_block(blk, flags);
}
#pragma pop
/* 802896C0-8028978C 284000 00CC+00 1/0 1/0 0/0 .text
* parseHeader_next__Q37JStudio3stb6TParseFPPCvPUlUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TParse::parseHeader_next(void const** param_0, u32* param_1, u32 param_2) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/parseHeader_next__Q37JStudio3stb6TParseFPPCvPUlUl.s"
}
#pragma pop
/* 8028978C-802897E0 2840CC 0054+00 1/0 1/0 0/0 .text
* parseBlock_next__Q37JStudio3stb6TParseFPPCvPUlUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TParse::parseBlock_next(void const** param_0, u32* param_1, u32 param_2) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/parseBlock_next__Q37JStudio3stb6TParseFPPCvPUlUl.s"
}
#pragma pop
/* 802897E0-802897E8 284120 0008+00 1/0 0/0 0/0 .text
* parseHeader__Q37JStudio3stb6TParseFRCQ47JStudio3stb4data14TParse_THeaderUl */
bool JStudio::stb::TParse::parseHeader(JStudio::stb::data::TParse_THeader const& param_0,
u32 param_1) {
bool TParse::parseHeader(data::TParse_THeader const& param_0, u32 flags) {
return true;
}
/* 802897E8-80289820 284128 0038+00 1/0 1/1 0/0 .text
* parseBlock_block__Q37JStudio3stb6TParseFRCQ47JStudio3stb4data13TParse_TBlockUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JStudio::stb::TParse::parseBlock_block(JStudio::stb::data::TParse_TBlock const& param_0,
u32 param_1) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/parseBlock_block__Q37JStudio3stb6TParseFRCQ47JStudio3stb4data13TParse_TBlockUl.s"
bool TParse::parseBlock_block(const data::TParse_TBlock& ppBlock, u32 flags) {
return parseBlock_object(ppBlock.get(), flags);
}
#pragma pop
/* 80289820-80289928 284160 0108+00 1/0 1/0 0/0 .text
* parseBlock_object__Q37JStudio3stb6TParseFRCQ47JStudio3stb4data20TParse_TBlock_objectUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void
JStudio::stb::TParse::parseBlock_object(JStudio::stb::data::TParse_TBlock_object const& param_0,
u32 param_1) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/parseBlock_object__Q37JStudio3stb6TParseFRCQ47JStudio3stb4data20TParse_TBlock_objectUl.s"
bool TParse::parseBlock_object(const data::TParse_TBlock_object& ppObject, u32 flags) {
TControl* pControl = getControl();
ASSERT(pControl != 0);
if (ppObject.get_type() == data::BLOCK_NONE) {
TObject_control& ref = pControl->referObject_control();
ref.reset(ppObject.getContent());
return true;
}
if (flags & 0x10) {
TObject* p = pControl->getObject(ppObject.get_ID(), ppObject.get_IDSize());
if (p != NULL) {
p->reset(ppObject.getContent());
return true;
}
}
if (flags & 0x20)
return true;
TFactory* pFactory = pControl->getFactory();
if (pFactory == NULL) {
JUTWarn w;
w << "factory not specified";
return false;
}
TObject* p = pFactory->create(ppObject);
if (p == NULL) {
if (flags & 0x40)
return true;
char a5c[8];
char t[16];
int type = ppObject.get_type();
data::toString_block(a5c, type);
JUTWarn w;
w << "can't create object : " << a5c;
w << "(0x" << type << ")";
return false;
}
pControl->appendObject(p);
return true;
}
#pragma pop
} // namespace stb
} // namespace JStudio
/* 80289928-802899BC 284268 0094+00 1/1 0/0 0/0 .text
* find_if<Q37JGadget37TLinkList<Q37JStudio3stb7TObject,-12>8iterator,Q37JStudio6object18TPRObject_ID_equal>__3stdFQ37JGadget37TLinkList<Q37JStudio3stb7TObject,-12>8iteratorQ37JGadget37TLinkList<Q37JStudio3stb7TObject,-12>8iteratorQ37JStudio6object18TPRObject_ID_equal
@@ -611,8 +529,9 @@ JStudio::stb::TParse::parseBlock_object(JStudio::stb::data::TParse_TBlock_object
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
extern "C" asm void func_80289928(void* _this, JGadget::TLinkList__template2::iterator param_0,
JGadget::TLinkList__template2::iterator param_1,
extern "C" asm void func_80289928(void* _this,
JGadget::TLinkList<JStudio::stb::TObject, 12>::iterator param_0,
JGadget::TLinkList<JStudio::stb::TObject, 12>::iterator param_1,
JStudio::object::TPRObject_ID_equal param_2) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/stb/func_80289928.s"
@@ -4,6 +4,7 @@
//
#include "JSystem/JStudio/JStudio_JParticle/control.h"
#include "JSystem/JStudio/JStudio/stb.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -14,13 +15,6 @@
namespace JStudio {
struct TObject {};
namespace stb {
struct data {
struct TParse_TBlock_object {};
};
}; // namespace stb
struct TCreateObject {
/* 80285488 */ ~TCreateObject();
};