From f25c24699bf57f8cfee8e959e998cc82ccb32b36 Mon Sep 17 00:00:00 2001 From: lepelog <25211966+lepelog@users.noreply.github.com> Date: Sat, 28 Aug 2021 16:32:14 +0200 Subject: [PATCH] Jsupport stream and JKRAramArchive (#143) * JSupport streams * JKRAramArchive --- ...ArchiveFlQ210JKRArchive15EMountDirection.s | 45 -- .../JKRAramArchive/__dt__14JKRAramArchiveFv.s | 90 ---- ...ArchiveFPQ210JKRArchive12SDIFileEntryPUl.s | 79 --- ..._subroutine__14JKRAramArchiveFUlUlPUcUli.s | 53 -- ...ramArchiveFPQ210JKRArchive12SDIFileEntry.s | 11 - .../getAramAddress__14JKRAramArchiveFPCc.s | 16 - ...etExpandedResSize__14JKRAramArchiveCFPCv.s | 81 --- .../__ct__18JSUFileInputStreamFP7JKRFile.s | 18 - .../getLength__18JSUFileInputStreamCFv.s | 13 - .../getPosition__18JSUFileInputStreamCFv.s | 3 - .../readData__18JSUFileInputStreamFPvl.s | 57 -- ...8JSUFileInputStreamFl17JSUStreamSeekFrom.s | 64 --- .../JSUInputStream/__dt__14JSUInputStreamFv.s | 26 - .../align__20JSURandomInputStreamFl.s | 37 -- .../peek__20JSURandomInputStreamFPvl.s | 35 -- .../read__14JSUInputStreamFPvl.s | 24 - ...SURandomInputStreamFl17JSUStreamSeekFrom.s | 18 - .../JSUInputStream/skip__14JSUInputStreamFl.s | 37 -- .../skip__20JSURandomInputStreamFl.s | 25 - .../getLength__20JSUMemoryInputStreamCFv.s | 3 - .../getPosition__20JSUMemoryInputStreamCFv.s | 3 - .../readData__20JSUMemoryInputStreamFPvl.s | 33 -- ...SUMemoryInputStreamFl17JSUStreamSeekFrom.s | 39 -- .../setBuffer__20JSUMemoryInputStreamFPCvl.s | 6 - include/JSystem/JKernel/JKRAram.h | 9 + include/JSystem/JKernel/JKRAramArchive.h | 20 +- include/JSystem/JKernel/JKRAramBlock.h | 3 +- include/JSystem/JKernel/JKRArchive.h | 22 +- include/JSystem/JSupport/JSUFileStream.h | 15 +- include/JSystem/JSupport/JSUInputStream.h | 14 +- include/JSystem/JSupport/JSUIosBase.h | 4 +- include/JSystem/JSupport/JSUMemoryStream.h | 16 + .../JSystem/JSupport/JSURandomInputStream.h | 16 +- libs/JSystem/JKernel/JKRAramArchive.cpp | 488 +++++++++++------- libs/JSystem/JKernel/JKRAramStream.cpp | 8 +- libs/JSystem/JSupport/JSUFileStream.cpp | 121 ++--- libs/JSystem/JSupport/JSUInputStream.cpp | 100 ++-- libs/JSystem/JSupport/JSUMemoryStream.cpp | 129 ++--- 38 files changed, 511 insertions(+), 1270 deletions(-) delete mode 100644 asm/JSystem/JKernel/JKRAramArchive/__ct__14JKRAramArchiveFlQ210JKRArchive15EMountDirection.s delete mode 100644 asm/JSystem/JKernel/JKRAramArchive/__dt__14JKRAramArchiveFv.s delete mode 100644 asm/JSystem/JKernel/JKRAramArchive/fetchResource__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntryPUl.s delete mode 100644 asm/JSystem/JKernel/JKRAramArchive/fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli.s delete mode 100644 asm/JSystem/JKernel/JKRAramArchive/getAramAddress_Entry__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntry.s delete mode 100644 asm/JSystem/JKernel/JKRAramArchive/getAramAddress__14JKRAramArchiveFPCc.s delete mode 100644 asm/JSystem/JKernel/JKRAramArchive/getExpandedResSize__14JKRAramArchiveCFPCv.s delete mode 100644 asm/JSystem/JSupport/JSUFileStream/__ct__18JSUFileInputStreamFP7JKRFile.s delete mode 100644 asm/JSystem/JSupport/JSUFileStream/getLength__18JSUFileInputStreamCFv.s delete mode 100644 asm/JSystem/JSupport/JSUFileStream/getPosition__18JSUFileInputStreamCFv.s delete mode 100644 asm/JSystem/JSupport/JSUFileStream/readData__18JSUFileInputStreamFPvl.s delete mode 100644 asm/JSystem/JSupport/JSUFileStream/seekPos__18JSUFileInputStreamFl17JSUStreamSeekFrom.s delete mode 100644 asm/JSystem/JSupport/JSUInputStream/__dt__14JSUInputStreamFv.s delete mode 100644 asm/JSystem/JSupport/JSUInputStream/align__20JSURandomInputStreamFl.s delete mode 100644 asm/JSystem/JSupport/JSUInputStream/peek__20JSURandomInputStreamFPvl.s delete mode 100644 asm/JSystem/JSupport/JSUInputStream/read__14JSUInputStreamFPvl.s delete mode 100644 asm/JSystem/JSupport/JSUInputStream/seek__20JSURandomInputStreamFl17JSUStreamSeekFrom.s delete mode 100644 asm/JSystem/JSupport/JSUInputStream/skip__14JSUInputStreamFl.s delete mode 100644 asm/JSystem/JSupport/JSUInputStream/skip__20JSURandomInputStreamFl.s delete mode 100644 asm/JSystem/JSupport/JSUMemoryStream/getLength__20JSUMemoryInputStreamCFv.s delete mode 100644 asm/JSystem/JSupport/JSUMemoryStream/getPosition__20JSUMemoryInputStreamCFv.s delete mode 100644 asm/JSystem/JSupport/JSUMemoryStream/readData__20JSUMemoryInputStreamFPvl.s delete mode 100644 asm/JSystem/JSupport/JSUMemoryStream/seekPos__20JSUMemoryInputStreamFl17JSUStreamSeekFrom.s delete mode 100644 asm/JSystem/JSupport/JSUMemoryStream/setBuffer__20JSUMemoryInputStreamFPCvl.s diff --git a/asm/JSystem/JKernel/JKRAramArchive/__ct__14JKRAramArchiveFlQ210JKRArchive15EMountDirection.s b/asm/JSystem/JKernel/JKRAramArchive/__ct__14JKRAramArchiveFlQ210JKRArchive15EMountDirection.s deleted file mode 100644 index 034260544d..0000000000 --- a/asm/JSystem/JKernel/JKRAramArchive/__ct__14JKRAramArchiveFlQ210JKRArchive15EMountDirection.s +++ /dev/null @@ -1,45 +0,0 @@ -lbl_802D70C0: -/* 802D70C0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802D70C4 7C 08 02 A6 */ mflr r0 -/* 802D70C8 90 01 00 24 */ stw r0, 0x24(r1) -/* 802D70CC 39 61 00 20 */ addi r11, r1, 0x20 -/* 802D70D0 48 08 B1 0D */ bl _savegpr_29 -/* 802D70D4 7C 7D 1B 78 */ mr r29, r3 -/* 802D70D8 7C 9E 23 78 */ mr r30, r4 -/* 802D70DC 7C BF 2B 78 */ mr r31, r5 -/* 802D70E0 38 A0 00 02 */ li r5, 2 -/* 802D70E4 4B FF F1 B1 */ bl __ct__10JKRArchiveFlQ210JKRArchive10EMountMode -/* 802D70E8 3C 60 80 3D */ lis r3, __vt__14JKRAramArchive@ha /* 0x803CC348@ha */ -/* 802D70EC 38 03 C3 48 */ addi r0, r3, __vt__14JKRAramArchive@l /* 0x803CC348@l */ -/* 802D70F0 90 1D 00 00 */ stw r0, 0(r29) -/* 802D70F4 93 FD 00 60 */ stw r31, 0x60(r29) -/* 802D70F8 7F A3 EB 78 */ mr r3, r29 -/* 802D70FC 7F C4 F3 78 */ mr r4, r30 -/* 802D7100 48 00 01 A9 */ bl open__14JKRAramArchiveFl -/* 802D7104 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 802D7108 40 82 00 0C */ bne lbl_802D7114 -/* 802D710C 7F A3 EB 78 */ mr r3, r29 -/* 802D7110 48 00 00 40 */ b lbl_802D7150 -lbl_802D7114: -/* 802D7114 3C 60 52 41 */ lis r3, 0x5241 /* 0x52415243@ha */ -/* 802D7118 38 03 52 43 */ addi r0, r3, 0x5243 /* 0x52415243@l */ -/* 802D711C 90 1D 00 2C */ stw r0, 0x2c(r29) -/* 802D7120 80 9D 00 54 */ lwz r4, 0x54(r29) -/* 802D7124 80 7D 00 48 */ lwz r3, 0x48(r29) -/* 802D7128 80 03 00 04 */ lwz r0, 4(r3) -/* 802D712C 7C 04 02 14 */ add r0, r4, r0 -/* 802D7130 90 1D 00 28 */ stw r0, 0x28(r29) -/* 802D7134 3C 60 80 43 */ lis r3, sVolumeList__13JKRFileLoader@ha /* 0x80434354@ha */ -/* 802D7138 38 63 43 54 */ addi r3, r3, sVolumeList__13JKRFileLoader@l /* 0x80434354@l */ -/* 802D713C 38 9D 00 18 */ addi r4, r29, 0x18 -/* 802D7140 48 00 4E B1 */ bl prepend__10JSUPtrListFP10JSUPtrLink -/* 802D7144 38 00 00 01 */ li r0, 1 -/* 802D7148 98 1D 00 30 */ stb r0, 0x30(r29) -/* 802D714C 7F A3 EB 78 */ mr r3, r29 -lbl_802D7150: -/* 802D7150 39 61 00 20 */ addi r11, r1, 0x20 -/* 802D7154 48 08 B0 D5 */ bl _restgpr_29 -/* 802D7158 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802D715C 7C 08 03 A6 */ mtlr r0 -/* 802D7160 38 21 00 20 */ addi r1, r1, 0x20 -/* 802D7164 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRAramArchive/__dt__14JKRAramArchiveFv.s b/asm/JSystem/JKernel/JKRAramArchive/__dt__14JKRAramArchiveFv.s deleted file mode 100644 index 9eff9acbb9..0000000000 --- a/asm/JSystem/JKernel/JKRAramArchive/__dt__14JKRAramArchiveFv.s +++ /dev/null @@ -1,90 +0,0 @@ -lbl_802D7168: -/* 802D7168 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802D716C 7C 08 02 A6 */ mflr r0 -/* 802D7170 90 01 00 24 */ stw r0, 0x24(r1) -/* 802D7174 39 61 00 20 */ addi r11, r1, 0x20 -/* 802D7178 48 08 B0 61 */ bl _savegpr_28 -/* 802D717C 7C 7E 1B 79 */ or. r30, r3, r3 -/* 802D7180 7C 9F 23 78 */ mr r31, r4 -/* 802D7184 41 82 01 08 */ beq lbl_802D728C -/* 802D7188 3C 60 80 3D */ lis r3, __vt__14JKRAramArchive@ha /* 0x803CC348@ha */ -/* 802D718C 38 03 C3 48 */ addi r0, r3, __vt__14JKRAramArchive@l /* 0x803CC348@l */ -/* 802D7190 90 1E 00 00 */ stw r0, 0(r30) -/* 802D7194 88 1E 00 30 */ lbz r0, 0x30(r30) -/* 802D7198 28 00 00 01 */ cmplwi r0, 1 -/* 802D719C 40 82 00 D4 */ bne lbl_802D7270 -/* 802D71A0 80 1E 00 44 */ lwz r0, 0x44(r30) -/* 802D71A4 28 00 00 00 */ cmplwi r0, 0 -/* 802D71A8 41 82 00 4C */ beq lbl_802D71F4 -/* 802D71AC 83 BE 00 4C */ lwz r29, 0x4c(r30) -/* 802D71B0 3B 80 00 00 */ li r28, 0 -/* 802D71B4 48 00 00 20 */ b lbl_802D71D4 -lbl_802D71B8: -/* 802D71B8 80 7D 00 10 */ lwz r3, 0x10(r29) -/* 802D71BC 28 03 00 00 */ cmplwi r3, 0 -/* 802D71C0 41 82 00 0C */ beq lbl_802D71CC -/* 802D71C4 80 9E 00 38 */ lwz r4, 0x38(r30) -/* 802D71C8 4B FF 73 39 */ bl free__7JKRHeapFPvP7JKRHeap -lbl_802D71CC: -/* 802D71CC 3B BD 00 14 */ addi r29, r29, 0x14 -/* 802D71D0 3B 9C 00 01 */ addi r28, r28, 1 -lbl_802D71D4: -/* 802D71D4 80 7E 00 44 */ lwz r3, 0x44(r30) -/* 802D71D8 80 03 00 08 */ lwz r0, 8(r3) -/* 802D71DC 7C 1C 00 40 */ cmplw r28, r0 -/* 802D71E0 41 80 FF D8 */ blt lbl_802D71B8 -/* 802D71E4 80 9E 00 38 */ lwz r4, 0x38(r30) -/* 802D71E8 4B FF 73 19 */ bl free__7JKRHeapFPvP7JKRHeap -/* 802D71EC 38 00 00 00 */ li r0, 0 -/* 802D71F0 90 1E 00 44 */ stw r0, 0x44(r30) -lbl_802D71F4: -/* 802D71F4 80 7E 00 50 */ lwz r3, 0x50(r30) -/* 802D71F8 28 03 00 00 */ cmplwi r3, 0 -/* 802D71FC 41 82 00 14 */ beq lbl_802D7210 -/* 802D7200 38 80 00 00 */ li r4, 0 -/* 802D7204 4B FF 72 FD */ bl free__7JKRHeapFPvP7JKRHeap -/* 802D7208 38 00 00 00 */ li r0, 0 -/* 802D720C 90 1E 00 50 */ stw r0, 0x50(r30) -lbl_802D7210: -/* 802D7210 80 7E 00 68 */ lwz r3, 0x68(r30) -/* 802D7214 28 03 00 00 */ cmplwi r3, 0 -/* 802D7218 41 82 00 1C */ beq lbl_802D7234 -/* 802D721C 41 82 00 18 */ beq lbl_802D7234 -/* 802D7220 38 80 00 01 */ li r4, 1 -/* 802D7224 81 83 00 00 */ lwz r12, 0(r3) -/* 802D7228 81 8C 00 08 */ lwz r12, 8(r12) -/* 802D722C 7D 89 03 A6 */ mtctr r12 -/* 802D7230 4E 80 04 21 */ bctrl -lbl_802D7234: -/* 802D7234 80 7E 00 64 */ lwz r3, 0x64(r30) -/* 802D7238 28 03 00 00 */ cmplwi r3, 0 -/* 802D723C 41 82 00 1C */ beq lbl_802D7258 -/* 802D7240 41 82 00 18 */ beq lbl_802D7258 -/* 802D7244 38 80 00 01 */ li r4, 1 -/* 802D7248 81 83 00 00 */ lwz r12, 0(r3) -/* 802D724C 81 8C 00 08 */ lwz r12, 8(r12) -/* 802D7250 7D 89 03 A6 */ mtctr r12 -/* 802D7254 4E 80 04 21 */ bctrl -lbl_802D7258: -/* 802D7258 3C 60 80 43 */ lis r3, sVolumeList__13JKRFileLoader@ha /* 0x80434354@ha */ -/* 802D725C 38 63 43 54 */ addi r3, r3, sVolumeList__13JKRFileLoader@l /* 0x80434354@l */ -/* 802D7260 38 9E 00 18 */ addi r4, r30, 0x18 -/* 802D7264 48 00 4E F9 */ bl remove__10JSUPtrListFP10JSUPtrLink -/* 802D7268 38 00 00 00 */ li r0, 0 -/* 802D726C 98 1E 00 30 */ stb r0, 0x30(r30) -lbl_802D7270: -/* 802D7270 7F C3 F3 78 */ mr r3, r30 -/* 802D7274 38 80 00 00 */ li r4, 0 -/* 802D7278 4B FF F0 BD */ bl __dt__10JKRArchiveFv -/* 802D727C 7F E0 07 35 */ extsh. r0, r31 -/* 802D7280 40 81 00 0C */ ble lbl_802D728C -/* 802D7284 7F C3 F3 78 */ mr r3, r30 -/* 802D7288 4B FF 7A B5 */ bl __dl__FPv -lbl_802D728C: -/* 802D728C 7F C3 F3 78 */ mr r3, r30 -/* 802D7290 39 61 00 20 */ addi r11, r1, 0x20 -/* 802D7294 48 08 AF 91 */ bl _restgpr_28 -/* 802D7298 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802D729C 7C 08 03 A6 */ mtlr r0 -/* 802D72A0 38 21 00 20 */ addi r1, r1, 0x20 -/* 802D72A4 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRAramArchive/fetchResource__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntryPUl.s b/asm/JSystem/JKernel/JKRAramArchive/fetchResource__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntryPUl.s deleted file mode 100644 index 1c2468d8c5..0000000000 --- a/asm/JSystem/JKernel/JKRAramArchive/fetchResource__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntryPUl.s +++ /dev/null @@ -1,79 +0,0 @@ -lbl_802D75E0: -/* 802D75E0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802D75E4 7C 08 02 A6 */ mflr r0 -/* 802D75E8 90 01 00 24 */ stw r0, 0x24(r1) -/* 802D75EC 39 61 00 20 */ addi r11, r1, 0x20 -/* 802D75F0 48 08 AB E9 */ bl _savegpr_28 -/* 802D75F4 7C 7C 1B 78 */ mr r28, r3 -/* 802D75F8 7C 9D 23 78 */ mr r29, r4 -/* 802D75FC 7C BE 2B 79 */ or. r30, r5, r5 -/* 802D7600 40 82 00 08 */ bne lbl_802D7608 -/* 802D7604 3B C1 00 0C */ addi r30, r1, 0xc -lbl_802D7608: -/* 802D7608 80 1D 00 04 */ lwz r0, 4(r29) -/* 802D760C 54 03 46 3E */ srwi r3, r0, 0x18 -/* 802D7610 54 00 47 7B */ rlwinm. r0, r0, 8, 0x1d, 0x1d -/* 802D7614 40 82 00 0C */ bne lbl_802D7620 -/* 802D7618 3B E0 00 00 */ li r31, 0 -/* 802D761C 48 00 00 18 */ b lbl_802D7634 -lbl_802D7620: -/* 802D7620 54 60 06 31 */ rlwinm. r0, r3, 0, 0x18, 0x18 -/* 802D7624 41 82 00 0C */ beq lbl_802D7630 -/* 802D7628 3B E0 00 02 */ li r31, 2 -/* 802D762C 48 00 00 08 */ b lbl_802D7634 -lbl_802D7630: -/* 802D7630 3B E0 00 01 */ li r31, 1 -lbl_802D7634: -/* 802D7634 80 1D 00 10 */ lwz r0, 0x10(r29) -/* 802D7638 28 00 00 00 */ cmplwi r0, 0 -/* 802D763C 40 82 00 6C */ bne lbl_802D76A8 -/* 802D7640 80 7C 00 64 */ lwz r3, 0x64(r28) -/* 802D7644 80 63 00 14 */ lwz r3, 0x14(r3) -/* 802D7648 80 1D 00 08 */ lwz r0, 8(r29) -/* 802D764C 7C 60 1A 14 */ add r3, r0, r3 -/* 802D7650 80 9D 00 0C */ lwz r4, 0xc(r29) -/* 802D7654 80 BC 00 38 */ lwz r5, 0x38(r28) -/* 802D7658 7F E6 FB 78 */ mr r6, r31 -/* 802D765C 38 E1 00 08 */ addi r7, r1, 8 -/* 802D7660 48 00 02 B5 */ bl fetchResource_subroutine__14JKRAramArchiveFUlUlP7JKRHeapiPPUc -/* 802D7664 90 7E 00 00 */ stw r3, 0(r30) -/* 802D7668 28 03 00 00 */ cmplwi r3, 0 -/* 802D766C 40 82 00 0C */ bne lbl_802D7678 -/* 802D7670 38 60 00 00 */ li r3, 0 -/* 802D7674 48 00 00 68 */ b lbl_802D76DC -lbl_802D7678: -/* 802D7678 80 01 00 08 */ lwz r0, 8(r1) -/* 802D767C 90 1D 00 10 */ stw r0, 0x10(r29) -/* 802D7680 2C 1F 00 02 */ cmpwi r31, 2 -/* 802D7684 40 82 00 54 */ bne lbl_802D76D8 -/* 802D7688 7F 83 E3 78 */ mr r3, r28 -/* 802D768C 7F A4 EB 78 */ mr r4, r29 -/* 802D7690 80 BE 00 00 */ lwz r5, 0(r30) -/* 802D7694 81 9C 00 00 */ lwz r12, 0(r28) -/* 802D7698 81 8C 00 48 */ lwz r12, 0x48(r12) -/* 802D769C 7D 89 03 A6 */ mtctr r12 -/* 802D76A0 4E 80 04 21 */ bctrl -/* 802D76A4 48 00 00 34 */ b lbl_802D76D8 -lbl_802D76A8: -/* 802D76A8 2C 1F 00 02 */ cmpwi r31, 2 -/* 802D76AC 40 82 00 24 */ bne lbl_802D76D0 -/* 802D76B0 7F 83 E3 78 */ mr r3, r28 -/* 802D76B4 7F A4 EB 78 */ mr r4, r29 -/* 802D76B8 81 9C 00 00 */ lwz r12, 0(r28) -/* 802D76BC 81 8C 00 4C */ lwz r12, 0x4c(r12) -/* 802D76C0 7D 89 03 A6 */ mtctr r12 -/* 802D76C4 4E 80 04 21 */ bctrl -/* 802D76C8 90 7E 00 00 */ stw r3, 0(r30) -/* 802D76CC 48 00 00 0C */ b lbl_802D76D8 -lbl_802D76D0: -/* 802D76D0 80 1D 00 0C */ lwz r0, 0xc(r29) -/* 802D76D4 90 1E 00 00 */ stw r0, 0(r30) -lbl_802D76D8: -/* 802D76D8 80 7D 00 10 */ lwz r3, 0x10(r29) -lbl_802D76DC: -/* 802D76DC 39 61 00 20 */ addi r11, r1, 0x20 -/* 802D76E0 48 08 AB 45 */ bl _restgpr_28 -/* 802D76E4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802D76E8 7C 08 03 A6 */ mtlr r0 -/* 802D76EC 38 21 00 20 */ addi r1, r1, 0x20 -/* 802D76F0 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRAramArchive/fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli.s b/asm/JSystem/JKernel/JKRAramArchive/fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli.s deleted file mode 100644 index c11931626f..0000000000 --- a/asm/JSystem/JKernel/JKRAramArchive/fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli.s +++ /dev/null @@ -1,53 +0,0 @@ -lbl_802D7858: -/* 802D7858 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802D785C 7C 08 02 A6 */ mflr r0 -/* 802D7860 90 01 00 14 */ stw r0, 0x14(r1) -/* 802D7864 38 04 00 1F */ addi r0, r4, 0x1f -/* 802D7868 54 00 00 34 */ rlwinm r0, r0, 0, 0, 0x1a -/* 802D786C 54 C8 00 34 */ rlwinm r8, r6, 0, 0, 0x1a -/* 802D7870 2C 07 00 00 */ cmpwi r7, 0 -/* 802D7874 41 82 00 14 */ beq lbl_802D7888 -/* 802D7878 41 80 00 6C */ blt lbl_802D78E4 -/* 802D787C 2C 07 00 03 */ cmpwi r7, 3 -/* 802D7880 40 80 00 64 */ bge lbl_802D78E4 -/* 802D7884 48 00 00 38 */ b lbl_802D78BC -lbl_802D7888: -/* 802D7888 7C 00 40 40 */ cmplw r0, r8 -/* 802D788C 40 81 00 08 */ ble lbl_802D7894 -/* 802D7890 7D 00 43 78 */ mr r0, r8 -lbl_802D7894: -/* 802D7894 7C A4 2B 78 */ mr r4, r5 -/* 802D7898 7C 05 03 78 */ mr r5, r0 -/* 802D789C 38 C0 00 00 */ li r6, 0 -/* 802D78A0 7D 07 43 78 */ mr r7, r8 -/* 802D78A4 39 00 00 00 */ li r8, 0 -/* 802D78A8 39 20 FF FF */ li r9, -1 -/* 802D78AC 39 41 00 08 */ addi r10, r1, 8 -/* 802D78B0 4B FF AD 05 */ bl aramToMainRam__7JKRAramFUlPUcUl15JKRExpandSwitchUlP7JKRHeapiPUl -/* 802D78B4 80 61 00 08 */ lwz r3, 8(r1) -/* 802D78B8 48 00 00 4C */ b lbl_802D7904 -lbl_802D78BC: -/* 802D78BC 7C A4 2B 78 */ mr r4, r5 -/* 802D78C0 7C 05 03 78 */ mr r5, r0 -/* 802D78C4 38 C0 00 01 */ li r6, 1 -/* 802D78C8 7D 07 43 78 */ mr r7, r8 -/* 802D78CC 39 00 00 00 */ li r8, 0 -/* 802D78D0 39 20 FF FF */ li r9, -1 -/* 802D78D4 39 41 00 08 */ addi r10, r1, 8 -/* 802D78D8 4B FF AC DD */ bl aramToMainRam__7JKRAramFUlPUcUl15JKRExpandSwitchUlP7JKRHeapiPUl -/* 802D78DC 80 61 00 08 */ lwz r3, 8(r1) -/* 802D78E0 48 00 00 24 */ b lbl_802D7904 -lbl_802D78E4: -/* 802D78E4 3C 60 80 3A */ lis r3, JKRAramArchive__stringBase0@ha /* 0x8039D188@ha */ -/* 802D78E8 38 63 D1 88 */ addi r3, r3, JKRAramArchive__stringBase0@l /* 0x8039D188@l */ -/* 802D78EC 38 80 02 8F */ li r4, 0x28f -/* 802D78F0 38 A3 00 13 */ addi r5, r3, 0x13 -/* 802D78F4 38 C3 00 16 */ addi r6, r3, 0x16 -/* 802D78F8 4C C6 31 82 */ crclr 6 -/* 802D78FC 48 00 A9 01 */ bl panic_f__12JUTExceptionFPCciPCce -/* 802D7900 38 60 00 00 */ li r3, 0 -lbl_802D7904: -/* 802D7904 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802D7908 7C 08 03 A6 */ mtlr r0 -/* 802D790C 38 21 00 10 */ addi r1, r1, 0x10 -/* 802D7910 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRAramArchive/getAramAddress_Entry__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntry.s b/asm/JSystem/JKernel/JKRAramArchive/getAramAddress_Entry__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntry.s deleted file mode 100644 index 66b386fdd6..0000000000 --- a/asm/JSystem/JKernel/JKRAramArchive/getAramAddress_Entry__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntry.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_802D77F8: -/* 802D77F8 28 04 00 00 */ cmplwi r4, 0 -/* 802D77FC 40 82 00 0C */ bne lbl_802D7808 -/* 802D7800 38 60 00 00 */ li r3, 0 -/* 802D7804 4E 80 00 20 */ blr -lbl_802D7808: -/* 802D7808 80 63 00 64 */ lwz r3, 0x64(r3) -/* 802D780C 80 63 00 14 */ lwz r3, 0x14(r3) -/* 802D7810 80 04 00 08 */ lwz r0, 8(r4) -/* 802D7814 7C 60 1A 14 */ add r3, r0, r3 -/* 802D7818 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRAramArchive/getAramAddress__14JKRAramArchiveFPCc.s b/asm/JSystem/JKernel/JKRAramArchive/getAramAddress__14JKRAramArchiveFPCc.s deleted file mode 100644 index 652b54aa7b..0000000000 --- a/asm/JSystem/JKernel/JKRAramArchive/getAramAddress__14JKRAramArchiveFPCc.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_802D781C: -/* 802D781C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802D7820 7C 08 02 A6 */ mflr r0 -/* 802D7824 90 01 00 14 */ stw r0, 0x14(r1) -/* 802D7828 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802D782C 7C 7F 1B 78 */ mr r31, r3 -/* 802D7830 38 A0 00 00 */ li r5, 0 -/* 802D7834 4B FF ED 71 */ bl findFsResource__10JKRArchiveCFPCcUl -/* 802D7838 7C 64 1B 78 */ mr r4, r3 -/* 802D783C 7F E3 FB 78 */ mr r3, r31 -/* 802D7840 4B FF FF B9 */ bl getAramAddress_Entry__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntry -/* 802D7844 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802D7848 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802D784C 7C 08 03 A6 */ mtlr r0 -/* 802D7850 38 21 00 10 */ addi r1, r1, 0x10 -/* 802D7854 4E 80 00 20 */ blr diff --git a/asm/JSystem/JKernel/JKRAramArchive/getExpandedResSize__14JKRAramArchiveCFPCv.s b/asm/JSystem/JKernel/JKRAramArchive/getExpandedResSize__14JKRAramArchiveCFPCv.s deleted file mode 100644 index b654a1cd54..0000000000 --- a/asm/JSystem/JKernel/JKRAramArchive/getExpandedResSize__14JKRAramArchiveCFPCv.s +++ /dev/null @@ -1,81 +0,0 @@ -lbl_802D7A64: -/* 802D7A64 94 21 FF A0 */ stwu r1, -0x60(r1) -/* 802D7A68 7C 08 02 A6 */ mflr r0 -/* 802D7A6C 90 01 00 64 */ stw r0, 0x64(r1) -/* 802D7A70 39 61 00 60 */ addi r11, r1, 0x60 -/* 802D7A74 48 08 A7 69 */ bl _savegpr_29 -/* 802D7A78 7C 7F 1B 78 */ mr r31, r3 -/* 802D7A7C 7C 9E 23 78 */ mr r30, r4 -/* 802D7A80 80 03 00 50 */ lwz r0, 0x50(r3) -/* 802D7A84 28 00 00 00 */ cmplwi r0, 0 -/* 802D7A88 40 82 00 18 */ bne lbl_802D7AA0 -/* 802D7A8C 81 83 00 00 */ lwz r12, 0(r3) -/* 802D7A90 81 8C 00 30 */ lwz r12, 0x30(r12) -/* 802D7A94 7D 89 03 A6 */ mtctr r12 -/* 802D7A98 4E 80 04 21 */ bctrl -/* 802D7A9C 48 00 00 DC */ b lbl_802D7B78 -lbl_802D7AA0: -/* 802D7AA0 4B FF EC 95 */ bl findPtrResource__10JKRArchiveCFPCv -/* 802D7AA4 7C 7D 1B 79 */ or. r29, r3, r3 -/* 802D7AA8 40 82 00 0C */ bne lbl_802D7AB4 -/* 802D7AAC 38 60 FF FF */ li r3, -1 -/* 802D7AB0 48 00 00 C8 */ b lbl_802D7B78 -lbl_802D7AB4: -/* 802D7AB4 80 1D 00 04 */ lwz r0, 4(r29) -/* 802D7AB8 54 00 47 7B */ rlwinm. r0, r0, 8, 0x1d, 0x1d -/* 802D7ABC 40 82 00 20 */ bne lbl_802D7ADC -/* 802D7AC0 7F E3 FB 78 */ mr r3, r31 -/* 802D7AC4 7F C4 F3 78 */ mr r4, r30 -/* 802D7AC8 81 9F 00 00 */ lwz r12, 0(r31) -/* 802D7ACC 81 8C 00 30 */ lwz r12, 0x30(r12) -/* 802D7AD0 7D 89 03 A6 */ mtctr r12 -/* 802D7AD4 4E 80 04 21 */ bctrl -/* 802D7AD8 48 00 00 A0 */ b lbl_802D7B78 -lbl_802D7ADC: -/* 802D7ADC 7F E3 FB 78 */ mr r3, r31 -/* 802D7AE0 7F A4 EB 78 */ mr r4, r29 -/* 802D7AE4 81 9F 00 00 */ lwz r12, 0(r31) -/* 802D7AE8 81 8C 00 4C */ lwz r12, 0x4c(r12) -/* 802D7AEC 7D 89 03 A6 */ mtctr r12 -/* 802D7AF0 4E 80 04 21 */ bctrl -/* 802D7AF4 28 03 00 00 */ cmplwi r3, 0 -/* 802D7AF8 41 82 00 08 */ beq lbl_802D7B00 -/* 802D7AFC 48 00 00 7C */ b lbl_802D7B78 -lbl_802D7B00: -/* 802D7B00 38 01 00 27 */ addi r0, r1, 0x27 -/* 802D7B04 54 1E 00 34 */ rlwinm r30, r0, 0, 0, 0x1a -/* 802D7B08 80 7F 00 64 */ lwz r3, 0x64(r31) -/* 802D7B0C 80 63 00 14 */ lwz r3, 0x14(r3) -/* 802D7B10 80 1D 00 08 */ lwz r0, 8(r29) -/* 802D7B14 7C 60 1A 14 */ add r3, r0, r3 -/* 802D7B18 7F C4 F3 78 */ mr r4, r30 -/* 802D7B1C 38 A0 00 20 */ li r5, 0x20 -/* 802D7B20 38 C0 00 00 */ li r6, 0 -/* 802D7B24 38 E0 00 00 */ li r7, 0 -/* 802D7B28 39 00 00 00 */ li r8, 0 -/* 802D7B2C 39 20 FF FF */ li r9, -1 -/* 802D7B30 39 40 00 00 */ li r10, 0 -/* 802D7B34 4B FF AA 81 */ bl aramToMainRam__7JKRAramFUlPUcUl15JKRExpandSwitchUlP7JKRHeapiPUl -/* 802D7B38 88 BE 00 07 */ lbz r5, 7(r30) -/* 802D7B3C 88 9E 00 06 */ lbz r4, 6(r30) -/* 802D7B40 88 7E 00 04 */ lbz r3, 4(r30) -/* 802D7B44 88 1E 00 05 */ lbz r0, 5(r30) -/* 802D7B48 54 00 80 1E */ slwi r0, r0, 0x10 -/* 802D7B4C 50 60 C0 0E */ rlwimi r0, r3, 0x18, 0, 7 -/* 802D7B50 50 80 44 2E */ rlwimi r0, r4, 8, 0x10, 0x17 -/* 802D7B54 7C BE 03 78 */ or r30, r5, r0 -/* 802D7B58 7F E3 FB 78 */ mr r3, r31 -/* 802D7B5C 7F A4 EB 78 */ mr r4, r29 -/* 802D7B60 7F C5 F3 78 */ mr r5, r30 -/* 802D7B64 81 9F 00 00 */ lwz r12, 0(r31) -/* 802D7B68 81 8C 00 48 */ lwz r12, 0x48(r12) -/* 802D7B6C 7D 89 03 A6 */ mtctr r12 -/* 802D7B70 4E 80 04 21 */ bctrl -/* 802D7B74 7F C3 F3 78 */ mr r3, r30 -lbl_802D7B78: -/* 802D7B78 39 61 00 60 */ addi r11, r1, 0x60 -/* 802D7B7C 48 08 A6 AD */ bl _restgpr_29 -/* 802D7B80 80 01 00 64 */ lwz r0, 0x64(r1) -/* 802D7B84 7C 08 03 A6 */ mtlr r0 -/* 802D7B88 38 21 00 60 */ addi r1, r1, 0x60 -/* 802D7B8C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUFileStream/__ct__18JSUFileInputStreamFP7JKRFile.s b/asm/JSystem/JSupport/JSUFileStream/__ct__18JSUFileInputStreamFP7JKRFile.s deleted file mode 100644 index 40f29f96ed..0000000000 --- a/asm/JSystem/JSupport/JSUFileStream/__ct__18JSUFileInputStreamFP7JKRFile.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_802DC638: -/* 802DC638 3C A0 80 3C */ lis r5, __vt__10JSUIosBase@ha /* 0x803C2DF8@ha */ -/* 802DC63C 38 05 2D F8 */ addi r0, r5, __vt__10JSUIosBase@l /* 0x803C2DF8@l */ -/* 802DC640 90 03 00 00 */ stw r0, 0(r3) -/* 802DC644 38 C0 00 00 */ li r6, 0 -/* 802DC648 98 C3 00 04 */ stb r6, 4(r3) -/* 802DC64C 3C A0 80 3D */ lis r5, __vt__14JSUInputStream@ha /* 0x803CC4D4@ha */ -/* 802DC650 38 05 C4 D4 */ addi r0, r5, __vt__14JSUInputStream@l /* 0x803CC4D4@l */ -/* 802DC654 90 03 00 00 */ stw r0, 0(r3) -/* 802DC658 3C A0 80 3D */ lis r5, __vt__20JSURandomInputStream@ha /* 0x803CC4B0@ha */ -/* 802DC65C 38 05 C4 B0 */ addi r0, r5, __vt__20JSURandomInputStream@l /* 0x803CC4B0@l */ -/* 802DC660 90 03 00 00 */ stw r0, 0(r3) -/* 802DC664 3C A0 80 3D */ lis r5, __vt__18JSUFileInputStream@ha /* 0x803CC518@ha */ -/* 802DC668 38 05 C5 18 */ addi r0, r5, __vt__18JSUFileInputStream@l /* 0x803CC518@l */ -/* 802DC66C 90 03 00 00 */ stw r0, 0(r3) -/* 802DC670 90 83 00 08 */ stw r4, 8(r3) -/* 802DC674 90 C3 00 0C */ stw r6, 0xc(r3) -/* 802DC678 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUFileStream/getLength__18JSUFileInputStreamCFv.s b/asm/JSystem/JSupport/JSUFileStream/getLength__18JSUFileInputStreamCFv.s deleted file mode 100644 index d6ce522cbd..0000000000 --- a/asm/JSystem/JSupport/JSUFileStream/getLength__18JSUFileInputStreamCFv.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_802DC82C: -/* 802DC82C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802DC830 7C 08 02 A6 */ mflr r0 -/* 802DC834 90 01 00 14 */ stw r0, 0x14(r1) -/* 802DC838 80 63 00 08 */ lwz r3, 8(r3) -/* 802DC83C 81 83 00 00 */ lwz r12, 0(r3) -/* 802DC840 81 8C 00 1C */ lwz r12, 0x1c(r12) -/* 802DC844 7D 89 03 A6 */ mtctr r12 -/* 802DC848 4E 80 04 21 */ bctrl -/* 802DC84C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802DC850 7C 08 03 A6 */ mtlr r0 -/* 802DC854 38 21 00 10 */ addi r1, r1, 0x10 -/* 802DC858 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUFileStream/getPosition__18JSUFileInputStreamCFv.s b/asm/JSystem/JSupport/JSUFileStream/getPosition__18JSUFileInputStreamCFv.s deleted file mode 100644 index ec8a4fb5b2..0000000000 --- a/asm/JSystem/JSupport/JSUFileStream/getPosition__18JSUFileInputStreamCFv.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_802DC85C: -/* 802DC85C 80 63 00 0C */ lwz r3, 0xc(r3) -/* 802DC860 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUFileStream/readData__18JSUFileInputStreamFPvl.s b/asm/JSystem/JSupport/JSUFileStream/readData__18JSUFileInputStreamFPvl.s deleted file mode 100644 index ecce9c3c1d..0000000000 --- a/asm/JSystem/JSupport/JSUFileStream/readData__18JSUFileInputStreamFPvl.s +++ /dev/null @@ -1,57 +0,0 @@ -lbl_802DC67C: -/* 802DC67C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802DC680 7C 08 02 A6 */ mflr r0 -/* 802DC684 90 01 00 24 */ stw r0, 0x24(r1) -/* 802DC688 39 61 00 20 */ addi r11, r1, 0x20 -/* 802DC68C 48 08 5B 4D */ bl _savegpr_28 -/* 802DC690 7C 7C 1B 78 */ mr r28, r3 -/* 802DC694 7C 9D 23 78 */ mr r29, r4 -/* 802DC698 7C BE 2B 78 */ mr r30, r5 -/* 802DC69C 3B E0 00 00 */ li r31, 0 -/* 802DC6A0 80 63 00 08 */ lwz r3, 8(r3) -/* 802DC6A4 88 03 00 18 */ lbz r0, 0x18(r3) -/* 802DC6A8 28 00 00 00 */ cmplwi r0, 0 -/* 802DC6AC 41 82 00 84 */ beq lbl_802DC730 -/* 802DC6B0 81 83 00 00 */ lwz r12, 0(r3) -/* 802DC6B4 81 8C 00 1C */ lwz r12, 0x1c(r12) -/* 802DC6B8 7D 89 03 A6 */ mtctr r12 -/* 802DC6BC 4E 80 04 21 */ bctrl -/* 802DC6C0 80 1C 00 0C */ lwz r0, 0xc(r28) -/* 802DC6C4 7C 00 F2 14 */ add r0, r0, r30 -/* 802DC6C8 7C 00 18 40 */ cmplw r0, r3 -/* 802DC6CC 40 81 00 20 */ ble lbl_802DC6EC -/* 802DC6D0 80 7C 00 08 */ lwz r3, 8(r28) -/* 802DC6D4 81 83 00 00 */ lwz r12, 0(r3) -/* 802DC6D8 81 8C 00 1C */ lwz r12, 0x1c(r12) -/* 802DC6DC 7D 89 03 A6 */ mtctr r12 -/* 802DC6E0 4E 80 04 21 */ bctrl -/* 802DC6E4 80 1C 00 0C */ lwz r0, 0xc(r28) -/* 802DC6E8 7F C0 18 50 */ subf r30, r0, r3 -lbl_802DC6EC: -/* 802DC6EC 2C 1E 00 00 */ cmpwi r30, 0 -/* 802DC6F0 40 81 00 40 */ ble lbl_802DC730 -/* 802DC6F4 80 7C 00 08 */ lwz r3, 8(r28) -/* 802DC6F8 7F A4 EB 78 */ mr r4, r29 -/* 802DC6FC 7F C5 F3 78 */ mr r5, r30 -/* 802DC700 80 DC 00 0C */ lwz r6, 0xc(r28) -/* 802DC704 81 83 00 00 */ lwz r12, 0(r3) -/* 802DC708 81 8C 00 14 */ lwz r12, 0x14(r12) -/* 802DC70C 7D 89 03 A6 */ mtctr r12 -/* 802DC710 4E 80 04 21 */ bctrl -/* 802DC714 7C 7F 1B 79 */ or. r31, r3, r3 -/* 802DC718 40 80 00 0C */ bge lbl_802DC724 -/* 802DC71C 38 60 00 00 */ li r3, 0 -/* 802DC720 48 00 00 14 */ b lbl_802DC734 -lbl_802DC724: -/* 802DC724 80 1C 00 0C */ lwz r0, 0xc(r28) -/* 802DC728 7C 00 FA 14 */ add r0, r0, r31 -/* 802DC72C 90 1C 00 0C */ stw r0, 0xc(r28) -lbl_802DC730: -/* 802DC730 7F E3 FB 78 */ mr r3, r31 -lbl_802DC734: -/* 802DC734 39 61 00 20 */ addi r11, r1, 0x20 -/* 802DC738 48 08 5A ED */ bl _restgpr_28 -/* 802DC73C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802DC740 7C 08 03 A6 */ mtlr r0 -/* 802DC744 38 21 00 20 */ addi r1, r1, 0x20 -/* 802DC748 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUFileStream/seekPos__18JSUFileInputStreamFl17JSUStreamSeekFrom.s b/asm/JSystem/JSupport/JSUFileStream/seekPos__18JSUFileInputStreamFl17JSUStreamSeekFrom.s deleted file mode 100644 index 665712800c..0000000000 --- a/asm/JSystem/JSupport/JSUFileStream/seekPos__18JSUFileInputStreamFl17JSUStreamSeekFrom.s +++ /dev/null @@ -1,64 +0,0 @@ -lbl_802DC74C: -/* 802DC74C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802DC750 7C 08 02 A6 */ mflr r0 -/* 802DC754 90 01 00 24 */ stw r0, 0x24(r1) -/* 802DC758 39 61 00 20 */ addi r11, r1, 0x20 -/* 802DC75C 48 08 5A 81 */ bl _savegpr_29 -/* 802DC760 7C 7D 1B 78 */ mr r29, r3 -/* 802DC764 7C 9E 23 78 */ mr r30, r4 -/* 802DC768 83 E3 00 0C */ lwz r31, 0xc(r3) -/* 802DC76C 2C 05 00 01 */ cmpwi r5, 1 -/* 802DC770 41 82 00 48 */ beq lbl_802DC7B8 -/* 802DC774 40 80 00 10 */ bge lbl_802DC784 -/* 802DC778 2C 05 00 00 */ cmpwi r5, 0 -/* 802DC77C 40 80 00 14 */ bge lbl_802DC790 -/* 802DC780 48 00 00 40 */ b lbl_802DC7C0 -lbl_802DC784: -/* 802DC784 2C 05 00 03 */ cmpwi r5, 3 -/* 802DC788 40 80 00 38 */ bge lbl_802DC7C0 -/* 802DC78C 48 00 00 0C */ b lbl_802DC798 -lbl_802DC790: -/* 802DC790 93 DD 00 0C */ stw r30, 0xc(r29) -/* 802DC794 48 00 00 2C */ b lbl_802DC7C0 -lbl_802DC798: -/* 802DC798 80 7D 00 08 */ lwz r3, 8(r29) -/* 802DC79C 81 83 00 00 */ lwz r12, 0(r3) -/* 802DC7A0 81 8C 00 1C */ lwz r12, 0x1c(r12) -/* 802DC7A4 7D 89 03 A6 */ mtctr r12 -/* 802DC7A8 4E 80 04 21 */ bctrl -/* 802DC7AC 7C 1E 18 50 */ subf r0, r30, r3 -/* 802DC7B0 90 1D 00 0C */ stw r0, 0xc(r29) -/* 802DC7B4 48 00 00 0C */ b lbl_802DC7C0 -lbl_802DC7B8: -/* 802DC7B8 7C 1F F2 14 */ add r0, r31, r30 -/* 802DC7BC 90 1D 00 0C */ stw r0, 0xc(r29) -lbl_802DC7C0: -/* 802DC7C0 80 1D 00 0C */ lwz r0, 0xc(r29) -/* 802DC7C4 2C 00 00 00 */ cmpwi r0, 0 -/* 802DC7C8 40 80 00 0C */ bge lbl_802DC7D4 -/* 802DC7CC 38 00 00 00 */ li r0, 0 -/* 802DC7D0 90 1D 00 0C */ stw r0, 0xc(r29) -lbl_802DC7D4: -/* 802DC7D4 80 7D 00 08 */ lwz r3, 8(r29) -/* 802DC7D8 81 83 00 00 */ lwz r12, 0(r3) -/* 802DC7DC 81 8C 00 1C */ lwz r12, 0x1c(r12) -/* 802DC7E0 7D 89 03 A6 */ mtctr r12 -/* 802DC7E4 4E 80 04 21 */ bctrl -/* 802DC7E8 80 1D 00 0C */ lwz r0, 0xc(r29) -/* 802DC7EC 7C 00 18 00 */ cmpw r0, r3 -/* 802DC7F0 40 81 00 1C */ ble lbl_802DC80C -/* 802DC7F4 80 7D 00 08 */ lwz r3, 8(r29) -/* 802DC7F8 81 83 00 00 */ lwz r12, 0(r3) -/* 802DC7FC 81 8C 00 1C */ lwz r12, 0x1c(r12) -/* 802DC800 7D 89 03 A6 */ mtctr r12 -/* 802DC804 4E 80 04 21 */ bctrl -/* 802DC808 90 7D 00 0C */ stw r3, 0xc(r29) -lbl_802DC80C: -/* 802DC80C 80 1D 00 0C */ lwz r0, 0xc(r29) -/* 802DC810 7C 7F 00 50 */ subf r3, r31, r0 -/* 802DC814 39 61 00 20 */ addi r11, r1, 0x20 -/* 802DC818 48 08 5A 11 */ bl _restgpr_29 -/* 802DC81C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802DC820 7C 08 03 A6 */ mtlr r0 -/* 802DC824 38 21 00 20 */ addi r1, r1, 0x20 -/* 802DC828 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUInputStream/__dt__14JSUInputStreamFv.s b/asm/JSystem/JSupport/JSUInputStream/__dt__14JSUInputStreamFv.s deleted file mode 100644 index 92dd72edd0..0000000000 --- a/asm/JSystem/JSupport/JSUInputStream/__dt__14JSUInputStreamFv.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_802DC23C: -/* 802DC23C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802DC240 7C 08 02 A6 */ mflr r0 -/* 802DC244 90 01 00 14 */ stw r0, 0x14(r1) -/* 802DC248 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802DC24C 7C 7F 1B 79 */ or. r31, r3, r3 -/* 802DC250 41 82 00 30 */ beq lbl_802DC280 -/* 802DC254 3C 60 80 3D */ lis r3, __vt__14JSUInputStream@ha /* 0x803CC4D4@ha */ -/* 802DC258 38 03 C4 D4 */ addi r0, r3, __vt__14JSUInputStream@l /* 0x803CC4D4@l */ -/* 802DC25C 90 1F 00 00 */ stw r0, 0(r31) -/* 802DC260 41 82 00 10 */ beq lbl_802DC270 -/* 802DC264 3C 60 80 3C */ lis r3, __vt__10JSUIosBase@ha /* 0x803C2DF8@ha */ -/* 802DC268 38 03 2D F8 */ addi r0, r3, __vt__10JSUIosBase@l /* 0x803C2DF8@l */ -/* 802DC26C 90 1F 00 00 */ stw r0, 0(r31) -lbl_802DC270: -/* 802DC270 7C 80 07 35 */ extsh. r0, r4 -/* 802DC274 40 81 00 0C */ ble lbl_802DC280 -/* 802DC278 7F E3 FB 78 */ mr r3, r31 -/* 802DC27C 4B FF 2A C1 */ bl __dl__FPv -lbl_802DC280: -/* 802DC280 7F E3 FB 78 */ mr r3, r31 -/* 802DC284 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802DC288 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802DC28C 7C 08 03 A6 */ mtlr r0 -/* 802DC290 38 21 00 10 */ addi r1, r1, 0x10 -/* 802DC294 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUInputStream/align__20JSURandomInputStreamFl.s b/asm/JSystem/JSupport/JSUInputStream/align__20JSURandomInputStreamFl.s deleted file mode 100644 index 8cb967f360..0000000000 --- a/asm/JSystem/JSupport/JSUInputStream/align__20JSURandomInputStreamFl.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_802DC370: -/* 802DC370 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802DC374 7C 08 02 A6 */ mflr r0 -/* 802DC378 90 01 00 14 */ stw r0, 0x14(r1) -/* 802DC37C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802DC380 93 C1 00 08 */ stw r30, 8(r1) -/* 802DC384 7C 7E 1B 78 */ mr r30, r3 -/* 802DC388 7C 9F 23 78 */ mr r31, r4 -/* 802DC38C 81 83 00 00 */ lwz r12, 0(r3) -/* 802DC390 81 8C 00 1C */ lwz r12, 0x1c(r12) -/* 802DC394 7D 89 03 A6 */ mtctr r12 -/* 802DC398 4E 80 04 21 */ bctrl -/* 802DC39C 7C 9F 1A 14 */ add r4, r31, r3 -/* 802DC3A0 38 84 FF FF */ addi r4, r4, -1 -/* 802DC3A4 38 1F FF FF */ addi r0, r31, -1 -/* 802DC3A8 7C 84 00 78 */ andc r4, r4, r0 -/* 802DC3AC 7F E3 20 51 */ subf. r31, r3, r4 -/* 802DC3B0 41 82 00 30 */ beq lbl_802DC3E0 -/* 802DC3B4 7F C3 F3 78 */ mr r3, r30 -/* 802DC3B8 38 A0 00 00 */ li r5, 0 -/* 802DC3BC 81 9E 00 00 */ lwz r12, 0(r30) -/* 802DC3C0 81 8C 00 20 */ lwz r12, 0x20(r12) -/* 802DC3C4 7D 89 03 A6 */ mtctr r12 -/* 802DC3C8 4E 80 04 21 */ bctrl -/* 802DC3CC 7C 03 F8 00 */ cmpw r3, r31 -/* 802DC3D0 41 82 00 10 */ beq lbl_802DC3E0 -/* 802DC3D4 88 1E 00 04 */ lbz r0, 4(r30) -/* 802DC3D8 60 00 00 01 */ ori r0, r0, 1 -/* 802DC3DC 98 1E 00 04 */ stb r0, 4(r30) -lbl_802DC3E0: -/* 802DC3E0 7F E3 FB 78 */ mr r3, r31 -/* 802DC3E4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802DC3E8 83 C1 00 08 */ lwz r30, 8(r1) -/* 802DC3EC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802DC3F0 7C 08 03 A6 */ mtlr r0 -/* 802DC3F4 38 21 00 10 */ addi r1, r1, 0x10 -/* 802DC3F8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUInputStream/peek__20JSURandomInputStreamFPvl.s b/asm/JSystem/JSupport/JSUInputStream/peek__20JSURandomInputStreamFPvl.s deleted file mode 100644 index 46fcfcf3ff..0000000000 --- a/asm/JSystem/JSupport/JSUInputStream/peek__20JSURandomInputStreamFPvl.s +++ /dev/null @@ -1,35 +0,0 @@ -lbl_802DC458: -/* 802DC458 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802DC45C 7C 08 02 A6 */ mflr r0 -/* 802DC460 90 01 00 24 */ stw r0, 0x24(r1) -/* 802DC464 39 61 00 20 */ addi r11, r1, 0x20 -/* 802DC468 48 08 5D 71 */ bl _savegpr_28 -/* 802DC46C 7C 7C 1B 78 */ mr r28, r3 -/* 802DC470 7C 9D 23 78 */ mr r29, r4 -/* 802DC474 7C BE 2B 78 */ mr r30, r5 -/* 802DC478 81 83 00 00 */ lwz r12, 0(r3) -/* 802DC47C 81 8C 00 1C */ lwz r12, 0x1c(r12) -/* 802DC480 7D 89 03 A6 */ mtctr r12 -/* 802DC484 4E 80 04 21 */ bctrl -/* 802DC488 7C 7F 1B 78 */ mr r31, r3 -/* 802DC48C 7F 83 E3 78 */ mr r3, r28 -/* 802DC490 7F A4 EB 78 */ mr r4, r29 -/* 802DC494 7F C5 F3 78 */ mr r5, r30 -/* 802DC498 4B FF FE 01 */ bl read__14JSUInputStreamFPvl -/* 802DC49C 7C 7E 1B 79 */ or. r30, r3, r3 -/* 802DC4A0 41 82 00 20 */ beq lbl_802DC4C0 -/* 802DC4A4 7F 83 E3 78 */ mr r3, r28 -/* 802DC4A8 7F E4 FB 78 */ mr r4, r31 -/* 802DC4AC 38 A0 00 00 */ li r5, 0 -/* 802DC4B0 81 9C 00 00 */ lwz r12, 0(r28) -/* 802DC4B4 81 8C 00 20 */ lwz r12, 0x20(r12) -/* 802DC4B8 7D 89 03 A6 */ mtctr r12 -/* 802DC4BC 4E 80 04 21 */ bctrl -lbl_802DC4C0: -/* 802DC4C0 7F C3 F3 78 */ mr r3, r30 -/* 802DC4C4 39 61 00 20 */ addi r11, r1, 0x20 -/* 802DC4C8 48 08 5D 5D */ bl _restgpr_28 -/* 802DC4CC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802DC4D0 7C 08 03 A6 */ mtlr r0 -/* 802DC4D4 38 21 00 20 */ addi r1, r1, 0x20 -/* 802DC4D8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUInputStream/read__14JSUInputStreamFPvl.s b/asm/JSystem/JSupport/JSUInputStream/read__14JSUInputStreamFPvl.s deleted file mode 100644 index 8ab491bfb4..0000000000 --- a/asm/JSystem/JSupport/JSUInputStream/read__14JSUInputStreamFPvl.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_802DC298: -/* 802DC298 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802DC29C 7C 08 02 A6 */ mflr r0 -/* 802DC2A0 90 01 00 14 */ stw r0, 0x14(r1) -/* 802DC2A4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802DC2A8 93 C1 00 08 */ stw r30, 8(r1) -/* 802DC2AC 7C 7E 1B 78 */ mr r30, r3 -/* 802DC2B0 7C BF 2B 78 */ mr r31, r5 -/* 802DC2B4 81 83 00 00 */ lwz r12, 0(r3) -/* 802DC2B8 81 8C 00 14 */ lwz r12, 0x14(r12) -/* 802DC2BC 7D 89 03 A6 */ mtctr r12 -/* 802DC2C0 4E 80 04 21 */ bctrl -/* 802DC2C4 7C 03 F8 00 */ cmpw r3, r31 -/* 802DC2C8 41 82 00 10 */ beq lbl_802DC2D8 -/* 802DC2CC 88 1E 00 04 */ lbz r0, 4(r30) -/* 802DC2D0 60 00 00 01 */ ori r0, r0, 1 -/* 802DC2D4 98 1E 00 04 */ stb r0, 4(r30) -lbl_802DC2D8: -/* 802DC2D8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802DC2DC 83 C1 00 08 */ lwz r30, 8(r1) -/* 802DC2E0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802DC2E4 7C 08 03 A6 */ mtlr r0 -/* 802DC2E8 38 21 00 10 */ addi r1, r1, 0x10 -/* 802DC2EC 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUInputStream/seek__20JSURandomInputStreamFl17JSUStreamSeekFrom.s b/asm/JSystem/JSupport/JSUInputStream/seek__20JSURandomInputStreamFl17JSUStreamSeekFrom.s deleted file mode 100644 index 20b6815380..0000000000 --- a/asm/JSystem/JSupport/JSUInputStream/seek__20JSURandomInputStreamFl17JSUStreamSeekFrom.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_802DC4DC: -/* 802DC4DC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802DC4E0 7C 08 02 A6 */ mflr r0 -/* 802DC4E4 90 01 00 14 */ stw r0, 0x14(r1) -/* 802DC4E8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802DC4EC 7C 7F 1B 78 */ mr r31, r3 -/* 802DC4F0 81 83 00 00 */ lwz r12, 0(r3) -/* 802DC4F4 81 8C 00 20 */ lwz r12, 0x20(r12) -/* 802DC4F8 7D 89 03 A6 */ mtctr r12 -/* 802DC4FC 4E 80 04 21 */ bctrl -/* 802DC500 88 1F 00 04 */ lbz r0, 4(r31) -/* 802DC504 54 00 06 3C */ rlwinm r0, r0, 0, 0x18, 0x1e -/* 802DC508 98 1F 00 04 */ stb r0, 4(r31) -/* 802DC50C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802DC510 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802DC514 7C 08 03 A6 */ mtlr r0 -/* 802DC518 38 21 00 10 */ addi r1, r1, 0x10 -/* 802DC51C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUInputStream/skip__14JSUInputStreamFl.s b/asm/JSystem/JSupport/JSUInputStream/skip__14JSUInputStreamFl.s deleted file mode 100644 index 59c564309e..0000000000 --- a/asm/JSystem/JSupport/JSUInputStream/skip__14JSUInputStreamFl.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_802DC2F0: -/* 802DC2F0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802DC2F4 7C 08 02 A6 */ mflr r0 -/* 802DC2F8 90 01 00 24 */ stw r0, 0x24(r1) -/* 802DC2FC 39 61 00 20 */ addi r11, r1, 0x20 -/* 802DC300 48 08 5E DD */ bl _savegpr_29 -/* 802DC304 7C 7D 1B 78 */ mr r29, r3 -/* 802DC308 7C 9E 23 78 */ mr r30, r4 -/* 802DC30C 3B E0 00 00 */ li r31, 0 -/* 802DC310 48 00 00 3C */ b lbl_802DC34C -lbl_802DC314: -/* 802DC314 7F A3 EB 78 */ mr r3, r29 -/* 802DC318 38 81 00 08 */ addi r4, r1, 8 -/* 802DC31C 38 A0 00 01 */ li r5, 1 -/* 802DC320 81 9D 00 00 */ lwz r12, 0(r29) -/* 802DC324 81 8C 00 14 */ lwz r12, 0x14(r12) -/* 802DC328 7D 89 03 A6 */ mtctr r12 -/* 802DC32C 4E 80 04 21 */ bctrl -/* 802DC330 28 03 00 01 */ cmplwi r3, 1 -/* 802DC334 41 82 00 14 */ beq lbl_802DC348 -/* 802DC338 88 1D 00 04 */ lbz r0, 4(r29) -/* 802DC33C 60 00 00 01 */ ori r0, r0, 1 -/* 802DC340 98 1D 00 04 */ stb r0, 4(r29) -/* 802DC344 48 00 00 10 */ b lbl_802DC354 -lbl_802DC348: -/* 802DC348 3B FF 00 01 */ addi r31, r31, 1 -lbl_802DC34C: -/* 802DC34C 7C 1F F0 00 */ cmpw r31, r30 -/* 802DC350 41 80 FF C4 */ blt lbl_802DC314 -lbl_802DC354: -/* 802DC354 7F E3 FB 78 */ mr r3, r31 -/* 802DC358 39 61 00 20 */ addi r11, r1, 0x20 -/* 802DC35C 48 08 5E CD */ bl _restgpr_29 -/* 802DC360 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802DC364 7C 08 03 A6 */ mtlr r0 -/* 802DC368 38 21 00 20 */ addi r1, r1, 0x20 -/* 802DC36C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUInputStream/skip__20JSURandomInputStreamFl.s b/asm/JSystem/JSupport/JSUInputStream/skip__20JSURandomInputStreamFl.s deleted file mode 100644 index 86c9a0d1c3..0000000000 --- a/asm/JSystem/JSupport/JSUInputStream/skip__20JSURandomInputStreamFl.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_802DC3FC: -/* 802DC3FC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802DC400 7C 08 02 A6 */ mflr r0 -/* 802DC404 90 01 00 14 */ stw r0, 0x14(r1) -/* 802DC408 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802DC40C 93 C1 00 08 */ stw r30, 8(r1) -/* 802DC410 7C 7E 1B 78 */ mr r30, r3 -/* 802DC414 7C 9F 23 78 */ mr r31, r4 -/* 802DC418 38 A0 00 01 */ li r5, 1 -/* 802DC41C 81 83 00 00 */ lwz r12, 0(r3) -/* 802DC420 81 8C 00 20 */ lwz r12, 0x20(r12) -/* 802DC424 7D 89 03 A6 */ mtctr r12 -/* 802DC428 4E 80 04 21 */ bctrl -/* 802DC42C 7C 03 F8 00 */ cmpw r3, r31 -/* 802DC430 41 82 00 10 */ beq lbl_802DC440 -/* 802DC434 88 1E 00 04 */ lbz r0, 4(r30) -/* 802DC438 60 00 00 01 */ ori r0, r0, 1 -/* 802DC43C 98 1E 00 04 */ stb r0, 4(r30) -lbl_802DC440: -/* 802DC440 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802DC444 83 C1 00 08 */ lwz r30, 8(r1) -/* 802DC448 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802DC44C 7C 08 03 A6 */ mtlr r0 -/* 802DC450 38 21 00 10 */ addi r1, r1, 0x10 -/* 802DC454 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUMemoryStream/getLength__20JSUMemoryInputStreamCFv.s b/asm/JSystem/JSupport/JSUMemoryStream/getLength__20JSUMemoryInputStreamCFv.s deleted file mode 100644 index 2a525bb17e..0000000000 --- a/asm/JSystem/JSupport/JSUMemoryStream/getLength__20JSUMemoryInputStreamCFv.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_802DC628: -/* 802DC628 80 63 00 0C */ lwz r3, 0xc(r3) -/* 802DC62C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUMemoryStream/getPosition__20JSUMemoryInputStreamCFv.s b/asm/JSystem/JSupport/JSUMemoryStream/getPosition__20JSUMemoryInputStreamCFv.s deleted file mode 100644 index 5fad8bb78d..0000000000 --- a/asm/JSystem/JSupport/JSUMemoryStream/getPosition__20JSUMemoryInputStreamCFv.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_802DC630: -/* 802DC630 80 63 00 10 */ lwz r3, 0x10(r3) -/* 802DC634 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUMemoryStream/readData__20JSUMemoryInputStreamFPvl.s b/asm/JSystem/JSupport/JSUMemoryStream/readData__20JSUMemoryInputStreamFPvl.s deleted file mode 100644 index 5468b6b7cf..0000000000 --- a/asm/JSystem/JSupport/JSUMemoryStream/readData__20JSUMemoryInputStreamFPvl.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_802DC534: -/* 802DC534 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802DC538 7C 08 02 A6 */ mflr r0 -/* 802DC53C 90 01 00 14 */ stw r0, 0x14(r1) -/* 802DC540 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802DC544 93 C1 00 08 */ stw r30, 8(r1) -/* 802DC548 7C 7E 1B 78 */ mr r30, r3 -/* 802DC54C 7C BF 2B 78 */ mr r31, r5 -/* 802DC550 80 A3 00 10 */ lwz r5, 0x10(r3) -/* 802DC554 7C 05 FA 14 */ add r0, r5, r31 -/* 802DC558 80 63 00 0C */ lwz r3, 0xc(r3) -/* 802DC55C 7C 00 18 00 */ cmpw r0, r3 -/* 802DC560 40 81 00 08 */ ble lbl_802DC568 -/* 802DC564 7F E5 18 50 */ subf r31, r5, r3 -lbl_802DC568: -/* 802DC568 2C 1F 00 00 */ cmpwi r31, 0 -/* 802DC56C 40 81 00 24 */ ble lbl_802DC590 -/* 802DC570 7C 83 23 78 */ mr r3, r4 -/* 802DC574 80 1E 00 08 */ lwz r0, 8(r30) -/* 802DC578 7C 80 2A 14 */ add r4, r0, r5 -/* 802DC57C 7F E5 FB 78 */ mr r5, r31 -/* 802DC580 4B D2 6F C1 */ bl memcpy -/* 802DC584 80 1E 00 10 */ lwz r0, 0x10(r30) -/* 802DC588 7C 00 FA 14 */ add r0, r0, r31 -/* 802DC58C 90 1E 00 10 */ stw r0, 0x10(r30) -lbl_802DC590: -/* 802DC590 7F E3 FB 78 */ mr r3, r31 -/* 802DC594 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802DC598 83 C1 00 08 */ lwz r30, 8(r1) -/* 802DC59C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802DC5A0 7C 08 03 A6 */ mtlr r0 -/* 802DC5A4 38 21 00 10 */ addi r1, r1, 0x10 -/* 802DC5A8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUMemoryStream/seekPos__20JSUMemoryInputStreamFl17JSUStreamSeekFrom.s b/asm/JSystem/JSupport/JSUMemoryStream/seekPos__20JSUMemoryInputStreamFl17JSUStreamSeekFrom.s deleted file mode 100644 index 62af8c25d0..0000000000 --- a/asm/JSystem/JSupport/JSUMemoryStream/seekPos__20JSUMemoryInputStreamFl17JSUStreamSeekFrom.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_802DC5AC: -/* 802DC5AC 80 C3 00 10 */ lwz r6, 0x10(r3) -/* 802DC5B0 2C 05 00 01 */ cmpwi r5, 1 -/* 802DC5B4 41 82 00 38 */ beq lbl_802DC5EC -/* 802DC5B8 40 80 00 10 */ bge lbl_802DC5C8 -/* 802DC5BC 2C 05 00 00 */ cmpwi r5, 0 -/* 802DC5C0 40 80 00 14 */ bge lbl_802DC5D4 -/* 802DC5C4 48 00 00 30 */ b lbl_802DC5F4 -lbl_802DC5C8: -/* 802DC5C8 2C 05 00 03 */ cmpwi r5, 3 -/* 802DC5CC 40 80 00 28 */ bge lbl_802DC5F4 -/* 802DC5D0 48 00 00 0C */ b lbl_802DC5DC -lbl_802DC5D4: -/* 802DC5D4 90 83 00 10 */ stw r4, 0x10(r3) -/* 802DC5D8 48 00 00 1C */ b lbl_802DC5F4 -lbl_802DC5DC: -/* 802DC5DC 80 03 00 0C */ lwz r0, 0xc(r3) -/* 802DC5E0 7C 04 00 50 */ subf r0, r4, r0 -/* 802DC5E4 90 03 00 10 */ stw r0, 0x10(r3) -/* 802DC5E8 48 00 00 0C */ b lbl_802DC5F4 -lbl_802DC5EC: -/* 802DC5EC 7C 06 22 14 */ add r0, r6, r4 -/* 802DC5F0 90 03 00 10 */ stw r0, 0x10(r3) -lbl_802DC5F4: -/* 802DC5F4 80 03 00 10 */ lwz r0, 0x10(r3) -/* 802DC5F8 2C 00 00 00 */ cmpwi r0, 0 -/* 802DC5FC 40 80 00 0C */ bge lbl_802DC608 -/* 802DC600 38 00 00 00 */ li r0, 0 -/* 802DC604 90 03 00 10 */ stw r0, 0x10(r3) -lbl_802DC608: -/* 802DC608 80 03 00 10 */ lwz r0, 0x10(r3) -/* 802DC60C 80 83 00 0C */ lwz r4, 0xc(r3) -/* 802DC610 7C 00 20 00 */ cmpw r0, r4 -/* 802DC614 40 81 00 08 */ ble lbl_802DC61C -/* 802DC618 90 83 00 10 */ stw r4, 0x10(r3) -lbl_802DC61C: -/* 802DC61C 80 03 00 10 */ lwz r0, 0x10(r3) -/* 802DC620 7C 66 00 50 */ subf r3, r6, r0 -/* 802DC624 4E 80 00 20 */ blr diff --git a/asm/JSystem/JSupport/JSUMemoryStream/setBuffer__20JSUMemoryInputStreamFPCvl.s b/asm/JSystem/JSupport/JSUMemoryStream/setBuffer__20JSUMemoryInputStreamFPCvl.s deleted file mode 100644 index e7f037d387..0000000000 --- a/asm/JSystem/JSupport/JSUMemoryStream/setBuffer__20JSUMemoryInputStreamFPCvl.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_802DC520: -/* 802DC520 90 83 00 08 */ stw r4, 8(r3) -/* 802DC524 90 A3 00 0C */ stw r5, 0xc(r3) -/* 802DC528 38 00 00 00 */ li r0, 0 -/* 802DC52C 90 03 00 10 */ stw r0, 0x10(r3) -/* 802DC530 4E 80 00 20 */ blr diff --git a/include/JSystem/JKernel/JKRAram.h b/include/JSystem/JKernel/JKRAram.h index ca7a224ed9..5468519ba1 100644 --- a/include/JSystem/JKernel/JKRAram.h +++ b/include/JSystem/JKernel/JKRAram.h @@ -69,6 +69,15 @@ private: static JSUList sAramCommandList; }; +inline void* JKRAllocFromAram(u32 size, JKRAramHeap::EAllocMode allocMode) { + return JKRAram::getAramHeap()->alloc(size, allocMode); +} + +inline void JKRAramToMainRam(u32 p1, u8* p2, u32 p3, JKRExpandSwitch p4, u32 p5, JKRHeap* p6, + int p7, u32* p8) { + JKRAram::aramToMainRam(p1, p2, p3, p4, p5, p6, p7, p8); +} + // void JKRDecompressFromAramToMainRam(u32, void*, u32, u32, u32, u32*); #endif /* JKRARAM_H */ diff --git a/include/JSystem/JKernel/JKRAramArchive.h b/include/JSystem/JKernel/JKRAramArchive.h index 6b74179e53..5a7f7bd44a 100644 --- a/include/JSystem/JKernel/JKRAramArchive.h +++ b/include/JSystem/JKernel/JKRAramArchive.h @@ -1,6 +1,7 @@ #ifndef JKRARAMARCHIVE_H #define JKRARAMARCHIVE_H +#include "JSystem/JKernel/JKRAramBlock.h" #include "JSystem/JKernel/JKRArchive.h" #include "dolphin/types.h" @@ -9,22 +10,25 @@ public: JKRAramArchive(long, JKRArchive::EMountDirection); virtual ~JKRAramArchive(); - void open(long); - void getAramAddress_Entry(SDIFileEntry*); - void getAramAddress(char const*); + bool open(long); + u32 getAramAddress_Entry(SDIFileEntry*); + u32 getAramAddress(char const*); - /* vt[15] */ u32 getExpandedResSize(const void*); /* override */ + /* vt[15] */ u32 getExpandedResSize(const void*) const; /* override */ /* vt[16] */ void* fetchResource(SDIFileEntry*, u32*); /* override */ /* vt[17] */ void* fetchResource(void*, u32, SDIFileEntry*, u32*); /* override */ public: - static void fetchResource_subroutine(u32, u32, u8*, u32, int); - static void fetchResource_subroutine(u32, u32, JKRHeap*, int, u8**); + static u32 fetchResource_subroutine(u32, u32, u8*, u32, int); + static u32 fetchResource_subroutine(u32, u32, JKRHeap*, int, u8**); private: /* 0x00 */ // vtable /* 0x04 */ // JKRArchive - u8 unk[16]; -}; + /* 0x5C */ JKRCompression mCompression; + /* 0x60 */ EMountDirection mMountDirection; + /* 0x64 */ JKRAramBlock* mBlock; + /* 0x68 */ JKRDvdFile* mDvdFile; +}; // Size = 0x6C #endif /* JKRARAMARCHIVE_H */ diff --git a/include/JSystem/JKernel/JKRAramBlock.h b/include/JSystem/JKernel/JKRAramBlock.h index 916db4a73c..5f17050f2d 100644 --- a/include/JSystem/JKernel/JKRAramBlock.h +++ b/include/JSystem/JKernel/JKRAramBlock.h @@ -3,6 +3,7 @@ #include "dolphin/types.h" +#include "JSystem/JKernel/JKRArchive.h" #include "JSystem/JSupport/JSUList.h" #include "dolphin/types.h" @@ -15,7 +16,7 @@ public: JKRAramBlock* allocHead(u32, u8, JKRAramHeap*); JKRAramBlock* allocTail(u32, u8, JKRAramHeap*); - void* getAddress() const { return (void*)mAddress; } + u32 getAddress() const { return mAddress; } u32 getSize() const { return mSize; } diff --git a/include/JSystem/JKernel/JKRArchive.h b/include/JSystem/JKernel/JKRArchive.h index 77af4d6e7c..a451fab4fa 100644 --- a/include/JSystem/JKernel/JKRArchive.h +++ b/include/JSystem/JKernel/JKRArchive.h @@ -3,18 +3,20 @@ #include "JSystem/JKernel/JKRCompression.h" #include "JSystem/JKernel/JKRDecomp.h" +#include "JSystem/JKernel/JKRDvdFile.h" #include "JSystem/JKernel/JKRFileLoader.h" +#include "JSystem/JKernel/JKRHeap.h" #include "global.h" struct SArcHeader { - u32 signature; - u32 file_length; - u32 header_length; - u32 file_data_offset; - u32 file_data_length; - u32 field_0x14; - u32 field_0x18; - u32 field_0x1c; + /* 0x00 */ u32 signature; + /* 0x04 */ u32 file_length; + /* 0x08 */ u32 header_length; + /* 0x0C */ u32 file_data_offset; + /* 0x10 */ u32 file_data_length; + /* 0x14 */ u32 field_0x14; + /* 0x18 */ u32 field_0x18; + /* 0x1C */ u32 field_0x1c; }; struct SArcDataInfo { @@ -46,8 +48,6 @@ inline u32 JKRDecompExpandSize(SArcHeader* header) { extern u32 sCurrentDirID__10JKRArchive; // JKRArchive::sCurrentDirID -class JKRHeap; -class JKRDvdFile; class JKRArchive : public JKRFileLoader { public: struct SDirEntry { @@ -82,6 +82,8 @@ public: bool isDirectory() const { return (getFlags() & 0x02) != 0; } bool isUnknownFlag1() const { return (getFlags() & 0x01) != 0; } bool isCompressed() const { return (getFlags() & 0x04) != 0; } + // was needed for open__14JKRAramArchiveFl + u8 getCompressFlag() const { return (getFlags() & 0x04); } bool isYAZ0Compressed() const { return (getFlags() & 0x80) != 0; } }; diff --git a/include/JSystem/JSupport/JSUFileStream.h b/include/JSystem/JSupport/JSUFileStream.h index 31ae686210..44c3f4ed7a 100644 --- a/include/JSystem/JSupport/JSUFileStream.h +++ b/include/JSystem/JSupport/JSUFileStream.h @@ -1,21 +1,24 @@ #ifndef JSUFILESTREAM_H #define JSUFILESTREAM_H +#include "JSystem/JKernel/JKRFile.h" #include "JSystem/JSupport/JSURandomInputStream.h" #include "dolphin/types.h" -struct JKRFile; - class JSUFileInputStream : public JSURandomInputStream { public: - virtual ~JSUFileInputStream(); + virtual ~JSUFileInputStream() {} // TODO: fix return values /* 802DC638 */ JSUFileInputStream(JKRFile*); - /* 802DC67C */ s32 readData(void*, s32); - /* 802DC74C */ void seekPos(s32, JSUStreamSeekFrom); + /* 802DC67C */ u32 readData(void*, s32); + /* 802DC74C */ s32 seekPos(s32, JSUStreamSeekFrom); /* 802DC82C */ s32 getLength() const; /* 802DC85C */ s32 getPosition() const; -}; + +private: + /* 0x08 */ JKRFile* mFile; + /* 0x0C */ s32 mPosition; +}; // Size = 0x10 #endif /* JSUFILESTREAM_H */ diff --git a/include/JSystem/JSupport/JSUInputStream.h b/include/JSystem/JSupport/JSUInputStream.h index e4b6648fe5..f4a3ed3af3 100644 --- a/include/JSystem/JSupport/JSUInputStream.h +++ b/include/JSystem/JSupport/JSUInputStream.h @@ -4,19 +4,23 @@ #include "JSystem/JSupport/JSUIosBase.h" #include "dolphin/types.h" -struct JSUStreamSeekFrom {}; +enum JSUStreamSeekFrom { + JSUStreamSeekFrom_SET = 0, // absolute + JSUStreamSeekFrom_CUR = 1, // relative + JSUStreamSeekFrom_END = 2, // relative to end +}; class JSUInputStream : public JSUIosBase { public: - JSUInputStream(); + JSUInputStream() {} virtual ~JSUInputStream(); /* vt[3] */ virtual s32 getAvailable() const = 0; /* vt[4] */ virtual s32 skip(s32); - /* vt[5] */ virtual s32 readData(void*, s32) = 0; + /* vt[5] */ virtual u32 readData(void*, s32) = 0; // TODO: return value probably wrong - /* 802DC298 */ void read(void*, s32); -}; + /* 802DC298 */ s32 read(void*, s32); +}; // Size = 0x8 #endif /* JSUINPUTSTREAM_H */ diff --git a/include/JSystem/JSupport/JSUIosBase.h b/include/JSystem/JSupport/JSUIosBase.h index ef4046b673..c44a81e2f0 100644 --- a/include/JSystem/JSupport/JSUIosBase.h +++ b/include/JSystem/JSupport/JSUIosBase.h @@ -11,7 +11,7 @@ class JSUIosBase { public: JSUIosBase() { mState = false; } - virtual ~JSUIosBase(); + virtual ~JSUIosBase() {} bool isGood() const { return mState == 0; } void clrState(EIoState state) { mState &= ~state; } @@ -19,6 +19,6 @@ public: private: u8 mState; -}; +}; // Size = 0x8 #endif diff --git a/include/JSystem/JSupport/JSUMemoryStream.h b/include/JSystem/JSupport/JSUMemoryStream.h index d2f603aaa6..5ce4fcb170 100644 --- a/include/JSystem/JSupport/JSUMemoryStream.h +++ b/include/JSystem/JSupport/JSUMemoryStream.h @@ -1,6 +1,22 @@ #ifndef JSUMEMORYSTREAM_H #define JSUMEMORYSTREAM_H +#include "JSystem/JSupport/JSURandomInputStream.h" #include "dolphin/types.h" +class JSUMemoryInputStream : JSURandomInputStream { +public: + /* 802552B8 */ ~JSUMemoryInputStream() {} + /* 802DC520 */ void setBuffer(void const*, s32); + /* 802DC534 */ u32 readData(void*, s32); + /* 802DC5AC */ s32 seekPos(s32, JSUStreamSeekFrom); + /* 802DC628 */ s32 getLength() const; + /* 802DC630 */ s32 getPosition() const; + +private: + /* 0x08 */ const void* mBuffer; + /* 0x0C */ s32 mLength; + /* 0x10 */ s32 mPosition; +}; // Size = 0x14 + #endif /* JSUMEMORYSTREAM_H */ diff --git a/include/JSystem/JSupport/JSURandomInputStream.h b/include/JSystem/JSupport/JSURandomInputStream.h index d6f56fc594..f26c4d202f 100644 --- a/include/JSystem/JSupport/JSURandomInputStream.h +++ b/include/JSystem/JSupport/JSURandomInputStream.h @@ -6,20 +6,20 @@ class JSURandomInputStream : public JSUInputStream { public: - JSURandomInputStream(); - virtual ~JSURandomInputStream(); + JSURandomInputStream() {} + virtual ~JSURandomInputStream() {} /* vt[3] */ virtual s32 getAvailable() const; /* override */ /* vt[4] */ virtual s32 skip(s32); /* override */ - /* vt[5] */ virtual s32 readData(void*, s32) = 0; + /* vt[5] */ virtual u32 readData(void*, s32) = 0; /* vt[6] */ virtual s32 getLength() const = 0; /* vt[7] */ virtual s32 getPosition() const = 0; - /* vt[7] */ virtual s32 seekPos() = 0; + /* vt[8] */ virtual s32 seekPos(s32, JSUStreamSeekFrom) = 0; // TODO: fix return types - /* 802DC370 */ void align(s32); - /* 802DC458 */ void peek(void*, s32); - /* 802DC4DC */ void seek(s32, JSUStreamSeekFrom); -}; + /* 802DC370 */ s32 align(s32); + /* 802DC458 */ s32 peek(void*, s32); + /* 802DC4DC */ s32 seek(s32, JSUStreamSeekFrom); +}; // Size = 0x8 #endif diff --git a/libs/JSystem/JKernel/JKRAramArchive.cpp b/libs/JSystem/JKernel/JKRAramArchive.cpp index 652110fb7e..743bd4086c 100644 --- a/libs/JSystem/JKernel/JKRAramArchive.cpp +++ b/libs/JSystem/JKernel/JKRAramArchive.cpp @@ -3,115 +3,23 @@ // Translation Unit: JKRAramArchive // -// #include "JSystem/JKernel/JKRAramArchive.h" +#include "JSystem/JKernel/JKRAramArchive.h" +#include "JSystem/JKernel/JKRAram.h" +#include "JSystem/JKernel/JKRDvdAramRipper.h" +#include "JSystem/JKernel/JKRDvdRipper.h" +#include "JSystem/JKernel/JKRFile.h" #include "dol2asm.h" +#include "dolphin/os/OSCache.h" #include "dolphin/types.h" +#include "msl_c/math.h" +#include "msl_c/string.h" // // Types: // struct JUTException { - /* 802E21FC */ void panic_f(char const*, int, char const*, ...); -}; - -struct JSUPtrLink {}; - -struct JSUPtrList { - /* 802DBFF0 */ void prepend(JSUPtrLink*); - /* 802DC15C */ void remove(JSUPtrLink*); -}; - -struct JKRHeap { - /* 802CE4D4 */ void alloc(u32, int); - /* 802CE474 */ void alloc(u32, int, JKRHeap*); - /* 802CE500 */ void free(void*, JKRHeap*); - /* 802CE548 */ void free(void*); - /* 802CEB18 */ void copyMemory(void*, void*, u32); - - static u8 sSystemHeap[4]; -}; - -struct JKRFileLoader { - /* 802D41D4 */ void unmount(); - - static u8 sVolumeList[12]; -}; - -struct JKRFile { - /* 802D7B90 */ ~JKRFile(); -}; - -struct JKRExpandSwitch {}; - -struct JKRDvdRipper { - struct EAllocDirection {}; - - /* 802D9C54 */ void loadToMainRAM(s32, u8*, JKRExpandSwitch, u32, JKRHeap*, - JKRDvdRipper::EAllocDirection, u32, int*, u32*); -}; - -struct JKRDvdFile { - /* 802D96A0 */ JKRDvdFile(s32); -}; - -struct JKRDvdAramRipper { - /* 802DA874 */ void loadToAram(s32, u32, JKRExpandSwitch, u32, u32, u32*); -}; - -struct JKRDisposer { - /* 802D14E4 */ ~JKRDisposer(); -}; - -struct JKRArchive { - struct EMountDirection {}; - - struct SDIFileEntry {}; - - struct EMountMode {}; - - /* 802D5A38 */ void becomeCurrent(char const*); - /* 802D5C64 */ void getResource(u32, char const*); - /* 802D5BE8 */ void getResource(char const*); - /* 802D5D8C */ void readResource(void*, u32, u32, char const*); - /* 802D5E30 */ void readResource(void*, u32, char const*); - /* 802D5FB4 */ void removeResourceAll(); - /* 802D603C */ void removeResource(void*); - /* 802D609C */ void detachResource(void*); - /* 802D60D8 */ void getResSize(void const*) const; - /* 802D6150 */ void countFile(char const*) const; - /* 802D61B0 */ void getFirstFile(char const*) const; - /* 802D6294 */ JKRArchive(s32, JKRArchive::EMountMode); - /* 802D6334 */ ~JKRArchive(); - /* 802D65A4 */ void findFsResource(char const*, u32) const; - /* 802D6734 */ void findPtrResource(void const*) const; - /* 802D693C */ void setExpandSize(JKRArchive::SDIFileEntry*, u32); - /* 802D6978 */ void getExpandSize(JKRArchive::SDIFileEntry*) const; -}; - -struct JKRAramHeap { - struct EAllocMode {}; - - /* 802D2FBC */ void alloc(u32, JKRAramHeap::EAllocMode); -}; - -struct JKRAramArchive { - /* 802D70C0 */ JKRAramArchive(s32, JKRArchive::EMountDirection); - /* 802D7168 */ ~JKRAramArchive(); - /* 802D72A8 */ void open(s32); - /* 802D75E0 */ void fetchResource(JKRArchive::SDIFileEntry*, u32*); - /* 802D76F4 */ void fetchResource(void*, u32, JKRArchive::SDIFileEntry*, u32*); - /* 802D77F8 */ void getAramAddress_Entry(JKRArchive::SDIFileEntry*); - /* 802D781C */ void getAramAddress(char const*); - /* 802D7914 */ void fetchResource_subroutine(u32, u32, JKRHeap*, int, u8**); - /* 802D7858 */ void fetchResource_subroutine(u32, u32, u8*, u32, int); - /* 802D7A64 */ void getExpandedResSize(void const*) const; -}; - -struct JKRAram { - /* 802D25B4 */ void aramToMainRam(u32, u8*, u32, JKRExpandSwitch, u32, JKRHeap*, int, u32*); - - static u8 sAramObject[4]; + /* 802E21FC */ static void panic_f(char const*, int, char const*, ...); }; // @@ -135,7 +43,6 @@ extern "C" extern char const* const JKRAramArchive__stringBase0; // External References: // -SECTION_INIT void memset(); extern "C" void alloc__7JKRHeapFUliP7JKRHeap(); extern "C" void alloc__7JKRHeapFUli(); extern "C" void free__7JKRHeapFPvP7JKRHeap(); @@ -171,7 +78,6 @@ extern "C" void loadToAram__16JKRDvdAramRipperFlUl15JKRExpandSwitchUlUlPUl(); extern "C" void prepend__10JSUPtrListFP10JSUPtrLink(); extern "C" void remove__10JSUPtrListFP10JSUPtrLink(); extern "C" void panic_f__12JUTExceptionFPCciPCce(); -extern "C" void DCInvalidateRange(); extern "C" void _savegpr_26(); extern "C" void _savegpr_27(); extern "C" void _savegpr_28(); @@ -180,7 +86,6 @@ extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void abs(); extern "C" u8 sVolumeList__13JKRFileLoader[12]; extern "C" u8 sSystemHeap__7JKRHeap[4]; extern "C" u8 sAramObject__7JKRAram[4]; @@ -202,153 +107,350 @@ SECTION_DATA extern void* __vt__7JKRFile[8] = { (void*)NULL, }; -/* 803CC348-803CC398 029468 0050+00 2/2 0/0 0/0 .data __vt__14JKRAramArchive */ -SECTION_DATA extern void* __vt__14JKRAramArchive[20] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14JKRAramArchiveFv, - (void*)unmount__13JKRFileLoaderFv, - (void*)becomeCurrent__10JKRArchiveFPCc, - (void*)getResource__10JKRArchiveFPCc, - (void*)getResource__10JKRArchiveFUlPCc, - (void*)readResource__10JKRArchiveFPvUlPCc, - (void*)readResource__10JKRArchiveFPvUlUlPCc, - (void*)removeResourceAll__10JKRArchiveFv, - (void*)removeResource__10JKRArchiveFPv, - (void*)detachResource__10JKRArchiveFPv, - (void*)getResSize__10JKRArchiveCFPCv, - (void*)countFile__10JKRArchiveCFPCc, - (void*)getFirstFile__10JKRArchiveCFPCc, - (void*)getExpandedResSize__14JKRAramArchiveCFPCv, - (void*)fetchResource__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntryPUl, - (void*)fetchResource__14JKRAramArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl, - (void*)setExpandSize__10JKRArchiveFPQ210JKRArchive12SDIFileEntryUl, - (void*)getExpandSize__10JKRArchiveCFPQ210JKRArchive12SDIFileEntry, -}; - /* 802D70C0-802D7168 2D1A00 00A8+00 0/0 1/1 0/0 .text * __ct__14JKRAramArchiveFlQ210JKRArchive15EMountDirection */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JKRAramArchive::JKRAramArchive(s32 param_0, JKRArchive::EMountDirection param_1) { - nofralloc -#include "asm/JSystem/JKernel/JKRAramArchive/__ct__14JKRAramArchiveFlQ210JKRArchive15EMountDirection.s" +JKRAramArchive::JKRAramArchive(s32 param_0, JKRArchive::EMountDirection mountDirection) + : JKRArchive(param_0, MOUNT_ARAM) { + mMountDirection = mountDirection; + if (!this->open(param_0)) { + return; + } + mVolumeType = 'RARC'; + mVolumeName = mStringTable + (int)mNodes->name; + JKRFileLoader::sVolumeList.prepend(&mFileLoaderLink); + mIsMounted = true; } -#pragma pop /* 802D7168-802D72A8 2D1AA8 0140+00 1/0 0/0 0/0 .text __dt__14JKRAramArchiveFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JKRAramArchive::~JKRAramArchive() { - nofralloc -#include "asm/JSystem/JKernel/JKRAramArchive/__dt__14JKRAramArchiveFv.s" +JKRAramArchive::~JKRAramArchive() { + if (mIsMounted == true) { + if (mArcInfoBlock != NULL) { + SDIFileEntry* entry = mFiles; + for (int i = 0; i < mArcInfoBlock->num_file_entries; entry++, i++) { + if (entry->data != NULL) { + JKRHeap::free(entry->data, mHeap); + } + } + JKRHeap::free(mArcInfoBlock, mHeap); + mArcInfoBlock = NULL; + } + if (mExpandedSize != NULL) { + JKRHeap::free(mExpandedSize, NULL); + mExpandedSize = NULL; + } + if (mDvdFile != NULL) { + delete mDvdFile; + } + if (mBlock != NULL) { + delete mBlock; + } + JKRFileLoader::sVolumeList.remove(&mFileLoaderLink); + mIsMounted = false; + } +} + +inline u32 alignNext(u32 var, u32 align) { + return (var + align - 1) & ~(align - 1); } -#pragma pop /* 802D72A8-802D75E0 2D1BE8 0338+00 1/1 0/0 0/0 .text open__14JKRAramArchiveFl */ +#ifdef NON_MATCHING +// r30 <-> r29 +bool JKRAramArchive::open(s32 entryNum) { + mArcInfoBlock = NULL; + mNodes = NULL; + mFiles = NULL; + mStringTable = NULL; + mBlock = NULL; + // int align; + // int align = -4; + // if (mMountDirection == MOUNT_DIRECTION_HEAD) { + // align = 4; + // } + int align; + align = mMountDirection == MOUNT_DIRECTION_HEAD ? 4 : -4; + mDvdFile = new (JKRGetSystemHeap(), align) JKRDvdFile(entryNum); + if (mDvdFile == NULL) { + mMountMode = UNKNOWN_MOUNT_MODE; + return false; + } + SArcHeader* header = static_cast(JKRAllocFromSysHeap(0x20, -0x20)); + if (header == NULL) { + mMountMode = UNKNOWN_MOUNT_MODE; + } else { + JKRDvdToMainRam(entryNum, (u8*)header, EXPAND_SWITCH_UNKNOWN1, 0x20, NULL, + JKRDvdRipper::ALLOC_DIRECTION_FORWARD, 0, &mCompression, NULL); + DCInvalidateRange(header, 0x20); + align = mMountDirection == MOUNT_DIRECTION_HEAD ? 0x20 : -0x20; + u32 blockSize = alignNext(header->file_data_offset, 0x20); + mArcInfoBlock = static_cast(JKRAllocFromHeap(mHeap, blockSize, align)); + if (mArcInfoBlock == NULL) { + mMountMode = UNKNOWN_MOUNT_MODE; + } else { + JKRDvdToMainRam(entryNum, (u8*)mArcInfoBlock, EXPAND_SWITCH_UNKNOWN1, blockSize, NULL, + JKRDvdRipper::ALLOC_DIRECTION_FORWARD, 0x20, NULL, NULL); + DCInvalidateRange(mArcInfoBlock, blockSize); + mNodes = (SDirEntry*)((s32)mArcInfoBlock + mArcInfoBlock->node_offset); + mFiles = (SDIFileEntry*)((s32)mArcInfoBlock + mArcInfoBlock->file_entry_offset); + mStringTable = (char*)((s32)mArcInfoBlock + mArcInfoBlock->string_table_offset); + mExpandedSize = NULL; + u8 isAnyFileCompressed = 0; + SDIFileEntry* file = mFiles; + for (int i = 0; i < mArcInfoBlock->num_file_entries; file++, i++) { + if (file->isUnknownFlag1()) { + isAnyFileCompressed |= file->getCompressFlag(); + } + } + if (isAnyFileCompressed != 0) { + mExpandedSize = + (s32*)JKRAllocFromHeap(mHeap, mArcInfoBlock->num_file_entries * 4, abs(align)); + if (mExpandedSize == NULL) { + JKRFree(mArcInfoBlock); + mMountMode = UNKNOWN_MOUNT_MODE; + goto end; + } else { + memset(mExpandedSize, 0, mArcInfoBlock->num_file_entries * 4); + } + } + u32 fileDataLength = alignNext(header->file_data_length, 0x20); + mBlock = static_cast(JKRAllocFromAram( + fileDataLength, + mMountDirection == MOUNT_DIRECTION_HEAD ? JKRAramHeap::HEAD : JKRAramHeap::TAIL)); + if (mBlock == NULL) { + if (mArcInfoBlock != NULL) { + JKRFree(mArcInfoBlock); + } + if (mExpandedSize != NULL) { + JKRFree(mExpandedSize); + } + mMountMode = UNKNOWN_MOUNT_MODE; + } else { + JKRDvdAramRipper::loadToAram(entryNum, mBlock->getAddress(), EXPAND_SWITCH_UNKNOWN1, + header->header_length + header->file_data_offset, 0, + NULL); + } + } + } +end: + if (header != NULL) { + JKRFreeToSysHeap(header); + } + if (mMountMode == UNKNOWN_MOUNT_MODE) { + if (mDvdFile != NULL) { + delete mDvdFile; + } + return false; + } else { + return true; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JKRAramArchive::open(s32 param_0) { +asm bool JKRAramArchive::open(s32 param_0) { nofralloc #include "asm/JSystem/JKernel/JKRAramArchive/open__14JKRAramArchiveFl.s" } #pragma pop +#endif /* 802D75E0-802D76F4 2D1F20 0114+00 1/0 0/0 0/0 .text * fetchResource__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntryPUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRAramArchive::fetchResource(JKRArchive::SDIFileEntry* param_0, u32* param_1) { - nofralloc -#include "asm/JSystem/JKernel/JKRAramArchive/fetchResource__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntryPUl.s" +void* JKRAramArchive::fetchResource(JKRArchive::SDIFileEntry* pEntry, u32* pOutSize) { + u32 outSize; + u8* outBuf; + if (pOutSize == NULL) { + pOutSize = &outSize; + } + JKRCompression compression = JKRConvertAttrToCompressionType(pEntry->getFlags()); + if (pEntry->data == NULL) { + u32 size = JKRAramArchive::fetchResource_subroutine( + pEntry->data_offset + mBlock->getAddress(), pEntry->data_size, mHeap, compression, + &outBuf); + *pOutSize = size; + if (size == NULL) { + return NULL; + } + pEntry->data = outBuf; + if (compression == COMPRESSION_YAZ0) { + this->setExpandSize(pEntry, *pOutSize); + } + } else { + if (compression == COMPRESSION_YAZ0) { + *pOutSize = this->getExpandSize(pEntry); + } else { + *pOutSize = pEntry->data_size; + } + } + return pEntry->data; } -#pragma pop /* 802D76F4-802D77F8 2D2034 0104+00 1/0 0/0 0/0 .text * fetchResource__14JKRAramArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl */ +#ifdef NON_MATCHING +void* JKRAramArchive::fetchResource(void* buffer, u32 bufferSize, JKRArchive::SDIFileEntry* pEntry, + u32* resourceSize) { + u32 size = pEntry->data_size; + if (size > bufferSize) { + size = bufferSize; + } + JKRCompression compression = JKRConvertAttrToCompressionType(pEntry->getFlags()); + if (pEntry->data == NULL) { + // can't get it to store the result in r28 + bufferSize &= ~(0x20 - 1); + size = JKRAramArchive::fetchResource_subroutine(pEntry->data_offset + mBlock->getAddress(), + size, (u8*)buffer, bufferSize, compression); + } else { + if (compression == COMPRESSION_YAZ0) { + u32 expandSize = this->getExpandSize(pEntry); + if (expandSize != NULL) { + size = expandSize; + } + } + if (size > bufferSize) { + size = bufferSize; + } + JKRHeap::copyMemory(buffer, pEntry->data, size); + } + if (resourceSize != NULL) { + *resourceSize = size; + } + return buffer; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JKRAramArchive::fetchResource(void* param_0, u32 param_1, - JKRArchive::SDIFileEntry* param_2, u32* param_3) { +asm void* JKRAramArchive::fetchResource(void* param_0, u32 param_1, + JKRArchive::SDIFileEntry* param_2, u32* param_3) { nofralloc #include "asm/JSystem/JKernel/JKRAramArchive/fetchResource__14JKRAramArchiveFPvUlPQ210JKRArchive12SDIFileEntryPUl.s" } #pragma pop +#endif /* 802D77F8-802D781C 2D2138 0024+00 1/1 0/0 0/0 .text * getAramAddress_Entry__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntry */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRAramArchive::getAramAddress_Entry(JKRArchive::SDIFileEntry* param_0) { - nofralloc -#include "asm/JSystem/JKernel/JKRAramArchive/getAramAddress_Entry__14JKRAramArchiveFPQ210JKRArchive12SDIFileEntry.s" +u32 JKRAramArchive::getAramAddress_Entry(JKRArchive::SDIFileEntry* pEntry) { + if (pEntry == NULL) { + return 0; + } else { + return pEntry->data_offset + mBlock->getAddress(); + } } -#pragma pop /* 802D781C-802D7858 2D215C 003C+00 0/0 1/1 0/0 .text getAramAddress__14JKRAramArchiveFPCc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRAramArchive::getAramAddress(char const* param_0) { - nofralloc -#include "asm/JSystem/JKernel/JKRAramArchive/getAramAddress__14JKRAramArchiveFPCc.s" +u32 JKRAramArchive::getAramAddress(char const* name) { + return JKRAramArchive::getAramAddress_Entry(this->findFsResource(name, 0)); } -#pragma pop - -/* ############################################################################################## */ -/* 8039D188-8039D188 0297E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039D188 = "JKRAramArchive.cpp"; -SECTION_DEAD static char const* const stringBase_8039D19B = "%s"; -SECTION_DEAD static char const* const stringBase_8039D19E = "??? bad sequence\n"; -#pragma pop /* 802D7858-802D7914 2D2198 00BC+00 1/1 1/1 0/0 .text * fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRAramArchive::fetchResource_subroutine(u32 param_0, u32 param_1, u8* param_2, - u32 param_3, int param_4) { - nofralloc -#include "asm/JSystem/JKernel/JKRAramArchive/fetchResource_subroutine__14JKRAramArchiveFUlUlPUcUli.s" +u32 JKRAramArchive::fetchResource_subroutine(u32 src, u32 srcLength, u8* dst, u32 dstLength, + int compression) { + u32 outLen; + u32 srcSize = ALIGN_NEXT(srcLength, 0x20); + u32 dstSize = ALIGN_PREV(dstLength, 0x20); + switch (compression) { + case COMPRESSION_NONE: + if (srcSize > dstSize) { + srcSize = dstSize; + } + JKRAram::aramToMainRam(src, dst, srcSize, EXPAND_SWITCH_UNKNOWN0, dstSize, NULL, -1, + &outLen); + return outLen; + case COMPRESSION_YAY0: + case COMPRESSION_YAZ0: + JKRAram::aramToMainRam(src, dst, srcSize, EXPAND_SWITCH_UNKNOWN1, dstSize, NULL, -1, + &outLen); + return outLen; + default: + JUTException::panic_f("JKRAramArchive.cpp", 0x28F, "%s", "??? bad sequence\n"); + return 0; + } } -#pragma pop /* 802D7914-802D7A64 2D2254 0150+00 1/1 1/1 0/0 .text * fetchResource_subroutine__14JKRAramArchiveFUlUlP7JKRHeapiPPUc */ +#ifdef NON_MATCHING +u32 JKRAramArchive::fetchResource_subroutine(u32 entryNum, u32 length, JKRHeap* pHeap, + int compression, u8** out) { + // r28 -> r29, r29 -> r30, r30 -> r31, r31 -> r28 + u32 readLen; + u32 alignedLen = alignNext(length, 0x20); + u8* tmpBufAligned; + switch (compression) { + case COMPRESSION_NONE: + tmpBufAligned = static_cast(JKRAllocFromHeap(pHeap, alignedLen, 0x20)); + JKRAramToMainRam(entryNum, tmpBufAligned, alignedLen, EXPAND_SWITCH_UNKNOWN0, alignedLen, + NULL, -1, NULL); + *out = tmpBufAligned; + return length; + case COMPRESSION_YAY0: + case COMPRESSION_YAZ0: + u8 tmpBuf[0x40]; + SArcHeader* buf = (SArcHeader*)ALIGN_PREV((s32)&tmpBuf[0x1F], 0x20); + JKRAramToMainRam(entryNum, (u8*)buf, 0x20, EXPAND_SWITCH_UNKNOWN0, 0, NULL, -1, NULL); + length = alignNext(JKRDecompExpandSize(buf), 0x20); + tmpBufAligned = static_cast(JKRAllocFromHeap(pHeap, length, 0x20)); + + JKRAramToMainRam(entryNum, tmpBufAligned, alignedLen, EXPAND_SWITCH_UNKNOWN1, length, pHeap, + -1, &readLen); + *out = tmpBufAligned; + return readLen; + default: + JUTException::panic_f("JKRAramArchive.cpp", 0x2c9, "%s", "??? bad sequence\n"); + return 0; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JKRAramArchive::fetchResource_subroutine(u32 param_0, u32 param_1, JKRHeap* param_2, - int param_3, u8** param_4) { +asm u32 JKRAramArchive::fetchResource_subroutine(u32 param_0, u32 param_1, JKRHeap* param_2, + int param_3, u8** param_4) { nofralloc #include "asm/JSystem/JKernel/JKRAramArchive/fetchResource_subroutine__14JKRAramArchiveFUlUlP7JKRHeapiPPUc.s" } #pragma pop +#endif /* 802D7A64-802D7B90 2D23A4 012C+00 1/0 0/0 0/0 .text getExpandedResSize__14JKRAramArchiveCFPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JKRAramArchive::getExpandedResSize(void const* param_0) const { - nofralloc -#include "asm/JSystem/JKernel/JKRAramArchive/getExpandedResSize__14JKRAramArchiveCFPCv.s" +u32 JKRAramArchive::getExpandedResSize(void const* ptr) const { + if (mExpandedSize == NULL) { + return this->getResSize(ptr); + } else { + JKRArchive::SDIFileEntry* entry = this->findPtrResource(ptr); + if (entry == NULL) { + return 0xFFFFFFFF; + } else { + if (entry->getCompressFlag() == 0) { + return this->getResSize(ptr); + } else { + u32 expandSize = this->getExpandSize(entry); + if (expandSize != 0) { + return expandSize; + } + u8 tmpBuf[0x40]; + SArcHeader* buf = (SArcHeader*)ALIGN_PREV((s32)&tmpBuf[0x1F], 0x20); + JKRAramToMainRam(entry->data_offset + mBlock->getAddress(), (u8*)buf, 0x20, + EXPAND_SWITCH_UNKNOWN0, 0, NULL, -1, NULL); + expandSize = JKRDecompExpandSize(buf); + // ??? casting away const? + ((JKRArchive*)this)->setExpandSize(entry, expandSize); + return expandSize; + } + } + } } -#pragma pop /* 802D7B90-802D7BF0 2D24D0 0060+00 1/0 0/0 0/0 .text __dt__7JKRFileFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm JKRFile::~JKRFile() { +// asm JKRFile::~JKRFile() { +extern "C" asm void __dt__7JKRFileFv() { nofralloc #include "asm/JSystem/JKernel/JKRAramArchive/__dt__7JKRFileFv.s" } diff --git a/libs/JSystem/JKernel/JKRAramStream.cpp b/libs/JSystem/JKernel/JKRAramStream.cpp index 2a517c965b..e07e68b87d 100644 --- a/libs/JSystem/JKernel/JKRAramStream.cpp +++ b/libs/JSystem/JKernel/JKRAramStream.cpp @@ -23,7 +23,7 @@ extern "C" void write_StreamToAram_Async__13JKRAramStreamFP18JSUFileInputStreamU extern "C" void sync__13JKRAramStreamFP20JKRAramStreamCommandi(); extern "C" void setTransBuffer__13JKRAramStreamFPUcUlP7JKRHeap(); extern "C" void __ct__20JKRAramStreamCommandFv(); -extern "C" void getAvailable__20JSURandomInputStreamCFv(); +extern "C" s32 getAvailable__20JSURandomInputStreamCFv(JSURandomInputStream*); extern "C" extern char const* const JKRAramStream__stringBase0; extern "C" u8 sMessageBuffer__13JKRAramStream[16]; extern "C" u8 sMessageQueue__13JKRAramStream[32]; @@ -317,8 +317,10 @@ JKRAramStreamCommand::JKRAramStreamCommand() { } /* 802D4094-802D40F0 2CE9D4 005C+00 0/0 3/0 0/0 .text getAvailable__20JSURandomInputStreamCFv */ -s32 JSURandomInputStream::getAvailable() const { - return getLength() - getPosition(); +// s32 JSURandomInputStream::getAvailable() const { +// should be an inline function +extern "C" s32 getAvailable__20JSURandomInputStreamCFv(JSURandomInputStream* self) { + return self->getLength() - self->getPosition(); } /* 8039D120-8039D120 029780 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/libs/JSystem/JSupport/JSUFileStream.cpp b/libs/JSystem/JSupport/JSUFileStream.cpp index 8e4ff56930..08d9584690 100644 --- a/libs/JSystem/JSupport/JSUFileStream.cpp +++ b/libs/JSystem/JSupport/JSUFileStream.cpp @@ -7,100 +7,69 @@ #include "dol2asm.h" #include "dolphin/types.h" -// -// Forward References: -// - -extern "C" void __ct__18JSUFileInputStreamFP7JKRFile(); -extern "C" void readData__18JSUFileInputStreamFPvl(); -extern "C" void seekPos__18JSUFileInputStreamFl17JSUStreamSeekFrom(); -extern "C" void getLength__18JSUFileInputStreamCFv(); -extern "C" void getPosition__18JSUFileInputStreamCFv(); - -// -// External References: -// - -extern "C" void getAvailable__20JSURandomInputStreamCFv(); -extern "C" void __dt__18JSUFileInputStreamFv(); -extern "C" void skip__20JSURandomInputStreamFl(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__10JSUIosBase[3]; -extern "C" extern void* __vt__20JSURandomInputStream[9]; -extern "C" extern void* __vt__14JSUInputStream[6 + 1 /* padding */]; - // // Declarations: // -/* ############################################################################################## */ -/* 803CC518-803CC540 029638 0024+04 1/1 1/1 0/0 .data __vt__18JSUFileInputStream */ -SECTION_DATA extern void* __vt__18JSUFileInputStream[9 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18JSUFileInputStreamFv, - (void*)getAvailable__20JSURandomInputStreamCFv, - (void*)skip__20JSURandomInputStreamFl, - (void*)readData__18JSUFileInputStreamFPvl, - (void*)getLength__18JSUFileInputStreamCFv, - (void*)getPosition__18JSUFileInputStreamCFv, - (void*)seekPos__18JSUFileInputStreamFl17JSUStreamSeekFrom, - /* padding */ - NULL, -}; - /* 802DC638-802DC67C 2D6F78 0044+00 0/0 1/1 0/0 .text __ct__18JSUFileInputStreamFP7JKRFile */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JSUFileInputStream::JSUFileInputStream(JKRFile* param_0) { - nofralloc -#include "asm/JSystem/JSupport/JSUFileStream/__ct__18JSUFileInputStreamFP7JKRFile.s" +JSUFileInputStream::JSUFileInputStream(JKRFile* pFile) { + mFile = pFile; + mPosition = 0; } -#pragma pop /* 802DC67C-802DC74C 2D6FBC 00D0+00 1/0 0/0 0/0 .text readData__18JSUFileInputStreamFPvl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 JSUFileInputStream::readData(void* param_0, s32 param_1) { - nofralloc -#include "asm/JSystem/JSupport/JSUFileStream/readData__18JSUFileInputStreamFPvl.s" +u32 JSUFileInputStream::readData(void* pBuffer, s32 length) { + s32 lenRead = 0; + if (mFile->isAvailable()) { + // TODO: the function probably returns u32 + // there are probably more functions that return u32 instead of s32 + if (mPosition + length > (u32)mFile->getFileSize()) { + length = mFile->getFileSize() - mPosition; + } + if (length > 0) { + lenRead = mFile->readData(pBuffer, length, mPosition); + if (lenRead < 0) { + return 0; + } else { + mPosition += lenRead; + } + } + } + return lenRead; } -#pragma pop /* 802DC74C-802DC82C 2D708C 00E0+00 1/0 0/0 0/0 .text * seekPos__18JSUFileInputStreamFl17JSUStreamSeekFrom */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JSUFileInputStream::seekPos(s32 param_0, JSUStreamSeekFrom param_1) { - nofralloc -#include "asm/JSystem/JSupport/JSUFileStream/seekPos__18JSUFileInputStreamFl17JSUStreamSeekFrom.s" +s32 JSUFileInputStream::seekPos(s32 pos, JSUStreamSeekFrom seekFrom) { + s32 oldPos = mPosition; + switch (seekFrom) { + case JSUStreamSeekFrom_SET: + mPosition = pos; + break; + case JSUStreamSeekFrom_END: + mPosition = mFile->getFileSize() - pos; + break; + case JSUStreamSeekFrom_CUR: + mPosition += pos; + break; + } + if (mPosition < 0) { + mPosition = 0; + } + if (mPosition > mFile->getFileSize()) { + mPosition = mFile->getFileSize(); + } + return mPosition - oldPos; } -#pragma pop /* 802DC82C-802DC85C 2D716C 0030+00 1/0 0/0 0/0 .text getLength__18JSUFileInputStreamCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 JSUFileInputStream::getLength() const { - nofralloc -#include "asm/JSystem/JSupport/JSUFileStream/getLength__18JSUFileInputStreamCFv.s" +s32 JSUFileInputStream::getLength() const { + return mFile->getFileSize(); } -#pragma pop /* 802DC85C-802DC864 2D719C 0008+00 1/0 0/0 0/0 .text getPosition__18JSUFileInputStreamCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 JSUFileInputStream::getPosition() const { - nofralloc -#include "asm/JSystem/JSupport/JSUFileStream/getPosition__18JSUFileInputStreamCFv.s" +s32 JSUFileInputStream::getPosition() const { + return mPosition; } -#pragma pop diff --git a/libs/JSystem/JSupport/JSUInputStream.cpp b/libs/JSystem/JSupport/JSUInputStream.cpp index 2f0b4ae36a..0d69d733a2 100644 --- a/libs/JSystem/JSupport/JSUInputStream.cpp +++ b/libs/JSystem/JSupport/JSUInputStream.cpp @@ -6,7 +6,7 @@ #include "JSystem/JSupport/JSUInputStream.h" #include "JSystem/JSupport/JSURandomInputStream.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "global.h" // // Types: @@ -68,72 +68,70 @@ SECTION_DATA extern void* __vt__14JSUInputStream[6 + 1 /* padding */] = { }; /* 802DC23C-802DC298 2D6B7C 005C+00 1/0 6/6 0/0 .text __dt__14JSUInputStreamFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JSUInputStream::~JSUInputStream() { - nofralloc -#include "asm/JSystem/JSupport/JSUInputStream/__dt__14JSUInputStreamFv.s" -} -#pragma pop +JSUInputStream::~JSUInputStream() {} /* 802DC298-802DC2F0 2D6BD8 0058+00 1/1 20/20 0/0 .text read__14JSUInputStreamFPvl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JSUInputStream::read(void* param_0, s32 param_1) { - nofralloc -#include "asm/JSystem/JSupport/JSUInputStream/read__14JSUInputStreamFPvl.s" +s32 JSUInputStream::read(void* buffer, s32 numBytes) { + s32 bytesRead = this->readData(buffer, numBytes); + if (bytesRead != numBytes) { + this->setState(IOS_STATE_1); + } + return bytesRead; } -#pragma pop /* 802DC2F0-802DC370 2D6C30 0080+00 1/0 0/0 0/0 .text skip__14JSUInputStreamFl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 JSUInputStream::skip(s32 param_0) { - nofralloc -#include "asm/JSystem/JSupport/JSUInputStream/skip__14JSUInputStreamFl.s" +s32 JSUInputStream::skip(s32 count) { + s32 skipCount = 0; + u8 buffer[1]; + while (count > skipCount) { + if (this->readData(&buffer, 1) != 1) { + setState(IOS_STATE_1); + break; + } + skipCount++; + } + return skipCount; } -#pragma pop /* 802DC370-802DC3FC 2D6CB0 008C+00 0/0 1/1 0/0 .text align__20JSURandomInputStreamFl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JSURandomInputStream::align(s32 param_0) { - nofralloc -#include "asm/JSystem/JSupport/JSUInputStream/align__20JSURandomInputStreamFl.s" +s32 JSURandomInputStream::align(s32 alignment) { + s32 currentPos = this->getPosition(); + s32 offset = (alignment + currentPos); + offset -= 1; + offset &= ~(alignment - 1); + s32 alignmentOffset = offset - currentPos; + if (alignmentOffset != 0) { + s32 seekLen = this->seekPos(offset, JSUStreamSeekFrom_SET); + if (seekLen != alignmentOffset) { + this->setState(IOS_STATE_1); + } + } + return alignmentOffset; } -#pragma pop /* 802DC3FC-802DC458 2D6D3C 005C+00 1/0 2/0 0/0 .text skip__20JSURandomInputStreamFl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 JSURandomInputStream::skip(s32 param_0) { - nofralloc -#include "asm/JSystem/JSupport/JSUInputStream/skip__20JSURandomInputStreamFl.s" +s32 JSURandomInputStream::skip(s32 param_0) { + s32 val = this->seekPos(param_0, JSUStreamSeekFrom_CUR); + if (val != param_0) { + this->setState(IOS_STATE_1); + } + return val; } -#pragma pop /* 802DC458-802DC4DC 2D6D98 0084+00 0/0 8/8 0/0 .text peek__20JSURandomInputStreamFPvl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JSURandomInputStream::peek(void* param_0, s32 param_1) { - nofralloc -#include "asm/JSystem/JSupport/JSUInputStream/peek__20JSURandomInputStreamFPvl.s" +s32 JSURandomInputStream::peek(void* buffer, s32 numBytes) { + s32 oldPos = this->getPosition(); + s32 bytesRead = this->read(buffer, numBytes); + if (bytesRead != 0) { + this->seekPos(oldPos, JSUStreamSeekFrom_SET); + } + return bytesRead; } -#pragma pop /* 802DC4DC-802DC520 2D6E1C 0044+00 0/0 16/16 0/0 .text * seek__20JSURandomInputStreamFl17JSUStreamSeekFrom */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JSURandomInputStream::seek(s32 param_0, JSUStreamSeekFrom param_1) { - nofralloc -#include "asm/JSystem/JSupport/JSUInputStream/seek__20JSURandomInputStreamFl17JSUStreamSeekFrom.s" +s32 JSURandomInputStream::seek(s32 param_0, JSUStreamSeekFrom param_1) { + s32 seekResult = this->seekPos(param_0, param_1); + this->clrState(IOS_STATE_1); + return seekResult; } -#pragma pop diff --git a/libs/JSystem/JSupport/JSUMemoryStream.cpp b/libs/JSystem/JSupport/JSUMemoryStream.cpp index 4c2f73ea8f..39702109d1 100644 --- a/libs/JSystem/JSupport/JSUMemoryStream.cpp +++ b/libs/JSystem/JSupport/JSUMemoryStream.cpp @@ -6,114 +6,61 @@ #include "JSystem/JSupport/JSUMemoryStream.h" #include "dol2asm.h" #include "dolphin/types.h" - -// -// Types: -// - -struct JSUStreamSeekFrom {}; - -struct JSURandomInputStream { - /* 802D4094 */ void getAvailable() const; - /* 802DC3FC */ void skip(s32); -}; - -struct JSUMemoryInputStream { - /* 802552B8 */ ~JSUMemoryInputStream(); - /* 802DC520 */ void setBuffer(void const*, s32); - /* 802DC534 */ void readData(void*, s32); - /* 802DC5AC */ void seekPos(s32, JSUStreamSeekFrom); - /* 802DC628 */ void getLength() const; - /* 802DC630 */ void getPosition() const; -}; - -// -// Forward References: -// - -extern "C" void setBuffer__20JSUMemoryInputStreamFPCvl(); -extern "C" void readData__20JSUMemoryInputStreamFPvl(); -extern "C" void seekPos__20JSUMemoryInputStreamFl17JSUStreamSeekFrom(); -extern "C" void getLength__20JSUMemoryInputStreamCFv(); -extern "C" void getPosition__20JSUMemoryInputStreamCFv(); -extern "C" extern void* __vt__20JSUMemoryInputStream[9 + 1 /* padding */]; - -// -// External References: -// - -SECTION_INIT void memcpy(); -extern "C" void __dt__20JSUMemoryInputStreamFv(); -extern "C" void getAvailable__20JSURandomInputStreamCFv(); -extern "C" void skip__20JSURandomInputStreamFl(); +#include "msl_c/string.h" // // Declarations: // /* 802DC520-802DC534 2D6E60 0014+00 0/0 3/3 0/0 .text setBuffer__20JSUMemoryInputStreamFPCvl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JSUMemoryInputStream::setBuffer(void const* param_0, s32 param_1) { - nofralloc -#include "asm/JSystem/JSupport/JSUMemoryStream/setBuffer__20JSUMemoryInputStreamFPCvl.s" +void JSUMemoryInputStream::setBuffer(void const* pBuffer, s32 length) { + mBuffer = pBuffer; + mLength = length; + mPosition = 0; } -#pragma pop /* 802DC534-802DC5AC 2D6E74 0078+00 1/0 0/0 0/0 .text readData__20JSUMemoryInputStreamFPvl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JSUMemoryInputStream::readData(void* param_0, s32 param_1) { - nofralloc -#include "asm/JSystem/JSupport/JSUMemoryStream/readData__20JSUMemoryInputStreamFPvl.s" +u32 JSUMemoryInputStream::readData(void* pData, s32 length) { + if (mPosition + length > mLength) { + length = mLength - mPosition; + } + if (length > 0) { + memcpy(pData, (void*)((s32)mBuffer + mPosition), length); + mPosition += length; + } + return length; } -#pragma pop /* 802DC5AC-802DC628 2D6EEC 007C+00 1/0 0/0 0/0 .text * seekPos__20JSUMemoryInputStreamFl17JSUStreamSeekFrom */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JSUMemoryInputStream::seekPos(s32 param_0, JSUStreamSeekFrom param_1) { - nofralloc -#include "asm/JSystem/JSupport/JSUMemoryStream/seekPos__20JSUMemoryInputStreamFl17JSUStreamSeekFrom.s" +s32 JSUMemoryInputStream::seekPos(s32 pos, JSUStreamSeekFrom seekFrom) { + s32 oldPos = mPosition; + switch (seekFrom) { + case JSUStreamSeekFrom_SET: + mPosition = pos; + break; + case JSUStreamSeekFrom_END: + mPosition = mLength - pos; + break; + case JSUStreamSeekFrom_CUR: + mPosition += pos; + break; + } + if (mPosition < 0) { + mPosition = 0; + } + if (mPosition > mLength) { + mPosition = mLength; + } + return mPosition - oldPos; } -#pragma pop /* 802DC628-802DC630 2D6F68 0008+00 1/0 0/0 0/0 .text getLength__20JSUMemoryInputStreamCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JSUMemoryInputStream::getLength() const { - nofralloc -#include "asm/JSystem/JSupport/JSUMemoryStream/getLength__20JSUMemoryInputStreamCFv.s" +s32 JSUMemoryInputStream::getLength() const { + return mLength; } -#pragma pop /* 802DC630-802DC638 2D6F70 0008+00 1/0 0/0 0/0 .text getPosition__20JSUMemoryInputStreamCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JSUMemoryInputStream::getPosition() const { - nofralloc -#include "asm/JSystem/JSupport/JSUMemoryStream/getPosition__20JSUMemoryInputStreamCFv.s" +s32 JSUMemoryInputStream::getPosition() const { + return mPosition; } -#pragma pop - -/* ############################################################################################## */ -/* 803CC4F0-803CC518 029610 0024+04 0/0 4/4 0/0 .data __vt__20JSUMemoryInputStream */ -SECTION_DATA extern void* __vt__20JSUMemoryInputStream[9 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__20JSUMemoryInputStreamFv, - (void*)getAvailable__20JSURandomInputStreamCFv, - (void*)skip__20JSURandomInputStreamFl, - (void*)readData__20JSUMemoryInputStreamFPvl, - (void*)getLength__20JSUMemoryInputStreamCFv, - (void*)getPosition__20JSUMemoryInputStreamCFv, - (void*)seekPos__20JSUMemoryInputStreamFl17JSUStreamSeekFrom, - /* padding */ - NULL, -};