mirror of https://github.com/zeldaret/tp.git
Improved handling of virtual inheritance. (#7)
* new system for handling vtables * commented out non-matching JKRDisposer::~JKDisposer() * removed artificial vtables and matched simple virtual-call functions * better text on nonmatching functions * reverted asmdiff.sh * attempt 2 * Spelling * banner and .gitignore for vtable artifacts * move virtual function to the correct class * remove unnecessary casts
This commit is contained in:
parent
937da3c59b
commit
ac6b191dc1
|
|
@ -7,6 +7,7 @@ build/
|
|||
*.elf
|
||||
*.map
|
||||
*.dol
|
||||
vtable.lcf
|
||||
|
||||
# Temporary files
|
||||
*.swp
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
.include "macros.inc"
|
||||
|
||||
.section .text, "ax" # 802d147c
|
||||
|
|
@ -3,16 +3,16 @@
|
|||
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/JSupport/JSUList/JSUList.h"
|
||||
#include "JSystem/JKernel/JKRDisposer/JKRDisposer_vtable.h"
|
||||
|
||||
class JKRHeap;
|
||||
class JKRDisposer {
|
||||
public:
|
||||
JKRDisposer();
|
||||
~JKRDisposer();
|
||||
virtual ~JKRDisposer();
|
||||
|
||||
virtual void callAllDisposer() = 0;
|
||||
|
||||
public:
|
||||
_VTABLE_JKRDisposer* __vt;
|
||||
JKRHeap* heap;
|
||||
JSUPtrLink ptr_link;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
#ifndef __JKRDISPOSER_VTABLE_H__
|
||||
#define __JKRDISPOSER_VTABLE_H__
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class JKRDisposer;
|
||||
struct _VTABLE_JKRDisposer {
|
||||
void (*func0)(JKRDisposer*);
|
||||
void (*_ct)(JKRDisposer*);
|
||||
void (*_dt)(JKRDisposer*, int);
|
||||
void (*func4)(JKRDisposer*);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -4,13 +4,11 @@
|
|||
#include "dolphin/types.h"
|
||||
#include "JSystem/JKernel/JKRDisposer/JKRDisposer.h"
|
||||
|
||||
#include "JSystem/JKernel/JKRHeap/JKRHeap_vtable.h"
|
||||
|
||||
typedef void (*JKRErrorHandler)(void*, unsigned long, int);
|
||||
class JKRHeap {
|
||||
class JKRHeap : JKRDisposer {
|
||||
public:
|
||||
JKRHeap(void*, u32, JKRHeap*, bool);
|
||||
~JKRHeap();
|
||||
virtual ~JKRHeap();
|
||||
|
||||
static bool initArena(char**, u32*, int);
|
||||
JKRHeap* becomeSystemHeap();
|
||||
|
|
@ -23,7 +21,6 @@ class JKRHeap {
|
|||
static void free(void* ptr, JKRHeap* heap);
|
||||
void free(void* ptr);
|
||||
|
||||
void callAllDisposer();
|
||||
void freeAll();
|
||||
void freeTail();
|
||||
|
||||
|
|
@ -56,12 +53,30 @@ class JKRHeap {
|
|||
|
||||
bool isSubHeap(JKRHeap* heap) const;
|
||||
|
||||
public:
|
||||
union {
|
||||
JKRDisposer __base;
|
||||
_VTABLE_JKRHeap* __vt;
|
||||
};
|
||||
protected:
|
||||
void callAllDisposer();
|
||||
virtual void vt_func4() = 0;
|
||||
virtual void vt_func5() = 0;
|
||||
virtual void dump_sort();
|
||||
virtual void vt_func7() = 0;
|
||||
virtual void do_destroy() = 0;
|
||||
virtual void* do_alloc(u32 size, int alignment) = 0;
|
||||
virtual void do_free(void* ptr) = 0;
|
||||
virtual void do_freeAll() = 0;
|
||||
virtual void do_freeTail() = 0;
|
||||
virtual void vt_func13() = 0;
|
||||
virtual s32 do_resize(void* ptr, u32 size) = 0;
|
||||
virtual s32 do_getSize(void* ptr) = 0;
|
||||
virtual s32 do_getFreeSize() = 0;
|
||||
virtual s32 do_getMaxFreeBlock() = 0;
|
||||
virtual s32 do_getTotalFreeSize() = 0;
|
||||
virtual u8 do_changeGroupID(u8 param_1);
|
||||
virtual void do_getCurrent();
|
||||
virtual void state_register();
|
||||
virtual void state_compare();
|
||||
virtual void state_dump();
|
||||
|
||||
public:
|
||||
u8 mutex[24];
|
||||
u32 begin;
|
||||
u32 end;
|
||||
|
|
@ -75,7 +90,7 @@ class JKRHeap {
|
|||
JSUPtrList disposable_list;
|
||||
bool error_flag;
|
||||
u8 field_0x69;
|
||||
u8 field_0x6a[4];
|
||||
u8 field_0x6a[2];
|
||||
};
|
||||
|
||||
void* operator new(u32 size);
|
||||
|
|
|
|||
|
|
@ -1,34 +0,0 @@
|
|||
#ifndef __JKRHEAP_VTABLE_H__
|
||||
#define __JKRHEAP_VTABLE_H__
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class JKRHeap;
|
||||
struct _VTABLE_JKRHeap {
|
||||
void (*func0)(JKRHeap*);
|
||||
void (*_ct)(JKRHeap*);
|
||||
void (*_dt)(JKRHeap*);
|
||||
void (*callAllDisposer)(JKRHeap*);
|
||||
void (*func4)(JKRHeap*);
|
||||
void (*func5)(JKRHeap*);
|
||||
void (*dump_sort)(JKRHeap*);
|
||||
void (*func7)(JKRHeap*);
|
||||
void (*do_destroy)(JKRHeap*);
|
||||
void* (*do_alloc)(JKRHeap*,u32 size, int alignment);
|
||||
void (*do_free)(JKRHeap*,void*ptr);
|
||||
void (*do_freeAll)(JKRHeap*);
|
||||
void (*do_freeTail)(JKRHeap*);
|
||||
void (*func13)(JKRHeap*);
|
||||
s32 (*do_resize)(JKRHeap*, void* ptr, u32 size);
|
||||
s32 (*do_getSize)(JKRHeap*, void* ptr);
|
||||
s32 (*do_getFreeSize)(JKRHeap*);
|
||||
s32 (*do_getMaxFreeBlock)(JKRHeap*);
|
||||
s32 (*do_getTotalFreeSize)(JKRHeap*);
|
||||
u8 (*do_changeGroupID)(JKRHeap*, u8 param_1);
|
||||
void (*do_getCurrent)(JKRHeap*);
|
||||
void (*state_register)(JKRHeap*);
|
||||
void (*state_compare)(JKRHeap*);
|
||||
void (*state_dump)(JKRHeap*);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -6,11 +6,11 @@
|
|||
class JSUPtrList;
|
||||
class JSUPtrLink {
|
||||
public:
|
||||
JSUPtrLink(void*);
|
||||
JSUPtrLink(void* owner);
|
||||
~JSUPtrLink();
|
||||
|
||||
public:
|
||||
void* unk0;
|
||||
void* owner;
|
||||
JSUPtrList* list;
|
||||
JSUPtrLink* prev;
|
||||
JSUPtrLink* next;
|
||||
|
|
@ -35,13 +35,24 @@ class JSUPtrList {
|
|||
u32 length;
|
||||
};
|
||||
|
||||
|
||||
template <typename T>
|
||||
class JSUList : JSUPtrList {
|
||||
public:
|
||||
JSUList() : JSUPtrList(true) {}
|
||||
~JSUList() {};
|
||||
JSUList() : JSUPtrList(true) {
|
||||
}
|
||||
~JSUList(){};
|
||||
|
||||
void append(T* value) {
|
||||
list.append(&value->ptr_link);
|
||||
}
|
||||
|
||||
void prepend(T* value) {
|
||||
list.prepend(&value->ptr_link);
|
||||
}
|
||||
|
||||
void remove(T* value) {
|
||||
list.remove(&value->ptr_link);
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,7 +1,3 @@
|
|||
#include "JSystem/JKernel/JKRDisposer/JKRDisposer_vtable.h"
|
||||
#include "JSystem/JKernel/JKRHeap/JKRHeap_vtable.h"
|
||||
|
||||
|
||||
extern float lbl_80451D5C;
|
||||
extern u8 lbl_80379234[0x64];
|
||||
extern int lbl_804061C0;
|
||||
|
|
@ -85,8 +81,9 @@ extern u8 lbl_803BB498;
|
|||
#define _SDA2_BASE_(dummy) 0
|
||||
|
||||
// func_802CE138
|
||||
extern _VTABLE_JKRHeap lbl_803CBF70; // JKRHeap::__vt
|
||||
extern void* lbl_803CBF70; // JKRHeap::__vt
|
||||
|
||||
class JKRHeap;
|
||||
extern JKRHeap* lbl_80451370; // JKRHeap::sSystemHeap
|
||||
extern JKRHeap* lbl_80451378; // JKRHeap::sRootHeap
|
||||
extern JKRHeap* lbl_80451374; // JKRHeap::sCurrentHeap
|
||||
|
|
@ -112,4 +109,4 @@ extern u32 lbl_80000028;
|
|||
extern char lbl_8039CAD8[12]; // "JKRHeap.cpp"
|
||||
|
||||
// func_802D147C
|
||||
extern _VTABLE_JKRDisposer lbl_803CC0F0; // JKRDisposer::__vt
|
||||
extern void* lbl_803CC0F0; // JKRDisposer::__vt
|
||||
733
ldscript.lcf
733
ldscript.lcf
|
|
@ -24,6 +24,737 @@ SECTIONS {
|
|||
_db_stack_end = _stack_addr;
|
||||
__ArenaLo = (_db_stack_addr + 0x1f) & ~0x1f;
|
||||
__ArenaHi = 0x81700000 ;
|
||||
|
||||
/* vtables locations */
|
||||
"__vt__17mDoAud_zelAudio_c" = 0x803a2f40;
|
||||
"__vt__12JAUSoundInfo" = 0x803a2f4c;
|
||||
"__vt__7JUTFont" = 0x803a31f0;
|
||||
"__vt__26mDoExt_3DlineMatSortPacket" = 0x803a3234;
|
||||
"__vt__19mDoExt_3DlineMat1_c" = 0x803a3248;
|
||||
"__vt__19mDoExt_3DlineMat0_c" = 0x803a325c;
|
||||
"__vt__19mDoExt_invJntPacket" = 0x803a3270;
|
||||
"__vt__15mDoExt_McaMorf2" = 0x803a3284;
|
||||
"__vt__16mDoExt_McaMorfSO" = 0x803a32b0;
|
||||
"__vt__15mDoExt_zelAnime" = 0x803a32dc;
|
||||
"__vt__14mDoExt_McaMorf" = 0x803a32fc;
|
||||
"__vt__13mDoExt_morf_c" = 0x803a3328;
|
||||
"__vt__12J3DFrameCtrl" = 0x803a3354;
|
||||
"__vt__73J3DMtxCalcNoAnm<27J3DMtxCalcCalcTransformMaya,24J3DMtxCalcJ3DSysInitMaya>" = 0x803a3360;
|
||||
"__vt__19J3DMtxCalcNoAnmBase" = 0x803a338c;
|
||||
"__vt__28mDoExt_MtxCalcAnmBlendTblOld" = 0x803a33b8;
|
||||
"__vt__25mDoExt_MtxCalcAnmBlendTbl" = 0x803a33e4;
|
||||
"__vt__114J3DMtxCalcAnimation<64J3DMtxCalcAnimationAdaptorDefault<27J3DMtxCalcCalcTransformMaya>,24J3DMtxCalcJ3DSysInitMaya>" = 0x803a3410;
|
||||
"__vt__17J3DMtxCalcAnmBase" = 0x803a343c;
|
||||
"__vt__10J3DMtxCalc" = 0x803a3468;
|
||||
"__vt__11J3DUClipper" = 0x803a3498;
|
||||
"__vt__21mDoDvdThd_toMainRam_c" = 0x803a34a8;
|
||||
"__vt__25mDoDvdThd_mountXArchive_c" = 0x803a34b8;
|
||||
"__vt__24mDoDvdThd_mountArchive_c" = 0x803a34c8;
|
||||
"__vt__20mDoDvdThd_callback_c" = 0x803a34d8;
|
||||
"__vt__19mDoDvdThd_command_c" = 0x803a34e8;
|
||||
"__vt__24JPTraceParticleCallBack4" = 0x803a3568;
|
||||
"__vt__19JPAParticleCallBack" = 0x803a357c;
|
||||
"__vt__11fapGm_HIO_c" = 0x803a35a0;
|
||||
"__vt__11dEvt_info_c" = 0x803a35d0;
|
||||
"__vt__8cM3dGPla" = 0x803a37c0;
|
||||
"__vt__15dBgS_ObjRoofChk" = 0x803a37cc;
|
||||
"__vt__11dBgS_WtrChk" = 0x803a37fc;
|
||||
"__vt__14dBgS_ObjGndChk" = 0x803a382c;
|
||||
"__vt__15dStage_roomDt_c" = 0x803a6aac;
|
||||
"__vt__16dStage_stageDt_c" = 0x803a6c20;
|
||||
"__vt__11dStage_dt_c" = 0x803a6d94;
|
||||
"__vt__12dDlst_base_c" = 0x803a6f88;
|
||||
"__vt__28dDrawPathWithNormalPattern_c" = 0x803a6f94;
|
||||
"__vt__15dRenderingMap_c" = 0x803a6fd4;
|
||||
"__vt__6dMap_c" = 0x803a7030;
|
||||
"__vt__15renderingAmap_c" = 0x803a70f4;
|
||||
"__vt__25mDoExt_McaMorfCallBack1_c" = 0x803a71e8;
|
||||
"__vt__12dCcMassS_Obj" = 0x803a71f4;
|
||||
"__vt__15cCcD_DivideArea" = 0x803a7200;
|
||||
"__vt__8cM3dGCyl" = 0x803a720c;
|
||||
"__vt__8cM3dGAab" = 0x803a7218;
|
||||
"__vt__15cCcD_DivideInfo" = 0x803a7224;
|
||||
"__vt__12dCcMassS_Mng" = 0x803a7230;
|
||||
"__vt__10CSTControl" = 0x803a7250;
|
||||
"__vt__9STControl" = 0x803a7260;
|
||||
"__vt__8cM3dGLin" = 0x803a78f8;
|
||||
"__vt__8cM3dGSph" = 0x803a7904;
|
||||
"__vt__16dDemo_particle_c" = 0x803a7910;
|
||||
"__vt__17jmessage_tControl" = 0x803a7928;
|
||||
"__vt__Q27JStudio13TCreateObject" = 0x803a7934;
|
||||
"__vt__14dDemo_system_c" = 0x803a7944;
|
||||
"__vt__11dDemo_fog_c" = 0x803a7994;
|
||||
"__vt__13dDemo_light_c" = 0x803a79f0;
|
||||
"__vt__15dDemo_ambient_c" = 0x803a7a5c;
|
||||
"__vt__14dDemo_camera_c" = 0x803a7aa0;
|
||||
"__vt__13dDemo_actor_c" = 0x803a7b34;
|
||||
"__vt__Q27JStudio16TAdaptor_message" = 0x803a7bc0;
|
||||
"__vt__Q220@unnamed@d_demo_cpp@29jstudio_tCreateObject_message" = 0x803a7be4;
|
||||
"__vt__Q220@unnamed@d_demo_cpp@24jstudio_tAdaptor_message" = 0x803a7bf4;
|
||||
"__vt__10J3DAnmBase" = 0x803a7c38;
|
||||
"__vt__15J3DAnmTransform" = 0x803a7c48;
|
||||
"__vt__18mDoExt_transAnmBas" = 0x803a7c5c;
|
||||
"__vt__18J3DAnmTransformKey" = 0x803a7c70;
|
||||
"__vt__11J3DTexNoAnm" = 0x803a7c84;
|
||||
"__vt__18dRenderingFDAmap_c" = 0x803a7c90;
|
||||
"__vt__11dDrawPath_c" = 0x803a7cf8;
|
||||
"__vt__19dMenuFmapIconDisp_c" = 0x803a7d74;
|
||||
"__vt__19renderingPlusDoor_c" = 0x803a7d80;
|
||||
"__vt__28renderingPlusDoorAndCursor_c" = 0x803a7e24;
|
||||
"__vt__16renderingDAmap_c" = 0x803a7ee0;
|
||||
"__vt__15dSmplMdl_draw_c" = 0x803a82f8;
|
||||
"__vt__28dPa_particleTracePcallBack_c" = 0x803a838c;
|
||||
"__vt__22dPa_hermiteEcallBack_c" = 0x803a83a0;
|
||||
"__vt__25dPa_gen_d_light8PcallBack" = 0x803a83c4;
|
||||
"__vt__25dPa_gen_b_light8PcallBack" = 0x803a83d8;
|
||||
"__vt__19dPa_light8PcallBack" = 0x803a83ec;
|
||||
"__vt__19dPa_fsenthPcallBack" = 0x803a8400;
|
||||
"__vt__17dPa_wbPcallBack_c" = 0x803a8414;
|
||||
"__vt__17dPa_windPcallBack" = 0x803a8434;
|
||||
"__vt__19dPa_simpleEcallBack" = 0x803a8448;
|
||||
"__vt__22dPa_selectTexEcallBack" = 0x803a8464;
|
||||
"__vt__18dPa_modelEcallBack" = 0x803a8488;
|
||||
"__vt__18dPa_modelPcallBack" = 0x803a84ac;
|
||||
"__vt__25dPa_gen_d_light8EcallBack" = 0x803a84c0;
|
||||
"__vt__25dPa_gen_b_light8EcallBack" = 0x803a84e4;
|
||||
"__vt__19dPa_light8EcallBack" = 0x803a8508;
|
||||
"__vt__19dPa_followEcallBack" = 0x803a852c;
|
||||
"__vt__18dPa_levelEcallBack" = 0x803a8554;
|
||||
"__vt__18JPAEmitterCallBack" = 0x803a8578;
|
||||
"__vt__21dPa_setColorEcallBack" = 0x803a8594;
|
||||
"__vt__18dDlst_shadowPoly_c" = 0x803a8dcc;
|
||||
"__vt__22dDlst_shadowRealPoly_c" = 0x803a8ddc;
|
||||
"__vt__14ShdwDrawPoly_c" = 0x803a8dec;
|
||||
"__vt__18dDlst_effectLine_c" = 0x803a8df8;
|
||||
"__vt__10J2DAnmBase" = 0x803a8e04;
|
||||
"__vt__11dDlst_blo_c" = 0x803a8e14;
|
||||
"__vt__10dDlst_2D_c" = 0x803a8e20;
|
||||
"__vt__12dDlst_2DMt_c" = 0x803a8e2c;
|
||||
"__vt__11dDlst_2Dm_c" = 0x803a8e38;
|
||||
"__vt__11dDlst_2DM_c" = 0x803a8e44;
|
||||
"__vt__12dDlst_2DT2_c" = 0x803a8e5c;
|
||||
"__vt__11dDlst_2DT_c" = 0x803a8e68;
|
||||
"__vt__15dDlst_2DPoint_c" = 0x803a8e74;
|
||||
"__vt__14dDlst_2DQuad_c" = 0x803a8e80;
|
||||
"__vt__13dDlst_2DTri_c" = 0x803a8e8c;
|
||||
"__vt__19dKankyo_evil_Packet" = 0x803a9ac0;
|
||||
"__vt__18dKankyo_mud_Packet" = 0x803a9ad4;
|
||||
"__vt__20dKankyo_odour_Packet" = 0x803a9ae8;
|
||||
"__vt__21dKankyo_vrkumo_Packet" = 0x803a9afc;
|
||||
"__vt__20dKankyo_housi_Packet" = 0x803a9b10;
|
||||
"__vt__20dKankyo_cloud_Packet" = 0x803a9b24;
|
||||
"__vt__19dKankyo_star_Packet" = 0x803a9b38;
|
||||
"__vt__19dKankyo_snow_Packet" = 0x803a9b4c;
|
||||
"__vt__19dKankyo_rain_Packet" = 0x803a9b60;
|
||||
"__vt__22dKankyo_sunlenz_Packet" = 0x803a9b74;
|
||||
"__vt__18dKankyo_sun_Packet" = 0x803a9b88;
|
||||
"__vt__19dAttDraw_CallBack_c" = 0x803a9c48;
|
||||
"__vt__15dAttDrawParam_c" = 0x803a9c54;
|
||||
"__vt__11dAttParam_c" = 0x803a9c60;
|
||||
"__vt__4dBgS" = 0x803ab608;
|
||||
"__vt__4cBgS" = 0x803ab61c;
|
||||
"__vt__11cBgS_ChkElm" = 0x803ab630;
|
||||
"__vt__9dBgS_Acch" = 0x803ab640;
|
||||
"__vt__12dBgS_AcchCir" = 0x803ab664;
|
||||
"__vt__8dBgS_Chk" = 0x803ab670;
|
||||
"__vt__18dBgS_CamGndChk_Wtr" = 0x803ab688;
|
||||
"__vt__14dBgS_CamGndChk" = 0x803ab6b8;
|
||||
"__vt__18dBgS_ObjGndChk_All" = 0x803ab6e8;
|
||||
"__vt__18dBgS_ObjGndChk_Spl" = 0x803ab718;
|
||||
"__vt__18dBgS_ObjGndChk_Wtr" = 0x803ab748;
|
||||
"__vt__11dBgS_GndChk" = 0x803ab778;
|
||||
"__vt__15dBgS_GrpPassChk" = 0x803ab7a8;
|
||||
"__vt__15cBgS_GrpPassChk" = 0x803ab7b4;
|
||||
"__vt__16dBgS_HorseLinChk" = 0x803ab7c0;
|
||||
"__vt__15dBgS_RopeLinChk" = 0x803ab7f0;
|
||||
"__vt__20dBgS_BoomerangLinChk" = 0x803ab820;
|
||||
"__vt__16dBgS_ArrowLinChk" = 0x803ab850;
|
||||
"__vt__15dBgS_BombLinChk" = 0x803ab880;
|
||||
"__vt__15dBgS_LinkLinChk" = 0x803ab8b0;
|
||||
"__vt__14dBgS_ObjLinChk" = 0x803ab8e0;
|
||||
"__vt__21dBgS_CamLinChk_NorWtr" = 0x803ab910;
|
||||
"__vt__14dBgS_CamLinChk" = 0x803ab940;
|
||||
"__vt__11dBgS_LinChk" = 0x803ab970;
|
||||
"__vt__16dBgS_MoveBgActor" = 0x803ab9a0;
|
||||
"__vt__11dBgS_SphChk" = 0x803ab9c8;
|
||||
"__vt__14dBgS_SplGrpChk" = 0x803aba08;
|
||||
"__vt__16dBgS_PolyPassChk" = 0x803aba38;
|
||||
"__vt__16cBgS_PolyPassChk" = 0x803aba44;
|
||||
"__vt__12dBgS_RoofChk" = 0x803aba50;
|
||||
"__vt__4dBgW" = 0x803aba80;
|
||||
"__vt__8cM3dGTri" = 0x803abb84;
|
||||
"__vt__11cBgW_GrpElm" = 0x803abb90;
|
||||
"__vt__11cBgW_TriElm" = 0x803abb9c;
|
||||
"__vt__4cBgW" = 0x803abba8;
|
||||
"__vt__13cBgW_NodeTree" = 0x803abcac;
|
||||
"__vt__11cBgW_RwgElm" = 0x803abcb8;
|
||||
"__vt__9dBgW_Base" = 0x803abcc8;
|
||||
"__vt__9cBgW_BgId" = 0x803abdb8;
|
||||
"__vt__8dBgWKCol" = 0x803abdc8;
|
||||
"__vt__6dBgWSv" = 0x803abeb8;
|
||||
"__vt__8dCcD_Sph" = 0x803abfc0;
|
||||
"__vt__8dCcD_Cyl" = 0x803ac050;
|
||||
"__vt__8dCcD_Tri" = 0x803ac0e0;
|
||||
"__vt__8dCcD_Cps" = 0x803ac170;
|
||||
"__vt__12dCcD_GObjInf" = 0x803ac200;
|
||||
"__vt__11dCcD_GObjCo" = 0x803ac22c;
|
||||
"__vt__11dCcD_GObjTg" = 0x803ac238;
|
||||
"__vt__11dCcD_GObjAt" = 0x803ac244;
|
||||
"__vt__22dCcD_GAtTgCoCommonBase" = 0x803ac250;
|
||||
"__vt__12cCcD_GObjInf" = 0x803ac25c;
|
||||
"__vt__8cCcD_Obj" = 0x803ac288;
|
||||
"__vt__10cCcD_ObjCo" = 0x803ac2a8;
|
||||
"__vt__10cCcD_ObjTg" = 0x803ac2b4;
|
||||
"__vt__10cCcD_ObjAt" = 0x803ac2c0;
|
||||
"__vt__18cCcD_ObjCommonBase" = 0x803ac2cc;
|
||||
"__vt__14cCcD_ObjHitInf" = 0x803ac2d8;
|
||||
"__vt__9dCcD_Stts" = 0x803ac2e4;
|
||||
"__vt__10dCcD_GStts" = 0x803ac310;
|
||||
"__vt__10cCcD_GStts" = 0x803ac31c;
|
||||
"__vt__4dCcS" = 0x803ac3e4;
|
||||
"__vt__11dCamSetup_c" = 0x803ac500;
|
||||
"__vt__11dCamParam_c" = 0x803ac50c;
|
||||
"__vt__9dCstick_c" = 0x803ac518;
|
||||
"__vt__6dMdl_c" = 0x803af978;
|
||||
"__vt__16daPy_frameCtrl_c" = 0x803b2e20;
|
||||
"__vt__8dEyeHL_c" = 0x803b2e80;
|
||||
"__vt__16dBgS_LinkRoofChk" = 0x803b2ec8;
|
||||
"__vt__15dBgS_LinkGndChk" = 0x803b2ef8;
|
||||
"__vt__13dBgS_LinkAcch" = 0x803b2f28;
|
||||
"__vt__9daPy_py_c" = 0x803b2f70;
|
||||
"__vt__12daAlinkHIO_c" = 0x803b321c;
|
||||
"__vt__9daAlink_c" = 0x803b32b8;
|
||||
"__vt__16daAlink_matAnm_c" = 0x803b3564;
|
||||
"__vt__15daAlink_sight_c" = 0x803b3580;
|
||||
"__vt__20daAlink_lockCursor_c" = 0x803b3590;
|
||||
"__vt__14daAlink_blur_c" = 0x803b35a0;
|
||||
"__vt__29dAlink_bottleWaterPcallBack_c" = 0x803b35b4;
|
||||
"__vt__12dBgS_ObjAcch" = 0x803b35c8;
|
||||
"__vt__Q29daAlink_c14hsChainShape_c" = 0x803b35ec;
|
||||
"__vt__12daItemBase_c" = 0x803b3610;
|
||||
"__vt__18daNpcF_ActorMngr_c" = 0x803b3864;
|
||||
"__vt__20daNpcF_MoveBgActor_c" = 0x803b3870;
|
||||
"__vt__8daNpcF_c" = 0x803b38d8;
|
||||
"__vt__15daNpcF_MatAnm_c" = 0x803b3920;
|
||||
"__vt__23daBaseNpc_moveBgActor_c" = 0x803b3948;
|
||||
"__vt__11daBaseNpc_c" = 0x803b39ac;
|
||||
"__vt__18daBaseNpc_lookat_c" = 0x803b3a14;
|
||||
"__vt__16daBaseNpc_path_c" = 0x803b3a50;
|
||||
"__vt__18daBaseNpc_matAnm_c" = 0x803b3a5c;
|
||||
"__vt__18daBaseNpc_acMngr_c" = 0x803b3a6c;
|
||||
"__vt__8daNpcT_c" = 0x803b3a78;
|
||||
"__vt__22daNpcT_MotionSeqMngr_c" = 0x803b3b3c;
|
||||
"__vt__18daNpcT_ActorMngr_c" = 0x803b3b48;
|
||||
"__vt__15daNpcT_JntAnm_c" = 0x803b3b54;
|
||||
"__vt__16daNpcT_Hermite_c" = 0x803b3b60;
|
||||
"__vt__15daNpcT_MatAnm_c" = 0x803b3b6c;
|
||||
"__vt__17daNpcCd_HIO_Jnt_c" = 0x803b6184;
|
||||
"__vt__19daNpcCd_HIO_Child_c" = 0x803b6190;
|
||||
"__vt__13daNpcCd_HIO_c" = 0x803b619c;
|
||||
"__vt__18fOpAcm_HIO_entry_c" = 0x803b61a8;
|
||||
"__vt__14mDoHIO_entry_c" = 0x803b61b4;
|
||||
"__vt__21daNpcCd2_HIO_MChild_c" = 0x803b9d54;
|
||||
"__vt__18daNpcCd2_HIO_Jnt_c" = 0x803b9d60;
|
||||
"__vt__21daNpcCd2_HIO_WChild_c" = 0x803b9d6c;
|
||||
"__vt__14daNpcCd2_HIO_c" = 0x803b9d78;
|
||||
"__vt__8daItem_c" = 0x803b9fa4;
|
||||
"__vt__9dInsect_c" = 0x803ba078;
|
||||
"__vt__14daObj_SSBase_c" = 0x803ba088;
|
||||
"__vt__18daPy_sightPacket_c" = 0x803ba14c;
|
||||
"__vt__14dBgS_CamSphChk" = 0x803ba798;
|
||||
"__vt__14d2DBSplinePath" = 0x803ba7ec;
|
||||
"__vt__16dFile_select3D_c" = 0x803bb35c;
|
||||
"__vt__17dDlst_FileSel3m_c" = 0x803bb368;
|
||||
"__vt__17dDlst_FileSelYn_c" = 0x803bb378;
|
||||
"__vt__17dDlst_FileSelCp_c" = 0x803bb388;
|
||||
"__vt__17dDlst_FileSelDt_c" = 0x803bb398;
|
||||
"__vt__15dDlst_FileSel_c" = 0x803bb3a8;
|
||||
"__vt__15J2DAnmTransform" = 0x803bb3b8;
|
||||
"__vt__10JUTNameTab" = 0x803bb3dc;
|
||||
"__vt__14dFile_select_c" = 0x803bb3e8;
|
||||
"__vt__9dFs_HIO_c" = 0x803bb400;
|
||||
"__vt__16dDlst_FileWarn_c" = 0x803bb44c;
|
||||
"__vt__15dFile_warning_c" = 0x803bb480;
|
||||
"__vt__16dDlst_FileInfo_c" = 0x803bb588;
|
||||
"__vt__12dFile_info_c" = 0x803bb598;
|
||||
"__vt__19dDlst_BrightCheck_c" = 0x803bb5ec;
|
||||
"__vt__14dBrightCheck_c" = 0x803bb5fc;
|
||||
"__vt__8dScope_c" = 0x803bb6b4;
|
||||
"__vt__11dMeterSub_c" = 0x803bb6d4;
|
||||
"__vt__16dSelect_cursor_c" = 0x803bb78c;
|
||||
"__vt__19dSelect_cursorHIO_c" = 0x803bb7a8;
|
||||
"__vt__9dSi_HIO_c" = 0x803bb7b8;
|
||||
"__vt__15dShopItemCtrl_c" = 0x803bb888;
|
||||
"__vt__13dShopSystem_c" = 0x803bba7c;
|
||||
"__vt__24dDlst_GameOverScrnDraw_c" = 0x803bbd68;
|
||||
"__vt__12dMenu_save_c" = 0x803bbd78;
|
||||
"__vt__10dGov_HIO_c" = 0x803bbd90;
|
||||
"__vt__24dDlst_Gameover_CAPTURE_c" = 0x803bbda8;
|
||||
"__vt__18dScnKy_env_light_c" = 0x803bc13c;
|
||||
"__vt__19dDlst_KanteraIcon_c" = 0x803bc218;
|
||||
"__vt__15dKantera_icon_c" = 0x803bc228;
|
||||
"__vt__19dMenu_Calibration_c" = 0x803bc364;
|
||||
"__vt__15dMenu_Collect_c" = 0x803bc75c;
|
||||
"__vt__20dMenu_Collect2DTop_c" = 0x803bc768;
|
||||
"__vt__17dMenu_Collect3D_c" = 0x803bc790;
|
||||
"__vt__17dMenu_Collect2D_c" = 0x803bc7c4;
|
||||
"__vt__15dMenu_DmapMap_c" = 0x803bcae0;
|
||||
"__vt__20dMenu_StageMapCtrl_c" = 0x803bcaec;
|
||||
"__vt__12dMenu_Dmap_c" = 0x803bcb10;
|
||||
"__vt__14dMenu_DmapBg_c" = 0x803bcb38;
|
||||
"__vt__19dMenu_DmapMapCtrl_c" = 0x803bcd74;
|
||||
"__vt__15renderingDmap_c" = 0x803bce68;
|
||||
"__vt__16dMenuMapCommon_c" = 0x803bd02c;
|
||||
"__vt__15dMenu_Fishing_c" = 0x803bd074;
|
||||
"__vt__12dMenu_Fmap_c" = 0x803bd664;
|
||||
"__vt__9dMf_HIO_c" = 0x803bd670;
|
||||
"__vt__15dMenu_FmapMap_c" = 0x803bd680;
|
||||
"__vt__15renderingFmap_c" = 0x803bd6e8;
|
||||
"__vt__17dMenu_Fmap2DTop_c" = 0x803bd750;
|
||||
"__vt__18dMenu_Fmap2DBack_c" = 0x803bd760;
|
||||
"__vt__14dMenu_Insect_c" = 0x803bd8ac;
|
||||
"__vt__19dMenu_ItemExplain_c" = 0x803bd9f4;
|
||||
"__vt__14dMenu_Letter_c" = 0x803bdb8c;
|
||||
"__vt__14dMenu_Option_c" = 0x803bde54;
|
||||
"__vt__12dMenu_Ring_c" = 0x803bdf5c;
|
||||
"__vt__16dDlst_MenuSave_c" = 0x803be764;
|
||||
"__vt__23dDlst_MenuSaveExplain_c" = 0x803be774;
|
||||
"__vt__9dMs_HIO_c" = 0x803be7cc;
|
||||
"__vt__13dMenu_Skill_c" = 0x803be8c0;
|
||||
"__vt__10dMw_DHIO_c" = 0x803be8e0;
|
||||
"__vt__9dMw_HIO_c" = 0x803be8ec;
|
||||
"__vt__20dDlst_MENU_CAPTURE_c" = 0x803bf0d4;
|
||||
"__vt__18dMeter_cursorHIO_c" = 0x803bf0e8;
|
||||
"__vt__16dMeter_fmapHIO_c" = 0x803bf0f4;
|
||||
"__vt__19dMeter_mapIconHIO_c" = 0x803bf100;
|
||||
"__vt__16dMeter_ringHIO_c" = 0x803bf10c;
|
||||
"__vt__16dMeter_drawHIO_c" = 0x803bf118;
|
||||
"__vt__25dMeter_drawLightDropHIO_c" = 0x803bf124;
|
||||
"__vt__24dMeter_drawMiniGameHIO_c" = 0x803bf130;
|
||||
"__vt__25dMeter_drawEmpButtonHIO_c" = 0x803bf13c;
|
||||
"__vt__21dMeter_drawSkillHIO_c" = 0x803bf148;
|
||||
"__vt__27dMeter_drawCalibrationHIO_c" = 0x803bf154;
|
||||
"__vt__22dMeter_drawInsectHIO_c" = 0x803bf160;
|
||||
"__vt__23dMeter_drawFishingHIO_c" = 0x803bf16c;
|
||||
"__vt__22dMeter_drawLetterHIO_c" = 0x803bf178;
|
||||
"__vt__22dMeter_drawOptionHIO_c" = 0x803bf184;
|
||||
"__vt__23dMeter_drawCollectHIO_c" = 0x803bf190;
|
||||
"__vt__16dMeter_menuHIO_c" = 0x803bf19c;
|
||||
"__vt__14dMeterButton_c" = 0x803bf258;
|
||||
"__vt__14dMeterHaihai_c" = 0x803bf268;
|
||||
"__vt__15dMeterHakusha_c" = 0x803bf2b8;
|
||||
"__vt__11dMeterMap_c" = 0x803bf2f8;
|
||||
"__vt__14dMeterString_c" = 0x803bf308;
|
||||
"__vt__13dMeter2Draw_c" = 0x803bf750;
|
||||
"__vt__13dMeter2Info_c" = 0x803bfa1c;
|
||||
"__vt__10COutFont_c" = 0x803bfdc4;
|
||||
"__vt__13COutFontSet_c" = 0x803bfde8;
|
||||
"__vt__35jmessage_string_tRenderingProcessor" = 0x803c0908;
|
||||
"__vt__34jmessage_string_tSequenceProcessor" = 0x803c0948;
|
||||
"__vt__33jmessage_string_tMeasureProcessor" = 0x803c09a0;
|
||||
"__vt__24jmessage_string_tControl" = 0x803c09e0;
|
||||
"__vt__26jmessage_string_tReference" = 0x803c09ec;
|
||||
"__vt__28jmessage_tRenderingProcessor" = 0x803c09fc;
|
||||
"__vt__27jmessage_tSequenceProcessor" = 0x803c0a3c;
|
||||
"__vt__26jmessage_tMeasureProcessor" = 0x803c0a94;
|
||||
"__vt__19jmessage_tReference" = 0x803c0ad4;
|
||||
"__vt__16dMsgObject_HIO_c" = 0x803c0bd8;
|
||||
"__vt__20dMsgObject_HowlHIO_c" = 0x803c0be4;
|
||||
"__vt__10dMsgUnit_c" = 0x803c0bf0;
|
||||
"__vt__17dMsgScrn3Select_c" = 0x803c0ce8;
|
||||
"__vt__15dMsgScrnArrow_c" = 0x803c0cf8;
|
||||
"__vt__14dMsgScrnBase_c" = 0x803c0d58;
|
||||
"__vt__14dMsgScrnBoss_c" = 0x803c0de8;
|
||||
"__vt__17dMsgScrnExplain_c" = 0x803c0f6c;
|
||||
"__vt__14dMsgScrnItem_c" = 0x803c0f78;
|
||||
"__vt__14dMsgScrnHowl_c" = 0x803c1190;
|
||||
"__vt__16dMsgScrnJimaku_c" = 0x803c11e8;
|
||||
"__vt__16dMsgScrnKanban_c" = 0x803c1240;
|
||||
"__vt__15dMsgScrnLight_c" = 0x803c1298;
|
||||
"__vt__19dMsgScrnLight_HIO_c" = 0x803c12a4;
|
||||
"__vt__15dMsgScrnPlace_c" = 0x803c12e8;
|
||||
"__vt__15dMsgScrnStaff_c" = 0x803c1370;
|
||||
"__vt__14dMsgScrnTalk_c" = 0x803c13c8;
|
||||
"__vt__14dMsgScrnTree_c" = 0x803c1420;
|
||||
"__vt__16dMsgStringBase_c" = 0x803c1478;
|
||||
"__vt__12dMsgString_c" = 0x803c1498;
|
||||
"__vt__10dMsgFlow_c" = 0x803c1f40;
|
||||
"__vt__14dDlst_NameIN_c" = 0x803c2b38;
|
||||
"__vt__7dName_c" = 0x803c2b64;
|
||||
"__vt__9dNm_HIO_c" = 0x803c2b7c;
|
||||
"__vt__16dNpcLib_lookat_c" = 0x803c2b88;
|
||||
"__vt__15dOvlpFd2_dlst_c" = 0x803c2d5c;
|
||||
"__vt__15dOvlpFd3_dlst_c" = 0x803c2ddc;
|
||||
"__vt__16dDlst_snapShot_c" = 0x803c2dec;
|
||||
"__vt__10JSUIosBase" = 0x803c2df8;
|
||||
"__vt__8CPaneMgr" = 0x803c2e04;
|
||||
"__vt__17CPaneMgrAlphaMorf" = 0x803c2e18;
|
||||
"__vt__13CPaneMgrAlpha" = 0x803c2e28;
|
||||
"__vt__10dLog_HIO_c" = 0x803c300c;
|
||||
"__vt__17dScnName_camera_c" = 0x803c3140;
|
||||
"__vt__9dSn_HIO_c" = 0x803c314c;
|
||||
"__vt__22dScnPly_env_debugHIO_c" = 0x803c3224;
|
||||
"__vt__22dScnPly_env_otherHIO_c" = 0x803c3230;
|
||||
"__vt__17dScnPly_env_HIO_c" = 0x803c323c;
|
||||
"__vt__17dScnPly_reg_HIO_c" = 0x803c3248;
|
||||
"__vt__21dScnPly_preLoad_HIO_c" = 0x803c3254;
|
||||
"__vt__22dSvBit_childOtherHIO_c" = 0x803c3300;
|
||||
"__vt__26dSvBit_childTransformHIO_c" = 0x803c330c;
|
||||
"__vt__25dSvBit_childDarknessHIO_c" = 0x803c3318;
|
||||
"__vt__29dSvBit_childTbPerfectionHIO_c" = 0x803c3324;
|
||||
"__vt__26dSvBit_childItOneZoneHIO_c" = 0x803c3330;
|
||||
"__vt__23dSvBit_childItZoneHIO_c" = 0x803c333c;
|
||||
"__vt__26dSvBit_childItDungeonHIO_c" = 0x803c3348;
|
||||
"__vt__29dSvBit_childItPerfectionHIO_c" = 0x803c3354;
|
||||
"__vt__26dSvBit_childSwOneZoneHIO_c" = 0x803c3360;
|
||||
"__vt__23dSvBit_childSwZoneHIO_c" = 0x803c336c;
|
||||
"__vt__26dSvBit_childSwDungeonHIO_c" = 0x803c3378;
|
||||
"__vt__29dSvBit_childSwPerfectionHIO_c" = 0x803c3384;
|
||||
"__vt__25dSvBit_childTreasureHIO_c" = 0x803c3390;
|
||||
"__vt__21dSvBit_childItemHIO_c" = 0x803c339c;
|
||||
"__vt__23dSvBit_childSwitchHIO_c" = 0x803c33a8;
|
||||
"__vt__12dSvBit_HIO_c" = 0x803c33b4;
|
||||
"__vt__21dDlst_TimerScrnDraw_c" = 0x803c3420;
|
||||
"__vt__20DynamicModuleControl" = 0x803c34c0;
|
||||
"__vt__24DynamicModuleControlBase" = 0x803c34f4;
|
||||
"__vt__12cCcD_SphAttr" = 0x803c3540;
|
||||
"__vt__12cCcD_CylAttr" = 0x803c35a4;
|
||||
"__vt__12cCcD_CpsAttr" = 0x803c3608;
|
||||
"__vt__12cCcD_TriAttr" = 0x803c366c;
|
||||
"__vt__14cCcD_ShapeAttr" = 0x803c36d0;
|
||||
"__vt__9cCcD_Stts" = 0x803c3728;
|
||||
"__vt__4cCcS" = 0x803c3748;
|
||||
"__vt__8cBgS_Chk" = 0x803c3f80;
|
||||
"__vt__11cBgS_GndChk" = 0x803c3f90;
|
||||
"__vt__11cBgS_LinChk" = 0x803c3fa8;
|
||||
"__vt__13cBgS_ShdwDraw" = 0x803c3fc0;
|
||||
"__vt__13cBgS_PolyInfo" = 0x803c3fd0;
|
||||
"__vt__8cM3dGCir" = 0x803c3fe0;
|
||||
"__vt__8cM2dGCir" = 0x803c3fec;
|
||||
"__vt__8cM3dGCps" = 0x803c3ff8;
|
||||
"__vt__10JFWDisplay" = 0x803c40a0;
|
||||
"__vt__12JPAFieldBase" = 0x803c44cc;
|
||||
"__vt__12JPAFieldSpin" = 0x803c44e0;
|
||||
"__vt__12JPAFieldDrag" = 0x803c44f4;
|
||||
"__vt__14JPAFieldRandom" = 0x803c4508;
|
||||
"__vt__18JPAFieldConvection" = 0x803c451c;
|
||||
"__vt__14JPAFieldVortex" = 0x803c4530;
|
||||
"__vt__14JPAFieldNewton" = 0x803c4544;
|
||||
"__vt__14JPAFieldMagnet" = 0x803c4558;
|
||||
"__vt__11JPAFieldAir" = 0x803c456c;
|
||||
"__vt__15JPAFieldGravity" = 0x803c4580;
|
||||
"__vt__10JPATexture" = 0x803c4598;
|
||||
"__vt__Q26JStage6TActor" = 0x803c45a8;
|
||||
"__vt__Q26JStage13TAmbientLight" = 0x803c4638;
|
||||
"__vt__Q26JStage7TCamera" = 0x803c4680;
|
||||
"__vt__Q26JStage4TFog" = 0x803c4718;
|
||||
"__vt__Q26JStage6TLight" = 0x803c4778;
|
||||
"__vt__Q26JStage7TObject" = 0x803c47e8;
|
||||
"__vt__Q26JStage7TSystem" = 0x803c4828;
|
||||
"__vt__Q37JStudio3ctb6TParse" = 0x803c4878;
|
||||
"__vt__Q37JGadget6binary19TParse_header_block" = 0x803c488c;
|
||||
"__vt__Q37JStudio3ctb8TFactory" = 0x803c48a0;
|
||||
"__vt__Q37JStudio3ctb8TControl" = 0x803c48b4;
|
||||
"__vt__Q37JStudio3ctb14TObject_TxyzRy" = 0x803c48c0;
|
||||
"__vt__Q37JStudio3ctb7TObject" = 0x803c48d0;
|
||||
"__vt__Q27JStudio22TFunctionValue_hermite" = 0x803c48e0;
|
||||
"__vt__Q27JStudio29TFunctionValue_list_parameter" = 0x803c4900;
|
||||
"__vt__Q27JStudio19TFunctionValue_list" = 0x803c4920;
|
||||
"__vt__Q27JStudio25TFunctionValue_transition" = 0x803c4940;
|
||||
"__vt__Q27JStudio23TFunctionValue_constant" = 0x803c4960;
|
||||
"__vt__Q27JStudio24TFunctionValue_composite" = 0x803c4980;
|
||||
"__vt__Q27JStudio14TFunctionValue" = 0x803c49a0;
|
||||
"__vt__Q37JStudio3fvb6TParse" = 0x803c4a1c;
|
||||
"__vt__Q37JStudio3fvb8TFactory" = 0x803c4a30;
|
||||
"__vt__Q37JStudio3fvb8TControl" = 0x803c4a44;
|
||||
"__vt__Q37JStudio3fvb15TObject_hermite" = 0x803c4a50;
|
||||
"__vt__Q37JStudio3fvb22TObject_list_parameter" = 0x803c4a60;
|
||||
"__vt__Q37JStudio3fvb12TObject_list" = 0x803c4a70;
|
||||
"__vt__Q37JStudio3fvb18TObject_transition" = 0x803c4a80;
|
||||
"__vt__Q37JStudio3fvb16TObject_constant" = 0x803c4a90;
|
||||
"__vt__Q37JStudio3fvb17TObject_composite" = 0x803c4aa0;
|
||||
"__vt__Q37JStudio3fvb7TObject" = 0x803c4ab0;
|
||||
"__vt__Q27JStudio6TParse" = 0x803c4ac0;
|
||||
"__vt__Q27JStudio8TFactory" = 0x803c4ae0;
|
||||
"__vt__Q27JStudio8TControl" = 0x803c4af4;
|
||||
"__vt__Q27JStudio13TObject_sound" = 0x803c533c;
|
||||
"__vt__Q27JStudio14TAdaptor_sound" = 0x803c535c;
|
||||
"__vt__Q27JStudio16TObject_particle" = 0x803c53ac;
|
||||
"__vt__Q27JStudio17TAdaptor_particle" = 0x803c53cc;
|
||||
"__vt__Q27JStudio15TObject_message" = 0x803c5418;
|
||||
"__vt__Q27JStudio13TObject_light" = 0x803c545c;
|
||||
"__vt__Q27JStudio14TAdaptor_light" = 0x803c547c;
|
||||
"__vt__Q27JStudio11TObject_fog" = 0x803c54a4;
|
||||
"__vt__Q27JStudio12TAdaptor_fog" = 0x803c54c4;
|
||||
"__vt__Q27JStudio14TObject_camera" = 0x803c54e4;
|
||||
"__vt__Q27JStudio15TAdaptor_camera" = 0x803c5504;
|
||||
"__vt__Q27JStudio20TObject_ambientLight" = 0x803c5540;
|
||||
"__vt__Q27JStudio21TAdaptor_ambientLight" = 0x803c5560;
|
||||
"__vt__Q27JStudio13TObject_actor" = 0x803c5580;
|
||||
"__vt__Q27JStudio14TAdaptor_actor" = 0x803c55a0;
|
||||
"__vt__Q27JStudio7TObject" = 0x803c55f0;
|
||||
"__vt__Q27JStudio8TAdaptor" = 0x803c5610;
|
||||
"__vt__Q37JStudio14TVariableValue13TOutput_none_" = 0x803c5630;
|
||||
"__vt__Q37JStudio14TVariableValue7TOutput" = 0x803c5640;
|
||||
"__vt__Q37JStudio28@unnamed@jstudio_object_cpp@54TOutputVariableValue_BOOL_<Q27JStudio14TAdaptor_sound>" = 0x803c5650;
|
||||
"__vt__Q37JStudio28@unnamed@jstudio_object_cpp@57TOutputVariableValue_BOOL_<Q27JStudio17TAdaptor_particle>" = 0x803c5660;
|
||||
"__vt__Q37JStudio28@unnamed@jstudio_object_cpp@54TOutputVariableValue_BOOL_<Q27JStudio14TAdaptor_light>" = 0x803c5670;
|
||||
"__vt__Q37JStudio28@unnamed@jstudio_object_cpp@55TOutputVariableValue_BOOL_<Q27JStudio15TAdaptor_camera>" = 0x803c5680;
|
||||
"__vt__Q37JStudio28@unnamed@jstudio_object_cpp@54TOutputVariableValue_BOOL_<Q27JStudio14TAdaptor_actor>" = 0x803c5690;
|
||||
"__vt__Q37JStudio3stb6TParse" = 0x803c56a0;
|
||||
"__vt__Q37JStudio3stb8TFactory" = 0x803c56c0;
|
||||
"__vt__Q37JStudio3stb8TControl" = 0x803c56d4;
|
||||
"__vt__Q37JStudio3stb15TObject_control" = 0x803c56e0;
|
||||
"__vt__Q37JStudio3stb7TObject" = 0x803c5700;
|
||||
"__vt__Q214JStudio_JStage13TCreateObject" = 0x803c5720;
|
||||
"__vt__Q314JStudio_JStage14TAdaptor_actor26TVVOutput_ANIMATION_FRAME_" = 0x803c57b4;
|
||||
"__vt__Q214JStudio_JStage14TAdaptor_actor" = 0x803c57c4;
|
||||
"__vt__Q214JStudio_JStage81TVariableValueOutput_object_<Q214JStudio_JStage14TAdaptor_actor,Q26JStage6TActor>" = 0x803c5864;
|
||||
"__vt__Q214JStudio_JStage21TAdaptor_ambientLight" = 0x803c5888;
|
||||
"__vt__Q214JStudio_JStage15TAdaptor_camera" = 0x803c5908;
|
||||
"__vt__Q214JStudio_JStage83TVariableValueOutput_object_<Q214JStudio_JStage15TAdaptor_camera,Q26JStage7TCamera>" = 0x803c5980;
|
||||
"__vt__Q214JStudio_JStage12TAdaptor_fog" = 0x803c59d0;
|
||||
"__vt__Q214JStudio_JStage77TVariableValueOutput_object_<Q214JStudio_JStage12TAdaptor_fog,Q26JStage4TFog>" = 0x803c5a10;
|
||||
"__vt__Q314JStudio_JStage14TAdaptor_light20TVVOutput_direction_" = 0x803c5a30;
|
||||
"__vt__Q214JStudio_JStage14TAdaptor_light" = 0x803c5a40;
|
||||
"__vt__Q215JStudio_JAudio213TCreateObject" = 0x803c5a68;
|
||||
"__vt__Q315JStudio_JAudio214TAdaptor_sound13TVVOSetValue_" = 0x803c5a78;
|
||||
"__vt__Q215JStudio_JAudio214TAdaptor_sound" = 0x803c5a88;
|
||||
"__vt__Q217JStudio_JParticle13TCreateObject" = 0x803c5ad8;
|
||||
"__vt__Q317JStudio_JParticle17TAdaptor_particle21TJPACallback_emitter_" = 0x803c5af0;
|
||||
"__vt__Q217JStudio_JParticle17TAdaptor_particle" = 0x803c5b0c;
|
||||
"__vt__13JASTaskThread" = 0x803c5b58;
|
||||
"__vt__19JASDefaultBankTable" = 0x803c5b68;
|
||||
"__vt__17JASBankTable<256>" = 0x803c5b74;
|
||||
"__vt__11JASBankList" = 0x803c5b80;
|
||||
"__vt__12JASSeqParser" = 0x803c7650;
|
||||
"__vt__12JASBasicBank" = 0x803c76a8;
|
||||
"__vt__7JASBank" = 0x803c76bc;
|
||||
"__vt__12JASVoiceBank" = 0x803c76d0;
|
||||
"__vt__12JASBasicInst" = 0x803c76e8;
|
||||
"__vt__7JASInst" = 0x803c76fc;
|
||||
"__vt__10JASDrumSet" = 0x803c7710;
|
||||
"__vt__Q216JASBasicWaveBank11TWaveHandle" = 0x803c7728;
|
||||
"__vt__Q216JASBasicWaveBank10TWaveGroup" = 0x803c773c;
|
||||
"__vt__13JASWaveHandle" = 0x803c7754;
|
||||
"__vt__16JASBasicWaveBank" = 0x803c7768;
|
||||
"__vt__11JASWaveBank" = 0x803c7780;
|
||||
"__vt__Q217JASSimpleWaveBank11TWaveHandle" = 0x803c7798;
|
||||
"__vt__17JASSimpleWaveBank" = 0x803c77ac;
|
||||
"__vt__10JASWaveArc" = 0x803c7820;
|
||||
"__vt__11JASDisposer" = 0x803c7838;
|
||||
"__vt__14JASAudioThread" = 0x803c78e0;
|
||||
"__vt__10JAIAudible" = 0x803c9820;
|
||||
"__vt__11JAIAudience" = 0x803c9838;
|
||||
"__vt__5JAISe" = 0x803c9858;
|
||||
"__vt__8JAISeMgr" = 0x803c98b0;
|
||||
"__vt__16JAISeCategoryMgr" = 0x803c98c4;
|
||||
"__vt__6JAISeq" = 0x803c98f4;
|
||||
"__vt__13JAISeqDataMgr" = 0x803c9928;
|
||||
"__vt__14JAISeqDataUser" = 0x803c9940;
|
||||
"__vt__9JAISeqMgr" = 0x803c9958;
|
||||
"__vt__8JAISound" = 0x803c9970;
|
||||
"__vt__12JAISoundInfo" = 0x803c99a0;
|
||||
"__vt__15JAISoundStarter" = 0x803c99c8;
|
||||
"__vt__9JAIStream" = 0x803c99d8;
|
||||
"__vt__16JAIStreamAramMgr" = 0x803c9a08;
|
||||
"__vt__16JAIStreamDataMgr" = 0x803c9a1c;
|
||||
"__vt__22JAUAudioArcInterpreter" = 0x803c9a30;
|
||||
"__vt__17JAUAudioArcLoader" = 0x803c9a78;
|
||||
"__vt__14JAUSectionHeap" = 0x803c9ac0;
|
||||
"__vt__16JAUBankTableLink" = 0x803c9af4;
|
||||
"__vt__12JAUBankTable" = 0x803c9b08;
|
||||
"__vt__Q228@unnamed@JAUSectionHeap_cpp@14TStreamDataMgr" = 0x803c9b14;
|
||||
"__vt__10JAUSection" = 0x803c9b24;
|
||||
"__vt__27JAUSeqDataMgr_SeqCollection" = 0x803c9b38;
|
||||
"__vt__32JAUStreamDataMgr_StreamFileTable" = 0x803c9b50;
|
||||
"__vt__Q28JMessage8TControl" = 0x803c9b60;
|
||||
"__vt__Q28JMessage19TRenderingProcessor" = 0x803c9b94;
|
||||
"__vt__Q28JMessage18TSequenceProcessor" = 0x803c9bd4;
|
||||
"__vt__Q28JMessage10TProcessor" = 0x803c9c2c;
|
||||
"__vt__Q28JMessage10TReference" = 0x803c9c6c;
|
||||
"__vt__Q28JMessage6TParse" = 0x803c9c94;
|
||||
"__vt__Q38JMessage18TResourceContainer10TCResource" = 0x803c9ca8;
|
||||
"__vt__Q27JGadget42TLinkList_factory<Q28JMessage9TResource,0>" = 0x803c9cbc;
|
||||
"__vt__16Z2AudioArcLoader" = 0x803c9cd0;
|
||||
"__vt__10Z2SoundMgr" = 0x803c9d70;
|
||||
"__vt__14Z2SoundStarter" = 0x803c9d80;
|
||||
"__vt__11Z2SoundInfo" = 0x803cac48;
|
||||
"__vt__10Z2Audience" = 0x803cac98;
|
||||
"__vt__9Z2Audible" = 0x803cacb8;
|
||||
"__vt__15Z2SoundObjAnime" = 0x803cacd0;
|
||||
"__vt__15Z2SoundObjArrow" = 0x803cacf0;
|
||||
"__vt__16Z2SoundObjSimple" = 0x803cad10;
|
||||
"__vt__21Z2DopplerSoundObjBase" = 0x803cad30;
|
||||
"__vt__14Z2SoundObjBase" = 0x803cad50;
|
||||
"__vt__12Z2CreatureOI" = 0x803cb780;
|
||||
"__vt__13Z2CreatureGob" = 0x803cb7b0;
|
||||
"__vt__12Z2CreatureFM" = 0x803cb7e0;
|
||||
"__vt__18Z2SoundObjBeeGroup" = 0x803cb810;
|
||||
"__vt__16Z2CreatureSumomo" = 0x803cb830;
|
||||
"__vt__15Z2CreatureEnemy" = 0x803cb860;
|
||||
"__vt__17Z2CreatureCitizen" = 0x803cb890;
|
||||
"__vt__10Z2Creature" = 0x803cb8c0;
|
||||
"__vt__15Z2SoundObjCoach" = 0x803cb8f0;
|
||||
"__vt__18Z2RideSoundStarter" = 0x803cb910;
|
||||
"__vt__14Z2CreatureRide" = 0x803cb924;
|
||||
"__vt__18Z2LinkSoundStarter" = 0x803cb96c;
|
||||
"__vt__14Z2CreatureLink" = 0x803cb980;
|
||||
"__vt__15Z2SpeechStarter" = 0x803cbf24;
|
||||
"__vt__10Z2AudioMgr" = 0x803cbf38;
|
||||
"__vt__26JAUStreamStaticAramMgr_<1>" = 0x803cbf44;
|
||||
"__vt__24JAUStreamAramMgrBase_<1>" = 0x803cbf58;
|
||||
"__vt__7JKRHeap" = 0x803cbf70;
|
||||
"__vt__10JKRExpHeap" = 0x803cbfd0;
|
||||
"__vt__12JKRSolidHeap" = 0x803cc030;
|
||||
"__vt__13JKRAssertHeap" = 0x803cc090;
|
||||
"__vt__11JKRDisposer" = 0x803cc0f0;
|
||||
"__vt__15JKRThreadSwitch" = 0x803cc100;
|
||||
"__vt__9JKRThread" = 0x803cc114;
|
||||
"__vt__7JKRAram" = 0x803cc158;
|
||||
"__vt__11JKRAramHeap" = 0x803cc168;
|
||||
"__vt__12JKRAramBlock" = 0x803cc178;
|
||||
"__vt__13JKRAramStream" = 0x803cc1b8;
|
||||
"__vt__13JKRFileLoader" = 0x803cc1c8;
|
||||
"__vt__12JKRDvdFinder" = 0x803cc208;
|
||||
"__vt__12JKRArcFinder" = 0x803cc218;
|
||||
"__vt__13JKRFileFinder" = 0x803cc228;
|
||||
"__vt__12JKRFileCache" = 0x803cc238;
|
||||
"__vt__10JKRArchive" = 0x803cc288;
|
||||
"__vt__13JKRMemArchive" = 0x803cc2d8;
|
||||
"__vt__7JKRFile" = 0x803cc328;
|
||||
"__vt__14JKRAramArchive" = 0x803cc348;
|
||||
"__vt__13JKRDvdArchive" = 0x803cc398;
|
||||
"__vt__14JKRCompArchive" = 0x803cc3e8;
|
||||
"__vt__10JKRDvdFile" = 0x803cc438;
|
||||
"__vt__9JKRDecomp" = 0x803cc4a0;
|
||||
"__vt__20JSURandomInputStream" = 0x803cc4b0;
|
||||
"__vt__14JSUInputStream" = 0x803cc4d4;
|
||||
"__vt__20JSUMemoryInputStream" = 0x803cc4f0;
|
||||
"__vt__18JSUFileInputStream" = 0x803cc518;
|
||||
"__vt__12JUTCacheFont" = 0x803cc540;
|
||||
"__vt__12JUTGraphFifo" = 0x803cc590;
|
||||
"__vt__10JUTResFont" = 0x803cc5a0;
|
||||
"__vt__10JUTGamePad" = 0x803cc610;
|
||||
"__vt__12JUTException" = 0x803cc6a4;
|
||||
"__vt__8JUTVideo" = 0x803cc980;
|
||||
"__vt__8JUTFader" = 0x803cc990;
|
||||
"__vt__10JUTConsole" = 0x803cc9a8;
|
||||
"__vt__14J2DGrafContext" = 0x803cc9b8;
|
||||
"__vt__13J2DOrthoGraph" = 0x803cc9e0;
|
||||
"__vt__15J2DIndBlockNull" = 0x803cca08;
|
||||
"__vt__11J2DIndBlock" = 0x803cca40;
|
||||
"__vt__11J2DMaterial" = 0x803cca78;
|
||||
"__vt__13J2DColorBlock" = 0x803cca84;
|
||||
"__vt__15J2DIndBlockFull" = 0x803cca90;
|
||||
"__vt__13J2DTevBlock16" = 0x803ccac8;
|
||||
"__vt__12J2DTevBlock8" = 0x803ccb84;
|
||||
"__vt__12J2DTevBlock4" = 0x803ccc40;
|
||||
"__vt__12J2DTevBlock2" = 0x803cccfc;
|
||||
"__vt__12J2DTevBlock1" = 0x803ccdb8;
|
||||
"__vt__11J2DTevBlock" = 0x803cce74;
|
||||
"__vt__14J2DTexGenBlock" = 0x803ccf30;
|
||||
"__vt__8J2DPrint" = 0x803ccfa0;
|
||||
"__vt__7J2DPane" = 0x803ccfd0;
|
||||
"__vt__9J2DScreen" = 0x803cd068;
|
||||
"__vt__9J2DWindow" = 0x803cd108;
|
||||
"__vt__10J2DPicture" = 0x803cd1d8;
|
||||
"__vt__10J2DTextBox" = 0x803cd328;
|
||||
"__vt__11J2DWindowEx" = 0x803cd3e8;
|
||||
"__vt__12J2DPictureEx" = 0x803cd4b8;
|
||||
"__vt__12J2DTextBoxEx" = 0x803cd608;
|
||||
"__vt__20J2DAnmFullLoader_v15" = 0x803cd6c8;
|
||||
"__vt__19J2DAnmKeyLoader_v15" = 0x803cd6dc;
|
||||
"__vt__12J2DAnmLoader" = 0x803cd6f0;
|
||||
"__vt__20J2DAnmVisibilityFull" = 0x803cd704;
|
||||
"__vt__14J2DAnmVtxColor" = 0x803cd714;
|
||||
"__vt__15J2DAnmTevRegKey" = 0x803cd728;
|
||||
"__vt__16J2DAnmTexPattern" = 0x803cd738;
|
||||
"__vt__19J2DAnmTextureSRTKey" = 0x803cd748;
|
||||
"__vt__17J2DAnmVtxColorKey" = 0x803cd758;
|
||||
"__vt__18J2DAnmVtxColorFull" = 0x803cd76c;
|
||||
"__vt__14J2DAnmColorKey" = 0x803cd780;
|
||||
"__vt__15J2DAnmColorFull" = 0x803cd794;
|
||||
"__vt__11J2DAnmColor" = 0x803cd7a8;
|
||||
"__vt__18J2DAnmTransformKey" = 0x803cd7bc;
|
||||
"__vt__19J2DAnmTransformFull" = 0x803cd7d4;
|
||||
"__vt__14J3DShapePacket" = 0x803cd940;
|
||||
"__vt__12J3DMatPacket" = 0x803cd954;
|
||||
"__vt__13J3DDrawPacket" = 0x803cd968;
|
||||
"__vt__9J3DPacket" = 0x803cd97c;
|
||||
"__vt__28J3DShapeMtxYBBoardConcatView" = 0x803cdb84;
|
||||
"__vt__27J3DShapeMtxBBoardConcatView" = 0x803cdbac;
|
||||
"__vt__26J3DShapeMtxMultiConcatView" = 0x803cdbd4;
|
||||
"__vt__16J3DShapeMtxMulti" = 0x803cdbfc;
|
||||
"__vt__21J3DShapeMtxConcatView" = 0x803cdc1c;
|
||||
"__vt__11J3DShapeMtx" = 0x803cdc44;
|
||||
"__vt__12J3DShapeDraw" = 0x803cdc68;
|
||||
"__vt__8J3DShape" = 0x803cdc78;
|
||||
"__vt__17J3DLockedMaterial" = 0x803cdc90;
|
||||
"__vt__18J3DPatchedMaterial" = 0x803cdcc0;
|
||||
"__vt__11J3DMaterial" = 0x803cdcf0;
|
||||
"__vt__10J3DPEBlock" = 0x803cdd20;
|
||||
"__vt__15J3DIndBlockNull" = 0x803cdd9c;
|
||||
"__vt__11J3DIndBlock" = 0x803cdde8;
|
||||
"__vt__14J3DTexGenBlock" = 0x803cde34;
|
||||
"__vt__13J3DColorBlock" = 0x803cdea0;
|
||||
"__vt__14J3DPEBlockFull" = 0x803cdff0;
|
||||
"__vt__16J3DPEBlockFogOff" = 0x803ce06c;
|
||||
"__vt__13J3DTevBlock16" = 0x803ce0e8;
|
||||
"__vt__12J3DTevBlock4" = 0x803ce1c4;
|
||||
"__vt__12J3DTevBlock2" = 0x803ce2a0;
|
||||
"__vt__12J3DTevBlock1" = 0x803ce37c;
|
||||
"__vt__18J3DTevBlockPatched" = 0x803ce458;
|
||||
"__vt__19J3DTexGenBlockBasic" = 0x803ce534;
|
||||
"__vt__15J3DTexGenBlock4" = 0x803ce5a0;
|
||||
"__vt__21J3DTexGenBlockPatched" = 0x803ce60c;
|
||||
"__vt__20J3DColorBlockLightOn" = 0x803ce678;
|
||||
"__vt__22J3DColorBlockAmbientOn" = 0x803ce708;
|
||||
"__vt__13J3DPEBlockXlu" = 0x803ce798;
|
||||
"__vt__17J3DPEBlockTexEdge" = 0x803ce814;
|
||||
"__vt__13J3DPEBlockOpa" = 0x803ce890;
|
||||
"__vt__15J3DIndBlockFull" = 0x803ce90c;
|
||||
"__vt__11J3DTevBlock" = 0x803ce958;
|
||||
"__vt__21J3DColorBlockLightOff" = 0x803cea34;
|
||||
"__vt__12J3DJointTree" = 0x803cecf4;
|
||||
"__vt__13J3DShapeTable" = 0x803ced08;
|
||||
"__vt__12J3DModelData" = 0x803ced14;
|
||||
"__vt__8J3DModel" = 0x803ced20;
|
||||
"__vt__12J3DMtxBuffer" = 0x803ced44;
|
||||
"__vt__16J3DAnmTexPattern" = 0x803ced50;
|
||||
"__vt__15J3DAnmTevRegKey" = 0x803ced60;
|
||||
"__vt__14J3DAnmColorKey" = 0x803ced70;
|
||||
"__vt__15J3DAnmColorFull" = 0x803ced84;
|
||||
"__vt__11J3DAnmColor" = 0x803ced98;
|
||||
"__vt__17J3DAnmVtxColorKey" = 0x803cedac;
|
||||
"__vt__18J3DAnmVtxColorFull" = 0x803cedc0;
|
||||
"__vt__14J3DAnmVtxColor" = 0x803cedd4;
|
||||
"__vt__16J3DAnmClusterKey" = 0x803cede8;
|
||||
"__vt__13J3DAnmCluster" = 0x803cedfc;
|
||||
"__vt__17J3DAnmClusterFull" = 0x803cee10;
|
||||
"__vt__19J3DAnmTextureSRTKey" = 0x803cee24;
|
||||
"__vt__27J3DAnmTransformFullWithLerp" = 0x803cee34;
|
||||
"__vt__19J3DAnmTransformFull" = 0x803cee48;
|
||||
"__vt__14J3DMaterialAnm" = 0x803cee60;
|
||||
"__vt__13J3DSkinDeform" = 0x803cee70;
|
||||
"__vt__16J3DMaterialTable" = 0x803cee80;
|
||||
"__vt__14J3DPEBlockNull" = 0x803cee90;
|
||||
"__vt__15J3DTevBlockNull" = 0x803cef0c;
|
||||
"__vt__18J3DTexGenBlockNull" = 0x803cefe8;
|
||||
"__vt__17J3DColorBlockNull" = 0x803cf054;
|
||||
"__vt__20J3DClusterLoader_v15" = 0x803cf0e8;
|
||||
"__vt__16J3DClusterLoader" = 0x803cf0f8;
|
||||
"__vt__18J3DModelLoader_v21" = 0x803cf108;
|
||||
"__vt__18J3DModelLoader_v26" = 0x803cf14c;
|
||||
"__vt__83J3DMtxCalcNoAnm<32J3DMtxCalcCalcTransformSoftimage,29J3DMtxCalcJ3DSysInitSoftimage>" = 0x803cf190;
|
||||
"__vt__75J3DMtxCalcNoAnm<28J3DMtxCalcCalcTransformBasic,25J3DMtxCalcJ3DSysInitBasic>" = 0x803cf1bc;
|
||||
"__vt__10J3DTexture" = 0x803cf1e8;
|
||||
"__vt__14J3DModelLoader" = 0x803cf1f4;
|
||||
"__vt__19J3DAnmKeyLoader_v15" = 0x803cf238;
|
||||
"__vt__20J3DAnmFullLoader_v15" = 0x803cf24c;
|
||||
"__vt__12J3DAnmLoader" = 0x803cf260;
|
||||
"__vt__20J3DAnmVisibilityFull" = 0x803cf274;
|
||||
|
||||
}
|
||||
FORCEACTIVE {
|
||||
set__17dSv_horse_place_cFPCcRC4cXyzsSc
|
||||
|
|
@ -54,4 +785,4 @@ extabindex 80005660 - 800056BC
|
|||
.sbss 80450B00 - 80451A00
|
||||
.sdata2 80451A00 - 80456B60
|
||||
.sbss2 80456B60 - 80456BC8
|
||||
*/
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -3,20 +3,31 @@
|
|||
#include "JSystem/JKernel/JKRHeap/JKRHeap.h"
|
||||
|
||||
// #include "JSystem/JKernel/asm/func_802D147C.s"
|
||||
JKRDisposer::JKRDisposer() : __vt(&lbl_803CC0F0), ptr_link(this) {
|
||||
this->heap = JKRHeap::findFromRoot(this);
|
||||
JKRDisposer::JKRDisposer() : ptr_link(this) {
|
||||
this->heap = JKRHeap::findFromRoot(this);
|
||||
if (this->heap != 0) {
|
||||
this->heap->disposable_list.append(&this->ptr_link);
|
||||
}
|
||||
}
|
||||
|
||||
// Almost. Missing three instructions, something
|
||||
// to do with the destruction of JSUPtrLink
|
||||
/*
|
||||
Super close.
|
||||
|
||||
This is what we expected: (from Ghidra)
|
||||
if (this != (JKRDisposer *)&DAT_fffffff8) {
|
||||
JSUPtrLink::~JSUPtrLink(&this->ptr_link,0);
|
||||
}
|
||||
|
||||
But the compiler generate code like this instead: (no if and -1 instead of 0)
|
||||
JSUPtrLink::~JSUPtrLink(&this->ptr_link,-1);
|
||||
|
||||
Maybe we are using the wrong compiler?
|
||||
*/
|
||||
#ifdef NONMATCHING
|
||||
JKRDisposer::~JKRDisposer() {
|
||||
this->__vt = lbl_803CC0F0;
|
||||
if (this->heap != NULL) {
|
||||
this->heap->disposable_list.remove(&this->ptr_link);
|
||||
JKRHeap* heap = this->heap;
|
||||
if (heap != 0) {
|
||||
heap->disposable_list.remove(&this->ptr_link);
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -1,11 +1,21 @@
|
|||
#include "JSystem/JKernel/JKRHeap/JKRHeap.h"
|
||||
#include "global.h"
|
||||
|
||||
// Initializing the members seems to be weird because of
|
||||
// the way we're using vtables.
|
||||
/*
|
||||
Very close! When initialzing child_list(true) it will use less register then the asm code.
|
||||
- 2cb0b0: 3b 5f 00 40 addi r26,r31,64
|
||||
- 2cb0b4: 7f 43 d3 78 mr r3,r26
|
||||
- 2cb0b8: 48 00 dd 9d bl 0x2d8e54
|
||||
- 2cb0bc: 38 7a 00 0c addi r3,r26,12
|
||||
|
||||
+ 2cb0b0: 38 7f 00 40 addi r3,r31,64
|
||||
+ 2cb0b4: 38 80 00 01 li r4,1
|
||||
+ 2cb0b8: 48 00 dd 01 bl 0x2d8db8
|
||||
+ 2cb0bc: 38 7f 00 4c addi r3,r31,76
|
||||
*/
|
||||
#ifdef NONMATCHING
|
||||
JKRHeap::JKRHeap(void* data, u32 size, JKRHeap* parent, bool error_flag)
|
||||
: __base(), __vt(lbl_803CBF70), child_list(true), heap_link(this), disposable_list(true) {
|
||||
: JKRDisposer(), child_list(true), heap_link(this), disposable_list(true) {
|
||||
OSInitMutex(this->mutex);
|
||||
this->size = size;
|
||||
this->begin = (u32)data;
|
||||
|
|
@ -89,19 +99,10 @@ JKRHeap* JKRHeap::becomeCurrentHeap() {
|
|||
return prev;
|
||||
}
|
||||
|
||||
// All virtual calls seems to only use r12
|
||||
// but emulating the call with use another
|
||||
// register (r4 in this case).
|
||||
#ifdef NONMATCHING
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE448.s"
|
||||
void JKRHeap::destroy() {
|
||||
(*this->__vt->do_destroy)(this);
|
||||
this->do_destroy();
|
||||
}
|
||||
#else
|
||||
asm void JKRHeap::destroy() {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE448.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE474.s"
|
||||
void* JKRHeap::alloc(u32 size, int alignment, JKRHeap* heap) {
|
||||
|
|
@ -116,17 +117,10 @@ void* JKRHeap::alloc(u32 size, int alignment, JKRHeap* heap) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
// Same problem as with all other virtual calls.
|
||||
#ifdef NONMATCHING
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE4D4.s"
|
||||
void* JKRHeap::alloc(u32 size, int alignment) {
|
||||
return (*this->__vt->do_alloc)(this, size, alignment);
|
||||
return this->do_alloc(size, alignment);
|
||||
}
|
||||
#else
|
||||
asm void* JKRHeap::alloc(u32 size, int alignment) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE4D4.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE500.s"
|
||||
void JKRHeap::free(void* ptr, JKRHeap* heap) {
|
||||
|
|
@ -138,46 +132,25 @@ void JKRHeap::free(void* ptr, JKRHeap* heap) {
|
|||
heap->free(ptr);
|
||||
}
|
||||
|
||||
// Same problem as with all other virtual calls.
|
||||
#ifdef NONMATCHING
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE548.s"
|
||||
void JKRHeap::free(void* ptr) {
|
||||
(*this->__vt->do_free)(this, ptr);
|
||||
this->do_free(ptr);
|
||||
}
|
||||
#else
|
||||
asm void JKRHeap::free(void* ptr) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE548.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
asm void JKRHeap::callAllDisposer() {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE574.s"
|
||||
}
|
||||
|
||||
// Same problem as with all other virtual calls.
|
||||
#ifdef NONMATCHING
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE5CC.s"
|
||||
void JKRHeap::freeAll() {
|
||||
(*this->__vt->do_freeAll)(this);
|
||||
this->do_freeAll();
|
||||
}
|
||||
#else
|
||||
asm void JKRHeap::freeAll() {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE5CC.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
// Same problem as with all other virtual calls.
|
||||
#ifdef NONMATCHING
|
||||
void JKRHeap::freeAll() {
|
||||
(*this->__vt->do_freeTail)(this);
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE5F8.s"
|
||||
void JKRHeap::freeTail() {
|
||||
this->do_freeTail();
|
||||
}
|
||||
#else
|
||||
asm void JKRHeap::freeTail() {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE5F8.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE624.s"
|
||||
s32 JKRHeap::resize(void* ptr, u32 size, JKRHeap* heap) {
|
||||
|
|
@ -189,17 +162,10 @@ s32 JKRHeap::resize(void* ptr, u32 size, JKRHeap* heap) {
|
|||
return heap->resize(ptr, size);
|
||||
}
|
||||
|
||||
// Same problem as with all other virtual calls.
|
||||
#ifdef NONMATCHING
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE684.s"
|
||||
s32 JKRHeap::resize(void* ptr, u32 size) {
|
||||
return (*this->__vt->do_resize)(this, ptr, size);
|
||||
return this->do_resize(ptr, size);
|
||||
}
|
||||
#else
|
||||
asm s32 JKRHeap::resize(void* ptr, u32 size) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE684.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE6B0.s"
|
||||
s32 JKRHeap::getSize(void* ptr, JKRHeap* heap) {
|
||||
|
|
@ -211,68 +177,34 @@ s32 JKRHeap::getSize(void* ptr, JKRHeap* heap) {
|
|||
return heap->getSize(ptr);
|
||||
}
|
||||
|
||||
// Same problem as with all other virtual calls.
|
||||
#ifdef NONMATCHING
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE700.s"
|
||||
s32 JKRHeap::getSize(void* ptr) {
|
||||
return (*this->__vt->do_getSize)(this, ptr);
|
||||
return this->do_getSize(ptr);
|
||||
}
|
||||
#else
|
||||
asm s32 JKRHeap::getSize(void* ptr) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE700.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
// Same problem as with all other virtual calls.
|
||||
#ifdef NONMATCHING
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE72C.s"
|
||||
s32 JKRHeap::getFreeSize() {
|
||||
return (*this->__vt->do_getFreeSize)(this);
|
||||
return this->do_getFreeSize();
|
||||
}
|
||||
#else
|
||||
asm s32 JKRHeap::getFreeSize() {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE72C.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
// Same problem as with all other virtual calls.
|
||||
#ifdef NONMATCHING
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE758.s"
|
||||
s32 JKRHeap::getMaxFreeBlock() {
|
||||
return (*this->__vt->do_getMaxFreeBlock)(this);
|
||||
return this->do_getMaxFreeBlock();
|
||||
}
|
||||
#else
|
||||
asm s32 JKRHeap::getMaxFreeBlock() {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE758.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
// Same problem as with all other virtual calls.
|
||||
#ifdef NONMATCHING
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE784.s"
|
||||
s32 JKRHeap::getTotalFreeSize() {
|
||||
return (*this->__vt->do_getTotalFreeSize)(this);
|
||||
return this->do_getTotalFreeSize();
|
||||
}
|
||||
#else
|
||||
asm s32 JKRHeap::getTotalFreeSize() {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE784.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
// Same problem as with all other virtual calls.
|
||||
#ifdef NONMATCHING
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE7B0.s"
|
||||
u8 JKRHeap::changeGroupID(u8 param_1) {
|
||||
return (*this->__vt->go_changeGroupID)(this, param_1);
|
||||
return this->do_changeGroupID(param_1);
|
||||
}
|
||||
#else
|
||||
asm u8 JKRHeap::changeGroupID(u8 param_1) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE7B0.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
asm s32 JKRHeap::getMaxAllocatableSize(int alignment){nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE7DC.s"
|
||||
asm s32 JKRHeap::getMaxAllocatableSize(int alignment) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CE7DC.s"
|
||||
}
|
||||
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CE83C.s"
|
||||
|
|
@ -316,10 +248,21 @@ void JKRHeap::dispose(void* begin, void* end) {
|
|||
this->dispose_subroutine((u32)begin, (u32)end);
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void JKRHeap::dispose() {
|
||||
JSUPtrLink* node;
|
||||
JKRDisposer* disposable;
|
||||
while (node = this->disposable_list.head, node != NULL) {
|
||||
disposable = (JKRDisposer*)node->owner;
|
||||
disposable->~JKRDisposer();
|
||||
}
|
||||
}
|
||||
#else
|
||||
asm void JKRHeap::dispose() {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRHeap/asm/func_802CEAC0.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CEB18.s"
|
||||
void JKRHeap::copyMemory(void* dst, void* src, u32 size) {
|
||||
|
|
@ -357,12 +300,12 @@ asm bool JKRHeap::isSubHeap(JKRHeap* heap) const {
|
|||
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CEC4C.s"
|
||||
void* operator new(u32 size) {
|
||||
return JKRHeap::alloc(size, 4, (JKRHeap*)NULL);
|
||||
return JKRHeap::alloc(size, 4, NULL);
|
||||
}
|
||||
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CEC74.s"
|
||||
void* operator new(u32 size, int alignment) {
|
||||
return JKRHeap::alloc(size, alignment, (JKRHeap*)NULL);
|
||||
return JKRHeap::alloc(size, alignment, NULL);
|
||||
}
|
||||
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CEC98.s"
|
||||
|
|
@ -372,12 +315,12 @@ void* operator new(u32 size, JKRHeap* heap, int alignment) {
|
|||
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CECC4.s"
|
||||
void* operator new[](u32 size) {
|
||||
return JKRHeap::alloc(size, 4, (JKRHeap*)NULL);
|
||||
return JKRHeap::alloc(size, 4, NULL);
|
||||
}
|
||||
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CECEC.s"
|
||||
void* operator new[](u32 size, int alignment) {
|
||||
return JKRHeap::alloc(size, alignment, (JKRHeap*)NULL);
|
||||
return JKRHeap::alloc(size, alignment, NULL);
|
||||
}
|
||||
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CED10.s"
|
||||
|
|
@ -387,12 +330,10 @@ void* operator new[](u32 size, JKRHeap* heap, int alignment) {
|
|||
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CED3C.s"
|
||||
void operator delete(void* ptr) {
|
||||
JKRHeap::free(ptr, (JKRHeap*)NULL);
|
||||
JKRHeap::free(ptr, NULL);
|
||||
}
|
||||
|
||||
// #include "JSystem/JKernel/JKRHeap/asm/func_802CED60.s"
|
||||
void operator delete[](void* ptr) {
|
||||
JKRHeap::free(ptr, (JKRHeap*)NULL);
|
||||
JKRHeap::free(ptr, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
#include "global.h"
|
||||
|
||||
// #include "JSupport/asm/func_802DBDFC.s"
|
||||
JSUPtrLink::JSUPtrLink(void* param_1) {
|
||||
this->list = (JSUPtrList*)NULL;
|
||||
this->unk0 = param_1;
|
||||
this->prev = (JSUPtrLink*)NULL;
|
||||
this->next = (JSUPtrLink*)NULL;
|
||||
JSUPtrLink::JSUPtrLink(void* owner) {
|
||||
this->list = NULL;
|
||||
this->owner = owner;
|
||||
this->prev = NULL;
|
||||
this->next = NULL;
|
||||
}
|
||||
|
||||
// #include "JSupport/asm/func_802DBE14.s"
|
||||
|
|
@ -32,7 +32,7 @@ JSUPtrList::~JSUPtrList() {
|
|||
JSUPtrLink* node = this->head;
|
||||
s32 removed = 0;
|
||||
while (this->length > removed) {
|
||||
node->list = (JSUPtrList*)NULL;
|
||||
node->list = NULL;
|
||||
node = node->next;
|
||||
removed += 1;
|
||||
}
|
||||
|
|
@ -40,16 +40,16 @@ JSUPtrList::~JSUPtrList() {
|
|||
|
||||
// #include "JSupport/asm/func_802DBF14.s"
|
||||
void JSUPtrList::initiate() {
|
||||
this->head = (JSUPtrLink*)NULL;
|
||||
this->tail = (JSUPtrLink*)NULL;
|
||||
this->head = NULL;
|
||||
this->tail = NULL;
|
||||
this->length = 0;
|
||||
}
|
||||
|
||||
// #include "JSupport/asm/func_802DBF28.s"
|
||||
void JSUPtrList::setFirst(JSUPtrLink* first) {
|
||||
first->list = this;
|
||||
first->prev = (JSUPtrLink*)NULL;
|
||||
first->next = (JSUPtrLink*)NULL;
|
||||
first->prev = NULL;
|
||||
first->next = NULL;
|
||||
this->tail = first;
|
||||
this->head = first;
|
||||
this->length = 1;
|
||||
|
|
@ -58,7 +58,7 @@ void JSUPtrList::setFirst(JSUPtrLink* first) {
|
|||
// #include "JSupport/asm/func_802DBF4C.s"
|
||||
bool JSUPtrList::append(JSUPtrLink* ptr) {
|
||||
JSUPtrList* list = ptr->list;
|
||||
bool result = ((JSUPtrList*)NULL == list);
|
||||
bool result = (NULL == list);
|
||||
if (!result) {
|
||||
result = list->remove(ptr);
|
||||
}
|
||||
|
|
@ -69,7 +69,7 @@ bool JSUPtrList::append(JSUPtrLink* ptr) {
|
|||
} else {
|
||||
ptr->list = this;
|
||||
ptr->prev = this->tail;
|
||||
ptr->next = (JSUPtrLink*)NULL;
|
||||
ptr->next = NULL;
|
||||
this->tail->next = ptr;
|
||||
this->tail = ptr;
|
||||
this->length++;
|
||||
|
|
@ -82,7 +82,7 @@ bool JSUPtrList::append(JSUPtrLink* ptr) {
|
|||
// #include "JSupport/asm/func_802DBFF0.s"
|
||||
bool JSUPtrList::prepend(JSUPtrLink* ptr) {
|
||||
JSUPtrList* list = ptr->list;
|
||||
bool result = ((JSUPtrList*)NULL == list);
|
||||
bool result = (NULL == list);
|
||||
if (!result) {
|
||||
result = list->remove(ptr);
|
||||
}
|
||||
|
|
@ -107,7 +107,7 @@ bool JSUPtrList::prepend(JSUPtrLink* ptr) {
|
|||
bool JSUPtrList::insert(JSUPtrLink* before, JSUPtrLink* ptr) {
|
||||
if (before == this->head) {
|
||||
return this->prepend(ptr);
|
||||
} else if (before == (JSUPtrLink*)NULL) {
|
||||
} else if (before == NULL) {
|
||||
return this->append(ptr);
|
||||
}
|
||||
|
||||
|
|
@ -115,7 +115,7 @@ bool JSUPtrList::insert(JSUPtrLink* before, JSUPtrLink* ptr) {
|
|||
return false;
|
||||
}
|
||||
|
||||
bool result = ((JSUPtrList*)NULL == ptr->list);
|
||||
bool result = (NULL == ptr->list);
|
||||
if (!result) {
|
||||
result = ptr->list->remove(ptr);
|
||||
}
|
||||
|
|
@ -138,20 +138,20 @@ bool JSUPtrList::remove(JSUPtrLink* ptr) {
|
|||
bool is_parent = (ptr->list == this);
|
||||
if (is_parent) {
|
||||
if (this->length == 1) {
|
||||
this->head = (JSUPtrLink*)NULL;
|
||||
this->tail = (JSUPtrLink*)NULL;
|
||||
this->head = NULL;
|
||||
this->tail = NULL;
|
||||
} else if (ptr == this->head) {
|
||||
ptr->next->prev = (JSUPtrLink*)NULL;
|
||||
ptr->next->prev = NULL;
|
||||
this->head = ptr->next;
|
||||
} else if (ptr == this->tail) {
|
||||
ptr->prev->next = (JSUPtrLink*)NULL;
|
||||
ptr->prev->next = NULL;
|
||||
this->tail = ptr->prev;
|
||||
} else {
|
||||
ptr->prev->next = ptr->next;
|
||||
ptr->next->prev = ptr->prev;
|
||||
}
|
||||
|
||||
ptr->list = (JSUPtrList*)NULL;
|
||||
ptr->list = NULL;
|
||||
this->length--;
|
||||
}
|
||||
|
||||
|
|
@ -161,7 +161,7 @@ bool JSUPtrList::remove(JSUPtrLink* ptr) {
|
|||
// #include "JSupport/asm/func_802DC20C.s"
|
||||
JSUPtrLink* JSUPtrList::getNthLink(u32 index) const {
|
||||
if (index >= this->length) {
|
||||
return (JSUPtrLink*)NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
JSUPtrLink* node = this->head;
|
||||
|
|
|
|||
|
|
@ -427,7 +427,6 @@ TEXT_O_FILES := \
|
|||
$(BUILD_DIR)/asm/JKernel/JKRSolidHeap.o \
|
||||
$(BUILD_DIR)/asm/JKernel/JKRAssertHeap.o \
|
||||
$(BUILD_DIR)/libs/JSystem/JKernel/JKRDisposer.o \
|
||||
$(BUILD_DIR)/asm/JKernel/JKRDisposer.o \
|
||||
$(BUILD_DIR)/asm/JKernel/JKRThread.o \
|
||||
$(BUILD_DIR)/asm/JKernel/JKRAram.o \
|
||||
$(BUILD_DIR)/asm/JKernel/JKRAramHeap.o \
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# Build artifacts
|
||||
*.exe
|
||||
elf2dol
|
||||
vtable.lcf
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
BANNER = """
|
||||
# This script is will go through the frameworkF.map and extract
|
||||
# all vtables and their location. This information can be used to
|
||||
# place the compiler generated vtables in their correct place.
|
||||
# - Julgodis, 2020
|
||||
"""
|
||||
|
||||
def extract():
|
||||
file = open('frameworkF.map', 'r')
|
||||
lines = file.readlines()
|
||||
output = open('vtable.lcf', 'w')
|
||||
|
||||
for line in lines:
|
||||
data = [ x.strip() for x in line.strip().split(" ") ]
|
||||
data = [ x for x in data if len(x) > 0 ]
|
||||
if len(data) < 6 or len(data) > 7:
|
||||
continue
|
||||
|
||||
if not data[4].startswith("__vt"):
|
||||
continue
|
||||
|
||||
output.write("\"%s\" = %s;\n" % (data[4], "0x" + data[2]))
|
||||
output.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
|
||||
print(BANNER)
|
||||
print("...")
|
||||
extract()
|
||||
print("COMPLETE vtable.lcf")
|
||||
Loading…
Reference in New Issue