getDemoIDData matched, fix up various inlines and template classes (#2489)

* Fix debug build

* getDemoIDData matched, fix up various inlines and template classes

* Remove nonmatching comments
This commit is contained in:
LagoLunatic 2025-06-18 01:11:53 -04:00 committed by GitHub
parent 5a13ca438a
commit 23cba4d117
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 178 additions and 103 deletions

View File

@ -21909,7 +21909,8 @@ struct_80450FB0 = .sbss:0x80450FB0; // type:object size:0x1 scope:global align:8
lbl_80450FB1 = .sbss:0x80450FB1; // type:object size:0x1 data:byte
lbl_80450FB2 = .sbss:0x80450FB2; // type:object size:0x1 data:byte
struct_80450FB8 = .sbss:0x80450FB8; // type:object size:0x4 scope:global align:4 data:byte
struct_80450FBC = .sbss:0x80450FBC; // type:object size:0x4 scope:global align:4 data:byte
init$33110 = .sbss:0x80450FBC; // type:object size:0x1 scope:local align:1 data:byte
init$33113 = .sbss:0x80450FBD; // type:object size:0x1 scope:local align:1 data:byte
it$36766 = .sbss:0x80450FC0; // type:object size:0x4 scope:local align:4 data:4byte
struct_80450FC4 = .sbss:0x80450FC4; // type:object size:0x4 scope:local align:4 data:byte
m_eye_move_flg = .sbss:0x80450FC8; // type:object size:0x1 scope:local align:1 data:byte

View File

@ -64483,8 +64483,8 @@ lbl_8074C890 = .sbss:0x8074C890; // type:object size:0x1 data:byte hash:0xB74E39
lbl_8074C891 = .sbss:0x8074C891; // type:object size:0x1 data:byte hash:0xC3C1301D dhash:0xBD2F6E4C
lbl_8074C892 = .sbss:0x8074C892; // type:object size:0x1 data:byte hash:0xC3C1345F dhash:0xBD2F6E4C
lbl_8074C893 = .sbss:0x8074C893; // type:object size:0x1 data:byte hash:0xC3C1491D dhash:0xBD2F6E4C
lbl_8074C894 = .sbss:0x8074C894; // type:object size:0x1 data:byte hash:0x2C9C4113 dhash:0xC335850F
lbl_8074C895 = .sbss:0x8074C895; // type:object size:0x1 data:byte hash:0xABFECE16 dhash:0xC335850F
@GUARD@daAlink_c_getDemoIDData__FP13dDemo_actor_cPiPiPiPUsPiPi@dummy = .sbss:0x8074C894; // type:object size:0x1 data:byte hash:0x2C9C4113 dhash:0xC335850F
@GUARD@daAlink_c_getDemoIDData__FP13dDemo_actor_cPiPiPiPUsPiPi@it@0 = .sbss:0x8074C895; // type:object size:0x1 data:byte hash:0xABFECE16 dhash:0xC335850F
@LOCAL@daAlink_c_getDemoIDData__FP13dDemo_actor_cPiPiPiPUsPiPi@it@0 = .sbss:0x8074C898; // type:object size:0x4 scope:local hash:0x7C41017E dhash:0x7A3314A7
lbl_8074C89C = .sbss:0x8074C89C; // type:object size:0x1 data:byte hash:0x91B5CF4E dhash:0x3C2D8E6B
lbl_8074C89D = .sbss:0x8074C89D; // type:object size:0x1 data:byte hash:0x1F6B40C0 dhash:0x3C2D8E6B

View File

@ -2,6 +2,7 @@
#define BINARY_H
#include "dolphin/types.h"
#include "JSystem/JGadget/search.h"
namespace JGadget {
namespace binary {
@ -26,11 +27,11 @@ struct TParseData {
/* 0x0 */ const void* raw;
};
template <int T>
template <int S>
struct TParseData_aligned : public TParseData {
TParseData_aligned(const void* pContent) : TParseData(pContent) {}
void setRaw(const void* p) {
/* if ((u32)p % T != 0) {
/* if ((u32)p % S != 0) {
JUTWarn w;
w << "misaligned : " << (u32)p;
} */
@ -63,41 +64,56 @@ struct TParse_header_block {
template <typename T>
struct TParseValue_raw_ {
typedef T ParseType;
static T parse(const void* data) { return *(T*)data; }
static T parse(const void* data) { return (T)*(T*)data; }
};
template <typename T>
struct TParseValue_raw : public TParseValue_raw_<T> {
typedef TParseValue_raw_<T> InnerParseValueClass;
};
template <typename T>
struct TParseValue_endian_big_ : public TParseValue_raw_<T> {
static T parse(const void* data) { return TParseValue_raw_::parse(data); }
static T parse(const void* data) { return TParseValue_raw_<T>::parse(data); }
};
template <typename T, template <class> class Parser>
struct TParseValue : public Parser<T> {
static T parse(const void* data) { return Parser<T>::parse(data); }
template <class Parser>
struct TParseValue : public Parser {
static typename Parser::ParseType parse(const void* data) { return Parser::parse(data); }
static T parse(const void* data, s32 advanceNum) {
return Parser<T>::parse(advance(data, advanceNum));
static typename Parser::ParseType parse(const void* data, s32 advanceNum) {
return Parser::parse(advance(data, advanceNum));
}
static const void* advance(const void* data, s32 advanceNum) {
return (char*)data + (advanceNum * sizeof(T));
return (char*)data + (advanceNum * sizeof(Parser::ParseType));
}
};
template<class Parser, int size>
struct TValueIterator {
struct TValueIterator
: public JGadget::TIterator<
std::random_access_iterator_tag,
typename Parser::ParseType,
ptrdiff_t,
typename Parser::ParseType*,
typename Parser::ParseType&
>
{
typedef typename Parser::ParseType ValueType;
TValueIterator(const void* begin) {
mBegin = begin;
mBegin = reinterpret_cast<const char*>(begin);
}
const void* get() const { return mBegin; }
typename Parser::ParseType operator*() const {
return Parser::parse(get());
return TParseValue<typename Parser::InnerParseValueClass>::parse(get());
}
TValueIterator& operator++() {
const_cast<u32*>(mBegin)++;
mBegin += size;
return *this;
}
@ -107,32 +123,68 @@ struct TValueIterator {
return old;
}
TValueIterator& operator+=(s32 v) {
const_cast<u32*>(mBegin) += v;
TValueIterator& operator+=(s32 n) {
mBegin += size * n;
return *this;
}
const void* mBegin;
TValueIterator& operator--() {
mBegin -= size;
return *this;
}
char const* mBegin;
};
template<typename T>
struct TValueIterator_raw : public TValueIterator<TParseValue_raw_<u8>, 1> {
TValueIterator_raw(const void* begin) : TValueIterator<TParseValue_raw_<u8>, 1>(begin) {}
struct TValueIterator_raw : public TValueIterator<TParseValue_raw<T>, sizeof(T)> {
TValueIterator_raw(const void* begin) : TValueIterator<TParseValue_raw<T>, sizeof(T)>(begin) {}
friend bool operator==(TValueIterator<TParseValue_raw<T>, sizeof(T)> a, TValueIterator<TParseValue_raw<T>, sizeof(T)> b) {
return a.mBegin == b.mBegin;
}
friend bool operator!=(TValueIterator<TParseValue_raw<T>, sizeof(T)> a, TValueIterator<TParseValue_raw<T>, sizeof(T)> b) {
return !operator==(a, b);
}
friend TValueIterator<TParseValue_raw<T>, sizeof(T)> operator+(TValueIterator<TParseValue_raw<T>, sizeof(T)> a, s32 b) {
TValueIterator<TParseValue_raw<T>, sizeof(T)> it = a;
it += b;
return it;
}
};
template <typename T>
struct TParseValue_misaligned : TParseValue_raw_<T> {
static T parse(const void* data) { return TParseValue_raw_::parse(data); }
struct TParseValue_misaligned_ : public TParseValue_raw_<T> {
typedef T ParseType;
static T parse(const void* data) { return TParseValue_raw_<T>::parse(data); }
};
template <typename T>
struct TParseValue_misaligned : public TParseValue_raw_<T> {
typedef TParseValue_misaligned_<T> InnerParseValueClass;
};
template<typename T>
struct TValueIterator_misaligned : public TValueIterator<TParseValue_misaligned<T>, sizeof(T)> {
TValueIterator_misaligned(const void* begin) : TValueIterator<TParseValue_misaligned<T>, sizeof(T)>(begin) {}
friend bool operator==(TValueIterator<TParseValue_misaligned<T>, sizeof(T)> a, TValueIterator<TParseValue_misaligned<T>, sizeof(T)> b) {
return a.mBegin == b.mBegin;
}
friend bool operator!=(TValueIterator<TParseValue_misaligned<T>, sizeof(T)> a, TValueIterator<TParseValue_misaligned<T>, sizeof(T)> b) {
return !operator==(a, b);
}
friend TValueIterator<TParseValue_misaligned<T>, sizeof(T)> operator+(TValueIterator<TParseValue_misaligned<T>, sizeof(T)> a, s32 b) {
TValueIterator<TParseValue_misaligned<T>, sizeof(T)> it(a);
it += b;
return it;
}
};
inline bool operator==(TValueIterator<TParseValue_misaligned<u32>, 4> a, TValueIterator<TParseValue_misaligned<u32>, 4> b) { return a.mBegin == b.mBegin; }
} // namespace binary
} // namespace JGadget

View File

@ -28,7 +28,7 @@ struct TObject_ID : public TIDData {
struct TPRObject_ID_equal : public TIDData {
TPRObject_ID_equal(const void* id, u32 id_size) : TIDData(id, id_size) {}
TPRObject_ID_equal(const TPRObject_ID_equal& other) : TIDData(other.mID, other.mID_size) {}
~TPRObject_ID_equal() {}
bool operator()(TObject_ID const& id) const { return TIDData::isEqual(id.getIDData(), *this); }
};

View File

@ -65,16 +65,16 @@ public:
/* 80289A08 */ void getData(TData*) const;
};
struct TParse_TParagraph_data : public TParseData_aligned<4> {
struct TParse_TParagraph_data : public TParseData {
struct TData {
/* 0x00 */ u8 status;
/* 0x04 */ u32 dataSize;
/* 0x08 */ u32 _8;
/* 0x0C */ const void* fileCount;
/* 0x10 */ const void* _10;
/* 0x04 */ u32 entrySize;
/* 0x08 */ u32 entryCount;
/* 0x0C */ const void* content;
/* 0x10 */ const void* next;
};
TParse_TParagraph_data(const void* content) : TParseData_aligned<4>(content) {}
TParse_TParagraph_data(const void* content) : TParseData(content) {}
/* 80289A80 */ void getData(TData* pData) const;
};
@ -90,7 +90,6 @@ public:
u16 get_flag() const { return get()->flag; }
u16 get_IDSize() const { return get()->id_size; }
u32 get_type() const { return get()->type; }
const void* get_ID() const { return get()->id; }
};

View File

@ -7,7 +7,7 @@
#include "dolphin/os.h"
namespace JStudio {
struct TObject;
class TObject;
namespace stb {
class TControl;
@ -156,11 +156,10 @@ private:
/* 0x54 */ s32 _54;
};
template <int T>
template <int S>
struct TParseData : public data::TParse_TParagraph_data::TData {
TParseData(const void* pContent) {
data::TParse_TParagraph_data data(pContent);
set(data);
set(data::TParse_TParagraph_data(pContent));
}
TParseData() {
@ -171,45 +170,57 @@ struct TParseData : public data::TParse_TParagraph_data::TData {
data.getData(this);
}
void set(const void* pContent) {
set(data::TParse_TParagraph_data(pContent));
}
bool isEnd() const {
return status == 0;
}
bool empty() const {
return fileCount == NULL;
return content == NULL;
}
bool isValid() const {
return !empty() && status == 50;
return !empty() && status == S;
}
const void* getContent() const { return fileCount; }
const void* getContent() const { return content; }
u32 size() const { return dataSize; }
u32 size() const { return entryCount; }
};
template <int T, class Iterator=JGadget::binary::TValueIterator_raw<u8> >
struct TParseData_fixed : public TParseData<T> {
TParseData_fixed(const void* pContent) : TParseData<T>(pContent) {}
TParseData_fixed() : TParseData<T>() {}
template <int S, class Iterator=JGadget::binary::TValueIterator_raw<u8> >
struct TParseData_fixed : public TParseData<S> {
TParseData_fixed(const void* pContent) : TParseData<S>(pContent) {}
TParseData_fixed() : TParseData<S>() {}
const void* getNext() const {
return _10;
return this->next;
}
bool isValid() const {
return TParseData::isValid() && getNext() != NULL;
return TParseData<S>::isValid() && getNext() != NULL;
}
Iterator begin() const {
return Iterator(fileCount);
return Iterator(this->content);
}
Iterator end() const {
Iterator i(fileCount);
i += size();
Iterator i(this->content);
i += this->size();
return i;
}
typename Iterator::ValueType front() const {
return *begin();
}
typename Iterator::ValueType back() const {
return *--end();
}
};
struct TParseData_string : public TParseData<0x60> {

View File

@ -25,7 +25,7 @@ public:
/* 802E56DC */ virtual void draw();
s32 getStatus() const { return mStatus; }
void setColor(JUtility::TColor& color) { mColor.set(color); }
void setColor(JUtility::TColor color) { mColor.set(color); }
/* 0x04 */ s32 mStatus;
/* 0x08 */ u16 field_0x8;

View File

@ -28,7 +28,10 @@ struct TColor : public GXColor {
}
void set(u32 u32Color) { *(u32*)&r = u32Color; }
void set(GXColor gxColor) { *(GXColor*)&r = gxColor; }
void set(GXColor gxColor) {
GXColor* temp = this;
*temp = gxColor;
}
};
} // namespace JUtility

View File

@ -86,6 +86,10 @@ public:
typedef int (daObj_GrA_c::*MotionFunc)(int);
typedef int (daObj_GrA_c::*Process)(void*);
enum {
NUMLOOKMODES_e = 4,
};
class daObj_GrA_prtclMngr_c {
public:
/* 80C04E14 */ ~daObj_GrA_prtclMngr_c() {}

View File

@ -95,7 +95,7 @@ public:
/* 0x212 */ u16 field_0x212;
/* 0x214 */ u16 field_0x214;
/* 0x218 */ u32 field_0x218;
/* 0x21C */ void* buffer;
/* 0x21C */ void* dummyGameAlloc;
/* 0x220 */ mDoDvdThd_mountXArchive_c* mpField0Command;
/* 0x224 */ mDoDvdThd_mountXArchive_c* mpAlAnmCommand;
/* 0x228 */ u8 field_0x228[4];

View File

@ -4,8 +4,6 @@
#include "JSystem/JFramework/JFWDisplay.h"
#include "dolphin/mtx.h"
class JUTFader;
int mDoGph_Create();
void mDoGph_drawFilterQuad(s8 param_0, s8 param_1);
@ -61,7 +59,7 @@ public:
static int startFadeOut(int param_0) { return JFWDisplay::getManager()->startFadeOut(param_0); }
static int startFadeIn(int param_0) { return JFWDisplay::getManager()->startFadeIn(param_0); }
static void setFadeColor(JUtility::TColor color) { mFader->mColor.set(color); }
static void setFadeColor(JUtility::TColor& color) { mFader->setColor(color); }
static void setClearColor(JUtility::TColor color) { JFWDisplay::getManager()->setClearColor(color); }
static void setBackColor(GXColor& color) { mBackColor = color; }
static void endFrame() { JFWDisplay::getManager()->endFrame(); }

View File

@ -216,11 +216,11 @@ void JMessage::TProcessor::do_tag_(u32 uTag, void const* pData, u32 uSize) {
switch (uCode & 0xFFFF) {
case 4:
JUT_ASSERT(331, uSize==4);
stack_pushCurrent(on_word(JGadget::binary::TParseValue<u32, JGadget::binary::TParseValue_endian_big_>::parse(pData)));
stack_pushCurrent(on_word(JGadget::binary::TParseValue<JGadget::binary::TParseValue_endian_big_<u32> >::parse(pData)));
break;
case 5:
JUT_ASSERT(341, uSize==4);
stack_pushCurrent(on_message(JGadget::binary::TParseValue<u32, JGadget::binary::TParseValue_endian_big_>::parse(pData)));
stack_pushCurrent(on_message(JGadget::binary::TParseValue<JGadget::binary::TParseValue_endian_big_<u32> >::parse(pData)));
break;
default:
JGADGET_WARNMSG1(351, "unknown system-tag-code : ", uCode & 0xFFFF);
@ -315,7 +315,7 @@ const char* JMessage::TProcessor::process_onSelect_limited_(JMessage::TProcessor
JUT_ASSERT(457, rData.uRest>0);
u16* puOffset = (u16*)rData.pOffset;
u16 uData = JGadget::binary::TParseValue<u16, JGadget::binary::TParseValue_endian_big_>::parse(puOffset);
u16 uData = JGadget::binary::TParseValue<JGadget::binary::TParseValue_endian_big_<u16> >::parse(puOffset);
rData.pOffset = (void*)(puOffset + 1);
return &rData.pcBase[uData];
@ -331,7 +331,7 @@ const char* JMessage::TProcessor::process_onSelect_(JMessage::TProcessor* pThis)
JUT_ASSERT(474, rData.uRest>0);
u32* puOffset = (u32*)rData.pOffset;
u32 uData = JGadget::binary::TParseValue<u32, JGadget::binary::TParseValue_endian_big_>::parse(puOffset);
u32 uData = JGadget::binary::TParseValue<JGadget::binary::TParseValue_endian_big_<u32> >::parse(puOffset);
rData.pOffset = (void*)(puOffset + 1);
return &rData.pcBase[uData];
@ -574,7 +574,7 @@ void JMessage::TSequenceProcessor::do_tag_(u32 uTag, void const* pData, u32 uSiz
break;
case 6: {
JUT_ASSERT(807, uSize==4);
u32 u32Target = JGadget::binary::TParseValue<u32, JGadget::binary::TParseValue_endian_big_>::parse(pData);
u32 u32Target = JGadget::binary::TParseValue<JGadget::binary::TParseValue_endian_big_<u32> >::parse(pData);
on_jump_register(process_onJump_, u32Target);
break;
}
@ -610,7 +610,7 @@ void JMessage::TSequenceProcessor::do_tag_(u32 uTag, void const* pData, u32 uSiz
}
case 0xF8: {
u16* pu16Data = (u16*)pData;
u32 uNumber = JGadget::binary::TParseValue<u16, JGadget::binary::TParseValue_endian_big_>::parse(pu16Data);
u32 uNumber = JGadget::binary::TParseValue<JGadget::binary::TParseValue_endian_big_<u16> >::parse(pu16Data);
JUT_ASSERT(859, uSize==2+2*uNumber);
on_branch_register(process_onBranch_limited_, pu16Data + 1, uNumber);
on_branch_query(uCode & 0xFFFF);
@ -618,7 +618,7 @@ void JMessage::TSequenceProcessor::do_tag_(u32 uTag, void const* pData, u32 uSiz
}
case 0xF7: {
u16* pu16Data = (u16*)pData;
u32 uNumber = JGadget::binary::TParseValue<u16, JGadget::binary::TParseValue_endian_big_>::parse(pu16Data);
u32 uNumber = JGadget::binary::TParseValue<JGadget::binary::TParseValue_endian_big_<u16> >::parse(pu16Data);
JUT_ASSERT(871, uSize==2+4*uNumber);
on_branch_register(process_onBranch_, pu16Data + 1, uNumber);
on_branch_query(uCode & 0xFFFF);
@ -689,7 +689,7 @@ JMessage::TSequenceProcessor::process_onBranch_limited_(JMessage::TSequenceProce
JUT_ASSERT(942, rData.pTarget!=0);
JUT_ASSERT(943, uTargetIndex<rData.uTarget);
u16 u16Index = JGadget::binary::TParseValue<u16, JGadget::binary::TParseValue_endian_big_>::parse(rData.pTarget, uTargetIndex);
u16 u16Index = JGadget::binary::TParseValue<JGadget::binary::TParseValue_endian_big_<u16> >::parse(rData.pTarget, uTargetIndex);
return process_setMessageIndex_(pProcessor, u16Index);
}
@ -702,7 +702,7 @@ JMessage::TSequenceProcessor::process_onBranch_(JMessage::TSequenceProcessor con
JUT_ASSERT(957, rData.pTarget!=0);
JUT_ASSERT(958, uTargetIndex<rData.uTarget);
u32 uCode = JGadget::binary::TParseValue<u32, JGadget::binary::TParseValue_endian_big_>::parse(rData.pTarget, uTargetIndex);
u32 uCode = JGadget::binary::TParseValue<JGadget::binary::TParseValue_endian_big_<u32> >::parse(rData.pTarget, uTargetIndex);
return process_setMessageCode_(pProcessor, uCode);
}

View File

@ -4,6 +4,7 @@
//
#include "JSystem/JStudio/JStudio/stb-data-parse.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "dolphin/os.h"
namespace JStudio {
@ -47,37 +48,37 @@ void TParse_TParagraph::getData(TData* pData) const {
}
}
void TParse_TParagraph_data::getData(data::TParse_TParagraph_data::TData* pData) const {
u8* set2;
void TParse_TParagraph_data::getData(TParse_TParagraph_data::TData* pData) const {
JUT_ASSERT(104, pData!=0);
pData->entrySize = 0;
pData->entryCount = 0;
pData->content = NULL;
pData->next = NULL;
u8* temp = (u8*)getRaw();
u8* filedata = temp;
if (filedata == NULL)
return;
u8 r29 = *filedata;
pData->status = r29 & ~0x8;
if (!r29)
return;
filedata++;
u32 r28 = 1;
if (r29 & 8) {
r28 = *filedata;
filedata++;
}
pData->entryCount = r28;
pData->content = filedata;
int dSize = pData->dataSize = 0;
pData->_8 = 0;
pData->fileCount = NULL;
pData->_10 = NULL;
u8* filedata = (u8*)getRaw();
if (filedata == NULL)
return;
u8 set = *filedata;
pData->status = set & ~0x8;
if (!set)
return;
int is8;
int set3 = 1;
is8 = set & 8;
// Probably fake match
if (set2 = (filedata + 1), is8) {
set3 = *set2++;
}
pData->_8 = set3;
pData->fileCount = set2;
if (!(set & 7))
return;
dSize = (gauDataSize_TEParagraph_data)[set &= 7];
pData->dataSize = dSize;
pData->_10 = (u8*)set2 + (dSize * set3);
u8 r27 = r29 & 7;
if (r27 == 0)
return;
u32 dataSize = (gauDataSize_TEParagraph_data)[r27];
pData->entrySize = dataSize;
pData->next = filedata + (dataSize * r28);
}
} // namespace data
} // namespace stb
} // namespace JStudio
} // namespace JStudio

View File

@ -1441,7 +1441,6 @@ f32 daAlink_c::setStickAnmData(J3DAnmBase* i_anm, int param_1, int param_2, u16
/* 80119464-801195C0 113DA4 015C+00 1/1 0/0 0/0 .text
* daAlink_c_getDemoIDData__FP13dDemo_actor_cPiPiPiPUsPiPi */
// NONMATCHING - some stack issues
static int daAlink_c_getDemoIDData(dDemo_actor_c* param_0, int* param_1, int* param_2,
int* param_3, u16* param_4, int* param_5, int* param_6) {
JStudio::stb::TParseData_fixed<51, TValueIterator_misaligned<u32> > sp30(param_0->getPrm()->getData());

View File

@ -1591,7 +1591,7 @@ static cPhs__Step daE_GB_Create(fopAc_ac_c* a_this) {
u8 swBit = fopAcM_GetParam(a_this) >> 16;
if (swBit != 0xFF) {
if (dComIfGs_isSwitch(swBit, fopAcM_GetRoomNo(a_this))) {
OS_REPORT("E_gb やられ後なので再セットしません\n")
OS_REPORT("E_gb やられ後なので再セットしません\n");
return cPhs_ERROR_e;
}
}

View File

@ -8,9 +8,11 @@
#include "d/actor/d_a_set_bgobj.h"
#include "d/d_com_inf_game.h"
#include "dol2asm.h"
#include "d/d_a_obj.h"
#ifdef DEBUG
class daObjFlag3_Hio_c : public JORReflexible {
public:
daObjFlag3_Hio_c() {
mCount = 0;
default_set();
@ -23,7 +25,7 @@ class daObjFlag3_Hio_c : public JORReflexible {
ctx->genSlider("重力", &mAttr.mGravity, -10.0f, 0.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("バネ係数", &mAttr.mSpringCoeeficient, 0.0f, 10.0f, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("減衰率", &mAttr.mAttenuationRate, 0.0f, 1.0f, 0, NULL, 0xffff, 0xffff,
ctx->genSlider("減衰率", &mAttr.mDecayRate, 0.0f, 1.0f, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("風係数", &mAttr.mWindCoefficient, 0.0f, 100.0f, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
@ -45,6 +47,8 @@ class daObjFlag3_Hio_c : public JORReflexible {
/* 0x4 */ int mCount;
/* 0x8 */ daObjFlag3_Attr_c mAttr;
};
daObjFlag3_Hio_c M_hio;
#endif
/* 80BF0458-80BF046C 000000 0014+00 3/3 0/0 0/0 .rodata M_attr__12daObjFlag3_c */

View File

@ -241,8 +241,11 @@ void daTitle_c::nextScene_init() {
void daTitle_c::nextScene_proc() {
if (!fopOvlpM_IsPeek() && !mDoRst::isReset()) {
scene_class* playScene = fopScnM_SearchByID(dStage_roomControl_c::getProcID());
JUT_ASSERT(706, playScene != 0);
fopScnM_ChangeReq(playScene, 13, 0, 5);
#if VERSION != VERSION_SHIELD_DEBUG
mDoGph_gInf_c::setFadeColor(*(JUtility::TColor*)&g_blackColor);
#endif
}
}

View File

@ -225,7 +225,6 @@ const u8* dDemo_c::m_branchData;
/* 80038338-80038490 032C78 0158+00 0/0 1/1 5/5 .text getDemoIDData__13dDemo_actor_cFPiPiPiPUsPUc
*/
// NONMATCHING - some stack issues
int dDemo_actor_c::getDemoIDData(int* param_0, int* param_1, int* param_2, u16* param_3,
u8* param_4) {
JStudio::stb::TParseData_fixed<51, TValueIterator_misaligned<u32> > data(getPrm()->getData());

View File

@ -432,7 +432,7 @@ dScnLogo_c::~dScnLogo_c() {
field_0x1d4->destroy();
field_0x1d0->destroy();
JKRFree(buffer);
JKRFree(dummyGameAlloc);
dComIfGp_particle_createCommon(mParticleCommand->getMemAddress());
dComIfGp_setFieldMapArchive2(mpField0Command->getArchive());
@ -508,8 +508,9 @@ static int phase_0(dScnLogo_c* i_this) {
mDoGph_gInf_c::setFadeColor(*(JUtility::TColor*)&g_blackColor);
dComIfGp_particle_create();
i_this->buffer = mDoExt_getGameHeap()->alloc(0x340000, -0x10);
i_this->field_0x1d0 = JKRExpHeap::create(i_this->buffer, 0x340000, NULL, false);
i_this->dummyGameAlloc = mDoExt_getGameHeap()->alloc(0x340000, -0x10);
JUT_ASSERT(1523, i_this->dummyGameAlloc != 0);
i_this->field_0x1d0 = JKRExpHeap::create(i_this->dummyGameAlloc, 0x340000, NULL, false);
i_this->field_0x1d4 = JKRExpHeap::create(0x130000, i_this->field_0x1d0, false);
return cPhs_NEXT_e;