mirror of
https://github.com/zeldaret/tp
synced 2026-05-23 06:54:28 -04:00
Jsupport stream and JKRAramArchive (#143)
* JSupport streams * JKRAramArchive
This commit is contained in:
-45
@@ -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
|
||||
@@ -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
|
||||
-79
@@ -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
|
||||
-53
@@ -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
|
||||
-11
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,3 +0,0 @@
|
||||
lbl_802DC85C:
|
||||
/* 802DC85C 80 63 00 0C */ lwz r3, 0xc(r3)
|
||||
/* 802DC860 4E 80 00 20 */ blr
|
||||
@@ -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
|
||||
-64
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
-18
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,3 +0,0 @@
|
||||
lbl_802DC628:
|
||||
/* 802DC628 80 63 00 0C */ lwz r3, 0xc(r3)
|
||||
/* 802DC62C 4E 80 00 20 */ blr
|
||||
@@ -1,3 +0,0 @@
|
||||
lbl_802DC630:
|
||||
/* 802DC630 80 63 00 10 */ lwz r3, 0x10(r3)
|
||||
/* 802DC634 4E 80 00 20 */ blr
|
||||
@@ -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
|
||||
-39
@@ -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
|
||||
@@ -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
|
||||
@@ -69,6 +69,15 @@ private:
|
||||
static JSUList<JKRAMCommand> 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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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; }
|
||||
|
||||
|
||||
@@ -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; }
|
||||
};
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<SArcHeader*>(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<SArcDataInfo*>(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<JKRAramBlock*>(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<u8*>(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<u8*>(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"
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user