From 9765844d92a47d78197acfa1764feb834740d317 Mon Sep 17 00:00:00 2001 From: lepelog <25211966+lepelog@users.noreply.github.com> Date: Tue, 17 Aug 2021 02:56:19 +0200 Subject: [PATCH] mDoDvdThd OK (#139) * mDoDvdThd * cleanup --- .../__ct__17mDoDvdThd_param_cFv.s | 19 - .../__ct__19mDoDvdThd_command_cFv.s | 18 - .../__ct__20mDoDvdThd_callback_cFPFPv_PvPv.s | 24 - .../__ct__21mDoDvdThd_toMainRam_cFUc.s | 25 - .../__ct__24mDoDvdThd_mountArchive_cFUc.s | 30 - ...tXArchive_cFUcQ210JKRArchive10EMountMode.s | 32 - .../__dt__19mDoDvdThd_command_cFv.s | 20 - .../__dt__20mDoDvdThd_callback_cFv.s | 26 - .../__dt__21mDoDvdThd_toMainRam_cFv.s | 26 - .../__dt__24mDoDvdThd_mountArchive_cFv.s | 26 - .../__dt__25mDoDvdThd_mountXArchive_cFv.s | 26 - .../__sinit_m_Do_dvd_thread_cpp.s | 11 - ...mDoDvdThd_param_cFP19mDoDvdThd_command_c.s | 23 - asm/m_Do/m_Do_dvd_thread/cb__FPv.s | 20 - ...create__20mDoDvdThd_callback_cFPFPv_PvPv.s | 34 - ...__21mDoDvdThd_toMainRam_cFPCcUcP7JKRHeap.s | 55 -- ...4mDoDvdThd_mountArchive_cFPCcUcP7JKRHeap.s | 55 -- ...PCcUcQ210JKRArchive10EMountModeP7JKRHeap.s | 57 -- .../m_Do_dvd_thread/create__9mDoDvdThdFl.s | 24 - ...mDoDvdThd_param_cFP19mDoDvdThd_command_c.s | 22 - .../execute__20mDoDvdThd_callback_cFv.s | 22 - .../execute__21mDoDvdThd_toMainRam_cFv.s | 51 -- .../execute__24mDoDvdThd_mountArchive_cFv.s | 158 ---- .../execute__25mDoDvdThd_mountXArchive_cFv.s | 38 - .../getFirstCommand__17mDoDvdThd_param_cFv.s | 3 - .../kick__17mDoDvdThd_param_cFv.s | 11 - .../mainLoop__17mDoDvdThd_param_cFv.s | 44 -- .../m_Do_dvd_thread/main__9mDoDvdThdFPv.s | 24 - .../my_DVDConvertPathToEntrynum__FPCc.s | 9 - .../m_Do_dvd_thread/suspend__9mDoDvdThdFv.s | 11 - .../waitForKick__17mDoDvdThd_param_cFv.s | 11 - include/m_Do/m_Do_dvd_thread.h | 105 +++ include/m_Do/m_Do_ext.h | 6 + src/m_Do/m_Do_Reset.cpp | 21 +- src/m_Do/m_Do_dvd_thread.cpp | 732 ++++++------------ 35 files changed, 369 insertions(+), 1450 deletions(-) delete mode 100644 asm/m_Do/m_Do_dvd_thread/__ct__17mDoDvdThd_param_cFv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/__ct__19mDoDvdThd_command_cFv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/__ct__20mDoDvdThd_callback_cFPFPv_PvPv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/__ct__21mDoDvdThd_toMainRam_cFUc.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/__ct__24mDoDvdThd_mountArchive_cFUc.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/__ct__25mDoDvdThd_mountXArchive_cFUcQ210JKRArchive10EMountMode.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/__dt__19mDoDvdThd_command_cFv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/__dt__20mDoDvdThd_callback_cFv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/__dt__21mDoDvdThd_toMainRam_cFv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/__dt__24mDoDvdThd_mountArchive_cFv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/__dt__25mDoDvdThd_mountXArchive_cFv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/__sinit_m_Do_dvd_thread_cpp.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/addition__17mDoDvdThd_param_cFP19mDoDvdThd_command_c.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/cb__FPv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/create__20mDoDvdThd_callback_cFPFPv_PvPv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/create__21mDoDvdThd_toMainRam_cFPCcUcP7JKRHeap.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/create__24mDoDvdThd_mountArchive_cFPCcUcP7JKRHeap.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/create__25mDoDvdThd_mountXArchive_cFPCcUcQ210JKRArchive10EMountModeP7JKRHeap.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/create__9mDoDvdThdFl.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/cut__17mDoDvdThd_param_cFP19mDoDvdThd_command_c.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/execute__20mDoDvdThd_callback_cFv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/execute__21mDoDvdThd_toMainRam_cFv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/execute__24mDoDvdThd_mountArchive_cFv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/execute__25mDoDvdThd_mountXArchive_cFv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/getFirstCommand__17mDoDvdThd_param_cFv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/kick__17mDoDvdThd_param_cFv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/mainLoop__17mDoDvdThd_param_cFv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/main__9mDoDvdThdFPv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/my_DVDConvertPathToEntrynum__FPCc.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/suspend__9mDoDvdThdFv.s delete mode 100644 asm/m_Do/m_Do_dvd_thread/waitForKick__17mDoDvdThd_param_cFv.s diff --git a/asm/m_Do/m_Do_dvd_thread/__ct__17mDoDvdThd_param_cFv.s b/asm/m_Do/m_Do_dvd_thread/__ct__17mDoDvdThd_param_cFv.s deleted file mode 100644 index 7f8a0536de..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/__ct__17mDoDvdThd_param_cFv.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_80015944: -/* 80015944 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80015948 7C 08 02 A6 */ mflr r0 -/* 8001594C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80015950 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80015954 7C 7F 1B 78 */ mr r31, r3 -/* 80015958 38 9F 00 20 */ addi r4, r31, 0x20 -/* 8001595C 38 A0 00 01 */ li r5, 1 -/* 80015960 48 32 90 35 */ bl OSInitMessageQueue -/* 80015964 38 7F 00 30 */ addi r3, r31, 0x30 -/* 80015968 48 32 96 A1 */ bl OSInitMutex -/* 8001596C 38 7F 00 24 */ addi r3, r31, 0x24 -/* 80015970 48 25 06 D1 */ bl cLs_Create__FP15node_list_class -/* 80015974 7F E3 FB 78 */ mr r3, r31 -/* 80015978 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8001597C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80015980 7C 08 03 A6 */ mtlr r0 -/* 80015984 38 21 00 10 */ addi r1, r1, 0x10 -/* 80015988 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/__ct__19mDoDvdThd_command_cFv.s b/asm/m_Do/m_Do_dvd_thread/__ct__19mDoDvdThd_command_cFv.s deleted file mode 100644 index 5c161f1b78..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/__ct__19mDoDvdThd_command_cFv.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_80015B74: -/* 80015B74 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80015B78 7C 08 02 A6 */ mflr r0 -/* 80015B7C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80015B80 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80015B84 7C 7F 1B 78 */ mr r31, r3 -/* 80015B88 3C 80 80 3A */ lis r4, __vt__19mDoDvdThd_command_c@ha /* 0x803A34E8@ha */ -/* 80015B8C 38 04 34 E8 */ addi r0, r4, __vt__19mDoDvdThd_command_c@l /* 0x803A34E8@l */ -/* 80015B90 90 03 00 10 */ stw r0, 0x10(r3) -/* 80015B94 38 00 00 00 */ li r0, 0 -/* 80015B98 98 03 00 0C */ stb r0, 0xc(r3) -/* 80015B9C 48 25 07 61 */ bl cNd_ForcedClear__FP10node_class -/* 80015BA0 7F E3 FB 78 */ mr r3, r31 -/* 80015BA4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80015BA8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80015BAC 7C 08 03 A6 */ mtlr r0 -/* 80015BB0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80015BB4 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/__ct__20mDoDvdThd_callback_cFPFPv_PvPv.s b/asm/m_Do/m_Do_dvd_thread/__ct__20mDoDvdThd_callback_cFPFPv_PvPv.s deleted file mode 100644 index 2cdfeaf94c..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/__ct__20mDoDvdThd_callback_cFPFPv_PvPv.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_80015C18: -/* 80015C18 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80015C1C 7C 08 02 A6 */ mflr r0 -/* 80015C20 90 01 00 24 */ stw r0, 0x24(r1) -/* 80015C24 39 61 00 20 */ addi r11, r1, 0x20 -/* 80015C28 48 34 C5 B5 */ bl _savegpr_29 -/* 80015C2C 7C 7D 1B 78 */ mr r29, r3 -/* 80015C30 7C 9E 23 78 */ mr r30, r4 -/* 80015C34 7C BF 2B 78 */ mr r31, r5 -/* 80015C38 4B FF FF 3D */ bl __ct__19mDoDvdThd_command_cFv -/* 80015C3C 3C 60 80 3A */ lis r3, __vt__20mDoDvdThd_callback_c@ha /* 0x803A34D8@ha */ -/* 80015C40 38 03 34 D8 */ addi r0, r3, __vt__20mDoDvdThd_callback_c@l /* 0x803A34D8@l */ -/* 80015C44 90 1D 00 10 */ stw r0, 0x10(r29) -/* 80015C48 93 DD 00 14 */ stw r30, 0x14(r29) -/* 80015C4C 93 FD 00 18 */ stw r31, 0x18(r29) -/* 80015C50 38 00 00 00 */ li r0, 0 -/* 80015C54 90 1D 00 1C */ stw r0, 0x1c(r29) -/* 80015C58 7F A3 EB 78 */ mr r3, r29 -/* 80015C5C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80015C60 48 34 C5 C9 */ bl _restgpr_29 -/* 80015C64 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80015C68 7C 08 03 A6 */ mtlr r0 -/* 80015C6C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80015C70 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/__ct__21mDoDvdThd_toMainRam_cFUc.s b/asm/m_Do/m_Do_dvd_thread/__ct__21mDoDvdThd_toMainRam_cFUc.s deleted file mode 100644 index 3fc74ba589..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/__ct__21mDoDvdThd_toMainRam_cFUc.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_80016338: -/* 80016338 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8001633C 7C 08 02 A6 */ mflr r0 -/* 80016340 90 01 00 14 */ stw r0, 0x14(r1) -/* 80016344 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80016348 93 C1 00 08 */ stw r30, 8(r1) -/* 8001634C 7C 7E 1B 78 */ mr r30, r3 -/* 80016350 7C 9F 23 78 */ mr r31, r4 -/* 80016354 4B FF F8 21 */ bl __ct__19mDoDvdThd_command_cFv -/* 80016358 3C 60 80 3A */ lis r3, __vt__21mDoDvdThd_toMainRam_c@ha /* 0x803A34A8@ha */ -/* 8001635C 38 03 34 A8 */ addi r0, r3, __vt__21mDoDvdThd_toMainRam_c@l /* 0x803A34A8@l */ -/* 80016360 90 1E 00 10 */ stw r0, 0x10(r30) -/* 80016364 9B FE 00 14 */ stb r31, 0x14(r30) -/* 80016368 57 E0 06 3F */ clrlwi. r0, r31, 0x18 -/* 8001636C 40 82 00 0C */ bne lbl_80016378 -/* 80016370 88 0D 87 01 */ lbz r0, struct_80450C80+0x1(r13) -/* 80016374 98 1E 00 14 */ stb r0, 0x14(r30) -lbl_80016378: -/* 80016378 7F C3 F3 78 */ mr r3, r30 -/* 8001637C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80016380 83 C1 00 08 */ lwz r30, 8(r1) -/* 80016384 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80016388 7C 08 03 A6 */ mtlr r0 -/* 8001638C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80016390 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/__ct__24mDoDvdThd_mountArchive_cFUc.s b/asm/m_Do/m_Do_dvd_thread/__ct__24mDoDvdThd_mountArchive_cFUc.s deleted file mode 100644 index 623ecf3a04..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/__ct__24mDoDvdThd_mountArchive_cFUc.s +++ /dev/null @@ -1,30 +0,0 @@ -lbl_80015DA4: -/* 80015DA4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80015DA8 7C 08 02 A6 */ mflr r0 -/* 80015DAC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80015DB0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80015DB4 93 C1 00 08 */ stw r30, 8(r1) -/* 80015DB8 7C 7E 1B 78 */ mr r30, r3 -/* 80015DBC 7C 9F 23 78 */ mr r31, r4 -/* 80015DC0 4B FF FD B5 */ bl __ct__19mDoDvdThd_command_cFv -/* 80015DC4 3C 60 80 3A */ lis r3, __vt__24mDoDvdThd_mountArchive_c@ha /* 0x803A34C8@ha */ -/* 80015DC8 38 03 34 C8 */ addi r0, r3, __vt__24mDoDvdThd_mountArchive_c@l /* 0x803A34C8@l */ -/* 80015DCC 90 1E 00 10 */ stw r0, 0x10(r30) -/* 80015DD0 9B FE 00 14 */ stb r31, 0x14(r30) -/* 80015DD4 38 00 FF FF */ li r0, -1 -/* 80015DD8 90 1E 00 18 */ stw r0, 0x18(r30) -/* 80015DDC 38 00 00 00 */ li r0, 0 -/* 80015DE0 90 1E 00 1C */ stw r0, 0x1c(r30) -/* 80015DE4 90 1E 00 20 */ stw r0, 0x20(r30) -/* 80015DE8 57 E0 06 3F */ clrlwi. r0, r31, 0x18 -/* 80015DEC 40 82 00 0C */ bne lbl_80015DF8 -/* 80015DF0 88 0D 87 01 */ lbz r0, struct_80450C80+0x1(r13) -/* 80015DF4 98 1E 00 14 */ stb r0, 0x14(r30) -lbl_80015DF8: -/* 80015DF8 7F C3 F3 78 */ mr r3, r30 -/* 80015DFC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80015E00 83 C1 00 08 */ lwz r30, 8(r1) -/* 80015E04 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80015E08 7C 08 03 A6 */ mtlr r0 -/* 80015E0C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80015E10 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/__ct__25mDoDvdThd_mountXArchive_cFUcQ210JKRArchive10EMountMode.s b/asm/m_Do/m_Do_dvd_thread/__ct__25mDoDvdThd_mountXArchive_cFUcQ210JKRArchive10EMountMode.s deleted file mode 100644 index 036eca7839..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/__ct__25mDoDvdThd_mountXArchive_cFUcQ210JKRArchive10EMountMode.s +++ /dev/null @@ -1,32 +0,0 @@ -lbl_80016168: -/* 80016168 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8001616C 7C 08 02 A6 */ mflr r0 -/* 80016170 90 01 00 24 */ stw r0, 0x24(r1) -/* 80016174 39 61 00 20 */ addi r11, r1, 0x20 -/* 80016178 48 34 C0 65 */ bl _savegpr_29 -/* 8001617C 7C 7D 1B 78 */ mr r29, r3 -/* 80016180 7C 9E 23 78 */ mr r30, r4 -/* 80016184 7C BF 2B 78 */ mr r31, r5 -/* 80016188 4B FF F9 ED */ bl __ct__19mDoDvdThd_command_cFv -/* 8001618C 3C 60 80 3A */ lis r3, __vt__25mDoDvdThd_mountXArchive_c@ha /* 0x803A34B8@ha */ -/* 80016190 38 03 34 B8 */ addi r0, r3, __vt__25mDoDvdThd_mountXArchive_c@l /* 0x803A34B8@l */ -/* 80016194 90 1D 00 10 */ stw r0, 0x10(r29) -/* 80016198 9B DD 00 14 */ stb r30, 0x14(r29) -/* 8001619C 38 00 FF FF */ li r0, -1 -/* 800161A0 90 1D 00 18 */ stw r0, 0x18(r29) -/* 800161A4 38 00 00 00 */ li r0, 0 -/* 800161A8 90 1D 00 1C */ stw r0, 0x1c(r29) -/* 800161AC 93 FD 00 20 */ stw r31, 0x20(r29) -/* 800161B0 90 1D 00 24 */ stw r0, 0x24(r29) -/* 800161B4 57 C0 06 3F */ clrlwi. r0, r30, 0x18 -/* 800161B8 40 82 00 0C */ bne lbl_800161C4 -/* 800161BC 88 0D 87 01 */ lbz r0, struct_80450C80+0x1(r13) -/* 800161C0 98 1D 00 14 */ stb r0, 0x14(r29) -lbl_800161C4: -/* 800161C4 7F A3 EB 78 */ mr r3, r29 -/* 800161C8 39 61 00 20 */ addi r11, r1, 0x20 -/* 800161CC 48 34 C0 5D */ bl _restgpr_29 -/* 800161D0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 800161D4 7C 08 03 A6 */ mtlr r0 -/* 800161D8 38 21 00 20 */ addi r1, r1, 0x20 -/* 800161DC 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/__dt__19mDoDvdThd_command_cFv.s b/asm/m_Do/m_Do_dvd_thread/__dt__19mDoDvdThd_command_cFv.s deleted file mode 100644 index 0d34db3e42..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/__dt__19mDoDvdThd_command_cFv.s +++ /dev/null @@ -1,20 +0,0 @@ -lbl_800158FC: -/* 800158FC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80015900 7C 08 02 A6 */ mflr r0 -/* 80015904 90 01 00 14 */ stw r0, 0x14(r1) -/* 80015908 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8001590C 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80015910 41 82 00 1C */ beq lbl_8001592C -/* 80015914 3C A0 80 3A */ lis r5, __vt__19mDoDvdThd_command_c@ha /* 0x803A34E8@ha */ -/* 80015918 38 05 34 E8 */ addi r0, r5, __vt__19mDoDvdThd_command_c@l /* 0x803A34E8@l */ -/* 8001591C 90 1F 00 10 */ stw r0, 0x10(r31) -/* 80015920 7C 80 07 35 */ extsh. r0, r4 -/* 80015924 40 81 00 08 */ ble lbl_8001592C -/* 80015928 48 2B 94 15 */ bl __dl__FPv -lbl_8001592C: -/* 8001592C 7F E3 FB 78 */ mr r3, r31 -/* 80015930 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80015934 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80015938 7C 08 03 A6 */ mtlr r0 -/* 8001593C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80015940 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/__dt__20mDoDvdThd_callback_cFv.s b/asm/m_Do/m_Do_dvd_thread/__dt__20mDoDvdThd_callback_cFv.s deleted file mode 100644 index 51a1f1a922..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/__dt__20mDoDvdThd_callback_cFv.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_80015BB8: -/* 80015BB8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80015BBC 7C 08 02 A6 */ mflr r0 -/* 80015BC0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80015BC4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80015BC8 93 C1 00 08 */ stw r30, 8(r1) -/* 80015BCC 7C 7E 1B 79 */ or. r30, r3, r3 -/* 80015BD0 7C 9F 23 78 */ mr r31, r4 -/* 80015BD4 41 82 00 28 */ beq lbl_80015BFC -/* 80015BD8 3C 80 80 3A */ lis r4, __vt__20mDoDvdThd_callback_c@ha /* 0x803A34D8@ha */ -/* 80015BDC 38 04 34 D8 */ addi r0, r4, __vt__20mDoDvdThd_callback_c@l /* 0x803A34D8@l */ -/* 80015BE0 90 1E 00 10 */ stw r0, 0x10(r30) -/* 80015BE4 38 80 00 00 */ li r4, 0 -/* 80015BE8 4B FF FD 15 */ bl __dt__19mDoDvdThd_command_cFv -/* 80015BEC 7F E0 07 35 */ extsh. r0, r31 -/* 80015BF0 40 81 00 0C */ ble lbl_80015BFC -/* 80015BF4 7F C3 F3 78 */ mr r3, r30 -/* 80015BF8 48 2B 91 45 */ bl __dl__FPv -lbl_80015BFC: -/* 80015BFC 7F C3 F3 78 */ mr r3, r30 -/* 80015C00 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80015C04 83 C1 00 08 */ lwz r30, 8(r1) -/* 80015C08 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80015C0C 7C 08 03 A6 */ mtlr r0 -/* 80015C10 38 21 00 10 */ addi r1, r1, 0x10 -/* 80015C14 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/__dt__21mDoDvdThd_toMainRam_cFv.s b/asm/m_Do/m_Do_dvd_thread/__dt__21mDoDvdThd_toMainRam_cFv.s deleted file mode 100644 index 1631caacf2..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/__dt__21mDoDvdThd_toMainRam_cFv.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_8001645C: -/* 8001645C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80016460 7C 08 02 A6 */ mflr r0 -/* 80016464 90 01 00 14 */ stw r0, 0x14(r1) -/* 80016468 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8001646C 93 C1 00 08 */ stw r30, 8(r1) -/* 80016470 7C 7E 1B 79 */ or. r30, r3, r3 -/* 80016474 7C 9F 23 78 */ mr r31, r4 -/* 80016478 41 82 00 28 */ beq lbl_800164A0 -/* 8001647C 3C 80 80 3A */ lis r4, __vt__21mDoDvdThd_toMainRam_c@ha /* 0x803A34A8@ha */ -/* 80016480 38 04 34 A8 */ addi r0, r4, __vt__21mDoDvdThd_toMainRam_c@l /* 0x803A34A8@l */ -/* 80016484 90 1E 00 10 */ stw r0, 0x10(r30) -/* 80016488 38 80 00 00 */ li r4, 0 -/* 8001648C 4B FF F4 71 */ bl __dt__19mDoDvdThd_command_cFv -/* 80016490 7F E0 07 35 */ extsh. r0, r31 -/* 80016494 40 81 00 0C */ ble lbl_800164A0 -/* 80016498 7F C3 F3 78 */ mr r3, r30 -/* 8001649C 48 2B 88 A1 */ bl __dl__FPv -lbl_800164A0: -/* 800164A0 7F C3 F3 78 */ mr r3, r30 -/* 800164A4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800164A8 83 C1 00 08 */ lwz r30, 8(r1) -/* 800164AC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800164B0 7C 08 03 A6 */ mtlr r0 -/* 800164B4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800164B8 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/__dt__24mDoDvdThd_mountArchive_cFv.s b/asm/m_Do/m_Do_dvd_thread/__dt__24mDoDvdThd_mountArchive_cFv.s deleted file mode 100644 index 469a37564e..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/__dt__24mDoDvdThd_mountArchive_cFv.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_80015D44: -/* 80015D44 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80015D48 7C 08 02 A6 */ mflr r0 -/* 80015D4C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80015D50 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80015D54 93 C1 00 08 */ stw r30, 8(r1) -/* 80015D58 7C 7E 1B 79 */ or. r30, r3, r3 -/* 80015D5C 7C 9F 23 78 */ mr r31, r4 -/* 80015D60 41 82 00 28 */ beq lbl_80015D88 -/* 80015D64 3C 80 80 3A */ lis r4, __vt__24mDoDvdThd_mountArchive_c@ha /* 0x803A34C8@ha */ -/* 80015D68 38 04 34 C8 */ addi r0, r4, __vt__24mDoDvdThd_mountArchive_c@l /* 0x803A34C8@l */ -/* 80015D6C 90 1E 00 10 */ stw r0, 0x10(r30) -/* 80015D70 38 80 00 00 */ li r4, 0 -/* 80015D74 4B FF FB 89 */ bl __dt__19mDoDvdThd_command_cFv -/* 80015D78 7F E0 07 35 */ extsh. r0, r31 -/* 80015D7C 40 81 00 0C */ ble lbl_80015D88 -/* 80015D80 7F C3 F3 78 */ mr r3, r30 -/* 80015D84 48 2B 8F B9 */ bl __dl__FPv -lbl_80015D88: -/* 80015D88 7F C3 F3 78 */ mr r3, r30 -/* 80015D8C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80015D90 83 C1 00 08 */ lwz r30, 8(r1) -/* 80015D94 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80015D98 7C 08 03 A6 */ mtlr r0 -/* 80015D9C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80015DA0 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/__dt__25mDoDvdThd_mountXArchive_cFv.s b/asm/m_Do/m_Do_dvd_thread/__dt__25mDoDvdThd_mountXArchive_cFv.s deleted file mode 100644 index 7b7e417b59..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/__dt__25mDoDvdThd_mountXArchive_cFv.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_80016108: -/* 80016108 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8001610C 7C 08 02 A6 */ mflr r0 -/* 80016110 90 01 00 14 */ stw r0, 0x14(r1) -/* 80016114 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80016118 93 C1 00 08 */ stw r30, 8(r1) -/* 8001611C 7C 7E 1B 79 */ or. r30, r3, r3 -/* 80016120 7C 9F 23 78 */ mr r31, r4 -/* 80016124 41 82 00 28 */ beq lbl_8001614C -/* 80016128 3C 80 80 3A */ lis r4, __vt__25mDoDvdThd_mountXArchive_c@ha /* 0x803A34B8@ha */ -/* 8001612C 38 04 34 B8 */ addi r0, r4, __vt__25mDoDvdThd_mountXArchive_c@l /* 0x803A34B8@l */ -/* 80016130 90 1E 00 10 */ stw r0, 0x10(r30) -/* 80016134 38 80 00 00 */ li r4, 0 -/* 80016138 4B FF F7 C5 */ bl __dt__19mDoDvdThd_command_cFv -/* 8001613C 7F E0 07 35 */ extsh. r0, r31 -/* 80016140 40 81 00 0C */ ble lbl_8001614C -/* 80016144 7F C3 F3 78 */ mr r3, r30 -/* 80016148 48 2B 8B F5 */ bl __dl__FPv -lbl_8001614C: -/* 8001614C 7F C3 F3 78 */ mr r3, r30 -/* 80016150 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80016154 83 C1 00 08 */ lwz r30, 8(r1) -/* 80016158 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8001615C 7C 08 03 A6 */ mtlr r0 -/* 80016160 38 21 00 10 */ addi r1, r1, 0x10 -/* 80016164 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/__sinit_m_Do_dvd_thread_cpp.s b/asm/m_Do/m_Do_dvd_thread/__sinit_m_Do_dvd_thread_cpp.s deleted file mode 100644 index 25444c6759..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/__sinit_m_Do_dvd_thread_cpp.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80016574: -/* 80016574 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80016578 7C 08 02 A6 */ mflr r0 -/* 8001657C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80016580 3C 60 80 3E */ lis r3, l_param__9mDoDvdThd@ha /* 0x803DEC60@ha */ -/* 80016584 38 63 EC 60 */ addi r3, r3, l_param__9mDoDvdThd@l /* 0x803DEC60@l */ -/* 80016588 4B FF F3 BD */ bl __ct__17mDoDvdThd_param_cFv -/* 8001658C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80016590 7C 08 03 A6 */ mtlr r0 -/* 80016594 38 21 00 10 */ addi r1, r1, 0x10 -/* 80016598 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/addition__17mDoDvdThd_param_cFP19mDoDvdThd_command_c.s b/asm/m_Do/m_Do_dvd_thread/addition__17mDoDvdThd_param_cFP19mDoDvdThd_command_c.s deleted file mode 100644 index bc64d9e7ff..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/addition__17mDoDvdThd_param_cFP19mDoDvdThd_command_c.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_800159E4: -/* 800159E4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800159E8 7C 08 02 A6 */ mflr r0 -/* 800159EC 90 01 00 14 */ stw r0, 0x14(r1) -/* 800159F0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800159F4 93 C1 00 08 */ stw r30, 8(r1) -/* 800159F8 7C 7E 1B 78 */ mr r30, r3 -/* 800159FC 7C 9F 23 78 */ mr r31, r4 -/* 80015A00 38 7E 00 30 */ addi r3, r30, 0x30 -/* 80015A04 48 32 96 3D */ bl OSLockMutex -/* 80015A08 38 7E 00 24 */ addi r3, r30, 0x24 -/* 80015A0C 7F E4 FB 78 */ mr r4, r31 -/* 80015A10 48 25 04 ED */ bl cLs_Addition__FP15node_list_classP10node_class -/* 80015A14 38 7E 00 30 */ addi r3, r30, 0x30 -/* 80015A18 48 32 97 05 */ bl OSUnlockMutex -/* 80015A1C 7F C3 F3 78 */ mr r3, r30 -/* 80015A20 4B FF FF 6D */ bl kick__17mDoDvdThd_param_cFv -/* 80015A24 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80015A28 83 C1 00 08 */ lwz r30, 8(r1) -/* 80015A2C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80015A30 7C 08 03 A6 */ mtlr r0 -/* 80015A34 38 21 00 10 */ addi r1, r1, 0x10 -/* 80015A38 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/cb__FPv.s b/asm/m_Do/m_Do_dvd_thread/cb__FPv.s deleted file mode 100644 index 8e6f8fcfda..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/cb__FPv.s +++ /dev/null @@ -1,20 +0,0 @@ -lbl_80015A90: -/* 80015A90 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80015A94 7C 08 02 A6 */ mflr r0 -/* 80015A98 90 01 00 14 */ stw r0, 0x14(r1) -/* 80015A9C 80 63 00 00 */ lwz r3, 0(r3) -/* 80015AA0 81 83 00 10 */ lwz r12, 0x10(r3) -/* 80015AA4 81 8C 00 0C */ lwz r12, 0xc(r12) -/* 80015AA8 7D 89 03 A6 */ mtctr r12 -/* 80015AAC 4E 80 04 21 */ bctrl -/* 80015AB0 2C 03 00 01 */ cmpwi r3, 1 -/* 80015AB4 41 82 00 14 */ beq lbl_80015AC8 -/* 80015AB8 3C 60 80 37 */ lis r3, m_Do_m_Do_dvd_thread__stringBase0@ha /* 0x803741A8@ha */ -/* 80015ABC 38 63 41 A8 */ addi r3, r3, m_Do_m_Do_dvd_thread__stringBase0@l /* 0x803741A8@l */ -/* 80015AC0 4C C6 31 82 */ crclr 6 -/* 80015AC4 4B FF 11 49 */ bl OSReport_Error -lbl_80015AC8: -/* 80015AC8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80015ACC 7C 08 03 A6 */ mtlr r0 -/* 80015AD0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80015AD4 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/create__20mDoDvdThd_callback_cFPFPv_PvPv.s b/asm/m_Do/m_Do_dvd_thread/create__20mDoDvdThd_callback_cFPFPv_PvPv.s deleted file mode 100644 index b0042e7126..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/create__20mDoDvdThd_callback_cFPFPv_PvPv.s +++ /dev/null @@ -1,34 +0,0 @@ -lbl_80015C74: -/* 80015C74 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80015C78 7C 08 02 A6 */ mflr r0 -/* 80015C7C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80015C80 39 61 00 20 */ addi r11, r1, 0x20 -/* 80015C84 48 34 C5 59 */ bl _savegpr_29 -/* 80015C88 7C 7D 1B 78 */ mr r29, r3 -/* 80015C8C 7C 9E 23 78 */ mr r30, r4 -/* 80015C90 4B FF 91 21 */ bl mDoExt_getCommandHeap__Fv -/* 80015C94 7C 64 1B 78 */ mr r4, r3 -/* 80015C98 38 60 00 20 */ li r3, 0x20 -/* 80015C9C 38 A0 FF FC */ li r5, -4 -/* 80015CA0 48 2B 8F F9 */ bl __nw__FUlP7JKRHeapi -/* 80015CA4 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80015CA8 41 82 00 14 */ beq lbl_80015CBC -/* 80015CAC 7F A4 EB 78 */ mr r4, r29 -/* 80015CB0 7F C5 F3 78 */ mr r5, r30 -/* 80015CB4 4B FF FF 65 */ bl __ct__20mDoDvdThd_callback_cFPFPv_PvPv -/* 80015CB8 7C 7F 1B 78 */ mr r31, r3 -lbl_80015CBC: -/* 80015CBC 28 1F 00 00 */ cmplwi r31, 0 -/* 80015CC0 41 82 00 14 */ beq lbl_80015CD4 -/* 80015CC4 3C 60 80 3E */ lis r3, l_param__9mDoDvdThd@ha /* 0x803DEC60@ha */ -/* 80015CC8 38 63 EC 60 */ addi r3, r3, l_param__9mDoDvdThd@l /* 0x803DEC60@l */ -/* 80015CCC 7F E4 FB 78 */ mr r4, r31 -/* 80015CD0 4B FF FD 15 */ bl addition__17mDoDvdThd_param_cFP19mDoDvdThd_command_c -lbl_80015CD4: -/* 80015CD4 7F E3 FB 78 */ mr r3, r31 -/* 80015CD8 39 61 00 20 */ addi r11, r1, 0x20 -/* 80015CDC 48 34 C5 4D */ bl _restgpr_29 -/* 80015CE0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80015CE4 7C 08 03 A6 */ mtlr r0 -/* 80015CE8 38 21 00 20 */ addi r1, r1, 0x20 -/* 80015CEC 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/create__21mDoDvdThd_toMainRam_cFPCcUcP7JKRHeap.s b/asm/m_Do/m_Do_dvd_thread/create__21mDoDvdThd_toMainRam_cFPCcUcP7JKRHeap.s deleted file mode 100644 index 882af83443..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/create__21mDoDvdThd_toMainRam_cFPCcUcP7JKRHeap.s +++ /dev/null @@ -1,55 +0,0 @@ -lbl_80016394: -/* 80016394 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80016398 7C 08 02 A6 */ mflr r0 -/* 8001639C 90 01 00 24 */ stw r0, 0x24(r1) -/* 800163A0 39 61 00 20 */ addi r11, r1, 0x20 -/* 800163A4 48 34 BE 35 */ bl _savegpr_28 -/* 800163A8 7C 7C 1B 78 */ mr r28, r3 -/* 800163AC 7C 9D 23 78 */ mr r29, r4 -/* 800163B0 7C BE 2B 78 */ mr r30, r5 -/* 800163B4 4B FF 89 FD */ bl mDoExt_getCommandHeap__Fv -/* 800163B8 7C 64 1B 78 */ mr r4, r3 -/* 800163BC 38 60 00 28 */ li r3, 0x28 -/* 800163C0 38 A0 FF FC */ li r5, -4 -/* 800163C4 48 2B 88 D5 */ bl __nw__FUlP7JKRHeapi -/* 800163C8 7C 7F 1B 79 */ or. r31, r3, r3 -/* 800163CC 41 82 00 10 */ beq lbl_800163DC -/* 800163D0 7F A4 EB 78 */ mr r4, r29 -/* 800163D4 4B FF FF 65 */ bl __ct__21mDoDvdThd_toMainRam_cFUc -/* 800163D8 7C 7F 1B 78 */ mr r31, r3 -lbl_800163DC: -/* 800163DC 28 1F 00 00 */ cmplwi r31, 0 -/* 800163E0 41 82 00 60 */ beq lbl_80016440 -/* 800163E4 7F 83 E3 78 */ mr r3, r28 -/* 800163E8 4B FF F4 F5 */ bl my_DVDConvertPathToEntrynum__FPCc -/* 800163EC 90 7F 00 18 */ stw r3, 0x18(r31) -/* 800163F0 80 1F 00 18 */ lwz r0, 0x18(r31) -/* 800163F4 2C 00 FF FF */ cmpwi r0, -1 -/* 800163F8 40 82 00 34 */ bne lbl_8001642C -/* 800163FC 38 00 00 01 */ li r0, 1 -/* 80016400 98 1F 00 0C */ stb r0, 0xc(r31) -/* 80016404 28 1F 00 00 */ cmplwi r31, 0 -/* 80016408 41 82 00 1C */ beq lbl_80016424 -/* 8001640C 7F E3 FB 78 */ mr r3, r31 -/* 80016410 38 80 00 01 */ li r4, 1 -/* 80016414 81 9F 00 10 */ lwz r12, 0x10(r31) -/* 80016418 81 8C 00 08 */ lwz r12, 8(r12) -/* 8001641C 7D 89 03 A6 */ mtctr r12 -/* 80016420 4E 80 04 21 */ bctrl -lbl_80016424: -/* 80016424 3B E0 00 00 */ li r31, 0 -/* 80016428 48 00 00 18 */ b lbl_80016440 -lbl_8001642C: -/* 8001642C 93 DF 00 24 */ stw r30, 0x24(r31) -/* 80016430 3C 60 80 3E */ lis r3, l_param__9mDoDvdThd@ha /* 0x803DEC60@ha */ -/* 80016434 38 63 EC 60 */ addi r3, r3, l_param__9mDoDvdThd@l /* 0x803DEC60@l */ -/* 80016438 7F E4 FB 78 */ mr r4, r31 -/* 8001643C 4B FF F5 A9 */ bl addition__17mDoDvdThd_param_cFP19mDoDvdThd_command_c -lbl_80016440: -/* 80016440 7F E3 FB 78 */ mr r3, r31 -/* 80016444 39 61 00 20 */ addi r11, r1, 0x20 -/* 80016448 48 34 BD DD */ bl _restgpr_28 -/* 8001644C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80016450 7C 08 03 A6 */ mtlr r0 -/* 80016454 38 21 00 20 */ addi r1, r1, 0x20 -/* 80016458 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/create__24mDoDvdThd_mountArchive_cFPCcUcP7JKRHeap.s b/asm/m_Do/m_Do_dvd_thread/create__24mDoDvdThd_mountArchive_cFPCcUcP7JKRHeap.s deleted file mode 100644 index 2f8a291df6..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/create__24mDoDvdThd_mountArchive_cFPCcUcP7JKRHeap.s +++ /dev/null @@ -1,55 +0,0 @@ -lbl_80015E14: -/* 80015E14 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80015E18 7C 08 02 A6 */ mflr r0 -/* 80015E1C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80015E20 39 61 00 20 */ addi r11, r1, 0x20 -/* 80015E24 48 34 C3 B5 */ bl _savegpr_28 -/* 80015E28 7C 7C 1B 78 */ mr r28, r3 -/* 80015E2C 7C 9D 23 78 */ mr r29, r4 -/* 80015E30 7C BE 2B 78 */ mr r30, r5 -/* 80015E34 4B FF 8F 7D */ bl mDoExt_getCommandHeap__Fv -/* 80015E38 7C 64 1B 78 */ mr r4, r3 -/* 80015E3C 38 60 00 24 */ li r3, 0x24 -/* 80015E40 38 A0 FF FC */ li r5, -4 -/* 80015E44 48 2B 8E 55 */ bl __nw__FUlP7JKRHeapi -/* 80015E48 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80015E4C 41 82 00 10 */ beq lbl_80015E5C -/* 80015E50 7F A4 EB 78 */ mr r4, r29 -/* 80015E54 4B FF FF 51 */ bl __ct__24mDoDvdThd_mountArchive_cFUc -/* 80015E58 7C 7F 1B 78 */ mr r31, r3 -lbl_80015E5C: -/* 80015E5C 28 1F 00 00 */ cmplwi r31, 0 -/* 80015E60 41 82 00 60 */ beq lbl_80015EC0 -/* 80015E64 7F 83 E3 78 */ mr r3, r28 -/* 80015E68 4B FF FA 75 */ bl my_DVDConvertPathToEntrynum__FPCc -/* 80015E6C 90 7F 00 18 */ stw r3, 0x18(r31) -/* 80015E70 80 1F 00 18 */ lwz r0, 0x18(r31) -/* 80015E74 2C 00 FF FF */ cmpwi r0, -1 -/* 80015E78 40 82 00 34 */ bne lbl_80015EAC -/* 80015E7C 38 00 00 01 */ li r0, 1 -/* 80015E80 98 1F 00 0C */ stb r0, 0xc(r31) -/* 80015E84 28 1F 00 00 */ cmplwi r31, 0 -/* 80015E88 41 82 00 1C */ beq lbl_80015EA4 -/* 80015E8C 7F E3 FB 78 */ mr r3, r31 -/* 80015E90 38 80 00 01 */ li r4, 1 -/* 80015E94 81 9F 00 10 */ lwz r12, 0x10(r31) -/* 80015E98 81 8C 00 08 */ lwz r12, 8(r12) -/* 80015E9C 7D 89 03 A6 */ mtctr r12 -/* 80015EA0 4E 80 04 21 */ bctrl -lbl_80015EA4: -/* 80015EA4 3B E0 00 00 */ li r31, 0 -/* 80015EA8 48 00 00 18 */ b lbl_80015EC0 -lbl_80015EAC: -/* 80015EAC 93 DF 00 20 */ stw r30, 0x20(r31) -/* 80015EB0 3C 60 80 3E */ lis r3, l_param__9mDoDvdThd@ha /* 0x803DEC60@ha */ -/* 80015EB4 38 63 EC 60 */ addi r3, r3, l_param__9mDoDvdThd@l /* 0x803DEC60@l */ -/* 80015EB8 7F E4 FB 78 */ mr r4, r31 -/* 80015EBC 4B FF FB 29 */ bl addition__17mDoDvdThd_param_cFP19mDoDvdThd_command_c -lbl_80015EC0: -/* 80015EC0 7F E3 FB 78 */ mr r3, r31 -/* 80015EC4 39 61 00 20 */ addi r11, r1, 0x20 -/* 80015EC8 48 34 C3 5D */ bl _restgpr_28 -/* 80015ECC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80015ED0 7C 08 03 A6 */ mtlr r0 -/* 80015ED4 38 21 00 20 */ addi r1, r1, 0x20 -/* 80015ED8 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/create__25mDoDvdThd_mountXArchive_cFPCcUcQ210JKRArchive10EMountModeP7JKRHeap.s b/asm/m_Do/m_Do_dvd_thread/create__25mDoDvdThd_mountXArchive_cFPCcUcQ210JKRArchive10EMountModeP7JKRHeap.s deleted file mode 100644 index c43e160d79..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/create__25mDoDvdThd_mountXArchive_cFPCcUcQ210JKRArchive10EMountModeP7JKRHeap.s +++ /dev/null @@ -1,57 +0,0 @@ -lbl_800161E0: -/* 800161E0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800161E4 7C 08 02 A6 */ mflr r0 -/* 800161E8 90 01 00 24 */ stw r0, 0x24(r1) -/* 800161EC 39 61 00 20 */ addi r11, r1, 0x20 -/* 800161F0 48 34 BF E5 */ bl _savegpr_27 -/* 800161F4 7C 7B 1B 78 */ mr r27, r3 -/* 800161F8 7C 9C 23 78 */ mr r28, r4 -/* 800161FC 7C BD 2B 78 */ mr r29, r5 -/* 80016200 7C DE 33 78 */ mr r30, r6 -/* 80016204 4B FF 8B AD */ bl mDoExt_getCommandHeap__Fv -/* 80016208 7C 64 1B 78 */ mr r4, r3 -/* 8001620C 38 60 00 28 */ li r3, 0x28 -/* 80016210 38 A0 FF FC */ li r5, -4 -/* 80016214 48 2B 8A 85 */ bl __nw__FUlP7JKRHeapi -/* 80016218 7C 7F 1B 79 */ or. r31, r3, r3 -/* 8001621C 41 82 00 14 */ beq lbl_80016230 -/* 80016220 7F 84 E3 78 */ mr r4, r28 -/* 80016224 7F A5 EB 78 */ mr r5, r29 -/* 80016228 4B FF FF 41 */ bl __ct__25mDoDvdThd_mountXArchive_cFUcQ210JKRArchive10EMountMode -/* 8001622C 7C 7F 1B 78 */ mr r31, r3 -lbl_80016230: -/* 80016230 28 1F 00 00 */ cmplwi r31, 0 -/* 80016234 41 82 00 60 */ beq lbl_80016294 -/* 80016238 7F 63 DB 78 */ mr r3, r27 -/* 8001623C 4B FF F6 A1 */ bl my_DVDConvertPathToEntrynum__FPCc -/* 80016240 90 7F 00 18 */ stw r3, 0x18(r31) -/* 80016244 80 1F 00 18 */ lwz r0, 0x18(r31) -/* 80016248 2C 00 FF FF */ cmpwi r0, -1 -/* 8001624C 40 82 00 34 */ bne lbl_80016280 -/* 80016250 38 00 00 01 */ li r0, 1 -/* 80016254 98 1F 00 0C */ stb r0, 0xc(r31) -/* 80016258 28 1F 00 00 */ cmplwi r31, 0 -/* 8001625C 41 82 00 1C */ beq lbl_80016278 -/* 80016260 7F E3 FB 78 */ mr r3, r31 -/* 80016264 38 80 00 01 */ li r4, 1 -/* 80016268 81 9F 00 10 */ lwz r12, 0x10(r31) -/* 8001626C 81 8C 00 08 */ lwz r12, 8(r12) -/* 80016270 7D 89 03 A6 */ mtctr r12 -/* 80016274 4E 80 04 21 */ bctrl -lbl_80016278: -/* 80016278 3B E0 00 00 */ li r31, 0 -/* 8001627C 48 00 00 18 */ b lbl_80016294 -lbl_80016280: -/* 80016280 93 DF 00 24 */ stw r30, 0x24(r31) -/* 80016284 3C 60 80 3E */ lis r3, l_param__9mDoDvdThd@ha /* 0x803DEC60@ha */ -/* 80016288 38 63 EC 60 */ addi r3, r3, l_param__9mDoDvdThd@l /* 0x803DEC60@l */ -/* 8001628C 7F E4 FB 78 */ mr r4, r31 -/* 80016290 4B FF F7 55 */ bl addition__17mDoDvdThd_param_cFP19mDoDvdThd_command_c -lbl_80016294: -/* 80016294 7F E3 FB 78 */ mr r3, r31 -/* 80016298 39 61 00 20 */ addi r11, r1, 0x20 -/* 8001629C 48 34 BF 85 */ bl _restgpr_27 -/* 800162A0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 800162A4 7C 08 03 A6 */ mtlr r0 -/* 800162A8 38 21 00 20 */ addi r1, r1, 0x20 -/* 800162AC 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/create__9mDoDvdThdFl.s b/asm/m_Do/m_Do_dvd_thread/create__9mDoDvdThdFl.s deleted file mode 100644 index 06274845a5..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/create__9mDoDvdThdFl.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_80015858: -/* 80015858 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8001585C 7C 08 02 A6 */ mflr r0 -/* 80015860 90 01 00 14 */ stw r0, 0x14(r1) -/* 80015864 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80015868 7C 68 1B 78 */ mr r8, r3 -/* 8001586C 3C 60 80 3E */ lis r3, l_thread__9mDoDvdThd@ha /* 0x803DD940@ha */ -/* 80015870 3B E3 D9 40 */ addi r31, r3, l_thread__9mDoDvdThd@l /* 0x803DD940@l */ -/* 80015874 38 7F 00 00 */ addi r3, r31, 0 -/* 80015878 3C 80 80 01 */ lis r4, main__9mDoDvdThdFPv@ha /* 0x800157FC@ha */ -/* 8001587C 38 84 57 FC */ addi r4, r4, main__9mDoDvdThdFPv@l /* 0x800157FC@l */ -/* 80015880 38 BF 13 20 */ addi r5, r31, 0x1320 -/* 80015884 38 DF 03 20 */ addi r6, r31, 0x320 -/* 80015888 38 E0 10 00 */ li r7, 0x1000 -/* 8001588C 39 20 00 01 */ li r9, 1 -/* 80015890 38 C6 10 00 */ addi r6, r6, 0x1000 -/* 80015894 48 32 B9 F9 */ bl OSCreateThread -/* 80015898 38 7F 00 00 */ addi r3, r31, 0 -/* 8001589C 48 32 BF 19 */ bl OSResumeThread -/* 800158A0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800158A4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800158A8 7C 08 03 A6 */ mtlr r0 -/* 800158AC 38 21 00 10 */ addi r1, r1, 0x10 -/* 800158B0 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/cut__17mDoDvdThd_param_cFP19mDoDvdThd_command_c.s b/asm/m_Do/m_Do_dvd_thread/cut__17mDoDvdThd_param_cFP19mDoDvdThd_command_c.s deleted file mode 100644 index 3a70a15918..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/cut__17mDoDvdThd_param_cFP19mDoDvdThd_command_c.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_80015A3C: -/* 80015A3C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80015A40 7C 08 02 A6 */ mflr r0 -/* 80015A44 90 01 00 14 */ stw r0, 0x14(r1) -/* 80015A48 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80015A4C 93 C1 00 08 */ stw r30, 8(r1) -/* 80015A50 7C 7E 1B 78 */ mr r30, r3 -/* 80015A54 7C 9F 23 78 */ mr r31, r4 -/* 80015A58 38 7E 00 30 */ addi r3, r30, 0x30 -/* 80015A5C 48 32 95 E5 */ bl OSLockMutex -/* 80015A60 7F E3 FB 78 */ mr r3, r31 -/* 80015A64 48 25 04 15 */ bl cLs_SingleCut__FP10node_class -/* 80015A68 38 7E 00 30 */ addi r3, r30, 0x30 -/* 80015A6C 48 32 96 B1 */ bl OSUnlockMutex -/* 80015A70 7F C3 F3 78 */ mr r3, r30 -/* 80015A74 4B FF FF 19 */ bl kick__17mDoDvdThd_param_cFv -/* 80015A78 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80015A7C 83 C1 00 08 */ lwz r30, 8(r1) -/* 80015A80 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80015A84 7C 08 03 A6 */ mtlr r0 -/* 80015A88 38 21 00 10 */ addi r1, r1, 0x10 -/* 80015A8C 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/execute__20mDoDvdThd_callback_cFv.s b/asm/m_Do/m_Do_dvd_thread/execute__20mDoDvdThd_callback_cFv.s deleted file mode 100644 index e5a86bb8f9..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/execute__20mDoDvdThd_callback_cFv.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_80015CF0: -/* 80015CF0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80015CF4 7C 08 02 A6 */ mflr r0 -/* 80015CF8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80015CFC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80015D00 7C 7F 1B 78 */ mr r31, r3 -/* 80015D04 80 63 00 18 */ lwz r3, 0x18(r3) -/* 80015D08 81 9F 00 14 */ lwz r12, 0x14(r31) -/* 80015D0C 7D 89 03 A6 */ mtctr r12 -/* 80015D10 4E 80 04 21 */ bctrl -/* 80015D14 90 7F 00 1C */ stw r3, 0x1c(r31) -/* 80015D18 38 00 00 01 */ li r0, 1 -/* 80015D1C 98 1F 00 0C */ stb r0, 0xc(r31) -/* 80015D20 80 7F 00 1C */ lwz r3, 0x1c(r31) -/* 80015D24 30 03 FF FF */ addic r0, r3, -1 -/* 80015D28 7C 00 19 10 */ subfe r0, r0, r3 -/* 80015D2C 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 80015D30 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80015D34 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80015D38 7C 08 03 A6 */ mtlr r0 -/* 80015D3C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80015D40 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/execute__21mDoDvdThd_toMainRam_cFv.s b/asm/m_Do/m_Do_dvd_thread/execute__21mDoDvdThd_toMainRam_cFv.s deleted file mode 100644 index e9a58f1035..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/execute__21mDoDvdThd_toMainRam_cFv.s +++ /dev/null @@ -1,51 +0,0 @@ -lbl_800164BC: -/* 800164BC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800164C0 7C 08 02 A6 */ mflr r0 -/* 800164C4 90 01 00 24 */ stw r0, 0x24(r1) -/* 800164C8 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 800164CC 93 C1 00 18 */ stw r30, 0x18(r1) -/* 800164D0 7C 7E 1B 78 */ mr r30, r3 -/* 800164D4 80 E3 00 24 */ lwz r7, 0x24(r3) -/* 800164D8 28 07 00 00 */ cmplwi r7, 0 -/* 800164DC 41 82 00 08 */ beq lbl_800164E4 -/* 800164E0 48 00 00 0C */ b lbl_800164EC -lbl_800164E4: -/* 800164E4 4B FF 89 09 */ bl mDoExt_getArchiveHeap__Fv -/* 800164E8 7C 67 1B 78 */ mr r7, r3 -lbl_800164EC: -/* 800164EC 7C FF 3B 78 */ mr r31, r7 -/* 800164F0 38 00 00 00 */ li r0, 0 -/* 800164F4 90 01 00 08 */ stw r0, 8(r1) -/* 800164F8 80 7E 00 18 */ lwz r3, 0x18(r30) -/* 800164FC 38 80 00 00 */ li r4, 0 -/* 80016500 38 A0 00 01 */ li r5, 1 -/* 80016504 38 C0 00 00 */ li r6, 0 -/* 80016508 88 1E 00 14 */ lbz r0, 0x14(r30) -/* 8001650C 28 00 00 00 */ cmplwi r0, 0 -/* 80016510 39 00 00 02 */ li r8, 2 -/* 80016514 40 82 00 08 */ bne lbl_8001651C -/* 80016518 39 00 00 01 */ li r8, 1 -lbl_8001651C: -/* 8001651C 39 20 00 00 */ li r9, 0 -/* 80016520 39 40 00 00 */ li r10, 0 -/* 80016524 48 2C 37 31 */ bl loadToMainRAM__12JKRDvdRipperFlPUc15JKRExpandSwitchUlP7JKRHeapQ212JKRDvdRipper15EAllocDirectionUlPiPUl -/* 80016528 90 7E 00 1C */ stw r3, 0x1c(r30) -/* 8001652C 80 9E 00 1C */ lwz r4, 0x1c(r30) -/* 80016530 28 04 00 00 */ cmplwi r4, 0 -/* 80016534 41 82 00 10 */ beq lbl_80016544 -/* 80016538 7F E3 FB 78 */ mr r3, r31 -/* 8001653C 48 2B 81 C5 */ bl getSize__7JKRHeapFPv -/* 80016540 90 7E 00 20 */ stw r3, 0x20(r30) -lbl_80016544: -/* 80016544 38 00 00 01 */ li r0, 1 -/* 80016548 98 1E 00 0C */ stb r0, 0xc(r30) -/* 8001654C 80 7E 00 1C */ lwz r3, 0x1c(r30) -/* 80016550 30 03 FF FF */ addic r0, r3, -1 -/* 80016554 7C 00 19 10 */ subfe r0, r0, r3 -/* 80016558 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 8001655C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80016560 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80016564 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80016568 7C 08 03 A6 */ mtlr r0 -/* 8001656C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80016570 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/execute__24mDoDvdThd_mountArchive_cFv.s b/asm/m_Do/m_Do_dvd_thread/execute__24mDoDvdThd_mountArchive_cFv.s deleted file mode 100644 index 8adf66eb72..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/execute__24mDoDvdThd_mountArchive_cFv.s +++ /dev/null @@ -1,158 +0,0 @@ -lbl_80015EDC: -/* 80015EDC 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 80015EE0 7C 08 02 A6 */ mflr r0 -/* 80015EE4 90 01 00 34 */ stw r0, 0x34(r1) -/* 80015EE8 39 61 00 30 */ addi r11, r1, 0x30 -/* 80015EEC 48 34 C2 E1 */ bl _savegpr_25 -/* 80015EF0 7C 7A 1B 78 */ mr r26, r3 -/* 80015EF4 3B C0 00 00 */ li r30, 0 -/* 80015EF8 3B A0 00 00 */ li r29, 0 -/* 80015EFC 3B 80 00 00 */ li r28, 0 -/* 80015F00 3B 60 00 00 */ li r27, 0 -/* 80015F04 80 63 00 20 */ lwz r3, 0x20(r3) -/* 80015F08 28 03 00 00 */ cmplwi r3, 0 -/* 80015F0C 41 82 00 08 */ beq lbl_80015F14 -/* 80015F10 48 00 00 08 */ b lbl_80015F18 -lbl_80015F14: -/* 80015F14 4B FF 8E D9 */ bl mDoExt_getArchiveHeap__Fv -lbl_80015F18: -/* 80015F18 7C 79 1B 78 */ mr r25, r3 -/* 80015F1C 3C 60 80 37 */ lis r3, m_Do_m_Do_dvd_thread__stringBase0@ha /* 0x803741A8@ha */ -/* 80015F20 3B E3 41 A8 */ addi r31, r3, m_Do_m_Do_dvd_thread__stringBase0@l /* 0x803741A8@l */ -lbl_80015F24: -/* 80015F24 4B FF 8E D1 */ bl mDoExt_getArchiveHeapPtr__Fv -/* 80015F28 7C 19 18 40 */ cmplw r25, r3 -/* 80015F2C 40 82 00 0C */ bne lbl_80015F38 -/* 80015F30 3B 80 00 01 */ li r28, 1 -/* 80015F34 48 00 00 3C */ b lbl_80015F70 -lbl_80015F38: -/* 80015F38 4B FF 8E 49 */ bl mDoExt_getZeldaHeap__Fv -/* 80015F3C 7C 19 18 40 */ cmplw r25, r3 -/* 80015F40 40 82 00 0C */ bne lbl_80015F4C -/* 80015F44 3B C0 00 01 */ li r30, 1 -/* 80015F48 48 00 00 28 */ b lbl_80015F70 -lbl_80015F4C: -/* 80015F4C 4B FF 8E 05 */ bl mDoExt_getGameHeap__Fv -/* 80015F50 7C 19 18 40 */ cmplw r25, r3 -/* 80015F54 40 82 00 0C */ bne lbl_80015F60 -/* 80015F58 3B A0 00 01 */ li r29, 1 -/* 80015F5C 48 00 00 14 */ b lbl_80015F70 -lbl_80015F60: -/* 80015F60 4B FF 8E D1 */ bl mDoExt_getJ2dHeap__Fv -/* 80015F64 7C 19 18 40 */ cmplw r25, r3 -/* 80015F68 40 82 00 08 */ bne lbl_80015F70 -/* 80015F6C 3B 60 00 01 */ li r27, 1 -lbl_80015F70: -/* 80015F70 88 1A 00 14 */ lbz r0, 0x14(r26) -/* 80015F74 28 00 00 00 */ cmplwi r0, 0 -/* 80015F78 40 82 00 34 */ bne lbl_80015FAC -/* 80015F7C 38 60 00 70 */ li r3, 0x70 -/* 80015F80 7F 24 CB 78 */ mr r4, r25 -/* 80015F84 38 A0 00 00 */ li r5, 0 -/* 80015F88 48 2B 8D 11 */ bl __nw__FUlP7JKRHeapi -/* 80015F8C 7C 60 1B 79 */ or. r0, r3, r3 -/* 80015F90 41 82 00 14 */ beq lbl_80015FA4 -/* 80015F94 80 9A 00 18 */ lwz r4, 0x18(r26) -/* 80015F98 38 A0 00 01 */ li r5, 1 -/* 80015F9C 48 2C 0A 1D */ bl __ct__13JKRMemArchiveFlQ210JKRArchive15EMountDirection -/* 80015FA0 7C 60 1B 78 */ mr r0, r3 -lbl_80015FA4: -/* 80015FA4 7C 19 03 78 */ mr r25, r0 -/* 80015FA8 48 00 00 30 */ b lbl_80015FD8 -lbl_80015FAC: -/* 80015FAC 38 60 00 70 */ li r3, 0x70 -/* 80015FB0 7F 24 CB 78 */ mr r4, r25 -/* 80015FB4 38 A0 FF FC */ li r5, -4 -/* 80015FB8 48 2B 8C E1 */ bl __nw__FUlP7JKRHeapi -/* 80015FBC 7C 60 1B 79 */ or. r0, r3, r3 -/* 80015FC0 41 82 00 14 */ beq lbl_80015FD4 -/* 80015FC4 80 9A 00 18 */ lwz r4, 0x18(r26) -/* 80015FC8 38 A0 00 02 */ li r5, 2 -/* 80015FCC 48 2C 09 ED */ bl __ct__13JKRMemArchiveFlQ210JKRArchive15EMountDirection -/* 80015FD0 7C 60 1B 78 */ mr r0, r3 -lbl_80015FD4: -/* 80015FD4 7C 19 03 78 */ mr r25, r0 -lbl_80015FD8: -/* 80015FD8 28 19 00 00 */ cmplwi r25, 0 -/* 80015FDC 41 82 00 18 */ beq lbl_80015FF4 -/* 80015FE0 88 19 00 30 */ lbz r0, 0x30(r25) -/* 80015FE4 28 00 00 00 */ cmplwi r0, 0 -/* 80015FE8 41 82 00 0C */ beq lbl_80015FF4 -/* 80015FEC 93 3A 00 1C */ stw r25, 0x1c(r26) -/* 80015FF0 48 00 00 E8 */ b lbl_800160D8 -lbl_80015FF4: -/* 80015FF4 38 7F 00 3E */ addi r3, r31, 0x3e -/* 80015FF8 4C C6 31 82 */ crclr 6 -/* 80015FFC 4B FF 0C 11 */ bl OSReport_Error -/* 80016000 28 19 00 00 */ cmplwi r25, 0 -/* 80016004 41 82 00 20 */ beq lbl_80016024 -/* 80016008 41 82 00 1C */ beq lbl_80016024 -/* 8001600C 7F 23 CB 78 */ mr r3, r25 -/* 80016010 38 80 00 01 */ li r4, 1 -/* 80016014 81 99 00 00 */ lwz r12, 0(r25) -/* 80016018 81 8C 00 08 */ lwz r12, 8(r12) -/* 8001601C 7D 89 03 A6 */ mtctr r12 -/* 80016020 4E 80 04 21 */ bctrl -lbl_80016024: -/* 80016024 57 C0 06 3F */ clrlwi. r0, r30, 0x18 -/* 80016028 40 82 00 24 */ bne lbl_8001604C -/* 8001602C 3C 60 80 37 */ lis r3, m_Do_m_Do_dvd_thread__stringBase0@ha /* 0x803741A8@ha */ -/* 80016030 38 63 41 A8 */ addi r3, r3, m_Do_m_Do_dvd_thread__stringBase0@l /* 0x803741A8@l */ -/* 80016034 38 63 00 6E */ addi r3, r3, 0x6e -/* 80016038 4C C6 31 82 */ crclr 6 -/* 8001603C 4B FF 0B D1 */ bl OSReport_Error -/* 80016040 4B FF 8D 41 */ bl mDoExt_getZeldaHeap__Fv -/* 80016044 7C 79 1B 78 */ mr r25, r3 -/* 80016048 4B FF FE DC */ b lbl_80015F24 -lbl_8001604C: -/* 8001604C 57 80 06 3F */ clrlwi. r0, r28, 0x18 -/* 80016050 40 82 00 24 */ bne lbl_80016074 -/* 80016054 3C 60 80 37 */ lis r3, m_Do_m_Do_dvd_thread__stringBase0@ha /* 0x803741A8@ha */ -/* 80016058 38 63 41 A8 */ addi r3, r3, m_Do_m_Do_dvd_thread__stringBase0@l /* 0x803741A8@l */ -/* 8001605C 38 63 00 AE */ addi r3, r3, 0xae -/* 80016060 4C C6 31 82 */ crclr 6 -/* 80016064 4B FF 0B A9 */ bl OSReport_Error -/* 80016068 4B FF 8D 8D */ bl mDoExt_getArchiveHeapPtr__Fv -/* 8001606C 7C 79 1B 78 */ mr r25, r3 -/* 80016070 4B FF FE B4 */ b lbl_80015F24 -lbl_80016074: -/* 80016074 57 A0 06 3F */ clrlwi. r0, r29, 0x18 -/* 80016078 40 82 00 24 */ bne lbl_8001609C -/* 8001607C 3C 60 80 37 */ lis r3, m_Do_m_Do_dvd_thread__stringBase0@ha /* 0x803741A8@ha */ -/* 80016080 38 63 41 A8 */ addi r3, r3, m_Do_m_Do_dvd_thread__stringBase0@l /* 0x803741A8@l */ -/* 80016084 38 63 00 F2 */ addi r3, r3, 0xf2 -/* 80016088 4C C6 31 82 */ crclr 6 -/* 8001608C 4B FF 0B 81 */ bl OSReport_Error -/* 80016090 4B FF 8C C1 */ bl mDoExt_getGameHeap__Fv -/* 80016094 7C 79 1B 78 */ mr r25, r3 -/* 80016098 4B FF FE 8C */ b lbl_80015F24 -lbl_8001609C: -/* 8001609C 57 60 06 3F */ clrlwi. r0, r27, 0x18 -/* 800160A0 40 82 00 24 */ bne lbl_800160C4 -/* 800160A4 3C 60 80 37 */ lis r3, m_Do_m_Do_dvd_thread__stringBase0@ha /* 0x803741A8@ha */ -/* 800160A8 38 63 41 A8 */ addi r3, r3, m_Do_m_Do_dvd_thread__stringBase0@l /* 0x803741A8@l */ -/* 800160AC 38 63 01 32 */ addi r3, r3, 0x132 -/* 800160B0 4C C6 31 82 */ crclr 6 -/* 800160B4 4B FF 0B 59 */ bl OSReport_Error -/* 800160B8 4B FF 8D 79 */ bl mDoExt_getJ2dHeap__Fv -/* 800160BC 7C 79 1B 78 */ mr r25, r3 -/* 800160C0 4B FF FE 64 */ b lbl_80015F24 -lbl_800160C4: -/* 800160C4 3C 60 80 37 */ lis r3, m_Do_m_Do_dvd_thread__stringBase0@ha /* 0x803741A8@ha */ -/* 800160C8 38 63 41 A8 */ addi r3, r3, m_Do_m_Do_dvd_thread__stringBase0@l /* 0x803741A8@l */ -/* 800160CC 38 63 01 6F */ addi r3, r3, 0x16f -/* 800160D0 4C C6 31 82 */ crclr 6 -/* 800160D4 4B FF 0A 69 */ bl OSReport_FatalError -lbl_800160D8: -/* 800160D8 38 00 00 01 */ li r0, 1 -/* 800160DC 98 1A 00 0C */ stb r0, 0xc(r26) -/* 800160E0 80 7A 00 1C */ lwz r3, 0x1c(r26) -/* 800160E4 30 03 FF FF */ addic r0, r3, -1 -/* 800160E8 7C 00 19 10 */ subfe r0, r0, r3 -/* 800160EC 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 800160F0 39 61 00 30 */ addi r11, r1, 0x30 -/* 800160F4 48 34 C1 25 */ bl _restgpr_25 -/* 800160F8 80 01 00 34 */ lwz r0, 0x34(r1) -/* 800160FC 7C 08 03 A6 */ mtlr r0 -/* 80016100 38 21 00 30 */ addi r1, r1, 0x30 -/* 80016104 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/execute__25mDoDvdThd_mountXArchive_cFv.s b/asm/m_Do/m_Do_dvd_thread/execute__25mDoDvdThd_mountXArchive_cFv.s deleted file mode 100644 index a1b30254d6..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/execute__25mDoDvdThd_mountXArchive_cFv.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_800162B0: -/* 800162B0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800162B4 7C 08 02 A6 */ mflr r0 -/* 800162B8 90 01 00 14 */ stw r0, 0x14(r1) -/* 800162BC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800162C0 93 C1 00 08 */ stw r30, 8(r1) -/* 800162C4 7C 7E 1B 78 */ mr r30, r3 -/* 800162C8 88 03 00 14 */ lbz r0, 0x14(r3) -/* 800162CC 28 00 00 00 */ cmplwi r0, 0 -/* 800162D0 3B E0 00 02 */ li r31, 2 -/* 800162D4 40 82 00 08 */ bne lbl_800162DC -/* 800162D8 3B E0 00 01 */ li r31, 1 -lbl_800162DC: -/* 800162DC 80 BE 00 24 */ lwz r5, 0x24(r30) -/* 800162E0 28 05 00 00 */ cmplwi r5, 0 -/* 800162E4 41 82 00 08 */ beq lbl_800162EC -/* 800162E8 48 00 00 0C */ b lbl_800162F4 -lbl_800162EC: -/* 800162EC 4B FF 8B 01 */ bl mDoExt_getArchiveHeap__Fv -/* 800162F0 7C 65 1B 78 */ mr r5, r3 -lbl_800162F4: -/* 800162F4 80 7E 00 18 */ lwz r3, 0x18(r30) -/* 800162F8 80 9E 00 20 */ lwz r4, 0x20(r30) -/* 800162FC 7F E6 FB 78 */ mr r6, r31 -/* 80016300 48 2B F5 C9 */ bl mount__10JKRArchiveFlQ210JKRArchive10EMountModeP7JKRHeapQ210JKRArchive15EMountDirection -/* 80016304 90 7E 00 1C */ stw r3, 0x1c(r30) -/* 80016308 80 7E 00 1C */ lwz r3, 0x1c(r30) -/* 8001630C 30 03 FF FF */ addic r0, r3, -1 -/* 80016310 7C 00 19 10 */ subfe r0, r0, r3 -/* 80016314 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 80016318 38 00 00 01 */ li r0, 1 -/* 8001631C 98 1E 00 0C */ stb r0, 0xc(r30) -/* 80016320 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80016324 83 C1 00 08 */ lwz r30, 8(r1) -/* 80016328 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8001632C 7C 08 03 A6 */ mtlr r0 -/* 80016330 38 21 00 10 */ addi r1, r1, 0x10 -/* 80016334 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/getFirstCommand__17mDoDvdThd_param_cFv.s b/asm/m_Do/m_Do_dvd_thread/getFirstCommand__17mDoDvdThd_param_cFv.s deleted file mode 100644 index 5688835b52..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/getFirstCommand__17mDoDvdThd_param_cFv.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_800159DC: -/* 800159DC 80 63 00 24 */ lwz r3, 0x24(r3) -/* 800159E0 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/kick__17mDoDvdThd_param_cFv.s b/asm/m_Do/m_Do_dvd_thread/kick__17mDoDvdThd_param_cFv.s deleted file mode 100644 index fed833094d..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/kick__17mDoDvdThd_param_cFv.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_8001598C: -/* 8001598C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80015990 7C 08 02 A6 */ mflr r0 -/* 80015994 90 01 00 14 */ stw r0, 0x14(r1) -/* 80015998 38 80 00 00 */ li r4, 0 -/* 8001599C 38 A0 00 00 */ li r5, 0 -/* 800159A0 48 32 90 55 */ bl OSSendMessage -/* 800159A4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800159A8 7C 08 03 A6 */ mtlr r0 -/* 800159AC 38 21 00 10 */ addi r1, r1, 0x10 -/* 800159B0 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/mainLoop__17mDoDvdThd_param_cFv.s b/asm/m_Do/m_Do_dvd_thread/mainLoop__17mDoDvdThd_param_cFv.s deleted file mode 100644 index 2f866b575d..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/mainLoop__17mDoDvdThd_param_cFv.s +++ /dev/null @@ -1,44 +0,0 @@ -lbl_80015AD8: -/* 80015AD8 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80015ADC 7C 08 02 A6 */ mflr r0 -/* 80015AE0 90 01 00 24 */ stw r0, 0x24(r1) -/* 80015AE4 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80015AE8 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80015AEC 7C 7E 1B 78 */ mr r30, r3 -/* 80015AF0 3C 60 80 01 */ lis r3, cb__FPv@ha /* 0x80015A90@ha */ -/* 80015AF4 3B E3 5A 90 */ addi r31, r3, cb__FPv@l /* 0x80015A90@l */ -/* 80015AF8 48 00 00 54 */ b lbl_80015B4C -/* 80015AFC 48 00 00 3C */ b lbl_80015B38 -lbl_80015B00: -/* 80015B00 7F C3 F3 78 */ mr r3, r30 -/* 80015B04 80 81 00 08 */ lwz r4, 8(r1) -/* 80015B08 4B FF FF 35 */ bl cut__17mDoDvdThd_param_cFP19mDoDvdThd_command_c -/* 80015B0C 88 0D 87 00 */ lbz r0, struct_80450C80+0x0(r13) -/* 80015B10 28 00 00 00 */ cmplwi r0, 0 -/* 80015B14 41 82 00 1C */ beq lbl_80015B30 -/* 80015B18 48 27 A3 E5 */ bl getThreadPointer__6JASDvdFv -/* 80015B1C 7F E4 FB 78 */ mr r4, r31 -/* 80015B20 38 A1 00 08 */ addi r5, r1, 8 -/* 80015B24 38 C0 00 04 */ li r6, 4 -/* 80015B28 48 27 A0 35 */ bl sendCmdMsg__13JASTaskThreadFPFPv_vPCvUl -/* 80015B2C 48 00 00 0C */ b lbl_80015B38 -lbl_80015B30: -/* 80015B30 38 61 00 08 */ addi r3, r1, 8 -/* 80015B34 4B FF FF 5D */ bl cb__FPv -lbl_80015B38: -/* 80015B38 7F C3 F3 78 */ mr r3, r30 -/* 80015B3C 4B FF FE A1 */ bl getFirstCommand__17mDoDvdThd_param_cFv -/* 80015B40 90 61 00 08 */ stw r3, 8(r1) -/* 80015B44 28 03 00 00 */ cmplwi r3, 0 -/* 80015B48 40 82 FF B8 */ bne lbl_80015B00 -lbl_80015B4C: -/* 80015B4C 7F C3 F3 78 */ mr r3, r30 -/* 80015B50 4B FF FE 65 */ bl waitForKick__17mDoDvdThd_param_cFv -/* 80015B54 2C 03 00 00 */ cmpwi r3, 0 -/* 80015B58 40 82 FF E0 */ bne lbl_80015B38 -/* 80015B5C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80015B60 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80015B64 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80015B68 7C 08 03 A6 */ mtlr r0 -/* 80015B6C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80015B70 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/main__9mDoDvdThdFPv.s b/asm/m_Do/m_Do_dvd_thread/main__9mDoDvdThdFPv.s deleted file mode 100644 index 634c1c0487..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/main__9mDoDvdThdFPv.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_800157FC: -/* 800157FC 94 21 FF 70 */ stwu r1, -0x90(r1) -/* 80015800 7C 08 02 A6 */ mflr r0 -/* 80015804 90 01 00 94 */ stw r0, 0x94(r1) -/* 80015808 93 E1 00 8C */ stw r31, 0x8c(r1) -/* 8001580C 7C 7F 1B 78 */ mr r31, r3 -/* 80015810 48 32 B4 75 */ bl OSGetCurrentThread -/* 80015814 7C 64 1B 78 */ mr r4, r3 -/* 80015818 38 61 00 08 */ addi r3, r1, 8 -/* 8001581C 38 A0 00 00 */ li r5, 0 -/* 80015820 48 2B BE 99 */ bl __ct__9JKRThreadFP8OSThreadi -/* 80015824 38 61 00 08 */ addi r3, r1, 8 -/* 80015828 38 80 FF FF */ li r4, -1 -/* 8001582C 48 2B BF 2D */ bl __dt__9JKRThreadFv -/* 80015830 4B FF 94 B5 */ bl mDoExt_getAssertHeap__Fv -/* 80015834 48 2B 8C 05 */ bl becomeCurrentHeap__7JKRHeapFv -/* 80015838 7F E3 FB 78 */ mr r3, r31 -/* 8001583C 48 00 02 9D */ bl mainLoop__17mDoDvdThd_param_cFv -/* 80015840 38 60 00 00 */ li r3, 0 -/* 80015844 83 E1 00 8C */ lwz r31, 0x8c(r1) -/* 80015848 80 01 00 94 */ lwz r0, 0x94(r1) -/* 8001584C 7C 08 03 A6 */ mtlr r0 -/* 80015850 38 21 00 90 */ addi r1, r1, 0x90 -/* 80015854 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/my_DVDConvertPathToEntrynum__FPCc.s b/asm/m_Do/m_Do_dvd_thread/my_DVDConvertPathToEntrynum__FPCc.s deleted file mode 100644 index 50a967cb25..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/my_DVDConvertPathToEntrynum__FPCc.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_800158DC: -/* 800158DC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800158E0 7C 08 02 A6 */ mflr r0 -/* 800158E4 90 01 00 14 */ stw r0, 0x14(r1) -/* 800158E8 48 33 2C 41 */ bl DVDConvertPathToEntrynum -/* 800158EC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800158F0 7C 08 03 A6 */ mtlr r0 -/* 800158F4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800158F8 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/suspend__9mDoDvdThdFv.s b/asm/m_Do/m_Do_dvd_thread/suspend__9mDoDvdThdFv.s deleted file mode 100644 index 28ac71fc9e..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/suspend__9mDoDvdThdFv.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_800158B4: -/* 800158B4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800158B8 7C 08 02 A6 */ mflr r0 -/* 800158BC 90 01 00 14 */ stw r0, 0x14(r1) -/* 800158C0 3C 60 80 3E */ lis r3, l_thread__9mDoDvdThd@ha /* 0x803DD940@ha */ -/* 800158C4 38 63 D9 40 */ addi r3, r3, l_thread__9mDoDvdThd@l /* 0x803DD940@l */ -/* 800158C8 48 32 C1 75 */ bl OSSuspendThread -/* 800158CC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800158D0 7C 08 03 A6 */ mtlr r0 -/* 800158D4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800158D8 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_dvd_thread/waitForKick__17mDoDvdThd_param_cFv.s b/asm/m_Do/m_Do_dvd_thread/waitForKick__17mDoDvdThd_param_cFv.s deleted file mode 100644 index 1ece57ffb2..0000000000 --- a/asm/m_Do/m_Do_dvd_thread/waitForKick__17mDoDvdThd_param_cFv.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_800159B4: -/* 800159B4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800159B8 7C 08 02 A6 */ mflr r0 -/* 800159BC 90 01 00 14 */ stw r0, 0x14(r1) -/* 800159C0 38 80 00 00 */ li r4, 0 -/* 800159C4 38 A0 00 01 */ li r5, 1 -/* 800159C8 48 32 90 F5 */ bl OSReceiveMessage -/* 800159CC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800159D0 7C 08 03 A6 */ mtlr r0 -/* 800159D4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800159D8 4E 80 00 20 */ blr diff --git a/include/m_Do/m_Do_dvd_thread.h b/include/m_Do/m_Do_dvd_thread.h index 2ce24693d1..9a5e1b12ae 100644 --- a/include/m_Do/m_Do_dvd_thread.h +++ b/include/m_Do/m_Do_dvd_thread.h @@ -1,6 +1,111 @@ #ifndef M_DO_M_DO_DVD_THREAD_H #define M_DO_M_DO_DVD_THREAD_H +#include "JSystem/JKernel/JKRArchive.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "JSystem/JKernel/JKRMemArchive.h" #include "dolphin/types.h" +#include "f_pc/f_pc_node.h" + +typedef void* (*mDoDvdThd_callback_func)(void*); + +class mDoDvdThd_command_c : public node_class { +protected: + /* 0x0C */ bool mIsDone; + /* 0x10 vtable*/ +public: + /* 800158FC */ virtual ~mDoDvdThd_command_c(); + /* 80015B74 */ mDoDvdThd_command_c(); + virtual s32 execute() = 0; +}; // Size = 0x14 + +class mDoDvdThd_toMainRam_c : public mDoDvdThd_command_c { +public: + /* 80016338 */ mDoDvdThd_toMainRam_c(u8); + /* 80016394 */ static mDoDvdThd_toMainRam_c* create(char const*, u8, JKRHeap*); + /* 8001645C */ virtual ~mDoDvdThd_toMainRam_c(); + /* 800164BC */ virtual s32 execute(); + +private: + /* 0x14 */ u8 mMountDirection; + /* 0x18 */ s32 mEntryNum; + /* 0x1C */ void* mData; + /* 0x20 */ s32 mDataSize; + /* 0x24 */ JKRHeap* mHeap; +}; // Size = 0x28 + +class mDoDvdThd_param_c { +public: + /* 80015944 */ mDoDvdThd_param_c(); + /* 8001598C */ void kick(); + /* 800159B4 */ s32 waitForKick(); + /* 800159DC */ mDoDvdThd_command_c* getFirstCommand(); + /* 800159E4 */ void addition(mDoDvdThd_command_c*); + /* 80015A3C */ void cut(mDoDvdThd_command_c*); + /* 80015AD8 */ void mainLoop(); + +private: + /* 0x00 */ OSMessageQueue mMessageQueue; + /* 0x20 */ void* mMessageQueueMessages; + /* 0x24 */ node_list_class mNodeList; + /* 0x30 */ OSMutex mMutext; +}; // Size = 0x48 + +class mDoDvdThd_mountXArchive_c : public mDoDvdThd_command_c { +public: + /* 80016108 */ virtual ~mDoDvdThd_mountXArchive_c(); + /* 80016168 */ mDoDvdThd_mountXArchive_c(u8, JKRArchive::EMountMode); + /* 800161E0 */ static mDoDvdThd_mountXArchive_c* create(char const*, u8, JKRArchive::EMountMode, + JKRHeap*); + /* 800162B0 */ virtual s32 execute(); + +private: + /* 0x14 */ u8 mMountDirection; + /* 0x18 */ s32 mEntryNum; + /* 0x1C */ JKRArchive* mArchive; + /* 0x20 */ JKRArchive::EMountMode mMountMode; + /* 0x24 */ JKRHeap* mHeap; +}; // Size = 0x28 + +class mDoDvdThd_mountArchive_c : public mDoDvdThd_command_c { +public: + /* 80015D44 */ virtual ~mDoDvdThd_mountArchive_c(); + /* 80015DA4 */ mDoDvdThd_mountArchive_c(u8); + /* 80015E14 */ static mDoDvdThd_mountArchive_c* create(char const*, u8, JKRHeap*); + /* 80015EDC */ virtual s32 execute(); + +private: + /* 0x14 */ u8 mMountDirection; + /* 0x18 */ s32 mEntryNumber; + /* 0x1C */ JKRMemArchive* mArchive; + /* 0x20 */ JKRHeap* mHeap; +}; // Size = 0x24 + +class mDoDvdThd_callback_c : public mDoDvdThd_command_c { +public: + /* 80015BB8 */ virtual ~mDoDvdThd_callback_c(); + /* 80015C18 */ mDoDvdThd_callback_c(mDoDvdThd_callback_func, void*); + /* 80015C74 */ static mDoDvdThd_callback_c* create(mDoDvdThd_callback_func, void*); + /* 80015CF0 */ virtual s32 execute(); + +private: + /* 0x14 */ mDoDvdThd_callback_func mFunction; + /* 0x18 */ void* mData; + /* 0x1C */ void* mResult; +}; + +struct mDoDvdThdStack { + u8 stack[4096]; +} __attribute__((aligned(16))); + +struct mDoDvdThd { + /* 800157FC */ static s32 main(void*); + /* 80015858 */ static void create(s32); + /* 800158B4 */ static void suspend(); + + static OSThread l_thread; + static mDoDvdThdStack l_threadStack; + static mDoDvdThd_param_c l_param; +}; #endif /* M_DO_M_DO_DVD_THREAD_H */ diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 773f4c2f44..a3abb886cb 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -3,6 +3,7 @@ #include "JSystem/J3DGraphAnimator/J3DAnimation.h" #include "JSystem/J3DGraphAnimator/J3DModel.h" +#include "JSystem/JKernel/JKRAssertHeap.h" #include "JSystem/JKernel/JKRExpHeap.h" #include "JSystem/JKernel/JKRSolidHeap.h" #include "dolphin/types.h" @@ -136,6 +137,11 @@ JKRHeap* mDoExt_getGameHeap(); void mDoExt_destroySolidHeap(JKRSolidHeap*); JKRHeap* mDoExt_setCurrentHeap(JKRHeap*); JKRExpHeap* mDoExt_getArchiveHeap(); +JKRExpHeap* mDoExt_getArchiveHeapPtr(); void mDoExt_destroyExpHeap(JKRExpHeap*); +JKRAssertHeap* mDoExt_getAssertHeap(); +JKRExpHeap* mDoExt_getCommandHeap(); +JKRExpHeap* mDoExt_getZeldaHeap(); +JKRExpHeap* mDoExt_getJ2dHeap(); #endif /* M_DO_M_DO_EXT_H */ diff --git a/src/m_Do/m_Do_Reset.cpp b/src/m_Do/m_Do_Reset.cpp index e13249b3ee..5abaa68cea 100644 --- a/src/m_Do/m_Do_Reset.cpp +++ b/src/m_Do/m_Do_Reset.cpp @@ -50,7 +50,7 @@ extern "C" void mDoRst_resetCallBack__FiPv(); extern "C" u32 getResetData__6mDoRstFv(); extern "C" extern char const* const m_Do_m_Do_Reset__stringBase0; extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */]; -extern "C" extern u64 struct_80450C80; +extern "C" extern u8 struct_80450C80; extern "C" extern u8 data_80450C88[8]; // @@ -235,9 +235,22 @@ mDoRstData* mDoRst::getResetData() { /* 80450C80-80450C88 -00001 0008+00 0/0 6/6 0/0 .sbss None */ /* 80450C80 0001+00 data_80450C80 None */ /* 80450C81 0007+00 data_80450C81 None */ -// type might be fake, used for now to align to 8 -extern u64 struct_80450C80; -u64 struct_80450C80; +// most of these are probably fake +#pragma push +#pragma force_active on +u8 struct_80450C7C; +u8 struct_80450C7D; +u8 struct_80450C7E; +u8 struct_80450C7F; +u8 struct_80450C80; +u8 struct_80450C81; +u8 struct_80450C82; +u8 struct_80450C83; +u8 struct_80450C84; +u8 struct_80450C85; +u8 struct_80450C86; +u8 struct_80450C87; +#pragma pop /* 80450C88-80450C90 000188 0008+00 0/0 2/2 0/0 .sbss None */ extern u8 data_80450C88[8]; diff --git a/src/m_Do/m_Do_dvd_thread.cpp b/src/m_Do/m_Do_dvd_thread.cpp index be32126f17..57faf61141 100644 --- a/src/m_Do/m_Do_dvd_thread.cpp +++ b/src/m_Do/m_Do_dvd_thread.cpp @@ -4,617 +4,368 @@ // #include "m_Do/m_Do_dvd_thread.h" +#include "JSystem/JKernel/JKRDvdRipper.h" +#include "JSystem/JKernel/JKRThread.h" +#include "SSystem/SComponent/c_list.h" +#include "SSystem/SComponent/c_node.h" #include "dol2asm.h" +#include "dolphin/dvd/dvd.h" +#include "dolphin/os/OSThread.h" #include "dolphin/types.h" +#include "m_Do/m_Do_ext.h" // // Types: // -struct node_list_class {}; - -struct node_class {}; - -struct JKRHeap { - /* 802CE438 */ void becomeCurrentHeap(); - /* 802CE700 */ void getSize(void*); -}; - -struct mDoDvdThd_toMainRam_c { - /* 80016338 */ mDoDvdThd_toMainRam_c(u8); - /* 80016394 */ void create(char const*, u8, JKRHeap*); - /* 8001645C */ ~mDoDvdThd_toMainRam_c(); - /* 800164BC */ void execute(); -}; - -struct mDoDvdThd_command_c { - /* 800158FC */ ~mDoDvdThd_command_c(); - /* 80015B74 */ mDoDvdThd_command_c(); -}; - -struct mDoDvdThd_param_c { - /* 80015944 */ mDoDvdThd_param_c(); - /* 8001598C */ void kick(); - /* 800159B4 */ void waitForKick(); - /* 800159DC */ void getFirstCommand(); - /* 800159E4 */ void addition(mDoDvdThd_command_c*); - /* 80015A3C */ void cut(mDoDvdThd_command_c*); - /* 80015AD8 */ void mainLoop(); -}; - -struct JKRArchive { - struct EMountMode {}; - - struct EMountDirection {}; - - /* 802D58C8 */ void mount(s32, JKRArchive::EMountMode, JKRHeap*, JKRArchive::EMountDirection); -}; - -struct mDoDvdThd_mountXArchive_c { - /* 80016108 */ ~mDoDvdThd_mountXArchive_c(); - /* 80016168 */ mDoDvdThd_mountXArchive_c(u8, JKRArchive::EMountMode); - /* 800161E0 */ void create(char const*, u8, JKRArchive::EMountMode, JKRHeap*); - /* 800162B0 */ void execute(); -}; - -struct mDoDvdThd_mountArchive_c { - /* 80015D44 */ ~mDoDvdThd_mountArchive_c(); - /* 80015DA4 */ mDoDvdThd_mountArchive_c(u8); - /* 80015E14 */ void create(char const*, u8, JKRHeap*); - /* 80015EDC */ void execute(); -}; - -struct mDoDvdThd_callback_c { - /* 80015BB8 */ ~mDoDvdThd_callback_c(); - /* 80015C18 */ mDoDvdThd_callback_c(void* (*)(void*), void*); - /* 80015C74 */ void create(void* (*)(void*), void*); - /* 80015CF0 */ void execute(); -}; - -struct mDoDvdThd { - /* 800157FC */ void main(void*); - /* 80015858 */ void create(s32); - /* 800158B4 */ void suspend(); - - static u8 l_thread[792 + 8 /* padding */]; - static u8 l_threadStack[4096]; - static u8 l_param[72 + 24 /* padding */]; -}; - -struct OSThread {}; - -struct JKRThread { - /* 802D16B8 */ JKRThread(OSThread*, int); - /* 802D1758 */ ~JKRThread(); -}; - -struct JKRMemArchive { - /* 802D69B8 */ JKRMemArchive(s32, JKRArchive::EMountDirection); -}; - -struct JKRExpandSwitch {}; - -struct JKRDvdRipper { - struct EAllocDirection {}; - - /* 802D9C54 */ void loadToMainRAM(s32, u8*, JKRExpandSwitch, u32, JKRHeap*, - JKRDvdRipper::EAllocDirection, u32, int*, u32*); -}; - struct JASTaskThread { /* 8028FB5C */ void sendCmdMsg(void (*)(void*), void const*, u32); }; -// -// Forward References: -// +struct JASDvd { + static JASTaskThread* getThreadPointer(); +}; -extern "C" void main__9mDoDvdThdFPv(); -extern "C" void create__9mDoDvdThdFl(); -extern "C" void suspend__9mDoDvdThdFv(); -extern "C" static void my_DVDConvertPathToEntrynum__FPCc(); -extern "C" void __dt__19mDoDvdThd_command_cFv(); -extern "C" void __ct__17mDoDvdThd_param_cFv(); -extern "C" void kick__17mDoDvdThd_param_cFv(); -extern "C" void waitForKick__17mDoDvdThd_param_cFv(); -extern "C" void getFirstCommand__17mDoDvdThd_param_cFv(); -extern "C" void addition__17mDoDvdThd_param_cFP19mDoDvdThd_command_c(); -extern "C" void cut__17mDoDvdThd_param_cFP19mDoDvdThd_command_c(); -extern "C" static void cb__FPv(); -extern "C" void mainLoop__17mDoDvdThd_param_cFv(); -extern "C" void __ct__19mDoDvdThd_command_cFv(); -extern "C" void __dt__20mDoDvdThd_callback_cFv(); -extern "C" void __ct__20mDoDvdThd_callback_cFPFPv_PvPv(); -extern "C" void create__20mDoDvdThd_callback_cFPFPv_PvPv(); -extern "C" void execute__20mDoDvdThd_callback_cFv(); -extern "C" void __dt__24mDoDvdThd_mountArchive_cFv(); -extern "C" void __ct__24mDoDvdThd_mountArchive_cFUc(); -extern "C" void create__24mDoDvdThd_mountArchive_cFPCcUcP7JKRHeap(); -extern "C" void execute__24mDoDvdThd_mountArchive_cFv(); -extern "C" void __dt__25mDoDvdThd_mountXArchive_cFv(); -extern "C" void __ct__25mDoDvdThd_mountXArchive_cFUcQ210JKRArchive10EMountMode(); -extern "C" void create__25mDoDvdThd_mountXArchive_cFPCcUcQ210JKRArchive10EMountModeP7JKRHeap(); -extern "C" void execute__25mDoDvdThd_mountXArchive_cFv(); -extern "C" void __ct__21mDoDvdThd_toMainRam_cFUc(); -extern "C" void create__21mDoDvdThd_toMainRam_cFPCcUcP7JKRHeap(); -extern "C" void __dt__21mDoDvdThd_toMainRam_cFv(); -extern "C" void execute__21mDoDvdThd_toMainRam_cFv(); -extern "C" void __sinit_m_Do_dvd_thread_cpp(); -extern "C" extern char const* const m_Do_m_Do_dvd_thread__stringBase0; -extern "C" u8 l_thread__9mDoDvdThd[792 + 8 /* padding */]; -extern "C" u8 l_threadStack__9mDoDvdThd[4096]; -extern "C" u8 l_param__9mDoDvdThd[72 + 24 /* padding */]; - -// -// External References: -// - -extern "C" void OSReport_FatalError(); -extern "C" void OSReport_Error(); -extern "C" void mDoExt_getAssertHeap__Fv(); -extern "C" void mDoExt_getGameHeap__Fv(); -extern "C" void mDoExt_getZeldaHeap__Fv(); -extern "C" void mDoExt_getCommandHeap__Fv(); -extern "C" void mDoExt_getArchiveHeap__Fv(); -extern "C" void mDoExt_getArchiveHeapPtr__Fv(); -extern "C" void mDoExt_getJ2dHeap__Fv(); -extern "C" void cLs_SingleCut__FP10node_class(); -extern "C" void cLs_Addition__FP15node_list_classP10node_class(); -extern "C" void cLs_Create__FP15node_list_class(); -extern "C" void cNd_ForcedClear__FP10node_class(); -extern "C" void sendCmdMsg__13JASTaskThreadFPFPv_vPCvUl(); -extern "C" void getThreadPointer__6JASDvdFv(); -extern "C" void becomeCurrentHeap__7JKRHeapFv(); -extern "C" void getSize__7JKRHeapFPv(); -extern "C" void* __nw__FUlP7JKRHeapi(); -extern "C" void __dl__FPv(); -extern "C" void __ct__9JKRThreadFP8OSThreadi(); -extern "C" void __dt__9JKRThreadFv(); -extern "C" void -mount__10JKRArchiveFlQ210JKRArchive10EMountModeP7JKRHeapQ210JKRArchive15EMountDirection(); -extern "C" void __ct__13JKRMemArchiveFlQ210JKRArchive15EMountDirection(); -extern "C" void -loadToMainRAM__12JKRDvdRipperFlPUc15JKRExpandSwitchUlP7JKRHeapQ212JKRDvdRipper15EAllocDirectionUlPiPUl(); -extern "C" void OSInitMessageQueue(); -extern "C" void OSSendMessage(); -extern "C" void OSReceiveMessage(); -extern "C" void OSInitMutex(); -extern "C" void OSLockMutex(); -extern "C" void OSUnlockMutex(); -extern "C" void OSGetCurrentThread(); -extern "C" void OSCreateThread(); -extern "C" void OSResumeThread(); -extern "C" void OSSuspendThread(); -extern "C" void DVDConvertPathToEntrynum(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern u8 struct_80450C80[8]; +extern "C" extern u8 struct_80450C80; +extern "C" extern u8 struct_80450C81; // // Declarations: // /* 800157FC-80015858 01013C 005C+00 1/1 0/1 0/0 .text main__9mDoDvdThdFPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd::main(void* param_0) { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/main__9mDoDvdThdFPv.s" +s32 mDoDvdThd::main(void* param_0) { + { JKRThread jkrThread(OSGetCurrentThread(), 0); } + mDoExt_getAssertHeap()->becomeCurrentHeap(); + static_cast(param_0)->mainLoop(); + return 0; } -#pragma pop /* ############################################################################################## */ /* 803DD940-803DDC60 00A660 0318+08 2/2 0/0 0/0 .bss l_thread__9mDoDvdThd */ -u8 mDoDvdThd::l_thread[792 + 8 /* padding */]; +OSThread mDoDvdThd::l_thread; /* 803DDC60-803DEC60 00A980 1000+00 0/1 0/0 0/0 .bss l_threadStack__9mDoDvdThd */ -#pragma push -#pragma force_active on -u8 mDoDvdThd::l_threadStack[4096]; -#pragma pop +mDoDvdThdStack mDoDvdThd::l_threadStack; /* 803DEC60-803DECC0 00B980 0048+18 5/6 0/0 0/0 .bss l_param__9mDoDvdThd */ -u8 mDoDvdThd::l_param[72 + 24 /* padding */]; +mDoDvdThd_param_c mDoDvdThd::l_param; + +#pragma push +#pragma force_active on +u8 padding[0x18]; +#pragma pop /* 80015858-800158B4 010198 005C+00 0/0 1/1 0/0 .text create__9mDoDvdThdFl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd::create(s32 param_0) { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/create__9mDoDvdThdFl.s" +void mDoDvdThd::create(s32 param_0) { + OSCreateThread(&l_thread, mDoDvdThd::main, &l_param, + l_threadStack.stack + sizeof(l_threadStack), sizeof(l_threadStack), param_0, 1); + OSResumeThread(&l_thread); } -#pragma pop /* 800158B4-800158DC 0101F4 0028+00 0/0 1/1 0/0 .text suspend__9mDoDvdThdFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd::suspend() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/suspend__9mDoDvdThdFv.s" +void mDoDvdThd::suspend() { + OSSuspendThread(&l_thread); } -#pragma pop /* 800158DC-800158FC 01021C 0020+00 3/3 0/0 0/0 .text my_DVDConvertPathToEntrynum__FPCc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void my_DVDConvertPathToEntrynum(char const* param_0) { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/my_DVDConvertPathToEntrynum__FPCc.s" +static s32 my_DVDConvertPathToEntrynum(char const* param_0) { + return DVDConvertPathToEntrynum(param_0); } -#pragma pop - -/* ############################################################################################## */ -/* 803A34A8-803A34B8 0005C8 0010+00 2/2 0/0 0/0 .data __vt__21mDoDvdThd_toMainRam_c */ -SECTION_DATA extern void* __vt__21mDoDvdThd_toMainRam_c[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__21mDoDvdThd_toMainRam_cFv, - (void*)execute__21mDoDvdThd_toMainRam_cFv, -}; - -/* 803A34B8-803A34C8 0005D8 0010+00 2/2 0/0 0/0 .data __vt__25mDoDvdThd_mountXArchive_c - */ -SECTION_DATA extern void* __vt__25mDoDvdThd_mountXArchive_c[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__25mDoDvdThd_mountXArchive_cFv, - (void*)execute__25mDoDvdThd_mountXArchive_cFv, -}; - -/* 803A34C8-803A34D8 0005E8 0010+00 2/2 0/0 0/0 .data __vt__24mDoDvdThd_mountArchive_c */ -SECTION_DATA extern void* __vt__24mDoDvdThd_mountArchive_c[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__24mDoDvdThd_mountArchive_cFv, - (void*)execute__24mDoDvdThd_mountArchive_cFv, -}; - -/* 803A34D8-803A34E8 0005F8 0010+00 2/2 0/0 0/0 .data __vt__20mDoDvdThd_callback_c */ -SECTION_DATA extern void* __vt__20mDoDvdThd_callback_c[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__20mDoDvdThd_callback_cFv, - (void*)execute__20mDoDvdThd_callback_cFv, -}; - -/* 803A34E8-803A34F8 000608 0010+00 2/2 0/0 0/0 .data __vt__19mDoDvdThd_command_c */ -SECTION_DATA extern void* __vt__19mDoDvdThd_command_c[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__19mDoDvdThd_command_cFv, - (void*)NULL, -}; /* 800158FC-80015944 01023C 0048+00 5/4 0/0 0/0 .text __dt__19mDoDvdThd_command_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm mDoDvdThd_command_c::~mDoDvdThd_command_c() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/__dt__19mDoDvdThd_command_cFv.s" -} -#pragma pop +mDoDvdThd_command_c::~mDoDvdThd_command_c() {} /* 80015944-8001598C 010284 0048+00 1/1 0/0 0/0 .text __ct__17mDoDvdThd_param_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm mDoDvdThd_param_c::mDoDvdThd_param_c() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/__ct__17mDoDvdThd_param_cFv.s" +mDoDvdThd_param_c::mDoDvdThd_param_c() { + OSInitMessageQueue(&mMessageQueue, &mMessageQueueMessages, 1); + OSInitMutex(&mMutext); + cLs_Create(&mNodeList); } -#pragma pop /* 8001598C-800159B4 0102CC 0028+00 2/2 0/0 0/0 .text kick__17mDoDvdThd_param_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd_param_c::kick() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/kick__17mDoDvdThd_param_cFv.s" +void mDoDvdThd_param_c::kick() { + OSSendMessage(&mMessageQueue, NULL, OS_MESSAGE_NON_BLOCKING); } -#pragma pop /* 800159B4-800159DC 0102F4 0028+00 1/1 0/0 0/0 .text waitForKick__17mDoDvdThd_param_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd_param_c::waitForKick() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/waitForKick__17mDoDvdThd_param_cFv.s" +s32 mDoDvdThd_param_c::waitForKick() { + return OSReceiveMessage(&mMessageQueue, NULL, OS_MESSAGE_BLOCKING); } -#pragma pop /* 800159DC-800159E4 01031C 0008+00 1/1 0/0 0/0 .text getFirstCommand__17mDoDvdThd_param_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd_param_c::getFirstCommand() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/getFirstCommand__17mDoDvdThd_param_cFv.s" +mDoDvdThd_command_c* mDoDvdThd_param_c::getFirstCommand() { + return (mDoDvdThd_command_c*)mNodeList.mpHead; } -#pragma pop /* 800159E4-80015A3C 010324 0058+00 4/4 0/0 0/0 .text * addition__17mDoDvdThd_param_cFP19mDoDvdThd_command_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd_param_c::addition(mDoDvdThd_command_c* param_0) { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/addition__17mDoDvdThd_param_cFP19mDoDvdThd_command_c.s" +void mDoDvdThd_param_c::addition(mDoDvdThd_command_c* pCommand) { + OSLockMutex(&mMutext); + cLs_Addition(&mNodeList, pCommand); + OSUnlockMutex(&mMutext); + this->kick(); } -#pragma pop /* 80015A3C-80015A90 01037C 0054+00 1/1 0/0 0/0 .text * cut__17mDoDvdThd_param_cFP19mDoDvdThd_command_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd_param_c::cut(mDoDvdThd_command_c* param_0) { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/cut__17mDoDvdThd_param_cFP19mDoDvdThd_command_c.s" +void mDoDvdThd_param_c::cut(mDoDvdThd_command_c* param_0) { + OSLockMutex(&mMutext); + cLs_SingleCut(param_0); + OSUnlockMutex(&mMutext); + this->kick(); } -#pragma pop - -/* ############################################################################################## */ -/* 803741A8-803741A8 000808 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_803741A8 = - "mDoDvdThd_param_c::mainLoop() コマンドの実行が失敗しました。\n"; -#pragma pop /* 80015A90-80015AD8 0103D0 0048+00 1/1 0/0 0/0 .text cb__FPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void cb(void* param_0) { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/cb__FPv.s" +static void cb(void* param_0) { + mDoDvdThd_command_c** pCmd = (mDoDvdThd_command_c**)param_0; + s32 result = (*pCmd)->execute(); + if (result != 1) { + OSReport_Error("mDoDvdThd_param_c::mainLoop() コマンドの実行が失敗しました。\n"); + } } -#pragma pop /* 80015AD8-80015B74 010418 009C+00 1/1 0/0 0/0 .text mainLoop__17mDoDvdThd_param_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd_param_c::mainLoop() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/mainLoop__17mDoDvdThd_param_cFv.s" +void mDoDvdThd_param_c::mainLoop() { + while (this->waitForKick() != 0) { + while (mDoDvdThd_command_c* command = this->getFirstCommand()) { + this->cut(command); + if (struct_80450C80 != 0) { + JASDvd::getThreadPointer()->sendCmdMsg(cb, &command, 4); + } else { + cb(&command); + } + } + } } -#pragma pop /* 80015B74-80015BB8 0104B4 0044+00 4/4 0/0 0/0 .text __ct__19mDoDvdThd_command_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm mDoDvdThd_command_c::mDoDvdThd_command_c() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/__ct__19mDoDvdThd_command_cFv.s" +mDoDvdThd_command_c::mDoDvdThd_command_c() { + mIsDone = false; + cNd_ForcedClear(this); } -#pragma pop /* 80015BB8-80015C18 0104F8 0060+00 1/0 0/0 0/0 .text __dt__20mDoDvdThd_callback_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm mDoDvdThd_callback_c::~mDoDvdThd_callback_c() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/__dt__20mDoDvdThd_callback_cFv.s" -} -#pragma pop +mDoDvdThd_callback_c::~mDoDvdThd_callback_c() {} /* 80015C18-80015C74 010558 005C+00 1/1 0/0 0/0 .text __ct__20mDoDvdThd_callback_cFPFPv_PvPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm mDoDvdThd_callback_c::mDoDvdThd_callback_c(void* (*param_0)(void*), void* param_1) { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/__ct__20mDoDvdThd_callback_cFPFPv_PvPv.s" +mDoDvdThd_callback_c::mDoDvdThd_callback_c(mDoDvdThd_callback_func pFunc, void* pData) { + mFunction = pFunc; + mData = pData; + mResult = NULL; } -#pragma pop /* 80015C74-80015CF0 0105B4 007C+00 0/0 3/3 0/0 .text create__20mDoDvdThd_callback_cFPFPv_PvPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd_callback_c::create(void* (*param_0)(void*), void* param_1) { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/create__20mDoDvdThd_callback_cFPFPv_PvPv.s" +mDoDvdThd_callback_c* mDoDvdThd_callback_c::create(mDoDvdThd_callback_func pFunc, void* pData) { + mDoDvdThd_callback_c* callCmd = + new (mDoExt_getCommandHeap(), -4) mDoDvdThd_callback_c(pFunc, pData); + if (callCmd != NULL) { + mDoDvdThd::l_param.addition(callCmd); + } + return callCmd; } -#pragma pop /* 80015CF0-80015D44 010630 0054+00 1/0 0/0 0/0 .text execute__20mDoDvdThd_callback_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd_callback_c::execute() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/execute__20mDoDvdThd_callback_cFv.s" +s32 mDoDvdThd_callback_c::execute() { + mResult = mFunction(mData); + mIsDone = true; + return mResult != NULL; } -#pragma pop /* 80015D44-80015DA4 010684 0060+00 1/0 0/0 0/0 .text __dt__24mDoDvdThd_mountArchive_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm mDoDvdThd_mountArchive_c::~mDoDvdThd_mountArchive_c() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/__dt__24mDoDvdThd_mountArchive_cFv.s" -} -#pragma pop +mDoDvdThd_mountArchive_c::~mDoDvdThd_mountArchive_c() {} /* 80015DA4-80015E14 0106E4 0070+00 1/1 0/0 0/0 .text __ct__24mDoDvdThd_mountArchive_cFUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm mDoDvdThd_mountArchive_c::mDoDvdThd_mountArchive_c(u8 param_0) { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/__ct__24mDoDvdThd_mountArchive_cFUc.s" +mDoDvdThd_mountArchive_c::mDoDvdThd_mountArchive_c(u8 param_0) { + mMountDirection = param_0; + mEntryNumber = -1; + mArchive = NULL; + mHeap = NULL; + if (param_0 == 0) { + mMountDirection = struct_80450C81; + } } -#pragma pop /* 80015E14-80015EDC 010754 00C8+00 0/0 10/10 1/1 .text * create__24mDoDvdThd_mountArchive_cFPCcUcP7JKRHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd_mountArchive_c::create(char const* param_0, u8 param_1, JKRHeap* param_2) { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/create__24mDoDvdThd_mountArchive_cFPCcUcP7JKRHeap.s" +mDoDvdThd_mountArchive_c* mDoDvdThd_mountArchive_c::create(char const* pArchivePath, + u8 mountDirection, JKRHeap* pHeap) { + mDoDvdThd_mountArchive_c* mountArcCmd = + new (mDoExt_getCommandHeap(), -4) mDoDvdThd_mountArchive_c(mountDirection); + if (mountArcCmd != NULL) { + mountArcCmd->mEntryNumber = my_DVDConvertPathToEntrynum(pArchivePath); + if (mountArcCmd->mEntryNumber == -1) { + mountArcCmd->mIsDone = true; + delete mountArcCmd; + mountArcCmd = NULL; + } else { + mountArcCmd->mHeap = pHeap; + mDoDvdThd::l_param.addition(mountArcCmd); + } + } + return mountArcCmd; } -#pragma pop - -/* ############################################################################################## */ -/* 803741A8-803741A8 000808 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_803741E6 = - "mDoDvdThd_mountArchive_c::execute マウント失敗\n"; -SECTION_DEAD static char const* const stringBase_80374216 = - "mDoDvdThd_mountArchive_c::execute ゼルダヒープで再チャレンジ!" - "\n"; -SECTION_DEAD static char const* const stringBase_80374256 = - "mDoDvdThd_mountArchive_c::execute アーカイブヒープで再チャレン" - "ジ!\n"; -SECTION_DEAD static char const* const stringBase_8037429A = - "mDoDvdThd_mountArchive_c::execute ゲームヒープで再チャレンジ!" - "\n"; -SECTION_DEAD static char const* const stringBase_803742DA = - "mDoDvdThd_mountArchive_c::execute J2Dヒープで再チャレンジ!" - "\n"; -SECTION_DEAD static char const* const stringBase_80374317 = - "mDoDvdThd_mountArchive_c::execute ヒープが致命的に足りません!" - "\n"; -#pragma pop /* 80015EDC-80016108 01081C 022C+00 1/0 0/0 0/0 .text execute__24mDoDvdThd_mountArchive_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd_mountArchive_c::execute() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/execute__24mDoDvdThd_mountArchive_cFv.s" +s32 mDoDvdThd_mountArchive_c::execute() { + bool isZeldaHeap = false; + bool isGameHeap = false; + bool isArcHeap = false; + bool isJ2DHeap = false; + JKRHeap* heap = mHeap != NULL ? mHeap : mDoExt_getArchiveHeap(); + JKRMemArchive* memArchive; + while (true) { + if (heap == mDoExt_getArchiveHeapPtr()) { + isArcHeap = true; + } else if (heap == mDoExt_getZeldaHeap()) { + isZeldaHeap = true; + } else if (heap == mDoExt_getGameHeap()) { + isGameHeap = true; + } else if (heap == mDoExt_getJ2dHeap()) { + isJ2DHeap = true; + } + if (mMountDirection == 0) { + memArchive = + new (heap, 0) JKRMemArchive(mEntryNumber, JKRArchive::MOUNT_DIRECTION_HEAD); + } else { + memArchive = + new (heap, -4) JKRMemArchive(mEntryNumber, JKRArchive::MOUNT_DIRECTION_TAIL); + } + if (memArchive != NULL && memArchive->isMounted()) { + mArchive = memArchive; + break; + } + OSReport_Error("mDoDvdThd_mountArchive_c::execute マウント失敗\n"); + if (memArchive) { + delete memArchive; + } + if (!isZeldaHeap) { + OSReport_Error("mDoDvdThd_mountArchive_c::execute ゼルダヒープで再チャレンジ!\n"); + heap = mDoExt_getZeldaHeap(); + } else if (!isArcHeap) { + OSReport_Error("mDoDvdThd_mountArchive_c::execute アーカイブヒープで再チャレンジ!\n"); + heap = mDoExt_getArchiveHeapPtr(); + } else if (!isGameHeap) { + OSReport_Error("mDoDvdThd_mountArchive_c::execute ゲームヒープで再チャレンジ!\n"); + heap = mDoExt_getGameHeap(); + } else if (!isJ2DHeap) { + OSReport_Error("mDoDvdThd_mountArchive_c::execute J2Dヒープで再チャレンジ!\n"); + heap = mDoExt_getJ2dHeap(); + } else { + OSReport_FatalError("mDoDvdThd_mountArchive_c::execute ヒープが致命的に足りません!\n"); + break; + } + } + mIsDone = true; + return mArchive != NULL; } -#pragma pop /* 80016108-80016168 010A48 0060+00 1/0 0/0 0/0 .text __dt__25mDoDvdThd_mountXArchive_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm mDoDvdThd_mountXArchive_c::~mDoDvdThd_mountXArchive_c() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/__dt__25mDoDvdThd_mountXArchive_cFv.s" -} -#pragma pop +mDoDvdThd_mountXArchive_c::~mDoDvdThd_mountXArchive_c() {} /* 80016168-800161E0 010AA8 0078+00 1/1 0/0 0/0 .text * __ct__25mDoDvdThd_mountXArchive_cFUcQ210JKRArchive10EMountMode */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm mDoDvdThd_mountXArchive_c::mDoDvdThd_mountXArchive_c(u8 param_0, - JKRArchive::EMountMode param_1) { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/__ct__25mDoDvdThd_mountXArchive_cFUcQ210JKRArchive10EMountMode.s" +mDoDvdThd_mountXArchive_c::mDoDvdThd_mountXArchive_c(u8 param_0, JKRArchive::EMountMode param_1) { + mMountDirection = param_0; + mEntryNum = -1; + mArchive = NULL; + mMountMode = param_1; + mHeap = NULL; + if (param_0 == 0) { + mMountDirection = struct_80450C81; + } } -#pragma pop /* 800161E0-800162B0 010B20 00D0+00 0/0 3/3 0/0 .text * create__25mDoDvdThd_mountXArchive_cFPCcUcQ210JKRArchive10EMountModeP7JKRHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd_mountXArchive_c::create(char const* param_0, u8 param_1, - JKRArchive::EMountMode param_2, JKRHeap* param_3) { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/create__25mDoDvdThd_mountXArchive_cFPCcUcQ210JKRArchive10EMountModeP7JKRHeap.s" +mDoDvdThd_mountXArchive_c* mDoDvdThd_mountXArchive_c::create(char const* pArchivePath, + u8 mountDirection, + JKRArchive::EMountMode mountMode, + JKRHeap* pHeap) { + mDoDvdThd_mountXArchive_c* mountXArcCmd = + new (mDoExt_getCommandHeap(), -4) mDoDvdThd_mountXArchive_c(mountDirection, mountMode); + if (mountXArcCmd != NULL) { + mountXArcCmd->mEntryNum = my_DVDConvertPathToEntrynum(pArchivePath); + if (mountXArcCmd->mEntryNum == -1) { + mountXArcCmd->mIsDone = true; + delete mountXArcCmd; + mountXArcCmd = NULL; + } else { + mountXArcCmd->mHeap = pHeap; + mDoDvdThd::l_param.addition(mountXArcCmd); + } + } + return mountXArcCmd; } -#pragma pop /* 800162B0-80016338 010BF0 0088+00 1/0 0/0 0/0 .text execute__25mDoDvdThd_mountXArchive_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd_mountXArchive_c::execute() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/execute__25mDoDvdThd_mountXArchive_cFv.s" +s32 mDoDvdThd_mountXArchive_c::execute() { + JKRArchive::EMountDirection mountDirection = + mMountDirection == 0 ? JKRArchive::MOUNT_DIRECTION_HEAD : JKRArchive::MOUNT_DIRECTION_TAIL; + JKRHeap* heap = mHeap != NULL ? mHeap : mDoExt_getArchiveHeap(); + mArchive = JKRArchive::mount(mEntryNum, mMountMode, heap, mountDirection); + s32 result = mArchive != NULL; + mIsDone = true; + return result; } -#pragma pop /* 80016338-80016394 010C78 005C+00 1/1 0/0 0/0 .text __ct__21mDoDvdThd_toMainRam_cFUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm mDoDvdThd_toMainRam_c::mDoDvdThd_toMainRam_c(u8 param_0) { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/__ct__21mDoDvdThd_toMainRam_cFUc.s" +mDoDvdThd_toMainRam_c::mDoDvdThd_toMainRam_c(u8 param_0) { + mMountDirection = param_0; + if (param_0 == 0) { + mMountDirection = struct_80450C81; + } } -#pragma pop /* 80016394-8001645C 010CD4 00C8+00 0/0 3/3 0/0 .text * create__21mDoDvdThd_toMainRam_cFPCcUcP7JKRHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd_toMainRam_c::create(char const* param_0, u8 param_1, JKRHeap* param_2) { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/create__21mDoDvdThd_toMainRam_cFPCcUcP7JKRHeap.s" +mDoDvdThd_toMainRam_c* mDoDvdThd_toMainRam_c::create(char const* pArchivePath, u8 mountDirection, + JKRHeap* pHeap) { + mDoDvdThd_toMainRam_c* toMainRAMCmd = + new (mDoExt_getCommandHeap(), -4) mDoDvdThd_toMainRam_c(mountDirection); + if (toMainRAMCmd != NULL) { + toMainRAMCmd->mEntryNum = my_DVDConvertPathToEntrynum(pArchivePath); + if (toMainRAMCmd->mEntryNum == -1) { + toMainRAMCmd->mIsDone = true; + delete toMainRAMCmd; + toMainRAMCmd = NULL; + } else { + toMainRAMCmd->mHeap = pHeap; + mDoDvdThd::l_param.addition(toMainRAMCmd); + } + } + return toMainRAMCmd; } -#pragma pop /* 8001645C-800164BC 010D9C 0060+00 1/0 0/0 0/0 .text __dt__21mDoDvdThd_toMainRam_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm mDoDvdThd_toMainRam_c::~mDoDvdThd_toMainRam_c() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/__dt__21mDoDvdThd_toMainRam_cFv.s" -} -#pragma pop +mDoDvdThd_toMainRam_c::~mDoDvdThd_toMainRam_c() {} /* 800164BC-80016574 010DFC 00B8+00 1/0 0/0 0/0 .text execute__21mDoDvdThd_toMainRam_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void mDoDvdThd_toMainRam_c::execute() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/execute__21mDoDvdThd_toMainRam_cFv.s" +s32 mDoDvdThd_toMainRam_c::execute() { + JKRHeap* heap; + if (mHeap != NULL) { + heap = mHeap; + } else { + heap = mDoExt_getArchiveHeap(); + } + JKRDvdRipper::EAllocDirection allocDir = mMountDirection == 0 ? + JKRDvdRipper::ALLOC_DIRECTION_FORWARD : + JKRDvdRipper::ALLOC_DIRECTION_BACKWARD; + mData = JKRDvdRipper::loadToMainRAM(mEntryNum, NULL, EXPAND_SWITCH_UNKNOWN1, 0, heap, allocDir, + 0, NULL, NULL); + if (mData != NULL) { + mDataSize = heap->getSize(mData); + } + mIsDone = true; + return mData != NULL; } -#pragma pop - -/* 80016574-8001659C 010EB4 0028+00 0/0 1/0 0/0 .text __sinit_m_Do_dvd_thread_cpp */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __sinit_m_Do_dvd_thread_cpp() { - nofralloc -#include "asm/m_Do/m_Do_dvd_thread/__sinit_m_Do_dvd_thread_cpp.s" -} -#pragma pop - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80016574, __sinit_m_Do_dvd_thread_cpp); -#pragma pop /* ############################################################################################## */ /* 80374357-8037438B 0009B7 0034+00 0/0 0/0 0/0 .rodata None */ @@ -647,5 +398,4 @@ SECTION_DEAD static char const* const stringBase_803743C1 = "\xBE\x82" "\xC9\x8E\xB8\x94\x73\x0A"; #pragma pop - /* 803741A8-803741A8 000808 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */