mirror of https://github.com/zeldaret/tp.git
Port JStudio work to new branch (#160)
* build fix * stb * functionvalue * fvb * jstudio cleanup * d
This commit is contained in:
parent
74ed2da8bc
commit
c4ef30bc95
|
|
@ -3,4 +3,52 @@
|
|||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
namespace JGadget {
|
||||
namespace binary {
|
||||
|
||||
struct TEBit {
|
||||
u32 value;
|
||||
};
|
||||
|
||||
const void* parseVariableUInt_16_32_following(const void* pu16, u32* pu32First, u32* pu32Second,
|
||||
TEBit* tebit);
|
||||
|
||||
inline u32 align_roundUp(u32 arg0, u32 uAlign) {
|
||||
return (arg0 + uAlign - 1) & ~(uAlign - 1);
|
||||
}
|
||||
|
||||
struct TParseData {
|
||||
TParseData(const void* pContent) : raw(pContent) {}
|
||||
|
||||
const void* getRaw() const { return raw; }
|
||||
void setRaw(const void* p) { raw = p; }
|
||||
|
||||
const void* raw;
|
||||
};
|
||||
|
||||
template <int T>
|
||||
struct TParseData_aligned : public TParseData {
|
||||
TParseData_aligned(const void* pContent) : TParseData(pContent) {}
|
||||
void setRaw(const void* p) {
|
||||
if ((u32)p % T != 0) {
|
||||
JUTWarn w;
|
||||
w << "misaligned : " << (u32)p;
|
||||
}
|
||||
static_cast<TParseData*>(this)->setRaw(p);
|
||||
}
|
||||
};
|
||||
|
||||
// Base for header and/or block parsing
|
||||
struct TParse_header_block {
|
||||
virtual ~TParse_header_block();
|
||||
|
||||
virtual bool parseHeader_next(const void** ppData_inout, u32* puBlock_out, u32 arg2) = 0;
|
||||
virtual bool parseBlock_next(const void** ppData_inout, u32* puData_out, u32 arg2) = 0;
|
||||
|
||||
bool parse_next(const void** ppData_inout, u32 a2);
|
||||
};
|
||||
|
||||
} // namespace binary
|
||||
} // namespace JGadget
|
||||
|
||||
#endif /* BINARY_H */
|
||||
|
|
|
|||
|
|
@ -22,15 +22,15 @@ struct TNodeLinkList {
|
|||
TLinkListNode* node;
|
||||
};
|
||||
|
||||
TNodeLinkList() : mListNode() { Initialize_(); }
|
||||
TNodeLinkList() : ocObject_() { Initialize_(); }
|
||||
void Initialize_() {
|
||||
ptr = NULL;
|
||||
mListNode.mNext = &mListNode;
|
||||
mListNode.mPrev = &mListNode;
|
||||
ocObject_.mNext = &ocObject_;
|
||||
ocObject_.mPrev = &ocObject_;
|
||||
}
|
||||
|
||||
iterator end() {
|
||||
iterator iter(&mListNode);
|
||||
iterator iter(&ocObject_);
|
||||
return iter;
|
||||
}
|
||||
|
||||
|
|
@ -40,11 +40,11 @@ struct TNodeLinkList {
|
|||
/* 802DCB08 */ void splice(JGadget::TNodeLinkList::iterator, JGadget::TNodeLinkList&,
|
||||
JGadget::TNodeLinkList::iterator);
|
||||
/* 802DCBA8 */ void Insert(JGadget::TNodeLinkList::iterator, JGadget::TLinkListNode*);
|
||||
/* 802DCBD4 */ void Erase(JGadget::TLinkListNode*);
|
||||
/* 802DCBD4 */ iterator Erase(JGadget::TLinkListNode*);
|
||||
/* 802DCBF8 */ void Remove(JGadget::TLinkListNode*);
|
||||
|
||||
/* 0x00 */ TNodeLinkList* ptr;
|
||||
/* 0x04 */ TLinkListNode mListNode;
|
||||
/* 0x04 */ TLinkListNode ocObject_;
|
||||
}; // Size: 0xC
|
||||
|
||||
template <typename T, int I>
|
||||
|
|
@ -55,13 +55,18 @@ struct TLinkList : public TNodeLinkList {
|
|||
iterator(TNodeLinkList::iterator iter) : TNodeLinkList::iterator(iter) {}
|
||||
};
|
||||
|
||||
TLinkListNode* Element_toNode(T* element) const { return &element->mListNode; }
|
||||
TLinkListNode* Element_toNode(T* element) const { return &element->ocObject_; }
|
||||
|
||||
void Insert(TLinkList::iterator iter, T* element) {
|
||||
TLinkListNode* node = Element_toNode(element);
|
||||
TNodeLinkList::Insert(iter, node);
|
||||
}
|
||||
|
||||
iterator Erase(T* element) {
|
||||
TLinkListNode* node = Element_toNode(element);
|
||||
return ((TNodeLinkList*)this)->Erase(node);
|
||||
}
|
||||
|
||||
TLinkList::iterator end() {
|
||||
TNodeLinkList::iterator node_iter = TNodeLinkList::end();
|
||||
TLinkList::iterator iter(node_iter);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
#ifndef SEARCH_H
|
||||
#define SEARCH_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
namespace JGadget {
|
||||
|
||||
//! @todo: mangled name isn't correct, fix this
|
||||
//! Current: toValueFromIndex<PFdd_d>__7JGadgetFiPCPFdd_dUlRCPFdd_d
|
||||
//! Target: toValueFromIndex<PFdd_d>__7JGadgetFiPCPFdd_dUlRCPFdd_d_RCPFdd_d
|
||||
template <typename T>
|
||||
inline const T& toValueFromIndex(int idx, const T* pValue, u32 count, const T& fallback) {
|
||||
ASSERT(pValue != NULL);
|
||||
return (idx >= count) ? fallback : pValue[idx];
|
||||
}
|
||||
|
||||
} // namespace JGadget
|
||||
|
||||
#endif /* SEARCH_H */
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
#ifndef VECTOR_H
|
||||
#define VECTOR_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
extern u8 data_804511E0;
|
||||
extern u8 lit_569[];
|
||||
|
||||
namespace JGadget {
|
||||
|
||||
namespace vector {
|
||||
|
||||
u32 extend_default(u32 arg1, u32 arg2, u32 arg3);
|
||||
|
||||
typedef u32 (*ExtendFunc)(u32, u32, u32);
|
||||
|
||||
} // namespace vector
|
||||
|
||||
template <typename T>
|
||||
struct TAllocator {
|
||||
static TAllocator get() {}
|
||||
inline TAllocator() { _0 = lit_569[0]; }
|
||||
/* 0x0 */ u8 _0;
|
||||
/* 0x4 */ u32 _4;
|
||||
/* 0x8 */ u32 _8;
|
||||
/* 0xc */ u32 _c;
|
||||
};
|
||||
|
||||
template <typename T, template <class> class Allocator>
|
||||
struct TVector {
|
||||
TVector(Allocator<T> alloc) {
|
||||
_0 = NULL;
|
||||
pBegin_ = _0;
|
||||
_c = NULL;
|
||||
extend = vector::extend_default;
|
||||
}
|
||||
|
||||
void** begin() { return pBegin_; }
|
||||
void** end() { return pEnd_; }
|
||||
// void erase(void** arg1, void** arg2) {}
|
||||
|
||||
void** _0;
|
||||
void** pBegin_;
|
||||
void** pEnd_;
|
||||
u32 _c;
|
||||
vector::ExtendFunc extend;
|
||||
};
|
||||
|
||||
struct TVector_pointer_void : TVector<void*, TAllocator> {
|
||||
/* 802DCCD0 */ TVector_pointer_void(JGadget::TAllocator<void*> const&);
|
||||
/* 802DCCFC */ ~TVector_pointer_void();
|
||||
/* 802DCDC4 */ void erase(void**, void**);
|
||||
void insert(void**, void* const&);
|
||||
|
||||
void clear() { erase(begin(), end()); }
|
||||
void push_back(const void*& ref) { insert(end(), (void* const&)ref); }
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
struct TVector_pointer : TVector_pointer_void {
|
||||
// TVector_pointer(const TAllocator<void*>& allocator) : TVector_pointer_void(allocator) {}
|
||||
~TVector_pointer() {}
|
||||
|
||||
void push_back(const T& ref) {
|
||||
static_cast<TVector_pointer_void*>(this)->push_back((const void*&)ref);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace JGadget
|
||||
|
||||
#endif /* VECTOR_H */
|
||||
|
|
@ -1,6 +1,392 @@
|
|||
#ifndef FUNCTIONVALUE_H
|
||||
#define FUNCTIONVALUE_H
|
||||
|
||||
#include "JSystem/JGadget/search.h"
|
||||
#include "JSystem/JGadget/vector.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
extern u8 lit_652[];
|
||||
|
||||
namespace JStudio {
|
||||
|
||||
typedef f64 (*ExtrapolateParameter)(f64, f64);
|
||||
|
||||
class TFunctionValue;
|
||||
class TFunctionValueAttributeSet;
|
||||
|
||||
class TFunctionValueAttribute_refer;
|
||||
class TFunctionValueAttribute_range;
|
||||
class TFunctionValueAttribute_interpolate;
|
||||
|
||||
class TFunctionValue {
|
||||
public:
|
||||
enum TEProgress { PROG_INIT };
|
||||
enum TEAdjust { ADJ_INIT };
|
||||
enum TEOutside { OUT_INIT };
|
||||
enum TEInterpolate {};
|
||||
|
||||
/* 80281690 */ TFunctionValue();
|
||||
/* 802816A0 */ virtual ~TFunctionValue() = 0;
|
||||
|
||||
virtual u32 getType() const = 0;
|
||||
virtual TFunctionValueAttributeSet getAttributeSet() = 0;
|
||||
virtual void initialize() = 0;
|
||||
virtual void prepare() = 0;
|
||||
virtual f64 getValue(f64 arg1) = 0;
|
||||
|
||||
/* 80281648 */ static ExtrapolateParameter toFunction_outside(int);
|
||||
|
||||
static ExtrapolateParameter toFunction(TFunctionValue::TEOutside outside) {
|
||||
return toFunction_outside(outside);
|
||||
}
|
||||
};
|
||||
|
||||
class TFunctionValueAttributeSet_const {
|
||||
public:
|
||||
TFunctionValueAttributeSet_const(TFunctionValueAttribute_refer* refer,
|
||||
TFunctionValueAttribute_range* range,
|
||||
TFunctionValueAttribute_interpolate* interp)
|
||||
: refer_(refer), range_(range), interp_(interp) {}
|
||||
|
||||
TFunctionValueAttribute_refer* refer_get() const { return refer_; }
|
||||
TFunctionValueAttribute_range* range_get() const { return range_; }
|
||||
TFunctionValueAttribute_interpolate* interpolate_get() const { return interp_; }
|
||||
|
||||
private:
|
||||
/* 0x00 */ TFunctionValueAttribute_refer* refer_;
|
||||
/* 0x04 */ TFunctionValueAttribute_range* range_;
|
||||
/* 0x08 */ TFunctionValueAttribute_interpolate* interp_;
|
||||
};
|
||||
|
||||
class TFunctionValueAttributeSet : public TFunctionValueAttributeSet_const {
|
||||
public:
|
||||
TFunctionValueAttributeSet(TFunctionValueAttribute_refer* refer,
|
||||
TFunctionValueAttribute_range* range,
|
||||
TFunctionValueAttribute_interpolate* interp)
|
||||
: TFunctionValueAttributeSet_const(refer, range, interp) {}
|
||||
|
||||
TFunctionValueAttribute_refer* refer_get() const {
|
||||
return static_cast<const TFunctionValueAttributeSet_const*>(this)->refer_get();
|
||||
}
|
||||
TFunctionValueAttribute_range* range_get() const {
|
||||
return static_cast<const TFunctionValueAttributeSet_const*>(this)->range_get();
|
||||
}
|
||||
TFunctionValueAttribute_interpolate* interpolate_get() const {
|
||||
return static_cast<const TFunctionValueAttributeSet_const*>(this)->interpolate_get();
|
||||
}
|
||||
};
|
||||
|
||||
class TFunctionValueAttribute_refer : public JGadget::TVector_pointer<TFunctionValue*> {
|
||||
public:
|
||||
// TFunctionValueAttribute_refer() :
|
||||
// JGadget::TVector_pointer<TFunctionValue*>(JGadget::TAllocator<void*>()) {}
|
||||
~TFunctionValueAttribute_refer() {}
|
||||
|
||||
/* 802816E8 */ void refer_initialize();
|
||||
|
||||
const TFunctionValueAttribute_refer* refer_getContainer() const { return this; }
|
||||
JGadget::TVector_pointer<TFunctionValue*>& refer_referContainer() { return *this; }
|
||||
bool refer_isReferring(const TFunctionValue* p) const { return false; } // todo
|
||||
};
|
||||
|
||||
class TFunctionValueAttribute_range {
|
||||
public:
|
||||
/* 80281D18 */ TFunctionValueAttribute_range();
|
||||
|
||||
/* 80281918 */ void range_initialize();
|
||||
/* 8028194C */ void range_prepare();
|
||||
/* 802819F4 */ void range_set(f64, f64);
|
||||
/* 80281A08 */ f64 range_getParameter(f64, f64, f64) const;
|
||||
|
||||
TFunctionValue::TEProgress range_getProgress() const {
|
||||
return (TFunctionValue::TEProgress)mProgress;
|
||||
}
|
||||
void range_setProgress(TFunctionValue::TEProgress progress) { mProgress = progress; }
|
||||
TFunctionValue::TEAdjust range_getAdjust() const { return (TFunctionValue::TEAdjust)mAdjust; }
|
||||
void range_setAdjust(TFunctionValue::TEAdjust adjust) { mAdjust = adjust; }
|
||||
void range_setOutside(TFunctionValue::TEOutside outside) { range_setOutside(outside, outside); }
|
||||
void range_setOutside(TFunctionValue::TEOutside begin, TFunctionValue::TEOutside end) {
|
||||
range_setOutside_begin(begin);
|
||||
range_setOutside_end(end);
|
||||
}
|
||||
void range_setOutside_begin(TFunctionValue::TEOutside begin) { mBegin = begin; }
|
||||
void range_setOutside_end(TFunctionValue::TEOutside end) { mEnd = end; }
|
||||
f64 range_getParameter_outside(f64 arg1) const {
|
||||
f64 temp = arg1 - fBegin_;
|
||||
f64 result = temp;
|
||||
if (temp < *(f64*)&lit_652) {
|
||||
result = TFunctionValue::toFunction(mBegin)(temp, fDifference_);
|
||||
} else if (temp >= fDifference_) {
|
||||
result = TFunctionValue::toFunction(mEnd)(temp, fDifference_);
|
||||
}
|
||||
return result + fBegin_;
|
||||
}
|
||||
f64 range_getParameter_progress(f64 arg1) const { return _20 + _28 * (arg1 - _20); }
|
||||
|
||||
private:
|
||||
/* 0x00 */ f64 fBegin_;
|
||||
/* 0x08 */ f64 fEnd_;
|
||||
/* 0x10 */ f64 fDifference_;
|
||||
/* 0x18 */ s8 mProgress;
|
||||
/* 0x19 */ s8 mAdjust;
|
||||
/* 0x1A */ s8 _1a[2];
|
||||
/* 0x1C */ u32 _1c;
|
||||
/* 0x20 */ f64 _20;
|
||||
/* 0x28 */ f64 _28;
|
||||
/* 0x30 */ TFunctionValue::TEOutside mBegin;
|
||||
/* 0x34 */ TFunctionValue::TEOutside mEnd;
|
||||
};
|
||||
|
||||
class TFunctionValueAttribute_interpolate {
|
||||
public:
|
||||
TFunctionValueAttribute_interpolate() : interpolate_(0) {}
|
||||
|
||||
void interpolate_initialize() { interpolate_ = 0; }
|
||||
void interpolate_prepare() {}
|
||||
u32 interpolate_get() const { return interpolate_; }
|
||||
void interpolate_set(TFunctionValue::TEInterpolate interpolate) { interpolate_ = interpolate; }
|
||||
|
||||
private:
|
||||
/* 0x0 */ u32 interpolate_;
|
||||
};
|
||||
|
||||
class TFunctionValue_constant : public TFunctionValue {
|
||||
public:
|
||||
/* 8028236C */ TFunctionValue_constant();
|
||||
/* 80283D44 */ virtual ~TFunctionValue_constant() {}
|
||||
|
||||
/* 802823B4 */ virtual u32 getType() const;
|
||||
/* 802823BC */ virtual TFunctionValueAttributeSet getAttributeSet();
|
||||
/* 802823D0 */ virtual void initialize();
|
||||
/* 802823E0 */ virtual void prepare();
|
||||
/* 802823E4 */ virtual f64 getValue(f64);
|
||||
|
||||
void data_set(f64 value) { fValue_ = value; }
|
||||
|
||||
private:
|
||||
f64 fValue_;
|
||||
};
|
||||
|
||||
class TFunctionValue_composite : TFunctionValue, TFunctionValueAttribute_refer {
|
||||
public:
|
||||
struct TData {
|
||||
TData(void* data) : u32data((u32)data) {}
|
||||
TData(const void* data) : rawData(data) {}
|
||||
TData(u32 data) : u32data(data) {}
|
||||
TData(f32 data) : f32data(data) {}
|
||||
|
||||
inline void operator=(const TData& rhs) { f32data = rhs.f32data; }
|
||||
|
||||
union {
|
||||
const void* rawData;
|
||||
u32 u32data;
|
||||
f64 f32data;
|
||||
};
|
||||
};
|
||||
typedef f64 (*UnkFunc)(f64, const TFunctionValueAttribute_refer*,
|
||||
const TFunctionValue_composite::TData*);
|
||||
typedef f64 (*CompositeFunc)(const JGadget::TVector_pointer<TFunctionValue>&,
|
||||
const TFunctionValue_composite::TData&, f64);
|
||||
|
||||
/* 80281D5C */ TFunctionValue_composite();
|
||||
/* 80283DA4 */ virtual ~TFunctionValue_composite() {}
|
||||
|
||||
/* 80281DB8 */ virtual u32 getType() const;
|
||||
/* 80281DC0 */ virtual TFunctionValueAttributeSet getAttributeSet();
|
||||
/* 80281DE0 */ virtual void initialize();
|
||||
/* 80281E24 */ virtual void prepare();
|
||||
/* 80281E28 */ virtual f64 getValue(f64);
|
||||
/* 80281E5C */ void composite_raw(TVector_pointer<TFunctionValue*> const&, TData const&, f64);
|
||||
/* 80281EC8 */ void composite_index(TVector_pointer<TFunctionValue*> const&, TData const&, f64);
|
||||
/* 8028202C */ void composite_parameter(TVector_pointer<TFunctionValue*> const&, TData const&,
|
||||
f64);
|
||||
/* 80282094 */ void composite_add(TVector_pointer<JStudio::TFunctionValue*> const&,
|
||||
TData const&, f64);
|
||||
/* 80282118 */ void composite_subtract(TVector_pointer<TFunctionValue*> const&, TData const&,
|
||||
f64);
|
||||
/* 80282200 */ void composite_multiply(TVector_pointer<TFunctionValue*> const&, TData const&,
|
||||
f64);
|
||||
/* 80282284 */ void composite_divide(TVector_pointer<TFunctionValue*> const&, TData const&,
|
||||
f64);
|
||||
|
||||
void data_set(CompositeFunc fn, const TData& dat) {
|
||||
pfn_ = (UnkFunc)fn;
|
||||
data_setData(dat);
|
||||
}
|
||||
const TData* data_getData() const { return &data; }
|
||||
void data_setData(const TData& dat) { data = dat; }
|
||||
|
||||
private:
|
||||
UnkFunc pfn_;
|
||||
TData data;
|
||||
};
|
||||
|
||||
class TFunctionValue_transition : TFunctionValue,
|
||||
TFunctionValueAttribute_range,
|
||||
TFunctionValueAttribute_interpolate {
|
||||
public:
|
||||
/* 802823EC */ TFunctionValue_transition();
|
||||
/* 80283CE4 */ virtual ~TFunctionValue_transition() {}
|
||||
|
||||
/* 8028244C */ virtual u32 getType() const;
|
||||
/* 80282454 */ virtual TFunctionValueAttributeSet getAttributeSet();
|
||||
/* 80282484 */ virtual void initialize();
|
||||
/* 802824D0 */ virtual void prepare();
|
||||
/* 802824F4 */ virtual f64 getValue(f64);
|
||||
|
||||
void data_set(f64 a1, f64 a2) {
|
||||
_48 = a1;
|
||||
_50 = a2;
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x48 */ f64 _48;
|
||||
/* 0x50 */ f64 _50;
|
||||
};
|
||||
|
||||
class TFunctionValue_list : TFunctionValue,
|
||||
TFunctionValueAttribute_range,
|
||||
TFunctionValueAttribute_interpolate {
|
||||
public:
|
||||
struct TIndexData_ {
|
||||
f64 _0;
|
||||
f64 _8;
|
||||
u32 _10;
|
||||
};
|
||||
typedef f64 (*update_INTERPOLATE)(const TFunctionValue_list&, const TIndexData_&);
|
||||
|
||||
/* 802826BC */ TFunctionValue_list();
|
||||
virtual ~TFunctionValue_list() {}
|
||||
|
||||
/* 80282720 */ virtual u32 getType() const;
|
||||
/* 80282728 */ virtual TFunctionValueAttributeSet getAttributeSet();
|
||||
/* 80282758 */ virtual void initialize();
|
||||
/* 802827A8 */ virtual void prepare();
|
||||
/* 80282858 */ virtual f64 getValue(f64);
|
||||
|
||||
void data_set(const f32* pf, u32 u) {
|
||||
ASSERT((pf != NULL) || (u == 0));
|
||||
_44 = pf;
|
||||
_48 = u;
|
||||
}
|
||||
|
||||
void data_setInterval(f64 f) {
|
||||
ASSERT(f > TValue(0));
|
||||
_50 = f;
|
||||
}
|
||||
|
||||
/* 80282C10 */ static f64
|
||||
update_INTERPOLATE_NONE_(JStudio::TFunctionValue_list const&,
|
||||
JStudio::TFunctionValue_list::TIndexData_ const&);
|
||||
/* 80282C24 */ static f64
|
||||
update_INTERPOLATE_LINEAR_(JStudio::TFunctionValue_list const&,
|
||||
JStudio::TFunctionValue_list::TIndexData_ const&);
|
||||
/* 80282C58 */ static f64
|
||||
update_INTERPOLATE_PLATEAU_(JStudio::TFunctionValue_list const&,
|
||||
JStudio::TFunctionValue_list::TIndexData_ const&);
|
||||
/* 80282CA8 */ static f64
|
||||
update_INTERPOLATE_BSPLINE_dataMore3_(JStudio::TFunctionValue_list const&,
|
||||
JStudio::TFunctionValue_list::TIndexData_ const&);
|
||||
|
||||
private:
|
||||
/* 0x44 */ const f32* _44;
|
||||
/* 0x48 */ u32 _48;
|
||||
/* 0x50 */ f64 _50;
|
||||
/* 0x58 */ update_INTERPOLATE _58;
|
||||
};
|
||||
|
||||
class TFunctionValue_list_parameter : TFunctionValue,
|
||||
TFunctionValueAttribute_range,
|
||||
TFunctionValueAttribute_interpolate {
|
||||
public:
|
||||
struct TIterator_data_ {
|
||||
TIterator_data_(const f32* value) : value_(value) {}
|
||||
TIterator_data_(const TIterator_data_& other) : value_(other.value_) {}
|
||||
|
||||
void operator=(const TIterator_data_& rhs) { value_ = rhs.value_; }
|
||||
|
||||
const f32* get() const { return value_; }
|
||||
void set(const f32* value) { value_ = value; }
|
||||
|
||||
const f32* value_;
|
||||
};
|
||||
typedef f64 (*update_INTERPOLATE)(const TFunctionValue_list_parameter&, f64);
|
||||
|
||||
/* 80282D34 */ TFunctionValue_list_parameter();
|
||||
/* 80283C24 */ virtual ~TFunctionValue_list_parameter() {}
|
||||
|
||||
/* 80282DA0 */ virtual u32 getType() const;
|
||||
/* 80282DA8 */ virtual TFunctionValueAttributeSet getAttributeSet();
|
||||
/* 80282DD8 */ void data_set(f32 const*, u32);
|
||||
/* 80282E08 */ virtual void initialize();
|
||||
/* 80282E60 */ virtual void prepare();
|
||||
/* 80282F10 */ virtual f64 getValue(f64);
|
||||
|
||||
/* 80282FE8 */ static f64
|
||||
update_INTERPOLATE_NONE_(JStudio::TFunctionValue_list_parameter const&, f64);
|
||||
/* 80282FF4 */ static f64
|
||||
update_INTERPOLATE_LINEAR_(JStudio::TFunctionValue_list_parameter const&, f64);
|
||||
/* 80283024 */ static f64
|
||||
update_INTERPOLATE_PLATEAU_(JStudio::TFunctionValue_list_parameter const&, f64);
|
||||
/* 80283060 */ static f64
|
||||
update_INTERPOLATE_BSPLINE_dataMore3_(JStudio::TFunctionValue_list_parameter const&, f64);
|
||||
|
||||
private:
|
||||
/* 0x44 */ const f32* _44;
|
||||
/* 0x48 */ u32 _48;
|
||||
/* 0x4c */ TIterator_data_ dat1;
|
||||
/* 0x50 */ TIterator_data_ dat2;
|
||||
/* 0x54 */ TIterator_data_ dat3;
|
||||
/* 0x58 */ update_INTERPOLATE _58;
|
||||
};
|
||||
|
||||
class TFunctionValue_hermite : TFunctionValue, TFunctionValueAttribute_range {
|
||||
public:
|
||||
struct TIterator_data_ {
|
||||
TIterator_data_(const TFunctionValue_hermite& rParent, const f32* value) {
|
||||
value_ = value;
|
||||
size_ = rParent.data_getSize();
|
||||
}
|
||||
TIterator_data_(const TIterator_data_& other) {
|
||||
value_ = other.value_;
|
||||
size_ = other.size_;
|
||||
}
|
||||
|
||||
void set(const f32* value, u32 size) {
|
||||
value_ = value;
|
||||
size_ = size;
|
||||
}
|
||||
|
||||
void operator=(const TIterator_data_& rhs) {
|
||||
value_ = rhs.value_;
|
||||
size_ = rhs.size_;
|
||||
}
|
||||
|
||||
/* 0x00 */ const f32* value_;
|
||||
/* 0x04 */ u32 size_;
|
||||
};
|
||||
|
||||
/* 802832C4 */ TFunctionValue_hermite();
|
||||
/* 80283BC4 */ virtual ~TFunctionValue_hermite() {}
|
||||
|
||||
/* 80283344 */ virtual u32 getType() const;
|
||||
/* 8028334C */ virtual TFunctionValueAttributeSet getAttributeSet();
|
||||
/* 8028336C */ void data_set(f32 const*, u32, u32);
|
||||
/* 802833BC */ virtual void initialize();
|
||||
/* 80283428 */ virtual void prepare();
|
||||
/* 8028344C */ virtual f64 getValue(f64);
|
||||
|
||||
u32 data_getSize() const { return uSize_; }
|
||||
|
||||
private:
|
||||
/* 0x40 */ const f32* pf_;
|
||||
/* 0x44 */ u32 u_;
|
||||
/* 0x48 */ u32 uSize_;
|
||||
/* 0x4c */ TIterator_data_ dat1;
|
||||
/* 0x50 */ TIterator_data_ dat2;
|
||||
/* 0x54 */ TIterator_data_ dat3;
|
||||
};
|
||||
|
||||
} // namespace JStudio
|
||||
|
||||
#endif /* FUNCTIONVALUE_H */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,52 @@
|
|||
#ifndef FVB_DATA_PARSE_H
|
||||
#define FVB_DATA_PARSE_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/JStudio/JStudio/fvb-data.h"
|
||||
|
||||
namespace JStudio {
|
||||
namespace fvb {
|
||||
namespace data {
|
||||
|
||||
class TParse_TBlock : public TParseData_aligned<4> {
|
||||
public:
|
||||
TParse_TBlock(const void* content) : TParseData_aligned<4>(content) {}
|
||||
|
||||
const TBlock* get() const { return (TBlock*)getRaw(); }
|
||||
|
||||
u32 get_size() const { return get()->size; }
|
||||
const void* getNext() const {
|
||||
u32 size = get_size();
|
||||
return (const void*)((u8*)getRaw() + size);
|
||||
}
|
||||
u16 get_type() const { return get()->type; }
|
||||
u16 get_IDSize() const { return get()->id_size; }
|
||||
const void* getBlockEnd_() const { return (u8*)getRaw() + sizeof(TBlock); }
|
||||
const void* get_ID() const {
|
||||
const void* ret = 0;
|
||||
if (get_IDSize())
|
||||
ret = getBlockEnd_();
|
||||
return ret;
|
||||
}
|
||||
const void* getContent() const {
|
||||
u32 size = align_roundUp(get_IDSize(), 4);
|
||||
return (const void*)((int)getBlockEnd_() + size);
|
||||
}
|
||||
};
|
||||
|
||||
class TParse_TParagraph : public TParseData_aligned<4> {
|
||||
public:
|
||||
struct TData {
|
||||
/* 0x04 */ u32 u32Size;
|
||||
/* 0x08 */ u32 u32Type;
|
||||
/* 0x0C */ const void* pContent;
|
||||
};
|
||||
TParse_TParagraph(const void* content) : TParseData_aligned<4>(content) {}
|
||||
|
||||
/* 802850AC */ void getData(JStudio::fvb::data::TParse_TParagraph::TData*) const;
|
||||
};
|
||||
|
||||
} // namespace data
|
||||
} // namespace fvb
|
||||
} // namespace JStudio
|
||||
|
||||
#endif /* FVB_DATA_PARSE_H */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,63 @@
|
|||
#ifndef FVB_DATA_H
|
||||
#define FVB_DATA_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/JGadget/binary.h"
|
||||
#include "JSystem/JStudio/JStudio/functionvalue.h"
|
||||
|
||||
using namespace JGadget::binary;
|
||||
|
||||
namespace JStudio {
|
||||
namespace fvb {
|
||||
namespace data {
|
||||
|
||||
extern f32 ga4cSignature[1 + 1 /* padding */];
|
||||
|
||||
const int PARAGRAPH_DATA = 1;
|
||||
|
||||
typedef enum TEComposite {
|
||||
/* 0x0 */ COMPOSITE_NONE,
|
||||
/* 0x1 */ COMPOSITE_RAW,
|
||||
/* 0x2 */ COMPOSITE_IDX,
|
||||
/* 0x3 */ COMPOSITE_PARAM,
|
||||
/* 0x4 */ COMPOSITE_ADD,
|
||||
/* 0x5 */ COMPOSITE_SUB,
|
||||
/* 0x6 */ COMPOSITE_MUL,
|
||||
/* 0x7 */ COMPOSITE_DIV,
|
||||
/* 0x8 */ COMPOSITE_ENUM_SIZE,
|
||||
};
|
||||
|
||||
typedef const void* (*CompositeOperation)(TFunctionValue_composite::TData);
|
||||
|
||||
struct TBlock {
|
||||
/* 0x0 */ u32 size;
|
||||
/* 0x4 */ u16 type;
|
||||
/* 0x6 */ u16 id_size;
|
||||
/* 0x8 */ u8 id[0];
|
||||
};
|
||||
|
||||
struct THeader {
|
||||
/* 0x00 */ char signature[4];
|
||||
/* 0x04 */ u16 byte_order; // must be 0xFEFF
|
||||
/* 0x06 */ u16 version; // 0-1 = obselete, 2-7 = OK
|
||||
/* 0x08 */ u32 _8;
|
||||
/* 0x0C */ u32 block_number;
|
||||
/* 0x10 */ u8 content[0];
|
||||
};
|
||||
// Parses a THeader
|
||||
class TParse_THeader : public TParseData_aligned<4> {
|
||||
public:
|
||||
TParse_THeader(const void* p) : TParseData_aligned<4>(p) {}
|
||||
|
||||
const THeader* get() const { return (THeader*)getRaw(); }
|
||||
const void* getContent() const { return ((THeader*)getRaw())->content; }
|
||||
const char* get_signature() const { return get()->signature; }
|
||||
u16 get_byteOrder() const { return get()->byte_order; }
|
||||
u16 get_version() const { return get()->version; }
|
||||
u32 get_blockNumber() const { return get()->block_number; }
|
||||
};
|
||||
|
||||
} // namespace data
|
||||
} // namespace fvb
|
||||
} // namespace JStudio
|
||||
|
||||
#endif /* FVB_DATA_H */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,159 @@
|
|||
#ifndef FVB_H
|
||||
#define FVB_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/JGadget/linklist.h"
|
||||
#include "JSystem/JStudio/JStudio/fvb-data-parse.h"
|
||||
#include "JSystem/JStudio/JStudio/object-id.h"
|
||||
#include "global.h"
|
||||
|
||||
namespace JStudio {
|
||||
namespace fvb {
|
||||
|
||||
class TControl;
|
||||
|
||||
class TParse : public TParse_header_block {
|
||||
public:
|
||||
/* 80284ADC */ TParse(JStudio::fvb::TControl*);
|
||||
/* 80284AFC */ virtual ~TParse();
|
||||
/* 80284B5C */ virtual bool parseHeader_next(void const**, u32*, u32);
|
||||
/* 80284BF0 */ virtual bool parseBlock_next(void const**, u32*, u32);
|
||||
|
||||
TControl* getControl() const { return pControl_; }
|
||||
|
||||
private:
|
||||
TControl* pControl_;
|
||||
};
|
||||
|
||||
class TObject : public object::TObject_ID {
|
||||
public:
|
||||
TObject(const data::TParse_TBlock& block);
|
||||
TObject(void const* id, u32 id_size, TFunctionValue* value);
|
||||
|
||||
explicit TObject(const data::TParse_TBlock& block, TFunctionValue* value)
|
||||
: TObject_ID(block.get_ID(), block.get_IDSize()), pfv_(value) {
|
||||
ASSERT(pfv_ != NULL);
|
||||
}
|
||||
|
||||
virtual ~TObject() = 0;
|
||||
|
||||
virtual void prepare_data_(const data::TParse_TParagraph::TData& data, TControl* control) = 0;
|
||||
|
||||
void prepare(const data::TParse_TBlock& block, TControl* control);
|
||||
|
||||
TFunctionValue* const& referFunctionValue() { return pfv_; }
|
||||
|
||||
private:
|
||||
/* 0x0C */ JGadget::TLinkListNode mNode;
|
||||
/* 0x14 */ TFunctionValue* pfv_;
|
||||
};
|
||||
|
||||
class TFactory {
|
||||
public:
|
||||
/* 80284918 */ virtual ~TFactory();
|
||||
|
||||
/* 80284960 */ virtual TObject* create(JStudio::fvb::data::TParse_TBlock const&);
|
||||
/* 80284AA0 */ virtual void destroy(JStudio::fvb::TObject*);
|
||||
};
|
||||
|
||||
class TControl {
|
||||
public:
|
||||
/* 80284668 */ TControl();
|
||||
/* 80284698 */ virtual ~TControl();
|
||||
|
||||
/* 80284704 */ void appendObject(JStudio::fvb::TObject*);
|
||||
/* 80284750 */ void removeObject(JStudio::fvb::TObject*);
|
||||
/* 80284780 */ void destroyObject(JStudio::fvb::TObject*);
|
||||
/* 802847D0 */ void destroyObject_all();
|
||||
/* 80284834 */ TObject* getObject(void const*, u32);
|
||||
/* 802848D4 */ TObject* getObject_index(u32);
|
||||
|
||||
TFactory* getFactory() const { return pFactory; }
|
||||
|
||||
private:
|
||||
TFactory* pFactory;
|
||||
JGadget::TLinkList<TObject, 12> ocObject_;
|
||||
};
|
||||
|
||||
class TObject_composite : public TObject {
|
||||
public:
|
||||
/* 80284254 */ TObject_composite(JStudio::fvb::data::TParse_TBlock const&);
|
||||
/* 802842D4 */ virtual void prepare_data_(JStudio::fvb::data::TParse_TParagraph::TData const&,
|
||||
JStudio::fvb::TControl*);
|
||||
/* 80284F78 */ virtual ~TObject_composite() {}
|
||||
|
||||
private:
|
||||
TFunctionValue_composite fnValue;
|
||||
};
|
||||
|
||||
class TObject_constant : public TObject {
|
||||
public:
|
||||
/* 80284338 */ TObject_constant(data::TParse_TBlock const&);
|
||||
/* 80284EF4 */ virtual ~TObject_constant() {}
|
||||
|
||||
/* 802843B8 */ virtual void prepare_data_(data::TParse_TParagraph::TData const&, TControl*);
|
||||
|
||||
private:
|
||||
TFunctionValue_constant fnValue;
|
||||
};
|
||||
|
||||
class TObject_transition : public TObject {
|
||||
public:
|
||||
/* 802843C8 */ TObject_transition(data::TParse_TBlock const&);
|
||||
/* 80284E70 */ virtual ~TObject_transition() {}
|
||||
|
||||
/* 80284448 */ virtual void prepare_data_(data::TParse_TParagraph::TData const&, TControl*);
|
||||
|
||||
private:
|
||||
TFunctionValue_transition fnValue;
|
||||
};
|
||||
|
||||
class TObject_list : public TObject {
|
||||
public:
|
||||
struct ListData {
|
||||
/* 0x0 */ f32 _0;
|
||||
/* 0x4 */ u32 _4;
|
||||
/* 0x8 */ f32 _8[0];
|
||||
};
|
||||
/* 80284460 */ TObject_list(data::TParse_TBlock const&);
|
||||
/* 80284DEC */ virtual ~TObject_list() {}
|
||||
|
||||
/* 802844E0 */ virtual void prepare_data_(data::TParse_TParagraph::TData const&, TControl*);
|
||||
|
||||
private:
|
||||
TFunctionValue_list fnValue;
|
||||
};
|
||||
|
||||
class TObject_list_parameter : public TObject {
|
||||
public:
|
||||
struct ListData {
|
||||
u32 _0;
|
||||
f32 _4[0];
|
||||
};
|
||||
/* 80284500 */ TObject_list_parameter(data::TParse_TBlock const&);
|
||||
/* 80284D68 */ virtual ~TObject_list_parameter() {}
|
||||
|
||||
/* 80284580 */ virtual void prepare_data_(data::TParse_TParagraph::TData const&, TControl*);
|
||||
|
||||
private:
|
||||
TFunctionValue_list_parameter fnValue;
|
||||
};
|
||||
|
||||
struct TObject_hermite : public TObject {
|
||||
public:
|
||||
struct ListData {
|
||||
u32 _0; // u : 28, uSize : 4
|
||||
f32 _4[0];
|
||||
};
|
||||
/* 802845B0 */ TObject_hermite(data::TParse_TBlock const&);
|
||||
/* 80284CE4 */ virtual ~TObject_hermite() {}
|
||||
|
||||
/* 80284630 */ virtual void prepare_data_(data::TParse_TParagraph::TData const&, TControl*);
|
||||
|
||||
private:
|
||||
TFunctionValue_hermite fnValue;
|
||||
};
|
||||
|
||||
} // namespace fvb
|
||||
} // namespace JStudio
|
||||
|
||||
#endif /* FVB_H */
|
||||
|
|
|
|||
|
|
@ -3,4 +3,27 @@
|
|||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
namespace JStudio {
|
||||
namespace object {
|
||||
|
||||
struct TPRObject_ID_equal {};
|
||||
|
||||
struct TIDData {
|
||||
public:
|
||||
TIDData(const void* id, u32 id_size) : mID(id), mID_size(id_size) {}
|
||||
|
||||
/* 80288988 */ void isEqual(JStudio::object::TIDData const&, JStudio::object::TIDData const&);
|
||||
|
||||
private:
|
||||
const void* mID;
|
||||
u32 mID_size;
|
||||
};
|
||||
|
||||
struct TObject_ID : public TIDData {
|
||||
TObject_ID(const void* id, u32 id_size) : TIDData(id, id_size) {}
|
||||
};
|
||||
|
||||
} // namespace object
|
||||
} // namespace JStudio
|
||||
|
||||
#endif /* OBJECT_ID_H */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,110 @@
|
|||
#ifndef STB_DATA_PARSE_H
|
||||
#define STB_DATA_PARSE_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/JGadget/binary.h"
|
||||
#include "JSystem/JStudio/JStudio/stb-data.h"
|
||||
|
||||
using namespace JGadget::binary;
|
||||
|
||||
namespace JStudio {
|
||||
namespace stb {
|
||||
namespace data {
|
||||
|
||||
// Parses a THeader
|
||||
class TParse_THeader : public TParseData_aligned<4> {
|
||||
public:
|
||||
TParse_THeader(const void* p) : TParseData_aligned<4>(p) {}
|
||||
|
||||
const THeader* get() const { return (THeader*)getRaw(); }
|
||||
const void* getContent() const { return ((THeader*)getRaw())->content; }
|
||||
const char* get_signature() const { return get()->signature; }
|
||||
u16 get_byteOrder() const { return get()->byte_order; }
|
||||
u16 get_version() const { return get()->version; }
|
||||
u32 get_blockNumber() const { return get()->block_number; }
|
||||
};
|
||||
|
||||
class TParse_TBlock : public TParseData_aligned<4> {
|
||||
public:
|
||||
TParse_TBlock(const void* content) : TParseData_aligned<4>(content) {}
|
||||
|
||||
const TBlock* get() const { return (TBlock*)getRaw(); }
|
||||
const TBlock* getNext() const { return (TBlock*)((u8*)getRaw() + get_size()); }
|
||||
|
||||
u32 get_size() const { return get()->size; }
|
||||
u32 get_type() const { return get()->type; }
|
||||
};
|
||||
|
||||
class TParse_TSequence : public TParseData_aligned<4> {
|
||||
public:
|
||||
struct TData {
|
||||
/* 0x00 */ u8 type;
|
||||
/* 0x04 */ u32 param;
|
||||
/* 0x08 */ const void* content;
|
||||
/* 0x0C */ const void* next;
|
||||
};
|
||||
|
||||
TParse_TSequence(const void* content) : TParseData_aligned<4>(content) {}
|
||||
/* 802899BC */ void getData(TData*) const;
|
||||
|
||||
const void* get() const { return getRaw(); }
|
||||
u32 get_head() const { return *(u32*)get(); }
|
||||
};
|
||||
|
||||
class TParse_TParagraph : public TParseData_aligned<4> {
|
||||
public:
|
||||
struct TData {
|
||||
/* 0x00 */ u32 type;
|
||||
/* 0x04 */ u32 param;
|
||||
/* 0x08 */ const void* content;
|
||||
/* 0x0C */ const void* next;
|
||||
};
|
||||
|
||||
TParse_TParagraph(const void* content) : TParseData_aligned<4>(content) {}
|
||||
/* 80289A08 */ void getData(TData*) const;
|
||||
};
|
||||
|
||||
struct TParse_TParagraph_data : public TParseData_aligned<4> {
|
||||
struct TData {
|
||||
/* 0x00 */ u8 _0;
|
||||
/* 0x04 */ u32 _4;
|
||||
/* 0x08 */ u32 _8;
|
||||
/* 0x0C */ const void* _c;
|
||||
/* 0x10 */ const void* _10;
|
||||
};
|
||||
|
||||
TParse_TParagraph_data(const void* content) : TParseData_aligned<4>(content) {}
|
||||
/* 80289A80 */ void getData(TData*) const;
|
||||
};
|
||||
|
||||
// Parses a TObject ("demo object")
|
||||
class TParse_TBlock_object : public TParse_TBlock {
|
||||
public:
|
||||
TParse_TBlock_object(const void* content) : TParse_TBlock(content) {}
|
||||
|
||||
const TBlock_object* get() const { return (TBlock_object*)getRaw(); }
|
||||
const void* getContent() const {
|
||||
return ((TBlock_object*)getRaw())->id + align_roundUp(get_IDSize(), 4);
|
||||
}
|
||||
|
||||
u16 get_flag() const { return get()->flag; }
|
||||
u16 get_IDSize() const { return get()->id_size; }
|
||||
const void* get_ID() const { return get()->id; }
|
||||
};
|
||||
|
||||
class TParse_TParagraph_dataID : public TParseData_aligned<4> {
|
||||
public:
|
||||
TParse_TParagraph_dataID(const void* pContent) : TParseData_aligned<4>(pContent) {}
|
||||
|
||||
const TParagraph* get() const { return (TParagraph*)getRaw(); }
|
||||
u16 get_IDSize() const { return get()->id_size; }
|
||||
const void* get_ID() const { return get()->id; }
|
||||
const void* getContent() const {
|
||||
return ((TParagraph*)getRaw())->id + align_roundUp(get_IDSize(), 4);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace data
|
||||
} // namespace stb
|
||||
} // namespace JStudio
|
||||
|
||||
#endif /* STB_DATA_PARSE_H */
|
||||
|
|
|
|||
|
|
@ -3,4 +3,67 @@
|
|||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
namespace JStudio {
|
||||
namespace stb {
|
||||
namespace data {
|
||||
|
||||
const int guBit_TSequence_type = 24;
|
||||
|
||||
const int BLOCK_SOUND = 'JSND';
|
||||
const int BLOCK_ACTOR = 'JACT';
|
||||
const int BLOCK_AMBIENTLIGHT = 'JABL';
|
||||
const int BLOCK_CAMERA = 'JCMR';
|
||||
const int BLOCK_FOG = 'JFOG';
|
||||
const int BLOCK_LIGHT = 'JLIT';
|
||||
const int BLOCK_MESSAGE = 'JMSG';
|
||||
const int BLOCK_PARTICLE = 'JPTC';
|
||||
const int BLOCK_NONE = -1;
|
||||
|
||||
// Used to expand a signed 24 int to a signed 32 int
|
||||
const u32 gu32Mask_TSequence_value_signExpansion = 0xFF000000;
|
||||
extern const u32 ga4cSignature; // 'STB/0'
|
||||
extern const u8 gauDataSize_TEParagraph_data[32];
|
||||
|
||||
inline void toString_block(char* a5c, u32 arg1) {
|
||||
// from debug, todo
|
||||
}
|
||||
|
||||
struct THeader {
|
||||
struct Target {
|
||||
/* 0x00 */ char name[8]; // "jstudio"
|
||||
/* 0x08 */ u16 _8[3];
|
||||
/* 0x0E */ u16 target_version;
|
||||
};
|
||||
|
||||
/* 0x00 */ char signature[4];
|
||||
/* 0x04 */ u16 byte_order; // must be 0xFEFF
|
||||
/* 0x06 */ u16 version; // 0-1 = obselete, 2-7 = OK
|
||||
/* 0x08 */ u32 _8;
|
||||
/* 0x0C */ u32 block_number;
|
||||
/* 0x10 */ Target target;
|
||||
/* 0x20 */ u8 content[0];
|
||||
};
|
||||
|
||||
struct TBlock {
|
||||
/* 0x0 */ u32 size;
|
||||
/* 0x4 */ u32 type; // char[4] JMSG, JSND, JACT, ...
|
||||
};
|
||||
|
||||
struct TBlock_object : TBlock {
|
||||
/* 0x8 */ u16 flag;
|
||||
/* 0xA */ u16 id_size;
|
||||
/* 0xC */ u8 id[0]; // unique identifier
|
||||
///* ??? */ u8 content[0];
|
||||
};
|
||||
|
||||
struct TParagraph {
|
||||
/* 0x0 */ u16 _0;
|
||||
/* 0x2 */ u16 id_size;
|
||||
/* 0x4 */ u8 id[0]; // unique identifier
|
||||
};
|
||||
|
||||
} // namespace data
|
||||
} // namespace stb
|
||||
} // namespace JStudio
|
||||
|
||||
#endif /* STB_DATA_H */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,154 @@
|
|||
#ifndef STB_H
|
||||
#define STB_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/JGadget/linklist.h"
|
||||
#include "JSystem/JStudio/JStudio/object-id.h"
|
||||
#include "JSystem/JStudio/JStudio/stb-data-parse.h"
|
||||
#include "global.h"
|
||||
|
||||
namespace JStudio {
|
||||
namespace stb {
|
||||
|
||||
class TControl;
|
||||
|
||||
class TParse : public TParse_header_block {
|
||||
public:
|
||||
/* 80289640 */ TParse(TControl*);
|
||||
/* 80289660 */ virtual ~TParse();
|
||||
/* 802896C0 */ virtual bool parseHeader_next(void const**, u32*, u32);
|
||||
/* 8028978C */ virtual bool parseBlock_next(void const**, u32*, u32);
|
||||
/* 802897E0 */ virtual bool parseHeader(data::TParse_THeader const&, u32);
|
||||
/* 802897E8 */ virtual bool parseBlock_block(data::TParse_TBlock const&, u32);
|
||||
/* 80289820 */ virtual bool parseBlock_object(data::TParse_TBlock_object const&, u32);
|
||||
|
||||
TControl* getControl() const { return pControl; }
|
||||
|
||||
private:
|
||||
TControl* pControl;
|
||||
};
|
||||
|
||||
class TObject : public object::TObject_ID {
|
||||
public:
|
||||
enum TEStatus {
|
||||
/* 0x0 */ STATUS_STILL = 0,
|
||||
/* 0x1 */ STATUS_END = 1 << 0,
|
||||
/* 0x2 */ STATUS_WAIT = 1 << 1,
|
||||
/* 0x4 */ STATUS_SUSPEND = 1 << 2,
|
||||
/* 0x8 */ STATUS_INACTIVE = 1 << 3,
|
||||
};
|
||||
|
||||
/* 80288AC0 */ TObject(data::TParse_TBlock_object const&);
|
||||
/* 80288A78 */ explicit TObject(u32, void const*, u32);
|
||||
/* 80288B30 */ virtual ~TObject();
|
||||
|
||||
/* 80288B78 */ void setFlag_operation(u8, int);
|
||||
/* 80288BD0 */ void reset(void const*);
|
||||
/* 80288BE8 */ int forward(u32);
|
||||
/* 80288E18 */ virtual void do_begin();
|
||||
/* 80288E1C */ virtual void do_end();
|
||||
/* 80288E20 */ virtual void do_paragraph(u32, void const*, u32);
|
||||
/* 80288E24 */ virtual void do_wait(u32);
|
||||
/* 80288E28 */ virtual void do_data(void const*, u32, void const*, u32);
|
||||
/* 80288E2C */ void process_sequence_();
|
||||
/* 80288F80 */ void process_paragraph_reserved_(u32, void const*, u32);
|
||||
|
||||
const char* toString_status(int status);
|
||||
|
||||
void on_begin() { do_begin(); }
|
||||
void on_end() { do_end(); }
|
||||
void on_paragraph(u32 arg1, const void* arg2, u32 arg3) { do_paragraph(arg1, arg2, arg3); }
|
||||
void on_wait(u32 arg1) { do_wait(arg1); }
|
||||
void on_data(const void* arg1, u32 arg2, const void* arg3, u32 arg4) {
|
||||
do_data(arg1, arg2, arg3, arg4);
|
||||
}
|
||||
|
||||
TControl* getControl() const { return pControl; }
|
||||
void setControl_(TControl* control) { pControl = control; }
|
||||
int getSuspend() const { return _20; }
|
||||
void setSuspend(s32 val) { _20 = val; }
|
||||
bool isSuspended() const { return getSuspend() > 0; }
|
||||
void suspend(s32 val) { _20 += val; }
|
||||
const void* getSequence() const { return pSequence; }
|
||||
void setSequence_(const void* arg1) { pSequence = arg1; }
|
||||
const void* getSequence_offset(s32 i_no) const {
|
||||
int s32Val = (s32)getSequence();
|
||||
return (const void*)(s32Val + i_no);
|
||||
}
|
||||
const void* getSequence_next() const { return pSequence_next; }
|
||||
void setSequence_next(const void* seq) { pSequence_next = seq; }
|
||||
u32 getWait() const { return u32Wait_; }
|
||||
void setWait(u32 wait) { u32Wait_ = wait; }
|
||||
TEStatus getStatus() const { return mStatus; }
|
||||
void setStatus_(TEStatus status) { mStatus = status; }
|
||||
u32 toInt32FromUInt24_(u32 val) {
|
||||
if (val & 0x800000) {
|
||||
val |= data::gu32Mask_TSequence_value_signExpansion;
|
||||
}
|
||||
return val;
|
||||
}
|
||||
void setFlag_operation_(u32 u32Data) {
|
||||
ASSERT((u32Data >> data::guBit_TSequence_type) == 0);
|
||||
setFlag_operation(u32Data >> 16, u32Data & 0xFFFF);
|
||||
}
|
||||
|
||||
/* 0x10 */ JGadget::TLinkListNode ocObject_;
|
||||
|
||||
private:
|
||||
/* 0x14 */ TControl* pControl;
|
||||
/* 0x18 */ u32 signature;
|
||||
/* 0x1C */ u16 mFlag;
|
||||
/* 0x1E */ u8 bSequence_;
|
||||
/* 0x20 */ u32 _20; // "second per frame"?
|
||||
/* 0x24 */ const void* pSequence;
|
||||
/* 0x28 */ const void* pSequence_next;
|
||||
/* 0x2C */ u32 u32Wait_;
|
||||
/* 0x30 */ TEStatus mStatus;
|
||||
};
|
||||
|
||||
class TFactory {
|
||||
public:
|
||||
/* 802895B4 */ virtual ~TFactory();
|
||||
/* 802895FC */ virtual TObject* create(data::TParse_TBlock_object const&);
|
||||
/* 80289604 */ virtual void destroy(TObject*);
|
||||
};
|
||||
|
||||
class TObject_control : public TObject {
|
||||
public:
|
||||
/* 80289068 */ TObject_control(void const*, u32);
|
||||
/* 80289134 */ ~TObject_control() {}
|
||||
};
|
||||
|
||||
// Manages TObjects
|
||||
class TControl {
|
||||
public:
|
||||
/* 802890B4 */ TControl();
|
||||
/* 80289194 */ virtual ~TControl();
|
||||
|
||||
/* 80289228 */ void appendObject(TObject*);
|
||||
/* 80289278 */ void removeObject(TObject*);
|
||||
/* 802892B0 */ void destroyObject(TObject*);
|
||||
/* 80289300 */ void destroyObject_all();
|
||||
/* 80289364 */ TObject* getObject(void const*, u32);
|
||||
/* 80289404 */ void reset();
|
||||
/* 802894B4 */ void forward(u32);
|
||||
|
||||
void setStatus_(u32 status) { mStatus = status; }
|
||||
void resetStatus_() { setStatus_(0); }
|
||||
bool isSuspended() const { return _54 > 0; }
|
||||
TFactory* getFactory() const { return pFactory; }
|
||||
TObject_control& referObject_control() { return mObject_control; }
|
||||
|
||||
private:
|
||||
/* 0x04 */ u32 _4;
|
||||
/* 0x08 */ u32 _8;
|
||||
/* 0x0C */ TFactory* pFactory;
|
||||
/* 0x10 */ JGadget::TLinkList<TObject, 12> mObjectContainer;
|
||||
/* 0x1C */ u32 mStatus;
|
||||
/* 0x20 */ TObject_control mObject_control;
|
||||
/* 0x54 */ s32 _54; // "second per frame"?
|
||||
};
|
||||
|
||||
} // namespace stb
|
||||
} // namespace JStudio
|
||||
|
||||
#endif /* STB_H */
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
//
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
//
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
//
|
||||
|
|
|
|||
|
|
@ -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,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
|
||||
|
|
|
|||
|
|
@ -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(¶_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();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
//
|
||||
|
||||
#include "rel/d/a/d_a_title/d_a_title.h"
|
||||
#include "JSystem/JStudio/JStudio/stb.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
#include "d/a/d_a_alink.h"
|
||||
#include "JSystem/J3DGraphLoader/J3DAnmLoader.h"
|
||||
#include "JSystem/JStudio/JStudio/stb.h"
|
||||
#include "Z2AudioLib/Z2AudioMgr.h"
|
||||
#include "d/a/d_a_horse_static.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
|
|
@ -599,20 +600,6 @@ struct dCamera_c {
|
|||
/* 80181500 */ void GetForceLockOnActor();
|
||||
};
|
||||
|
||||
namespace JStudio {
|
||||
namespace stb {
|
||||
struct data {
|
||||
struct TParse_TParagraph_data {
|
||||
struct TData {};
|
||||
|
||||
/* 80289A80 */ void getData(JStudio::stb::data::TParse_TParagraph_data::TData*) const;
|
||||
};
|
||||
};
|
||||
|
||||
}; // namespace stb
|
||||
|
||||
}; // namespace JStudio
|
||||
|
||||
struct JASKernel {
|
||||
/* 80290B08 */ void getAramHeap();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -4,6 +4,9 @@
|
|||
//
|
||||
|
||||
#include "d/d_demo.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"
|
||||
|
||||
|
|
@ -293,13 +296,6 @@ struct TControl {
|
|||
|
||||
}; // namespace ctb
|
||||
|
||||
namespace fvb {
|
||||
struct TControl {
|
||||
/* 802847D0 */ void destroyObject_all();
|
||||
};
|
||||
|
||||
}; // namespace fvb
|
||||
|
||||
struct TCreateObject {
|
||||
/* 80285488 */ ~TCreateObject();
|
||||
};
|
||||
|
|
@ -332,25 +328,6 @@ struct TAdaptor_message {
|
|||
/* 802875E0 */ ~TAdaptor_message();
|
||||
};
|
||||
|
||||
namespace stb {
|
||||
struct data {
|
||||
struct TParse_TBlock_object {};
|
||||
|
||||
struct TParse_TParagraph_data {
|
||||
struct TData {};
|
||||
|
||||
/* 80289A80 */ void getData(JStudio::stb::data::TParse_TParagraph_data::TData*) const;
|
||||
};
|
||||
};
|
||||
|
||||
struct TControl {
|
||||
/* 80289300 */ void destroyObject_all();
|
||||
/* 80289404 */ void reset();
|
||||
/* 802894B4 */ void forward(u32);
|
||||
};
|
||||
|
||||
}; // namespace stb
|
||||
|
||||
struct TObject_message {
|
||||
/* 80287640 */ TObject_message(JStudio::stb::data::TParse_TBlock_object const&,
|
||||
JStudio::TAdaptor_message*);
|
||||
|
|
@ -377,15 +354,6 @@ struct JMessage {
|
|||
};
|
||||
};
|
||||
|
||||
namespace JGadget {
|
||||
struct binary {
|
||||
struct TParse_header_block {
|
||||
/* 802DC910 */ void parse_next(void const**, u32);
|
||||
};
|
||||
};
|
||||
|
||||
}; // namespace JGadget
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
//
|
||||
|
||||
#include "d/msg/d_msg_object.h"
|
||||
#include "JSystem/JGadget/binary.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
|
|
@ -388,21 +389,6 @@ struct JMessage {
|
|||
};
|
||||
};
|
||||
|
||||
namespace JGadget {
|
||||
struct binary {
|
||||
struct TParse_header_block {
|
||||
/* 802DC910 */ void parse_next(void const**, u32);
|
||||
};
|
||||
};
|
||||
|
||||
struct TNodeLinkList {
|
||||
struct iterator {};
|
||||
|
||||
/* 802DCA58 */ void erase(JGadget::TNodeLinkList::iterator);
|
||||
};
|
||||
|
||||
}; // namespace JGadget
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
//
|
||||
|
||||
#include "d/msg/d_msg_string_base.h"
|
||||
#include "JSystem/JGadget/binary.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
|
|
@ -79,21 +80,6 @@ struct JKRArchive {
|
|||
/* 802D5B38 */ void getGlbResource(u32, char const*, JKRArchive*);
|
||||
};
|
||||
|
||||
namespace JGadget {
|
||||
struct binary {
|
||||
struct TParse_header_block {
|
||||
/* 802DC910 */ void parse_next(void const**, u32);
|
||||
};
|
||||
};
|
||||
|
||||
struct TNodeLinkList {
|
||||
struct iterator {};
|
||||
|
||||
/* 802DCA58 */ void erase(JGadget::TNodeLinkList::iterator);
|
||||
};
|
||||
|
||||
}; // namespace JGadget
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
|
|
|||
Loading…
Reference in New Issue