mDoDvdThd OK (#139)

* mDoDvdThd

* cleanup
This commit is contained in:
lepelog
2021-08-17 02:56:19 +02:00
committed by GitHub
parent 6867475c36
commit 9765844d92
35 changed files with 369 additions and 1450 deletions
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
-20
View File
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -1,3 +0,0 @@
lbl_800159DC:
/* 800159DC 80 63 00 24 */ lwz r3, 0x24(r3)
/* 800159E0 4E 80 00 20 */ blr
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
+105
View File
@@ -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 */
+6
View File
@@ -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 */
+17 -4
View File
@@ -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];
+241 -491
View File
@@ -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<mDoDvdThd_param_c*>(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 */