mirror of https://github.com/zeldaret/tp.git
Work on d_a_title (#2215)
This commit is contained in:
parent
2aa441e40b
commit
38445f4d51
2
.clangd
2
.clangd
|
@ -1,2 +1,2 @@
|
|||
CompileFlags:
|
||||
Add: [-Wno-c++11-compat-deprecated-writable-strings]
|
||||
Add: [-Wno-c++11-compat-deprecated-writable-strings, -Wno-extern-initializer]
|
||||
|
|
|
@ -62,6 +62,7 @@ struct TParse_header_block {
|
|||
|
||||
template <typename T>
|
||||
struct TParseValue_raw_ {
|
||||
typedef T ParseType;
|
||||
static T parse(const void* data) { return *(T*)data; }
|
||||
};
|
||||
|
||||
|
@ -83,6 +84,24 @@ struct TParseValue : public Parser<T> {
|
|||
}
|
||||
};
|
||||
|
||||
template<class Parser, int size>
|
||||
struct TValueIterator {
|
||||
TValueIterator(const void* begin) {
|
||||
mBegin = begin;
|
||||
}
|
||||
|
||||
typename Parser::ParseType operator*() {
|
||||
return *(typename Parser::ParseType*)mBegin;
|
||||
}
|
||||
|
||||
const void* mBegin;
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
struct TValueIterator_raw : public TValueIterator<TParseValue_raw_<u8>, 1> {
|
||||
TValueIterator_raw(const void* begin) : TValueIterator<TParseValue_raw_<u8>, 1>(begin) {}
|
||||
};
|
||||
|
||||
} // namespace binary
|
||||
} // namespace JGadget
|
||||
|
||||
|
|
|
@ -157,43 +157,44 @@ private:
|
|||
};
|
||||
|
||||
template <int T>
|
||||
struct TParseData {
|
||||
struct TParseData : public data::TParse_TParagraph_data::TData {
|
||||
TParseData(const void* pContent) {
|
||||
data::TParse_TParagraph_data data(pContent);
|
||||
set(data);
|
||||
}
|
||||
|
||||
void set(const data::TParse_TParagraph_data& data) {
|
||||
//data::TParse_TParagraph_data::TData* p = (data::TParse_TParagraph_data::TData*)this;
|
||||
data.getData(m_data);
|
||||
data.getData(this);
|
||||
}
|
||||
|
||||
bool isEnd() const {
|
||||
return m_data->_0 == 0;
|
||||
return _0 == 0;
|
||||
}
|
||||
|
||||
bool empty() const {
|
||||
return m_data->_c == NULL;
|
||||
return _c == NULL;
|
||||
}
|
||||
|
||||
bool isValid() const {
|
||||
return !empty() && m_data->_0 == 50;
|
||||
return !empty() && _0 == 50;
|
||||
}
|
||||
|
||||
data::TParse_TParagraph_data::TData* m_data;
|
||||
};
|
||||
|
||||
template <int T>
|
||||
template <int T, class Iterator=JGadget::binary::TValueIterator_raw<u8> >
|
||||
struct TParseData_fixed : public TParseData<T> {
|
||||
TParseData_fixed(const void* pContent) : TParseData(pContent) {}
|
||||
TParseData_fixed(const void* pContent) : TParseData<T>(pContent) {}
|
||||
|
||||
const void* getNext() const {
|
||||
return m_data->_c;
|
||||
return fileCount;
|
||||
}
|
||||
|
||||
bool isValid() const {
|
||||
return TParseData::isValid() && getNext() != NULL;
|
||||
}
|
||||
|
||||
Iterator begin() {
|
||||
return Iterator(fileCount);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace stb
|
||||
|
|
|
@ -77,7 +77,7 @@ class daTit_HIO_c {
|
|||
public:
|
||||
/* 80D66B0C */ daTit_HIO_c();
|
||||
|
||||
/* 80D67A08 */ virtual ~daTit_HIO_c();
|
||||
/* 80D67A08 */ virtual ~daTit_HIO_c() {}
|
||||
|
||||
/* 0x04 */ s8 field_0x4;
|
||||
/* 0x08 */ f32 mPSScaleX;
|
||||
|
|
|
@ -42,6 +42,7 @@ public:
|
|||
class dDemo_prm_c {
|
||||
public:
|
||||
dDemo_prm_c() { mData = 0; }
|
||||
u32 getData() { return mData; }
|
||||
|
||||
/* 0x0 */ u32 field_0x0;
|
||||
/* 0x4 */ u32 mData;
|
||||
|
@ -85,6 +86,7 @@ public:
|
|||
void setOldAnmId(u32 id) { mOldAnmId = id; }
|
||||
void setAnmFrameMax(f32 max) { mAnmFrameMax = max; }
|
||||
f32 getAnmFrame() { return mAnmFrame; }
|
||||
dDemo_prm_c* getPrm() { return &mPrm; }
|
||||
|
||||
private:
|
||||
/* 0x04 */ u16 mFlags;
|
||||
|
|
|
@ -3,7 +3,12 @@
|
|||
// Translation Unit: d_a_title
|
||||
//
|
||||
|
||||
//
|
||||
// Issues with ~dDlst_daTitle_c appearing after create rather than end of TU
|
||||
//
|
||||
|
||||
#include "d/actor/d_a_title.h"
|
||||
#include "d/d_demo.h"
|
||||
#include "d/d_pane_class_alpha.h"
|
||||
#include "d/d_menu_collect.h"
|
||||
#include "m_Do/m_Do_Reset.h"
|
||||
|
@ -17,145 +22,28 @@
|
|||
#include "JSystem/JKernel/JKRMemArchive.h"
|
||||
#include "JSystem/J2DGraph/J2DTextBox.h"
|
||||
#include "m_Do/m_Do_graphic.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct dDemo_object_c {
|
||||
/* 80039088 */ void getActor(u8);
|
||||
};
|
||||
|
||||
struct dDemo_c {
|
||||
static u8 m_object[4];
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void __ct__11daTit_HIO_cFv();
|
||||
extern "C" void CreateHeap__9daTitle_cFv();
|
||||
extern "C" void create__9daTitle_cFv();
|
||||
extern "C" void createHeapCallBack__9daTitle_cFP10fopAc_ac_c();
|
||||
extern "C" void Execute__9daTitle_cFv();
|
||||
extern "C" void KeyWaitAnm__9daTitle_cFv();
|
||||
extern "C" void loadWait_init__9daTitle_cFv();
|
||||
extern "C" void loadWait_proc__9daTitle_cFv();
|
||||
extern "C" void logoDispWaitInit__9daTitle_cFv();
|
||||
extern "C" void logoDispWait__9daTitle_cFv();
|
||||
extern "C" void logoDispAnmInit__9daTitle_cFv();
|
||||
extern "C" void logoDispAnm__9daTitle_cFv();
|
||||
extern "C" void keyWaitInit__9daTitle_cFv();
|
||||
extern "C" void keyWait__9daTitle_cFv();
|
||||
extern "C" void nextScene_init__9daTitle_cFv();
|
||||
extern "C" void nextScene_proc__9daTitle_cFv();
|
||||
extern "C" void fastLogoDispInit__9daTitle_cFv();
|
||||
extern "C" void fastLogoDisp__9daTitle_cFv();
|
||||
extern "C" void getDemoPrm__9daTitle_cFv();
|
||||
extern "C" void Draw__9daTitle_cFv();
|
||||
extern "C" void Delete__9daTitle_cFv();
|
||||
extern "C" static void daTitle_Draw__FP9daTitle_c();
|
||||
extern "C" static void daTitle_Execute__FP9daTitle_c();
|
||||
extern "C" static void daTitle_Delete__FP9daTitle_c();
|
||||
extern "C" static void daTitle_Create__FP10fopAc_ac_c();
|
||||
extern "C" void draw__15dDlst_daTitle_cFv();
|
||||
extern "C" void draw__12dDlst_base_cFv();
|
||||
extern "C" void __dt__11daTit_HIO_cFv();
|
||||
extern "C" void __sinit_d_a_title_cpp();
|
||||
extern "C" void __dt__15dDlst_daTitle_cFv();
|
||||
extern "C" void __dt__12J3DFrameCtrlFv();
|
||||
extern "C" extern char const* const d_a_title__stringBase0;
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void play__14mDoExt_baseAnmFv();
|
||||
extern "C" void init__13mDoExt_bpkAnmFP16J3DMaterialTableP11J3DAnmColoriifss();
|
||||
extern "C" void entry__13mDoExt_bpkAnmFP16J3DMaterialTablef();
|
||||
extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss();
|
||||
extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef();
|
||||
extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss();
|
||||
extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef();
|
||||
extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb();
|
||||
extern "C" void entry__13mDoExt_bckAnmFP12J3DModelDataf();
|
||||
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
|
||||
extern "C" void mDoExt_getGameHeap__Fv();
|
||||
extern "C" void mDoExt_setCurrentHeap__FP7JKRHeap();
|
||||
extern "C" void mDoExt_getMesgFont__Fv();
|
||||
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
|
||||
extern "C" void create__24mDoDvdThd_mountArchive_cFPCcUcP7JKRHeap();
|
||||
extern "C" void __ct__10fopAc_ac_cFv();
|
||||
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
|
||||
extern "C" void fopOvlpM_IsPeek__Fv();
|
||||
extern "C" void fopScnM_SearchByID__FUi();
|
||||
extern "C" void fopScnM_ChangeReq__FP11scene_classssUs();
|
||||
extern "C" void fopMsgM_messageGet__FPcUl();
|
||||
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
|
||||
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
|
||||
extern "C" void getActor__14dDemo_object_cFUc();
|
||||
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
|
||||
extern "C" void set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c();
|
||||
extern "C" void __ct__13CPaneMgrAlphaFP9J2DScreenUxUcP10JKRExpHeap();
|
||||
extern "C" void alphaAnime__13CPaneMgrAlphaFsUcUcUc();
|
||||
extern "C" void alphaAnimeLoop__13CPaneMgrAlphaFsUcUcUc();
|
||||
extern "C" void
|
||||
getData__Q47JStudio3stb4data22TParse_TParagraph_dataCFPQ57JStudio3stb4data22TParse_TParagraph_data5TData();
|
||||
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
|
||||
extern "C" void becomeCurrentHeap__7JKRHeapFv();
|
||||
extern "C" void destroy__7JKRHeapFv();
|
||||
extern "C" void* __nw__FUl();
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void create__10JKRExpHeapFUlP7JKRHeapb();
|
||||
extern "C" void __ct__9J2DScreenFv();
|
||||
extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive();
|
||||
extern "C" void draw__9J2DScreenFffPC14J2DGrafContext();
|
||||
extern "C" void getStringPtr__10J2DTextBoxCFv();
|
||||
extern "C" void setString__10J2DTextBoxFsPCce();
|
||||
extern "C" void init__12J3DFrameCtrlFs();
|
||||
extern "C" void __ptmf_scall();
|
||||
extern "C" void _savegpr_26();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_26();
|
||||
extern "C" void _restgpr_29();
|
||||
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
|
||||
extern "C" f32 mViewOffsetY__17dMenu_Collect3D_c[1 + 1 /* padding */];
|
||||
extern "C" u8 mFader__13mDoGph_gInf_c[4];
|
||||
extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
|
||||
extern "C" u8 mProcID__20dStage_roomControl_c[4];
|
||||
extern "C" u8 m_object__7dDemo_c[4];
|
||||
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
|
||||
extern "C" void __register_global_object();
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* 80D67D8C-80D67DA8 000014 001C+00 4/4 0/0 0/0 .bss g_daTitHIO */
|
||||
static daTit_HIO_c g_daTitHIO;
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80D67BD4-80D67BE0 000000 000C+00 2/2 0/0 0/0 .rodata @3772 */
|
||||
SECTION_RODATA static u8 const lit_3772[12] = {
|
||||
static u8 const lit_3772[12] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80D67BD4, &lit_3772);
|
||||
|
||||
/* 80D67BE0-80D67BE8 00000C 0006+02 3/3 0/0 0/0 .rodata l_arcName */
|
||||
SECTION_RODATA static char const l_arcName[6] = "Title";
|
||||
COMPILER_STRIP_GATE(0x80D67BE0, &l_arcName);
|
||||
static char const l_arcName[6] = "Title";
|
||||
|
||||
/* 80D67C40-80D67C4C 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
|
||||
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
|
||||
static u8 cNullVec__6Z2Calc[12] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
/* 80D67C4C-80D67C60 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
|
||||
static u32 lit_1787[1 + 4 /* padding */] = {
|
||||
0x02000201,
|
||||
/* padding */
|
||||
0x40080000,
|
||||
|
@ -165,33 +53,11 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
|
|||
};
|
||||
#pragma pop
|
||||
|
||||
SECTION_DATA static procFunc daTitleProc[6] = {
|
||||
static procFunc daTitleProc[6] = {
|
||||
&daTitle_c::loadWait_proc, &daTitle_c::logoDispWait, &daTitle_c::logoDispAnm,
|
||||
&daTitle_c::keyWait, &daTitle_c::nextScene_proc, &daTitle_c::fastLogoDisp,
|
||||
};
|
||||
|
||||
/* 80D67CF0-80D67D10 -00001 0020+00 1/0 0/0 0/0 .data l_daTitle_Method */
|
||||
SECTION_DATA static void* l_daTitle_Method[8] = {
|
||||
(void*)daTitle_Create__FP10fopAc_ac_c,
|
||||
(void*)daTitle_Delete__FP9daTitle_c,
|
||||
(void*)daTitle_Execute__FP9daTitle_c,
|
||||
(void*)NULL,
|
||||
(void*)daTitle_Draw__FP9daTitle_c,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
};
|
||||
|
||||
/* 80D67D10-80D67D40 -00001 0030+00 0/0 0/0 1/0 .data g_profile_TITLE */
|
||||
SECTION_DATA extern void* g_profile_TITLE[12] = {
|
||||
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
|
||||
(void*)0x02E10000, (void*)&g_fpcLf_Method,
|
||||
(void*)0x00000608, (void*)NULL,
|
||||
(void*)NULL, (void*)&g_fopAc_Method,
|
||||
(void*)0x000A0000, (void*)&l_daTitle_Method,
|
||||
(void*)0x00044000, (void*)0x000E0000,
|
||||
};
|
||||
|
||||
/* 80D66B0C-80D66B54 0000EC 0048+00 1/1 0/0 0/0 .text __ct__11daTit_HIO_cFv */
|
||||
daTit_HIO_c::daTit_HIO_c() {
|
||||
mPSScaleX = 1.0f;
|
||||
|
@ -435,6 +301,17 @@ void daTitle_c::fastLogoDisp() {
|
|||
/* 80D676F4-80D67768 000CD4 0074+00 1/1 0/0 0/0 .text getDemoPrm__9daTitle_cFv */
|
||||
int daTitle_c::getDemoPrm() {
|
||||
// NONMATCHING
|
||||
dDemo_actor_c* demoActor = dDemo_c::getActor(demoActorID);
|
||||
dDemo_prm_c* prm;
|
||||
if (demoActor != NULL && demoActor->checkEnable(1) &&
|
||||
(prm = demoActor->getPrm()))
|
||||
{
|
||||
void* data = (void*)prm->getData();
|
||||
JStudio::stb::TParseData_fixed<49> aTStack_30(data);
|
||||
TValueIterator_raw<u8> iter = aTStack_30.begin();
|
||||
return *iter & 0xff;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* 80D67768-80D6786C 000D48 0104+00 1/1 0/0 0/0 .text Draw__9daTitle_cFv */
|
||||
|
@ -477,23 +354,23 @@ int daTitle_c::Delete() {
|
|||
}
|
||||
|
||||
/* 80D67948-80D67968 000F28 0020+00 1/0 0/0 0/0 .text daTitle_Draw__FP9daTitle_c */
|
||||
static void daTitle_Draw(daTitle_c* param_0) {
|
||||
// NONMATCHING
|
||||
static int daTitle_Draw(daTitle_c* i_this) {
|
||||
return i_this->Draw();
|
||||
}
|
||||
|
||||
/* 80D67968-80D67988 000F48 0020+00 1/0 0/0 0/0 .text daTitle_Execute__FP9daTitle_c */
|
||||
static void daTitle_Execute(daTitle_c* param_0) {
|
||||
// NONMATCHING
|
||||
static int daTitle_Execute(daTitle_c* i_this) {
|
||||
return i_this->Execute();
|
||||
}
|
||||
|
||||
/* 80D67988-80D679A8 000F68 0020+00 1/0 0/0 0/0 .text daTitle_Delete__FP9daTitle_c */
|
||||
static void daTitle_Delete(daTitle_c* param_0) {
|
||||
// NONMATCHING
|
||||
static int daTitle_Delete(daTitle_c* i_this) {
|
||||
return i_this->Delete();
|
||||
}
|
||||
|
||||
/* 80D679A8-80D679C8 000F88 0020+00 1/0 0/0 0/0 .text daTitle_Create__FP10fopAc_ac_c */
|
||||
static void daTitle_Create(fopAc_ac_c* param_0) {
|
||||
// NONMATCHING
|
||||
static int daTitle_Create(fopAc_ac_c* i_this) {
|
||||
return static_cast<daTitle_c*>(i_this)->create();
|
||||
}
|
||||
|
||||
/* 80D679C8-80D67A04 000FA8 003C+00 1/0 0/0 0/0 .text draw__15dDlst_daTitle_cFv */
|
||||
|
@ -502,5 +379,29 @@ void dDlst_daTitle_c::draw() {
|
|||
Scr->draw(0.0f, 0.0f, ctx);
|
||||
}
|
||||
|
||||
/* 80D67A08-80D67A50 000FE8 0048+00 2/1 0/0 0/0 .text __dt__11daTit_HIO_cFv */
|
||||
daTit_HIO_c::~daTit_HIO_c() {}
|
||||
/* 80D67CF0-80D67D10 -00001 0020+00 1/0 0/0 0/0 .data l_daTitle_Method */
|
||||
static actor_method_class l_daTitle_Method = {
|
||||
(process_method_func)daTitle_Create,
|
||||
(process_method_func)daTitle_Delete,
|
||||
(process_method_func)daTitle_Execute,
|
||||
(process_method_func)NULL,
|
||||
(process_method_func)daTitle_Draw,
|
||||
};
|
||||
|
||||
/* 80D67D10-80D67D40 -00001 0030+00 0/0 0/0 1/0 .data g_profile_TITLE */
|
||||
extern actor_process_profile_definition g_profile_TITLE = {
|
||||
fpcLy_CURRENT_e, // mLayerID
|
||||
7, // mListID
|
||||
fpcPi_CURRENT_e, // mListPrio
|
||||
PROC_TITLE, // mProcName
|
||||
&g_fpcLf_Method.mBase, // sub_method
|
||||
sizeof(daTitle_c), // mSize
|
||||
0, // mSizeOther
|
||||
0, // mParameters
|
||||
&g_fopAc_Method.base, // sub_method
|
||||
0xa, // mPriority
|
||||
&l_daTitle_Method, // sub_method
|
||||
0x00044000, // mStatus
|
||||
fopAc_ACTOR_e, // mActorType
|
||||
fopAc_CULLBOX_CUSTOM_e, // cullType
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue