Merge pull request #305 from bgsamm/d_main

Matches for d_main, d_sys, & mpls
This commit is contained in:
robojumper
2026-04-09 08:14:45 +02:00
committed by GitHub
34 changed files with 1218 additions and 95 deletions
+6
View File
@@ -23,6 +23,7 @@ toBeSorted/unk_sorajima_list.cpp:
toBeSorted/mpls.cpp:
.text start:0x80006CE0 end:0x80006E08 align:16
.data start:0x804FD060 end:0x804FD0B8
.sdata start:0x80571440 end:0x80571450
.sbss start:0x80574FA8 end:0x80574FB0
toBeSorted/mdl_base.cpp:
@@ -256,6 +257,7 @@ d/d_lang.cpp:
d/d_main.cpp:
.text start:0x80054F90 end:0x80055170 align:16
.sbss start:0x805751D0 end:0x805751E0
.bss start:0x80597758 end:0x80597A70
d/d_pad.cpp:
.text start:0x80055170 end:0x8005961C align:16
@@ -322,7 +324,11 @@ d/d_stage_parse.cpp:
d/d_sys.cpp:
.text start:0x80064250 end:0x80064F28 align:16
.ctors start:0x804DB694 end:0x804DB698
.rodata start:0x804E0C98 end:0x804E0F18
.data start:0x8050DE58 end:0x8050DF10
.sbss start:0x80575228 end:0x80575248
.sdata2 start:0x80577928 end:0x80577930
.bss start:0x805A0720 end:0x805A0778
d/d_sys_init.cpp:
.text start:0x80064F30 end:0x80065034 align:16
+80 -76
View File
@@ -135,13 +135,13 @@ _bss_init_info = .init:0x800066FC; // type:object size:0x20 scope:global data:4b
@eti_80006BD8 = extabindex:0x80006BD8; // type:object size:0xC scope:local hidden
@eti_80006BE4 = extabindex:0x80006BE4; // type:object size:0xC scope:local hidden
_eti_init_info = extabindex:0x80006BF0; // type:object size:0x20 scope:global
fn_80006C20 = .text:0x80006C20; // type:function size:0x4
unknownStub = .text:0x80006C20; // type:function size:0x4
strequals = .text:0x80006C30; // type:function size:0x90
findSMA2 = .text:0x80006CC0; // type:function size:0x10
findSMA3 = .text:0x80006CD0; // type:function size:0x10
fn_80006CE0 = .text:0x80006CE0; // type:function size:0x80
fn_80006D60 = .text:0x80006D60; // type:function size:0x60
fn_80006DC0 = .text:0x80006DC0; // type:function size:0x48
initialize__4MplsFiPPc = .text:0x80006CE0; // type:function size:0x80
tryLaunchMovie__4MplsFv = .text:0x80006D60; // type:function size:0x60
forceLaunchMovie__4MplsFv = .text:0x80006DC0; // type:function size:0x48
fn_80006E10 = .text:0x80006E10; // type:function size:0x3C
fn_80006E50 = .text:0x80006E50; // type:function size:0x58
printGameInfo__Fv = .text:0x80006EB0; // type:function size:0xBC scope:local
@@ -552,7 +552,7 @@ create__3d2dFPQ23EGG4Heap = .text:0x80016630; // type:function size:0x58
setLytAllocator__3d2dFv = .text:0x80016690; // type:function size:0xC
fn_800166A0 = .text:0x800166A0; // type:function size:0x58
create__3d3dFPQ23EGG4Heap = .text:0x80016700; // type:function size:0x160
fn_80016860 = .text:0x80016860; // type:function size:0x28
fn_80016860__3d3dFv = .text:0x80016860; // type:function size:0x28
createLightTextures__3d3dFv = .text:0x80016890; // type:function size:0x98
fn_80016930 = .text:0x80016930; // type:function size:0x2C
worldToScreen__3d3dFR7mVec3_cRC7mVec3_c = .text:0x80016960; // type:function size:0x130
@@ -581,7 +581,7 @@ create3__Q23d3d13AnmMdlWrapperFR9dAcBase_cPvPvPCcPCcPQ33m3d5mdl_c13mdlCallback_c
setAnm__Q23d3d14AnmMdlWrapper2FPCcQ23m3d10playMode_ef = .text:0x80017290; // type:function size:0xEC
insertNode__3d3dFPQ23d3d12SomeListNodeff = .text:0x80017380; // type:function size:0xAC
clearList__3d3dFv = .text:0x80017430; // type:function size:0xCC
fn_80017500 = .text:0x80017500; // type:function size:0x1DC
fn_80017500__3d3dFv = .text:0x80017500; // type:function size:0x1DC
fn_800176E0 = .text:0x800176E0; // type:function size:0x10
unk2__3d3dFRQ34nw4r3g3d6ResMatRQ34nw4r3g3d14ResMatTevColorP13ActorLighting = .text:0x800176F0; // type:function size:0x418
setRoomTevColors__3d3dFQ34nw4r3g3d6ResMdlib = .text:0x80017B10; // type:function size:0x1D4
@@ -2236,12 +2236,12 @@ __sinit_\d_heap_cpp = .text:0x80054F00; // type:function size:0x30 scope:local
getCurrentLanguage1__Fv = .text:0x80054F30; // type:function size:0x4
getCurrentLanguage2__Fv = .text:0x80054F40; // type:function size:0x4
getCurrentLanguage__Fv = .text:0x80054F50; // type:function size:0x38
fn_80054F90 = .text:0x80054F90; // type:function size:0x18
fn_80054FB0 = .text:0x80054FB0; // type:function size:0x24
fn_80054FE0 = .text:0x80054FE0; // type:function size:0x20
dMain__Create = .text:0x80055000; // type:function size:0x28
dMain__Execute = .text:0x80055030; // type:function size:0x14
dMain__main01 = .text:0x80055050; // type:function size:0x28
fn_80054F90__FUl = .text:0x80054F90; // type:function size:0x18
fn_80054FB0__FUl = .text:0x80054FB0; // type:function size:0x24
fn_80054FE0__FUl = .text:0x80054FE0; // type:function size:0x20
Create__5dMainFv = .text:0x80055000; // type:function size:0x28
Execute__5dMainFv = .text:0x80055030; // type:function size:0x14
main01__5dMainFPv = .text:0x80055050; // type:function size:0x28
main = .text:0x80055080; // type:function size:0xE4 scope:global
control_mpls_callback__4dPadFll = .text:0x80055170; // type:function size:0x38
isDeviceTypeMpls__4dPadFUl = .text:0x800551B0; // type:function size:0x24
@@ -2780,10 +2780,10 @@ staticExecute__8dScene_cFv = .text:0x80062D00; // type:function size:0x68
setRootActor__8dScene_cFQ28fProfile14PROFILE_NAME_eUlll = .text:0x80062D70; // type:function size:0x30
__dt__8dScene_cFv = .text:0x80062DA0; // type:function size:0x5C scope:weak
__sinit_\d_scene_cpp = .text:0x80062E00; // type:function size:0x3C scope:local
fn_80062E40 = .text:0x80062E40; // type:function size:0x4
fn_80062E50 = .text:0x80062E50; // type:function size:0x60
fn_80062EB0 = .text:0x80062EB0; // type:function size:0x4
fn_80062EC0 = .text:0x80062EC0; // type:function size:0x4
fn_80062E40__6dStateFv = .text:0x80062E40; // type:function size:0x4
fn_80062E50__6dStateFv = .text:0x80062E50; // type:function size:0x60
fn_80062EB0__6dStateFv = .text:0x80062EB0; // type:function size:0x4
fn_80062EC0__6dStateFv = .text:0x80062EC0; // type:function size:0x4
handleBzsPcam__FiPC14BzsSectionHead = .text:0x80062ED0; // type:function size:0x1C scope:local
handleBzsLyse__FiPC14BzsSectionHead = .text:0x80062EF0; // type:function size:0x20 scope:local
handleBzsStif__FiPC14BzsSectionHead = .text:0x80062F10; // type:function size:0x54 scope:local
@@ -2822,32 +2822,32 @@ parseStageBzs__FiPCv = .text:0x80064070; // type:function size:0x7C
parseRoomBzs__FiPCv = .text:0x800640F0; // type:function size:0x70
parseRoomReactivateBzs__FiPCv = .text:0x80064160; // type:function size:0x70
parseRoomActivateBzs__FiPCv = .text:0x800641D0; // type:function size:0x7C
dSys_c__initAudioMgr = .text:0x80064250; // type:function size:0xB0
dSys_c__beginRender = .text:0x80064300; // type:function size:0x38
dSys_c__endRender = .text:0x80064340; // type:function size:0x18
dSys_c__beginFrame = .text:0x80064360; // type:function size:0x68
EGG__ConfigurationData__onBeginFrame = .text:0x800643D0; // type:function size:0x4
dSys_c__endFrame = .text:0x800643E0; // type:function size:0x48
EGG__ConfigurationData__onEndFrame = .text:0x80064430; // type:function size:0x4
dSys_c__setBlack = .text:0x80064440; // type:function size:0x80
initAudioMgr__6dSys_cFPQ23EGG4Heap = .text:0x80064250; // type:function size:0xB0
beginRender__6dSys_cFv = .text:0x80064300; // type:function size:0x38
endRender__6dSys_cFv = .text:0x80064340; // type:function size:0x18
beginFrame__6dSys_cFv = .text:0x80064360; // type:function size:0x68
onBeginFrame__Q23EGG126TSystem<Q23EGG5Video,Q23EGG12AsyncDisplay,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG12ProcessMeter>Fv = .text:0x800643D0; // type:function size:0x4
endFrame__6dSys_cFv = .text:0x800643E0; // type:function size:0x48
onEndFrame__Q23EGG126TSystem<Q23EGG5Video,Q23EGG12AsyncDisplay,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG12ProcessMeter>Fv = .text:0x80064430; // type:function size:0x4
setBlack__6dSys_cFb = .text:0x80064440; // type:function size:0x80
setFrameRate__6dSys_cFUc = .text:0x800644C0; // type:function size:0x10
getFrameRate__6dSys_cFv = .text:0x800644D0; // type:function size:0x10
setClearColor__6dSys_cFQ34nw4r2ut5Color = .text:0x800644E0; // type:function size:0x60
dSys_c__getClearColor = .text:0x80064540; // type:function size:0x14
dSys_c__create = .text:0x80064560; // type:function size:0x3BC
getClearColor__6dSys_cFv = .text:0x80064540; // type:function size:0x14
create__6dSys_cFv = .text:0x80064560; // type:function size:0x3BC
setPosParam__Q23EGG14CoreControllerFff = .text:0x80064920; // type:function size:0x8
EGG__TSystem__initialize = .text:0x80064930; // type:function size:0x1F4
dSys_c__execute = .text:0x80064B30; // type:function size:0x268
dSystem__fixHeaps = .text:0x80064DA0; // type:function size:0xB8
dSystem__init = .text:0x80064E60; // type:function size:0x34
EGG__ConfigurationData__initRenderMode = .text:0x80064EA0; // type:function size:0x4
getVideo = .text:0x80064EB0; // type:function size:0x8
getSystemHeap = .text:0x80064EC0; // type:function size:0x8
getDisplay = .text:0x80064ED0; // type:function size:0x8
getXfbManager = .text:0x80064EE0; // type:function size:0x8
getPerfView = .text:0x80064EF0; // type:function size:0x14
getSceneMgr = .text:0x80064F10; // type:function size:0x8
getAudioMgr = .text:0x80064F20; // type:function size:0x8
initialize__Q23EGG126TSystem<Q23EGG5Video,Q23EGG12AsyncDisplay,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG12ProcessMeter>Fv = .text:0x80064930; // type:function size:0x1F4
execute__6dSys_cFv = .text:0x80064B30; // type:function size:0x268
fixHeaps__7dSystemFv = .text:0x80064DA0; // type:function size:0xB8
__sinit_\d_sys_cpp = .text:0x80064E60; // type:function size:0x34 scope:local
initRenderMode__Q23EGG126TSystem<Q23EGG5Video,Q23EGG12AsyncDisplay,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG12ProcessMeter>Fv = .text:0x80064EA0; // type:function size:0x4
getVideo__Q23EGG126TSystem<Q23EGG5Video,Q23EGG12AsyncDisplay,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG12ProcessMeter>Fv = .text:0x80064EB0; // type:function size:0x8
getSystemHeap__Q23EGG126TSystem<Q23EGG5Video,Q23EGG12AsyncDisplay,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG12ProcessMeter>Fv = .text:0x80064EC0; // type:function size:0x8
getDisplay__Q23EGG126TSystem<Q23EGG5Video,Q23EGG12AsyncDisplay,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG12ProcessMeter>Fv = .text:0x80064ED0; // type:function size:0x8
getXfbMgr__Q23EGG126TSystem<Q23EGG5Video,Q23EGG12AsyncDisplay,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG12ProcessMeter>Fv = .text:0x80064EE0; // type:function size:0x8
getPerfView__Q23EGG126TSystem<Q23EGG5Video,Q23EGG12AsyncDisplay,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG12ProcessMeter>Fv = .text:0x80064EF0; // type:function size:0x14
getSceneMgr__Q23EGG126TSystem<Q23EGG5Video,Q23EGG12AsyncDisplay,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG12ProcessMeter>Fv = .text:0x80064F10; // type:function size:0x8
getAudioMgr__Q23EGG126TSystem<Q23EGG5Video,Q23EGG12AsyncDisplay,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG12ProcessMeter>Fv = .text:0x80064F20; // type:function size:0x8
fn_80064F30 = .text:0x80064F30; // type:function size:0x24
fn_80064F60 = .text:0x80064F60; // type:function size:0x2C
fn_80064F90 = .text:0x80064F90; // type:function size:0x30
@@ -8504,8 +8504,8 @@ fn_80152C30 = .text:0x80152C30; // type:function size:0xE8
fn_80152D20 = .text:0x80152D20; // type:function size:0x54
fn_80152D80 = .text:0x80152D80; // type:function size:0x5C
create__18dLytSystemWindow_cFv = .text:0x80152DE0; // type:function size:0x3C
fn_80152E20 = .text:0x80152E20; // type:function size:0xC8
fn_80152EF0 = .text:0x80152EF0; // type:function size:0x8
fn_80152E20__18dLytSystemWindow_cFv = .text:0x80152E20; // type:function size:0xC8
fn_80152EF0__18dLytSystemWindow_cFv = .text:0x80152EF0; // type:function size:0x8
fn_80152F00 = .text:0x80152F00; // type:function size:0x8
fn_80152F10__18dLytSystemWindow_cFv = .text:0x80152F10; // type:function size:0x10
setSelectBtn__18dLytSystemWindow_cFff = .text:0x80152F20; // type:function size:0x18
@@ -10250,8 +10250,8 @@ dAcOInsect_0xA4__12dAcOInsect_cFv = .text:0x80190660; // type:function size:0x8
__dt__12dAcOInsect_cFv = .text:0x80190670; // type:function size:0xA0
fn_80190710 = .text:0x80190710; // type:function size:0x14
fn_80190730 = .text:0x80190730; // type:function size:0x48
fn_80190780 = .text:0x80190780; // type:function size:0x40
fn_801907C0 = .text:0x801907C0; // type:function size:0x4
fn_80190780__15SaveTimeRelatedFPQ23EGG4Heap = .text:0x80190780; // type:function size:0x40
fn_801907C0__15SaveTimeRelatedFv = .text:0x801907C0; // type:function size:0x4
fn_801907D0__15SaveTimeRelatedFv = .text:0x801907D0; // type:function size:0x1C
fn_801907F0__15SaveTimeRelatedFv = .text:0x801907F0; // type:function size:0x38
fn_80190830 = .text:0x80190830; // type:function size:0x50
@@ -17224,7 +17224,7 @@ my_vprintf__4sLibFPCcP16__va_list_struct = .text:0x802DEF90; // type:function si
printf__4sLibFPCce = .text:0x802DEFE0; // type:function size:0x80
OSReport = .text:0x802DF060; // type:function size:0x80 scope:global
OSVReport = .text:0x802DF0E0; // type:function size:0x4 scope:global
cCounter_c__clear = .text:0x802DF0F0; // type:function size:0x10
clear__10cCounter_cFv = .text:0x802DF0F0; // type:function size:0x10
__dt__24DynamicModuleControlBaseFv = .text:0x802DF100; // type:function size:0xA0
__ct__24DynamicModuleControlBaseFv = .text:0x802DF1A0; // type:function size:0x48
link__24DynamicModuleControlBaseFv = .text:0x802DF1F0; // type:function size:0x94
@@ -17283,7 +17283,7 @@ cM__rad2s = .text:0x802E0A50; // type:function size:0x5C
cM__U_GetAtanTable = .text:0x802E0AB0; // type:function size:0x34
atan2s__2cMFff = .text:0x802E0AF0; // type:function size:0x1BC
atan2f__2cMFff = .text:0x802E0CB0; // type:function size:0x48
cM__initRnd = .text:0x802E0D00; // type:function size:0x8
initRnd__2cMFl = .text:0x802E0D00; // type:function size:0x8
rnd__2cMFv = .text:0x802E0D10; // type:function size:0x8
rndInt__2cMFi = .text:0x802E0D20; // type:function size:0x58
rndF__2cMFf = .text:0x802E0D80; // type:function size:0x38
@@ -28185,17 +28185,17 @@ roomStageHandlers = .rodata:0x804E0C00; // type:object size:0x10 scope:local
stageRoomHandlers = .rodata:0x804E0C10; // type:object size:0x10 scope:local
roomHandlers = .rodata:0x804E0C20; // type:object size:0x60 scope:local
roomReactivateHandlers = .rodata:0x804E0C80; // type:object size:0x18 scope:local
lbl_804E0C98 = .rodata:0x804E0C98; // type:object size:0x3C
lbl_804E0CD4 = .rodata:0x804E0CD4; // type:object size:0x3C
lbl_804E0D10 = .rodata:0x804E0D10; // type:object size:0x3C
lbl_804E0D4C = .rodata:0x804E0D4C; // type:object size:0x3C
lbl_804E0D88 = .rodata:0x804E0D88; // type:object size:0x3C
lbl_804E0DC4 = .rodata:0x804E0DC4; // type:object size:0x3C
lbl_804E0E00 = .rodata:0x804E0E00; // type:object size:0x3C
lbl_804E0E3C = .rodata:0x804E0E3C; // type:object size:0x3C
lbl_804E0E78 = .rodata:0x804E0E78; // type:object size:0x3C
lbl_804E0EB4 = .rodata:0x804E0EB4; // type:object size:0x3C
lbl_804E0EF0 = .rodata:0x804E0EF0; // type:object size:0x28
gRMO_Pal60_608x456Prog_16x9 = .rodata:0x804E0C98; // type:object size:0x3C
gRMO_Pal60_608x456IntDf_16x9 = .rodata:0x804E0CD4; // type:object size:0x3C
gRMO_Pal50_608x456IntDf_16x9 = .rodata:0x804E0D10; // type:object size:0x3C
gRMO_Ntsc_608x456Prog_16x9 = .rodata:0x804E0D4C; // type:object size:0x3C
gRMO_Ntsc_608x456IntDf_16x9 = .rodata:0x804E0D88; // type:object size:0x3C
gRMO_Pal60_608x456Prog_4x3 = .rodata:0x804E0DC4; // type:object size:0x3C
gRMO_Pal60_608x456IntDf_4x3 = .rodata:0x804E0E00; // type:object size:0x3C
gRMO_Pal50_608x456IntDf_4x3 = .rodata:0x804E0E3C; // type:object size:0x3C
gRMO_Ntsc_608x456Prog_4x3 = .rodata:0x804E0E78; // type:object size:0x3C
gRMO_Ntsc_608x456IntDf_4x3 = .rodata:0x804E0EB4; // type:object size:0x3C
gSysRenderModeObjSet = .rodata:0x804E0EF0; // type:object size:0x28
@LOCAL@ModeProc__Q26dReset8Manage_cFv@procs = .rodata:0x804E0F18; // type:object size:0x48 scope:local
@LOCAL@ModeRequest__Q26dReset8Manage_cFQ36dReset8Manage_c6Mode_e@procs = .rodata:0x804E0F60; // type:object size:0x48 scope:local
sInfos = .rodata:0x804E0FA8; // type:object size:0x246C scope:local data:4byte
@@ -29272,10 +29272,11 @@ gTRKMemMap = .rodata:0x804FCFC0; // type:object size:0x10 data:4byte
lbl_804FCFD0 = .rodata:0x804FCFD0; // type:object size:0x28 data:4byte
lbl_804FCFF8 = .rodata:0x804FCFF8; // type:object size:0x28 data:4byte
lbl_804FD020 = .rodata:0x804FD020; // type:object size:0x28 data:4byte
lbl_804FD060 = .data:0x804FD060; // type:object size:0xB data:string
lbl_804FD06C = .data:0x804FD06C; // type:object size:0xC data:string
lbl_804FD078 = .data:0x804FD078; // type:object size:0x1B data:string
lbl_804FD094 = .data:0x804FD094; // type:object size:0x24
@805 = .data:0x804FD060; // type:object size:0xB data:string
@806 = .data:0x804FD06C; // type:object size:0xC data:string
@810 = .data:0x804FD078; // type:object size:0x1B data:string
@812 = .data:0x804FD094; // type:object size:0x12 data:string
@815 = .data:0x804FD0A8; // type:object size:0xB data:string
lbl_804FD0B8 = .data:0x804FD0B8; // type:object size:0x10
@5819 = .data:0x804FD0C8; // type:object size:0x10 scope:local data:string
...data.0 = .data:0x804FD0C8; // type:label scope:local
@@ -30885,10 +30886,13 @@ __vt__24daPlBaseScnObjCallback_c = .data:0x8050DDB8; // type:object size:0x20
@4670 = .data:0x8050DDE8; // type:object size:0xB scope:local data:string
__vt__8dScene_c = .data:0x8050DDF8; // type:object size:0x4C
@23343 = .data:0x8050DE48; // type:object size:0xE scope:local data:string
lbl_8050DE58 = .data:0x8050DE58; // type:object size:0x5C
lbl_8050DEB4 = .data:0x8050DEB4; // type:object size:0xD data:string
lbl_8050DEC4 = .data:0x8050DEC4; // type:object size:0xE data:string
RootHeapsManager__EGG__T_System<>__Configuration__vtable = .data:0x8050DED4; // type:object size:0x3C
@25556 = .data:0x8050DE58; // type:object size:0x11 scope:local data:string
@25619 = .data:0x8050DE6C; // type:object size:0x15 scope:local data:string
@25620 = .data:0x8050DE84; // type:object size:0x15 scope:local data:string
@25621 = .data:0x8050DE9C; // type:object size:0x15 scope:local data:string
@25756 = .data:0x8050DEB4; // type:object size:0xD scope:local data:string
@25757 = .data:0x8050DEC4; // type:object size:0xE scope:local data:string
__vt__Q23EGG126TSystem<Q23EGG5Video,Q23EGG12AsyncDisplay,Q23EGG10XfbManager,Q23EGG14SimpleAudioMgr,Q23EGG12SceneManager,Q23EGG12ProcessMeter> = .data:0x8050DED4; // type:object size:0x3C
lbl_8050DF10 = .data:0x8050DF10; // type:object size:0x18
@9033 = .data:0x8050DF28; // type:object size:0x11 scope:local data:string
@9034 = .data:0x8050DF3C; // type:object size:0x11 scope:local data:string
@@ -39712,8 +39716,8 @@ jumptable_805713B0 = .data:0x805713B0; // type:object size:0x1C scope:local
jumptable_805713CC = .data:0x805713CC; // type:object size:0x1C scope:local
@stringBase0 = .data:0x805713E8; // type:object size:0x30 scope:local data:string_table
gTRKExceptionStatus = .data:0x80571418; // type:object size:0x10 scope:local data:4byte
lbl_80571440 = .sdata:0x80571440; // type:object size:0x8
lbl_80571448 = .sdata:0x80571448; // type:object size:0x8 data:string
@813 = .sdata:0x80571440; // type:object size:0x8
@813 = .sdata:0x80571448; // type:object size:0x8 data:string
@5820 = .sdata:0x80571450; // type:object size:0x3 scope:local data:string
@5822 = .sdata:0x80571454; // type:object size:0x4 scope:local data:string
@5824 = .sdata:0x80571458; // type:object size:0x5 scope:local data:string
@@ -42057,9 +42061,9 @@ __float_huge = .sdata:0x80574F8C; // type:object size:0x4 align:4 data:float
__double_huge = .sdata:0x80574F90; // type:object size:0x8 align:8 data:double
lbl_80574FA0 = .sbss:0x80574FA0; // type:object size:0x4 data:4byte
lbl_80574FA4 = .sbss:0x80574FA4; // type:object size:0x4 data:4byte
lbl_80574FA8 = .sbss:0x80574FA8; // type:object size:0x1 data:byte
lbl_80574FA9 = .sbss:0x80574FA9; // type:object size:0x1 data:byte
lbl_80574FAA = .sbss:0x80574FAA; // type:object size:0x6 data:byte
sMplsInitialized = .sbss:0x80574FA8; // type:object size:0x1 data:byte
sSkipMplsMovie = .sbss:0x80574FA9; // type:object size:0x1 data:byte
sIsNormalMode = .sbss:0x80574FAA; // type:object size:0x1 data:byte
sButtonSequencePtr = .sbss:0x80574FB0; // type:object size:0x4 scope:local data:4byte
sAsserted = .sbss:0x80574FB4; // type:object size:0x1 scope:local data:byte
@GUARD@exceptionCreate__FPQ23EGG4Heap@mapFile = .sbss:0x80574FB5; // type:object size:0x1 scope:local data:byte
@@ -42179,8 +42183,8 @@ layoutEx2Heap__5dHeap = .sbss:0x805751BC; // type:object size:0x4 data:4byte
layoutResHeap__5dHeap = .sbss:0x805751C0; // type:object size:0x4 data:4byte
fontHeap__5dHeap = .sbss:0x805751C4; // type:object size:0x4 data:4byte
HBMHeap__5dHeap = .sbss:0x805751C8; // type:object size:0x4 data:4byte
lbl_805751D0 = .sbss:0x805751D0; // type:object size:0x8 data:4byte
dMain__g_InitialTime = .sbss:0x805751D8; // type:object size:0x8 data:4byte
lbl_805751D0 = .sbss:0x805751D0; // type:object size:0x4 data:4byte
g_InitialTime = .sbss:0x805751D8; // type:object size:0x8 data:4byte
m_connected__Q24dPad4ex_c = .sbss:0x805751E0; // type:object size:0x4
sInstance__13dPadManager_c = .sbss:0x805751E8; // type:object size:0x8 data:4byte
LINK_ROT = .sbss:0x805751F0; // type:object size:0x2 data:2byte
@@ -42202,8 +42206,8 @@ ms_RootHeapMem2__6dSys_c = .sbss:0x80575230; // type:object size:0x4 data:4byte
s_OrgMEM1ArenaLo__7dSystem = .sbss:0x80575234; // type:object size:0x4 data:4byte
s_NewMEM1ArenaLo__7dSystem = .sbss:0x80575238; // type:object size:0x4 data:4byte
s_OrgMEM1ArenaHi__7dSystem = .sbss:0x8057523C; // type:object size:0x4 data:4byte
s_NewMEM1ArenaHi__7dSystem = .sbss:0x80575240; // type:object size:0x8 data:4byte
dSystem__myDylinkInitPhase = .sbss:0x80575248; // type:object size:0x8
s_NewMEM1ArenaHi__7dSystem = .sbss:0x80575240; // type:object size:0x4 data:4byte
myDylinkInitPhase__7dSystem = .sbss:0x80575248; // type:object size:0x8
sInstance__18ArcCallbackHandler = .sbss:0x80575250; // type:object size:0x8 data:4byte
aspectRatio = .sbss:0x80575258; // type:object size:0x4 align:4 data:float
sInstance__8dCsMgr_c = .sbss:0x80575260; // type:object size:0x4 data:4byte
@@ -42664,7 +42668,7 @@ Ydchuff = .sbss:0x80575B60; // type:object size:0x8 data:4byte
sm_numberMemo__10sStateID_c = .sbss:0x80575B68; // type:object size:0x4 data:4byte
sAssertCallback__7sAssert = .sbss:0x80575B70; // type:object size:0x4 data:4byte
m_gameFrame__10cCounter_c = .sbss:0x80575B78; // type:object size:0x4 data:4byte
lbl_80575B7C = .sbss:0x80575B7C; // type:object size:0x4 data:4byte
m_unkCounter__10cCounter_c = .sbss:0x80575B7C; // type:object size:0x4 data:4byte
mFirst__24DynamicModuleControlBase = .sbss:0x80575B80; // type:object size:0x4 data:4byte
mLast__24DynamicModuleControlBase = .sbss:0x80575B84; // type:object size:0x4 data:4byte
sAllocBytes__20DynamicModuleControl = .sbss:0x80575B88; // type:object size:0x4 data:4byte
@@ -44186,8 +44190,8 @@ lbl_80577910 = .sdata2:0x80577910; // type:object size:0x4 align:4 data:float
lbl_80577914 = .sdata2:0x80577914; // type:object size:0x4 align:4 data:float
lbl_80577918 = .sdata2:0x80577918; // type:object size:0x4 align:4 data:float
roomActivateHandlers = .sdata2:0x80577920; // type:object size:0x8 scope:local
lbl_80577928 = .sdata2:0x80577928; // type:object size:0x4 align:4 data:float
lbl_8057792C = .sdata2:0x8057792C; // type:object size:0x4 align:4 data:float
@25622 = .sdata2:0x80577928; // type:object size:0x4 align:4 data:float
@25623 = .sdata2:0x8057792C; // type:object size:0x4 align:4 data:float
lbl_80577930 = .sdata2:0x80577930; // type:object size:0x8 align:8 data:double
lbl_80577938 = .sdata2:0x80577938; // type:object size:0x8 align:8 data:double
lbl_80577940 = .sdata2:0x80577940; // type:object size:0x4 align:4 data:float
@@ -44976,7 +44980,7 @@ lbl_805779E0 = .sdata2:0x805779E0; // type:object size:0x4 align:4 data:float
@808 = .sdata2:0x80579118; // type:object size:0x8 scope:local data:string
@809 = .sdata2:0x80579120; // type:object size:0x8 scope:local data:string
@810 = .sdata2:0x80579128; // type:object size:0x8 scope:local data:string
@811 = .sdata2:0x80579130; // type:object size:0x8 scope:local data:string
@813 = .sdata2:0x80579130; // type:object size:0x8 scope:local data:string
@812 = .sdata2:0x80579138; // type:object size:0x8 scope:local data:string
@813 = .sdata2:0x80579140; // type:object size:0x7 scope:local data:string
@814 = .sdata2:0x80579148; // type:object size:0x7 scope:local data:string
+3 -3
View File
@@ -410,9 +410,9 @@ config.libs = [
"scratch_preset_id": 169,
"progress_category": "game",
"objects": [
Object(NonMatching, "toBeSorted/d_lib.cpp"),
Object(Matching, "toBeSorted/d_lib.cpp"),
Object(NonMatching, "toBeSorted/unk_sorajima_list.cpp"),
Object(NonMatching, "toBeSorted/mpls.cpp"),
Object(Matching, "toBeSorted/mpls.cpp"),
Object(NonMatching, "toBeSorted/mdl_base.cpp"),
Object(Matching, "toBeSorted/d_exception.cpp"),
Object(NonMatching, "toBeSorted/d_jstudio.cpp"),
@@ -465,7 +465,7 @@ config.libs = [
Object(Matching, "d/d_scene.cpp"),
Object(NonMatching, "d/d_state.cpp"),
Object(Matching, "d/d_stage_parse.cpp"),
Object(NonMatching, "d/d_sys.cpp"),
Object(Matching, "d/d_sys.cpp"),
Object(NonMatching, "d/d_sys_init.cpp"),
Object(Matching, "toBeSorted/arc_callback_handler.cpp"),
Object(NonMatching, "d/d_video.cpp"),
+11
View File
@@ -9,8 +9,19 @@ public:
return m_gameFrame;
}
static void IncrementGameFrame() {
m_gameFrame++;
}
static void IncrementUnkCounter() {
m_unkCounter++;
}
static void clear();
private:
static s32 m_gameFrame;
static s32 m_unkCounter;
};
#endif
+1 -1
View File
@@ -12,7 +12,7 @@ public:
typedef void (*MenuInitCallback)();
static void CreateInstance();
static void CreateInstance(EGG::Heap *);
static Manage_c *GetInstance();
Manage_c(EGG::Heap *);
+14
View File
@@ -0,0 +1,14 @@
#ifndef D_MAIN_H
#define D_MAIN_H
#include "rvl/OS.h"
namespace dMain {
void Create();
void Execute();
void *main01(void *arg);
}; // namespace dMain
#endif // D_MAIN_H
+4
View File
@@ -19,6 +19,10 @@ public:
static dBase_c *staticExecute();
static void setRootActor(fProfile::PROFILE_NAME_e rootActor, u32 params, s32 fadeInType, s32 fadeOutType);
static dFader_c *getFader() {
return &sFader;
}
protected:
static dFader_c sFader;
};
+13
View File
@@ -0,0 +1,13 @@
#ifndef D_STATE_H
#define D_STATE_H
namespace dState {
void fn_80062E40();
void fn_80062E50();
void fn_80062EB0();
bool fn_80062EC0();
}
#endif // D_STATE_H
+35
View File
@@ -3,18 +3,53 @@
#include "common.h"
#include "egg/core/eggHeap.h"
#include "egg/core/eggProcessMeter.h"
#include "egg/core/eggSystem.h"
#include "nw4r/ut/ut_Color.h"
#define ROUND_UP_4KB(x) (((u32)(x) + 4096 - 1) & ~(4096 - 1))
typedef EGG::TSystem<
EGG::Video, EGG::AsyncDisplay, EGG::XfbManager, EGG::SimpleAudioMgr, EGG::SceneManager, EGG::ProcessMeter>
System;
class dSndMgr_c;
class dSys_c {
public:
static dSndMgr_c *initAudioMgr(EGG::Heap *heap);
static void beginRender();
static void endRender();
static void beginFrame();
static void endFrame();
static bool setBlack(bool);
/* Frame rate values: 1 - 60fps, 2 - 30fps */
static void setFrameRate(u8);
static u8 getFrameRate();
static void setClearColor(nw4r::ut::Color clr);
static nw4r::ut::Color getClearColor();
static void create();
static void execute();
public:
static System *ms_configuration_p;
static EGG::Heap *ms_RootHeapMem1;
static EGG::Heap *ms_RootHeapMem2;
};
namespace dSystem {
extern void *s_OrgMEM1ArenaLo;
extern void *s_NewMEM1ArenaLo;
extern void *s_OrgMEM1ArenaHi;
extern void *s_NewMEM1ArenaHi;
void fixHeaps();
}; // namespace dSystem
#endif
+12
View File
@@ -0,0 +1,12 @@
#ifndef D_SYS_INIT_H
#define D_SYS_INIT_H
#include "s/s_Phase.hpp"
namespace dSystem {
extern sPhase_c myDylinkInitPhase;
}
#endif // D_SYS_INIT_H
+2
View File
@@ -80,6 +80,8 @@ public:
s32 getField_0xDE0() const;
bool getField_0xDFC() const;
void fn_80152E20();
void fn_80152EF0();
void fn_80152F10();
bool fn_80152F50() const;
bool fn_80152F60() const;
+4
View File
@@ -346,6 +346,10 @@ public:
sConnectCallback = cb;
}
static void setWPADWorkSize(u32 size) {
sWPADWorkSize = size;
}
private:
CoreControllerMgr();
+4
View File
@@ -58,6 +58,10 @@ public:
mClearColor = color;
}
u32 getClearZ() {
return mClearZ;
}
public:
static u32 sTickPeriod;
};
+1 -1
View File
@@ -39,7 +39,7 @@ public:
/* vt 0x24 */ virtual bool open(const char *path, void *);
public:
void initialize();
static void initialize();
DvdFile();
void initiate();
s32 sync();
+14
View File
@@ -0,0 +1,14 @@
#ifndef EGG_PROCESS_METER_H
#define EGG_PROCESS_METER_H
#include "egg/core/eggThread.h"
namespace EGG {
class PerformanceView {};
class ProcessMeter : public Thread, public PerformanceView {};
};
#endif // EGG_PROCESS_METER_H
+68 -9
View File
@@ -2,30 +2,37 @@
#define EGG_SYSTEM_H
#include "common.h"
#include "egg/core/eggHeap.h"
#include "egg/core/eggVideo.h"
namespace EGG {
class Display;
class XfbManager;
class Heap;
class PerformanceView;
class SceneManager;
class SimpleAudioMgr;
class Thread;
class Video;
class XfbManager;
class ConfigurationData {
public:
inline ConfigurationData() : mSystemHeapSize(0x89000) {}
// vtable at 0x0
/* vt 0x08 */ virtual Video *getVideo() = 0;
/* vt 0x0C */ virtual Heap *getSystemHeap() = 0;
/* vt 0x10 */ virtual Display *getDisplay() = 0;
/* vt 0x14 */ virtual XfbManager *getXfbMgr() = 0;
/* vt 0x18 */ virtual void getPerfView() = 0;
/* vt 0x1C */ virtual void getScnMgr() = 0;
/* vt 0x20 */ virtual void getAudioMgr() = 0;
/* vt 0x18 */ virtual PerformanceView *getPerfView() = 0;
/* vt 0x1C */ virtual SceneManager *getSceneMgr() = 0;
/* vt 0x20 */ virtual SimpleAudioMgr *getAudioMgr() = 0;
/* vt 0x24 */ virtual void onBeginFrame();
/* vt 0x28 */ virtual void onEndFrame();
/* vt 0x2C */ virtual void initRenderMode();
/* vt 0x30 */ virtual void initMemory();
/* vt 0x34 */ virtual void run();
/* vt 0x38 */ virtual void initialize() = 0;
public:
/* 0x04 */ u32 mRoot1HeapStart;
@@ -41,12 +48,11 @@ public:
/* 0x2C */ u32 field_0x2C;
/* 0x30 */ u32 mSystemHeapStart;
/* 0x34 */ u32 mSystemHeapSize;
/* 0x38 */ u32 mGraphicsFifoSize;
/* 0x3C */ u32 field_0x3C;
};
class BaseSystem {
public:
static ConfigurationData *mConfigData;
static XfbManager *getXfbMgr() {
return mConfigData->getXfbMgr();
}
@@ -59,7 +65,60 @@ public:
};
template <class TVideo, class TDisplay, class TXfbManager, class TAudioManager, class TSceneManager, class TPerfView>
class TSystem : ConfigurationData {};
class TSystem : public ConfigurationData {
public:
inline TSystem() : mGraphicsFifoSize(0x80000), mRenderMode() {}
void onBeginFrame() override {}
void onEndFrame() override {}
void initRenderMode() override {}
void initialize() override {}
Video *getVideo() override {
return static_cast<Video *>(mVideo);
}
Heap *getSystemHeap() override {
return static_cast<Heap *>(mSystemHeap);
}
Display *getDisplay() override {
return static_cast<Display *>(mDisplay);
}
XfbManager *getXfbMgr() override {
return static_cast<XfbManager *>(mXfbMgr);
}
PerformanceView *getPerfView() override {
return static_cast<PerformanceView *>(mPerfView);
}
SceneManager *getSceneMgr() override {
return static_cast<SceneManager *>(mSceneMgr);
}
SimpleAudioMgr *getAudioMgr() override {
return static_cast<SimpleAudioMgr *>(mAudioMgr);
}
// Trick to fix weak function order in d_sys.cpp
// https://github.com/zeldaret/ss/pull/305#issuecomment-4201728492
void doInitialize() {
initialize();
}
public:
/* 0x38 */ u32 mGraphicsFifoSize;
/* 0x3C */ GXRenderModeObj *mRenderMode;
/* 0x40 */ TAudioManager *mAudioMgr;
/* 0x44 */ TVideo *mVideo;
/* 0x48 */ TXfbManager *mXfbMgr;
/* 0x4c */ TDisplay *mDisplay;
/* 0x50 */ TPerfView *mPerfView;
/* 0x54 */ TSceneManager *mSceneMgr;
};
} // namespace EGG
+3 -1
View File
@@ -20,7 +20,9 @@ public:
/* 0x08 */ u32 mConfiguredTime;
public:
Video() : pRenderMode(0), mFlag(), mConfiguredTime(){};
Video() : pRenderMode(0), mFlag(0), mConfiguredTime() {};
Video(const RenderModeObjSet *set) : pRenderMode(0), mFlag(0), mConfiguredTime() { initialize(nullptr, set); };
void initialize(GXRenderModeObj *, const RenderModeObjSet *);
GXRenderModeObj *configure(GXRenderModeObj *, const RenderModeObjSet *);
static u32 getTickPerVRetrace(u32 tvFormat);
+1
View File
@@ -15,6 +15,7 @@ public:
/* 0xC */ u8 mNumXfbs; // Total number of Xfbs ever attached
/* 0xD */ u8 mNumXfbs_Copy; // Unsure of purpose yet, but showing wont proceed until its under 3
public:
XfbManager() : mNextXfb(), mToCopyXfb(), mToShowXfb(), mNumXfbs(), mNumXfbs_Copy() {}
bool isRegisterd(Xfb &xfb) const; // yes. this is correct spelling
bool attach(Xfb *xfb);
void copyEFB(bool);
+9
View File
@@ -35,6 +35,7 @@ public:
PROC_FLAG_DELETE = GET_PROC_FLAG(DELETE),
PROC_FLAG_DRAW = GET_PROC_FLAG(DRAW)
};
fManager_c(fBase_c *owner) : connect_node(owner), execute_node(owner), draw_node(owner), search_node(owner) {}
~fManager_c() {}
int getSearchTableNum();
@@ -43,6 +44,14 @@ public:
static fBase_c *searchBaseByGroupType(u8 groupType, const fBase_c *parent = nullptr);
static void mainLoop();
static void setStopProcFlags(u32 flags) {
m_StopProcInf |= flags;
}
static void maskStopProcFlags(u32 flags) {
m_StopProcInf &= flags;
}
private:
fTrNdBa_c connect_node; ///< The node in ::m_connectManage.
fLiNdPrio_c execute_node; ///< The node in ::m_executeManage.
+3 -2
View File
@@ -9,10 +9,11 @@
// Note: names are taken from NSMBW where available but a lot are made up
void unk_initDecompressors();
namespace mDvd {
void unk_initDecompressors();
void setAutoStreamDecomp(bool arg);
extern void *somePtr;
class UncompressInfo_c {
+2
View File
@@ -19,6 +19,8 @@ extern BOOL __OSInReboot;
void __OSGetExecParams(OSExecParams *out);
void __OSLaunchMenu(void);
void OSExecl(const char* dolfile, const char* arg0, ...);
#ifdef __cplusplus
}
#endif
+3
View File
@@ -12,6 +12,8 @@ extern "C" {
#define OS_THREAD_STACK_MAGIC 0xDEADBABE
typedef s32 OSPriority;
typedef enum {
OS_THREAD_STATE_EXITED = 0,
OS_THREAD_STATE_READY = 1,
@@ -97,6 +99,7 @@ s32 OSSuspendThread(OSThread *thread);
void OSSleepThread(OSThreadQueue *queue);
void OSWakeupThread(OSThreadQueue *queue);
BOOL OSSetThreadPriority(OSThread *thread, s32 prio);
OSPriority OSGetThreadPriority(OSThread *thread);
void OSClearStack(u8 val);
void OSSleepTicks(s64 ticks);
+1
View File
@@ -74,6 +74,7 @@ u32 SCGetCounterBias(void);
void SCGetBtDeviceInfoArray(SCBtDeviceInfoArray *info);
void SCSetBtDeviceInfoArray(const SCBtDeviceInfoArray *info);
u32 SCGetBtDpdSensibility(void);
BOOL SCGetMplsMoviePlay(void);
u8 SCGetWpadMotorMode(void);
void SCSetWpadMotorMode(u8 mode);
u8 SCGetWpadSensorBarPosition(void);
+1
View File
@@ -571,6 +571,7 @@ BOOL WPADStopSimpleSync(void);
BOOL WPADCancelSyncDevice(void);
WPADSimpleSyncCallback *WPADSetSimpleSyncCallback(WPADSimpleSyncCallback *cb);
void WPADRegisterAllocator(WPADAllocFunc *alloc, WPADFreeFunc *free);
u32 WPADGetWorkMemorySize(void);
WPADLibStatus WPADGetStatus(void);
u8 WPADGetRadioSensitivity(WPADChannel chan);
void WPADGetAddress(WPADChannel chan, BD_ADDR_PTR addr);
@@ -0,0 +1,8 @@
#ifndef ARC_CALLBACK_HANDLER_H
#define ARC_CALLBACK_HANDLER_H
#include "common.h"
void *ArcCallbackHandlerCreate(u32);
#endif // ARC_CALLBACK_HANDLER_H
+4
View File
@@ -25,6 +25,10 @@ bool isOnScreen(const mVec3_c &worldPos);
void screenToWorld(mVec3_c &result, const mVec3_c &screenPos);
void createLightTextures();
void fn_80016860();
void clearList();
void fn_80017500();
class AnmMdlWrapper : public m3d::mdlAnmChr {
public:
AnmMdlWrapper();
+20
View File
@@ -0,0 +1,20 @@
#ifndef D_LIB_H
#define D_LIB_H
#include "common.h"
#ifdef __cplusplus
extern "C" {
#endif
extern u32 lbl_80574FA0;
extern u32 lbl_80574FA4;
void unknownStub();
bool strequals(const char *lhs, const char *rhs);
#ifdef __cplusplus
}
#endif
#endif // D_LIB_H
+12
View File
@@ -0,0 +1,12 @@
#ifndef MPLS_H
#define MPLS_H
namespace Mpls {
void initialize(int argc, char **argv);
void tryLaunchMovie();
void forceLaunchMovie();
}; // namespace Mpls
#endif // MPLS_H
+3
View File
@@ -2,6 +2,7 @@
#define UNK_SAVE_TIME_H
#include "common.h"
#include "egg/core/eggHeap.h"
class SaveTimeRelated {
public:
@@ -17,6 +18,8 @@ public:
return field_0x30;
}
static void fn_80190780(EGG::Heap *heap);
void fn_801907C0();
s64 fn_801907D0();
void fn_801907F0();
void fn_801909A0();
+77
View File
@@ -0,0 +1,77 @@
#include "d/d_main.h"
#include "d/d_sys.h"
#include "f/f_manager.h"
#include "toBeSorted/d_lib.h"
#include "toBeSorted/mpls.h"
#include "rvl/OS.h"
u32 lbl_805751D0;
OSTime g_InitialTime;
bool fn_80054F90(u32 val) {
return lbl_805751D0 & val;
}
void fn_80054FB0(u32 val) {
u32 flags = lbl_805751D0;
if (!flags) {
fManager_c::setStopProcFlags(
fManager_c::PROC_FLAG_CONNECT | fManager_c::PROC_FLAG_CREATE | fManager_c::PROC_FLAG_EXECUTE |
fManager_c::PROC_FLAG_DELETE
);
}
lbl_805751D0 = flags | val;
}
void fn_80054FE0(u32 val) {
lbl_805751D0 &= ~val;
if (!lbl_805751D0) {
fManager_c::maskStopProcFlags(fManager_c::PROC_FLAG_DRAW);
}
}
void dMain::Create() {
dSys_c::create();
dSys_c::setBlack(false);
}
void dMain::Execute() {
while (true) {
dSys_c::execute();
}
}
void *dMain::main01(void *arg) {
Create();
Execute();
return nullptr;
}
#define STACK_SIZE 0xF000
static OSThread MAIN_THREAD;
void main(int argc, char **argv) {
u8 pStackBase[STACK_SIZE] __attribute__((aligned(32)));
unknownStub();
g_InitialTime = OSGetTime();
dSystem::fixHeaps();
Mpls::initialize(argc, argv);
Mpls::tryLaunchMovie();
OSThread *curThread = OSGetCurrentThread();
OSPriority curPrio = OSGetThreadPriority(curThread);
OSCreateThread(&MAIN_THREAD, dMain::main01, nullptr, &pStackBase[STACK_SIZE], STACK_SIZE, curPrio, 0);
OSResumeThread(&MAIN_THREAD);
OSSetThreadPriority(curThread, 31);
OSSuspendThread(curThread);
}
+739
View File
@@ -0,0 +1,739 @@
#include "d/d_sys.h"
#include "c/c_counter.h"
#include "c/c_math.h"
#include "d/d_cursor_hit_check.h"
#include "d/d_dvd.h"
#include "d/d_dvd_unk.h"
#include "d/d_gfx.h"
#include "d/d_hbm.h"
#include "d/d_heap.h"
#include "d/d_heap_alloc.h"
#include "d/d_pad.h"
#include "d/d_reset.h"
#include "d/d_scene.h"
#include "d/d_state.h"
#include "d/d_sys_init.h"
#include "d/flag/flag_managers.h"
#include "d/lyt/d_lyt_battery.h"
#include "d/lyt/d_lyt_system_window.h"
#include "d/snd/d_snd_mgr.h"
#include "egg/core/eggAssertHeap.h"
#include "egg/core/eggAsyncDisplay.h"
#include "egg/core/eggController.h"
#include "egg/core/eggDisplay.h"
#include "egg/core/eggDvdFile.h"
#include "egg/core/eggExpHeap.h"
#include "egg/core/eggGraphicsFifo.h"
#include "egg/core/eggSystem.h"
#include "egg/core/eggVideo.h"
#include "egg/core/eggXfbManager.h"
#include "egg/gfx/eggStateGX.h"
#include "f/f_manager.h"
#include "m/m3d/m3d.h"
#include "m/m_dvd.h"
#include "m/m_heap.h"
#include "m/m_pad.h"
#include "m/m_video.h"
#include "nw4r/ut/ut_Color.h"
#include "toBeSorted/arc_callback_handler.h"
#include "toBeSorted/arc_managers/current_stage_arc_manager.h"
#include "toBeSorted/arc_managers/layout_arc_manager.h"
#include "toBeSorted/arc_managers/oarc_manager.h"
#include "toBeSorted/d_d3d.h"
#include "toBeSorted/d_exception.h"
#include "toBeSorted/file_manager.h"
#include "toBeSorted/nand_request_thread.h"
#include "toBeSorted/save_manager.h"
#include "toBeSorted/unk_save_time.h"
#include "rvl/GX.h"
#include "rvl/OS.h"
#include "rvl/WPAD.h"
// TODO Replace with proper import + names
extern u32 lbl_80574FA0;
extern u32 lbl_80574FA4;
System SysConfig;
System *dSys_c::ms_configuration_p;
EGG::Heap *dSys_c::ms_RootHeapMem1;
EGG::Heap *dSys_c::ms_RootHeapMem2;
namespace dSystem {
void *s_OrgMEM1ArenaLo;
void *s_NewMEM1ArenaLo;
void *s_OrgMEM1ArenaHi;
void *s_NewMEM1ArenaHi;
} // namespace dSystem
const GXRenderModeObj gRMO_Pal60_608x456Prog_16x9 = {
0, // tvInfo
608, // fbWidth
456, // efbHeight
456, // xfbHeight
25, // viXOrigin
12, // viYOrigin
670, // viWidth
456, // viHeight
1, // xfbMode
0, // field_rendering
0, // aa
{
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
}, // sample_pattern
{0, 0, 21, 22, 21, 0, 0} // vFilter
};
const GXRenderModeObj gRMO_Pal60_608x456IntDf_16x9 = {
2, // tvInfo
608, // fbWidth
456, // efbHeight
456, // xfbHeight
25, // viXOrigin
12, // viYOrigin
670, // viWidth
456, // viHeight
0, // xfbMode
0, // field_rendering
0, // aa
{
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
}, // sample_pattern
{0, 0, 21, 22, 21, 0, 0} // vFilter
};
const GXRenderModeObj gRMO_Pal50_608x456IntDf_16x9 = {
4, // tvInfo
608, // fbWidth
456, // efbHeight
542, // xfbHeight
27, // viXOrigin
16, // viYOrigin
666, // viWidth
542, // viHeight
1, // xfbMode
0, // field_rendering
0, // aa
{
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
}, // sample_pattern
{0, 0, 21, 22, 21, 0, 0} // vFilter
};
const GXRenderModeObj gRMO_Ntsc_608x456Prog_16x9 = {
20, // tvInfo
608, // fbWidth
456, // efbHeight
456, // xfbHeight
25, // viXOrigin
12, // viYOrigin
670, // viWidth
456, // viHeight
1, // xfbMode
0, // field_rendering
0, // aa
{
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
}, // sample_pattern
{0, 0, 21, 22, 21, 0, 0} // vFilter
};
const GXRenderModeObj gRMO_Ntsc_608x456IntDf_16x9 = {
22, // tvInfo
608, // fbWidth
456, // efbHeight
456, // xfbHeight
25, // viXOrigin
12, // viYOrigin
670, // viWidth
456, // viHeight
0, // xfbMode
0, // field_rendering
0, // aa
{
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
}, // sample_pattern
{0, 0, 21, 22, 21, 0, 0} // vFilter
};
const GXRenderModeObj gRMO_Pal60_608x456Prog_4x3 = {
0, // tvInfo
608, // fbWidth
456, // efbHeight
456, // xfbHeight
17, // viXOrigin
12, // viYOrigin
686, // viWidth
456, // viHeight
1, // xfbMode
0, // field_rendering
0, // aa
{
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
}, // sample_pattern
{0, 0, 21, 22, 21, 0, 0} // vFilter
};
const GXRenderModeObj gRMO_Pal60_608x456IntDf_4x3 = {
2, // tvInfo
608, // fbWidth
456, // efbHeight
456, // xfbHeight
17, // viXOrigin
12, // viYOrigin
686, // viWidth
456, // viHeight
0, // xfbMode
0, // field_rendering
0, // aa
{
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
}, // sample_pattern
{0, 0, 21, 22, 21, 0, 0} // vFilter
};
const GXRenderModeObj gRMO_Pal50_608x456IntDf_4x3 = {
4, // tvInfo
608, // fbWidth
456, // efbHeight
542, // xfbHeight
19, // viXOrigin
16, // viYOrigin
682, // viWidth
542, // viHeight
1, // xfbMode
0, // field_rendering
0, // aa
{
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
}, // sample_pattern
{0, 0, 21, 22, 21, 0, 0} // vFilter
};
const GXRenderModeObj gRMO_Ntsc_608x456Prog_4x3 = {
20, // tvInfo
608, // fbWidth
456, // efbHeight
456, // xfbHeight
17, // viXOrigin
12, // viYOrigin
686, // viWidth
456, // viHeight
1, // xfbMode
0, // field_rendering
0, // aa
{
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
}, // sample_pattern
{0, 0, 21, 22, 21, 0, 0} // vFilter
};
const GXRenderModeObj gRMO_Ntsc_608x456IntDf_4x3 = {
22, // tvInfo
608, // fbWidth
456, // efbHeight
456, // xfbHeight
17, // viXOrigin
12, // viYOrigin
686, // viWidth
456, // viHeight
0, // xfbMode
0, // field_rendering
0, // aa
{
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
}, // sample_pattern
{0, 0, 21, 22, 21, 0, 0} // vFilter
};
const EGG::Video::RenderModeObjSet gSysRenderModeObjSet = {
{&gRMO_Pal60_608x456Prog_16x9, &gRMO_Pal60_608x456IntDf_16x9, &gRMO_Pal50_608x456IntDf_16x9,
&gRMO_Ntsc_608x456Prog_16x9, &gRMO_Ntsc_608x456IntDf_16x9, &gRMO_Pal60_608x456Prog_4x3,
&gRMO_Pal60_608x456IntDf_4x3, &gRMO_Pal50_608x456IntDf_4x3, &gRMO_Ntsc_608x456Prog_4x3,
&gRMO_Ntsc_608x456IntDf_4x3}
};
template <>
void System::initialize() {
DVDInit();
SCInit();
initMemory();
Heap *heap = Heap::sCurrentHeap;
GraphicsFifo::create(mGraphicsFifoSize, heap);
mHeap::createAssertHeap(mRootHeapMem1);
mVideo = new (heap) EGG::Video(&gSysRenderModeObjSet);
mXfbMgr = new (heap) EGG::XfbManager();
for (int i = 0; i < 2; ++i) {
mXfbMgr->attach(new (heap) Xfb(mRootHeapMem2));
}
mDisplay = new (heap) EGG::AsyncDisplay(1);
mDisplay->setClearColor(nw4r::ut::Color::BLACK);
mDisplay->clearEFB();
Thread::initialize();
mSystemThread = new (heap) Thread(OSGetCurrentThread(), 4);
DvdFile::initialize();
// TODO Determine significance of the constant
CoreControllerMgr::setWPADWorkSize(WPADGetWorkMemorySize() + 228);
CoreControllerMgr::createInstance();
exceptionCreate(heap);
BaseSystem::mConfigData->getSystemHeap()->mFlag.setBit(0);
mHeap::setCurrentHeap(mHeap::g_assertHeap);
}
dSndMgr_c *dSys_c::initAudioMgr(EGG::Heap *heap) {
dSndMgr_c *audioMgr;
EGG::FrmHeap *frmHeap = mHeap::createFrmHeap(
0x69400, heap,
"オーディオヒープ", // "Audio heap"
32, mHeap::OPT_NONE
);
{
mHeap temp(frmHeap);
audioMgr = new dSndMgr_c();
ms_configuration_p->mAudioMgr = audioMgr;
frmHeap->adjust();
frmHeap->mFlag.setBit(0);
}
return audioMgr;
}
void dSys_c::beginRender() {
m3d::calcMaterial();
ms_configuration_p->mDisplay->beginRender();
}
void dSys_c::endRender() {
ms_configuration_p->mDisplay->endRender();
}
void dSys_c::beginFrame() {
EGG::Display *pDisplay = ms_configuration_p->mDisplay;
pDisplay->beginFrame();
GXSetCopyClear(pDisplay->getClearColor(), pDisplay->getClearZ());
ms_configuration_p->onBeginFrame();
}
void dSys_c::endFrame() {
ms_configuration_p->mDisplay->endFrame();
ms_configuration_p->onEndFrame();
}
bool dSys_c::setBlack(bool on) {
EGG::Display *pDisplay = ms_configuration_p->mDisplay;
EGG::Video *pVideo = EGG::BaseSystem::getVideo();
if (pVideo->mFlag.onBit(0) != on && pDisplay->mScreenStateFlag.offBit(0)) {
pDisplay->mScreenStateFlag.setBit(0);
return true;
}
return false;
}
void dSys_c::setFrameRate(u8 maxRetraces) {
ms_configuration_p->mDisplay->mMaxRetraces = maxRetraces;
}
u8 dSys_c::getFrameRate() {
return ms_configuration_p->mDisplay->mMaxRetraces;
}
void dSys_c::setClearColor(nw4r::ut::Color clr) {
EGG::Display *display = ms_configuration_p->mDisplay;
display->setClearColor(clr);
EGG::StateGX::s_clearEfb = clr;
}
nw4r::ut::Color dSys_c::getClearColor() {
return ms_configuration_p->mDisplay->getClearColor();
}
void dSys_c::create() {
EGG::Heap *pRootHeapMem1;
EGG::Heap *pRootHeapMem2;
EGG::Heap *pCmdHeap;
EGG::Heap *pExpHeap;
dHeapAllocator::initCallbacks();
ms_configuration_p = &SysConfig;
EGG::BaseSystem::mConfigData = &SysConfig;
ms_configuration_p->doInitialize();
pRootHeapMem1 = EGG::BaseSystem::mConfigData->mRootHeapMem1;
ms_RootHeapMem1 = mHeap::createExpHeap(-1, pRootHeapMem1, "dSys_c::RootHeapMEM1", 32, mHeap::OPT_4);
pRootHeapMem1->mFlag.setBit(0);
pRootHeapMem2 = EGG::BaseSystem::mConfigData->mRootHeapMem2;
ms_RootHeapMem2 = mHeap::createExpHeap(-1, pRootHeapMem2, "dSys_c::RootHeapMEM2", 32, mHeap::OPT_4);
pRootHeapMem2->mFlag.setBit(0);
EGG::Heap *heapMem1 = ms_RootHeapMem1;
EGG::Heap *heapMem2 = ms_RootHeapMem2;
mVideo::create();
mHeap::createDylinkHeap(0x1c8000, heapMem1);
mHeap::createGameHeap1(0x250000, heapMem1);
dHeap::createLayoutHeap(0x1e0000, heapMem1);
mHeap::createCommandHeap(0x8000, heapMem1);
dHeap::createWork1Heap(0x4c8000, heapMem1);
dHeap::createWorkExHeap(0x480000, heapMem1);
dHeap::createLayoutExHeap(0xc8000, heapMem2);
dHeap::createLayoutEx2Heap(0x38000, heapMem1);
mHeap::createArchiveHeap(0xb85000, heapMem2);
dHeap::createLayoutResHeap(0x4e7000, heapMem2);
dHeap::createWork2Heap(0xb08000, heapMem2);
pExpHeap = EGG::ExpHeap::create(0x40000, mHeap::g_gameHeaps[0], 0);
pExpHeap->setName("システムcreateヒープ"); // "system create heap"
mHeap::setCurrentHeap(mHeap::g_assertHeap);
{
mHeap heap(pExpHeap);
dPad::create();
}
dPad::fn_80059620();
mPad::beginPad();
mPad::g_currentCore->setPosParam(0.1f, 1.0f);
mPad::endPad();
{
mHeap heap(pExpHeap);
for (int i = 0; i < WPAD_MAX_CONTROLLERS; i++) {
mPad::g_padMg->getNthController(i)->createRumbleMgr(4);
}
}
cM::initRnd(OSGetTick());
dGfx_c::create(pExpHeap);
{
mHeap heap(pExpHeap);
dScene_c::getFader()->create();
}
dDvdUnk::FontUnk::create(pExpHeap);
FileManager::create(pExpHeap);
SaveMgr::create(pExpHeap);
setupFlagManagers(pExpHeap);
dCsMgr_c::create(pExpHeap);
lbl_80574FA0 = 0;
lbl_80574FA4 = 0;
cCounter_c::clear();
dDvd::create(OSGetThreadPriority(OSGetCurrentThread()) - 1, mHeap::g_commandHeap, mHeap::g_archiveHeap, pExpHeap);
mDvd::unk_initDecompressors();
mDvd::setAutoStreamDecomp(true);
void *p_buf = mHeap::g_gameHeaps[0]->alloc(0x4000, 32);
pCmdHeap = mHeap::g_commandHeap;
NandRequestThread::create(
OSGetThreadPriority(OSGetCurrentThread()) - 2, pCmdHeap, p_buf, 0x4000, ArcCallbackHandlerCreate(2), pExpHeap
);
dReset::Manage_c::CreateInstance(heapMem2);
dHeap::createHBMHeap(0x180000, heapMem2);
dHbm::Manage_c::CreateInstance(dHeap::HBMHeap.heap);
initAudioMgr(heapMem1);
dSndMgr_c::GetInstance()->setup(heapMem2, 0x1000000);
dHeap::createFontHeap(0xfa000, heapMem2);
heapMem1->mFlag.setBit(0);
heapMem2->mFlag.setBit(0);
dScene_c::staticCreate();
CurrentStageArcManager::create(pExpHeap);
OarcManager::create(pExpHeap);
LayoutArcManager::create(pExpHeap);
setFrameRate(1);
setClearColor(nw4r::ut::Color::BLACK);
SaveTimeRelated::fn_80190780(pExpHeap);
pExpHeap->mFlag.setBit(0);
pExpHeap->adjust();
mHeap::setCurrentHeap(mHeap::g_gameHeaps[0]);
}
void dSys_c::execute() {
beginFrame();
if (dState::fn_80062EC0()) {
dPad::beginPad_BR();
dPad::fn_80059630();
}
beginRender();
d3d::fn_80016860();
dDvdUnk::FontUnk::GetInstance()->preExecute();
bool isAnyError = dDvdUnk::FontUnk::GetInstance()->isAnyError();
if (isAnyError) {
if (dState::fn_80062EC0()) {
dHbm::Manage_c::GetInstance()->Calculate();
dReset::Manage_c::GetInstance()->Calculate();
dDvdUnk::FontUnk::GetInstance()->execute();
}
dDvdUnk::FontUnk::GetInstance()->drawNonDriveError();
if (dLytSystemWindow_c::GetInstance()) {
dLytSystemWindow_c::GetInstance()->fn_80152EF0();
}
SaveMgr::GetInstance()->draw();
dDvdUnk::FontUnk::GetInstance()->drawDriveError();
dReset::Manage_c::GetInstance()->Draw();
dHbm::Manage_c::GetInstance()->DrawMenu(0);
} else {
dHbm::Manage_c::GetInstance()->DrawMenu(1);
if (dHbm::Manage_c::GetInstance()->getState() == dHbm::Manage_c::HBM_MANAGE_ACTIVE) {
if (dState::fn_80062EC0()) {
dHbm::Manage_c::GetInstance()->Calculate();
}
} else {
dGfx_c::GetInstance()->drawBefore();
m3d::drawDone(0);
dScene_c::getFader()->draw();
dGfx_c::GetInstance()->drawLetterbox();
dLytBattery_c::draw();
dDvdUnk::FontUnk::GetInstance()->execute();
if (dLytSystemWindow_c::GetInstance()) {
dLytSystemWindow_c::GetInstance()->fn_80152EF0();
}
SaveMgr::GetInstance()->draw();
if (dState::fn_80062EC0()) {
dHbm::Manage_c::GetInstance()->Calculate();
}
}
if (dState::fn_80062EC0()) {
dReset::Manage_c::GetInstance()->Calculate();
}
dReset::Manage_c::GetInstance()->Draw();
}
dHbm::Manage_c::GetInstance()->DrawIcon();
endRender();
dState::fn_80062EB0();
dState::fn_80062E40();
dState::fn_80062E50();
if (!isAnyError && dHbm::Manage_c::GetInstance()->getState() != dHbm::Manage_c::HBM_MANAGE_ACTIVE) {
if (dSystem::myDylinkInitPhase.callMethod(nullptr) == 2) {
if (dState::fn_80062EC0()) {
dScene_c::staticExecute();
}
fManager_c::mainLoop();
}
if (dState::fn_80062EC0()) {
dScene_c::getFader()->calc();
}
}
SaveMgr::GetInstance()->execute();
if (dLytSystemWindow_c::GetInstance()) {
dLytSystemWindow_c::GetInstance()->fn_80152E20();
}
dSndMgr_c::GetInstance()->calc();
SaveTimeRelated::GetInstance()->fn_801907C0();
if (dState::fn_80062EC0()) {
cCounter_c::IncrementGameFrame();
cCounter_c::IncrementUnkCounter();
}
m3d::calcWorld(0);
d3d::fn_80017500();
d3d::clearList();
if (dState::fn_80062EC0()) {
dPad::endPad_BR();
}
endFrame();
}
void dSystem::fixHeaps() {
s_OrgMEM1ArenaLo = OSGetMEM1ArenaLo();
void *stack_addr = (void *)OSRoundUp32B(_stack_addr);
void *arena_lo = (void *)OSRoundUp32B(__ArenaLo);
if (s_OrgMEM1ArenaLo < (void *)0x80700000) {
s_NewMEM1ArenaLo = (void *)0x80700000;
} else {
s_NewMEM1ArenaLo = (void *)ROUND_UP_4KB(arena_lo);
if (s_OrgMEM1ArenaLo != stack_addr && s_OrgMEM1ArenaLo != arena_lo) {
OSPanic("d_system.cpp", 1883, "Arena Error!\n");
}
}
OSSetMEM1ArenaLo(s_NewMEM1ArenaLo);
s_OrgMEM1ArenaHi = OSGetMEM1ArenaHi();
s_NewMEM1ArenaHi = (void *)0x817E0000;
if (s_OrgMEM1ArenaHi > s_NewMEM1ArenaHi) {
OSSetMEM1ArenaHi(s_NewMEM1ArenaHi);
}
}
+4 -2
View File
@@ -1,3 +1,5 @@
#include "toBeSorted/arc_callback_handler.h"
#include "d/col/bg/d_bg_s.h"
#include "d/col/bg/d_bg_w_kcol.h"
#include "d/d_rawarchive.h"
@@ -17,8 +19,8 @@ ArcCallbackHandler ArcCallbackHandler::sInstance;
#define NAME_OARC 'oarc'
#define NAME_RARC 'rarc'
u32 ArcCallbackHandlerCreate(u32) {
return 0;
void *ArcCallbackHandlerCreate(u32) {
return nullptr;
}
void BindSystemModelsAndLighting(nw4r::g3d::ResFile file) {
+19
View File
@@ -0,0 +1,19 @@
#include "toBeSorted/d_lib.h"
#include <cstring>
u32 lbl_80574FA0;
u32 lbl_80574FA4;
void unknownStub() {}
bool strequals(const char *lhs, const char *rhs) {
if (!rhs) {
return false;
}
size_t lhs_len = strlen(lhs);
size_t rhs_len = strlen(rhs);
return (lhs_len == rhs_len) && strncmp(lhs, rhs, lhs_len) == 0;
}
+37
View File
@@ -0,0 +1,37 @@
#include "toBeSorted/mpls.h"
#include "s/s_Assert.h"
#include "rvl/OS.h"
#include "rvl/SC.h"
#include <cstring>
bool sMplsInitialized;
bool sSkipMplsMovie;
bool sIsNormalMode;
void Mpls::initialize(int argc, char **argv) {
if (argc == 2) {
if (strcmp("MPLS_FIRST", argv[1]) == 0) {
sSkipMplsMovie = true;
} else if (strcmp("MPLS_NORMAL", argv[1]) == 0) {
sSkipMplsMovie = true;
sIsNormalMode = true;
}
}
sMplsInitialized = true;
}
void Mpls::tryLaunchMovie() {
if (!sSkipMplsMovie && !SCGetMplsMoviePlay()) {
OSExecl("/sys/mpls_movie/player.dol", "", "", "ASPECT_RATIO_AUTO", "DEFAULT", nullptr);
sAssert::assert();
}
}
void Mpls::forceLaunchMovie() {
OSExecl("/sys/mpls_movie/player.dol", "", "", "ASPECT_RATIO_AUTO", "FORCE_MENU", nullptr);
sAssert::assert();
}