summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornotyourav <65437533+notyourav@users.noreply.github.com>2021-11-26 06:50:22 -0800
committerGitHub <noreply@github.com>2021-11-26 15:50:22 +0100
commitc4ef30bc95d3e69eb84cb5efa76598bb6e900662 (patch)
treeac0cfa4dd5179c8ada61a511fe859b83c363008d
parent74ed2da8bc93804373cddf64c0c878603150b699 (diff)
Port JStudio work to new branch (#160)
* build fix * stb * functionvalue * fvb * jstudio cleanup * d
-rw-r--r--include/JSystem/JGadget/binary.h48
-rw-r--r--include/JSystem/JGadget/linklist.h19
-rw-r--r--include/JSystem/JGadget/search.h19
-rw-r--r--include/JSystem/JGadget/vector.h71
-rw-r--r--include/JSystem/JStudio/JStudio/functionvalue.h386
-rw-r--r--include/JSystem/JStudio/JStudio/fvb-data-parse.h48
-rw-r--r--include/JSystem/JStudio/JStudio/fvb-data.h59
-rw-r--r--include/JSystem/JStudio/JStudio/fvb.h155
-rw-r--r--include/JSystem/JStudio/JStudio/object-id.h23
-rw-r--r--include/JSystem/JStudio/JStudio/stb-data-parse.h106
-rw-r--r--include/JSystem/JStudio/JStudio/stb-data.h63
-rw-r--r--include/JSystem/JStudio/JStudio/stb.h150
-rw-r--r--libs/JSystem/JGadget/binary.cpp27
-rw-r--r--libs/JSystem/JGadget/linklist.cpp3
-rw-r--r--libs/JSystem/JMessage/resource.cpp20
-rw-r--r--libs/JSystem/JStudio/JStudio/Makefile4
-rw-r--r--libs/JSystem/JStudio/JStudio/ctb.cpp29
-rw-r--r--libs/JSystem/JStudio/JStudio/functionvalue-inline.cpp44
-rw-r--r--libs/JSystem/JStudio/JStudio/functionvalue.cpp1202
-rw-r--r--libs/JSystem/JStudio/JStudio/fvb-data-parse.cpp24
-rw-r--r--libs/JSystem/JStudio/JStudio/fvb-data.cpp10
-rw-r--r--libs/JSystem/JStudio/JStudio/fvb-inline.cpp31
-rw-r--r--libs/JSystem/JStudio/JStudio/fvb.cpp909
-rw-r--r--libs/JSystem/JStudio/JStudio/jstudio-control.cpp70
-rw-r--r--libs/JSystem/JStudio/JStudio/jstudio-object.cpp22
-rw-r--r--libs/JSystem/JStudio/JStudio/object-id.cpp10
-rw-r--r--libs/JSystem/JStudio/JStudio/stb-data-parse.cpp160
-rw-r--r--libs/JSystem/JStudio/JStudio/stb-data.cpp46
-rw-r--r--libs/JSystem/JStudio/JStudio/stb.cpp887
-rw-r--r--libs/JSystem/JStudio/JStudio_JParticle/control.cpp8
-rw-r--r--rel/d/a/d_a_title/d_a_title.cpp1
-rw-r--r--src/d/a/d_a_alink.cpp15
-rw-r--r--src/d/d_demo.cpp38
-rw-r--r--src/d/msg/d_msg_object.cpp16
-rw-r--r--src/d/msg/d_msg_string_base.cpp16
35 files changed, 2579 insertions, 2160 deletions
diff --git a/include/JSystem/JGadget/binary.h b/include/JSystem/JGadget/binary.h
index b1a7e3ea76..abbe3f7995 100644
--- a/include/JSystem/JGadget/binary.h
+++ b/include/JSystem/JGadget/binary.h
@@ -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 */
diff --git a/include/JSystem/JGadget/linklist.h b/include/JSystem/JGadget/linklist.h
index fb7c08e8e8..d71734e8f9 100644
--- a/include/JSystem/JGadget/linklist.h
+++ b/include/JSystem/JGadget/linklist.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);
diff --git a/include/JSystem/JGadget/search.h b/include/JSystem/JGadget/search.h
new file mode 100644
index 0000000000..a7b3510800
--- /dev/null
+++ b/include/JSystem/JGadget/search.h
@@ -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 */
diff --git a/include/JSystem/JGadget/vector.h b/include/JSystem/JGadget/vector.h
new file mode 100644
index 0000000000..636ac909cc
--- /dev/null
+++ b/include/JSystem/JGadget/vector.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 */ \ No newline at end of file
diff --git a/include/JSystem/JStudio/JStudio/functionvalue.h b/include/JSystem/JStudio/JStudio/functionvalue.h
index 4c5b74e232..35d849e27c 100644
--- a/include/JSystem/JStudio/JStudio/functionvalue.h
+++ b/include/JSystem/JStudio/JStudio/functionvalue.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 */
diff --git a/include/JSystem/JStudio/JStudio/fvb-data-parse.h b/include/JSystem/JStudio/JStudio/fvb-data-parse.h
index af8faac081..93e6ba3b11 100644
--- a/include/JSystem/JStudio/JStudio/fvb-data-parse.h
+++ b/include/JSystem/JStudio/JStudio/fvb-data-parse.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 */
diff --git a/include/JSystem/JStudio/JStudio/fvb-data.h b/include/JSystem/JStudio/JStudio/fvb-data.h
index 7615b985b6..bbc3a5d313 100644
--- a/include/JSystem/JStudio/JStudio/fvb-data.h
+++ b/include/JSystem/JStudio/JStudio/fvb-data.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 */
diff --git a/include/JSystem/JStudio/JStudio/fvb.h b/include/JSystem/JStudio/JStudio/fvb.h
index 1cb30da71d..4303b96c14 100644
--- a/include/JSystem/JStudio/JStudio/fvb.h
+++ b/include/JSystem/JStudio/JStudio/fvb.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 */
diff --git a/include/JSystem/JStudio/JStudio/object-id.h b/include/JSystem/JStudio/JStudio/object-id.h
index a0cc9f9024..28864fc5dc 100644
--- a/include/JSystem/JStudio/JStudio/object-id.h
+++ b/include/JSystem/JStudio/JStudio/object-id.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 */
diff --git a/include/JSystem/JStudio/JStudio/stb-data-parse.h b/include/JSystem/JStudio/JStudio/stb-data-parse.h
index 3b11abf40b..ef96a0d35f 100644
--- a/include/JSystem/JStudio/JStudio/stb-data-parse.h
+++ b/include/JSystem/JStudio/JStudio/stb-data-parse.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 */
diff --git a/include/JSystem/JStudio/JStudio/stb-data.h b/include/JSystem/JStudio/JStudio/stb-data.h
index 49b8582354..fde46c96de 100644
--- a/include/JSystem/JStudio/JStudio/stb-data.h
+++ b/include/JSystem/JStudio/JStudio/stb-data.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 */
diff --git a/include/JSystem/JStudio/JStudio/stb.h b/include/JSystem/JStudio/JStudio/stb.h
index 8d4b35aa93..e4e0188cc6 100644
--- a/include/JSystem/JStudio/JStudio/stb.h
+++ b/include/JSystem/JStudio/JStudio/stb.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 */
diff --git a/libs/JSystem/JGadget/binary.cpp b/libs/JSystem/JGadget/binary.cpp
index 92eb490ca3..744effc3f8 100644
--- a/libs/JSystem/JGadget/binary.cpp
+++ b/libs/JSystem/JGadget/binary.cpp
@@ -8,25 +8,6 @@
#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"
}
diff --git a/libs/JSystem/JGadget/linklist.cpp b/libs/JSystem/JGadget/linklist.cpp
index a00e32776d..353892eddf 100644
--- a/libs/JSystem/JGadget/linklist.cpp
+++ b/libs/JSystem/JGadget/linklist.cpp
@@ -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"
}
diff --git a/libs/JSystem/JMessage/resource.cpp b/libs/JSystem/JMessage/resource.cpp
index 949c589b83..375362ff30 100644
--- a/libs/JSystem/JMessage/resource.cpp
+++ b/libs/JSystem/JMessage/resource.cpp
@@ -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:
//
diff --git a/libs/JSystem/JStudio/JStudio/Makefile b/libs/JSystem/JStudio/JStudio/Makefile
index 5f63aeff5f..c8f56e5b26 100644
--- a/libs/JSystem/JStudio/JStudio/Makefile
+++ b/libs/JSystem/JStudio/JStudio/Makefile
@@ -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 \
diff --git a/libs/JSystem/JStudio/JStudio/ctb.cpp b/libs/JSystem/JStudio/JStudio/ctb.cpp
index 58e6470373..71a7a44947 100644
--- a/libs/JSystem/JStudio/JStudio/ctb.cpp
+++ b/libs/JSystem/JStudio/JStudio/ctb.cpp
@@ -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 {
diff --git a/libs/JSystem/JStudio/JStudio/functionvalue-inline.cpp b/libs/JSystem/JStudio/JStudio/functionvalue-inline.cpp
new file mode 100644
index 0000000000..6d1f9665eb
--- /dev/null
+++ b/libs/JSystem/JStudio/JStudio/functionvalue-inline.cpp
@@ -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
diff --git a/libs/JSystem/JStudio/JStudio/functionvalue.cpp b/libs/JSystem/JStudio/JStudio/functionvalue.cpp
index ab2f91144f..257b7295ce 100644
--- a/libs/JSystem/JStudio/JStudio/functionvalue.cpp
+++ b/libs/JSystem/JStudio/JStudio/functionvalue.cpp
@@ -6,169 +6,18 @@
#include "JSystem/JStudio/JStudio/functionvalue.h"
#include "dol2asm.h"
#include "dolphin/types.h"
+#include "msl_c/math.h"
//
// Types:
//
namespace JGadget {
-template <typename A1>
-struct TVector_pointer {};
-/* TVector_pointer<JStudio::TFunctionValue*> */
-struct TVector_pointer__template0 {};
-
-template <typename A1>
-struct TAllocator {};
-/* TAllocator<void*> */
-struct TAllocator__template0 {};
-
-struct TVector_pointer_void {
- /* 802DCCD0 */ TVector_pointer_void(JGadget::TAllocator<void*> const&);
- /* 802DCCFC */ ~TVector_pointer_void();
- /* 802DCDC4 */ void erase(void**, void**);
-};
template <typename A1, typename B1>
void findUpperBound_binary_current(/* ... */);
}; // namespace JGadget
-namespace JStudio {
-struct TFunctionValue {
- /* 80281648 */ void toFunction_outside(int);
- /* 80281690 */ TFunctionValue();
- /* 802816A0 */ ~TFunctionValue();
-};
-
-struct TFunctionValueAttribute_refer {
- /* 802816E8 */ void refer_initialize();
-};
-
-struct functionvalue {
- /* 80281710 */ void interpolateValue_hermite(f64, f64, f64, f64, f64, f64, f64);
- /* 80281774 */ void interpolateValue_BSpline_uniform(f64, f64, f64, f64, f64);
- /* 802817D8 */ void interpolateValue_BSpline_nonuniform(f64, f64 const*, f64 const*);
- /* 802818B8 */ void extrapolateParameter_turn(f64, f64);
- /* 80283570 */ void extrapolateParameter_raw(f64, f64);
- /* 80283574 */ void extrapolateParameter_repeat(f64, f64);
- /* 802835B0 */ void extrapolateParameter_clamp(f64, f64);
-};
-
-struct TFunctionValueAttribute_range {
- /* 80281918 */ void range_initialize();
- /* 8028194C */ void range_prepare();
- /* 802819F4 */ void range_set(f64, f64);
- /* 80281A08 */ void range_getParameter(f64, f64, f64) const;
- /* 80281D18 */ TFunctionValueAttribute_range();
-};
-
-struct TFunctionValue_composite {
- struct TData {};
-
- /* 80281D5C */ TFunctionValue_composite();
- /* 80281DB8 */ bool getType() const;
- /* 80281DC0 */ void getAttributeSet();
- /* 80281DE0 */ void initialize();
- /* 80281E24 */ void prepare();
- /* 80281E28 */ void getValue(f64);
- /* 80281E5C */ void composite_raw(JGadget::TVector_pointer<JStudio::TFunctionValue*> const&,
- JStudio::TFunctionValue_composite::TData const&, f64);
- /* 80281EC8 */ void composite_index(JGadget::TVector_pointer<JStudio::TFunctionValue*> const&,
- JStudio::TFunctionValue_composite::TData const&, f64);
- /* 8028202C */ void
- composite_parameter(JGadget::TVector_pointer<JStudio::TFunctionValue*> const&,
- JStudio::TFunctionValue_composite::TData const&, f64);
- /* 80282094 */ void composite_add(JGadget::TVector_pointer<JStudio::TFunctionValue*> const&,
- JStudio::TFunctionValue_composite::TData const&, f64);
- /* 80282118 */ void
- composite_subtract(JGadget::TVector_pointer<JStudio::TFunctionValue*> const&,
- JStudio::TFunctionValue_composite::TData const&, f64);
- /* 80282200 */ void
- composite_multiply(JGadget::TVector_pointer<JStudio::TFunctionValue*> const&,
- JStudio::TFunctionValue_composite::TData const&, f64);
- /* 80282284 */ void composite_divide(JGadget::TVector_pointer<JStudio::TFunctionValue*> const&,
- JStudio::TFunctionValue_composite::TData const&, f64);
- /* 80283DA4 */ ~TFunctionValue_composite();
-};
-
-struct TFunctionValue_constant {
- /* 8028236C */ TFunctionValue_constant();
- /* 802823B4 */ s32 getType() const;
- /* 802823BC */ void getAttributeSet();
- /* 802823D0 */ void initialize();
- /* 802823E0 */ void prepare();
- /* 802823E4 */ void getValue(f64);
- /* 80283D44 */ ~TFunctionValue_constant();
-};
-
-struct TFunctionValue_transition {
- /* 802823EC */ TFunctionValue_transition();
- /* 8028244C */ s32 getType() const;
- /* 80282454 */ void getAttributeSet();
- /* 80282484 */ void initialize();
- /* 802824D0 */ void prepare();
- /* 802824F4 */ void getValue(f64);
- /* 80283CE4 */ ~TFunctionValue_transition();
-};
-
-struct TFunctionValue_list {
- struct TIndexData_ {};
-
- /* 802826BC */ TFunctionValue_list();
- /* 80282720 */ s32 getType() const;
- /* 80282728 */ void getAttributeSet();
- /* 80282758 */ void initialize();
- /* 802827A8 */ void prepare();
- /* 80282858 */ void getValue(f64);
- /* 80282C10 */ void update_INTERPOLATE_NONE_(JStudio::TFunctionValue_list const&,
- JStudio::TFunctionValue_list::TIndexData_ const&);
- /* 80282C24 */ void
- update_INTERPOLATE_LINEAR_(JStudio::TFunctionValue_list const&,
- JStudio::TFunctionValue_list::TIndexData_ const&);
- /* 80282C58 */ void
- update_INTERPOLATE_PLATEAU_(JStudio::TFunctionValue_list const&,
- JStudio::TFunctionValue_list::TIndexData_ const&);
- /* 80282CA8 */ void
- update_INTERPOLATE_BSPLINE_dataMore3_(JStudio::TFunctionValue_list const&,
- JStudio::TFunctionValue_list::TIndexData_ const&);
- /* 80283C84 */ ~TFunctionValue_list();
-};
-
-struct TFunctionValue_list_parameter {
- struct TIterator_data_ {};
-
- /* 80282D34 */ TFunctionValue_list_parameter();
- /* 80282DA0 */ s32 getType() const;
- /* 80282DA8 */ void getAttributeSet();
- /* 80282DD8 */ void data_set(f32 const*, u32);
- /* 80282E08 */ void initialize();
- /* 80282E60 */ void prepare();
- /* 80282F10 */ void getValue(f64);
- /* 80282FE8 */ void update_INTERPOLATE_NONE_(JStudio::TFunctionValue_list_parameter const&,
- f64);
- /* 80282FF4 */ void update_INTERPOLATE_LINEAR_(JStudio::TFunctionValue_list_parameter const&,
- f64);
- /* 80283024 */ void update_INTERPOLATE_PLATEAU_(JStudio::TFunctionValue_list_parameter const&,
- f64);
- /* 80283060 */ void
- update_INTERPOLATE_BSPLINE_dataMore3_(JStudio::TFunctionValue_list_parameter const&, f64);
- /* 80283C24 */ ~TFunctionValue_list_parameter();
-};
-
-struct TFunctionValue_hermite {
- struct TIterator_data_ {};
-
- /* 802832C4 */ TFunctionValue_hermite();
- /* 80283344 */ s32 getType() const;
- /* 8028334C */ void getAttributeSet();
- /* 8028336C */ void data_set(f32 const*, u32, u32);
- /* 802833BC */ void initialize();
- /* 80283428 */ void prepare();
- /* 8028344C */ void getValue(f64);
- /* 80283BC4 */ ~TFunctionValue_hermite();
-};
-
-}; // namespace JStudio
-
namespace std {
template <typename A1>
struct less {};
@@ -330,35 +179,6 @@ extern "C" void _restfpr_29();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
extern "C" void div();
-extern "C" void floor();
-extern "C" void fmod();
-extern "C" extern u32 __float_nan;
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 8039A9F0-8039AA00 -00001 0010+00 1/1 0/0 0/0 .rodata
- * gapfnExtrapolateParameter___Q27JStudio27@unnamed@functionvalue_cpp@ */
-SECTION_RODATA static void* const data_8039A9F0[4] = {
- (void*)extrapolateParameter_raw__Q27JStudio13functionvalueFdd,
- (void*)extrapolateParameter_repeat__Q27JStudio13functionvalueFdd,
- (void*)extrapolateParameter_turn__Q27JStudio13functionvalueFdd,
- (void*)extrapolateParameter_clamp__Q27JStudio13functionvalueFdd,
-};
-COMPILER_STRIP_GATE(0x8039A9F0, &data_8039A9F0);
-
-/* 80281648-80281690 27BF88 0048+00 3/3 1/1 0/0 .text
- * toFunction_outside__Q27JStudio14TFunctionValueFi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue::toFunction_outside(int param_0) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/toFunction_outside__Q27JStudio14TFunctionValueFi.s"
-}
-#pragma pop
/* ############################################################################################## */
/* 803C48E0-803C4900 021A00 0020+00 2/2 1/1 0/0 .data __vt__Q27JStudio22TFunctionValue_hermite */
@@ -448,41 +268,9 @@ SECTION_DATA extern void* __vt__Q27JStudio14TFunctionValue[8] = {
(void*)NULL,
};
-/* 80281690-802816A0 27BFD0 0010+00 6/6 0/0 0/0 .text __ct__Q27JStudio14TFunctionValueFv
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::TFunctionValue::TFunctionValue() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/__ct__Q27JStudio14TFunctionValueFv.s"
-}
-#pragma pop
-
-/* 802816A0-802816E8 27BFE0 0048+00 6/6 6/6 0/0 .text __dt__Q27JStudio14TFunctionValueFv
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::TFunctionValue::~TFunctionValue() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/__dt__Q27JStudio14TFunctionValueFv.s"
-}
-#pragma pop
-
-/* 802816E8-80281710 27C028 0028+00 1/1 0/0 0/0 .text
- * refer_initialize__Q27JStudio29TFunctionValueAttribute_referFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValueAttribute_refer::refer_initialize() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/refer_initialize__Q27JStudio29TFunctionValueAttribute_referFv.s"
-}
-#pragma pop
-
-/* ############################################################################################## */
-/* 80455400-80455408 003A00 0008+00 13/13 0/0 0/0 .sdata2 @652 */
+// /* ##############################################################################################
+// */
+// /* 80455400-80455408 003A00 0008+00 13/13 0/0 0/0 .sdata2 @652 */
SECTION_SDATA2 static u8 lit_652[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
@@ -496,19 +284,6 @@ SECTION_SDATA2 static f64 lit_793 = 3.0;
/* 80455418-80455420 003A18 0008+00 1/1 0/0 0/0 .sdata2 @794 */
SECTION_SDATA2 static f64 lit_794 = -2.0;
-/* 80281710-80281774 27C050 0064+00 4/4 0/0 0/0 .text
- * interpolateValue_hermite__Q27JStudio13functionvalueFddddddd */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::functionvalue::interpolateValue_hermite(f64 param_0, f64 param_1, f64 param_2,
- f64 param_3, f64 param_4, f64 param_5,
- f64 param_6) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/interpolateValue_hermite__Q27JStudio13functionvalueFddddddd.s"
-}
-#pragma pop
-
/* ############################################################################################## */
/* 80455420-80455428 003A20 0008+00 1/1 0/0 0/0 .sdata2 @799 */
SECTION_SDATA2 static f64 lit_799 = 1.0 / 6.0;
@@ -519,166 +294,292 @@ SECTION_SDATA2 static f64 lit_800 = 0.5;
/* 80455430-80455438 003A30 0008+00 1/1 0/0 0/0 .sdata2 @801 */
SECTION_SDATA2 static f64 lit_801 = 2.0 / 3.0;
-/* 80281774-802817D8 27C0B4 0064+00 1/1 0/0 0/0 .text
- * interpolateValue_BSpline_uniform__Q27JStudio13functionvalueFddddd */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::functionvalue::interpolateValue_BSpline_uniform(f64 param_0, f64 param_1,
- f64 param_2, f64 param_3,
- f64 param_4) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/interpolateValue_BSpline_uniform__Q27JStudio13functionvalueFddddd.s"
+/* ############################################################################################## */
+/* 80455438-80455440 003A38 0008+00 3/3 0/0 0/0 .sdata2 @842 */
+SECTION_SDATA2 static f64 lit_842 = 2.0;
+
+/* ############################################################################################## */
+/* 80455440-80455448 003A40 0008+00 1/1 0/0 0/0 .sdata2 @867 */
+SECTION_SDATA2 static f64 lit_867 = -1.0;
+
+/* ############################################################################################## */
+/* 804511E8-804511F0 0006E8 0001+07 1/1 0/0 0/0 .sbss @569 */
+static u8 lit_569[1 + 7 /* padding */];
+
+/* ############################################################################################## */
+/* 80455448-80455450 003A48 0008+00 1/1 0/0 0/0 .sdata2 @1517 */
+SECTION_SDATA2 static f64 lit_1517 = 4503599627370496.0 /* cast u32 to float */;
+
+namespace JStudio {
+
+namespace functionvalue {
+f64 extrapolateParameter_raw(f64, f64);
+f64 extrapolateParameter_repeat(f64, f64);
+f64 extrapolateParameter_turn(f64, f64);
+f64 extrapolateParameter_clamp(f64, f64);
+}; // namespace functionvalue
+
+namespace {
+
+const ExtrapolateParameter gapfnExtrapolateParameter_[4] = {
+ functionvalue::extrapolateParameter_raw,
+ functionvalue::extrapolateParameter_repeat,
+ functionvalue::extrapolateParameter_turn,
+ functionvalue::extrapolateParameter_clamp,
+};
+
}
-#pragma pop
-/* 802817D8-802818B8 27C118 00E0+00 1/1 0/0 0/0 .text
- * interpolateValue_BSpline_nonuniform__Q27JStudio13functionvalueFdPCdPCd */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::functionvalue::interpolateValue_BSpline_nonuniform(f64 param_0,
- f64 const* param_1,
- f64 const* param_2) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/interpolateValue_BSpline_nonuniform__Q27JStudio13functionvalueFdPCdPCd.s"
+ExtrapolateParameter TFunctionValue::toFunction_outside(int idx) {
+ ExtrapolateParameter fallback = NULL;
+ ExtrapolateParameter result;
+
+ result = JGadget::toValueFromIndex<ExtrapolateParameter>(idx, gapfnExtrapolateParameter_, 4,
+ fallback);
+
+ if (result == NULL) {
+ JUTWarn w;
+ w << "unknown outside : " << idx;
+
+ return gapfnExtrapolateParameter_[0];
+ }
+
+ return result;
}
-#pragma pop
-/* ############################################################################################## */
-/* 80455438-80455440 003A38 0008+00 3/3 0/0 0/0 .sdata2 @842 */
-SECTION_SDATA2 static f64 lit_842 = 2.0;
+TFunctionValue::TFunctionValue() {}
+TFunctionValue::~TFunctionValue() {}
-/* 802818B8-80281918 27C1F8 0060+00 1/0 0/0 0/0 .text
- * extrapolateParameter_turn__Q27JStudio13functionvalueFdd */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::functionvalue::extrapolateParameter_turn(f64 param_0, f64 param_1) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/extrapolateParameter_turn__Q27JStudio13functionvalueFdd.s"
+void TFunctionValueAttribute_refer::refer_initialize() {
+ clear();
}
-#pragma pop
-/* 80281918-8028194C 27C258 0034+00 4/4 0/0 0/0 .text
- * range_initialize__Q27JStudio29TFunctionValueAttribute_rangeFv */
+namespace functionvalue {
+
+#ifdef NONMATCHING // impossible regalloc
+f64 interpolateValue_hermite(f64 c0, f64 c1, f64 x, f64 c2, f64 x2, f64 c3, f64 x3) {
+ f64 a;
+ f64 d;
+ f64 c;
+ f64 b;
+
+ a = c0 - c1;
+ b = a * (lbl_80455408 / (x2 - c1)); // (a - b) * 1.0 / (c - d)
+ c = b - lbl_80455408; // 1.0
+ d = (lbl_80455410 + lbl_80455418 * b) * (b * b); // 3.0 - 2.0 * b
+ return (a * b * c * x3) + ((lbl_80455408 - d) * x + (d * c3)) + (a * (c * c) * c2);
+}
+#else
+/* 80281710-80281774 27C050 0064+00 4/4 0/0 0/0 .text
+ * interpolateValue_hermite__Q27JStudio13functionvalueFddddddd */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValueAttribute_range::range_initialize() {
+asm f64 interpolateValue_hermite(f64 param_0, f64 param_1, f64 param_2, f64 param_3, f64 param_4,
+ f64 param_5, f64 param_6) {
nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/range_initialize__Q27JStudio29TFunctionValueAttribute_rangeFv.s"
+#include "asm/JSystem/JStudio/JStudio/functionvalue/interpolateValue_hermite__Q27JStudio13functionvalueFddddddd.s"
}
#pragma pop
+#endif
-/* ############################################################################################## */
-/* 80455440-80455448 003A40 0008+00 1/1 0/0 0/0 .sdata2 @867 */
-SECTION_SDATA2 static f64 lit_867 = -1.0;
+#ifdef NONMATCHING // really minor regalloc
+f64 interpolateValue_BSpline_uniform(f64 f1, f64 f2, f64 f3, f64 f4, f64 f5) {
+ // pow3(1.0 - f1)
+ f64 f6 = (lbl_80455408 - f1);
+ f64 temp = f6;
+ temp *= f6 * f6;
-/* 8028194C-802819F4 27C28C 00A8+00 4/4 0/0 0/0 .text
- * range_prepare__Q27JStudio29TFunctionValueAttribute_rangeFv */
+ f64 f0 = f1 * f1;
+ f64 f8 = f0 * f1;
+
+ return ((lbl_80455420 * f8 - f0) + lbl_80455430) * f3 + (temp * f2 + f8 * f5) * lbl_80455428 +
+ f4 * (lbl_80455428 + lbl_80455420 * ((f1 + f0) - f8));
+}
+#else
+/* 80281774-802817D8 27C0B4 0064+00 1/1 0/0 0/0 .text
+ * interpolateValue_BSpline_uniform__Q27JStudio13functionvalueFddddd */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValueAttribute_range::range_prepare() {
+asm f64 interpolateValue_BSpline_uniform(f64 param_0, f64 param_1, f64 param_2, f64 param_3,
+ f64 param_4) {
nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/range_prepare__Q27JStudio29TFunctionValueAttribute_rangeFv.s"
+#include "asm/JSystem/JStudio/JStudio/functionvalue/interpolateValue_BSpline_uniform__Q27JStudio13functionvalueFddddd.s"
}
#pragma pop
+#endif
-/* 802819F4-80281A08 27C334 0014+00 0/0 1/1 0/0 .text
- * range_set__Q27JStudio29TFunctionValueAttribute_rangeFdd */
+/* 802817D8-802818B8 27C118 00E0+00 1/1 0/0 0/0 .text
+ * interpolateValue_BSpline_nonuniform__Q27JStudio13functionvalueFdPCdPCd */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValueAttribute_range::range_set(f64 param_0, f64 param_1) {
+asm f64 interpolateValue_BSpline_nonuniform(f64 param_0, f64 const* param_1, f64 const* param_2) {
nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/range_set__Q27JStudio29TFunctionValueAttribute_rangeFdd.s"
+#include "asm/JSystem/JStudio/JStudio/functionvalue/interpolateValue_BSpline_nonuniform__Q27JStudio13functionvalueFdPCdPCd.s"
}
#pragma pop
-/* 80281A08-80281D18 27C348 0310+00 2/2 0/0 0/0 .text
- * range_getParameter__Q27JStudio29TFunctionValueAttribute_rangeCFddd */
+inline f64 interpolateValue_linear(double a1, double a2, double a3, double a4, double a5) {
+ return a3 + ((a5 - a3) * (a1 - a2)) / (a4 - a2);
+}
+
+inline f64 interpolateValue_linear_1(f64 a1, f64 a2, f64 a3, f64 a4) {
+ return a3 + (a4 - a3) * (a1 - a2);
+}
+
+inline f64 interpolateValue_plateau(f64 a1, f64 a2, f64 a3, f64 a4, f64 a5) {
+ return interpolateValue_hermite(a1, a2, a3, DOUBLE_LABEL(/* 0.0 */ lit_652), a4, a5,
+ DOUBLE_LABEL(/* 0.0 */ lit_652));
+}
+
+/* 802818B8-80281918 27C1F8 0060+00 1/0 0/0 0/0 .text
+ * extrapolateParameter_turn__Q27JStudio13functionvalueFdd */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValueAttribute_range::range_getParameter(f64 param_0, f64 param_1,
- f64 param_2) const {
+asm f64 extrapolateParameter_turn(f64 param_0, f64 param_1) {
nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/range_getParameter__Q27JStudio29TFunctionValueAttribute_rangeCFddd.s"
+#include "asm/JSystem/JStudio/JStudio/functionvalue/extrapolateParameter_turn__Q27JStudio13functionvalueFdd.s"
}
#pragma pop
-/* 80281D18-80281D5C 27C658 0044+00 4/4 0/0 0/0 .text
- * __ct__Q27JStudio29TFunctionValueAttribute_rangeFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::TFunctionValueAttribute_range::TFunctionValueAttribute_range() {
+} // namespace functionvalue
+
+void TFunctionValueAttribute_range::range_initialize() {
+ fBegin_ = __float_nan[0]; // NaN
+ fEnd_ = fBegin_;
+ fDifference_ = fBegin_;
+
+ range_setProgress(TFunctionValue::PROG_INIT);
+ range_setAdjust(TFunctionValue::ADJ_INIT);
+ range_setOutside(TFunctionValue::OUT_INIT);
+}
+
+void TFunctionValueAttribute_range::range_prepare() {
+ TFunctionValue::TEProgress progress = range_getProgress();
+
+ switch (progress) {
+ default:
+ JUTWarn w;
+ w << "unknown progress : " << progress;
+ case 0:
+ _20 = DOUBLE_LABEL(/* 0.0 */ lit_652);
+ _28 = DOUBLE_LABEL(/* 1.0 */ lit_792);
+ break;
+ case 1:
+ _20 = DOUBLE_LABEL(/* 0.0 */ lit_652);
+ _28 = DOUBLE_LABEL(/*-1.0 */ lit_867);
+ break;
+ case 2:
+ _20 = fBegin_;
+ _28 = DOUBLE_LABEL(/*-1.0 */ lit_867);
+ break;
+ case 3:
+ _20 = fEnd_;
+ _28 = DOUBLE_LABEL(/*-1.0 */ lit_867);
+ break;
+ case 4:
+ _20 = DOUBLE_LABEL(/* 0.5 */ lit_800) * (fBegin_ + fEnd_);
+ _28 = DOUBLE_LABEL(/*-1.0 */ lit_867);
+ break;
+ }
+}
+
+void TFunctionValueAttribute_range::range_set(f64 begin, f64 end) {
+ fBegin_ = begin;
+ fEnd_ = end;
+ fDifference_ = end - begin;
+
+ ASSERT(fDifference_ >= TValue(0));
+}
+
+#ifdef NONMATCHING
+f64 TFunctionValueAttribute_range::range_getParameter(f64 arg1, f64 arg2, f64 arg3) const {
+ f64 progress = range_getParameter_progress(arg1);
+ TFunctionValue::TEAdjust adjust = range_getAdjust();
+
+ f64 result;
+
+ switch (adjust) {
+ default:
+ JUTWarn w;
+ w << "unknown adjust : " << adjust;
+ case 0:
+ result = range_getParameter_outside(progress);
+ break;
+ case 1:
+ result = range_getParameter_outside(progress + fBegin_);
+ break;
+ case 2:
+ result = range_getParameter_outside(progress + fEnd_);
+ break;
+ case 3:
+ result = range_getParameter_outside(progress + lit_800 * (fBegin_ + fEnd_));
+ break;
+ case 4:
+ f64 temp = range_getParameter_outside(progress);
+ result = arg2 + ((temp - fBegin_) * (arg3 - arg2)) / fDifference_;
+ break;
+ }
+ return result;
+}
+#else
+// /* 80281A08-80281D18 27C348 0310+00 2/2 0/0 0/0 .text
+// * range_getParameter__Q27JStudio29TFunctionValueAttribute_rangeCFddd */
+#pragma push
+#pragma optimization_level 0
+#pragma optimizewithasm off
+asm f64 TFunctionValueAttribute_range::range_getParameter(f64 param_0, f64 param_1,
+ f64 param_2) const {
nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/__ct__Q27JStudio29TFunctionValueAttribute_rangeFv.s"
+#include "asm/JSystem/JStudio/JStudio/functionvalue/range_getParameter__Q27JStudio29TFunctionValueAttribute_rangeCFddd.s"
}
#pragma pop
+#endif
-/* ############################################################################################## */
-/* 804511E8-804511F0 0006E8 0001+07 1/1 0/0 0/0 .sbss @569 */
-static u8 lit_569[1 + 7 /* padding */];
+TFunctionValueAttribute_range::TFunctionValueAttribute_range()
+ : fBegin_(__float_nan[0]), fEnd_(fBegin_), fDifference_(fBegin_),
+ mProgress(TFunctionValue::PROG_INIT), mAdjust(TFunctionValue::ADJ_INIT), _20(fBegin_),
+ _28(fBegin_), mBegin(TFunctionValue::OUT_INIT), mEnd(TFunctionValue::OUT_INIT) {}
/* 80281D5C-80281DB8 27C69C 005C+00 0/0 1/1 0/0 .text __ct__Q27JStudio24TFunctionValue_compositeFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm JStudio::TFunctionValue_composite::TFunctionValue_composite() {
+asm TFunctionValue_composite::TFunctionValue_composite() {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/__ct__Q27JStudio24TFunctionValue_compositeFv.s"
}
#pragma pop
-/* 80281DB8-80281DC0 27C6F8 0008+00 1/0 0/0 0/0 .text
- * getType__Q27JStudio24TFunctionValue_compositeCFv */
-bool JStudio::TFunctionValue_composite::getType() const {
- return true;
+u32 TFunctionValue_composite::getType() const {
+ return 1;
}
-/* 80281DC0-80281DE0 27C700 0020+00 1/0 0/0 0/0 .text
- * getAttributeSet__Q27JStudio24TFunctionValue_compositeFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_composite::getAttributeSet() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/getAttributeSet__Q27JStudio24TFunctionValue_compositeFv.s"
+TFunctionValueAttributeSet TFunctionValue_composite::getAttributeSet() {
+ return TFunctionValueAttributeSet(this, NULL, NULL);
}
-#pragma pop
-/* 80281DE0-80281E24 27C720 0044+00 1/0 0/0 0/0 .text
- * initialize__Q27JStudio24TFunctionValue_compositeFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_composite::initialize() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/initialize__Q27JStudio24TFunctionValue_compositeFv.s"
+void TFunctionValue_composite::initialize() {
+ refer_initialize();
+ pfn_ = NULL;
+ data = TData((void*)NULL);
}
-#pragma pop
-/* 80281E24-80281E28 27C764 0004+00 1/0 0/0 0/0 .text
- * prepare__Q27JStudio24TFunctionValue_compositeFv */
-void JStudio::TFunctionValue_composite::prepare() {
+void TFunctionValue_composite::prepare() {
/* empty function */
}
-/* 80281E28-80281E5C 27C768 0034+00 1/0 0/0 0/0 .text
- * getValue__Q27JStudio24TFunctionValue_compositeFd */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_composite::getValue(f64 param_0) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/getValue__Q27JStudio24TFunctionValue_compositeFd.s"
+f64 TFunctionValue_composite::getValue(f64 arg1) {
+ const TFunctionValueAttribute_refer* container = refer_getContainer();
+ ASSERT(!refer_isReferring(this));
+ ASSERT(pfn_ != NULL);
+
+ return pfn_(arg1, container, data_getData());
}
-#pragma pop
/* 80281E5C-80281EC8 27C79C 006C+00 0/0 1/0 0/0 .text
* composite_raw__Q27JStudio24TFunctionValue_compositeFRCQ27JGadget44TVector_pointer<PQ27JStudio14TFunctionValue>RCQ37JStudio24TFunctionValue_composite5TDatad
@@ -686,9 +587,8 @@ asm void JStudio::TFunctionValue_composite::getValue(f64 param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_composite::composite_raw(
- JGadget::TVector_pointer<JStudio::TFunctionValue*> const& param_0,
- JStudio::TFunctionValue_composite::TData const& param_1, f64 param_2) {
+asm void TFunctionValue_composite::composite_raw(TVector_pointer<TFunctionValue*> const& param_0,
+ TData const& param_1, f64 param_2) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80281E5C.s"
}
@@ -700,9 +600,8 @@ asm void JStudio::TFunctionValue_composite::composite_raw(
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_composite::composite_index(
- JGadget::TVector_pointer<JStudio::TFunctionValue*> const& param_0,
- JStudio::TFunctionValue_composite::TData const& param_1, f64 param_2) {
+asm void TFunctionValue_composite::composite_index(TVector_pointer<TFunctionValue*> const& param_0,
+ TData const& param_1, f64 param_2) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80281EC8.s"
}
@@ -714,9 +613,9 @@ asm void JStudio::TFunctionValue_composite::composite_index(
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_composite::composite_parameter(
- JGadget::TVector_pointer<JStudio::TFunctionValue*> const& param_0,
- JStudio::TFunctionValue_composite::TData const& param_1, f64 param_2) {
+asm void
+TFunctionValue_composite::composite_parameter(TVector_pointer<TFunctionValue*> const& param_0,
+ TData const& param_1, f64 param_2) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/func_8028202C.s"
}
@@ -728,9 +627,8 @@ asm void JStudio::TFunctionValue_composite::composite_parameter(
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_composite::composite_add(
- JGadget::TVector_pointer<JStudio::TFunctionValue*> const& param_0,
- JStudio::TFunctionValue_composite::TData const& param_1, f64 param_2) {
+asm void TFunctionValue_composite::composite_add(TVector_pointer<TFunctionValue*> const& param_0,
+ TData const& param_1, f64 param_2) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80282094.s"
}
@@ -742,9 +640,9 @@ asm void JStudio::TFunctionValue_composite::composite_add(
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_composite::composite_subtract(
- JGadget::TVector_pointer<JStudio::TFunctionValue*> const& param_0,
- JStudio::TFunctionValue_composite::TData const& param_1, f64 param_2) {
+asm void
+TFunctionValue_composite::composite_subtract(TVector_pointer<TFunctionValue*> const& param_0,
+ TData const& param_1, f64 param_2) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80282118.s"
}
@@ -756,9 +654,9 @@ asm void JStudio::TFunctionValue_composite::composite_subtract(
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_composite::composite_multiply(
- JGadget::TVector_pointer<JStudio::TFunctionValue*> const& param_0,
- JStudio::TFunctionValue_composite::TData const& param_1, f64 param_2) {
+asm void
+TFunctionValue_composite::composite_multiply(TVector_pointer<TFunctionValue*> const& param_0,
+ TData const& param_1, f64 param_2) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80282200.s"
}
@@ -770,236 +668,161 @@ asm void JStudio::TFunctionValue_composite::composite_multiply(
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_composite::composite_divide(
- JGadget::TVector_pointer<JStudio::TFunctionValue*> const& param_0,
- JStudio::TFunctionValue_composite::TData const& param_1, f64 param_2) {
+asm void TFunctionValue_composite::composite_divide(TVector_pointer<TFunctionValue*> const& param_0,
+ TData const& param_1, f64 param_2) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80282284.s"
}
#pragma pop
-/* 8028236C-802823B4 27CCAC 0048+00 0/0 1/1 0/0 .text __ct__Q27JStudio23TFunctionValue_constantFv
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::TFunctionValue_constant::TFunctionValue_constant() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/__ct__Q27JStudio23TFunctionValue_constantFv.s"
-}
-#pragma pop
+TFunctionValue_constant::TFunctionValue_constant() : fValue_(__float_nan[0]) {}
-/* 802823B4-802823BC 27CCF4 0008+00 1/0 0/0 0/0 .text
- * getType__Q27JStudio23TFunctionValue_constantCFv */
-s32 JStudio::TFunctionValue_constant::getType() const {
+u32 TFunctionValue_constant::getType() const {
return 2;
}
-/* 802823BC-802823D0 27CCFC 0014+00 1/0 0/0 0/0 .text
- * getAttributeSet__Q27JStudio23TFunctionValue_constantFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_constant::getAttributeSet() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/getAttributeSet__Q27JStudio23TFunctionValue_constantFv.s"
+TFunctionValueAttributeSet TFunctionValue_constant::getAttributeSet() {
+ return TFunctionValueAttributeSet(NULL, NULL, NULL);
}
-#pragma pop
-/* 802823D0-802823E0 27CD10 0010+00 1/0 0/0 0/0 .text
- * initialize__Q27JStudio23TFunctionValue_constantFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_constant::initialize() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/initialize__Q27JStudio23TFunctionValue_constantFv.s"
+void TFunctionValue_constant::initialize() {
+ fValue_ = __float_nan[0];
}
-#pragma pop
-/* 802823E0-802823E4 27CD20 0004+00 1/0 0/0 0/0 .text
- * prepare__Q27JStudio23TFunctionValue_constantFv */
-void JStudio::TFunctionValue_constant::prepare() {
+void TFunctionValue_constant::prepare() {
/* empty function */
}
-/* 802823E4-802823EC 27CD24 0008+00 1/0 0/0 0/0 .text
- * getValue__Q27JStudio23TFunctionValue_constantFd */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_constant::getValue(f64 param_0) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/getValue__Q27JStudio23TFunctionValue_constantFd.s"
+f64 TFunctionValue_constant::getValue(f64 arg1) {
+ return fValue_;
}
-#pragma pop
-/* 802823EC-8028244C 27CD2C 0060+00 0/0 1/1 0/0 .text
- * __ct__Q27JStudio25TFunctionValue_transitionFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::TFunctionValue_transition::TFunctionValue_transition() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/__ct__Q27JStudio25TFunctionValue_transitionFv.s"
-}
-#pragma pop
+TFunctionValue_transition::TFunctionValue_transition() : _48(__float_nan[0]), _50(_48) {}
-/* 8028244C-80282454 27CD8C 0008+00 1/0 0/0 0/0 .text
- * getType__Q27JStudio25TFunctionValue_transitionCFv */
-s32 JStudio::TFunctionValue_transition::getType() const {
+u32 TFunctionValue_transition::getType() const {
return 3;
}
-/* 80282454-80282484 27CD94 0030+00 1/0 0/0 0/0 .text
- * getAttributeSet__Q27JStudio25TFunctionValue_transitionFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_transition::getAttributeSet() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/getAttributeSet__Q27JStudio25TFunctionValue_transitionFv.s"
+TFunctionValueAttributeSet TFunctionValue_transition::getAttributeSet() {
+ return TFunctionValueAttributeSet(NULL, this, this);
}
-#pragma pop
-/* 80282484-802824D0 27CDC4 004C+00 1/0 0/0 0/0 .text
- * initialize__Q27JStudio25TFunctionValue_transitionFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_transition::initialize() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/initialize__Q27JStudio25TFunctionValue_transitionFv.s"
+void TFunctionValue_transition::initialize() {
+ range_initialize();
+ interpolate_initialize();
+
+ _48 = __float_nan[0];
+ _50 = _48;
}
-#pragma pop
-/* 802824D0-802824F4 27CE10 0024+00 1/0 0/0 0/0 .text
- * prepare__Q27JStudio25TFunctionValue_transitionFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_transition::prepare() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/prepare__Q27JStudio25TFunctionValue_transitionFv.s"
+void TFunctionValue_transition::prepare() {
+ range_prepare();
+ interpolate_prepare();
}
-#pragma pop
/* 802824F4-802826BC 27CE34 01C8+00 1/0 0/0 0/0 .text
* getValue__Q27JStudio25TFunctionValue_transitionFd */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_transition::getValue(f64 param_0) {
+asm f64 TFunctionValue_transition::getValue(f64 param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/getValue__Q27JStudio25TFunctionValue_transitionFd.s"
}
#pragma pop
-/* 802826BC-80282720 27CFFC 0064+00 0/0 1/1 0/0 .text __ct__Q27JStudio19TFunctionValue_listFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::TFunctionValue_list::TFunctionValue_list() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/__ct__Q27JStudio19TFunctionValue_listFv.s"
-}
-#pragma pop
+TFunctionValue_list::TFunctionValue_list() : _44(NULL), _48(0), _50(__float_nan[0]), _58(NULL) {}
-/* 80282720-80282728 27D060 0008+00 1/0 0/0 0/0 .text getType__Q27JStudio19TFunctionValue_listCFv
- */
-s32 JStudio::TFunctionValue_list::getType() const {
+u32 TFunctionValue_list::getType() const {
return 4;
}
-/* 80282728-80282758 27D068 0030+00 1/0 0/0 0/0 .text
- * getAttributeSet__Q27JStudio19TFunctionValue_listFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list::getAttributeSet() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/getAttributeSet__Q27JStudio19TFunctionValue_listFv.s"
+TFunctionValueAttributeSet TFunctionValue_list::getAttributeSet() {
+ return TFunctionValueAttributeSet(NULL, this, this);
}
-#pragma pop
-/* 80282758-802827A8 27D098 0050+00 1/0 0/0 0/0 .text
- * initialize__Q27JStudio19TFunctionValue_listFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list::initialize() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/initialize__Q27JStudio19TFunctionValue_listFv.s"
-}
-#pragma pop
+void TFunctionValue_list::initialize() {
+ range_initialize();
+ interpolate_initialize();
-/* 802827A8-80282858 27D0E8 00B0+00 1/0 0/0 0/0 .text prepare__Q27JStudio19TFunctionValue_listFv
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list::prepare() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/prepare__Q27JStudio19TFunctionValue_listFv.s"
+ _44 = NULL;
+ _48 = 0;
+ _50 = __float_nan[0];
+ _58 = NULL;
}
-#pragma pop
-/* ############################################################################################## */
-/* 80455448-80455450 003A48 0008+00 1/1 0/0 0/0 .sdata2 @1517 */
-SECTION_SDATA2 static f64 lit_1517 = 4503599627370496.0 /* cast u32 to float */;
+void TFunctionValue_list::prepare() {
+ range_prepare();
+ interpolate_prepare();
+
+ u32 interp = interpolate_get();
+
+ switch (interp) {
+ default:
+ JUTWarn w;
+ w << "unknown interpolation : " << interp;
+ case 0:
+ _58 = update_INTERPOLATE_NONE_;
+ break;
+ case 1:
+ _58 = update_INTERPOLATE_LINEAR_;
+ break;
+ case 2:
+ _58 = update_INTERPOLATE_PLATEAU_;
+ break;
+ case 3:
+ _58 = update_INTERPOLATE_BSPLINE_dataMore3_;
+ if (_48 == 2)
+ _58 = update_INTERPOLATE_LINEAR_;
+ break;
+ }
+}
/* 80282858-80282C10 27D198 03B8+00 1/0 0/0 0/0 .text getValue__Q27JStudio19TFunctionValue_listFd
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list::getValue(f64 param_0) {
+asm f64 TFunctionValue_list::getValue(f64 param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/getValue__Q27JStudio19TFunctionValue_listFd.s"
}
#pragma pop
-/* 80282C10-80282C24 27D550 0014+00 1/1 0/0 0/0 .text
- * update_INTERPOLATE_NONE___Q27JStudio19TFunctionValue_listFRCQ27JStudio19TFunctionValue_listRCQ37JStudio19TFunctionValue_list11TIndexData_
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list::update_INTERPOLATE_NONE_(
- JStudio::TFunctionValue_list const& param_0,
- JStudio::TFunctionValue_list::TIndexData_ const& param_1) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80282C10.s"
+f64 TFunctionValue_list::update_INTERPOLATE_NONE_(const TFunctionValue_list& rThis,
+ const TIndexData_& data) {
+ return rThis._44[data._10];
}
-#pragma pop
-/* 80282C24-80282C58 27D564 0034+00 1/1 0/0 0/0 .text
- * update_INTERPOLATE_LINEAR___Q27JStudio19TFunctionValue_listFRCQ27JStudio19TFunctionValue_listRCQ37JStudio19TFunctionValue_list11TIndexData_
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list::update_INTERPOLATE_LINEAR_(
- JStudio::TFunctionValue_list const& param_0,
- JStudio::TFunctionValue_list::TIndexData_ const& param_1) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80282C24.s"
+f64 TFunctionValue_list::update_INTERPOLATE_LINEAR_(const TFunctionValue_list& rThis,
+ const TIndexData_& data) {
+ return functionvalue::interpolateValue_linear_1(data._0, data._8, rThis._44[data._10],
+ rThis._44[data._10 + 1]);
}
-#pragma pop
+#ifdef NONMATCHING // float load
+f64 TFunctionValue_list::update_INTERPOLATE_PLATEAU_(const TFunctionValue_list& rThis,
+ const TIndexData_& data) {
+ const f32* arr = rThis._44;
+
+ return functionvalue::interpolateValue_plateau(data._0, data._8, arr[data._10],
+ lit_792 + data._8, arr[data._10 + 1]);
+}
+#else
/* 80282C58-80282CA8 27D598 0050+00 1/1 0/0 0/0 .text
* update_INTERPOLATE_PLATEAU___Q27JStudio19TFunctionValue_listFRCQ27JStudio19TFunctionValue_listRCQ37JStudio19TFunctionValue_list11TIndexData_
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list::update_INTERPOLATE_PLATEAU_(
+asm f64 JStudio::TFunctionValue_list::update_INTERPOLATE_PLATEAU_(
JStudio::TFunctionValue_list const& param_0,
JStudio::TFunctionValue_list::TIndexData_ const& param_1) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80282C58.s"
}
#pragma pop
+#endif
/* 80282CA8-80282D34 27D5E8 008C+00 1/1 0/0 0/0 .text
* update_INTERPOLATE_BSPLINE_dataMore3___Q27JStudio19TFunctionValue_listFRCQ27JStudio19TFunctionValue_listRCQ37JStudio19TFunctionValue_list11TIndexData_
@@ -1007,124 +830,119 @@ asm void JStudio::TFunctionValue_list::update_INTERPOLATE_PLATEAU_(
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list::update_INTERPOLATE_BSPLINE_dataMore3_(
- JStudio::TFunctionValue_list const& param_0,
- JStudio::TFunctionValue_list::TIndexData_ const& param_1) {
+asm f64 TFunctionValue_list::update_INTERPOLATE_BSPLINE_dataMore3_(
+ TFunctionValue_list const& param_0, TFunctionValue_list::TIndexData_ const& param_1) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80282CA8.s"
}
#pragma pop
-/* 80282D34-80282DA0 27D674 006C+00 0/0 1/1 0/0 .text
- * __ct__Q27JStudio29TFunctionValue_list_parameterFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::TFunctionValue_list_parameter::TFunctionValue_list_parameter() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/__ct__Q27JStudio29TFunctionValue_list_parameterFv.s"
-}
-#pragma pop
+TFunctionValue_list_parameter::TFunctionValue_list_parameter()
+ : _44(NULL), _48(0), dat1(NULL), dat2(dat1), dat3(dat1), _58(NULL) {}
-/* 80282DA0-80282DA8 27D6E0 0008+00 1/0 0/0 0/0 .text
- * getType__Q27JStudio29TFunctionValue_list_parameterCFv */
-s32 JStudio::TFunctionValue_list_parameter::getType() const {
+u32 TFunctionValue_list_parameter::getType() const {
return 5;
}
-/* 80282DA8-80282DD8 27D6E8 0030+00 1/0 0/0 0/0 .text
- * getAttributeSet__Q27JStudio29TFunctionValue_list_parameterFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list_parameter::getAttributeSet() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/getAttributeSet__Q27JStudio29TFunctionValue_list_parameterFv.s"
+TFunctionValueAttributeSet TFunctionValue_list_parameter::getAttributeSet() {
+ return TFunctionValueAttributeSet(NULL, this, this);
}
-#pragma pop
-/* 80282DD8-80282E08 27D718 0030+00 0/0 1/1 0/0 .text
- * data_set__Q27JStudio29TFunctionValue_list_parameterFPCfUl */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list_parameter::data_set(f32 const* param_0, u32 param_1) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/data_set__Q27JStudio29TFunctionValue_list_parameterFPCfUl.s"
+void TFunctionValue_list_parameter::data_set(const f32* pf, u32 u) {
+ ASSERT((pf != NULL) || (u == 0));
+
+ _44 = pf;
+ _48 = u;
+
+ dat1.set(_44);
+ dat2.set(&_44[_48 * 2]);
+ dat3 = dat1;
}
-#pragma pop
-/* 80282E08-80282E60 27D748 0058+00 1/0 0/0 0/0 .text
- * initialize__Q27JStudio29TFunctionValue_list_parameterFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list_parameter::initialize() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/initialize__Q27JStudio29TFunctionValue_list_parameterFv.s"
+void TFunctionValue_list_parameter::initialize() {
+ range_initialize();
+ interpolate_initialize();
+
+ _44 = NULL;
+ _48 = 0;
+
+ TIterator_data_ iter(NULL);
+
+ dat1 = iter;
+ dat2 = dat1;
+ dat3 = dat1;
+ _58 = NULL;
}
-#pragma pop
-/* 80282E60-80282F10 27D7A0 00B0+00 1/0 0/0 0/0 .text
- * prepare__Q27JStudio29TFunctionValue_list_parameterFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list_parameter::prepare() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/prepare__Q27JStudio29TFunctionValue_list_parameterFv.s"
+void TFunctionValue_list_parameter::prepare() {
+ range_prepare();
+ interpolate_prepare();
+
+ u32 interp = interpolate_get();
+ switch (interp) {
+ default:
+ JUTWarn w;
+ w << "unknown interpolation : " << interp;
+ case 0:
+ _58 = update_INTERPOLATE_NONE_;
+ break;
+ case 1:
+ _58 = update_INTERPOLATE_LINEAR_;
+ break;
+ case 2:
+ _58 = update_INTERPOLATE_PLATEAU_;
+ break;
+ case 3:
+ _58 = update_INTERPOLATE_BSPLINE_dataMore3_;
+ if (_48 != 2)
+ return;
+ _58 = update_INTERPOLATE_LINEAR_;
+ break;
+ }
}
-#pragma pop
/* 80282F10-80282FE8 27D850 00D8+00 1/0 0/0 0/0 .text
* getValue__Q27JStudio29TFunctionValue_list_parameterFd */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list_parameter::getValue(f64 param_0) {
+asm f64 TFunctionValue_list_parameter::getValue(f64 param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/getValue__Q27JStudio29TFunctionValue_list_parameterFd.s"
}
#pragma pop
-/* 80282FE8-80282FF4 27D928 000C+00 1/1 0/0 0/0 .text
- * update_INTERPOLATE_NONE___Q27JStudio29TFunctionValue_list_parameterFRCQ27JStudio29TFunctionValue_list_parameterd
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list_parameter::update_INTERPOLATE_NONE_(
- JStudio::TFunctionValue_list_parameter const& param_0, f64 param_1) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80282FE8.s"
+f64 TFunctionValue_list_parameter::update_INTERPOLATE_NONE_(
+ const TFunctionValue_list_parameter& rThis, f64 d) {
+ return rThis.dat3.get()[-1];
}
-#pragma pop
-/* 80282FF4-80283024 27D934 0030+00 1/1 0/0 0/0 .text
- * update_INTERPOLATE_LINEAR___Q27JStudio29TFunctionValue_list_parameterFRCQ27JStudio29TFunctionValue_list_parameterd
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list_parameter::update_INTERPOLATE_LINEAR_(
- JStudio::TFunctionValue_list_parameter const& param_0, f64 param_1) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80282FF4.s"
+f64 TFunctionValue_list_parameter::update_INTERPOLATE_LINEAR_(
+ const TFunctionValue_list_parameter& rThis, f64 d) {
+ const f32* a = rThis.dat3.get();
+ return functionvalue::interpolateValue_linear(d, a[-2], a[-1], a[0], a[1]);
}
-#pragma pop
+#ifdef NONMATCHING // float load
+f64 TFunctionValue_list_parameter::update_INTERPOLATE_PLATEAU_(
+ const TFunctionValue_list_parameter& rThis, f64 d) {
+ const f32* a = rThis.dat3.get();
+ return functionvalue::interpolateValue_plateau(d, a[-2], a[-1], a[0], a[1]);
+}
+#else
/* 80283024-80283060 27D964 003C+00 1/1 0/0 0/0 .text
* update_INTERPOLATE_PLATEAU___Q27JStudio29TFunctionValue_list_parameterFRCQ27JStudio29TFunctionValue_list_parameterd
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list_parameter::update_INTERPOLATE_PLATEAU_(
- JStudio::TFunctionValue_list_parameter const& param_0, f64 param_1) {
+asm f64 TFunctionValue_list_parameter::update_INTERPOLATE_PLATEAU_(
+ TFunctionValue_list_parameter const& param_0, f64 param_1) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80283024.s"
}
#pragma pop
+#endif
/* 80283060-802832C4 27D9A0 0264+00 1/1 0/0 0/0 .text
* update_INTERPOLATE_BSPLINE_dataMore3___Q27JStudio29TFunctionValue_list_parameterFRCQ27JStudio29TFunctionValue_list_parameterd
@@ -1132,112 +950,95 @@ asm void JStudio::TFunctionValue_list_parameter::update_INTERPOLATE_PLATEAU_(
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_list_parameter::update_INTERPOLATE_BSPLINE_dataMore3_(
- JStudio::TFunctionValue_list_parameter const& param_0, f64 param_1) {
+asm f64 TFunctionValue_list_parameter::update_INTERPOLATE_BSPLINE_dataMore3_(
+ TFunctionValue_list_parameter const& param_0, f64 param_1) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/func_80283060.s"
}
#pragma pop
-/* 802832C4-80283344 27DC04 0080+00 0/0 1/1 0/0 .text __ct__Q27JStudio22TFunctionValue_hermiteFv
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::TFunctionValue_hermite::TFunctionValue_hermite() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/__ct__Q27JStudio22TFunctionValue_hermiteFv.s"
-}
-#pragma pop
+TFunctionValue_hermite::TFunctionValue_hermite()
+ : pf_(NULL), u_(0), uSize_(0), dat1(*this, NULL), dat2(dat1), dat3(dat1) {}
-/* 80283344-8028334C 27DC84 0008+00 1/0 0/0 0/0 .text
- * getType__Q27JStudio22TFunctionValue_hermiteCFv */
-s32 JStudio::TFunctionValue_hermite::getType() const {
+u32 JStudio::TFunctionValue_hermite::getType() const {
return 6;
}
-/* 8028334C-8028336C 27DC8C 0020+00 1/0 0/0 0/0 .text
- * getAttributeSet__Q27JStudio22TFunctionValue_hermiteFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_hermite::getAttributeSet() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/getAttributeSet__Q27JStudio22TFunctionValue_hermiteFv.s"
+TFunctionValueAttributeSet TFunctionValue_hermite::getAttributeSet() {
+ return TFunctionValueAttributeSet(NULL, this, NULL);
}
-#pragma pop
-/* 8028336C-802833BC 27DCAC 0050+00 0/0 1/1 0/0 .text
- * data_set__Q27JStudio22TFunctionValue_hermiteFPCfUlUl */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_hermite::data_set(f32 const* param_0, u32 param_1, u32 param_2) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/data_set__Q27JStudio22TFunctionValue_hermiteFPCfUlUl.s"
+void TFunctionValue_hermite::data_set(const f32* pf, u32 u, u32 uSize) {
+ ASSERT((pf != NULL) || (u == 0));
+ ASSERT((uSize == 3) || (uSize == 4));
+
+ pf_ = pf;
+ u_ = u;
+ uSize_ = uSize;
+
+ dat1.set(pf_, uSize_);
+ dat2.set(&pf_[u_ * uSize_], uSize_);
+ dat3 = dat1;
}
-#pragma pop
-/* 802833BC-80283428 27DCFC 006C+00 1/0 0/0 0/0 .text
- * initialize__Q27JStudio22TFunctionValue_hermiteFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_hermite::initialize() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/initialize__Q27JStudio22TFunctionValue_hermiteFv.s"
+void TFunctionValue_hermite::initialize() {
+ range_initialize();
+
+ pf_ = NULL;
+ u_ = 0;
+ uSize_ = 0;
+
+ TIterator_data_ data(*this, NULL);
+ dat1 = data;
+ dat2 = dat1;
+ dat3 = dat1;
}
-#pragma pop
-/* 80283428-8028344C 27DD68 0024+00 1/0 0/0 0/0 .text
- * prepare__Q27JStudio22TFunctionValue_hermiteFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_hermite::prepare() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/prepare__Q27JStudio22TFunctionValue_hermiteFv.s"
+void TFunctionValue_hermite::prepare() {
+ range_prepare();
}
-#pragma pop
/* 8028344C-80283570 27DD8C 0124+00 1/0 0/0 0/0 .text
* getValue__Q27JStudio22TFunctionValue_hermiteFd */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::TFunctionValue_hermite::getValue(f64 param_0) {
+asm f64 TFunctionValue_hermite::getValue(f64 param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/functionvalue/getValue__Q27JStudio22TFunctionValue_hermiteFd.s"
}
#pragma pop
-/* 80283570-80283574 27DEB0 0004+00 1/0 0/0 0/0 .text
- * extrapolateParameter_raw__Q27JStudio13functionvalueFdd */
-void JStudio::functionvalue::extrapolateParameter_raw(f64 param_0, f64 param_1) {
- /* empty function */
+} // namespace JStudio
+
+namespace JStudio {
+namespace functionvalue {
+
+f64 extrapolateParameter_raw(f64 a1, f64 a2) {
+ return a1;
}
-/* 80283574-802835B0 27DEB4 003C+00 1/0 0/0 0/0 .text
- * extrapolateParameter_repeat__Q27JStudio13functionvalueFdd */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::functionvalue::extrapolateParameter_repeat(f64 param_0, f64 param_1) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/extrapolateParameter_repeat__Q27JStudio13functionvalueFdd.s"
+f64 extrapolateParameter_repeat(f64 a1, f64 a2) {
+ f64 t = fmod(a1, a2);
+
+ if (t < DOUBLE_LABEL(/* 0.0 */ lit_652))
+ t += a2;
+
+ return t;
}
-#pragma pop
-/* 802835B0-802835DC 27DEF0 002C+00 1/0 0/0 0/0 .text
- * extrapolateParameter_clamp__Q27JStudio13functionvalueFdd */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::functionvalue::extrapolateParameter_clamp(f64 param_0, f64 param_1) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/extrapolateParameter_clamp__Q27JStudio13functionvalueFdd.s"
+f64 extrapolateParameter_clamp(f64 value, f64 max) {
+ if (value <= DOUBLE_LABEL(/* 0.0 */ lit_652))
+ return DOUBLE_LABEL(/* 0.0 */ lit_652);
+
+ if (max <= value)
+ value = max;
+
+ return value;
}
-#pragma pop
+
+} // namespace functionvalue
+} // namespace JStudio
/* 802835DC-80283634 27DF1C 0058+00 1/1 0/0 0/0 .text
* findUpperBound_binary_current<Q37JStudio29TFunctionValue_list_parameter15TIterator_data_,d>__7JGadgetFQ37JStudio29TFunctionValue_list_parameter15TIterator_data_Q37JStudio29TFunctionValue_list_parameter15TIterator_data_Q37JStudio29TFunctionValue_list_parameter15TIterator_data_RCd
@@ -1302,98 +1103,3 @@ extern "C" asm void func_802838C8(void* _this,
#include "asm/JSystem/JStudio/JStudio/functionvalue/func_802838C8.s"
}
#pragma pop
-
-/* 80283BC4-80283C24 27E504 0060+00 1/0 0/0 0/0 .text __dt__Q27JStudio22TFunctionValue_hermiteFv
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::TFunctionValue_hermite::~TFunctionValue_hermite() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/__dt__Q27JStudio22TFunctionValue_hermiteFv.s"
-}
-#pragma pop
-
-/* 80283C24-80283C84 27E564 0060+00 1/0 1/0 0/0 .text
- * __dt__Q27JStudio29TFunctionValue_list_parameterFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::TFunctionValue_list_parameter::~TFunctionValue_list_parameter() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/__dt__Q27JStudio29TFunctionValue_list_parameterFv.s"
-}
-#pragma pop
-
-/* 80283C84-80283CE4 27E5C4 0060+00 1/0 0/0 0/0 .text __dt__Q27JStudio19TFunctionValue_listFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::TFunctionValue_list::~TFunctionValue_list() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/__dt__Q27JStudio19TFunctionValue_listFv.s"
-}
-#pragma pop
-
-/* 80283CE4-80283D44 27E624 0060+00 1/0 0/0 0/0 .text
- * __dt__Q27JStudio25TFunctionValue_transitionFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::TFunctionValue_transition::~TFunctionValue_transition() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/__dt__Q27JStudio25TFunctionValue_transitionFv.s"
-}
-#pragma pop
-
-/* 80283D44-80283DA4 27E684 0060+00 1/0 0/0 0/0 .text __dt__Q27JStudio23TFunctionValue_constantFv
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::TFunctionValue_constant::~TFunctionValue_constant() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/__dt__Q27JStudio23TFunctionValue_constantFv.s"
-}
-#pragma pop
-
-/* 80283DA4-80283E24 27E6E4 0080+00 1/0 0/0 0/0 .text __dt__Q27JStudio24TFunctionValue_compositeFv
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::TFunctionValue_composite::~TFunctionValue_composite() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/functionvalue/__dt__Q27JStudio24TFunctionValue_compositeFv.s"
-}
-#pragma pop
-
-/* 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
-extern "C" 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
-extern "C" 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
diff --git a/libs/JSystem/JStudio/JStudio/fvb-data-parse.cpp b/libs/JSystem/JStudio/JStudio/fvb-data-parse.cpp
index f0077f7573..f3183ac949 100644
--- a/libs/JSystem/JStudio/JStudio/fvb-data-parse.cpp
+++ b/libs/JSystem/JStudio/JStudio/fvb-data-parse.cpp
@@ -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:
//
diff --git a/libs/JSystem/JStudio/JStudio/fvb-data.cpp b/libs/JSystem/JStudio/JStudio/fvb-data.cpp
index 16bac06f3c..0b49d48322 100644
--- a/libs/JSystem/JStudio/JStudio/fvb-data.cpp
+++ b/libs/JSystem/JStudio/JStudio/fvb-data.cpp
@@ -11,16 +11,6 @@
// Types:
//
-namespace JStudio {
-namespace fvb {
-struct data {
- static f32 ga4cSignature[1 + 1 /* padding */];
-};
-
-}; // namespace fvb
-
-}; // namespace JStudio
-
//
// Forward References:
//
diff --git a/libs/JSystem/JStudio/JStudio/fvb-inline.cpp b/libs/JSystem/JStudio/JStudio/fvb-inline.cpp
new file mode 100644
index 0000000000..0299bb29ae
--- /dev/null
+++ b/libs/JSystem/JStudio/JStudio/fvb-inline.cpp
@@ -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
diff --git a/libs/JSystem/JStudio/JStudio/fvb.cpp b/libs/JSystem/JStudio/JStudio/fvb.cpp
index e32f5ea21a..3cbafd02f7 100644
--- a/libs/JSystem/JStudio/JStudio/fvb.cpp
+++ b/libs/JSystem/JStudio/JStudio/fvb.cpp
@@ -12,193 +12,16 @@
//
namespace JGadget {
-template <typename A1, typename B1>
-struct TLinkList {};
/* TLinkList<JStudio::fvb::TObject, 12> */
struct TLinkList__template1 {
struct iterator {};
};
-template <typename A1>
-struct TVector_pointer {};
/* TVector_pointer<JStudio::TFunctionValue*> */
struct TVector_pointer__template0 {};
-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*);
-};
-
-struct TVector_pointer_void {
- /* 802DCCFC */ ~TVector_pointer_void();
- /* 802DCDA4 */ void insert(void**, void* const&);
-};
-
}; // namespace JGadget
-namespace JStudio {
-namespace fvb {
-struct data {
- struct TParse_TBlock {};
-
- struct TParse_TParagraph {
- struct TData {};
-
- /* 802850AC */ void getData(JStudio::fvb::data::TParse_TParagraph::TData*) const;
- };
-
- static f32 ga4cSignature[1 + 1 /* padding */];
-};
-
-struct TObject;
-struct TControl {
- /* 80284668 */ TControl();
- /* 80284698 */ ~TControl();
- /* 80284704 */ void appendObject(JStudio::fvb::TObject*);
- /* 80284750 */ void removeObject(JStudio::fvb::TObject*);
- /* 80284780 */ void destroyObject(JStudio::fvb::TObject*);
- /* 802847D0 */ void destroyObject_all();
- /* 80284834 */ void getObject(void const*, u32);
- /* 802848D4 */ void getObject_index(u32);
-};
-
-struct TObject {
- /* 80283F80 */ ~TObject();
- /* 80283FC8 */ void prepare(JStudio::fvb::data::TParse_TBlock const&, JStudio::fvb::TControl*);
-};
-
-struct TObject_composite {
- /* 80284254 */ TObject_composite(JStudio::fvb::data::TParse_TBlock const&);
- /* 802842D4 */ void prepare_data_(JStudio::fvb::data::TParse_TParagraph::TData const&,
- JStudio::fvb::TControl*);
- /* 80284F78 */ ~TObject_composite();
-};
-
-struct TObject_constant {
- /* 80284338 */ TObject_constant(JStudio::fvb::data::TParse_TBlock const&);
- /* 802843B8 */ void prepare_data_(JStudio::fvb::data::TParse_TParagraph::TData const&,
- JStudio::fvb::TControl*);
- /* 80284EF4 */ ~TObject_constant();
-};
-
-struct TObject_transition {
- /* 802843C8 */ TObject_transition(JStudio::fvb::data::TParse_TBlock const&);
- /* 80284448 */ void prepare_data_(JStudio::fvb::data::TParse_TParagraph::TData const&,
- JStudio::fvb::TControl*);
- /* 80284E70 */ ~TObject_transition();
-};
-
-struct TObject_list {
- /* 80284460 */ TObject_list(JStudio::fvb::data::TParse_TBlock const&);
- /* 802844E0 */ void prepare_data_(JStudio::fvb::data::TParse_TParagraph::TData const&,
- JStudio::fvb::TControl*);
- /* 80284DEC */ ~TObject_list();
-};
-
-struct TObject_list_parameter {
- /* 80284500 */ TObject_list_parameter(JStudio::fvb::data::TParse_TBlock const&);
- /* 80284580 */ void prepare_data_(JStudio::fvb::data::TParse_TParagraph::TData const&,
- JStudio::fvb::TControl*);
- /* 80284D68 */ ~TObject_list_parameter();
-};
-
-struct TObject_hermite {
- /* 802845B0 */ TObject_hermite(JStudio::fvb::data::TParse_TBlock const&);
- /* 80284630 */ void prepare_data_(JStudio::fvb::data::TParse_TParagraph::TData const&,
- JStudio::fvb::TControl*);
- /* 80284CE4 */ ~TObject_hermite();
-};
-
-struct TFactory {
- /* 80284918 */ ~TFactory();
- /* 80284960 */ void create(JStudio::fvb::data::TParse_TBlock const&);
- /* 80284AA0 */ void destroy(JStudio::fvb::TObject*);
-};
-
-struct TParse {
- /* 80284ADC */ TParse(JStudio::fvb::TControl*);
- /* 80284AFC */ ~TParse();
- /* 80284B5C */ void parseHeader_next(void const**, u32*, u32);
- /* 80284BF0 */ void parseBlock_next(void const**, u32*, u32);
-};
-
-}; // namespace fvb
-
-struct object {
- struct TPRObject_ID_equal {};
-
- struct TIDData {
- /* 80288988 */ void isEqual(JStudio::object::TIDData const&,
- JStudio::object::TIDData const&);
- };
-};
-
-struct TFunctionValue {
- /* 802816A0 */ ~TFunctionValue();
-};
-
-struct TFunctionValueAttribute_range {
- /* 802819F4 */ void range_set(f64, f64);
-};
-
-struct TFunctionValue_composite {
- struct TData {};
-
- /* 80281D5C */ TFunctionValue_composite();
- /* 80281E5C */ void composite_raw(JGadget::TVector_pointer<JStudio::TFunctionValue*> const&,
- JStudio::TFunctionValue_composite::TData const&, f64);
- /* 80281EC8 */ void composite_index(JGadget::TVector_pointer<JStudio::TFunctionValue*> const&,
- JStudio::TFunctionValue_composite::TData const&, f64);
- /* 8028202C */ void
- composite_parameter(JGadget::TVector_pointer<JStudio::TFunctionValue*> const&,
- JStudio::TFunctionValue_composite::TData const&, f64);
- /* 80282094 */ void composite_add(JGadget::TVector_pointer<JStudio::TFunctionValue*> const&,
- JStudio::TFunctionValue_composite::TData const&, f64);
- /* 80282118 */ void
- composite_subtract(JGadget::TVector_pointer<JStudio::TFunctionValue*> const&,
- JStudio::TFunctionValue_composite::TData const&, f64);
- /* 80282200 */ void
- composite_multiply(JGadget::TVector_pointer<JStudio::TFunctionValue*> const&,
- JStudio::TFunctionValue_composite::TData const&, f64);
- /* 80282284 */ void composite_divide(JGadget::TVector_pointer<JStudio::TFunctionValue*> const&,
- JStudio::TFunctionValue_composite::TData const&, f64);
-};
-
-struct TFunctionValue_constant {
- /* 8028236C */ TFunctionValue_constant();
-};
-
-struct TFunctionValue_transition {
- /* 802823EC */ TFunctionValue_transition();
-};
-
-struct TFunctionValue_list {
- /* 802826BC */ TFunctionValue_list();
-};
-
-struct TFunctionValue_list_parameter {
- /* 80282D34 */ TFunctionValue_list_parameter();
- /* 80282DD8 */ void data_set(f32 const*, u32);
-};
-
-struct TFunctionValue_hermite {
- /* 802832C4 */ TFunctionValue_hermite();
- /* 8028336C */ void data_set(f32 const*, u32, u32);
-};
-
-}; // namespace JStudio
-
namespace std {
template <typename A1, typename B1>
void find_if(/* ... */);
@@ -215,14 +38,7 @@ void func_80285018(void* _this, JGadget::TLinkList__template1::iterator,
extern "C" void __dt__Q37JStudio3fvb7TObjectFv();
extern "C" void
prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl();
-extern "C" static void func_802841EC();
-extern "C" static void func_802841F8();
-extern "C" static void func_80284204();
-extern "C" static void func_80284210();
-extern "C" static void func_8028421C();
-extern "C" static void func_80284228();
extern "C" static void func_80284234();
-extern "C" static void func_80284240();
extern "C" void __ct__Q37JStudio3fvb17TObject_compositeFRCQ47JStudio3fvb4data13TParse_TBlock();
extern "C" void
prepare_data___Q37JStudio3fvb17TObject_compositeFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl();
@@ -289,8 +105,6 @@ extern "C" void __ct__Q27JStudio22TFunctionValue_hermiteFv();
extern "C" void data_set__Q27JStudio22TFunctionValue_hermiteFPCfUlUl();
extern "C" void
getData__Q47JStudio3fvb4data17TParse_TParagraphCFPQ57JStudio3fvb4data17TParse_TParagraph5TData();
-extern "C" void
-isEqual__Q37JStudio6object7TIDDataFRCQ37JStudio6object7TIDDataRCQ37JStudio6object7TIDData();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void __dt__Q37JGadget6binary19TParse_header_blockFv();
@@ -306,7 +120,7 @@ extern "C" void _savegpr_29();
extern "C" void _restgpr_23();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
-extern "C" void memcmp();
+extern "C" int memcmp(const void*, const void*, u32);
extern "C" extern void* __vt__Q37JGadget6binary19TParse_header_block[5];
extern "C" extern void* __vt__Q27JStudio22TFunctionValue_hermite[8];
extern "C" extern void* __vt__Q27JStudio29TFunctionValue_list_parameter[8];
@@ -483,129 +297,241 @@ SECTION_DATA extern void* __vt__Q37JStudio3fvb7TObject[4] = {
(void*)NULL,
};
-/* 80283F80-80283FC8 27E8C0 0048+00 6/6 0/0 0/0 .text __dt__Q37JStudio3fvb7TObjectFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::fvb::TObject::~TObject() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/__dt__Q37JStudio3fvb7TObjectFv.s"
-}
-#pragma pop
+namespace JStudio {
+namespace fvb {
+TObject::~TObject() {}
+
+#ifdef NONMATCHING
+void TObject::prepare(data::TParse_TBlock const& rBlock, TControl* pControl) {
+ ASSERT(pfv_ != 0);
+
+ ASSERT(pControl != 0);
+ TFunctionValueAttributeSet set = pfv_->getAttributeSet();
+ const void* pNext = rBlock.getNext();
+ const void* pData = rBlock.getContent();
+ while (pData < pNext) {
+ data::TParse_TParagraph para(pData);
+ data::TParse_TParagraph::TData dat;
+ para.getData(&dat);
+ u32 u32Type = dat.u32Type;
+ u32 u32Size = dat.u32Size;
+ const void* pContent = dat.pContent;
+ switch (u32Type) {
+ case 0:
+ pfv_->prepare();
+ return;
+ case 1:
+ prepare_data_(dat, pControl);
+ break;
+ case 0x10: {
+ JUT_EXPECT(u32Size >= 4);
+ ASSERT(pContent != 0);
+ TFunctionValueAttribute_refer* pfvaRefer = set.refer_get();
+ JUT_EXPECT(pfvaRefer != NULL);
+ if (pfvaRefer == NULL) {
+ JUTWarn w;
+ w << "invalid paragraph";
+ } else {
+ JGadget::TVector_pointer<TFunctionValue*>& rCnt = pfvaRefer->refer_referContainer();
+ data::TParse_TParagraph::TData** pBegin =
+ (data::TParse_TParagraph::TData**)rCnt.pBegin_;
+ // todo: these definitely use a different struct
+ for (data::TParse_TParagraph::TData* i = *pBegin; i != NULL; i = *pBegin) {
+ TObject* pObject = pControl->getObject(pContent, i->u32Size);
+ if (pObject == NULL) {
+ JUTWarn w;
+ w << "object not found by ID";
+ } else {
+ TFunctionValue* const& rfv = pObject->referFunctionValue();
+ rCnt.push_back(rfv);
+ }
+ *pBegin += align_roundUp(i->u32Size, 4);
+ }
+ }
+ } break;
+ case 0x11: {
+ JUT_EXPECT(u32Size >= 4);
+ ASSERT(pContent != 0);
+ TFunctionValueAttribute_refer* pfvaRefer = set.refer_get();
+ JUT_EXPECT(pfvaRefer != NULL);
+ if (pfvaRefer == NULL) {
+ JUTWarn w;
+ w << "invalid paragraph";
+ } else {
+ JGadget::TVector_pointer<TFunctionValue*>& rCnt = pfvaRefer->refer_referContainer();
+ data::TParse_TParagraph::TData** pBegin =
+ (data::TParse_TParagraph::TData**)rCnt.pBegin_;
+ for (data::TParse_TParagraph::TData* i = *pBegin; i != NULL; i = *pBegin) {
+ TObject* pObject = pControl->getObject_index(u32Size);
+ if (pObject == NULL) {
+ JUTWarn w;
+ w << "object not found by index : " << u32Size;
+ } else {
+ TFunctionValue* const& rfv = pObject->referFunctionValue();
+ rCnt.push_back(rfv);
+ }
+ *pBegin += align_roundUp(i->u32Size, 4);
+ }
+ }
+ } break;
+ case 0x12: {
+ JUT_EXPECT(u32Size == 8);
+ ASSERT(pContent != 0);
+ TFunctionValueAttribute_range* pfvaRange = set.range_get();
+ JUT_EXPECT(pfvaRange != NULL);
+ if (pfvaRange == NULL) {
+ JUTWarn w;
+ w << "invalid paragraph";
+ } else {
+ f64* arr = (f64*)pContent;
+ pfvaRange->range_set(arr[0], arr[1]);
+ }
+ } break;
+ case 0x13: {
+ JUT_EXPECT(u32Size == 4);
+ ASSERT(pContent != 0);
+ TFunctionValueAttribute_range* pfvaRange = set.range_get();
+ JUT_EXPECT(pfvaRange != NULL);
+ if (pfvaRange == NULL) {
+ JUTWarn w;
+ w << "invalid paragraph";
+ } else {
+ TFunctionValue::TEProgress prog = *(TFunctionValue::TEProgress*)pContent;
+ pfvaRange->range_setProgress(prog);
+ }
+ } break;
+ case 0x14: {
+ JUT_EXPECT(u32Size == 4);
+ ASSERT(pContent != 0);
+ TFunctionValueAttribute_range* pfvaRange = set.range_get();
+ JUT_EXPECT(pfvaRange != NULL);
+ if (pfvaRange == NULL) {
+ JUTWarn w;
+ w << "invalid paragraph";
+ } else {
+ TFunctionValue::TEAdjust adjust = *(TFunctionValue::TEAdjust*)pContent;
+ pfvaRange->range_setAdjust(adjust);
+ }
+ } break;
+ case 0x15: {
+ JUT_EXPECT(u32Size == 4);
+ ASSERT(pContent != 0);
+ TFunctionValueAttribute_range* pfvaRange = set.range_get();
+ JUT_EXPECT(pfvaRange != NULL);
+ if (pfvaRange == NULL) {
+ JUTWarn w;
+ w << "invalid paragraph";
+ } else {
+ TFunctionValue::TEOutside* out = (TFunctionValue::TEOutside*)pContent;
+ pfvaRange->range_setOutside(out[0], out[1]);
+ }
+ } break;
+ case 0x16: {
+ JUT_EXPECT(u32Size == 4);
+ ASSERT(pContent != 0);
+ TFunctionValueAttribute_interpolate* pfvaInterpolate = set.interpolate_get();
+ JUT_EXPECT(pfvaInterpolate != NULL);
+ if (pfvaInterpolate == NULL) {
+ JUTWarn w;
+ w << "invalid paragraph";
+ } else {
+ TFunctionValue::TEInterpolate interp = *(TFunctionValue::TEInterpolate*)pContent;
+ pfvaInterpolate->interpolate_set(interp);
+ }
+ } break;
+ default:
+ JUTWarn w;
+ w << "unknown paragraph : " << u32Type;
+ }
+ ASSERT(pData != 0);
+ }
+ JUT_EXPECT(pData == pNext);
+ pfv_->prepare();
+}
+#else
/* 80283FC8-802841EC 27E908 0224+00 2/1 0/0 0/0 .text
* prepare__Q37JStudio3fvb7TObjectFRCQ47JStudio3fvb4data13TParse_TBlockPQ37JStudio3fvb8TControl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::fvb::TObject::prepare(JStudio::fvb::data::TParse_TBlock const& param_0,
- JStudio::fvb::TControl* param_1) {
+asm void TObject::prepare(data::TParse_TBlock const& param_0, TControl* param_1) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/fvb/func_80283FC8.s"
}
#pragma pop
-/* 802841EC-802841F8 27EB2C 000C+00 1/0 0/0 0/0 .text
- * getCompositeData_raw___Q37JStudio3fvb17@unnamed@fvb_cpp@FPCv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void func_802841EC() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/func_802841EC.s"
+#endif
+namespace {
+
+TFunctionValue_composite::TData getCompositeData_raw_(const void* arg1) {
+ return TFunctionValue_composite::TData(*(const void**)arg1);
}
-#pragma pop
-/* 802841F8-80284204 27EB38 000C+00 1/0 0/0 0/0 .text
- * getCompositeData_index___Q37JStudio3fvb17@unnamed@fvb_cpp@FPCv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void func_802841F8() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/func_802841F8.s"
+TFunctionValue_composite::TData getCompositeData_index_(const void* arg1) {
+ return TFunctionValue_composite::TData(*(u32*)arg1);
}
-#pragma pop
-/* 80284204-80284210 27EB44 000C+00 1/0 0/0 0/0 .text
- * getCompositeData_parameter___Q37JStudio3fvb17@unnamed@fvb_cpp@FPCv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void func_80284204() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/func_80284204.s"
+TFunctionValue_composite::TData getCompositeData_parameter_(const void* arg1) {
+ return TFunctionValue_composite::TData(*(f32*)arg1);
}
-#pragma pop
-/* 80284210-8028421C 27EB50 000C+00 1/0 0/0 0/0 .text
- * getCompositeData_add___Q37JStudio3fvb17@unnamed@fvb_cpp@FPCv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void func_80284210() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/func_80284210.s"
+TFunctionValue_composite::TData getCompositeData_add_(const void* arg1) {
+ return TFunctionValue_composite::TData(*(f32*)arg1);
}
-#pragma pop
-/* 8028421C-80284228 27EB5C 000C+00 1/0 0/0 0/0 .text
- * getCompositeData_subtract___Q37JStudio3fvb17@unnamed@fvb_cpp@FPCv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void func_8028421C() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/func_8028421C.s"
+TFunctionValue_composite::TData getCompositeData_subtract_(const void* arg1) {
+ return TFunctionValue_composite::TData(*(f32*)arg1);
}
-#pragma pop
-/* 80284228-80284234 27EB68 000C+00 1/0 0/0 0/0 .text
- * getCompositeData_multiply___Q37JStudio3fvb17@unnamed@fvb_cpp@FPCv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void func_80284228() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/func_80284228.s"
+TFunctionValue_composite::TData getCompositeData_multiply_(const void* arg1) {
+ return TFunctionValue_composite::TData(*(f32*)arg1);
}
-#pragma pop
-/* 80284234-80284240 27EB74 000C+00 1/0 0/0 0/0 .text
- * getCompositeData_divide___Q37JStudio3fvb17@unnamed@fvb_cpp@FPCv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void func_80284234() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/func_80284234.s"
+TFunctionValue_composite::TData getCompositeData_divide_(const void* arg1) {
+ return TFunctionValue_composite::TData(*(f32*)arg1);
}
-#pragma pop
+
+} // namespace
+
+} // namespace fvb
+} // namespace JStudio
+
+using namespace JStudio::fvb;
/* ############################################################################################## */
/* 8039AA00-8039AA40 -00001 0040+00 1/1 0/0 0/0 .rodata
* saCompositeOperation___Q37JStudio3fvb17@unnamed@fvb_cpp@ */
SECTION_RODATA static void* const data_8039AA00[16] = {
- (void*)NULL, (void*)NULL, (void*)func_80281E5C, (void*)func_802841EC,
- (void*)func_80281EC8, (void*)func_802841F8, (void*)func_8028202C, (void*)func_80284204,
- (void*)func_80282094, (void*)func_80284210, (void*)func_80282118, (void*)func_8028421C,
- (void*)func_80282200, (void*)func_80284228, (void*)func_80282284, (void*)func_80284234,
+ (void*)NULL, (void*)NULL,
+ (void*)func_80281E5C, (void*)getCompositeData_raw_,
+ (void*)func_80281EC8, (void*)getCompositeData_index_,
+ (void*)func_8028202C, (void*)getCompositeData_parameter_,
+ (void*)func_80282094, (void*)getCompositeData_add_,
+ (void*)func_80282118, (void*)getCompositeData_subtract_,
+ (void*)func_80282200, (void*)getCompositeData_multiply_,
+ (void*)func_80282284, (void*)getCompositeData_divide_,
};
-COMPILER_STRIP_GATE(0x8039AA00, &data_8039AA00);
/* 80284240-80284254 27EB80 0014+00 1/1 0/0 0/0 .text
* getCompositeOperation___Q37JStudio3fvb17@unnamed@fvb_cpp@FQ47JStudio3fvb4data11TEComposite */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-static asm void func_80284240() {
+static asm data::CompositeOperation* func_80284240(data::TEComposite comp) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/fvb/func_80284240.s"
}
#pragma pop
-/* 80284254-802842D4 27EB94 0080+00 1/1 0/0 0/0 .text
- * __ct__Q37JStudio3fvb17TObject_compositeFRCQ47JStudio3fvb4data13TParse_TBlock */
+namespace JStudio {
+namespace fvb {
+
+#ifdef NONMATCHING
+TObject_composite::TObject_composite(const data::TParse_TBlock& block) : TObject(block, &fnValue) {}
+#else
+// /* 80284254-802842D4 27EB94 0080+00 1/1 0/0 0/0 .text
+// * __ct__Q37JStudio3fvb17TObject_compositeFRCQ47JStudio3fvb4data13TParse_TBlock */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -615,170 +541,175 @@ asm JStudio::fvb::TObject_composite::TObject_composite(
#include "asm/JSystem/JStudio/JStudio/fvb/__ct__Q37JStudio3fvb17TObject_compositeFRCQ47JStudio3fvb4data13TParse_TBlock.s"
}
#pragma pop
+#endif
+
+#ifdef NONMATCHING // incomplete
+void TObject_composite::prepare_data_(const data::TParse_TParagraph::TData& rData,
+ TControl* control) {
+ ASSERT(rData.u32Type == data::PARAGRAPH_DATA);
+
+ u32 u32Size = rData.u32Size;
+ JUT_EXPECT(u32Size == 8);
+
+ const TFunctionValue_composite* pContent =
+ static_cast<const TFunctionValue_composite*>(rData.pContent);
+ ASSERT(pContent != NULL);
+ data::CompositeOperation* ops = func_80284240(*(data::TEComposite*)pContent);
+ data::CompositeOperation pfn = ops[1];
+
+ ASSERT(pfn != NULL);
+
+ pfn(pContent->data);
+ fnValue.data_set(*ops, pContent->data);
+}
+#else
/* 802842D4-80284338 27EC14 0064+00 1/0 0/0 0/0 .text
* prepare_data___Q37JStudio3fvb17TObject_compositeFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::fvb::TObject_composite::prepare_data_(
- JStudio::fvb::data::TParse_TParagraph::TData const& param_0, JStudio::fvb::TControl* param_1) {
+asm void TObject_composite::prepare_data_(data::TParse_TParagraph::TData const& param_0,
+ TControl* param_1) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/fvb/func_802842D4.s"
}
#pragma pop
+#endif
/* 80284338-802843B8 27EC78 0080+00 1/1 0/0 0/0 .text
* __ct__Q37JStudio3fvb16TObject_constantFRCQ47JStudio3fvb4data13TParse_TBlock */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm JStudio::fvb::TObject_constant::TObject_constant(
- JStudio::fvb::data::TParse_TBlock const& param_0) {
+asm TObject_constant::TObject_constant(data::TParse_TBlock const& param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/fvb/__ct__Q37JStudio3fvb16TObject_constantFRCQ47JStudio3fvb4data13TParse_TBlock.s"
}
#pragma pop
-/* 802843B8-802843C8 27ECF8 0010+00 1/0 0/0 0/0 .text
- * prepare_data___Q37JStudio3fvb16TObject_constantFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::fvb::TObject_constant::prepare_data_(
- JStudio::fvb::data::TParse_TParagraph::TData const& param_0, JStudio::fvb::TControl* param_1) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/func_802843B8.s"
+void TObject_constant::prepare_data_(const data::TParse_TParagraph::TData& rData,
+ TControl* control) {
+ ASSERT(rData.u32Type == data::PARAGRAPH_DATA);
+
+ u32 u32Size = rData.u32Size;
+ JUT_EXPECT(u32Size == 4);
+
+ const f32* pContent = static_cast<const f32*>(rData.pContent);
+ ASSERT(pContent != NULL);
+
+ fnValue.data_set(pContent[0]);
}
-#pragma pop
/* 802843C8-80284448 27ED08 0080+00 1/1 0/0 0/0 .text
* __ct__Q37JStudio3fvb18TObject_transitionFRCQ47JStudio3fvb4data13TParse_TBlock */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm JStudio::fvb::TObject_transition::TObject_transition(
- JStudio::fvb::data::TParse_TBlock const& param_0) {
+asm TObject_transition::TObject_transition(data::TParse_TBlock const& param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/fvb/__ct__Q37JStudio3fvb18TObject_transitionFRCQ47JStudio3fvb4data13TParse_TBlock.s"
}
#pragma pop
-/* 80284448-80284460 27ED88 0018+00 1/0 0/0 0/0 .text
- * prepare_data___Q37JStudio3fvb18TObject_transitionFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::fvb::TObject_transition::prepare_data_(
- JStudio::fvb::data::TParse_TParagraph::TData const& param_0, JStudio::fvb::TControl* param_1) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/func_80284448.s"
+void TObject_transition::prepare_data_(const data::TParse_TParagraph::TData& rData,
+ TControl* control) {
+ ASSERT(rData.u32Type == data::PARAGRAPH_DATA);
+
+ u32 u32Size = rData.u32Size;
+ JUT_EXPECT(u32size == 8);
+
+ const f32* pContent = static_cast<const f32*>(rData.pContent);
+ ASSERT(pContent != NULL);
+
+ fnValue.data_set(pContent[0], pContent[1]);
}
-#pragma pop
/* 80284460-802844E0 27EDA0 0080+00 1/1 0/0 0/0 .text
* __ct__Q37JStudio3fvb12TObject_listFRCQ47JStudio3fvb4data13TParse_TBlock */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm JStudio::fvb::TObject_list::TObject_list(JStudio::fvb::data::TParse_TBlock const& param_0) {
+asm TObject_list::TObject_list(data::TParse_TBlock const& param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/fvb/__ct__Q37JStudio3fvb12TObject_listFRCQ47JStudio3fvb4data13TParse_TBlock.s"
}
#pragma pop
-/* 802844E0-80284500 27EE20 0020+00 1/0 0/0 0/0 .text
- * prepare_data___Q37JStudio3fvb12TObject_listFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::fvb::TObject_list::prepare_data_(
- JStudio::fvb::data::TParse_TParagraph::TData const& param_0, JStudio::fvb::TControl* param_1) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/func_802844E0.s"
+void TObject_list::prepare_data_(const data::TParse_TParagraph::TData& rData, TControl* control) {
+ ASSERT(rData.u32Type == data::PARAGRAPH_DATA);
+
+ u32 u32Size = rData.u32Size;
+ JUT_EXPECT(u32size >= 8);
+
+ const ListData* pContent = static_cast<const ListData*>(rData.pContent);
+ ASSERT(pContent != NULL);
+
+ fnValue.data_setInterval(pContent->_0);
+ fnValue.data_set(pContent->_8, pContent->_4);
}
-#pragma pop
/* 80284500-80284580 27EE40 0080+00 1/1 0/0 0/0 .text
* __ct__Q37JStudio3fvb22TObject_list_parameterFRCQ47JStudio3fvb4data13TParse_TBlock */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm JStudio::fvb::TObject_list_parameter::TObject_list_parameter(
- JStudio::fvb::data::TParse_TBlock const& param_0) {
+asm TObject_list_parameter::TObject_list_parameter(data::TParse_TBlock const& param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/fvb/__ct__Q37JStudio3fvb22TObject_list_parameterFRCQ47JStudio3fvb4data13TParse_TBlock.s"
}
#pragma pop
-/* 80284580-802845B0 27EEC0 0030+00 1/0 0/0 0/0 .text
- * prepare_data___Q37JStudio3fvb22TObject_list_parameterFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::fvb::TObject_list_parameter::prepare_data_(
- JStudio::fvb::data::TParse_TParagraph::TData const& param_0, JStudio::fvb::TControl* param_1) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/func_80284580.s"
+void TObject_list_parameter::prepare_data_(const data::TParse_TParagraph::TData& rData,
+ TControl* control) {
+ ASSERT(rData.u32Type == data::PARAGRAPH_DATA);
+
+ u32 u32Size = rData.u32Size;
+ JUT_EXPECT(u32size >= 8);
+
+ const ListData* pContent = static_cast<const ListData*>(rData.pContent);
+ ASSERT(pContent != NULL);
+
+ fnValue.data_set(pContent->_4, pContent->_0);
}
-#pragma pop
/* 802845B0-80284630 27EEF0 0080+00 1/1 0/0 0/0 .text
* __ct__Q37JStudio3fvb15TObject_hermiteFRCQ47JStudio3fvb4data13TParse_TBlock */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm JStudio::fvb::TObject_hermite::TObject_hermite(
- JStudio::fvb::data::TParse_TBlock const& param_0) {
+asm TObject_hermite::TObject_hermite(data::TParse_TBlock const& param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/fvb/__ct__Q37JStudio3fvb15TObject_hermiteFRCQ47JStudio3fvb4data13TParse_TBlock.s"
}
#pragma pop
-/* 80284630-80284668 27EF70 0038+00 1/0 0/0 0/0 .text
- * prepare_data___Q37JStudio3fvb15TObject_hermiteFRCQ57JStudio3fvb4data17TParse_TParagraph5TDataPQ37JStudio3fvb8TControl
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::fvb::TObject_hermite::prepare_data_(
- JStudio::fvb::data::TParse_TParagraph::TData const& param_0, JStudio::fvb::TControl* param_1) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/func_80284630.s"
-}
-#pragma pop
+void TObject_hermite::prepare_data_(const data::TParse_TParagraph::TData& rData,
+ TControl* control) {
+ ASSERT(rData.u32Type == data::PARAGRAPH_DATA);
-/* 80284668-80284698 27EFA8 0030+00 0/0 1/1 0/0 .text __ct__Q37JStudio3fvb8TControlFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::fvb::TControl::TControl() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/__ct__Q37JStudio3fvb8TControlFv.s"
+ u32 u32Size = rData.u32Size;
+ JUT_EXPECT(u32size >= 8);
+
+ const ListData* pContent = static_cast<const ListData*>(rData.pContent);
+ ASSERT(pContent != NULL);
+
+ fnValue.data_set(pContent->_4, pContent->_0 & 0xFFFFFFF, pContent->_0 >> 0x1C);
}
-#pragma pop
-/* 80284698-80284704 27EFD8 006C+00 1/0 1/1 0/0 .text __dt__Q37JStudio3fvb8TControlFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::fvb::TControl::~TControl() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/__dt__Q37JStudio3fvb8TControlFv.s"
+TControl::TControl() : pFactory(NULL) {}
+
+TControl::~TControl() {
+ JUT_EXPECT(ocObject_.empty());
}
-#pragma pop
/* 80284704-80284750 27F044 004C+00 1/1 0/0 0/0 .text
* appendObject__Q37JStudio3fvb8TControlFPQ37JStudio3fvb7TObject */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::fvb::TControl::appendObject(JStudio::fvb::TObject* param_0) {
+asm void TControl::appendObject(TObject* param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/fvb/appendObject__Q37JStudio3fvb8TControlFPQ37JStudio3fvb7TObject.s"
}
@@ -789,7 +720,7 @@ asm void JStudio::fvb::TControl::appendObject(JStudio::fvb::TObject* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::fvb::TControl::removeObject(JStudio::fvb::TObject* param_0) {
+asm void TControl::removeObject(TObject* param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/fvb/removeObject__Q37JStudio3fvb8TControlFPQ37JStudio3fvb7TObject.s"
}
@@ -800,7 +731,7 @@ asm void JStudio::fvb::TControl::removeObject(JStudio::fvb::TObject* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::fvb::TControl::destroyObject(JStudio::fvb::TObject* param_0) {
+asm void TControl::destroyObject(TObject* param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/fvb/destroyObject__Q37JStudio3fvb8TControlFPQ37JStudio3fvb7TObject.s"
}
@@ -811,7 +742,7 @@ asm void JStudio::fvb::TControl::destroyObject(JStudio::fvb::TObject* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::fvb::TControl::destroyObject_all() {
+asm void TControl::destroyObject_all() {
nofralloc
#include "asm/JSystem/JStudio/JStudio/fvb/destroyObject_all__Q37JStudio3fvb8TControlFv.s"
}
@@ -821,7 +752,7 @@ asm void JStudio::fvb::TControl::destroyObject_all() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::fvb::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/fvb/getObject__Q37JStudio3fvb8TControlFPCvUl.s"
}
@@ -832,159 +763,121 @@ asm void JStudio::fvb::TControl::getObject(void const* param_0, u32 param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void JStudio::fvb::TControl::getObject_index(u32 param_0) {
+asm TObject* TControl::getObject_index(u32 param_0) {
nofralloc
#include "asm/JSystem/JStudio/JStudio/fvb/getObject_index__Q37JStudio3fvb8TControlFUl.s"
}
#pragma pop
-/* 80284918-80284960 27F258 0048+00 1/0 1/1 0/0 .text __dt__Q37JStudio3fvb8TFactoryFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::fvb::TFactory::~TFactory() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/__dt__Q37JStudio3fvb8TFactoryFv.s"
-}
-#pragma pop
-
-/* 80284960-80284AA0 27F2A0 0140+00 1/0 0/0 0/0 .text
- * create__Q37JStudio3fvb8TFactoryFRCQ47JStudio3fvb4data13TParse_TBlock */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::fvb::TFactory::create(JStudio::fvb::data::TParse_TBlock const& param_0) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/create__Q37JStudio3fvb8TFactoryFRCQ47JStudio3fvb4data13TParse_TBlock.s"
-}
-#pragma pop
-
-/* 80284AA0-80284ADC 27F3E0 003C+00 1/0 0/0 0/0 .text
- * destroy__Q37JStudio3fvb8TFactoryFPQ37JStudio3fvb7TObject */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::fvb::TFactory::destroy(JStudio::fvb::TObject* param_0) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/destroy__Q37JStudio3fvb8TFactoryFPQ37JStudio3fvb7TObject.s"
-}
-#pragma pop
-
-/* 80284ADC-80284AFC 27F41C 0020+00 0/0 1/1 0/0 .text
- * __ct__Q37JStudio3fvb6TParseFPQ37JStudio3fvb8TControl */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::fvb::TParse::TParse(JStudio::fvb::TControl* param_0) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/__ct__Q37JStudio3fvb6TParseFPQ37JStudio3fvb8TControl.s"
-}
-#pragma pop
-
-/* 80284AFC-80284B5C 27F43C 0060+00 1/0 1/1 0/0 .text __dt__Q37JStudio3fvb6TParseFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::fvb::TParse::~TParse() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/__dt__Q37JStudio3fvb6TParseFv.s"
-}
-#pragma pop
-
-/* 80284B5C-80284BF0 27F49C 0094+00 1/0 0/0 0/0 .text
- * parseHeader_next__Q37JStudio3fvb6TParseFPPCvPUlUl */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::fvb::TParse::parseHeader_next(void const** param_0, u32* param_1, u32 param_2) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/parseHeader_next__Q37JStudio3fvb6TParseFPPCvPUlUl.s"
-}
-#pragma pop
-
-/* 80284BF0-80284CE4 27F530 00F4+00 1/0 0/0 0/0 .text
- * parseBlock_next__Q37JStudio3fvb6TParseFPPCvPUlUl */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void JStudio::fvb::TParse::parseBlock_next(void const** param_0, u32* param_1, u32 param_2) {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/parseBlock_next__Q37JStudio3fvb6TParseFPPCvPUlUl.s"
-}
-#pragma pop
-
-/* 80284CE4-80284D68 27F624 0084+00 1/0 0/0 0/0 .text __dt__Q37JStudio3fvb15TObject_hermiteFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::fvb::TObject_hermite::~TObject_hermite() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/__dt__Q37JStudio3fvb15TObject_hermiteFv.s"
-}
-#pragma pop
-
-/* 80284D68-80284DEC 27F6A8 0084+00 1/0 0/0 0/0 .text
- * __dt__Q37JStudio3fvb22TObject_list_parameterFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::fvb::TObject_list_parameter::~TObject_list_parameter() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/__dt__Q37JStudio3fvb22TObject_list_parameterFv.s"
-}
-#pragma pop
-
-/* 80284DEC-80284E70 27F72C 0084+00 1/0 0/0 0/0 .text __dt__Q37JStudio3fvb12TObject_listFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::fvb::TObject_list::~TObject_list() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/__dt__Q37JStudio3fvb12TObject_listFv.s"
-}
-#pragma pop
-
-/* 80284E70-80284EF4 27F7B0 0084+00 1/0 0/0 0/0 .text __dt__Q37JStudio3fvb18TObject_transitionFv
- */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::fvb::TObject_transition::~TObject_transition() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/__dt__Q37JStudio3fvb18TObject_transitionFv.s"
-}
-#pragma pop
-
-/* 80284EF4-80284F78 27F834 0084+00 1/0 0/0 0/0 .text __dt__Q37JStudio3fvb16TObject_constantFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::fvb::TObject_constant::~TObject_constant() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/__dt__Q37JStudio3fvb16TObject_constantFv.s"
-}
-#pragma pop
-
-/* 80284F78-80285018 27F8B8 00A0+00 1/0 0/0 0/0 .text __dt__Q37JStudio3fvb17TObject_compositeFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm JStudio::fvb::TObject_composite::~TObject_composite() {
- nofralloc
-#include "asm/JSystem/JStudio/JStudio/fvb/__dt__Q37JStudio3fvb17TObject_compositeFv.s"
-}
-#pragma pop
-
-/* 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
+TFactory::~TFactory() {}
+
+TObject* TFactory::create(data::TParse_TBlock const& rBlock) {
+ switch (rBlock.get_type()) {
+ case 1:
+ return new TObject_composite(rBlock);
+ case 2:
+ return new TObject_constant(rBlock);
+ case 3:
+ return new TObject_transition(rBlock);
+ case 4:
+ return new TObject_list(rBlock);
+ case 5:
+ return new TObject_list_parameter(rBlock);
+ case 6:
+ return new TObject_hermite(rBlock);
+ default:
+ JUTWarn w;
+ w << "unknown type : ";
+ return NULL;
+ }
+}
+
+void TFactory::destroy(TObject* pObject) {
+ delete pObject;
+}
+
+TParse::TParse(TControl* pControl) : pControl_(pControl) {
+ ASSERT(pControl_ != 0);
+}
+
+TParse::~TParse() {}
+
+bool TParse::parseHeader_next(void const** 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 < 2) {
+ JUTWarn w;
+ w << "obselete version : " << (long)0;
+ return false;
+ } else if (version > 0x100) {
+ JUTWarn w;
+ w << "unknown version : " << version;
+ return false;
+ }
+ return true;
+}
+
+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();
+
+ TControl* pControl = getControl();
+ ASSERT(pControl != 0);
+
+ if (flags & 0x10) {
+ if (pControl->getObject(blk.get_ID(), blk.get_IDSize()) != NULL)
+ return 1;
+ }
+ if (flags & 0x20) {
+ return 1;
+ }
+
+ TFactory* pFactory = pControl->getFactory();
+ if (pFactory == NULL) {
+ JUTWarn w;
+ w << "factory not specified";
+ return 0;
+ }
+
+ TObject* pObject = pFactory->create(blk);
+ if (pObject == NULL) {
+ JUTWarn w;
+ w << "can't create function-value";
+ if (flags & 0x40) {
+ return 1;
+ }
+ return 0;
+ }
+ pObject->prepare(blk, pControl);
+ pControl->appendObject(pObject);
+ return 1;
+}
+
+} // namespace fvb
+} // namespace JStudio
diff --git a/libs/JSystem/JStudio/JStudio/jstudio-control.cpp b/libs/JSystem/JStudio/JStudio/jstudio-control.cpp
index 211873d783..6b9b6c7afe 100644
--- a/libs/JSystem/JStudio/JStudio/jstudio-control.cpp
+++ b/libs/JSystem/JStudio/JStudio/jstudio-control.cpp
@@ -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:
//
diff --git a/libs/JSystem/JStudio/JStudio/jstudio-object.cpp b/libs/JSystem/JStudio/JStudio/jstudio-object.cpp
index b8b71f4d62..3580ce4e50 100644
--- a/libs/JSystem/JStudio/JStudio/jstudio-object.cpp
+++ b/libs/JSystem/JStudio/JStudio/jstudio-object.cpp
@@ -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
//
diff --git a/libs/JSystem/JStudio/JStudio/object-id.cpp b/libs/JSystem/JStudio/JStudio/object-id.cpp
index e060913bf3..cdd9cbb9da 100644
--- a/libs/JSystem/JStudio/JStudio/object-id.cpp
+++ b/libs/JSystem/JStudio/JStudio/object-id.cpp
@@ -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:
//
diff --git a/libs/JSystem/JStudio/JStudio/stb-data-parse.cpp b/libs/JSystem/JStudio/JStudio/stb-data-parse.cpp
index 838e1fbbd3..bef8ceabdb 100644
--- a/libs/JSystem/JStudio/JStudio/stb-data-parse.cpp
+++ b/libs/JSystem/JStudio/JStudio/stb-data-parse.cpp
@@ -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 {};
-
- /* 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;
- };
-
- 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"
+namespace data {
+
+extern "C" u32 gauDataSize_TEParagraph_data__Q37JStudio3stb4data[];
+
+void TParse_TSequence::getData(TData* pData) const {
+ ASSERT(pData != 0);
+
+ 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 \ No newline at end of file
diff --git a/libs/JSystem/JStudio/JStudio/stb-data.cpp b/libs/JSystem/JStudio/JStudio/stb-data.cpp
index d2085fb992..79a9060721 100644
--- a/libs/JSystem/JStudio/JStudio/stb-data.cpp
+++ b/libs/JSystem/JStudio/JStudio/stb-data.cpp
@@ -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 stb
-
-}; // namespace JStudio
-
-//
-// Forward References:
-//
+namespace data {
-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
diff --git a/libs/JSystem/JStudio/JStudio/stb.cpp b/libs/JSystem/JStudio/JStudio/stb.cpp
index b0fcc4c7c9..4f09284ed7 100644
--- a/libs/JSystem/JStudio/JStudio/stb.cpp
+++ b/libs/JSystem/JStudio/JStudio/stb.cpp
@@ -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 */];
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 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,
-};
-
-/* 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"
-}
-#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"
-}
-#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"
-}
-#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"
-}
-#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"
-}
-#pragma pop
+extern "C" int memcmp(const void*, const void*, u32);
-/* 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
+namespace JStudio {
+namespace stb {
-/* 80288E18-80288E1C 283758 0004+00 2/0 0/0 0/0 .text do_begin__Q37JStudio3stb7TObjectFv
- */
-void JStudio::stb::TObject::do_begin() {
+// unchecked, in debug dol
+const char* TObject::toString_status(int status) {
+ const char* result;
+
+ 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;
+}
+
+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);
+}
+
+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;
+ }
+}
+
+void TObject::reset(const void* arg1) {
+ bSequence_ = 0;
+ mStatus = STATUS_STILL;
+ pSequence_next = arg1;
+ u32Wait_ = 0;
+}
+
+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;
+ }
+ }
+ }
+}
+
+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,
-};
-
-/* 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"
-}
-#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"
-}
-#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"
-}
-#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"
-}
-#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"
-}
-#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
-
+void TObject::process_sequence_() {
+ ASSERT(getWait() == 0);
+ data::TParse_TSequence seq(getSequence());
+
+ data::TParse_TSequence::TData dat;
+
+ seq.getData(&dat);
+ u8 type = dat.type;
+ u32 u32Value = dat.param;
+ const void* pContent = dat.content;
+ const void* pNext = dat.next;
+ setSequence_next(dat.next);
+
+ switch (type) {
+ case 0:
+ JUT_EXPECT(u32Value == 0);
+ JUT_EXPECT(pContent == 0);
+ break;
+ case 1:
+ JUT_EXPECT(pContent == 0);
+ setFlag_operation_(u32Value);
+ break;
+ case 2:
+ JUT_EXPECT(pContent == 0);
+ setWait(u32Value);
+ break;
+ case 3:
+ JUT_EXPECT(pContent == 0);
+ s32 off = toInt32FromUInt24_(u32Value);
+ void* nextseq = (void*)getSequence_offset(off);
+ setSequence_next(nextseq);
+ break;
+ case 4:
+ JUT_EXPECT(pContent == 0);
+ u32 val = toInt32FromUInt24_(u32Value);
+ suspend(val);
+ break;
+ case 0x80:
+ ASSERT(pContent != 0);
+ void* p = (void*)pContent;
+ data::TParse_TParagraph para(NULL);
+ while (p < pNext) {
+ para.setRaw(p);
+
+ data::TParse_TParagraph::TData para_dat;
+ para.getData(&para_dat);
+ if (para_dat.type <= 0xff) {
+ process_paragraph_reserved_(para_dat.type, para_dat.content, para_dat.param);
+ } else {
+ on_paragraph(para_dat.type, para_dat.content, para_dat.param);
+ }
+ p = (void*)para_dat.next;
+ ASSERT(p != 0);
+ }
+ JUT_EXPECT(p == pNext);
+ break;
+ default:
+ JUTWarn w;
+ w << "unknown sequence : " << dat.type;
+ break;
+ }
+}
+
+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;
+ }
+}
+
+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);
+}
+
+// TObject_control::TObject_control() definition gets inlined here
+
+TControl::~TControl() {
+ mObject_control.setControl_(NULL);
+ JUT_EXPECT(ocObject_.empty());
+}
+
+#ifdef NONMATCHING
+void TControl::appendObject(TObject* p) {
+ p->setControl(this);
+ mObjectContainer.Push_back(p);
+}
+#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"
-}
-#pragma pop
+TParse::TParse(TControl* pControl) : pControl(pControl) {}
-/* 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"
-}
-#pragma pop
+TParse::~TParse() {}
-/* 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"
+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
-/* 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"
+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
-/* 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);
+}
+
+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
-/* 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"
-}
-#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"
diff --git a/libs/JSystem/JStudio/JStudio_JParticle/control.cpp b/libs/JSystem/JStudio/JStudio_JParticle/control.cpp
index 64d21c7fb1..625fc80b68 100644
--- a/libs/JSystem/JStudio/JStudio_JParticle/control.cpp
+++ b/libs/JSystem/JStudio/JStudio_JParticle/control.cpp
@@ -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();
};
diff --git a/rel/d/a/d_a_title/d_a_title.cpp b/rel/d/a/d_a_title/d_a_title.cpp
index 541b55c9d9..29d39c7c0a 100644
--- a/rel/d/a/d_a_title/d_a_title.cpp
+++ b/rel/d/a/d_a_title/d_a_title.cpp
@@ -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"
diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp
index cb7d394ae0..b07f1de0df 100644
--- a/src/d/a/d_a_alink.cpp
+++ b/src/d/a/d_a_alink.cpp
@@ -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();
};
diff --git a/src/d/d_demo.cpp b/src/d/d_demo.cpp
index 15794476f6..4d8d7c3ad4 100644
--- a/src/d/d_demo.cpp
+++ b/src/d/d_demo.cpp
@@ -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:
//
diff --git a/src/d/msg/d_msg_object.cpp b/src/d/msg/d_msg_object.cpp
index 3b5360e5bb..b5f7e8dc75 100644
--- a/src/d/msg/d_msg_object.cpp
+++ b/src/d/msg/d_msg_object.cpp
@@ -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:
//
diff --git a/src/d/msg/d_msg_string_base.cpp b/src/d/msg/d_msg_string_base.cpp
index c9e639a9f5..76fc19a2fd 100644
--- a/src/d/msg/d_msg_string_base.cpp
+++ b/src/d/msg/d_msg_string_base.cpp
@@ -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:
//