diff --git a/Makefile b/Makefile index 8de543faaae..762ec5230cd 100644 --- a/Makefile +++ b/Makefile @@ -54,6 +54,10 @@ else endif endif +ifeq ($(WINE_LD),) +WINE_LD := $(WINE) +endif + # Hack for OSX ifeq ($(UNAME_S),Darwin) CPP := cpp-10 -P @@ -67,12 +71,13 @@ AS := $(DEVKITPPC)/bin/powerpc-eabi-as OBJCOPY := $(DEVKITPPC)/bin/powerpc-eabi-objcopy STRIP := $(DEVKITPPC)/bin/powerpc-eabi-strip CC := $(WINE) tools/mwcc_compiler/$(MWCC_VERSION)/mwcceppc_patched.exe -LD := $(WINE) tools/mwcc_compiler/$(MWCC_VERSION)/mwldeppc.exe +LD := $(WINE_LD) tools/mwcc_compiler/$(MWCC_VERSION)/mwldeppc.exe ELF2DOL := $(BUILD_PATH)/elf2dol PYTHON := python3 ICONV := iconv DOXYGEN := doxygen MAKEREL := tools/makerel.py +FRANK := tools/frank.py IMAGENAME := gz2e01.iso # Options diff --git a/Progress.md b/Progress.md index d478f07d07d..112b0fef1c6 100644 --- a/Progress.md +++ b/Progress.md @@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes) .init | 97.972973% | 9280 | 9472 .extab | 100.000000% | 96 | 96 .extabindex | 100.000000% | 96 | 96 -.text | 20.092845% | 722648 | 3596544 +.text | 21.473726% | 772312 | 3596544 .ctors | 100.000000% | 448 | 448 .dtors | 100.000000% | 32 | 32 .rodata | 100.000000% | 193856 | 193856 .data | 100.000000% | 197632 | 197632 .sdata | 100.000000% | 1408 | 1408 .sdata2 | 100.000000% | 20832 | 20832 -Total | 28.517223% | 1146584 | 4020672 +Total | 29.752439% | 1196248 | 4020672 ## Total Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- -main.dol | 28.517223% | 1146584 | 4020672 -RELs | 33.281706% | 3827504 | 11500324 -Total | 32.047479% | 4974088 | 15520996 +main.dol | 29.752439% | 1196248 | 4020672 +RELs | 33.301114% | 3829736 | 11500324 +Total | 32.381839% | 5025984 | 15520996 ## RELs @@ -131,7 +131,7 @@ d_a_tag_sppath | 33.333333% | 2040 | 6120 d_a_tag_shop_item | 41.944848% | 1156 | 2756 d_a_tag_theB_hint | 67.253521% | 764 | 1136 d_a_tag_lv2prchk | 35.734870% | 992 | 2776 -d_a_tag_mmsg | 46.938776% | 920 | 1960 +d_a_tag_mmsg | 100.000000% | 1960 | 1960 d_a_tag_lightball | 46.212121% | 976 | 2112 d_a_tag_msg | 37.563971% | 1468 | 3908 d_a_tag_pachi | 51.107595% | 1292 | 2528 @@ -529,7 +529,7 @@ d_a_obj_lv2candle | 100.000000% | 6960 | 6960 d_a_obj_wood_pendulum | 44.455748% | 1748 | 3932 d_a_obj_onsen | 49.239281% | 1424 | 2892 d_a_obj_hasu2 | 41.190476% | 1384 | 3360 -d_a_obj_catdoor | 46.041413% | 1512 | 3284 +d_a_obj_catdoor | 82.338611% | 2704 | 3284 d_a_obj_bkdoor | 45.847554% | 1612 | 3516 d_a_obj_mgate | 47.398844% | 1968 | 4152 d_a_obj_ganonwall2 | 41.938675% | 1696 | 4044 @@ -785,4 +785,4 @@ d_a_b_oh2 | 37.960954% | 2100 | 5532 d_a_b_bq | 28.033347% | 11164 | 39824 d_a_b_zant_sima | 40.995025% | 1648 | 4020 d_a_b_gm | 30.376176% | 11628 | 38280 -Total | 33.281706% | 3827504 | 11500324 +Total | 33.301114% | 3829736 | 11500324 diff --git a/asm/JSystem/J3DGraphAnimator/J3DModel/calcBumpMtx__8J3DModelFv.s b/asm/JSystem/J3DGraphAnimator/J3DModel/calcBumpMtx__8J3DModelFv.s deleted file mode 100644 index f990aa4f487..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DModel/calcBumpMtx__8J3DModelFv.s +++ /dev/null @@ -1,70 +0,0 @@ -lbl_803281B4: -/* 803281B4 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 803281B8 7C 08 02 A6 */ mflr r0 -/* 803281BC 90 01 00 34 */ stw r0, 0x34(r1) -/* 803281C0 39 61 00 30 */ addi r11, r1, 0x30 -/* 803281C4 48 03 A0 09 */ bl _savegpr_25 -/* 803281C8 7C 7E 1B 78 */ mr r30, r3 -/* 803281CC 80 63 00 04 */ lwz r3, 4(r3) -/* 803281D0 A0 03 00 0C */ lhz r0, 0xc(r3) -/* 803281D4 28 00 00 01 */ cmplwi r0, 1 -/* 803281D8 40 82 00 C8 */ bne lbl_803282A0 -/* 803281DC 3B A0 00 00 */ li r29, 0 -/* 803281E0 A3 83 00 5C */ lhz r28, 0x5c(r3) -/* 803281E4 3B E0 00 00 */ li r31, 0 -/* 803281E8 48 00 00 AC */ b lbl_80328294 -lbl_803281EC: -/* 803281EC 80 7E 00 04 */ lwz r3, 4(r30) -/* 803281F0 80 63 00 60 */ lwz r3, 0x60(r3) -/* 803281F4 57 E0 13 BA */ rlwinm r0, r31, 2, 0xe, 0x1d -/* 803281F8 7F 63 00 2E */ lwzx r27, r3, r0 -/* 803281FC 80 7B 00 28 */ lwz r3, 0x28(r27) -/* 80328200 81 83 00 00 */ lwz r12, 0(r3) -/* 80328204 81 8C 00 5C */ lwz r12, 0x5c(r12) -/* 80328208 7D 89 03 A6 */ mtctr r12 -/* 8032820C 4E 80 04 21 */ bctrl -/* 80328210 88 03 00 00 */ lbz r0, 0(r3) -/* 80328214 28 00 00 01 */ cmplwi r0, 1 -/* 80328218 40 82 00 78 */ bne lbl_80328290 -/* 8032821C 80 9E 00 84 */ lwz r4, 0x84(r30) -/* 80328220 80 64 00 28 */ lwz r3, 0x28(r4) -/* 80328224 7C 63 E8 2E */ lwzx r3, r3, r29 -/* 80328228 80 04 00 30 */ lwz r0, 0x30(r4) -/* 8032822C 54 00 10 3A */ slwi r0, r0, 2 -/* 80328230 7F 43 00 2E */ lwzx r26, r3, r0 -/* 80328234 80 64 00 20 */ lwz r3, 0x20(r4) -/* 80328238 7F 23 00 2E */ lwzx r25, r3, r0 -/* 8032823C 80 7B 00 28 */ lwz r3, 0x28(r27) -/* 80328240 81 83 00 00 */ lwz r12, 0(r3) -/* 80328244 81 8C 00 5C */ lwz r12, 0x5c(r12) -/* 80328248 7D 89 03 A6 */ mtctr r12 -/* 8032824C 4E 80 04 21 */ bctrl -/* 80328250 38 83 00 04 */ addi r4, r3, 4 -/* 80328254 80 7B 00 08 */ lwz r3, 8(r27) -/* 80328258 7F 25 CB 78 */ mr r5, r25 -/* 8032825C 7F 46 D3 78 */ mr r6, r26 -/* 80328260 4B FE CB 49 */ bl calcNBTScale__8J3DShapeFRC3VecPA3_A3_fPA3_A3_f -/* 80328264 80 7E 00 04 */ lwz r3, 4(r30) -/* 80328268 A0 83 00 44 */ lhz r4, 0x44(r3) -/* 8032826C 80 BE 00 84 */ lwz r5, 0x84(r30) -/* 80328270 80 65 00 28 */ lwz r3, 0x28(r5) -/* 80328274 7C 63 E8 2E */ lwzx r3, r3, r29 -/* 80328278 80 05 00 30 */ lwz r0, 0x30(r5) -/* 8032827C 54 00 10 3A */ slwi r0, r0, 2 -/* 80328280 7C 63 00 2E */ lwzx r3, r3, r0 -/* 80328284 1C 84 00 24 */ mulli r4, r4, 0x24 -/* 80328288 48 01 33 55 */ bl DCStoreRange -/* 8032828C 3B BD 00 04 */ addi r29, r29, 4 -lbl_80328290: -/* 80328290 3B FF 00 01 */ addi r31, r31, 1 -lbl_80328294: -/* 80328294 57 E0 04 3E */ clrlwi r0, r31, 0x10 -/* 80328298 7C 00 E0 40 */ cmplw r0, r28 -/* 8032829C 41 80 FF 50 */ blt lbl_803281EC -lbl_803282A0: -/* 803282A0 39 61 00 30 */ addi r11, r1, 0x30 -/* 803282A4 48 03 9F 75 */ bl _restgpr_25 -/* 803282A8 80 01 00 34 */ lwz r0, 0x34(r1) -/* 803282AC 7C 08 03 A6 */ mtlr r0 -/* 803282B0 38 21 00 30 */ addi r1, r1, 0x30 -/* 803282B4 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DModel/newDifferedDisplayList__8J3DModelFUl.s b/asm/JSystem/J3DGraphAnimator/J3DModel/newDifferedDisplayList__8J3DModelFUl.s deleted file mode 100644 index e2b0b15fa44..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DModel/newDifferedDisplayList__8J3DModelFUl.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_803275FC: -/* 803275FC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80327600 7C 08 02 A6 */ mflr r0 -/* 80327604 90 01 00 24 */ stw r0, 0x24(r1) -/* 80327608 39 61 00 20 */ addi r11, r1, 0x20 -/* 8032760C 48 03 AB CD */ bl _savegpr_28 -/* 80327610 7C 7C 1B 78 */ mr r28, r3 -/* 80327614 7C 9D 23 78 */ mr r29, r4 -/* 80327618 93 A3 00 0C */ stw r29, 0xc(r3) -/* 8032761C 80 63 00 04 */ lwz r3, 4(r3) -/* 80327620 A3 E3 00 7C */ lhz r31, 0x7c(r3) -/* 80327624 3B C0 00 00 */ li r30, 0 -/* 80327628 48 00 00 2C */ b lbl_80327654 -lbl_8032762C: -/* 8032762C 80 7C 00 C4 */ lwz r3, 0xc4(r28) -/* 80327630 57 C0 04 3E */ clrlwi r0, r30, 0x10 -/* 80327634 1C 00 00 3C */ mulli r0, r0, 0x3c -/* 80327638 7C 63 02 14 */ add r3, r3, r0 -/* 8032763C 7F A4 EB 78 */ mr r4, r29 -/* 80327640 4B FE B7 7D */ bl newDifferedDisplayList__14J3DShapePacketFUl -/* 80327644 2C 03 00 00 */ cmpwi r3, 0 -/* 80327648 41 82 00 08 */ beq lbl_80327650 -/* 8032764C 48 00 00 18 */ b lbl_80327664 -lbl_80327650: -/* 80327650 3B DE 00 01 */ addi r30, r30, 1 -lbl_80327654: -/* 80327654 57 C0 04 3E */ clrlwi r0, r30, 0x10 -/* 80327658 7C 00 F8 40 */ cmplw r0, r31 -/* 8032765C 41 80 FF D0 */ blt lbl_8032762C -/* 80327660 38 60 00 00 */ li r3, 0 -lbl_80327664: -/* 80327664 39 61 00 20 */ addi r11, r1, 0x20 -/* 80327668 48 03 AB BD */ bl _restgpr_28 -/* 8032766C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80327670 7C 08 03 A6 */ mtlr r0 -/* 80327674 38 21 00 20 */ addi r1, r1, 0x20 -/* 80327678 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DModelData/newSharedDisplayList__12J3DModelDataFUl.s b/asm/JSystem/J3DGraphAnimator/J3DModelData/newSharedDisplayList__12J3DModelDataFUl.s deleted file mode 100644 index 9686104641a..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DModelData/newSharedDisplayList__12J3DModelDataFUl.s +++ /dev/null @@ -1,51 +0,0 @@ -lbl_80325E14: -/* 80325E14 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80325E18 7C 08 02 A6 */ mflr r0 -/* 80325E1C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80325E20 39 61 00 20 */ addi r11, r1, 0x20 -/* 80325E24 48 03 C3 B1 */ bl _savegpr_27 -/* 80325E28 7C 7B 1B 78 */ mr r27, r3 -/* 80325E2C A3 E3 00 5C */ lhz r31, 0x5c(r3) -/* 80325E30 3B 80 00 00 */ li r28, 0 -/* 80325E34 54 9E 03 5A */ rlwinm r30, r4, 0, 0xd, 0xd -/* 80325E38 48 00 00 68 */ b lbl_80325EA0 -lbl_80325E3C: -/* 80325E3C 28 1E 00 00 */ cmplwi r30, 0 -/* 80325E40 41 82 00 30 */ beq lbl_80325E70 -/* 80325E44 80 7B 00 60 */ lwz r3, 0x60(r27) -/* 80325E48 57 80 13 BA */ rlwinm r0, r28, 2, 0xe, 0x1d -/* 80325E4C 7F A3 00 2E */ lwzx r29, r3, r0 -/* 80325E50 7F A3 EB 78 */ mr r3, r29 -/* 80325E54 4B FF 04 3D */ bl countDLSize__11J3DMaterialFv -/* 80325E58 7C 64 1B 78 */ mr r4, r3 -/* 80325E5C 7F A3 EB 78 */ mr r3, r29 -/* 80325E60 4B FF 10 C5 */ bl newSingleSharedDisplayList__11J3DMaterialFUl -/* 80325E64 2C 03 00 00 */ cmpwi r3, 0 -/* 80325E68 41 82 00 34 */ beq lbl_80325E9C -/* 80325E6C 48 00 00 44 */ b lbl_80325EB0 -lbl_80325E70: -/* 80325E70 80 7B 00 60 */ lwz r3, 0x60(r27) -/* 80325E74 57 80 13 BA */ rlwinm r0, r28, 2, 0xe, 0x1d -/* 80325E78 7F A3 00 2E */ lwzx r29, r3, r0 -/* 80325E7C 7F A3 EB 78 */ mr r3, r29 -/* 80325E80 4B FF 04 11 */ bl countDLSize__11J3DMaterialFv -/* 80325E84 7C 64 1B 78 */ mr r4, r3 -/* 80325E88 7F A3 EB 78 */ mr r3, r29 -/* 80325E8C 4B FF 10 05 */ bl newSharedDisplayList__11J3DMaterialFUl -/* 80325E90 2C 03 00 00 */ cmpwi r3, 0 -/* 80325E94 41 82 00 08 */ beq lbl_80325E9C -/* 80325E98 48 00 00 18 */ b lbl_80325EB0 -lbl_80325E9C: -/* 80325E9C 3B 9C 00 01 */ addi r28, r28, 1 -lbl_80325EA0: -/* 80325EA0 57 80 04 3E */ clrlwi r0, r28, 0x10 -/* 80325EA4 7C 00 F8 40 */ cmplw r0, r31 -/* 80325EA8 41 80 FF 94 */ blt lbl_80325E3C -/* 80325EAC 38 60 00 00 */ li r3, 0 -lbl_80325EB0: -/* 80325EB0 39 61 00 20 */ addi r11, r1, 0x20 -/* 80325EB4 48 03 C3 6D */ bl _restgpr_27 -/* 80325EB8 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80325EBC 7C 08 03 A6 */ mtlr r0 -/* 80325EC0 38 21 00 20 */ addi r1, r1, 0x20 -/* 80325EC4 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/J3DCalcViewBaseMtx__FPA4_fRC3VecRA3_A4_CfPA4_f.s b/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/J3DCalcViewBaseMtx__FPA4_fRC3VecRA3_A4_CfPA4_f.s deleted file mode 100644 index 67f8323807a..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/J3DCalcViewBaseMtx__FPA4_fRC3VecRA3_A4_CfPA4_f.s +++ /dev/null @@ -1,47 +0,0 @@ -lbl_80327048: -/* 80327048 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 8032704C 7C 08 02 A6 */ mflr r0 -/* 80327050 90 01 00 44 */ stw r0, 0x44(r1) -/* 80327054 C0 05 00 00 */ lfs f0, 0(r5) -/* 80327058 C0 64 00 00 */ lfs f3, 0(r4) -/* 8032705C EC 00 00 F2 */ fmuls f0, f0, f3 -/* 80327060 D0 01 00 08 */ stfs f0, 8(r1) -/* 80327064 C0 05 00 04 */ lfs f0, 4(r5) -/* 80327068 C0 44 00 04 */ lfs f2, 4(r4) -/* 8032706C EC 00 00 B2 */ fmuls f0, f0, f2 -/* 80327070 D0 01 00 0C */ stfs f0, 0xc(r1) -/* 80327074 C0 05 00 08 */ lfs f0, 8(r5) -/* 80327078 C0 24 00 08 */ lfs f1, 8(r4) -/* 8032707C EC 00 00 72 */ fmuls f0, f0, f1 -/* 80327080 D0 01 00 10 */ stfs f0, 0x10(r1) -/* 80327084 C0 05 00 0C */ lfs f0, 0xc(r5) -/* 80327088 D0 01 00 14 */ stfs f0, 0x14(r1) -/* 8032708C C0 05 00 10 */ lfs f0, 0x10(r5) -/* 80327090 EC 00 00 F2 */ fmuls f0, f0, f3 -/* 80327094 D0 01 00 18 */ stfs f0, 0x18(r1) -/* 80327098 C0 05 00 14 */ lfs f0, 0x14(r5) -/* 8032709C EC 00 00 B2 */ fmuls f0, f0, f2 -/* 803270A0 D0 01 00 1C */ stfs f0, 0x1c(r1) -/* 803270A4 C0 05 00 18 */ lfs f0, 0x18(r5) -/* 803270A8 EC 00 00 72 */ fmuls f0, f0, f1 -/* 803270AC D0 01 00 20 */ stfs f0, 0x20(r1) -/* 803270B0 C0 05 00 1C */ lfs f0, 0x1c(r5) -/* 803270B4 D0 01 00 24 */ stfs f0, 0x24(r1) -/* 803270B8 C0 05 00 20 */ lfs f0, 0x20(r5) -/* 803270BC EC 00 00 F2 */ fmuls f0, f0, f3 -/* 803270C0 D0 01 00 28 */ stfs f0, 0x28(r1) -/* 803270C4 C0 05 00 24 */ lfs f0, 0x24(r5) -/* 803270C8 EC 00 00 B2 */ fmuls f0, f0, f2 -/* 803270CC D0 01 00 2C */ stfs f0, 0x2c(r1) -/* 803270D0 C0 05 00 28 */ lfs f0, 0x28(r5) -/* 803270D4 EC 00 00 72 */ fmuls f0, f0, f1 -/* 803270D8 D0 01 00 30 */ stfs f0, 0x30(r1) -/* 803270DC C0 05 00 2C */ lfs f0, 0x2c(r5) -/* 803270E0 D0 01 00 34 */ stfs f0, 0x34(r1) -/* 803270E4 38 81 00 08 */ addi r4, r1, 8 -/* 803270E8 7C C5 33 78 */ mr r5, r6 -/* 803270EC 48 01 F3 F9 */ bl PSMTXConcat -/* 803270F0 80 01 00 44 */ lwz r0, 0x44(r1) -/* 803270F4 7C 08 03 A6 */ mtlr r0 -/* 803270F8 38 21 00 40 */ addi r1, r1, 0x40 -/* 803270FC 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/createAnmMtx__12J3DMtxBufferFP12J3DModelData.s b/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/createAnmMtx__12J3DMtxBufferFP12J3DModelData.s deleted file mode 100644 index 0fb9f12c422..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/createAnmMtx__12J3DMtxBufferFP12J3DModelData.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_80326364: -/* 80326364 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80326368 7C 08 02 A6 */ mflr r0 -/* 8032636C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80326370 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80326374 93 C1 00 08 */ stw r30, 8(r1) -/* 80326378 7C 7E 1B 78 */ mr r30, r3 -/* 8032637C 7C 9F 23 78 */ mr r31, r4 -/* 80326380 A0 04 00 2C */ lhz r0, 0x2c(r4) -/* 80326384 28 00 00 00 */ cmplwi r0, 0 -/* 80326388 41 82 00 28 */ beq lbl_803263B0 -/* 8032638C 54 03 04 3E */ clrlwi r3, r0, 0x10 -/* 80326390 4B FA 89 35 */ bl __nwa__FUl -/* 80326394 90 7E 00 04 */ stw r3, 4(r30) -/* 80326398 A0 1F 00 2C */ lhz r0, 0x2c(r31) -/* 8032639C 1C 60 00 30 */ mulli r3, r0, 0x30 -/* 803263A0 4B FA 89 25 */ bl __nwa__FUl -/* 803263A4 90 7E 00 0C */ stw r3, 0xc(r30) -/* 803263A8 80 1E 00 0C */ lwz r0, 0xc(r30) -/* 803263AC 90 1E 00 34 */ stw r0, 0x34(r30) -lbl_803263B0: -/* 803263B0 80 1E 00 04 */ lwz r0, 4(r30) -/* 803263B4 28 00 00 00 */ cmplwi r0, 0 -/* 803263B8 40 82 00 0C */ bne lbl_803263C4 -/* 803263BC 38 60 00 04 */ li r3, 4 -/* 803263C0 48 00 00 18 */ b lbl_803263D8 -lbl_803263C4: -/* 803263C4 80 1E 00 0C */ lwz r0, 0xc(r30) -/* 803263C8 28 00 00 00 */ cmplwi r0, 0 -/* 803263CC 38 60 00 00 */ li r3, 0 -/* 803263D0 40 82 00 08 */ bne lbl_803263D8 -/* 803263D4 38 60 00 04 */ li r3, 4 -lbl_803263D8: -/* 803263D8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 803263DC 83 C1 00 08 */ lwz r30, 8(r1) -/* 803263E0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 803263E4 7C 08 03 A6 */ mtlr r0 -/* 803263E8 38 21 00 10 */ addi r1, r1, 0x10 -/* 803263EC 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/createDoubleDrawMtx__12J3DMtxBufferFP12J3DModelDataUl.s b/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/createDoubleDrawMtx__12J3DMtxBufferFP12J3DModelDataUl.s deleted file mode 100644 index e7cf664bbb2..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/createDoubleDrawMtx__12J3DMtxBufferFP12J3DModelDataUl.s +++ /dev/null @@ -1,124 +0,0 @@ -lbl_803264B8: -/* 803264B8 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 803264BC 7C 08 02 A6 */ mflr r0 -/* 803264C0 90 01 00 34 */ stw r0, 0x34(r1) -/* 803264C4 39 61 00 30 */ addi r11, r1, 0x30 -/* 803264C8 48 03 BD 01 */ bl _savegpr_24 -/* 803264CC 7C 7D 1B 78 */ mr r29, r3 -/* 803264D0 7C 9E 23 78 */ mr r30, r4 -/* 803264D4 7C BF 2B 79 */ or. r31, r5, r5 -/* 803264D8 41 82 00 44 */ beq lbl_8032651C -/* 803264DC 3B 00 00 00 */ li r24, 0 -/* 803264E0 3B 60 00 00 */ li r27, 0 -/* 803264E4 57 FA 10 3A */ slwi r26, r31, 2 -/* 803264E8 7F 7C DB 78 */ mr r28, r27 -lbl_803264EC: -/* 803264EC 7F 43 D3 78 */ mr r3, r26 -/* 803264F0 4B FA 87 D5 */ bl __nwa__FUl -/* 803264F4 7F 3D DA 14 */ add r25, r29, r27 -/* 803264F8 90 79 00 14 */ stw r3, 0x14(r25) -/* 803264FC 7F 43 D3 78 */ mr r3, r26 -/* 80326500 4B FA 87 C5 */ bl __nwa__FUl -/* 80326504 90 79 00 1C */ stw r3, 0x1c(r25) -/* 80326508 93 99 00 24 */ stw r28, 0x24(r25) -/* 8032650C 3B 18 00 01 */ addi r24, r24, 1 -/* 80326510 2C 18 00 02 */ cmpwi r24, 2 -/* 80326514 3B 7B 00 04 */ addi r27, r27, 4 -/* 80326518 41 80 FF D4 */ blt lbl_803264EC -lbl_8032651C: -/* 8032651C 28 1F 00 00 */ cmplwi r31, 0 -/* 80326520 41 82 00 44 */ beq lbl_80326564 -/* 80326524 38 60 00 00 */ li r3, 0 -/* 80326528 38 00 00 02 */ li r0, 2 -/* 8032652C 7C 09 03 A6 */ mtctr r0 -lbl_80326530: -/* 80326530 7C 9D 1A 14 */ add r4, r29, r3 -/* 80326534 80 04 00 14 */ lwz r0, 0x14(r4) -/* 80326538 28 00 00 00 */ cmplwi r0, 0 -/* 8032653C 40 82 00 0C */ bne lbl_80326548 -/* 80326540 38 60 00 04 */ li r3, 4 -/* 80326544 48 00 01 08 */ b lbl_8032664C -lbl_80326548: -/* 80326548 80 04 00 1C */ lwz r0, 0x1c(r4) -/* 8032654C 28 00 00 00 */ cmplwi r0, 0 -/* 80326550 40 82 00 0C */ bne lbl_8032655C -/* 80326554 38 60 00 04 */ li r3, 4 -/* 80326558 48 00 00 F4 */ b lbl_8032664C -lbl_8032655C: -/* 8032655C 38 63 00 04 */ addi r3, r3, 4 -/* 80326560 42 00 FF D0 */ bdnz lbl_80326530 -lbl_80326564: -/* 80326564 3B 00 00 00 */ li r24, 0 -/* 80326568 3B 80 00 00 */ li r28, 0 -lbl_8032656C: -/* 8032656C 3B 40 00 00 */ li r26, 0 -/* 80326570 3B 60 00 00 */ li r27, 0 -/* 80326574 7F 3D E2 14 */ add r25, r29, r28 -/* 80326578 48 00 00 48 */ b lbl_803265C0 -lbl_8032657C: -/* 8032657C A0 1E 00 44 */ lhz r0, 0x44(r30) -/* 80326580 28 00 00 00 */ cmplwi r0, 0 -/* 80326584 41 82 00 34 */ beq lbl_803265B8 -/* 80326588 54 00 04 3E */ clrlwi r0, r0, 0x10 -/* 8032658C 1C 60 00 30 */ mulli r3, r0, 0x30 -/* 80326590 38 80 00 20 */ li r4, 0x20 -/* 80326594 4B FA 87 59 */ bl __nwa__FUli -/* 80326598 80 99 00 14 */ lwz r4, 0x14(r25) -/* 8032659C 7C 64 D9 2E */ stwx r3, r4, r27 -/* 803265A0 A0 1E 00 44 */ lhz r0, 0x44(r30) -/* 803265A4 1C 60 00 24 */ mulli r3, r0, 0x24 -/* 803265A8 38 80 00 20 */ li r4, 0x20 -/* 803265AC 4B FA 87 41 */ bl __nwa__FUli -/* 803265B0 80 99 00 1C */ lwz r4, 0x1c(r25) -/* 803265B4 7C 64 D9 2E */ stwx r3, r4, r27 -lbl_803265B8: -/* 803265B8 3B 5A 00 01 */ addi r26, r26, 1 -/* 803265BC 3B 7B 00 04 */ addi r27, r27, 4 -lbl_803265C0: -/* 803265C0 7C 1A F8 40 */ cmplw r26, r31 -/* 803265C4 41 80 FF B8 */ blt lbl_8032657C -/* 803265C8 3B 18 00 01 */ addi r24, r24, 1 -/* 803265CC 2C 18 00 02 */ cmpwi r24, 2 -/* 803265D0 3B 9C 00 04 */ addi r28, r28, 4 -/* 803265D4 41 80 FF 98 */ blt lbl_8032656C -/* 803265D8 38 E0 00 00 */ li r7, 0 -/* 803265DC 38 60 00 00 */ li r3, 0 -lbl_803265E0: -/* 803265E0 38 80 00 00 */ li r4, 0 -/* 803265E4 7C DD 1A 14 */ add r6, r29, r3 -/* 803265E8 7F E9 03 A6 */ mtctr r31 -/* 803265EC 28 1F 00 00 */ cmplwi r31, 0 -/* 803265F0 40 81 00 48 */ ble lbl_80326638 -lbl_803265F4: -/* 803265F4 A0 1E 00 44 */ lhz r0, 0x44(r30) -/* 803265F8 28 00 00 00 */ cmplwi r0, 0 -/* 803265FC 41 82 00 34 */ beq lbl_80326630 -/* 80326600 80 A6 00 14 */ lwz r5, 0x14(r6) -/* 80326604 7C 05 20 2E */ lwzx r0, r5, r4 -/* 80326608 28 00 00 00 */ cmplwi r0, 0 -/* 8032660C 40 82 00 0C */ bne lbl_80326618 -/* 80326610 38 60 00 04 */ li r3, 4 -/* 80326614 48 00 00 38 */ b lbl_8032664C -lbl_80326618: -/* 80326618 80 A6 00 1C */ lwz r5, 0x1c(r6) -/* 8032661C 7C 05 20 2E */ lwzx r0, r5, r4 -/* 80326620 28 00 00 00 */ cmplwi r0, 0 -/* 80326624 40 82 00 0C */ bne lbl_80326630 -/* 80326628 38 60 00 04 */ li r3, 4 -/* 8032662C 48 00 00 20 */ b lbl_8032664C -lbl_80326630: -/* 80326630 38 84 00 04 */ addi r4, r4, 4 -/* 80326634 42 00 FF C0 */ bdnz lbl_803265F4 -lbl_80326638: -/* 80326638 38 E7 00 01 */ addi r7, r7, 1 -/* 8032663C 2C 07 00 02 */ cmpwi r7, 2 -/* 80326640 38 63 00 04 */ addi r3, r3, 4 -/* 80326644 41 80 FF 9C */ blt lbl_803265E0 -/* 80326648 38 60 00 00 */ li r3, 0 -lbl_8032664C: -/* 8032664C 39 61 00 30 */ addi r11, r1, 0x30 -/* 80326650 48 03 BB C5 */ bl _restgpr_24 -/* 80326654 80 01 00 34 */ lwz r0, 0x34(r1) -/* 80326658 7C 08 03 A6 */ mtlr r0 -/* 8032665C 38 21 00 30 */ addi r1, r1, 0x30 -/* 80326660 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/createWeightEnvelopeMtx__12J3DMtxBufferFP12J3DModelData.s b/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/createWeightEnvelopeMtx__12J3DMtxBufferFP12J3DModelData.s deleted file mode 100644 index 4e22fae6112..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/createWeightEnvelopeMtx__12J3DMtxBufferFP12J3DModelData.s +++ /dev/null @@ -1,44 +0,0 @@ -lbl_803263F0: -/* 803263F0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803263F4 7C 08 02 A6 */ mflr r0 -/* 803263F8 90 01 00 14 */ stw r0, 0x14(r1) -/* 803263FC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80326400 93 C1 00 08 */ stw r30, 8(r1) -/* 80326404 7C 7E 1B 78 */ mr r30, r3 -/* 80326408 7C 9F 23 78 */ mr r31, r4 -/* 8032640C A0 04 00 2E */ lhz r0, 0x2e(r4) -/* 80326410 28 00 00 00 */ cmplwi r0, 0 -/* 80326414 41 82 00 20 */ beq lbl_80326434 -/* 80326418 54 03 04 3E */ clrlwi r3, r0, 0x10 -/* 8032641C 4B FA 88 A9 */ bl __nwa__FUl -/* 80326420 90 7E 00 08 */ stw r3, 8(r30) -/* 80326424 A0 1F 00 2E */ lhz r0, 0x2e(r31) -/* 80326428 1C 60 00 30 */ mulli r3, r0, 0x30 -/* 8032642C 4B FA 88 99 */ bl __nwa__FUl -/* 80326430 90 7E 00 10 */ stw r3, 0x10(r30) -lbl_80326434: -/* 80326434 A0 7F 00 2E */ lhz r3, 0x2e(r31) -/* 80326438 28 03 00 00 */ cmplwi r3, 0 -/* 8032643C 41 82 00 18 */ beq lbl_80326454 -/* 80326440 80 1E 00 08 */ lwz r0, 8(r30) -/* 80326444 28 00 00 00 */ cmplwi r0, 0 -/* 80326448 40 82 00 0C */ bne lbl_80326454 -/* 8032644C 38 60 00 04 */ li r3, 4 -/* 80326450 48 00 00 24 */ b lbl_80326474 -lbl_80326454: -/* 80326454 54 60 04 3F */ clrlwi. r0, r3, 0x10 -/* 80326458 41 82 00 18 */ beq lbl_80326470 -/* 8032645C 80 1E 00 10 */ lwz r0, 0x10(r30) -/* 80326460 28 00 00 00 */ cmplwi r0, 0 -/* 80326464 40 82 00 0C */ bne lbl_80326470 -/* 80326468 38 60 00 04 */ li r3, 4 -/* 8032646C 48 00 00 08 */ b lbl_80326474 -lbl_80326470: -/* 80326470 38 60 00 00 */ li r3, 0 -lbl_80326474: -/* 80326474 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80326478 83 C1 00 08 */ lwz r30, 8(r1) -/* 8032647C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80326480 7C 08 03 A6 */ mtlr r0 -/* 80326484 38 21 00 10 */ addi r1, r1, 0x10 -/* 80326488 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/create__12J3DMtxBufferFP12J3DModelDataUl.s b/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/create__12J3DMtxBufferFP12J3DModelDataUl.s deleted file mode 100644 index 3c3e261809e..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/create__12J3DMtxBufferFP12J3DModelDataUl.s +++ /dev/null @@ -1,78 +0,0 @@ -lbl_80326258: -/* 80326258 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8032625C 7C 08 02 A6 */ mflr r0 -/* 80326260 90 01 00 24 */ stw r0, 0x24(r1) -/* 80326264 39 61 00 20 */ addi r11, r1, 0x20 -/* 80326268 48 03 BF 71 */ bl _savegpr_28 -/* 8032626C 7C 7C 1B 78 */ mr r28, r3 -/* 80326270 7C 9D 23 78 */ mr r29, r4 -/* 80326274 7C BE 2B 78 */ mr r30, r5 -/* 80326278 93 C3 00 2C */ stw r30, 0x2c(r3) -/* 8032627C 38 1D 00 10 */ addi r0, r29, 0x10 -/* 80326280 90 03 00 00 */ stw r0, 0(r3) -/* 80326284 48 00 00 E1 */ bl createAnmMtx__12J3DMtxBufferFP12J3DModelData -/* 80326288 2C 03 00 00 */ cmpwi r3, 0 -/* 8032628C 41 82 00 08 */ beq lbl_80326294 -/* 80326290 48 00 00 BC */ b lbl_8032634C -lbl_80326294: -/* 80326294 7F 83 E3 78 */ mr r3, r28 -/* 80326298 7F A4 EB 78 */ mr r4, r29 -/* 8032629C 48 00 01 55 */ bl createWeightEnvelopeMtx__12J3DMtxBufferFP12J3DModelData -/* 803262A0 7C 7F 1B 79 */ or. r31, r3, r3 -/* 803262A4 41 82 00 08 */ beq lbl_803262AC -/* 803262A8 48 00 00 A4 */ b lbl_8032634C -lbl_803262AC: -/* 803262AC 80 7D 00 08 */ lwz r3, 8(r29) -/* 803262B0 54 60 C7 FF */ rlwinm. r0, r3, 0x18, 0x1f, 0x1f -/* 803262B4 41 82 00 10 */ beq lbl_803262C4 -/* 803262B8 7F 83 E3 78 */ mr r3, r28 -/* 803262BC 48 00 01 D1 */ bl setNoUseDrawMtx__12J3DMtxBufferFv -/* 803262C0 48 00 00 44 */ b lbl_80326304 -lbl_803262C4: -/* 803262C4 54 60 06 F6 */ rlwinm r0, r3, 0, 0x1b, 0x1b -/* 803262C8 2C 00 00 10 */ cmpwi r0, 0x10 -/* 803262CC 41 82 00 14 */ beq lbl_803262E0 -/* 803262D0 40 80 00 20 */ bge lbl_803262F0 -/* 803262D4 2C 00 00 00 */ cmpwi r0, 0 -/* 803262D8 41 82 00 18 */ beq lbl_803262F0 -/* 803262DC 48 00 00 14 */ b lbl_803262F0 -lbl_803262E0: -/* 803262E0 7F 83 E3 78 */ mr r3, r28 -/* 803262E4 48 00 01 A9 */ bl setNoUseDrawMtx__12J3DMtxBufferFv -/* 803262E8 7C 7F 1B 78 */ mr r31, r3 -/* 803262EC 48 00 00 18 */ b lbl_80326304 -lbl_803262F0: -/* 803262F0 7F 83 E3 78 */ mr r3, r28 -/* 803262F4 7F A4 EB 78 */ mr r4, r29 -/* 803262F8 7F C5 F3 78 */ mr r5, r30 -/* 803262FC 48 00 01 BD */ bl createDoubleDrawMtx__12J3DMtxBufferFP12J3DModelDataUl -/* 80326300 7C 7F 1B 78 */ mr r31, r3 -lbl_80326304: -/* 80326304 2C 1F 00 00 */ cmpwi r31, 0 -/* 80326308 41 82 00 0C */ beq lbl_80326314 -/* 8032630C 7F E3 FB 78 */ mr r3, r31 -/* 80326310 48 00 00 3C */ b lbl_8032634C -lbl_80326314: -/* 80326314 80 1D 00 08 */ lwz r0, 8(r29) -/* 80326318 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b -/* 8032631C 41 82 00 10 */ beq lbl_8032632C -/* 80326320 38 00 00 00 */ li r0, 0 -/* 80326324 B0 1D 00 0C */ sth r0, 0xc(r29) -/* 80326328 48 00 00 20 */ b lbl_80326348 -lbl_8032632C: -/* 8032632C 7F 83 E3 78 */ mr r3, r28 -/* 80326330 7F A4 EB 78 */ mr r4, r29 -/* 80326334 7F C5 F3 78 */ mr r5, r30 -/* 80326338 48 00 03 2D */ bl createBumpMtxArray__12J3DMtxBufferFP12J3DModelDataUl -/* 8032633C 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80326340 41 82 00 08 */ beq lbl_80326348 -/* 80326344 48 00 00 08 */ b lbl_8032634C -lbl_80326348: -/* 80326348 7F E3 FB 78 */ mr r3, r31 -lbl_8032634C: -/* 8032634C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80326350 48 03 BE D5 */ bl _restgpr_28 -/* 80326354 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80326358 7C 08 03 A6 */ mtlr r0 -/* 8032635C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80326360 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/initialize__12J3DMtxBufferFv.s b/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/initialize__12J3DMtxBufferFv.s deleted file mode 100644 index abf86008a74..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/initialize__12J3DMtxBufferFv.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_80326214: -/* 80326214 38 80 00 00 */ li r4, 0 -/* 80326218 90 83 00 00 */ stw r4, 0(r3) -/* 8032621C 90 83 00 04 */ stw r4, 4(r3) -/* 80326220 90 83 00 08 */ stw r4, 8(r3) -/* 80326224 90 83 00 0C */ stw r4, 0xc(r3) -/* 80326228 90 83 00 10 */ stw r4, 0x10(r3) -/* 8032622C 90 83 00 14 */ stw r4, 0x14(r3) -/* 80326230 90 83 00 18 */ stw r4, 0x18(r3) -/* 80326234 90 83 00 1C */ stw r4, 0x1c(r3) -/* 80326238 90 83 00 20 */ stw r4, 0x20(r3) -/* 8032623C 90 83 00 24 */ stw r4, 0x24(r3) -/* 80326240 90 83 00 28 */ stw r4, 0x28(r3) -/* 80326244 38 00 00 01 */ li r0, 1 -/* 80326248 90 03 00 2C */ stw r0, 0x2c(r3) -/* 8032624C 90 83 00 30 */ stw r4, 0x30(r3) -/* 80326250 90 83 00 34 */ stw r4, 0x34(r3) -/* 80326254 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/setNoUseDrawMtx__12J3DMtxBufferFv.s b/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/setNoUseDrawMtx__12J3DMtxBufferFv.s deleted file mode 100644 index 89e3279e07c..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/setNoUseDrawMtx__12J3DMtxBufferFv.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8032648C: -/* 8032648C 38 0D 83 F0 */ la r0, sNoUseDrawMtxPtr__12J3DMtxBuffer(r13) /* 80450970-_SDA_BASE_ */ -/* 80326490 90 03 00 18 */ stw r0, 0x18(r3) -/* 80326494 90 03 00 14 */ stw r0, 0x14(r3) -/* 80326498 38 0D 83 F4 */ la r0, sNoUseNrmMtxPtr__12J3DMtxBuffer(r13) /* 80450974-_SDA_BASE_ */ -/* 8032649C 90 03 00 20 */ stw r0, 0x20(r3) -/* 803264A0 90 03 00 1C */ stw r0, 0x1c(r3) -/* 803264A4 38 00 00 00 */ li r0, 0 -/* 803264A8 90 03 00 28 */ stw r0, 0x28(r3) -/* 803264AC 90 03 00 24 */ stw r0, 0x24(r3) -/* 803264B0 38 60 00 00 */ li r3, 0 -/* 803264B4 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket.s b/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket.s deleted file mode 100644 index af3aac1375a..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket.s +++ /dev/null @@ -1,53 +0,0 @@ -lbl_803251E4: -/* 803251E4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803251E8 7C 08 02 A6 */ mflr r0 -/* 803251EC 90 01 00 14 */ stw r0, 0x14(r1) -/* 803251F0 81 04 00 3C */ lwz r8, 0x3c(r4) -/* 803251F4 80 A3 00 04 */ lwz r5, 4(r3) -/* 803251F8 38 05 FF FF */ addi r0, r5, -1 -/* 803251FC 7D 06 00 38 */ and r6, r8, r0 -/* 80325200 28 08 00 00 */ cmplwi r8, 0 -/* 80325204 40 82 00 0C */ bne lbl_80325210 -/* 80325208 4B FF FE 95 */ bl entryMatSort__13J3DDrawBufferFP12J3DMatPacket -/* 8032520C 48 00 00 80 */ b lbl_8032528C -lbl_80325210: -/* 80325210 38 00 00 00 */ li r0, 0 -/* 80325214 90 04 00 04 */ stw r0, 4(r4) -/* 80325218 90 04 00 08 */ stw r0, 8(r4) -/* 8032521C 80 A4 00 2C */ lwz r5, 0x2c(r4) -/* 80325220 90 05 00 04 */ stw r0, 4(r5) -/* 80325224 90 05 00 08 */ stw r0, 8(r5) -/* 80325228 80 A3 00 00 */ lwz r5, 0(r3) -/* 8032522C 54 C7 10 3A */ slwi r7, r6, 2 -/* 80325230 7C C5 38 2E */ lwzx r6, r5, r7 -/* 80325234 28 06 00 00 */ cmplwi r6, 0 -/* 80325238 40 82 00 10 */ bne lbl_80325248 -/* 8032523C 7C 85 39 2E */ stwx r4, r5, r7 -/* 80325240 38 60 00 01 */ li r3, 1 -/* 80325244 48 00 00 48 */ b lbl_8032528C -lbl_80325248: -/* 80325248 7C C5 33 78 */ mr r5, r6 -/* 8032524C 48 00 00 28 */ b lbl_80325274 -lbl_80325250: -/* 80325250 80 05 00 3C */ lwz r0, 0x3c(r5) -/* 80325254 7C 00 40 40 */ cmplw r0, r8 -/* 80325258 40 82 00 18 */ bne lbl_80325270 -/* 8032525C 7C A3 2B 78 */ mr r3, r5 -/* 80325260 80 84 00 2C */ lwz r4, 0x2c(r4) -/* 80325264 4B FE D7 A1 */ bl addShapePacket__12J3DMatPacketFP14J3DShapePacket -/* 80325268 38 60 00 00 */ li r3, 0 -/* 8032526C 48 00 00 20 */ b lbl_8032528C -lbl_80325270: -/* 80325270 80 A5 00 04 */ lwz r5, 4(r5) -lbl_80325274: -/* 80325274 28 05 00 00 */ cmplwi r5, 0 -/* 80325278 40 82 FF D8 */ bne lbl_80325250 -/* 8032527C 90 C4 00 04 */ stw r6, 4(r4) -/* 80325280 80 63 00 00 */ lwz r3, 0(r3) -/* 80325284 7C 83 39 2E */ stwx r4, r3, r7 -/* 80325288 38 60 00 01 */ li r3, 1 -lbl_8032528C: -/* 8032528C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80325290 7C 08 03 A6 */ mtlr r0 -/* 80325294 38 21 00 10 */ addi r1, r1, 0x10 -/* 80325298 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatSort__13J3DDrawBufferFP12J3DMatPacket.s b/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatSort__13J3DDrawBufferFP12J3DMatPacket.s deleted file mode 100644 index 72b73af1a61..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatSort__13J3DDrawBufferFP12J3DMatPacket.s +++ /dev/null @@ -1,91 +0,0 @@ -lbl_8032509C: -/* 8032509C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 803250A0 7C 08 02 A6 */ mflr r0 -/* 803250A4 90 01 00 24 */ stw r0, 0x24(r1) -/* 803250A8 39 61 00 20 */ addi r11, r1, 0x20 -/* 803250AC 48 03 D1 2D */ bl _savegpr_28 -/* 803250B0 7C 7E 1B 78 */ mr r30, r3 -/* 803250B4 7C 9F 23 78 */ mr r31, r4 -/* 803250B8 38 00 00 00 */ li r0, 0 -/* 803250BC 90 04 00 04 */ stw r0, 4(r4) -/* 803250C0 90 04 00 08 */ stw r0, 8(r4) -/* 803250C4 80 64 00 2C */ lwz r3, 0x2c(r4) -/* 803250C8 90 03 00 04 */ stw r0, 4(r3) -/* 803250CC 90 03 00 08 */ stw r0, 8(r3) -/* 803250D0 80 04 00 34 */ lwz r0, 0x34(r4) -/* 803250D4 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0 -/* 803250D8 41 82 00 20 */ beq lbl_803250F8 -/* 803250DC 80 7E 00 00 */ lwz r3, 0(r30) -/* 803250E0 80 03 00 00 */ lwz r0, 0(r3) -/* 803250E4 90 1F 00 04 */ stw r0, 4(r31) -/* 803250E8 80 7E 00 00 */ lwz r3, 0(r30) -/* 803250EC 93 E3 00 00 */ stw r31, 0(r3) -/* 803250F0 38 60 00 01 */ li r3, 1 -/* 803250F4 48 00 00 D8 */ b lbl_803251CC -lbl_803250F8: -/* 803250F8 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 803250FC 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */ -/* 80325100 83 A3 00 58 */ lwz r29, 0x58(r3) -/* 80325104 80 7F 00 30 */ lwz r3, 0x30(r31) -/* 80325108 80 63 00 2C */ lwz r3, 0x2c(r3) -/* 8032510C 38 80 00 00 */ li r4, 0 -/* 80325110 81 83 00 00 */ lwz r12, 0(r3) -/* 80325114 81 8C 00 50 */ lwz r12, 0x50(r12) -/* 80325118 7D 89 03 A6 */ mtctr r12 -/* 8032511C 4E 80 04 21 */ bctrl -/* 80325120 54 60 04 3E */ clrlwi r0, r3, 0x10 -/* 80325124 28 00 FF FF */ cmplwi r0, 0xffff -/* 80325128 40 82 00 0C */ bne lbl_80325134 -/* 8032512C 38 80 00 00 */ li r4, 0 -/* 80325130 48 00 00 1C */ b lbl_8032514C -lbl_80325134: -/* 80325134 80 9D 00 04 */ lwz r4, 4(r29) -/* 80325138 54 60 2A F4 */ rlwinm r0, r3, 5, 0xb, 0x1a -/* 8032513C 7C 64 02 14 */ add r3, r4, r0 -/* 80325140 80 03 00 1C */ lwz r0, 0x1c(r3) -/* 80325144 7C 03 02 14 */ add r0, r3, r0 -/* 80325148 54 04 D9 7E */ srwi r4, r0, 5 -lbl_8032514C: -/* 8032514C 80 7E 00 04 */ lwz r3, 4(r30) -/* 80325150 38 03 FF FF */ addi r0, r3, -1 -/* 80325154 7C 80 00 38 */ and r0, r4, r0 -/* 80325158 80 7E 00 00 */ lwz r3, 0(r30) -/* 8032515C 54 1D 10 3A */ slwi r29, r0, 2 -/* 80325160 7C 03 E8 2E */ lwzx r0, r3, r29 -/* 80325164 28 00 00 00 */ cmplwi r0, 0 -/* 80325168 40 82 00 10 */ bne lbl_80325178 -/* 8032516C 7F E3 E9 2E */ stwx r31, r3, r29 -/* 80325170 38 60 00 01 */ li r3, 1 -/* 80325174 48 00 00 58 */ b lbl_803251CC -lbl_80325178: -/* 80325178 7C 1C 03 78 */ mr r28, r0 -/* 8032517C 48 00 00 30 */ b lbl_803251AC -lbl_80325180: -/* 80325180 7F 83 E3 78 */ mr r3, r28 -/* 80325184 7F E4 FB 78 */ mr r4, r31 -/* 80325188 4B FE D8 ED */ bl isSame__12J3DMatPacketCFP12J3DMatPacket -/* 8032518C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80325190 41 82 00 18 */ beq lbl_803251A8 -/* 80325194 7F 83 E3 78 */ mr r3, r28 -/* 80325198 80 9F 00 2C */ lwz r4, 0x2c(r31) -/* 8032519C 4B FE D8 69 */ bl addShapePacket__12J3DMatPacketFP14J3DShapePacket -/* 803251A0 38 60 00 00 */ li r3, 0 -/* 803251A4 48 00 00 28 */ b lbl_803251CC -lbl_803251A8: -/* 803251A8 83 9C 00 04 */ lwz r28, 4(r28) -lbl_803251AC: -/* 803251AC 28 1C 00 00 */ cmplwi r28, 0 -/* 803251B0 40 82 FF D0 */ bne lbl_80325180 -/* 803251B4 80 7E 00 00 */ lwz r3, 0(r30) -/* 803251B8 7C 03 E8 2E */ lwzx r0, r3, r29 -/* 803251BC 90 1F 00 04 */ stw r0, 4(r31) -/* 803251C0 80 7E 00 00 */ lwz r3, 0(r30) -/* 803251C4 7F E3 E9 2E */ stwx r31, r3, r29 -/* 803251C8 38 60 00 01 */ li r3, 1 -lbl_803251CC: -/* 803251CC 39 61 00 20 */ addi r11, r1, 0x20 -/* 803251D0 48 03 D0 55 */ bl _restgpr_28 -/* 803251D4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803251D8 7C 08 03 A6 */ mtlr r0 -/* 803251DC 38 21 00 20 */ addi r1, r1, 0x20 -/* 803251E0 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/frameInit__13J3DDrawBufferFv.s b/asm/JSystem/J3DGraphBase/J3DDrawBuffer/frameInit__13J3DDrawBufferFv.s deleted file mode 100644 index be3143fab62..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/frameInit__13J3DDrawBufferFv.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_80325068: -/* 80325068 80 A3 00 04 */ lwz r5, 4(r3) -/* 8032506C 38 80 00 00 */ li r4, 0 -/* 80325070 7C 80 23 78 */ mr r0, r4 -/* 80325074 7C A9 03 A6 */ mtctr r5 -/* 80325078 28 05 00 00 */ cmplwi r5, 0 -/* 8032507C 40 81 00 14 */ ble lbl_80325090 -lbl_80325080: -/* 80325080 80 A3 00 00 */ lwz r5, 0(r3) -/* 80325084 7C 05 21 2E */ stwx r0, r5, r4 -/* 80325088 38 84 00 04 */ addi r4, r4, 4 -/* 8032508C 42 00 FF F4 */ bdnz lbl_80325080 -lbl_80325090: -/* 80325090 38 00 00 00 */ li r0, 0 -/* 80325094 90 03 00 20 */ stw r0, 0x20(r3) -/* 80325098 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASWaveArcLoader/__ct__10JASWaveArcFv.s b/asm/JSystem/JAudio2/JASWaveArcLoader/__ct__10JASWaveArcFv.s deleted file mode 100644 index 296c40e752a..00000000000 --- a/asm/JSystem/JAudio2/JASWaveArcLoader/__ct__10JASWaveArcFv.s +++ /dev/null @@ -1,31 +0,0 @@ -lbl_8029A13C: -/* 8029A13C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8029A140 7C 08 02 A6 */ mflr r0 -/* 8029A144 90 01 00 14 */ stw r0, 0x14(r1) -/* 8029A148 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8029A14C 7C 7F 1B 78 */ mr r31, r3 -/* 8029A150 3C 60 80 3C */ lis r3, __vt__11JASDisposer@ha /* 0x803C7838@ha */ -/* 8029A154 38 03 78 38 */ addi r0, r3, __vt__11JASDisposer@l /* 0x803C7838@l */ -/* 8029A158 90 1F 00 00 */ stw r0, 0(r31) -/* 8029A15C 3C 60 80 3C */ lis r3, __vt__10JASWaveArc@ha /* 0x803C7820@ha */ -/* 8029A160 38 03 78 20 */ addi r0, r3, __vt__10JASWaveArc@l /* 0x803C7820@l */ -/* 8029A164 90 1F 00 00 */ stw r0, 0(r31) -/* 8029A168 7F E4 FB 78 */ mr r4, r31 -/* 8029A16C 38 64 00 04 */ addi r3, r4, 4 -/* 8029A170 4B FF 5F D1 */ bl __ct__7JASHeapFP11JASDisposer -/* 8029A174 38 60 00 00 */ li r3, 0 -/* 8029A178 90 7F 00 48 */ stw r3, 0x48(r31) -/* 8029A17C 90 7F 00 4C */ stw r3, 0x4c(r31) -/* 8029A180 38 00 FF FF */ li r0, -1 -/* 8029A184 90 1F 00 50 */ stw r0, 0x50(r31) -/* 8029A188 90 7F 00 54 */ stw r3, 0x54(r31) -/* 8029A18C B0 7F 00 58 */ sth r3, 0x58(r31) -/* 8029A190 B0 7F 00 5A */ sth r3, 0x5a(r31) -/* 8029A194 38 7F 00 5C */ addi r3, r31, 0x5c -/* 8029A198 48 0A 4E 71 */ bl OSInitMutex -/* 8029A19C 7F E3 FB 78 */ mr r3, r31 -/* 8029A1A0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8029A1A4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8029A1A8 7C 08 03 A6 */ mtlr r0 -/* 8029A1AC 38 21 00 10 */ addi r1, r1, 0x10 -/* 8029A1B0 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASWaveArcLoader/eraseSetup__10JASWaveArcFv.s b/asm/JSystem/JAudio2/JASWaveArcLoader/eraseSetup__10JASWaveArcFv.s deleted file mode 100644 index 766aa0e0efe..00000000000 --- a/asm/JSystem/JAudio2/JASWaveArcLoader/eraseSetup__10JASWaveArcFv.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_8029A2EC: -/* 8029A2EC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8029A2F0 7C 08 02 A6 */ mflr r0 -/* 8029A2F4 90 01 00 24 */ stw r0, 0x24(r1) -/* 8029A2F8 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8029A2FC 7C 7F 1B 78 */ mr r31, r3 -/* 8029A300 38 7F 00 5C */ addi r3, r31, 0x5c -/* 8029A304 90 61 00 08 */ stw r3, 8(r1) -/* 8029A308 48 0A 4D 39 */ bl OSLockMutex -/* 8029A30C 80 1F 00 4C */ lwz r0, 0x4c(r31) -/* 8029A310 2C 00 00 00 */ cmpwi r0, 0 -/* 8029A314 40 82 00 14 */ bne lbl_8029A328 -/* 8029A318 80 61 00 08 */ lwz r3, 8(r1) -/* 8029A31C 48 0A 4E 01 */ bl OSUnlockMutex -/* 8029A320 38 60 00 00 */ li r3, 0 -/* 8029A324 48 00 00 40 */ b lbl_8029A364 -lbl_8029A328: -/* 8029A328 80 1F 00 4C */ lwz r0, 0x4c(r31) -/* 8029A32C 2C 00 00 01 */ cmpwi r0, 1 -/* 8029A330 40 82 00 1C */ bne lbl_8029A34C -/* 8029A334 38 00 00 00 */ li r0, 0 -/* 8029A338 90 1F 00 4C */ stw r0, 0x4c(r31) -/* 8029A33C 80 61 00 08 */ lwz r3, 8(r1) -/* 8029A340 48 0A 4D DD */ bl OSUnlockMutex -/* 8029A344 38 60 00 00 */ li r3, 0 -/* 8029A348 48 00 00 1C */ b lbl_8029A364 -lbl_8029A34C: -/* 8029A34C 38 00 00 00 */ li r0, 0 -/* 8029A350 90 1F 00 48 */ stw r0, 0x48(r31) -/* 8029A354 90 1F 00 4C */ stw r0, 0x4c(r31) -/* 8029A358 80 61 00 08 */ lwz r3, 8(r1) -/* 8029A35C 48 0A 4D C1 */ bl OSUnlockMutex -/* 8029A360 38 60 00 01 */ li r3, 1 -lbl_8029A364: -/* 8029A364 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8029A368 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8029A36C 7C 08 03 A6 */ mtlr r0 -/* 8029A370 38 21 00 20 */ addi r1, r1, 0x20 -/* 8029A374 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASWaveArcLoader/erase__10JASWaveArcFv.s b/asm/JSystem/JAudio2/JASWaveArcLoader/erase__10JASWaveArcFv.s deleted file mode 100644 index 0906b8e4cad..00000000000 --- a/asm/JSystem/JAudio2/JASWaveArcLoader/erase__10JASWaveArcFv.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8029A640: -/* 8029A640 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8029A644 7C 08 02 A6 */ mflr r0 -/* 8029A648 90 01 00 14 */ stw r0, 0x14(r1) -/* 8029A64C 38 63 00 04 */ addi r3, r3, 4 -/* 8029A650 4B FF 5E 95 */ bl free__7JASHeapFv -/* 8029A654 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8029A658 7C 08 03 A6 */ mtlr r0 -/* 8029A65C 38 21 00 10 */ addi r1, r1, 0x10 -/* 8029A660 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASWaveArcLoader/getCurrentDir__16JASWaveArcLoaderFv.s b/asm/JSystem/JAudio2/JASWaveArcLoader/getCurrentDir__16JASWaveArcLoaderFv.s deleted file mode 100644 index bc7d4d67093..00000000000 --- a/asm/JSystem/JAudio2/JASWaveArcLoader/getCurrentDir__16JASWaveArcLoaderFv.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8029A130: -/* 8029A130 3C 60 80 3C */ lis r3, sCurrentDir__16JASWaveArcLoader@ha /* 0x803C77E0@ha */ -/* 8029A134 38 63 77 E0 */ addi r3, r3, sCurrentDir__16JASWaveArcLoader@l /* 0x803C77E0@l */ -/* 8029A138 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASWaveArcLoader/getRootHeap__16JASWaveArcLoaderFv.s b/asm/JSystem/JAudio2/JASWaveArcLoader/getRootHeap__16JASWaveArcLoaderFv.s deleted file mode 100644 index 5a53c75d8c9..00000000000 --- a/asm/JSystem/JAudio2/JASWaveArcLoader/getRootHeap__16JASWaveArcLoaderFv.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_8029A0A0: -/* 8029A0A0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8029A0A4 7C 08 02 A6 */ mflr r0 -/* 8029A0A8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8029A0AC 80 6D 8D 10 */ lwz r3, sAramHeap__16JASWaveArcLoader(r13) -/* 8029A0B0 28 03 00 00 */ cmplwi r3, 0 -/* 8029A0B4 41 82 00 08 */ beq lbl_8029A0BC -/* 8029A0B8 48 00 00 08 */ b lbl_8029A0C0 -lbl_8029A0BC: -/* 8029A0BC 4B FF 6A 4D */ bl getAramHeap__9JASKernelFv -lbl_8029A0C0: -/* 8029A0C0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8029A0C4 7C 08 03 A6 */ mtlr r0 -/* 8029A0C8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8029A0CC 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASWaveArcLoader/loadSetup__10JASWaveArcFUl.s b/asm/JSystem/JAudio2/JASWaveArcLoader/loadSetup__10JASWaveArcFUl.s deleted file mode 100644 index 09d96296f8e..00000000000 --- a/asm/JSystem/JAudio2/JASWaveArcLoader/loadSetup__10JASWaveArcFUl.s +++ /dev/null @@ -1,41 +0,0 @@ -lbl_8029A258: -/* 8029A258 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8029A25C 7C 08 02 A6 */ mflr r0 -/* 8029A260 90 01 00 24 */ stw r0, 0x24(r1) -/* 8029A264 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8029A268 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8029A26C 7C 7E 1B 78 */ mr r30, r3 -/* 8029A270 7C 9F 23 78 */ mr r31, r4 -/* 8029A274 38 7E 00 5C */ addi r3, r30, 0x5c -/* 8029A278 90 61 00 08 */ stw r3, 8(r1) -/* 8029A27C 48 0A 4D C5 */ bl OSLockMutex -/* 8029A280 A0 1E 00 58 */ lhz r0, 0x58(r30) -/* 8029A284 7C 00 F8 40 */ cmplw r0, r31 -/* 8029A288 41 82 00 14 */ beq lbl_8029A29C -/* 8029A28C 80 61 00 08 */ lwz r3, 8(r1) -/* 8029A290 48 0A 4E 8D */ bl OSUnlockMutex -/* 8029A294 38 60 00 00 */ li r3, 0 -/* 8029A298 48 00 00 3C */ b lbl_8029A2D4 -lbl_8029A29C: -/* 8029A29C 80 1E 00 4C */ lwz r0, 0x4c(r30) -/* 8029A2A0 2C 00 00 01 */ cmpwi r0, 1 -/* 8029A2A4 41 82 00 14 */ beq lbl_8029A2B8 -/* 8029A2A8 80 61 00 08 */ lwz r3, 8(r1) -/* 8029A2AC 48 0A 4E 71 */ bl OSUnlockMutex -/* 8029A2B0 38 60 00 00 */ li r3, 0 -/* 8029A2B4 48 00 00 20 */ b lbl_8029A2D4 -lbl_8029A2B8: -/* 8029A2B8 38 00 00 01 */ li r0, 1 -/* 8029A2BC 90 1E 00 48 */ stw r0, 0x48(r30) -/* 8029A2C0 38 00 00 02 */ li r0, 2 -/* 8029A2C4 90 1E 00 4C */ stw r0, 0x4c(r30) -/* 8029A2C8 80 61 00 08 */ lwz r3, 8(r1) -/* 8029A2CC 48 0A 4E 51 */ bl OSUnlockMutex -/* 8029A2D0 38 60 00 01 */ li r3, 1 -lbl_8029A2D4: -/* 8029A2D4 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8029A2D8 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8029A2DC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8029A2E0 7C 08 03 A6 */ mtlr r0 -/* 8029A2E4 38 21 00 20 */ addi r1, r1, 0x20 -/* 8029A2E8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASWaveArcLoader/loadTail__10JASWaveArcFP7JASHeap.s b/asm/JSystem/JAudio2/JASWaveArcLoader/loadTail__10JASWaveArcFP7JASHeap.s deleted file mode 100644 index 91557cd6ea7..00000000000 --- a/asm/JSystem/JAudio2/JASWaveArcLoader/loadTail__10JASWaveArcFP7JASHeap.s +++ /dev/null @@ -1,54 +0,0 @@ -lbl_8029A580: -/* 8029A580 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8029A584 7C 08 02 A6 */ mflr r0 -/* 8029A588 90 01 00 24 */ stw r0, 0x24(r1) -/* 8029A58C 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8029A590 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8029A594 7C 7E 1B 78 */ mr r30, r3 -/* 8029A598 7C 9F 23 78 */ mr r31, r4 -/* 8029A59C 80 03 00 50 */ lwz r0, 0x50(r3) -/* 8029A5A0 2C 00 00 00 */ cmpwi r0, 0 -/* 8029A5A4 40 80 00 0C */ bge lbl_8029A5B0 -/* 8029A5A8 38 60 00 00 */ li r3, 0 -/* 8029A5AC 48 00 00 7C */ b lbl_8029A628 -lbl_8029A5B0: -/* 8029A5B0 38 7E 00 5C */ addi r3, r30, 0x5c -/* 8029A5B4 90 61 00 08 */ stw r3, 8(r1) -/* 8029A5B8 48 0A 4A 89 */ bl OSLockMutex -/* 8029A5BC 80 1E 00 4C */ lwz r0, 0x4c(r30) -/* 8029A5C0 2C 00 00 00 */ cmpwi r0, 0 -/* 8029A5C4 41 82 00 14 */ beq lbl_8029A5D8 -/* 8029A5C8 80 61 00 08 */ lwz r3, 8(r1) -/* 8029A5CC 48 0A 4B 51 */ bl OSUnlockMutex -/* 8029A5D0 38 60 00 00 */ li r3, 0 -/* 8029A5D4 48 00 00 54 */ b lbl_8029A628 -lbl_8029A5D8: -/* 8029A5D8 28 1F 00 00 */ cmplwi r31, 0 -/* 8029A5DC 40 82 00 0C */ bne lbl_8029A5E8 -/* 8029A5E0 4B FF FA C1 */ bl getRootHeap__16JASWaveArcLoaderFv -/* 8029A5E4 7C 7F 1B 78 */ mr r31, r3 -lbl_8029A5E8: -/* 8029A5E8 38 7E 00 04 */ addi r3, r30, 4 -/* 8029A5EC 7F E4 FB 78 */ mr r4, r31 -/* 8029A5F0 80 BE 00 54 */ lwz r5, 0x54(r30) -/* 8029A5F4 4B FF 5E 01 */ bl allocTail__7JASHeapFP7JASHeapUl -/* 8029A5F8 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8029A5FC 40 82 00 14 */ bne lbl_8029A610 -/* 8029A600 80 61 00 08 */ lwz r3, 8(r1) -/* 8029A604 48 0A 4B 19 */ bl OSUnlockMutex -/* 8029A608 38 60 00 00 */ li r3, 0 -/* 8029A60C 48 00 00 1C */ b lbl_8029A628 -lbl_8029A610: -/* 8029A610 7F C3 F3 78 */ mr r3, r30 -/* 8029A614 4B FF FD F1 */ bl sendLoadCmd__10JASWaveArcFv -/* 8029A618 7C 7F 1B 78 */ mr r31, r3 -/* 8029A61C 80 61 00 08 */ lwz r3, 8(r1) -/* 8029A620 48 0A 4A FD */ bl OSUnlockMutex -/* 8029A624 7F E3 FB 78 */ mr r3, r31 -lbl_8029A628: -/* 8029A628 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8029A62C 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8029A630 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8029A634 7C 08 03 A6 */ mtlr r0 -/* 8029A638 38 21 00 20 */ addi r1, r1, 0x20 -/* 8029A63C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASWaveArcLoader/loadToAramCallback__10JASWaveArcFPv.s b/asm/JSystem/JAudio2/JASWaveArcLoader/loadToAramCallback__10JASWaveArcFPv.s deleted file mode 100644 index ab684a0dd28..00000000000 --- a/asm/JSystem/JAudio2/JASWaveArcLoader/loadToAramCallback__10JASWaveArcFPv.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_8029A378: -/* 8029A378 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8029A37C 7C 08 02 A6 */ mflr r0 -/* 8029A380 90 01 00 14 */ stw r0, 0x14(r1) -/* 8029A384 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8029A388 93 C1 00 08 */ stw r30, 8(r1) -/* 8029A38C 7C 7E 1B 78 */ mr r30, r3 -/* 8029A390 83 E3 00 00 */ lwz r31, 0(r3) -/* 8029A394 80 63 00 04 */ lwz r3, 4(r3) -/* 8029A398 80 9E 00 08 */ lwz r4, 8(r30) -/* 8029A39C 38 A0 00 00 */ li r5, 0 -/* 8029A3A0 38 C0 00 00 */ li r6, 0 -/* 8029A3A4 38 E0 00 00 */ li r7, 0 -/* 8029A3A8 39 00 00 00 */ li r8, 0 -/* 8029A3AC 48 04 04 C9 */ bl loadToAram__16JKRDvdAramRipperFlUl15JKRExpandSwitchUlUlPUl -/* 8029A3B0 28 03 00 00 */ cmplwi r3, 0 -/* 8029A3B4 41 82 00 38 */ beq lbl_8029A3EC -/* 8029A3B8 A0 7F 00 5A */ lhz r3, 0x5a(r31) -/* 8029A3BC 38 03 FF FF */ addi r0, r3, -1 -/* 8029A3C0 B0 1F 00 5A */ sth r0, 0x5a(r31) -/* 8029A3C4 7F E3 FB 78 */ mr r3, r31 -/* 8029A3C8 80 9E 00 0C */ lwz r4, 0xc(r30) -/* 8029A3CC 4B FF FE 8D */ bl loadSetup__10JASWaveArcFUl -/* 8029A3D0 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8029A3D4 41 82 00 18 */ beq lbl_8029A3EC -/* 8029A3D8 7F E3 FB 78 */ mr r3, r31 -/* 8029A3DC 81 9F 00 00 */ lwz r12, 0(r31) -/* 8029A3E0 81 8C 00 10 */ lwz r12, 0x10(r12) -/* 8029A3E4 7D 89 03 A6 */ mtctr r12 -/* 8029A3E8 4E 80 04 21 */ bctrl -lbl_8029A3EC: -/* 8029A3EC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8029A3F0 83 C1 00 08 */ lwz r30, 8(r1) -/* 8029A3F4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8029A3F8 7C 08 03 A6 */ mtlr r0 -/* 8029A3FC 38 21 00 10 */ addi r1, r1, 0x10 -/* 8029A400 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASWaveArcLoader/load__10JASWaveArcFP7JASHeap.s b/asm/JSystem/JAudio2/JASWaveArcLoader/load__10JASWaveArcFP7JASHeap.s deleted file mode 100644 index d4ebaf56715..00000000000 --- a/asm/JSystem/JAudio2/JASWaveArcLoader/load__10JASWaveArcFP7JASHeap.s +++ /dev/null @@ -1,54 +0,0 @@ -lbl_8029A4C0: -/* 8029A4C0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8029A4C4 7C 08 02 A6 */ mflr r0 -/* 8029A4C8 90 01 00 24 */ stw r0, 0x24(r1) -/* 8029A4CC 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8029A4D0 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8029A4D4 7C 7E 1B 78 */ mr r30, r3 -/* 8029A4D8 7C 9F 23 78 */ mr r31, r4 -/* 8029A4DC 80 03 00 50 */ lwz r0, 0x50(r3) -/* 8029A4E0 2C 00 00 00 */ cmpwi r0, 0 -/* 8029A4E4 40 80 00 0C */ bge lbl_8029A4F0 -/* 8029A4E8 38 60 00 00 */ li r3, 0 -/* 8029A4EC 48 00 00 7C */ b lbl_8029A568 -lbl_8029A4F0: -/* 8029A4F0 38 7E 00 5C */ addi r3, r30, 0x5c -/* 8029A4F4 90 61 00 08 */ stw r3, 8(r1) -/* 8029A4F8 48 0A 4B 49 */ bl OSLockMutex -/* 8029A4FC 80 1E 00 4C */ lwz r0, 0x4c(r30) -/* 8029A500 2C 00 00 00 */ cmpwi r0, 0 -/* 8029A504 41 82 00 14 */ beq lbl_8029A518 -/* 8029A508 80 61 00 08 */ lwz r3, 8(r1) -/* 8029A50C 48 0A 4C 11 */ bl OSUnlockMutex -/* 8029A510 38 60 00 00 */ li r3, 0 -/* 8029A514 48 00 00 54 */ b lbl_8029A568 -lbl_8029A518: -/* 8029A518 28 1F 00 00 */ cmplwi r31, 0 -/* 8029A51C 40 82 00 0C */ bne lbl_8029A528 -/* 8029A520 4B FF FB 81 */ bl getRootHeap__16JASWaveArcLoaderFv -/* 8029A524 7C 7F 1B 78 */ mr r31, r3 -lbl_8029A528: -/* 8029A528 38 7E 00 04 */ addi r3, r30, 4 -/* 8029A52C 7F E4 FB 78 */ mr r4, r31 -/* 8029A530 80 BE 00 54 */ lwz r5, 0x54(r30) -/* 8029A534 4B FF 5C E9 */ bl alloc__7JASHeapFP7JASHeapUl -/* 8029A538 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8029A53C 40 82 00 14 */ bne lbl_8029A550 -/* 8029A540 80 61 00 08 */ lwz r3, 8(r1) -/* 8029A544 48 0A 4B D9 */ bl OSUnlockMutex -/* 8029A548 38 60 00 00 */ li r3, 0 -/* 8029A54C 48 00 00 1C */ b lbl_8029A568 -lbl_8029A550: -/* 8029A550 7F C3 F3 78 */ mr r3, r30 -/* 8029A554 4B FF FE B1 */ bl sendLoadCmd__10JASWaveArcFv -/* 8029A558 7C 7F 1B 78 */ mr r31, r3 -/* 8029A55C 80 61 00 08 */ lwz r3, 8(r1) -/* 8029A560 48 0A 4B BD */ bl OSUnlockMutex -/* 8029A564 7F E3 FB 78 */ mr r3, r31 -lbl_8029A568: -/* 8029A568 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8029A56C 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8029A570 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8029A574 7C 08 03 A6 */ mtlr r0 -/* 8029A578 38 21 00 20 */ addi r1, r1, 0x20 -/* 8029A57C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASWaveArcLoader/onDispose__10JASWaveArcFv.s b/asm/JSystem/JAudio2/JASWaveArcLoader/onDispose__10JASWaveArcFv.s deleted file mode 100644 index 296a50d701d..00000000000 --- a/asm/JSystem/JAudio2/JASWaveArcLoader/onDispose__10JASWaveArcFv.s +++ /dev/null @@ -1,20 +0,0 @@ -lbl_8029A664: -/* 8029A664 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8029A668 7C 08 02 A6 */ mflr r0 -/* 8029A66C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8029A670 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8029A674 7C 7F 1B 78 */ mr r31, r3 -/* 8029A678 4B FF FC 75 */ bl eraseSetup__10JASWaveArcFv -/* 8029A67C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8029A680 41 82 00 18 */ beq lbl_8029A698 -/* 8029A684 7F E3 FB 78 */ mr r3, r31 -/* 8029A688 81 9F 00 00 */ lwz r12, 0(r31) -/* 8029A68C 81 8C 00 14 */ lwz r12, 0x14(r12) -/* 8029A690 7D 89 03 A6 */ mtctr r12 -/* 8029A694 4E 80 04 21 */ bctrl -lbl_8029A698: -/* 8029A698 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8029A69C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8029A6A0 7C 08 03 A6 */ mtlr r0 -/* 8029A6A4 38 21 00 10 */ addi r1, r1, 0x10 -/* 8029A6A8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASWaveArcLoader/sendLoadCmd__10JASWaveArcFv.s b/asm/JSystem/JAudio2/JASWaveArcLoader/sendLoadCmd__10JASWaveArcFv.s deleted file mode 100644 index 1eeb7010eb9..00000000000 --- a/asm/JSystem/JAudio2/JASWaveArcLoader/sendLoadCmd__10JASWaveArcFv.s +++ /dev/null @@ -1,50 +0,0 @@ -lbl_8029A404: -/* 8029A404 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8029A408 7C 08 02 A6 */ mflr r0 -/* 8029A40C 90 01 00 34 */ stw r0, 0x34(r1) -/* 8029A410 93 E1 00 2C */ stw r31, 0x2c(r1) -/* 8029A414 7C 7F 1B 78 */ mr r31, r3 -/* 8029A418 38 7F 00 5C */ addi r3, r31, 0x5c -/* 8029A41C 90 61 00 08 */ stw r3, 8(r1) -/* 8029A420 48 0A 4C 21 */ bl OSLockMutex -/* 8029A424 38 00 00 00 */ li r0, 0 -/* 8029A428 90 1F 00 48 */ stw r0, 0x48(r31) -/* 8029A42C 38 00 00 01 */ li r0, 1 -/* 8029A430 90 1F 00 4C */ stw r0, 0x4c(r31) -/* 8029A434 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8029A438 80 1F 00 50 */ lwz r0, 0x50(r31) -/* 8029A43C 90 01 00 10 */ stw r0, 0x10(r1) -/* 8029A440 80 1F 00 3C */ lwz r0, 0x3c(r31) -/* 8029A444 90 01 00 14 */ stw r0, 0x14(r1) -/* 8029A448 A0 7F 00 58 */ lhz r3, 0x58(r31) -/* 8029A44C 38 03 00 01 */ addi r0, r3, 1 -/* 8029A450 B0 1F 00 58 */ sth r0, 0x58(r31) -/* 8029A454 54 00 04 3E */ clrlwi r0, r0, 0x10 -/* 8029A458 90 01 00 18 */ stw r0, 0x18(r1) -/* 8029A45C A0 7F 00 5A */ lhz r3, 0x5a(r31) -/* 8029A460 38 03 00 01 */ addi r0, r3, 1 -/* 8029A464 B0 1F 00 5A */ sth r0, 0x5a(r31) -/* 8029A468 4B FF 5A 95 */ bl getThreadPointer__6JASDvdFv -/* 8029A46C 3C 80 80 2A */ lis r4, loadToAramCallback__10JASWaveArcFPv@ha /* 0x8029A378@ha */ -/* 8029A470 38 84 A3 78 */ addi r4, r4, loadToAramCallback__10JASWaveArcFPv@l /* 0x8029A378@l */ -/* 8029A474 38 A1 00 0C */ addi r5, r1, 0xc -/* 8029A478 38 C0 00 10 */ li r6, 0x10 -/* 8029A47C 4B FF 56 E1 */ bl sendCmdMsg__13JASTaskThreadFPFPv_vPCvUl -/* 8029A480 2C 03 00 00 */ cmpwi r3, 0 -/* 8029A484 40 82 00 1C */ bne lbl_8029A4A0 -/* 8029A488 38 7F 00 04 */ addi r3, r31, 4 -/* 8029A48C 4B FF 60 59 */ bl free__7JASHeapFv -/* 8029A490 80 61 00 08 */ lwz r3, 8(r1) -/* 8029A494 48 0A 4C 89 */ bl OSUnlockMutex -/* 8029A498 38 60 00 00 */ li r3, 0 -/* 8029A49C 48 00 00 10 */ b lbl_8029A4AC -lbl_8029A4A0: -/* 8029A4A0 80 61 00 08 */ lwz r3, 8(r1) -/* 8029A4A4 48 0A 4C 79 */ bl OSUnlockMutex -/* 8029A4A8 38 60 00 01 */ li r3, 1 -lbl_8029A4AC: -/* 8029A4AC 83 E1 00 2C */ lwz r31, 0x2c(r1) -/* 8029A4B0 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8029A4B4 7C 08 03 A6 */ mtlr r0 -/* 8029A4B8 38 21 00 30 */ addi r1, r1, 0x30 -/* 8029A4BC 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASWaveArcLoader/setCurrentDir__16JASWaveArcLoaderFPCc.s b/asm/JSystem/JAudio2/JASWaveArcLoader/setCurrentDir__16JASWaveArcLoaderFPCc.s deleted file mode 100644 index a893cdd7f0c..00000000000 --- a/asm/JSystem/JAudio2/JASWaveArcLoader/setCurrentDir__16JASWaveArcLoaderFPCc.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_8029A0D0: -/* 8029A0D0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8029A0D4 7C 08 02 A6 */ mflr r0 -/* 8029A0D8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8029A0DC 7C 64 1B 78 */ mr r4, r3 -/* 8029A0E0 3C 60 80 3C */ lis r3, sCurrentDir__16JASWaveArcLoader@ha /* 0x803C77E0@ha */ -/* 8029A0E4 38 63 77 E0 */ addi r3, r3, sCurrentDir__16JASWaveArcLoader@l /* 0x803C77E0@l */ -/* 8029A0E8 48 0C EA 45 */ bl strcpy -/* 8029A0EC 3C 60 80 3C */ lis r3, sCurrentDir__16JASWaveArcLoader@ha /* 0x803C77E0@ha */ -/* 8029A0F0 38 63 77 E0 */ addi r3, r3, sCurrentDir__16JASWaveArcLoader@l /* 0x803C77E0@l */ -/* 8029A0F4 48 0C EA F1 */ bl strlen -/* 8029A0F8 3C 80 80 3C */ lis r4, sCurrentDir__16JASWaveArcLoader@ha /* 0x803C77E0@ha */ -/* 8029A0FC 38 A4 77 E0 */ addi r5, r4, sCurrentDir__16JASWaveArcLoader@l /* 0x803C77E0@l */ -/* 8029A100 7C 85 1A 14 */ add r4, r5, r3 -/* 8029A104 88 04 FF FF */ lbz r0, -1(r4) -/* 8029A108 2C 00 00 2F */ cmpwi r0, 0x2f -/* 8029A10C 41 82 00 14 */ beq lbl_8029A120 -/* 8029A110 38 00 00 2F */ li r0, 0x2f -/* 8029A114 7C 05 19 AE */ stbx r0, r5, r3 -/* 8029A118 38 00 00 00 */ li r0, 0 -/* 8029A11C 98 04 00 01 */ stb r0, 1(r4) -lbl_8029A120: -/* 8029A120 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8029A124 7C 08 03 A6 */ mtlr r0 -/* 8029A128 38 21 00 10 */ addi r1, r1, 0x10 -/* 8029A12C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASWaveArcLoader/setEntryNum__10JASWaveArcFl.s b/asm/JSystem/JAudio2/JASWaveArcLoader/setEntryNum__10JASWaveArcFl.s deleted file mode 100644 index 760480fceab..00000000000 --- a/asm/JSystem/JAudio2/JASWaveArcLoader/setEntryNum__10JASWaveArcFl.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_8029A6AC: -/* 8029A6AC 94 21 FF B0 */ stwu r1, -0x50(r1) -/* 8029A6B0 7C 08 02 A6 */ mflr r0 -/* 8029A6B4 90 01 00 54 */ stw r0, 0x54(r1) -/* 8029A6B8 93 E1 00 4C */ stw r31, 0x4c(r1) -/* 8029A6BC 93 C1 00 48 */ stw r30, 0x48(r1) -/* 8029A6C0 7C 7E 1B 78 */ mr r30, r3 -/* 8029A6C4 7C 9F 23 79 */ or. r31, r4, r4 -/* 8029A6C8 41 80 00 2C */ blt lbl_8029A6F4 -/* 8029A6CC 7F E3 FB 78 */ mr r3, r31 -/* 8029A6D0 38 81 00 08 */ addi r4, r1, 8 -/* 8029A6D4 48 0A E1 49 */ bl DVDFastOpen -/* 8029A6D8 2C 03 00 00 */ cmpwi r3, 0 -/* 8029A6DC 41 82 00 18 */ beq lbl_8029A6F4 -/* 8029A6E0 80 01 00 3C */ lwz r0, 0x3c(r1) -/* 8029A6E4 90 1E 00 54 */ stw r0, 0x54(r30) -/* 8029A6E8 38 61 00 08 */ addi r3, r1, 8 -/* 8029A6EC 48 0A E2 6D */ bl DVDClose -/* 8029A6F0 93 FE 00 50 */ stw r31, 0x50(r30) -lbl_8029A6F4: -/* 8029A6F4 83 E1 00 4C */ lwz r31, 0x4c(r1) -/* 8029A6F8 83 C1 00 48 */ lwz r30, 0x48(r1) -/* 8029A6FC 80 01 00 54 */ lwz r0, 0x54(r1) -/* 8029A700 7C 08 03 A6 */ mtlr r0 -/* 8029A704 38 21 00 50 */ addi r1, r1, 0x50 -/* 8029A708 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JASWaveArcLoader/setFileName__10JASWaveArcFPCc.s b/asm/JSystem/JAudio2/JASWaveArcLoader/setFileName__10JASWaveArcFPCc.s deleted file mode 100644 index 0161b358b67..00000000000 --- a/asm/JSystem/JAudio2/JASWaveArcLoader/setFileName__10JASWaveArcFPCc.s +++ /dev/null @@ -1,45 +0,0 @@ -lbl_8029A70C: -/* 8029A70C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8029A710 7C 08 02 A6 */ mflr r0 -/* 8029A714 90 01 00 24 */ stw r0, 0x24(r1) -/* 8029A718 39 61 00 20 */ addi r11, r1, 0x20 -/* 8029A71C 48 0C 7A B9 */ bl _savegpr_27 -/* 8029A720 7C 7B 1B 78 */ mr r27, r3 -/* 8029A724 7C 9C 23 78 */ mr r28, r4 -/* 8029A728 4B FF FA 09 */ bl getCurrentDir__16JASWaveArcLoaderFv -/* 8029A72C 7C 7E 1B 78 */ mr r30, r3 -/* 8029A730 48 0C E4 B5 */ bl strlen -/* 8029A734 7C 7F 1B 78 */ mr r31, r3 -/* 8029A738 7F 83 E3 78 */ mr r3, r28 -/* 8029A73C 48 0C E4 A9 */ bl strlen -/* 8029A740 7F FF 1A 14 */ add r31, r31, r3 -/* 8029A744 4B FF 63 7D */ bl getSystemHeap__9JASKernelFv -/* 8029A748 7C 64 1B 78 */ mr r4, r3 -/* 8029A74C 38 7F 00 01 */ addi r3, r31, 1 -/* 8029A750 38 A0 FF FC */ li r5, -4 -/* 8029A754 48 03 45 BD */ bl __nwa__FUlP7JKRHeapi -/* 8029A758 7C 7D 1B 78 */ mr r29, r3 -/* 8029A75C 7F C4 F3 78 */ mr r4, r30 -/* 8029A760 48 0C E3 CD */ bl strcpy -/* 8029A764 7F A3 EB 78 */ mr r3, r29 -/* 8029A768 7F 84 E3 78 */ mr r4, r28 -/* 8029A76C 48 0C E3 51 */ bl strcat -/* 8029A770 38 00 00 00 */ li r0, 0 -/* 8029A774 7C 1D F9 AE */ stbx r0, r29, r31 -/* 8029A778 7F A3 EB 78 */ mr r3, r29 -/* 8029A77C 48 0A DD AD */ bl DVDConvertPathToEntrynum -/* 8029A780 7C 7E 1B 78 */ mr r30, r3 -/* 8029A784 7F A3 EB 78 */ mr r3, r29 -/* 8029A788 48 03 45 D9 */ bl __dla__FPv -/* 8029A78C 2C 1E 00 00 */ cmpwi r30, 0 -/* 8029A790 41 80 00 10 */ blt lbl_8029A7A0 -/* 8029A794 7F 63 DB 78 */ mr r3, r27 -/* 8029A798 7F C4 F3 78 */ mr r4, r30 -/* 8029A79C 4B FF FF 11 */ bl setEntryNum__10JASWaveArcFl -lbl_8029A7A0: -/* 8029A7A0 39 61 00 20 */ addi r11, r1, 0x20 -/* 8029A7A4 48 0C 7A 7D */ bl _restgpr_27 -/* 8029A7A8 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8029A7AC 7C 08 03 A6 */ mtlr r0 -/* 8029A7B0 38 21 00 20 */ addi r1, r1, 0x20 -/* 8029A7B4 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAUBankTable/func_802A4A80.s b/asm/JSystem/JAudio2/JAUBankTable/func_802A4A80.s deleted file mode 100644 index 87465e09444..00000000000 --- a/asm/JSystem/JAudio2/JAUBankTable/func_802A4A80.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_802A4A80: -/* 802A4A80 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802A4A84 7C 08 02 A6 */ mflr r0 -/* 802A4A88 90 01 00 14 */ stw r0, 0x14(r1) -/* 802A4A8C 48 03 74 C1 */ bl append__10JSUPtrListFP10JSUPtrLink -/* 802A4A90 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802A4A94 7C 08 03 A6 */ mtlr r0 -/* 802A4A98 38 21 00 10 */ addi r1, r1, 0x10 -/* 802A4A9C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAUBankTable/getBank__12JAUBankTableCFUl.s b/asm/JSystem/JAudio2/JAUBankTable/getBank__12JAUBankTableCFUl.s deleted file mode 100644 index 7af9ecdc757..00000000000 --- a/asm/JSystem/JAudio2/JAUBankTable/getBank__12JAUBankTableCFUl.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_802A4AA0: -/* 802A4AA0 80 03 00 08 */ lwz r0, 8(r3) -/* 802A4AA4 7C 04 00 40 */ cmplw r4, r0 -/* 802A4AA8 41 80 00 0C */ blt lbl_802A4AB4 -/* 802A4AAC 38 60 00 00 */ li r3, 0 -/* 802A4AB0 4E 80 00 20 */ blr -lbl_802A4AB4: -/* 802A4AB4 80 63 00 04 */ lwz r3, 4(r3) -/* 802A4AB8 54 80 10 3A */ slwi r0, r4, 2 -/* 802A4ABC 7C 63 00 2E */ lwzx r3, r3, r0 -/* 802A4AC0 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAUStreamFileTable/__ct__18JAUStreamFileTableFv.s b/asm/JSystem/JAudio2/JAUStreamFileTable/__ct__18JAUStreamFileTableFv.s deleted file mode 100644 index c798cef7c3b..00000000000 --- a/asm/JSystem/JAudio2/JAUStreamFileTable/__ct__18JAUStreamFileTableFv.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_802A7420: -/* 802A7420 38 00 00 00 */ li r0, 0 -/* 802A7424 90 03 00 00 */ stw r0, 0(r3) -/* 802A7428 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAUStreamFileTable/__dt__32JAUStreamDataMgr_StreamFileTableFv.s b/asm/JSystem/JAudio2/JAUStreamFileTable/__dt__32JAUStreamDataMgr_StreamFileTableFv.s deleted file mode 100644 index 8253a68c0d6..00000000000 --- a/asm/JSystem/JAudio2/JAUStreamFileTable/__dt__32JAUStreamDataMgr_StreamFileTableFv.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_802A74E8: -/* 802A74E8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802A74EC 7C 08 02 A6 */ mflr r0 -/* 802A74F0 90 01 00 14 */ stw r0, 0x14(r1) -/* 802A74F4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802A74F8 93 C1 00 08 */ stw r30, 8(r1) -/* 802A74FC 7C 7E 1B 79 */ or. r30, r3, r3 -/* 802A7500 7C 9F 23 78 */ mr r31, r4 -/* 802A7504 41 82 00 28 */ beq lbl_802A752C -/* 802A7508 3C 80 80 3D */ lis r4, __vt__32JAUStreamDataMgr_StreamFileTable@ha /* 0x803C9B50@ha */ -/* 802A750C 38 04 9B 50 */ addi r0, r4, __vt__32JAUStreamDataMgr_StreamFileTable@l /* 0x803C9B50@l */ -/* 802A7510 90 1E 00 00 */ stw r0, 0(r30) -/* 802A7514 38 80 00 00 */ li r4, 0 -/* 802A7518 4B FF C5 C1 */ bl __dt__16JAIStreamDataMgrFv -/* 802A751C 7F E0 07 35 */ extsh. r0, r31 -/* 802A7520 40 81 00 0C */ ble lbl_802A752C -/* 802A7524 7F C3 F3 78 */ mr r3, r30 -/* 802A7528 48 02 78 15 */ bl __dl__FPv -lbl_802A752C: -/* 802A752C 7F C3 F3 78 */ mr r3, r30 -/* 802A7530 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802A7534 83 C1 00 08 */ lwz r30, 8(r1) -/* 802A7538 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802A753C 7C 08 03 A6 */ mtlr r0 -/* 802A7540 38 21 00 10 */ addi r1, r1, 0x10 -/* 802A7544 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAUStreamFileTable/getFilePath__18JAUStreamFileTableCFi.s b/asm/JSystem/JAudio2/JAUStreamFileTable/getFilePath__18JAUStreamFileTableCFi.s deleted file mode 100644 index ededc420a38..00000000000 --- a/asm/JSystem/JAudio2/JAUStreamFileTable/getFilePath__18JAUStreamFileTableCFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_802A7484: -/* 802A7484 80 A3 00 00 */ lwz r5, 0(r3) -/* 802A7488 28 05 00 00 */ cmplwi r5, 0 -/* 802A748C 40 82 00 0C */ bne lbl_802A7498 -/* 802A7490 38 60 00 00 */ li r3, 0 -/* 802A7494 4E 80 00 20 */ blr -lbl_802A7498: -/* 802A7498 54 83 10 3A */ slwi r3, r4, 2 -/* 802A749C 38 03 00 08 */ addi r0, r3, 8 -/* 802A74A0 7C 05 00 2E */ lwzx r0, r5, r0 -/* 802A74A4 7C 65 02 14 */ add r3, r5, r0 -/* 802A74A8 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAUStreamFileTable/getNumFiles__18JAUStreamFileTableCFv.s b/asm/JSystem/JAudio2/JAUStreamFileTable/getNumFiles__18JAUStreamFileTableCFv.s deleted file mode 100644 index 8ba0ed97fa3..00000000000 --- a/asm/JSystem/JAudio2/JAUStreamFileTable/getNumFiles__18JAUStreamFileTableCFv.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_802A7478: -/* 802A7478 80 63 00 00 */ lwz r3, 0(r3) -/* 802A747C 80 63 00 04 */ lwz r3, 4(r3) -/* 802A7480 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAUStreamFileTable/getStreamFileEntry__32JAUStreamDataMgr_StreamFileTableF10JAISoundID.s b/asm/JSystem/JAudio2/JAUStreamFileTable/getStreamFileEntry__32JAUStreamDataMgr_StreamFileTableF10JAISoundID.s deleted file mode 100644 index 7284c2890fa..00000000000 --- a/asm/JSystem/JAudio2/JAUStreamFileTable/getStreamFileEntry__32JAUStreamDataMgr_StreamFileTableF10JAISoundID.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_802A74AC: -/* 802A74AC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802A74B0 7C 08 02 A6 */ mflr r0 -/* 802A74B4 90 01 00 14 */ stw r0, 0x14(r1) -/* 802A74B8 A0 84 00 02 */ lhz r4, 2(r4) -/* 802A74BC 38 63 00 04 */ addi r3, r3, 4 -/* 802A74C0 4B FF FF C5 */ bl getFilePath__18JAUStreamFileTableCFi -/* 802A74C4 28 03 00 00 */ cmplwi r3, 0 -/* 802A74C8 40 82 00 0C */ bne lbl_802A74D4 -/* 802A74CC 38 60 FF FF */ li r3, -1 -/* 802A74D0 48 00 00 08 */ b lbl_802A74D8 -lbl_802A74D4: -/* 802A74D4 48 0A 10 55 */ bl DVDConvertPathToEntrynum -lbl_802A74D8: -/* 802A74D8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802A74DC 7C 08 03 A6 */ mtlr r0 -/* 802A74E0 38 21 00 10 */ addi r1, r1, 0x10 -/* 802A74E4 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAUStreamFileTable/init__18JAUStreamFileTableFPCv.s b/asm/JSystem/JAudio2/JAUStreamFileTable/init__18JAUStreamFileTableFPCv.s deleted file mode 100644 index 046b6c26b9c..00000000000 --- a/asm/JSystem/JAudio2/JAUStreamFileTable/init__18JAUStreamFileTableFPCv.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_802A742C: -/* 802A742C 28 04 00 00 */ cmplwi r4, 0 -/* 802A7430 40 82 00 10 */ bne lbl_802A7440 -/* 802A7434 38 00 00 00 */ li r0, 0 -/* 802A7438 90 03 00 00 */ stw r0, 0(r3) -/* 802A743C 4E 80 00 20 */ blr -lbl_802A7440: -/* 802A7440 88 04 00 00 */ lbz r0, 0(r4) -/* 802A7444 2C 00 00 62 */ cmpwi r0, 0x62 -/* 802A7448 4C 82 00 20 */ bnelr -/* 802A744C 88 04 00 01 */ lbz r0, 1(r4) -/* 802A7450 2C 00 00 73 */ cmpwi r0, 0x73 -/* 802A7454 4C 82 00 20 */ bnelr -/* 802A7458 88 04 00 02 */ lbz r0, 2(r4) -/* 802A745C 2C 00 00 66 */ cmpwi r0, 0x66 -/* 802A7460 4C 82 00 20 */ bnelr -/* 802A7464 88 04 00 03 */ lbz r0, 3(r4) -/* 802A7468 2C 00 00 74 */ cmpwi r0, 0x74 -/* 802A746C 4C 82 00 20 */ bnelr -/* 802A7470 90 83 00 00 */ stw r4, 0(r3) -/* 802A7474 4E 80 00 20 */ blr diff --git a/asm/MSL_C/MSL_Common/Src/arith/abs.s b/asm/MSL_C/MSL_Common/Src/arith/abs.s deleted file mode 100644 index fa847e3691d..00000000000 --- a/asm/MSL_C/MSL_Common/Src/arith/abs.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_803650D0: -/* 803650D0 7C 64 FE 70 */ srawi r4, r3, 0x1f -/* 803650D4 7C 80 1A 78 */ xor r0, r4, r3 -/* 803650D8 7C 64 00 50 */ subf r3, r4, r0 -/* 803650DC 4E 80 00 20 */ blr diff --git a/asm/MSL_C/MSL_Common/Src/buffer_io/__flush_buffer.s b/asm/MSL_C/MSL_Common/Src/buffer_io/__flush_buffer.s deleted file mode 100644 index c1e203a17b2..00000000000 --- a/asm/MSL_C/MSL_Common/Src/buffer_io/__flush_buffer.s +++ /dev/null @@ -1,54 +0,0 @@ -lbl_803650E0: -/* 803650E0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803650E4 7C 08 02 A6 */ mflr r0 -/* 803650E8 90 01 00 14 */ stw r0, 0x14(r1) -/* 803650EC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 803650F0 7C 7F 1B 78 */ mr r31, r3 -/* 803650F4 93 C1 00 08 */ stw r30, 8(r1) -/* 803650F8 7C 9E 23 78 */ mr r30, r4 -/* 803650FC 80 63 00 1C */ lwz r3, 0x1c(r3) -/* 80365100 80 1F 00 24 */ lwz r0, 0x24(r31) -/* 80365104 7C 03 00 51 */ subf. r0, r3, r0 -/* 80365108 41 82 00 50 */ beq lbl_80365158 -/* 8036510C 90 1F 00 28 */ stw r0, 0x28(r31) -/* 80365110 38 BF 00 28 */ addi r5, r31, 0x28 -/* 80365114 81 9F 00 40 */ lwz r12, 0x40(r31) -/* 80365118 80 7F 00 00 */ lwz r3, 0(r31) -/* 8036511C 80 9F 00 1C */ lwz r4, 0x1c(r31) -/* 80365120 80 DF 00 48 */ lwz r6, 0x48(r31) -/* 80365124 7D 89 03 A6 */ mtctr r12 -/* 80365128 4E 80 04 21 */ bctrl -/* 8036512C 28 1E 00 00 */ cmplwi r30, 0 -/* 80365130 41 82 00 0C */ beq lbl_8036513C -/* 80365134 80 1F 00 28 */ lwz r0, 0x28(r31) -/* 80365138 90 1E 00 00 */ stw r0, 0(r30) -lbl_8036513C: -/* 8036513C 2C 03 00 00 */ cmpwi r3, 0 -/* 80365140 41 82 00 08 */ beq lbl_80365148 -/* 80365144 48 00 00 48 */ b lbl_8036518C -lbl_80365148: -/* 80365148 80 7F 00 18 */ lwz r3, 0x18(r31) -/* 8036514C 80 1F 00 28 */ lwz r0, 0x28(r31) -/* 80365150 7C 03 02 14 */ add r0, r3, r0 -/* 80365154 90 1F 00 18 */ stw r0, 0x18(r31) -lbl_80365158: -/* 80365158 80 1F 00 1C */ lwz r0, 0x1c(r31) -/* 8036515C 38 60 00 00 */ li r3, 0 -/* 80365160 90 1F 00 24 */ stw r0, 0x24(r31) -/* 80365164 80 1F 00 20 */ lwz r0, 0x20(r31) -/* 80365168 90 1F 00 28 */ stw r0, 0x28(r31) -/* 8036516C 80 BF 00 18 */ lwz r5, 0x18(r31) -/* 80365170 80 9F 00 2C */ lwz r4, 0x2c(r31) -/* 80365174 80 1F 00 28 */ lwz r0, 0x28(r31) -/* 80365178 7C A4 20 38 */ and r4, r5, r4 -/* 8036517C 7C 04 00 50 */ subf r0, r4, r0 -/* 80365180 90 1F 00 28 */ stw r0, 0x28(r31) -/* 80365184 80 1F 00 18 */ lwz r0, 0x18(r31) -/* 80365188 90 1F 00 34 */ stw r0, 0x34(r31) -lbl_8036518C: -/* 8036518C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80365190 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80365194 83 C1 00 08 */ lwz r30, 8(r1) -/* 80365198 7C 08 03 A6 */ mtlr r0 -/* 8036519C 38 21 00 10 */ addi r1, r1, 0x10 -/* 803651A0 4E 80 00 20 */ blr diff --git a/asm/MSL_C/MSL_Common/Src/buffer_io/__prep_buffer.s b/asm/MSL_C/MSL_Common/Src/buffer_io/__prep_buffer.s deleted file mode 100644 index ddc059733d8..00000000000 --- a/asm/MSL_C/MSL_Common/Src/buffer_io/__prep_buffer.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_803651A4: -/* 803651A4 80 03 00 1C */ lwz r0, 0x1c(r3) -/* 803651A8 90 03 00 24 */ stw r0, 0x24(r3) -/* 803651AC 80 03 00 20 */ lwz r0, 0x20(r3) -/* 803651B0 90 03 00 28 */ stw r0, 0x28(r3) -/* 803651B4 80 A3 00 18 */ lwz r5, 0x18(r3) -/* 803651B8 80 83 00 2C */ lwz r4, 0x2c(r3) -/* 803651BC 80 03 00 28 */ lwz r0, 0x28(r3) -/* 803651C0 7C A4 20 38 */ and r4, r5, r4 -/* 803651C4 7C 04 00 50 */ subf r0, r4, r0 -/* 803651C8 90 03 00 28 */ stw r0, 0x28(r3) -/* 803651CC 80 03 00 18 */ lwz r0, 0x18(r3) -/* 803651D0 90 03 00 34 */ stw r0, 0x34(r3) -/* 803651D4 4E 80 00 20 */ blr diff --git a/asm/MSL_C/MSL_Common/Src/direct_io/__fwrite.s b/asm/MSL_C/MSL_Common/Src/direct_io/__fwrite.s deleted file mode 100644 index 8c3abfafbe5..00000000000 --- a/asm/MSL_C/MSL_Common/Src/direct_io/__fwrite.s +++ /dev/null @@ -1,218 +0,0 @@ -lbl_80365494: -/* 80365494 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 80365498 7C 08 02 A6 */ mflr r0 -/* 8036549C 90 01 00 34 */ stw r0, 0x34(r1) -/* 803654A0 BF 21 00 14 */ stmw r25, 0x14(r1) -/* 803654A4 7C 99 23 78 */ mr r25, r4 -/* 803654A8 7C DA 33 78 */ mr r26, r6 -/* 803654AC 7C 7B 1B 78 */ mr r27, r3 -/* 803654B0 7C BC 2B 78 */ mr r28, r5 -/* 803654B4 38 80 00 00 */ li r4, 0 -/* 803654B8 7F 43 D3 78 */ mr r3, r26 -/* 803654BC 48 00 3C 59 */ bl fwide -/* 803654C0 2C 03 00 00 */ cmpwi r3, 0 -/* 803654C4 40 82 00 10 */ bne lbl_803654D4 -/* 803654C8 7F 43 D3 78 */ mr r3, r26 -/* 803654CC 38 80 FF FF */ li r4, -1 -/* 803654D0 48 00 3C 45 */ bl fwide -lbl_803654D4: -/* 803654D4 7F B9 E1 D7 */ mullw. r29, r25, r28 -/* 803654D8 41 82 00 1C */ beq lbl_803654F4 -/* 803654DC 88 1A 00 0A */ lbz r0, 0xa(r26) -/* 803654E0 28 00 00 00 */ cmplwi r0, 0 -/* 803654E4 40 82 00 10 */ bne lbl_803654F4 -/* 803654E8 A0 1A 00 04 */ lhz r0, 4(r26) -/* 803654EC 54 00 D7 7F */ rlwinm. r0, r0, 0x1a, 0x1d, 0x1f -/* 803654F0 40 82 00 0C */ bne lbl_803654FC -lbl_803654F4: -/* 803654F4 38 60 00 00 */ li r3, 0 -/* 803654F8 48 00 02 94 */ b lbl_8036578C -lbl_803654FC: -/* 803654FC 28 00 00 02 */ cmplwi r0, 2 -/* 80365500 40 82 00 08 */ bne lbl_80365508 -/* 80365504 48 00 0F C9 */ bl __stdio_atexit -lbl_80365508: -/* 80365508 88 1A 00 05 */ lbz r0, 5(r26) -/* 8036550C 3B E0 00 01 */ li r31, 1 -/* 80365510 38 60 00 00 */ li r3, 0 -/* 80365514 54 00 EF FF */ rlwinm. r0, r0, 0x1d, 0x1f, 0x1f -/* 80365518 41 82 00 14 */ beq lbl_8036552C -/* 8036551C 88 1A 00 04 */ lbz r0, 4(r26) -/* 80365520 54 00 FF BE */ rlwinm r0, r0, 0x1f, 0x1e, 0x1f -/* 80365524 28 00 00 02 */ cmplwi r0, 2 -/* 80365528 40 82 00 08 */ bne lbl_80365530 -lbl_8036552C: -/* 8036552C 38 60 00 01 */ li r3, 1 -lbl_80365530: -/* 80365530 2C 03 00 00 */ cmpwi r3, 0 -/* 80365534 40 82 00 18 */ bne lbl_8036554C -/* 80365538 88 1A 00 04 */ lbz r0, 4(r26) -/* 8036553C 54 00 FF BE */ rlwinm r0, r0, 0x1f, 0x1e, 0x1f -/* 80365540 28 00 00 01 */ cmplwi r0, 1 -/* 80365544 41 82 00 08 */ beq lbl_8036554C -/* 80365548 3B E0 00 00 */ li r31, 0 -lbl_8036554C: -/* 8036554C 88 1A 00 08 */ lbz r0, 8(r26) -/* 80365550 54 00 DF 7F */ rlwinm. r0, r0, 0x1b, 0x1d, 0x1f -/* 80365554 40 82 00 54 */ bne lbl_803655A8 -/* 80365558 88 7A 00 04 */ lbz r3, 4(r26) -/* 8036555C 54 60 EF BD */ rlwinm. r0, r3, 0x1d, 0x1e, 0x1e -/* 80365560 54 63 EF 7E */ rlwinm r3, r3, 0x1d, 0x1d, 0x1f -/* 80365564 41 82 00 44 */ beq lbl_803655A8 -/* 80365568 54 60 07 7B */ rlwinm. r0, r3, 0, 0x1d, 0x1d -/* 8036556C 41 82 00 24 */ beq lbl_80365590 -/* 80365570 7F 43 D3 78 */ mr r3, r26 -/* 80365574 38 80 00 00 */ li r4, 0 -/* 80365578 38 A0 00 02 */ li r5, 2 -/* 8036557C 48 00 06 39 */ bl fseek -/* 80365580 2C 03 00 00 */ cmpwi r3, 0 -/* 80365584 41 82 00 0C */ beq lbl_80365590 -/* 80365588 38 60 00 00 */ li r3, 0 -/* 8036558C 48 00 02 00 */ b lbl_8036578C -lbl_80365590: -/* 80365590 88 1A 00 08 */ lbz r0, 8(r26) -/* 80365594 38 60 00 01 */ li r3, 1 -/* 80365598 50 60 2E 34 */ rlwimi r0, r3, 5, 0x18, 0x1a -/* 8036559C 7F 43 D3 78 */ mr r3, r26 -/* 803655A0 98 1A 00 08 */ stb r0, 8(r26) -/* 803655A4 4B FF FC 01 */ bl __prep_buffer -lbl_803655A8: -/* 803655A8 88 1A 00 08 */ lbz r0, 8(r26) -/* 803655AC 54 00 DF 7E */ rlwinm r0, r0, 0x1b, 0x1d, 0x1f -/* 803655B0 28 00 00 01 */ cmplwi r0, 1 -/* 803655B4 41 82 00 1C */ beq lbl_803655D0 -/* 803655B8 38 60 00 01 */ li r3, 1 -/* 803655BC 38 00 00 00 */ li r0, 0 -/* 803655C0 98 7A 00 0A */ stb r3, 0xa(r26) -/* 803655C4 38 60 00 00 */ li r3, 0 -/* 803655C8 90 1A 00 28 */ stw r0, 0x28(r26) -/* 803655CC 48 00 01 C0 */ b lbl_8036578C -lbl_803655D0: -/* 803655D0 28 1D 00 00 */ cmplwi r29, 0 -/* 803655D4 7F 7E DB 78 */ mr r30, r27 -/* 803655D8 3B 80 00 00 */ li r28, 0 -/* 803655DC 41 82 01 20 */ beq lbl_803656FC -/* 803655E0 80 9A 00 24 */ lwz r4, 0x24(r26) -/* 803655E4 80 7A 00 1C */ lwz r3, 0x1c(r26) -/* 803655E8 7C 04 18 40 */ cmplw r4, r3 -/* 803655EC 40 82 00 0C */ bne lbl_803655F8 -/* 803655F0 2C 1F 00 00 */ cmpwi r31, 0 -/* 803655F4 41 82 01 08 */ beq lbl_803656FC -lbl_803655F8: -/* 803655F8 80 1A 00 20 */ lwz r0, 0x20(r26) -/* 803655FC 7C 63 20 50 */ subf r3, r3, r4 -/* 80365600 7C 03 00 50 */ subf r0, r3, r0 -/* 80365604 90 1A 00 28 */ stw r0, 0x28(r26) -lbl_80365608: -/* 80365608 80 1A 00 28 */ lwz r0, 0x28(r26) -/* 8036560C 3B 60 00 00 */ li r27, 0 -/* 80365610 7C 00 E8 40 */ cmplw r0, r29 -/* 80365614 90 01 00 08 */ stw r0, 8(r1) -/* 80365618 40 81 00 08 */ ble lbl_80365620 -/* 8036561C 93 A1 00 08 */ stw r29, 8(r1) -lbl_80365620: -/* 80365620 88 1A 00 04 */ lbz r0, 4(r26) -/* 80365624 54 00 FF BE */ rlwinm r0, r0, 0x1f, 0x1e, 0x1f -/* 80365628 28 00 00 01 */ cmplwi r0, 1 -/* 8036562C 40 82 00 30 */ bne lbl_8036565C -/* 80365630 80 A1 00 08 */ lwz r5, 8(r1) -/* 80365634 28 05 00 00 */ cmplwi r5, 0 -/* 80365638 41 82 00 24 */ beq lbl_8036565C -/* 8036563C 7F C3 F3 78 */ mr r3, r30 -/* 80365640 38 80 00 0A */ li r4, 0xa -/* 80365644 48 00 0A 95 */ bl __memrchr -/* 80365648 7C 7B 1B 79 */ or. r27, r3, r3 -/* 8036564C 41 82 00 10 */ beq lbl_8036565C -/* 80365650 38 1B 00 01 */ addi r0, r27, 1 -/* 80365654 7C 1E 00 50 */ subf r0, r30, r0 -/* 80365658 90 01 00 08 */ stw r0, 8(r1) -lbl_8036565C: -/* 8036565C 80 A1 00 08 */ lwz r5, 8(r1) -/* 80365660 28 05 00 00 */ cmplwi r5, 0 -/* 80365664 41 82 00 3C */ beq lbl_803656A0 -/* 80365668 80 7A 00 24 */ lwz r3, 0x24(r26) -/* 8036566C 7F C4 F3 78 */ mr r4, r30 -/* 80365670 4B C9 DE D1 */ bl memcpy -/* 80365674 80 61 00 08 */ lwz r3, 8(r1) -/* 80365678 80 1A 00 24 */ lwz r0, 0x24(r26) -/* 8036567C 7F DE 1A 14 */ add r30, r30, r3 -/* 80365680 7F 9C 1A 14 */ add r28, r28, r3 -/* 80365684 7C 00 1A 14 */ add r0, r0, r3 -/* 80365688 7F A3 E8 50 */ subf r29, r3, r29 -/* 8036568C 90 1A 00 24 */ stw r0, 0x24(r26) -/* 80365690 80 61 00 08 */ lwz r3, 8(r1) -/* 80365694 80 1A 00 28 */ lwz r0, 0x28(r26) -/* 80365698 7C 03 00 50 */ subf r0, r3, r0 -/* 8036569C 90 1A 00 28 */ stw r0, 0x28(r26) -lbl_803656A0: -/* 803656A0 80 1A 00 28 */ lwz r0, 0x28(r26) -/* 803656A4 28 00 00 00 */ cmplwi r0, 0 -/* 803656A8 41 82 00 18 */ beq lbl_803656C0 -/* 803656AC 28 1B 00 00 */ cmplwi r27, 0 -/* 803656B0 40 82 00 10 */ bne lbl_803656C0 -/* 803656B4 88 1A 00 04 */ lbz r0, 4(r26) -/* 803656B8 54 00 FF BF */ rlwinm. r0, r0, 0x1f, 0x1e, 0x1f -/* 803656BC 40 82 00 30 */ bne lbl_803656EC -lbl_803656C0: -/* 803656C0 7F 43 D3 78 */ mr r3, r26 -/* 803656C4 38 80 00 00 */ li r4, 0 -/* 803656C8 4B FF FA 19 */ bl __flush_buffer -/* 803656CC 2C 03 00 00 */ cmpwi r3, 0 -/* 803656D0 41 82 00 1C */ beq lbl_803656EC -/* 803656D4 38 60 00 01 */ li r3, 1 -/* 803656D8 38 00 00 00 */ li r0, 0 -/* 803656DC 98 7A 00 0A */ stb r3, 0xa(r26) -/* 803656E0 3B A0 00 00 */ li r29, 0 -/* 803656E4 90 1A 00 28 */ stw r0, 0x28(r26) -/* 803656E8 48 00 00 14 */ b lbl_803656FC -lbl_803656EC: -/* 803656EC 28 1D 00 00 */ cmplwi r29, 0 -/* 803656F0 41 82 00 0C */ beq lbl_803656FC -/* 803656F4 2C 1F 00 00 */ cmpwi r31, 0 -/* 803656F8 40 82 FF 10 */ bne lbl_80365608 -lbl_803656FC: -/* 803656FC 28 1D 00 00 */ cmplwi r29, 0 -/* 80365700 41 82 00 68 */ beq lbl_80365768 -/* 80365704 2C 1F 00 00 */ cmpwi r31, 0 -/* 80365708 40 82 00 60 */ bne lbl_80365768 -/* 8036570C 83 7A 00 1C */ lwz r27, 0x1c(r26) -/* 80365710 7C 1E EA 14 */ add r0, r30, r29 -/* 80365714 83 FA 00 20 */ lwz r31, 0x20(r26) -/* 80365718 7F 43 D3 78 */ mr r3, r26 -/* 8036571C 38 81 00 08 */ addi r4, r1, 8 -/* 80365720 93 DA 00 1C */ stw r30, 0x1c(r26) -/* 80365724 93 BA 00 20 */ stw r29, 0x20(r26) -/* 80365728 90 1A 00 24 */ stw r0, 0x24(r26) -/* 8036572C 4B FF F9 B5 */ bl __flush_buffer -/* 80365730 2C 03 00 00 */ cmpwi r3, 0 -/* 80365734 41 82 00 14 */ beq lbl_80365748 -/* 80365738 38 60 00 01 */ li r3, 1 -/* 8036573C 38 00 00 00 */ li r0, 0 -/* 80365740 98 7A 00 0A */ stb r3, 0xa(r26) -/* 80365744 90 1A 00 28 */ stw r0, 0x28(r26) -lbl_80365748: -/* 80365748 80 01 00 08 */ lwz r0, 8(r1) -/* 8036574C 7F 43 D3 78 */ mr r3, r26 -/* 80365750 93 7A 00 1C */ stw r27, 0x1c(r26) -/* 80365754 7F 9C 02 14 */ add r28, r28, r0 -/* 80365758 93 FA 00 20 */ stw r31, 0x20(r26) -/* 8036575C 4B FF FA 49 */ bl __prep_buffer -/* 80365760 38 00 00 00 */ li r0, 0 -/* 80365764 90 1A 00 28 */ stw r0, 0x28(r26) -lbl_80365768: -/* 80365768 88 1A 00 04 */ lbz r0, 4(r26) -/* 8036576C 54 00 FF BE */ rlwinm r0, r0, 0x1f, 0x1e, 0x1f -/* 80365770 28 00 00 02 */ cmplwi r0, 2 -/* 80365774 41 82 00 0C */ beq lbl_80365780 -/* 80365778 38 00 00 00 */ li r0, 0 -/* 8036577C 90 1A 00 28 */ stw r0, 0x28(r26) -lbl_80365780: -/* 80365780 38 19 FF FF */ addi r0, r25, -1 -/* 80365784 7C 1C 02 14 */ add r0, r28, r0 -/* 80365788 7C 60 CB 96 */ divwu r3, r0, r25 -lbl_8036578C: -/* 8036578C BB 21 00 14 */ lmw r25, 0x14(r1) -/* 80365790 80 01 00 34 */ lwz r0, 0x34(r1) -/* 80365794 7C 08 03 A6 */ mtlr r0 -/* 80365798 38 21 00 30 */ addi r1, r1, 0x30 -/* 8036579C 4E 80 00 20 */ blr diff --git a/asm/MSL_C/MSL_Common/Src/direct_io/fwrite.s b/asm/MSL_C/MSL_Common/Src/direct_io/fwrite.s deleted file mode 100644 index f5b4a8782d2..00000000000 --- a/asm/MSL_C/MSL_Common/Src/direct_io/fwrite.s +++ /dev/null @@ -1,32 +0,0 @@ -lbl_803657A0: -/* 803657A0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 803657A4 7C 08 02 A6 */ mflr r0 -/* 803657A8 90 01 00 24 */ stw r0, 0x24(r1) -/* 803657AC 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 803657B0 7C DF 33 78 */ mr r31, r6 -/* 803657B4 93 C1 00 18 */ stw r30, 0x18(r1) -/* 803657B8 7C BE 2B 78 */ mr r30, r5 -/* 803657BC 93 A1 00 14 */ stw r29, 0x14(r1) -/* 803657C0 7C 9D 23 78 */ mr r29, r4 -/* 803657C4 93 81 00 10 */ stw r28, 0x10(r1) -/* 803657C8 7C 7C 1B 78 */ mr r28, r3 -/* 803657CC 38 60 00 02 */ li r3, 2 -/* 803657D0 4B FF FC 99 */ bl __begin_critical_region -/* 803657D4 7F 83 E3 78 */ mr r3, r28 -/* 803657D8 7F A4 EB 78 */ mr r4, r29 -/* 803657DC 7F C5 F3 78 */ mr r5, r30 -/* 803657E0 7F E6 FB 78 */ mr r6, r31 -/* 803657E4 4B FF FC B1 */ bl __fwrite -/* 803657E8 7C 60 1B 78 */ mr r0, r3 -/* 803657EC 38 60 00 02 */ li r3, 2 -/* 803657F0 7C 1F 03 78 */ mr r31, r0 -/* 803657F4 4B FF FC 71 */ bl __end_critical_region -/* 803657F8 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803657FC 7F E3 FB 78 */ mr r3, r31 -/* 80365800 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80365804 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80365808 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 8036580C 83 81 00 10 */ lwz r28, 0x10(r1) -/* 80365810 7C 08 03 A6 */ mtlr r0 -/* 80365814 38 21 00 20 */ addi r1, r1, 0x20 -/* 80365818 4E 80 00 20 */ blr diff --git a/asm/MSL_C/MSL_Common/Src/file_io/fclose.s b/asm/MSL_C/MSL_Common/Src/file_io/fclose.s deleted file mode 100644 index f296fb612ed..00000000000 --- a/asm/MSL_C/MSL_Common/Src/file_io/fclose.s +++ /dev/null @@ -1,129 +0,0 @@ -lbl_803659F8: -/* 803659F8 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 803659FC 7C 08 02 A6 */ mflr r0 -/* 80365A00 90 01 00 24 */ stw r0, 0x24(r1) -/* 80365A04 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80365A08 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80365A0C 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80365A10 93 A1 00 14 */ stw r29, 0x14(r1) -/* 80365A14 40 82 00 0C */ bne lbl_80365A20 -/* 80365A18 38 60 FF FF */ li r3, -1 -/* 80365A1C 48 00 01 7C */ b lbl_80365B98 -lbl_80365A20: -/* 80365A20 A0 1F 00 04 */ lhz r0, 4(r31) -/* 80365A24 54 03 D7 7F */ rlwinm. r3, r0, 0x1a, 0x1d, 0x1f -/* 80365A28 40 82 00 0C */ bne lbl_80365A34 -/* 80365A2C 38 60 00 00 */ li r3, 0 -/* 80365A30 48 00 01 68 */ b lbl_80365B98 -lbl_80365A34: -/* 80365A34 28 1F 00 00 */ cmplwi r31, 0 -/* 80365A38 40 82 00 10 */ bne lbl_80365A48 -/* 80365A3C 4B FF D5 D1 */ bl __flush_all -/* 80365A40 7C 7D 1B 78 */ mr r29, r3 -/* 80365A44 48 00 00 F4 */ b lbl_80365B38 -lbl_80365A48: -/* 80365A48 88 1F 00 0A */ lbz r0, 0xa(r31) -/* 80365A4C 28 00 00 00 */ cmplwi r0, 0 -/* 80365A50 40 82 00 0C */ bne lbl_80365A5C -/* 80365A54 28 03 00 00 */ cmplwi r3, 0 -/* 80365A58 40 82 00 0C */ bne lbl_80365A64 -lbl_80365A5C: -/* 80365A5C 3B A0 FF FF */ li r29, -1 -/* 80365A60 48 00 00 D8 */ b lbl_80365B38 -lbl_80365A64: -/* 80365A64 88 1F 00 04 */ lbz r0, 4(r31) -/* 80365A68 54 00 EF 7E */ rlwinm r0, r0, 0x1d, 0x1d, 0x1f -/* 80365A6C 28 00 00 01 */ cmplwi r0, 1 -/* 80365A70 40 82 00 0C */ bne lbl_80365A7C -/* 80365A74 3B A0 00 00 */ li r29, 0 -/* 80365A78 48 00 00 C0 */ b lbl_80365B38 -lbl_80365A7C: -/* 80365A7C 88 7F 00 08 */ lbz r3, 8(r31) -/* 80365A80 54 60 DF 7E */ rlwinm r0, r3, 0x1b, 0x1d, 0x1f -/* 80365A84 28 00 00 03 */ cmplwi r0, 3 -/* 80365A88 41 80 00 10 */ blt lbl_80365A98 -/* 80365A8C 38 00 00 02 */ li r0, 2 -/* 80365A90 50 03 2E 34 */ rlwimi r3, r0, 5, 0x18, 0x1a -/* 80365A94 98 7F 00 08 */ stb r3, 8(r31) -lbl_80365A98: -/* 80365A98 88 1F 00 08 */ lbz r0, 8(r31) -/* 80365A9C 54 00 DF 7E */ rlwinm r0, r0, 0x1b, 0x1d, 0x1f -/* 80365AA0 28 00 00 02 */ cmplwi r0, 2 -/* 80365AA4 40 82 00 0C */ bne lbl_80365AB0 -/* 80365AA8 38 00 00 00 */ li r0, 0 -/* 80365AAC 90 1F 00 28 */ stw r0, 0x28(r31) -lbl_80365AB0: -/* 80365AB0 88 7F 00 08 */ lbz r3, 8(r31) -/* 80365AB4 54 60 DF 7E */ rlwinm r0, r3, 0x1b, 0x1d, 0x1f -/* 80365AB8 28 00 00 01 */ cmplwi r0, 1 -/* 80365ABC 41 82 00 14 */ beq lbl_80365AD0 -/* 80365AC0 3B A0 00 00 */ li r29, 0 -/* 80365AC4 53 A3 2E 34 */ rlwimi r3, r29, 5, 0x18, 0x1a -/* 80365AC8 98 7F 00 08 */ stb r3, 8(r31) -/* 80365ACC 48 00 00 6C */ b lbl_80365B38 -lbl_80365AD0: -/* 80365AD0 A0 1F 00 04 */ lhz r0, 4(r31) -/* 80365AD4 54 00 D7 7E */ rlwinm r0, r0, 0x1a, 0x1d, 0x1f -/* 80365AD8 28 00 00 01 */ cmplwi r0, 1 -/* 80365ADC 41 82 00 0C */ beq lbl_80365AE8 -/* 80365AE0 3B C0 00 00 */ li r30, 0 -/* 80365AE4 48 00 00 10 */ b lbl_80365AF4 -lbl_80365AE8: -/* 80365AE8 7F E3 FB 78 */ mr r3, r31 -/* 80365AEC 48 00 03 A5 */ bl ftell -/* 80365AF0 7C 7E 1B 78 */ mr r30, r3 -lbl_80365AF4: -/* 80365AF4 7F E3 FB 78 */ mr r3, r31 -/* 80365AF8 38 80 00 00 */ li r4, 0 -/* 80365AFC 4B FF F5 E5 */ bl __flush_buffer -/* 80365B00 2C 03 00 00 */ cmpwi r3, 0 -/* 80365B04 41 82 00 1C */ beq lbl_80365B20 -/* 80365B08 38 60 00 01 */ li r3, 1 -/* 80365B0C 38 00 00 00 */ li r0, 0 -/* 80365B10 98 7F 00 0A */ stb r3, 0xa(r31) -/* 80365B14 3B A0 FF FF */ li r29, -1 -/* 80365B18 90 1F 00 28 */ stw r0, 0x28(r31) -/* 80365B1C 48 00 00 1C */ b lbl_80365B38 -lbl_80365B20: -/* 80365B20 3B A0 00 00 */ li r29, 0 -/* 80365B24 88 1F 00 08 */ lbz r0, 8(r31) -/* 80365B28 53 A0 2E 34 */ rlwimi r0, r29, 5, 0x18, 0x1a -/* 80365B2C 98 1F 00 08 */ stb r0, 8(r31) -/* 80365B30 93 DF 00 18 */ stw r30, 0x18(r31) -/* 80365B34 93 BF 00 28 */ stw r29, 0x28(r31) -lbl_80365B38: -/* 80365B38 81 9F 00 44 */ lwz r12, 0x44(r31) -/* 80365B3C 80 7F 00 00 */ lwz r3, 0(r31) -/* 80365B40 7D 89 03 A6 */ mtctr r12 -/* 80365B44 4E 80 04 21 */ bctrl -/* 80365B48 A0 1F 00 04 */ lhz r0, 4(r31) -/* 80365B4C 38 80 00 00 */ li r4, 0 -/* 80365B50 50 80 35 F2 */ rlwimi r0, r4, 6, 0x17, 0x19 -/* 80365B54 7C 7E 1B 78 */ mr r30, r3 -/* 80365B58 B0 1F 00 04 */ sth r0, 4(r31) -/* 80365B5C 90 9F 00 00 */ stw r4, 0(r31) -/* 80365B60 88 1F 00 08 */ lbz r0, 8(r31) -/* 80365B64 54 00 E7 FF */ rlwinm. r0, r0, 0x1c, 0x1f, 0x1f -/* 80365B68 41 82 00 0C */ beq lbl_80365B74 -/* 80365B6C 80 7F 00 1C */ lwz r3, 0x1c(r31) -/* 80365B70 4B FF CF E9 */ bl free -lbl_80365B74: -/* 80365B74 2C 1D 00 00 */ cmpwi r29, 0 -/* 80365B78 38 60 00 00 */ li r3, 0 -/* 80365B7C 40 82 00 0C */ bne lbl_80365B88 -/* 80365B80 2C 1E 00 00 */ cmpwi r30, 0 -/* 80365B84 41 82 00 08 */ beq lbl_80365B8C -lbl_80365B88: -/* 80365B88 38 60 00 01 */ li r3, 1 -lbl_80365B8C: -/* 80365B8C 7C 03 00 D0 */ neg r0, r3 -/* 80365B90 7C 00 1B 78 */ or r0, r0, r3 -/* 80365B94 7C 03 FE 70 */ srawi r3, r0, 0x1f -lbl_80365B98: -/* 80365B98 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80365B9C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80365BA0 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80365BA4 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80365BA8 7C 08 03 A6 */ mtlr r0 -/* 80365BAC 38 21 00 20 */ addi r1, r1, 0x20 -/* 80365BB0 4E 80 00 20 */ blr diff --git a/asm/MSL_C/MSL_Common/Src/file_io/fflush.s b/asm/MSL_C/MSL_Common/Src/file_io/fflush.s deleted file mode 100644 index 69efb5b3ef3..00000000000 --- a/asm/MSL_C/MSL_Common/Src/file_io/fflush.s +++ /dev/null @@ -1,90 +0,0 @@ -lbl_803658C0: -/* 803658C0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803658C4 7C 08 02 A6 */ mflr r0 -/* 803658C8 90 01 00 14 */ stw r0, 0x14(r1) -/* 803658CC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 803658D0 7C 7F 1B 79 */ or. r31, r3, r3 -/* 803658D4 93 C1 00 08 */ stw r30, 8(r1) -/* 803658D8 40 82 00 0C */ bne lbl_803658E4 -/* 803658DC 4B FF D7 31 */ bl __flush_all -/* 803658E0 48 00 01 00 */ b lbl_803659E0 -lbl_803658E4: -/* 803658E4 88 1F 00 0A */ lbz r0, 0xa(r31) -/* 803658E8 28 00 00 00 */ cmplwi r0, 0 -/* 803658EC 40 82 00 10 */ bne lbl_803658FC -/* 803658F0 A0 1F 00 04 */ lhz r0, 4(r31) -/* 803658F4 54 00 D7 7F */ rlwinm. r0, r0, 0x1a, 0x1d, 0x1f -/* 803658F8 40 82 00 0C */ bne lbl_80365904 -lbl_803658FC: -/* 803658FC 38 60 FF FF */ li r3, -1 -/* 80365900 48 00 00 E0 */ b lbl_803659E0 -lbl_80365904: -/* 80365904 88 1F 00 04 */ lbz r0, 4(r31) -/* 80365908 54 00 EF 7E */ rlwinm r0, r0, 0x1d, 0x1d, 0x1f -/* 8036590C 28 00 00 01 */ cmplwi r0, 1 -/* 80365910 40 82 00 0C */ bne lbl_8036591C -/* 80365914 38 60 00 00 */ li r3, 0 -/* 80365918 48 00 00 C8 */ b lbl_803659E0 -lbl_8036591C: -/* 8036591C 88 7F 00 08 */ lbz r3, 8(r31) -/* 80365920 54 60 DF 7E */ rlwinm r0, r3, 0x1b, 0x1d, 0x1f -/* 80365924 28 00 00 03 */ cmplwi r0, 3 -/* 80365928 41 80 00 10 */ blt lbl_80365938 -/* 8036592C 38 00 00 02 */ li r0, 2 -/* 80365930 50 03 2E 34 */ rlwimi r3, r0, 5, 0x18, 0x1a -/* 80365934 98 7F 00 08 */ stb r3, 8(r31) -lbl_80365938: -/* 80365938 88 1F 00 08 */ lbz r0, 8(r31) -/* 8036593C 54 00 DF 7E */ rlwinm r0, r0, 0x1b, 0x1d, 0x1f -/* 80365940 28 00 00 02 */ cmplwi r0, 2 -/* 80365944 40 82 00 0C */ bne lbl_80365950 -/* 80365948 38 00 00 00 */ li r0, 0 -/* 8036594C 90 1F 00 28 */ stw r0, 0x28(r31) -lbl_80365950: -/* 80365950 88 9F 00 08 */ lbz r4, 8(r31) -/* 80365954 54 80 DF 7E */ rlwinm r0, r4, 0x1b, 0x1d, 0x1f -/* 80365958 28 00 00 01 */ cmplwi r0, 1 -/* 8036595C 41 82 00 18 */ beq lbl_80365974 -/* 80365960 38 00 00 00 */ li r0, 0 -/* 80365964 38 60 00 00 */ li r3, 0 -/* 80365968 50 04 2E 34 */ rlwimi r4, r0, 5, 0x18, 0x1a -/* 8036596C 98 9F 00 08 */ stb r4, 8(r31) -/* 80365970 48 00 00 70 */ b lbl_803659E0 -lbl_80365974: -/* 80365974 A0 1F 00 04 */ lhz r0, 4(r31) -/* 80365978 54 00 D7 7E */ rlwinm r0, r0, 0x1a, 0x1d, 0x1f -/* 8036597C 28 00 00 01 */ cmplwi r0, 1 -/* 80365980 41 82 00 0C */ beq lbl_8036598C -/* 80365984 3B C0 00 00 */ li r30, 0 -/* 80365988 48 00 00 10 */ b lbl_80365998 -lbl_8036598C: -/* 8036598C 7F E3 FB 78 */ mr r3, r31 -/* 80365990 48 00 05 01 */ bl ftell -/* 80365994 7C 7E 1B 78 */ mr r30, r3 -lbl_80365998: -/* 80365998 7F E3 FB 78 */ mr r3, r31 -/* 8036599C 38 80 00 00 */ li r4, 0 -/* 803659A0 4B FF F7 41 */ bl __flush_buffer -/* 803659A4 2C 03 00 00 */ cmpwi r3, 0 -/* 803659A8 41 82 00 1C */ beq lbl_803659C4 -/* 803659AC 38 60 00 01 */ li r3, 1 -/* 803659B0 38 00 00 00 */ li r0, 0 -/* 803659B4 98 7F 00 0A */ stb r3, 0xa(r31) -/* 803659B8 38 60 FF FF */ li r3, -1 -/* 803659BC 90 1F 00 28 */ stw r0, 0x28(r31) -/* 803659C0 48 00 00 20 */ b lbl_803659E0 -lbl_803659C4: -/* 803659C4 88 1F 00 08 */ lbz r0, 8(r31) -/* 803659C8 38 80 00 00 */ li r4, 0 -/* 803659CC 50 80 2E 34 */ rlwimi r0, r4, 5, 0x18, 0x1a -/* 803659D0 38 60 00 00 */ li r3, 0 -/* 803659D4 98 1F 00 08 */ stb r0, 8(r31) -/* 803659D8 93 DF 00 18 */ stw r30, 0x18(r31) -/* 803659DC 90 9F 00 28 */ stw r4, 0x28(r31) -lbl_803659E0: -/* 803659E0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 803659E4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 803659E8 83 C1 00 08 */ lwz r30, 8(r1) -/* 803659EC 7C 08 03 A6 */ mtlr r0 -/* 803659F0 38 21 00 10 */ addi r1, r1, 0x10 -/* 803659F4 4E 80 00 20 */ blr diff --git a/asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_aligned.s b/asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_aligned.s deleted file mode 100644 index 606468a99b0..00000000000 --- a/asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_aligned.s +++ /dev/null @@ -1,55 +0,0 @@ -lbl_80366410: -/* 80366410 7C 03 00 D0 */ neg r0, r3 -/* 80366414 38 84 FF FF */ addi r4, r4, -1 -/* 80366418 54 06 07 BF */ clrlwi. r6, r0, 0x1e -/* 8036641C 38 63 FF FF */ addi r3, r3, -1 -/* 80366420 41 82 00 18 */ beq lbl_80366438 -/* 80366424 7C A6 28 50 */ subf r5, r6, r5 -lbl_80366428: -/* 80366428 8C 04 00 01 */ lbzu r0, 1(r4) -/* 8036642C 34 C6 FF FF */ addic. r6, r6, -1 -/* 80366430 9C 03 00 01 */ stbu r0, 1(r3) -/* 80366434 40 82 FF F4 */ bne lbl_80366428 -lbl_80366438: -/* 80366438 54 A6 D9 7F */ rlwinm. r6, r5, 0x1b, 5, 0x1f -/* 8036643C 38 E4 FF FD */ addi r7, r4, -3 -/* 80366440 38 83 FF FD */ addi r4, r3, -3 -/* 80366444 41 82 00 4C */ beq lbl_80366490 -lbl_80366448: -/* 80366448 80 67 00 04 */ lwz r3, 4(r7) -/* 8036644C 34 C6 FF FF */ addic. r6, r6, -1 -/* 80366450 80 07 00 08 */ lwz r0, 8(r7) -/* 80366454 90 64 00 04 */ stw r3, 4(r4) -/* 80366458 80 67 00 0C */ lwz r3, 0xc(r7) -/* 8036645C 90 04 00 08 */ stw r0, 8(r4) -/* 80366460 80 07 00 10 */ lwz r0, 0x10(r7) -/* 80366464 90 64 00 0C */ stw r3, 0xc(r4) -/* 80366468 80 67 00 14 */ lwz r3, 0x14(r7) -/* 8036646C 90 04 00 10 */ stw r0, 0x10(r4) -/* 80366470 80 07 00 18 */ lwz r0, 0x18(r7) -/* 80366474 90 64 00 14 */ stw r3, 0x14(r4) -/* 80366478 80 67 00 1C */ lwz r3, 0x1c(r7) -/* 8036647C 90 04 00 18 */ stw r0, 0x18(r4) -/* 80366480 84 07 00 20 */ lwzu r0, 0x20(r7) -/* 80366484 90 64 00 1C */ stw r3, 0x1c(r4) -/* 80366488 94 04 00 20 */ stwu r0, 0x20(r4) -/* 8036648C 40 82 FF BC */ bne lbl_80366448 -lbl_80366490: -/* 80366490 54 A3 F7 7F */ rlwinm. r3, r5, 0x1e, 0x1d, 0x1f -/* 80366494 41 82 00 14 */ beq lbl_803664A8 -lbl_80366498: -/* 80366498 84 07 00 04 */ lwzu r0, 4(r7) -/* 8036649C 34 63 FF FF */ addic. r3, r3, -1 -/* 803664A0 94 04 00 04 */ stwu r0, 4(r4) -/* 803664A4 40 82 FF F4 */ bne lbl_80366498 -lbl_803664A8: -/* 803664A8 54 A5 07 BF */ clrlwi. r5, r5, 0x1e -/* 803664AC 38 C7 00 03 */ addi r6, r7, 3 -/* 803664B0 38 64 00 03 */ addi r3, r4, 3 -/* 803664B4 4D 82 00 20 */ beqlr -lbl_803664B8: -/* 803664B8 8C 06 00 01 */ lbzu r0, 1(r6) -/* 803664BC 34 A5 FF FF */ addic. r5, r5, -1 -/* 803664C0 9C 03 00 01 */ stbu r0, 1(r3) -/* 803664C4 40 82 FF F4 */ bne lbl_803664B8 -/* 803664C8 4E 80 00 20 */ blr diff --git a/asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_rev_aligned.s b/asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_rev_aligned.s deleted file mode 100644 index b1520497230..00000000000 --- a/asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_rev_aligned.s +++ /dev/null @@ -1,50 +0,0 @@ -lbl_80366368: -/* 80366368 7C E3 2A 14 */ add r7, r3, r5 -/* 8036636C 7C C4 2A 14 */ add r6, r4, r5 -/* 80366370 54 E3 07 BF */ clrlwi. r3, r7, 0x1e -/* 80366374 41 82 00 18 */ beq lbl_8036638C -/* 80366378 7C A3 28 50 */ subf r5, r3, r5 -lbl_8036637C: -/* 8036637C 8C 06 FF FF */ lbzu r0, -1(r6) -/* 80366380 34 63 FF FF */ addic. r3, r3, -1 -/* 80366384 9C 07 FF FF */ stbu r0, -1(r7) -/* 80366388 40 82 FF F4 */ bne lbl_8036637C -lbl_8036638C: -/* 8036638C 54 A4 D9 7F */ rlwinm. r4, r5, 0x1b, 5, 0x1f -/* 80366390 41 82 00 4C */ beq lbl_803663DC -lbl_80366394: -/* 80366394 80 66 FF FC */ lwz r3, -4(r6) -/* 80366398 34 84 FF FF */ addic. r4, r4, -1 -/* 8036639C 80 06 FF F8 */ lwz r0, -8(r6) -/* 803663A0 90 67 FF FC */ stw r3, -4(r7) -/* 803663A4 80 66 FF F4 */ lwz r3, -0xc(r6) -/* 803663A8 90 07 FF F8 */ stw r0, -8(r7) -/* 803663AC 80 06 FF F0 */ lwz r0, -0x10(r6) -/* 803663B0 90 67 FF F4 */ stw r3, -0xc(r7) -/* 803663B4 80 66 FF EC */ lwz r3, -0x14(r6) -/* 803663B8 90 07 FF F0 */ stw r0, -0x10(r7) -/* 803663BC 80 06 FF E8 */ lwz r0, -0x18(r6) -/* 803663C0 90 67 FF EC */ stw r3, -0x14(r7) -/* 803663C4 80 66 FF E4 */ lwz r3, -0x1c(r6) -/* 803663C8 90 07 FF E8 */ stw r0, -0x18(r7) -/* 803663CC 84 06 FF E0 */ lwzu r0, -0x20(r6) -/* 803663D0 90 67 FF E4 */ stw r3, -0x1c(r7) -/* 803663D4 94 07 FF E0 */ stwu r0, -0x20(r7) -/* 803663D8 40 82 FF BC */ bne lbl_80366394 -lbl_803663DC: -/* 803663DC 54 A3 F7 7F */ rlwinm. r3, r5, 0x1e, 0x1d, 0x1f -/* 803663E0 41 82 00 14 */ beq lbl_803663F4 -lbl_803663E4: -/* 803663E4 84 06 FF FC */ lwzu r0, -4(r6) -/* 803663E8 34 63 FF FF */ addic. r3, r3, -1 -/* 803663EC 94 07 FF FC */ stwu r0, -4(r7) -/* 803663F0 40 82 FF F4 */ bne lbl_803663E4 -lbl_803663F4: -/* 803663F4 54 A5 07 BF */ clrlwi. r5, r5, 0x1e -/* 803663F8 4D 82 00 20 */ beqlr -lbl_803663FC: -/* 803663FC 8C 06 FF FF */ lbzu r0, -1(r6) -/* 80366400 34 A5 FF FF */ addic. r5, r5, -1 -/* 80366404 9C 07 FF FF */ stbu r0, -1(r7) -/* 80366408 40 82 FF F4 */ bne lbl_803663FC -/* 8036640C 4E 80 00 20 */ blr diff --git a/asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_rev_unaligned.s b/asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_rev_unaligned.s deleted file mode 100644 index f35ec66765e..00000000000 --- a/asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_rev_unaligned.s +++ /dev/null @@ -1,49 +0,0 @@ -lbl_803661FC: -/* 803661FC 7D 63 2A 14 */ add r11, r3, r5 -/* 80366200 7D 44 2A 14 */ add r10, r4, r5 -/* 80366204 55 63 07 BF */ clrlwi. r3, r11, 0x1e -/* 80366208 41 82 00 18 */ beq lbl_80366220 -/* 8036620C 7C A3 28 50 */ subf r5, r3, r5 -lbl_80366210: -/* 80366210 8C 0A FF FF */ lbzu r0, -1(r10) -/* 80366214 34 63 FF FF */ addic. r3, r3, -1 -/* 80366218 9C 0B FF FF */ stbu r0, -1(r11) -/* 8036621C 40 82 FF F4 */ bne lbl_80366210 -lbl_80366220: -/* 80366220 55 48 1E F8 */ rlwinm r8, r10, 3, 0x1b, 0x1c -/* 80366224 55 47 07 BE */ clrlwi r7, r10, 0x1e -/* 80366228 21 28 00 20 */ subfic r9, r8, 0x20 -/* 8036622C 54 A6 E8 FE */ srwi r6, r5, 3 -/* 80366230 20 07 00 04 */ subfic r0, r7, 4 -/* 80366234 7D 4A 02 14 */ add r10, r10, r0 -/* 80366238 84 8A FF FC */ lwzu r4, -4(r10) -lbl_8036623C: -/* 8036623C 80 0A FF FC */ lwz r0, -4(r10) -/* 80366240 7C 83 4C 30 */ srw r3, r4, r9 -/* 80366244 34 C6 FF FF */ addic. r6, r6, -1 -/* 80366248 7C 04 40 30 */ slw r4, r0, r8 -/* 8036624C 7C 00 4C 30 */ srw r0, r0, r9 -/* 80366250 7C 83 1B 78 */ or r3, r4, r3 -/* 80366254 90 6B FF FC */ stw r3, -4(r11) -/* 80366258 84 8A FF F8 */ lwzu r4, -8(r10) -/* 8036625C 7C 83 40 30 */ slw r3, r4, r8 -/* 80366260 7C 60 03 78 */ or r0, r3, r0 -/* 80366264 94 0B FF F8 */ stwu r0, -8(r11) -/* 80366268 40 82 FF D4 */ bne lbl_8036623C -/* 8036626C 54 A0 07 7B */ rlwinm. r0, r5, 0, 0x1d, 0x1d -/* 80366270 41 82 00 18 */ beq lbl_80366288 -/* 80366274 84 6A FF FC */ lwzu r3, -4(r10) -/* 80366278 7C 80 4C 30 */ srw r0, r4, r9 -/* 8036627C 7C 63 40 30 */ slw r3, r3, r8 -/* 80366280 7C 60 03 78 */ or r0, r3, r0 -/* 80366284 94 0B FF FC */ stwu r0, -4(r11) -lbl_80366288: -/* 80366288 54 A5 07 BF */ clrlwi. r5, r5, 0x1e -/* 8036628C 4D 82 00 20 */ beqlr -/* 80366290 7D 4A 3A 14 */ add r10, r10, r7 -lbl_80366294: -/* 80366294 8C 0A FF FF */ lbzu r0, -1(r10) -/* 80366298 34 A5 FF FF */ addic. r5, r5, -1 -/* 8036629C 9C 0B FF FF */ stbu r0, -1(r11) -/* 803662A0 40 82 FF F4 */ bne lbl_80366294 -/* 803662A4 4E 80 00 20 */ blr diff --git a/asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_unaligned.s b/asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_unaligned.s deleted file mode 100644 index 84f7476e9e4..00000000000 --- a/asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_unaligned.s +++ /dev/null @@ -1,54 +0,0 @@ -lbl_803662A8: -/* 803662A8 7C 03 00 D0 */ neg r0, r3 -/* 803662AC 39 04 FF FF */ addi r8, r4, -1 -/* 803662B0 54 06 07 BF */ clrlwi. r6, r0, 0x1e -/* 803662B4 38 63 FF FF */ addi r3, r3, -1 -/* 803662B8 41 82 00 18 */ beq lbl_803662D0 -/* 803662BC 7C A6 28 50 */ subf r5, r6, r5 -lbl_803662C0: -/* 803662C0 8C 08 00 01 */ lbzu r0, 1(r8) -/* 803662C4 34 C6 FF FF */ addic. r6, r6, -1 -/* 803662C8 9C 03 00 01 */ stbu r0, 1(r3) -/* 803662CC 40 82 FF F4 */ bne lbl_803662C0 -lbl_803662D0: -/* 803662D0 38 08 00 01 */ addi r0, r8, 1 -/* 803662D4 38 C3 FF FD */ addi r6, r3, -3 -/* 803662D8 54 09 07 BE */ clrlwi r9, r0, 0x1e -/* 803662DC 54 A7 E8 FE */ srwi r7, r5, 3 -/* 803662E0 7D 09 40 50 */ subf r8, r9, r8 -/* 803662E4 54 0A 1E F8 */ rlwinm r10, r0, 3, 0x1b, 0x1c -/* 803662E8 84 88 00 01 */ lwzu r4, 1(r8) -/* 803662EC 21 6A 00 20 */ subfic r11, r10, 0x20 -lbl_803662F0: -/* 803662F0 80 68 00 04 */ lwz r3, 4(r8) -/* 803662F4 7C 84 50 30 */ slw r4, r4, r10 -/* 803662F8 34 E7 FF FF */ addic. r7, r7, -1 -/* 803662FC 7C 60 5C 30 */ srw r0, r3, r11 -/* 80366300 7C 63 50 30 */ slw r3, r3, r10 -/* 80366304 7C 80 03 78 */ or r0, r4, r0 -/* 80366308 90 06 00 04 */ stw r0, 4(r6) -/* 8036630C 84 88 00 08 */ lwzu r4, 8(r8) -/* 80366310 7C 80 5C 30 */ srw r0, r4, r11 -/* 80366314 7C 60 03 78 */ or r0, r3, r0 -/* 80366318 94 06 00 08 */ stwu r0, 8(r6) -/* 8036631C 40 82 FF D4 */ bne lbl_803662F0 -/* 80366320 54 A0 07 7B */ rlwinm. r0, r5, 0, 0x1d, 0x1d -/* 80366324 41 82 00 18 */ beq lbl_8036633C -/* 80366328 84 08 00 04 */ lwzu r0, 4(r8) -/* 8036632C 7C 83 50 30 */ slw r3, r4, r10 -/* 80366330 7C 00 5C 30 */ srw r0, r0, r11 -/* 80366334 7C 60 03 78 */ or r0, r3, r0 -/* 80366338 94 06 00 04 */ stwu r0, 4(r6) -lbl_8036633C: -/* 8036633C 54 A5 07 BF */ clrlwi. r5, r5, 0x1e -/* 80366340 38 88 00 03 */ addi r4, r8, 3 -/* 80366344 38 66 00 03 */ addi r3, r6, 3 -/* 80366348 4D 82 00 20 */ beqlr -/* 8036634C 20 09 00 04 */ subfic r0, r9, 4 -/* 80366350 7C 80 20 50 */ subf r4, r0, r4 -lbl_80366354: -/* 80366354 8C 04 00 01 */ lbzu r0, 1(r4) -/* 80366358 34 A5 FF FF */ addic. r5, r5, -1 -/* 8036635C 9C 03 00 01 */ stbu r0, 1(r3) -/* 80366360 40 82 FF F4 */ bne lbl_80366354 -/* 80366364 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/initHookshotReady__9daAlink_cFv.s b/asm/d/a/d_a_alink/initHookshotReady__9daAlink_cFv.s deleted file mode 100644 index 8e182444383..00000000000 --- a/asm/d/a/d_a_alink/initHookshotReady__9daAlink_cFv.s +++ /dev/null @@ -1,30 +0,0 @@ -lbl_80109170: -/* 80109170 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80109174 7C 08 02 A6 */ mflr r0 -/* 80109178 90 01 00 24 */ stw r0, 0x24(r1) -/* 8010917C 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80109180 7C 7F 1B 78 */ mr r31, r3 -/* 80109184 38 00 00 01 */ li r0, 1 -/* 80109188 B0 03 30 1A */ sth r0, 0x301a(r3) -/* 8010918C C0 22 92 C0 */ lfs f1, lit_6108(r2) -/* 80109190 D0 23 33 E0 */ stfs f1, 0x33e0(r3) -/* 80109194 D0 21 00 08 */ stfs f1, 8(r1) -/* 80109198 C0 02 92 B8 */ lfs f0, lit_6040(r2) -/* 8010919C D0 01 00 0C */ stfs f0, 0xc(r1) -/* 801091A0 D0 21 00 10 */ stfs f1, 0x10(r1) -/* 801091A4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 801091A8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801091AC 38 63 5B D4 */ addi r3, r3, 0x5bd4 -/* 801091B0 38 80 00 01 */ li r4, 1 -/* 801091B4 38 A0 00 01 */ li r5, 1 -/* 801091B8 38 C1 00 08 */ addi r6, r1, 8 -/* 801091BC 4B F6 68 69 */ bl StartShock__12dVibration_cFii4cXyz -/* 801091C0 38 00 00 03 */ li r0, 3 -/* 801091C4 B0 1F 30 18 */ sth r0, 0x3018(r31) -/* 801091C8 C0 02 92 BC */ lfs f0, lit_6041(r2) -/* 801091CC D0 1F 34 94 */ stfs f0, 0x3494(r31) -/* 801091D0 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 801091D4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 801091D8 7C 08 03 A6 */ mtlr r0 -/* 801091DC 38 21 00 20 */ addi r1, r1, 0x20 -/* 801091E0 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/initHookshotUpperAnimeSpeed__9daAlink_cFi.s b/asm/d/a/d_a_alink/initHookshotUpperAnimeSpeed__9daAlink_cFi.s deleted file mode 100644 index 2454507abd6..00000000000 --- a/asm/d/a/d_a_alink/initHookshotUpperAnimeSpeed__9daAlink_cFi.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_801090EC: -/* 801090EC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 801090F0 7C 08 02 A6 */ mflr r0 -/* 801090F4 90 01 00 14 */ stw r0, 0x14(r1) -/* 801090F8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 801090FC 93 C1 00 08 */ stw r30, 8(r1) -/* 80109100 7C 7E 1B 78 */ mr r30, r3 -/* 80109104 7C 9F 23 78 */ mr r31, r4 -/* 80109108 4B FF F9 11 */ bl checkHookshotWait__9daAlink_cCFv -/* 8010910C 2C 03 00 00 */ cmpwi r3, 0 -/* 80109110 41 82 00 44 */ beq lbl_80109154 -/* 80109114 2C 1F 00 00 */ cmpwi r31, 0 -/* 80109118 41 82 00 1C */ beq lbl_80109134 -/* 8010911C C0 02 92 C0 */ lfs f0, lit_6108(r2) -/* 80109120 D0 1E 20 54 */ stfs f0, 0x2054(r30) -/* 80109124 D0 1E 20 58 */ stfs f0, 0x2058(r30) -/* 80109128 80 7E 1F 54 */ lwz r3, 0x1f54(r30) -/* 8010912C D0 03 00 08 */ stfs f0, 8(r3) -/* 80109130 48 00 00 1C */ b lbl_8010914C -lbl_80109134: -/* 80109134 7F C3 F3 78 */ mr r3, r30 -/* 80109138 38 9E 20 48 */ addi r4, r30, 0x2048 -/* 8010913C 3C A0 80 39 */ lis r5, m__22daAlinkHIO_hookshot_c0@ha /* 0x8038E9C0@ha */ -/* 80109140 38 A5 E9 C0 */ addi r5, r5, m__22daAlinkHIO_hookshot_c0@l /* 0x8038E9C0@l */ -/* 80109144 C0 25 00 40 */ lfs f1, 0x40(r5) -/* 80109148 4B FF 8B AD */ bl setWaterInAnmRate__9daAlink_cFP16daPy_frameCtrl_cf -lbl_8010914C: -/* 8010914C 38 60 00 01 */ li r3, 1 -/* 80109150 48 00 00 08 */ b lbl_80109158 -lbl_80109154: -/* 80109154 38 60 00 00 */ li r3, 0 -lbl_80109158: -/* 80109158 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8010915C 83 C1 00 08 */ lwz r30, 8(r1) -/* 80109160 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80109164 7C 08 03 A6 */ mtlr r0 -/* 80109168 38 21 00 10 */ addi r1, r1, 0x10 -/* 8010916C 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/setHookshotReadyAnime__9daAlink_cFv.s b/asm/d/a/d_a_alink/setHookshotReadyAnime__9daAlink_cFv.s deleted file mode 100644 index 07dec9b952c..00000000000 --- a/asm/d/a/d_a_alink/setHookshotReadyAnime__9daAlink_cFv.s +++ /dev/null @@ -1,44 +0,0 @@ -lbl_801091E4: -/* 801091E4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 801091E8 7C 08 02 A6 */ mflr r0 -/* 801091EC 90 01 00 24 */ stw r0, 0x24(r1) -/* 801091F0 39 61 00 20 */ addi r11, r1, 0x20 -/* 801091F4 48 25 8F E9 */ bl _savegpr_29 -/* 801091F8 7C 7D 1B 78 */ mr r29, r3 -/* 801091FC 83 E3 27 E0 */ lwz r31, 0x27e0(r3) -/* 80109200 3B C0 00 01 */ li r30, 1 -/* 80109204 7F E3 FB 78 */ mr r3, r31 -/* 80109208 4B F6 A5 DD */ bl LockonTruth__12dAttention_cFv -/* 8010920C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80109210 40 82 00 14 */ bne lbl_80109224 -/* 80109214 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80109218 54 00 00 85 */ rlwinm. r0, r0, 0, 2, 2 -/* 8010921C 40 82 00 08 */ bne lbl_80109224 -/* 80109220 3B C0 00 00 */ li r30, 0 -lbl_80109224: -/* 80109224 57 C0 06 3F */ clrlwi. r0, r30, 0x18 -/* 80109228 40 82 00 18 */ bne lbl_80109240 -/* 8010922C A8 1D 30 8E */ lha r0, 0x308e(r29) -/* 80109230 2C 00 00 00 */ cmpwi r0, 0 -/* 80109234 40 82 00 0C */ bne lbl_80109240 -/* 80109238 C0 22 92 C0 */ lfs f1, lit_6108(r2) -/* 8010923C 48 00 00 10 */ b lbl_8010924C -lbl_80109240: -/* 80109240 3C 60 80 39 */ lis r3, m__22daAlinkHIO_hookshot_c0@ha /* 0x8038E9C0@ha */ -/* 80109244 38 63 E9 C0 */ addi r3, r3, m__22daAlinkHIO_hookshot_c0@l /* 0x8038E9C0@l */ -/* 80109248 C0 23 00 40 */ lfs f1, 0x40(r3) -lbl_8010924C: -/* 8010924C 7F A3 EB 78 */ mr r3, r29 -/* 80109250 38 80 01 8D */ li r4, 0x18d -/* 80109254 C0 42 92 C4 */ lfs f2, lit_6109(r2) -/* 80109258 4B FA 41 51 */ bl setUpperAnimeBaseSpeed__9daAlink_cFUsff -/* 8010925C 38 00 00 00 */ li r0, 0 -/* 80109260 B0 1D 30 20 */ sth r0, 0x3020(r29) -/* 80109264 7F A3 EB 78 */ mr r3, r29 -/* 80109268 4B FF FF 09 */ bl initHookshotReady__9daAlink_cFv -/* 8010926C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80109270 48 25 8F B9 */ bl _restgpr_29 -/* 80109274 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80109278 7C 08 03 A6 */ mtlr r0 -/* 8010927C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80109280 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_inf_game/getLayerNo_common_common__14dComIfG_play_cFPCcii.s b/asm/d/com/d_com_inf_game/getLayerNo_common_common__14dComIfG_play_cFPCcii.s deleted file mode 100644 index db99bd764d5..00000000000 --- a/asm/d/com/d_com_inf_game/getLayerNo_common_common__14dComIfG_play_cFPCcii.s +++ /dev/null @@ -1,1463 +0,0 @@ -lbl_8002B434: -/* 8002B434 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8002B438 7C 08 02 A6 */ mflr r0 -/* 8002B43C 90 01 00 24 */ stw r0, 0x24(r1) -/* 8002B440 39 61 00 20 */ addi r11, r1, 0x20 -/* 8002B444 48 33 6D 99 */ bl _savegpr_29 -/* 8002B448 7C 7F 1B 78 */ mr r31, r3 -/* 8002B44C 7C 9E 23 78 */ mr r30, r4 -/* 8002B450 90 A1 00 08 */ stw r5, 8(r1) -/* 8002B454 2C 05 00 00 */ cmpwi r5, 0 -/* 8002B458 40 80 12 D4 */ bge lbl_8002C72C -/* 8002B45C 38 00 FF FF */ li r0, -1 -/* 8002B460 90 01 00 08 */ stw r0, 8(r1) -/* 8002B464 48 18 12 A9 */ bl dKy_darkworld_stage_check__FPCci -/* 8002B468 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 8002B46C 28 00 00 01 */ cmplwi r0, 1 -/* 8002B470 40 82 00 0C */ bne lbl_8002B47C -/* 8002B474 38 00 00 0E */ li r0, 0xe -/* 8002B478 90 01 00 08 */ stw r0, 8(r1) -lbl_8002B47C: -/* 8002B47C 80 01 00 08 */ lwz r0, 8(r1) -/* 8002B480 2C 00 00 0D */ cmpwi r0, 0xd -/* 8002B484 40 80 12 A8 */ bge lbl_8002C72C -/* 8002B488 7F E3 FB 78 */ mr r3, r31 -/* 8002B48C 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B490 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B494 48 33 D5 01 */ bl strcmp -/* 8002B498 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B49C 41 82 00 20 */ beq lbl_8002B4BC -/* 8002B4A0 7F E3 FB 78 */ mr r3, r31 -/* 8002B4A4 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B4A8 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B4AC 38 84 00 07 */ addi r4, r4, 7 -/* 8002B4B0 48 33 D4 E5 */ bl strcmp -/* 8002B4B4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B4B8 40 82 00 88 */ bne lbl_8002B540 -lbl_8002B4BC: -/* 8002B4BC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002B4C0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002B4C4 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002B4C8 7F A3 EB 78 */ mr r3, r29 -/* 8002B4CC 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002B4D0 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002B4D4 A0 84 02 14 */ lhz r4, 0x214(r4) -/* 8002B4D8 48 00 94 E5 */ bl isEventBit__11dSv_event_cCFUs -/* 8002B4DC 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B4E0 41 82 00 10 */ beq lbl_8002B4F0 -/* 8002B4E4 38 00 00 03 */ li r0, 3 -/* 8002B4E8 90 01 00 08 */ stw r0, 8(r1) -/* 8002B4EC 48 00 12 40 */ b lbl_8002C72C -lbl_8002B4F0: -/* 8002B4F0 7F A3 EB 78 */ mr r3, r29 -/* 8002B4F4 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002B4F8 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002B4FC A0 84 01 46 */ lhz r4, 0x146(r4) -/* 8002B500 48 00 94 BD */ bl isEventBit__11dSv_event_cCFUs -/* 8002B504 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B508 41 82 00 10 */ beq lbl_8002B518 -/* 8002B50C 38 00 00 02 */ li r0, 2 -/* 8002B510 90 01 00 08 */ stw r0, 8(r1) -/* 8002B514 48 00 12 18 */ b lbl_8002C72C -lbl_8002B518: -/* 8002B518 7F A3 EB 78 */ mr r3, r29 -/* 8002B51C 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002B520 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002B524 A0 84 01 44 */ lhz r4, 0x144(r4) -/* 8002B528 48 00 94 95 */ bl isEventBit__11dSv_event_cCFUs -/* 8002B52C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B530 41 82 11 FC */ beq lbl_8002C72C -/* 8002B534 38 00 00 01 */ li r0, 1 -/* 8002B538 90 01 00 08 */ stw r0, 8(r1) -/* 8002B53C 48 00 11 F0 */ b lbl_8002C72C -lbl_8002B540: -/* 8002B540 7F E3 FB 78 */ mr r3, r31 -/* 8002B544 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B548 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B54C 38 84 00 0F */ addi r4, r4, 0xf -/* 8002B550 48 33 D4 45 */ bl strcmp -/* 8002B554 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B558 40 82 00 90 */ bne lbl_8002B5E8 -/* 8002B55C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002B560 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002B564 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002B568 7F A3 EB 78 */ mr r3, r29 -/* 8002B56C 38 80 20 08 */ li r4, 0x2008 -/* 8002B570 48 00 94 4D */ bl isEventBit__11dSv_event_cCFUs -/* 8002B574 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B578 41 82 00 10 */ beq lbl_8002B588 -/* 8002B57C 38 00 00 05 */ li r0, 5 -/* 8002B580 90 01 00 08 */ stw r0, 8(r1) -/* 8002B584 48 00 11 A8 */ b lbl_8002C72C -lbl_8002B588: -/* 8002B588 7F A3 EB 78 */ mr r3, r29 -/* 8002B58C 38 80 1E 08 */ li r4, 0x1e08 -/* 8002B590 48 00 94 2D */ bl isEventBit__11dSv_event_cCFUs -/* 8002B594 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B598 41 82 00 10 */ beq lbl_8002B5A8 -/* 8002B59C 38 00 00 03 */ li r0, 3 -/* 8002B5A0 90 01 00 08 */ stw r0, 8(r1) -/* 8002B5A4 48 00 11 88 */ b lbl_8002C72C -lbl_8002B5A8: -/* 8002B5A8 7F A3 EB 78 */ mr r3, r29 -/* 8002B5AC 38 80 06 02 */ li r4, 0x602 -/* 8002B5B0 48 00 94 0D */ bl isEventBit__11dSv_event_cCFUs -/* 8002B5B4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B5B8 41 82 00 10 */ beq lbl_8002B5C8 -/* 8002B5BC 38 00 00 02 */ li r0, 2 -/* 8002B5C0 90 01 00 08 */ stw r0, 8(r1) -/* 8002B5C4 48 00 11 68 */ b lbl_8002C72C -lbl_8002B5C8: -/* 8002B5C8 7F A3 EB 78 */ mr r3, r29 -/* 8002B5CC 38 80 45 10 */ li r4, 0x4510 -/* 8002B5D0 48 00 93 ED */ bl isEventBit__11dSv_event_cCFUs -/* 8002B5D4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B5D8 40 82 11 54 */ bne lbl_8002C72C -/* 8002B5DC 38 00 00 01 */ li r0, 1 -/* 8002B5E0 90 01 00 08 */ stw r0, 8(r1) -/* 8002B5E4 48 00 11 48 */ b lbl_8002C72C -lbl_8002B5E8: -/* 8002B5E8 7F E3 FB 78 */ mr r3, r31 -/* 8002B5EC 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B5F0 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B5F4 38 84 00 17 */ addi r4, r4, 0x17 -/* 8002B5F8 48 33 D3 9D */ bl strcmp -/* 8002B5FC 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B600 40 82 00 58 */ bne lbl_8002B658 -/* 8002B604 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002B608 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002B60C 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002B610 7F A3 EB 78 */ mr r3, r29 -/* 8002B614 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002B618 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002B61C A0 84 00 6E */ lhz r4, 0x6e(r4) -/* 8002B620 48 00 93 9D */ bl isEventBit__11dSv_event_cCFUs -/* 8002B624 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B628 41 82 00 10 */ beq lbl_8002B638 -/* 8002B62C 38 00 00 02 */ li r0, 2 -/* 8002B630 90 01 00 08 */ stw r0, 8(r1) -/* 8002B634 48 00 10 F8 */ b lbl_8002C72C -lbl_8002B638: -/* 8002B638 7F A3 EB 78 */ mr r3, r29 -/* 8002B63C 38 80 45 10 */ li r4, 0x4510 -/* 8002B640 48 00 93 7D */ bl isEventBit__11dSv_event_cCFUs -/* 8002B644 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B648 40 82 10 E4 */ bne lbl_8002C72C -/* 8002B64C 38 00 00 01 */ li r0, 1 -/* 8002B650 90 01 00 08 */ stw r0, 8(r1) -/* 8002B654 48 00 10 D8 */ b lbl_8002C72C -lbl_8002B658: -/* 8002B658 7F E3 FB 78 */ mr r3, r31 -/* 8002B65C 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B660 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B664 38 84 00 1F */ addi r4, r4, 0x1f -/* 8002B668 48 33 D3 2D */ bl strcmp -/* 8002B66C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B670 41 82 00 20 */ beq lbl_8002B690 -/* 8002B674 7F E3 FB 78 */ mr r3, r31 -/* 8002B678 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B67C 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B680 38 84 00 27 */ addi r4, r4, 0x27 -/* 8002B684 48 33 D3 11 */ bl strcmp -/* 8002B688 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B68C 40 82 00 E8 */ bne lbl_8002B774 -lbl_8002B690: -/* 8002B690 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002B694 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002B698 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002B69C 7F A3 EB 78 */ mr r3, r29 -/* 8002B6A0 38 80 08 04 */ li r4, 0x804 -/* 8002B6A4 48 00 93 19 */ bl isEventBit__11dSv_event_cCFUs -/* 8002B6A8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B6AC 41 82 00 18 */ beq lbl_8002B6C4 -/* 8002B6B0 38 00 00 02 */ li r0, 2 -/* 8002B6B4 90 01 00 08 */ stw r0, 8(r1) -/* 8002B6B8 38 61 00 08 */ addi r3, r1, 8 -/* 8002B6BC 4B FF FD 39 */ bl dComIfG_get_timelayer__FPi -/* 8002B6C0 48 00 10 6C */ b lbl_8002C72C -lbl_8002B6C4: -/* 8002B6C4 7F A3 EB 78 */ mr r3, r29 -/* 8002B6C8 38 80 08 10 */ li r4, 0x810 -/* 8002B6CC 48 00 92 F1 */ bl isEventBit__11dSv_event_cCFUs -/* 8002B6D0 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B6D4 41 82 00 10 */ beq lbl_8002B6E4 -/* 8002B6D8 38 00 00 04 */ li r0, 4 -/* 8002B6DC 90 01 00 08 */ stw r0, 8(r1) -/* 8002B6E0 48 00 10 4C */ b lbl_8002C72C -lbl_8002B6E4: -/* 8002B6E4 7F A3 EB 78 */ mr r3, r29 -/* 8002B6E8 38 80 13 20 */ li r4, 0x1320 -/* 8002B6EC 48 00 92 D1 */ bl isEventBit__11dSv_event_cCFUs -/* 8002B6F0 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B6F4 41 82 00 18 */ beq lbl_8002B70C -/* 8002B6F8 38 00 00 02 */ li r0, 2 -/* 8002B6FC 90 01 00 08 */ stw r0, 8(r1) -/* 8002B700 38 61 00 08 */ addi r3, r1, 8 -/* 8002B704 4B FF FC F1 */ bl dComIfG_get_timelayer__FPi -/* 8002B708 48 00 10 24 */ b lbl_8002C72C -lbl_8002B70C: -/* 8002B70C 7F A3 EB 78 */ mr r3, r29 -/* 8002B710 38 80 07 01 */ li r4, 0x701 -/* 8002B714 48 00 92 A9 */ bl isEventBit__11dSv_event_cCFUs -/* 8002B718 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B71C 41 82 00 10 */ beq lbl_8002B72C -/* 8002B720 38 00 00 0C */ li r0, 0xc -/* 8002B724 90 01 00 08 */ stw r0, 8(r1) -/* 8002B728 48 00 10 04 */ b lbl_8002C72C -lbl_8002B72C: -/* 8002B72C 7F A3 EB 78 */ mr r3, r29 -/* 8002B730 38 80 0A 08 */ li r4, 0xa08 -/* 8002B734 48 00 92 89 */ bl isEventBit__11dSv_event_cCFUs -/* 8002B738 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B73C 41 82 00 18 */ beq lbl_8002B754 -/* 8002B740 38 00 00 02 */ li r0, 2 -/* 8002B744 90 01 00 08 */ stw r0, 8(r1) -/* 8002B748 38 61 00 08 */ addi r3, r1, 8 -/* 8002B74C 4B FF FC A9 */ bl dComIfG_get_timelayer__FPi -/* 8002B750 48 00 0F DC */ b lbl_8002C72C -lbl_8002B754: -/* 8002B754 7F A3 EB 78 */ mr r3, r29 -/* 8002B758 38 80 06 08 */ li r4, 0x608 -/* 8002B75C 48 00 92 61 */ bl isEventBit__11dSv_event_cCFUs -/* 8002B760 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B764 41 82 0F C8 */ beq lbl_8002C72C -/* 8002B768 38 00 00 01 */ li r0, 1 -/* 8002B76C 90 01 00 08 */ stw r0, 8(r1) -/* 8002B770 48 00 0F BC */ b lbl_8002C72C -lbl_8002B774: -/* 8002B774 7F E3 FB 78 */ mr r3, r31 -/* 8002B778 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B77C 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B780 38 84 00 2F */ addi r4, r4, 0x2f -/* 8002B784 48 33 D2 11 */ bl strcmp -/* 8002B788 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B78C 41 82 00 20 */ beq lbl_8002B7AC -/* 8002B790 7F E3 FB 78 */ mr r3, r31 -/* 8002B794 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B798 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B79C 38 84 00 37 */ addi r4, r4, 0x37 -/* 8002B7A0 48 33 D1 F5 */ bl strcmp -/* 8002B7A4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B7A8 40 82 00 BC */ bne lbl_8002B864 -lbl_8002B7AC: -/* 8002B7AC 7F E3 FB 78 */ mr r3, r31 -/* 8002B7B0 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B7B4 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B7B8 38 84 00 2F */ addi r4, r4, 0x2f -/* 8002B7BC 48 33 D1 D9 */ bl strcmp -/* 8002B7C0 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B7C4 40 82 00 3C */ bne lbl_8002B800 -/* 8002B7C8 2C 1E 00 01 */ cmpwi r30, 1 -/* 8002B7CC 40 82 00 34 */ bne lbl_8002B800 -/* 8002B7D0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002B7D4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002B7D8 38 63 07 F0 */ addi r3, r3, 0x7f0 -/* 8002B7DC 38 80 09 04 */ li r4, 0x904 -/* 8002B7E0 48 00 91 DD */ bl isEventBit__11dSv_event_cCFUs -/* 8002B7E4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B7E8 41 82 00 18 */ beq lbl_8002B800 -/* 8002B7EC 38 00 00 04 */ li r0, 4 -/* 8002B7F0 90 01 00 08 */ stw r0, 8(r1) -/* 8002B7F4 38 61 00 08 */ addi r3, r1, 8 -/* 8002B7F8 4B FF FB FD */ bl dComIfG_get_timelayer__FPi -/* 8002B7FC 48 00 0F 30 */ b lbl_8002C72C -lbl_8002B800: -/* 8002B800 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002B804 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002B808 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002B80C 7F A3 EB 78 */ mr r3, r29 -/* 8002B810 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002B814 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002B818 A0 84 00 AA */ lhz r4, 0xaa(r4) -/* 8002B81C 48 00 91 A1 */ bl isEventBit__11dSv_event_cCFUs -/* 8002B820 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B824 41 82 00 18 */ beq lbl_8002B83C -/* 8002B828 38 00 00 02 */ li r0, 2 -/* 8002B82C 90 01 00 08 */ stw r0, 8(r1) -/* 8002B830 38 61 00 08 */ addi r3, r1, 8 -/* 8002B834 4B FF FB C1 */ bl dComIfG_get_timelayer__FPi -/* 8002B838 48 00 0E F4 */ b lbl_8002C72C -lbl_8002B83C: -/* 8002B83C 7F A3 EB 78 */ mr r3, r29 -/* 8002B840 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002B844 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002B848 A0 84 00 6A */ lhz r4, 0x6a(r4) -/* 8002B84C 48 00 91 71 */ bl isEventBit__11dSv_event_cCFUs -/* 8002B850 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B854 41 82 0E D8 */ beq lbl_8002C72C -/* 8002B858 38 00 00 01 */ li r0, 1 -/* 8002B85C 90 01 00 08 */ stw r0, 8(r1) -/* 8002B860 48 00 0E CC */ b lbl_8002C72C -lbl_8002B864: -/* 8002B864 7F E3 FB 78 */ mr r3, r31 -/* 8002B868 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B86C 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B870 38 84 00 3F */ addi r4, r4, 0x3f -/* 8002B874 48 33 D1 21 */ bl strcmp -/* 8002B878 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B87C 40 82 00 34 */ bne lbl_8002B8B0 -/* 8002B880 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002B884 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002B888 38 63 07 F0 */ addi r3, r3, 0x7f0 -/* 8002B88C 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002B890 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002B894 A0 84 00 80 */ lhz r4, 0x80(r4) -/* 8002B898 48 00 91 25 */ bl isEventBit__11dSv_event_cCFUs -/* 8002B89C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B8A0 41 82 0E 8C */ beq lbl_8002C72C -/* 8002B8A4 38 00 00 02 */ li r0, 2 -/* 8002B8A8 90 01 00 08 */ stw r0, 8(r1) -/* 8002B8AC 48 00 0E 80 */ b lbl_8002C72C -lbl_8002B8B0: -/* 8002B8B0 7F E3 FB 78 */ mr r3, r31 -/* 8002B8B4 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B8B8 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B8BC 38 84 00 47 */ addi r4, r4, 0x47 -/* 8002B8C0 48 33 D0 D5 */ bl strcmp -/* 8002B8C4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B8C8 40 82 00 90 */ bne lbl_8002B958 -/* 8002B8CC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002B8D0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002B8D4 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002B8D8 7F A3 EB 78 */ mr r3, r29 -/* 8002B8DC 38 80 23 20 */ li r4, 0x2320 -/* 8002B8E0 48 00 90 DD */ bl isEventBit__11dSv_event_cCFUs -/* 8002B8E4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B8E8 41 82 00 10 */ beq lbl_8002B8F8 -/* 8002B8EC 38 00 00 03 */ li r0, 3 -/* 8002B8F0 90 01 00 08 */ stw r0, 8(r1) -/* 8002B8F4 48 00 0E 38 */ b lbl_8002C72C -lbl_8002B8F8: -/* 8002B8F8 7F A3 EB 78 */ mr r3, r29 -/* 8002B8FC 38 80 20 04 */ li r4, 0x2004 -/* 8002B900 48 00 90 BD */ bl isEventBit__11dSv_event_cCFUs -/* 8002B904 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B908 41 82 00 10 */ beq lbl_8002B918 -/* 8002B90C 38 00 00 04 */ li r0, 4 -/* 8002B910 90 01 00 08 */ stw r0, 8(r1) -/* 8002B914 48 00 0E 18 */ b lbl_8002C72C -lbl_8002B918: -/* 8002B918 7F A3 EB 78 */ mr r3, r29 -/* 8002B91C 38 80 20 20 */ li r4, 0x2020 -/* 8002B920 48 00 90 9D */ bl isEventBit__11dSv_event_cCFUs -/* 8002B924 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B928 41 82 00 10 */ beq lbl_8002B938 -/* 8002B92C 38 00 00 02 */ li r0, 2 -/* 8002B930 90 01 00 08 */ stw r0, 8(r1) -/* 8002B934 48 00 0D F8 */ b lbl_8002C72C -lbl_8002B938: -/* 8002B938 7F A3 EB 78 */ mr r3, r29 -/* 8002B93C 38 80 07 01 */ li r4, 0x701 -/* 8002B940 48 00 90 7D */ bl isEventBit__11dSv_event_cCFUs -/* 8002B944 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B948 41 82 0D E4 */ beq lbl_8002C72C -/* 8002B94C 38 00 00 01 */ li r0, 1 -/* 8002B950 90 01 00 08 */ stw r0, 8(r1) -/* 8002B954 48 00 0D D8 */ b lbl_8002C72C -lbl_8002B958: -/* 8002B958 7F E3 FB 78 */ mr r3, r31 -/* 8002B95C 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B960 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B964 38 84 00 4F */ addi r4, r4, 0x4f -/* 8002B968 48 33 D0 2D */ bl strcmp -/* 8002B96C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B970 41 82 00 60 */ beq lbl_8002B9D0 -/* 8002B974 7F E3 FB 78 */ mr r3, r31 -/* 8002B978 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B97C 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B980 38 84 00 57 */ addi r4, r4, 0x57 -/* 8002B984 48 33 D0 11 */ bl strcmp -/* 8002B988 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B98C 41 82 00 44 */ beq lbl_8002B9D0 -/* 8002B990 7F E3 FB 78 */ mr r3, r31 -/* 8002B994 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B998 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B99C 38 84 00 5F */ addi r4, r4, 0x5f -/* 8002B9A0 48 33 CF F5 */ bl strcmp -/* 8002B9A4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B9A8 40 82 00 0C */ bne lbl_8002B9B4 -/* 8002B9AC 2C 1E 00 05 */ cmpwi r30, 5 -/* 8002B9B0 41 82 00 20 */ beq lbl_8002B9D0 -lbl_8002B9B4: -/* 8002B9B4 7F E3 FB 78 */ mr r3, r31 -/* 8002B9B8 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B9BC 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B9C0 38 84 00 67 */ addi r4, r4, 0x67 -/* 8002B9C4 48 33 CF D1 */ bl strcmp -/* 8002B9C8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B9CC 40 82 01 FC */ bne lbl_8002BBC8 -lbl_8002B9D0: -/* 8002B9D0 7F E3 FB 78 */ mr r3, r31 -/* 8002B9D4 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002B9D8 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002B9DC 38 84 00 4F */ addi r4, r4, 0x4f -/* 8002B9E0 48 33 CF B5 */ bl strcmp -/* 8002B9E4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002B9E8 40 82 00 78 */ bne lbl_8002BA60 -/* 8002B9EC 2C 1E 00 00 */ cmpwi r30, 0 -/* 8002B9F0 40 82 00 70 */ bne lbl_8002BA60 -/* 8002B9F4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002B9F8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002B9FC 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002BA00 7F A3 EB 78 */ mr r3, r29 -/* 8002BA04 38 80 3B 08 */ li r4, 0x3b08 -/* 8002BA08 48 00 8F B5 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BA0C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BA10 41 82 00 10 */ beq lbl_8002BA20 -/* 8002BA14 38 00 00 03 */ li r0, 3 -/* 8002BA18 90 01 00 08 */ stw r0, 8(r1) -/* 8002BA1C 48 00 0D 10 */ b lbl_8002C72C -lbl_8002BA20: -/* 8002BA20 7F A3 EB 78 */ mr r3, r29 -/* 8002BA24 38 80 31 20 */ li r4, 0x3120 -/* 8002BA28 48 00 8F 95 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BA2C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BA30 41 82 00 10 */ beq lbl_8002BA40 -/* 8002BA34 38 00 00 01 */ li r0, 1 -/* 8002BA38 90 01 00 08 */ stw r0, 8(r1) -/* 8002BA3C 48 00 0C F0 */ b lbl_8002C72C -lbl_8002BA40: -/* 8002BA40 7F A3 EB 78 */ mr r3, r29 -/* 8002BA44 38 80 09 04 */ li r4, 0x904 -/* 8002BA48 48 00 8F 75 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BA4C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BA50 41 82 0C DC */ beq lbl_8002C72C -/* 8002BA54 38 00 00 02 */ li r0, 2 -/* 8002BA58 90 01 00 08 */ stw r0, 8(r1) -/* 8002BA5C 48 00 0C D0 */ b lbl_8002C72C -lbl_8002BA60: -/* 8002BA60 7F E3 FB 78 */ mr r3, r31 -/* 8002BA64 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002BA68 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002BA6C 38 84 00 5F */ addi r4, r4, 0x5f -/* 8002BA70 48 33 CF 25 */ bl strcmp -/* 8002BA74 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BA78 40 82 00 34 */ bne lbl_8002BAAC -/* 8002BA7C 2C 1E 00 05 */ cmpwi r30, 5 -/* 8002BA80 40 82 00 2C */ bne lbl_8002BAAC -/* 8002BA84 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002BA88 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002BA8C 38 63 07 F0 */ addi r3, r3, 0x7f0 -/* 8002BA90 38 80 20 20 */ li r4, 0x2020 -/* 8002BA94 48 00 8F 29 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BA98 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BA9C 41 82 00 10 */ beq lbl_8002BAAC -/* 8002BAA0 38 00 00 04 */ li r0, 4 -/* 8002BAA4 90 01 00 08 */ stw r0, 8(r1) -/* 8002BAA8 48 00 0C 84 */ b lbl_8002C72C -lbl_8002BAAC: -/* 8002BAAC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002BAB0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002BAB4 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002BAB8 7F A3 EB 78 */ mr r3, r29 -/* 8002BABC 38 80 1E 08 */ li r4, 0x1e08 -/* 8002BAC0 48 00 8E FD */ bl isEventBit__11dSv_event_cCFUs -/* 8002BAC4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BAC8 41 82 00 50 */ beq lbl_8002BB18 -/* 8002BACC 7F E3 FB 78 */ mr r3, r31 -/* 8002BAD0 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002BAD4 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002BAD8 38 84 00 57 */ addi r4, r4, 0x57 -/* 8002BADC 48 33 CE B9 */ bl strcmp -/* 8002BAE0 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BAE4 40 82 00 34 */ bne lbl_8002BB18 -/* 8002BAE8 2C 1E 00 04 */ cmpwi r30, 4 -/* 8002BAEC 41 82 00 20 */ beq lbl_8002BB0C -/* 8002BAF0 2C 1E 00 03 */ cmpwi r30, 3 -/* 8002BAF4 41 82 00 18 */ beq lbl_8002BB0C -/* 8002BAF8 2C 1E 00 01 */ cmpwi r30, 1 -/* 8002BAFC 41 82 00 10 */ beq lbl_8002BB0C -/* 8002BB00 38 00 00 00 */ li r0, 0 -/* 8002BB04 90 01 00 08 */ stw r0, 8(r1) -/* 8002BB08 48 00 0C 24 */ b lbl_8002C72C -lbl_8002BB0C: -/* 8002BB0C 38 00 00 01 */ li r0, 1 -/* 8002BB10 90 01 00 08 */ stw r0, 8(r1) -/* 8002BB14 48 00 0C 18 */ b lbl_8002C72C -lbl_8002BB18: -/* 8002BB18 7F A3 EB 78 */ mr r3, r29 -/* 8002BB1C 38 80 09 04 */ li r4, 0x904 -/* 8002BB20 48 00 8E 9D */ bl isEventBit__11dSv_event_cCFUs -/* 8002BB24 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BB28 41 82 00 54 */ beq lbl_8002BB7C -/* 8002BB2C 7F E3 FB 78 */ mr r3, r31 -/* 8002BB30 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002BB34 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002BB38 38 84 00 4F */ addi r4, r4, 0x4f -/* 8002BB3C 48 33 CE 59 */ bl strcmp -/* 8002BB40 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BB44 40 82 00 2C */ bne lbl_8002BB70 -/* 8002BB48 2C 1E 00 01 */ cmpwi r30, 1 -/* 8002BB4C 40 82 00 24 */ bne lbl_8002BB70 -/* 8002BB50 7F A3 EB 78 */ mr r3, r29 -/* 8002BB54 38 80 0C 01 */ li r4, 0xc01 -/* 8002BB58 48 00 8E 65 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BB5C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BB60 40 82 00 10 */ bne lbl_8002BB70 -/* 8002BB64 38 00 00 09 */ li r0, 9 -/* 8002BB68 90 01 00 08 */ stw r0, 8(r1) -/* 8002BB6C 48 00 0B C0 */ b lbl_8002C72C -lbl_8002BB70: -/* 8002BB70 38 00 00 02 */ li r0, 2 -/* 8002BB74 90 01 00 08 */ stw r0, 8(r1) -/* 8002BB78 48 00 0B B4 */ b lbl_8002C72C -lbl_8002BB7C: -/* 8002BB7C 7F E3 FB 78 */ mr r3, r31 -/* 8002BB80 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002BB84 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002BB88 38 84 00 57 */ addi r4, r4, 0x57 -/* 8002BB8C 48 33 CE 09 */ bl strcmp -/* 8002BB90 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BB94 40 82 0B 98 */ bne lbl_8002C72C -/* 8002BB98 2C 1E 00 03 */ cmpwi r30, 3 -/* 8002BB9C 40 82 0B 90 */ bne lbl_8002C72C -/* 8002BBA0 7F A3 EB 78 */ mr r3, r29 -/* 8002BBA4 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002BBA8 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002BBAC A0 84 00 88 */ lhz r4, 0x88(r4) -/* 8002BBB0 48 00 8E 0D */ bl isEventBit__11dSv_event_cCFUs -/* 8002BBB4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BBB8 41 82 0B 74 */ beq lbl_8002C72C -/* 8002BBBC 38 00 00 01 */ li r0, 1 -/* 8002BBC0 90 01 00 08 */ stw r0, 8(r1) -/* 8002BBC4 48 00 0B 68 */ b lbl_8002C72C -lbl_8002BBC8: -/* 8002BBC8 7F E3 FB 78 */ mr r3, r31 -/* 8002BBCC 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002BBD0 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002BBD4 38 84 00 6F */ addi r4, r4, 0x6f -/* 8002BBD8 48 33 CD BD */ bl strcmp -/* 8002BBDC 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BBE0 40 82 00 2C */ bne lbl_8002BC0C -/* 8002BBE4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002BBE8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002BBEC 38 63 07 F0 */ addi r3, r3, 0x7f0 -/* 8002BBF0 38 80 20 08 */ li r4, 0x2008 -/* 8002BBF4 48 00 8D C9 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BBF8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BBFC 41 82 0B 30 */ beq lbl_8002C72C -/* 8002BC00 38 00 00 02 */ li r0, 2 -/* 8002BC04 90 01 00 08 */ stw r0, 8(r1) -/* 8002BC08 48 00 0B 24 */ b lbl_8002C72C -lbl_8002BC0C: -/* 8002BC0C 7F E3 FB 78 */ mr r3, r31 -/* 8002BC10 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002BC14 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002BC18 38 84 00 77 */ addi r4, r4, 0x77 -/* 8002BC1C 48 33 CD 79 */ bl strcmp -/* 8002BC20 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BC24 40 82 00 34 */ bne lbl_8002BC58 -/* 8002BC28 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002BC2C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002BC30 38 63 07 F0 */ addi r3, r3, 0x7f0 -/* 8002BC34 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002BC38 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002BC3C A0 84 00 BE */ lhz r4, 0xbe(r4) -/* 8002BC40 48 00 8D 7D */ bl isEventBit__11dSv_event_cCFUs -/* 8002BC44 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BC48 41 82 0A E4 */ beq lbl_8002C72C -/* 8002BC4C 38 00 00 01 */ li r0, 1 -/* 8002BC50 90 01 00 08 */ stw r0, 8(r1) -/* 8002BC54 48 00 0A D8 */ b lbl_8002C72C -lbl_8002BC58: -/* 8002BC58 7F E3 FB 78 */ mr r3, r31 -/* 8002BC5C 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002BC60 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002BC64 38 84 00 7F */ addi r4, r4, 0x7f -/* 8002BC68 48 33 CD 2D */ bl strcmp -/* 8002BC6C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BC70 40 82 00 3C */ bne lbl_8002BCAC -/* 8002BC74 2C 1E 00 00 */ cmpwi r30, 0 -/* 8002BC78 40 82 00 34 */ bne lbl_8002BCAC -/* 8002BC7C 38 00 00 08 */ li r0, 8 -/* 8002BC80 90 01 00 08 */ stw r0, 8(r1) -/* 8002BC84 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002BC88 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002BC8C 38 63 07 F0 */ addi r3, r3, 0x7f0 -/* 8002BC90 38 80 40 08 */ li r4, 0x4008 -/* 8002BC94 48 00 8D 29 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BC98 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BC9C 41 82 0A 90 */ beq lbl_8002C72C -/* 8002BCA0 38 00 00 00 */ li r0, 0 -/* 8002BCA4 90 01 00 08 */ stw r0, 8(r1) -/* 8002BCA8 48 00 0A 84 */ b lbl_8002C72C -lbl_8002BCAC: -/* 8002BCAC 7F E3 FB 78 */ mr r3, r31 -/* 8002BCB0 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002BCB4 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002BCB8 38 84 00 87 */ addi r4, r4, 0x87 -/* 8002BCBC 48 33 CC D9 */ bl strcmp -/* 8002BCC0 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BCC4 40 82 00 50 */ bne lbl_8002BD14 -/* 8002BCC8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002BCCC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002BCD0 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002BCD4 7F A3 EB 78 */ mr r3, r29 -/* 8002BCD8 38 80 0B 01 */ li r4, 0xb01 -/* 8002BCDC 48 00 8C E1 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BCE0 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BCE4 41 82 00 10 */ beq lbl_8002BCF4 -/* 8002BCE8 38 00 00 01 */ li r0, 1 -/* 8002BCEC 90 01 00 08 */ stw r0, 8(r1) -/* 8002BCF0 48 00 0A 3C */ b lbl_8002C72C -lbl_8002BCF4: -/* 8002BCF4 7F A3 EB 78 */ mr r3, r29 -/* 8002BCF8 38 80 09 02 */ li r4, 0x902 -/* 8002BCFC 48 00 8C C1 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BD00 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BD04 41 82 0A 28 */ beq lbl_8002C72C -/* 8002BD08 38 00 00 02 */ li r0, 2 -/* 8002BD0C 90 01 00 08 */ stw r0, 8(r1) -/* 8002BD10 48 00 0A 1C */ b lbl_8002C72C -lbl_8002BD14: -/* 8002BD14 7F E3 FB 78 */ mr r3, r31 -/* 8002BD18 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002BD1C 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002BD20 38 84 00 8F */ addi r4, r4, 0x8f -/* 8002BD24 48 33 CC 71 */ bl strcmp -/* 8002BD28 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BD2C 40 82 01 9C */ bne lbl_8002BEC8 -/* 8002BD30 2C 1E 00 00 */ cmpwi r30, 0 -/* 8002BD34 40 82 00 E4 */ bne lbl_8002BE18 -/* 8002BD38 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002BD3C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002BD40 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002BD44 7F A3 EB 78 */ mr r3, r29 -/* 8002BD48 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002BD4C 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002BD50 A0 84 00 70 */ lhz r4, 0x70(r4) -/* 8002BD54 48 00 8C 69 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BD58 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BD5C 41 82 00 18 */ beq lbl_8002BD74 -/* 8002BD60 38 00 00 04 */ li r0, 4 -/* 8002BD64 90 01 00 08 */ stw r0, 8(r1) -/* 8002BD68 38 61 00 08 */ addi r3, r1, 8 -/* 8002BD6C 4B FF F6 89 */ bl dComIfG_get_timelayer__FPi -/* 8002BD70 48 00 09 BC */ b lbl_8002C72C -lbl_8002BD74: -/* 8002BD74 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002BD78 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002BD7C 38 63 00 28 */ addi r3, r3, 0x28 -/* 8002BD80 38 80 00 00 */ li r4, 0 -/* 8002BD84 48 00 6E 2D */ bl isDarkClearLV__21dSv_player_status_b_cCFi -/* 8002BD88 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BD8C 41 82 00 18 */ beq lbl_8002BDA4 -/* 8002BD90 38 00 00 02 */ li r0, 2 -/* 8002BD94 90 01 00 08 */ stw r0, 8(r1) -/* 8002BD98 38 61 00 08 */ addi r3, r1, 8 -/* 8002BD9C 4B FF F6 59 */ bl dComIfG_get_timelayer__FPi -/* 8002BDA0 48 00 09 8C */ b lbl_8002C72C -lbl_8002BDA4: -/* 8002BDA4 7F A3 EB 78 */ mr r3, r29 -/* 8002BDA8 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002BDAC 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002BDB0 A0 84 00 5E */ lhz r4, 0x5e(r4) -/* 8002BDB4 48 00 8C 09 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BDB8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BDBC 41 82 00 10 */ beq lbl_8002BDCC -/* 8002BDC0 38 00 00 01 */ li r0, 1 -/* 8002BDC4 90 01 00 08 */ stw r0, 8(r1) -/* 8002BDC8 48 00 09 64 */ b lbl_8002C72C -lbl_8002BDCC: -/* 8002BDCC 7F A3 EB 78 */ mr r3, r29 -/* 8002BDD0 38 80 45 10 */ li r4, 0x4510 -/* 8002BDD4 48 00 8B E9 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BDD8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BDDC 41 82 00 10 */ beq lbl_8002BDEC -/* 8002BDE0 38 00 00 07 */ li r0, 7 -/* 8002BDE4 90 01 00 08 */ stw r0, 8(r1) -/* 8002BDE8 48 00 09 44 */ b lbl_8002C72C -lbl_8002BDEC: -/* 8002BDEC 7F A3 EB 78 */ mr r3, r29 -/* 8002BDF0 38 80 4A 40 */ li r4, 0x4a40 -/* 8002BDF4 48 00 8B C9 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BDF8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BDFC 41 82 00 10 */ beq lbl_8002BE0C -/* 8002BE00 38 00 00 00 */ li r0, 0 -/* 8002BE04 90 01 00 08 */ stw r0, 8(r1) -/* 8002BE08 48 00 09 24 */ b lbl_8002C72C -lbl_8002BE0C: -/* 8002BE0C 38 00 00 06 */ li r0, 6 -/* 8002BE10 90 01 00 08 */ stw r0, 8(r1) -/* 8002BE14 48 00 09 18 */ b lbl_8002C72C -lbl_8002BE18: -/* 8002BE18 2C 1E 00 01 */ cmpwi r30, 1 -/* 8002BE1C 40 82 09 10 */ bne lbl_8002C72C -/* 8002BE20 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002BE24 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002BE28 38 63 00 28 */ addi r3, r3, 0x28 -/* 8002BE2C 38 80 00 00 */ li r4, 0 -/* 8002BE30 48 00 6D 81 */ bl isDarkClearLV__21dSv_player_status_b_cCFi -/* 8002BE34 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BE38 41 82 00 10 */ beq lbl_8002BE48 -/* 8002BE3C 38 00 00 02 */ li r0, 2 -/* 8002BE40 90 01 00 08 */ stw r0, 8(r1) -/* 8002BE44 48 00 08 E8 */ b lbl_8002C72C -lbl_8002BE48: -/* 8002BE48 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002BE4C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002BE50 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002BE54 7F A3 EB 78 */ mr r3, r29 -/* 8002BE58 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002BE5C 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002BE60 A0 84 00 5E */ lhz r4, 0x5e(r4) -/* 8002BE64 48 00 8B 59 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BE68 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BE6C 41 82 00 10 */ beq lbl_8002BE7C -/* 8002BE70 38 00 00 01 */ li r0, 1 -/* 8002BE74 90 01 00 08 */ stw r0, 8(r1) -/* 8002BE78 48 00 08 B4 */ b lbl_8002C72C -lbl_8002BE7C: -/* 8002BE7C 7F A3 EB 78 */ mr r3, r29 -/* 8002BE80 38 80 45 10 */ li r4, 0x4510 -/* 8002BE84 48 00 8B 39 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BE88 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BE8C 41 82 00 10 */ beq lbl_8002BE9C -/* 8002BE90 38 00 00 00 */ li r0, 0 -/* 8002BE94 90 01 00 08 */ stw r0, 8(r1) -/* 8002BE98 48 00 08 94 */ b lbl_8002C72C -lbl_8002BE9C: -/* 8002BE9C 7F A3 EB 78 */ mr r3, r29 -/* 8002BEA0 38 80 4A 40 */ li r4, 0x4a40 -/* 8002BEA4 48 00 8B 19 */ bl isEventBit__11dSv_event_cCFUs -/* 8002BEA8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BEAC 41 82 00 10 */ beq lbl_8002BEBC -/* 8002BEB0 38 00 00 04 */ li r0, 4 -/* 8002BEB4 90 01 00 08 */ stw r0, 8(r1) -/* 8002BEB8 48 00 08 74 */ b lbl_8002C72C -lbl_8002BEBC: -/* 8002BEBC 38 00 00 03 */ li r0, 3 -/* 8002BEC0 90 01 00 08 */ stw r0, 8(r1) -/* 8002BEC4 48 00 08 68 */ b lbl_8002C72C -lbl_8002BEC8: -/* 8002BEC8 7F E3 FB 78 */ mr r3, r31 -/* 8002BECC 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002BED0 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002BED4 38 84 00 97 */ addi r4, r4, 0x97 -/* 8002BED8 48 33 CA BD */ bl strcmp -/* 8002BEDC 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BEE0 40 82 01 10 */ bne lbl_8002BFF0 -/* 8002BEE4 2C 1E 00 01 */ cmpwi r30, 1 -/* 8002BEE8 40 82 00 2C */ bne lbl_8002BF14 -/* 8002BEEC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002BEF0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002BEF4 38 63 00 28 */ addi r3, r3, 0x28 -/* 8002BEF8 38 80 00 00 */ li r4, 0 -/* 8002BEFC 48 00 6C B5 */ bl isDarkClearLV__21dSv_player_status_b_cCFi -/* 8002BF00 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BF04 41 82 08 28 */ beq lbl_8002C72C -/* 8002BF08 38 00 00 02 */ li r0, 2 -/* 8002BF0C 90 01 00 08 */ stw r0, 8(r1) -/* 8002BF10 48 00 08 1C */ b lbl_8002C72C -lbl_8002BF14: -/* 8002BF14 2C 1E 00 02 */ cmpwi r30, 2 -/* 8002BF18 40 82 00 80 */ bne lbl_8002BF98 -/* 8002BF1C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002BF20 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002BF24 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002BF28 7F A3 EB 78 */ mr r3, r29 -/* 8002BF2C 38 80 07 80 */ li r4, 0x780 -/* 8002BF30 48 00 8A 8D */ bl isEventBit__11dSv_event_cCFUs -/* 8002BF34 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BF38 41 82 00 10 */ beq lbl_8002BF48 -/* 8002BF3C 38 00 00 03 */ li r0, 3 -/* 8002BF40 90 01 00 08 */ stw r0, 8(r1) -/* 8002BF44 48 00 07 E8 */ b lbl_8002C72C -lbl_8002BF48: -/* 8002BF48 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002BF4C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002BF50 38 63 00 28 */ addi r3, r3, 0x28 -/* 8002BF54 38 80 00 00 */ li r4, 0 -/* 8002BF58 48 00 6C 59 */ bl isDarkClearLV__21dSv_player_status_b_cCFi -/* 8002BF5C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BF60 41 82 00 10 */ beq lbl_8002BF70 -/* 8002BF64 38 00 00 02 */ li r0, 2 -/* 8002BF68 90 01 00 08 */ stw r0, 8(r1) -/* 8002BF6C 48 00 07 C0 */ b lbl_8002C72C -lbl_8002BF70: -/* 8002BF70 7F A3 EB 78 */ mr r3, r29 -/* 8002BF74 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002BF78 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002BF7C A0 84 00 5E */ lhz r4, 0x5e(r4) -/* 8002BF80 48 00 8A 3D */ bl isEventBit__11dSv_event_cCFUs -/* 8002BF84 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BF88 41 82 07 A4 */ beq lbl_8002C72C -/* 8002BF8C 38 00 00 01 */ li r0, 1 -/* 8002BF90 90 01 00 08 */ stw r0, 8(r1) -/* 8002BF94 48 00 07 98 */ b lbl_8002C72C -lbl_8002BF98: -/* 8002BF98 2C 1E 00 05 */ cmpwi r30, 5 -/* 8002BF9C 40 82 07 90 */ bne lbl_8002C72C -/* 8002BFA0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002BFA4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002BFA8 38 63 07 F0 */ addi r3, r3, 0x7f0 -/* 8002BFAC 38 80 06 01 */ li r4, 0x601 -/* 8002BFB0 48 00 8A 0D */ bl isEventBit__11dSv_event_cCFUs -/* 8002BFB4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BFB8 41 82 00 10 */ beq lbl_8002BFC8 -/* 8002BFBC 38 00 00 04 */ li r0, 4 -/* 8002BFC0 90 01 00 08 */ stw r0, 8(r1) -/* 8002BFC4 48 00 07 68 */ b lbl_8002C72C -lbl_8002BFC8: -/* 8002BFC8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002BFCC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002BFD0 38 63 00 28 */ addi r3, r3, 0x28 -/* 8002BFD4 38 80 00 00 */ li r4, 0 -/* 8002BFD8 48 00 6B D9 */ bl isDarkClearLV__21dSv_player_status_b_cCFi -/* 8002BFDC 2C 03 00 00 */ cmpwi r3, 0 -/* 8002BFE0 41 82 07 4C */ beq lbl_8002C72C -/* 8002BFE4 38 00 00 02 */ li r0, 2 -/* 8002BFE8 90 01 00 08 */ stw r0, 8(r1) -/* 8002BFEC 48 00 07 40 */ b lbl_8002C72C -lbl_8002BFF0: -/* 8002BFF0 7F E3 FB 78 */ mr r3, r31 -/* 8002BFF4 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002BFF8 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002BFFC 38 84 00 9E */ addi r4, r4, 0x9e -/* 8002C000 48 33 C9 95 */ bl strcmp -/* 8002C004 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C008 40 82 01 0C */ bne lbl_8002C114 -/* 8002C00C 2C 1E 00 01 */ cmpwi r30, 1 -/* 8002C010 40 82 00 AC */ bne lbl_8002C0BC -/* 8002C014 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C018 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C01C 38 63 00 28 */ addi r3, r3, 0x28 -/* 8002C020 38 80 00 00 */ li r4, 0 -/* 8002C024 48 00 6B 8D */ bl isDarkClearLV__21dSv_player_status_b_cCFi -/* 8002C028 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C02C 41 82 00 10 */ beq lbl_8002C03C -/* 8002C030 38 00 00 02 */ li r0, 2 -/* 8002C034 90 01 00 08 */ stw r0, 8(r1) -/* 8002C038 48 00 06 F4 */ b lbl_8002C72C -lbl_8002C03C: -/* 8002C03C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C040 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C044 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002C048 7F A3 EB 78 */ mr r3, r29 -/* 8002C04C 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002C050 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002C054 A0 84 00 5E */ lhz r4, 0x5e(r4) -/* 8002C058 48 00 89 65 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C05C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C060 41 82 00 10 */ beq lbl_8002C070 -/* 8002C064 38 00 00 04 */ li r0, 4 -/* 8002C068 90 01 00 08 */ stw r0, 8(r1) -/* 8002C06C 48 00 06 C0 */ b lbl_8002C72C -lbl_8002C070: -/* 8002C070 7F A3 EB 78 */ mr r3, r29 -/* 8002C074 38 80 45 10 */ li r4, 0x4510 -/* 8002C078 48 00 89 45 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C07C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C080 41 82 00 10 */ beq lbl_8002C090 -/* 8002C084 38 00 00 00 */ li r0, 0 -/* 8002C088 90 01 00 08 */ stw r0, 8(r1) -/* 8002C08C 48 00 06 A0 */ b lbl_8002C72C -lbl_8002C090: -/* 8002C090 7F A3 EB 78 */ mr r3, r29 -/* 8002C094 38 80 4A 20 */ li r4, 0x4a20 -/* 8002C098 48 00 89 25 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C09C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C0A0 41 82 00 10 */ beq lbl_8002C0B0 -/* 8002C0A4 38 00 00 03 */ li r0, 3 -/* 8002C0A8 90 01 00 08 */ stw r0, 8(r1) -/* 8002C0AC 48 00 06 80 */ b lbl_8002C72C -lbl_8002C0B0: -/* 8002C0B0 38 00 00 01 */ li r0, 1 -/* 8002C0B4 90 01 00 08 */ stw r0, 8(r1) -/* 8002C0B8 48 00 06 74 */ b lbl_8002C72C -lbl_8002C0BC: -/* 8002C0BC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C0C0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C0C4 38 63 00 28 */ addi r3, r3, 0x28 -/* 8002C0C8 38 80 00 00 */ li r4, 0 -/* 8002C0CC 48 00 6A E5 */ bl isDarkClearLV__21dSv_player_status_b_cCFi -/* 8002C0D0 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C0D4 41 82 00 10 */ beq lbl_8002C0E4 -/* 8002C0D8 38 00 00 02 */ li r0, 2 -/* 8002C0DC 90 01 00 08 */ stw r0, 8(r1) -/* 8002C0E0 48 00 06 4C */ b lbl_8002C72C -lbl_8002C0E4: -/* 8002C0E4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C0E8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C0EC 38 63 07 F0 */ addi r3, r3, 0x7f0 -/* 8002C0F0 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002C0F4 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002C0F8 A0 84 00 5E */ lhz r4, 0x5e(r4) -/* 8002C0FC 48 00 88 C1 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C100 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C104 41 82 06 28 */ beq lbl_8002C72C -/* 8002C108 38 00 00 04 */ li r0, 4 -/* 8002C10C 90 01 00 08 */ stw r0, 8(r1) -/* 8002C110 48 00 06 1C */ b lbl_8002C72C -lbl_8002C114: -/* 8002C114 7F E3 FB 78 */ mr r3, r31 -/* 8002C118 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C11C 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C120 38 84 00 A6 */ addi r4, r4, 0xa6 -/* 8002C124 48 33 C8 71 */ bl strcmp -/* 8002C128 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C12C 40 82 00 DC */ bne lbl_8002C208 -/* 8002C130 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C134 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C138 38 63 00 28 */ addi r3, r3, 0x28 -/* 8002C13C 38 80 00 00 */ li r4, 0 -/* 8002C140 48 00 6A 71 */ bl isDarkClearLV__21dSv_player_status_b_cCFi -/* 8002C144 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C148 41 82 00 18 */ beq lbl_8002C160 -/* 8002C14C 38 00 00 02 */ li r0, 2 -/* 8002C150 90 01 00 08 */ stw r0, 8(r1) -/* 8002C154 38 61 00 08 */ addi r3, r1, 8 -/* 8002C158 4B FF F2 9D */ bl dComIfG_get_timelayer__FPi -/* 8002C15C 48 00 05 D0 */ b lbl_8002C72C -lbl_8002C160: -/* 8002C160 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C164 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C168 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002C16C 7F A3 EB 78 */ mr r3, r29 -/* 8002C170 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002C174 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002C178 A0 84 00 5E */ lhz r4, 0x5e(r4) -/* 8002C17C 48 00 88 41 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C180 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C184 41 82 00 10 */ beq lbl_8002C194 -/* 8002C188 38 00 00 01 */ li r0, 1 -/* 8002C18C 90 01 00 08 */ stw r0, 8(r1) -/* 8002C190 48 00 05 9C */ b lbl_8002C72C -lbl_8002C194: -/* 8002C194 7F A3 EB 78 */ mr r3, r29 -/* 8002C198 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002C19C 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002C1A0 A0 84 01 52 */ lhz r4, 0x152(r4) -/* 8002C1A4 48 00 88 19 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C1A8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C1AC 41 82 00 10 */ beq lbl_8002C1BC -/* 8002C1B0 38 00 00 0A */ li r0, 0xa -/* 8002C1B4 90 01 00 08 */ stw r0, 8(r1) -/* 8002C1B8 48 00 05 74 */ b lbl_8002C72C -lbl_8002C1BC: -/* 8002C1BC 7F A3 EB 78 */ mr r3, r29 -/* 8002C1C0 38 80 45 10 */ li r4, 0x4510 -/* 8002C1C4 48 00 87 F9 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C1C8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C1CC 41 82 00 10 */ beq lbl_8002C1DC -/* 8002C1D0 38 00 00 09 */ li r0, 9 -/* 8002C1D4 90 01 00 08 */ stw r0, 8(r1) -/* 8002C1D8 48 00 05 54 */ b lbl_8002C72C -lbl_8002C1DC: -/* 8002C1DC 7F A3 EB 78 */ mr r3, r29 -/* 8002C1E0 38 80 4A 40 */ li r4, 0x4a40 -/* 8002C1E4 48 00 87 D9 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C1E8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C1EC 41 82 00 10 */ beq lbl_8002C1FC -/* 8002C1F0 38 00 00 0B */ li r0, 0xb -/* 8002C1F4 90 01 00 08 */ stw r0, 8(r1) -/* 8002C1F8 48 00 05 34 */ b lbl_8002C72C -lbl_8002C1FC: -/* 8002C1FC 38 00 00 0C */ li r0, 0xc -/* 8002C200 90 01 00 08 */ stw r0, 8(r1) -/* 8002C204 48 00 05 28 */ b lbl_8002C72C -lbl_8002C208: -/* 8002C208 7F E3 FB 78 */ mr r3, r31 -/* 8002C20C 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C210 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C214 38 84 00 AD */ addi r4, r4, 0xad -/* 8002C218 48 33 C7 7D */ bl strcmp -/* 8002C21C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C220 40 82 00 C4 */ bne lbl_8002C2E4 -/* 8002C224 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C228 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C22C 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002C230 7F A3 EB 78 */ mr r3, r29 -/* 8002C234 38 80 1E 08 */ li r4, 0x1e08 -/* 8002C238 48 00 87 85 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C23C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C240 41 82 00 10 */ beq lbl_8002C250 -/* 8002C244 38 00 00 06 */ li r0, 6 -/* 8002C248 90 01 00 08 */ stw r0, 8(r1) -/* 8002C24C 48 00 04 E0 */ b lbl_8002C72C -lbl_8002C250: -/* 8002C250 7F A3 EB 78 */ mr r3, r29 -/* 8002C254 38 80 0C 01 */ li r4, 0xc01 -/* 8002C258 48 00 87 65 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C25C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C260 41 82 00 10 */ beq lbl_8002C270 -/* 8002C264 38 00 00 04 */ li r0, 4 -/* 8002C268 90 01 00 08 */ stw r0, 8(r1) -/* 8002C26C 48 00 04 C0 */ b lbl_8002C72C -lbl_8002C270: -/* 8002C270 7F A3 EB 78 */ mr r3, r29 -/* 8002C274 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002C278 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002C27C A0 84 00 88 */ lhz r4, 0x88(r4) -/* 8002C280 48 00 87 3D */ bl isEventBit__11dSv_event_cCFUs -/* 8002C284 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C288 41 82 00 10 */ beq lbl_8002C298 -/* 8002C28C 38 00 00 00 */ li r0, 0 -/* 8002C290 90 01 00 08 */ stw r0, 8(r1) -/* 8002C294 48 00 04 98 */ b lbl_8002C72C -lbl_8002C298: -/* 8002C298 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C29C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C2A0 3B A3 0D D8 */ addi r29, r3, 0xdd8 -/* 8002C2A4 7F A3 EB 78 */ mr r3, r29 -/* 8002C2A8 38 80 06 01 */ li r4, 0x601 -/* 8002C2AC 48 00 87 11 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C2B0 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C2B4 41 82 04 78 */ beq lbl_8002C72C -/* 8002C2B8 7F A3 EB 78 */ mr r3, r29 -/* 8002C2BC 38 80 06 02 */ li r4, 0x602 -/* 8002C2C0 48 00 86 FD */ bl isEventBit__11dSv_event_cCFUs -/* 8002C2C4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C2C8 41 82 00 10 */ beq lbl_8002C2D8 -/* 8002C2CC 38 00 00 02 */ li r0, 2 -/* 8002C2D0 90 01 00 08 */ stw r0, 8(r1) -/* 8002C2D4 48 00 04 58 */ b lbl_8002C72C -lbl_8002C2D8: -/* 8002C2D8 38 00 00 03 */ li r0, 3 -/* 8002C2DC 90 01 00 08 */ stw r0, 8(r1) -/* 8002C2E0 48 00 04 4C */ b lbl_8002C72C -lbl_8002C2E4: -/* 8002C2E4 7F E3 FB 78 */ mr r3, r31 -/* 8002C2E8 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C2EC 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C2F0 38 84 00 B5 */ addi r4, r4, 0xb5 -/* 8002C2F4 48 33 C6 A1 */ bl strcmp -/* 8002C2F8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C2FC 40 82 01 40 */ bne lbl_8002C43C -/* 8002C300 2C 1E 00 08 */ cmpwi r30, 8 -/* 8002C304 40 82 00 50 */ bne lbl_8002C354 -/* 8002C308 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C30C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C310 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002C314 7F A3 EB 78 */ mr r3, r29 -/* 8002C318 38 80 1E 08 */ li r4, 0x1e08 -/* 8002C31C 48 00 86 A1 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C320 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C324 41 82 00 10 */ beq lbl_8002C334 -/* 8002C328 38 00 00 06 */ li r0, 6 -/* 8002C32C 90 01 00 08 */ stw r0, 8(r1) -/* 8002C330 48 00 03 FC */ b lbl_8002C72C -lbl_8002C334: -/* 8002C334 7F A3 EB 78 */ mr r3, r29 -/* 8002C338 38 80 0C 01 */ li r4, 0xc01 -/* 8002C33C 48 00 86 81 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C340 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C344 41 82 03 E8 */ beq lbl_8002C72C -/* 8002C348 38 00 00 04 */ li r0, 4 -/* 8002C34C 90 01 00 08 */ stw r0, 8(r1) -/* 8002C350 48 00 03 DC */ b lbl_8002C72C -lbl_8002C354: -/* 8002C354 2C 1E 00 10 */ cmpwi r30, 0x10 -/* 8002C358 40 82 00 90 */ bne lbl_8002C3E8 -/* 8002C35C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C360 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C364 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002C368 7F A3 EB 78 */ mr r3, r29 -/* 8002C36C 38 80 22 04 */ li r4, 0x2204 -/* 8002C370 48 00 86 4D */ bl isEventBit__11dSv_event_cCFUs -/* 8002C374 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C378 41 82 00 10 */ beq lbl_8002C388 -/* 8002C37C 38 00 00 06 */ li r0, 6 -/* 8002C380 90 01 00 08 */ stw r0, 8(r1) -/* 8002C384 48 00 03 A8 */ b lbl_8002C72C -lbl_8002C388: -/* 8002C388 7F A3 EB 78 */ mr r3, r29 -/* 8002C38C 38 80 21 02 */ li r4, 0x2102 -/* 8002C390 48 00 86 2D */ bl isEventBit__11dSv_event_cCFUs -/* 8002C394 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C398 41 82 00 10 */ beq lbl_8002C3A8 -/* 8002C39C 38 00 00 01 */ li r0, 1 -/* 8002C3A0 90 01 00 08 */ stw r0, 8(r1) -/* 8002C3A4 48 00 03 88 */ b lbl_8002C72C -lbl_8002C3A8: -/* 8002C3A8 7F A3 EB 78 */ mr r3, r29 -/* 8002C3AC 38 80 1E 08 */ li r4, 0x1e08 -/* 8002C3B0 48 00 86 0D */ bl isEventBit__11dSv_event_cCFUs -/* 8002C3B4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C3B8 41 82 00 10 */ beq lbl_8002C3C8 -/* 8002C3BC 38 00 00 06 */ li r0, 6 -/* 8002C3C0 90 01 00 08 */ stw r0, 8(r1) -/* 8002C3C4 48 00 03 68 */ b lbl_8002C72C -lbl_8002C3C8: -/* 8002C3C8 7F A3 EB 78 */ mr r3, r29 -/* 8002C3CC 38 80 0C 01 */ li r4, 0xc01 -/* 8002C3D0 48 00 85 ED */ bl isEventBit__11dSv_event_cCFUs -/* 8002C3D4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C3D8 41 82 03 54 */ beq lbl_8002C72C -/* 8002C3DC 38 00 00 04 */ li r0, 4 -/* 8002C3E0 90 01 00 08 */ stw r0, 8(r1) -/* 8002C3E4 48 00 03 48 */ b lbl_8002C72C -lbl_8002C3E8: -/* 8002C3E8 2C 1E 00 11 */ cmpwi r30, 0x11 -/* 8002C3EC 40 82 03 40 */ bne lbl_8002C72C -/* 8002C3F0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C3F4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C3F8 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002C3FC 7F A3 EB 78 */ mr r3, r29 -/* 8002C400 38 80 1E 08 */ li r4, 0x1e08 -/* 8002C404 48 00 85 B9 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C408 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C40C 41 82 00 10 */ beq lbl_8002C41C -/* 8002C410 38 00 00 00 */ li r0, 0 -/* 8002C414 90 01 00 08 */ stw r0, 8(r1) -/* 8002C418 48 00 03 14 */ b lbl_8002C72C -lbl_8002C41C: -/* 8002C41C 7F A3 EB 78 */ mr r3, r29 -/* 8002C420 38 80 0C 01 */ li r4, 0xc01 -/* 8002C424 48 00 85 99 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C428 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C42C 41 82 03 00 */ beq lbl_8002C72C -/* 8002C430 38 00 00 04 */ li r0, 4 -/* 8002C434 90 01 00 08 */ stw r0, 8(r1) -/* 8002C438 48 00 02 F4 */ b lbl_8002C72C -lbl_8002C43C: -/* 8002C43C 7F E3 FB 78 */ mr r3, r31 -/* 8002C440 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C444 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C448 38 84 00 BD */ addi r4, r4, 0xbd -/* 8002C44C 48 33 C5 49 */ bl strcmp -/* 8002C450 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C454 40 82 00 2C */ bne lbl_8002C480 -/* 8002C458 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C45C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C460 38 63 07 F0 */ addi r3, r3, 0x7f0 -/* 8002C464 38 80 23 20 */ li r4, 0x2320 -/* 8002C468 48 00 85 55 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C46C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C470 41 82 02 BC */ beq lbl_8002C72C -/* 8002C474 38 00 00 01 */ li r0, 1 -/* 8002C478 90 01 00 08 */ stw r0, 8(r1) -/* 8002C47C 48 00 02 B0 */ b lbl_8002C72C -lbl_8002C480: -/* 8002C480 7F E3 FB 78 */ mr r3, r31 -/* 8002C484 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C488 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C48C 38 84 00 C5 */ addi r4, r4, 0xc5 -/* 8002C490 48 33 C5 05 */ bl strcmp -/* 8002C494 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C498 40 82 00 68 */ bne lbl_8002C500 -/* 8002C49C 2C 1E 00 05 */ cmpwi r30, 5 -/* 8002C4A0 40 82 00 38 */ bne lbl_8002C4D8 -/* 8002C4A4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C4A8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C4AC 38 63 07 F0 */ addi r3, r3, 0x7f0 -/* 8002C4B0 38 80 1E 08 */ li r4, 0x1e08 -/* 8002C4B4 48 00 85 09 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C4B8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C4BC 41 82 00 10 */ beq lbl_8002C4CC -/* 8002C4C0 38 00 00 00 */ li r0, 0 -/* 8002C4C4 90 01 00 08 */ stw r0, 8(r1) -/* 8002C4C8 48 00 02 64 */ b lbl_8002C72C -lbl_8002C4CC: -/* 8002C4CC 38 00 00 01 */ li r0, 1 -/* 8002C4D0 90 01 00 08 */ stw r0, 8(r1) -/* 8002C4D4 48 00 02 58 */ b lbl_8002C72C -lbl_8002C4D8: -/* 8002C4D8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C4DC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C4E0 38 63 07 F0 */ addi r3, r3, 0x7f0 -/* 8002C4E4 38 80 22 10 */ li r4, 0x2210 -/* 8002C4E8 48 00 84 D5 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C4EC 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C4F0 41 82 02 3C */ beq lbl_8002C72C -/* 8002C4F4 38 00 00 01 */ li r0, 1 -/* 8002C4F8 90 01 00 08 */ stw r0, 8(r1) -/* 8002C4FC 48 00 02 30 */ b lbl_8002C72C -lbl_8002C500: -/* 8002C500 7F E3 FB 78 */ mr r3, r31 -/* 8002C504 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C508 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C50C 38 84 00 CD */ addi r4, r4, 0xcd -/* 8002C510 48 33 C4 85 */ bl strcmp -/* 8002C514 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C518 40 82 00 2C */ bne lbl_8002C544 -/* 8002C51C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C520 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C524 38 63 07 F0 */ addi r3, r3, 0x7f0 -/* 8002C528 38 80 20 08 */ li r4, 0x2008 -/* 8002C52C 48 00 84 91 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C530 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C534 41 82 01 F8 */ beq lbl_8002C72C -/* 8002C538 38 00 00 02 */ li r0, 2 -/* 8002C53C 90 01 00 08 */ stw r0, 8(r1) -/* 8002C540 48 00 01 EC */ b lbl_8002C72C -lbl_8002C544: -/* 8002C544 7F E3 FB 78 */ mr r3, r31 -/* 8002C548 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C54C 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C550 38 84 00 D5 */ addi r4, r4, 0xd5 -/* 8002C554 48 33 C4 41 */ bl strcmp -/* 8002C558 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C55C 40 82 00 70 */ bne lbl_8002C5CC -/* 8002C560 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C564 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C568 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002C56C 7F A3 EB 78 */ mr r3, r29 -/* 8002C570 38 80 2B 08 */ li r4, 0x2b08 -/* 8002C574 48 00 84 49 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C578 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C57C 41 82 00 10 */ beq lbl_8002C58C -/* 8002C580 38 00 00 03 */ li r0, 3 -/* 8002C584 90 01 00 08 */ stw r0, 8(r1) -/* 8002C588 48 00 01 A4 */ b lbl_8002C72C -lbl_8002C58C: -/* 8002C58C 7F A3 EB 78 */ mr r3, r29 -/* 8002C590 38 80 20 10 */ li r4, 0x2010 -/* 8002C594 48 00 84 29 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C598 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C59C 41 82 00 10 */ beq lbl_8002C5AC -/* 8002C5A0 38 00 00 02 */ li r0, 2 -/* 8002C5A4 90 01 00 08 */ stw r0, 8(r1) -/* 8002C5A8 48 00 01 84 */ b lbl_8002C72C -lbl_8002C5AC: -/* 8002C5AC 7F A3 EB 78 */ mr r3, r29 -/* 8002C5B0 38 80 0B 40 */ li r4, 0xb40 -/* 8002C5B4 48 00 84 09 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C5B8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C5BC 41 82 01 70 */ beq lbl_8002C72C -/* 8002C5C0 38 00 00 01 */ li r0, 1 -/* 8002C5C4 90 01 00 08 */ stw r0, 8(r1) -/* 8002C5C8 48 00 01 64 */ b lbl_8002C72C -lbl_8002C5CC: -/* 8002C5CC 7F E3 FB 78 */ mr r3, r31 -/* 8002C5D0 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C5D4 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C5D8 38 84 00 DD */ addi r4, r4, 0xdd -/* 8002C5DC 48 33 C3 B9 */ bl strcmp -/* 8002C5E0 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C5E4 40 82 00 2C */ bne lbl_8002C610 -/* 8002C5E8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C5EC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C5F0 38 63 07 F0 */ addi r3, r3, 0x7f0 -/* 8002C5F4 38 80 45 10 */ li r4, 0x4510 -/* 8002C5F8 48 00 83 C5 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C5FC 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C600 41 82 01 2C */ beq lbl_8002C72C -/* 8002C604 38 00 00 01 */ li r0, 1 -/* 8002C608 90 01 00 08 */ stw r0, 8(r1) -/* 8002C60C 48 00 01 20 */ b lbl_8002C72C -lbl_8002C610: -/* 8002C610 7F E3 FB 78 */ mr r3, r31 -/* 8002C614 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C618 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C61C 38 84 00 E4 */ addi r4, r4, 0xe4 -/* 8002C620 48 33 C3 75 */ bl strcmp -/* 8002C624 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C628 40 82 00 2C */ bne lbl_8002C654 -/* 8002C62C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C630 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C634 38 63 00 28 */ addi r3, r3, 0x28 -/* 8002C638 38 80 00 03 */ li r4, 3 -/* 8002C63C 48 00 65 B1 */ bl isTransformLV__21dSv_player_status_b_cCFi -/* 8002C640 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C644 41 82 00 E8 */ beq lbl_8002C72C -/* 8002C648 38 00 00 0D */ li r0, 0xd -/* 8002C64C 90 01 00 08 */ stw r0, 8(r1) -/* 8002C650 48 00 00 DC */ b lbl_8002C72C -lbl_8002C654: -/* 8002C654 7F E3 FB 78 */ mr r3, r31 -/* 8002C658 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C65C 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C660 38 84 00 EC */ addi r4, r4, 0xec -/* 8002C664 48 33 C3 31 */ bl strcmp -/* 8002C668 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C66C 40 82 00 28 */ bne lbl_8002C694 -/* 8002C670 2C 1E 00 0B */ cmpwi r30, 0xb -/* 8002C674 41 82 00 B8 */ beq lbl_8002C72C -/* 8002C678 2C 1E 00 0D */ cmpwi r30, 0xd -/* 8002C67C 41 82 00 B0 */ beq lbl_8002C72C -/* 8002C680 2C 1E 00 0E */ cmpwi r30, 0xe -/* 8002C684 41 82 00 A8 */ beq lbl_8002C72C -/* 8002C688 38 00 00 01 */ li r0, 1 -/* 8002C68C 90 01 00 08 */ stw r0, 8(r1) -/* 8002C690 48 00 00 9C */ b lbl_8002C72C -lbl_8002C694: -/* 8002C694 7F E3 FB 78 */ mr r3, r31 -/* 8002C698 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C69C 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C6A0 38 84 00 F3 */ addi r4, r4, 0xf3 -/* 8002C6A4 48 33 C2 F1 */ bl strcmp -/* 8002C6A8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C6AC 41 82 00 20 */ beq lbl_8002C6CC -/* 8002C6B0 7F E3 FB 78 */ mr r3, r31 -/* 8002C6B4 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C6B8 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C6BC 38 84 00 FB */ addi r4, r4, 0xfb -/* 8002C6C0 48 33 C2 D5 */ bl strcmp -/* 8002C6C4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C6C8 40 82 00 64 */ bne lbl_8002C72C -lbl_8002C6CC: -/* 8002C6CC 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */ -/* 8002C6D0 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */ -/* 8002C6D4 88 03 12 FE */ lbz r0, 0x12fe(r3) -/* 8002C6D8 2C 00 00 03 */ cmpwi r0, 3 -/* 8002C6DC 41 82 00 3C */ beq lbl_8002C718 -/* 8002C6E0 40 80 00 14 */ bge lbl_8002C6F4 -/* 8002C6E4 2C 00 00 01 */ cmpwi r0, 1 -/* 8002C6E8 41 82 00 18 */ beq lbl_8002C700 -/* 8002C6EC 40 80 00 20 */ bge lbl_8002C70C -/* 8002C6F0 48 00 00 3C */ b lbl_8002C72C -lbl_8002C6F4: -/* 8002C6F4 2C 00 00 05 */ cmpwi r0, 5 -/* 8002C6F8 40 80 00 34 */ bge lbl_8002C72C -/* 8002C6FC 48 00 00 28 */ b lbl_8002C724 -lbl_8002C700: -/* 8002C700 38 00 00 00 */ li r0, 0 -/* 8002C704 90 01 00 08 */ stw r0, 8(r1) -/* 8002C708 48 00 00 24 */ b lbl_8002C72C -lbl_8002C70C: -/* 8002C70C 38 00 00 01 */ li r0, 1 -/* 8002C710 90 01 00 08 */ stw r0, 8(r1) -/* 8002C714 48 00 00 18 */ b lbl_8002C72C -lbl_8002C718: -/* 8002C718 38 00 00 02 */ li r0, 2 -/* 8002C71C 90 01 00 08 */ stw r0, 8(r1) -/* 8002C720 48 00 00 0C */ b lbl_8002C72C -lbl_8002C724: -/* 8002C724 38 00 00 03 */ li r0, 3 -/* 8002C728 90 01 00 08 */ stw r0, 8(r1) -lbl_8002C72C: -/* 8002C72C 80 01 00 08 */ lwz r0, 8(r1) -/* 8002C730 2C 00 00 0E */ cmpwi r0, 0xe -/* 8002C734 40 82 02 00 */ bne lbl_8002C934 -/* 8002C738 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8002C73C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8002C740 3B A3 07 F0 */ addi r29, r3, 0x7f0 -/* 8002C744 7F A3 EB 78 */ mr r3, r29 -/* 8002C748 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 8002C74C 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 8002C750 A0 84 00 82 */ lhz r4, 0x82(r4) -/* 8002C754 48 00 82 69 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C758 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C75C 41 82 01 48 */ beq lbl_8002C8A4 -/* 8002C760 7F E3 FB 78 */ mr r3, r31 -/* 8002C764 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C768 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C76C 38 84 00 87 */ addi r4, r4, 0x87 -/* 8002C770 48 33 C2 25 */ bl strcmp -/* 8002C774 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C778 41 82 00 EC */ beq lbl_8002C864 -/* 8002C77C 7F E3 FB 78 */ mr r3, r31 -/* 8002C780 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C784 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C788 38 84 00 6F */ addi r4, r4, 0x6f -/* 8002C78C 48 33 C2 09 */ bl strcmp -/* 8002C790 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C794 41 82 00 D0 */ beq lbl_8002C864 -/* 8002C798 7F E3 FB 78 */ mr r3, r31 -/* 8002C79C 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C7A0 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C7A4 38 84 00 4F */ addi r4, r4, 0x4f -/* 8002C7A8 48 33 C1 ED */ bl strcmp -/* 8002C7AC 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C7B0 41 82 00 B4 */ beq lbl_8002C864 -/* 8002C7B4 7F E3 FB 78 */ mr r3, r31 -/* 8002C7B8 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C7BC 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C7C0 38 84 00 57 */ addi r4, r4, 0x57 -/* 8002C7C4 48 33 C1 D1 */ bl strcmp -/* 8002C7C8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C7CC 41 82 00 98 */ beq lbl_8002C864 -/* 8002C7D0 7F E3 FB 78 */ mr r3, r31 -/* 8002C7D4 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C7D8 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C7DC 38 84 00 5F */ addi r4, r4, 0x5f -/* 8002C7E0 48 33 C1 B5 */ bl strcmp -/* 8002C7E4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C7E8 40 82 00 0C */ bne lbl_8002C7F4 -/* 8002C7EC 2C 1E 00 05 */ cmpwi r30, 5 -/* 8002C7F0 41 82 00 74 */ beq lbl_8002C864 -lbl_8002C7F4: -/* 8002C7F4 7F E3 FB 78 */ mr r3, r31 -/* 8002C7F8 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C7FC 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C800 38 84 00 67 */ addi r4, r4, 0x67 -/* 8002C804 48 33 C1 91 */ bl strcmp -/* 8002C808 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C80C 41 82 00 58 */ beq lbl_8002C864 -/* 8002C810 7F E3 FB 78 */ mr r3, r31 -/* 8002C814 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C818 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C81C 38 84 00 AD */ addi r4, r4, 0xad -/* 8002C820 48 33 C1 75 */ bl strcmp -/* 8002C824 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C828 41 82 00 3C */ beq lbl_8002C864 -/* 8002C82C 7F E3 FB 78 */ mr r3, r31 -/* 8002C830 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C834 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C838 38 84 00 77 */ addi r4, r4, 0x77 -/* 8002C83C 48 33 C1 59 */ bl strcmp -/* 8002C840 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C844 41 82 00 20 */ beq lbl_8002C864 -/* 8002C848 7F E3 FB 78 */ mr r3, r31 -/* 8002C84C 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C850 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C854 38 84 00 B5 */ addi r4, r4, 0xb5 -/* 8002C858 48 33 C1 3D */ bl strcmp -/* 8002C85C 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C860 40 82 00 44 */ bne lbl_8002C8A4 -lbl_8002C864: -/* 8002C864 7F E3 FB 78 */ mr r3, r31 -/* 8002C868 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C86C 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C870 38 84 00 AD */ addi r4, r4, 0xad -/* 8002C874 48 33 C1 21 */ bl strcmp -/* 8002C878 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C87C 40 82 00 20 */ bne lbl_8002C89C -/* 8002C880 2C 1E 00 09 */ cmpwi r30, 9 -/* 8002C884 41 80 00 20 */ blt lbl_8002C8A4 -/* 8002C888 2C 1E 00 0E */ cmpwi r30, 0xe -/* 8002C88C 41 81 00 18 */ bgt lbl_8002C8A4 -/* 8002C890 38 00 00 0D */ li r0, 0xd -/* 8002C894 90 01 00 08 */ stw r0, 8(r1) -/* 8002C898 48 00 00 0C */ b lbl_8002C8A4 -lbl_8002C89C: -/* 8002C89C 38 00 00 0D */ li r0, 0xd -/* 8002C8A0 90 01 00 08 */ stw r0, 8(r1) -lbl_8002C8A4: -/* 8002C8A4 7F E3 FB 78 */ mr r3, r31 -/* 8002C8A8 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C8AC 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C8B0 38 84 00 E4 */ addi r4, r4, 0xe4 -/* 8002C8B4 48 33 C0 E1 */ bl strcmp -/* 8002C8B8 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C8BC 40 82 00 2C */ bne lbl_8002C8E8 -/* 8002C8C0 2C 1E 00 00 */ cmpwi r30, 0 -/* 8002C8C4 40 82 00 24 */ bne lbl_8002C8E8 -/* 8002C8C8 7F A3 EB 78 */ mr r3, r29 -/* 8002C8CC 38 80 4D 08 */ li r4, 0x4d08 -/* 8002C8D0 48 00 80 ED */ bl isEventBit__11dSv_event_cCFUs -/* 8002C8D4 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C8D8 40 82 00 5C */ bne lbl_8002C934 -/* 8002C8DC 38 00 00 0B */ li r0, 0xb -/* 8002C8E0 90 01 00 08 */ stw r0, 8(r1) -/* 8002C8E4 48 00 00 50 */ b lbl_8002C934 -lbl_8002C8E8: -/* 8002C8E8 7F E3 FB 78 */ mr r3, r31 -/* 8002C8EC 3C 80 80 38 */ lis r4, d_com_d_com_inf_game__stringBase0@ha /* 0x80378F38@ha */ -/* 8002C8F0 38 84 8F 38 */ addi r4, r4, d_com_d_com_inf_game__stringBase0@l /* 0x80378F38@l */ -/* 8002C8F4 38 84 01 03 */ addi r4, r4, 0x103 -/* 8002C8F8 48 33 C0 9D */ bl strcmp -/* 8002C8FC 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C900 40 82 00 34 */ bne lbl_8002C934 -/* 8002C904 2C 1E 00 0A */ cmpwi r30, 0xa -/* 8002C908 40 82 00 2C */ bne lbl_8002C934 -/* 8002C90C 7F A3 EB 78 */ mr r3, r29 -/* 8002C910 38 80 54 10 */ li r4, 0x5410 -/* 8002C914 48 00 80 A9 */ bl isEventBit__11dSv_event_cCFUs -/* 8002C918 2C 03 00 00 */ cmpwi r3, 0 -/* 8002C91C 41 82 00 10 */ beq lbl_8002C92C -/* 8002C920 38 00 00 01 */ li r0, 1 -/* 8002C924 90 01 00 08 */ stw r0, 8(r1) -/* 8002C928 48 00 00 0C */ b lbl_8002C934 -lbl_8002C92C: -/* 8002C92C 38 00 00 00 */ li r0, 0 -/* 8002C930 90 01 00 08 */ stw r0, 8(r1) -lbl_8002C934: -/* 8002C934 80 61 00 08 */ lwz r3, 8(r1) -/* 8002C938 39 61 00 20 */ addi r11, r1, 0x20 -/* 8002C93C 48 33 58 ED */ bl _restgpr_29 -/* 8002C940 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8002C944 7C 08 03 A6 */ mtlr r0 -/* 8002C948 38 21 00 20 */ addi r1, r1, 0x20 -/* 8002C94C 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/AIGetDSPSampleRate.s b/asm/dolphin/ai/ai/AIGetDSPSampleRate.s deleted file mode 100644 index e8680389155..00000000000 --- a/asm/dolphin/ai/ai/AIGetDSPSampleRate.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_8034FF34: -/* 8034FF34 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006C00@ha */ -/* 8034FF38 80 03 6C 00 */ lwz r0, 0x6C00(r3) /* 0xCC006C00@l */ -/* 8034FF3C 54 00 D7 FE */ rlwinm r0, r0, 0x1a, 0x1f, 0x1f -/* 8034FF40 68 03 00 01 */ xori r3, r0, 1 -/* 8034FF44 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/AIGetStreamPlayState.s b/asm/dolphin/ai/ai/AIGetStreamPlayState.s deleted file mode 100644 index ac338298dd4..00000000000 --- a/asm/dolphin/ai/ai/AIGetStreamPlayState.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_8034FE44: -/* 8034FE44 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006C00@ha */ -/* 8034FE48 80 03 6C 00 */ lwz r0, 0x6C00(r3) /* 0xCC006C00@l */ -/* 8034FE4C 54 03 07 FE */ clrlwi r3, r0, 0x1f -/* 8034FE50 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/AIGetStreamSampleRate.s b/asm/dolphin/ai/ai/AIGetStreamSampleRate.s deleted file mode 100644 index 11a77502557..00000000000 --- a/asm/dolphin/ai/ai/AIGetStreamSampleRate.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_8035001C: -/* 8035001C 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006C00@ha */ -/* 80350020 80 03 6C 00 */ lwz r0, 0x6C00(r3) /* 0xCC006C00@l */ -/* 80350024 54 03 FF FE */ rlwinm r3, r0, 0x1f, 0x1f, 0x1f -/* 80350028 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/AIGetStreamVolLeft.s b/asm/dolphin/ai/ai/AIGetStreamVolLeft.s deleted file mode 100644 index 39419941e09..00000000000 --- a/asm/dolphin/ai/ai/AIGetStreamVolLeft.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_80350048: -/* 80350048 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006C04@ha */ -/* 8035004C 80 03 6C 04 */ lwz r0, 0x6C04(r3) /* 0xCC006C04@l */ -/* 80350050 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 80350054 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/AIGetStreamVolRight.s b/asm/dolphin/ai/ai/AIGetStreamVolRight.s deleted file mode 100644 index fd39c3e43f9..00000000000 --- a/asm/dolphin/ai/ai/AIGetStreamVolRight.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_80350074: -/* 80350074 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006C04@ha */ -/* 80350078 80 03 6C 04 */ lwz r0, 0x6C04(r3) /* 0xCC006C04@l */ -/* 8035007C 54 03 C6 3E */ rlwinm r3, r0, 0x18, 0x18, 0x1f -/* 80350080 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/AIInit.s b/asm/dolphin/ai/ai/AIInit.s index 6bd2deb40f5..3cd46ae7250 100644 --- a/asm/dolphin/ai/ai/AIInit.s +++ b/asm/dolphin/ai/ai/AIInit.s @@ -35,18 +35,18 @@ lbl_80350084: /* 80350108 7C 6A 18 16 */ mulhwu r3, r10, r3 /* 8035010C 55 08 BA 7E */ srwi r8, r8, 9 /* 80350110 54 E7 BA 7E */ srwi r7, r7, 9 -/* 80350114 91 0D 93 14 */ stw r8, data_80451894(r13) +/* 80350114 91 0D 93 14 */ stw r8, bound_32KHz+0x4(r13) /* 80350118 54 A5 BA 7E */ srwi r5, r5, 9 /* 8035011C 54 84 BA 7E */ srwi r4, r4, 9 -/* 80350120 90 ED 93 1C */ stw r7, data_8045189C(r13) +/* 80350120 90 ED 93 1C */ stw r7, bound_48KHz+0x4(r13) /* 80350124 3B E0 00 00 */ li r31, 0 /* 80350128 54 63 BA 7E */ srwi r3, r3, 9 -/* 8035012C 90 AD 93 24 */ stw r5, data_804518A4(r13) +/* 8035012C 90 AD 93 24 */ stw r5, min_wait+0x4(r13) /* 80350130 3C C0 CC 00 */ lis r6, 0xCC00 /* 0xCC006C00@ha */ -/* 80350134 90 6D 93 34 */ stw r3, data_804518B4(r13) +/* 80350134 90 6D 93 34 */ stw r3, buffer+0x4(r13) /* 80350138 38 60 00 01 */ li r3, 1 /* 8035013C 80 06 6C 00 */ lwz r0, 0x6C00(r6) /* 0xCC006C00@l */ -/* 80350140 90 8D 93 2C */ stw r4, data_804518AC(r13) +/* 80350140 90 8D 93 2C */ stw r4, max_wait+0x4(r13) /* 80350144 54 00 06 F2 */ rlwinm r0, r0, 0, 0x1b, 0x19 /* 80350148 60 00 00 20 */ ori r0, r0, 0x20 /* 8035014C 93 ED 93 10 */ stw r31, bound_32KHz(r13) diff --git a/asm/dolphin/ai/ai/AIInitDMA.s b/asm/dolphin/ai/ai/AIInitDMA.s deleted file mode 100644 index aa7dc0c4d70..00000000000 --- a/asm/dolphin/ai/ai/AIInitDMA.s +++ /dev/null @@ -1,35 +0,0 @@ -lbl_8034FCB4: -/* 8034FCB4 7C 08 02 A6 */ mflr r0 -/* 8034FCB8 90 01 00 04 */ stw r0, 4(r1) -/* 8034FCBC 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8034FCC0 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8034FCC4 3B E4 00 00 */ addi r31, r4, 0 -/* 8034FCC8 93 C1 00 10 */ stw r30, 0x10(r1) -/* 8034FCCC 3B C3 00 00 */ addi r30, r3, 0 -/* 8034FCD0 4B FE DA 25 */ bl OSDisableInterrupts -/* 8034FCD4 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC005030@ha */ -/* 8034FCD8 A0 04 50 30 */ lhz r0, 0x5030(r4) /* 0xCC005030@l */ -/* 8034FCDC 38 A4 50 00 */ addi r5, r4, 0x5000 -/* 8034FCE0 38 C4 50 00 */ addi r6, r4, 0x5000 -/* 8034FCE4 38 E4 50 00 */ addi r7, r4, 0x5000 -/* 8034FCE8 54 04 00 2A */ rlwinm r4, r0, 0, 0, 0x15 -/* 8034FCEC 57 C0 84 3E */ srwi r0, r30, 0x10 -/* 8034FCF0 7C 80 03 78 */ or r0, r4, r0 -/* 8034FCF4 B0 05 00 30 */ sth r0, 0x30(r5) -/* 8034FCF8 57 C0 04 3E */ clrlwi r0, r30, 0x10 -/* 8034FCFC A0 86 00 32 */ lhz r4, 0x32(r6) -/* 8034FD00 54 84 06 DE */ rlwinm r4, r4, 0, 0x1b, 0xf -/* 8034FD04 7C 80 03 78 */ or r0, r4, r0 -/* 8034FD08 B0 06 00 32 */ sth r0, 0x32(r6) -/* 8034FD0C 57 E0 DC 3E */ rlwinm r0, r31, 0x1b, 0x10, 0x1f -/* 8034FD10 A0 87 00 36 */ lhz r4, 0x36(r7) -/* 8034FD14 54 84 00 20 */ rlwinm r4, r4, 0, 0, 0x10 -/* 8034FD18 7C 80 03 78 */ or r0, r4, r0 -/* 8034FD1C B0 07 00 36 */ sth r0, 0x36(r7) -/* 8034FD20 4B FE D9 FD */ bl OSRestoreInterrupts -/* 8034FD24 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8034FD28 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8034FD2C 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 8034FD30 38 21 00 18 */ addi r1, r1, 0x18 -/* 8034FD34 7C 08 03 A6 */ mtlr r0 -/* 8034FD38 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/AISetDSPSampleRate.s b/asm/dolphin/ai/ai/AISetDSPSampleRate.s deleted file mode 100644 index ce51dafa4ea..00000000000 --- a/asm/dolphin/ai/ai/AISetDSPSampleRate.s +++ /dev/null @@ -1,58 +0,0 @@ -lbl_8034FE54: -/* 8034FE54 7C 08 02 A6 */ mflr r0 -/* 8034FE58 90 01 00 04 */ stw r0, 4(r1) -/* 8034FE5C 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8034FE60 BF 41 00 10 */ stmw r26, 0x10(r1) -/* 8034FE64 7C 7A 1B 78 */ mr r26, r3 -/* 8034FE68 48 00 00 CD */ bl AIGetDSPSampleRate -/* 8034FE6C 7C 1A 18 40 */ cmplw r26, r3 -/* 8034FE70 41 82 00 B0 */ beq lbl_8034FF20 -/* 8034FE74 3F E0 CC 00 */ lis r31, 0xCC00 /* 0xCC006C00@ha */ -/* 8034FE78 80 1F 6C 00 */ lwz r0, 0x6C00(r31) /* 0xCC006C00@l */ -/* 8034FE7C 28 1A 00 00 */ cmplwi r26, 0 -/* 8034FE80 54 00 06 B0 */ rlwinm r0, r0, 0, 0x1a, 0x18 -/* 8034FE84 90 1F 6C 00 */ stw r0, 0x6c00(r31) -/* 8034FE88 40 82 00 98 */ bne lbl_8034FF20 -/* 8034FE8C 48 00 01 BD */ bl AIGetStreamVolLeft -/* 8034FE90 7C 7E 1B 78 */ mr r30, r3 -/* 8034FE94 48 00 01 E1 */ bl AIGetStreamVolRight -/* 8034FE98 80 1F 6C 00 */ lwz r0, 0x6c00(r31) -/* 8034FE9C 3B A3 00 00 */ addi r29, r3, 0 -/* 8034FEA0 54 1B 07 FE */ clrlwi r27, r0, 0x1f -/* 8034FEA4 48 00 01 79 */ bl AIGetStreamSampleRate -/* 8034FEA8 3B 83 00 00 */ addi r28, r3, 0 -/* 8034FEAC 38 60 00 00 */ li r3, 0 -/* 8034FEB0 48 00 01 7D */ bl AISetStreamVolLeft -/* 8034FEB4 38 60 00 00 */ li r3, 0 -/* 8034FEB8 48 00 01 A1 */ bl AISetStreamVolRight -/* 8034FEBC 4B FE D8 39 */ bl OSDisableInterrupts -/* 8034FEC0 7C 7A 1B 78 */ mr r26, r3 -/* 8034FEC4 48 00 04 AD */ bl __AI_SRC_INIT -/* 8034FEC8 80 9F 6C 00 */ lwz r4, 0x6c00(r31) -/* 8034FECC 57 80 08 3C */ slwi r0, r28, 1 -/* 8034FED0 38 7A 00 00 */ addi r3, r26, 0 -/* 8034FED4 54 84 06 F2 */ rlwinm r4, r4, 0, 0x1b, 0x19 -/* 8034FED8 60 84 00 20 */ ori r4, r4, 0x20 -/* 8034FEDC 90 9F 6C 00 */ stw r4, 0x6c00(r31) -/* 8034FEE0 80 9F 6C 00 */ lwz r4, 0x6c00(r31) -/* 8034FEE4 54 84 07 FA */ rlwinm r4, r4, 0, 0x1f, 0x1d -/* 8034FEE8 7C 80 03 78 */ or r0, r4, r0 -/* 8034FEEC 90 1F 6C 00 */ stw r0, 0x6c00(r31) -/* 8034FEF0 80 1F 6C 00 */ lwz r0, 0x6c00(r31) -/* 8034FEF4 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e -/* 8034FEF8 7C 00 DB 78 */ or r0, r0, r27 -/* 8034FEFC 90 1F 6C 00 */ stw r0, 0x6c00(r31) -/* 8034FF00 80 1F 6C 00 */ lwz r0, 0x6c00(r31) -/* 8034FF04 60 00 00 40 */ ori r0, r0, 0x40 -/* 8034FF08 90 1F 6C 00 */ stw r0, 0x6c00(r31) -/* 8034FF0C 4B FE D8 11 */ bl OSRestoreInterrupts -/* 8034FF10 7F C3 F3 78 */ mr r3, r30 -/* 8034FF14 48 00 01 19 */ bl AISetStreamVolLeft -/* 8034FF18 7F A3 EB 78 */ mr r3, r29 -/* 8034FF1C 48 00 01 3D */ bl AISetStreamVolRight -lbl_8034FF20: -/* 8034FF20 BB 41 00 10 */ lmw r26, 0x10(r1) -/* 8034FF24 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8034FF28 38 21 00 28 */ addi r1, r1, 0x28 -/* 8034FF2C 7C 08 03 A6 */ mtlr r0 -/* 8034FF30 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/AISetStreamPlayState.s b/asm/dolphin/ai/ai/AISetStreamPlayState.s deleted file mode 100644 index de8fb117f17..00000000000 --- a/asm/dolphin/ai/ai/AISetStreamPlayState.s +++ /dev/null @@ -1,57 +0,0 @@ -lbl_8034FD6C: -/* 8034FD6C 7C 08 02 A6 */ mflr r0 -/* 8034FD70 90 01 00 04 */ stw r0, 4(r1) -/* 8034FD74 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8034FD78 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8034FD7C 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8034FD80 93 A1 00 14 */ stw r29, 0x14(r1) -/* 8034FD84 7C 7D 1B 78 */ mr r29, r3 -/* 8034FD88 48 00 00 BD */ bl AIGetStreamPlayState -/* 8034FD8C 7C 1D 18 40 */ cmplw r29, r3 -/* 8034FD90 41 82 00 98 */ beq lbl_8034FE28 -/* 8034FD94 48 00 02 89 */ bl AIGetStreamSampleRate -/* 8034FD98 28 03 00 00 */ cmplwi r3, 0 -/* 8034FD9C 40 82 00 78 */ bne lbl_8034FE14 -/* 8034FDA0 28 1D 00 01 */ cmplwi r29, 1 -/* 8034FDA4 40 82 00 70 */ bne lbl_8034FE14 -/* 8034FDA8 48 00 02 CD */ bl AIGetStreamVolRight -/* 8034FDAC 7C 7E 1B 78 */ mr r30, r3 -/* 8034FDB0 48 00 02 99 */ bl AIGetStreamVolLeft -/* 8034FDB4 3B A3 00 00 */ addi r29, r3, 0 -/* 8034FDB8 38 60 00 00 */ li r3, 0 -/* 8034FDBC 48 00 02 9D */ bl AISetStreamVolRight -/* 8034FDC0 38 60 00 00 */ li r3, 0 -/* 8034FDC4 48 00 02 69 */ bl AISetStreamVolLeft -/* 8034FDC8 4B FE D9 2D */ bl OSDisableInterrupts -/* 8034FDCC 7C 7F 1B 78 */ mr r31, r3 -/* 8034FDD0 48 00 05 A1 */ bl __AI_SRC_INIT -/* 8034FDD4 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC006C00@ha */ -/* 8034FDD8 80 04 6C 00 */ lwz r0, 0x6C00(r4) /* 0xCC006C00@l */ -/* 8034FDDC 38 7F 00 00 */ addi r3, r31, 0 -/* 8034FDE0 54 00 06 F2 */ rlwinm r0, r0, 0, 0x1b, 0x19 -/* 8034FDE4 60 00 00 20 */ ori r0, r0, 0x20 -/* 8034FDE8 90 04 6C 00 */ stw r0, 0x6c00(r4) -/* 8034FDEC 80 04 6C 00 */ lwz r0, 0x6c00(r4) -/* 8034FDF0 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e -/* 8034FDF4 60 00 00 01 */ ori r0, r0, 1 -/* 8034FDF8 90 04 6C 00 */ stw r0, 0x6c00(r4) -/* 8034FDFC 4B FE D9 21 */ bl OSRestoreInterrupts -/* 8034FE00 7F C3 F3 78 */ mr r3, r30 -/* 8034FE04 48 00 02 29 */ bl AISetStreamVolLeft -/* 8034FE08 7F A3 EB 78 */ mr r3, r29 -/* 8034FE0C 48 00 02 4D */ bl AISetStreamVolRight -/* 8034FE10 48 00 00 18 */ b lbl_8034FE28 -lbl_8034FE14: -/* 8034FE14 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006C00@ha */ -/* 8034FE18 80 03 6C 00 */ lwz r0, 0x6C00(r3) /* 0xCC006C00@l */ -/* 8034FE1C 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e -/* 8034FE20 7C 00 EB 78 */ or r0, r0, r29 -/* 8034FE24 90 03 6C 00 */ stw r0, 0x6c00(r3) -lbl_8034FE28: -/* 8034FE28 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8034FE2C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8034FE30 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8034FE34 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 8034FE38 38 21 00 20 */ addi r1, r1, 0x20 -/* 8034FE3C 7C 08 03 A6 */ mtlr r0 -/* 8034FE40 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/AISetStreamVolLeft.s b/asm/dolphin/ai/ai/AISetStreamVolLeft.s deleted file mode 100644 index dc98f1ddae3..00000000000 --- a/asm/dolphin/ai/ai/AISetStreamVolLeft.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_8035002C: -/* 8035002C 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC006C00@ha */ -/* 80350030 38 84 6C 00 */ addi r4, r4, 0x6C00 /* 0xCC006C00@l */ -/* 80350034 80 04 00 04 */ lwz r0, 4(r4) -/* 80350038 54 00 00 2E */ rlwinm r0, r0, 0, 0, 0x17 -/* 8035003C 50 60 06 3E */ rlwimi r0, r3, 0, 0x18, 0x1f -/* 80350040 90 04 00 04 */ stw r0, 4(r4) -/* 80350044 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/AISetStreamVolRight.s b/asm/dolphin/ai/ai/AISetStreamVolRight.s deleted file mode 100644 index c707ba4c969..00000000000 --- a/asm/dolphin/ai/ai/AISetStreamVolRight.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_80350058: -/* 80350058 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC006C00@ha */ -/* 8035005C 38 84 6C 00 */ addi r4, r4, 0x6C00 /* 0xCC006C00@l */ -/* 80350060 80 04 00 04 */ lwz r0, 4(r4) -/* 80350064 54 00 06 1E */ rlwinm r0, r0, 0, 0x18, 0xf -/* 80350068 50 60 44 2E */ rlwimi r0, r3, 8, 0x10, 0x17 -/* 8035006C 90 04 00 04 */ stw r0, 4(r4) -/* 80350070 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/AIStartDMA.s b/asm/dolphin/ai/ai/AIStartDMA.s deleted file mode 100644 index 55d79863db1..00000000000 --- a/asm/dolphin/ai/ai/AIStartDMA.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_8034FD3C: -/* 8034FD3C 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC005000@ha */ -/* 8034FD40 38 63 50 00 */ addi r3, r3, 0x5000 /* 0xCC005000@l */ -/* 8034FD44 A0 03 00 36 */ lhz r0, 0x36(r3) -/* 8034FD48 60 00 80 00 */ ori r0, r0, 0x8000 -/* 8034FD4C B0 03 00 36 */ sth r0, 0x36(r3) -/* 8034FD50 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/AIStopDMA.s b/asm/dolphin/ai/ai/AIStopDMA.s deleted file mode 100644 index dd37ed36e0e..00000000000 --- a/asm/dolphin/ai/ai/AIStopDMA.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_8034FD54: -/* 8034FD54 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC005000@ha */ -/* 8034FD58 38 63 50 00 */ addi r3, r3, 0x5000 /* 0xCC005000@l */ -/* 8034FD5C A0 03 00 36 */ lhz r0, 0x36(r3) -/* 8034FD60 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 8034FD64 B0 03 00 36 */ sth r0, 0x36(r3) -/* 8034FD68 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/__AICallbackStackSwitch.s b/asm/dolphin/ai/ai/__AICallbackStackSwitch.s deleted file mode 100644 index d5e983237e6..00000000000 --- a/asm/dolphin/ai/ai/__AICallbackStackSwitch.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_80350318: -/* 80350318 7C 08 02 A6 */ mflr r0 -/* 8035031C 90 01 00 04 */ stw r0, 4(r1) -/* 80350320 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80350324 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80350328 7C 7F 1B 78 */ mr r31, r3 -/* 8035032C 3C A0 80 45 */ lis r5, __OldStack@ha /* 0x80451884@ha */ -/* 80350330 38 A5 18 84 */ addi r5, r5, __OldStack@l /* 0x80451884@l */ -/* 80350334 90 25 00 00 */ stw r1, 0(r5) -/* 80350338 3C A0 80 45 */ lis r5, __CallbackStack@ha /* 0x80451880@ha */ -/* 8035033C 38 A5 18 80 */ addi r5, r5, __CallbackStack@l /* 0x80451880@l */ -/* 80350340 80 25 00 00 */ lwz r1, 0(r5) -/* 80350344 38 21 FF F8 */ addi r1, r1, -8 -/* 80350348 7F E8 03 A6 */ mtlr r31 -/* 8035034C 4E 80 00 21 */ blrl -/* 80350350 3C A0 80 45 */ lis r5, __OldStack@ha /* 0x80451884@ha */ -/* 80350354 38 A5 18 84 */ addi r5, r5, __OldStack@l /* 0x80451884@l */ -/* 80350358 80 25 00 00 */ lwz r1, 0(r5) -/* 8035035C 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80350360 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80350364 38 21 00 18 */ addi r1, r1, 0x18 -/* 80350368 7C 08 03 A6 */ mtlr r0 -/* 8035036C 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/__AIDHandler.s b/asm/dolphin/ai/ai/__AIDHandler.s deleted file mode 100644 index 5052d5780da..00000000000 --- a/asm/dolphin/ai/ai/__AIDHandler.s +++ /dev/null @@ -1,47 +0,0 @@ -lbl_8035026C: -/* 8035026C 7C 08 02 A6 */ mflr r0 -/* 80350270 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC005000@ha */ -/* 80350274 90 01 00 04 */ stw r0, 4(r1) -/* 80350278 38 63 50 00 */ addi r3, r3, 0x5000 /* 0xCC005000@l */ -/* 8035027C 38 00 FF 5F */ li r0, -161 -/* 80350280 94 21 FD 20 */ stwu r1, -0x2e0(r1) -/* 80350284 93 E1 02 DC */ stw r31, 0x2dc(r1) -/* 80350288 3B E4 00 00 */ addi r31, r4, 0 -/* 8035028C A0 A3 00 0A */ lhz r5, 0xa(r3) -/* 80350290 7C A0 00 38 */ and r0, r5, r0 -/* 80350294 60 00 00 08 */ ori r0, r0, 8 -/* 80350298 B0 03 00 0A */ sth r0, 0xa(r3) -/* 8035029C 38 61 00 10 */ addi r3, r1, 0x10 -/* 803502A0 4B FE BD 61 */ bl OSClearContext -/* 803502A4 38 61 00 10 */ addi r3, r1, 0x10 -/* 803502A8 4B FE BB 91 */ bl OSSetCurrentContext -/* 803502AC 80 6D 92 FC */ lwz r3, __AID_Callback(r13) -/* 803502B0 28 03 00 00 */ cmplwi r3, 0 -/* 803502B4 41 82 00 40 */ beq lbl_803502F4 -/* 803502B8 80 0D 93 0C */ lwz r0, __AID_Active(r13) -/* 803502BC 2C 00 00 00 */ cmpwi r0, 0 -/* 803502C0 40 82 00 34 */ bne lbl_803502F4 -/* 803502C4 80 0D 93 00 */ lwz r0, __CallbackStack(r13) -/* 803502C8 38 80 00 01 */ li r4, 1 -/* 803502CC 90 8D 93 0C */ stw r4, __AID_Active(r13) -/* 803502D0 28 00 00 00 */ cmplwi r0, 0 -/* 803502D4 41 82 00 0C */ beq lbl_803502E0 -/* 803502D8 48 00 00 41 */ bl __AICallbackStackSwitch -/* 803502DC 48 00 00 10 */ b lbl_803502EC -lbl_803502E0: -/* 803502E0 39 83 00 00 */ addi r12, r3, 0 -/* 803502E4 7D 88 03 A6 */ mtlr r12 -/* 803502E8 4E 80 00 21 */ blrl -lbl_803502EC: -/* 803502EC 38 00 00 00 */ li r0, 0 -/* 803502F0 90 0D 93 0C */ stw r0, __AID_Active(r13) -lbl_803502F4: -/* 803502F4 38 61 00 10 */ addi r3, r1, 0x10 -/* 803502F8 4B FE BD 09 */ bl OSClearContext -/* 803502FC 7F E3 FB 78 */ mr r3, r31 -/* 80350300 4B FE BB 39 */ bl OSSetCurrentContext -/* 80350304 80 01 02 E4 */ lwz r0, 0x2e4(r1) -/* 80350308 83 E1 02 DC */ lwz r31, 0x2dc(r1) -/* 8035030C 38 21 02 E0 */ addi r1, r1, 0x2e0 -/* 80350310 7C 08 03 A6 */ mtlr r0 -/* 80350314 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/__AISHandler.s b/asm/dolphin/ai/ai/__AISHandler.s deleted file mode 100644 index 3d70cf58635..00000000000 --- a/asm/dolphin/ai/ai/__AISHandler.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_803501F0: -/* 803501F0 7C 08 02 A6 */ mflr r0 -/* 803501F4 90 01 00 04 */ stw r0, 4(r1) -/* 803501F8 94 21 FD 20 */ stwu r1, -0x2e0(r1) -/* 803501FC 93 E1 02 DC */ stw r31, 0x2dc(r1) -/* 80350200 3F E0 CC 00 */ lis r31, 0xCC00 /* 0xCC006C00@ha */ -/* 80350204 80 1F 6C 00 */ lwz r0, 0x6C00(r31) /* 0xCC006C00@l */ -/* 80350208 38 61 00 10 */ addi r3, r1, 0x10 -/* 8035020C 93 C1 02 D8 */ stw r30, 0x2d8(r1) -/* 80350210 60 00 00 08 */ ori r0, r0, 8 -/* 80350214 90 1F 6C 00 */ stw r0, 0x6c00(r31) -/* 80350218 3B C4 00 00 */ addi r30, r4, 0 -/* 8035021C 4B FE BD E5 */ bl OSClearContext -/* 80350220 38 61 00 10 */ addi r3, r1, 0x10 -/* 80350224 4B FE BC 15 */ bl OSSetCurrentContext -/* 80350228 81 8D 92 F8 */ lwz r12, __AIS_Callback(r13) -/* 8035022C 28 0C 00 00 */ cmplwi r12, 0 -/* 80350230 41 82 00 14 */ beq lbl_80350244 -/* 80350234 38 7F 6C 00 */ addi r3, r31, 0x6c00 -/* 80350238 7D 88 03 A6 */ mtlr r12 -/* 8035023C 80 63 00 08 */ lwz r3, 8(r3) -/* 80350240 4E 80 00 21 */ blrl -lbl_80350244: -/* 80350244 38 61 00 10 */ addi r3, r1, 0x10 -/* 80350248 4B FE BD B9 */ bl OSClearContext -/* 8035024C 7F C3 F3 78 */ mr r3, r30 -/* 80350250 4B FE BB E9 */ bl OSSetCurrentContext -/* 80350254 80 01 02 E4 */ lwz r0, 0x2e4(r1) -/* 80350258 83 E1 02 DC */ lwz r31, 0x2dc(r1) -/* 8035025C 83 C1 02 D8 */ lwz r30, 0x2d8(r1) -/* 80350260 38 21 02 E0 */ addi r1, r1, 0x2e0 -/* 80350264 7C 08 03 A6 */ mtlr r0 -/* 80350268 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/__AI_SRC_INIT.s b/asm/dolphin/ai/ai/__AI_SRC_INIT.s deleted file mode 100644 index 7716d91d08a..00000000000 --- a/asm/dolphin/ai/ai/__AI_SRC_INIT.s +++ /dev/null @@ -1,134 +0,0 @@ -lbl_80350370: -/* 80350370 7C 08 02 A6 */ mflr r0 -/* 80350374 90 01 00 04 */ stw r0, 4(r1) -/* 80350378 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8035037C BF 41 00 18 */ stmw r26, 0x18(r1) -/* 80350380 38 80 00 00 */ li r4, 0 -/* 80350384 38 60 00 00 */ li r3, 0 -/* 80350388 38 00 00 00 */ li r0, 0 -/* 8035038C 3B 80 00 00 */ li r28, 0 -/* 80350390 3B A0 00 00 */ li r29, 0 -/* 80350394 48 00 00 04 */ b lbl_80350398 -lbl_80350398: -/* 80350398 3F E0 CC 00 */ lis r31, 0xcc00 -/* 8035039C 48 00 00 04 */ b lbl_803503A0 -lbl_803503A0: -/* 803503A0 48 00 01 64 */ b lbl_80350504 -lbl_803503A4: -/* 803503A4 80 1F 6C 00 */ lwz r0, 0x6c00(r31) -/* 803503A8 3B DF 6C 00 */ addi r30, r31, 0x6c00 -/* 803503AC 3B DE 00 08 */ addi r30, r30, 8 -/* 803503B0 54 00 06 F2 */ rlwinm r0, r0, 0, 0x1b, 0x19 -/* 803503B4 60 00 00 20 */ ori r0, r0, 0x20 -/* 803503B8 90 1F 6C 00 */ stw r0, 0x6c00(r31) -/* 803503BC 80 1F 6C 00 */ lwz r0, 0x6c00(r31) -/* 803503C0 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d -/* 803503C4 90 1F 6C 00 */ stw r0, 0x6c00(r31) -/* 803503C8 80 1F 6C 00 */ lwz r0, 0x6c00(r31) -/* 803503CC 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e -/* 803503D0 60 00 00 01 */ ori r0, r0, 1 -/* 803503D4 90 1F 6C 00 */ stw r0, 0x6c00(r31) -/* 803503D8 80 7E 00 00 */ lwz r3, 0(r30) -/* 803503DC 48 00 00 04 */ b lbl_803503E0 -lbl_803503E0: -/* 803503E0 48 00 00 04 */ b lbl_803503E4 -lbl_803503E4: -/* 803503E4 80 1E 00 00 */ lwz r0, 0(r30) -/* 803503E8 7C 03 00 40 */ cmplw r3, r0 -/* 803503EC 41 82 FF F8 */ beq lbl_803503E4 -/* 803503F0 4B FF 23 0D */ bl OSGetTime -/* 803503F4 80 1F 6C 00 */ lwz r0, 0x6c00(r31) -/* 803503F8 7C 9A 23 78 */ mr r26, r4 -/* 803503FC 7C 7B 1B 78 */ mr r27, r3 -/* 80350400 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d -/* 80350404 60 00 00 02 */ ori r0, r0, 2 -/* 80350408 90 1F 6C 00 */ stw r0, 0x6c00(r31) -/* 8035040C 80 1F 6C 00 */ lwz r0, 0x6c00(r31) -/* 80350410 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e -/* 80350414 60 00 00 01 */ ori r0, r0, 1 -/* 80350418 90 1F 6C 00 */ stw r0, 0x6c00(r31) -/* 8035041C 80 7E 00 00 */ lwz r3, 0(r30) -/* 80350420 48 00 00 04 */ b lbl_80350424 -lbl_80350424: -/* 80350424 48 00 00 04 */ b lbl_80350428 -lbl_80350428: -/* 80350428 80 1E 00 00 */ lwz r0, 0(r30) -/* 8035042C 7C 03 00 40 */ cmplw r3, r0 -/* 80350430 41 82 FF F8 */ beq lbl_80350428 -/* 80350434 4B FF 22 C9 */ bl OSGetTime -/* 80350438 7D 1A 20 10 */ subfc r8, r26, r4 -/* 8035043C 81 8D 93 14 */ lwz r12, data_80451894(r13) -/* 80350440 80 BF 6C 00 */ lwz r5, 0x6c00(r31) -/* 80350444 7C FB 19 10 */ subfe r7, r27, r3 -/* 80350448 81 4D 93 34 */ lwz r10, data_804518B4(r13) -/* 8035044C 6C E7 80 00 */ xoris r7, r7, 0x8000 -/* 80350450 54 A5 07 FA */ rlwinm r5, r5, 0, 0x1f, 0x1d -/* 80350454 81 6D 93 10 */ lwz r11, bound_32KHz(r13) -/* 80350458 7C CA 60 10 */ subfc r6, r10, r12 -/* 8035045C 81 2D 93 30 */ lwz r9, buffer(r13) -/* 80350460 90 BF 6C 00 */ stw r5, 0x6c00(r31) -/* 80350464 7C 09 59 10 */ subfe r0, r9, r11 -/* 80350468 6C 05 80 00 */ xoris r5, r0, 0x8000 -/* 8035046C 7C 06 40 10 */ subfc r0, r6, r8 -/* 80350470 80 1F 6C 00 */ lwz r0, 0x6c00(r31) -/* 80350474 7C A5 39 10 */ subfe r5, r5, r7 -/* 80350478 7C A7 39 10 */ subfe r5, r7, r7 -/* 8035047C 7C A5 00 D0 */ neg r5, r5 -/* 80350480 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e -/* 80350484 2C 05 00 00 */ cmpwi r5, 0 -/* 80350488 90 1F 6C 00 */ stw r0, 0x6c00(r31) -/* 8035048C 41 82 00 14 */ beq lbl_803504A0 -/* 80350490 83 AD 93 20 */ lwz r29, min_wait(r13) -/* 80350494 38 00 00 01 */ li r0, 1 -/* 80350498 83 8D 93 24 */ lwz r28, data_804518A4(r13) -/* 8035049C 48 00 00 68 */ b lbl_80350504 -lbl_803504A0: -/* 803504A0 7C CC 50 14 */ addc r6, r12, r10 -/* 803504A4 7C 0B 49 14 */ adde r0, r11, r9 -/* 803504A8 6C 05 80 00 */ xoris r5, r0, 0x8000 -/* 803504AC 7C 06 40 10 */ subfc r0, r6, r8 -/* 803504B0 7C A5 39 10 */ subfe r5, r5, r7 -/* 803504B4 7C A7 39 10 */ subfe r5, r7, r7 -/* 803504B8 7C A5 00 D0 */ neg r5, r5 -/* 803504BC 2C 05 00 00 */ cmpwi r5, 0 -/* 803504C0 40 82 00 40 */ bne lbl_80350500 -/* 803504C4 80 AD 93 1C */ lwz r5, data_8045189C(r13) -/* 803504C8 80 0D 93 18 */ lwz r0, bound_48KHz(r13) -/* 803504CC 7C CA 28 10 */ subfc r6, r10, r5 -/* 803504D0 7C 09 01 10 */ subfe r0, r9, r0 -/* 803504D4 6C 05 80 00 */ xoris r5, r0, 0x8000 -/* 803504D8 7C 06 40 10 */ subfc r0, r6, r8 -/* 803504DC 7C A5 39 10 */ subfe r5, r5, r7 -/* 803504E0 7C A7 39 10 */ subfe r5, r7, r7 -/* 803504E4 7C A5 00 D0 */ neg r5, r5 -/* 803504E8 2C 05 00 00 */ cmpwi r5, 0 -/* 803504EC 41 82 00 14 */ beq lbl_80350500 -/* 803504F0 83 AD 93 28 */ lwz r29, max_wait(r13) -/* 803504F4 38 00 00 01 */ li r0, 1 -/* 803504F8 83 8D 93 2C */ lwz r28, data_804518AC(r13) -/* 803504FC 48 00 00 08 */ b lbl_80350504 -lbl_80350500: -/* 80350500 38 00 00 00 */ li r0, 0 -lbl_80350504: -/* 80350504 28 00 00 00 */ cmplwi r0, 0 -/* 80350508 41 82 FE 9C */ beq lbl_803503A4 -/* 8035050C 7F 64 E0 14 */ addc r27, r4, r28 -/* 80350510 7F 43 E9 14 */ adde r26, r3, r29 -/* 80350514 48 00 00 04 */ b lbl_80350518 -lbl_80350518: -/* 80350518 48 00 00 04 */ b lbl_8035051C -lbl_8035051C: -/* 8035051C 4B FF 21 E1 */ bl OSGetTime -/* 80350520 6C 65 80 00 */ xoris r5, r3, 0x8000 -/* 80350524 6F 43 80 00 */ xoris r3, r26, 0x8000 -/* 80350528 7C 1B 20 10 */ subfc r0, r27, r4 -/* 8035052C 7C 63 29 10 */ subfe r3, r3, r5 -/* 80350530 7C 65 29 10 */ subfe r3, r5, r5 -/* 80350534 7C 63 00 D0 */ neg r3, r3 -/* 80350538 2C 03 00 00 */ cmpwi r3, 0 -/* 8035053C 40 82 FF E0 */ bne lbl_8035051C -/* 80350540 BB 41 00 18 */ lmw r26, 0x18(r1) -/* 80350544 80 01 00 34 */ lwz r0, 0x34(r1) -/* 80350548 38 21 00 30 */ addi r1, r1, 0x30 -/* 8035054C 7C 08 03 A6 */ mtlr r0 -/* 80350550 4E 80 00 20 */ blr diff --git a/asm/dolphin/ai/ai/__AI_set_stream_sample_rate.s b/asm/dolphin/ai/ai/__AI_set_stream_sample_rate.s deleted file mode 100644 index c0b037cfc7e..00000000000 --- a/asm/dolphin/ai/ai/__AI_set_stream_sample_rate.s +++ /dev/null @@ -1,55 +0,0 @@ -lbl_8034FF48: -/* 8034FF48 7C 08 02 A6 */ mflr r0 -/* 8034FF4C 90 01 00 04 */ stw r0, 4(r1) -/* 8034FF50 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8034FF54 BF 21 00 14 */ stmw r25, 0x14(r1) -/* 8034FF58 7C 79 1B 78 */ mr r25, r3 -/* 8034FF5C 48 00 00 C1 */ bl AIGetStreamSampleRate -/* 8034FF60 7C 19 18 40 */ cmplw r25, r3 -/* 8034FF64 41 82 00 A4 */ beq lbl_80350008 -/* 8034FF68 3F E0 CC 00 */ lis r31, 0xCC00 /* 0xCC006C00@ha */ -/* 8034FF6C 80 1F 6C 00 */ lwz r0, 0x6C00(r31) /* 0xCC006C00@l */ -/* 8034FF70 54 00 07 FE */ clrlwi r0, r0, 0x1f -/* 8034FF74 7C 1D 03 78 */ mr r29, r0 -/* 8034FF78 48 00 00 D1 */ bl AIGetStreamVolLeft -/* 8034FF7C 7C 7C 1B 78 */ mr r28, r3 -/* 8034FF80 48 00 00 F5 */ bl AIGetStreamVolRight -/* 8034FF84 3B 63 00 00 */ addi r27, r3, 0 -/* 8034FF88 38 60 00 00 */ li r3, 0 -/* 8034FF8C 48 00 00 CD */ bl AISetStreamVolRight -/* 8034FF90 38 60 00 00 */ li r3, 0 -/* 8034FF94 48 00 00 99 */ bl AISetStreamVolLeft -/* 8034FF98 80 7F 6C 00 */ lwz r3, 0x6c00(r31) -/* 8034FF9C 80 1F 6C 00 */ lwz r0, 0x6c00(r31) -/* 8034FFA0 54 7A 06 72 */ rlwinm r26, r3, 0, 0x19, 0x19 -/* 8034FFA4 54 00 06 B0 */ rlwinm r0, r0, 0, 0x1a, 0x18 -/* 8034FFA8 90 1F 6C 00 */ stw r0, 0x6c00(r31) -/* 8034FFAC 4B FE D7 49 */ bl OSDisableInterrupts -/* 8034FFB0 7C 7E 1B 78 */ mr r30, r3 -/* 8034FFB4 48 00 03 BD */ bl __AI_SRC_INIT -/* 8034FFB8 80 9F 6C 00 */ lwz r4, 0x6c00(r31) -/* 8034FFBC 57 20 08 3C */ slwi r0, r25, 1 -/* 8034FFC0 38 7E 00 00 */ addi r3, r30, 0 -/* 8034FFC4 7C 84 D3 78 */ or r4, r4, r26 -/* 8034FFC8 90 9F 6C 00 */ stw r4, 0x6c00(r31) -/* 8034FFCC 80 9F 6C 00 */ lwz r4, 0x6c00(r31) -/* 8034FFD0 54 84 06 F2 */ rlwinm r4, r4, 0, 0x1b, 0x19 -/* 8034FFD4 60 84 00 20 */ ori r4, r4, 0x20 -/* 8034FFD8 90 9F 6C 00 */ stw r4, 0x6c00(r31) -/* 8034FFDC 80 9F 6C 00 */ lwz r4, 0x6c00(r31) -/* 8034FFE0 54 84 07 FA */ rlwinm r4, r4, 0, 0x1f, 0x1d -/* 8034FFE4 7C 80 03 78 */ or r0, r4, r0 -/* 8034FFE8 90 1F 6C 00 */ stw r0, 0x6c00(r31) -/* 8034FFEC 4B FE D7 31 */ bl OSRestoreInterrupts -/* 8034FFF0 7F A3 EB 78 */ mr r3, r29 -/* 8034FFF4 4B FF FD 79 */ bl AISetStreamPlayState -/* 8034FFF8 7F 83 E3 78 */ mr r3, r28 -/* 8034FFFC 48 00 00 31 */ bl AISetStreamVolLeft -/* 80350000 7F 63 DB 78 */ mr r3, r27 -/* 80350004 48 00 00 55 */ bl AISetStreamVolRight -lbl_80350008: -/* 80350008 BB 21 00 14 */ lmw r25, 0x14(r1) -/* 8035000C 80 01 00 34 */ lwz r0, 0x34(r1) -/* 80350010 38 21 00 30 */ addi r1, r1, 0x30 -/* 80350014 7C 08 03 A6 */ mtlr r0 -/* 80350018 4E 80 00 20 */ blr diff --git a/asm/dolphin/ar/ar/ARStartDMA.s b/asm/dolphin/ar/ar/ARStartDMA.s deleted file mode 100644 index ac07a65fe66..00000000000 --- a/asm/dolphin/ar/ar/ARStartDMA.s +++ /dev/null @@ -1,61 +0,0 @@ -lbl_803505D4: -/* 803505D4 7C 08 02 A6 */ mflr r0 -/* 803505D8 90 01 00 04 */ stw r0, 4(r1) -/* 803505DC 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 803505E0 93 E1 00 24 */ stw r31, 0x24(r1) -/* 803505E4 3B E6 00 00 */ addi r31, r6, 0 -/* 803505E8 93 C1 00 20 */ stw r30, 0x20(r1) -/* 803505EC 3B C5 00 00 */ addi r30, r5, 0 -/* 803505F0 93 A1 00 1C */ stw r29, 0x1c(r1) -/* 803505F4 3B A3 00 00 */ addi r29, r3, 0 -/* 803505F8 93 81 00 18 */ stw r28, 0x18(r1) -/* 803505FC 3B 84 00 00 */ addi r28, r4, 0 -/* 80350600 4B FE D0 F5 */ bl OSDisableInterrupts -/* 80350604 3C C0 CC 00 */ lis r6, 0xCC00 /* 0xCC005020@ha */ -/* 80350608 A0 06 50 20 */ lhz r0, 0x5020(r6) /* 0xCC005020@l */ -/* 8035060C 39 06 50 00 */ addi r8, r6, 0x5000 -/* 80350610 39 26 50 00 */ addi r9, r6, 0x5000 -/* 80350614 54 04 00 2A */ rlwinm r4, r0, 0, 0, 0x15 -/* 80350618 57 80 84 3E */ srwi r0, r28, 0x10 -/* 8035061C 7C 80 03 78 */ or r0, r4, r0 -/* 80350620 B0 06 50 20 */ sth r0, 0x5020(r6) -/* 80350624 57 80 04 3E */ clrlwi r0, r28, 0x10 -/* 80350628 38 86 50 00 */ addi r4, r6, 0x5000 -/* 8035062C A0 A6 50 22 */ lhz r5, 0x5022(r6) -/* 80350630 54 A5 06 DE */ rlwinm r5, r5, 0, 0x1b, 0xf -/* 80350634 7C A0 03 78 */ or r0, r5, r0 -/* 80350638 B0 06 50 22 */ sth r0, 0x5022(r6) -/* 8035063C 38 A6 50 00 */ addi r5, r6, 0x5000 -/* 80350640 57 C0 84 3E */ srwi r0, r30, 0x10 -/* 80350644 A0 C6 50 24 */ lhz r6, 0x5024(r6) -/* 80350648 54 C6 00 2A */ rlwinm r6, r6, 0, 0, 0x15 -/* 8035064C 7C C0 03 78 */ or r0, r6, r0 -/* 80350650 B0 08 00 24 */ sth r0, 0x24(r8) -/* 80350654 57 C0 04 3E */ clrlwi r0, r30, 0x10 -/* 80350658 A0 C9 00 26 */ lhz r6, 0x26(r9) -/* 8035065C 54 C6 06 DE */ rlwinm r6, r6, 0, 0x1b, 0xf -/* 80350660 7C C0 03 78 */ or r0, r6, r0 -/* 80350664 B0 09 00 26 */ sth r0, 0x26(r9) -/* 80350668 57 E6 84 3E */ srwi r6, r31, 0x10 -/* 8035066C 57 E0 04 3E */ clrlwi r0, r31, 0x10 -/* 80350670 A0 E4 00 28 */ lhz r7, 0x28(r4) -/* 80350674 54 E7 04 5E */ rlwinm r7, r7, 0, 0x11, 0xf -/* 80350678 53 A7 78 20 */ rlwimi r7, r29, 0xf, 0, 0x10 -/* 8035067C B0 E4 00 28 */ sth r7, 0x28(r4) -/* 80350680 A0 E4 00 28 */ lhz r7, 0x28(r4) -/* 80350684 54 E7 00 2A */ rlwinm r7, r7, 0, 0, 0x15 -/* 80350688 7C E6 33 78 */ or r6, r7, r6 -/* 8035068C B0 C4 00 28 */ sth r6, 0x28(r4) -/* 80350690 A0 85 00 2A */ lhz r4, 0x2a(r5) -/* 80350694 54 84 06 DE */ rlwinm r4, r4, 0, 0x1b, 0xf -/* 80350698 7C 80 03 78 */ or r0, r4, r0 -/* 8035069C B0 05 00 2A */ sth r0, 0x2a(r5) -/* 803506A0 4B FE D0 7D */ bl OSRestoreInterrupts -/* 803506A4 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 803506A8 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 803506AC 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 803506B0 83 A1 00 1C */ lwz r29, 0x1c(r1) -/* 803506B4 83 81 00 18 */ lwz r28, 0x18(r1) -/* 803506B8 38 21 00 28 */ addi r1, r1, 0x28 -/* 803506BC 7C 08 03 A6 */ mtlr r0 -/* 803506C0 4E 80 00 20 */ blr diff --git a/asm/dolphin/ar/ar/__ARHandler.s b/asm/dolphin/ar/ar/__ARHandler.s deleted file mode 100644 index 0e22f4e954c..00000000000 --- a/asm/dolphin/ar/ar/__ARHandler.s +++ /dev/null @@ -1,32 +0,0 @@ -lbl_803507F8: -/* 803507F8 7C 08 02 A6 */ mflr r0 -/* 803507FC 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC005000@ha */ -/* 80350800 90 01 00 04 */ stw r0, 4(r1) -/* 80350804 38 63 50 00 */ addi r3, r3, 0x5000 /* 0xCC005000@l */ -/* 80350808 38 00 FF 77 */ li r0, -137 -/* 8035080C 94 21 FD 20 */ stwu r1, -0x2e0(r1) -/* 80350810 93 E1 02 DC */ stw r31, 0x2dc(r1) -/* 80350814 3B E4 00 00 */ addi r31, r4, 0 -/* 80350818 A0 A3 00 0A */ lhz r5, 0xa(r3) -/* 8035081C 7C A0 00 38 */ and r0, r5, r0 -/* 80350820 60 00 00 20 */ ori r0, r0, 0x20 -/* 80350824 B0 03 00 0A */ sth r0, 0xa(r3) -/* 80350828 38 61 00 10 */ addi r3, r1, 0x10 -/* 8035082C 4B FE B7 D5 */ bl OSClearContext -/* 80350830 38 61 00 10 */ addi r3, r1, 0x10 -/* 80350834 4B FE B6 05 */ bl OSSetCurrentContext -/* 80350838 81 8D 93 38 */ lwz r12, __AR_Callback(r13) -/* 8035083C 28 0C 00 00 */ cmplwi r12, 0 -/* 80350840 41 82 00 0C */ beq lbl_8035084C -/* 80350844 7D 88 03 A6 */ mtlr r12 -/* 80350848 4E 80 00 21 */ blrl -lbl_8035084C: -/* 8035084C 38 61 00 10 */ addi r3, r1, 0x10 -/* 80350850 4B FE B7 B1 */ bl OSClearContext -/* 80350854 7F E3 FB 78 */ mr r3, r31 -/* 80350858 4B FE B5 E1 */ bl OSSetCurrentContext -/* 8035085C 80 01 02 E4 */ lwz r0, 0x2e4(r1) -/* 80350860 83 E1 02 DC */ lwz r31, 0x2dc(r1) -/* 80350864 38 21 02 E0 */ addi r1, r1, 0x2e0 -/* 80350868 7C 08 03 A6 */ mtlr r0 -/* 8035086C 4E 80 00 20 */ blr diff --git a/asm/dolphin/base/PPCArch/PPCDisableSpeculation.s b/asm/dolphin/base/PPCArch/PPCDisableSpeculation.s deleted file mode 100644 index b6d044d4b2a..00000000000 --- a/asm/dolphin/base/PPCArch/PPCDisableSpeculation.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80339DA4: -/* 80339DA4 7C 08 02 A6 */ mflr r0 -/* 80339DA8 90 01 00 04 */ stw r0, 4(r1) -/* 80339DAC 94 21 FF F8 */ stwu r1, -8(r1) -/* 80339DB0 4B FF FF 21 */ bl PPCMfhid0 -/* 80339DB4 60 63 02 00 */ ori r3, r3, 0x200 -/* 80339DB8 4B FF FF 21 */ bl PPCMthid0 -/* 80339DBC 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80339DC0 38 21 00 08 */ addi r1, r1, 8 -/* 80339DC4 7C 08 03 A6 */ mtlr r0 -/* 80339DC8 4E 80 00 20 */ blr diff --git a/asm/dolphin/base/PPCArch/PPCMffpscr.s b/asm/dolphin/base/PPCArch/PPCMffpscr.s deleted file mode 100644 index 7c7f6081494..00000000000 --- a/asm/dolphin/base/PPCArch/PPCMffpscr.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80339D44: -/* 80339D44 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80339D48 DB E1 00 10 */ stfd f31, 0x10(r1) -/* 80339D4C FF E0 04 8E */ mffs f31 -/* 80339D50 DB E1 00 08 */ stfd f31, 8(r1) -/* 80339D54 80 61 00 0C */ lwz r3, 0xc(r1) -/* 80339D58 CB E1 00 10 */ lfd f31, 0x10(r1) -/* 80339D5C 38 21 00 18 */ addi r1, r1, 0x18 -/* 80339D60 4E 80 00 20 */ blr diff --git a/asm/dolphin/base/PPCArch/PPCMtfpscr.s b/asm/dolphin/base/PPCArch/PPCMtfpscr.s deleted file mode 100644 index df2855ed601..00000000000 --- a/asm/dolphin/base/PPCArch/PPCMtfpscr.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80339D64: -/* 80339D64 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80339D68 DB E1 00 18 */ stfd f31, 0x18(r1) -/* 80339D6C 38 80 00 00 */ li r4, 0 -/* 80339D70 90 81 00 10 */ stw r4, 0x10(r1) -/* 80339D74 90 61 00 14 */ stw r3, 0x14(r1) -/* 80339D78 CB E1 00 10 */ lfd f31, 0x10(r1) -/* 80339D7C FD FE FD 8E */ mtfsf 0xff, f31 -/* 80339D80 CB E1 00 18 */ lfd f31, 0x18(r1) -/* 80339D84 38 21 00 20 */ addi r1, r1, 0x20 -/* 80339D88 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/CARDGetFastMode.s b/asm/dolphin/card/CARDBios/CARDGetFastMode.s deleted file mode 100644 index b3590d3f0a6..00000000000 --- a/asm/dolphin/card/CARDBios/CARDGetFastMode.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80353F08: -/* 80353F08 A0 0D 93 9A */ lhz r0, struct_80451918+0x2(r13) -/* 80353F0C 28 00 00 00 */ cmplwi r0, 0 -/* 80353F10 41 82 00 0C */ beq lbl_80353F1C -/* 80353F14 38 60 00 01 */ li r3, 1 -/* 80353F18 4E 80 00 20 */ blr -lbl_80353F1C: -/* 80353F1C 38 60 00 00 */ li r3, 0 -/* 80353F20 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/CARDInit.s b/asm/dolphin/card/CARDBios/CARDInit.s deleted file mode 100644 index 095da590b5c..00000000000 --- a/asm/dolphin/card/CARDBios/CARDInit.s +++ /dev/null @@ -1,47 +0,0 @@ -lbl_80353AC8: -/* 80353AC8 7C 08 02 A6 */ mflr r0 -/* 80353ACC 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80353AD0 90 01 00 04 */ stw r0, 4(r1) -/* 80353AD4 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80353AD8 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80353ADC 93 C1 00 10 */ stw r30, 0x10(r1) -/* 80353AE0 3B C3 CB C0 */ addi r30, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80353AE4 93 A1 00 0C */ stw r29, 0xc(r1) -/* 80353AE8 80 1E 01 0C */ lwz r0, 0x10c(r30) -/* 80353AEC 28 00 00 00 */ cmplwi r0, 0 -/* 80353AF0 41 82 00 10 */ beq lbl_80353B00 -/* 80353AF4 80 1E 02 1C */ lwz r0, 0x21c(r30) -/* 80353AF8 28 00 00 00 */ cmplwi r0, 0 -/* 80353AFC 40 82 00 5C */ bne lbl_80353B58 -lbl_80353B00: -/* 80353B00 4B FE 9A 55 */ bl OSGetFontEncode -/* 80353B04 B0 6D 93 98 */ sth r3, struct_80451918+0x0(r13) -/* 80353B08 80 6D 84 E0 */ lwz r3, __CARDVersion(r13) -/* 80353B0C 4B FE 6D 69 */ bl OSRegisterVersion -/* 80353B10 4B FF E9 AD */ bl DSPInit -/* 80353B14 4B FE 6D 8D */ bl OSInitAlarm -/* 80353B18 3B A0 00 00 */ li r29, 0 -/* 80353B1C 3B E0 FF FD */ li r31, -3 -lbl_80353B20: -/* 80353B20 93 FE 00 04 */ stw r31, 4(r30) -/* 80353B24 38 7E 00 8C */ addi r3, r30, 0x8c -/* 80353B28 4B FE D1 4D */ bl OSInitThreadQueue -/* 80353B2C 38 7E 00 E0 */ addi r3, r30, 0xe0 -/* 80353B30 4B FE 6D C9 */ bl OSCreateAlarm -/* 80353B34 3B BD 00 01 */ addi r29, r29, 1 -/* 80353B38 2C 1D 00 02 */ cmpwi r29, 2 -/* 80353B3C 3B DE 01 10 */ addi r30, r30, 0x110 -/* 80353B40 41 80 FF E0 */ blt lbl_80353B20 -/* 80353B44 3C 60 80 00 */ lis r3, 0x8000 -/* 80353B48 48 00 00 35 */ bl __CARDSetDiskID -/* 80353B4C 3C 60 80 3D */ lis r3, ResetFunctionInfo@ha /* 0x803D1E80@ha */ -/* 80353B50 38 63 1E 80 */ addi r3, r3, ResetFunctionInfo@l /* 0x803D1E80@l */ -/* 80353B54 4B FE BB 0D */ bl OSRegisterResetFunction -lbl_80353B58: -/* 80353B58 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80353B5C 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80353B60 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 80353B64 83 A1 00 0C */ lwz r29, 0xc(r1) -/* 80353B68 38 21 00 18 */ addi r1, r1, 0x18 -/* 80353B6C 7C 08 03 A6 */ mtlr r0 -/* 80353B70 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/OnReset.s b/asm/dolphin/card/CARDBios/OnReset.s deleted file mode 100644 index c72d8222d92..00000000000 --- a/asm/dolphin/card/CARDBios/OnReset.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_80353EB8: -/* 80353EB8 7C 08 02 A6 */ mflr r0 -/* 80353EBC 2C 03 00 00 */ cmpwi r3, 0 -/* 80353EC0 90 01 00 04 */ stw r0, 4(r1) -/* 80353EC4 94 21 FF F8 */ stwu r1, -8(r1) -/* 80353EC8 40 82 00 2C */ bne lbl_80353EF4 -/* 80353ECC 38 60 00 00 */ li r3, 0 -/* 80353ED0 48 00 35 09 */ bl CARDUnmount -/* 80353ED4 2C 03 FF FF */ cmpwi r3, -1 -/* 80353ED8 41 82 00 14 */ beq lbl_80353EEC -/* 80353EDC 38 60 00 01 */ li r3, 1 -/* 80353EE0 48 00 34 F9 */ bl CARDUnmount -/* 80353EE4 2C 03 FF FF */ cmpwi r3, -1 -/* 80353EE8 40 82 00 0C */ bne lbl_80353EF4 -lbl_80353EEC: -/* 80353EEC 38 60 00 00 */ li r3, 0 -/* 80353EF0 48 00 00 08 */ b lbl_80353EF8 -lbl_80353EF4: -/* 80353EF4 38 60 00 01 */ li r3, 1 -lbl_80353EF8: -/* 80353EF8 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80353EFC 38 21 00 08 */ addi r1, r1, 8 -/* 80353F00 7C 08 03 A6 */ mtlr r0 -/* 80353F04 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/TimeoutHandler.s b/asm/dolphin/card/CARDBios/TimeoutHandler.s deleted file mode 100644 index 2ffacd0e4fa..00000000000 --- a/asm/dolphin/card/CARDBios/TimeoutHandler.s +++ /dev/null @@ -1,44 +0,0 @@ -lbl_803530D0: -/* 803530D0 7C 08 02 A6 */ mflr r0 -/* 803530D4 3C 80 80 45 */ lis r4, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 803530D8 90 01 00 04 */ stw r0, 4(r1) -/* 803530DC 38 84 CB C0 */ addi r4, r4, __CARDBlock@l /* 0x8044CBC0@l */ -/* 803530E0 38 04 00 E0 */ addi r0, r4, 0xe0 -/* 803530E4 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 803530E8 7C 03 00 40 */ cmplw r3, r0 -/* 803530EC 93 E1 00 14 */ stw r31, 0x14(r1) -/* 803530F0 3B E0 00 00 */ li r31, 0 -/* 803530F4 93 C1 00 10 */ stw r30, 0x10(r1) -/* 803530F8 3B C4 00 00 */ addi r30, r4, 0 -/* 803530FC 41 82 00 20 */ beq lbl_8035311C -/* 80353100 38 04 01 F0 */ addi r0, r4, 0x1f0 -/* 80353104 7C 03 00 40 */ cmplw r3, r0 -/* 80353108 38 84 01 10 */ addi r4, r4, 0x110 -/* 8035310C 3B C4 00 00 */ addi r30, r4, 0 -/* 80353110 3B E0 00 01 */ li r31, 1 -/* 80353114 41 82 00 08 */ beq lbl_8035311C -/* 80353118 3B E0 00 02 */ li r31, 2 -lbl_8035311C: -/* 8035311C 80 1E 00 00 */ lwz r0, 0(r30) -/* 80353120 2C 00 00 00 */ cmpwi r0, 0 -/* 80353124 41 82 00 38 */ beq lbl_8035315C -/* 80353128 38 7F 00 00 */ addi r3, r31, 0 -/* 8035312C 38 80 00 00 */ li r4, 0 -/* 80353130 4B FF 02 4D */ bl EXISetExiCallback -/* 80353134 80 1E 00 CC */ lwz r0, 0xcc(r30) -/* 80353138 28 00 00 00 */ cmplwi r0, 0 -/* 8035313C 7C 0C 03 78 */ mr r12, r0 -/* 80353140 41 82 00 1C */ beq lbl_8035315C -/* 80353144 38 00 00 00 */ li r0, 0 -/* 80353148 7D 88 03 A6 */ mtlr r12 -/* 8035314C 90 1E 00 CC */ stw r0, 0xcc(r30) -/* 80353150 38 7F 00 00 */ addi r3, r31, 0 -/* 80353154 38 80 FF FB */ li r4, -5 -/* 80353158 4E 80 00 21 */ blrl -lbl_8035315C: -/* 8035315C 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80353160 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80353164 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 80353168 38 21 00 18 */ addi r1, r1, 0x18 -/* 8035316C 7C 08 03 A6 */ mtlr r0 -/* 80353170 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/UnlockedCallback.s b/asm/dolphin/card/CARDBios/UnlockedCallback.s deleted file mode 100644 index 02e4389a7a0..00000000000 --- a/asm/dolphin/card/CARDBios/UnlockedCallback.s +++ /dev/null @@ -1,75 +0,0 @@ -lbl_80353414: -/* 80353414 7C 08 02 A6 */ mflr r0 -/* 80353418 2C 04 00 00 */ cmpwi r4, 0 -/* 8035341C 90 01 00 04 */ stw r0, 4(r1) -/* 80353420 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80353424 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80353428 3B E3 00 00 */ addi r31, r3, 0 -/* 8035342C 1C BF 01 10 */ mulli r5, r31, 0x110 -/* 80353430 93 C1 00 10 */ stw r30, 0x10(r1) -/* 80353434 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80353438 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 8035343C 7F C0 2A 14 */ add r30, r0, r5 -/* 80353440 41 80 00 48 */ blt lbl_80353488 -/* 80353444 3C 60 80 35 */ lis r3, UnlockedCallback@ha /* 0x80353414@ha */ -/* 80353448 38 03 34 14 */ addi r0, r3, UnlockedCallback@l /* 0x80353414@l */ -/* 8035344C 3C 60 80 35 */ lis r3, __CARDUnlockedHandler@ha /* 0x80352D00@ha */ -/* 80353450 90 1E 00 DC */ stw r0, 0xdc(r30) -/* 80353454 38 A3 2D 00 */ addi r5, r3, __CARDUnlockedHandler@l /* 0x80352D00@l */ -/* 80353458 38 7F 00 00 */ addi r3, r31, 0 -/* 8035345C 38 80 00 00 */ li r4, 0 -/* 80353460 4B FF 0B C9 */ bl EXILock -/* 80353464 2C 03 00 00 */ cmpwi r3, 0 -/* 80353468 40 82 00 0C */ bne lbl_80353474 -/* 8035346C 38 80 00 00 */ li r4, 0 -/* 80353470 48 00 00 18 */ b lbl_80353488 -lbl_80353474: -/* 80353474 38 00 00 00 */ li r0, 0 -/* 80353478 90 1E 00 DC */ stw r0, 0xdc(r30) -/* 8035347C 7F E3 FB 78 */ mr r3, r31 -/* 80353480 4B FF FC F5 */ bl Retry -/* 80353484 7C 64 1B 78 */ mr r4, r3 -lbl_80353488: -/* 80353488 2C 04 00 00 */ cmpwi r4, 0 -/* 8035348C 40 80 00 80 */ bge lbl_8035350C -/* 80353490 88 1E 00 94 */ lbz r0, 0x94(r30) -/* 80353494 2C 00 00 F3 */ cmpwi r0, 0xf3 -/* 80353498 41 82 00 74 */ beq lbl_8035350C -/* 8035349C 40 80 00 1C */ bge lbl_803534B8 -/* 803534A0 2C 00 00 52 */ cmpwi r0, 0x52 -/* 803534A4 41 82 00 20 */ beq lbl_803534C4 -/* 803534A8 41 80 00 64 */ blt lbl_8035350C -/* 803534AC 2C 00 00 F1 */ cmpwi r0, 0xf1 -/* 803534B0 40 80 00 3C */ bge lbl_803534EC -/* 803534B4 48 00 00 58 */ b lbl_8035350C -lbl_803534B8: -/* 803534B8 2C 00 00 F5 */ cmpwi r0, 0xf5 -/* 803534BC 40 80 00 50 */ bge lbl_8035350C -/* 803534C0 48 00 00 2C */ b lbl_803534EC -lbl_803534C4: -/* 803534C4 80 1E 00 C8 */ lwz r0, 0xc8(r30) -/* 803534C8 28 00 00 00 */ cmplwi r0, 0 -/* 803534CC 7C 0C 03 78 */ mr r12, r0 -/* 803534D0 41 82 00 3C */ beq lbl_8035350C -/* 803534D4 38 00 00 00 */ li r0, 0 -/* 803534D8 7D 88 03 A6 */ mtlr r12 -/* 803534DC 90 1E 00 C8 */ stw r0, 0xc8(r30) -/* 803534E0 7F E3 FB 78 */ mr r3, r31 -/* 803534E4 4E 80 00 21 */ blrl -/* 803534E8 48 00 00 24 */ b lbl_8035350C -lbl_803534EC: -/* 803534EC 81 9E 00 CC */ lwz r12, 0xcc(r30) -/* 803534F0 28 0C 00 00 */ cmplwi r12, 0 -/* 803534F4 41 82 00 18 */ beq lbl_8035350C -/* 803534F8 38 00 00 00 */ li r0, 0 -/* 803534FC 7D 88 03 A6 */ mtlr r12 -/* 80353500 90 1E 00 CC */ stw r0, 0xcc(r30) -/* 80353504 7F E3 FB 78 */ mr r3, r31 -/* 80353508 4E 80 00 21 */ blrl -lbl_8035350C: -/* 8035350C 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80353510 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80353514 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 80353518 38 21 00 18 */ addi r1, r1, 0x18 -/* 8035351C 7C 08 03 A6 */ mtlr r0 -/* 80353520 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/__CARDClearStatus.s b/asm/dolphin/card/CARDBios/__CARDClearStatus.s deleted file mode 100644 index 5cd2acdef32..00000000000 --- a/asm/dolphin/card/CARDBios/__CARDClearStatus.s +++ /dev/null @@ -1,47 +0,0 @@ -lbl_80353024: -/* 80353024 7C 08 02 A6 */ mflr r0 -/* 80353028 38 80 00 00 */ li r4, 0 -/* 8035302C 90 01 00 04 */ stw r0, 4(r1) -/* 80353030 38 A0 00 04 */ li r5, 4 -/* 80353034 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80353038 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8035303C 93 C1 00 10 */ stw r30, 0x10(r1) -/* 80353040 3B C3 00 00 */ addi r30, r3, 0 -/* 80353044 4B FF 08 25 */ bl EXISelect -/* 80353048 2C 03 00 00 */ cmpwi r3, 0 -/* 8035304C 40 82 00 0C */ bne lbl_80353058 -/* 80353050 38 60 FF FD */ li r3, -3 -/* 80353054 48 00 00 64 */ b lbl_803530B8 -lbl_80353058: -/* 80353058 3C 00 89 00 */ lis r0, 0x8900 -/* 8035305C 90 01 00 0C */ stw r0, 0xc(r1) -/* 80353060 38 7E 00 00 */ addi r3, r30, 0 -/* 80353064 38 81 00 0C */ addi r4, r1, 0xc -/* 80353068 38 A0 00 01 */ li r5, 1 -/* 8035306C 38 C0 00 01 */ li r6, 1 -/* 80353070 38 E0 00 00 */ li r7, 0 -/* 80353074 4B FE FC 8D */ bl EXIImm -/* 80353078 7C 60 00 34 */ cntlzw r0, r3 -/* 8035307C 38 7E 00 00 */ addi r3, r30, 0 -/* 80353080 54 1F D9 7E */ srwi r31, r0, 5 -/* 80353084 4B FF 00 65 */ bl EXISync -/* 80353088 7C 60 00 34 */ cntlzw r0, r3 -/* 8035308C 54 00 D9 7E */ srwi r0, r0, 5 -/* 80353090 38 7E 00 00 */ addi r3, r30, 0 -/* 80353094 7F FF 03 78 */ or r31, r31, r0 -/* 80353098 4B FF 08 FD */ bl EXIDeselect -/* 8035309C 7C 60 00 34 */ cntlzw r0, r3 -/* 803530A0 54 00 D9 7E */ srwi r0, r0, 5 -/* 803530A4 7F FF 03 79 */ or. r31, r31, r0 -/* 803530A8 41 82 00 0C */ beq lbl_803530B4 -/* 803530AC 38 60 FF FD */ li r3, -3 -/* 803530B0 48 00 00 08 */ b lbl_803530B8 -lbl_803530B4: -/* 803530B4 38 60 00 00 */ li r3, 0 -lbl_803530B8: -/* 803530B8 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 803530BC 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 803530C0 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 803530C4 38 21 00 18 */ addi r1, r1, 0x18 -/* 803530C8 7C 08 03 A6 */ mtlr r0 -/* 803530CC 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/__CARDEnableInterrupt.s b/asm/dolphin/card/CARDBios/__CARDEnableInterrupt.s deleted file mode 100644 index 76f6a2f25b9..00000000000 --- a/asm/dolphin/card/CARDBios/__CARDEnableInterrupt.s +++ /dev/null @@ -1,54 +0,0 @@ -lbl_80352D84: -/* 80352D84 7C 08 02 A6 */ mflr r0 -/* 80352D88 38 A0 00 04 */ li r5, 4 -/* 80352D8C 90 01 00 04 */ stw r0, 4(r1) -/* 80352D90 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80352D94 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80352D98 3B E4 00 00 */ addi r31, r4, 0 -/* 80352D9C 38 80 00 00 */ li r4, 0 -/* 80352DA0 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80352DA4 3B C3 00 00 */ addi r30, r3, 0 -/* 80352DA8 4B FF 0A C1 */ bl EXISelect -/* 80352DAC 2C 03 00 00 */ cmpwi r3, 0 -/* 80352DB0 40 82 00 0C */ bne lbl_80352DBC -/* 80352DB4 38 60 FF FD */ li r3, -3 -/* 80352DB8 48 00 00 74 */ b lbl_80352E2C -lbl_80352DBC: -/* 80352DBC 2C 1F 00 00 */ cmpwi r31, 0 -/* 80352DC0 41 82 00 0C */ beq lbl_80352DCC -/* 80352DC4 3C 00 81 01 */ lis r0, 0x8101 -/* 80352DC8 48 00 00 08 */ b lbl_80352DD0 -lbl_80352DCC: -/* 80352DCC 3C 00 81 00 */ lis r0, 0x8100 -lbl_80352DD0: -/* 80352DD0 90 01 00 10 */ stw r0, 0x10(r1) -/* 80352DD4 38 7E 00 00 */ addi r3, r30, 0 -/* 80352DD8 38 81 00 10 */ addi r4, r1, 0x10 -/* 80352DDC 38 A0 00 02 */ li r5, 2 -/* 80352DE0 38 C0 00 01 */ li r6, 1 -/* 80352DE4 38 E0 00 00 */ li r7, 0 -/* 80352DE8 4B FE FF 19 */ bl EXIImm -/* 80352DEC 7C 60 00 34 */ cntlzw r0, r3 -/* 80352DF0 38 7E 00 00 */ addi r3, r30, 0 -/* 80352DF4 54 1F D9 7E */ srwi r31, r0, 5 -/* 80352DF8 4B FF 02 F1 */ bl EXISync -/* 80352DFC 7C 60 00 34 */ cntlzw r0, r3 -/* 80352E00 54 00 D9 7E */ srwi r0, r0, 5 -/* 80352E04 38 7E 00 00 */ addi r3, r30, 0 -/* 80352E08 7F FF 03 78 */ or r31, r31, r0 -/* 80352E0C 4B FF 0B 89 */ bl EXIDeselect -/* 80352E10 7C 60 00 34 */ cntlzw r0, r3 -/* 80352E14 54 00 D9 7E */ srwi r0, r0, 5 -/* 80352E18 7F FF 03 79 */ or. r31, r31, r0 -/* 80352E1C 41 82 00 0C */ beq lbl_80352E28 -/* 80352E20 38 60 FF FD */ li r3, -3 -/* 80352E24 48 00 00 08 */ b lbl_80352E2C -lbl_80352E28: -/* 80352E28 38 60 00 00 */ li r3, 0 -lbl_80352E2C: -/* 80352E2C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80352E30 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80352E34 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80352E38 38 21 00 20 */ addi r1, r1, 0x20 -/* 80352E3C 7C 08 03 A6 */ mtlr r0 -/* 80352E40 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/__CARDExiHandler.s b/asm/dolphin/card/CARDBios/__CARDExiHandler.s deleted file mode 100644 index d73bc8fadba..00000000000 --- a/asm/dolphin/card/CARDBios/__CARDExiHandler.s +++ /dev/null @@ -1,77 +0,0 @@ -lbl_80352B40: -/* 80352B40 7C 08 02 A6 */ mflr r0 -/* 80352B44 90 01 00 04 */ stw r0, 4(r1) -/* 80352B48 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 80352B4C 93 E1 00 24 */ stw r31, 0x24(r1) -/* 80352B50 3B E3 00 00 */ addi r31, r3, 0 -/* 80352B54 1C 9F 01 10 */ mulli r4, r31, 0x110 -/* 80352B58 93 C1 00 20 */ stw r30, 0x20(r1) -/* 80352B5C 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80352B60 93 A1 00 1C */ stw r29, 0x1c(r1) -/* 80352B64 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80352B68 7F C0 22 14 */ add r30, r0, r4 -/* 80352B6C 38 7E 00 E0 */ addi r3, r30, 0xe0 -/* 80352B70 4B FE 80 CD */ bl OSCancelAlarm -/* 80352B74 80 1E 00 00 */ lwz r0, 0(r30) -/* 80352B78 2C 00 00 00 */ cmpwi r0, 0 -/* 80352B7C 41 82 00 C0 */ beq lbl_80352C3C -/* 80352B80 38 7F 00 00 */ addi r3, r31, 0 -/* 80352B84 38 80 00 00 */ li r4, 0 -/* 80352B88 38 A0 00 00 */ li r5, 0 -/* 80352B8C 4B FF 14 9D */ bl EXILock -/* 80352B90 2C 03 00 00 */ cmpwi r3, 0 -/* 80352B94 40 82 00 0C */ bne lbl_80352BA0 -/* 80352B98 3B A0 FF 80 */ li r29, -128 -/* 80352B9C 48 00 00 78 */ b lbl_80352C14 -lbl_80352BA0: -/* 80352BA0 38 7F 00 00 */ addi r3, r31, 0 -/* 80352BA4 38 81 00 10 */ addi r4, r1, 0x10 -/* 80352BA8 48 00 02 9D */ bl __CARDReadStatus -/* 80352BAC 7C 7D 1B 79 */ or. r29, r3, r3 -/* 80352BB0 41 80 00 5C */ blt lbl_80352C0C -/* 80352BB4 7F E3 FB 78 */ mr r3, r31 -/* 80352BB8 48 00 04 6D */ bl __CARDClearStatus -/* 80352BBC 7C 7D 1B 79 */ or. r29, r3, r3 -/* 80352BC0 41 80 00 4C */ blt lbl_80352C0C -/* 80352BC4 88 01 00 10 */ lbz r0, 0x10(r1) -/* 80352BC8 54 00 06 F9 */ rlwinm. r0, r0, 0, 0x1b, 0x1c -/* 80352BCC 41 82 00 0C */ beq lbl_80352BD8 -/* 80352BD0 38 00 FF FB */ li r0, -5 -/* 80352BD4 48 00 00 08 */ b lbl_80352BDC -lbl_80352BD8: -/* 80352BD8 38 00 00 00 */ li r0, 0 -lbl_80352BDC: -/* 80352BDC 7C 1D 03 78 */ mr r29, r0 -/* 80352BE0 2C 1D FF FB */ cmpwi r29, -5 -/* 80352BE4 40 82 00 28 */ bne lbl_80352C0C -/* 80352BE8 80 7E 00 A8 */ lwz r3, 0xa8(r30) -/* 80352BEC 34 03 FF FF */ addic. r0, r3, -1 -/* 80352BF0 90 1E 00 A8 */ stw r0, 0xa8(r30) -/* 80352BF4 40 81 00 18 */ ble lbl_80352C0C -/* 80352BF8 7F E3 FB 78 */ mr r3, r31 -/* 80352BFC 48 00 05 79 */ bl Retry -/* 80352C00 7C 7D 1B 79 */ or. r29, r3, r3 -/* 80352C04 41 80 00 10 */ blt lbl_80352C14 -/* 80352C08 48 00 00 34 */ b lbl_80352C3C -lbl_80352C0C: -/* 80352C0C 7F E3 FB 78 */ mr r3, r31 -/* 80352C10 4B FF 15 0D */ bl EXIUnlock -lbl_80352C14: -/* 80352C14 80 1E 00 CC */ lwz r0, 0xcc(r30) -/* 80352C18 28 00 00 00 */ cmplwi r0, 0 -/* 80352C1C 7C 0C 03 78 */ mr r12, r0 -/* 80352C20 41 82 00 1C */ beq lbl_80352C3C -/* 80352C24 38 00 00 00 */ li r0, 0 -/* 80352C28 7D 88 03 A6 */ mtlr r12 -/* 80352C2C 90 1E 00 CC */ stw r0, 0xcc(r30) -/* 80352C30 38 7F 00 00 */ addi r3, r31, 0 -/* 80352C34 38 9D 00 00 */ addi r4, r29, 0 -/* 80352C38 4E 80 00 21 */ blrl -lbl_80352C3C: -/* 80352C3C 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 80352C40 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 80352C44 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 80352C48 83 A1 00 1C */ lwz r29, 0x1c(r1) -/* 80352C4C 38 21 00 28 */ addi r1, r1, 0x28 -/* 80352C50 7C 08 03 A6 */ mtlr r0 -/* 80352C54 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/__CARDExtHandler.s b/asm/dolphin/card/CARDBios/__CARDExtHandler.s deleted file mode 100644 index 6621b733153..00000000000 --- a/asm/dolphin/card/CARDBios/__CARDExtHandler.s +++ /dev/null @@ -1,58 +0,0 @@ -lbl_80352A68: -/* 80352A68 7C 08 02 A6 */ mflr r0 -/* 80352A6C 90 01 00 04 */ stw r0, 4(r1) -/* 80352A70 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80352A74 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80352A78 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80352A7C 93 A1 00 14 */ stw r29, 0x14(r1) -/* 80352A80 3B A3 00 00 */ addi r29, r3, 0 -/* 80352A84 1C 9D 01 10 */ mulli r4, r29, 0x110 -/* 80352A88 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80352A8C 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80352A90 7F C0 22 14 */ add r30, r0, r4 -/* 80352A94 80 1E 00 00 */ lwz r0, 0(r30) -/* 80352A98 2C 00 00 00 */ cmpwi r0, 0 -/* 80352A9C 41 82 00 88 */ beq lbl_80352B24 -/* 80352AA0 3B E0 00 00 */ li r31, 0 -/* 80352AA4 93 FE 00 00 */ stw r31, 0(r30) -/* 80352AA8 38 7D 00 00 */ addi r3, r29, 0 -/* 80352AAC 38 80 00 00 */ li r4, 0 -/* 80352AB0 4B FF 08 CD */ bl EXISetExiCallback -/* 80352AB4 38 7E 00 E0 */ addi r3, r30, 0xe0 -/* 80352AB8 4B FE 81 85 */ bl OSCancelAlarm -/* 80352ABC 80 1E 00 CC */ lwz r0, 0xcc(r30) -/* 80352AC0 28 00 00 00 */ cmplwi r0, 0 -/* 80352AC4 7C 0C 03 78 */ mr r12, r0 -/* 80352AC8 41 82 00 18 */ beq lbl_80352AE0 -/* 80352ACC 93 FE 00 CC */ stw r31, 0xcc(r30) -/* 80352AD0 7D 88 03 A6 */ mtlr r12 -/* 80352AD4 38 7D 00 00 */ addi r3, r29, 0 -/* 80352AD8 38 80 FF FD */ li r4, -3 -/* 80352ADC 4E 80 00 21 */ blrl -lbl_80352AE0: -/* 80352AE0 80 1E 00 04 */ lwz r0, 4(r30) -/* 80352AE4 2C 00 FF FF */ cmpwi r0, -1 -/* 80352AE8 41 82 00 0C */ beq lbl_80352AF4 -/* 80352AEC 38 00 FF FD */ li r0, -3 -/* 80352AF0 90 1E 00 04 */ stw r0, 4(r30) -lbl_80352AF4: -/* 80352AF4 81 9E 00 C4 */ lwz r12, 0xc4(r30) -/* 80352AF8 28 0C 00 00 */ cmplwi r12, 0 -/* 80352AFC 41 82 00 28 */ beq lbl_80352B24 -/* 80352B00 80 1E 00 24 */ lwz r0, 0x24(r30) -/* 80352B04 2C 00 00 07 */ cmpwi r0, 7 -/* 80352B08 41 80 00 1C */ blt lbl_80352B24 -/* 80352B0C 38 00 00 00 */ li r0, 0 -/* 80352B10 7D 88 03 A6 */ mtlr r12 -/* 80352B14 90 1E 00 C4 */ stw r0, 0xc4(r30) -/* 80352B18 38 7D 00 00 */ addi r3, r29, 0 -/* 80352B1C 38 80 FF FD */ li r4, -3 -/* 80352B20 4E 80 00 21 */ blrl -lbl_80352B24: -/* 80352B24 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80352B28 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80352B2C 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80352B30 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80352B34 38 21 00 20 */ addi r1, r1, 0x20 -/* 80352B38 7C 08 03 A6 */ mtlr r0 -/* 80352B3C 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/__CARDGetControlBlock.s b/asm/dolphin/card/CARDBios/__CARDGetControlBlock.s deleted file mode 100644 index b716f0c0a91..00000000000 --- a/asm/dolphin/card/CARDBios/__CARDGetControlBlock.s +++ /dev/null @@ -1,53 +0,0 @@ -lbl_80353BB4: -/* 80353BB4 7C 08 02 A6 */ mflr r0 -/* 80353BB8 1C C3 01 10 */ mulli r6, r3, 0x110 -/* 80353BBC 90 01 00 04 */ stw r0, 4(r1) -/* 80353BC0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80353BC4 3C A0 80 45 */ lis r5, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80353BC8 2C 03 00 00 */ cmpwi r3, 0 -/* 80353BCC 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80353BD0 38 05 CB C0 */ addi r0, r5, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80353BD4 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80353BD8 7F C0 32 14 */ add r30, r0, r6 -/* 80353BDC 93 A1 00 14 */ stw r29, 0x14(r1) -/* 80353BE0 3B A4 00 00 */ addi r29, r4, 0 -/* 80353BE4 41 80 00 18 */ blt lbl_80353BFC -/* 80353BE8 2C 03 00 02 */ cmpwi r3, 2 -/* 80353BEC 40 80 00 10 */ bge lbl_80353BFC -/* 80353BF0 80 1E 01 0C */ lwz r0, 0x10c(r30) -/* 80353BF4 28 00 00 00 */ cmplwi r0, 0 -/* 80353BF8 40 82 00 0C */ bne lbl_80353C04 -lbl_80353BFC: -/* 80353BFC 38 60 FF 80 */ li r3, -128 -/* 80353C00 48 00 00 50 */ b lbl_80353C50 -lbl_80353C04: -/* 80353C04 4B FE 9A F1 */ bl OSDisableInterrupts -/* 80353C08 80 1E 00 00 */ lwz r0, 0(r30) -/* 80353C0C 2C 00 00 00 */ cmpwi r0, 0 -/* 80353C10 40 82 00 0C */ bne lbl_80353C1C -/* 80353C14 3B E0 FF FD */ li r31, -3 -/* 80353C18 48 00 00 30 */ b lbl_80353C48 -lbl_80353C1C: -/* 80353C1C 80 1E 00 04 */ lwz r0, 4(r30) -/* 80353C20 2C 00 FF FF */ cmpwi r0, -1 -/* 80353C24 40 82 00 0C */ bne lbl_80353C30 -/* 80353C28 3B E0 FF FF */ li r31, -1 -/* 80353C2C 48 00 00 1C */ b lbl_80353C48 -lbl_80353C30: -/* 80353C30 38 00 FF FF */ li r0, -1 -/* 80353C34 90 1E 00 04 */ stw r0, 4(r30) -/* 80353C38 38 00 00 00 */ li r0, 0 -/* 80353C3C 3B E0 00 00 */ li r31, 0 -/* 80353C40 90 1E 00 D0 */ stw r0, 0xd0(r30) -/* 80353C44 93 DD 00 00 */ stw r30, 0(r29) -lbl_80353C48: -/* 80353C48 4B FE 9A D5 */ bl OSRestoreInterrupts -/* 80353C4C 7F E3 FB 78 */ mr r3, r31 -lbl_80353C50: -/* 80353C50 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80353C54 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80353C58 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80353C5C 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80353C60 38 21 00 20 */ addi r1, r1, 0x20 -/* 80353C64 7C 08 03 A6 */ mtlr r0 -/* 80353C68 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/__CARDGetFontEncode.s b/asm/dolphin/card/CARDBios/__CARDGetFontEncode.s deleted file mode 100644 index 0046116314e..00000000000 --- a/asm/dolphin/card/CARDBios/__CARDGetFontEncode.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_80353B74: -/* 80353B74 A0 6D 93 98 */ lhz r3, struct_80451918+0x0(r13) -/* 80353B78 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/__CARDReadSegment.s b/asm/dolphin/card/CARDBios/__CARDReadSegment.s deleted file mode 100644 index f11f537b0ed..00000000000 --- a/asm/dolphin/card/CARDBios/__CARDReadSegment.s +++ /dev/null @@ -1,82 +0,0 @@ -lbl_80353748: -/* 80353748 7C 08 02 A6 */ mflr r0 -/* 8035374C 38 C0 00 05 */ li r6, 5 -/* 80353750 90 01 00 04 */ stw r0, 4(r1) -/* 80353754 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80353758 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8035375C 93 C1 00 10 */ stw r30, 0x10(r1) -/* 80353760 3B C3 00 00 */ addi r30, r3, 0 -/* 80353764 1C BE 01 10 */ mulli r5, r30, 0x110 -/* 80353768 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 8035376C 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80353770 7F E0 2A 14 */ add r31, r0, r5 -/* 80353774 38 00 00 52 */ li r0, 0x52 -/* 80353778 98 1F 00 94 */ stb r0, 0x94(r31) -/* 8035377C 38 00 00 00 */ li r0, 0 -/* 80353780 38 7E 00 00 */ addi r3, r30, 0 -/* 80353784 80 BF 00 B0 */ lwz r5, 0xb0(r31) -/* 80353788 54 A5 7E 7E */ rlwinm r5, r5, 0xf, 0x19, 0x1f -/* 8035378C 98 BF 00 95 */ stb r5, 0x95(r31) -/* 80353790 38 A0 00 00 */ li r5, 0 -/* 80353794 80 FF 00 B0 */ lwz r7, 0xb0(r31) -/* 80353798 54 E7 BE 3E */ rlwinm r7, r7, 0x17, 0x18, 0x1f -/* 8035379C 98 FF 00 96 */ stb r7, 0x96(r31) -/* 803537A0 80 FF 00 B0 */ lwz r7, 0xb0(r31) -/* 803537A4 54 E7 CF BE */ rlwinm r7, r7, 0x19, 0x1e, 0x1f -/* 803537A8 98 FF 00 97 */ stb r7, 0x97(r31) -/* 803537AC 80 FF 00 B0 */ lwz r7, 0xb0(r31) -/* 803537B0 54 E7 06 7E */ clrlwi r7, r7, 0x19 -/* 803537B4 98 FF 00 98 */ stb r7, 0x98(r31) -/* 803537B8 90 DF 00 A0 */ stw r6, 0xa0(r31) -/* 803537BC 90 1F 00 A4 */ stw r0, 0xa4(r31) -/* 803537C0 90 1F 00 A8 */ stw r0, 0xa8(r31) -/* 803537C4 4B FF FD 61 */ bl __CARDStart -/* 803537C8 2C 03 FF FF */ cmpwi r3, -1 -/* 803537CC 40 82 00 0C */ bne lbl_803537D8 -/* 803537D0 38 60 00 00 */ li r3, 0 -/* 803537D4 48 00 00 90 */ b lbl_80353864 -lbl_803537D8: -/* 803537D8 2C 03 00 00 */ cmpwi r3, 0 -/* 803537DC 41 80 00 88 */ blt lbl_80353864 -/* 803537E0 80 BF 00 A0 */ lwz r5, 0xa0(r31) -/* 803537E4 38 7E 00 00 */ addi r3, r30, 0 -/* 803537E8 38 9F 00 94 */ addi r4, r31, 0x94 -/* 803537EC 38 C0 00 01 */ li r6, 1 -/* 803537F0 4B FE F7 6D */ bl EXIImmEx -/* 803537F4 2C 03 00 00 */ cmpwi r3, 0 -/* 803537F8 41 82 00 48 */ beq lbl_80353840 -/* 803537FC 80 9F 00 80 */ lwz r4, 0x80(r31) -/* 80353800 7F C3 F3 78 */ mr r3, r30 -/* 80353804 80 BF 00 14 */ lwz r5, 0x14(r31) -/* 80353808 38 C0 00 01 */ li r6, 1 -/* 8035380C 38 84 02 00 */ addi r4, r4, 0x200 -/* 80353810 4B FE F7 4D */ bl EXIImmEx -/* 80353814 2C 03 00 00 */ cmpwi r3, 0 -/* 80353818 41 82 00 28 */ beq lbl_80353840 -/* 8035381C 3C 60 80 35 */ lis r3, __CARDTxHandler@ha /* 0x80352C58@ha */ -/* 80353820 80 9F 00 B4 */ lwz r4, 0xb4(r31) -/* 80353824 38 E3 2C 58 */ addi r7, r3, __CARDTxHandler@l /* 0x80352C58@l */ -/* 80353828 80 DF 00 A4 */ lwz r6, 0xa4(r31) -/* 8035382C 38 7E 00 00 */ addi r3, r30, 0 -/* 80353830 38 A0 02 00 */ li r5, 0x200 -/* 80353834 4B FE F7 C9 */ bl EXIDma -/* 80353838 2C 03 00 00 */ cmpwi r3, 0 -/* 8035383C 40 82 00 24 */ bne lbl_80353860 -lbl_80353840: -/* 80353840 38 00 00 00 */ li r0, 0 -/* 80353844 90 1F 00 C8 */ stw r0, 0xc8(r31) -/* 80353848 7F C3 F3 78 */ mr r3, r30 -/* 8035384C 4B FF 01 49 */ bl EXIDeselect -/* 80353850 7F C3 F3 78 */ mr r3, r30 -/* 80353854 4B FF 08 C9 */ bl EXIUnlock -/* 80353858 38 60 FF FD */ li r3, -3 -/* 8035385C 48 00 00 08 */ b lbl_80353864 -lbl_80353860: -/* 80353860 38 60 00 00 */ li r3, 0 -lbl_80353864: -/* 80353864 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80353868 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8035386C 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 80353870 38 21 00 18 */ addi r1, r1, 0x18 -/* 80353874 7C 08 03 A6 */ mtlr r0 -/* 80353878 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/__CARDReadStatus.s b/asm/dolphin/card/CARDBios/__CARDReadStatus.s deleted file mode 100644 index 140a9b33158..00000000000 --- a/asm/dolphin/card/CARDBios/__CARDReadStatus.s +++ /dev/null @@ -1,64 +0,0 @@ -lbl_80352E44: -/* 80352E44 7C 08 02 A6 */ mflr r0 -/* 80352E48 38 A0 00 04 */ li r5, 4 -/* 80352E4C 90 01 00 04 */ stw r0, 4(r1) -/* 80352E50 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 80352E54 93 E1 00 24 */ stw r31, 0x24(r1) -/* 80352E58 93 C1 00 20 */ stw r30, 0x20(r1) -/* 80352E5C 3B C4 00 00 */ addi r30, r4, 0 -/* 80352E60 38 80 00 00 */ li r4, 0 -/* 80352E64 93 A1 00 1C */ stw r29, 0x1c(r1) -/* 80352E68 3B A3 00 00 */ addi r29, r3, 0 -/* 80352E6C 4B FF 09 FD */ bl EXISelect -/* 80352E70 2C 03 00 00 */ cmpwi r3, 0 -/* 80352E74 40 82 00 0C */ bne lbl_80352E80 -/* 80352E78 38 60 FF FD */ li r3, -3 -/* 80352E7C 48 00 00 9C */ b lbl_80352F18 -lbl_80352E80: -/* 80352E80 3C 00 83 00 */ lis r0, 0x8300 -/* 80352E84 90 01 00 10 */ stw r0, 0x10(r1) -/* 80352E88 38 7D 00 00 */ addi r3, r29, 0 -/* 80352E8C 38 81 00 10 */ addi r4, r1, 0x10 -/* 80352E90 38 A0 00 02 */ li r5, 2 -/* 80352E94 38 C0 00 01 */ li r6, 1 -/* 80352E98 38 E0 00 00 */ li r7, 0 -/* 80352E9C 4B FE FE 65 */ bl EXIImm -/* 80352EA0 7C 60 00 34 */ cntlzw r0, r3 -/* 80352EA4 38 7D 00 00 */ addi r3, r29, 0 -/* 80352EA8 54 1F D9 7E */ srwi r31, r0, 5 -/* 80352EAC 4B FF 02 3D */ bl EXISync -/* 80352EB0 7C 60 00 34 */ cntlzw r0, r3 -/* 80352EB4 54 00 D9 7E */ srwi r0, r0, 5 -/* 80352EB8 38 7D 00 00 */ addi r3, r29, 0 -/* 80352EBC 38 9E 00 00 */ addi r4, r30, 0 -/* 80352EC0 7F FF 03 78 */ or r31, r31, r0 -/* 80352EC4 38 A0 00 01 */ li r5, 1 -/* 80352EC8 38 C0 00 00 */ li r6, 0 -/* 80352ECC 38 E0 00 00 */ li r7, 0 -/* 80352ED0 4B FE FE 31 */ bl EXIImm -/* 80352ED4 7C 60 00 34 */ cntlzw r0, r3 -/* 80352ED8 54 00 D9 7E */ srwi r0, r0, 5 -/* 80352EDC 38 7D 00 00 */ addi r3, r29, 0 -/* 80352EE0 7F FF 03 78 */ or r31, r31, r0 -/* 80352EE4 4B FF 02 05 */ bl EXISync -/* 80352EE8 7C 60 00 34 */ cntlzw r0, r3 -/* 80352EEC 54 00 D9 7E */ srwi r0, r0, 5 -/* 80352EF0 38 7D 00 00 */ addi r3, r29, 0 -/* 80352EF4 7F FF 03 78 */ or r31, r31, r0 -/* 80352EF8 4B FF 0A 9D */ bl EXIDeselect -/* 80352EFC 7C 60 00 34 */ cntlzw r0, r3 -/* 80352F00 54 00 D9 7E */ srwi r0, r0, 5 -/* 80352F04 7F FF 03 79 */ or. r31, r31, r0 -/* 80352F08 41 82 00 0C */ beq lbl_80352F14 -/* 80352F0C 38 60 FF FD */ li r3, -3 -/* 80352F10 48 00 00 08 */ b lbl_80352F18 -lbl_80352F14: -/* 80352F14 38 60 00 00 */ li r3, 0 -lbl_80352F18: -/* 80352F18 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 80352F1C 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 80352F20 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 80352F24 83 A1 00 1C */ lwz r29, 0x1c(r1) -/* 80352F28 38 21 00 28 */ addi r1, r1, 0x28 -/* 80352F2C 7C 08 03 A6 */ mtlr r0 -/* 80352F30 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/__CARDSetDiskID.s b/asm/dolphin/card/CARDBios/__CARDSetDiskID.s deleted file mode 100644 index cadd43b86ed..00000000000 --- a/asm/dolphin/card/CARDBios/__CARDSetDiskID.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_80353B7C: -/* 80353B7C 28 03 00 00 */ cmplwi r3, 0 -/* 80353B80 3C 80 80 45 */ lis r4, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80353B84 38 84 CB C0 */ addi r4, r4, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80353B88 41 82 00 0C */ beq lbl_80353B94 -/* 80353B8C 7C 60 1B 78 */ mr r0, r3 -/* 80353B90 48 00 00 08 */ b lbl_80353B98 -lbl_80353B94: -/* 80353B94 38 04 02 20 */ addi r0, r4, 0x220 -lbl_80353B98: -/* 80353B98 28 03 00 00 */ cmplwi r3, 0 -/* 80353B9C 90 04 01 0C */ stw r0, 0x10c(r4) -/* 80353BA0 41 82 00 08 */ beq lbl_80353BA8 -/* 80353BA4 48 00 00 08 */ b lbl_80353BAC -lbl_80353BA8: -/* 80353BA8 38 64 02 20 */ addi r3, r4, 0x220 -lbl_80353BAC: -/* 80353BAC 90 64 02 1C */ stw r3, 0x21c(r4) -/* 80353BB0 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/__CARDSyncCallback.s b/asm/dolphin/card/CARDBios/__CARDSyncCallback.s deleted file mode 100644 index 90c46ad3668..00000000000 --- a/asm/dolphin/card/CARDBios/__CARDSyncCallback.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_80352A34: -/* 80352A34 7C 08 02 A6 */ mflr r0 -/* 80352A38 1C 83 01 10 */ mulli r4, r3, 0x110 -/* 80352A3C 90 01 00 04 */ stw r0, 4(r1) -/* 80352A40 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80352A44 94 21 FF F8 */ stwu r1, -8(r1) -/* 80352A48 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80352A4C 7C 60 22 14 */ add r3, r0, r4 -/* 80352A50 38 63 00 8C */ addi r3, r3, 0x8c -/* 80352A54 4B FE F2 45 */ bl OSWakeupThread -/* 80352A58 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80352A5C 38 21 00 08 */ addi r1, r1, 8 -/* 80352A60 7C 08 03 A6 */ mtlr r0 -/* 80352A64 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/__CARDTxHandler.s b/asm/dolphin/card/CARDBios/__CARDTxHandler.s deleted file mode 100644 index 0b90950f8bf..00000000000 --- a/asm/dolphin/card/CARDBios/__CARDTxHandler.s +++ /dev/null @@ -1,47 +0,0 @@ -lbl_80352C58: -/* 80352C58 7C 08 02 A6 */ mflr r0 -/* 80352C5C 90 01 00 04 */ stw r0, 4(r1) -/* 80352C60 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 80352C64 BF 61 00 14 */ stmw r27, 0x14(r1) -/* 80352C68 3B 63 00 00 */ addi r27, r3, 0 -/* 80352C6C 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80352C70 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80352C74 1C 9B 01 10 */ mulli r4, r27, 0x110 -/* 80352C78 38 7B 00 00 */ addi r3, r27, 0 -/* 80352C7C 7F A0 22 14 */ add r29, r0, r4 -/* 80352C80 4B FF 0D 15 */ bl EXIDeselect -/* 80352C84 7C 60 00 34 */ cntlzw r0, r3 -/* 80352C88 38 7B 00 00 */ addi r3, r27, 0 -/* 80352C8C 54 1F D9 7E */ srwi r31, r0, 5 -/* 80352C90 4B FF 14 8D */ bl EXIUnlock -/* 80352C94 80 1D 00 C8 */ lwz r0, 0xc8(r29) -/* 80352C98 28 00 00 00 */ cmplwi r0, 0 -/* 80352C9C 7C 1C 03 78 */ mr r28, r0 -/* 80352CA0 41 82 00 4C */ beq lbl_80352CEC -/* 80352CA4 3B C0 00 00 */ li r30, 0 -/* 80352CA8 2C 1F 00 00 */ cmpwi r31, 0 -/* 80352CAC 93 DD 00 C8 */ stw r30, 0xc8(r29) -/* 80352CB0 40 82 00 18 */ bne lbl_80352CC8 -/* 80352CB4 7F 63 DB 78 */ mr r3, r27 -/* 80352CB8 4B FF 08 B5 */ bl EXIProbe -/* 80352CBC 2C 03 00 00 */ cmpwi r3, 0 -/* 80352CC0 41 82 00 08 */ beq lbl_80352CC8 -/* 80352CC4 3B C0 00 01 */ li r30, 1 -lbl_80352CC8: -/* 80352CC8 2C 1E 00 00 */ cmpwi r30, 0 -/* 80352CCC 41 82 00 0C */ beq lbl_80352CD8 -/* 80352CD0 38 80 00 00 */ li r4, 0 -/* 80352CD4 48 00 00 08 */ b lbl_80352CDC -lbl_80352CD8: -/* 80352CD8 38 80 FF FD */ li r4, -3 -lbl_80352CDC: -/* 80352CDC 39 9C 00 00 */ addi r12, r28, 0 -/* 80352CE0 7D 88 03 A6 */ mtlr r12 -/* 80352CE4 38 7B 00 00 */ addi r3, r27, 0 -/* 80352CE8 4E 80 00 21 */ blrl -lbl_80352CEC: -/* 80352CEC BB 61 00 14 */ lmw r27, 0x14(r1) -/* 80352CF0 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 80352CF4 38 21 00 28 */ addi r1, r1, 0x28 -/* 80352CF8 7C 08 03 A6 */ mtlr r0 -/* 80352CFC 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBios/__CARDUnlockedHandler.s b/asm/dolphin/card/CARDBios/__CARDUnlockedHandler.s deleted file mode 100644 index 9af3369b0ae..00000000000 --- a/asm/dolphin/card/CARDBios/__CARDUnlockedHandler.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_80352D00: -/* 80352D00 7C 08 02 A6 */ mflr r0 -/* 80352D04 90 01 00 04 */ stw r0, 4(r1) -/* 80352D08 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80352D0C 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80352D10 93 C1 00 10 */ stw r30, 0x10(r1) -/* 80352D14 3B C3 00 00 */ addi r30, r3, 0 -/* 80352D18 1C 9E 01 10 */ mulli r4, r30, 0x110 -/* 80352D1C 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80352D20 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80352D24 7C 60 22 14 */ add r3, r0, r4 -/* 80352D28 80 03 00 DC */ lwz r0, 0xdc(r3) -/* 80352D2C 28 00 00 00 */ cmplwi r0, 0 -/* 80352D30 7C 1F 03 78 */ mr r31, r0 -/* 80352D34 41 82 00 38 */ beq lbl_80352D6C -/* 80352D38 38 00 00 00 */ li r0, 0 -/* 80352D3C 90 03 00 DC */ stw r0, 0xdc(r3) -/* 80352D40 7F C3 F3 78 */ mr r3, r30 -/* 80352D44 4B FF 08 29 */ bl EXIProbe -/* 80352D48 2C 03 00 00 */ cmpwi r3, 0 -/* 80352D4C 41 82 00 0C */ beq lbl_80352D58 -/* 80352D50 38 80 00 01 */ li r4, 1 -/* 80352D54 48 00 00 08 */ b lbl_80352D5C -lbl_80352D58: -/* 80352D58 38 80 FF FD */ li r4, -3 -lbl_80352D5C: -/* 80352D5C 39 9F 00 00 */ addi r12, r31, 0 -/* 80352D60 7D 88 03 A6 */ mtlr r12 -/* 80352D64 38 7E 00 00 */ addi r3, r30, 0 -/* 80352D68 4E 80 00 21 */ blrl -lbl_80352D6C: -/* 80352D6C 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80352D70 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80352D74 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 80352D78 38 21 00 18 */ addi r1, r1, 0x18 -/* 80352D7C 7C 08 03 A6 */ mtlr r0 -/* 80352D80 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBlock/WriteCallback.s b/asm/dolphin/card/CARDBlock/WriteCallback.s deleted file mode 100644 index 477aaf5f7af..00000000000 --- a/asm/dolphin/card/CARDBlock/WriteCallback.s +++ /dev/null @@ -1,58 +0,0 @@ -lbl_8035541C: -/* 8035541C 7C 08 02 A6 */ mflr r0 -/* 80355420 90 01 00 04 */ stw r0, 4(r1) -/* 80355424 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80355428 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8035542C 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80355430 7C 9E 23 79 */ or. r30, r4, r4 -/* 80355434 93 A1 00 14 */ stw r29, 0x14(r1) -/* 80355438 3B A3 00 00 */ addi r29, r3, 0 -/* 8035543C 1C BD 01 10 */ mulli r5, r29, 0x110 -/* 80355440 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80355444 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80355448 7F E0 2A 14 */ add r31, r0, r5 -/* 8035544C 41 80 00 48 */ blt lbl_80355494 -/* 80355450 80 7F 00 80 */ lwz r3, 0x80(r31) -/* 80355454 80 1F 00 88 */ lwz r0, 0x88(r31) -/* 80355458 38 83 60 00 */ addi r4, r3, 0x6000 -/* 8035545C 7C 00 20 40 */ cmplw r0, r4 -/* 80355460 3C A3 00 01 */ addis r5, r3, 1 -/* 80355464 38 A5 80 00 */ addi r5, r5, -32768 -/* 80355468 40 82 00 18 */ bne lbl_80355480 -/* 8035546C 90 BF 00 88 */ stw r5, 0x88(r31) -/* 80355470 38 65 00 00 */ addi r3, r5, 0 -/* 80355474 38 A0 20 00 */ li r5, 0x2000 -/* 80355478 4B CA E0 C9 */ bl memcpy -/* 8035547C 48 00 00 18 */ b lbl_80355494 -lbl_80355480: -/* 80355480 90 9F 00 88 */ stw r4, 0x88(r31) -/* 80355484 38 64 00 00 */ addi r3, r4, 0 -/* 80355488 38 85 00 00 */ addi r4, r5, 0 -/* 8035548C 38 A0 20 00 */ li r5, 0x2000 -/* 80355490 4B CA E0 B1 */ bl memcpy -lbl_80355494: -/* 80355494 80 1F 00 D0 */ lwz r0, 0xd0(r31) -/* 80355498 28 00 00 00 */ cmplwi r0, 0 -/* 8035549C 40 82 00 10 */ bne lbl_803554AC -/* 803554A0 38 7F 00 00 */ addi r3, r31, 0 -/* 803554A4 38 9E 00 00 */ addi r4, r30, 0 -/* 803554A8 4B FF E7 C5 */ bl __CARDPutControlBlock -lbl_803554AC: -/* 803554AC 80 1F 00 D8 */ lwz r0, 0xd8(r31) -/* 803554B0 28 00 00 00 */ cmplwi r0, 0 -/* 803554B4 7C 0C 03 78 */ mr r12, r0 -/* 803554B8 41 82 00 1C */ beq lbl_803554D4 -/* 803554BC 38 00 00 00 */ li r0, 0 -/* 803554C0 7D 88 03 A6 */ mtlr r12 -/* 803554C4 90 1F 00 D8 */ stw r0, 0xd8(r31) -/* 803554C8 38 7D 00 00 */ addi r3, r29, 0 -/* 803554CC 38 9E 00 00 */ addi r4, r30, 0 -/* 803554D0 4E 80 00 21 */ blrl -lbl_803554D4: -/* 803554D4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803554D8 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 803554DC 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 803554E0 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 803554E4 38 21 00 20 */ addi r1, r1, 0x20 -/* 803554E8 7C 08 03 A6 */ mtlr r0 -/* 803554EC 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDBlock/__CARDGetFatBlock.s b/asm/dolphin/card/CARDBlock/__CARDGetFatBlock.s deleted file mode 100644 index a9bfd20edf0..00000000000 --- a/asm/dolphin/card/CARDBlock/__CARDGetFatBlock.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_80355414: -/* 80355414 80 63 00 88 */ lwz r3, 0x88(r3) -/* 80355418 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDCheck/CARDCheck.s b/asm/dolphin/card/CARDCheck/CARDCheck.s deleted file mode 100644 index 2a21b9aabc3..00000000000 --- a/asm/dolphin/card/CARDCheck/CARDCheck.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_803568F4: -/* 803568F4 7C 08 02 A6 */ mflr r0 -/* 803568F8 3C 80 80 35 */ lis r4, __CARDSyncCallback@ha /* 0x80352A34@ha */ -/* 803568FC 90 01 00 04 */ stw r0, 4(r1) -/* 80356900 38 A4 2A 34 */ addi r5, r4, __CARDSyncCallback@l /* 0x80352A34@l */ -/* 80356904 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80356908 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8035690C 3B E3 00 00 */ addi r31, r3, 0 -/* 80356910 38 81 00 0C */ addi r4, r1, 0xc -/* 80356914 4B FF FA 51 */ bl CARDCheckExAsync -/* 80356918 2C 03 00 00 */ cmpwi r3, 0 -/* 8035691C 41 80 00 18 */ blt lbl_80356934 -/* 80356920 34 01 00 0C */ addic. r0, r1, 0xc -/* 80356924 40 82 00 08 */ bne lbl_8035692C -/* 80356928 48 00 00 0C */ b lbl_80356934 -lbl_8035692C: -/* 8035692C 7F E3 FB 78 */ mr r3, r31 -/* 80356930 4B FF D4 F1 */ bl __CARDSync -lbl_80356934: -/* 80356934 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80356938 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8035693C 38 21 00 18 */ addi r1, r1, 0x18 -/* 80356940 7C 08 03 A6 */ mtlr r0 -/* 80356944 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDCheck/__CARDCheckSum.s b/asm/dolphin/card/CARDCheck/__CARDCheckSum.s deleted file mode 100644 index a0cf9161be7..00000000000 --- a/asm/dolphin/card/CARDCheck/__CARDCheckSum.s +++ /dev/null @@ -1,114 +0,0 @@ -lbl_803559E0: -/* 803559E0 38 00 00 00 */ li r0, 0 -/* 803559E4 7C 84 0E 70 */ srawi r4, r4, 1 -/* 803559E8 B0 06 00 00 */ sth r0, 0(r6) -/* 803559EC 7C 84 01 95 */ addze. r4, r4 -/* 803559F0 B0 05 00 00 */ sth r0, 0(r5) -/* 803559F4 40 81 01 70 */ ble lbl_80355B64 -/* 803559F8 54 80 E8 FF */ rlwinm. r0, r4, 0x1d, 3, 0x1f -/* 803559FC 7C 09 03 A6 */ mtctr r0 -/* 80355A00 41 82 01 34 */ beq lbl_80355B34 -lbl_80355A04: -/* 80355A04 A0 E5 00 00 */ lhz r7, 0(r5) -/* 80355A08 A0 03 00 00 */ lhz r0, 0(r3) -/* 80355A0C 7C 07 02 14 */ add r0, r7, r0 -/* 80355A10 B0 05 00 00 */ sth r0, 0(r5) -/* 80355A14 A0 03 00 00 */ lhz r0, 0(r3) -/* 80355A18 A0 E6 00 00 */ lhz r7, 0(r6) -/* 80355A1C 7C 00 00 F8 */ nor r0, r0, r0 -/* 80355A20 7C 07 02 14 */ add r0, r7, r0 -/* 80355A24 B0 06 00 00 */ sth r0, 0(r6) -/* 80355A28 A0 E5 00 00 */ lhz r7, 0(r5) -/* 80355A2C A0 03 00 02 */ lhz r0, 2(r3) -/* 80355A30 7C 07 02 14 */ add r0, r7, r0 -/* 80355A34 B0 05 00 00 */ sth r0, 0(r5) -/* 80355A38 A0 03 00 02 */ lhz r0, 2(r3) -/* 80355A3C A0 E6 00 00 */ lhz r7, 0(r6) -/* 80355A40 7C 00 00 F8 */ nor r0, r0, r0 -/* 80355A44 7C 07 02 14 */ add r0, r7, r0 -/* 80355A48 B0 06 00 00 */ sth r0, 0(r6) -/* 80355A4C A0 E5 00 00 */ lhz r7, 0(r5) -/* 80355A50 A0 03 00 04 */ lhz r0, 4(r3) -/* 80355A54 7C 07 02 14 */ add r0, r7, r0 -/* 80355A58 B0 05 00 00 */ sth r0, 0(r5) -/* 80355A5C A0 03 00 04 */ lhz r0, 4(r3) -/* 80355A60 A0 E6 00 00 */ lhz r7, 0(r6) -/* 80355A64 7C 00 00 F8 */ nor r0, r0, r0 -/* 80355A68 7C 07 02 14 */ add r0, r7, r0 -/* 80355A6C B0 06 00 00 */ sth r0, 0(r6) -/* 80355A70 A0 E5 00 00 */ lhz r7, 0(r5) -/* 80355A74 A0 03 00 06 */ lhz r0, 6(r3) -/* 80355A78 7C 07 02 14 */ add r0, r7, r0 -/* 80355A7C B0 05 00 00 */ sth r0, 0(r5) -/* 80355A80 A0 03 00 06 */ lhz r0, 6(r3) -/* 80355A84 A0 E6 00 00 */ lhz r7, 0(r6) -/* 80355A88 7C 00 00 F8 */ nor r0, r0, r0 -/* 80355A8C 7C 07 02 14 */ add r0, r7, r0 -/* 80355A90 B0 06 00 00 */ sth r0, 0(r6) -/* 80355A94 A0 E5 00 00 */ lhz r7, 0(r5) -/* 80355A98 A0 03 00 08 */ lhz r0, 8(r3) -/* 80355A9C 7C 07 02 14 */ add r0, r7, r0 -/* 80355AA0 B0 05 00 00 */ sth r0, 0(r5) -/* 80355AA4 A0 03 00 08 */ lhz r0, 8(r3) -/* 80355AA8 A0 E6 00 00 */ lhz r7, 0(r6) -/* 80355AAC 7C 00 00 F8 */ nor r0, r0, r0 -/* 80355AB0 7C 07 02 14 */ add r0, r7, r0 -/* 80355AB4 B0 06 00 00 */ sth r0, 0(r6) -/* 80355AB8 A0 E5 00 00 */ lhz r7, 0(r5) -/* 80355ABC A0 03 00 0A */ lhz r0, 0xa(r3) -/* 80355AC0 7C 07 02 14 */ add r0, r7, r0 -/* 80355AC4 B0 05 00 00 */ sth r0, 0(r5) -/* 80355AC8 A0 03 00 0A */ lhz r0, 0xa(r3) -/* 80355ACC A0 E6 00 00 */ lhz r7, 0(r6) -/* 80355AD0 7C 00 00 F8 */ nor r0, r0, r0 -/* 80355AD4 7C 07 02 14 */ add r0, r7, r0 -/* 80355AD8 B0 06 00 00 */ sth r0, 0(r6) -/* 80355ADC A0 E5 00 00 */ lhz r7, 0(r5) -/* 80355AE0 A0 03 00 0C */ lhz r0, 0xc(r3) -/* 80355AE4 7C 07 02 14 */ add r0, r7, r0 -/* 80355AE8 B0 05 00 00 */ sth r0, 0(r5) -/* 80355AEC A0 03 00 0C */ lhz r0, 0xc(r3) -/* 80355AF0 A0 E6 00 00 */ lhz r7, 0(r6) -/* 80355AF4 7C 00 00 F8 */ nor r0, r0, r0 -/* 80355AF8 7C 07 02 14 */ add r0, r7, r0 -/* 80355AFC B0 06 00 00 */ sth r0, 0(r6) -/* 80355B00 A0 E5 00 00 */ lhz r7, 0(r5) -/* 80355B04 A0 03 00 0E */ lhz r0, 0xe(r3) -/* 80355B08 7C 07 02 14 */ add r0, r7, r0 -/* 80355B0C B0 05 00 00 */ sth r0, 0(r5) -/* 80355B10 A0 03 00 0E */ lhz r0, 0xe(r3) -/* 80355B14 38 63 00 10 */ addi r3, r3, 0x10 -/* 80355B18 A0 E6 00 00 */ lhz r7, 0(r6) -/* 80355B1C 7C 00 00 F8 */ nor r0, r0, r0 -/* 80355B20 7C 07 02 14 */ add r0, r7, r0 -/* 80355B24 B0 06 00 00 */ sth r0, 0(r6) -/* 80355B28 42 00 FE DC */ bdnz lbl_80355A04 -/* 80355B2C 70 84 00 07 */ andi. r4, r4, 7 -/* 80355B30 41 82 00 34 */ beq lbl_80355B64 -lbl_80355B34: -/* 80355B34 7C 89 03 A6 */ mtctr r4 -lbl_80355B38: -/* 80355B38 A0 E5 00 00 */ lhz r7, 0(r5) -/* 80355B3C A0 03 00 00 */ lhz r0, 0(r3) -/* 80355B40 7C 07 02 14 */ add r0, r7, r0 -/* 80355B44 B0 05 00 00 */ sth r0, 0(r5) -/* 80355B48 A0 03 00 00 */ lhz r0, 0(r3) -/* 80355B4C 38 63 00 02 */ addi r3, r3, 2 -/* 80355B50 A0 E6 00 00 */ lhz r7, 0(r6) -/* 80355B54 7C 00 00 F8 */ nor r0, r0, r0 -/* 80355B58 7C 07 02 14 */ add r0, r7, r0 -/* 80355B5C B0 06 00 00 */ sth r0, 0(r6) -/* 80355B60 42 00 FF D8 */ bdnz lbl_80355B38 -lbl_80355B64: -/* 80355B64 A0 05 00 00 */ lhz r0, 0(r5) -/* 80355B68 28 00 FF FF */ cmplwi r0, 0xffff -/* 80355B6C 40 82 00 0C */ bne lbl_80355B78 -/* 80355B70 38 00 00 00 */ li r0, 0 -/* 80355B74 B0 05 00 00 */ sth r0, 0(r5) -lbl_80355B78: -/* 80355B78 A0 06 00 00 */ lhz r0, 0(r6) -/* 80355B7C 28 00 FF FF */ cmplwi r0, 0xffff -/* 80355B80 4C 82 00 20 */ bnelr -/* 80355B84 38 00 00 00 */ li r0, 0 -/* 80355B88 B0 06 00 00 */ sth r0, 0(r6) -/* 80355B8C 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDCheck/__CARDVerify.s b/asm/dolphin/card/CARDCheck/__CARDVerify.s deleted file mode 100644 index b0c9392e17e..00000000000 --- a/asm/dolphin/card/CARDCheck/__CARDVerify.s +++ /dev/null @@ -1,41 +0,0 @@ -lbl_803562D8: -/* 803562D8 7C 08 02 A6 */ mflr r0 -/* 803562DC 90 01 00 04 */ stw r0, 4(r1) -/* 803562E0 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 803562E4 93 E1 00 14 */ stw r31, 0x14(r1) -/* 803562E8 93 C1 00 10 */ stw r30, 0x10(r1) -/* 803562EC 7C 7E 1B 78 */ mr r30, r3 -/* 803562F0 4B FF F8 A1 */ bl VerifyID -/* 803562F4 2C 03 00 00 */ cmpwi r3, 0 -/* 803562F8 40 80 00 08 */ bge lbl_80356300 -/* 803562FC 48 00 00 50 */ b lbl_8035634C -lbl_80356300: -/* 80356300 38 7E 00 00 */ addi r3, r30, 0 -/* 80356304 38 80 00 00 */ li r4, 0 -/* 80356308 4B FF FB 0D */ bl VerifyDir -/* 8035630C 3B E3 00 00 */ addi r31, r3, 0 -/* 80356310 38 7E 00 00 */ addi r3, r30, 0 -/* 80356314 38 80 00 00 */ li r4, 0 -/* 80356318 4B FF FD 3D */ bl VerifyFAT -/* 8035631C 7C 1F 1A 14 */ add r0, r31, r3 -/* 80356320 2C 00 00 01 */ cmpwi r0, 1 -/* 80356324 41 82 00 1C */ beq lbl_80356340 -/* 80356328 40 80 00 20 */ bge lbl_80356348 -/* 8035632C 2C 00 00 00 */ cmpwi r0, 0 -/* 80356330 40 80 00 08 */ bge lbl_80356338 -/* 80356334 48 00 00 14 */ b lbl_80356348 -lbl_80356338: -/* 80356338 38 60 00 00 */ li r3, 0 -/* 8035633C 48 00 00 10 */ b lbl_8035634C -lbl_80356340: -/* 80356340 38 60 FF FA */ li r3, -6 -/* 80356344 48 00 00 08 */ b lbl_8035634C -lbl_80356348: -/* 80356348 38 60 FF FA */ li r3, -6 -lbl_8035634C: -/* 8035634C 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80356350 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80356354 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 80356358 38 21 00 18 */ addi r1, r1, 0x18 -/* 8035635C 7C 08 03 A6 */ mtlr r0 -/* 80356360 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDCreate/CARDCreate.s b/asm/dolphin/card/CARDCreate/CARDCreate.s deleted file mode 100644 index 0537ddcff52..00000000000 --- a/asm/dolphin/card/CARDCreate/CARDCreate.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_80358458: -/* 80358458 7C 08 02 A6 */ mflr r0 -/* 8035845C 3C E0 80 35 */ lis r7, __CARDSyncCallback@ha /* 0x80352A34@ha */ -/* 80358460 90 01 00 04 */ stw r0, 4(r1) -/* 80358464 38 E7 2A 34 */ addi r7, r7, __CARDSyncCallback@l /* 0x80352A34@l */ -/* 80358468 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8035846C 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80358470 3B E3 00 00 */ addi r31, r3, 0 -/* 80358474 4B FF FD C5 */ bl CARDCreateAsync -/* 80358478 2C 03 00 00 */ cmpwi r3, 0 -/* 8035847C 40 80 00 08 */ bge lbl_80358484 -/* 80358480 48 00 00 0C */ b lbl_8035848C -lbl_80358484: -/* 80358484 7F E3 FB 78 */ mr r3, r31 -/* 80358488 4B FF B9 99 */ bl __CARDSync -lbl_8035848C: -/* 8035848C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80358490 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80358494 38 21 00 20 */ addi r1, r1, 0x20 -/* 80358498 7C 08 03 A6 */ mtlr r0 -/* 8035849C 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDCreate/CARDCreateAsync.s b/asm/dolphin/card/CARDCreate/CARDCreateAsync.s deleted file mode 100644 index 98b5e80217f..00000000000 --- a/asm/dolphin/card/CARDCreate/CARDCreateAsync.s +++ /dev/null @@ -1,151 +0,0 @@ -lbl_80358238: -/* 80358238 7C 08 02 A6 */ mflr r0 -/* 8035823C 90 01 00 04 */ stw r0, 4(r1) -/* 80358240 94 21 FF B8 */ stwu r1, -0x48(r1) -/* 80358244 BE E1 00 24 */ stmw r23, 0x24(r1) -/* 80358248 3B 44 00 00 */ addi r26, r4, 0 -/* 8035824C 3B 23 00 00 */ addi r25, r3, 0 -/* 80358250 3B 65 00 00 */ addi r27, r5, 0 -/* 80358254 3B 86 00 00 */ addi r28, r6, 0 -/* 80358258 3B A7 00 00 */ addi r29, r7, 0 -/* 8035825C 38 7A 00 00 */ addi r3, r26, 0 -/* 80358260 48 01 09 85 */ bl strlen -/* 80358264 28 03 00 20 */ cmplwi r3, 0x20 -/* 80358268 40 81 00 0C */ ble lbl_80358274 -/* 8035826C 38 60 FF F4 */ li r3, -12 -/* 80358270 48 00 01 D4 */ b lbl_80358444 -lbl_80358274: -/* 80358274 38 79 00 00 */ addi r3, r25, 0 -/* 80358278 38 81 00 1C */ addi r4, r1, 0x1c -/* 8035827C 4B FF B9 39 */ bl __CARDGetControlBlock -/* 80358280 2C 03 00 00 */ cmpwi r3, 0 -/* 80358284 40 80 00 08 */ bge lbl_8035828C -/* 80358288 48 00 01 BC */ b lbl_80358444 -lbl_8035828C: -/* 8035828C 28 1B 00 00 */ cmplwi r27, 0 -/* 80358290 41 82 00 1C */ beq lbl_803582AC -/* 80358294 80 61 00 1C */ lwz r3, 0x1c(r1) -/* 80358298 80 83 00 0C */ lwz r4, 0xc(r3) -/* 8035829C 7C 1B 23 96 */ divwu r0, r27, r4 -/* 803582A0 7C 00 21 D6 */ mullw r0, r0, r4 -/* 803582A4 7C 00 D8 51 */ subf. r0, r0, r27 -/* 803582A8 41 82 00 0C */ beq lbl_803582B4 -lbl_803582AC: -/* 803582AC 38 60 FF 80 */ li r3, -128 -/* 803582B0 48 00 01 94 */ b lbl_80358444 -lbl_803582B4: -/* 803582B4 3C 80 00 01 */ lis r4, 0x0001 /* 0x0000FFFF@ha */ -/* 803582B8 3B C4 FF FF */ addi r30, r4, 0xFFFF /* 0x0000FFFF@l */ -/* 803582BC 4B FF D4 C1 */ bl __CARDGetDirBlock -/* 803582C0 3B E3 00 00 */ addi r31, r3, 0 -/* 803582C4 3B 1F 00 00 */ addi r24, r31, 0 -/* 803582C8 3A E0 00 00 */ li r23, 0 -/* 803582CC 48 00 00 8C */ b lbl_80358358 -lbl_803582D0: -/* 803582D0 88 18 00 00 */ lbz r0, 0(r24) -/* 803582D4 28 00 00 FF */ cmplwi r0, 0xff -/* 803582D8 40 82 00 18 */ bne lbl_803582F0 -/* 803582DC 57 C0 04 3E */ clrlwi r0, r30, 0x10 -/* 803582E0 28 00 FF FF */ cmplwi r0, 0xffff -/* 803582E4 40 82 00 6C */ bne lbl_80358350 -/* 803582E8 7E FE BB 78 */ mr r30, r23 -/* 803582EC 48 00 00 64 */ b lbl_80358350 -lbl_803582F0: -/* 803582F0 80 81 00 1C */ lwz r4, 0x1c(r1) -/* 803582F4 38 78 00 00 */ addi r3, r24, 0 -/* 803582F8 38 A0 00 04 */ li r5, 4 -/* 803582FC 80 84 01 0C */ lwz r4, 0x10c(r4) -/* 80358300 48 00 DD 8D */ bl memcmp -/* 80358304 2C 03 00 00 */ cmpwi r3, 0 -/* 80358308 40 82 00 48 */ bne lbl_80358350 -/* 8035830C 80 81 00 1C */ lwz r4, 0x1c(r1) -/* 80358310 38 78 00 04 */ addi r3, r24, 4 -/* 80358314 38 A0 00 02 */ li r5, 2 -/* 80358318 80 84 01 0C */ lwz r4, 0x10c(r4) -/* 8035831C 38 84 00 04 */ addi r4, r4, 4 -/* 80358320 48 00 DD 6D */ bl memcmp -/* 80358324 2C 03 00 00 */ cmpwi r3, 0 -/* 80358328 40 82 00 28 */ bne lbl_80358350 -/* 8035832C 38 78 00 00 */ addi r3, r24, 0 -/* 80358330 38 9A 00 00 */ addi r4, r26, 0 -/* 80358334 4B FF F9 41 */ bl __CARDCompareFileName -/* 80358338 2C 03 00 00 */ cmpwi r3, 0 -/* 8035833C 41 82 00 14 */ beq lbl_80358350 -/* 80358340 80 61 00 1C */ lwz r3, 0x1c(r1) -/* 80358344 38 80 FF F9 */ li r4, -7 -/* 80358348 4B FF B9 25 */ bl __CARDPutControlBlock -/* 8035834C 48 00 00 F8 */ b lbl_80358444 -lbl_80358350: -/* 80358350 3B 18 00 40 */ addi r24, r24, 0x40 -/* 80358354 3A F7 00 01 */ addi r23, r23, 1 -lbl_80358358: -/* 80358358 56 E0 04 3E */ clrlwi r0, r23, 0x10 -/* 8035835C 28 00 00 7F */ cmplwi r0, 0x7f -/* 80358360 41 80 FF 70 */ blt lbl_803582D0 -/* 80358364 57 C0 04 3E */ clrlwi r0, r30, 0x10 -/* 80358368 28 00 FF FF */ cmplwi r0, 0xffff -/* 8035836C 40 82 00 14 */ bne lbl_80358380 -/* 80358370 80 61 00 1C */ lwz r3, 0x1c(r1) -/* 80358374 38 80 FF F8 */ li r4, -8 -/* 80358378 4B FF B8 F5 */ bl __CARDPutControlBlock -/* 8035837C 48 00 00 C8 */ b lbl_80358444 -lbl_80358380: -/* 80358380 80 61 00 1C */ lwz r3, 0x1c(r1) -/* 80358384 4B FF D0 91 */ bl __CARDGetFatBlock -/* 80358388 80 81 00 1C */ lwz r4, 0x1c(r1) -/* 8035838C A0 03 00 06 */ lhz r0, 6(r3) -/* 80358390 80 64 00 0C */ lwz r3, 0xc(r4) -/* 80358394 7C 03 01 D6 */ mullw r0, r3, r0 -/* 80358398 7C 00 D8 40 */ cmplw r0, r27 -/* 8035839C 40 80 00 14 */ bge lbl_803583B0 -/* 803583A0 38 64 00 00 */ addi r3, r4, 0 -/* 803583A4 38 80 FF F7 */ li r4, -9 -/* 803583A8 4B FF B8 C5 */ bl __CARDPutControlBlock -/* 803583AC 48 00 00 98 */ b lbl_80358444 -lbl_803583B0: -/* 803583B0 28 1D 00 00 */ cmplwi r29, 0 -/* 803583B4 41 82 00 0C */ beq lbl_803583C0 -/* 803583B8 7F A0 EB 78 */ mr r0, r29 -/* 803583BC 48 00 00 0C */ b lbl_803583C8 -lbl_803583C0: -/* 803583C0 3C 60 80 35 */ lis r3, __CARDDefaultApiCallback@ha /* 0x80352A30@ha */ -/* 803583C4 38 03 2A 30 */ addi r0, r3, __CARDDefaultApiCallback@l /* 0x80352A30@l */ -lbl_803583C8: -/* 803583C8 90 04 00 D0 */ stw r0, 0xd0(r4) -/* 803583CC 57 C0 32 B2 */ rlwinm r0, r30, 6, 0xa, 0x19 -/* 803583D0 7C FF 02 14 */ add r7, r31, r0 -/* 803583D4 80 61 00 1C */ lwz r3, 0x1c(r1) -/* 803583D8 57 DD 04 3E */ clrlwi r29, r30, 0x10 -/* 803583DC 38 9A 00 00 */ addi r4, r26, 0 -/* 803583E0 B3 C3 00 BC */ sth r30, 0xbc(r3) -/* 803583E4 38 67 00 08 */ addi r3, r7, 8 -/* 803583E8 38 A0 00 20 */ li r5, 0x20 -/* 803583EC 80 C1 00 1C */ lwz r6, 0x1c(r1) -/* 803583F0 80 06 00 0C */ lwz r0, 0xc(r6) -/* 803583F4 7C 1B 03 96 */ divwu r0, r27, r0 -/* 803583F8 B0 07 00 38 */ sth r0, 0x38(r7) -/* 803583FC 48 01 06 ED */ bl strncpy -/* 80358400 80 81 00 1C */ lwz r4, 0x1c(r1) -/* 80358404 3C 60 80 36 */ lis r3, CreateCallbackFat@ha /* 0x80358108@ha */ -/* 80358408 38 A3 81 08 */ addi r5, r3, CreateCallbackFat@l /* 0x80358108@l */ -/* 8035840C 93 84 00 C0 */ stw r28, 0xc0(r4) -/* 80358410 7F 23 CB 78 */ mr r3, r25 -/* 80358414 93 3C 00 00 */ stw r25, 0(r28) -/* 80358418 93 BC 00 04 */ stw r29, 4(r28) -/* 8035841C 80 81 00 1C */ lwz r4, 0x1c(r1) -/* 80358420 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80358424 7C 9B 03 96 */ divwu r4, r27, r0 -/* 80358428 4B FF D1 91 */ bl __CARDAllocBlock -/* 8035842C 7C 64 1B 79 */ or. r4, r3, r3 -/* 80358430 40 80 00 10 */ bge lbl_80358440 -/* 80358434 80 61 00 1C */ lwz r3, 0x1c(r1) -/* 80358438 4B FF B8 35 */ bl __CARDPutControlBlock -/* 8035843C 48 00 00 08 */ b lbl_80358444 -lbl_80358440: -/* 80358440 7C 83 23 78 */ mr r3, r4 -lbl_80358444: -/* 80358444 BA E1 00 24 */ lmw r23, 0x24(r1) -/* 80358448 80 01 00 4C */ lwz r0, 0x4c(r1) -/* 8035844C 38 21 00 48 */ addi r1, r1, 0x48 -/* 80358450 7C 08 03 A6 */ mtlr r0 -/* 80358454 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDCreate/CreateCallbackFat.s b/asm/dolphin/card/CARDCreate/CreateCallbackFat.s deleted file mode 100644 index 12d1acf4793..00000000000 --- a/asm/dolphin/card/CARDCreate/CreateCallbackFat.s +++ /dev/null @@ -1,79 +0,0 @@ -lbl_80358108: -/* 80358108 7C 08 02 A6 */ mflr r0 -/* 8035810C 90 01 00 04 */ stw r0, 4(r1) -/* 80358110 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 80358114 BF 61 00 14 */ stmw r27, 0x14(r1) -/* 80358118 3B 83 00 00 */ addi r28, r3, 0 -/* 8035811C 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80358120 1C BC 01 10 */ mulli r5, r28, 0x110 -/* 80358124 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80358128 7F E0 2A 14 */ add r31, r0, r5 -/* 8035812C 83 BF 00 D0 */ lwz r29, 0xd0(r31) -/* 80358130 3B 60 00 00 */ li r27, 0 -/* 80358134 7C 9E 23 79 */ or. r30, r4, r4 -/* 80358138 93 7F 00 D0 */ stw r27, 0xd0(r31) -/* 8035813C 41 80 00 C0 */ blt lbl_803581FC -/* 80358140 7F E3 FB 78 */ mr r3, r31 -/* 80358144 4B FF D6 39 */ bl __CARDGetDirBlock -/* 80358148 A0 1F 00 BC */ lhz r0, 0xbc(r31) -/* 8035814C 38 A0 00 04 */ li r5, 4 -/* 80358150 80 9F 01 0C */ lwz r4, 0x10c(r31) -/* 80358154 54 00 30 32 */ slwi r0, r0, 6 -/* 80358158 7F C3 02 14 */ add r30, r3, r0 -/* 8035815C 38 7E 00 00 */ addi r3, r30, 0 -/* 80358160 4B CA B3 E1 */ bl memcpy -/* 80358164 80 9F 01 0C */ lwz r4, 0x10c(r31) -/* 80358168 38 7E 00 04 */ addi r3, r30, 4 -/* 8035816C 38 A0 00 02 */ li r5, 2 -/* 80358170 38 84 00 04 */ addi r4, r4, 4 -/* 80358174 4B CA B3 CD */ bl memcpy -/* 80358178 38 00 00 04 */ li r0, 4 -/* 8035817C 98 1E 00 34 */ stb r0, 0x34(r30) -/* 80358180 38 00 FF FF */ li r0, -1 -/* 80358184 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000F8@ha */ -/* 80358188 9B 7E 00 35 */ stb r27, 0x35(r30) -/* 8035818C A0 9F 00 BE */ lhz r4, 0xbe(r31) -/* 80358190 B0 9E 00 36 */ sth r4, 0x36(r30) -/* 80358194 9B 7E 00 07 */ stb r27, 7(r30) -/* 80358198 90 1E 00 2C */ stw r0, 0x2c(r30) -/* 8035819C B3 7E 00 30 */ sth r27, 0x30(r30) -/* 803581A0 B3 7E 00 32 */ sth r27, 0x32(r30) -/* 803581A4 90 1E 00 3C */ stw r0, 0x3c(r30) -/* 803581A8 A0 1E 00 32 */ lhz r0, 0x32(r30) -/* 803581AC 54 00 00 3A */ rlwinm r0, r0, 0, 0, 0x1d -/* 803581B0 60 00 00 01 */ ori r0, r0, 1 -/* 803581B4 B0 1E 00 32 */ sth r0, 0x32(r30) -/* 803581B8 80 9F 00 C0 */ lwz r4, 0xc0(r31) -/* 803581BC 93 64 00 08 */ stw r27, 8(r4) -/* 803581C0 A0 1E 00 36 */ lhz r0, 0x36(r30) -/* 803581C4 80 9F 00 C0 */ lwz r4, 0xc0(r31) -/* 803581C8 B0 04 00 10 */ sth r0, 0x10(r4) -/* 803581CC 80 03 00 F8 */ lwz r0, 0x00F8(r3) /* 0x800000F8@l */ -/* 803581D0 54 1B F0 BE */ srwi r27, r0, 2 -/* 803581D4 4B FE A5 29 */ bl OSGetTime -/* 803581D8 38 DB 00 00 */ addi r6, r27, 0 -/* 803581DC 38 A0 00 00 */ li r5, 0 -/* 803581E0 48 00 A1 45 */ bl __div2i -/* 803581E4 90 9E 00 28 */ stw r4, 0x28(r30) -/* 803581E8 38 7C 00 00 */ addi r3, r28, 0 -/* 803581EC 38 9D 00 00 */ addi r4, r29, 0 -/* 803581F0 4B FF D7 2D */ bl __CARDUpdateDir -/* 803581F4 7C 7E 1B 79 */ or. r30, r3, r3 -/* 803581F8 40 80 00 2C */ bge lbl_80358224 -lbl_803581FC: -/* 803581FC 38 7F 00 00 */ addi r3, r31, 0 -/* 80358200 38 9E 00 00 */ addi r4, r30, 0 -/* 80358204 4B FF BA 69 */ bl __CARDPutControlBlock -/* 80358208 28 1D 00 00 */ cmplwi r29, 0 -/* 8035820C 41 82 00 18 */ beq lbl_80358224 -/* 80358210 39 9D 00 00 */ addi r12, r29, 0 -/* 80358214 7D 88 03 A6 */ mtlr r12 -/* 80358218 38 7C 00 00 */ addi r3, r28, 0 -/* 8035821C 38 9E 00 00 */ addi r4, r30, 0 -/* 80358220 4E 80 00 21 */ blrl -lbl_80358224: -/* 80358224 BB 61 00 14 */ lmw r27, 0x14(r1) -/* 80358228 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8035822C 38 21 00 28 */ addi r1, r1, 0x28 -/* 80358230 7C 08 03 A6 */ mtlr r0 -/* 80358234 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDDir/WriteCallback.s b/asm/dolphin/card/CARDDir/WriteCallback.s deleted file mode 100644 index f536a08d3c1..00000000000 --- a/asm/dolphin/card/CARDDir/WriteCallback.s +++ /dev/null @@ -1,57 +0,0 @@ -lbl_80355784: -/* 80355784 7C 08 02 A6 */ mflr r0 -/* 80355788 90 01 00 04 */ stw r0, 4(r1) -/* 8035578C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80355790 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80355794 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80355798 7C 9E 23 79 */ or. r30, r4, r4 -/* 8035579C 93 A1 00 14 */ stw r29, 0x14(r1) -/* 803557A0 3B A3 00 00 */ addi r29, r3, 0 -/* 803557A4 1C BD 01 10 */ mulli r5, r29, 0x110 -/* 803557A8 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 803557AC 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 803557B0 7F E0 2A 14 */ add r31, r0, r5 -/* 803557B4 41 80 00 44 */ blt lbl_803557F8 -/* 803557B8 80 7F 00 80 */ lwz r3, 0x80(r31) -/* 803557BC 80 1F 00 84 */ lwz r0, 0x84(r31) -/* 803557C0 38 83 20 00 */ addi r4, r3, 0x2000 -/* 803557C4 7C 00 20 40 */ cmplw r0, r4 -/* 803557C8 38 03 40 00 */ addi r0, r3, 0x4000 -/* 803557CC 40 82 00 18 */ bne lbl_803557E4 -/* 803557D0 90 1F 00 84 */ stw r0, 0x84(r31) -/* 803557D4 7C 03 03 78 */ mr r3, r0 -/* 803557D8 38 A0 20 00 */ li r5, 0x2000 -/* 803557DC 4B CA DD 65 */ bl memcpy -/* 803557E0 48 00 00 18 */ b lbl_803557F8 -lbl_803557E4: -/* 803557E4 90 9F 00 84 */ stw r4, 0x84(r31) -/* 803557E8 38 64 00 00 */ addi r3, r4, 0 -/* 803557EC 7C 04 03 78 */ mr r4, r0 -/* 803557F0 38 A0 20 00 */ li r5, 0x2000 -/* 803557F4 4B CA DD 4D */ bl memcpy -lbl_803557F8: -/* 803557F8 80 1F 00 D0 */ lwz r0, 0xd0(r31) -/* 803557FC 28 00 00 00 */ cmplwi r0, 0 -/* 80355800 40 82 00 10 */ bne lbl_80355810 -/* 80355804 38 7F 00 00 */ addi r3, r31, 0 -/* 80355808 38 9E 00 00 */ addi r4, r30, 0 -/* 8035580C 4B FF E4 61 */ bl __CARDPutControlBlock -lbl_80355810: -/* 80355810 80 1F 00 D8 */ lwz r0, 0xd8(r31) -/* 80355814 28 00 00 00 */ cmplwi r0, 0 -/* 80355818 7C 0C 03 78 */ mr r12, r0 -/* 8035581C 41 82 00 1C */ beq lbl_80355838 -/* 80355820 38 00 00 00 */ li r0, 0 -/* 80355824 7D 88 03 A6 */ mtlr r12 -/* 80355828 90 1F 00 D8 */ stw r0, 0xd8(r31) -/* 8035582C 38 7D 00 00 */ addi r3, r29, 0 -/* 80355830 38 9E 00 00 */ addi r4, r30, 0 -/* 80355834 4E 80 00 21 */ blrl -lbl_80355838: -/* 80355838 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8035583C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80355840 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80355844 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80355848 38 21 00 20 */ addi r1, r1, 0x20 -/* 8035584C 7C 08 03 A6 */ mtlr r0 -/* 80355850 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDDir/__CARDGetDirBlock.s b/asm/dolphin/card/CARDDir/__CARDGetDirBlock.s deleted file mode 100644 index 655c12cd718..00000000000 --- a/asm/dolphin/card/CARDDir/__CARDGetDirBlock.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_8035577C: -/* 8035577C 80 63 00 84 */ lwz r3, 0x84(r3) -/* 80355780 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDFormat/CARDFormat.s b/asm/dolphin/card/CARDFormat/CARDFormat.s deleted file mode 100644 index 11367b097cd..00000000000 --- a/asm/dolphin/card/CARDFormat/CARDFormat.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_80357C20: -/* 80357C20 7C 08 02 A6 */ mflr r0 -/* 80357C24 90 01 00 04 */ stw r0, 4(r1) -/* 80357C28 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80357C2C 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80357C30 7C 7F 1B 78 */ mr r31, r3 -/* 80357C34 4B FF BF 41 */ bl __CARDGetFontEncode -/* 80357C38 3C A0 80 35 */ lis r5, __CARDSyncCallback@ha /* 0x80352A34@ha */ -/* 80357C3C 38 83 00 00 */ addi r4, r3, 0 -/* 80357C40 38 A5 2A 34 */ addi r5, r5, __CARDSyncCallback@l /* 0x80352A34@l */ -/* 80357C44 38 7F 00 00 */ addi r3, r31, 0 -/* 80357C48 4B FF F9 81 */ bl __CARDFormatRegionAsync -/* 80357C4C 2C 03 00 00 */ cmpwi r3, 0 -/* 80357C50 40 80 00 08 */ bge lbl_80357C58 -/* 80357C54 48 00 00 0C */ b lbl_80357C60 -lbl_80357C58: -/* 80357C58 7F E3 FB 78 */ mr r3, r31 -/* 80357C5C 4B FF C1 C5 */ bl __CARDSync -lbl_80357C60: -/* 80357C60 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80357C64 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80357C68 38 21 00 18 */ addi r1, r1, 0x18 -/* 80357C6C 7C 08 03 A6 */ mtlr r0 -/* 80357C70 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDFormat/FormatCallback.s b/asm/dolphin/card/CARDFormat/FormatCallback.s deleted file mode 100644 index 7787aeab612..00000000000 --- a/asm/dolphin/card/CARDFormat/FormatCallback.s +++ /dev/null @@ -1,86 +0,0 @@ -lbl_80357484: -/* 80357484 7C 08 02 A6 */ mflr r0 -/* 80357488 90 01 00 04 */ stw r0, 4(r1) -/* 8035748C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80357490 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80357494 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80357498 3B C3 00 00 */ addi r30, r3, 0 -/* 8035749C 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 803574A0 93 A1 00 14 */ stw r29, 0x14(r1) -/* 803574A4 1C BE 01 10 */ mulli r5, r30, 0x110 -/* 803574A8 93 81 00 10 */ stw r28, 0x10(r1) -/* 803574AC 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 803574B0 7C 9C 23 79 */ or. r28, r4, r4 -/* 803574B4 7F E0 2A 14 */ add r31, r0, r5 -/* 803574B8 41 80 00 C4 */ blt lbl_8035757C -/* 803574BC 80 7F 00 28 */ lwz r3, 0x28(r31) -/* 803574C0 38 03 00 01 */ addi r0, r3, 1 -/* 803574C4 90 1F 00 28 */ stw r0, 0x28(r31) -/* 803574C8 80 9F 00 28 */ lwz r4, 0x28(r31) -/* 803574CC 2C 04 00 05 */ cmpwi r4, 5 -/* 803574D0 40 80 00 28 */ bge lbl_803574F8 -/* 803574D4 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 803574D8 3C 60 80 35 */ lis r3, FormatCallback@ha /* 0x80357484@ha */ -/* 803574DC 38 A3 74 84 */ addi r5, r3, FormatCallback@l /* 0x80357484@l */ -/* 803574E0 7C 80 21 D6 */ mullw r4, r0, r4 -/* 803574E4 38 7E 00 00 */ addi r3, r30, 0 -/* 803574E8 4B FF C4 D1 */ bl __CARDEraseSector -/* 803574EC 7C 7C 1B 79 */ or. r28, r3, r3 -/* 803574F0 41 80 00 8C */ blt lbl_8035757C -/* 803574F4 48 00 00 B4 */ b lbl_803575A8 -lbl_803574F8: -/* 803574F8 2C 04 00 0A */ cmpwi r4, 0xa -/* 803574FC 40 80 00 3C */ bge lbl_80357538 -/* 80357500 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 80357504 38 C4 FF FB */ addi r6, r4, -5 -/* 80357508 3C 60 80 35 */ lis r3, FormatCallback@ha /* 0x80357484@ha */ -/* 8035750C 80 BF 00 80 */ lwz r5, 0x80(r31) -/* 80357510 7C 80 31 D6 */ mullw r4, r0, r6 -/* 80357514 54 C0 68 24 */ slwi r0, r6, 0xd -/* 80357518 38 E3 74 84 */ addi r7, r3, FormatCallback@l /* 0x80357484@l */ -/* 8035751C 7C C5 02 14 */ add r6, r5, r0 -/* 80357520 38 7E 00 00 */ addi r3, r30, 0 -/* 80357524 38 A0 20 00 */ li r5, 0x2000 -/* 80357528 4B FF DE 85 */ bl __CARDWrite -/* 8035752C 7C 7C 1B 79 */ or. r28, r3, r3 -/* 80357530 41 80 00 4C */ blt lbl_8035757C -/* 80357534 48 00 00 74 */ b lbl_803575A8 -lbl_80357538: -/* 80357538 80 7F 00 80 */ lwz r3, 0x80(r31) -/* 8035753C 38 A0 20 00 */ li r5, 0x2000 -/* 80357540 38 03 20 00 */ addi r0, r3, 0x2000 -/* 80357544 90 1F 00 84 */ stw r0, 0x84(r31) -/* 80357548 80 9F 00 80 */ lwz r4, 0x80(r31) -/* 8035754C 80 7F 00 84 */ lwz r3, 0x84(r31) -/* 80357550 38 84 40 00 */ addi r4, r4, 0x4000 -/* 80357554 4B CA BF ED */ bl memcpy -/* 80357558 80 7F 00 80 */ lwz r3, 0x80(r31) -/* 8035755C 38 A0 20 00 */ li r5, 0x2000 -/* 80357560 38 03 60 00 */ addi r0, r3, 0x6000 -/* 80357564 90 1F 00 88 */ stw r0, 0x88(r31) -/* 80357568 80 9F 00 80 */ lwz r4, 0x80(r31) -/* 8035756C 80 7F 00 88 */ lwz r3, 0x88(r31) -/* 80357570 3C 84 00 01 */ addis r4, r4, 1 -/* 80357574 38 84 80 00 */ addi r4, r4, -32768 -/* 80357578 4B CA BF C9 */ bl memcpy -lbl_8035757C: -/* 8035757C 83 BF 00 D0 */ lwz r29, 0xd0(r31) -/* 80357580 38 00 00 00 */ li r0, 0 -/* 80357584 38 7F 00 00 */ addi r3, r31, 0 -/* 80357588 90 1F 00 D0 */ stw r0, 0xd0(r31) -/* 8035758C 7F 84 E3 78 */ mr r4, r28 -/* 80357590 4B FF C6 DD */ bl __CARDPutControlBlock -/* 80357594 39 9D 00 00 */ addi r12, r29, 0 -/* 80357598 7D 88 03 A6 */ mtlr r12 -/* 8035759C 38 7E 00 00 */ addi r3, r30, 0 -/* 803575A0 38 9C 00 00 */ addi r4, r28, 0 -/* 803575A4 4E 80 00 21 */ blrl -lbl_803575A8: -/* 803575A8 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803575AC 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 803575B0 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 803575B4 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 803575B8 83 81 00 10 */ lwz r28, 0x10(r1) -/* 803575BC 38 21 00 20 */ addi r1, r1, 0x20 -/* 803575C0 7C 08 03 A6 */ mtlr r0 -/* 803575C4 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDMount/CARDMount.s b/asm/dolphin/card/CARDMount/CARDMount.s deleted file mode 100644 index 614f03d3df4..00000000000 --- a/asm/dolphin/card/CARDMount/CARDMount.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_803572F4: -/* 803572F4 7C 08 02 A6 */ mflr r0 -/* 803572F8 3C C0 80 35 */ lis r6, __CARDSyncCallback@ha /* 0x80352A34@ha */ -/* 803572FC 90 01 00 04 */ stw r0, 4(r1) -/* 80357300 38 C6 2A 34 */ addi r6, r6, __CARDSyncCallback@l /* 0x80352A34@l */ -/* 80357304 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80357308 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8035730C 3B E3 00 00 */ addi r31, r3, 0 -/* 80357310 4B FF FE 45 */ bl CARDMountAsync -/* 80357314 2C 03 00 00 */ cmpwi r3, 0 -/* 80357318 40 80 00 08 */ bge lbl_80357320 -/* 8035731C 48 00 00 0C */ b lbl_80357328 -lbl_80357320: -/* 80357320 7F E3 FB 78 */ mr r3, r31 -/* 80357324 4B FF CA FD */ bl __CARDSync -lbl_80357328: -/* 80357328 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8035732C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80357330 38 21 00 20 */ addi r1, r1, 0x20 -/* 80357334 7C 08 03 A6 */ mtlr r0 -/* 80357338 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDMount/CARDMountAsync.s b/asm/dolphin/card/CARDMount/CARDMountAsync.s deleted file mode 100644 index 3488093dde9..00000000000 --- a/asm/dolphin/card/CARDMount/CARDMountAsync.s +++ /dev/null @@ -1,115 +0,0 @@ -lbl_80357154: -/* 80357154 7C 08 02 A6 */ mflr r0 -/* 80357158 90 01 00 04 */ stw r0, 4(r1) -/* 8035715C 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 80357160 BF 41 00 18 */ stmw r26, 0x18(r1) -/* 80357164 7C 7E 1B 79 */ or. r30, r3, r3 -/* 80357168 3B 44 00 00 */ addi r26, r4, 0 -/* 8035716C 3B 65 00 00 */ addi r27, r5, 0 -/* 80357170 3B A6 00 00 */ addi r29, r6, 0 -/* 80357174 41 80 00 0C */ blt lbl_80357180 -/* 80357178 2C 1E 00 02 */ cmpwi r30, 2 -/* 8035717C 41 80 00 0C */ blt lbl_80357188 -lbl_80357180: -/* 80357180 38 60 FF 80 */ li r3, -128 -/* 80357184 48 00 01 5C */ b lbl_803572E0 -lbl_80357188: -/* 80357188 3C 60 80 00 */ lis r3, 0x8000 /* 0x800030E3@ha */ -/* 8035718C 88 03 30 E3 */ lbz r0, 0x30E3(r3) /* 0x800030E3@l */ -/* 80357190 54 00 06 31 */ rlwinm. r0, r0, 0, 0x18, 0x18 -/* 80357194 41 82 00 0C */ beq lbl_803571A0 -/* 80357198 38 60 FF FD */ li r3, -3 -/* 8035719C 48 00 01 44 */ b lbl_803572E0 -lbl_803571A0: -/* 803571A0 1C 9E 01 10 */ mulli r4, r30, 0x110 -/* 803571A4 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 803571A8 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 803571AC 7F E0 22 14 */ add r31, r0, r4 -/* 803571B0 4B FE 65 45 */ bl OSDisableInterrupts -/* 803571B4 80 1F 00 04 */ lwz r0, 4(r31) -/* 803571B8 3B 83 00 00 */ addi r28, r3, 0 -/* 803571BC 2C 00 FF FF */ cmpwi r0, -1 -/* 803571C0 40 82 00 14 */ bne lbl_803571D4 -/* 803571C4 7F 83 E3 78 */ mr r3, r28 -/* 803571C8 4B FE 65 55 */ bl OSRestoreInterrupts -/* 803571CC 38 60 FF FF */ li r3, -1 -/* 803571D0 48 00 01 10 */ b lbl_803572E0 -lbl_803571D4: -/* 803571D4 80 1F 00 00 */ lwz r0, 0(r31) -/* 803571D8 2C 00 00 00 */ cmpwi r0, 0 -/* 803571DC 40 82 00 24 */ bne lbl_80357200 -/* 803571E0 7F C3 F3 78 */ mr r3, r30 -/* 803571E4 4B FE D0 15 */ bl EXIGetState -/* 803571E8 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c -/* 803571EC 41 82 00 14 */ beq lbl_80357200 -/* 803571F0 7F 83 E3 78 */ mr r3, r28 -/* 803571F4 4B FE 65 29 */ bl OSRestoreInterrupts -/* 803571F8 38 60 FF FE */ li r3, -2 -/* 803571FC 48 00 00 E4 */ b lbl_803572E0 -lbl_80357200: -/* 80357200 38 00 FF FF */ li r0, -1 -/* 80357204 90 1F 00 04 */ stw r0, 4(r31) -/* 80357208 28 1D 00 00 */ cmplwi r29, 0 -/* 8035720C 93 5F 00 80 */ stw r26, 0x80(r31) -/* 80357210 93 7F 00 C4 */ stw r27, 0xc4(r31) -/* 80357214 41 82 00 0C */ beq lbl_80357220 -/* 80357218 7F A0 EB 78 */ mr r0, r29 -/* 8035721C 48 00 00 0C */ b lbl_80357228 -lbl_80357220: -/* 80357220 3C 60 80 35 */ lis r3, __CARDDefaultApiCallback@ha /* 0x80352A30@ha */ -/* 80357224 38 03 2A 30 */ addi r0, r3, __CARDDefaultApiCallback@l /* 0x80352A30@l */ -lbl_80357228: -/* 80357228 90 1F 00 D0 */ stw r0, 0xd0(r31) -/* 8035722C 38 00 00 00 */ li r0, 0 -/* 80357230 90 1F 00 CC */ stw r0, 0xcc(r31) -/* 80357234 80 1F 00 00 */ lwz r0, 0(r31) -/* 80357238 2C 00 00 00 */ cmpwi r0, 0 -/* 8035723C 40 82 00 34 */ bne lbl_80357270 -/* 80357240 3C 60 80 35 */ lis r3, __CARDExtHandler@ha /* 0x80352A68@ha */ -/* 80357244 38 83 2A 68 */ addi r4, r3, __CARDExtHandler@l /* 0x80352A68@l */ -/* 80357248 38 7E 00 00 */ addi r3, r30, 0 -/* 8035724C 4B FE C4 55 */ bl EXIAttach -/* 80357250 2C 03 00 00 */ cmpwi r3, 0 -/* 80357254 40 82 00 1C */ bne lbl_80357270 -/* 80357258 38 00 FF FD */ li r0, -3 -/* 8035725C 90 1F 00 04 */ stw r0, 4(r31) -/* 80357260 7F 83 E3 78 */ mr r3, r28 -/* 80357264 4B FE 64 B9 */ bl OSRestoreInterrupts -/* 80357268 38 60 FF FD */ li r3, -3 -/* 8035726C 48 00 00 74 */ b lbl_803572E0 -lbl_80357270: -/* 80357270 3B A0 00 00 */ li r29, 0 -/* 80357274 93 BF 00 24 */ stw r29, 0x24(r31) -/* 80357278 38 00 00 01 */ li r0, 1 -/* 8035727C 38 7E 00 00 */ addi r3, r30, 0 -/* 80357280 90 1F 00 00 */ stw r0, 0(r31) -/* 80357284 38 80 00 00 */ li r4, 0 -/* 80357288 4B FE C0 F5 */ bl EXISetExiCallback -/* 8035728C 38 7F 00 E0 */ addi r3, r31, 0xe0 -/* 80357290 4B FE 39 AD */ bl OSCancelAlarm -/* 80357294 93 BF 00 84 */ stw r29, 0x84(r31) -/* 80357298 7F 83 E3 78 */ mr r3, r28 -/* 8035729C 93 BF 00 88 */ stw r29, 0x88(r31) -/* 803572A0 4B FE 64 7D */ bl OSRestoreInterrupts -/* 803572A4 3C 60 80 35 */ lis r3, __CARDMountCallback@ha /* 0x8035701C@ha */ -/* 803572A8 38 03 70 1C */ addi r0, r3, __CARDMountCallback@l /* 0x8035701C@l */ -/* 803572AC 3C 60 80 35 */ lis r3, __CARDUnlockedHandler@ha /* 0x80352D00@ha */ -/* 803572B0 90 1F 00 DC */ stw r0, 0xdc(r31) -/* 803572B4 38 A3 2D 00 */ addi r5, r3, __CARDUnlockedHandler@l /* 0x80352D00@l */ -/* 803572B8 38 7E 00 00 */ addi r3, r30, 0 -/* 803572BC 38 80 00 00 */ li r4, 0 -/* 803572C0 4B FE CD 69 */ bl EXILock -/* 803572C4 2C 03 00 00 */ cmpwi r3, 0 -/* 803572C8 40 82 00 0C */ bne lbl_803572D4 -/* 803572CC 38 60 00 00 */ li r3, 0 -/* 803572D0 48 00 00 10 */ b lbl_803572E0 -lbl_803572D4: -/* 803572D4 93 BF 00 DC */ stw r29, 0xdc(r31) -/* 803572D8 7F C3 F3 78 */ mr r3, r30 -/* 803572DC 4B FF F8 ED */ bl DoMount -lbl_803572E0: -/* 803572E0 BB 41 00 18 */ lmw r26, 0x18(r1) -/* 803572E4 80 01 00 34 */ lwz r0, 0x34(r1) -/* 803572E8 38 21 00 30 */ addi r1, r1, 0x30 -/* 803572EC 7C 08 03 A6 */ mtlr r0 -/* 803572F0 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDMount/CARDProbe.s b/asm/dolphin/card/CARDMount/CARDProbe.s deleted file mode 100644 index 4c266806f38..00000000000 --- a/asm/dolphin/card/CARDMount/CARDProbe.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_80356A14: -/* 80356A14 7C 08 02 A6 */ mflr r0 -/* 80356A18 3C 80 80 00 */ lis r4, 0x8000 /* 0x800030E3@ha */ -/* 80356A1C 90 01 00 04 */ stw r0, 4(r1) -/* 80356A20 94 21 FF F8 */ stwu r1, -8(r1) -/* 80356A24 88 04 30 E3 */ lbz r0, 0x30E3(r4) /* 0x800030E3@l */ -/* 80356A28 54 00 06 31 */ rlwinm. r0, r0, 0, 0x18, 0x18 -/* 80356A2C 41 82 00 0C */ beq lbl_80356A38 -/* 80356A30 38 60 00 00 */ li r3, 0 -/* 80356A34 48 00 00 08 */ b lbl_80356A3C -lbl_80356A38: -/* 80356A38 4B FE CB 35 */ bl EXIProbe -lbl_80356A3C: -/* 80356A3C 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80356A40 38 21 00 08 */ addi r1, r1, 8 -/* 80356A44 7C 08 03 A6 */ mtlr r0 -/* 80356A48 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDMount/CARDProbeEx.s b/asm/dolphin/card/CARDMount/CARDProbeEx.s deleted file mode 100644 index a9c01b23b9e..00000000000 --- a/asm/dolphin/card/CARDMount/CARDProbeEx.s +++ /dev/null @@ -1,112 +0,0 @@ -lbl_80356A4C: -/* 80356A4C 7C 08 02 A6 */ mflr r0 -/* 80356A50 90 01 00 04 */ stw r0, 4(r1) -/* 80356A54 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 80356A58 BF 61 00 1C */ stmw r27, 0x1c(r1) -/* 80356A5C 7C 7B 1B 79 */ or. r27, r3, r3 -/* 80356A60 3B 84 00 00 */ addi r28, r4, 0 -/* 80356A64 3B E5 00 00 */ addi r31, r5, 0 -/* 80356A68 41 80 00 0C */ blt lbl_80356A74 -/* 80356A6C 2C 1B 00 02 */ cmpwi r27, 2 -/* 80356A70 41 80 00 0C */ blt lbl_80356A7C -lbl_80356A74: -/* 80356A74 38 60 FF 80 */ li r3, -128 -/* 80356A78 48 00 01 3C */ b lbl_80356BB4 -lbl_80356A7C: -/* 80356A7C 3C 60 80 00 */ lis r3, 0x8000 /* 0x800030E3@ha */ -/* 80356A80 88 03 30 E3 */ lbz r0, 0x30E3(r3) /* 0x800030E3@l */ -/* 80356A84 54 00 06 31 */ rlwinm. r0, r0, 0, 0x18, 0x18 -/* 80356A88 41 82 00 0C */ beq lbl_80356A94 -/* 80356A8C 38 60 FF FD */ li r3, -3 -/* 80356A90 48 00 01 24 */ b lbl_80356BB4 -lbl_80356A94: -/* 80356A94 1C 9B 01 10 */ mulli r4, r27, 0x110 -/* 80356A98 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80356A9C 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80356AA0 7F C0 22 14 */ add r30, r0, r4 -/* 80356AA4 4B FE 6C 51 */ bl OSDisableInterrupts -/* 80356AA8 3B A3 00 00 */ addi r29, r3, 0 -/* 80356AAC 38 7B 00 00 */ addi r3, r27, 0 -/* 80356AB0 4B FE CB 3D */ bl EXIProbeEx -/* 80356AB4 2C 03 FF FF */ cmpwi r3, -1 -/* 80356AB8 40 82 00 0C */ bne lbl_80356AC4 -/* 80356ABC 3B C0 FF FD */ li r30, -3 -/* 80356AC0 48 00 00 E8 */ b lbl_80356BA8 -lbl_80356AC4: -/* 80356AC4 2C 03 00 00 */ cmpwi r3, 0 -/* 80356AC8 40 82 00 0C */ bne lbl_80356AD4 -/* 80356ACC 3B C0 FF FF */ li r30, -1 -/* 80356AD0 48 00 00 D8 */ b lbl_80356BA8 -lbl_80356AD4: -/* 80356AD4 80 1E 00 00 */ lwz r0, 0(r30) -/* 80356AD8 2C 00 00 00 */ cmpwi r0, 0 -/* 80356ADC 41 82 00 40 */ beq lbl_80356B1C -/* 80356AE0 80 1E 00 24 */ lwz r0, 0x24(r30) -/* 80356AE4 2C 00 00 01 */ cmpwi r0, 1 -/* 80356AE8 40 80 00 0C */ bge lbl_80356AF4 -/* 80356AEC 3B C0 FF FF */ li r30, -1 -/* 80356AF0 48 00 00 B8 */ b lbl_80356BA8 -lbl_80356AF4: -/* 80356AF4 28 1C 00 00 */ cmplwi r28, 0 -/* 80356AF8 41 82 00 0C */ beq lbl_80356B04 -/* 80356AFC A0 1E 00 08 */ lhz r0, 8(r30) -/* 80356B00 90 1C 00 00 */ stw r0, 0(r28) -lbl_80356B04: -/* 80356B04 28 1F 00 00 */ cmplwi r31, 0 -/* 80356B08 41 82 00 0C */ beq lbl_80356B14 -/* 80356B0C 80 1E 00 0C */ lwz r0, 0xc(r30) -/* 80356B10 90 1F 00 00 */ stw r0, 0(r31) -lbl_80356B14: -/* 80356B14 3B C0 00 00 */ li r30, 0 -/* 80356B18 48 00 00 90 */ b lbl_80356BA8 -lbl_80356B1C: -/* 80356B1C 7F 63 DB 78 */ mr r3, r27 -/* 80356B20 4B FE D6 D9 */ bl EXIGetState -/* 80356B24 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c -/* 80356B28 41 82 00 0C */ beq lbl_80356B34 -/* 80356B2C 3B C0 FF FE */ li r30, -2 -/* 80356B30 48 00 00 78 */ b lbl_80356BA8 -lbl_80356B34: -/* 80356B34 38 7B 00 00 */ addi r3, r27, 0 -/* 80356B38 38 A1 00 14 */ addi r5, r1, 0x14 -/* 80356B3C 38 80 00 00 */ li r4, 0 -/* 80356B40 4B FE D6 F9 */ bl EXIGetID -/* 80356B44 2C 03 00 00 */ cmpwi r3, 0 -/* 80356B48 40 82 00 0C */ bne lbl_80356B54 -/* 80356B4C 3B C0 FF FF */ li r30, -1 -/* 80356B50 48 00 00 58 */ b lbl_80356BA8 -lbl_80356B54: -/* 80356B54 80 61 00 14 */ lwz r3, 0x14(r1) -/* 80356B58 4B FF FD F1 */ bl IsCard -/* 80356B5C 2C 03 00 00 */ cmpwi r3, 0 -/* 80356B60 41 82 00 44 */ beq lbl_80356BA4 -/* 80356B64 28 1C 00 00 */ cmplwi r28, 0 -/* 80356B68 41 82 00 10 */ beq lbl_80356B78 -/* 80356B6C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80356B70 54 00 06 3A */ rlwinm r0, r0, 0, 0x18, 0x1d -/* 80356B74 90 1C 00 00 */ stw r0, 0(r28) -lbl_80356B78: -/* 80356B78 28 1F 00 00 */ cmplwi r31, 0 -/* 80356B7C 41 82 00 20 */ beq lbl_80356B9C -/* 80356B80 80 81 00 14 */ lwz r4, 0x14(r1) -/* 80356B84 3C 60 80 3D */ lis r3, SectorSizeTable@ha /* 0x803D2000@ha */ -/* 80356B88 38 03 20 00 */ addi r0, r3, SectorSizeTable@l /* 0x803D2000@l */ -/* 80356B8C 54 83 BE FA */ rlwinm r3, r4, 0x17, 0x1b, 0x1d -/* 80356B90 7C 60 1A 14 */ add r3, r0, r3 -/* 80356B94 80 03 00 00 */ lwz r0, 0(r3) -/* 80356B98 90 1F 00 00 */ stw r0, 0(r31) -lbl_80356B9C: -/* 80356B9C 3B C0 00 00 */ li r30, 0 -/* 80356BA0 48 00 00 08 */ b lbl_80356BA8 -lbl_80356BA4: -/* 80356BA4 3B C0 FF FE */ li r30, -2 -lbl_80356BA8: -/* 80356BA8 7F A3 EB 78 */ mr r3, r29 -/* 80356BAC 4B FE 6B 71 */ bl OSRestoreInterrupts -/* 80356BB0 7F C3 F3 78 */ mr r3, r30 -lbl_80356BB4: -/* 80356BB4 BB 61 00 1C */ lmw r27, 0x1c(r1) -/* 80356BB8 80 01 00 34 */ lwz r0, 0x34(r1) -/* 80356BBC 38 21 00 30 */ addi r1, r1, 0x30 -/* 80356BC0 7C 08 03 A6 */ mtlr r0 -/* 80356BC4 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDMount/DoMount.s b/asm/dolphin/card/CARDMount/DoMount.s index 9a1145ffcf7..8076d249922 100644 --- a/asm/dolphin/card/CARDMount/DoMount.s +++ b/asm/dolphin/card/CARDMount/DoMount.s @@ -228,7 +228,7 @@ lbl_80356EF4: /* 80356F18 7F 83 02 2E */ lhzx r28, r3, r0 /* 80356F1C 38 60 00 00 */ li r3, 0 /* 80356F20 4B FE 96 3D */ bl __OSUnlockSramEx -/* 80356F24 A0 0D 84 F0 */ lhz r0, struct_80450A70+0x0(r13) +/* 80356F24 A0 0D 84 F0 */ lhz r0, __CARDVendorID+0x0(r13) /* 80356F28 28 00 FF FF */ cmplwi r0, 0xffff /* 80356F2C 41 82 00 0C */ beq lbl_80356F38 /* 80356F30 7C 1C 00 40 */ cmplw r28, r0 diff --git a/asm/dolphin/card/CARDMount/DoUnmount.s b/asm/dolphin/card/CARDMount/DoUnmount.s deleted file mode 100644 index 67fc2b75d9b..00000000000 --- a/asm/dolphin/card/CARDMount/DoUnmount.s +++ /dev/null @@ -1,41 +0,0 @@ -lbl_8035733C: -/* 8035733C 7C 08 02 A6 */ mflr r0 -/* 80357340 90 01 00 04 */ stw r0, 4(r1) -/* 80357344 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80357348 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8035734C 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80357350 93 A1 00 14 */ stw r29, 0x14(r1) -/* 80357354 3B A4 00 00 */ addi r29, r4, 0 -/* 80357358 93 81 00 10 */ stw r28, 0x10(r1) -/* 8035735C 3B 83 00 00 */ addi r28, r3, 0 -/* 80357360 1C BC 01 10 */ mulli r5, r28, 0x110 -/* 80357364 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80357368 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 8035736C 7F E0 2A 14 */ add r31, r0, r5 -/* 80357370 4B FE 63 85 */ bl OSDisableInterrupts -/* 80357374 80 1F 00 00 */ lwz r0, 0(r31) -/* 80357378 3B C3 00 00 */ addi r30, r3, 0 -/* 8035737C 2C 00 00 00 */ cmpwi r0, 0 -/* 80357380 41 82 00 30 */ beq lbl_803573B0 -/* 80357384 38 7C 00 00 */ addi r3, r28, 0 -/* 80357388 38 80 00 00 */ li r4, 0 -/* 8035738C 4B FE BF F1 */ bl EXISetExiCallback -/* 80357390 7F 83 E3 78 */ mr r3, r28 -/* 80357394 4B FE C4 19 */ bl EXIDetach -/* 80357398 38 7F 00 E0 */ addi r3, r31, 0xe0 -/* 8035739C 4B FE 38 A1 */ bl OSCancelAlarm -/* 803573A0 38 00 00 00 */ li r0, 0 -/* 803573A4 90 1F 00 00 */ stw r0, 0(r31) -/* 803573A8 93 BF 00 04 */ stw r29, 4(r31) -/* 803573AC 90 1F 00 24 */ stw r0, 0x24(r31) -lbl_803573B0: -/* 803573B0 7F C3 F3 78 */ mr r3, r30 -/* 803573B4 4B FE 63 69 */ bl OSRestoreInterrupts -/* 803573B8 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803573BC 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 803573C0 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 803573C4 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 803573C8 83 81 00 10 */ lwz r28, 0x10(r1) -/* 803573CC 38 21 00 20 */ addi r1, r1, 0x20 -/* 803573D0 7C 08 03 A6 */ mtlr r0 -/* 803573D4 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDMount/IsCard.s b/asm/dolphin/card/CARDMount/IsCard.s deleted file mode 100644 index 10ba9700176..00000000000 --- a/asm/dolphin/card/CARDMount/IsCard.s +++ /dev/null @@ -1,61 +0,0 @@ -lbl_80356948: -/* 80356948 54 60 00 1F */ rlwinm. r0, r3, 0, 0, 0xf -/* 8035694C 41 82 00 24 */ beq lbl_80356970 -/* 80356950 3C 03 80 00 */ addis r0, r3, 0x8000 -/* 80356954 28 00 00 04 */ cmplwi r0, 4 -/* 80356958 40 82 00 10 */ bne lbl_80356968 -/* 8035695C A0 0D 84 F0 */ lhz r0, struct_80450A70+0x0(r13) -/* 80356960 28 00 FF FF */ cmplwi r0, 0xffff -/* 80356964 40 82 00 0C */ bne lbl_80356970 -lbl_80356968: -/* 80356968 38 60 00 00 */ li r3, 0 -/* 8035696C 4E 80 00 20 */ blr -lbl_80356970: -/* 80356970 54 60 07 BF */ clrlwi. r0, r3, 0x1e -/* 80356974 41 82 00 0C */ beq lbl_80356980 -/* 80356978 38 60 00 00 */ li r3, 0 -/* 8035697C 4E 80 00 20 */ blr -lbl_80356980: -/* 80356980 54 65 06 3A */ rlwinm r5, r3, 0, 0x18, 0x1d -/* 80356984 2C 05 00 20 */ cmpwi r5, 0x20 -/* 80356988 41 82 00 48 */ beq lbl_803569D0 -/* 8035698C 40 80 00 28 */ bge lbl_803569B4 -/* 80356990 2C 05 00 08 */ cmpwi r5, 8 -/* 80356994 41 82 00 3C */ beq lbl_803569D0 -/* 80356998 40 80 00 10 */ bge lbl_803569A8 -/* 8035699C 2C 05 00 04 */ cmpwi r5, 4 -/* 803569A0 41 82 00 30 */ beq lbl_803569D0 -/* 803569A4 48 00 00 24 */ b lbl_803569C8 -lbl_803569A8: -/* 803569A8 2C 05 00 10 */ cmpwi r5, 0x10 -/* 803569AC 41 82 00 24 */ beq lbl_803569D0 -/* 803569B0 48 00 00 18 */ b lbl_803569C8 -lbl_803569B4: -/* 803569B4 2C 05 00 80 */ cmpwi r5, 0x80 -/* 803569B8 41 82 00 18 */ beq lbl_803569D0 -/* 803569BC 40 80 00 0C */ bge lbl_803569C8 -/* 803569C0 2C 05 00 40 */ cmpwi r5, 0x40 -/* 803569C4 41 82 00 0C */ beq lbl_803569D0 -lbl_803569C8: -/* 803569C8 38 60 00 00 */ li r3, 0 -/* 803569CC 4E 80 00 20 */ blr -lbl_803569D0: -/* 803569D0 3C 80 80 3D */ lis r4, SectorSizeTable@ha /* 0x803D2000@ha */ -/* 803569D4 54 63 BE FA */ rlwinm r3, r3, 0x17, 0x1b, 0x1d -/* 803569D8 38 04 20 00 */ addi r0, r4, SectorSizeTable@l /* 0x803D2000@l */ -/* 803569DC 7C 60 1A 14 */ add r3, r0, r3 -/* 803569E0 80 63 00 00 */ lwz r3, 0(r3) -/* 803569E4 2C 03 00 00 */ cmpwi r3, 0 -/* 803569E8 40 82 00 0C */ bne lbl_803569F4 -/* 803569EC 38 60 00 00 */ li r3, 0 -/* 803569F0 4E 80 00 20 */ blr -lbl_803569F4: -/* 803569F4 54 A0 88 DC */ rlwinm r0, r5, 0x11, 3, 0xe -/* 803569F8 7C 00 1B 96 */ divwu r0, r0, r3 -/* 803569FC 28 00 00 08 */ cmplwi r0, 8 -/* 80356A00 40 80 00 0C */ bge lbl_80356A0C -/* 80356A04 38 60 00 00 */ li r3, 0 -/* 80356A08 4E 80 00 20 */ blr -lbl_80356A0C: -/* 80356A0C 38 60 00 01 */ li r3, 1 -/* 80356A10 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDMount/__CARDMountCallback.s b/asm/dolphin/card/CARDMount/__CARDMountCallback.s deleted file mode 100644 index a93296e0768..00000000000 --- a/asm/dolphin/card/CARDMount/__CARDMountCallback.s +++ /dev/null @@ -1,86 +0,0 @@ -lbl_8035701C: -/* 8035701C 7C 08 02 A6 */ mflr r0 -/* 80357020 90 01 00 04 */ stw r0, 4(r1) -/* 80357024 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80357028 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8035702C 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80357030 93 A1 00 14 */ stw r29, 0x14(r1) -/* 80357034 3B A4 00 00 */ addi r29, r4, 0 -/* 80357038 2C 1D FF FD */ cmpwi r29, -3 -/* 8035703C 93 81 00 10 */ stw r28, 0x10(r1) -/* 80357040 3B 83 00 00 */ addi r28, r3, 0 -/* 80357044 1C BC 01 10 */ mulli r5, r28, 0x110 -/* 80357048 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 8035704C 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80357050 7F E0 2A 14 */ add r31, r0, r5 -/* 80357054 41 82 00 A8 */ beq lbl_803570FC -/* 80357058 40 80 00 10 */ bge lbl_80357068 -/* 8035705C 2C 1D FF FB */ cmpwi r29, -5 -/* 80357060 41 82 00 9C */ beq lbl_803570FC -/* 80357064 48 00 00 A4 */ b lbl_80357108 -lbl_80357068: -/* 80357068 2C 1D 00 01 */ cmpwi r29, 1 -/* 8035706C 41 82 00 4C */ beq lbl_803570B8 -/* 80357070 40 80 00 98 */ bge lbl_80357108 -/* 80357074 2C 1D 00 00 */ cmpwi r29, 0 -/* 80357078 40 80 00 08 */ bge lbl_80357080 -/* 8035707C 48 00 00 8C */ b lbl_80357108 -lbl_80357080: -/* 80357080 80 7F 00 24 */ lwz r3, 0x24(r31) -/* 80357084 38 03 00 01 */ addi r0, r3, 1 -/* 80357088 2C 00 00 07 */ cmpwi r0, 7 -/* 8035708C 90 1F 00 24 */ stw r0, 0x24(r31) -/* 80357090 40 80 00 18 */ bge lbl_803570A8 -/* 80357094 7F 83 E3 78 */ mr r3, r28 -/* 80357098 4B FF FB 31 */ bl DoMount -/* 8035709C 7C 7D 1B 79 */ or. r29, r3, r3 -/* 803570A0 41 80 00 68 */ blt lbl_80357108 -/* 803570A4 48 00 00 90 */ b lbl_80357134 -lbl_803570A8: -/* 803570A8 7F E3 FB 78 */ mr r3, r31 -/* 803570AC 4B FF F2 2D */ bl __CARDVerify -/* 803570B0 7C 7D 1B 78 */ mr r29, r3 -/* 803570B4 48 00 00 54 */ b lbl_80357108 -lbl_803570B8: -/* 803570B8 3C 60 80 35 */ lis r3, __CARDMountCallback@ha /* 0x8035701C@ha */ -/* 803570BC 38 03 70 1C */ addi r0, r3, __CARDMountCallback@l /* 0x8035701C@l */ -/* 803570C0 3C 60 80 35 */ lis r3, __CARDUnlockedHandler@ha /* 0x80352D00@ha */ -/* 803570C4 90 1F 00 DC */ stw r0, 0xdc(r31) -/* 803570C8 38 A3 2D 00 */ addi r5, r3, __CARDUnlockedHandler@l /* 0x80352D00@l */ -/* 803570CC 38 7C 00 00 */ addi r3, r28, 0 -/* 803570D0 38 80 00 00 */ li r4, 0 -/* 803570D4 4B FE CF 55 */ bl EXILock -/* 803570D8 2C 03 00 00 */ cmpwi r3, 0 -/* 803570DC 41 82 00 58 */ beq lbl_80357134 -/* 803570E0 38 00 00 00 */ li r0, 0 -/* 803570E4 90 1F 00 DC */ stw r0, 0xdc(r31) -/* 803570E8 7F 83 E3 78 */ mr r3, r28 -/* 803570EC 4B FF FA DD */ bl DoMount -/* 803570F0 7C 7D 1B 79 */ or. r29, r3, r3 -/* 803570F4 41 80 00 14 */ blt lbl_80357108 -/* 803570F8 48 00 00 3C */ b lbl_80357134 -lbl_803570FC: -/* 803570FC 38 7C 00 00 */ addi r3, r28, 0 -/* 80357100 38 9D 00 00 */ addi r4, r29, 0 -/* 80357104 48 00 02 39 */ bl DoUnmount -lbl_80357108: -/* 80357108 83 DF 00 D0 */ lwz r30, 0xd0(r31) -/* 8035710C 38 00 00 00 */ li r0, 0 -/* 80357110 38 7F 00 00 */ addi r3, r31, 0 -/* 80357114 90 1F 00 D0 */ stw r0, 0xd0(r31) -/* 80357118 7F A4 EB 78 */ mr r4, r29 -/* 8035711C 4B FF CB 51 */ bl __CARDPutControlBlock -/* 80357120 39 9E 00 00 */ addi r12, r30, 0 -/* 80357124 7D 88 03 A6 */ mtlr r12 -/* 80357128 38 7C 00 00 */ addi r3, r28, 0 -/* 8035712C 38 9D 00 00 */ addi r4, r29, 0 -/* 80357130 4E 80 00 21 */ blrl -lbl_80357134: -/* 80357134 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80357138 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8035713C 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80357140 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80357144 83 81 00 10 */ lwz r28, 0x10(r1) -/* 80357148 38 21 00 20 */ addi r1, r1, 0x20 -/* 8035714C 7C 08 03 A6 */ mtlr r0 -/* 80357150 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDNet/CARDGetSerialNo.s b/asm/dolphin/card/CARDNet/CARDGetSerialNo.s deleted file mode 100644 index 724489d4ab4..00000000000 --- a/asm/dolphin/card/CARDNet/CARDGetSerialNo.s +++ /dev/null @@ -1,54 +0,0 @@ -lbl_80359158: -/* 80359158 7C 08 02 A6 */ mflr r0 -/* 8035915C 2C 03 00 00 */ cmpwi r3, 0 -/* 80359160 90 01 00 04 */ stw r0, 4(r1) -/* 80359164 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80359168 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8035916C 3B E4 00 00 */ addi r31, r4, 0 -/* 80359170 41 80 00 0C */ blt lbl_8035917C -/* 80359174 2C 03 00 02 */ cmpwi r3, 2 -/* 80359178 41 80 00 0C */ blt lbl_80359184 -lbl_8035917C: -/* 8035917C 38 60 FF 80 */ li r3, -128 -/* 80359180 48 00 00 88 */ b lbl_80359208 -lbl_80359184: -/* 80359184 38 81 00 10 */ addi r4, r1, 0x10 -/* 80359188 4B FF AA 2D */ bl __CARDGetControlBlock -/* 8035918C 2C 03 00 00 */ cmpwi r3, 0 -/* 80359190 40 80 00 08 */ bge lbl_80359198 -/* 80359194 48 00 00 74 */ b lbl_80359208 -lbl_80359198: -/* 80359198 80 61 00 10 */ lwz r3, 0x10(r1) -/* 8035919C 38 E0 00 00 */ li r7, 0 -/* 803591A0 38 C0 00 00 */ li r6, 0 -/* 803591A4 80 A3 00 80 */ lwz r5, 0x80(r3) -/* 803591A8 38 80 00 00 */ li r4, 0 -/* 803591AC 80 65 00 04 */ lwz r3, 4(r5) -/* 803591B0 80 05 00 00 */ lwz r0, 0(r5) -/* 803591B4 7C E7 1A 78 */ xor r7, r7, r3 -/* 803591B8 38 65 00 08 */ addi r3, r5, 8 -/* 803591BC 7C C6 02 78 */ xor r6, r6, r0 -/* 803591C0 80 05 00 08 */ lwz r0, 8(r5) -/* 803591C4 80 63 00 04 */ lwz r3, 4(r3) -/* 803591C8 7C C6 02 78 */ xor r6, r6, r0 -/* 803591CC 7C E7 1A 78 */ xor r7, r7, r3 -/* 803591D0 38 65 00 10 */ addi r3, r5, 0x10 -/* 803591D4 80 05 00 10 */ lwz r0, 0x10(r5) -/* 803591D8 80 63 00 04 */ lwz r3, 4(r3) -/* 803591DC 7C C6 02 78 */ xor r6, r6, r0 -/* 803591E0 7C E7 1A 78 */ xor r7, r7, r3 -/* 803591E4 38 65 00 18 */ addi r3, r5, 0x18 -/* 803591E8 80 05 00 18 */ lwz r0, 0x18(r5) -/* 803591EC 80 63 00 04 */ lwz r3, 4(r3) -/* 803591F0 7C C6 02 78 */ xor r6, r6, r0 -/* 803591F4 7C E7 1A 78 */ xor r7, r7, r3 -/* 803591F8 90 FF 00 04 */ stw r7, 4(r31) -/* 803591FC 90 DF 00 00 */ stw r6, 0(r31) -/* 80359200 80 61 00 10 */ lwz r3, 0x10(r1) -/* 80359204 4B FF AA 69 */ bl __CARDPutControlBlock -lbl_80359208: -/* 80359208 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8035920C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80359210 38 21 00 20 */ addi r1, r1, 0x20 -/* 80359214 7C 08 03 A6 */ mtlr r0 -/* 80359218 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDOpen/CARDClose.s b/asm/dolphin/card/CARDOpen/CARDClose.s deleted file mode 100644 index 2dd8baff1cb..00000000000 --- a/asm/dolphin/card/CARDOpen/CARDClose.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_803580B4: -/* 803580B4 7C 08 02 A6 */ mflr r0 -/* 803580B8 90 01 00 04 */ stw r0, 4(r1) -/* 803580BC 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 803580C0 93 E1 00 14 */ stw r31, 0x14(r1) -/* 803580C4 7C 7F 1B 78 */ mr r31, r3 -/* 803580C8 38 81 00 0C */ addi r4, r1, 0xc -/* 803580CC 80 63 00 00 */ lwz r3, 0(r3) -/* 803580D0 4B FF BA E5 */ bl __CARDGetControlBlock -/* 803580D4 2C 03 00 00 */ cmpwi r3, 0 -/* 803580D8 40 80 00 08 */ bge lbl_803580E0 -/* 803580DC 48 00 00 18 */ b lbl_803580F4 -lbl_803580E0: -/* 803580E0 38 00 FF FF */ li r0, -1 -/* 803580E4 90 1F 00 00 */ stw r0, 0(r31) -/* 803580E8 38 80 00 00 */ li r4, 0 -/* 803580EC 80 61 00 0C */ lwz r3, 0xc(r1) -/* 803580F0 4B FF BB 7D */ bl __CARDPutControlBlock -lbl_803580F4: -/* 803580F4 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 803580F8 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 803580FC 38 21 00 18 */ addi r1, r1, 0x18 -/* 80358100 7C 08 03 A6 */ mtlr r0 -/* 80358104 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDOpen/__CARDCompareFileName.s b/asm/dolphin/card/CARDOpen/__CARDCompareFileName.s deleted file mode 100644 index 6d793f2b35c..00000000000 --- a/asm/dolphin/card/CARDOpen/__CARDCompareFileName.s +++ /dev/null @@ -1,31 +0,0 @@ -lbl_80357C74: -/* 80357C74 38 A3 00 08 */ addi r5, r3, 8 -/* 80357C78 38 E0 00 20 */ li r7, 0x20 -/* 80357C7C 48 00 00 3C */ b lbl_80357CB8 -lbl_80357C80: -/* 80357C80 88 05 00 00 */ lbz r0, 0(r5) -/* 80357C84 38 A5 00 01 */ addi r5, r5, 1 -/* 80357C88 88 C4 00 00 */ lbz r6, 0(r4) -/* 80357C8C 38 84 00 01 */ addi r4, r4, 1 -/* 80357C90 7C 03 07 74 */ extsb r3, r0 -/* 80357C94 7C C0 07 74 */ extsb r0, r6 -/* 80357C98 7C 03 00 00 */ cmpw r3, r0 -/* 80357C9C 41 82 00 0C */ beq lbl_80357CA8 -/* 80357CA0 38 60 00 00 */ li r3, 0 -/* 80357CA4 4E 80 00 20 */ blr -lbl_80357CA8: -/* 80357CA8 7C C0 07 75 */ extsb. r0, r6 -/* 80357CAC 40 82 00 0C */ bne lbl_80357CB8 -/* 80357CB0 38 60 00 01 */ li r3, 1 -/* 80357CB4 4E 80 00 20 */ blr -lbl_80357CB8: -/* 80357CB8 34 E7 FF FF */ addic. r7, r7, -1 -/* 80357CBC 40 80 FF C4 */ bge lbl_80357C80 -/* 80357CC0 88 04 00 00 */ lbz r0, 0(r4) -/* 80357CC4 7C 00 07 75 */ extsb. r0, r0 -/* 80357CC8 40 82 00 0C */ bne lbl_80357CD4 -/* 80357CCC 38 60 00 01 */ li r3, 1 -/* 80357CD0 4E 80 00 20 */ blr -lbl_80357CD4: -/* 80357CD4 38 60 00 00 */ li r3, 0 -/* 80357CD8 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDOpen/__CARDIsReadable.s b/asm/dolphin/card/CARDOpen/__CARDIsReadable.s index fa2bcab6a93..2b70786171f 100644 --- a/asm/dolphin/card/CARDOpen/__CARDIsReadable.s +++ b/asm/dolphin/card/CARDOpen/__CARDIsReadable.s @@ -10,7 +10,7 @@ lbl_80357EA4: /* 80357EC4 2C 1D FF F6 */ cmpwi r29, -10 /* 80357EC8 40 82 00 9C */ bne lbl_80357F64 /* 80357ECC 88 7B 00 34 */ lbz r3, 0x34(r27) -/* 80357ED0 88 0D 84 F2 */ lbz r0, struct_80450A70+0x2(r13) +/* 80357ED0 88 0D 84 F2 */ lbz r0, data_80450A72(r13) /* 80357ED4 7C 60 00 38 */ and r0, r3, r0 /* 80357ED8 54 1E 06 3E */ clrlwi r30, r0, 0x18 /* 80357EDC 54 00 06 B5 */ rlwinm. r0, r0, 0, 0x1a, 0x1a diff --git a/asm/dolphin/card/CARDOpen/__CARDIsWritable.s b/asm/dolphin/card/CARDOpen/__CARDIsWritable.s index d269cf827e2..7d23ac00384 100644 --- a/asm/dolphin/card/CARDOpen/__CARDIsWritable.s +++ b/asm/dolphin/card/CARDOpen/__CARDIsWritable.s @@ -36,7 +36,7 @@ lbl_80357DE8: /* 80357DE8 2C 1E FF F6 */ cmpwi r30, -10 /* 80357DEC 40 82 00 A0 */ bne lbl_80357E8C /* 80357DF0 88 7B 00 34 */ lbz r3, 0x34(r27) -/* 80357DF4 88 0D 84 F2 */ lbz r0, struct_80450A70+0x2(r13) +/* 80357DF4 88 0D 84 F2 */ lbz r0, data_80450A72(r13) /* 80357DF8 7C 60 00 38 */ and r0, r3, r0 /* 80357DFC 54 1C 06 3E */ clrlwi r28, r0, 0x18 /* 80357E00 54 00 06 B5 */ rlwinm. r0, r0, 0, 0x1a, 0x1a diff --git a/asm/dolphin/card/CARDRdwr/BlockReadCallback.s b/asm/dolphin/card/CARDRdwr/BlockReadCallback.s deleted file mode 100644 index a16c5ab06a0..00000000000 --- a/asm/dolphin/card/CARDRdwr/BlockReadCallback.s +++ /dev/null @@ -1,59 +0,0 @@ -lbl_80355184: -/* 80355184 7C 08 02 A6 */ mflr r0 -/* 80355188 90 01 00 04 */ stw r0, 4(r1) -/* 8035518C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80355190 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80355194 3B E3 00 00 */ addi r31, r3, 0 -/* 80355198 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 8035519C 93 C1 00 18 */ stw r30, 0x18(r1) -/* 803551A0 1C BF 01 10 */ mulli r5, r31, 0x110 -/* 803551A4 93 A1 00 14 */ stw r29, 0x14(r1) -/* 803551A8 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 803551AC 7C 9D 23 79 */ or. r29, r4, r4 -/* 803551B0 7F C0 2A 14 */ add r30, r0, r5 -/* 803551B4 41 80 00 50 */ blt lbl_80355204 -/* 803551B8 80 7E 00 B8 */ lwz r3, 0xb8(r30) -/* 803551BC 38 03 02 00 */ addi r0, r3, 0x200 -/* 803551C0 90 1E 00 B8 */ stw r0, 0xb8(r30) -/* 803551C4 80 7E 00 B0 */ lwz r3, 0xb0(r30) -/* 803551C8 38 03 02 00 */ addi r0, r3, 0x200 -/* 803551CC 90 1E 00 B0 */ stw r0, 0xb0(r30) -/* 803551D0 80 7E 00 B4 */ lwz r3, 0xb4(r30) -/* 803551D4 38 03 02 00 */ addi r0, r3, 0x200 -/* 803551D8 90 1E 00 B4 */ stw r0, 0xb4(r30) -/* 803551DC 80 7E 00 AC */ lwz r3, 0xac(r30) -/* 803551E0 34 03 FF FF */ addic. r0, r3, -1 -/* 803551E4 90 1E 00 AC */ stw r0, 0xac(r30) -/* 803551E8 40 81 00 1C */ ble lbl_80355204 -/* 803551EC 3C 60 80 35 */ lis r3, BlockReadCallback@ha /* 0x80355184@ha */ -/* 803551F0 38 83 51 84 */ addi r4, r3, BlockReadCallback@l /* 0x80355184@l */ -/* 803551F4 38 7F 00 00 */ addi r3, r31, 0 -/* 803551F8 4B FF E5 51 */ bl __CARDReadSegment -/* 803551FC 7C 7D 1B 79 */ or. r29, r3, r3 -/* 80355200 40 80 00 44 */ bge lbl_80355244 -lbl_80355204: -/* 80355204 80 1E 00 D0 */ lwz r0, 0xd0(r30) -/* 80355208 28 00 00 00 */ cmplwi r0, 0 -/* 8035520C 40 82 00 10 */ bne lbl_8035521C -/* 80355210 38 7E 00 00 */ addi r3, r30, 0 -/* 80355214 38 9D 00 00 */ addi r4, r29, 0 -/* 80355218 4B FF EA 55 */ bl __CARDPutControlBlock -lbl_8035521C: -/* 8035521C 80 1E 00 D4 */ lwz r0, 0xd4(r30) -/* 80355220 28 00 00 00 */ cmplwi r0, 0 -/* 80355224 7C 0C 03 78 */ mr r12, r0 -/* 80355228 41 82 00 1C */ beq lbl_80355244 -/* 8035522C 38 00 00 00 */ li r0, 0 -/* 80355230 7D 88 03 A6 */ mtlr r12 -/* 80355234 90 1E 00 D4 */ stw r0, 0xd4(r30) -/* 80355238 38 7F 00 00 */ addi r3, r31, 0 -/* 8035523C 38 9D 00 00 */ addi r4, r29, 0 -/* 80355240 4E 80 00 21 */ blrl -lbl_80355244: -/* 80355244 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80355248 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8035524C 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80355250 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80355254 38 21 00 20 */ addi r1, r1, 0x20 -/* 80355258 7C 08 03 A6 */ mtlr r0 -/* 8035525C 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDRdwr/__CARDRead.s b/asm/dolphin/card/CARDRdwr/__CARDRead.s deleted file mode 100644 index 70b51a67c48..00000000000 --- a/asm/dolphin/card/CARDRdwr/__CARDRead.s +++ /dev/null @@ -1,28 +0,0 @@ -lbl_80355260: -/* 80355260 7C 08 02 A6 */ mflr r0 -/* 80355264 1D 23 01 10 */ mulli r9, r3, 0x110 -/* 80355268 90 01 00 04 */ stw r0, 4(r1) -/* 8035526C 3D 00 80 45 */ lis r8, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80355270 94 21 FF F8 */ stwu r1, -8(r1) -/* 80355274 38 08 CB C0 */ addi r0, r8, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80355278 7D 00 4A 14 */ add r8, r0, r9 -/* 8035527C 80 08 00 00 */ lwz r0, 0(r8) -/* 80355280 2C 00 00 00 */ cmpwi r0, 0 -/* 80355284 40 82 00 0C */ bne lbl_80355290 -/* 80355288 38 60 FF FD */ li r3, -3 -/* 8035528C 48 00 00 28 */ b lbl_803552B4 -lbl_80355290: -/* 80355290 90 E8 00 D4 */ stw r7, 0xd4(r8) -/* 80355294 54 A0 BA 7E */ srwi r0, r5, 9 -/* 80355298 3C A0 80 35 */ lis r5, BlockReadCallback@ha /* 0x80355184@ha */ -/* 8035529C 90 08 00 AC */ stw r0, 0xac(r8) -/* 803552A0 38 05 51 84 */ addi r0, r5, BlockReadCallback@l /* 0x80355184@l */ -/* 803552A4 90 88 00 B0 */ stw r4, 0xb0(r8) -/* 803552A8 7C 04 03 78 */ mr r4, r0 -/* 803552AC 90 C8 00 B4 */ stw r6, 0xb4(r8) -/* 803552B0 4B FF E4 99 */ bl __CARDReadSegment -lbl_803552B4: -/* 803552B4 80 01 00 0C */ lwz r0, 0xc(r1) -/* 803552B8 38 21 00 08 */ addi r1, r1, 8 -/* 803552BC 7C 08 03 A6 */ mtlr r0 -/* 803552C0 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDRdwr/__CARDWrite.s b/asm/dolphin/card/CARDRdwr/__CARDWrite.s deleted file mode 100644 index 1144ca3763c..00000000000 --- a/asm/dolphin/card/CARDRdwr/__CARDWrite.s +++ /dev/null @@ -1,29 +0,0 @@ -lbl_803553AC: -/* 803553AC 7C 08 02 A6 */ mflr r0 -/* 803553B0 1D 23 01 10 */ mulli r9, r3, 0x110 -/* 803553B4 90 01 00 04 */ stw r0, 4(r1) -/* 803553B8 3D 00 80 45 */ lis r8, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 803553BC 94 21 FF F8 */ stwu r1, -8(r1) -/* 803553C0 38 08 CB C0 */ addi r0, r8, __CARDBlock@l /* 0x8044CBC0@l */ -/* 803553C4 7D 00 4A 14 */ add r8, r0, r9 -/* 803553C8 80 08 00 00 */ lwz r0, 0(r8) -/* 803553CC 2C 00 00 00 */ cmpwi r0, 0 -/* 803553D0 40 82 00 0C */ bne lbl_803553DC -/* 803553D4 38 60 FF FD */ li r3, -3 -/* 803553D8 48 00 00 2C */ b lbl_80355404 -lbl_803553DC: -/* 803553DC 90 E8 00 D4 */ stw r7, 0xd4(r8) -/* 803553E0 3C E0 80 35 */ lis r7, BlockWriteCallback@ha /* 0x803552C4@ha */ -/* 803553E4 38 07 52 C4 */ addi r0, r7, BlockWriteCallback@l /* 0x803552C4@l */ -/* 803553E8 A0 E8 00 0A */ lhz r7, 0xa(r8) -/* 803553EC 7C A5 3B D6 */ divw r5, r5, r7 -/* 803553F0 90 A8 00 AC */ stw r5, 0xac(r8) -/* 803553F4 90 88 00 B0 */ stw r4, 0xb0(r8) -/* 803553F8 7C 04 03 78 */ mr r4, r0 -/* 803553FC 90 C8 00 B4 */ stw r6, 0xb4(r8) -/* 80355400 4B FF E4 7D */ bl __CARDWritePage -lbl_80355404: -/* 80355404 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80355408 38 21 00 08 */ addi r1, r1, 8 -/* 8035540C 7C 08 03 A6 */ mtlr r0 -/* 80355410 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDRead/CARDRead.s b/asm/dolphin/card/CARDRead/CARDRead.s deleted file mode 100644 index bf462e6b2ba..00000000000 --- a/asm/dolphin/card/CARDRead/CARDRead.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_803588CC: -/* 803588CC 7C 08 02 A6 */ mflr r0 -/* 803588D0 3C E0 80 35 */ lis r7, __CARDSyncCallback@ha /* 0x80352A34@ha */ -/* 803588D4 90 01 00 04 */ stw r0, 4(r1) -/* 803588D8 38 E7 2A 34 */ addi r7, r7, __CARDSyncCallback@l /* 0x80352A34@l */ -/* 803588DC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 803588E0 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 803588E4 3B E3 00 00 */ addi r31, r3, 0 -/* 803588E8 4B FF FE A1 */ bl CARDReadAsync -/* 803588EC 2C 03 00 00 */ cmpwi r3, 0 -/* 803588F0 40 80 00 08 */ bge lbl_803588F8 -/* 803588F4 48 00 00 0C */ b lbl_80358900 -lbl_803588F8: -/* 803588F8 80 7F 00 00 */ lwz r3, 0(r31) -/* 803588FC 4B FF B5 25 */ bl __CARDSync -lbl_80358900: -/* 80358900 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80358904 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80358908 38 21 00 20 */ addi r1, r1, 0x20 -/* 8035890C 7C 08 03 A6 */ mtlr r0 -/* 80358910 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDRead/ReadCallback.s b/asm/dolphin/card/CARDRead/ReadCallback.s deleted file mode 100644 index fdc03d1fe9a..00000000000 --- a/asm/dolphin/card/CARDRead/ReadCallback.s +++ /dev/null @@ -1,84 +0,0 @@ -lbl_80358658: -/* 80358658 7C 08 02 A6 */ mflr r0 -/* 8035865C 90 01 00 04 */ stw r0, 4(r1) -/* 80358660 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 80358664 BF 61 00 14 */ stmw r27, 0x14(r1) -/* 80358668 3B A3 00 00 */ addi r29, r3, 0 -/* 8035866C 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 80358670 1C BD 01 10 */ mulli r5, r29, 0x110 -/* 80358674 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 80358678 7C 9E 23 79 */ or. r30, r4, r4 -/* 8035867C 7F E0 2A 14 */ add r31, r0, r5 -/* 80358680 41 80 00 C8 */ blt lbl_80358748 -/* 80358684 83 9F 00 C0 */ lwz r28, 0xc0(r31) -/* 80358688 80 9C 00 0C */ lwz r4, 0xc(r28) -/* 8035868C 2C 04 00 00 */ cmpwi r4, 0 -/* 80358690 40 80 00 0C */ bge lbl_8035869C -/* 80358694 3B C0 FF F2 */ li r30, -14 -/* 80358698 48 00 00 B0 */ b lbl_80358748 -lbl_8035869C: -/* 8035869C 80 BF 00 0C */ lwz r5, 0xc(r31) -/* 803586A0 80 DC 00 08 */ lwz r6, 8(r28) -/* 803586A4 38 05 FF FF */ addi r0, r5, -1 -/* 803586A8 7C 03 00 F8 */ nor r3, r0, r0 -/* 803586AC 7C 06 2A 14 */ add r0, r6, r5 -/* 803586B0 7C 60 00 38 */ and r0, r3, r0 -/* 803586B4 7F 66 00 50 */ subf r27, r6, r0 -/* 803586B8 7C 1B 20 50 */ subf r0, r27, r4 -/* 803586BC 90 1C 00 0C */ stw r0, 0xc(r28) -/* 803586C0 80 1C 00 0C */ lwz r0, 0xc(r28) -/* 803586C4 2C 00 00 00 */ cmpwi r0, 0 -/* 803586C8 40 81 00 80 */ ble lbl_80358748 -/* 803586CC 7F E3 FB 78 */ mr r3, r31 -/* 803586D0 4B FF CD 45 */ bl __CARDGetFatBlock -/* 803586D4 80 1C 00 08 */ lwz r0, 8(r28) -/* 803586D8 7C 00 DA 14 */ add r0, r0, r27 -/* 803586DC 90 1C 00 08 */ stw r0, 8(r28) -/* 803586E0 A0 1C 00 10 */ lhz r0, 0x10(r28) -/* 803586E4 54 00 08 3C */ slwi r0, r0, 1 -/* 803586E8 7C 03 02 2E */ lhzx r0, r3, r0 -/* 803586EC B0 1C 00 10 */ sth r0, 0x10(r28) -/* 803586F0 A0 7C 00 10 */ lhz r3, 0x10(r28) -/* 803586F4 28 03 00 05 */ cmplwi r3, 5 -/* 803586F8 41 80 00 10 */ blt lbl_80358708 -/* 803586FC A0 1F 00 10 */ lhz r0, 0x10(r31) -/* 80358700 7C 03 00 40 */ cmplw r3, r0 -/* 80358704 41 80 00 0C */ blt lbl_80358710 -lbl_80358708: -/* 80358708 3B C0 FF FA */ li r30, -6 -/* 8035870C 48 00 00 3C */ b lbl_80358748 -lbl_80358710: -/* 80358710 80 BC 00 0C */ lwz r5, 0xc(r28) -/* 80358714 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 80358718 7C 05 00 00 */ cmpw r5, r0 -/* 8035871C 40 80 00 08 */ bge lbl_80358724 -/* 80358720 48 00 00 08 */ b lbl_80358728 -lbl_80358724: -/* 80358724 7C 05 03 78 */ mr r5, r0 -lbl_80358728: -/* 80358728 7C 80 19 D6 */ mullw r4, r0, r3 -/* 8035872C 80 DF 00 B4 */ lwz r6, 0xb4(r31) -/* 80358730 3C 60 80 36 */ lis r3, ReadCallback@ha /* 0x80358658@ha */ -/* 80358734 38 E3 86 58 */ addi r7, r3, ReadCallback@l /* 0x80358658@l */ -/* 80358738 38 7D 00 00 */ addi r3, r29, 0 -/* 8035873C 4B FF CB 25 */ bl __CARDRead -/* 80358740 7C 7E 1B 79 */ or. r30, r3, r3 -/* 80358744 40 80 00 30 */ bge lbl_80358774 -lbl_80358748: -/* 80358748 83 7F 00 D0 */ lwz r27, 0xd0(r31) -/* 8035874C 38 00 00 00 */ li r0, 0 -/* 80358750 38 7F 00 00 */ addi r3, r31, 0 -/* 80358754 90 1F 00 D0 */ stw r0, 0xd0(r31) -/* 80358758 7F C4 F3 78 */ mr r4, r30 -/* 8035875C 4B FF B5 11 */ bl __CARDPutControlBlock -/* 80358760 39 9B 00 00 */ addi r12, r27, 0 -/* 80358764 7D 88 03 A6 */ mtlr r12 -/* 80358768 38 7D 00 00 */ addi r3, r29, 0 -/* 8035876C 38 9E 00 00 */ addi r4, r30, 0 -/* 80358770 4E 80 00 21 */ blrl -lbl_80358774: -/* 80358774 BB 61 00 14 */ lmw r27, 0x14(r1) -/* 80358778 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8035877C 38 21 00 28 */ addi r1, r1, 0x28 -/* 80358780 7C 08 03 A6 */ mtlr r0 -/* 80358784 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDRead/__CARDSeek.s b/asm/dolphin/card/CARDRead/__CARDSeek.s deleted file mode 100644 index 2b33564f6b9..00000000000 --- a/asm/dolphin/card/CARDRead/__CARDSeek.s +++ /dev/null @@ -1,122 +0,0 @@ -lbl_803584A0: -/* 803584A0 7C 08 02 A6 */ mflr r0 -/* 803584A4 90 01 00 04 */ stw r0, 4(r1) -/* 803584A8 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 803584AC 93 E1 00 2C */ stw r31, 0x2c(r1) -/* 803584B0 3B E6 00 00 */ addi r31, r6, 0 -/* 803584B4 93 C1 00 28 */ stw r30, 0x28(r1) -/* 803584B8 3B C5 00 00 */ addi r30, r5, 0 -/* 803584BC 93 A1 00 24 */ stw r29, 0x24(r1) -/* 803584C0 3B A4 00 00 */ addi r29, r4, 0 -/* 803584C4 38 81 00 18 */ addi r4, r1, 0x18 -/* 803584C8 93 81 00 20 */ stw r28, 0x20(r1) -/* 803584CC 7C 7C 1B 78 */ mr r28, r3 -/* 803584D0 80 63 00 00 */ lwz r3, 0(r3) -/* 803584D4 4B FF B6 E1 */ bl __CARDGetControlBlock -/* 803584D8 2C 03 00 00 */ cmpwi r3, 0 -/* 803584DC 40 80 00 08 */ bge lbl_803584E4 -/* 803584E0 48 00 01 58 */ b lbl_80358638 -lbl_803584E4: -/* 803584E4 A0 1C 00 10 */ lhz r0, 0x10(r28) -/* 803584E8 28 00 00 05 */ cmplwi r0, 5 -/* 803584EC 41 80 00 28 */ blt lbl_80358514 -/* 803584F0 80 61 00 18 */ lwz r3, 0x18(r1) -/* 803584F4 A0 A3 00 10 */ lhz r5, 0x10(r3) -/* 803584F8 7C 00 28 40 */ cmplw r0, r5 -/* 803584FC 40 80 00 18 */ bge lbl_80358514 -/* 80358500 80 83 00 0C */ lwz r4, 0xc(r3) -/* 80358504 80 1C 00 08 */ lwz r0, 8(r28) -/* 80358508 7C 85 21 D6 */ mullw r4, r5, r4 -/* 8035850C 7C 04 00 00 */ cmpw r4, r0 -/* 80358510 41 81 00 14 */ bgt lbl_80358524 -lbl_80358514: -/* 80358514 80 61 00 18 */ lwz r3, 0x18(r1) -/* 80358518 38 80 FF 80 */ li r4, -128 -/* 8035851C 4B FF B7 51 */ bl __CARDPutControlBlock -/* 80358520 48 00 01 18 */ b lbl_80358638 -lbl_80358524: -/* 80358524 4B FF D2 59 */ bl __CARDGetDirBlock -/* 80358528 80 1C 00 04 */ lwz r0, 4(r28) -/* 8035852C 80 A1 00 18 */ lwz r5, 0x18(r1) -/* 80358530 54 00 30 32 */ slwi r0, r0, 6 -/* 80358534 7C 83 02 14 */ add r4, r3, r0 -/* 80358538 80 65 00 0C */ lwz r3, 0xc(r5) -/* 8035853C A0 04 00 38 */ lhz r0, 0x38(r4) -/* 80358540 7C 60 19 D6 */ mullw r3, r0, r3 -/* 80358544 7C 03 F0 00 */ cmpw r3, r30 -/* 80358548 40 81 00 10 */ ble lbl_80358558 -/* 8035854C 7C 1E EA 14 */ add r0, r30, r29 -/* 80358550 7C 03 00 00 */ cmpw r3, r0 -/* 80358554 40 80 00 14 */ bge lbl_80358568 -lbl_80358558: -/* 80358558 38 65 00 00 */ addi r3, r5, 0 -/* 8035855C 38 80 FF F5 */ li r4, -11 -/* 80358560 4B FF B7 0D */ bl __CARDPutControlBlock -/* 80358564 48 00 00 D4 */ b lbl_80358638 -lbl_80358568: -/* 80358568 93 85 00 C0 */ stw r28, 0xc0(r5) -/* 8035856C 93 BC 00 0C */ stw r29, 0xc(r28) -/* 80358570 80 1C 00 08 */ lwz r0, 8(r28) -/* 80358574 7C 1E 00 00 */ cmpw r30, r0 -/* 80358578 40 80 00 40 */ bge lbl_803585B8 -/* 8035857C 38 00 00 00 */ li r0, 0 -/* 80358580 90 1C 00 08 */ stw r0, 8(r28) -/* 80358584 A0 04 00 36 */ lhz r0, 0x36(r4) -/* 80358588 B0 1C 00 10 */ sth r0, 0x10(r28) -/* 8035858C A0 9C 00 10 */ lhz r4, 0x10(r28) -/* 80358590 28 04 00 05 */ cmplwi r4, 5 -/* 80358594 41 80 00 14 */ blt lbl_803585A8 -/* 80358598 80 61 00 18 */ lwz r3, 0x18(r1) -/* 8035859C A0 03 00 10 */ lhz r0, 0x10(r3) -/* 803585A0 7C 04 00 40 */ cmplw r4, r0 -/* 803585A4 41 80 00 14 */ blt lbl_803585B8 -lbl_803585A8: -/* 803585A8 80 61 00 18 */ lwz r3, 0x18(r1) -/* 803585AC 38 80 FF FA */ li r4, -6 -/* 803585B0 4B FF B6 BD */ bl __CARDPutControlBlock -/* 803585B4 48 00 00 84 */ b lbl_80358638 -lbl_803585B8: -/* 803585B8 80 61 00 18 */ lwz r3, 0x18(r1) -/* 803585BC 4B FF CE 59 */ bl __CARDGetFatBlock -/* 803585C0 48 00 00 4C */ b lbl_8035860C -lbl_803585C4: -/* 803585C4 80 1C 00 08 */ lwz r0, 8(r28) -/* 803585C8 7C 00 22 14 */ add r0, r0, r4 -/* 803585CC 90 1C 00 08 */ stw r0, 8(r28) -/* 803585D0 A0 1C 00 10 */ lhz r0, 0x10(r28) -/* 803585D4 54 00 08 3C */ slwi r0, r0, 1 -/* 803585D8 7C 03 02 2E */ lhzx r0, r3, r0 -/* 803585DC B0 1C 00 10 */ sth r0, 0x10(r28) -/* 803585E0 A0 BC 00 10 */ lhz r5, 0x10(r28) -/* 803585E4 28 05 00 05 */ cmplwi r5, 5 -/* 803585E8 41 80 00 14 */ blt lbl_803585FC -/* 803585EC 80 81 00 18 */ lwz r4, 0x18(r1) -/* 803585F0 A0 04 00 10 */ lhz r0, 0x10(r4) -/* 803585F4 7C 05 00 40 */ cmplw r5, r0 -/* 803585F8 41 80 00 14 */ blt lbl_8035860C -lbl_803585FC: -/* 803585FC 80 61 00 18 */ lwz r3, 0x18(r1) -/* 80358600 38 80 FF FA */ li r4, -6 -/* 80358604 4B FF B6 69 */ bl __CARDPutControlBlock -/* 80358608 48 00 00 30 */ b lbl_80358638 -lbl_8035860C: -/* 8035860C 80 81 00 18 */ lwz r4, 0x18(r1) -/* 80358610 80 BC 00 08 */ lwz r5, 8(r28) -/* 80358614 80 84 00 0C */ lwz r4, 0xc(r4) -/* 80358618 38 04 FF FF */ addi r0, r4, -1 -/* 8035861C 7F C0 00 78 */ andc r0, r30, r0 -/* 80358620 7C 05 00 40 */ cmplw r5, r0 -/* 80358624 41 80 FF A0 */ blt lbl_803585C4 -/* 80358628 93 DC 00 08 */ stw r30, 8(r28) -/* 8035862C 38 60 00 00 */ li r3, 0 -/* 80358630 80 01 00 18 */ lwz r0, 0x18(r1) -/* 80358634 90 1F 00 00 */ stw r0, 0(r31) -lbl_80358638: -/* 80358638 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8035863C 83 E1 00 2C */ lwz r31, 0x2c(r1) -/* 80358640 83 C1 00 28 */ lwz r30, 0x28(r1) -/* 80358644 83 A1 00 24 */ lwz r29, 0x24(r1) -/* 80358648 83 81 00 20 */ lwz r28, 0x20(r1) -/* 8035864C 38 21 00 30 */ addi r1, r1, 0x30 -/* 80358650 7C 08 03 A6 */ mtlr r0 -/* 80358654 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDStat/CARDSetStatus.s b/asm/dolphin/card/CARDStat/CARDSetStatus.s deleted file mode 100644 index 7bd3aa7780e..00000000000 --- a/asm/dolphin/card/CARDStat/CARDSetStatus.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_80359110: -/* 80359110 7C 08 02 A6 */ mflr r0 -/* 80359114 3C C0 80 35 */ lis r6, __CARDSyncCallback@ha /* 0x80352A34@ha */ -/* 80359118 90 01 00 04 */ stw r0, 4(r1) -/* 8035911C 38 C6 2A 34 */ addi r6, r6, __CARDSyncCallback@l /* 0x80352A34@l */ -/* 80359120 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80359124 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80359128 3B E3 00 00 */ addi r31, r3, 0 -/* 8035912C 4B FF FE 71 */ bl CARDSetStatusAsync -/* 80359130 2C 03 00 00 */ cmpwi r3, 0 -/* 80359134 40 80 00 08 */ bge lbl_8035913C -/* 80359138 48 00 00 0C */ b lbl_80359144 -lbl_8035913C: -/* 8035913C 7F E3 FB 78 */ mr r3, r31 -/* 80359140 4B FF AC E1 */ bl __CARDSync -lbl_80359144: -/* 80359144 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80359148 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8035914C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80359150 7C 08 03 A6 */ mtlr r0 -/* 80359154 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDStat/UpdateIconOffsets.s b/asm/dolphin/card/CARDStat/UpdateIconOffsets.s deleted file mode 100644 index 7ff24d19df4..00000000000 --- a/asm/dolphin/card/CARDStat/UpdateIconOffsets.s +++ /dev/null @@ -1,151 +0,0 @@ -lbl_80358C90: -/* 80358C90 81 03 00 2C */ lwz r8, 0x2c(r3) -/* 80358C94 3C 08 00 01 */ addis r0, r8, 1 -/* 80358C98 28 00 FF FF */ cmplwi r0, 0xffff -/* 80358C9C 40 82 00 18 */ bne lbl_80358CB4 -/* 80358CA0 38 00 00 00 */ li r0, 0 -/* 80358CA4 98 04 00 2E */ stb r0, 0x2e(r4) -/* 80358CA8 39 00 00 00 */ li r8, 0 -/* 80358CAC B0 04 00 34 */ sth r0, 0x34(r4) -/* 80358CB0 B0 04 00 36 */ sth r0, 0x36(r4) -lbl_80358CB4: -/* 80358CB4 88 03 00 07 */ lbz r0, 7(r3) -/* 80358CB8 39 20 00 00 */ li r9, 0 -/* 80358CBC 54 00 07 BE */ clrlwi r0, r0, 0x1e -/* 80358CC0 2C 00 00 02 */ cmpwi r0, 2 -/* 80358CC4 41 82 00 28 */ beq lbl_80358CEC -/* 80358CC8 40 80 00 38 */ bge lbl_80358D00 -/* 80358CCC 2C 00 00 01 */ cmpwi r0, 1 -/* 80358CD0 40 80 00 08 */ bge lbl_80358CD8 -/* 80358CD4 48 00 00 2C */ b lbl_80358D00 -lbl_80358CD8: -/* 80358CD8 91 04 00 3C */ stw r8, 0x3c(r4) -/* 80358CDC 38 08 0C 00 */ addi r0, r8, 0xc00 -/* 80358CE0 39 08 0E 00 */ addi r8, r8, 0xe00 -/* 80358CE4 90 04 00 40 */ stw r0, 0x40(r4) -/* 80358CE8 48 00 00 24 */ b lbl_80358D0C -lbl_80358CEC: -/* 80358CEC 91 04 00 3C */ stw r8, 0x3c(r4) -/* 80358CF0 38 00 FF FF */ li r0, -1 -/* 80358CF4 39 08 18 00 */ addi r8, r8, 0x1800 -/* 80358CF8 90 04 00 40 */ stw r0, 0x40(r4) -/* 80358CFC 48 00 00 10 */ b lbl_80358D0C -lbl_80358D00: -/* 80358D00 38 00 FF FF */ li r0, -1 -/* 80358D04 90 04 00 3C */ stw r0, 0x3c(r4) -/* 80358D08 90 04 00 40 */ stw r0, 0x40(r4) -lbl_80358D0C: -/* 80358D0C 38 00 00 02 */ li r0, 2 -/* 80358D10 7C 09 03 A6 */ mtctr r0 -/* 80358D14 38 E4 00 00 */ addi r7, r4, 0 -/* 80358D18 39 40 00 00 */ li r10, 0 -/* 80358D1C 38 C0 00 00 */ li r6, 0 -/* 80358D20 38 00 FF FF */ li r0, -1 -lbl_80358D24: -/* 80358D24 A0 A3 00 30 */ lhz r5, 0x30(r3) -/* 80358D28 7C A5 36 30 */ sraw r5, r5, r6 -/* 80358D2C 54 A5 07 BE */ clrlwi r5, r5, 0x1e -/* 80358D30 2C 05 00 02 */ cmpwi r5, 2 -/* 80358D34 41 82 00 24 */ beq lbl_80358D58 -/* 80358D38 40 80 00 2C */ bge lbl_80358D64 -/* 80358D3C 2C 05 00 01 */ cmpwi r5, 1 -/* 80358D40 40 80 00 08 */ bge lbl_80358D48 -/* 80358D44 48 00 00 20 */ b lbl_80358D64 -lbl_80358D48: -/* 80358D48 91 07 00 44 */ stw r8, 0x44(r7) -/* 80358D4C 39 20 00 01 */ li r9, 1 -/* 80358D50 39 08 04 00 */ addi r8, r8, 0x400 -/* 80358D54 48 00 00 14 */ b lbl_80358D68 -lbl_80358D58: -/* 80358D58 91 07 00 44 */ stw r8, 0x44(r7) -/* 80358D5C 39 08 08 00 */ addi r8, r8, 0x800 -/* 80358D60 48 00 00 08 */ b lbl_80358D68 -lbl_80358D64: -/* 80358D64 90 07 00 44 */ stw r0, 0x44(r7) -lbl_80358D68: -/* 80358D68 A0 A3 00 30 */ lhz r5, 0x30(r3) -/* 80358D6C 38 C6 00 02 */ addi r6, r6, 2 -/* 80358D70 38 E7 00 04 */ addi r7, r7, 4 -/* 80358D74 7C A5 36 30 */ sraw r5, r5, r6 -/* 80358D78 54 A5 07 BE */ clrlwi r5, r5, 0x1e -/* 80358D7C 2C 05 00 02 */ cmpwi r5, 2 -/* 80358D80 41 82 00 24 */ beq lbl_80358DA4 -/* 80358D84 40 80 00 2C */ bge lbl_80358DB0 -/* 80358D88 2C 05 00 01 */ cmpwi r5, 1 -/* 80358D8C 40 80 00 08 */ bge lbl_80358D94 -/* 80358D90 48 00 00 20 */ b lbl_80358DB0 -lbl_80358D94: -/* 80358D94 91 07 00 44 */ stw r8, 0x44(r7) -/* 80358D98 39 20 00 01 */ li r9, 1 -/* 80358D9C 39 08 04 00 */ addi r8, r8, 0x400 -/* 80358DA0 48 00 00 14 */ b lbl_80358DB4 -lbl_80358DA4: -/* 80358DA4 91 07 00 44 */ stw r8, 0x44(r7) -/* 80358DA8 39 08 08 00 */ addi r8, r8, 0x800 -/* 80358DAC 48 00 00 08 */ b lbl_80358DB4 -lbl_80358DB0: -/* 80358DB0 90 07 00 44 */ stw r0, 0x44(r7) -lbl_80358DB4: -/* 80358DB4 A0 A3 00 30 */ lhz r5, 0x30(r3) -/* 80358DB8 38 C6 00 02 */ addi r6, r6, 2 -/* 80358DBC 39 4A 00 01 */ addi r10, r10, 1 -/* 80358DC0 7C A5 36 30 */ sraw r5, r5, r6 -/* 80358DC4 54 A5 07 BE */ clrlwi r5, r5, 0x1e -/* 80358DC8 2C 05 00 02 */ cmpwi r5, 2 -/* 80358DCC 38 E7 00 04 */ addi r7, r7, 4 -/* 80358DD0 41 82 00 24 */ beq lbl_80358DF4 -/* 80358DD4 40 80 00 2C */ bge lbl_80358E00 -/* 80358DD8 2C 05 00 01 */ cmpwi r5, 1 -/* 80358DDC 40 80 00 08 */ bge lbl_80358DE4 -/* 80358DE0 48 00 00 20 */ b lbl_80358E00 -lbl_80358DE4: -/* 80358DE4 91 07 00 44 */ stw r8, 0x44(r7) -/* 80358DE8 39 20 00 01 */ li r9, 1 -/* 80358DEC 39 08 04 00 */ addi r8, r8, 0x400 -/* 80358DF0 48 00 00 14 */ b lbl_80358E04 -lbl_80358DF4: -/* 80358DF4 91 07 00 44 */ stw r8, 0x44(r7) -/* 80358DF8 39 08 08 00 */ addi r8, r8, 0x800 -/* 80358DFC 48 00 00 08 */ b lbl_80358E04 -lbl_80358E00: -/* 80358E00 90 07 00 44 */ stw r0, 0x44(r7) -lbl_80358E04: -/* 80358E04 A0 A3 00 30 */ lhz r5, 0x30(r3) -/* 80358E08 38 C6 00 02 */ addi r6, r6, 2 -/* 80358E0C 39 4A 00 01 */ addi r10, r10, 1 -/* 80358E10 7C A5 36 30 */ sraw r5, r5, r6 -/* 80358E14 54 A5 07 BE */ clrlwi r5, r5, 0x1e -/* 80358E18 2C 05 00 02 */ cmpwi r5, 2 -/* 80358E1C 38 E7 00 04 */ addi r7, r7, 4 -/* 80358E20 41 82 00 24 */ beq lbl_80358E44 -/* 80358E24 40 80 00 2C */ bge lbl_80358E50 -/* 80358E28 2C 05 00 01 */ cmpwi r5, 1 -/* 80358E2C 40 80 00 08 */ bge lbl_80358E34 -/* 80358E30 48 00 00 20 */ b lbl_80358E50 -lbl_80358E34: -/* 80358E34 91 07 00 44 */ stw r8, 0x44(r7) -/* 80358E38 39 20 00 01 */ li r9, 1 -/* 80358E3C 39 08 04 00 */ addi r8, r8, 0x400 -/* 80358E40 48 00 00 14 */ b lbl_80358E54 -lbl_80358E44: -/* 80358E44 91 07 00 44 */ stw r8, 0x44(r7) -/* 80358E48 39 08 08 00 */ addi r8, r8, 0x800 -/* 80358E4C 48 00 00 08 */ b lbl_80358E54 -lbl_80358E50: -/* 80358E50 90 07 00 44 */ stw r0, 0x44(r7) -lbl_80358E54: -/* 80358E54 38 C6 00 02 */ addi r6, r6, 2 -/* 80358E58 38 E7 00 04 */ addi r7, r7, 4 -/* 80358E5C 39 4A 00 01 */ addi r10, r10, 1 -/* 80358E60 42 00 FE C4 */ bdnz lbl_80358D24 -/* 80358E64 2C 09 00 00 */ cmpwi r9, 0 -/* 80358E68 41 82 00 10 */ beq lbl_80358E78 -/* 80358E6C 91 04 00 64 */ stw r8, 0x64(r4) -/* 80358E70 39 08 02 00 */ addi r8, r8, 0x200 -/* 80358E74 48 00 00 0C */ b lbl_80358E80 -lbl_80358E78: -/* 80358E78 38 00 FF FF */ li r0, -1 -/* 80358E7C 90 04 00 64 */ stw r0, 0x64(r4) -lbl_80358E80: -/* 80358E80 91 04 00 68 */ stw r8, 0x68(r4) -/* 80358E84 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDUnlock/ReadArrayUnlock.s b/asm/dolphin/card/CARDUnlock/ReadArrayUnlock.s deleted file mode 100644 index 78d16c34fd3..00000000000 --- a/asm/dolphin/card/CARDUnlock/ReadArrayUnlock.s +++ /dev/null @@ -1,87 +0,0 @@ -lbl_80354090: -/* 80354090 7C 08 02 A6 */ mflr r0 -/* 80354094 90 01 00 04 */ stw r0, 4(r1) -/* 80354098 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 8035409C BF 41 00 28 */ stmw r26, 0x28(r1) -/* 803540A0 3B A3 00 00 */ addi r29, r3, 0 -/* 803540A4 3C 60 80 45 */ lis r3, __CARDBlock@ha /* 0x8044CBC0@ha */ -/* 803540A8 38 03 CB C0 */ addi r0, r3, __CARDBlock@l /* 0x8044CBC0@l */ -/* 803540AC 1D 1D 01 10 */ mulli r8, r29, 0x110 -/* 803540B0 3B 44 00 00 */ addi r26, r4, 0 -/* 803540B4 3B C5 00 00 */ addi r30, r5, 0 -/* 803540B8 3B E6 00 00 */ addi r31, r6, 0 -/* 803540BC 3B 67 00 00 */ addi r27, r7, 0 -/* 803540C0 38 7D 00 00 */ addi r3, r29, 0 -/* 803540C4 7F 80 42 14 */ add r28, r0, r8 -/* 803540C8 38 80 00 00 */ li r4, 0 -/* 803540CC 38 A0 00 04 */ li r5, 4 -/* 803540D0 4B FE F7 99 */ bl EXISelect -/* 803540D4 2C 03 00 00 */ cmpwi r3, 0 -/* 803540D8 40 82 00 0C */ bne lbl_803540E4 -/* 803540DC 38 60 FF FD */ li r3, -3 -/* 803540E0 48 00 00 E0 */ b lbl_803541C0 -lbl_803540E4: -/* 803540E4 57 5A 00 26 */ rlwinm r26, r26, 0, 0, 0x13 -/* 803540E8 38 61 00 1C */ addi r3, r1, 0x1c -/* 803540EC 38 80 00 00 */ li r4, 0 -/* 803540F0 38 A0 00 05 */ li r5, 5 -/* 803540F4 4B CA F3 65 */ bl memset -/* 803540F8 38 00 00 52 */ li r0, 0x52 -/* 803540FC 2C 1B 00 00 */ cmpwi r27, 0 -/* 80354100 98 01 00 1C */ stb r0, 0x1c(r1) -/* 80354104 40 82 00 28 */ bne lbl_8035412C -/* 80354108 57 40 1F BE */ rlwinm r0, r26, 3, 0x1e, 0x1f -/* 8035410C 98 01 00 1D */ stb r0, 0x1d(r1) -/* 80354110 57 40 5E 3E */ rlwinm r0, r26, 0xb, 0x18, 0x1f -/* 80354114 57 43 6F BE */ rlwinm r3, r26, 0xd, 0x1e, 0x1f -/* 80354118 98 01 00 1E */ stb r0, 0x1e(r1) -/* 8035411C 57 40 A6 7E */ rlwinm r0, r26, 0x14, 0x19, 0x1f -/* 80354120 98 61 00 1F */ stb r3, 0x1f(r1) -/* 80354124 98 01 00 20 */ stb r0, 0x20(r1) -/* 80354128 48 00 00 14 */ b lbl_8035413C -lbl_8035412C: -/* 8035412C 57 40 46 3E */ srwi r0, r26, 0x18 -/* 80354130 98 01 00 1D */ stb r0, 0x1d(r1) -/* 80354134 57 40 86 3E */ rlwinm r0, r26, 0x10, 0x18, 0x1f -/* 80354138 98 01 00 1E */ stb r0, 0x1e(r1) -lbl_8035413C: -/* 8035413C 38 7D 00 00 */ addi r3, r29, 0 -/* 80354140 38 81 00 1C */ addi r4, r1, 0x1c -/* 80354144 38 A0 00 05 */ li r5, 5 -/* 80354148 38 C0 00 01 */ li r6, 1 -/* 8035414C 4B FE EE 11 */ bl EXIImmEx -/* 80354150 80 9C 00 80 */ lwz r4, 0x80(r28) -/* 80354154 7C 60 00 34 */ cntlzw r0, r3 -/* 80354158 80 BC 00 14 */ lwz r5, 0x14(r28) -/* 8035415C 38 7D 00 00 */ addi r3, r29, 0 -/* 80354160 54 1C D9 7E */ srwi r28, r0, 5 -/* 80354164 38 84 02 00 */ addi r4, r4, 0x200 -/* 80354168 38 C0 00 01 */ li r6, 1 -/* 8035416C 4B FE ED F1 */ bl EXIImmEx -/* 80354170 7C 60 00 34 */ cntlzw r0, r3 -/* 80354174 54 00 D9 7E */ srwi r0, r0, 5 -/* 80354178 38 7D 00 00 */ addi r3, r29, 0 -/* 8035417C 38 9E 00 00 */ addi r4, r30, 0 -/* 80354180 38 BF 00 00 */ addi r5, r31, 0 -/* 80354184 7F 9C 03 78 */ or r28, r28, r0 -/* 80354188 38 C0 00 00 */ li r6, 0 -/* 8035418C 4B FE ED D1 */ bl EXIImmEx -/* 80354190 7C 60 00 34 */ cntlzw r0, r3 -/* 80354194 54 00 D9 7E */ srwi r0, r0, 5 -/* 80354198 38 7D 00 00 */ addi r3, r29, 0 -/* 8035419C 7F 9C 03 78 */ or r28, r28, r0 -/* 803541A0 4B FE F7 F5 */ bl EXIDeselect -/* 803541A4 7C 60 00 34 */ cntlzw r0, r3 -/* 803541A8 54 00 D9 7E */ srwi r0, r0, 5 -/* 803541AC 7F 9C 03 79 */ or. r28, r28, r0 -/* 803541B0 41 82 00 0C */ beq lbl_803541BC -/* 803541B4 38 60 FF FD */ li r3, -3 -/* 803541B8 48 00 00 08 */ b lbl_803541C0 -lbl_803541BC: -/* 803541BC 38 60 00 00 */ li r3, 0 -lbl_803541C0: -/* 803541C0 BB 41 00 28 */ lmw r26, 0x28(r1) -/* 803541C4 80 01 00 44 */ lwz r0, 0x44(r1) -/* 803541C8 38 21 00 40 */ addi r1, r1, 0x40 -/* 803541CC 7C 08 03 A6 */ mtlr r0 -/* 803541D0 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDUnlock/bitrev.s b/asm/dolphin/card/CARDUnlock/bitrev.s deleted file mode 100644 index 9bf032586ba..00000000000 --- a/asm/dolphin/card/CARDUnlock/bitrev.s +++ /dev/null @@ -1,105 +0,0 @@ -lbl_80353F24: -/* 80353F24 38 00 00 08 */ li r0, 8 -/* 80353F28 7C 09 03 A6 */ mtctr r0 -/* 80353F2C 54 66 0F FE */ srwi r6, r3, 0x1f -/* 80353F30 39 20 00 00 */ li r9, 0 -/* 80353F34 39 40 00 01 */ li r10, 1 -/* 80353F38 38 E0 00 00 */ li r7, 0 -/* 80353F3C 39 00 00 00 */ li r8, 0 -/* 80353F40 38 A0 00 01 */ li r5, 1 -lbl_80353F44: -/* 80353F44 28 08 00 0F */ cmplwi r8, 0xf -/* 80353F48 40 81 00 2C */ ble lbl_80353F74 -/* 80353F4C 28 08 00 1F */ cmplwi r8, 0x1f -/* 80353F50 40 82 00 0C */ bne lbl_80353F5C -/* 80353F54 7C E7 33 78 */ or r7, r7, r6 -/* 80353F58 48 00 00 38 */ b lbl_80353F90 -lbl_80353F5C: -/* 80353F5C 7C A0 40 30 */ slw r0, r5, r8 -/* 80353F60 7C 60 00 38 */ and r0, r3, r0 -/* 80353F64 7C 00 54 30 */ srw r0, r0, r10 -/* 80353F68 7C E7 03 78 */ or r7, r7, r0 -/* 80353F6C 39 4A 00 02 */ addi r10, r10, 2 -/* 80353F70 48 00 00 20 */ b lbl_80353F90 -lbl_80353F74: -/* 80353F74 7C A4 40 30 */ slw r4, r5, r8 -/* 80353F78 20 08 00 1F */ subfic r0, r8, 0x1f -/* 80353F7C 7C 09 00 50 */ subf r0, r9, r0 -/* 80353F80 7C 64 20 38 */ and r4, r3, r4 -/* 80353F84 7C 80 00 30 */ slw r0, r4, r0 -/* 80353F88 7C E7 03 78 */ or r7, r7, r0 -/* 80353F8C 39 29 00 01 */ addi r9, r9, 1 -lbl_80353F90: -/* 80353F90 39 08 00 01 */ addi r8, r8, 1 -/* 80353F94 28 08 00 0F */ cmplwi r8, 0xf -/* 80353F98 40 81 00 2C */ ble lbl_80353FC4 -/* 80353F9C 28 08 00 1F */ cmplwi r8, 0x1f -/* 80353FA0 40 82 00 0C */ bne lbl_80353FAC -/* 80353FA4 7C E7 33 78 */ or r7, r7, r6 -/* 80353FA8 48 00 00 38 */ b lbl_80353FE0 -lbl_80353FAC: -/* 80353FAC 7C A0 40 30 */ slw r0, r5, r8 -/* 80353FB0 7C 60 00 38 */ and r0, r3, r0 -/* 80353FB4 7C 00 54 30 */ srw r0, r0, r10 -/* 80353FB8 7C E7 03 78 */ or r7, r7, r0 -/* 80353FBC 39 4A 00 02 */ addi r10, r10, 2 -/* 80353FC0 48 00 00 20 */ b lbl_80353FE0 -lbl_80353FC4: -/* 80353FC4 7C A4 40 30 */ slw r4, r5, r8 -/* 80353FC8 20 08 00 1F */ subfic r0, r8, 0x1f -/* 80353FCC 7C 09 00 50 */ subf r0, r9, r0 -/* 80353FD0 7C 64 20 38 */ and r4, r3, r4 -/* 80353FD4 7C 80 00 30 */ slw r0, r4, r0 -/* 80353FD8 7C E7 03 78 */ or r7, r7, r0 -/* 80353FDC 39 29 00 01 */ addi r9, r9, 1 -lbl_80353FE0: -/* 80353FE0 39 08 00 01 */ addi r8, r8, 1 -/* 80353FE4 28 08 00 0F */ cmplwi r8, 0xf -/* 80353FE8 40 81 00 2C */ ble lbl_80354014 -/* 80353FEC 28 08 00 1F */ cmplwi r8, 0x1f -/* 80353FF0 40 82 00 0C */ bne lbl_80353FFC -/* 80353FF4 7C E7 33 78 */ or r7, r7, r6 -/* 80353FF8 48 00 00 38 */ b lbl_80354030 -lbl_80353FFC: -/* 80353FFC 7C A0 40 30 */ slw r0, r5, r8 -/* 80354000 7C 60 00 38 */ and r0, r3, r0 -/* 80354004 7C 00 54 30 */ srw r0, r0, r10 -/* 80354008 7C E7 03 78 */ or r7, r7, r0 -/* 8035400C 39 4A 00 02 */ addi r10, r10, 2 -/* 80354010 48 00 00 20 */ b lbl_80354030 -lbl_80354014: -/* 80354014 7C A4 40 30 */ slw r4, r5, r8 -/* 80354018 20 08 00 1F */ subfic r0, r8, 0x1f -/* 8035401C 7C 09 00 50 */ subf r0, r9, r0 -/* 80354020 7C 64 20 38 */ and r4, r3, r4 -/* 80354024 7C 80 00 30 */ slw r0, r4, r0 -/* 80354028 7C E7 03 78 */ or r7, r7, r0 -/* 8035402C 39 29 00 01 */ addi r9, r9, 1 -lbl_80354030: -/* 80354030 39 08 00 01 */ addi r8, r8, 1 -/* 80354034 28 08 00 0F */ cmplwi r8, 0xf -/* 80354038 40 81 00 2C */ ble lbl_80354064 -/* 8035403C 28 08 00 1F */ cmplwi r8, 0x1f -/* 80354040 40 82 00 0C */ bne lbl_8035404C -/* 80354044 7C E7 33 78 */ or r7, r7, r6 -/* 80354048 48 00 00 38 */ b lbl_80354080 -lbl_8035404C: -/* 8035404C 7C A0 40 30 */ slw r0, r5, r8 -/* 80354050 7C 60 00 38 */ and r0, r3, r0 -/* 80354054 7C 00 54 30 */ srw r0, r0, r10 -/* 80354058 7C E7 03 78 */ or r7, r7, r0 -/* 8035405C 39 4A 00 02 */ addi r10, r10, 2 -/* 80354060 48 00 00 20 */ b lbl_80354080 -lbl_80354064: -/* 80354064 7C A4 40 30 */ slw r4, r5, r8 -/* 80354068 20 08 00 1F */ subfic r0, r8, 0x1f -/* 8035406C 7C 09 00 50 */ subf r0, r9, r0 -/* 80354070 7C 64 20 38 */ and r4, r3, r4 -/* 80354074 7C 80 00 30 */ slw r0, r4, r0 -/* 80354078 7C E7 03 78 */ or r7, r7, r0 -/* 8035407C 39 29 00 01 */ addi r9, r9, 1 -lbl_80354080: -/* 80354080 39 08 00 01 */ addi r8, r8, 1 -/* 80354084 42 00 FE C0 */ bdnz lbl_80353F44 -/* 80354088 7C E3 3B 78 */ mr r3, r7 -/* 8035408C 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDWrite/CARDWrite.s b/asm/dolphin/card/CARDWrite/CARDWrite.s deleted file mode 100644 index 3687c0af6cc..00000000000 --- a/asm/dolphin/card/CARDWrite/CARDWrite.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_80358C48: -/* 80358C48 7C 08 02 A6 */ mflr r0 -/* 80358C4C 3C E0 80 35 */ lis r7, __CARDSyncCallback@ha /* 0x80352A34@ha */ -/* 80358C50 90 01 00 04 */ stw r0, 4(r1) -/* 80358C54 38 E7 2A 34 */ addi r7, r7, __CARDSyncCallback@l /* 0x80352A34@l */ -/* 80358C58 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80358C5C 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80358C60 3B E3 00 00 */ addi r31, r3, 0 -/* 80358C64 4B FF FE D1 */ bl CARDWriteAsync -/* 80358C68 2C 03 00 00 */ cmpwi r3, 0 -/* 80358C6C 40 80 00 08 */ bge lbl_80358C74 -/* 80358C70 48 00 00 0C */ b lbl_80358C7C -lbl_80358C74: -/* 80358C74 80 7F 00 00 */ lwz r3, 0(r31) -/* 80358C78 4B FF B1 A9 */ bl __CARDSync -lbl_80358C7C: -/* 80358C7C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80358C80 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80358C84 38 21 00 20 */ addi r1, r1, 0x20 -/* 80358C88 7C 08 03 A6 */ mtlr r0 -/* 80358C8C 4E 80 00 20 */ blr diff --git a/asm/dolphin/card/CARDWrite/CARDWriteAsync.s b/asm/dolphin/card/CARDWrite/CARDWriteAsync.s deleted file mode 100644 index 4bb40ce6823..00000000000 --- a/asm/dolphin/card/CARDWrite/CARDWriteAsync.s +++ /dev/null @@ -1,78 +0,0 @@ -lbl_80358B34: -/* 80358B34 7C 08 02 A6 */ mflr r0 -/* 80358B38 90 01 00 04 */ stw r0, 4(r1) -/* 80358B3C 94 21 FF C8 */ stwu r1, -0x38(r1) -/* 80358B40 BF 61 00 24 */ stmw r27, 0x24(r1) -/* 80358B44 3B 86 00 00 */ addi r28, r6, 0 -/* 80358B48 3B 65 00 00 */ addi r27, r5, 0 -/* 80358B4C 3B E4 00 00 */ addi r31, r4, 0 -/* 80358B50 3B C3 00 00 */ addi r30, r3, 0 -/* 80358B54 3B A7 00 00 */ addi r29, r7, 0 -/* 80358B58 38 9B 00 00 */ addi r4, r27, 0 -/* 80358B5C 38 BC 00 00 */ addi r5, r28, 0 -/* 80358B60 38 C1 00 1C */ addi r6, r1, 0x1c -/* 80358B64 4B FF F9 3D */ bl __CARDSeek -/* 80358B68 2C 03 00 00 */ cmpwi r3, 0 -/* 80358B6C 40 80 00 08 */ bge lbl_80358B74 -/* 80358B70 48 00 00 C4 */ b lbl_80358C34 -lbl_80358B74: -/* 80358B74 80 61 00 1C */ lwz r3, 0x1c(r1) -/* 80358B78 80 83 00 0C */ lwz r4, 0xc(r3) -/* 80358B7C 38 84 FF FF */ addi r4, r4, -1 -/* 80358B80 7F 80 20 39 */ and. r0, r28, r4 -/* 80358B84 40 82 00 0C */ bne lbl_80358B90 -/* 80358B88 7F 60 20 39 */ and. r0, r27, r4 -/* 80358B8C 41 82 00 10 */ beq lbl_80358B9C -lbl_80358B90: -/* 80358B90 38 80 FF 80 */ li r4, -128 -/* 80358B94 4B FF B0 D9 */ bl __CARDPutControlBlock -/* 80358B98 48 00 00 9C */ b lbl_80358C34 -lbl_80358B9C: -/* 80358B9C 4B FF CB E1 */ bl __CARDGetDirBlock -/* 80358BA0 80 1E 00 04 */ lwz r0, 4(r30) -/* 80358BA4 54 00 30 32 */ slwi r0, r0, 6 -/* 80358BA8 7C 83 02 14 */ add r4, r3, r0 -/* 80358BAC 80 61 00 1C */ lwz r3, 0x1c(r1) -/* 80358BB0 4B FF F1 C1 */ bl __CARDIsWritable -/* 80358BB4 7C 64 1B 79 */ or. r4, r3, r3 -/* 80358BB8 40 80 00 10 */ bge lbl_80358BC8 -/* 80358BBC 80 61 00 1C */ lwz r3, 0x1c(r1) -/* 80358BC0 4B FF B0 AD */ bl __CARDPutControlBlock -/* 80358BC4 48 00 00 70 */ b lbl_80358C34 -lbl_80358BC8: -/* 80358BC8 38 7F 00 00 */ addi r3, r31, 0 -/* 80358BCC 38 9B 00 00 */ addi r4, r27, 0 -/* 80358BD0 4B FE 2A 0D */ bl DCStoreRange -/* 80358BD4 28 1D 00 00 */ cmplwi r29, 0 -/* 80358BD8 41 82 00 0C */ beq lbl_80358BE4 -/* 80358BDC 7F A0 EB 78 */ mr r0, r29 -/* 80358BE0 48 00 00 0C */ b lbl_80358BEC -lbl_80358BE4: -/* 80358BE4 3C 60 80 35 */ lis r3, __CARDDefaultApiCallback@ha /* 0x80352A30@ha */ -/* 80358BE8 38 03 2A 30 */ addi r0, r3, __CARDDefaultApiCallback@l /* 0x80352A30@l */ -lbl_80358BEC: -/* 80358BEC 80 81 00 1C */ lwz r4, 0x1c(r1) -/* 80358BF0 3C 60 80 36 */ lis r3, EraseCallback@ha /* 0x80358A84@ha */ -/* 80358BF4 38 A3 8A 84 */ addi r5, r3, EraseCallback@l /* 0x80358A84@l */ -/* 80358BF8 90 04 00 D0 */ stw r0, 0xd0(r4) -/* 80358BFC 80 61 00 1C */ lwz r3, 0x1c(r1) -/* 80358C00 93 E3 00 B4 */ stw r31, 0xb4(r3) -/* 80358C04 80 61 00 1C */ lwz r3, 0x1c(r1) -/* 80358C08 A0 1E 00 10 */ lhz r0, 0x10(r30) -/* 80358C0C 80 83 00 0C */ lwz r4, 0xc(r3) -/* 80358C10 80 7E 00 00 */ lwz r3, 0(r30) -/* 80358C14 7C 84 01 D6 */ mullw r4, r4, r0 -/* 80358C18 4B FF AD A1 */ bl __CARDEraseSector -/* 80358C1C 7C 7E 1B 79 */ or. r30, r3, r3 -/* 80358C20 40 80 00 10 */ bge lbl_80358C30 -/* 80358C24 80 61 00 1C */ lwz r3, 0x1c(r1) -/* 80358C28 7F C4 F3 78 */ mr r4, r30 -/* 80358C2C 4B FF B0 41 */ bl __CARDPutControlBlock -lbl_80358C30: -/* 80358C30 7F C3 F3 78 */ mr r3, r30 -lbl_80358C34: -/* 80358C34 BB 61 00 24 */ lmw r27, 0x24(r1) -/* 80358C38 80 01 00 3C */ lwz r0, 0x3c(r1) -/* 80358C3C 38 21 00 38 */ addi r1, r1, 0x38 -/* 80358C40 7C 08 03 A6 */ mtlr r0 -/* 80358C44 4E 80 00 20 */ blr diff --git a/asm/dolphin/db/db/DBInit.s b/asm/dolphin/db/db/DBInit.s deleted file mode 100644 index 36d3383f296..00000000000 --- a/asm/dolphin/db/db/DBInit.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80346398: -/* 80346398 3C 80 80 00 */ lis r4, 0x8000 /* 0x80000040@ha */ -/* 8034639C 38 04 00 40 */ addi r0, r4, 0x0040 /* 0x80000040@l */ -/* 803463A0 3C 60 80 34 */ lis r3, __DBExceptionDestination@ha /* 0x80346408@ha */ -/* 803463A4 90 0D 91 88 */ stw r0, __DBInterface(r13) -/* 803463A8 38 63 64 08 */ addi r3, r3, __DBExceptionDestination@l /* 0x80346408@l */ -/* 803463AC 3C 03 80 00 */ addis r0, r3, 0x8000 -/* 803463B0 90 04 00 48 */ stw r0, 0x48(r4) -/* 803463B4 38 00 00 01 */ li r0, 1 -/* 803463B8 90 0D 91 8C */ stw r0, DBVerbose(r13) -/* 803463BC 4E 80 00 20 */ blr diff --git a/asm/dolphin/db/db/DBPrintf.s b/asm/dolphin/db/db/DBPrintf.s deleted file mode 100644 index e717eba9bf0..00000000000 --- a/asm/dolphin/db/db/DBPrintf.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_80346434: -/* 80346434 94 21 FF 90 */ stwu r1, -0x70(r1) -/* 80346438 40 86 00 24 */ bne cr1, lbl_8034645C -/* 8034643C D8 21 00 28 */ stfd f1, 0x28(r1) -/* 80346440 D8 41 00 30 */ stfd f2, 0x30(r1) -/* 80346444 D8 61 00 38 */ stfd f3, 0x38(r1) -/* 80346448 D8 81 00 40 */ stfd f4, 0x40(r1) -/* 8034644C D8 A1 00 48 */ stfd f5, 0x48(r1) -/* 80346450 D8 C1 00 50 */ stfd f6, 0x50(r1) -/* 80346454 D8 E1 00 58 */ stfd f7, 0x58(r1) -/* 80346458 D9 01 00 60 */ stfd f8, 0x60(r1) -lbl_8034645C: -/* 8034645C 90 61 00 08 */ stw r3, 8(r1) -/* 80346460 90 81 00 0C */ stw r4, 0xc(r1) -/* 80346464 90 A1 00 10 */ stw r5, 0x10(r1) -/* 80346468 90 C1 00 14 */ stw r6, 0x14(r1) -/* 8034646C 90 E1 00 18 */ stw r7, 0x18(r1) -/* 80346470 91 01 00 1C */ stw r8, 0x1c(r1) -/* 80346474 91 21 00 20 */ stw r9, 0x20(r1) -/* 80346478 91 41 00 24 */ stw r10, 0x24(r1) -/* 8034647C 38 21 00 70 */ addi r1, r1, 0x70 -/* 80346480 4E 80 00 20 */ blr diff --git a/asm/dolphin/db/db/__DBExceptionDestination.s b/asm/dolphin/db/db/__DBExceptionDestination.s deleted file mode 100644 index f714a8812b9..00000000000 --- a/asm/dolphin/db/db/__DBExceptionDestination.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_80346408: -/* 80346408 7C 60 00 A6 */ mfmsr r3 -/* 8034640C 60 63 00 30 */ ori r3, r3, 0x30 -/* 80346410 7C 60 01 24 */ mtmsr r3 -/* 80346414 4B FF FF AC */ b __DBExceptionDestinationAux diff --git a/asm/dolphin/db/db/__DBExceptionDestinationAux.s b/asm/dolphin/db/db/__DBExceptionDestinationAux.s deleted file mode 100644 index 258e95f0d06..00000000000 --- a/asm/dolphin/db/db/__DBExceptionDestinationAux.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_803463C0: -/* 803463C0 7C 08 02 A6 */ mflr r0 -/* 803463C4 3C 60 80 3D */ lis r3, lit_9@ha /* 0x803D1368@ha */ -/* 803463C8 90 01 00 04 */ stw r0, 4(r1) -/* 803463CC 38 63 13 68 */ addi r3, r3, lit_9@l /* 0x803D1368@l */ -/* 803463D0 4C C6 31 82 */ crclr 6 -/* 803463D4 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 803463D8 93 E1 00 14 */ stw r31, 0x14(r1) -/* 803463DC 80 80 00 C0 */ lwz r4, 0xc0(r0) -/* 803463E0 3F E4 80 00 */ addis r31, r4, 0x8000 -/* 803463E4 4B CC 06 D9 */ bl OSReport -/* 803463E8 7F E3 FB 78 */ mr r3, r31 -/* 803463EC 4B FF 5C F5 */ bl OSDumpContext -/* 803463F0 4B FF 39 11 */ bl PPCHalt -/* 803463F4 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 803463F8 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 803463FC 38 21 00 18 */ addi r1, r1, 0x18 -/* 80346400 7C 08 03 A6 */ mtlr r0 -/* 80346404 4E 80 00 20 */ blr diff --git a/asm/dolphin/db/db/__DBIsExceptionMarked.s b/asm/dolphin/db/db/__DBIsExceptionMarked.s deleted file mode 100644 index 981a66e64df..00000000000 --- a/asm/dolphin/db/db/__DBIsExceptionMarked.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_80346418: -/* 80346418 80 8D 91 88 */ lwz r4, __DBInterface(r13) -/* 8034641C 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 80346420 38 60 00 01 */ li r3, 1 -/* 80346424 80 84 00 04 */ lwz r4, 4(r4) -/* 80346428 7C 60 00 30 */ slw r0, r3, r0 -/* 8034642C 7C 83 00 38 */ and r3, r4, r0 -/* 80346430 4E 80 00 20 */ blr diff --git a/asm/dolphin/dsp/dsp/DSPAssertInt.s b/asm/dolphin/dsp/dsp/DSPAssertInt.s deleted file mode 100644 index 0cf087e77d9..00000000000 --- a/asm/dolphin/dsp/dsp/DSPAssertInt.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_8035247C: -/* 8035247C 7C 08 02 A6 */ mflr r0 -/* 80352480 90 01 00 04 */ stw r0, 4(r1) -/* 80352484 94 21 FF F8 */ stwu r1, -8(r1) -/* 80352488 4B FE B2 6D */ bl OSDisableInterrupts -/* 8035248C 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC005000@ha */ -/* 80352490 38 84 50 00 */ addi r4, r4, 0x5000 /* 0xCC005000@l */ -/* 80352494 A0 A4 00 0A */ lhz r5, 0xa(r4) -/* 80352498 38 00 FF 57 */ li r0, -169 -/* 8035249C 7C A0 00 38 */ and r0, r5, r0 -/* 803524A0 60 00 00 02 */ ori r0, r0, 2 -/* 803524A4 B0 04 00 0A */ sth r0, 0xa(r4) -/* 803524A8 4B FE B2 75 */ bl OSRestoreInterrupts -/* 803524AC 80 01 00 0C */ lwz r0, 0xc(r1) -/* 803524B0 38 21 00 08 */ addi r1, r1, 8 -/* 803524B4 7C 08 03 A6 */ mtlr r0 -/* 803524B8 4E 80 00 20 */ blr diff --git a/asm/dolphin/dsp/dsp/DSPCheckMailFromDSP.s b/asm/dolphin/dsp/dsp/DSPCheckMailFromDSP.s deleted file mode 100644 index 45808ef6e2c..00000000000 --- a/asm/dolphin/dsp/dsp/DSPCheckMailFromDSP.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_80352440: -/* 80352440 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC005004@ha */ -/* 80352444 A0 03 50 04 */ lhz r0, 0x5004(r3) /* 0xCC005004@l */ -/* 80352448 54 03 8F FE */ rlwinm r3, r0, 0x11, 0x1f, 0x1f -/* 8035244C 4E 80 00 20 */ blr diff --git a/asm/dolphin/dsp/dsp/DSPCheckMailToDSP.s b/asm/dolphin/dsp/dsp/DSPCheckMailToDSP.s deleted file mode 100644 index ed799d0152e..00000000000 --- a/asm/dolphin/dsp/dsp/DSPCheckMailToDSP.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_80352430: -/* 80352430 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC005000@ha */ -/* 80352434 A0 03 50 00 */ lhz r0, 0x5000(r3) /* 0xCC005000@l */ -/* 80352438 54 03 8F FE */ rlwinm r3, r0, 0x11, 0x1f, 0x1f -/* 8035243C 4E 80 00 20 */ blr diff --git a/asm/dolphin/dsp/dsp/DSPInit.s b/asm/dolphin/dsp/dsp/DSPInit.s deleted file mode 100644 index 9bcd67fd7ef..00000000000 --- a/asm/dolphin/dsp/dsp/DSPInit.s +++ /dev/null @@ -1,51 +0,0 @@ -lbl_803524BC: -/* 803524BC 7C 08 02 A6 */ mflr r0 -/* 803524C0 3C 60 80 3D */ lis r3, lit_1@ha /* 0x803D1C78@ha */ -/* 803524C4 90 01 00 04 */ stw r0, 4(r1) -/* 803524C8 38 A3 1C 78 */ addi r5, r3, lit_1@l /* 0x803D1C78@l */ -/* 803524CC 4C C6 31 82 */ crclr 6 -/* 803524D0 38 65 00 48 */ addi r3, r5, 0x48 -/* 803524D4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803524D8 38 85 00 68 */ addi r4, r5, 0x68 -/* 803524DC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 803524E0 38 A5 00 74 */ addi r5, r5, 0x74 -/* 803524E4 48 00 00 9D */ bl __DSP_debug_printf -/* 803524E8 80 0D 93 80 */ lwz r0, __DSP_init_flag(r13) -/* 803524EC 2C 00 00 01 */ cmpwi r0, 1 -/* 803524F0 41 82 00 7C */ beq lbl_8035256C -/* 803524F4 80 6D 84 D8 */ lwz r3, __DSPVersion(r13) -/* 803524F8 4B FE 83 7D */ bl OSRegisterVersion -/* 803524FC 4B FE B1 F9 */ bl OSDisableInterrupts -/* 80352500 3C 80 80 2A */ lis r4, __DSPHandler@ha /* 0x8029EB20@ha */ -/* 80352504 3B E3 00 00 */ addi r31, r3, 0 -/* 80352508 38 84 EB 20 */ addi r4, r4, __DSPHandler@l /* 0x8029EB20@l */ -/* 8035250C 38 60 00 07 */ li r3, 7 -/* 80352510 4B FE B2 31 */ bl __OSSetInterruptHandler -/* 80352514 3C 60 01 00 */ lis r3, 0x100 -/* 80352518 4B FE B6 2D */ bl __OSUnmaskInterrupts -/* 8035251C 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC005000@ha */ -/* 80352520 38 C3 50 00 */ addi r6, r3, 0x5000 /* 0xCC005000@l */ -/* 80352524 A0 63 50 0A */ lhz r3, 0x500a(r3) -/* 80352528 38 00 FF 57 */ li r0, -169 -/* 8035252C 7C 60 00 38 */ and r0, r3, r0 -/* 80352530 60 00 08 00 */ ori r0, r0, 0x800 -/* 80352534 B0 06 00 0A */ sth r0, 0xa(r6) -/* 80352538 38 A0 FF 53 */ li r5, -173 -/* 8035253C 38 80 00 00 */ li r4, 0 -/* 80352540 A0 E6 00 0A */ lhz r7, 0xa(r6) -/* 80352544 38 00 00 01 */ li r0, 1 -/* 80352548 38 7F 00 00 */ addi r3, r31, 0 -/* 8035254C 7C E5 28 38 */ and r5, r7, r5 -/* 80352550 B0 A6 00 0A */ sth r5, 0xa(r6) -/* 80352554 90 8D 93 88 */ stw r4, __DSP_tmp_task(r13) -/* 80352558 90 8D 93 94 */ stw r4, __DSP_curr_task(r13) -/* 8035255C 90 8D 93 8C */ stw r4, __DSP_last_task(r13) -/* 80352560 90 8D 93 90 */ stw r4, __DSP_first_task(r13) -/* 80352564 90 0D 93 80 */ stw r0, __DSP_init_flag(r13) -/* 80352568 4B FE B1 B5 */ bl OSRestoreInterrupts -lbl_8035256C: -/* 8035256C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80352570 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80352574 38 21 00 10 */ addi r1, r1, 0x10 -/* 80352578 7C 08 03 A6 */ mtlr r0 -/* 8035257C 4E 80 00 20 */ blr diff --git a/asm/dolphin/dsp/dsp/DSPReadMailFromDSP.s b/asm/dolphin/dsp/dsp/DSPReadMailFromDSP.s deleted file mode 100644 index 90dce7352f2..00000000000 --- a/asm/dolphin/dsp/dsp/DSPReadMailFromDSP.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_80352450: -/* 80352450 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC005000@ha */ -/* 80352454 38 63 50 00 */ addi r3, r3, 0x5000 /* 0xCC005000@l */ -/* 80352458 A0 03 00 04 */ lhz r0, 4(r3) -/* 8035245C A0 63 00 06 */ lhz r3, 6(r3) -/* 80352460 50 03 80 1E */ rlwimi r3, r0, 0x10, 0, 0xf -/* 80352464 4E 80 00 20 */ blr diff --git a/asm/dolphin/dsp/dsp/DSPSendMailToDSP.s b/asm/dolphin/dsp/dsp/DSPSendMailToDSP.s deleted file mode 100644 index 46e1db39e3c..00000000000 --- a/asm/dolphin/dsp/dsp/DSPSendMailToDSP.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80352468: -/* 80352468 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC005000@ha */ -/* 8035246C 54 60 84 3E */ srwi r0, r3, 0x10 -/* 80352470 B0 04 50 00 */ sth r0, 0x5000(r4) /* 0xCC005000@l */ -/* 80352474 B0 64 50 02 */ sth r3, 0x5002(r4) -/* 80352478 4E 80 00 20 */ blr diff --git a/asm/dolphin/dsp/dsp_debug/__DSP_debug_printf.s b/asm/dolphin/dsp/dsp_debug/__DSP_debug_printf.s deleted file mode 100644 index 8cc028254e5..00000000000 --- a/asm/dolphin/dsp/dsp_debug/__DSP_debug_printf.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_80352580: -/* 80352580 94 21 FF 90 */ stwu r1, -0x70(r1) -/* 80352584 40 86 00 24 */ bne cr1, lbl_803525A8 -/* 80352588 D8 21 00 28 */ stfd f1, 0x28(r1) -/* 8035258C D8 41 00 30 */ stfd f2, 0x30(r1) -/* 80352590 D8 61 00 38 */ stfd f3, 0x38(r1) -/* 80352594 D8 81 00 40 */ stfd f4, 0x40(r1) -/* 80352598 D8 A1 00 48 */ stfd f5, 0x48(r1) -/* 8035259C D8 C1 00 50 */ stfd f6, 0x50(r1) -/* 803525A0 D8 E1 00 58 */ stfd f7, 0x58(r1) -/* 803525A4 D9 01 00 60 */ stfd f8, 0x60(r1) -lbl_803525A8: -/* 803525A8 90 61 00 08 */ stw r3, 8(r1) -/* 803525AC 90 81 00 0C */ stw r4, 0xc(r1) -/* 803525B0 90 A1 00 10 */ stw r5, 0x10(r1) -/* 803525B4 90 C1 00 14 */ stw r6, 0x14(r1) -/* 803525B8 90 E1 00 18 */ stw r7, 0x18(r1) -/* 803525BC 91 01 00 1C */ stw r8, 0x1c(r1) -/* 803525C0 91 21 00 20 */ stw r9, 0x20(r1) -/* 803525C4 91 41 00 24 */ stw r10, 0x24(r1) -/* 803525C8 38 21 00 70 */ addi r1, r1, 0x70 -/* 803525CC 4E 80 00 20 */ blr diff --git a/asm/dolphin/dsp/dsp_task/__DSP_boot_task.s b/asm/dolphin/dsp/dsp_task/__DSP_boot_task.s deleted file mode 100644 index 7799b877287..00000000000 --- a/asm/dolphin/dsp/dsp_task/__DSP_boot_task.s +++ /dev/null @@ -1,111 +0,0 @@ -lbl_80352770: -/* 80352770 7C 08 02 A6 */ mflr r0 -/* 80352774 3C 80 80 3D */ lis r4, lit_266@ha /* 0x803D1CF8@ha */ -/* 80352778 90 01 00 04 */ stw r0, 4(r1) -/* 8035277C 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80352780 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80352784 3B E4 1C F8 */ addi r31, r4, lit_266@l /* 0x803D1CF8@l */ -/* 80352788 93 C1 00 10 */ stw r30, 0x10(r1) -/* 8035278C 3B C3 00 00 */ addi r30, r3, 0 -lbl_80352790: -/* 80352790 4B FF FC B1 */ bl DSPCheckMailFromDSP -/* 80352794 28 03 00 00 */ cmplwi r3, 0 -/* 80352798 41 82 FF F8 */ beq lbl_80352790 -/* 8035279C 4B FF FC B5 */ bl DSPReadMailFromDSP -/* 803527A0 90 61 00 0C */ stw r3, 0xc(r1) -/* 803527A4 3C 60 80 F4 */ lis r3, 0x80F4 /* 0x80F3A001@ha */ -/* 803527A8 38 63 A0 01 */ addi r3, r3, 0xA001 /* 0x80F3A001@l */ -/* 803527AC 4B FF FC BD */ bl DSPSendMailToDSP -lbl_803527B0: -/* 803527B0 4B FF FC 81 */ bl DSPCheckMailToDSP -/* 803527B4 28 03 00 00 */ cmplwi r3, 0 -/* 803527B8 40 82 FF F8 */ bne lbl_803527B0 -/* 803527BC 80 7E 00 0C */ lwz r3, 0xc(r30) -/* 803527C0 4B FF FC A9 */ bl DSPSendMailToDSP -lbl_803527C4: -/* 803527C4 4B FF FC 6D */ bl DSPCheckMailToDSP -/* 803527C8 28 03 00 00 */ cmplwi r3, 0 -/* 803527CC 40 82 FF F8 */ bne lbl_803527C4 -/* 803527D0 3C 60 80 F4 */ lis r3, 0x80F4 /* 0x80F3C002@ha */ -/* 803527D4 38 63 C0 02 */ addi r3, r3, 0xC002 /* 0x80F3C002@l */ -/* 803527D8 4B FF FC 91 */ bl DSPSendMailToDSP -lbl_803527DC: -/* 803527DC 4B FF FC 55 */ bl DSPCheckMailToDSP -/* 803527E0 28 03 00 00 */ cmplwi r3, 0 -/* 803527E4 40 82 FF F8 */ bne lbl_803527DC -/* 803527E8 80 1E 00 14 */ lwz r0, 0x14(r30) -/* 803527EC 54 03 04 3E */ clrlwi r3, r0, 0x10 -/* 803527F0 4B FF FC 79 */ bl DSPSendMailToDSP -lbl_803527F4: -/* 803527F4 4B FF FC 3D */ bl DSPCheckMailToDSP -/* 803527F8 28 03 00 00 */ cmplwi r3, 0 -/* 803527FC 40 82 FF F8 */ bne lbl_803527F4 -/* 80352800 3C 60 80 F4 */ lis r3, 0x80F4 /* 0x80F3A002@ha */ -/* 80352804 38 63 A0 02 */ addi r3, r3, 0xA002 /* 0x80F3A002@l */ -/* 80352808 4B FF FC 61 */ bl DSPSendMailToDSP -lbl_8035280C: -/* 8035280C 4B FF FC 25 */ bl DSPCheckMailToDSP -/* 80352810 28 03 00 00 */ cmplwi r3, 0 -/* 80352814 40 82 FF F8 */ bne lbl_8035280C -/* 80352818 80 7E 00 10 */ lwz r3, 0x10(r30) -/* 8035281C 4B FF FC 4D */ bl DSPSendMailToDSP -lbl_80352820: -/* 80352820 4B FF FC 11 */ bl DSPCheckMailToDSP -/* 80352824 28 03 00 00 */ cmplwi r3, 0 -/* 80352828 40 82 FF F8 */ bne lbl_80352820 -/* 8035282C 3C 60 80 F4 */ lis r3, 0x80F4 /* 0x80F3B002@ha */ -/* 80352830 38 63 B0 02 */ addi r3, r3, 0xB002 /* 0x80F3B002@l */ -/* 80352834 4B FF FC 35 */ bl DSPSendMailToDSP -lbl_80352838: -/* 80352838 4B FF FB F9 */ bl DSPCheckMailToDSP -/* 8035283C 28 03 00 00 */ cmplwi r3, 0 -/* 80352840 40 82 FF F8 */ bne lbl_80352838 -/* 80352844 38 60 00 00 */ li r3, 0 -/* 80352848 4B FF FC 21 */ bl DSPSendMailToDSP -lbl_8035284C: -/* 8035284C 4B FF FB E5 */ bl DSPCheckMailToDSP -/* 80352850 28 03 00 00 */ cmplwi r3, 0 -/* 80352854 40 82 FF F8 */ bne lbl_8035284C -/* 80352858 3C 60 80 F4 */ lis r3, 0x80F4 /* 0x80F3D001@ha */ -/* 8035285C 38 63 D0 01 */ addi r3, r3, 0xD001 /* 0x80F3D001@l */ -/* 80352860 4B FF FC 09 */ bl DSPSendMailToDSP -lbl_80352864: -/* 80352864 4B FF FB CD */ bl DSPCheckMailToDSP -/* 80352868 28 03 00 00 */ cmplwi r3, 0 -/* 8035286C 40 82 FF F8 */ bne lbl_80352864 -/* 80352870 A0 7E 00 24 */ lhz r3, 0x24(r30) -/* 80352874 4B FF FB F5 */ bl DSPSendMailToDSP -lbl_80352878: -/* 80352878 4B FF FB B9 */ bl DSPCheckMailToDSP -/* 8035287C 28 03 00 00 */ cmplwi r3, 0 -/* 80352880 40 82 FF F8 */ bne lbl_80352878 -/* 80352884 38 7F 00 00 */ addi r3, r31, 0 -/* 80352888 4C C6 31 82 */ crclr 6 -/* 8035288C 38 9E 00 00 */ addi r4, r30, 0 -/* 80352890 4B FF FC F1 */ bl __DSP_debug_printf -/* 80352894 80 9E 00 0C */ lwz r4, 0xc(r30) -/* 80352898 38 7F 00 20 */ addi r3, r31, 0x20 -/* 8035289C 4C C6 31 82 */ crclr 6 -/* 803528A0 4B FF FC E1 */ bl __DSP_debug_printf -/* 803528A4 80 9E 00 14 */ lwz r4, 0x14(r30) -/* 803528A8 38 7F 00 50 */ addi r3, r31, 0x50 -/* 803528AC 4C C6 31 82 */ crclr 6 -/* 803528B0 4B FF FC D1 */ bl __DSP_debug_printf -/* 803528B4 80 9E 00 10 */ lwz r4, 0x10(r30) -/* 803528B8 38 7F 00 80 */ addi r3, r31, 0x80 -/* 803528BC 4C C6 31 82 */ crclr 6 -/* 803528C0 4B FF FC C1 */ bl __DSP_debug_printf -/* 803528C4 80 9E 00 1C */ lwz r4, 0x1c(r30) -/* 803528C8 38 7F 00 B0 */ addi r3, r31, 0xb0 -/* 803528CC 4C C6 31 82 */ crclr 6 -/* 803528D0 4B FF FC B1 */ bl __DSP_debug_printf -/* 803528D4 A0 9E 00 24 */ lhz r4, 0x24(r30) -/* 803528D8 38 7F 00 E0 */ addi r3, r31, 0xe0 -/* 803528DC 4C C6 31 82 */ crclr 6 -/* 803528E0 4B FF FC A1 */ bl __DSP_debug_printf -/* 803528E4 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 803528E8 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 803528EC 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 803528F0 38 21 00 18 */ addi r1, r1, 0x18 -/* 803528F4 7C 08 03 A6 */ mtlr r0 -/* 803528F8 4E 80 00 20 */ blr diff --git a/asm/dolphin/dsp/dsp_task/__DSP_exec_task.s b/asm/dolphin/dsp/dsp_task/__DSP_exec_task.s deleted file mode 100644 index 3faf7c9c8fe..00000000000 --- a/asm/dolphin/dsp/dsp_task/__DSP_exec_task.s +++ /dev/null @@ -1,126 +0,0 @@ -lbl_803525D0: -/* 803525D0 7C 08 02 A6 */ mflr r0 -/* 803525D4 90 01 00 04 */ stw r0, 4(r1) -/* 803525D8 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 803525DC 93 E1 00 14 */ stw r31, 0x14(r1) -/* 803525E0 3B E4 00 00 */ addi r31, r4, 0 -/* 803525E4 93 C1 00 10 */ stw r30, 0x10(r1) -/* 803525E8 7C 7E 1B 79 */ or. r30, r3, r3 -/* 803525EC 41 82 00 44 */ beq lbl_80352630 -/* 803525F0 80 7E 00 18 */ lwz r3, 0x18(r30) -/* 803525F4 4B FF FE 75 */ bl DSPSendMailToDSP -lbl_803525F8: -/* 803525F8 4B FF FE 39 */ bl DSPCheckMailToDSP -/* 803525FC 28 03 00 00 */ cmplwi r3, 0 -/* 80352600 40 82 FF F8 */ bne lbl_803525F8 -/* 80352604 80 7E 00 1C */ lwz r3, 0x1c(r30) -/* 80352608 4B FF FE 61 */ bl DSPSendMailToDSP -lbl_8035260C: -/* 8035260C 4B FF FE 25 */ bl DSPCheckMailToDSP -/* 80352610 28 03 00 00 */ cmplwi r3, 0 -/* 80352614 40 82 FF F8 */ bne lbl_8035260C -/* 80352618 80 7E 00 20 */ lwz r3, 0x20(r30) -/* 8035261C 4B FF FE 4D */ bl DSPSendMailToDSP -lbl_80352620: -/* 80352620 4B FF FE 11 */ bl DSPCheckMailToDSP -/* 80352624 28 03 00 00 */ cmplwi r3, 0 -/* 80352628 40 82 FF F8 */ bne lbl_80352620 -/* 8035262C 48 00 00 40 */ b lbl_8035266C -lbl_80352630: -/* 80352630 38 60 00 00 */ li r3, 0 -/* 80352634 4B FF FE 35 */ bl DSPSendMailToDSP -lbl_80352638: -/* 80352638 4B FF FD F9 */ bl DSPCheckMailToDSP -/* 8035263C 28 03 00 00 */ cmplwi r3, 0 -/* 80352640 40 82 FF F8 */ bne lbl_80352638 -/* 80352644 38 60 00 00 */ li r3, 0 -/* 80352648 4B FF FE 21 */ bl DSPSendMailToDSP -lbl_8035264C: -/* 8035264C 4B FF FD E5 */ bl DSPCheckMailToDSP -/* 80352650 28 03 00 00 */ cmplwi r3, 0 -/* 80352654 40 82 FF F8 */ bne lbl_8035264C -/* 80352658 38 60 00 00 */ li r3, 0 -/* 8035265C 4B FF FE 0D */ bl DSPSendMailToDSP -lbl_80352660: -/* 80352660 4B FF FD D1 */ bl DSPCheckMailToDSP -/* 80352664 28 03 00 00 */ cmplwi r3, 0 -/* 80352668 40 82 FF F8 */ bne lbl_80352660 -lbl_8035266C: -/* 8035266C 80 7F 00 0C */ lwz r3, 0xc(r31) -/* 80352670 4B FF FD F9 */ bl DSPSendMailToDSP -lbl_80352674: -/* 80352674 4B FF FD BD */ bl DSPCheckMailToDSP -/* 80352678 28 03 00 00 */ cmplwi r3, 0 -/* 8035267C 40 82 FF F8 */ bne lbl_80352674 -/* 80352680 80 7F 00 10 */ lwz r3, 0x10(r31) -/* 80352684 4B FF FD E5 */ bl DSPSendMailToDSP -lbl_80352688: -/* 80352688 4B FF FD A9 */ bl DSPCheckMailToDSP -/* 8035268C 28 03 00 00 */ cmplwi r3, 0 -/* 80352690 40 82 FF F8 */ bne lbl_80352688 -/* 80352694 80 7F 00 14 */ lwz r3, 0x14(r31) -/* 80352698 4B FF FD D1 */ bl DSPSendMailToDSP -lbl_8035269C: -/* 8035269C 4B FF FD 95 */ bl DSPCheckMailToDSP -/* 803526A0 28 03 00 00 */ cmplwi r3, 0 -/* 803526A4 40 82 FF F8 */ bne lbl_8035269C -/* 803526A8 80 1F 00 00 */ lwz r0, 0(r31) -/* 803526AC 28 00 00 00 */ cmplwi r0, 0 -/* 803526B0 40 82 00 58 */ bne lbl_80352708 -/* 803526B4 A0 7F 00 24 */ lhz r3, 0x24(r31) -/* 803526B8 4B FF FD B1 */ bl DSPSendMailToDSP -lbl_803526BC: -/* 803526BC 4B FF FD 75 */ bl DSPCheckMailToDSP -/* 803526C0 28 03 00 00 */ cmplwi r3, 0 -/* 803526C4 40 82 FF F8 */ bne lbl_803526BC -/* 803526C8 38 60 00 00 */ li r3, 0 -/* 803526CC 4B FF FD 9D */ bl DSPSendMailToDSP -lbl_803526D0: -/* 803526D0 4B FF FD 61 */ bl DSPCheckMailToDSP -/* 803526D4 28 03 00 00 */ cmplwi r3, 0 -/* 803526D8 40 82 FF F8 */ bne lbl_803526D0 -/* 803526DC 38 60 00 00 */ li r3, 0 -/* 803526E0 4B FF FD 89 */ bl DSPSendMailToDSP -lbl_803526E4: -/* 803526E4 4B FF FD 4D */ bl DSPCheckMailToDSP -/* 803526E8 28 03 00 00 */ cmplwi r3, 0 -/* 803526EC 40 82 FF F8 */ bne lbl_803526E4 -/* 803526F0 38 60 00 00 */ li r3, 0 -/* 803526F4 4B FF FD 75 */ bl DSPSendMailToDSP -lbl_803526F8: -/* 803526F8 4B FF FD 39 */ bl DSPCheckMailToDSP -/* 803526FC 28 03 00 00 */ cmplwi r3, 0 -/* 80352700 40 82 FF F8 */ bne lbl_803526F8 -/* 80352704 48 00 00 54 */ b lbl_80352758 -lbl_80352708: -/* 80352708 A0 7F 00 26 */ lhz r3, 0x26(r31) -/* 8035270C 4B FF FD 5D */ bl DSPSendMailToDSP -lbl_80352710: -/* 80352710 4B FF FD 21 */ bl DSPCheckMailToDSP -/* 80352714 28 03 00 00 */ cmplwi r3, 0 -/* 80352718 40 82 FF F8 */ bne lbl_80352710 -/* 8035271C 80 7F 00 18 */ lwz r3, 0x18(r31) -/* 80352720 4B FF FD 49 */ bl DSPSendMailToDSP -lbl_80352724: -/* 80352724 4B FF FD 0D */ bl DSPCheckMailToDSP -/* 80352728 28 03 00 00 */ cmplwi r3, 0 -/* 8035272C 40 82 FF F8 */ bne lbl_80352724 -/* 80352730 80 7F 00 1C */ lwz r3, 0x1c(r31) -/* 80352734 4B FF FD 35 */ bl DSPSendMailToDSP -lbl_80352738: -/* 80352738 4B FF FC F9 */ bl DSPCheckMailToDSP -/* 8035273C 28 03 00 00 */ cmplwi r3, 0 -/* 80352740 40 82 FF F8 */ bne lbl_80352738 -/* 80352744 80 7F 00 20 */ lwz r3, 0x20(r31) -/* 80352748 4B FF FD 21 */ bl DSPSendMailToDSP -lbl_8035274C: -/* 8035274C 4B FF FC E5 */ bl DSPCheckMailToDSP -/* 80352750 28 03 00 00 */ cmplwi r3, 0 -/* 80352754 40 82 FF F8 */ bne lbl_8035274C -lbl_80352758: -/* 80352758 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8035275C 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80352760 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 80352764 38 21 00 18 */ addi r1, r1, 0x18 -/* 80352768 7C 08 03 A6 */ mtlr r0 -/* 8035276C 4E 80 00 20 */ blr diff --git a/asm/dolphin/dsp/dsp_task/__DSP_insert_task.s b/asm/dolphin/dsp/dsp_task/__DSP_insert_task.s deleted file mode 100644 index 9956f001390..00000000000 --- a/asm/dolphin/dsp/dsp_task/__DSP_insert_task.s +++ /dev/null @@ -1,47 +0,0 @@ -lbl_803528FC: -/* 803528FC 80 0D 93 90 */ lwz r0, __DSP_first_task(r13) -/* 80352900 28 00 00 00 */ cmplwi r0, 0 -/* 80352904 40 82 00 20 */ bne lbl_80352924 -/* 80352908 90 6D 93 94 */ stw r3, __DSP_curr_task(r13) -/* 8035290C 38 00 00 00 */ li r0, 0 -/* 80352910 90 6D 93 8C */ stw r3, __DSP_last_task(r13) -/* 80352914 90 6D 93 90 */ stw r3, __DSP_first_task(r13) -/* 80352918 90 03 00 3C */ stw r0, 0x3c(r3) -/* 8035291C 90 03 00 38 */ stw r0, 0x38(r3) -/* 80352920 4E 80 00 20 */ blr -lbl_80352924: -/* 80352924 7C 05 03 78 */ mr r5, r0 -/* 80352928 48 00 00 44 */ b lbl_8035296C -lbl_8035292C: -/* 8035292C 80 83 00 04 */ lwz r4, 4(r3) -/* 80352930 80 05 00 04 */ lwz r0, 4(r5) -/* 80352934 7C 04 00 40 */ cmplw r4, r0 -/* 80352938 40 80 00 30 */ bge lbl_80352968 -/* 8035293C 80 05 00 3C */ lwz r0, 0x3c(r5) -/* 80352940 90 03 00 3C */ stw r0, 0x3c(r3) -/* 80352944 90 65 00 3C */ stw r3, 0x3c(r5) -/* 80352948 90 A3 00 38 */ stw r5, 0x38(r3) -/* 8035294C 80 83 00 3C */ lwz r4, 0x3c(r3) -/* 80352950 28 04 00 00 */ cmplwi r4, 0 -/* 80352954 40 82 00 0C */ bne lbl_80352960 -/* 80352958 90 6D 93 90 */ stw r3, __DSP_first_task(r13) -/* 8035295C 48 00 00 18 */ b lbl_80352974 -lbl_80352960: -/* 80352960 90 64 00 38 */ stw r3, 0x38(r4) -/* 80352964 48 00 00 10 */ b lbl_80352974 -lbl_80352968: -/* 80352968 80 A5 00 38 */ lwz r5, 0x38(r5) -lbl_8035296C: -/* 8035296C 28 05 00 00 */ cmplwi r5, 0 -/* 80352970 40 82 FF BC */ bne lbl_8035292C -lbl_80352974: -/* 80352974 28 05 00 00 */ cmplwi r5, 0 -/* 80352978 4C 82 00 20 */ bnelr -/* 8035297C 80 8D 93 8C */ lwz r4, __DSP_last_task(r13) -/* 80352980 38 00 00 00 */ li r0, 0 -/* 80352984 90 64 00 38 */ stw r3, 0x38(r4) -/* 80352988 90 03 00 38 */ stw r0, 0x38(r3) -/* 8035298C 80 0D 93 8C */ lwz r0, __DSP_last_task(r13) -/* 80352990 90 03 00 3C */ stw r0, 0x3c(r3) -/* 80352994 90 6D 93 8C */ stw r3, __DSP_last_task(r13) -/* 80352998 4E 80 00 20 */ blr diff --git a/asm/dolphin/dsp/dsp_task/__DSP_remove_task.s b/asm/dolphin/dsp/dsp_task/__DSP_remove_task.s deleted file mode 100644 index 15d25e69083..00000000000 --- a/asm/dolphin/dsp/dsp_task/__DSP_remove_task.s +++ /dev/null @@ -1,41 +0,0 @@ -lbl_8035299C: -/* 8035299C 38 80 00 00 */ li r4, 0 -/* 803529A0 90 83 00 08 */ stw r4, 8(r3) -/* 803529A4 38 00 00 03 */ li r0, 3 -/* 803529A8 90 03 00 00 */ stw r0, 0(r3) -/* 803529AC 80 0D 93 90 */ lwz r0, __DSP_first_task(r13) -/* 803529B0 7C 00 18 40 */ cmplw r0, r3 -/* 803529B4 40 82 00 30 */ bne lbl_803529E4 -/* 803529B8 80 03 00 38 */ lwz r0, 0x38(r3) -/* 803529BC 28 00 00 00 */ cmplwi r0, 0 -/* 803529C0 41 82 00 14 */ beq lbl_803529D4 -/* 803529C4 90 0D 93 90 */ stw r0, __DSP_first_task(r13) -/* 803529C8 80 63 00 38 */ lwz r3, 0x38(r3) -/* 803529CC 90 83 00 3C */ stw r4, 0x3c(r3) -/* 803529D0 4E 80 00 20 */ blr -lbl_803529D4: -/* 803529D4 90 8D 93 94 */ stw r4, __DSP_curr_task(r13) -/* 803529D8 90 8D 93 8C */ stw r4, __DSP_last_task(r13) -/* 803529DC 90 8D 93 90 */ stw r4, __DSP_first_task(r13) -/* 803529E0 4E 80 00 20 */ blr -lbl_803529E4: -/* 803529E4 80 0D 93 8C */ lwz r0, __DSP_last_task(r13) -/* 803529E8 7C 00 18 40 */ cmplw r0, r3 -/* 803529EC 40 82 00 20 */ bne lbl_80352A0C -/* 803529F0 80 03 00 3C */ lwz r0, 0x3c(r3) -/* 803529F4 90 0D 93 8C */ stw r0, __DSP_last_task(r13) -/* 803529F8 80 63 00 3C */ lwz r3, 0x3c(r3) -/* 803529FC 90 83 00 38 */ stw r4, 0x38(r3) -/* 80352A00 80 0D 93 90 */ lwz r0, __DSP_first_task(r13) -/* 80352A04 90 0D 93 94 */ stw r0, __DSP_curr_task(r13) -/* 80352A08 4E 80 00 20 */ blr -lbl_80352A0C: -/* 80352A0C 80 03 00 38 */ lwz r0, 0x38(r3) -/* 80352A10 90 0D 93 94 */ stw r0, __DSP_curr_task(r13) -/* 80352A14 80 03 00 38 */ lwz r0, 0x38(r3) -/* 80352A18 80 83 00 3C */ lwz r4, 0x3c(r3) -/* 80352A1C 90 04 00 38 */ stw r0, 0x38(r4) -/* 80352A20 80 03 00 3C */ lwz r0, 0x3c(r3) -/* 80352A24 80 63 00 38 */ lwz r3, 0x38(r3) -/* 80352A28 90 03 00 3C */ stw r0, 0x3c(r3) -/* 80352A2C 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/AlarmHandler.s b/asm/dolphin/dvd/dvd/AlarmHandler.s deleted file mode 100644 index c03767fb99e..00000000000 --- a/asm/dolphin/dvd/dvd/AlarmHandler.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_80349DEC: -/* 80349DEC 7C 08 02 A6 */ mflr r0 -/* 80349DF0 90 01 00 04 */ stw r0, 4(r1) -/* 80349DF4 94 21 FF F8 */ stwu r1, -8(r1) -/* 80349DF8 48 00 13 41 */ bl DVDReset -/* 80349DFC 3C 60 80 45 */ lis r3, CurrDiskID@ha /* 0x8044C920@ha */ -/* 80349E00 38 63 C9 20 */ addi r3, r3, CurrDiskID@l /* 0x8044C920@l */ -/* 80349E04 38 80 00 20 */ li r4, 0x20 -/* 80349E08 4B FF 17 79 */ bl DCInvalidateRange -/* 80349E0C 3C 80 80 35 */ lis r4, stateCoverClosed_CMD@ha /* 0x80349F04@ha */ -/* 80349E10 80 6D 91 F8 */ lwz r3, executing(r13) -/* 80349E14 38 04 9F 04 */ addi r0, r4, stateCoverClosed_CMD@l /* 0x80349F04@l */ -/* 80349E18 90 0D 92 40 */ stw r0, LastState(r13) -/* 80349E1C 48 00 00 E9 */ bl stateCoverClosed_CMD -/* 80349E20 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80349E24 38 21 00 08 */ addi r1, r1, 8 -/* 80349E28 7C 08 03 A6 */ mtlr r0 -/* 80349E2C 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/CategorizeError.s b/asm/dolphin/dvd/dvd/CategorizeError.s deleted file mode 100644 index 10452a54b17..00000000000 --- a/asm/dolphin/dvd/dvd/CategorizeError.s +++ /dev/null @@ -1,53 +0,0 @@ -lbl_803493E4: -/* 803493E4 3C 03 FF FE */ addis r0, r3, 0xfffe -/* 803493E8 28 00 04 00 */ cmplwi r0, 0x400 -/* 803493EC 40 82 00 10 */ bne lbl_803493FC -/* 803493F0 90 6D 92 28 */ stw r3, LastError(r13) -/* 803493F4 38 60 00 01 */ li r3, 1 -/* 803493F8 4E 80 00 20 */ blr -lbl_803493FC: -/* 803493FC 54 64 02 3E */ clrlwi r4, r3, 8 -/* 80349400 3C 04 FF FA */ addis r0, r4, 0xfffa -/* 80349404 28 00 28 00 */ cmplwi r0, 0x2800 -/* 80349408 41 82 00 1C */ beq lbl_80349424 -/* 8034940C 3C 04 FF FE */ addis r0, r4, 0xfffe -/* 80349410 28 00 3A 00 */ cmplwi r0, 0x3a00 -/* 80349414 41 82 00 10 */ beq lbl_80349424 -/* 80349418 3C 04 FF F5 */ addis r0, r4, 0xfff5 -/* 8034941C 28 00 5A 01 */ cmplwi r0, 0x5a01 -/* 80349420 40 82 00 0C */ bne lbl_8034942C -lbl_80349424: -/* 80349424 38 60 00 00 */ li r3, 0 -/* 80349428 4E 80 00 20 */ blr -lbl_8034942C: -/* 8034942C 80 6D 92 2C */ lwz r3, NumInternalRetry(r13) -/* 80349430 38 03 00 01 */ addi r0, r3, 1 -/* 80349434 90 0D 92 2C */ stw r0, NumInternalRetry(r13) -/* 80349438 80 0D 92 2C */ lwz r0, NumInternalRetry(r13) -/* 8034943C 2C 00 00 02 */ cmpwi r0, 2 -/* 80349440 40 82 00 28 */ bne lbl_80349468 -/* 80349444 80 0D 92 28 */ lwz r0, LastError(r13) -/* 80349448 7C 04 00 40 */ cmplw r4, r0 -/* 8034944C 40 82 00 10 */ bne lbl_8034945C -/* 80349450 90 8D 92 28 */ stw r4, LastError(r13) -/* 80349454 38 60 00 01 */ li r3, 1 -/* 80349458 4E 80 00 20 */ blr -lbl_8034945C: -/* 8034945C 90 8D 92 28 */ stw r4, LastError(r13) -/* 80349460 38 60 00 02 */ li r3, 2 -/* 80349464 4E 80 00 20 */ blr -lbl_80349468: -/* 80349468 3C 04 FF FD */ addis r0, r4, 0xfffd -/* 8034946C 90 8D 92 28 */ stw r4, LastError(r13) -/* 80349470 28 00 11 00 */ cmplwi r0, 0x1100 -/* 80349474 41 82 00 14 */ beq lbl_80349488 -/* 80349478 80 6D 91 F8 */ lwz r3, executing(r13) -/* 8034947C 80 03 00 08 */ lwz r0, 8(r3) -/* 80349480 28 00 00 05 */ cmplwi r0, 5 -/* 80349484 40 82 00 0C */ bne lbl_80349490 -lbl_80349488: -/* 80349488 38 60 00 02 */ li r3, 2 -/* 8034948C 4E 80 00 20 */ blr -lbl_80349490: -/* 80349490 38 60 00 03 */ li r3, 3 -/* 80349494 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/DVDCancel.s b/asm/dolphin/dvd/dvd/DVDCancel.s deleted file mode 100644 index a9b28e7e163..00000000000 --- a/asm/dolphin/dvd/dvd/DVDCancel.s +++ /dev/null @@ -1,49 +0,0 @@ -lbl_8034B550: -/* 8034B550 7C 08 02 A6 */ mflr r0 -/* 8034B554 3C 80 80 35 */ lis r4, cbForCancelSync@ha /* 0x8034B5FC@ha */ -/* 8034B558 90 01 00 04 */ stw r0, 4(r1) -/* 8034B55C 38 84 B5 FC */ addi r4, r4, cbForCancelSync@l /* 0x8034B5FC@l */ -/* 8034B560 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8034B564 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8034B568 93 C1 00 10 */ stw r30, 0x10(r1) -/* 8034B56C 3B C3 00 00 */ addi r30, r3, 0 -/* 8034B570 4B FF FD 65 */ bl DVDCancelAsync -/* 8034B574 2C 03 00 00 */ cmpwi r3, 0 -/* 8034B578 40 82 00 0C */ bne lbl_8034B584 -/* 8034B57C 38 60 FF FF */ li r3, -1 -/* 8034B580 48 00 00 64 */ b lbl_8034B5E4 -lbl_8034B584: -/* 8034B584 4B FF 21 71 */ bl OSDisableInterrupts -/* 8034B588 7C 7F 1B 78 */ mr r31, r3 -lbl_8034B58C: -/* 8034B58C 80 7E 00 0C */ lwz r3, 0xc(r30) -/* 8034B590 38 03 00 01 */ addi r0, r3, 1 -/* 8034B594 28 00 00 01 */ cmplwi r0, 1 -/* 8034B598 40 81 00 40 */ ble lbl_8034B5D8 -/* 8034B59C 2C 03 00 0A */ cmpwi r3, 0xa -/* 8034B5A0 41 82 00 38 */ beq lbl_8034B5D8 -/* 8034B5A4 2C 03 00 03 */ cmpwi r3, 3 -/* 8034B5A8 40 82 00 24 */ bne lbl_8034B5CC -/* 8034B5AC 80 7E 00 08 */ lwz r3, 8(r30) -/* 8034B5B0 38 03 FF FC */ addi r0, r3, -4 -/* 8034B5B4 28 00 00 01 */ cmplwi r0, 1 -/* 8034B5B8 40 81 00 20 */ ble lbl_8034B5D8 -/* 8034B5BC 28 03 00 0D */ cmplwi r3, 0xd -/* 8034B5C0 41 82 00 18 */ beq lbl_8034B5D8 -/* 8034B5C4 28 03 00 0F */ cmplwi r3, 0xf -/* 8034B5C8 41 82 00 10 */ beq lbl_8034B5D8 -lbl_8034B5CC: -/* 8034B5CC 38 6D 91 F0 */ la r3, __DVDThreadQueue(r13) /* 80451770-_SDA_BASE_ */ -/* 8034B5D0 4B FF 65 DD */ bl OSSleepThread -/* 8034B5D4 4B FF FF B8 */ b lbl_8034B58C -lbl_8034B5D8: -/* 8034B5D8 7F E3 FB 78 */ mr r3, r31 -/* 8034B5DC 4B FF 21 41 */ bl OSRestoreInterrupts -/* 8034B5E0 38 60 00 00 */ li r3, 0 -lbl_8034B5E4: -/* 8034B5E4 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8034B5E8 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8034B5EC 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 8034B5F0 38 21 00 18 */ addi r1, r1, 0x18 -/* 8034B5F4 7C 08 03 A6 */ mtlr r0 -/* 8034B5F8 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/DVDGetCurrentDiskID.s b/asm/dolphin/dvd/dvd/DVDGetCurrentDiskID.s deleted file mode 100644 index 3003fe5879c..00000000000 --- a/asm/dolphin/dvd/dvd/DVDGetCurrentDiskID.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_8034B620: -/* 8034B620 3C 60 80 00 */ lis r3, 0x8000 -/* 8034B624 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/DVDInit.s b/asm/dolphin/dvd/dvd/DVDInit.s deleted file mode 100644 index e99f6d93a2a..00000000000 --- a/asm/dolphin/dvd/dvd/DVDInit.s +++ /dev/null @@ -1,57 +0,0 @@ -lbl_803490F0: -/* 803490F0 7C 08 02 A6 */ mflr r0 -/* 803490F4 90 01 00 04 */ stw r0, 4(r1) -/* 803490F8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803490FC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80349100 93 C1 00 08 */ stw r30, 8(r1) -/* 80349104 80 0D 92 3C */ lwz r0, DVDInitialized(r13) -/* 80349108 2C 00 00 00 */ cmpwi r0, 0 -/* 8034910C 40 82 00 A4 */ bne lbl_803491B0 -/* 80349110 80 6D 84 68 */ lwz r3, __DVDVersion(r13) -/* 80349114 4B FF 17 61 */ bl OSRegisterVersion -/* 80349118 3B C0 00 01 */ li r30, 1 -/* 8034911C 93 CD 92 3C */ stw r30, DVDInitialized(r13) -/* 80349120 4B FF F3 D1 */ bl __DVDFSInit -/* 80349124 48 00 27 51 */ bl __DVDClearWaitingQueue -/* 80349128 4B FF E5 4D */ bl __DVDInitWA -/* 8034912C 3C 00 80 00 */ lis r0, 0x8000 -/* 80349130 3B E0 00 00 */ li r31, 0 -/* 80349134 90 0D 92 00 */ stw r0, bootInfo(r13) -/* 80349138 3C 60 80 34 */ lis r3, __DVDInterruptHandler@ha /* 0x803476B4@ha */ -/* 8034913C 38 83 76 B4 */ addi r4, r3, __DVDInterruptHandler@l /* 0x803476B4@l */ -/* 80349140 93 ED 92 38 */ stw r31, MotorState(r13) -/* 80349144 38 60 00 15 */ li r3, 0x15 -/* 80349148 90 0D 91 FC */ stw r0, IDShouldBe(r13) -/* 8034914C 4B FF 45 F5 */ bl __OSSetInterruptHandler -/* 80349150 38 60 04 00 */ li r3, 0x400 -/* 80349154 4B FF 49 F1 */ bl __OSUnmaskInterrupts -/* 80349158 38 6D 91 F0 */ la r3, __DVDThreadQueue(r13) /* 80451770-_SDA_BASE_ */ -/* 8034915C 4B FF 7B 19 */ bl OSInitThreadQueue -/* 80349160 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006000@ha */ -/* 80349164 38 00 00 2A */ li r0, 0x2a -/* 80349168 90 03 60 00 */ stw r0, 0x6000(r3) /* 0xCC006000@l */ -/* 8034916C 93 E3 60 04 */ stw r31, 0x6004(r3) -/* 80349170 80 6D 92 00 */ lwz r3, bootInfo(r13) -/* 80349174 38 63 00 20 */ addi r3, r3, 0x20 -/* 80349178 80 63 00 00 */ lwz r3, 0(r3) -/* 8034917C 3C 03 1A E0 */ addis r0, r3, 0x1ae0 -/* 80349180 28 00 7C 22 */ cmplwi r0, 0x7c22 -/* 80349184 40 82 00 1C */ bne lbl_803491A0 -/* 80349188 3C 60 80 3D */ lis r3, lit_18@ha /* 0x803D1568@ha */ -/* 8034918C 4C C6 31 82 */ crclr 6 -/* 80349190 38 63 15 68 */ addi r3, r3, lit_18@l /* 0x803D1568@l */ -/* 80349194 4B CB D9 29 */ bl OSReport -/* 80349198 48 00 2C 6D */ bl __fstLoad -/* 8034919C 48 00 00 14 */ b lbl_803491B0 -lbl_803491A0: -/* 803491A0 3C 03 F2 EB */ addis r0, r3, 0xf2eb -/* 803491A4 28 00 EA 5E */ cmplwi r0, 0xea5e -/* 803491A8 41 82 00 08 */ beq lbl_803491B0 -/* 803491AC 93 CD 92 34 */ stw r30, FirstTimeInBootrom(r13) -lbl_803491B0: -/* 803491B0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 803491B4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 803491B8 83 C1 00 08 */ lwz r30, 8(r1) -/* 803491BC 38 21 00 10 */ addi r1, r1, 0x10 -/* 803491C0 7C 08 03 A6 */ mtlr r0 -/* 803491C4 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/DVDReset.s b/asm/dolphin/dvd/dvd/DVDReset.s deleted file mode 100644 index ea05bb03956..00000000000 --- a/asm/dolphin/dvd/dvd/DVDReset.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_8034B138: -/* 8034B138 7C 08 02 A6 */ mflr r0 -/* 8034B13C 90 01 00 04 */ stw r0, 4(r1) -/* 8034B140 94 21 FF F8 */ stwu r1, -8(r1) -/* 8034B144 4B FF D2 45 */ bl DVDLowReset -/* 8034B148 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006000@ha */ -/* 8034B14C 38 00 00 2A */ li r0, 0x2a -/* 8034B150 90 03 60 00 */ stw r0, 0x6000(r3) /* 0xCC006000@l */ -/* 8034B154 38 83 60 00 */ addi r4, r3, 0x6000 -/* 8034B158 38 00 00 00 */ li r0, 0 -/* 8034B15C 80 63 60 04 */ lwz r3, 0x6004(r3) -/* 8034B160 90 64 00 04 */ stw r3, 4(r4) -/* 8034B164 90 0D 92 30 */ stw r0, ResetRequired(r13) -/* 8034B168 90 0D 92 20 */ stw r0, ResumeFromHere(r13) -/* 8034B16C 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8034B170 38 21 00 08 */ addi r1, r1, 8 -/* 8034B174 7C 08 03 A6 */ mtlr r0 -/* 8034B178 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/DVDResume.s b/asm/dolphin/dvd/dvd/DVDResume.s deleted file mode 100644 index b85c2d76cb5..00000000000 --- a/asm/dolphin/dvd/dvd/DVDResume.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_8034B284: -/* 8034B284 7C 08 02 A6 */ mflr r0 -/* 8034B288 90 01 00 04 */ stw r0, 4(r1) -/* 8034B28C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8034B290 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8034B294 4B FF 24 61 */ bl OSDisableInterrupts -/* 8034B298 38 80 00 00 */ li r4, 0 -/* 8034B29C 90 8D 92 04 */ stw r4, PauseFlag(r13) -/* 8034B2A0 7C 7F 1B 78 */ mr r31, r3 -/* 8034B2A4 80 0D 92 08 */ lwz r0, PausingFlag(r13) -/* 8034B2A8 2C 00 00 00 */ cmpwi r0, 0 -/* 8034B2AC 41 82 00 0C */ beq lbl_8034B2B8 -/* 8034B2B0 90 8D 92 08 */ stw r4, PausingFlag(r13) -/* 8034B2B4 4B FF ED F9 */ bl stateReady -lbl_8034B2B8: -/* 8034B2B8 7F E3 FB 78 */ mr r3, r31 -/* 8034B2BC 4B FF 24 61 */ bl OSRestoreInterrupts -/* 8034B2C0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8034B2C4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8034B2C8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8034B2CC 7C 08 03 A6 */ mtlr r0 -/* 8034B2D0 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/DVDSetAutoInvalidation.s b/asm/dolphin/dvd/dvd/DVDSetAutoInvalidation.s deleted file mode 100644 index 1ed38d42d32..00000000000 --- a/asm/dolphin/dvd/dvd/DVDSetAutoInvalidation.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_8034B274: -/* 8034B274 80 0D 84 6C */ lwz r0, autoInvalidation(r13) -/* 8034B278 90 6D 84 6C */ stw r3, autoInvalidation(r13) -/* 8034B27C 7C 03 03 78 */ mr r3, r0 -/* 8034B280 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/__DVDTestAlarm.s b/asm/dolphin/dvd/dvd/__DVDTestAlarm.s deleted file mode 100644 index 3b5499830d4..00000000000 --- a/asm/dolphin/dvd/dvd/__DVDTestAlarm.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_8034B83C: -/* 8034B83C 7C 08 02 A6 */ mflr r0 -/* 8034B840 3C 80 80 45 */ lis r4, ResetAlarm@ha /* 0x8044C970@ha */ -/* 8034B844 90 01 00 04 */ stw r0, 4(r1) -/* 8034B848 38 04 C9 70 */ addi r0, r4, ResetAlarm@l /* 0x8044C970@l */ -/* 8034B84C 7C 03 00 40 */ cmplw r3, r0 -/* 8034B850 94 21 FF F8 */ stwu r1, -8(r1) -/* 8034B854 40 82 00 0C */ bne lbl_8034B860 -/* 8034B858 38 60 00 01 */ li r3, 1 -/* 8034B85C 48 00 00 08 */ b lbl_8034B864 -lbl_8034B860: -/* 8034B860 4B FF CC 59 */ bl __DVDLowTestAlarm -lbl_8034B864: -/* 8034B864 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8034B868 38 21 00 08 */ addi r1, r1, 8 -/* 8034B86C 7C 08 03 A6 */ mtlr r0 -/* 8034B870 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/cbForCancelSync.s b/asm/dolphin/dvd/dvd/cbForCancelSync.s deleted file mode 100644 index 01815e1caee..00000000000 --- a/asm/dolphin/dvd/dvd/cbForCancelSync.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8034B5FC: -/* 8034B5FC 7C 08 02 A6 */ mflr r0 -/* 8034B600 38 6D 91 F0 */ la r3, __DVDThreadQueue(r13) /* 80451770-_SDA_BASE_ */ -/* 8034B604 90 01 00 04 */ stw r0, 4(r1) -/* 8034B608 94 21 FF F8 */ stwu r1, -8(r1) -/* 8034B60C 4B FF 66 8D */ bl OSWakeupThread -/* 8034B610 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8034B614 38 21 00 08 */ addi r1, r1, 8 -/* 8034B618 7C 08 03 A6 */ mtlr r0 -/* 8034B61C 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/cbForStateCheckID1.s b/asm/dolphin/dvd/dvd/cbForStateCheckID1.s deleted file mode 100644 index c960f005a96..00000000000 --- a/asm/dolphin/dvd/dvd/cbForStateCheckID1.s +++ /dev/null @@ -1,70 +0,0 @@ -lbl_80349B28: -/* 80349B28 7C 08 02 A6 */ mflr r0 -/* 80349B2C 28 03 00 10 */ cmplwi r3, 0x10 -/* 80349B30 90 01 00 04 */ stw r0, 4(r1) -/* 80349B34 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80349B38 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80349B3C 40 82 00 20 */ bne lbl_80349B5C -/* 80349B40 3C 60 01 23 */ lis r3, 0x0123 /* 0x01234568@ha */ -/* 80349B44 38 63 45 68 */ addi r3, r3, 0x4568 /* 0x01234568@l */ -/* 80349B48 48 00 20 41 */ bl __DVDStoreErrorCode -/* 80349B4C 48 00 15 ED */ bl DVDReset -/* 80349B50 38 60 00 00 */ li r3, 0 -/* 80349B54 4B FF F7 89 */ bl cbForStateError -/* 80349B58 48 00 00 B8 */ b lbl_80349C10 -lbl_80349B5C: -/* 80349B5C 54 60 07 BD */ rlwinm. r0, r3, 0, 0x1e, 0x1e -/* 80349B60 41 82 00 20 */ beq lbl_80349B80 -/* 80349B64 3C 60 01 23 */ lis r3, 0x0123 /* 0x01234567@ha */ -/* 80349B68 38 63 45 67 */ addi r3, r3, 0x4567 /* 0x01234567@l */ -/* 80349B6C 48 00 20 1D */ bl __DVDStoreErrorCode -/* 80349B70 3C 60 80 35 */ lis r3, cbForStateError@ha /* 0x803492DC@ha */ -/* 80349B74 38 63 92 DC */ addi r3, r3, cbForStateError@l /* 0x803492DC@l */ -/* 80349B78 4B FF E4 9D */ bl DVDLowStopMotor -/* 80349B7C 48 00 00 94 */ b lbl_80349C10 -lbl_80349B80: -/* 80349B80 38 80 00 00 */ li r4, 0 -/* 80349B84 90 8D 92 2C */ stw r4, NumInternalRetry(r13) -/* 80349B88 80 0D 92 18 */ lwz r0, Canceling(r13) -/* 80349B8C 28 00 00 00 */ cmplwi r0, 0 -/* 80349B90 41 82 00 68 */ beq lbl_80349BF8 -/* 80349B94 38 00 00 01 */ li r0, 1 -/* 80349B98 83 ED 91 F8 */ lwz r31, executing(r13) -/* 80349B9C 90 0D 92 20 */ stw r0, ResumeFromHere(r13) -/* 80349BA0 3C 60 80 45 */ lis r3, DummyCommandBlock@ha /* 0x8044C940@ha */ -/* 80349BA4 38 63 C9 40 */ addi r3, r3, DummyCommandBlock@l /* 0x8044C940@l */ -/* 80349BA8 90 8D 92 18 */ stw r4, Canceling(r13) -/* 80349BAC 38 00 00 0A */ li r0, 0xa -/* 80349BB0 90 6D 91 F8 */ stw r3, executing(r13) -/* 80349BB4 90 1F 00 0C */ stw r0, 0xc(r31) -/* 80349BB8 81 9F 00 28 */ lwz r12, 0x28(r31) -/* 80349BBC 28 0C 00 00 */ cmplwi r12, 0 -/* 80349BC0 41 82 00 14 */ beq lbl_80349BD4 -/* 80349BC4 7D 88 03 A6 */ mtlr r12 -/* 80349BC8 38 9F 00 00 */ addi r4, r31, 0 -/* 80349BCC 38 60 FF FD */ li r3, -3 -/* 80349BD0 4E 80 00 21 */ blrl -lbl_80349BD4: -/* 80349BD4 81 8D 92 1C */ lwz r12, CancelCallback(r13) -/* 80349BD8 28 0C 00 00 */ cmplwi r12, 0 -/* 80349BDC 41 82 00 14 */ beq lbl_80349BF0 -/* 80349BE0 7D 88 03 A6 */ mtlr r12 -/* 80349BE4 38 9F 00 00 */ addi r4, r31, 0 -/* 80349BE8 38 60 00 00 */ li r3, 0 -/* 80349BEC 4E 80 00 21 */ blrl -lbl_80349BF0: -/* 80349BF0 48 00 04 BD */ bl stateReady -/* 80349BF4 38 80 00 01 */ li r4, 1 -lbl_80349BF8: -/* 80349BF8 2C 04 00 00 */ cmpwi r4, 0 -/* 80349BFC 40 82 00 14 */ bne lbl_80349C10 -/* 80349C00 80 6D 91 F8 */ lwz r3, executing(r13) -/* 80349C04 38 00 00 06 */ li r0, 6 -/* 80349C08 90 03 00 0C */ stw r0, 0xc(r3) -/* 80349C0C 48 00 03 8D */ bl stateMotorStopped -lbl_80349C10: -/* 80349C10 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80349C14 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80349C18 38 21 00 18 */ addi r1, r1, 0x18 -/* 80349C1C 7C 08 03 A6 */ mtlr r0 -/* 80349C20 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/cbForStateCheckID2a.s b/asm/dolphin/dvd/dvd/cbForStateCheckID2a.s deleted file mode 100644 index 3caafa67159..00000000000 --- a/asm/dolphin/dvd/dvd/cbForStateCheckID2a.s +++ /dev/null @@ -1,30 +0,0 @@ -lbl_80349A88: -/* 80349A88 7C 08 02 A6 */ mflr r0 -/* 80349A8C 28 03 00 10 */ cmplwi r3, 0x10 -/* 80349A90 90 01 00 04 */ stw r0, 4(r1) -/* 80349A94 94 21 FF F8 */ stwu r1, -8(r1) -/* 80349A98 40 82 00 20 */ bne lbl_80349AB8 -/* 80349A9C 3C 60 01 23 */ lis r3, 0x0123 /* 0x01234568@ha */ -/* 80349AA0 38 63 45 68 */ addi r3, r3, 0x4568 /* 0x01234568@l */ -/* 80349AA4 48 00 20 E5 */ bl __DVDStoreErrorCode -/* 80349AA8 48 00 16 91 */ bl DVDReset -/* 80349AAC 38 60 00 00 */ li r3, 0 -/* 80349AB0 4B FF F8 2D */ bl cbForStateError -/* 80349AB4 48 00 00 2C */ b lbl_80349AE0 -lbl_80349AB8: -/* 80349AB8 54 60 07 FF */ clrlwi. r0, r3, 0x1f -/* 80349ABC 41 82 00 18 */ beq lbl_80349AD4 -/* 80349AC0 38 00 00 00 */ li r0, 0 -/* 80349AC4 80 6D 91 F8 */ lwz r3, executing(r13) -/* 80349AC8 90 0D 92 2C */ stw r0, NumInternalRetry(r13) -/* 80349ACC 48 00 00 25 */ bl stateCheckID2 -/* 80349AD0 48 00 00 10 */ b lbl_80349AE0 -lbl_80349AD4: -/* 80349AD4 3C 60 80 35 */ lis r3, cbForStateGettingError@ha /* 0x80349498@ha */ -/* 80349AD8 38 63 94 98 */ addi r3, r3, cbForStateGettingError@l /* 0x80349498@l */ -/* 80349ADC 4B FF E5 C5 */ bl DVDLowRequestError -lbl_80349AE0: -/* 80349AE0 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80349AE4 38 21 00 08 */ addi r1, r1, 8 -/* 80349AE8 7C 08 03 A6 */ mtlr r0 -/* 80349AEC 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/cbForStateCheckID3.s b/asm/dolphin/dvd/dvd/cbForStateCheckID3.s deleted file mode 100644 index f465122c3dd..00000000000 --- a/asm/dolphin/dvd/dvd/cbForStateCheckID3.s +++ /dev/null @@ -1,67 +0,0 @@ -lbl_80349CFC: -/* 80349CFC 7C 08 02 A6 */ mflr r0 -/* 80349D00 28 03 00 10 */ cmplwi r3, 0x10 -/* 80349D04 90 01 00 04 */ stw r0, 4(r1) -/* 80349D08 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80349D0C 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80349D10 40 82 00 20 */ bne lbl_80349D30 -/* 80349D14 3C 60 01 23 */ lis r3, 0x0123 /* 0x01234568@ha */ -/* 80349D18 38 63 45 68 */ addi r3, r3, 0x4568 /* 0x01234568@l */ -/* 80349D1C 48 00 1E 6D */ bl __DVDStoreErrorCode -/* 80349D20 48 00 14 19 */ bl DVDReset -/* 80349D24 38 60 00 00 */ li r3, 0 -/* 80349D28 4B FF F5 B5 */ bl cbForStateError -/* 80349D2C 48 00 00 AC */ b lbl_80349DD8 -lbl_80349D30: -/* 80349D30 54 60 07 FF */ clrlwi. r0, r3, 0x1f -/* 80349D34 41 82 00 98 */ beq lbl_80349DCC -/* 80349D38 38 80 00 00 */ li r4, 0 -/* 80349D3C 90 8D 92 2C */ stw r4, NumInternalRetry(r13) -/* 80349D40 80 0D 92 18 */ lwz r0, Canceling(r13) -/* 80349D44 28 00 00 00 */ cmplwi r0, 0 -/* 80349D48 41 82 00 64 */ beq lbl_80349DAC -/* 80349D4C 90 8D 92 20 */ stw r4, ResumeFromHere(r13) -/* 80349D50 3C 60 80 45 */ lis r3, DummyCommandBlock@ha /* 0x8044C940@ha */ -/* 80349D54 83 ED 91 F8 */ lwz r31, executing(r13) -/* 80349D58 38 63 C9 40 */ addi r3, r3, DummyCommandBlock@l /* 0x8044C940@l */ -/* 80349D5C 90 8D 92 18 */ stw r4, Canceling(r13) -/* 80349D60 38 00 00 0A */ li r0, 0xa -/* 80349D64 90 6D 91 F8 */ stw r3, executing(r13) -/* 80349D68 90 1F 00 0C */ stw r0, 0xc(r31) -/* 80349D6C 81 9F 00 28 */ lwz r12, 0x28(r31) -/* 80349D70 28 0C 00 00 */ cmplwi r12, 0 -/* 80349D74 41 82 00 14 */ beq lbl_80349D88 -/* 80349D78 7D 88 03 A6 */ mtlr r12 -/* 80349D7C 38 9F 00 00 */ addi r4, r31, 0 -/* 80349D80 38 60 FF FD */ li r3, -3 -/* 80349D84 4E 80 00 21 */ blrl -lbl_80349D88: -/* 80349D88 81 8D 92 1C */ lwz r12, CancelCallback(r13) -/* 80349D8C 28 0C 00 00 */ cmplwi r12, 0 -/* 80349D90 41 82 00 14 */ beq lbl_80349DA4 -/* 80349D94 7D 88 03 A6 */ mtlr r12 -/* 80349D98 38 9F 00 00 */ addi r4, r31, 0 -/* 80349D9C 38 60 00 00 */ li r3, 0 -/* 80349DA0 4E 80 00 21 */ blrl -lbl_80349DA4: -/* 80349DA4 48 00 03 09 */ bl stateReady -/* 80349DA8 38 80 00 01 */ li r4, 1 -lbl_80349DAC: -/* 80349DAC 2C 04 00 00 */ cmpwi r4, 0 -/* 80349DB0 40 82 00 28 */ bne lbl_80349DD8 -/* 80349DB4 80 6D 91 F8 */ lwz r3, executing(r13) -/* 80349DB8 38 00 00 01 */ li r0, 1 -/* 80349DBC 90 03 00 0C */ stw r0, 0xc(r3) -/* 80349DC0 80 6D 91 F8 */ lwz r3, executing(r13) -/* 80349DC4 48 00 05 D1 */ bl stateBusy -/* 80349DC8 48 00 00 10 */ b lbl_80349DD8 -lbl_80349DCC: -/* 80349DCC 3C 60 80 35 */ lis r3, cbForStateGettingError@ha /* 0x80349498@ha */ -/* 80349DD0 38 63 94 98 */ addi r3, r3, cbForStateGettingError@l /* 0x80349498@l */ -/* 80349DD4 4B FF E2 CD */ bl DVDLowRequestError -lbl_80349DD8: -/* 80349DD8 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80349DDC 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80349DE0 38 21 00 18 */ addi r1, r1, 0x18 -/* 80349DE4 7C 08 03 A6 */ mtlr r0 -/* 80349DE8 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/cbForStateCoverClosed.s b/asm/dolphin/dvd/dvd/cbForStateCoverClosed.s deleted file mode 100644 index 18fdee10a04..00000000000 --- a/asm/dolphin/dvd/dvd/cbForStateCoverClosed.s +++ /dev/null @@ -1,29 +0,0 @@ -lbl_80349F34: -/* 80349F34 7C 08 02 A6 */ mflr r0 -/* 80349F38 28 03 00 10 */ cmplwi r3, 0x10 -/* 80349F3C 90 01 00 04 */ stw r0, 4(r1) -/* 80349F40 94 21 FF F8 */ stwu r1, -8(r1) -/* 80349F44 40 82 00 20 */ bne lbl_80349F64 -/* 80349F48 3C 60 01 23 */ lis r3, 0x0123 /* 0x01234568@ha */ -/* 80349F4C 38 63 45 68 */ addi r3, r3, 0x4568 /* 0x01234568@l */ -/* 80349F50 48 00 1C 39 */ bl __DVDStoreErrorCode -/* 80349F54 48 00 11 E5 */ bl DVDReset -/* 80349F58 38 60 00 00 */ li r3, 0 -/* 80349F5C 4B FF F3 81 */ bl cbForStateError -/* 80349F60 48 00 00 28 */ b lbl_80349F88 -lbl_80349F64: -/* 80349F64 54 60 07 FF */ clrlwi. r0, r3, 0x1f -/* 80349F68 41 82 00 14 */ beq lbl_80349F7C -/* 80349F6C 38 00 00 00 */ li r0, 0 -/* 80349F70 90 0D 92 2C */ stw r0, NumInternalRetry(r13) -/* 80349F74 4B FF F9 CD */ bl stateCheckID -/* 80349F78 48 00 00 10 */ b lbl_80349F88 -lbl_80349F7C: -/* 80349F7C 3C 60 80 35 */ lis r3, cbForStateGettingError@ha /* 0x80349498@ha */ -/* 80349F80 38 63 94 98 */ addi r3, r3, cbForStateGettingError@l /* 0x80349498@l */ -/* 80349F84 4B FF E1 1D */ bl DVDLowRequestError -lbl_80349F88: -/* 80349F88 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80349F8C 38 21 00 08 */ addi r1, r1, 8 -/* 80349F90 7C 08 03 A6 */ mtlr r0 -/* 80349F94 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/cbForStateError.s b/asm/dolphin/dvd/dvd/cbForStateError.s deleted file mode 100644 index 78e6a0f2887..00000000000 --- a/asm/dolphin/dvd/dvd/cbForStateError.s +++ /dev/null @@ -1,48 +0,0 @@ -lbl_803492DC: -/* 803492DC 7C 08 02 A6 */ mflr r0 -/* 803492E0 28 03 00 10 */ cmplwi r3, 0x10 -/* 803492E4 90 01 00 04 */ stw r0, 4(r1) -/* 803492E8 38 00 FF FF */ li r0, -1 -/* 803492EC 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 803492F0 93 E1 00 14 */ stw r31, 0x14(r1) -/* 803492F4 80 8D 91 F8 */ lwz r4, executing(r13) -/* 803492F8 90 04 00 0C */ stw r0, 0xc(r4) -/* 803492FC 40 82 00 0C */ bne lbl_80349308 -/* 80349300 48 00 00 89 */ bl stateTimeout -/* 80349304 48 00 00 70 */ b lbl_80349374 -lbl_80349308: -/* 80349308 48 00 29 F5 */ bl __DVDPrintFatalMessage -/* 8034930C 3C 60 80 45 */ lis r3, DummyCommandBlock@ha /* 0x8044C940@ha */ -/* 80349310 83 ED 91 F8 */ lwz r31, executing(r13) -/* 80349314 38 03 C9 40 */ addi r0, r3, DummyCommandBlock@l /* 0x8044C940@l */ -/* 80349318 38 60 00 01 */ li r3, 1 -/* 8034931C 90 0D 91 F8 */ stw r0, executing(r13) -/* 80349320 90 6D 92 10 */ stw r3, FatalErrorFlag(r13) -/* 80349324 81 9F 00 28 */ lwz r12, 0x28(r31) -/* 80349328 28 0C 00 00 */ cmplwi r12, 0 -/* 8034932C 41 82 00 14 */ beq lbl_80349340 -/* 80349330 7D 88 03 A6 */ mtlr r12 -/* 80349334 38 9F 00 00 */ addi r4, r31, 0 -/* 80349338 38 60 FF FF */ li r3, -1 -/* 8034933C 4E 80 00 21 */ blrl -lbl_80349340: -/* 80349340 80 0D 92 18 */ lwz r0, Canceling(r13) -/* 80349344 28 00 00 00 */ cmplwi r0, 0 -/* 80349348 41 82 00 28 */ beq lbl_80349370 -/* 8034934C 81 8D 92 1C */ lwz r12, CancelCallback(r13) -/* 80349350 38 00 00 00 */ li r0, 0 -/* 80349354 90 0D 92 18 */ stw r0, Canceling(r13) -/* 80349358 28 0C 00 00 */ cmplwi r12, 0 -/* 8034935C 41 82 00 14 */ beq lbl_80349370 -/* 80349360 7D 88 03 A6 */ mtlr r12 -/* 80349364 38 9F 00 00 */ addi r4, r31, 0 -/* 80349368 38 60 00 00 */ li r3, 0 -/* 8034936C 4E 80 00 21 */ blrl -lbl_80349370: -/* 80349370 48 00 0D 3D */ bl stateReady -lbl_80349374: -/* 80349374 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80349378 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8034937C 38 21 00 18 */ addi r1, r1, 0x18 -/* 80349380 7C 08 03 A6 */ mtlr r0 -/* 80349384 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/cbForStateGettingError.s b/asm/dolphin/dvd/dvd/cbForStateGettingError.s deleted file mode 100644 index a228645a2f0..00000000000 --- a/asm/dolphin/dvd/dvd/cbForStateGettingError.s +++ /dev/null @@ -1,173 +0,0 @@ -lbl_80349498: -/* 80349498 7C 08 02 A6 */ mflr r0 -/* 8034949C 28 03 00 10 */ cmplwi r3, 0x10 -/* 803494A0 90 01 00 04 */ stw r0, 4(r1) -/* 803494A4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 803494A8 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 803494AC 93 C1 00 18 */ stw r30, 0x18(r1) -/* 803494B0 93 A1 00 14 */ stw r29, 0x14(r1) -/* 803494B4 93 81 00 10 */ stw r28, 0x10(r1) -/* 803494B8 40 82 00 20 */ bne lbl_803494D8 -/* 803494BC 3C 60 01 23 */ lis r3, 0x0123 /* 0x01234568@ha */ -/* 803494C0 38 63 45 68 */ addi r3, r3, 0x4568 /* 0x01234568@l */ -/* 803494C4 48 00 26 C5 */ bl __DVDStoreErrorCode -/* 803494C8 48 00 1C 71 */ bl DVDReset -/* 803494CC 38 60 00 00 */ li r3, 0 -/* 803494D0 4B FF FE 0D */ bl cbForStateError -/* 803494D4 48 00 02 08 */ b lbl_803496DC -lbl_803494D8: -/* 803494D8 54 60 07 BD */ rlwinm. r0, r3, 0, 0x1e, 0x1e -/* 803494DC 41 82 00 20 */ beq lbl_803494FC -/* 803494E0 3C 60 01 23 */ lis r3, 0x0123 /* 0x01234567@ha */ -/* 803494E4 38 63 45 67 */ addi r3, r3, 0x4567 /* 0x01234567@l */ -/* 803494E8 48 00 26 A1 */ bl __DVDStoreErrorCode -/* 803494EC 3C 60 80 35 */ lis r3, cbForStateError@ha /* 0x803492DC@ha */ -/* 803494F0 38 63 92 DC */ addi r3, r3, cbForStateError@l /* 0x803492DC@l */ -/* 803494F4 4B FF EB 21 */ bl DVDLowStopMotor -/* 803494F8 48 00 01 E4 */ b lbl_803496DC -lbl_803494FC: -/* 803494FC 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006020@ha */ -/* 80349500 83 A3 60 20 */ lwz r29, 0x6020(r3) /* 0xCC006020@l */ -/* 80349504 38 7D 00 00 */ addi r3, r29, 0 -/* 80349508 57 BC 00 0E */ rlwinm r28, r29, 0, 0, 7 -/* 8034950C 4B FF FE D9 */ bl CategorizeError -/* 80349510 3B E3 00 00 */ addi r31, r3, 0 -/* 80349514 28 1F 00 01 */ cmplwi r31, 1 -/* 80349518 40 82 00 1C */ bne lbl_80349534 -/* 8034951C 7F A3 EB 78 */ mr r3, r29 -/* 80349520 48 00 26 69 */ bl __DVDStoreErrorCode -/* 80349524 3C 60 80 35 */ lis r3, cbForStateError@ha /* 0x803492DC@ha */ -/* 80349528 38 63 92 DC */ addi r3, r3, cbForStateError@l /* 0x803492DC@l */ -/* 8034952C 4B FF EA E9 */ bl DVDLowStopMotor -/* 80349530 48 00 01 AC */ b lbl_803496DC -lbl_80349534: -/* 80349534 38 1F FF FE */ addi r0, r31, -2 -/* 80349538 28 00 00 01 */ cmplwi r0, 1 -/* 8034953C 41 81 00 0C */ bgt lbl_80349548 -/* 80349540 38 80 00 00 */ li r4, 0 -/* 80349544 48 00 00 44 */ b lbl_80349588 -lbl_80349548: -/* 80349548 3C 1C FF 00 */ addis r0, r28, 0xff00 -/* 8034954C 28 00 00 00 */ cmplwi r0, 0 -/* 80349550 40 82 00 0C */ bne lbl_8034955C -/* 80349554 38 80 00 04 */ li r4, 4 -/* 80349558 48 00 00 30 */ b lbl_80349588 -lbl_8034955C: -/* 8034955C 3C 1C FE 00 */ addis r0, r28, 0xfe00 -/* 80349560 28 00 00 00 */ cmplwi r0, 0 -/* 80349564 40 82 00 0C */ bne lbl_80349570 -/* 80349568 38 80 00 06 */ li r4, 6 -/* 8034956C 48 00 00 1C */ b lbl_80349588 -lbl_80349570: -/* 80349570 3C 1C FD 00 */ addis r0, r28, 0xfd00 -/* 80349574 28 00 00 00 */ cmplwi r0, 0 -/* 80349578 40 82 00 0C */ bne lbl_80349584 -/* 8034957C 38 80 00 03 */ li r4, 3 -/* 80349580 48 00 00 08 */ b lbl_80349588 -lbl_80349584: -/* 80349584 38 80 00 05 */ li r4, 5 -lbl_80349588: -/* 80349588 80 0D 92 18 */ lwz r0, Canceling(r13) -/* 8034958C 28 00 00 00 */ cmplwi r0, 0 -/* 80349590 41 82 00 6C */ beq lbl_803495FC -/* 80349594 3C 60 80 45 */ lis r3, DummyCommandBlock@ha /* 0x8044C940@ha */ -/* 80349598 90 8D 92 20 */ stw r4, ResumeFromHere(r13) -/* 8034959C 38 00 00 00 */ li r0, 0 -/* 803495A0 83 CD 91 F8 */ lwz r30, executing(r13) -/* 803495A4 38 63 C9 40 */ addi r3, r3, DummyCommandBlock@l /* 0x8044C940@l */ -/* 803495A8 90 0D 92 18 */ stw r0, Canceling(r13) -/* 803495AC 38 00 00 0A */ li r0, 0xa -/* 803495B0 90 6D 91 F8 */ stw r3, executing(r13) -/* 803495B4 90 1E 00 0C */ stw r0, 0xc(r30) -/* 803495B8 81 9E 00 28 */ lwz r12, 0x28(r30) -/* 803495BC 28 0C 00 00 */ cmplwi r12, 0 -/* 803495C0 41 82 00 14 */ beq lbl_803495D4 -/* 803495C4 7D 88 03 A6 */ mtlr r12 -/* 803495C8 38 9E 00 00 */ addi r4, r30, 0 -/* 803495CC 38 60 FF FD */ li r3, -3 -/* 803495D0 4E 80 00 21 */ blrl -lbl_803495D4: -/* 803495D4 81 8D 92 1C */ lwz r12, CancelCallback(r13) -/* 803495D8 28 0C 00 00 */ cmplwi r12, 0 -/* 803495DC 41 82 00 14 */ beq lbl_803495F0 -/* 803495E0 7D 88 03 A6 */ mtlr r12 -/* 803495E4 38 9E 00 00 */ addi r4, r30, 0 -/* 803495E8 38 60 00 00 */ li r3, 0 -/* 803495EC 4E 80 00 21 */ blrl -lbl_803495F0: -/* 803495F0 48 00 0A BD */ bl stateReady -/* 803495F4 38 00 00 01 */ li r0, 1 -/* 803495F8 48 00 00 08 */ b lbl_80349600 -lbl_803495FC: -/* 803495FC 38 00 00 00 */ li r0, 0 -lbl_80349600: -/* 80349600 2C 00 00 00 */ cmpwi r0, 0 -/* 80349604 40 82 00 D8 */ bne lbl_803496DC -/* 80349608 28 1F 00 02 */ cmplwi r31, 2 -/* 8034960C 40 82 00 14 */ bne lbl_80349620 -/* 80349610 7F A3 EB 78 */ mr r3, r29 -/* 80349614 48 00 25 75 */ bl __DVDStoreErrorCode -/* 80349618 48 00 01 C1 */ bl stateGoToRetry -/* 8034961C 48 00 00 C0 */ b lbl_803496DC -lbl_80349620: -/* 80349620 28 1F 00 03 */ cmplwi r31, 3 -/* 80349624 40 82 00 40 */ bne lbl_80349664 -/* 80349628 57 A3 02 3E */ clrlwi r3, r29, 8 -/* 8034962C 3C 03 FF FD */ addis r0, r3, 0xfffd -/* 80349630 28 00 11 00 */ cmplwi r0, 0x1100 -/* 80349634 40 82 00 1C */ bne lbl_80349650 -/* 80349638 80 AD 91 F8 */ lwz r5, executing(r13) -/* 8034963C 3C 60 80 35 */ lis r3, cbForUnrecoveredError@ha /* 0x803496FC@ha */ -/* 80349640 38 83 96 FC */ addi r4, r3, cbForUnrecoveredError@l /* 0x803496FC@l */ -/* 80349644 80 65 00 10 */ lwz r3, 0x10(r5) -/* 80349648 4B FF E8 69 */ bl DVDLowSeek -/* 8034964C 48 00 00 90 */ b lbl_803496DC -lbl_80349650: -/* 80349650 81 8D 92 40 */ lwz r12, LastState(r13) -/* 80349654 80 6D 91 F8 */ lwz r3, executing(r13) -/* 80349658 7D 88 03 A6 */ mtlr r12 -/* 8034965C 4E 80 00 21 */ blrl -/* 80349660 48 00 00 7C */ b lbl_803496DC -lbl_80349664: -/* 80349664 3C 1C FF 00 */ addis r0, r28, 0xff00 -/* 80349668 28 00 00 00 */ cmplwi r0, 0 -/* 8034966C 40 82 00 18 */ bne lbl_80349684 -/* 80349670 80 6D 91 F8 */ lwz r3, executing(r13) -/* 80349674 38 00 00 05 */ li r0, 5 -/* 80349678 90 03 00 0C */ stw r0, 0xc(r3) -/* 8034967C 48 00 09 1D */ bl stateMotorStopped -/* 80349680 48 00 00 5C */ b lbl_803496DC -lbl_80349684: -/* 80349684 3C 1C FE 00 */ addis r0, r28, 0xfe00 -/* 80349688 28 00 00 00 */ cmplwi r0, 0 -/* 8034968C 40 82 00 18 */ bne lbl_803496A4 -/* 80349690 80 6D 91 F8 */ lwz r3, executing(r13) -/* 80349694 38 00 00 03 */ li r0, 3 -/* 80349698 90 03 00 0C */ stw r0, 0xc(r3) -/* 8034969C 48 00 07 95 */ bl stateCoverClosed -/* 803496A0 48 00 00 3C */ b lbl_803496DC -lbl_803496A4: -/* 803496A4 3C 1C FD 00 */ addis r0, r28, 0xfd00 -/* 803496A8 28 00 00 00 */ cmplwi r0, 0 -/* 803496AC 40 82 00 18 */ bne lbl_803496C4 -/* 803496B0 80 6D 91 F8 */ lwz r3, executing(r13) -/* 803496B4 38 00 00 04 */ li r0, 4 -/* 803496B8 90 03 00 0C */ stw r0, 0xc(r3) -/* 803496BC 48 00 08 DD */ bl stateMotorStopped -/* 803496C0 48 00 00 1C */ b lbl_803496DC -lbl_803496C4: -/* 803496C4 3C 60 01 23 */ lis r3, 0x0123 /* 0x01234567@ha */ -/* 803496C8 38 63 45 67 */ addi r3, r3, 0x4567 /* 0x01234567@l */ -/* 803496CC 48 00 24 BD */ bl __DVDStoreErrorCode -/* 803496D0 3C 60 80 35 */ lis r3, cbForStateError@ha /* 0x803492DC@ha */ -/* 803496D4 38 63 92 DC */ addi r3, r3, cbForStateError@l /* 0x803492DC@l */ -/* 803496D8 4B FF E9 3D */ bl DVDLowStopMotor -lbl_803496DC: -/* 803496DC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803496E0 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 803496E4 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 803496E8 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 803496EC 83 81 00 10 */ lwz r28, 0x10(r1) -/* 803496F0 38 21 00 20 */ addi r1, r1, 0x20 -/* 803496F4 7C 08 03 A6 */ mtlr r0 -/* 803496F8 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/cbForStateGoToRetry.s b/asm/dolphin/dvd/dvd/cbForStateGoToRetry.s deleted file mode 100644 index 1210c469d8e..00000000000 --- a/asm/dolphin/dvd/dvd/cbForStateGoToRetry.s +++ /dev/null @@ -1,90 +0,0 @@ -lbl_80349800: -/* 80349800 7C 08 02 A6 */ mflr r0 -/* 80349804 28 03 00 10 */ cmplwi r3, 0x10 -/* 80349808 90 01 00 04 */ stw r0, 4(r1) -/* 8034980C 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80349810 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80349814 40 82 00 20 */ bne lbl_80349834 -/* 80349818 3C 60 01 23 */ lis r3, 0x0123 /* 0x01234568@ha */ -/* 8034981C 38 63 45 68 */ addi r3, r3, 0x4568 /* 0x01234568@l */ -/* 80349820 48 00 23 69 */ bl __DVDStoreErrorCode -/* 80349824 48 00 19 15 */ bl DVDReset -/* 80349828 38 60 00 00 */ li r3, 0 -/* 8034982C 4B FF FA B1 */ bl cbForStateError -/* 80349830 48 00 00 FC */ b lbl_8034992C -lbl_80349834: -/* 80349834 54 60 07 BD */ rlwinm. r0, r3, 0, 0x1e, 0x1e -/* 80349838 41 82 00 20 */ beq lbl_80349858 -/* 8034983C 3C 60 01 23 */ lis r3, 0x0123 /* 0x01234567@ha */ -/* 80349840 38 63 45 67 */ addi r3, r3, 0x4567 /* 0x01234567@l */ -/* 80349844 48 00 23 45 */ bl __DVDStoreErrorCode -/* 80349848 3C 60 80 35 */ lis r3, cbForStateError@ha /* 0x803492DC@ha */ -/* 8034984C 38 63 92 DC */ addi r3, r3, cbForStateError@l /* 0x803492DC@l */ -/* 80349850 4B FF E7 C5 */ bl DVDLowStopMotor -/* 80349854 48 00 00 D8 */ b lbl_8034992C -lbl_80349858: -/* 80349858 38 00 00 00 */ li r0, 0 -/* 8034985C 90 0D 92 2C */ stw r0, NumInternalRetry(r13) -/* 80349860 80 0D 92 14 */ lwz r0, CurrCommand(r13) -/* 80349864 28 00 00 04 */ cmplwi r0, 4 -/* 80349868 41 82 00 28 */ beq lbl_80349890 -/* 8034986C 80 0D 92 14 */ lwz r0, CurrCommand(r13) -/* 80349870 28 00 00 05 */ cmplwi r0, 5 -/* 80349874 41 82 00 1C */ beq lbl_80349890 -/* 80349878 80 0D 92 14 */ lwz r0, CurrCommand(r13) -/* 8034987C 28 00 00 0D */ cmplwi r0, 0xd -/* 80349880 41 82 00 10 */ beq lbl_80349890 -/* 80349884 80 0D 92 14 */ lwz r0, CurrCommand(r13) -/* 80349888 28 00 00 0F */ cmplwi r0, 0xf -/* 8034988C 40 82 00 0C */ bne lbl_80349898 -lbl_80349890: -/* 80349890 38 00 00 01 */ li r0, 1 -/* 80349894 90 0D 92 30 */ stw r0, ResetRequired(r13) -lbl_80349898: -/* 80349898 80 0D 92 18 */ lwz r0, Canceling(r13) -/* 8034989C 28 00 00 00 */ cmplwi r0, 0 -/* 803498A0 41 82 00 70 */ beq lbl_80349910 -/* 803498A4 38 00 00 02 */ li r0, 2 -/* 803498A8 83 ED 91 F8 */ lwz r31, executing(r13) -/* 803498AC 3C 60 80 45 */ lis r3, DummyCommandBlock@ha /* 0x8044C940@ha */ -/* 803498B0 90 0D 92 20 */ stw r0, ResumeFromHere(r13) -/* 803498B4 38 03 C9 40 */ addi r0, r3, DummyCommandBlock@l /* 0x8044C940@l */ -/* 803498B8 38 60 00 00 */ li r3, 0 -/* 803498BC 90 0D 91 F8 */ stw r0, executing(r13) -/* 803498C0 38 00 00 0A */ li r0, 0xa -/* 803498C4 90 6D 92 18 */ stw r3, Canceling(r13) -/* 803498C8 90 1F 00 0C */ stw r0, 0xc(r31) -/* 803498CC 81 9F 00 28 */ lwz r12, 0x28(r31) -/* 803498D0 28 0C 00 00 */ cmplwi r12, 0 -/* 803498D4 41 82 00 14 */ beq lbl_803498E8 -/* 803498D8 7D 88 03 A6 */ mtlr r12 -/* 803498DC 38 9F 00 00 */ addi r4, r31, 0 -/* 803498E0 38 60 FF FD */ li r3, -3 -/* 803498E4 4E 80 00 21 */ blrl -lbl_803498E8: -/* 803498E8 81 8D 92 1C */ lwz r12, CancelCallback(r13) -/* 803498EC 28 0C 00 00 */ cmplwi r12, 0 -/* 803498F0 41 82 00 14 */ beq lbl_80349904 -/* 803498F4 7D 88 03 A6 */ mtlr r12 -/* 803498F8 38 9F 00 00 */ addi r4, r31, 0 -/* 803498FC 38 60 00 00 */ li r3, 0 -/* 80349900 4E 80 00 21 */ blrl -lbl_80349904: -/* 80349904 48 00 07 A9 */ bl stateReady -/* 80349908 38 00 00 01 */ li r0, 1 -/* 8034990C 48 00 00 08 */ b lbl_80349914 -lbl_80349910: -/* 80349910 38 00 00 00 */ li r0, 0 -lbl_80349914: -/* 80349914 2C 00 00 00 */ cmpwi r0, 0 -/* 80349918 40 82 00 14 */ bne lbl_8034992C -/* 8034991C 80 6D 91 F8 */ lwz r3, executing(r13) -/* 80349920 38 00 00 0B */ li r0, 0xb -/* 80349924 90 03 00 0C */ stw r0, 0xc(r3) -/* 80349928 48 00 06 71 */ bl stateMotorStopped -lbl_8034992C: -/* 8034992C 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80349930 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80349934 38 21 00 18 */ addi r1, r1, 0x18 -/* 80349938 7C 08 03 A6 */ mtlr r0 -/* 8034993C 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/cbForStateMotorStopped.s b/asm/dolphin/dvd/dvd/cbForStateMotorStopped.s deleted file mode 100644 index 54dce704701..00000000000 --- a/asm/dolphin/dvd/dvd/cbForStateMotorStopped.s +++ /dev/null @@ -1,65 +0,0 @@ -lbl_80349FC0: -/* 80349FC0 7C 08 02 A6 */ mflr r0 -/* 80349FC4 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006004@ha */ -/* 80349FC8 90 01 00 04 */ stw r0, 4(r1) -/* 80349FCC 38 00 00 00 */ li r0, 0 -/* 80349FD0 3C 80 80 45 */ lis r4, BB2@ha /* 0x8044C900@ha */ -/* 80349FD4 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80349FD8 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80349FDC 3B E4 C9 00 */ addi r31, r4, BB2@l /* 0x8044C900@l */ -/* 80349FE0 90 03 60 04 */ stw r0, 0x6004(r3) /* 0xCC006004@l */ -/* 80349FE4 38 00 00 03 */ li r0, 3 -/* 80349FE8 80 6D 91 F8 */ lwz r3, executing(r13) -/* 80349FEC 90 03 00 0C */ stw r0, 0xc(r3) -/* 80349FF0 80 0D 92 14 */ lwz r0, CurrCommand(r13) -/* 80349FF4 2C 00 00 0D */ cmpwi r0, 0xd -/* 80349FF8 41 82 00 28 */ beq lbl_8034A020 -/* 80349FFC 40 80 00 18 */ bge lbl_8034A014 -/* 8034A000 2C 00 00 06 */ cmpwi r0, 6 -/* 8034A004 40 80 00 4C */ bge lbl_8034A050 -/* 8034A008 2C 00 00 04 */ cmpwi r0, 4 -/* 8034A00C 40 80 00 14 */ bge lbl_8034A020 -/* 8034A010 48 00 00 40 */ b lbl_8034A050 -lbl_8034A014: -/* 8034A014 2C 00 00 0F */ cmpwi r0, 0xf -/* 8034A018 41 82 00 08 */ beq lbl_8034A020 -/* 8034A01C 48 00 00 34 */ b lbl_8034A050 -lbl_8034A020: -/* 8034A020 48 00 18 55 */ bl __DVDClearWaitingQueue -/* 8034A024 80 8D 91 F8 */ lwz r4, executing(r13) -/* 8034A028 38 1F 00 40 */ addi r0, r31, 0x40 -/* 8034A02C 90 0D 91 F8 */ stw r0, executing(r13) -/* 8034A030 81 84 00 28 */ lwz r12, 0x28(r4) -/* 8034A034 28 0C 00 00 */ cmplwi r12, 0 -/* 8034A038 41 82 00 10 */ beq lbl_8034A048 -/* 8034A03C 7D 88 03 A6 */ mtlr r12 -/* 8034A040 38 60 FF FC */ li r3, -4 -/* 8034A044 4E 80 00 21 */ blrl -lbl_8034A048: -/* 8034A048 48 00 00 65 */ bl stateReady -/* 8034A04C 48 00 00 4C */ b lbl_8034A098 -lbl_8034A050: -/* 8034A050 38 00 00 00 */ li r0, 0 -/* 8034A054 90 0D 92 38 */ stw r0, MotorState(r13) -/* 8034A058 48 00 10 E1 */ bl DVDReset -/* 8034A05C 38 7F 00 70 */ addi r3, r31, 0x70 -/* 8034A060 4B FF 08 99 */ bl OSCreateAlarm -/* 8034A064 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000F8@ha */ -/* 8034A068 80 03 00 F8 */ lwz r0, 0x00F8(r3) /* 0x800000F8@l */ -/* 8034A06C 3C 80 10 62 */ lis r4, 0x1062 /* 0x10624DD3@ha */ -/* 8034A070 3C 60 80 35 */ lis r3, AlarmHandler@ha /* 0x80349DEC@ha */ -/* 8034A074 54 00 F0 BE */ srwi r0, r0, 2 -/* 8034A078 38 84 4D D3 */ addi r4, r4, 0x4DD3 /* 0x10624DD3@l */ -/* 8034A07C 7C 04 00 16 */ mulhwu r0, r4, r0 -/* 8034A080 54 00 D1 BE */ srwi r0, r0, 6 -/* 8034A084 1C C0 04 7E */ mulli r6, r0, 0x47e -/* 8034A088 38 E3 9D EC */ addi r7, r3, AlarmHandler@l /* 0x80349DEC@l */ -/* 8034A08C 38 7F 00 70 */ addi r3, r31, 0x70 -/* 8034A090 38 A0 00 00 */ li r5, 0 -/* 8034A094 4B FF 0A C5 */ bl OSSetAlarm -lbl_8034A098: -/* 8034A098 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8034A09C 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8034A0A0 38 21 00 18 */ addi r1, r1, 0x18 -/* 8034A0A4 7C 08 03 A6 */ mtlr r0 -/* 8034A0A8 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/cbForStateReadingFST.s b/asm/dolphin/dvd/dvd/cbForStateReadingFST.s deleted file mode 100644 index dc161014095..00000000000 --- a/asm/dolphin/dvd/dvd/cbForStateReadingFST.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_8034925C: -/* 8034925C 7C 08 02 A6 */ mflr r0 -/* 80349260 28 03 00 10 */ cmplwi r3, 0x10 -/* 80349264 90 01 00 04 */ stw r0, 4(r1) -/* 80349268 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8034926C 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80349270 40 82 00 0C */ bne lbl_8034927C -/* 80349274 48 00 01 15 */ bl stateTimeout -/* 80349278 48 00 00 50 */ b lbl_803492C8 -lbl_8034927C: -/* 8034927C 54 60 07 FF */ clrlwi. r0, r3, 0x1f -/* 80349280 41 82 00 44 */ beq lbl_803492C4 -/* 80349284 3B E0 00 00 */ li r31, 0 -/* 80349288 93 ED 92 2C */ stw r31, NumInternalRetry(r13) -/* 8034928C 4B FF F2 65 */ bl __DVDFSInit -/* 80349290 3C 60 80 45 */ lis r3, DummyCommandBlock@ha /* 0x8044C940@ha */ -/* 80349294 80 8D 91 F8 */ lwz r4, executing(r13) -/* 80349298 38 03 C9 40 */ addi r0, r3, DummyCommandBlock@l /* 0x8044C940@l */ -/* 8034929C 90 0D 91 F8 */ stw r0, executing(r13) -/* 803492A0 93 E4 00 0C */ stw r31, 0xc(r4) -/* 803492A4 81 84 00 28 */ lwz r12, 0x28(r4) -/* 803492A8 28 0C 00 00 */ cmplwi r12, 0 -/* 803492AC 41 82 00 10 */ beq lbl_803492BC -/* 803492B0 7D 88 03 A6 */ mtlr r12 -/* 803492B4 38 60 00 00 */ li r3, 0 -/* 803492B8 4E 80 00 21 */ blrl -lbl_803492BC: -/* 803492BC 48 00 0D F1 */ bl stateReady -/* 803492C0 48 00 00 08 */ b lbl_803492C8 -lbl_803492C4: -/* 803492C4 48 00 00 F9 */ bl stateGettingError -lbl_803492C8: -/* 803492C8 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 803492CC 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 803492D0 38 21 00 18 */ addi r1, r1, 0x18 -/* 803492D4 7C 08 03 A6 */ mtlr r0 -/* 803492D8 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/cbForUnrecoveredError.s b/asm/dolphin/dvd/dvd/cbForUnrecoveredError.s deleted file mode 100644 index c6e001fff0a..00000000000 --- a/asm/dolphin/dvd/dvd/cbForUnrecoveredError.s +++ /dev/null @@ -1,27 +0,0 @@ -lbl_803496FC: -/* 803496FC 7C 08 02 A6 */ mflr r0 -/* 80349700 28 03 00 10 */ cmplwi r3, 0x10 -/* 80349704 90 01 00 04 */ stw r0, 4(r1) -/* 80349708 94 21 FF F8 */ stwu r1, -8(r1) -/* 8034970C 40 82 00 20 */ bne lbl_8034972C -/* 80349710 3C 60 01 23 */ lis r3, 0x0123 /* 0x01234568@ha */ -/* 80349714 38 63 45 68 */ addi r3, r3, 0x4568 /* 0x01234568@l */ -/* 80349718 48 00 24 71 */ bl __DVDStoreErrorCode -/* 8034971C 48 00 1A 1D */ bl DVDReset -/* 80349720 38 60 00 00 */ li r3, 0 -/* 80349724 4B FF FB B9 */ bl cbForStateError -/* 80349728 48 00 00 20 */ b lbl_80349748 -lbl_8034972C: -/* 8034972C 54 60 07 FF */ clrlwi. r0, r3, 0x1f -/* 80349730 41 82 00 0C */ beq lbl_8034973C -/* 80349734 48 00 00 A5 */ bl stateGoToRetry -/* 80349738 48 00 00 10 */ b lbl_80349748 -lbl_8034973C: -/* 8034973C 3C 60 80 35 */ lis r3, cbForUnrecoveredErrorRetry@ha /* 0x80349758@ha */ -/* 80349740 38 63 97 58 */ addi r3, r3, cbForUnrecoveredErrorRetry@l /* 0x80349758@l */ -/* 80349744 4B FF E9 5D */ bl DVDLowRequestError -lbl_80349748: -/* 80349748 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8034974C 38 21 00 08 */ addi r1, r1, 8 -/* 80349750 7C 08 03 A6 */ mtlr r0 -/* 80349754 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/cbForUnrecoveredErrorRetry.s b/asm/dolphin/dvd/dvd/cbForUnrecoveredErrorRetry.s deleted file mode 100644 index 829bccd7413..00000000000 --- a/asm/dolphin/dvd/dvd/cbForUnrecoveredErrorRetry.s +++ /dev/null @@ -1,36 +0,0 @@ -lbl_80349758: -/* 80349758 7C 08 02 A6 */ mflr r0 -/* 8034975C 28 03 00 10 */ cmplwi r3, 0x10 -/* 80349760 90 01 00 04 */ stw r0, 4(r1) -/* 80349764 94 21 FF F8 */ stwu r1, -8(r1) -/* 80349768 40 82 00 20 */ bne lbl_80349788 -/* 8034976C 3C 60 01 23 */ lis r3, 0x0123 /* 0x01234568@ha */ -/* 80349770 38 63 45 68 */ addi r3, r3, 0x4568 /* 0x01234568@l */ -/* 80349774 48 00 24 15 */ bl __DVDStoreErrorCode -/* 80349778 48 00 19 C1 */ bl DVDReset -/* 8034977C 38 60 00 00 */ li r3, 0 -/* 80349780 4B FF FB 5D */ bl cbForStateError -/* 80349784 48 00 00 44 */ b lbl_803497C8 -lbl_80349788: -/* 80349788 54 60 07 BD */ rlwinm. r0, r3, 0, 0x1e, 0x1e -/* 8034978C 41 82 00 20 */ beq lbl_803497AC -/* 80349790 3C 60 01 23 */ lis r3, 0x0123 /* 0x01234567@ha */ -/* 80349794 38 63 45 67 */ addi r3, r3, 0x4567 /* 0x01234567@l */ -/* 80349798 48 00 23 F1 */ bl __DVDStoreErrorCode -/* 8034979C 3C 60 80 35 */ lis r3, cbForStateError@ha /* 0x803492DC@ha */ -/* 803497A0 38 63 92 DC */ addi r3, r3, cbForStateError@l /* 0x803492DC@l */ -/* 803497A4 4B FF E8 71 */ bl DVDLowStopMotor -/* 803497A8 48 00 00 20 */ b lbl_803497C8 -lbl_803497AC: -/* 803497AC 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006000@ha */ -/* 803497B0 38 63 60 00 */ addi r3, r3, 0x6000 /* 0xCC006000@l */ -/* 803497B4 80 63 00 20 */ lwz r3, 0x20(r3) -/* 803497B8 48 00 23 D1 */ bl __DVDStoreErrorCode -/* 803497BC 3C 60 80 35 */ lis r3, cbForStateError@ha /* 0x803492DC@ha */ -/* 803497C0 38 63 92 DC */ addi r3, r3, cbForStateError@l /* 0x803492DC@l */ -/* 803497C4 4B FF E8 51 */ bl DVDLowStopMotor -lbl_803497C8: -/* 803497C8 80 01 00 0C */ lwz r0, 0xc(r1) -/* 803497CC 38 21 00 08 */ addi r1, r1, 8 -/* 803497D0 7C 08 03 A6 */ mtlr r0 -/* 803497D4 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/stateBusy.s b/asm/dolphin/dvd/dvd/stateBusy.s deleted file mode 100644 index d21fcba31b6..00000000000 --- a/asm/dolphin/dvd/dvd/stateBusy.s +++ /dev/null @@ -1,216 +0,0 @@ -lbl_8034A394: -/* 8034A394 7C 08 02 A6 */ mflr r0 -/* 8034A398 3C 80 80 35 */ lis r4, stateBusy@ha /* 0x8034A394@ha */ -/* 8034A39C 90 01 00 04 */ stw r0, 4(r1) -/* 8034A3A0 38 04 A3 94 */ addi r0, r4, stateBusy@l /* 0x8034A394@l */ -/* 8034A3A4 7C 67 1B 78 */ mr r7, r3 -/* 8034A3A8 94 21 FF F8 */ stwu r1, -8(r1) -/* 8034A3AC 90 0D 92 40 */ stw r0, LastState(r13) -/* 8034A3B0 80 03 00 08 */ lwz r0, 8(r3) -/* 8034A3B4 28 00 00 10 */ cmplwi r0, 0x10 -/* 8034A3B8 41 81 02 F4 */ bgt lbl_8034A6AC -/* 8034A3BC 3C 60 80 3D */ lis r3, lit_359@ha /* 0x803D15A8@ha */ -/* 8034A3C0 38 63 15 A8 */ addi r3, r3, lit_359@l /* 0x803D15A8@l */ -/* 8034A3C4 54 00 10 3A */ slwi r0, r0, 2 -/* 8034A3C8 7C 03 00 2E */ lwzx r0, r3, r0 -/* 8034A3CC 7C 09 03 A6 */ mtctr r0 -/* 8034A3D0 4E 80 04 20 */ bctr -/* 8034A3D4 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006004@ha */ -/* 8034A3D8 80 03 60 04 */ lwz r0, 0x6004(r3) /* 0xCC006004@l */ -/* 8034A3DC 38 A3 60 00 */ addi r5, r3, 0x6000 -/* 8034A3E0 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A3E4 90 05 00 04 */ stw r0, 4(r5) -/* 8034A3E8 38 00 00 20 */ li r0, 0x20 -/* 8034A3EC 38 83 A6 D4 */ addi r4, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A3F0 90 07 00 1C */ stw r0, 0x1c(r7) -/* 8034A3F4 80 67 00 18 */ lwz r3, 0x18(r7) -/* 8034A3F8 4B FF DB 79 */ bl DVDLowReadDiskID -/* 8034A3FC 48 00 02 C8 */ b lbl_8034A6C4 -/* 8034A400 80 07 00 14 */ lwz r0, 0x14(r7) -/* 8034A404 28 00 00 00 */ cmplwi r0, 0 -/* 8034A408 40 82 00 3C */ bne lbl_8034A444 -/* 8034A40C 3C 60 80 45 */ lis r3, DummyCommandBlock@ha /* 0x8044C940@ha */ -/* 8034A410 80 8D 91 F8 */ lwz r4, executing(r13) -/* 8034A414 38 03 C9 40 */ addi r0, r3, DummyCommandBlock@l /* 0x8044C940@l */ -/* 8034A418 90 0D 91 F8 */ stw r0, executing(r13) -/* 8034A41C 38 00 00 00 */ li r0, 0 -/* 8034A420 90 04 00 0C */ stw r0, 0xc(r4) -/* 8034A424 81 84 00 28 */ lwz r12, 0x28(r4) -/* 8034A428 28 0C 00 00 */ cmplwi r12, 0 -/* 8034A42C 41 82 00 10 */ beq lbl_8034A43C -/* 8034A430 7D 88 03 A6 */ mtlr r12 -/* 8034A434 38 60 00 00 */ li r3, 0 -/* 8034A438 4E 80 00 21 */ blrl -lbl_8034A43C: -/* 8034A43C 4B FF FC 71 */ bl stateReady -/* 8034A440 48 00 02 84 */ b lbl_8034A6C4 -lbl_8034A444: -/* 8034A444 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006000@ha */ -/* 8034A448 38 63 60 00 */ addi r3, r3, 0x6000 /* 0xCC006000@l */ -/* 8034A44C 80 03 00 04 */ lwz r0, 4(r3) -/* 8034A450 3C 80 00 08 */ lis r4, 8 -/* 8034A454 90 03 00 04 */ stw r0, 4(r3) -/* 8034A458 80 67 00 20 */ lwz r3, 0x20(r7) -/* 8034A45C 80 07 00 14 */ lwz r0, 0x14(r7) -/* 8034A460 7C 03 00 50 */ subf r0, r3, r0 -/* 8034A464 7C 00 20 40 */ cmplw r0, r4 -/* 8034A468 40 81 00 08 */ ble lbl_8034A470 -/* 8034A46C 48 00 00 08 */ b lbl_8034A474 -lbl_8034A470: -/* 8034A470 7C 04 03 78 */ mr r4, r0 -lbl_8034A474: -/* 8034A474 90 87 00 1C */ stw r4, 0x1c(r7) -/* 8034A478 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A47C 38 C3 A6 D4 */ addi r6, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A480 80 A7 00 20 */ lwz r5, 0x20(r7) -/* 8034A484 80 67 00 18 */ lwz r3, 0x18(r7) -/* 8034A488 80 07 00 10 */ lwz r0, 0x10(r7) -/* 8034A48C 7C 63 2A 14 */ add r3, r3, r5 -/* 8034A490 80 87 00 1C */ lwz r4, 0x1c(r7) -/* 8034A494 7C A0 2A 14 */ add r5, r0, r5 -/* 8034A498 4B FF D7 81 */ bl DVDLowRead -/* 8034A49C 48 00 02 28 */ b lbl_8034A6C4 -/* 8034A4A0 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006004@ha */ -/* 8034A4A4 80 03 60 04 */ lwz r0, 0x6004(r3) /* 0xCC006004@l */ -/* 8034A4A8 38 A3 60 00 */ addi r5, r3, 0x6000 -/* 8034A4AC 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A4B0 90 05 00 04 */ stw r0, 4(r5) -/* 8034A4B4 38 83 A6 D4 */ addi r4, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A4B8 80 67 00 10 */ lwz r3, 0x10(r7) -/* 8034A4BC 4B FF D9 F5 */ bl DVDLowSeek -/* 8034A4C0 48 00 02 04 */ b lbl_8034A6C4 -/* 8034A4C4 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A4C8 38 63 A6 D4 */ addi r3, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A4CC 4B FF DB 49 */ bl DVDLowStopMotor -/* 8034A4D0 48 00 01 F4 */ b lbl_8034A6C4 -/* 8034A4D4 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A4D8 38 63 A6 D4 */ addi r3, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A4DC 4B FF DB 39 */ bl DVDLowStopMotor -/* 8034A4E0 48 00 01 E4 */ b lbl_8034A6C4 -/* 8034A4E4 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006000@ha */ -/* 8034A4E8 38 63 60 00 */ addi r3, r3, 0x6000 /* 0xCC006000@l */ -/* 8034A4EC 80 03 00 04 */ lwz r0, 4(r3) -/* 8034A4F0 90 03 00 04 */ stw r0, 4(r3) -/* 8034A4F4 80 0D 92 0C */ lwz r0, AutoFinishing(r13) -/* 8034A4F8 2C 00 00 00 */ cmpwi r0, 0 -/* 8034A4FC 41 82 00 24 */ beq lbl_8034A520 -/* 8034A500 80 AD 91 F8 */ lwz r5, executing(r13) -/* 8034A504 38 00 00 00 */ li r0, 0 -/* 8034A508 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A50C 90 05 00 1C */ stw r0, 0x1c(r5) -/* 8034A510 38 83 A6 D4 */ addi r4, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A514 38 60 00 00 */ li r3, 0 -/* 8034A518 4B FF DD 49 */ bl DVDLowRequestAudioStatus -/* 8034A51C 48 00 01 A8 */ b lbl_8034A6C4 -lbl_8034A520: -/* 8034A520 80 8D 91 F8 */ lwz r4, executing(r13) -/* 8034A524 38 00 00 01 */ li r0, 1 -/* 8034A528 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A52C 90 04 00 1C */ stw r0, 0x1c(r4) -/* 8034A530 38 C3 A6 D4 */ addi r6, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A534 38 60 00 00 */ li r3, 0 -/* 8034A538 80 87 00 14 */ lwz r4, 0x14(r7) -/* 8034A53C 80 A7 00 10 */ lwz r5, 0x10(r7) -/* 8034A540 4B FF DC 89 */ bl DVDLowAudioStream -/* 8034A544 48 00 01 80 */ b lbl_8034A6C4 -/* 8034A548 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006004@ha */ -/* 8034A54C 80 03 60 04 */ lwz r0, 0x6004(r3) /* 0xCC006004@l */ -/* 8034A550 38 83 60 00 */ addi r4, r3, 0x6000 -/* 8034A554 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A558 90 04 00 04 */ stw r0, 4(r4) -/* 8034A55C 38 C3 A6 D4 */ addi r6, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A560 3C 60 00 01 */ lis r3, 1 -/* 8034A564 38 80 00 00 */ li r4, 0 -/* 8034A568 38 A0 00 00 */ li r5, 0 -/* 8034A56C 4B FF DC 5D */ bl DVDLowAudioStream -/* 8034A570 48 00 01 54 */ b lbl_8034A6C4 -/* 8034A574 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006004@ha */ -/* 8034A578 80 03 60 04 */ lwz r0, 0x6004(r3) /* 0xCC006004@l */ -/* 8034A57C 38 83 60 00 */ addi r4, r3, 0x6000 -/* 8034A580 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A584 90 04 00 04 */ stw r0, 4(r4) -/* 8034A588 38 00 00 01 */ li r0, 1 -/* 8034A58C 38 C3 A6 D4 */ addi r6, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A590 90 0D 92 0C */ stw r0, AutoFinishing(r13) -/* 8034A594 38 60 00 00 */ li r3, 0 -/* 8034A598 38 80 00 00 */ li r4, 0 -/* 8034A59C 38 A0 00 00 */ li r5, 0 -/* 8034A5A0 4B FF DC 29 */ bl DVDLowAudioStream -/* 8034A5A4 48 00 01 20 */ b lbl_8034A6C4 -/* 8034A5A8 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006004@ha */ -/* 8034A5AC 80 03 60 04 */ lwz r0, 0x6004(r3) /* 0xCC006004@l */ -/* 8034A5B0 38 A3 60 00 */ addi r5, r3, 0x6000 -/* 8034A5B4 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A5B8 90 05 00 04 */ stw r0, 4(r5) -/* 8034A5BC 38 83 A6 D4 */ addi r4, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A5C0 38 60 00 00 */ li r3, 0 -/* 8034A5C4 4B FF DC 9D */ bl DVDLowRequestAudioStatus -/* 8034A5C8 48 00 00 FC */ b lbl_8034A6C4 -/* 8034A5CC 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006004@ha */ -/* 8034A5D0 80 03 60 04 */ lwz r0, 0x6004(r3) /* 0xCC006004@l */ -/* 8034A5D4 38 A3 60 00 */ addi r5, r3, 0x6000 -/* 8034A5D8 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A5DC 90 05 00 04 */ stw r0, 4(r5) -/* 8034A5E0 38 83 A6 D4 */ addi r4, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A5E4 3C 60 00 01 */ lis r3, 1 -/* 8034A5E8 4B FF DC 79 */ bl DVDLowRequestAudioStatus -/* 8034A5EC 48 00 00 D8 */ b lbl_8034A6C4 -/* 8034A5F0 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006004@ha */ -/* 8034A5F4 80 03 60 04 */ lwz r0, 0x6004(r3) /* 0xCC006004@l */ -/* 8034A5F8 38 A3 60 00 */ addi r5, r3, 0x6000 -/* 8034A5FC 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A600 90 05 00 04 */ stw r0, 4(r5) -/* 8034A604 38 83 A6 D4 */ addi r4, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A608 3C 60 00 02 */ lis r3, 2 -/* 8034A60C 4B FF DC 55 */ bl DVDLowRequestAudioStatus -/* 8034A610 48 00 00 B4 */ b lbl_8034A6C4 -/* 8034A614 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006004@ha */ -/* 8034A618 80 03 60 04 */ lwz r0, 0x6004(r3) /* 0xCC006004@l */ -/* 8034A61C 38 A3 60 00 */ addi r5, r3, 0x6000 -/* 8034A620 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A624 90 05 00 04 */ stw r0, 4(r5) -/* 8034A628 38 83 A6 D4 */ addi r4, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A62C 3C 60 00 03 */ lis r3, 3 -/* 8034A630 4B FF DC 31 */ bl DVDLowRequestAudioStatus -/* 8034A634 48 00 00 90 */ b lbl_8034A6C4 -/* 8034A638 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006004@ha */ -/* 8034A63C 80 03 60 04 */ lwz r0, 0x6004(r3) /* 0xCC006004@l */ -/* 8034A640 38 83 60 00 */ addi r4, r3, 0x6000 -/* 8034A644 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A648 90 04 00 04 */ stw r0, 4(r4) -/* 8034A64C 38 A3 A6 D4 */ addi r5, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A650 80 67 00 10 */ lwz r3, 0x10(r7) -/* 8034A654 80 87 00 14 */ lwz r4, 0x14(r7) -/* 8034A658 4B FF DC 95 */ bl DVDLowAudioBufferConfig -/* 8034A65C 48 00 00 68 */ b lbl_8034A6C4 -/* 8034A660 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006004@ha */ -/* 8034A664 80 03 60 04 */ lwz r0, 0x6004(r3) /* 0xCC006004@l */ -/* 8034A668 38 A3 60 00 */ addi r5, r3, 0x6000 -/* 8034A66C 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A670 90 05 00 04 */ stw r0, 4(r5) -/* 8034A674 38 00 00 20 */ li r0, 0x20 -/* 8034A678 38 83 A6 D4 */ addi r4, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A67C 90 07 00 1C */ stw r0, 0x1c(r7) -/* 8034A680 80 67 00 18 */ lwz r3, 0x18(r7) -/* 8034A684 4B FF DA A9 */ bl DVDLowInquiry -/* 8034A688 48 00 00 3C */ b lbl_8034A6C4 -/* 8034A68C 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006004@ha */ -/* 8034A690 80 03 60 04 */ lwz r0, 0x6004(r3) /* 0xCC006004@l */ -/* 8034A694 38 83 60 00 */ addi r4, r3, 0x6000 -/* 8034A698 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A69C 90 04 00 04 */ stw r0, 4(r4) -/* 8034A6A0 38 63 A6 D4 */ addi r3, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A6A4 4B FF D9 71 */ bl DVDLowStopMotor -/* 8034A6A8 48 00 00 1C */ b lbl_8034A6C4 -lbl_8034A6AC: -/* 8034A6AC 81 8D 84 70 */ lwz r12, checkOptionalCommand(r13) -/* 8034A6B0 3C 60 80 35 */ lis r3, cbForStateBusy@ha /* 0x8034A6D4@ha */ -/* 8034A6B4 38 83 A6 D4 */ addi r4, r3, cbForStateBusy@l /* 0x8034A6D4@l */ -/* 8034A6B8 7D 88 03 A6 */ mtlr r12 -/* 8034A6BC 38 67 00 00 */ addi r3, r7, 0 -/* 8034A6C0 4E 80 00 21 */ blrl -lbl_8034A6C4: -/* 8034A6C4 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8034A6C8 38 21 00 08 */ addi r1, r1, 8 -/* 8034A6CC 7C 08 03 A6 */ mtlr r0 -/* 8034A6D0 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/stateCheckID.s b/asm/dolphin/dvd/dvd/stateCheckID.s deleted file mode 100644 index 93add82fd4c..00000000000 --- a/asm/dolphin/dvd/dvd/stateCheckID.s +++ /dev/null @@ -1,62 +0,0 @@ -lbl_80349940: -/* 80349940 7C 08 02 A6 */ mflr r0 -/* 80349944 3C 60 80 45 */ lis r3, BB2@ha /* 0x8044C900@ha */ -/* 80349948 90 01 00 04 */ stw r0, 4(r1) -/* 8034994C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80349950 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80349954 3B E3 C9 00 */ addi r31, r3, BB2@l /* 0x8044C900@l */ -/* 80349958 80 0D 92 14 */ lwz r0, CurrCommand(r13) -/* 8034995C 2C 00 00 03 */ cmpwi r0, 3 -/* 80349960 41 82 00 08 */ beq lbl_80349968 -/* 80349964 48 00 00 6C */ b lbl_803499D0 -lbl_80349968: -/* 80349968 80 8D 91 F8 */ lwz r4, executing(r13) -/* 8034996C 38 7F 00 20 */ addi r3, r31, 0x20 -/* 80349970 80 84 00 24 */ lwz r4, 0x24(r4) -/* 80349974 48 00 22 91 */ bl DVDCompareDiskID -/* 80349978 2C 03 00 00 */ cmpwi r3, 0 -/* 8034997C 41 82 00 44 */ beq lbl_803499C0 -/* 80349980 80 6D 91 FC */ lwz r3, IDShouldBe(r13) -/* 80349984 38 9F 00 20 */ addi r4, r31, 0x20 -/* 80349988 38 A0 00 20 */ li r5, 0x20 -/* 8034998C 4B CB 9B B5 */ bl memcpy -/* 80349990 80 8D 91 F8 */ lwz r4, executing(r13) -/* 80349994 38 00 00 01 */ li r0, 1 -/* 80349998 38 7F 00 00 */ addi r3, r31, 0 -/* 8034999C 90 04 00 0C */ stw r0, 0xc(r4) -/* 803499A0 38 80 00 20 */ li r4, 0x20 -/* 803499A4 4B FF 1B DD */ bl DCInvalidateRange -/* 803499A8 3C 80 80 35 */ lis r4, stateCheckID2a@ha /* 0x80349A54@ha */ -/* 803499AC 80 6D 91 F8 */ lwz r3, executing(r13) -/* 803499B0 38 04 9A 54 */ addi r0, r4, stateCheckID2a@l /* 0x80349A54@l */ -/* 803499B4 90 0D 92 40 */ stw r0, LastState(r13) -/* 803499B8 48 00 00 9D */ bl stateCheckID2a -/* 803499BC 48 00 00 50 */ b lbl_80349A0C -lbl_803499C0: -/* 803499C0 3C 60 80 35 */ lis r3, cbForStateCheckID1@ha /* 0x80349B28@ha */ -/* 803499C4 38 63 9B 28 */ addi r3, r3, cbForStateCheckID1@l /* 0x80349B28@l */ -/* 803499C8 4B FF E6 4D */ bl DVDLowStopMotor -/* 803499CC 48 00 00 40 */ b lbl_80349A0C -lbl_803499D0: -/* 803499D0 80 8D 91 FC */ lwz r4, IDShouldBe(r13) -/* 803499D4 38 7F 00 20 */ addi r3, r31, 0x20 -/* 803499D8 38 A0 00 20 */ li r5, 0x20 -/* 803499DC 48 01 C6 B1 */ bl memcmp -/* 803499E0 2C 03 00 00 */ cmpwi r3, 0 -/* 803499E4 41 82 00 14 */ beq lbl_803499F8 -/* 803499E8 3C 60 80 35 */ lis r3, cbForStateCheckID1@ha /* 0x80349B28@ha */ -/* 803499EC 38 63 9B 28 */ addi r3, r3, cbForStateCheckID1@l /* 0x80349B28@l */ -/* 803499F0 4B FF E6 25 */ bl DVDLowStopMotor -/* 803499F4 48 00 00 18 */ b lbl_80349A0C -lbl_803499F8: -/* 803499F8 3C 80 80 35 */ lis r4, stateCheckID3@ha /* 0x80349A20@ha */ -/* 803499FC 80 6D 91 F8 */ lwz r3, executing(r13) -/* 80349A00 38 04 9A 20 */ addi r0, r4, stateCheckID3@l /* 0x80349A20@l */ -/* 80349A04 90 0D 92 40 */ stw r0, LastState(r13) -/* 80349A08 48 00 00 19 */ bl stateCheckID3 -lbl_80349A0C: -/* 80349A0C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80349A10 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80349A14 38 21 00 10 */ addi r1, r1, 0x10 -/* 80349A18 7C 08 03 A6 */ mtlr r0 -/* 80349A1C 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/stateCheckID2.s b/asm/dolphin/dvd/dvd/stateCheckID2.s deleted file mode 100644 index ba29772e406..00000000000 --- a/asm/dolphin/dvd/dvd/stateCheckID2.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_80349AF0: -/* 80349AF0 7C 08 02 A6 */ mflr r0 -/* 80349AF4 3C 60 80 45 */ lis r3, BB2@ha /* 0x8044C900@ha */ -/* 80349AF8 90 01 00 04 */ stw r0, 4(r1) -/* 80349AFC 3C 80 80 35 */ lis r4, cbForStateCheckID2@ha /* 0x80349C24@ha */ -/* 80349B00 38 C4 9C 24 */ addi r6, r4, cbForStateCheckID2@l /* 0x80349C24@l */ -/* 80349B04 94 21 FF F8 */ stwu r1, -8(r1) -/* 80349B08 38 63 C9 00 */ addi r3, r3, BB2@l /* 0x8044C900@l */ -/* 80349B0C 38 80 00 20 */ li r4, 0x20 -/* 80349B10 38 A0 04 20 */ li r5, 0x420 -/* 80349B14 4B FF E1 05 */ bl DVDLowRead -/* 80349B18 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80349B1C 38 21 00 08 */ addi r1, r1, 8 -/* 80349B20 7C 08 03 A6 */ mtlr r0 -/* 80349B24 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/stateCheckID2a.s b/asm/dolphin/dvd/dvd/stateCheckID2a.s deleted file mode 100644 index 5708e74a8ea..00000000000 --- a/asm/dolphin/dvd/dvd/stateCheckID2a.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_80349A54: -/* 80349A54 7C 08 02 A6 */ mflr r0 -/* 80349A58 3C 60 80 35 */ lis r3, cbForStateCheckID2a@ha /* 0x80349A88@ha */ -/* 80349A5C 90 01 00 04 */ stw r0, 4(r1) -/* 80349A60 38 A3 9A 88 */ addi r5, r3, cbForStateCheckID2a@l /* 0x80349A88@l */ -/* 80349A64 94 21 FF F8 */ stwu r1, -8(r1) -/* 80349A68 80 8D 91 FC */ lwz r4, IDShouldBe(r13) -/* 80349A6C 88 64 00 08 */ lbz r3, 8(r4) -/* 80349A70 38 80 00 0A */ li r4, 0xa -/* 80349A74 4B FF E8 79 */ bl DVDLowAudioBufferConfig -/* 80349A78 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80349A7C 38 21 00 08 */ addi r1, r1, 8 -/* 80349A80 7C 08 03 A6 */ mtlr r0 -/* 80349A84 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/stateCheckID3.s b/asm/dolphin/dvd/dvd/stateCheckID3.s deleted file mode 100644 index 6b8136d1e5f..00000000000 --- a/asm/dolphin/dvd/dvd/stateCheckID3.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_80349A20: -/* 80349A20 7C 08 02 A6 */ mflr r0 -/* 80349A24 3C 60 80 35 */ lis r3, cbForStateCheckID3@ha /* 0x80349CFC@ha */ -/* 80349A28 90 01 00 04 */ stw r0, 4(r1) -/* 80349A2C 38 A3 9C FC */ addi r5, r3, cbForStateCheckID3@l /* 0x80349CFC@l */ -/* 80349A30 94 21 FF F8 */ stwu r1, -8(r1) -/* 80349A34 80 8D 91 FC */ lwz r4, IDShouldBe(r13) -/* 80349A38 88 64 00 08 */ lbz r3, 8(r4) -/* 80349A3C 38 80 00 0A */ li r4, 0xa -/* 80349A40 4B FF E8 AD */ bl DVDLowAudioBufferConfig -/* 80349A44 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80349A48 38 21 00 08 */ addi r1, r1, 8 -/* 80349A4C 7C 08 03 A6 */ mtlr r0 -/* 80349A50 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/stateCoverClosed.s b/asm/dolphin/dvd/dvd/stateCoverClosed.s deleted file mode 100644 index e97fd750f2e..00000000000 --- a/asm/dolphin/dvd/dvd/stateCoverClosed.s +++ /dev/null @@ -1,59 +0,0 @@ -lbl_80349E30: -/* 80349E30 7C 08 02 A6 */ mflr r0 -/* 80349E34 3C 60 80 45 */ lis r3, BB2@ha /* 0x8044C900@ha */ -/* 80349E38 90 01 00 04 */ stw r0, 4(r1) -/* 80349E3C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80349E40 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80349E44 3B E3 C9 00 */ addi r31, r3, BB2@l /* 0x8044C900@l */ -/* 80349E48 80 0D 92 14 */ lwz r0, CurrCommand(r13) -/* 80349E4C 2C 00 00 0D */ cmpwi r0, 0xd -/* 80349E50 41 82 00 28 */ beq lbl_80349E78 -/* 80349E54 40 80 00 18 */ bge lbl_80349E6C -/* 80349E58 2C 00 00 06 */ cmpwi r0, 6 -/* 80349E5C 40 80 00 4C */ bge lbl_80349EA8 -/* 80349E60 2C 00 00 04 */ cmpwi r0, 4 -/* 80349E64 40 80 00 14 */ bge lbl_80349E78 -/* 80349E68 48 00 00 40 */ b lbl_80349EA8 -lbl_80349E6C: -/* 80349E6C 2C 00 00 0F */ cmpwi r0, 0xf -/* 80349E70 41 82 00 08 */ beq lbl_80349E78 -/* 80349E74 48 00 00 34 */ b lbl_80349EA8 -lbl_80349E78: -/* 80349E78 48 00 19 FD */ bl __DVDClearWaitingQueue -/* 80349E7C 80 8D 91 F8 */ lwz r4, executing(r13) -/* 80349E80 38 1F 00 40 */ addi r0, r31, 0x40 -/* 80349E84 90 0D 91 F8 */ stw r0, executing(r13) -/* 80349E88 81 84 00 28 */ lwz r12, 0x28(r4) -/* 80349E8C 28 0C 00 00 */ cmplwi r12, 0 -/* 80349E90 41 82 00 10 */ beq lbl_80349EA0 -/* 80349E94 7D 88 03 A6 */ mtlr r12 -/* 80349E98 38 60 FF FC */ li r3, -4 -/* 80349E9C 4E 80 00 21 */ blrl -lbl_80349EA0: -/* 80349EA0 48 00 02 0D */ bl stateReady -/* 80349EA4 48 00 00 4C */ b lbl_80349EF0 -lbl_80349EA8: -/* 80349EA8 38 00 00 00 */ li r0, 0 -/* 80349EAC 90 0D 92 38 */ stw r0, MotorState(r13) -/* 80349EB0 48 00 12 89 */ bl DVDReset -/* 80349EB4 38 7F 00 70 */ addi r3, r31, 0x70 -/* 80349EB8 4B FF 0A 41 */ bl OSCreateAlarm -/* 80349EBC 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000F8@ha */ -/* 80349EC0 80 03 00 F8 */ lwz r0, 0x00F8(r3) /* 0x800000F8@l */ -/* 80349EC4 3C 80 10 62 */ lis r4, 0x1062 /* 0x10624DD3@ha */ -/* 80349EC8 3C 60 80 35 */ lis r3, AlarmHandler@ha /* 0x80349DEC@ha */ -/* 80349ECC 54 00 F0 BE */ srwi r0, r0, 2 -/* 80349ED0 38 84 4D D3 */ addi r4, r4, 0x4DD3 /* 0x10624DD3@l */ -/* 80349ED4 7C 04 00 16 */ mulhwu r0, r4, r0 -/* 80349ED8 54 00 D1 BE */ srwi r0, r0, 6 -/* 80349EDC 1C C0 04 7E */ mulli r6, r0, 0x47e -/* 80349EE0 38 E3 9D EC */ addi r7, r3, AlarmHandler@l /* 0x80349DEC@l */ -/* 80349EE4 38 7F 00 70 */ addi r3, r31, 0x70 -/* 80349EE8 38 A0 00 00 */ li r5, 0 -/* 80349EEC 4B FF 0C 6D */ bl OSSetAlarm -lbl_80349EF0: -/* 80349EF0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80349EF4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80349EF8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80349EFC 7C 08 03 A6 */ mtlr r0 -/* 80349F00 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/stateCoverClosed_CMD.s b/asm/dolphin/dvd/dvd/stateCoverClosed_CMD.s deleted file mode 100644 index 644691003ca..00000000000 --- a/asm/dolphin/dvd/dvd/stateCoverClosed_CMD.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80349F04: -/* 80349F04 7C 08 02 A6 */ mflr r0 -/* 80349F08 3C 60 80 45 */ lis r3, CurrDiskID@ha /* 0x8044C920@ha */ -/* 80349F0C 90 01 00 04 */ stw r0, 4(r1) -/* 80349F10 3C 80 80 35 */ lis r4, cbForStateCoverClosed@ha /* 0x80349F34@ha */ -/* 80349F14 38 63 C9 20 */ addi r3, r3, CurrDiskID@l /* 0x8044C920@l */ -/* 80349F18 94 21 FF F8 */ stwu r1, -8(r1) -/* 80349F1C 38 84 9F 34 */ addi r4, r4, cbForStateCoverClosed@l /* 0x80349F34@l */ -/* 80349F20 4B FF E0 51 */ bl DVDLowReadDiskID -/* 80349F24 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80349F28 38 21 00 08 */ addi r1, r1, 8 -/* 80349F2C 7C 08 03 A6 */ mtlr r0 -/* 80349F30 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/stateGettingError.s b/asm/dolphin/dvd/dvd/stateGettingError.s deleted file mode 100644 index 72ed75e4343..00000000000 --- a/asm/dolphin/dvd/dvd/stateGettingError.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_803493BC: -/* 803493BC 7C 08 02 A6 */ mflr r0 -/* 803493C0 3C 60 80 35 */ lis r3, cbForStateGettingError@ha /* 0x80349498@ha */ -/* 803493C4 90 01 00 04 */ stw r0, 4(r1) -/* 803493C8 38 63 94 98 */ addi r3, r3, cbForStateGettingError@l /* 0x80349498@l */ -/* 803493CC 94 21 FF F8 */ stwu r1, -8(r1) -/* 803493D0 4B FF EC D1 */ bl DVDLowRequestError -/* 803493D4 80 01 00 0C */ lwz r0, 0xc(r1) -/* 803493D8 38 21 00 08 */ addi r1, r1, 8 -/* 803493DC 7C 08 03 A6 */ mtlr r0 -/* 803493E0 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/stateGoToRetry.s b/asm/dolphin/dvd/dvd/stateGoToRetry.s deleted file mode 100644 index cf4a6d52d03..00000000000 --- a/asm/dolphin/dvd/dvd/stateGoToRetry.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_803497D8: -/* 803497D8 7C 08 02 A6 */ mflr r0 -/* 803497DC 3C 60 80 35 */ lis r3, cbForStateGoToRetry@ha /* 0x80349800@ha */ -/* 803497E0 90 01 00 04 */ stw r0, 4(r1) -/* 803497E4 38 63 98 00 */ addi r3, r3, cbForStateGoToRetry@l /* 0x80349800@l */ -/* 803497E8 94 21 FF F8 */ stwu r1, -8(r1) -/* 803497EC 4B FF E8 29 */ bl DVDLowStopMotor -/* 803497F0 80 01 00 0C */ lwz r0, 0xc(r1) -/* 803497F4 38 21 00 08 */ addi r1, r1, 8 -/* 803497F8 7C 08 03 A6 */ mtlr r0 -/* 803497FC 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/stateMotorStopped.s b/asm/dolphin/dvd/dvd/stateMotorStopped.s deleted file mode 100644 index ac996491a1e..00000000000 --- a/asm/dolphin/dvd/dvd/stateMotorStopped.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80349F98: -/* 80349F98 7C 08 02 A6 */ mflr r0 -/* 80349F9C 3C 60 80 35 */ lis r3, cbForStateMotorStopped@ha /* 0x80349FC0@ha */ -/* 80349FA0 90 01 00 04 */ stw r0, 4(r1) -/* 80349FA4 38 63 9F C0 */ addi r3, r3, cbForStateMotorStopped@l /* 0x80349FC0@l */ -/* 80349FA8 94 21 FF F8 */ stwu r1, -8(r1) -/* 80349FAC 4B FF DF 99 */ bl DVDLowWaitCoverClose -/* 80349FB0 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80349FB4 38 21 00 08 */ addi r1, r1, 8 -/* 80349FB8 7C 08 03 A6 */ mtlr r0 -/* 80349FBC 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvd/stateTimeout.s b/asm/dolphin/dvd/dvd/stateTimeout.s deleted file mode 100644 index 3406cdf3a58..00000000000 --- a/asm/dolphin/dvd/dvd/stateTimeout.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_80349388: -/* 80349388 7C 08 02 A6 */ mflr r0 -/* 8034938C 3C 60 01 23 */ lis r3, 0x0123 /* 0x01234568@ha */ -/* 80349390 90 01 00 04 */ stw r0, 4(r1) -/* 80349394 38 63 45 68 */ addi r3, r3, 0x4568 /* 0x01234568@l */ -/* 80349398 94 21 FF F8 */ stwu r1, -8(r1) -/* 8034939C 48 00 27 ED */ bl __DVDStoreErrorCode -/* 803493A0 48 00 1D 99 */ bl DVDReset -/* 803493A4 38 60 00 00 */ li r3, 0 -/* 803493A8 4B FF FF 35 */ bl cbForStateError -/* 803493AC 80 01 00 0C */ lwz r0, 0xc(r1) -/* 803493B0 38 21 00 08 */ addi r1, r1, 8 -/* 803493B4 7C 08 03 A6 */ mtlr r0 -/* 803493B8 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/dvdidutils/DVDCompareDiskID.s b/asm/dolphin/dvd/dvdidutils/DVDCompareDiskID.s deleted file mode 100644 index 765870ee4db..00000000000 --- a/asm/dolphin/dvd/dvdidutils/DVDCompareDiskID.s +++ /dev/null @@ -1,69 +0,0 @@ -lbl_8034BC04: -/* 8034BC04 7C 08 02 A6 */ mflr r0 -/* 8034BC08 90 01 00 04 */ stw r0, 4(r1) -/* 8034BC0C 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8034BC10 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8034BC14 3B E4 00 00 */ addi r31, r4, 0 -/* 8034BC18 93 C1 00 10 */ stw r30, 0x10(r1) -/* 8034BC1C 7C 7E 1B 78 */ mr r30, r3 -/* 8034BC20 88 03 00 00 */ lbz r0, 0(r3) -/* 8034BC24 7C 00 07 75 */ extsb. r0, r0 -/* 8034BC28 41 82 00 30 */ beq lbl_8034BC58 -/* 8034BC2C 88 1F 00 00 */ lbz r0, 0(r31) -/* 8034BC30 7C 00 07 75 */ extsb. r0, r0 -/* 8034BC34 41 82 00 24 */ beq lbl_8034BC58 -/* 8034BC38 38 7E 00 00 */ addi r3, r30, 0 -/* 8034BC3C 38 9F 00 00 */ addi r4, r31, 0 -/* 8034BC40 38 A0 00 04 */ li r5, 4 -/* 8034BC44 48 01 CD 11 */ bl strncmp -/* 8034BC48 2C 03 00 00 */ cmpwi r3, 0 -/* 8034BC4C 41 82 00 0C */ beq lbl_8034BC58 -/* 8034BC50 38 60 00 00 */ li r3, 0 -/* 8034BC54 48 00 00 90 */ b lbl_8034BCE4 -lbl_8034BC58: -/* 8034BC58 88 1E 00 04 */ lbz r0, 4(r30) -/* 8034BC5C 7C 00 07 75 */ extsb. r0, r0 -/* 8034BC60 41 82 00 28 */ beq lbl_8034BC88 -/* 8034BC64 88 1F 00 04 */ lbz r0, 4(r31) -/* 8034BC68 7C 00 07 75 */ extsb. r0, r0 -/* 8034BC6C 41 82 00 1C */ beq lbl_8034BC88 -/* 8034BC70 38 7E 00 04 */ addi r3, r30, 4 -/* 8034BC74 38 9F 00 04 */ addi r4, r31, 4 -/* 8034BC78 38 A0 00 02 */ li r5, 2 -/* 8034BC7C 48 01 CC D9 */ bl strncmp -/* 8034BC80 2C 03 00 00 */ cmpwi r3, 0 -/* 8034BC84 41 82 00 0C */ beq lbl_8034BC90 -lbl_8034BC88: -/* 8034BC88 38 60 00 00 */ li r3, 0 -/* 8034BC8C 48 00 00 58 */ b lbl_8034BCE4 -lbl_8034BC90: -/* 8034BC90 88 7E 00 06 */ lbz r3, 6(r30) -/* 8034BC94 28 03 00 FF */ cmplwi r3, 0xff -/* 8034BC98 41 82 00 20 */ beq lbl_8034BCB8 -/* 8034BC9C 88 1F 00 06 */ lbz r0, 6(r31) -/* 8034BCA0 28 00 00 FF */ cmplwi r0, 0xff -/* 8034BCA4 41 82 00 14 */ beq lbl_8034BCB8 -/* 8034BCA8 7C 03 00 40 */ cmplw r3, r0 -/* 8034BCAC 41 82 00 0C */ beq lbl_8034BCB8 -/* 8034BCB0 38 60 00 00 */ li r3, 0 -/* 8034BCB4 48 00 00 30 */ b lbl_8034BCE4 -lbl_8034BCB8: -/* 8034BCB8 88 7E 00 07 */ lbz r3, 7(r30) -/* 8034BCBC 28 03 00 FF */ cmplwi r3, 0xff -/* 8034BCC0 41 82 00 20 */ beq lbl_8034BCE0 -/* 8034BCC4 88 1F 00 07 */ lbz r0, 7(r31) -/* 8034BCC8 28 00 00 FF */ cmplwi r0, 0xff -/* 8034BCCC 41 82 00 14 */ beq lbl_8034BCE0 -/* 8034BCD0 7C 03 00 40 */ cmplw r3, r0 -/* 8034BCD4 41 82 00 0C */ beq lbl_8034BCE0 -/* 8034BCD8 38 60 00 00 */ li r3, 0 -/* 8034BCDC 48 00 00 08 */ b lbl_8034BCE4 -lbl_8034BCE0: -/* 8034BCE0 38 60 00 01 */ li r3, 1 -lbl_8034BCE4: -/* 8034BCE4 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8034BCE8 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8034BCEC 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 8034BCF0 38 21 00 18 */ addi r1, r1, 0x18 -/* 8034BCF4 7C 08 03 A6 */ mtlr r0 -/* 8034BCF8 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/fstload/__fstLoad.s b/asm/dolphin/dvd/fstload/__fstLoad.s deleted file mode 100644 index d46657e222e..00000000000 --- a/asm/dolphin/dvd/fstload/__fstLoad.s +++ /dev/null @@ -1,94 +0,0 @@ -lbl_8034BE04: -/* 8034BE04 7C 08 02 A6 */ mflr r0 -/* 8034BE08 3C 60 80 3D */ lis r3, lit_38@ha /* 0x803D16F0@ha */ -/* 8034BE0C 90 01 00 04 */ stw r0, 4(r1) -/* 8034BE10 94 21 FF A0 */ stwu r1, -0x60(r1) -/* 8034BE14 93 E1 00 5C */ stw r31, 0x5c(r1) -/* 8034BE18 3B E3 16 F0 */ addi r31, r3, lit_38@l /* 0x803D16F0@l */ -/* 8034BE1C 93 C1 00 58 */ stw r30, 0x58(r1) -/* 8034BE20 93 A1 00 54 */ stw r29, 0x54(r1) -/* 8034BE24 4B FE F4 69 */ bl OSGetArenaHi -/* 8034BE28 3C 60 80 45 */ lis r3, bb2Buf@ha /* 0x8044C9B8@ha */ -/* 8034BE2C 38 63 C9 B8 */ addi r3, r3, bb2Buf@l /* 0x8044C9B8@l */ -/* 8034BE30 38 81 00 2B */ addi r4, r1, 0x2b -/* 8034BE34 38 03 00 1F */ addi r0, r3, 0x1f -/* 8034BE38 54 83 00 34 */ rlwinm r3, r4, 0, 0, 0x1a -/* 8034BE3C 54 00 00 34 */ rlwinm r0, r0, 0, 0, 0x1a -/* 8034BE40 90 6D 92 58 */ stw r3, idTmp(r13) -/* 8034BE44 90 0D 92 54 */ stw r0, bb2(r13) -/* 8034BE48 4B FF F2 F1 */ bl DVDReset -/* 8034BE4C 3C 60 80 45 */ lis r3, block@ha /* 0x8044C9F8@ha */ -/* 8034BE50 80 8D 92 58 */ lwz r4, idTmp(r13) -/* 8034BE54 3C A0 80 35 */ lis r5, cb@ha /* 0x8034BD2C@ha */ -/* 8034BE58 38 63 C9 F8 */ addi r3, r3, block@l /* 0x8044C9F8@l */ -/* 8034BE5C 38 A5 BD 2C */ addi r5, r5, cb@l /* 0x8034BD2C@l */ -/* 8034BE60 4B FF F0 79 */ bl DVDReadDiskID -lbl_8034BE64: -/* 8034BE64 4B FF F3 65 */ bl DVDGetDriveStatus -/* 8034BE68 2C 03 00 00 */ cmpwi r3, 0 -/* 8034BE6C 40 82 FF F8 */ bne lbl_8034BE64 -/* 8034BE70 80 6D 92 54 */ lwz r3, bb2(r13) -/* 8034BE74 3F A0 80 00 */ lis r29, 0x8000 /* 0x80000000@ha */ -/* 8034BE78 3F C0 80 00 */ lis r30, 0x8000 /* 0x80000038@ha */ -/* 8034BE7C 80 03 00 10 */ lwz r0, 0x10(r3) -/* 8034BE80 38 7D 00 00 */ addi r3, r29, 0x0000 /* 0x80000000@l */ -/* 8034BE84 38 A0 00 20 */ li r5, 0x20 -/* 8034BE88 90 1E 00 38 */ stw r0, 0x0038(r30) /* 0x80000038@l */ -/* 8034BE8C 80 8D 92 54 */ lwz r4, bb2(r13) -/* 8034BE90 80 04 00 0C */ lwz r0, 0xc(r4) -/* 8034BE94 90 1E 00 3C */ stw r0, 0x3c(r30) -/* 8034BE98 80 8D 92 58 */ lwz r4, idTmp(r13) -/* 8034BE9C 4B CB 76 A5 */ bl memcpy -/* 8034BEA0 38 6D 84 80 */ la r3, lit_37(r13) /* 80450A00-_SDA_BASE_ */ -/* 8034BEA4 4C C6 31 82 */ crclr 6 -/* 8034BEA8 4B CB AC 15 */ bl OSReport -/* 8034BEAC 88 9D 00 00 */ lbz r4, 0(r29) -/* 8034BEB0 7F E3 FB 78 */ mr r3, r31 -/* 8034BEB4 88 BD 00 01 */ lbz r5, 1(r29) -/* 8034BEB8 4C C6 31 82 */ crclr 6 -/* 8034BEBC 88 DD 00 02 */ lbz r6, 2(r29) -/* 8034BEC0 88 FD 00 03 */ lbz r7, 3(r29) -/* 8034BEC4 7C 84 07 74 */ extsb r4, r4 -/* 8034BEC8 7C A5 07 74 */ extsb r5, r5 -/* 8034BECC 7C C6 07 74 */ extsb r6, r6 -/* 8034BED0 7C E7 07 74 */ extsb r7, r7 -/* 8034BED4 4B CB AB E9 */ bl OSReport -/* 8034BED8 88 9D 00 04 */ lbz r4, 4(r29) -/* 8034BEDC 38 7F 00 1C */ addi r3, r31, 0x1c -/* 8034BEE0 88 BD 00 05 */ lbz r5, 5(r29) -/* 8034BEE4 4C C6 31 82 */ crclr 6 -/* 8034BEE8 7C 84 07 74 */ extsb r4, r4 -/* 8034BEEC 7C A5 07 74 */ extsb r5, r5 -/* 8034BEF0 4B CB AB CD */ bl OSReport -/* 8034BEF4 88 9D 00 06 */ lbz r4, 6(r29) -/* 8034BEF8 38 7F 00 34 */ addi r3, r31, 0x34 -/* 8034BEFC 4C C6 31 82 */ crclr 6 -/* 8034BF00 4B CB AB BD */ bl OSReport -/* 8034BF04 88 9D 00 07 */ lbz r4, 7(r29) -/* 8034BF08 38 7F 00 48 */ addi r3, r31, 0x48 -/* 8034BF0C 4C C6 31 82 */ crclr 6 -/* 8034BF10 4B CB AB AD */ bl OSReport -/* 8034BF14 88 1E 00 08 */ lbz r0, 8(r30) -/* 8034BF18 28 00 00 00 */ cmplwi r0, 0 -/* 8034BF1C 40 82 00 0C */ bne lbl_8034BF28 -/* 8034BF20 38 8D 84 84 */ la r4, lit_42(r13) /* 80450A04-_SDA_BASE_ */ -/* 8034BF24 48 00 00 08 */ b lbl_8034BF2C -lbl_8034BF28: -/* 8034BF28 38 8D 84 88 */ la r4, lit_43(r13) /* 80450A08-_SDA_BASE_ */ -lbl_8034BF2C: -/* 8034BF2C 4C C6 31 82 */ crclr 6 -/* 8034BF30 38 7F 00 5C */ addi r3, r31, 0x5c -/* 8034BF34 4B CB AB 89 */ bl OSReport -/* 8034BF38 38 6D 84 80 */ la r3, lit_37(r13) /* 80450A00-_SDA_BASE_ */ -/* 8034BF3C 4C C6 31 82 */ crclr 6 -/* 8034BF40 4B CB AB 7D */ bl OSReport -/* 8034BF44 80 6D 92 54 */ lwz r3, bb2(r13) -/* 8034BF48 80 63 00 10 */ lwz r3, 0x10(r3) -/* 8034BF4C 4B FE F3 51 */ bl OSSetArenaHi -/* 8034BF50 80 01 00 64 */ lwz r0, 0x64(r1) -/* 8034BF54 83 E1 00 5C */ lwz r31, 0x5c(r1) -/* 8034BF58 83 C1 00 58 */ lwz r30, 0x58(r1) -/* 8034BF5C 83 A1 00 54 */ lwz r29, 0x54(r1) -/* 8034BF60 38 21 00 60 */ addi r1, r1, 0x60 -/* 8034BF64 7C 08 03 A6 */ mtlr r0 -/* 8034BF68 4E 80 00 20 */ blr diff --git a/asm/dolphin/dvd/fstload/cb.s b/asm/dolphin/dvd/fstload/cb.s deleted file mode 100644 index 1aee446ddc4..00000000000 --- a/asm/dolphin/dvd/fstload/cb.s +++ /dev/null @@ -1,59 +0,0 @@ -lbl_8034BD2C: -/* 8034BD2C 7C 08 02 A6 */ mflr r0 -/* 8034BD30 2C 03 00 00 */ cmpwi r3, 0 -/* 8034BD34 90 01 00 04 */ stw r0, 4(r1) -/* 8034BD38 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8034BD3C 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8034BD40 3B E4 00 00 */ addi r31, r4, 0 -/* 8034BD44 40 81 00 7C */ ble lbl_8034BDC0 -/* 8034BD48 80 0D 92 50 */ lwz r0, status(r13) -/* 8034BD4C 2C 00 00 01 */ cmpwi r0, 1 -/* 8034BD50 41 82 00 3C */ beq lbl_8034BD8C -/* 8034BD54 40 80 00 9C */ bge lbl_8034BDF0 -/* 8034BD58 2C 00 00 00 */ cmpwi r0, 0 -/* 8034BD5C 40 80 00 08 */ bge lbl_8034BD64 -/* 8034BD60 48 00 00 90 */ b lbl_8034BDF0 -lbl_8034BD64: -/* 8034BD64 38 00 00 01 */ li r0, 1 -/* 8034BD68 80 8D 92 54 */ lwz r4, bb2(r13) -/* 8034BD6C 3C 60 80 35 */ lis r3, cb@ha /* 0x8034BD2C@ha */ -/* 8034BD70 90 0D 92 50 */ stw r0, status(r13) -/* 8034BD74 38 E3 BD 2C */ addi r7, r3, cb@l /* 0x8034BD2C@l */ -/* 8034BD78 38 7F 00 00 */ addi r3, r31, 0 -/* 8034BD7C 38 A0 00 20 */ li r5, 0x20 -/* 8034BD80 38 C0 04 20 */ li r6, 0x420 -/* 8034BD84 4B FF F0 85 */ bl DVDReadAbsAsyncForBS -/* 8034BD88 48 00 00 68 */ b lbl_8034BDF0 -lbl_8034BD8C: -/* 8034BD8C 38 00 00 02 */ li r0, 2 -/* 8034BD90 80 CD 92 54 */ lwz r6, bb2(r13) -/* 8034BD94 90 0D 92 50 */ stw r0, status(r13) -/* 8034BD98 3C 60 80 35 */ lis r3, cb@ha /* 0x8034BD2C@ha */ -/* 8034BD9C 38 E3 BD 2C */ addi r7, r3, cb@l /* 0x8034BD2C@l */ -/* 8034BDA0 80 A6 00 08 */ lwz r5, 8(r6) -/* 8034BDA4 7F E3 FB 78 */ mr r3, r31 -/* 8034BDA8 80 86 00 10 */ lwz r4, 0x10(r6) -/* 8034BDAC 38 05 00 1F */ addi r0, r5, 0x1f -/* 8034BDB0 80 C6 00 04 */ lwz r6, 4(r6) -/* 8034BDB4 54 05 00 34 */ rlwinm r5, r0, 0, 0, 0x1a -/* 8034BDB8 4B FF F0 51 */ bl DVDReadAbsAsyncForBS -/* 8034BDBC 48 00 00 34 */ b lbl_8034BDF0 -lbl_8034BDC0: -/* 8034BDC0 2C 03 FF FF */ cmpwi r3, -1 -/* 8034BDC4 41 82 00 2C */ beq lbl_8034BDF0 -/* 8034BDC8 2C 03 FF FC */ cmpwi r3, -4 -/* 8034BDCC 40 82 00 24 */ bne lbl_8034BDF0 -/* 8034BDD0 38 00 00 00 */ li r0, 0 -/* 8034BDD4 90 0D 92 50 */ stw r0, status(r13) -/* 8034BDD8 4B FF F3 61 */ bl DVDReset -/* 8034BDDC 3C 60 80 35 */ lis r3, cb@ha /* 0x8034BD2C@ha */ -/* 8034BDE0 80 8D 92 58 */ lwz r4, idTmp(r13) -/* 8034BDE4 38 A3 BD 2C */ addi r5, r3, cb@l /* 0x8034BD2C@l */ -/* 8034BDE8 38 7F 00 00 */ addi r3, r31, 0 -/* 8034BDEC 4B FF F0 ED */ bl DVDReadDiskID -lbl_8034BDF0: -/* 8034BDF0 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8034BDF4 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8034BDF8 38 21 00 18 */ addi r1, r1, 0x18 -/* 8034BDFC 7C 08 03 A6 */ mtlr r0 -/* 8034BE00 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OS/OSExceptionInit.s b/asm/dolphin/os/OS/OSExceptionInit.s deleted file mode 100644 index c0d965e21a6..00000000000 --- a/asm/dolphin/os/OS/OSExceptionInit.s +++ /dev/null @@ -1,178 +0,0 @@ -lbl_8033A440: -/* 8033A440 7C 08 02 A6 */ mflr r0 -/* 8033A444 90 01 00 04 */ stw r0, 4(r1) -/* 8033A448 94 21 FF C8 */ stwu r1, -0x38(r1) -/* 8033A44C BE 81 00 08 */ stmw r20, 8(r1) -/* 8033A450 3C 60 80 00 */ lis r3, 0x8000 /* 0x80000060@ha */ -/* 8033A454 80 03 00 60 */ lwz r0, 0x0060(r3) /* 0x80000060@l */ -/* 8033A458 3C 80 80 34 */ lis r4, __OSEVSetNumber@ha /* 0x8033A780@ha */ -/* 8033A45C 3B C4 A7 80 */ addi r30, r4, __OSEVSetNumber@l /* 0x8033A780@l */ -/* 8033A460 3C A0 80 34 */ lis r5, OSExceptionVector@ha /* 0x8033A718@ha */ -/* 8033A464 83 3E 00 00 */ lwz r25, 0(r30) -/* 8033A468 3C 80 80 34 */ lis r4, __OSEVEnd@ha /* 0x8033A7B0@ha */ -/* 8033A46C 38 A5 A7 18 */ addi r5, r5, OSExceptionVector@l /* 0x8033A718@l */ -/* 8033A470 38 84 A7 B0 */ addi r4, r4, __OSEVEnd@l /* 0x8033A7B0@l */ -/* 8033A474 3C C0 80 3D */ lis r6, lit_1@ha /* 0x803CF288@ha */ -/* 8033A478 28 00 00 00 */ cmplwi r0, 0 -/* 8033A47C 7C B8 2B 78 */ mr r24, r5 -/* 8033A480 3B A6 F2 88 */ addi r29, r6, lit_1@l /* 0x803CF288@l */ -/* 8033A484 7E E5 20 50 */ subf r23, r5, r4 -/* 8033A488 3A 83 00 60 */ addi r20, r3, 0x60 -/* 8033A48C 40 82 00 4C */ bne lbl_8033A4D8 -/* 8033A490 38 7D 01 60 */ addi r3, r29, 0x160 -/* 8033A494 4C C6 31 82 */ crclr 6 -/* 8033A498 48 00 BF 9D */ bl DBPrintf -/* 8033A49C 3C 80 80 34 */ lis r4, __OSDBIntegrator@ha /* 0x8033A6C0@ha */ -/* 8033A4A0 3C 60 80 34 */ lis r3, __OSDBJump@ha /* 0x8033A6E4@ha */ -/* 8033A4A4 38 03 A6 E4 */ addi r0, r3, __OSDBJump@l /* 0x8033A6E4@l */ -/* 8033A4A8 38 84 A6 C0 */ addi r4, r4, __OSDBIntegrator@l /* 0x8033A6C0@l */ -/* 8033A4AC 7E A4 00 50 */ subf r21, r4, r0 -/* 8033A4B0 7E 83 A3 78 */ mr r3, r20 -/* 8033A4B4 7E A5 AB 78 */ mr r5, r21 -/* 8033A4B8 4B CC 90 89 */ bl memcpy -/* 8033A4BC 7E 83 A3 78 */ mr r3, r20 -/* 8033A4C0 7E A4 AB 78 */ mr r4, r21 -/* 8033A4C4 48 00 11 49 */ bl DCFlushRangeNoSync -/* 8033A4C8 7C 00 04 AC */ sync -/* 8033A4CC 7E 83 A3 78 */ mr r3, r20 -/* 8033A4D0 7E A4 AB 78 */ mr r4, r21 -/* 8033A4D4 48 00 11 BD */ bl ICInvalidateRange -lbl_8033A4D8: -/* 8033A4D8 3C 80 80 34 */ lis r4, __OSDBJump@ha /* 0x8033A6E4@ha */ -/* 8033A4DC 3C 60 80 34 */ lis r3, __OSSetExceptionHandler@ha /* 0x8033A6E8@ha */ -/* 8033A4E0 3B E4 A6 E4 */ addi r31, r4, __OSDBJump@l /* 0x8033A6E4@l */ -/* 8033A4E4 38 03 A6 E8 */ addi r0, r3, __OSSetExceptionHandler@l /* 0x8033A6E8@l */ -/* 8033A4E8 3B 9D 01 24 */ addi r28, r29, 0x124 -/* 8033A4EC 7F 7F 00 50 */ subf r27, r31, r0 -/* 8033A4F0 3B 40 00 00 */ li r26, 0 -/* 8033A4F4 48 00 00 04 */ b lbl_8033A4F8 -lbl_8033A4F8: -/* 8033A4F8 3C 60 80 34 */ lis r3, __DBVECTOR@ha /* 0x8033A770@ha */ -/* 8033A4FC 3A A3 A7 70 */ addi r21, r3, __DBVECTOR@l /* 0x8033A770@l */ -/* 8033A500 3E C0 60 00 */ lis r22, 0x6000 -/* 8033A504 48 00 00 04 */ b lbl_8033A508 -lbl_8033A508: -/* 8033A508 48 00 01 48 */ b lbl_8033A650 -lbl_8033A50C: -/* 8033A50C 80 6D 90 84 */ lwz r3, BI2DebugFlag(r13) -/* 8033A510 28 03 00 00 */ cmplwi r3, 0 -/* 8033A514 41 82 00 34 */ beq lbl_8033A548 -/* 8033A518 80 03 00 00 */ lwz r0, 0(r3) -/* 8033A51C 28 00 00 02 */ cmplwi r0, 2 -/* 8033A520 41 80 00 28 */ blt lbl_8033A548 -/* 8033A524 7F 43 D3 78 */ mr r3, r26 -/* 8033A528 48 00 BE F1 */ bl __DBIsExceptionMarked -/* 8033A52C 2C 03 00 00 */ cmpwi r3, 0 -/* 8033A530 41 82 00 18 */ beq lbl_8033A548 -/* 8033A534 38 7D 01 7C */ addi r3, r29, 0x17c -/* 8033A538 4C C6 31 82 */ crclr 6 -/* 8033A53C 57 44 06 3E */ clrlwi r4, r26, 0x18 -/* 8033A540 48 00 BE F5 */ bl DBPrintf -/* 8033A544 48 00 01 04 */ b lbl_8033A648 -lbl_8033A548: -/* 8033A548 57 54 06 3E */ clrlwi r20, r26, 0x18 -/* 8033A54C 7F 20 A3 78 */ or r0, r25, r20 -/* 8033A550 90 1E 00 00 */ stw r0, 0(r30) -/* 8033A554 7F 43 D3 78 */ mr r3, r26 -/* 8033A558 48 00 BE C1 */ bl __DBIsExceptionMarked -/* 8033A55C 2C 03 00 00 */ cmpwi r3, 0 -/* 8033A560 41 82 00 28 */ beq lbl_8033A588 -/* 8033A564 7E 84 A3 78 */ mr r4, r20 -/* 8033A568 4C C6 31 82 */ crclr 6 -/* 8033A56C 38 7D 01 AC */ addi r3, r29, 0x1ac -/* 8033A570 48 00 BE C5 */ bl DBPrintf -/* 8033A574 7E A3 AB 78 */ mr r3, r21 -/* 8033A578 7F E4 FB 78 */ mr r4, r31 -/* 8033A57C 7F 65 DB 78 */ mr r5, r27 -/* 8033A580 4B CC 8F C1 */ bl memcpy -/* 8033A584 48 00 00 90 */ b lbl_8033A614 -lbl_8033A588: -/* 8033A588 7E A4 AB 78 */ mr r4, r21 -/* 8033A58C 48 00 00 04 */ b lbl_8033A590 -lbl_8033A590: -/* 8033A590 28 1B 00 00 */ cmplwi r27, 0 -/* 8033A594 38 7B 00 03 */ addi r3, r27, 3 -/* 8033A598 54 63 F0 BE */ srwi r3, r3, 2 -/* 8033A59C 40 81 00 78 */ ble lbl_8033A614 -/* 8033A5A0 54 60 E8 FE */ srwi r0, r3, 3 -/* 8033A5A4 28 00 00 00 */ cmplwi r0, 0 -/* 8033A5A8 7C 09 03 A6 */ mtctr r0 -/* 8033A5AC 41 82 00 54 */ beq lbl_8033A600 -/* 8033A5B0 48 00 00 04 */ b lbl_8033A5B4 -lbl_8033A5B4: -/* 8033A5B4 92 C4 00 00 */ stw r22, 0(r4) -/* 8033A5B8 38 84 00 04 */ addi r4, r4, 4 -/* 8033A5BC 92 C4 00 00 */ stw r22, 0(r4) -/* 8033A5C0 38 84 00 04 */ addi r4, r4, 4 -/* 8033A5C4 92 C4 00 00 */ stw r22, 0(r4) -/* 8033A5C8 38 84 00 04 */ addi r4, r4, 4 -/* 8033A5CC 92 C4 00 00 */ stw r22, 0(r4) -/* 8033A5D0 38 84 00 04 */ addi r4, r4, 4 -/* 8033A5D4 92 C4 00 00 */ stw r22, 0(r4) -/* 8033A5D8 38 84 00 04 */ addi r4, r4, 4 -/* 8033A5DC 92 C4 00 00 */ stw r22, 0(r4) -/* 8033A5E0 38 84 00 04 */ addi r4, r4, 4 -/* 8033A5E4 92 C4 00 00 */ stw r22, 0(r4) -/* 8033A5E8 38 84 00 04 */ addi r4, r4, 4 -/* 8033A5EC 92 C4 00 00 */ stw r22, 0(r4) -/* 8033A5F0 38 84 00 04 */ addi r4, r4, 4 -/* 8033A5F4 42 00 FF C0 */ bdnz lbl_8033A5B4 -/* 8033A5F8 70 63 00 07 */ andi. r3, r3, 7 -/* 8033A5FC 41 82 00 18 */ beq lbl_8033A614 -lbl_8033A600: -/* 8033A600 7C 69 03 A6 */ mtctr r3 -/* 8033A604 48 00 00 04 */ b lbl_8033A608 -lbl_8033A608: -/* 8033A608 92 C4 00 00 */ stw r22, 0(r4) -/* 8033A60C 38 84 00 04 */ addi r4, r4, 4 -/* 8033A610 42 00 FF F8 */ bdnz lbl_8033A608 -lbl_8033A614: -/* 8033A614 80 7C 00 00 */ lwz r3, 0(r28) -/* 8033A618 7F 04 C3 78 */ mr r4, r24 -/* 8033A61C 7E E5 BB 78 */ mr r5, r23 -/* 8033A620 3E 83 80 00 */ addis r20, r3, 0x8000 -/* 8033A624 7E 83 A3 78 */ mr r3, r20 -/* 8033A628 4B CC 8F 19 */ bl memcpy -/* 8033A62C 7E 83 A3 78 */ mr r3, r20 -/* 8033A630 7E E4 BB 78 */ mr r4, r23 -/* 8033A634 48 00 0F D9 */ bl DCFlushRangeNoSync -/* 8033A638 7C 00 04 AC */ sync -/* 8033A63C 7E 83 A3 78 */ mr r3, r20 -/* 8033A640 7E E4 BB 78 */ mr r4, r23 -/* 8033A644 48 00 10 4D */ bl ICInvalidateRange -lbl_8033A648: -/* 8033A648 3B 9C 00 04 */ addi r28, r28, 4 -/* 8033A64C 3B 5A 00 01 */ addi r26, r26, 1 -lbl_8033A650: -/* 8033A650 57 40 06 3E */ clrlwi r0, r26, 0x18 -/* 8033A654 28 00 00 0F */ cmplwi r0, 0xf -/* 8033A658 41 80 FE B4 */ blt lbl_8033A50C -/* 8033A65C 3C 60 80 00 */ lis r3, 0x8000 /* 0x80003000@ha */ -/* 8033A660 38 03 30 00 */ addi r0, r3, 0x3000 /* 0x80003000@l */ -/* 8033A664 90 0D 90 A4 */ stw r0, OSExceptionTable(r13) -/* 8033A668 3A 80 00 00 */ li r20, 0 -/* 8033A66C 48 00 00 04 */ b lbl_8033A670 -lbl_8033A670: -/* 8033A670 3C 60 80 34 */ lis r3, OSDefaultExceptionHandler@ha /* 0x8033A7B4@ha */ -/* 8033A674 3A E3 A7 B4 */ addi r23, r3, OSDefaultExceptionHandler@l /* 0x8033A7B4@l */ -/* 8033A678 48 00 00 04 */ b lbl_8033A67C -lbl_8033A67C: -/* 8033A67C 48 00 00 14 */ b lbl_8033A690 -lbl_8033A680: -/* 8033A680 7E 83 A3 78 */ mr r3, r20 -/* 8033A684 7E E4 BB 78 */ mr r4, r23 -/* 8033A688 48 00 00 61 */ bl __OSSetExceptionHandler -/* 8033A68C 3A 94 00 01 */ addi r20, r20, 1 -lbl_8033A690: -/* 8033A690 56 80 06 3E */ clrlwi r0, r20, 0x18 -/* 8033A694 28 00 00 0F */ cmplwi r0, 0xf -/* 8033A698 41 80 FF E8 */ blt lbl_8033A680 -/* 8033A69C 93 3E 00 00 */ stw r25, 0(r30) -/* 8033A6A0 38 7D 01 DC */ addi r3, r29, 0x1dc -/* 8033A6A4 4C C6 31 82 */ crclr 6 -/* 8033A6A8 48 00 BD 8D */ bl DBPrintf -/* 8033A6AC BA 81 00 08 */ lmw r20, 8(r1) -/* 8033A6B0 80 01 00 3C */ lwz r0, 0x3c(r1) -/* 8033A6B4 38 21 00 38 */ addi r1, r1, 0x38 -/* 8033A6B8 7C 08 03 A6 */ mtlr r0 -/* 8033A6BC 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OS/OSRegisterVersion.s b/asm/dolphin/os/OS/OSRegisterVersion.s deleted file mode 100644 index 76e88663374..00000000000 --- a/asm/dolphin/os/OS/OSRegisterVersion.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8033A874: -/* 8033A874 7C 08 02 A6 */ mflr r0 -/* 8033A878 90 01 00 04 */ stw r0, 4(r1) -/* 8033A87C 94 21 FF F8 */ stwu r1, -8(r1) -/* 8033A880 7C 64 1B 78 */ mr r4, r3 -/* 8033A884 4C C6 31 82 */ crclr 6 -/* 8033A888 38 6D 84 0C */ la r3, lit_163(r13) /* 8045098C-_SDA_BASE_ */ -/* 8033A88C 4B CC C2 31 */ bl OSReport -/* 8033A890 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8033A894 38 21 00 08 */ addi r1, r1, 8 -/* 8033A898 7C 08 03 A6 */ mtlr r0 -/* 8033A89C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OS/__OSGetDIConfig.s b/asm/dolphin/os/OS/__OSGetDIConfig.s deleted file mode 100644 index 41d74619f41..00000000000 --- a/asm/dolphin/os/OS/__OSGetDIConfig.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_8033A860: -/* 8033A860 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006000@ha */ -/* 8033A864 38 63 60 00 */ addi r3, r3, 0x6000 /* 0xCC006000@l */ -/* 8033A868 80 03 00 24 */ lwz r0, 0x24(r3) -/* 8033A86C 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 8033A870 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSAlarm/DecrementerExceptionCallback.s b/asm/dolphin/os/OSAlarm/DecrementerExceptionCallback.s deleted file mode 100644 index 7766228d29e..00000000000 --- a/asm/dolphin/os/OSAlarm/DecrementerExceptionCallback.s +++ /dev/null @@ -1,152 +0,0 @@ -lbl_8033AD58: -/* 8033AD58 7C 08 02 A6 */ mflr r0 -/* 8033AD5C 90 01 00 04 */ stw r0, 4(r1) -/* 8033AD60 94 21 FD 10 */ stwu r1, -0x2f0(r1) -/* 8033AD64 93 E1 02 EC */ stw r31, 0x2ec(r1) -/* 8033AD68 93 C1 02 E8 */ stw r30, 0x2e8(r1) -/* 8033AD6C 93 A1 02 E4 */ stw r29, 0x2e4(r1) -/* 8033AD70 7C 9D 23 78 */ mr r29, r4 -/* 8033AD74 93 81 02 E0 */ stw r28, 0x2e0(r1) -/* 8033AD78 48 00 79 A5 */ bl __OSGetSystemTime -/* 8033AD7C 80 0D 90 B8 */ lwz r0, AlarmQueue(r13) -/* 8033AD80 3B 84 00 00 */ addi r28, r4, 0 -/* 8033AD84 3B C3 00 00 */ addi r30, r3, 0 -/* 8033AD88 28 00 00 00 */ cmplwi r0, 0 -/* 8033AD8C 7C 1F 03 78 */ mr r31, r0 -/* 8033AD90 40 82 00 0C */ bne lbl_8033AD9C -/* 8033AD94 7F A3 EB 78 */ mr r3, r29 -/* 8033AD98 48 00 11 89 */ bl OSLoadContext -lbl_8033AD9C: -/* 8033AD9C 80 1F 00 08 */ lwz r0, 8(r31) -/* 8033ADA0 6F C4 80 00 */ xoris r4, r30, 0x8000 -/* 8033ADA4 80 BF 00 0C */ lwz r5, 0xc(r31) -/* 8033ADA8 6C 03 80 00 */ xoris r3, r0, 0x8000 -/* 8033ADAC 7C 05 E0 10 */ subfc r0, r5, r28 -/* 8033ADB0 7C 63 21 10 */ subfe r3, r3, r4 -/* 8033ADB4 7C 64 21 10 */ subfe r3, r4, r4 -/* 8033ADB8 7C 63 00 D1 */ neg. r3, r3 -/* 8033ADBC 41 82 00 7C */ beq lbl_8033AE38 -/* 8033ADC0 48 00 79 5D */ bl __OSGetSystemTime -/* 8033ADC4 80 DF 00 0C */ lwz r6, 0xc(r31) -/* 8033ADC8 38 E0 00 00 */ li r7, 0 -/* 8033ADCC 80 1F 00 08 */ lwz r0, 8(r31) -/* 8033ADD0 6C E5 80 00 */ xoris r5, r7, 0x8000 -/* 8033ADD4 7D 04 30 10 */ subfc r8, r4, r6 -/* 8033ADD8 7C 03 01 10 */ subfe r0, r3, r0 -/* 8033ADDC 6C 06 80 00 */ xoris r6, r0, 0x8000 -/* 8033ADE0 7C 07 40 10 */ subfc r0, r7, r8 -/* 8033ADE4 7C A5 31 10 */ subfe r5, r5, r6 -/* 8033ADE8 7C A6 31 10 */ subfe r5, r6, r6 -/* 8033ADEC 7C A5 00 D1 */ neg. r5, r5 -/* 8033ADF0 41 82 00 10 */ beq lbl_8033AE00 -/* 8033ADF4 38 60 00 00 */ li r3, 0 -/* 8033ADF8 4B FF EE F9 */ bl PPCMtdec -/* 8033ADFC 48 00 00 34 */ b lbl_8033AE30 -lbl_8033AE00: -/* 8033AE00 3C 80 80 00 */ lis r4, 0x8000 -/* 8033AE04 6C E3 80 00 */ xoris r3, r7, 0x8000 -/* 8033AE08 7C 04 40 10 */ subfc r0, r4, r8 -/* 8033AE0C 7C 63 31 10 */ subfe r3, r3, r6 -/* 8033AE10 7C 66 31 10 */ subfe r3, r6, r6 -/* 8033AE14 7C 63 00 D1 */ neg. r3, r3 -/* 8033AE18 41 82 00 10 */ beq lbl_8033AE28 -/* 8033AE1C 7D 03 43 78 */ mr r3, r8 -/* 8033AE20 4B FF EE D1 */ bl PPCMtdec -/* 8033AE24 48 00 00 0C */ b lbl_8033AE30 -lbl_8033AE28: -/* 8033AE28 38 64 FF FF */ addi r3, r4, -1 -/* 8033AE2C 4B FF EE C5 */ bl PPCMtdec -lbl_8033AE30: -/* 8033AE30 7F A3 EB 78 */ mr r3, r29 -/* 8033AE34 48 00 10 ED */ bl OSLoadContext -lbl_8033AE38: -/* 8033AE38 80 7F 00 14 */ lwz r3, 0x14(r31) -/* 8033AE3C 28 03 00 00 */ cmplwi r3, 0 -/* 8033AE40 90 6D 90 B8 */ stw r3, AlarmQueue(r13) -/* 8033AE44 40 82 00 14 */ bne lbl_8033AE58 -/* 8033AE48 38 00 00 00 */ li r0, 0 -/* 8033AE4C 38 6D 90 B8 */ la r3, AlarmQueue(r13) /* 80451638-_SDA_BASE_ */ -/* 8033AE50 90 03 00 04 */ stw r0, 4(r3) -/* 8033AE54 48 00 00 0C */ b lbl_8033AE60 -lbl_8033AE58: -/* 8033AE58 38 00 00 00 */ li r0, 0 -/* 8033AE5C 90 03 00 10 */ stw r0, 0x10(r3) -lbl_8033AE60: -/* 8033AE60 83 DF 00 00 */ lwz r30, 0(r31) -/* 8033AE64 38 C0 00 00 */ li r6, 0 -/* 8033AE68 6C C4 80 00 */ xoris r4, r6, 0x8000 -/* 8033AE6C 90 DF 00 00 */ stw r6, 0(r31) -/* 8033AE70 80 1F 00 18 */ lwz r0, 0x18(r31) -/* 8033AE74 80 BF 00 1C */ lwz r5, 0x1c(r31) -/* 8033AE78 6C 03 80 00 */ xoris r3, r0, 0x8000 -/* 8033AE7C 7C 05 30 10 */ subfc r0, r5, r6 -/* 8033AE80 7C 63 21 10 */ subfe r3, r3, r4 -/* 8033AE84 7C 64 21 10 */ subfe r3, r4, r4 -/* 8033AE88 7C 63 00 D1 */ neg. r3, r3 -/* 8033AE8C 41 82 00 18 */ beq lbl_8033AEA4 -/* 8033AE90 38 7F 00 00 */ addi r3, r31, 0 -/* 8033AE94 38 FE 00 00 */ addi r7, r30, 0 -/* 8033AE98 38 C0 00 00 */ li r6, 0 -/* 8033AE9C 38 A0 00 00 */ li r5, 0 -/* 8033AEA0 4B FF FA 69 */ bl InsertAlarm -lbl_8033AEA4: -/* 8033AEA4 83 8D 90 B8 */ lwz r28, AlarmQueue(r13) -/* 8033AEA8 28 1C 00 00 */ cmplwi r28, 0 -/* 8033AEAC 41 82 00 74 */ beq lbl_8033AF20 -/* 8033AEB0 48 00 78 6D */ bl __OSGetSystemTime -/* 8033AEB4 80 DC 00 0C */ lwz r6, 0xc(r28) -/* 8033AEB8 38 E0 00 00 */ li r7, 0 -/* 8033AEBC 80 1C 00 08 */ lwz r0, 8(r28) -/* 8033AEC0 6C E5 80 00 */ xoris r5, r7, 0x8000 -/* 8033AEC4 7D 04 30 10 */ subfc r8, r4, r6 -/* 8033AEC8 7C 03 01 10 */ subfe r0, r3, r0 -/* 8033AECC 6C 06 80 00 */ xoris r6, r0, 0x8000 -/* 8033AED0 7C 07 40 10 */ subfc r0, r7, r8 -/* 8033AED4 7C A5 31 10 */ subfe r5, r5, r6 -/* 8033AED8 7C A6 31 10 */ subfe r5, r6, r6 -/* 8033AEDC 7C A5 00 D1 */ neg. r5, r5 -/* 8033AEE0 41 82 00 10 */ beq lbl_8033AEF0 -/* 8033AEE4 38 60 00 00 */ li r3, 0 -/* 8033AEE8 4B FF EE 09 */ bl PPCMtdec -/* 8033AEEC 48 00 00 34 */ b lbl_8033AF20 -lbl_8033AEF0: -/* 8033AEF0 3C 80 80 00 */ lis r4, 0x8000 -/* 8033AEF4 6C E3 80 00 */ xoris r3, r7, 0x8000 -/* 8033AEF8 7C 04 40 10 */ subfc r0, r4, r8 -/* 8033AEFC 7C 63 31 10 */ subfe r3, r3, r6 -/* 8033AF00 7C 66 31 10 */ subfe r3, r6, r6 -/* 8033AF04 7C 63 00 D1 */ neg. r3, r3 -/* 8033AF08 41 82 00 10 */ beq lbl_8033AF18 -/* 8033AF0C 7D 03 43 78 */ mr r3, r8 -/* 8033AF10 4B FF ED E1 */ bl PPCMtdec -/* 8033AF14 48 00 00 0C */ b lbl_8033AF20 -lbl_8033AF18: -/* 8033AF18 38 64 FF FF */ addi r3, r4, -1 -/* 8033AF1C 4B FF ED D5 */ bl PPCMtdec -lbl_8033AF20: -/* 8033AF20 48 00 5D A5 */ bl OSDisableScheduler -/* 8033AF24 38 61 00 18 */ addi r3, r1, 0x18 -/* 8033AF28 48 00 10 D9 */ bl OSClearContext -/* 8033AF2C 38 61 00 18 */ addi r3, r1, 0x18 -/* 8033AF30 48 00 0F 09 */ bl OSSetCurrentContext -/* 8033AF34 39 9E 00 00 */ addi r12, r30, 0 -/* 8033AF38 7D 88 03 A6 */ mtlr r12 -/* 8033AF3C 38 7F 00 00 */ addi r3, r31, 0 -/* 8033AF40 38 9D 00 00 */ addi r4, r29, 0 -/* 8033AF44 4E 80 00 21 */ blrl -/* 8033AF48 38 61 00 18 */ addi r3, r1, 0x18 -/* 8033AF4C 48 00 10 B5 */ bl OSClearContext -/* 8033AF50 7F A3 EB 78 */ mr r3, r29 -/* 8033AF54 48 00 0E E5 */ bl OSSetCurrentContext -/* 8033AF58 48 00 5D AD */ bl OSEnableScheduler -/* 8033AF5C 48 00 62 C5 */ bl __OSReschedule -/* 8033AF60 7F A3 EB 78 */ mr r3, r29 -/* 8033AF64 48 00 0F BD */ bl OSLoadContext -/* 8033AF68 80 01 02 F4 */ lwz r0, 0x2f4(r1) -/* 8033AF6C 83 E1 02 EC */ lwz r31, 0x2ec(r1) -/* 8033AF70 83 C1 02 E8 */ lwz r30, 0x2e8(r1) -/* 8033AF74 83 A1 02 E4 */ lwz r29, 0x2e4(r1) -/* 8033AF78 83 81 02 E0 */ lwz r28, 0x2e0(r1) -/* 8033AF7C 38 21 02 F0 */ addi r1, r1, 0x2f0 -/* 8033AF80 7C 08 03 A6 */ mtlr r0 -/* 8033AF84 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSAlarm/InsertAlarm.s b/asm/dolphin/os/OSAlarm/InsertAlarm.s deleted file mode 100644 index 1546e5a0c9f..00000000000 --- a/asm/dolphin/os/OSAlarm/InsertAlarm.s +++ /dev/null @@ -1,160 +0,0 @@ -lbl_8033A908: -/* 8033A908 7C 08 02 A6 */ mflr r0 -/* 8033A90C 90 01 00 04 */ stw r0, 4(r1) -/* 8033A910 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 8033A914 BF 21 00 24 */ stmw r25, 0x24(r1) -/* 8033A918 3B 80 00 00 */ li r28, 0 -/* 8033A91C 7C 7D 1B 78 */ mr r29, r3 -/* 8033A920 6F 84 80 00 */ xoris r4, r28, 0x8000 -/* 8033A924 3B 25 00 00 */ addi r25, r5, 0 -/* 8033A928 3B C6 00 00 */ addi r30, r6, 0 -/* 8033A92C 3B E7 00 00 */ addi r31, r7, 0 -/* 8033A930 80 03 00 18 */ lwz r0, 0x18(r3) -/* 8033A934 81 03 00 1C */ lwz r8, 0x1c(r3) -/* 8033A938 6C 03 80 00 */ xoris r3, r0, 0x8000 -/* 8033A93C 7C 08 E0 10 */ subfc r0, r8, r28 -/* 8033A940 7C 63 21 10 */ subfe r3, r3, r4 -/* 8033A944 7C 64 21 10 */ subfe r3, r4, r4 -/* 8033A948 7C 63 00 D1 */ neg. r3, r3 -/* 8033A94C 41 82 00 7C */ beq lbl_8033A9C8 -/* 8033A950 48 00 7D CD */ bl __OSGetSystemTime -/* 8033A954 80 FD 00 20 */ lwz r7, 0x20(r29) -/* 8033A958 6C 65 80 00 */ xoris r5, r3, 0x8000 -/* 8033A95C 81 1D 00 24 */ lwz r8, 0x24(r29) -/* 8033A960 6C E6 80 00 */ xoris r6, r7, 0x8000 -/* 8033A964 7C 04 40 10 */ subfc r0, r4, r8 -/* 8033A968 7C A5 31 10 */ subfe r5, r5, r6 -/* 8033A96C 7C A6 31 10 */ subfe r5, r6, r6 -/* 8033A970 7C A5 00 D1 */ neg. r5, r5 -/* 8033A974 3B C8 00 00 */ addi r30, r8, 0 -/* 8033A978 3B 27 00 00 */ addi r25, r7, 0 -/* 8033A97C 41 82 00 4C */ beq lbl_8033A9C8 -/* 8033A980 83 7D 00 18 */ lwz r27, 0x18(r29) -/* 8033A984 7C 88 20 10 */ subfc r4, r8, r4 -/* 8033A988 83 5D 00 1C */ lwz r26, 0x1c(r29) -/* 8033A98C 7C 67 19 10 */ subfe r3, r7, r3 -/* 8033A990 38 BB 00 00 */ addi r5, r27, 0 -/* 8033A994 38 DA 00 00 */ addi r6, r26, 0 -/* 8033A998 48 02 79 8D */ bl __div2i -/* 8033A99C 38 00 00 01 */ li r0, 1 -/* 8033A9A0 7C A4 00 14 */ addc r5, r4, r0 -/* 8033A9A4 7C 9B 29 D6 */ mullw r4, r27, r5 -/* 8033A9A8 7C 1A 28 16 */ mulhwu r0, r26, r5 -/* 8033A9AC 7C 63 E1 14 */ adde r3, r3, r28 -/* 8033A9B0 7C 84 02 14 */ add r4, r4, r0 -/* 8033A9B4 7C 1A 19 D6 */ mullw r0, r26, r3 -/* 8033A9B8 7C 7A 29 D6 */ mullw r3, r26, r5 -/* 8033A9BC 7C 04 02 14 */ add r0, r4, r0 -/* 8033A9C0 7F DE 18 14 */ addc r30, r30, r3 -/* 8033A9C4 7F 39 01 14 */ adde r25, r25, r0 -lbl_8033A9C8: -/* 8033A9C8 93 FD 00 00 */ stw r31, 0(r29) -/* 8033A9CC 6F 24 80 00 */ xoris r4, r25, 0x8000 -/* 8033A9D0 93 DD 00 0C */ stw r30, 0xc(r29) -/* 8033A9D4 93 3D 00 08 */ stw r25, 8(r29) -/* 8033A9D8 80 CD 90 B8 */ lwz r6, AlarmQueue(r13) -/* 8033A9DC 48 00 00 C4 */ b lbl_8033AAA0 -lbl_8033A9E0: -/* 8033A9E0 80 06 00 08 */ lwz r0, 8(r6) -/* 8033A9E4 80 A6 00 0C */ lwz r5, 0xc(r6) -/* 8033A9E8 6C 03 80 00 */ xoris r3, r0, 0x8000 -/* 8033A9EC 7C 05 F0 10 */ subfc r0, r5, r30 -/* 8033A9F0 7C 63 21 10 */ subfe r3, r3, r4 -/* 8033A9F4 7C 64 21 10 */ subfe r3, r4, r4 -/* 8033A9F8 7C 63 00 D1 */ neg. r3, r3 -/* 8033A9FC 41 82 00 A0 */ beq lbl_8033AA9C -/* 8033AA00 80 06 00 10 */ lwz r0, 0x10(r6) -/* 8033AA04 90 1D 00 10 */ stw r0, 0x10(r29) -/* 8033AA08 93 A6 00 10 */ stw r29, 0x10(r6) -/* 8033AA0C 90 DD 00 14 */ stw r6, 0x14(r29) -/* 8033AA10 80 7D 00 10 */ lwz r3, 0x10(r29) -/* 8033AA14 28 03 00 00 */ cmplwi r3, 0 -/* 8033AA18 41 82 00 0C */ beq lbl_8033AA24 -/* 8033AA1C 93 A3 00 14 */ stw r29, 0x14(r3) -/* 8033AA20 48 00 01 24 */ b lbl_8033AB44 -lbl_8033AA24: -/* 8033AA24 93 AD 90 B8 */ stw r29, AlarmQueue(r13) -/* 8033AA28 48 00 7C F5 */ bl __OSGetSystemTime -/* 8033AA2C 80 DD 00 0C */ lwz r6, 0xc(r29) -/* 8033AA30 38 E0 00 00 */ li r7, 0 -/* 8033AA34 80 1D 00 08 */ lwz r0, 8(r29) -/* 8033AA38 6C E5 80 00 */ xoris r5, r7, 0x8000 -/* 8033AA3C 7D 04 30 10 */ subfc r8, r4, r6 -/* 8033AA40 7C 03 01 10 */ subfe r0, r3, r0 -/* 8033AA44 6C 06 80 00 */ xoris r6, r0, 0x8000 -/* 8033AA48 7C 07 40 10 */ subfc r0, r7, r8 -/* 8033AA4C 7C A5 31 10 */ subfe r5, r5, r6 -/* 8033AA50 7C A6 31 10 */ subfe r5, r6, r6 -/* 8033AA54 7C A5 00 D1 */ neg. r5, r5 -/* 8033AA58 41 82 00 10 */ beq lbl_8033AA68 -/* 8033AA5C 38 60 00 00 */ li r3, 0 -/* 8033AA60 4B FF F2 91 */ bl PPCMtdec -/* 8033AA64 48 00 00 E0 */ b lbl_8033AB44 -lbl_8033AA68: -/* 8033AA68 3C 80 80 00 */ lis r4, 0x8000 -/* 8033AA6C 6C E3 80 00 */ xoris r3, r7, 0x8000 -/* 8033AA70 7C 04 40 10 */ subfc r0, r4, r8 -/* 8033AA74 7C 63 31 10 */ subfe r3, r3, r6 -/* 8033AA78 7C 66 31 10 */ subfe r3, r6, r6 -/* 8033AA7C 7C 63 00 D1 */ neg. r3, r3 -/* 8033AA80 41 82 00 10 */ beq lbl_8033AA90 -/* 8033AA84 7D 03 43 78 */ mr r3, r8 -/* 8033AA88 4B FF F2 69 */ bl PPCMtdec -/* 8033AA8C 48 00 00 B8 */ b lbl_8033AB44 -lbl_8033AA90: -/* 8033AA90 38 64 FF FF */ addi r3, r4, -1 -/* 8033AA94 4B FF F2 5D */ bl PPCMtdec -/* 8033AA98 48 00 00 AC */ b lbl_8033AB44 -lbl_8033AA9C: -/* 8033AA9C 80 C6 00 14 */ lwz r6, 0x14(r6) -lbl_8033AAA0: -/* 8033AAA0 28 06 00 00 */ cmplwi r6, 0 -/* 8033AAA4 40 82 FF 3C */ bne lbl_8033A9E0 -/* 8033AAA8 3B C0 00 00 */ li r30, 0 -/* 8033AAAC 93 DD 00 14 */ stw r30, 0x14(r29) -/* 8033AAB0 38 6D 90 B8 */ la r3, AlarmQueue(r13) /* 80451638-_SDA_BASE_ */ -/* 8033AAB4 80 83 00 04 */ lwz r4, 4(r3) -/* 8033AAB8 97 A3 00 04 */ stwu r29, 4(r3) -/* 8033AABC 28 04 00 00 */ cmplwi r4, 0 -/* 8033AAC0 90 9D 00 10 */ stw r4, 0x10(r29) -/* 8033AAC4 41 82 00 0C */ beq lbl_8033AAD0 -/* 8033AAC8 93 A4 00 14 */ stw r29, 0x14(r4) -/* 8033AACC 48 00 00 78 */ b lbl_8033AB44 -lbl_8033AAD0: -/* 8033AAD0 93 A3 00 00 */ stw r29, 0(r3) -/* 8033AAD4 93 AD 90 B8 */ stw r29, AlarmQueue(r13) -/* 8033AAD8 48 00 7C 45 */ bl __OSGetSystemTime -/* 8033AADC 80 DD 00 0C */ lwz r6, 0xc(r29) -/* 8033AAE0 6F C5 80 00 */ xoris r5, r30, 0x8000 -/* 8033AAE4 80 1D 00 08 */ lwz r0, 8(r29) -/* 8033AAE8 7C E4 30 10 */ subfc r7, r4, r6 -/* 8033AAEC 7C 03 01 10 */ subfe r0, r3, r0 -/* 8033AAF0 6C 06 80 00 */ xoris r6, r0, 0x8000 -/* 8033AAF4 7C 1E 38 10 */ subfc r0, r30, r7 -/* 8033AAF8 7C A5 31 10 */ subfe r5, r5, r6 -/* 8033AAFC 7C A6 31 10 */ subfe r5, r6, r6 -/* 8033AB00 7C A5 00 D1 */ neg. r5, r5 -/* 8033AB04 41 82 00 10 */ beq lbl_8033AB14 -/* 8033AB08 38 60 00 00 */ li r3, 0 -/* 8033AB0C 4B FF F1 E5 */ bl PPCMtdec -/* 8033AB10 48 00 00 34 */ b lbl_8033AB44 -lbl_8033AB14: -/* 8033AB14 3C 80 80 00 */ lis r4, 0x8000 -/* 8033AB18 6F C3 80 00 */ xoris r3, r30, 0x8000 -/* 8033AB1C 7C 04 38 10 */ subfc r0, r4, r7 -/* 8033AB20 7C 63 31 10 */ subfe r3, r3, r6 -/* 8033AB24 7C 66 31 10 */ subfe r3, r6, r6 -/* 8033AB28 7C 63 00 D1 */ neg. r3, r3 -/* 8033AB2C 41 82 00 10 */ beq lbl_8033AB3C -/* 8033AB30 7C E3 3B 78 */ mr r3, r7 -/* 8033AB34 4B FF F1 BD */ bl PPCMtdec -/* 8033AB38 48 00 00 0C */ b lbl_8033AB44 -lbl_8033AB3C: -/* 8033AB3C 38 64 FF FF */ addi r3, r4, -1 -/* 8033AB40 4B FF F1 B1 */ bl PPCMtdec -lbl_8033AB44: -/* 8033AB44 BB 21 00 24 */ lmw r25, 0x24(r1) -/* 8033AB48 80 01 00 44 */ lwz r0, 0x44(r1) -/* 8033AB4C 38 21 00 40 */ addi r1, r1, 0x40 -/* 8033AB50 7C 08 03 A6 */ mtlr r0 -/* 8033AB54 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSAlarm/OSCancelAlarm.s b/asm/dolphin/os/OSAlarm/OSCancelAlarm.s deleted file mode 100644 index 74cc361a6db..00000000000 --- a/asm/dolphin/os/OSAlarm/OSCancelAlarm.s +++ /dev/null @@ -1,80 +0,0 @@ -lbl_8033AC3C: -/* 8033AC3C 7C 08 02 A6 */ mflr r0 -/* 8033AC40 90 01 00 04 */ stw r0, 4(r1) -/* 8033AC44 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8033AC48 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8033AC4C 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8033AC50 7C 7E 1B 78 */ mr r30, r3 -/* 8033AC54 93 A1 00 14 */ stw r29, 0x14(r1) -/* 8033AC58 48 00 2A 9D */ bl OSDisableInterrupts -/* 8033AC5C 80 1E 00 00 */ lwz r0, 0(r30) -/* 8033AC60 3B E3 00 00 */ addi r31, r3, 0 -/* 8033AC64 28 00 00 00 */ cmplwi r0, 0 -/* 8033AC68 40 82 00 10 */ bne lbl_8033AC78 -/* 8033AC6C 7F E3 FB 78 */ mr r3, r31 -/* 8033AC70 48 00 2A AD */ bl OSRestoreInterrupts -/* 8033AC74 48 00 00 C8 */ b lbl_8033AD3C -lbl_8033AC78: -/* 8033AC78 83 BE 00 14 */ lwz r29, 0x14(r30) -/* 8033AC7C 28 1D 00 00 */ cmplwi r29, 0 -/* 8033AC80 40 82 00 14 */ bne lbl_8033AC94 -/* 8033AC84 80 1E 00 10 */ lwz r0, 0x10(r30) -/* 8033AC88 38 6D 90 B8 */ la r3, AlarmQueue(r13) /* 80451638-_SDA_BASE_ */ -/* 8033AC8C 90 03 00 04 */ stw r0, 4(r3) -/* 8033AC90 48 00 00 0C */ b lbl_8033AC9C -lbl_8033AC94: -/* 8033AC94 80 1E 00 10 */ lwz r0, 0x10(r30) -/* 8033AC98 90 1D 00 10 */ stw r0, 0x10(r29) -lbl_8033AC9C: -/* 8033AC9C 80 7E 00 10 */ lwz r3, 0x10(r30) -/* 8033ACA0 28 03 00 00 */ cmplwi r3, 0 -/* 8033ACA4 41 82 00 0C */ beq lbl_8033ACB0 -/* 8033ACA8 93 A3 00 14 */ stw r29, 0x14(r3) -/* 8033ACAC 48 00 00 80 */ b lbl_8033AD2C -lbl_8033ACB0: -/* 8033ACB0 28 1D 00 00 */ cmplwi r29, 0 -/* 8033ACB4 93 AD 90 B8 */ stw r29, AlarmQueue(r13) -/* 8033ACB8 41 82 00 74 */ beq lbl_8033AD2C -/* 8033ACBC 48 00 7A 61 */ bl __OSGetSystemTime -/* 8033ACC0 80 DD 00 0C */ lwz r6, 0xc(r29) -/* 8033ACC4 38 E0 00 00 */ li r7, 0 -/* 8033ACC8 80 1D 00 08 */ lwz r0, 8(r29) -/* 8033ACCC 6C E5 80 00 */ xoris r5, r7, 0x8000 -/* 8033ACD0 7D 04 30 10 */ subfc r8, r4, r6 -/* 8033ACD4 7C 03 01 10 */ subfe r0, r3, r0 -/* 8033ACD8 6C 06 80 00 */ xoris r6, r0, 0x8000 -/* 8033ACDC 7C 07 40 10 */ subfc r0, r7, r8 -/* 8033ACE0 7C A5 31 10 */ subfe r5, r5, r6 -/* 8033ACE4 7C A6 31 10 */ subfe r5, r6, r6 -/* 8033ACE8 7C A5 00 D1 */ neg. r5, r5 -/* 8033ACEC 41 82 00 10 */ beq lbl_8033ACFC -/* 8033ACF0 38 60 00 00 */ li r3, 0 -/* 8033ACF4 4B FF EF FD */ bl PPCMtdec -/* 8033ACF8 48 00 00 34 */ b lbl_8033AD2C -lbl_8033ACFC: -/* 8033ACFC 3C 80 80 00 */ lis r4, 0x8000 -/* 8033AD00 6C E3 80 00 */ xoris r3, r7, 0x8000 -/* 8033AD04 7C 04 40 10 */ subfc r0, r4, r8 -/* 8033AD08 7C 63 31 10 */ subfe r3, r3, r6 -/* 8033AD0C 7C 66 31 10 */ subfe r3, r6, r6 -/* 8033AD10 7C 63 00 D1 */ neg. r3, r3 -/* 8033AD14 41 82 00 10 */ beq lbl_8033AD24 -/* 8033AD18 7D 03 43 78 */ mr r3, r8 -/* 8033AD1C 4B FF EF D5 */ bl PPCMtdec -/* 8033AD20 48 00 00 0C */ b lbl_8033AD2C -lbl_8033AD24: -/* 8033AD24 38 64 FF FF */ addi r3, r4, -1 -/* 8033AD28 4B FF EF C9 */ bl PPCMtdec -lbl_8033AD2C: -/* 8033AD2C 38 00 00 00 */ li r0, 0 -/* 8033AD30 90 1E 00 00 */ stw r0, 0(r30) -/* 8033AD34 7F E3 FB 78 */ mr r3, r31 -/* 8033AD38 48 00 29 E5 */ bl OSRestoreInterrupts -lbl_8033AD3C: -/* 8033AD3C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8033AD40 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8033AD44 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8033AD48 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 8033AD4C 38 21 00 20 */ addi r1, r1, 0x20 -/* 8033AD50 7C 08 03 A6 */ mtlr r0 -/* 8033AD54 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSAlarm/OSInitAlarm.s b/asm/dolphin/os/OSAlarm/OSInitAlarm.s deleted file mode 100644 index 14716538cb3..00000000000 --- a/asm/dolphin/os/OSAlarm/OSInitAlarm.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_8033A8A0: -/* 8033A8A0 7C 08 02 A6 */ mflr r0 -/* 8033A8A4 38 60 00 08 */ li r3, 8 -/* 8033A8A8 90 01 00 04 */ stw r0, 4(r1) -/* 8033A8AC 94 21 FF F8 */ stwu r1, -8(r1) -/* 8033A8B0 4B FF FE 55 */ bl __OSGetExceptionHandler -/* 8033A8B4 3C 80 80 34 */ lis r4, DecrementerExceptionHandler@ha /* 0x8033AF88@ha */ -/* 8033A8B8 38 84 AF 88 */ addi r4, r4, DecrementerExceptionHandler@l /* 0x8033AF88@l */ -/* 8033A8BC 7C 03 20 40 */ cmplw r3, r4 -/* 8033A8C0 41 82 00 28 */ beq lbl_8033A8E8 -/* 8033A8C4 38 00 00 00 */ li r0, 0 -/* 8033A8C8 38 6D 90 B8 */ la r3, AlarmQueue(r13) /* 80451638-_SDA_BASE_ */ -/* 8033A8CC 90 03 00 04 */ stw r0, 4(r3) -/* 8033A8D0 38 60 00 08 */ li r3, 8 -/* 8033A8D4 90 0D 90 B8 */ stw r0, AlarmQueue(r13) -/* 8033A8D8 4B FF FE 11 */ bl __OSSetExceptionHandler -/* 8033A8DC 3C 60 80 3D */ lis r3, ResetFunctionInfo@ha /* 0x803CF480@ha */ -/* 8033A8E0 38 63 F4 80 */ addi r3, r3, ResetFunctionInfo@l /* 0x803CF480@l */ -/* 8033A8E4 48 00 4D 7D */ bl OSRegisterResetFunction -lbl_8033A8E8: -/* 8033A8E8 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8033A8EC 38 21 00 08 */ addi r1, r1, 8 -/* 8033A8F0 7C 08 03 A6 */ mtlr r0 -/* 8033A8F4 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSAlarm/OSSetAlarm.s b/asm/dolphin/os/OSAlarm/OSSetAlarm.s deleted file mode 100644 index ba393ded212..00000000000 --- a/asm/dolphin/os/OSAlarm/OSSetAlarm.s +++ /dev/null @@ -1,27 +0,0 @@ -lbl_8033AB58: -/* 8033AB58 7C 08 02 A6 */ mflr r0 -/* 8033AB5C 90 01 00 04 */ stw r0, 4(r1) -/* 8033AB60 94 21 FF C8 */ stwu r1, -0x38(r1) -/* 8033AB64 BF 61 00 24 */ stmw r27, 0x24(r1) -/* 8033AB68 3B 63 00 00 */ addi r27, r3, 0 -/* 8033AB6C 3B A5 00 00 */ addi r29, r5, 0 -/* 8033AB70 3B 86 00 00 */ addi r28, r6, 0 -/* 8033AB74 3B C7 00 00 */ addi r30, r7, 0 -/* 8033AB78 48 00 2B 7D */ bl OSDisableInterrupts -/* 8033AB7C 38 00 00 00 */ li r0, 0 -/* 8033AB80 90 1B 00 1C */ stw r0, 0x1c(r27) -/* 8033AB84 7C 7F 1B 78 */ mr r31, r3 -/* 8033AB88 90 1B 00 18 */ stw r0, 0x18(r27) -/* 8033AB8C 48 00 7B 91 */ bl __OSGetSystemTime -/* 8033AB90 7C DC 20 14 */ addc r6, r28, r4 -/* 8033AB94 7C BD 19 14 */ adde r5, r29, r3 -/* 8033AB98 38 7B 00 00 */ addi r3, r27, 0 -/* 8033AB9C 38 FE 00 00 */ addi r7, r30, 0 -/* 8033ABA0 4B FF FD 69 */ bl InsertAlarm -/* 8033ABA4 7F E3 FB 78 */ mr r3, r31 -/* 8033ABA8 48 00 2B 75 */ bl OSRestoreInterrupts -/* 8033ABAC BB 61 00 24 */ lmw r27, 0x24(r1) -/* 8033ABB0 80 01 00 3C */ lwz r0, 0x3c(r1) -/* 8033ABB4 38 21 00 38 */ addi r1, r1, 0x38 -/* 8033ABB8 7C 08 03 A6 */ mtlr r0 -/* 8033ABBC 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSAlarm/OSSetPeriodicAlarm.s b/asm/dolphin/os/OSAlarm/OSSetPeriodicAlarm.s deleted file mode 100644 index 8aca4481aa7..00000000000 --- a/asm/dolphin/os/OSAlarm/OSSetPeriodicAlarm.s +++ /dev/null @@ -1,32 +0,0 @@ -lbl_8033ABC0: -/* 8033ABC0 7C 08 02 A6 */ mflr r0 -/* 8033ABC4 90 01 00 04 */ stw r0, 4(r1) -/* 8033ABC8 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 8033ABCC BF 41 00 28 */ stmw r26, 0x28(r1) -/* 8033ABD0 3B 43 00 00 */ addi r26, r3, 0 -/* 8033ABD4 3B 85 00 00 */ addi r28, r5, 0 -/* 8033ABD8 3B 66 00 00 */ addi r27, r6, 0 -/* 8033ABDC 3B A7 00 00 */ addi r29, r7, 0 -/* 8033ABE0 3B E8 00 00 */ addi r31, r8, 0 -/* 8033ABE4 3B C9 00 00 */ addi r30, r9, 0 -/* 8033ABE8 48 00 2B 0D */ bl OSDisableInterrupts -/* 8033ABEC 93 FA 00 1C */ stw r31, 0x1c(r26) -/* 8033ABF0 7C 7F 1B 78 */ mr r31, r3 -/* 8033ABF4 38 9B 00 00 */ addi r4, r27, 0 -/* 8033ABF8 93 BA 00 18 */ stw r29, 0x18(r26) -/* 8033ABFC 38 7C 00 00 */ addi r3, r28, 0 -/* 8033AC00 48 00 7B 81 */ bl __OSTimeToSystemTime -/* 8033AC04 90 9A 00 24 */ stw r4, 0x24(r26) -/* 8033AC08 38 FE 00 00 */ addi r7, r30, 0 -/* 8033AC0C 38 C0 00 00 */ li r6, 0 -/* 8033AC10 90 7A 00 20 */ stw r3, 0x20(r26) -/* 8033AC14 38 7A 00 00 */ addi r3, r26, 0 -/* 8033AC18 38 A0 00 00 */ li r5, 0 -/* 8033AC1C 4B FF FC ED */ bl InsertAlarm -/* 8033AC20 7F E3 FB 78 */ mr r3, r31 -/* 8033AC24 48 00 2A F9 */ bl OSRestoreInterrupts -/* 8033AC28 BB 41 00 28 */ lmw r26, 0x28(r1) -/* 8033AC2C 80 01 00 44 */ lwz r0, 0x44(r1) -/* 8033AC30 38 21 00 40 */ addi r1, r1, 0x40 -/* 8033AC34 7C 08 03 A6 */ mtlr r0 -/* 8033AC38 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSAudioSystem/__OSInitAudioSystem.s b/asm/dolphin/os/OSAudioSystem/__OSInitAudioSystem.s deleted file mode 100644 index ce1e68fb1e2..00000000000 --- a/asm/dolphin/os/OSAudioSystem/__OSInitAudioSystem.s +++ /dev/null @@ -1,123 +0,0 @@ -lbl_8033B2D8: -/* 8033B2D8 7C 08 02 A6 */ mflr r0 -/* 8033B2DC 90 01 00 04 */ stw r0, 4(r1) -/* 8033B2E0 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8033B2E4 BF 21 00 14 */ stmw r25, 0x14(r1) -/* 8033B2E8 4B FF FF A5 */ bl OSGetArenaHi -/* 8033B2EC 3C 80 81 00 */ lis r4, 0x8100 -/* 8033B2F0 38 A0 00 80 */ li r5, 0x80 -/* 8033B2F4 38 63 FF 80 */ addi r3, r3, -128 -/* 8033B2F8 4B CC 82 49 */ bl memcpy -/* 8033B2FC 3C 60 80 3D */ lis r3, DSPInitCode@ha /* 0x803CF490@ha */ -/* 8033B300 38 83 F4 90 */ addi r4, r3, DSPInitCode@l /* 0x803CF490@l */ -/* 8033B304 3C 60 81 00 */ lis r3, 0x8100 -/* 8033B308 38 A0 00 80 */ li r5, 0x80 -/* 8033B30C 4B CC 82 35 */ bl memcpy -/* 8033B310 3C 60 81 00 */ lis r3, 0x8100 -/* 8033B314 38 80 00 80 */ li r4, 0x80 -/* 8033B318 48 00 02 95 */ bl DCFlushRange -/* 8033B31C 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC005000@ha */ -/* 8033B320 38 63 50 00 */ addi r3, r3, 0x5000 /* 0xCC005000@l */ -/* 8033B324 38 00 00 43 */ li r0, 0x43 -/* 8033B328 B0 03 00 12 */ sth r0, 0x12(r3) -/* 8033B32C 3B E3 00 0A */ addi r31, r3, 0xa -/* 8033B330 38 00 08 AC */ li r0, 0x8ac -/* 8033B334 B0 03 00 0A */ sth r0, 0xa(r3) -/* 8033B338 A0 03 00 0A */ lhz r0, 0xa(r3) -/* 8033B33C 60 00 00 01 */ ori r0, r0, 1 -/* 8033B340 B0 03 00 0A */ sth r0, 0xa(r3) -lbl_8033B344: -/* 8033B344 A0 1F 00 00 */ lhz r0, 0(r31) -/* 8033B348 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 8033B34C 40 82 FF F8 */ bne lbl_8033B344 -/* 8033B350 38 00 00 00 */ li r0, 0 -/* 8033B354 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC005000@ha */ -/* 8033B358 B0 04 50 00 */ sth r0, 0x5000(r4) /* 0xCC005000@l */ -lbl_8033B35C: -/* 8033B35C 3B C4 50 00 */ addi r30, r4, 0x5000 -/* 8033B360 A4 7E 00 04 */ lhzu r3, 4(r30) -/* 8033B364 3B A4 50 00 */ addi r29, r4, 0x5000 -/* 8033B368 A4 1D 00 06 */ lhzu r0, 6(r29) -/* 8033B36C 50 60 80 1E */ rlwimi r0, r3, 0x10, 0, 0xf -/* 8033B370 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0 -/* 8033B374 40 82 FF E8 */ bne lbl_8033B35C -/* 8033B378 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC005000@ha */ -/* 8033B37C 3C 00 01 00 */ lis r0, 0x100 -/* 8033B380 3B 63 50 00 */ addi r27, r3, 0x5000 /* 0xCC005000@l */ -/* 8033B384 94 1B 00 20 */ stwu r0, 0x20(r27) -/* 8033B388 38 00 00 00 */ li r0, 0 -/* 8033B38C 3B 43 50 00 */ addi r26, r3, 0x5000 -/* 8033B390 94 1A 00 24 */ stwu r0, 0x24(r26) -/* 8033B394 38 00 00 20 */ li r0, 0x20 -/* 8033B398 3B 23 50 00 */ addi r25, r3, 0x5000 -/* 8033B39C 94 19 00 28 */ stwu r0, 0x28(r25) -/* 8033B3A0 A0 7F 00 00 */ lhz r3, 0(r31) -/* 8033B3A4 48 00 00 08 */ b lbl_8033B3AC -lbl_8033B3A8: -/* 8033B3A8 A0 7F 00 00 */ lhz r3, 0(r31) -lbl_8033B3AC: -/* 8033B3AC 54 60 06 B5 */ rlwinm. r0, r3, 0, 0x1a, 0x1a -/* 8033B3B0 41 82 FF F8 */ beq lbl_8033B3A8 -/* 8033B3B4 B0 7F 00 00 */ sth r3, 0(r31) -/* 8033B3B8 48 00 73 5D */ bl OSGetTick -/* 8033B3BC 7C 7C 1B 78 */ mr r28, r3 -lbl_8033B3C0: -/* 8033B3C0 48 00 73 55 */ bl OSGetTick -/* 8033B3C4 7C 1C 18 50 */ subf r0, r28, r3 -/* 8033B3C8 2C 00 08 92 */ cmpwi r0, 0x892 -/* 8033B3CC 41 80 FF F4 */ blt lbl_8033B3C0 -/* 8033B3D0 3C 00 01 00 */ lis r0, 0x100 -/* 8033B3D4 90 1B 00 00 */ stw r0, 0(r27) -/* 8033B3D8 38 60 00 00 */ li r3, 0 -/* 8033B3DC 38 00 00 20 */ li r0, 0x20 -/* 8033B3E0 90 7A 00 00 */ stw r3, 0(r26) -/* 8033B3E4 90 19 00 00 */ stw r0, 0(r25) -/* 8033B3E8 A0 7F 00 00 */ lhz r3, 0(r31) -/* 8033B3EC 48 00 00 08 */ b lbl_8033B3F4 -lbl_8033B3F0: -/* 8033B3F0 A0 7F 00 00 */ lhz r3, 0(r31) -lbl_8033B3F4: -/* 8033B3F4 54 60 06 B5 */ rlwinm. r0, r3, 0, 0x1a, 0x1a -/* 8033B3F8 41 82 FF F8 */ beq lbl_8033B3F0 -/* 8033B3FC B0 7F 00 00 */ sth r3, 0(r31) -/* 8033B400 A0 1F 00 00 */ lhz r0, 0(r31) -/* 8033B404 54 00 05 66 */ rlwinm r0, r0, 0, 0x15, 0x13 -/* 8033B408 B0 1F 00 00 */ sth r0, 0(r31) -lbl_8033B40C: -/* 8033B40C A0 1F 00 00 */ lhz r0, 0(r31) -/* 8033B410 54 00 05 6B */ rlwinm. r0, r0, 0, 0x15, 0x15 -/* 8033B414 40 82 FF F8 */ bne lbl_8033B40C -/* 8033B418 A0 1F 00 00 */ lhz r0, 0(r31) -/* 8033B41C 54 00 07 B8 */ rlwinm r0, r0, 0, 0x1e, 0x1c -/* 8033B420 B0 1F 00 00 */ sth r0, 0(r31) -/* 8033B424 A0 1E 00 00 */ lhz r0, 0(r30) -/* 8033B428 48 00 00 08 */ b lbl_8033B430 -lbl_8033B42C: -/* 8033B42C A0 1E 00 00 */ lhz r0, 0(r30) -lbl_8033B430: -/* 8033B430 54 05 04 3E */ clrlwi r5, r0, 0x10 -/* 8033B434 54 00 04 21 */ rlwinm. r0, r0, 0, 0x10, 0x10 -/* 8033B438 41 82 FF F4 */ beq lbl_8033B42C -/* 8033B43C A0 1F 00 00 */ lhz r0, 0(r31) -/* 8033B440 A0 9D 00 00 */ lhz r4, 0(r29) -/* 8033B444 60 00 00 04 */ ori r0, r0, 4 -/* 8033B448 B0 1F 00 00 */ sth r0, 0(r31) -/* 8033B44C 38 00 08 AC */ li r0, 0x8ac -/* 8033B450 B0 1F 00 00 */ sth r0, 0(r31) -/* 8033B454 A0 1F 00 00 */ lhz r0, 0(r31) -/* 8033B458 60 00 00 01 */ ori r0, r0, 1 -/* 8033B45C B0 1F 00 00 */ sth r0, 0(r31) -lbl_8033B460: -/* 8033B460 A0 1F 00 00 */ lhz r0, 0(r31) -/* 8033B464 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 8033B468 40 82 FF F8 */ bne lbl_8033B460 -/* 8033B46C 4B FF FE 21 */ bl OSGetArenaHi -/* 8033B470 38 83 FF 80 */ addi r4, r3, -128 -/* 8033B474 3C 60 81 00 */ lis r3, 0x8100 -/* 8033B478 38 A0 00 80 */ li r5, 0x80 -/* 8033B47C 4B CC 80 C5 */ bl memcpy -/* 8033B480 BB 21 00 14 */ lmw r25, 0x14(r1) -/* 8033B484 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8033B488 38 21 00 30 */ addi r1, r1, 0x30 -/* 8033B48C 7C 08 03 A6 */ mtlr r0 -/* 8033B490 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSAudioSystem/__OSStopAudioSystem.s b/asm/dolphin/os/OSAudioSystem/__OSStopAudioSystem.s deleted file mode 100644 index ef3679a194a..00000000000 --- a/asm/dolphin/os/OSAudioSystem/__OSStopAudioSystem.s +++ /dev/null @@ -1,63 +0,0 @@ -lbl_8033B494: -/* 8033B494 7C 08 02 A6 */ mflr r0 -/* 8033B498 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC005000@ha */ -/* 8033B49C 90 01 00 04 */ stw r0, 4(r1) -/* 8033B4A0 38 00 08 04 */ li r0, 0x804 -/* 8033B4A4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8033B4A8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8033B4AC 3B E3 50 00 */ addi r31, r3, 0x5000 /* 0xCC005000@l */ -/* 8033B4B0 38 63 50 00 */ addi r3, r3, 0x5000 -/* 8033B4B4 93 C1 00 08 */ stw r30, 8(r1) -/* 8033B4B8 B0 1F 00 0A */ sth r0, 0xa(r31) -/* 8033B4BC A0 03 00 36 */ lhz r0, 0x36(r3) -/* 8033B4C0 54 00 04 5E */ rlwinm r0, r0, 0, 0x11, 0xf -/* 8033B4C4 B0 03 00 36 */ sth r0, 0x36(r3) -/* 8033B4C8 A4 1F 00 0A */ lhzu r0, 0xa(r31) -/* 8033B4CC 48 00 00 08 */ b lbl_8033B4D4 -lbl_8033B4D0: -/* 8033B4D0 A0 1F 00 00 */ lhz r0, 0(r31) -lbl_8033B4D4: -/* 8033B4D4 54 00 05 6B */ rlwinm. r0, r0, 0, 0x15, 0x15 -/* 8033B4D8 40 82 FF F8 */ bne lbl_8033B4D0 -/* 8033B4DC A0 1F 00 00 */ lhz r0, 0(r31) -/* 8033B4E0 48 00 00 08 */ b lbl_8033B4E8 -lbl_8033B4E4: -/* 8033B4E4 A0 1F 00 00 */ lhz r0, 0(r31) -lbl_8033B4E8: -/* 8033B4E8 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 8033B4EC 40 82 FF F8 */ bne lbl_8033B4E4 -/* 8033B4F0 38 00 08 AC */ li r0, 0x8ac -/* 8033B4F4 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC005000@ha */ -/* 8033B4F8 B0 1F 00 00 */ sth r0, 0(r31) -/* 8033B4FC 38 00 00 00 */ li r0, 0 -/* 8033B500 B0 03 50 00 */ sth r0, 0x5000(r3) /* 0xCC005000@l */ -/* 8033B504 38 83 50 00 */ addi r4, r3, 0x5000 -lbl_8033B508: -/* 8033B508 A0 64 00 04 */ lhz r3, 4(r4) -/* 8033B50C A0 04 00 06 */ lhz r0, 6(r4) -/* 8033B510 50 60 80 1E */ rlwimi r0, r3, 0x10, 0, 0xf -/* 8033B514 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0 -/* 8033B518 40 82 FF F0 */ bne lbl_8033B508 -/* 8033B51C 48 00 71 F9 */ bl OSGetTick -/* 8033B520 7C 7E 1B 78 */ mr r30, r3 -lbl_8033B524: -/* 8033B524 48 00 71 F1 */ bl OSGetTick -/* 8033B528 7C 1E 18 50 */ subf r0, r30, r3 -/* 8033B52C 2C 00 00 2C */ cmpwi r0, 0x2c -/* 8033B530 41 80 FF F4 */ blt lbl_8033B524 -/* 8033B534 A0 1F 00 00 */ lhz r0, 0(r31) -/* 8033B538 60 00 00 01 */ ori r0, r0, 1 -/* 8033B53C B0 1F 00 00 */ sth r0, 0(r31) -/* 8033B540 A0 1F 00 00 */ lhz r0, 0(r31) -/* 8033B544 48 00 00 08 */ b lbl_8033B54C -lbl_8033B548: -/* 8033B548 A0 1F 00 00 */ lhz r0, 0(r31) -lbl_8033B54C: -/* 8033B54C 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 8033B550 40 82 FF F8 */ bne lbl_8033B548 -/* 8033B554 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8033B558 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8033B55C 83 C1 00 08 */ lwz r30, 8(r1) -/* 8033B560 38 21 00 10 */ addi r1, r1, 0x10 -/* 8033B564 7C 08 03 A6 */ mtlr r0 -/* 8033B568 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/LCStoreData.s b/asm/dolphin/os/OSCache/LCStoreData.s deleted file mode 100644 index 6c0dc359ee3..00000000000 --- a/asm/dolphin/os/OSCache/LCStoreData.s +++ /dev/null @@ -1,49 +0,0 @@ -lbl_8033B838: -/* 8033B838 7C 08 02 A6 */ mflr r0 -/* 8033B83C 90 01 00 04 */ stw r0, 4(r1) -/* 8033B840 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8033B844 93 E1 00 24 */ stw r31, 0x24(r1) -/* 8033B848 93 C1 00 20 */ stw r30, 0x20(r1) -/* 8033B84C 93 A1 00 1C */ stw r29, 0x1c(r1) -/* 8033B850 93 81 00 18 */ stw r28, 0x18(r1) -/* 8033B854 7C 7C 1B 78 */ mr r28, r3 -/* 8033B858 7C 9D 23 78 */ mr r29, r4 -/* 8033B85C 38 05 00 1F */ addi r0, r5, 0x1f -/* 8033B860 54 03 D9 7E */ srwi r3, r0, 5 -/* 8033B864 38 03 00 7F */ addi r0, r3, 0x7f -/* 8033B868 7C 7F 1B 78 */ mr r31, r3 -/* 8033B86C 54 1E C9 FE */ srwi r30, r0, 7 -/* 8033B870 48 00 00 04 */ b lbl_8033B874 -lbl_8033B874: -/* 8033B874 48 00 00 04 */ b lbl_8033B878 -lbl_8033B878: -/* 8033B878 48 00 00 40 */ b lbl_8033B8B8 -lbl_8033B87C: -/* 8033B87C 28 1F 00 80 */ cmplwi r31, 0x80 -/* 8033B880 40 80 00 1C */ bge lbl_8033B89C -/* 8033B884 7F 83 E3 78 */ mr r3, r28 -/* 8033B888 7F A4 EB 78 */ mr r4, r29 -/* 8033B88C 7F E5 FB 78 */ mr r5, r31 -/* 8033B890 4B FF FF 85 */ bl LCStoreBlocks -/* 8033B894 3B E0 00 00 */ li r31, 0 -/* 8033B898 48 00 00 20 */ b lbl_8033B8B8 -lbl_8033B89C: -/* 8033B89C 7F 83 E3 78 */ mr r3, r28 -/* 8033B8A0 7F A4 EB 78 */ mr r4, r29 -/* 8033B8A4 38 A0 00 00 */ li r5, 0 -/* 8033B8A8 4B FF FF 6D */ bl LCStoreBlocks -/* 8033B8AC 3B FF FF 80 */ addi r31, r31, -128 -/* 8033B8B0 3B 9C 10 00 */ addi r28, r28, 0x1000 -/* 8033B8B4 3B BD 10 00 */ addi r29, r29, 0x1000 -lbl_8033B8B8: -/* 8033B8B8 28 1F 00 00 */ cmplwi r31, 0 -/* 8033B8BC 40 82 FF C0 */ bne lbl_8033B87C -/* 8033B8C0 7F C3 F3 78 */ mr r3, r30 -/* 8033B8C4 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8033B8C8 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 8033B8CC 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 8033B8D0 83 A1 00 1C */ lwz r29, 0x1c(r1) -/* 8033B8D4 83 81 00 18 */ lwz r28, 0x18(r1) -/* 8033B8D8 38 21 00 28 */ addi r1, r1, 0x28 -/* 8033B8DC 7C 08 03 A6 */ mtlr r0 -/* 8033B8E0 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSContext/OSDumpContext.s b/asm/dolphin/os/OSContext/OSDumpContext.s deleted file mode 100644 index 743b14b2eb2..00000000000 --- a/asm/dolphin/os/OSContext/OSDumpContext.s +++ /dev/null @@ -1,191 +0,0 @@ -lbl_8033C0E0: -/* 8033C0E0 7C 08 02 A6 */ mflr r0 -/* 8033C0E4 90 01 00 04 */ stw r0, 4(r1) -/* 8033C0E8 94 21 FD 08 */ stwu r1, -0x2f8(r1) -/* 8033C0EC BF 21 02 DC */ stmw r25, 0x2dc(r1) -/* 8033C0F0 7C 7C 1B 78 */ mr r28, r3 -/* 8033C0F4 3C 60 80 3D */ lis r3, lit_61@ha /* 0x803CF740@ha */ -/* 8033C0F8 4C C6 31 82 */ crclr 6 -/* 8033C0FC 3B E3 F7 40 */ addi r31, r3, lit_61@l /* 0x803CF740@l */ -/* 8033C100 7F E3 FB 78 */ mr r3, r31 -/* 8033C104 7F 84 E3 78 */ mr r4, r28 -/* 8033C108 4B CC A9 B5 */ bl OSReport -/* 8033C10C 3B 20 00 00 */ li r25, 0 -/* 8033C110 57 20 10 3A */ slwi r0, r25, 2 -/* 8033C114 7F 7C 02 14 */ add r27, r28, r0 -/* 8033C118 48 00 00 04 */ b lbl_8033C11C -lbl_8033C11C: -/* 8033C11C 48 00 00 04 */ b lbl_8033C120 -lbl_8033C120: -/* 8033C120 48 00 00 04 */ b lbl_8033C124 -lbl_8033C124: -/* 8033C124 81 1B 00 40 */ lwz r8, 0x40(r27) -/* 8033C128 7F 24 CB 78 */ mr r4, r25 -/* 8033C12C 80 BB 00 00 */ lwz r5, 0(r27) -/* 8033C130 38 7F 00 44 */ addi r3, r31, 0x44 -/* 8033C134 4C C6 31 82 */ crclr 6 -/* 8033C138 7C A6 2B 78 */ mr r6, r5 -/* 8033C13C 7D 09 43 78 */ mr r9, r8 -/* 8033C140 38 F9 00 10 */ addi r7, r25, 0x10 -/* 8033C144 4B CC A9 79 */ bl OSReport -/* 8033C148 3B 7B 00 04 */ addi r27, r27, 4 -/* 8033C14C 3B 39 00 01 */ addi r25, r25, 1 -/* 8033C150 28 19 00 10 */ cmplwi r25, 0x10 -/* 8033C154 41 80 FF D0 */ blt lbl_8033C124 -/* 8033C158 80 9C 00 84 */ lwz r4, 0x84(r28) -/* 8033C15C 38 7F 00 74 */ addi r3, r31, 0x74 -/* 8033C160 80 BC 00 80 */ lwz r5, 0x80(r28) -/* 8033C164 4C C6 31 82 */ crclr 6 -/* 8033C168 4B CC A9 55 */ bl OSReport -/* 8033C16C 80 9C 01 98 */ lwz r4, 0x198(r28) -/* 8033C170 38 7F 00 A4 */ addi r3, r31, 0xa4 -/* 8033C174 80 BC 01 9C */ lwz r5, 0x19c(r28) -/* 8033C178 4C C6 31 82 */ crclr 6 -/* 8033C17C 4B CC A9 41 */ bl OSReport -/* 8033C180 38 7F 00 D4 */ addi r3, r31, 0xd4 -/* 8033C184 4C C6 31 82 */ crclr 6 -/* 8033C188 4B CC A9 35 */ bl OSReport -/* 8033C18C 3B 20 00 00 */ li r25, 0 -/* 8033C190 57 20 10 3A */ slwi r0, r25, 2 -/* 8033C194 7F 7C 02 14 */ add r27, r28, r0 -/* 8033C198 48 00 00 04 */ b lbl_8033C19C -lbl_8033C19C: -/* 8033C19C 48 00 00 04 */ b lbl_8033C1A0 -lbl_8033C1A0: -/* 8033C1A0 48 00 00 04 */ b lbl_8033C1A4 -lbl_8033C1A4: -/* 8033C1A4 80 BB 01 A4 */ lwz r5, 0x1a4(r27) -/* 8033C1A8 7F 24 CB 78 */ mr r4, r25 -/* 8033C1AC 80 FB 01 B4 */ lwz r7, 0x1b4(r27) -/* 8033C1B0 38 7F 00 E8 */ addi r3, r31, 0xe8 -/* 8033C1B4 38 D9 00 04 */ addi r6, r25, 4 -/* 8033C1B8 4C C6 31 82 */ crclr 6 -/* 8033C1BC 4B CC A9 01 */ bl OSReport -/* 8033C1C0 3B 7B 00 04 */ addi r27, r27, 4 -/* 8033C1C4 3B 39 00 01 */ addi r25, r25, 1 -/* 8033C1C8 28 19 00 04 */ cmplwi r25, 4 -/* 8033C1CC 41 80 FF D8 */ blt lbl_8033C1A4 -/* 8033C1D0 A0 1C 01 A2 */ lhz r0, 0x1a2(r28) -/* 8033C1D4 54 00 07 FE */ clrlwi r0, r0, 0x1f -/* 8033C1D8 28 00 00 00 */ cmplwi r0, 0 -/* 8033C1DC 41 82 01 3C */ beq lbl_8033C318 -/* 8033C1E0 48 00 15 15 */ bl OSDisableInterrupts -/* 8033C1E4 3C C0 80 00 */ lis r6, 0x8000 /* 0x800000D4@ha */ -/* 8033C1E8 80 06 00 D4 */ lwz r0, 0x00D4(r6) /* 0x800000D4@l */ -/* 8033C1EC 38 A0 00 00 */ li r5, 0 -/* 8033C1F0 38 81 00 10 */ addi r4, r1, 0x10 -/* 8033C1F4 B0 A1 01 B0 */ sth r5, 0x1b0(r1) -/* 8033C1F8 7C 1E 03 78 */ mr r30, r0 -/* 8033C1FC 7C 7D 1B 78 */ mr r29, r3 -/* 8033C200 B0 A1 01 B2 */ sth r5, 0x1b2(r1) -/* 8033C204 80 06 00 D8 */ lwz r0, 0xd8(r6) -/* 8033C208 7C 04 00 40 */ cmplw r4, r0 -/* 8033C20C 40 82 00 08 */ bne lbl_8033C214 -/* 8033C210 90 A6 00 D8 */ stw r5, 0xd8(r6) -lbl_8033C214: -/* 8033C214 38 61 00 10 */ addi r3, r1, 0x10 -/* 8033C218 4B FF FC 21 */ bl OSSetCurrentContext -/* 8033C21C 38 7F 01 0C */ addi r3, r31, 0x10c -/* 8033C220 4C C6 31 82 */ crclr 6 -/* 8033C224 4B CC A8 99 */ bl OSReport -/* 8033C228 3B 20 00 00 */ li r25, 0 -/* 8033C22C 57 20 18 38 */ slwi r0, r25, 3 -/* 8033C230 7F 5C 02 14 */ add r26, r28, r0 -/* 8033C234 48 00 00 04 */ b lbl_8033C238 -lbl_8033C238: -/* 8033C238 48 00 00 04 */ b lbl_8033C23C -lbl_8033C23C: -/* 8033C23C 48 00 00 04 */ b lbl_8033C240 -lbl_8033C240: -/* 8033C240 C8 3A 00 98 */ lfd f1, 0x98(r26) -/* 8033C244 48 02 5E 69 */ bl __cvt_fp2unsigned -/* 8033C248 7C 7B 1B 78 */ mr r27, r3 -/* 8033C24C C8 3A 00 90 */ lfd f1, 0x90(r26) -/* 8033C250 48 02 5E 5D */ bl __cvt_fp2unsigned -/* 8033C254 7C 65 1B 78 */ mr r5, r3 -/* 8033C258 4C C6 31 82 */ crclr 6 -/* 8033C25C 7F 24 CB 78 */ mr r4, r25 -/* 8033C260 7F 67 DB 78 */ mr r7, r27 -/* 8033C264 38 7F 01 20 */ addi r3, r31, 0x120 -/* 8033C268 38 D9 00 01 */ addi r6, r25, 1 -/* 8033C26C 4B CC A8 51 */ bl OSReport -/* 8033C270 3B 5A 00 10 */ addi r26, r26, 0x10 -/* 8033C274 3B 39 00 02 */ addi r25, r25, 2 -/* 8033C278 28 19 00 20 */ cmplwi r25, 0x20 -/* 8033C27C 41 80 FF C4 */ blt lbl_8033C240 -/* 8033C280 38 7F 01 3C */ addi r3, r31, 0x13c -/* 8033C284 4C C6 31 82 */ crclr 6 -/* 8033C288 4B CC A8 35 */ bl OSReport -/* 8033C28C 3B 20 00 00 */ li r25, 0 -/* 8033C290 57 20 18 38 */ slwi r0, r25, 3 -/* 8033C294 7F 5C 02 14 */ add r26, r28, r0 -/* 8033C298 48 00 00 04 */ b lbl_8033C29C -lbl_8033C29C: -/* 8033C29C 48 00 00 04 */ b lbl_8033C2A0 -lbl_8033C2A0: -/* 8033C2A0 48 00 00 04 */ b lbl_8033C2A4 -lbl_8033C2A4: -/* 8033C2A4 C8 3A 01 D0 */ lfd f1, 0x1d0(r26) -/* 8033C2A8 48 02 5E 05 */ bl __cvt_fp2unsigned -/* 8033C2AC 7C 7B 1B 78 */ mr r27, r3 -/* 8033C2B0 C8 3A 01 C8 */ lfd f1, 0x1c8(r26) -/* 8033C2B4 48 02 5D F9 */ bl __cvt_fp2unsigned -/* 8033C2B8 7C 65 1B 78 */ mr r5, r3 -/* 8033C2BC 4C C6 31 82 */ crclr 6 -/* 8033C2C0 7F 24 CB 78 */ mr r4, r25 -/* 8033C2C4 7F 67 DB 78 */ mr r7, r27 -/* 8033C2C8 38 7F 01 50 */ addi r3, r31, 0x150 -/* 8033C2CC 38 D9 00 01 */ addi r6, r25, 1 -/* 8033C2D0 4B CC A7 ED */ bl OSReport -/* 8033C2D4 3B 5A 00 10 */ addi r26, r26, 0x10 -/* 8033C2D8 3B 39 00 02 */ addi r25, r25, 2 -/* 8033C2DC 28 19 00 20 */ cmplwi r25, 0x20 -/* 8033C2E0 41 80 FF C4 */ blt lbl_8033C2A4 -/* 8033C2E4 38 A0 00 00 */ li r5, 0 -/* 8033C2E8 B0 A1 01 B0 */ sth r5, 0x1b0(r1) -/* 8033C2EC 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000D8@ha */ -/* 8033C2F0 38 81 00 10 */ addi r4, r1, 0x10 -/* 8033C2F4 B0 A1 01 B2 */ sth r5, 0x1b2(r1) -/* 8033C2F8 80 03 00 D8 */ lwz r0, 0x00D8(r3) /* 0x800000D8@l */ -/* 8033C2FC 7C 04 00 40 */ cmplw r4, r0 -/* 8033C300 40 82 00 08 */ bne lbl_8033C308 -/* 8033C304 90 A3 00 D8 */ stw r5, 0xd8(r3) -lbl_8033C308: -/* 8033C308 7F C3 F3 78 */ mr r3, r30 -/* 8033C30C 4B FF FB 2D */ bl OSSetCurrentContext -/* 8033C310 7F A3 EB 78 */ mr r3, r29 -/* 8033C314 48 00 14 09 */ bl OSRestoreInterrupts -lbl_8033C318: -/* 8033C318 38 7F 01 70 */ addi r3, r31, 0x170 -/* 8033C31C 4C C6 31 82 */ crclr 6 -/* 8033C320 4B CC A7 9D */ bl OSReport -/* 8033C324 83 3C 00 04 */ lwz r25, 4(r28) -/* 8033C328 3B 40 00 00 */ li r26, 0 -/* 8033C32C 48 00 00 04 */ b lbl_8033C330 -lbl_8033C330: -/* 8033C330 48 00 00 04 */ b lbl_8033C334 -lbl_8033C334: -/* 8033C334 48 00 00 20 */ b lbl_8033C354 -lbl_8033C338: -/* 8033C338 80 B9 00 00 */ lwz r5, 0(r25) -/* 8033C33C 7F 24 CB 78 */ mr r4, r25 -/* 8033C340 80 D9 00 04 */ lwz r6, 4(r25) -/* 8033C344 38 7F 01 98 */ addi r3, r31, 0x198 -/* 8033C348 4C C6 31 82 */ crclr 6 -/* 8033C34C 4B CC A7 71 */ bl OSReport -/* 8033C350 83 39 00 00 */ lwz r25, 0(r25) -lbl_8033C354: -/* 8033C354 28 19 00 00 */ cmplwi r25, 0 -/* 8033C358 41 82 00 1C */ beq lbl_8033C374 -/* 8033C35C 3C 19 00 01 */ addis r0, r25, 1 -/* 8033C360 28 00 FF FF */ cmplwi r0, 0xffff -/* 8033C364 41 82 00 10 */ beq lbl_8033C374 -/* 8033C368 28 1A 00 10 */ cmplwi r26, 0x10 -/* 8033C36C 3B 5A 00 01 */ addi r26, r26, 1 -/* 8033C370 41 80 FF C8 */ blt lbl_8033C338 -lbl_8033C374: -/* 8033C374 BB 21 02 DC */ lmw r25, 0x2dc(r1) -/* 8033C378 80 01 02 FC */ lwz r0, 0x2fc(r1) -/* 8033C37C 38 21 02 F8 */ addi r1, r1, 0x2f8 -/* 8033C380 7C 08 03 A6 */ mtlr r0 -/* 8033C384 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSContext/__OSContextInit.s b/asm/dolphin/os/OSContext/__OSContextInit.s deleted file mode 100644 index 7f296487615..00000000000 --- a/asm/dolphin/os/OSContext/__OSContextInit.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_8033C40C: -/* 8033C40C 7C 08 02 A6 */ mflr r0 -/* 8033C410 90 01 00 04 */ stw r0, 4(r1) -/* 8033C414 94 21 FF F8 */ stwu r1, -8(r1) -/* 8033C418 3C 60 80 34 */ lis r3, OSSwitchFPUContext@ha /* 0x8033C388@ha */ -/* 8033C41C 38 83 C3 88 */ addi r4, r3, OSSwitchFPUContext@l /* 0x8033C388@l */ -/* 8033C420 38 60 00 07 */ li r3, 7 -/* 8033C424 4B FF E2 C5 */ bl __OSSetExceptionHandler -/* 8033C428 38 00 00 00 */ li r0, 0 -/* 8033C42C 4C C6 31 82 */ crclr 6 -/* 8033C430 3C 80 80 00 */ lis r4, 0x8000 /* 0x800000D8@ha */ -/* 8033C434 3C 60 80 3D */ lis r3, lit_76@ha /* 0x803CF8F4@ha */ -/* 8033C438 90 04 00 D8 */ stw r0, 0x00D8(r4) /* 0x800000D8@l */ -/* 8033C43C 38 63 F8 F4 */ addi r3, r3, lit_76@l /* 0x803CF8F4@l */ -/* 8033C440 48 00 9F F5 */ bl DBPrintf -/* 8033C444 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8033C448 38 21 00 08 */ addi r1, r1, 8 -/* 8033C44C 7C 08 03 A6 */ mtlr r0 -/* 8033C450 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSInterrupt/SetInterruptMask.s b/asm/dolphin/os/OSInterrupt/SetInterruptMask.s deleted file mode 100644 index 894953aeb27..00000000000 --- a/asm/dolphin/os/OSInterrupt/SetInterruptMask.s +++ /dev/null @@ -1,220 +0,0 @@ -lbl_8033D7E4: -/* 8033D7E4 7C 60 00 34 */ cntlzw r0, r3 -/* 8033D7E8 2C 00 00 0C */ cmpwi r0, 0xc -/* 8033D7EC 40 80 00 24 */ bge lbl_8033D810 -/* 8033D7F0 2C 00 00 08 */ cmpwi r0, 8 -/* 8033D7F4 41 82 00 FC */ beq lbl_8033D8F0 -/* 8033D7F8 40 80 01 28 */ bge lbl_8033D920 -/* 8033D7FC 2C 00 00 05 */ cmpwi r0, 5 -/* 8033D800 40 80 00 9C */ bge lbl_8033D89C -/* 8033D804 2C 00 00 00 */ cmpwi r0, 0 -/* 8033D808 40 80 00 28 */ bge lbl_8033D830 -/* 8033D80C 48 00 02 AC */ b lbl_8033DAB8 -lbl_8033D810: -/* 8033D810 2C 00 00 11 */ cmpwi r0, 0x11 -/* 8033D814 40 80 00 10 */ bge lbl_8033D824 -/* 8033D818 2C 00 00 0F */ cmpwi r0, 0xf -/* 8033D81C 40 80 01 A8 */ bge lbl_8033D9C4 -/* 8033D820 48 00 01 50 */ b lbl_8033D970 -lbl_8033D824: -/* 8033D824 2C 00 00 1B */ cmpwi r0, 0x1b -/* 8033D828 40 80 02 90 */ bge lbl_8033DAB8 -/* 8033D82C 48 00 01 D8 */ b lbl_8033DA04 -lbl_8033D830: -/* 8033D830 54 80 00 00 */ rlwinm r0, r4, 0, 0, 0 -/* 8033D834 28 00 00 00 */ cmplwi r0, 0 -/* 8033D838 38 A0 00 00 */ li r5, 0 -/* 8033D83C 40 82 00 08 */ bne lbl_8033D844 -/* 8033D840 60 A5 00 01 */ ori r5, r5, 1 -lbl_8033D844: -/* 8033D844 54 80 00 42 */ rlwinm r0, r4, 0, 1, 1 -/* 8033D848 28 00 00 00 */ cmplwi r0, 0 -/* 8033D84C 40 82 00 08 */ bne lbl_8033D854 -/* 8033D850 60 A5 00 02 */ ori r5, r5, 2 -lbl_8033D854: -/* 8033D854 54 80 00 84 */ rlwinm r0, r4, 0, 2, 2 -/* 8033D858 28 00 00 00 */ cmplwi r0, 0 -/* 8033D85C 40 82 00 08 */ bne lbl_8033D864 -/* 8033D860 60 A5 00 04 */ ori r5, r5, 4 -lbl_8033D864: -/* 8033D864 54 80 00 C6 */ rlwinm r0, r4, 0, 3, 3 -/* 8033D868 28 00 00 00 */ cmplwi r0, 0 -/* 8033D86C 40 82 00 08 */ bne lbl_8033D874 -/* 8033D870 60 A5 00 08 */ ori r5, r5, 8 -lbl_8033D874: -/* 8033D874 54 80 01 08 */ rlwinm r0, r4, 0, 4, 4 -/* 8033D878 28 00 00 00 */ cmplwi r0, 0 -/* 8033D87C 40 82 00 08 */ bne lbl_8033D884 -/* 8033D880 60 A5 00 10 */ ori r5, r5, 0x10 -lbl_8033D884: -/* 8033D884 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC004000@ha */ -/* 8033D888 54 A0 04 3E */ clrlwi r0, r5, 0x10 -/* 8033D88C 38 84 40 00 */ addi r4, r4, 0x4000 /* 0xCC004000@l */ -/* 8033D890 B0 04 00 1C */ sth r0, 0x1c(r4) -/* 8033D894 54 63 01 7E */ clrlwi r3, r3, 5 -/* 8033D898 48 00 02 20 */ b lbl_8033DAB8 -lbl_8033D89C: -/* 8033D89C 3C A0 CC 00 */ lis r5, 0xCC00 /* 0xCC005000@ha */ -/* 8033D8A0 38 A5 50 00 */ addi r5, r5, 0x5000 /* 0xCC005000@l */ -/* 8033D8A4 38 A5 00 0A */ addi r5, r5, 0xa -/* 8033D8A8 54 80 01 4A */ rlwinm r0, r4, 0, 5, 5 -/* 8033D8AC A0 C5 00 00 */ lhz r6, 0(r5) -/* 8033D8B0 28 00 00 00 */ cmplwi r0, 0 -/* 8033D8B4 54 C6 07 6C */ rlwinm r6, r6, 0, 0x1d, 0x16 -/* 8033D8B8 40 82 00 08 */ bne lbl_8033D8C0 -/* 8033D8BC 60 C6 00 10 */ ori r6, r6, 0x10 -lbl_8033D8C0: -/* 8033D8C0 54 80 01 8C */ rlwinm r0, r4, 0, 6, 6 -/* 8033D8C4 28 00 00 00 */ cmplwi r0, 0 -/* 8033D8C8 40 82 00 08 */ bne lbl_8033D8D0 -/* 8033D8CC 60 C6 00 40 */ ori r6, r6, 0x40 -lbl_8033D8D0: -/* 8033D8D0 54 80 01 CE */ rlwinm r0, r4, 0, 7, 7 -/* 8033D8D4 28 00 00 00 */ cmplwi r0, 0 -/* 8033D8D8 40 82 00 08 */ bne lbl_8033D8E0 -/* 8033D8DC 60 C6 01 00 */ ori r6, r6, 0x100 -lbl_8033D8E0: -/* 8033D8E0 54 C0 04 3E */ clrlwi r0, r6, 0x10 -/* 8033D8E4 B0 05 00 00 */ sth r0, 0(r5) -/* 8033D8E8 54 63 02 08 */ rlwinm r3, r3, 0, 8, 4 -/* 8033D8EC 48 00 01 CC */ b lbl_8033DAB8 -lbl_8033D8F0: -/* 8033D8F0 54 80 02 10 */ rlwinm r0, r4, 0, 8, 8 -/* 8033D8F4 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC006C00@ha */ -/* 8033D8F8 28 00 00 00 */ cmplwi r0, 0 -/* 8033D8FC 80 A4 6C 00 */ lwz r5, 0x6C00(r4) /* 0xCC006C00@l */ -/* 8033D900 38 00 FF D3 */ li r0, -45 -/* 8033D904 7C A5 00 38 */ and r5, r5, r0 -/* 8033D908 40 82 00 08 */ bne lbl_8033D910 -/* 8033D90C 60 A5 00 04 */ ori r5, r5, 4 -lbl_8033D910: -/* 8033D910 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC006C00@ha */ -/* 8033D914 90 A4 6C 00 */ stw r5, 0x6C00(r4) /* 0xCC006C00@l */ -/* 8033D918 54 63 02 4E */ rlwinm r3, r3, 0, 9, 7 -/* 8033D91C 48 00 01 9C */ b lbl_8033DAB8 -lbl_8033D920: -/* 8033D920 54 80 02 52 */ rlwinm r0, r4, 0, 9, 9 -/* 8033D924 3C A0 CC 00 */ lis r5, 0xCC00 /* 0xCC006800@ha */ -/* 8033D928 28 00 00 00 */ cmplwi r0, 0 -/* 8033D92C 80 A5 68 00 */ lwz r5, 0x6800(r5) /* 0xCC006800@l */ -/* 8033D930 38 00 D3 F0 */ li r0, -11280 -/* 8033D934 7C A5 00 38 */ and r5, r5, r0 -/* 8033D938 40 82 00 08 */ bne lbl_8033D940 -/* 8033D93C 60 A5 00 01 */ ori r5, r5, 1 -lbl_8033D940: -/* 8033D940 54 80 02 94 */ rlwinm r0, r4, 0, 0xa, 0xa -/* 8033D944 28 00 00 00 */ cmplwi r0, 0 -/* 8033D948 40 82 00 08 */ bne lbl_8033D950 -/* 8033D94C 60 A5 00 04 */ ori r5, r5, 4 -lbl_8033D950: -/* 8033D950 54 80 02 D6 */ rlwinm r0, r4, 0, 0xb, 0xb -/* 8033D954 28 00 00 00 */ cmplwi r0, 0 -/* 8033D958 40 82 00 08 */ bne lbl_8033D960 -/* 8033D95C 60 A5 04 00 */ ori r5, r5, 0x400 -lbl_8033D960: -/* 8033D960 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC006800@ha */ -/* 8033D964 90 A4 68 00 */ stw r5, 0x6800(r4) /* 0xCC006800@l */ -/* 8033D968 54 63 03 10 */ rlwinm r3, r3, 0, 0xc, 8 -/* 8033D96C 48 00 01 4C */ b lbl_8033DAB8 -lbl_8033D970: -/* 8033D970 3C A0 CC 00 */ lis r5, 0xCC00 /* 0xCC006800@ha */ -/* 8033D974 38 C5 68 00 */ addi r6, r5, 0x6800 /* 0xCC006800@l */ -/* 8033D978 38 C6 00 14 */ addi r6, r6, 0x14 -/* 8033D97C 54 80 03 18 */ rlwinm r0, r4, 0, 0xc, 0xc -/* 8033D980 80 E6 00 00 */ lwz r7, 0(r6) -/* 8033D984 38 A0 F3 F0 */ li r5, -3088 -/* 8033D988 28 00 00 00 */ cmplwi r0, 0 -/* 8033D98C 7C E7 28 38 */ and r7, r7, r5 -/* 8033D990 40 82 00 08 */ bne lbl_8033D998 -/* 8033D994 60 E7 00 01 */ ori r7, r7, 1 -lbl_8033D998: -/* 8033D998 54 80 03 5A */ rlwinm r0, r4, 0, 0xd, 0xd -/* 8033D99C 28 00 00 00 */ cmplwi r0, 0 -/* 8033D9A0 40 82 00 08 */ bne lbl_8033D9A8 -/* 8033D9A4 60 E7 00 04 */ ori r7, r7, 4 -lbl_8033D9A8: -/* 8033D9A8 54 80 03 9C */ rlwinm r0, r4, 0, 0xe, 0xe -/* 8033D9AC 28 00 00 00 */ cmplwi r0, 0 -/* 8033D9B0 40 82 00 08 */ bne lbl_8033D9B8 -/* 8033D9B4 60 E7 04 00 */ ori r7, r7, 0x400 -lbl_8033D9B8: -/* 8033D9B8 90 E6 00 00 */ stw r7, 0(r6) -/* 8033D9BC 54 63 03 D6 */ rlwinm r3, r3, 0, 0xf, 0xb -/* 8033D9C0 48 00 00 F8 */ b lbl_8033DAB8 -lbl_8033D9C4: -/* 8033D9C4 3C A0 CC 00 */ lis r5, 0xCC00 /* 0xCC006800@ha */ -/* 8033D9C8 38 A5 68 00 */ addi r5, r5, 0x6800 /* 0xCC006800@l */ -/* 8033D9CC 38 A5 00 28 */ addi r5, r5, 0x28 -/* 8033D9D0 54 80 03 DE */ rlwinm r0, r4, 0, 0xf, 0xf -/* 8033D9D4 80 C5 00 00 */ lwz r6, 0(r5) -/* 8033D9D8 28 00 00 00 */ cmplwi r0, 0 -/* 8033D9DC 54 C6 00 36 */ rlwinm r6, r6, 0, 0, 0x1b -/* 8033D9E0 40 82 00 08 */ bne lbl_8033D9E8 -/* 8033D9E4 60 C6 00 01 */ ori r6, r6, 1 -lbl_8033D9E8: -/* 8033D9E8 54 80 04 20 */ rlwinm r0, r4, 0, 0x10, 0x10 -/* 8033D9EC 28 00 00 00 */ cmplwi r0, 0 -/* 8033D9F0 40 82 00 08 */ bne lbl_8033D9F8 -/* 8033D9F4 60 C6 00 04 */ ori r6, r6, 4 -lbl_8033D9F8: -/* 8033D9F8 90 C5 00 00 */ stw r6, 0(r5) -/* 8033D9FC 54 63 04 5C */ rlwinm r3, r3, 0, 0x11, 0xe -/* 8033DA00 48 00 00 B8 */ b lbl_8033DAB8 -lbl_8033DA04: -/* 8033DA04 54 80 04 62 */ rlwinm r0, r4, 0, 0x11, 0x11 -/* 8033DA08 28 00 00 00 */ cmplwi r0, 0 -/* 8033DA0C 38 A0 00 F0 */ li r5, 0xf0 -/* 8033DA10 40 82 00 08 */ bne lbl_8033DA18 -/* 8033DA14 60 A5 08 00 */ ori r5, r5, 0x800 -lbl_8033DA18: -/* 8033DA18 54 80 05 28 */ rlwinm r0, r4, 0, 0x14, 0x14 -/* 8033DA1C 28 00 00 00 */ cmplwi r0, 0 -/* 8033DA20 40 82 00 08 */ bne lbl_8033DA28 -/* 8033DA24 60 A5 00 08 */ ori r5, r5, 8 -lbl_8033DA28: -/* 8033DA28 54 80 05 6A */ rlwinm r0, r4, 0, 0x15, 0x15 -/* 8033DA2C 28 00 00 00 */ cmplwi r0, 0 -/* 8033DA30 40 82 00 08 */ bne lbl_8033DA38 -/* 8033DA34 60 A5 00 04 */ ori r5, r5, 4 -lbl_8033DA38: -/* 8033DA38 54 80 05 AC */ rlwinm r0, r4, 0, 0x16, 0x16 -/* 8033DA3C 28 00 00 00 */ cmplwi r0, 0 -/* 8033DA40 40 82 00 08 */ bne lbl_8033DA48 -/* 8033DA44 60 A5 00 02 */ ori r5, r5, 2 -lbl_8033DA48: -/* 8033DA48 54 80 05 EE */ rlwinm r0, r4, 0, 0x17, 0x17 -/* 8033DA4C 28 00 00 00 */ cmplwi r0, 0 -/* 8033DA50 40 82 00 08 */ bne lbl_8033DA58 -/* 8033DA54 60 A5 00 01 */ ori r5, r5, 1 -lbl_8033DA58: -/* 8033DA58 54 80 06 30 */ rlwinm r0, r4, 0, 0x18, 0x18 -/* 8033DA5C 28 00 00 00 */ cmplwi r0, 0 -/* 8033DA60 40 82 00 08 */ bne lbl_8033DA68 -/* 8033DA64 60 A5 01 00 */ ori r5, r5, 0x100 -lbl_8033DA68: -/* 8033DA68 54 80 06 72 */ rlwinm r0, r4, 0, 0x19, 0x19 -/* 8033DA6C 28 00 00 00 */ cmplwi r0, 0 -/* 8033DA70 40 82 00 08 */ bne lbl_8033DA78 -/* 8033DA74 60 A5 10 00 */ ori r5, r5, 0x1000 -lbl_8033DA78: -/* 8033DA78 54 80 04 A4 */ rlwinm r0, r4, 0, 0x12, 0x12 -/* 8033DA7C 28 00 00 00 */ cmplwi r0, 0 -/* 8033DA80 40 82 00 08 */ bne lbl_8033DA88 -/* 8033DA84 60 A5 02 00 */ ori r5, r5, 0x200 -lbl_8033DA88: -/* 8033DA88 54 80 04 E6 */ rlwinm r0, r4, 0, 0x13, 0x13 -/* 8033DA8C 28 00 00 00 */ cmplwi r0, 0 -/* 8033DA90 40 82 00 08 */ bne lbl_8033DA98 -/* 8033DA94 60 A5 04 00 */ ori r5, r5, 0x400 -lbl_8033DA98: -/* 8033DA98 54 80 06 B4 */ rlwinm r0, r4, 0, 0x1a, 0x1a -/* 8033DA9C 28 00 00 00 */ cmplwi r0, 0 -/* 8033DAA0 40 82 00 08 */ bne lbl_8033DAA8 -/* 8033DAA4 60 A5 20 00 */ ori r5, r5, 0x2000 -lbl_8033DAA8: -/* 8033DAA8 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC003000@ha */ -/* 8033DAAC 38 84 30 00 */ addi r4, r4, 0x3000 /* 0xCC003000@l */ -/* 8033DAB0 90 A4 00 04 */ stw r5, 4(r4) -/* 8033DAB4 54 63 06 E0 */ rlwinm r3, r3, 0, 0x1b, 0x10 -lbl_8033DAB8: -/* 8033DAB8 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSInterrupt/__OSInterruptInit.s b/asm/dolphin/os/OSInterrupt/__OSInterruptInit.s deleted file mode 100644 index d74e7e60199..00000000000 --- a/asm/dolphin/os/OSInterrupt/__OSInterruptInit.s +++ /dev/null @@ -1,30 +0,0 @@ -lbl_8033D770: -/* 8033D770 7C 08 02 A6 */ mflr r0 -/* 8033D774 90 01 00 04 */ stw r0, 4(r1) -/* 8033D778 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8033D77C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8033D780 3F E0 80 00 */ lis r31, 0x8000 /* 0x80003040@ha */ -/* 8033D784 38 1F 30 40 */ addi r0, r31, 0x3040 /* 0x80003040@l */ -/* 8033D788 90 0D 90 F0 */ stw r0, InterruptHandlerTable(r13) -/* 8033D78C 38 80 00 00 */ li r4, 0 -/* 8033D790 38 A0 00 80 */ li r5, 0x80 -/* 8033D794 80 6D 90 F0 */ lwz r3, InterruptHandlerTable(r13) -/* 8033D798 4B CC 5C C1 */ bl memset -/* 8033D79C 38 00 00 00 */ li r0, 0 -/* 8033D7A0 90 1F 00 C4 */ stw r0, 0xc4(r31) -/* 8033D7A4 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC003000@ha */ -/* 8033D7A8 38 83 30 00 */ addi r4, r3, 0x3000 /* 0xCC003000@l */ -/* 8033D7AC 90 1F 00 C8 */ stw r0, 0xc8(r31) -/* 8033D7B0 38 00 00 F0 */ li r0, 0xf0 -/* 8033D7B4 38 60 FF E0 */ li r3, -32 -/* 8033D7B8 90 04 00 04 */ stw r0, 4(r4) -/* 8033D7BC 48 00 03 01 */ bl __OSMaskInterrupts -/* 8033D7C0 3C 60 80 34 */ lis r3, ExternalInterruptHandler@ha /* 0x8033DF10@ha */ -/* 8033D7C4 38 83 DF 10 */ addi r4, r3, ExternalInterruptHandler@l /* 0x8033DF10@l */ -/* 8033D7C8 38 60 00 04 */ li r3, 4 -/* 8033D7CC 4B FF CF 1D */ bl __OSSetExceptionHandler -/* 8033D7D0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8033D7D4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8033D7D8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8033D7DC 7C 08 03 A6 */ mtlr r0 -/* 8033D7E0 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSInterrupt/__OSMaskInterrupts.s b/asm/dolphin/os/OSInterrupt/__OSMaskInterrupts.s deleted file mode 100644 index a84f86286b4..00000000000 --- a/asm/dolphin/os/OSInterrupt/__OSMaskInterrupts.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_8033DABC: -/* 8033DABC 7C 08 02 A6 */ mflr r0 -/* 8033DAC0 90 01 00 04 */ stw r0, 4(r1) -/* 8033DAC4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8033DAC8 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8033DACC 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8033DAD0 93 A1 00 14 */ stw r29, 0x14(r1) -/* 8033DAD4 7C 7F 1B 78 */ mr r31, r3 -/* 8033DAD8 4B FF FC 1D */ bl OSDisableInterrupts -/* 8033DADC 3C 80 80 00 */ lis r4, 0x8000 /* 0x800000C4@ha */ -/* 8033DAE0 83 A4 00 C4 */ lwz r29, 0x00C4(r4) /* 0x800000C4@l */ -/* 8033DAE4 7C 7E 1B 78 */ mr r30, r3 -/* 8033DAE8 80 A4 00 C8 */ lwz r5, 0xc8(r4) -/* 8033DAEC 7F A0 2B 78 */ or r0, r29, r5 -/* 8033DAF0 7F E3 00 78 */ andc r3, r31, r0 -/* 8033DAF4 7F FF EB 78 */ or r31, r31, r29 -/* 8033DAF8 93 E4 00 C4 */ stw r31, 0xc4(r4) -/* 8033DAFC 7F FF 2B 78 */ or r31, r31, r5 -/* 8033DB00 48 00 00 04 */ b lbl_8033DB04 -lbl_8033DB04: -/* 8033DB04 48 00 00 04 */ b lbl_8033DB08 -lbl_8033DB08: -/* 8033DB08 48 00 00 0C */ b lbl_8033DB14 -lbl_8033DB0C: -/* 8033DB0C 7F E4 FB 78 */ mr r4, r31 -/* 8033DB10 4B FF FC D5 */ bl SetInterruptMask -lbl_8033DB14: -/* 8033DB14 28 03 00 00 */ cmplwi r3, 0 -/* 8033DB18 40 82 FF F4 */ bne lbl_8033DB0C -/* 8033DB1C 7F C3 F3 78 */ mr r3, r30 -/* 8033DB20 4B FF FB FD */ bl OSRestoreInterrupts -/* 8033DB24 7F A3 EB 78 */ mr r3, r29 -/* 8033DB28 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8033DB2C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8033DB30 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8033DB34 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 8033DB38 38 21 00 20 */ addi r1, r1, 0x20 -/* 8033DB3C 7C 08 03 A6 */ mtlr r0 -/* 8033DB40 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSInterrupt/__OSUnmaskInterrupts.s b/asm/dolphin/os/OSInterrupt/__OSUnmaskInterrupts.s deleted file mode 100644 index b650ec23870..00000000000 --- a/asm/dolphin/os/OSInterrupt/__OSUnmaskInterrupts.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_8033DB44: -/* 8033DB44 7C 08 02 A6 */ mflr r0 -/* 8033DB48 90 01 00 04 */ stw r0, 4(r1) -/* 8033DB4C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8033DB50 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8033DB54 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8033DB58 93 A1 00 14 */ stw r29, 0x14(r1) -/* 8033DB5C 7C 7F 1B 78 */ mr r31, r3 -/* 8033DB60 4B FF FB 95 */ bl OSDisableInterrupts -/* 8033DB64 3C 80 80 00 */ lis r4, 0x8000 /* 0x800000C4@ha */ -/* 8033DB68 83 A4 00 C4 */ lwz r29, 0x00C4(r4) /* 0x800000C4@l */ -/* 8033DB6C 7C 7E 1B 78 */ mr r30, r3 -/* 8033DB70 80 A4 00 C8 */ lwz r5, 0xc8(r4) -/* 8033DB74 7F A0 2B 78 */ or r0, r29, r5 -/* 8033DB78 7F E3 00 38 */ and r3, r31, r0 -/* 8033DB7C 7F BF F8 78 */ andc r31, r29, r31 -/* 8033DB80 93 E4 00 C4 */ stw r31, 0xc4(r4) -/* 8033DB84 7F FF 2B 78 */ or r31, r31, r5 -/* 8033DB88 48 00 00 04 */ b lbl_8033DB8C -lbl_8033DB8C: -/* 8033DB8C 48 00 00 04 */ b lbl_8033DB90 -lbl_8033DB90: -/* 8033DB90 48 00 00 0C */ b lbl_8033DB9C -lbl_8033DB94: -/* 8033DB94 7F E4 FB 78 */ mr r4, r31 -/* 8033DB98 4B FF FC 4D */ bl SetInterruptMask -lbl_8033DB9C: -/* 8033DB9C 28 03 00 00 */ cmplwi r3, 0 -/* 8033DBA0 40 82 FF F4 */ bne lbl_8033DB94 -/* 8033DBA4 7F C3 F3 78 */ mr r3, r30 -/* 8033DBA8 4B FF FB 75 */ bl OSRestoreInterrupts -/* 8033DBAC 7F A3 EB 78 */ mr r3, r29 -/* 8033DBB0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8033DBB4 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8033DBB8 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8033DBBC 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 8033DBC0 38 21 00 20 */ addi r1, r1, 0x20 -/* 8033DBC4 7C 08 03 A6 */ mtlr r0 -/* 8033DBC8 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSMemory/OSProtectRange.s b/asm/dolphin/os/OSMemory/OSProtectRange.s deleted file mode 100644 index a214f26be95..00000000000 --- a/asm/dolphin/os/OSMemory/OSProtectRange.s +++ /dev/null @@ -1,52 +0,0 @@ -lbl_8033ED14: -/* 8033ED14 7C 08 02 A6 */ mflr r0 -/* 8033ED18 90 01 00 04 */ stw r0, 4(r1) -/* 8033ED1C 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8033ED20 BF 41 00 18 */ stmw r26, 0x18(r1) -/* 8033ED24 3B 43 00 00 */ addi r26, r3, 0 -/* 8033ED28 28 1A 00 04 */ cmplwi r26, 4 -/* 8033ED2C 40 80 00 98 */ bge lbl_8033EDC4 -/* 8033ED30 7C 64 2A 14 */ add r3, r4, r5 -/* 8033ED34 38 03 03 FF */ addi r0, r3, 0x3ff -/* 8033ED38 54 9B 00 2A */ rlwinm r27, r4, 0, 0, 0x15 -/* 8033ED3C 54 1D 00 2A */ rlwinm r29, r0, 0, 0, 0x15 -/* 8033ED40 38 7B 00 00 */ addi r3, r27, 0 -/* 8033ED44 54 DF 07 BE */ clrlwi r31, r6, 0x1e -/* 8033ED48 7C 9B E8 50 */ subf r4, r27, r29 -/* 8033ED4C 4B FF C8 61 */ bl DCFlushRange -/* 8033ED50 4B FF E9 A5 */ bl OSDisableInterrupts -/* 8033ED54 3C 00 80 00 */ lis r0, 0x8000 -/* 8033ED58 7C 1E D4 30 */ srw r30, r0, r26 -/* 8033ED5C 3B 83 00 00 */ addi r28, r3, 0 -/* 8033ED60 38 7E 00 00 */ addi r3, r30, 0 -/* 8033ED64 4B FF ED 59 */ bl __OSMaskInterrupts -/* 8033ED68 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC004000@ha */ -/* 8033ED6C 38 A3 40 00 */ addi r5, r3, 0x4000 /* 0xCC004000@l */ -/* 8033ED70 57 43 10 3A */ slwi r3, r26, 2 -/* 8033ED74 57 60 B4 3E */ rlwinm r0, r27, 0x16, 0x10, 0x1f -/* 8033ED78 7C 05 1B 2E */ sthx r0, r5, r3 -/* 8033ED7C 57 A4 B4 3E */ rlwinm r4, r29, 0x16, 0x10, 0x1f -/* 8033ED80 7C 65 1A 14 */ add r3, r5, r3 -/* 8033ED84 B0 83 00 02 */ sth r4, 2(r3) -/* 8033ED88 38 85 00 10 */ addi r4, r5, 0x10 -/* 8033ED8C 57 46 08 3C */ slwi r6, r26, 1 -/* 8033ED90 38 00 00 03 */ li r0, 3 -/* 8033ED94 A0 A5 00 10 */ lhz r5, 0x10(r5) -/* 8033ED98 7C 03 30 30 */ slw r3, r0, r6 -/* 8033ED9C 7F E0 30 30 */ slw r0, r31, r6 -/* 8033EDA0 7C A5 18 78 */ andc r5, r5, r3 -/* 8033EDA4 7C A5 03 78 */ or r5, r5, r0 -/* 8033EDA8 28 1F 00 03 */ cmplwi r31, 3 -/* 8033EDAC B0 A4 00 00 */ sth r5, 0(r4) -/* 8033EDB0 41 82 00 0C */ beq lbl_8033EDBC -/* 8033EDB4 7F C3 F3 78 */ mr r3, r30 -/* 8033EDB8 4B FF ED 8D */ bl __OSUnmaskInterrupts -lbl_8033EDBC: -/* 8033EDBC 7F 83 E3 78 */ mr r3, r28 -/* 8033EDC0 4B FF E9 5D */ bl OSRestoreInterrupts -lbl_8033EDC4: -/* 8033EDC4 BB 41 00 18 */ lmw r26, 0x18(r1) -/* 8033EDC8 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8033EDCC 38 21 00 30 */ addi r1, r1, 0x30 -/* 8033EDD0 7C 08 03 A6 */ mtlr r0 -/* 8033EDD4 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSMemory/__OSInitMemoryProtection.s b/asm/dolphin/os/OSMemory/__OSInitMemoryProtection.s deleted file mode 100644 index 78ab6db9abc..00000000000 --- a/asm/dolphin/os/OSMemory/__OSInitMemoryProtection.s +++ /dev/null @@ -1,74 +0,0 @@ -lbl_8033EEF0: -/* 8033EEF0 7C 08 02 A6 */ mflr r0 -/* 8033EEF4 90 01 00 04 */ stw r0, 4(r1) -/* 8033EEF8 94 21 FF B0 */ stwu r1, -0x50(r1) -/* 8033EEFC BF 61 00 3C */ stmw r27, 0x3c(r1) -/* 8033EF00 3F 60 80 00 */ lis r27, 0x8000 /* 0x800000F0@ha */ -/* 8033EF04 83 FB 00 F0 */ lwz r31, 0x00F0(r27) /* 0x800000F0@l */ -/* 8033EF08 4B FF E7 ED */ bl OSDisableInterrupts -/* 8033EF0C 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC004000@ha */ -/* 8033EF10 3B 84 40 00 */ addi r28, r4, 0x4000 /* 0xCC004000@l */ -/* 8033EF14 38 00 00 00 */ li r0, 0 -/* 8033EF18 B0 1C 00 20 */ sth r0, 0x20(r28) -/* 8033EF1C 38 00 00 FF */ li r0, 0xff -/* 8033EF20 7C 7E 1B 78 */ mr r30, r3 -/* 8033EF24 B0 1C 00 10 */ sth r0, 0x10(r28) -/* 8033EF28 3C 60 F0 00 */ lis r3, 0xf000 -/* 8033EF2C 4B FF EB 91 */ bl __OSMaskInterrupts -/* 8033EF30 3C 60 80 34 */ lis r3, MEMIntrruptHandler@ha /* 0x8033ECA8@ha */ -/* 8033EF34 3B A3 EC A8 */ addi r29, r3, MEMIntrruptHandler@l /* 0x8033ECA8@l */ -/* 8033EF38 7F A4 EB 78 */ mr r4, r29 -/* 8033EF3C 38 60 00 00 */ li r3, 0 -/* 8033EF40 4B FF E8 01 */ bl __OSSetInterruptHandler -/* 8033EF44 7F A4 EB 78 */ mr r4, r29 -/* 8033EF48 38 60 00 01 */ li r3, 1 -/* 8033EF4C 4B FF E7 F5 */ bl __OSSetInterruptHandler -/* 8033EF50 7F A4 EB 78 */ mr r4, r29 -/* 8033EF54 38 60 00 02 */ li r3, 2 -/* 8033EF58 4B FF E7 E9 */ bl __OSSetInterruptHandler -/* 8033EF5C 7F A4 EB 78 */ mr r4, r29 -/* 8033EF60 38 60 00 03 */ li r3, 3 -/* 8033EF64 4B FF E7 DD */ bl __OSSetInterruptHandler -/* 8033EF68 7F A4 EB 78 */ mr r4, r29 -/* 8033EF6C 38 60 00 04 */ li r3, 4 -/* 8033EF70 4B FF E7 D1 */ bl __OSSetInterruptHandler -/* 8033EF74 3C 60 80 3D */ lis r3, ResetFunctionInfo@ha /* 0x803D07D8@ha */ -/* 8033EF78 38 63 07 D8 */ addi r3, r3, ResetFunctionInfo@l /* 0x803D07D8@l */ -/* 8033EF7C 48 00 06 E5 */ bl OSRegisterResetFunction -/* 8033EF80 80 7B 00 F0 */ lwz r3, 0xf0(r27) -/* 8033EF84 80 1B 00 28 */ lwz r0, 0x28(r27) -/* 8033EF88 7C 03 00 40 */ cmplw r3, r0 -/* 8033EF8C 40 80 00 24 */ bge lbl_8033EFB0 -/* 8033EF90 3C 03 FE 80 */ addis r0, r3, 0xfe80 -/* 8033EF94 28 00 00 00 */ cmplwi r0, 0 -/* 8033EF98 40 82 00 18 */ bne lbl_8033EFB0 -/* 8033EF9C 3C 60 81 80 */ lis r3, 0x8180 -/* 8033EFA0 3C 80 01 80 */ lis r4, 0x180 -/* 8033EFA4 4B FF C5 DD */ bl DCInvalidateRange -/* 8033EFA8 38 00 00 02 */ li r0, 2 -/* 8033EFAC B0 1C 00 28 */ sth r0, 0x28(r28) -lbl_8033EFB0: -/* 8033EFB0 3C 00 01 80 */ lis r0, 0x180 -/* 8033EFB4 7C 1F 00 40 */ cmplw r31, r0 -/* 8033EFB8 41 81 00 14 */ bgt lbl_8033EFCC -/* 8033EFBC 3C 60 80 34 */ lis r3, Config24MB@ha /* 0x8033EDD8@ha */ -/* 8033EFC0 38 63 ED D8 */ addi r3, r3, Config24MB@l /* 0x8033EDD8@l */ -/* 8033EFC4 4B FF FF 15 */ bl RealMode -/* 8033EFC8 48 00 00 1C */ b lbl_8033EFE4 -lbl_8033EFCC: -/* 8033EFCC 3C 00 03 00 */ lis r0, 0x300 -/* 8033EFD0 7C 1F 00 40 */ cmplw r31, r0 -/* 8033EFD4 41 81 00 10 */ bgt lbl_8033EFE4 -/* 8033EFD8 3C 60 80 34 */ lis r3, Config48MB@ha /* 0x8033EE58@ha */ -/* 8033EFDC 38 63 EE 58 */ addi r3, r3, Config48MB@l /* 0x8033EE58@l */ -/* 8033EFE0 4B FF FE F9 */ bl RealMode -lbl_8033EFE4: -/* 8033EFE4 3C 60 08 00 */ lis r3, 0x800 -/* 8033EFE8 4B FF EB 5D */ bl __OSUnmaskInterrupts -/* 8033EFEC 7F C3 F3 78 */ mr r3, r30 -/* 8033EFF0 4B FF E7 2D */ bl OSRestoreInterrupts -/* 8033EFF4 BB 61 00 3C */ lmw r27, 0x3c(r1) -/* 8033EFF8 80 01 00 54 */ lwz r0, 0x54(r1) -/* 8033EFFC 38 21 00 50 */ addi r1, r1, 0x50 -/* 8033F000 7C 08 03 A6 */ mtlr r0 -/* 8033F004 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSMessage/OSInitMessageQueue.s b/asm/dolphin/os/OSMessage/OSInitMessageQueue.s deleted file mode 100644 index c7d2c8d8ecd..00000000000 --- a/asm/dolphin/os/OSMessage/OSInitMessageQueue.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_8033E994: -/* 8033E994 7C 08 02 A6 */ mflr r0 -/* 8033E998 90 01 00 04 */ stw r0, 4(r1) -/* 8033E99C 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8033E9A0 93 E1 00 24 */ stw r31, 0x24(r1) -/* 8033E9A4 3B E5 00 00 */ addi r31, r5, 0 -/* 8033E9A8 93 C1 00 20 */ stw r30, 0x20(r1) -/* 8033E9AC 3B C4 00 00 */ addi r30, r4, 0 -/* 8033E9B0 93 A1 00 1C */ stw r29, 0x1c(r1) -/* 8033E9B4 3B A3 00 00 */ addi r29, r3, 0 -/* 8033E9B8 48 00 22 BD */ bl OSInitThreadQueue -/* 8033E9BC 38 7D 00 08 */ addi r3, r29, 8 -/* 8033E9C0 48 00 22 B5 */ bl OSInitThreadQueue -/* 8033E9C4 93 DD 00 10 */ stw r30, 0x10(r29) -/* 8033E9C8 38 00 00 00 */ li r0, 0 -/* 8033E9CC 93 FD 00 14 */ stw r31, 0x14(r29) -/* 8033E9D0 90 1D 00 18 */ stw r0, 0x18(r29) -/* 8033E9D4 90 1D 00 1C */ stw r0, 0x1c(r29) -/* 8033E9D8 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8033E9DC 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 8033E9E0 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 8033E9E4 83 A1 00 1C */ lwz r29, 0x1c(r1) -/* 8033E9E8 38 21 00 28 */ addi r1, r1, 0x28 -/* 8033E9EC 7C 08 03 A6 */ mtlr r0 -/* 8033E9F0 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSMessage/OSReceiveMessage.s b/asm/dolphin/os/OSMessage/OSReceiveMessage.s deleted file mode 100644 index e5aa4117bed..00000000000 --- a/asm/dolphin/os/OSMessage/OSReceiveMessage.s +++ /dev/null @@ -1,61 +0,0 @@ -lbl_8033EABC: -/* 8033EABC 7C 08 02 A6 */ mflr r0 -/* 8033EAC0 90 01 00 04 */ stw r0, 4(r1) -/* 8033EAC4 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8033EAC8 93 E1 00 24 */ stw r31, 0x24(r1) -/* 8033EACC 3B E3 00 00 */ addi r31, r3, 0 -/* 8033EAD0 93 C1 00 20 */ stw r30, 0x20(r1) -/* 8033EAD4 3B C5 00 00 */ addi r30, r5, 0 -/* 8033EAD8 93 A1 00 1C */ stw r29, 0x1c(r1) -/* 8033EADC 93 81 00 18 */ stw r28, 0x18(r1) -/* 8033EAE0 3B 84 00 00 */ addi r28, r4, 0 -/* 8033EAE4 4B FF EC 11 */ bl OSDisableInterrupts -/* 8033EAE8 3B A3 00 00 */ addi r29, r3, 0 -/* 8033EAEC 57 DE 07 FE */ clrlwi r30, r30, 0x1f -/* 8033EAF0 48 00 00 24 */ b lbl_8033EB14 -lbl_8033EAF4: -/* 8033EAF4 2C 1E 00 00 */ cmpwi r30, 0 -/* 8033EAF8 40 82 00 14 */ bne lbl_8033EB0C -/* 8033EAFC 7F A3 EB 78 */ mr r3, r29 -/* 8033EB00 4B FF EC 1D */ bl OSRestoreInterrupts -/* 8033EB04 38 60 00 00 */ li r3, 0 -/* 8033EB08 48 00 00 70 */ b lbl_8033EB78 -lbl_8033EB0C: -/* 8033EB0C 38 7F 00 08 */ addi r3, r31, 8 -/* 8033EB10 48 00 30 9D */ bl OSSleepThread -lbl_8033EB14: -/* 8033EB14 80 1F 00 1C */ lwz r0, 0x1c(r31) -/* 8033EB18 2C 00 00 00 */ cmpwi r0, 0 -/* 8033EB1C 41 82 FF D8 */ beq lbl_8033EAF4 -/* 8033EB20 28 1C 00 00 */ cmplwi r28, 0 -/* 8033EB24 41 82 00 18 */ beq lbl_8033EB3C -/* 8033EB28 80 1F 00 18 */ lwz r0, 0x18(r31) -/* 8033EB2C 80 7F 00 10 */ lwz r3, 0x10(r31) -/* 8033EB30 54 00 10 3A */ slwi r0, r0, 2 -/* 8033EB34 7C 03 00 2E */ lwzx r0, r3, r0 -/* 8033EB38 90 1C 00 00 */ stw r0, 0(r28) -lbl_8033EB3C: -/* 8033EB3C 80 BF 00 18 */ lwz r5, 0x18(r31) -/* 8033EB40 7F E3 FB 78 */ mr r3, r31 -/* 8033EB44 80 9F 00 14 */ lwz r4, 0x14(r31) -/* 8033EB48 38 A5 00 01 */ addi r5, r5, 1 -/* 8033EB4C 7C 05 23 D6 */ divw r0, r5, r4 -/* 8033EB50 7C 00 21 D6 */ mullw r0, r0, r4 -/* 8033EB54 7C 00 28 50 */ subf r0, r0, r5 -/* 8033EB58 90 1F 00 18 */ stw r0, 0x18(r31) -/* 8033EB5C 80 9F 00 1C */ lwz r4, 0x1c(r31) -/* 8033EB60 38 04 FF FF */ addi r0, r4, -1 -/* 8033EB64 90 1F 00 1C */ stw r0, 0x1c(r31) -/* 8033EB68 48 00 31 31 */ bl OSWakeupThread -/* 8033EB6C 7F A3 EB 78 */ mr r3, r29 -/* 8033EB70 4B FF EB AD */ bl OSRestoreInterrupts -/* 8033EB74 38 60 00 01 */ li r3, 1 -lbl_8033EB78: -/* 8033EB78 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8033EB7C 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 8033EB80 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 8033EB84 83 A1 00 1C */ lwz r29, 0x1c(r1) -/* 8033EB88 83 81 00 18 */ lwz r28, 0x18(r1) -/* 8033EB8C 38 21 00 28 */ addi r1, r1, 0x28 -/* 8033EB90 7C 08 03 A6 */ mtlr r0 -/* 8033EB94 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSMessage/OSSendMessage.s b/asm/dolphin/os/OSMessage/OSSendMessage.s deleted file mode 100644 index 46cf6663ee5..00000000000 --- a/asm/dolphin/os/OSMessage/OSSendMessage.s +++ /dev/null @@ -1,55 +0,0 @@ -lbl_8033E9F4: -/* 8033E9F4 7C 08 02 A6 */ mflr r0 -/* 8033E9F8 90 01 00 04 */ stw r0, 4(r1) -/* 8033E9FC 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8033EA00 93 E1 00 24 */ stw r31, 0x24(r1) -/* 8033EA04 3B E5 00 00 */ addi r31, r5, 0 -/* 8033EA08 93 C1 00 20 */ stw r30, 0x20(r1) -/* 8033EA0C 93 A1 00 1C */ stw r29, 0x1c(r1) -/* 8033EA10 3B A4 00 00 */ addi r29, r4, 0 -/* 8033EA14 93 81 00 18 */ stw r28, 0x18(r1) -/* 8033EA18 3B 83 00 00 */ addi r28, r3, 0 -/* 8033EA1C 4B FF EC D9 */ bl OSDisableInterrupts -/* 8033EA20 3B C3 00 00 */ addi r30, r3, 0 -/* 8033EA24 57 FF 07 FE */ clrlwi r31, r31, 0x1f -/* 8033EA28 48 00 00 24 */ b lbl_8033EA4C -lbl_8033EA2C: -/* 8033EA2C 2C 1F 00 00 */ cmpwi r31, 0 -/* 8033EA30 40 82 00 14 */ bne lbl_8033EA44 -/* 8033EA34 7F C3 F3 78 */ mr r3, r30 -/* 8033EA38 4B FF EC E5 */ bl OSRestoreInterrupts -/* 8033EA3C 38 60 00 00 */ li r3, 0 -/* 8033EA40 48 00 00 5C */ b lbl_8033EA9C -lbl_8033EA44: -/* 8033EA44 7F 83 E3 78 */ mr r3, r28 -/* 8033EA48 48 00 31 65 */ bl OSSleepThread -lbl_8033EA4C: -/* 8033EA4C 80 DC 00 14 */ lwz r6, 0x14(r28) -/* 8033EA50 80 9C 00 1C */ lwz r4, 0x1c(r28) -/* 8033EA54 7C 06 20 00 */ cmpw r6, r4 -/* 8033EA58 40 81 FF D4 */ ble lbl_8033EA2C -/* 8033EA5C 80 1C 00 18 */ lwz r0, 0x18(r28) -/* 8033EA60 38 7C 00 08 */ addi r3, r28, 8 -/* 8033EA64 80 BC 00 10 */ lwz r5, 0x10(r28) -/* 8033EA68 7C 80 22 14 */ add r4, r0, r4 -/* 8033EA6C 7C 04 33 D6 */ divw r0, r4, r6 -/* 8033EA70 7C 00 31 D6 */ mullw r0, r0, r6 -/* 8033EA74 7C 00 20 50 */ subf r0, r0, r4 -/* 8033EA78 54 00 10 3A */ slwi r0, r0, 2 -/* 8033EA7C 7F A5 01 2E */ stwx r29, r5, r0 -/* 8033EA80 80 9C 00 1C */ lwz r4, 0x1c(r28) -/* 8033EA84 38 04 00 01 */ addi r0, r4, 1 -/* 8033EA88 90 1C 00 1C */ stw r0, 0x1c(r28) -/* 8033EA8C 48 00 32 0D */ bl OSWakeupThread -/* 8033EA90 7F C3 F3 78 */ mr r3, r30 -/* 8033EA94 4B FF EC 89 */ bl OSRestoreInterrupts -/* 8033EA98 38 60 00 01 */ li r3, 1 -lbl_8033EA9C: -/* 8033EA9C 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8033EAA0 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 8033EAA4 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 8033EAA8 83 A1 00 1C */ lwz r29, 0x1c(r1) -/* 8033EAAC 83 81 00 18 */ lwz r28, 0x18(r1) -/* 8033EAB0 38 21 00 28 */ addi r1, r1, 0x28 -/* 8033EAB4 7C 08 03 A6 */ mtlr r0 -/* 8033EAB8 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSMutex/OSInitMutex.s b/asm/dolphin/os/OSMutex/OSInitMutex.s deleted file mode 100644 index af8f8423f7f..00000000000 --- a/asm/dolphin/os/OSMutex/OSInitMutex.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_8033F008: -/* 8033F008 7C 08 02 A6 */ mflr r0 -/* 8033F00C 90 01 00 04 */ stw r0, 4(r1) -/* 8033F010 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8033F014 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8033F018 7C 7F 1B 78 */ mr r31, r3 -/* 8033F01C 48 00 1C 59 */ bl OSInitThreadQueue -/* 8033F020 38 00 00 00 */ li r0, 0 -/* 8033F024 90 1F 00 08 */ stw r0, 8(r31) -/* 8033F028 90 1F 00 0C */ stw r0, 0xc(r31) -/* 8033F02C 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8033F030 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8033F034 38 21 00 18 */ addi r1, r1, 0x18 -/* 8033F038 7C 08 03 A6 */ mtlr r0 -/* 8033F03C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSReset/OSRegisterResetFunction.s b/asm/dolphin/os/OSReset/OSRegisterResetFunction.s deleted file mode 100644 index 9d8cc9b666d..00000000000 --- a/asm/dolphin/os/OSReset/OSRegisterResetFunction.s +++ /dev/null @@ -1,41 +0,0 @@ -lbl_8033F660: -/* 8033F660 80 AD 91 10 */ lwz r5, ResetFunctionQueue(r13) -/* 8033F664 48 00 00 08 */ b lbl_8033F66C -lbl_8033F668: -/* 8033F668 80 A5 00 08 */ lwz r5, 8(r5) -lbl_8033F66C: -/* 8033F66C 28 05 00 00 */ cmplwi r5, 0 -/* 8033F670 41 82 00 14 */ beq lbl_8033F684 -/* 8033F674 80 85 00 04 */ lwz r4, 4(r5) -/* 8033F678 80 03 00 04 */ lwz r0, 4(r3) -/* 8033F67C 7C 04 00 40 */ cmplw r4, r0 -/* 8033F680 40 81 FF E8 */ ble lbl_8033F668 -lbl_8033F684: -/* 8033F684 28 05 00 00 */ cmplwi r5, 0 -/* 8033F688 40 82 00 34 */ bne lbl_8033F6BC -/* 8033F68C 38 AD 91 10 */ la r5, ResetFunctionQueue(r13) /* 80451690-_SDA_BASE_ */ -/* 8033F690 84 85 00 04 */ lwzu r4, 4(r5) -/* 8033F694 28 04 00 00 */ cmplwi r4, 0 -/* 8033F698 40 82 00 0C */ bne lbl_8033F6A4 -/* 8033F69C 90 6D 91 10 */ stw r3, ResetFunctionQueue(r13) -/* 8033F6A0 48 00 00 08 */ b lbl_8033F6A8 -lbl_8033F6A4: -/* 8033F6A4 90 64 00 08 */ stw r3, 8(r4) -lbl_8033F6A8: -/* 8033F6A8 90 83 00 0C */ stw r4, 0xc(r3) -/* 8033F6AC 38 00 00 00 */ li r0, 0 -/* 8033F6B0 90 03 00 08 */ stw r0, 8(r3) -/* 8033F6B4 90 65 00 00 */ stw r3, 0(r5) -/* 8033F6B8 4E 80 00 20 */ blr -lbl_8033F6BC: -/* 8033F6BC 90 A3 00 08 */ stw r5, 8(r3) -/* 8033F6C0 80 85 00 0C */ lwz r4, 0xc(r5) -/* 8033F6C4 90 65 00 0C */ stw r3, 0xc(r5) -/* 8033F6C8 28 04 00 00 */ cmplwi r4, 0 -/* 8033F6CC 90 83 00 0C */ stw r4, 0xc(r3) -/* 8033F6D0 40 82 00 0C */ bne lbl_8033F6DC -/* 8033F6D4 90 6D 91 10 */ stw r3, ResetFunctionQueue(r13) -/* 8033F6D8 4E 80 00 20 */ blr -lbl_8033F6DC: -/* 8033F6DC 90 64 00 08 */ stw r3, 8(r4) -/* 8033F6E0 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSReset/__OSDoHotReset.s b/asm/dolphin/os/OSReset/__OSDoHotReset.s deleted file mode 100644 index 7c09bc705d0..00000000000 --- a/asm/dolphin/os/OSReset/__OSDoHotReset.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_8033F864: -/* 8033F864 7C 08 02 A6 */ mflr r0 -/* 8033F868 90 01 00 04 */ stw r0, 4(r1) -/* 8033F86C 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8033F870 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8033F874 7C 7F 1B 78 */ mr r31, r3 -/* 8033F878 4B FF DE 7D */ bl OSDisableInterrupts -/* 8033F87C 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC002000@ha */ -/* 8033F880 38 63 20 00 */ addi r3, r3, 0x2000 /* 0xCC002000@l */ -/* 8033F884 38 00 00 00 */ li r0, 0 -/* 8033F888 B0 03 00 02 */ sth r0, 2(r3) -/* 8033F88C 4B FF BE 39 */ bl ICFlashInvalidate -/* 8033F890 57 E3 18 38 */ slwi r3, r31, 3 -/* 8033F894 4B FF FE F9 */ bl Reset -/* 8033F898 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8033F89C 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8033F8A0 38 21 00 18 */ addi r1, r1, 0x18 -/* 8033F8A4 7C 08 03 A6 */ mtlr r0 -/* 8033F8A8 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSResetSW/OSGetResetButtonState.s b/asm/dolphin/os/OSResetSW/OSGetResetButtonState.s index c774a6f3be7..a47a7a51cba 100644 --- a/asm/dolphin/os/OSResetSW/OSGetResetButtonState.s +++ b/asm/dolphin/os/OSResetSW/OSGetResetButtonState.s @@ -17,7 +17,7 @@ lbl_8033FBD8: /* 8033FC14 40 82 00 40 */ bne lbl_8033FC54 /* 8033FC18 80 0D 91 30 */ lwz r0, HoldUp(r13) /* 8033FC1C 38 C0 00 00 */ li r6, 0 -/* 8033FC20 80 AD 91 34 */ lwz r5, data_804516B4(r13) +/* 8033FC20 80 AD 91 34 */ lwz r5, HoldUp+0x4(r13) /* 8033FC24 38 E0 00 01 */ li r7, 1 /* 8033FC28 7C 00 32 78 */ xor r0, r0, r6 /* 8033FC2C 7C A5 32 78 */ xor r5, r5, r6 @@ -28,21 +28,21 @@ lbl_8033FBD8: lbl_8033FC40: /* 8033FC40 7C C7 33 78 */ mr r7, r6 lbl_8033FC44: -/* 8033FC44 90 8D 91 3C */ stw r4, data_804516BC(r13) +/* 8033FC44 90 8D 91 3C */ stw r4, HoldDown+0x4(r13) /* 8033FC48 7C FD 3B 78 */ mr r29, r7 /* 8033FC4C 90 6D 91 38 */ stw r3, HoldDown(r13) /* 8033FC50 48 00 01 48 */ b lbl_8033FD98 lbl_8033FC54: /* 8033FC54 80 0D 91 30 */ lwz r0, HoldUp(r13) /* 8033FC58 39 20 00 00 */ li r9, 0 -/* 8033FC5C 80 AD 91 34 */ lwz r5, data_804516B4(r13) +/* 8033FC5C 80 AD 91 34 */ lwz r5, HoldUp+0x4(r13) /* 8033FC60 39 40 00 01 */ li r10, 1 /* 8033FC64 7C 00 4A 78 */ xor r0, r0, r9 /* 8033FC68 7C A5 4A 78 */ xor r5, r5, r9 /* 8033FC6C 7C A0 03 79 */ or. r0, r5, r0 /* 8033FC70 40 82 00 58 */ bne lbl_8033FCC8 /* 8033FC74 3C C0 80 00 */ lis r6, 0x8000 /* 0x800000F8@ha */ -/* 8033FC78 80 AD 91 3C */ lwz r5, data_804516BC(r13) +/* 8033FC78 80 AD 91 3C */ lwz r5, HoldDown+0x4(r13) /* 8033FC7C 80 E6 00 F8 */ lwz r7, 0x00F8(r6) /* 0x800000F8@l */ /* 8033FC80 3C C0 43 1C */ lis r6, 0x431C /* 0x431BDE83@ha */ /* 8033FC84 39 06 DE 83 */ addi r8, r6, 0xDE83 /* 0x431BDE83@l */ @@ -82,17 +82,17 @@ lbl_8033FCE4: /* 8033FCFC 2C 05 00 00 */ cmpwi r5, 0 /* 8033FD00 3B A5 00 00 */ addi r29, r5, 0 /* 8033FD04 41 82 00 10 */ beq lbl_8033FD14 -/* 8033FD08 90 8D 91 34 */ stw r4, data_804516B4(r13) +/* 8033FD08 90 8D 91 34 */ stw r4, HoldUp+0x4(r13) /* 8033FD0C 90 6D 91 30 */ stw r3, HoldUp(r13) /* 8033FD10 48 00 00 88 */ b lbl_8033FD98 lbl_8033FD14: -/* 8033FD14 90 0D 91 34 */ stw r0, data_804516B4(r13) +/* 8033FD14 90 0D 91 34 */ stw r0, HoldUp+0x4(r13) /* 8033FD18 90 0D 91 30 */ stw r0, HoldUp(r13) /* 8033FD1C 48 00 00 7C */ b lbl_8033FD98 lbl_8033FD20: /* 8033FD20 80 CD 91 30 */ lwz r6, HoldUp(r13) /* 8033FD24 39 00 00 00 */ li r8, 0 -/* 8033FD28 80 ED 91 34 */ lwz r7, data_804516B4(r13) +/* 8033FD28 80 ED 91 34 */ lwz r7, HoldUp+0x4(r13) /* 8033FD2C 7C C0 42 78 */ xor r0, r6, r8 /* 8033FD30 7C E5 42 78 */ xor r5, r7, r8 /* 8033FD34 7C A0 03 79 */ or. r0, r5, r0 @@ -118,7 +118,7 @@ lbl_8033FD20: /* 8033FD84 48 00 00 14 */ b lbl_8033FD98 lbl_8033FD88: /* 8033FD88 38 00 00 00 */ li r0, 0 -/* 8033FD8C 90 0D 91 34 */ stw r0, data_804516B4(r13) +/* 8033FD8C 90 0D 91 34 */ stw r0, HoldUp+0x4(r13) /* 8033FD90 3B A0 00 00 */ li r29, 0 /* 8033FD94 90 0D 91 30 */ stw r0, HoldUp(r13) lbl_8033FD98: diff --git a/asm/dolphin/os/OSResetSW/OSGetResetSwitchState.s b/asm/dolphin/os/OSResetSW/OSGetResetSwitchState.s deleted file mode 100644 index 5b72b454b66..00000000000 --- a/asm/dolphin/os/OSResetSW/OSGetResetSwitchState.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_8033FE70: -/* 8033FE70 7C 08 02 A6 */ mflr r0 -/* 8033FE74 90 01 00 04 */ stw r0, 4(r1) -/* 8033FE78 94 21 FF F8 */ stwu r1, -8(r1) -/* 8033FE7C 4B FF FD 5D */ bl OSGetResetButtonState -/* 8033FE80 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8033FE84 38 21 00 08 */ addi r1, r1, 8 -/* 8033FE88 7C 08 03 A6 */ mtlr r0 -/* 8033FE8C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSResetSW/__OSResetSWInterruptHandler.s b/asm/dolphin/os/OSResetSW/__OSResetSWInterruptHandler.s index 05a8eb14b1f..d2ef5b51bdf 100644 --- a/asm/dolphin/os/OSResetSW/__OSResetSWInterruptHandler.s +++ b/asm/dolphin/os/OSResetSW/__OSResetSWInterruptHandler.s @@ -7,7 +7,7 @@ lbl_8033FAE4: /* 8033FAF8 93 A1 00 1C */ stw r29, 0x1c(r1) /* 8033FAFC 48 00 2C 21 */ bl __OSGetSystemTime /* 8033FB00 3C A0 80 00 */ lis r5, 0x8000 /* 0x800000F8@ha */ -/* 8033FB04 90 8D 91 3C */ stw r4, data_804516BC(r13) +/* 8033FB04 90 8D 91 3C */ stw r4, HoldDown+0x4(r13) /* 8033FB08 80 05 00 F8 */ lwz r0, 0x00F8(r5) /* 0x800000F8@l */ /* 8033FB0C 3C 80 43 1C */ lis r4, 0x431C /* 0x431BDE83@ha */ /* 8033FB10 38 84 DE 83 */ addi r4, r4, 0xDE83 /* 0x431BDE83@l */ @@ -21,7 +21,7 @@ lbl_8033FAE4: /* 8033FB30 3F E0 CC 00 */ lis r31, 0xcc00 lbl_8033FB34: /* 8033FB34 48 00 2B E9 */ bl __OSGetSystemTime -/* 8033FB38 80 CD 91 3C */ lwz r6, data_804516BC(r13) +/* 8033FB38 80 CD 91 3C */ lwz r6, HoldDown+0x4(r13) /* 8033FB3C 6F C5 80 00 */ xoris r5, r30, 0x8000 /* 8033FB40 80 0D 91 38 */ lwz r0, HoldDown(r13) /* 8033FB44 7C 86 20 10 */ subfc r4, r6, r4 diff --git a/asm/dolphin/os/OSRtc/WriteSram.s b/asm/dolphin/os/OSRtc/WriteSram.s deleted file mode 100644 index 3ba6d1f40aa..00000000000 --- a/asm/dolphin/os/OSRtc/WriteSram.s +++ /dev/null @@ -1,74 +0,0 @@ -lbl_8033FEF0: -/* 8033FEF0 7C 08 02 A6 */ mflr r0 -/* 8033FEF4 3C C0 80 34 */ lis r6, WriteSramCallback@ha /* 0x8033FE90@ha */ -/* 8033FEF8 90 01 00 04 */ stw r0, 4(r1) -/* 8033FEFC 38 06 FE 90 */ addi r0, r6, WriteSramCallback@l /* 0x8033FE90@l */ -/* 8033FF00 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8033FF04 93 E1 00 24 */ stw r31, 0x24(r1) -/* 8033FF08 3B E4 00 00 */ addi r31, r4, 0 -/* 8033FF0C 38 80 00 01 */ li r4, 1 -/* 8033FF10 93 C1 00 20 */ stw r30, 0x20(r1) -/* 8033FF14 3B C5 00 00 */ addi r30, r5, 0 -/* 8033FF18 7C 05 03 78 */ mr r5, r0 -/* 8033FF1C 93 A1 00 1C */ stw r29, 0x1c(r1) -/* 8033FF20 3B A3 00 00 */ addi r29, r3, 0 -/* 8033FF24 38 60 00 00 */ li r3, 0 -/* 8033FF28 48 00 41 01 */ bl EXILock -/* 8033FF2C 2C 03 00 00 */ cmpwi r3, 0 -/* 8033FF30 40 82 00 0C */ bne lbl_8033FF3C -/* 8033FF34 38 60 00 00 */ li r3, 0 -/* 8033FF38 48 00 00 B4 */ b lbl_8033FFEC -lbl_8033FF3C: -/* 8033FF3C 38 60 00 00 */ li r3, 0 -/* 8033FF40 38 80 00 01 */ li r4, 1 -/* 8033FF44 38 A0 00 03 */ li r5, 3 -/* 8033FF48 48 00 39 21 */ bl EXISelect -/* 8033FF4C 2C 03 00 00 */ cmpwi r3, 0 -/* 8033FF50 40 82 00 14 */ bne lbl_8033FF64 -/* 8033FF54 38 60 00 00 */ li r3, 0 -/* 8033FF58 48 00 41 C5 */ bl EXIUnlock -/* 8033FF5C 38 60 00 00 */ li r3, 0 -/* 8033FF60 48 00 00 8C */ b lbl_8033FFEC -lbl_8033FF64: -/* 8033FF64 57 FF 30 32 */ slwi r31, r31, 6 -/* 8033FF68 38 1F 01 00 */ addi r0, r31, 0x100 -/* 8033FF6C 64 00 A0 00 */ oris r0, r0, 0xa000 -/* 8033FF70 90 01 00 14 */ stw r0, 0x14(r1) -/* 8033FF74 38 81 00 14 */ addi r4, r1, 0x14 -/* 8033FF78 38 60 00 00 */ li r3, 0 -/* 8033FF7C 38 A0 00 04 */ li r5, 4 -/* 8033FF80 38 C0 00 01 */ li r6, 1 -/* 8033FF84 38 E0 00 00 */ li r7, 0 -/* 8033FF88 48 00 2D 79 */ bl EXIImm -/* 8033FF8C 7C 60 00 34 */ cntlzw r0, r3 -/* 8033FF90 54 1F D9 7E */ srwi r31, r0, 5 -/* 8033FF94 38 60 00 00 */ li r3, 0 -/* 8033FF98 48 00 31 51 */ bl EXISync -/* 8033FF9C 7C 60 00 34 */ cntlzw r0, r3 -/* 8033FFA0 54 00 D9 7E */ srwi r0, r0, 5 -/* 8033FFA4 38 9D 00 00 */ addi r4, r29, 0 -/* 8033FFA8 38 BE 00 00 */ addi r5, r30, 0 -/* 8033FFAC 7F FF 03 78 */ or r31, r31, r0 -/* 8033FFB0 38 60 00 00 */ li r3, 0 -/* 8033FFB4 38 C0 00 01 */ li r6, 1 -/* 8033FFB8 48 00 2F A5 */ bl EXIImmEx -/* 8033FFBC 7C 60 00 34 */ cntlzw r0, r3 -/* 8033FFC0 54 00 D9 7E */ srwi r0, r0, 5 -/* 8033FFC4 7F FF 03 78 */ or r31, r31, r0 -/* 8033FFC8 38 60 00 00 */ li r3, 0 -/* 8033FFCC 48 00 39 C9 */ bl EXIDeselect -/* 8033FFD0 7C 60 00 34 */ cntlzw r0, r3 -/* 8033FFD4 54 00 D9 7E */ srwi r0, r0, 5 -/* 8033FFD8 7F FF 03 78 */ or r31, r31, r0 -/* 8033FFDC 38 60 00 00 */ li r3, 0 -/* 8033FFE0 48 00 41 3D */ bl EXIUnlock -/* 8033FFE4 7F E0 00 34 */ cntlzw r0, r31 -/* 8033FFE8 54 03 D9 7E */ srwi r3, r0, 5 -lbl_8033FFEC: -/* 8033FFEC 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8033FFF0 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 8033FFF4 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 8033FFF8 83 A1 00 1C */ lwz r29, 0x1c(r1) -/* 8033FFFC 38 21 00 28 */ addi r1, r1, 0x28 -/* 80340000 7C 08 03 A6 */ mtlr r0 -/* 80340004 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSRtc/WriteSramCallback.s b/asm/dolphin/os/OSRtc/WriteSramCallback.s deleted file mode 100644 index ef35b6db217..00000000000 --- a/asm/dolphin/os/OSRtc/WriteSramCallback.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_8033FE90: -/* 8033FE90 7C 08 02 A6 */ mflr r0 -/* 8033FE94 3C 60 80 45 */ lis r3, Scb@ha /* 0x8044BB20@ha */ -/* 8033FE98 90 01 00 04 */ stw r0, 4(r1) -/* 8033FE9C 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8033FEA0 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8033FEA4 3B E3 BB 20 */ addi r31, r3, Scb@l /* 0x8044BB20@l */ -/* 8033FEA8 93 C1 00 10 */ stw r30, 0x10(r1) -/* 8033FEAC 3B DF 00 40 */ addi r30, r31, 0x40 -/* 8033FEB0 80 9F 00 40 */ lwz r4, 0x40(r31) -/* 8033FEB4 7C 7F 22 14 */ add r3, r31, r4 -/* 8033FEB8 20 A4 00 40 */ subfic r5, r4, 0x40 -/* 8033FEBC 48 00 00 35 */ bl WriteSram -/* 8033FEC0 90 7F 00 4C */ stw r3, 0x4c(r31) -/* 8033FEC4 80 1F 00 4C */ lwz r0, 0x4c(r31) -/* 8033FEC8 2C 00 00 00 */ cmpwi r0, 0 -/* 8033FECC 41 82 00 0C */ beq lbl_8033FED8 -/* 8033FED0 38 00 00 40 */ li r0, 0x40 -/* 8033FED4 90 1E 00 00 */ stw r0, 0(r30) -lbl_8033FED8: -/* 8033FED8 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8033FEDC 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8033FEE0 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 8033FEE4 38 21 00 18 */ addi r1, r1, 0x18 -/* 8033FEE8 7C 08 03 A6 */ mtlr r0 -/* 8033FEEC 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSRtc/__OSInitSram.s b/asm/dolphin/os/OSRtc/__OSInitSram.s deleted file mode 100644 index 86f228a537b..00000000000 --- a/asm/dolphin/os/OSRtc/__OSInitSram.s +++ /dev/null @@ -1,83 +0,0 @@ -lbl_80340008: -/* 80340008 7C 08 02 A6 */ mflr r0 -/* 8034000C 3C 60 80 45 */ lis r3, Scb@ha /* 0x8044BB20@ha */ -/* 80340010 90 01 00 04 */ stw r0, 4(r1) -/* 80340014 38 80 00 40 */ li r4, 0x40 -/* 80340018 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8034001C 93 E1 00 14 */ stw r31, 0x14(r1) -/* 80340020 3B E0 00 00 */ li r31, 0 -/* 80340024 93 C1 00 10 */ stw r30, 0x10(r1) -/* 80340028 3B C3 BB 20 */ addi r30, r3, Scb@l /* 0x8044BB20@l */ -/* 8034002C 38 7E 00 00 */ addi r3, r30, 0 -/* 80340030 93 FE 00 44 */ stw r31, 0x44(r30) -/* 80340034 93 FE 00 48 */ stw r31, 0x48(r30) -/* 80340038 4B FF B5 49 */ bl DCInvalidateRange -/* 8034003C 38 60 00 00 */ li r3, 0 -/* 80340040 38 80 00 01 */ li r4, 1 -/* 80340044 38 A0 00 00 */ li r5, 0 -/* 80340048 48 00 3F E1 */ bl EXILock -/* 8034004C 2C 03 00 00 */ cmpwi r3, 0 -/* 80340050 40 82 00 08 */ bne lbl_80340058 -/* 80340054 48 00 00 C4 */ b lbl_80340118 -lbl_80340058: -/* 80340058 38 60 00 00 */ li r3, 0 -/* 8034005C 38 80 00 01 */ li r4, 1 -/* 80340060 38 A0 00 03 */ li r5, 3 -/* 80340064 48 00 38 05 */ bl EXISelect -/* 80340068 2C 03 00 00 */ cmpwi r3, 0 -/* 8034006C 40 82 00 10 */ bne lbl_8034007C -/* 80340070 38 60 00 00 */ li r3, 0 -/* 80340074 48 00 40 A9 */ bl EXIUnlock -/* 80340078 48 00 00 A0 */ b lbl_80340118 -lbl_8034007C: -/* 8034007C 3C 60 20 00 */ lis r3, 0x2000 /* 0x20000100@ha */ -/* 80340080 38 03 01 00 */ addi r0, r3, 0x0100 /* 0x20000100@l */ -/* 80340084 90 01 00 08 */ stw r0, 8(r1) -/* 80340088 38 81 00 08 */ addi r4, r1, 8 -/* 8034008C 38 60 00 00 */ li r3, 0 -/* 80340090 38 A0 00 04 */ li r5, 4 -/* 80340094 38 C0 00 01 */ li r6, 1 -/* 80340098 38 E0 00 00 */ li r7, 0 -/* 8034009C 48 00 2C 65 */ bl EXIImm -/* 803400A0 7C 60 00 34 */ cntlzw r0, r3 -/* 803400A4 54 1F D9 7E */ srwi r31, r0, 5 -/* 803400A8 38 60 00 00 */ li r3, 0 -/* 803400AC 48 00 30 3D */ bl EXISync -/* 803400B0 7C 60 00 34 */ cntlzw r0, r3 -/* 803400B4 54 00 D9 7E */ srwi r0, r0, 5 -/* 803400B8 38 9E 00 00 */ addi r4, r30, 0 -/* 803400BC 7F FF 03 78 */ or r31, r31, r0 -/* 803400C0 38 60 00 00 */ li r3, 0 -/* 803400C4 38 A0 00 40 */ li r5, 0x40 -/* 803400C8 38 C0 00 00 */ li r6, 0 -/* 803400CC 38 E0 00 00 */ li r7, 0 -/* 803400D0 48 00 2F 2D */ bl EXIDma -/* 803400D4 7C 60 00 34 */ cntlzw r0, r3 -/* 803400D8 54 00 D9 7E */ srwi r0, r0, 5 -/* 803400DC 7F FF 03 78 */ or r31, r31, r0 -/* 803400E0 38 60 00 00 */ li r3, 0 -/* 803400E4 48 00 30 05 */ bl EXISync -/* 803400E8 7C 60 00 34 */ cntlzw r0, r3 -/* 803400EC 54 00 D9 7E */ srwi r0, r0, 5 -/* 803400F0 7F FF 03 78 */ or r31, r31, r0 -/* 803400F4 38 60 00 00 */ li r3, 0 -/* 803400F8 48 00 38 9D */ bl EXIDeselect -/* 803400FC 7C 60 00 34 */ cntlzw r0, r3 -/* 80340100 54 00 D9 7E */ srwi r0, r0, 5 -/* 80340104 7F FF 03 78 */ or r31, r31, r0 -/* 80340108 38 60 00 00 */ li r3, 0 -/* 8034010C 48 00 40 11 */ bl EXIUnlock -/* 80340110 7F E0 00 34 */ cntlzw r0, r31 -/* 80340114 54 1F D9 7E */ srwi r31, r0, 5 -lbl_80340118: -/* 80340118 93 FE 00 4C */ stw r31, 0x4c(r30) -/* 8034011C 38 00 00 40 */ li r0, 0x40 -/* 80340120 90 1E 00 40 */ stw r0, 0x40(r30) -/* 80340124 48 00 07 D5 */ bl OSGetGbsMode -/* 80340128 48 00 08 41 */ bl OSSetGbsMode -/* 8034012C 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80340130 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80340134 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 80340138 38 21 00 18 */ addi r1, r1, 0x18 -/* 8034013C 7C 08 03 A6 */ mtlr r0 -/* 80340140 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSRtc/__OSSyncSram.s b/asm/dolphin/os/OSRtc/__OSSyncSram.s deleted file mode 100644 index fbc2fd3f6ec..00000000000 --- a/asm/dolphin/os/OSRtc/__OSSyncSram.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_80340580: -/* 80340580 3C 60 80 45 */ lis r3, Scb@ha /* 0x8044BB20@ha */ -/* 80340584 38 63 BB 20 */ addi r3, r3, Scb@l /* 0x8044BB20@l */ -/* 80340588 80 63 00 4C */ lwz r3, 0x4c(r3) -/* 8034058C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSSync/__OSInitSystemCall.s b/asm/dolphin/os/OSSync/__OSInitSystemCall.s deleted file mode 100644 index 80c22a2c089..00000000000 --- a/asm/dolphin/os/OSSync/__OSInitSystemCall.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_80340A40: -/* 80340A40 7C 08 02 A6 */ mflr r0 -/* 80340A44 90 01 00 04 */ stw r0, 4(r1) -/* 80340A48 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80340A4C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80340A50 3C A0 80 00 */ lis r5, 0x8000 /* 0x80000C00@ha */ -/* 80340A54 3C 80 80 34 */ lis r4, SystemCallVector@ha /* 0x80340A20@ha */ -/* 80340A58 3C 60 80 34 */ lis r3, __OSSystemCallVectorEnd@ha /* 0x80340A3C@ha */ -/* 80340A5C 3B E5 0C 00 */ addi r31, r5, 0x0C00 /* 0x80000C00@l */ -/* 80340A60 38 03 0A 3C */ addi r0, r3, __OSSystemCallVectorEnd@l /* 0x80340A3C@l */ -/* 80340A64 38 84 0A 20 */ addi r4, r4, SystemCallVector@l /* 0x80340A20@l */ -/* 80340A68 7F E3 FB 78 */ mr r3, r31 -/* 80340A6C 7C A4 00 50 */ subf r5, r4, r0 -/* 80340A70 4B CC 2A D1 */ bl memcpy -/* 80340A74 7F E3 FB 78 */ mr r3, r31 -/* 80340A78 38 80 01 00 */ li r4, 0x100 -/* 80340A7C 4B FF AB 91 */ bl DCFlushRangeNoSync -/* 80340A80 7C 00 04 AC */ sync -/* 80340A84 7F E3 FB 78 */ mr r3, r31 -/* 80340A88 38 80 01 00 */ li r4, 0x100 -/* 80340A8C 4B FF AC 05 */ bl ICInvalidateRange -/* 80340A90 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80340A94 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80340A98 38 21 00 10 */ addi r1, r1, 0x10 -/* 80340A9C 7C 08 03 A6 */ mtlr r0 -/* 80340AA0 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSYieldThread.s b/asm/dolphin/os/OSThread/OSYieldThread.s deleted file mode 100644 index 60f1210d7f4..00000000000 --- a/asm/dolphin/os/OSThread/OSYieldThread.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_80341250: -/* 80341250 7C 08 02 A6 */ mflr r0 -/* 80341254 90 01 00 04 */ stw r0, 4(r1) -/* 80341258 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8034125C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80341260 4B FF C4 95 */ bl OSDisableInterrupts -/* 80341264 3B E3 00 00 */ addi r31, r3, 0 -/* 80341268 38 60 00 01 */ li r3, 1 -/* 8034126C 4B FF FD 8D */ bl SelectThread -/* 80341270 7F E3 FB 78 */ mr r3, r31 -/* 80341274 4B FF C4 A9 */ bl OSRestoreInterrupts -/* 80341278 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8034127C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80341280 38 21 00 10 */ addi r1, r1, 0x10 -/* 80341284 7C 08 03 A6 */ mtlr r0 -/* 80341288 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/__OSReschedule.s b/asm/dolphin/os/OSThread/__OSReschedule.s deleted file mode 100644 index 4ba308303ef..00000000000 --- a/asm/dolphin/os/OSThread/__OSReschedule.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_80341220: -/* 80341220 7C 08 02 A6 */ mflr r0 -/* 80341224 90 01 00 04 */ stw r0, 4(r1) -/* 80341228 94 21 FF F8 */ stwu r1, -8(r1) -/* 8034122C 80 0D 91 44 */ lwz r0, RunQueueHint(r13) -/* 80341230 2C 00 00 00 */ cmpwi r0, 0 -/* 80341234 41 82 00 0C */ beq lbl_80341240 -/* 80341238 38 60 00 00 */ li r3, 0 -/* 8034123C 4B FF FD BD */ bl SelectThread -lbl_80341240: -/* 80341240 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80341244 38 21 00 08 */ addi r1, r1, 8 -/* 80341248 7C 08 03 A6 */ mtlr r0 -/* 8034124C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSTime/GetDates.s b/asm/dolphin/os/OSTime/GetDates.s deleted file mode 100644 index 9149017873e..00000000000 --- a/asm/dolphin/os/OSTime/GetDates.s +++ /dev/null @@ -1,116 +0,0 @@ -lbl_803427D8: -/* 803427D8 3C A0 92 49 */ lis r5, 0x9249 /* 0x92492493@ha */ -/* 803427DC 38 05 24 93 */ addi r0, r5, 0x2493 /* 0x92492493@l */ -/* 803427E0 38 E3 00 06 */ addi r7, r3, 6 -/* 803427E4 7C C0 38 96 */ mulhw r6, r0, r7 -/* 803427E8 3C A0 B3 8D */ lis r5, 0xB38D /* 0xB38CF9B1@ha */ -/* 803427EC 38 05 F9 B1 */ addi r0, r5, 0xF9B1 /* 0xB38CF9B1@l */ -/* 803427F0 7C 00 18 96 */ mulhw r0, r0, r3 -/* 803427F4 7C A6 3A 14 */ add r5, r6, r7 -/* 803427F8 7C A5 16 70 */ srawi r5, r5, 2 -/* 803427FC 54 A6 0F FE */ srwi r6, r5, 0x1f -/* 80342800 7C A5 32 14 */ add r5, r5, r6 -/* 80342804 7C 00 1A 14 */ add r0, r0, r3 -/* 80342808 1C C5 00 07 */ mulli r6, r5, 7 -/* 8034280C 7C 00 46 70 */ srawi r0, r0, 8 -/* 80342810 54 05 0F FE */ srwi r5, r0, 0x1f -/* 80342814 7C A0 2A 14 */ add r5, r0, r5 -/* 80342818 7C 06 38 50 */ subf r0, r6, r7 -/* 8034281C 1D 65 01 6D */ mulli r11, r5, 0x16d -/* 80342820 90 04 00 18 */ stw r0, 0x18(r4) -/* 80342824 48 00 00 04 */ b lbl_80342828 -lbl_80342828: -/* 80342828 3C C0 51 EC */ lis r6, 0x51EC /* 0x51EB851F@ha */ -/* 8034282C 39 46 85 1F */ addi r10, r6, 0x851F /* 0x51EB851F@l */ -/* 80342830 48 00 00 04 */ b lbl_80342834 -lbl_80342834: -/* 80342834 48 00 00 0C */ b lbl_80342840 -lbl_80342838: -/* 80342838 39 6B FE 93 */ addi r11, r11, -365 -/* 8034283C 38 A5 FF FF */ addi r5, r5, -1 -lbl_80342840: -/* 80342840 2C 05 00 01 */ cmpwi r5, 1 -/* 80342844 40 80 00 0C */ bge lbl_80342850 -/* 80342848 38 00 00 00 */ li r0, 0 -/* 8034284C 48 00 00 38 */ b lbl_80342884 -lbl_80342850: -/* 80342850 38 05 FF FF */ addi r0, r5, -1 -/* 80342854 7C 0A 00 96 */ mulhw r0, r10, r0 -/* 80342858 7C 08 3E 70 */ srawi r8, r0, 7 -/* 8034285C 7C 06 2E 70 */ srawi r6, r0, 5 -/* 80342860 38 05 00 03 */ addi r0, r5, 3 -/* 80342864 54 C7 0F FE */ srwi r7, r6, 0x1f -/* 80342868 7C 00 16 70 */ srawi r0, r0, 2 -/* 8034286C 55 09 0F FE */ srwi r9, r8, 0x1f -/* 80342870 7C C6 3A 14 */ add r6, r6, r7 -/* 80342874 7C 00 01 94 */ addze r0, r0 -/* 80342878 7C E8 4A 14 */ add r7, r8, r9 -/* 8034287C 7C 06 00 50 */ subf r0, r6, r0 -/* 80342880 7C 07 02 14 */ add r0, r7, r0 -lbl_80342884: -/* 80342884 7C 0B 02 14 */ add r0, r11, r0 -/* 80342888 7C 03 00 00 */ cmpw r3, r0 -/* 8034288C 41 80 FF AC */ blt lbl_80342838 -/* 80342890 7C A6 16 70 */ srawi r6, r5, 2 -/* 80342894 90 A4 00 14 */ stw r5, 0x14(r4) -/* 80342898 7C C6 01 94 */ addze r6, r6 -/* 8034289C 54 C6 10 3A */ slwi r6, r6, 2 -/* 803428A0 7C C6 28 10 */ subfc r6, r6, r5 -/* 803428A4 7C 00 18 50 */ subf r0, r0, r3 -/* 803428A8 2C 06 00 00 */ cmpwi r6, 0 -/* 803428AC 90 04 00 1C */ stw r0, 0x1c(r4) -/* 803428B0 38 E0 00 01 */ li r7, 1 -/* 803428B4 39 00 00 00 */ li r8, 0 -/* 803428B8 40 82 00 30 */ bne lbl_803428E8 -/* 803428BC 3C 60 51 EC */ lis r3, 0x51EC /* 0x51EB851F@ha */ -/* 803428C0 38 63 85 1F */ addi r3, r3, 0x851F /* 0x51EB851F@l */ -/* 803428C4 7C 63 28 96 */ mulhw r3, r3, r5 -/* 803428C8 7C 63 2E 70 */ srawi r3, r3, 5 -/* 803428CC 54 66 0F FE */ srwi r6, r3, 0x1f -/* 803428D0 7C 63 32 14 */ add r3, r3, r6 -/* 803428D4 1C 63 00 64 */ mulli r3, r3, 0x64 -/* 803428D8 7C 63 28 50 */ subf r3, r3, r5 -/* 803428DC 2C 03 00 00 */ cmpwi r3, 0 -/* 803428E0 41 82 00 08 */ beq lbl_803428E8 -/* 803428E4 7C E8 3B 78 */ mr r8, r7 -lbl_803428E8: -/* 803428E8 2C 08 00 00 */ cmpwi r8, 0 -/* 803428EC 40 82 00 30 */ bne lbl_8034291C -/* 803428F0 3C 60 51 EC */ lis r3, 0x51EC /* 0x51EB851F@ha */ -/* 803428F4 38 63 85 1F */ addi r3, r3, 0x851F /* 0x51EB851F@l */ -/* 803428F8 7C 63 28 96 */ mulhw r3, r3, r5 -/* 803428FC 7C 63 3E 70 */ srawi r3, r3, 7 -/* 80342900 54 66 0F FE */ srwi r6, r3, 0x1f -/* 80342904 7C 63 32 14 */ add r3, r3, r6 -/* 80342908 1C 63 01 90 */ mulli r3, r3, 0x190 -/* 8034290C 7C 63 28 50 */ subf r3, r3, r5 -/* 80342910 2C 03 00 00 */ cmpwi r3, 0 -/* 80342914 41 82 00 08 */ beq lbl_8034291C -/* 80342918 38 E0 00 00 */ li r7, 0 -lbl_8034291C: -/* 8034291C 2C 07 00 00 */ cmpwi r7, 0 -/* 80342920 41 82 00 10 */ beq lbl_80342930 -/* 80342924 3C 60 80 3D */ lis r3, LeapYearDays@ha /* 0x803D1078@ha */ -/* 80342928 38 C3 10 78 */ addi r6, r3, LeapYearDays@l /* 0x803D1078@l */ -/* 8034292C 48 00 00 0C */ b lbl_80342938 -lbl_80342930: -/* 80342930 3C 60 80 3D */ lis r3, YearDays@ha /* 0x803D1048@ha */ -/* 80342934 38 C3 10 48 */ addi r6, r3, YearDays@l /* 0x803D1048@l */ -lbl_80342938: -/* 80342938 38 E0 00 0C */ li r7, 0xc -/* 8034293C 38 60 00 30 */ li r3, 0x30 -/* 80342940 48 00 00 04 */ b lbl_80342944 -lbl_80342944: -/* 80342944 48 00 00 04 */ b lbl_80342948 -lbl_80342948: -/* 80342948 38 63 FF FC */ addi r3, r3, -4 -/* 8034294C 7C A6 18 2E */ lwzx r5, r6, r3 -/* 80342950 38 E7 FF FF */ addi r7, r7, -1 -/* 80342954 7C 00 28 00 */ cmpw r0, r5 -/* 80342958 41 80 FF F0 */ blt lbl_80342948 -/* 8034295C 90 E4 00 10 */ stw r7, 0x10(r4) -/* 80342960 7C 66 18 2E */ lwzx r3, r6, r3 -/* 80342964 7C 63 00 50 */ subf r3, r3, r0 -/* 80342968 38 03 00 01 */ addi r0, r3, 1 -/* 8034296C 90 04 00 0C */ stw r0, 0xc(r4) -/* 80342970 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSTime/__OSGetSystemTime.s b/asm/dolphin/os/OSTime/__OSGetSystemTime.s deleted file mode 100644 index 07e13246d80..00000000000 --- a/asm/dolphin/os/OSTime/__OSGetSystemTime.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_8034271C: -/* 8034271C 7C 08 02 A6 */ mflr r0 -/* 80342720 90 01 00 04 */ stw r0, 4(r1) -/* 80342724 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80342728 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8034272C 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80342730 93 A1 00 14 */ stw r29, 0x14(r1) -/* 80342734 4B FF AF C1 */ bl OSDisableInterrupts -/* 80342738 7C 7F 1B 78 */ mr r31, r3 -/* 8034273C 4B FF FF C1 */ bl OSGetTime -/* 80342740 3C C0 80 00 */ lis r6, 0x8000 /* 0x800030DC@ha */ -/* 80342744 80 A6 30 DC */ lwz r5, 0x30DC(r6) /* 0x800030DC@l */ -/* 80342748 80 06 30 D8 */ lwz r0, 0x30d8(r6) -/* 8034274C 7F A5 20 14 */ addc r29, r5, r4 -/* 80342750 7F C0 19 14 */ adde r30, r0, r3 -/* 80342754 7F E3 FB 78 */ mr r3, r31 -/* 80342758 4B FF AF C5 */ bl OSRestoreInterrupts -/* 8034275C 7F A4 EB 78 */ mr r4, r29 -/* 80342760 7F C3 F3 78 */ mr r3, r30 -/* 80342764 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80342768 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8034276C 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80342770 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80342774 38 21 00 20 */ addi r1, r1, 0x20 -/* 80342778 7C 08 03 A6 */ mtlr r0 -/* 8034277C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSTime/__OSTimeToSystemTime.s b/asm/dolphin/os/OSTime/__OSTimeToSystemTime.s deleted file mode 100644 index 4d97f1e2137..00000000000 --- a/asm/dolphin/os/OSTime/__OSTimeToSystemTime.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_80342780: -/* 80342780 7C 08 02 A6 */ mflr r0 -/* 80342784 90 01 00 04 */ stw r0, 4(r1) -/* 80342788 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8034278C 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80342790 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80342794 7C 7F 1B 78 */ mr r31, r3 -/* 80342798 7C 9E 23 78 */ mr r30, r4 -/* 8034279C 4B FF AF 59 */ bl OSDisableInterrupts -/* 803427A0 3C A0 80 00 */ lis r5, 0x8000 /* 0x800030DC@ha */ -/* 803427A4 80 85 30 DC */ lwz r4, 0x30DC(r5) /* 0x800030DC@l */ -/* 803427A8 80 05 30 D8 */ lwz r0, 0x30d8(r5) -/* 803427AC 7F C4 F0 14 */ addc r30, r4, r30 -/* 803427B0 7F E0 F9 14 */ adde r31, r0, r31 -/* 803427B4 4B FF AF 69 */ bl OSRestoreInterrupts -/* 803427B8 7F C4 F3 78 */ mr r4, r30 -/* 803427BC 7F E3 FB 78 */ mr r3, r31 -/* 803427C0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803427C4 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 803427C8 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 803427CC 38 21 00 20 */ addi r1, r1, 0x20 -/* 803427D0 7C 08 03 A6 */ mtlr r0 -/* 803427D4 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/__ppc_eabi_init/_ExitProcess.s b/asm/dolphin/os/__ppc_eabi_init/_ExitProcess.s deleted file mode 100644 index afa730e33d3..00000000000 --- a/asm/dolphin/os/__ppc_eabi_init/_ExitProcess.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80342BEC: -/* 80342BEC 7C 08 02 A6 */ mflr r0 -/* 80342BF0 90 01 00 04 */ stw r0, 4(r1) -/* 80342BF4 94 21 FF F8 */ stwu r1, -8(r1) -/* 80342BF8 4B FF 71 09 */ bl PPCHalt -/* 80342BFC 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80342C00 38 21 00 08 */ addi r1, r1, 8 -/* 80342C04 7C 08 03 A6 */ mtlr r0 -/* 80342C08 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/__ppc_eabi_init/__init_user.s b/asm/dolphin/os/__ppc_eabi_init/__init_user.s deleted file mode 100644 index 3bfb30d3cdf..00000000000 --- a/asm/dolphin/os/__ppc_eabi_init/__init_user.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80342B78: -/* 80342B78 7C 08 02 A6 */ mflr r0 -/* 80342B7C 90 01 00 04 */ stw r0, 4(r1) -/* 80342B80 94 21 FF F8 */ stwu r1, -8(r1) -/* 80342B84 48 00 00 15 */ bl __init_cpp -/* 80342B88 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80342B8C 38 21 00 08 */ addi r1, r1, 8 -/* 80342B90 7C 08 03 A6 */ mtlr r0 -/* 80342B94 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Pad/OnReset.s b/asm/dolphin/pad/Pad/OnReset.s deleted file mode 100644 index 2bf230d8368..00000000000 --- a/asm/dolphin/pad/Pad/OnReset.s +++ /dev/null @@ -1,54 +0,0 @@ -lbl_8034FA84: -/* 8034FA84 7C 08 02 A6 */ mflr r0 -/* 8034FA88 90 01 00 04 */ stw r0, 4(r1) -/* 8034FA8C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8034FA90 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8034FA94 3B E3 00 00 */ addi r31, r3, 0 -/* 8034FA98 80 0D 92 E8 */ lwz r0, SamplingCallback(r13) -/* 8034FA9C 28 00 00 00 */ cmplwi r0, 0 -/* 8034FAA0 41 82 00 0C */ beq lbl_8034FAAC -/* 8034FAA4 38 60 00 00 */ li r3, 0 -/* 8034FAA8 48 00 00 F9 */ bl PADSetSamplingCallback -lbl_8034FAAC: -/* 8034FAAC 2C 1F 00 00 */ cmpwi r31, 0 -/* 8034FAB0 40 82 00 70 */ bne lbl_8034FB20 -/* 8034FAB4 80 0D 92 D0 */ lwz r0, ResettingBits(r13) -/* 8034FAB8 3B E0 00 00 */ li r31, 0 -/* 8034FABC 38 7F 00 00 */ addi r3, r31, 0 -/* 8034FAC0 28 00 00 00 */ cmplwi r0, 0 -/* 8034FAC4 40 82 00 14 */ bne lbl_8034FAD8 -/* 8034FAC8 80 0D 84 A4 */ lwz r0, ResettingChan(r13) -/* 8034FACC 2C 00 00 20 */ cmpwi r0, 0x20 -/* 8034FAD0 40 82 00 08 */ bne lbl_8034FAD8 -/* 8034FAD4 38 60 00 01 */ li r3, 1 -lbl_8034FAD8: -/* 8034FAD8 2C 03 00 00 */ cmpwi r3, 0 -/* 8034FADC 41 82 00 14 */ beq lbl_8034FAF0 -/* 8034FAE0 4B FF 50 C1 */ bl SIBusy -/* 8034FAE4 2C 03 00 00 */ cmpwi r3, 0 -/* 8034FAE8 40 82 00 08 */ bne lbl_8034FAF0 -/* 8034FAEC 3B E0 00 01 */ li r31, 1 -lbl_8034FAF0: -/* 8034FAF0 80 0D 92 EC */ lwz r0, recalibrated(r13) -/* 8034FAF4 2C 00 00 00 */ cmpwi r0, 0 -/* 8034FAF8 40 82 00 20 */ bne lbl_8034FB18 -/* 8034FAFC 2C 1F 00 00 */ cmpwi r31, 0 -/* 8034FB00 41 82 00 18 */ beq lbl_8034FB18 -/* 8034FB04 3C 60 F0 00 */ lis r3, 0xf000 -/* 8034FB08 4B FF F1 35 */ bl PADRecalibrate -/* 8034FB0C 90 6D 92 EC */ stw r3, recalibrated(r13) -/* 8034FB10 38 60 00 00 */ li r3, 0 -/* 8034FB14 48 00 00 18 */ b lbl_8034FB2C -lbl_8034FB18: -/* 8034FB18 7F E3 FB 78 */ mr r3, r31 -/* 8034FB1C 48 00 00 10 */ b lbl_8034FB2C -lbl_8034FB20: -/* 8034FB20 38 00 00 00 */ li r0, 0 -/* 8034FB24 90 0D 92 EC */ stw r0, recalibrated(r13) -/* 8034FB28 38 60 00 01 */ li r3, 1 -lbl_8034FB2C: -/* 8034FB2C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8034FB30 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8034FB34 38 21 00 20 */ addi r1, r1, 0x20 -/* 8034FB38 7C 08 03 A6 */ mtlr r0 -/* 8034FB3C 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Pad/PADInit.s b/asm/dolphin/pad/Pad/PADInit.s deleted file mode 100644 index 28fafb3f02d..00000000000 --- a/asm/dolphin/pad/Pad/PADInit.s +++ /dev/null @@ -1,89 +0,0 @@ -lbl_8034ED50: -/* 8034ED50 7C 08 02 A6 */ mflr r0 -/* 8034ED54 3C 60 80 45 */ lis r3, Type@ha /* 0x8044CB70@ha */ -/* 8034ED58 90 01 00 04 */ stw r0, 4(r1) -/* 8034ED5C 94 21 FF C8 */ stwu r1, -0x38(r1) -/* 8034ED60 BF 21 00 1C */ stmw r25, 0x1c(r1) -/* 8034ED64 3B E3 CB 70 */ addi r31, r3, Type@l /* 0x8044CB70@l */ -/* 8034ED68 80 0D 92 C8 */ lwz r0, Initialized(r13) -/* 8034ED6C 2C 00 00 00 */ cmpwi r0, 0 -/* 8034ED70 41 82 00 0C */ beq lbl_8034ED7C -/* 8034ED74 38 60 00 01 */ li r3, 1 -/* 8034ED78 48 00 01 14 */ b lbl_8034EE8C -lbl_8034ED7C: -/* 8034ED7C 80 6D 84 A0 */ lwz r3, __PADVersion(r13) -/* 8034ED80 4B FE BA F5 */ bl OSRegisterVersion -/* 8034ED84 80 6D 92 F0 */ lwz r3, __PADSpec(r13) -/* 8034ED88 28 03 00 00 */ cmplwi r3, 0 -/* 8034ED8C 41 82 00 08 */ beq lbl_8034ED94 -/* 8034ED90 48 00 04 C9 */ bl PADSetSpec -lbl_8034ED94: -/* 8034ED94 80 0D 91 78 */ lwz r0, __PADFixBits(r13) -/* 8034ED98 38 60 00 01 */ li r3, 1 -/* 8034ED9C 90 6D 92 C8 */ stw r3, Initialized(r13) -/* 8034EDA0 28 00 00 00 */ cmplwi r0, 0 -/* 8034EDA4 41 82 00 8C */ beq lbl_8034EE30 -/* 8034EDA8 4B FF 39 55 */ bl OSGetTime -/* 8034EDAC 3B 24 00 00 */ addi r25, r4, 0 -/* 8034EDB0 3B 43 00 00 */ addi r26, r3, 0 -/* 8034EDB4 38 A0 00 10 */ li r5, 0x10 -/* 8034EDB8 48 01 38 DD */ bl __shr2i -/* 8034EDBC 3C A0 00 01 */ lis r5, 0x0001 /* 0x0000FFFF@ha */ -/* 8034EDC0 3B 65 FF FF */ addi r27, r5, 0xFFFF /* 0x0000FFFF@l */ -/* 8034EDC4 3B 80 00 00 */ li r28, 0 -/* 8034EDC8 7C 86 D8 38 */ and r6, r4, r27 -/* 8034EDCC 7F 24 D8 38 */ and r4, r25, r27 -/* 8034EDD0 7C 65 E0 38 */ and r5, r3, r28 -/* 8034EDD4 7F 40 E0 38 */ and r0, r26, r28 -/* 8034EDD8 7F A4 30 14 */ addc r29, r4, r6 -/* 8034EDDC 38 7A 00 00 */ addi r3, r26, 0 -/* 8034EDE0 38 99 00 00 */ addi r4, r25, 0 -/* 8034EDE4 7F C0 29 14 */ adde r30, r0, r5 -/* 8034EDE8 38 A0 00 20 */ li r5, 0x20 -/* 8034EDEC 48 01 38 A9 */ bl __shr2i -/* 8034EDF0 7C 84 D8 38 */ and r4, r4, r27 -/* 8034EDF4 7C 60 E0 38 */ and r0, r3, r28 -/* 8034EDF8 7F A4 E8 14 */ addc r29, r4, r29 -/* 8034EDFC 38 7A 00 00 */ addi r3, r26, 0 -/* 8034EE00 38 99 00 00 */ addi r4, r25, 0 -/* 8034EE04 7F C0 F1 14 */ adde r30, r0, r30 -/* 8034EE08 38 A0 00 30 */ li r5, 0x30 -/* 8034EE0C 48 01 38 89 */ bl __shr2i -/* 8034EE10 7C 80 D8 38 */ and r0, r4, r27 -/* 8034EE14 7C A0 E8 14 */ addc r5, r0, r29 -/* 8034EE18 3C 00 F0 00 */ lis r0, 0xf000 -/* 8034EE1C 38 80 3F FF */ li r4, 0x3fff -/* 8034EE20 90 0D 92 D4 */ stw r0, RecalibrateBits(r13) -/* 8034EE24 7C A0 20 38 */ and r0, r5, r4 -/* 8034EE28 3C 60 80 00 */ lis r3, 0x8000 /* 0x800030E0@ha */ -/* 8034EE2C B0 03 30 E0 */ sth r0, 0x30E0(r3) /* 0x800030E0@l */ -lbl_8034EE30: -/* 8034EE30 3C 60 80 00 */ lis r3, 0x8000 /* 0x800030E0@ha */ -/* 8034EE34 A0 03 30 E0 */ lhz r0, 0x30E0(r3) /* 0x800030E0@l */ -/* 8034EE38 54 00 42 AE */ rlwinm r0, r0, 8, 0xa, 0x17 -/* 8034EE3C 64 00 4D 00 */ oris r0, r0, 0x4d00 -/* 8034EE40 90 1F 00 40 */ stw r0, 0x40(r31) -/* 8034EE44 A0 03 30 E0 */ lhz r0, 0x30e0(r3) -/* 8034EE48 54 00 42 AE */ rlwinm r0, r0, 8, 0xa, 0x17 -/* 8034EE4C 64 00 4D 40 */ oris r0, r0, 0x4d40 -/* 8034EE50 90 1F 00 44 */ stw r0, 0x44(r31) -/* 8034EE54 A0 03 30 E0 */ lhz r0, 0x30e0(r3) -/* 8034EE58 54 00 42 AE */ rlwinm r0, r0, 8, 0xa, 0x17 -/* 8034EE5C 64 00 4D 80 */ oris r0, r0, 0x4d80 -/* 8034EE60 90 1F 00 48 */ stw r0, 0x48(r31) -/* 8034EE64 A0 03 30 E0 */ lhz r0, 0x30e0(r3) -/* 8034EE68 54 00 42 AE */ rlwinm r0, r0, 8, 0xa, 0x17 -/* 8034EE6C 64 00 4D C0 */ oris r0, r0, 0x4dc0 -/* 8034EE70 90 1F 00 4C */ stw r0, 0x4c(r31) -/* 8034EE74 4B FF 75 01 */ bl SIRefreshSamplingRate -/* 8034EE78 3C 60 80 3D */ lis r3, ResetFunctionInfo@ha /* 0x803D1B90@ha */ -/* 8034EE7C 38 63 1B 90 */ addi r3, r3, ResetFunctionInfo@l /* 0x803D1B90@l */ -/* 8034EE80 4B FF 07 E1 */ bl OSRegisterResetFunction -/* 8034EE84 3C 60 F0 00 */ lis r3, 0xf000 -/* 8034EE88 4B FF FC A5 */ bl PADReset -lbl_8034EE8C: -/* 8034EE8C BB 21 00 1C */ lmw r25, 0x1c(r1) -/* 8034EE90 80 01 00 3C */ lwz r0, 0x3c(r1) -/* 8034EE94 38 21 00 38 */ addi r1, r1, 0x38 -/* 8034EE98 7C 08 03 A6 */ mtlr r0 -/* 8034EE9C 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Pad/PADOriginCallback.s b/asm/dolphin/pad/Pad/PADOriginCallback.s deleted file mode 100644 index 4e521f03351..00000000000 --- a/asm/dolphin/pad/Pad/PADOriginCallback.s +++ /dev/null @@ -1,52 +0,0 @@ -lbl_8034E458: -/* 8034E458 7C 08 02 A6 */ mflr r0 -/* 8034E45C 90 01 00 04 */ stw r0, 4(r1) -/* 8034E460 54 80 07 3F */ clrlwi. r0, r4, 0x1c -/* 8034E464 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8034E468 93 E1 00 2C */ stw r31, 0x2c(r1) -/* 8034E46C 40 82 00 48 */ bne lbl_8034E4B4 -/* 8034E470 80 6D 84 A4 */ lwz r3, ResettingChan(r13) -/* 8034E474 4B FF FE 41 */ bl UpdateOrigin -/* 8034E478 83 ED 84 A4 */ lwz r31, ResettingChan(r13) -/* 8034E47C 3C 00 80 00 */ lis r0, 0x8000 -/* 8034E480 80 6D 92 CC */ lwz r3, EnabledBits(r13) -/* 8034E484 38 81 00 1C */ addi r4, r1, 0x1c -/* 8034E488 7C 00 FC 30 */ srw r0, r0, r31 -/* 8034E48C 7C 60 03 78 */ or r0, r3, r0 -/* 8034E490 90 0D 92 CC */ stw r0, EnabledBits(r13) -/* 8034E494 7F E3 FB 78 */ mr r3, r31 -/* 8034E498 4B FF 75 A5 */ bl SIGetResponse -/* 8034E49C 80 0D 84 AC */ lwz r0, AnalogMode(r13) -/* 8034E4A0 38 7F 00 00 */ addi r3, r31, 0 -/* 8034E4A4 64 04 00 40 */ oris r4, r0, 0x40 -/* 8034E4A8 4B FF 73 29 */ bl SISetCommand -/* 8034E4AC 80 6D 92 CC */ lwz r3, EnabledBits(r13) -/* 8034E4B0 4B FF 73 B1 */ bl SIEnablePolling -lbl_8034E4B4: -/* 8034E4B4 80 AD 92 D0 */ lwz r5, ResettingBits(r13) -/* 8034E4B8 7C A0 00 34 */ cntlzw r0, r5 -/* 8034E4BC 90 0D 84 A4 */ stw r0, ResettingChan(r13) -/* 8034E4C0 80 8D 84 A4 */ lwz r4, ResettingChan(r13) -/* 8034E4C4 2C 04 00 20 */ cmpwi r4, 0x20 -/* 8034E4C8 41 82 00 40 */ beq lbl_8034E508 -/* 8034E4CC 3C 00 80 00 */ lis r0, 0x8000 -/* 8034E4D0 7C 00 24 30 */ srw r0, r0, r4 -/* 8034E4D4 7C A0 00 78 */ andc r0, r5, r0 -/* 8034E4D8 1C 84 00 0C */ mulli r4, r4, 0xc -/* 8034E4DC 90 0D 92 D0 */ stw r0, ResettingBits(r13) -/* 8034E4E0 3C 60 80 45 */ lis r3, Origin@ha /* 0x8044CB80@ha */ -/* 8034E4E4 38 03 CB 80 */ addi r0, r3, Origin@l /* 0x8044CB80@l */ -/* 8034E4E8 7C 60 22 14 */ add r3, r0, r4 -/* 8034E4EC 38 80 00 00 */ li r4, 0 -/* 8034E4F0 38 A0 00 0C */ li r5, 0xc -/* 8034E4F4 4B CB 4F 65 */ bl memset -/* 8034E4F8 3C 80 80 35 */ lis r4, PADTypeAndStatusCallback@ha /* 0x8034E6C0@ha */ -/* 8034E4FC 80 6D 84 A4 */ lwz r3, ResettingChan(r13) -/* 8034E500 38 84 E6 C0 */ addi r4, r4, PADTypeAndStatusCallback@l /* 0x8034E6C0@l */ -/* 8034E504 4B FF 7C 51 */ bl SIGetTypeAsync -lbl_8034E508: -/* 8034E508 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8034E50C 83 E1 00 2C */ lwz r31, 0x2c(r1) -/* 8034E510 38 21 00 30 */ addi r1, r1, 0x30 -/* 8034E514 7C 08 03 A6 */ mtlr r0 -/* 8034E518 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Pad/PADOriginUpdateCallback.s b/asm/dolphin/pad/Pad/PADOriginUpdateCallback.s deleted file mode 100644 index f0b464f0b34..00000000000 --- a/asm/dolphin/pad/Pad/PADOriginUpdateCallback.s +++ /dev/null @@ -1,54 +0,0 @@ -lbl_8034E51C: -/* 8034E51C 7C 08 02 A6 */ mflr r0 -/* 8034E520 90 01 00 04 */ stw r0, 4(r1) -/* 8034E524 3C 00 80 00 */ lis r0, 0x8000 -/* 8034E528 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8034E52C 93 E1 00 24 */ stw r31, 0x24(r1) -/* 8034E530 3B E4 00 00 */ addi r31, r4, 0 -/* 8034E534 93 C1 00 20 */ stw r30, 0x20(r1) -/* 8034E538 93 A1 00 1C */ stw r29, 0x1c(r1) -/* 8034E53C 7C 7D 1B 78 */ mr r29, r3 -/* 8034E540 7C 1E EC 30 */ srw r30, r0, r29 -/* 8034E544 80 6D 92 CC */ lwz r3, EnabledBits(r13) -/* 8034E548 7C 60 F0 39 */ and. r0, r3, r30 -/* 8034E54C 41 82 00 80 */ beq lbl_8034E5CC -/* 8034E550 57 E0 07 3F */ clrlwi. r0, r31, 0x1c -/* 8034E554 40 82 00 0C */ bne lbl_8034E560 -/* 8034E558 7F A3 EB 78 */ mr r3, r29 -/* 8034E55C 4B FF FD 59 */ bl UpdateOrigin -lbl_8034E560: -/* 8034E560 57 E0 07 39 */ rlwinm. r0, r31, 0, 0x1c, 0x1c -/* 8034E564 41 82 00 68 */ beq lbl_8034E5CC -/* 8034E568 4B FE F1 8D */ bl OSDisableInterrupts -/* 8034E56C 3B E3 00 00 */ addi r31, r3, 0 -/* 8034E570 38 7E 00 00 */ addi r3, r30, 0 -/* 8034E574 4B FF 73 89 */ bl SIDisablePolling -/* 8034E578 80 0D 92 CC */ lwz r0, EnabledBits(r13) -/* 8034E57C 7F C9 F0 F8 */ nor r9, r30, r30 -/* 8034E580 80 CD 92 D8 */ lwz r6, WaitingBits(r13) -/* 8034E584 7F A3 EB 78 */ mr r3, r29 -/* 8034E588 80 AD 92 DC */ lwz r5, CheckingBits(r13) -/* 8034E58C 80 8D 92 E0 */ lwz r4, PendingBits(r13) -/* 8034E590 7C 08 48 38 */ and r8, r0, r9 -/* 8034E594 80 0D 92 E4 */ lwz r0, BarrelBits(r13) -/* 8034E598 7C C7 48 38 */ and r7, r6, r9 -/* 8034E59C 7C A6 48 38 */ and r6, r5, r9 -/* 8034E5A0 7C 85 48 38 */ and r5, r4, r9 -/* 8034E5A4 91 0D 92 CC */ stw r8, EnabledBits(r13) -/* 8034E5A8 7C 00 48 38 */ and r0, r0, r9 -/* 8034E5AC 90 ED 92 D8 */ stw r7, WaitingBits(r13) -/* 8034E5B0 38 80 00 00 */ li r4, 0 -/* 8034E5B4 90 CD 92 DC */ stw r6, CheckingBits(r13) -/* 8034E5B8 90 AD 92 E0 */ stw r5, PendingBits(r13) -/* 8034E5BC 90 0D 92 E4 */ stw r0, BarrelBits(r13) -/* 8034E5C0 4B FF 22 8D */ bl OSSetWirelessID -/* 8034E5C4 7F E3 FB 78 */ mr r3, r31 -/* 8034E5C8 4B FE F1 55 */ bl OSRestoreInterrupts -lbl_8034E5CC: -/* 8034E5CC 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8034E5D0 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 8034E5D4 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 8034E5D8 83 A1 00 1C */ lwz r29, 0x1c(r1) -/* 8034E5DC 38 21 00 28 */ addi r1, r1, 0x28 -/* 8034E5E0 7C 08 03 A6 */ mtlr r0 -/* 8034E5E4 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Pad/PADProbeCallback.s b/asm/dolphin/pad/Pad/PADProbeCallback.s deleted file mode 100644 index 541e0d64a1c..00000000000 --- a/asm/dolphin/pad/Pad/PADProbeCallback.s +++ /dev/null @@ -1,57 +0,0 @@ -lbl_8034E5E8: -/* 8034E5E8 7C 08 02 A6 */ mflr r0 -/* 8034E5EC 90 01 00 04 */ stw r0, 4(r1) -/* 8034E5F0 54 80 07 3F */ clrlwi. r0, r4, 0x1c -/* 8034E5F4 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8034E5F8 93 E1 00 2C */ stw r31, 0x2c(r1) -/* 8034E5FC 93 C1 00 28 */ stw r30, 0x28(r1) -/* 8034E600 40 82 00 54 */ bne lbl_8034E654 -/* 8034E604 83 CD 84 A4 */ lwz r30, ResettingChan(r13) -/* 8034E608 3F E0 80 00 */ lis r31, 0x8000 -/* 8034E60C 80 6D 92 CC */ lwz r3, EnabledBits(r13) -/* 8034E610 38 81 00 1C */ addi r4, r1, 0x1c -/* 8034E614 7F E0 F4 30 */ srw r0, r31, r30 -/* 8034E618 7C 60 03 78 */ or r0, r3, r0 -/* 8034E61C 90 0D 92 CC */ stw r0, EnabledBits(r13) -/* 8034E620 7F C3 F3 78 */ mr r3, r30 -/* 8034E624 4B FF 74 19 */ bl SIGetResponse -/* 8034E628 80 0D 84 AC */ lwz r0, AnalogMode(r13) -/* 8034E62C 38 7E 00 00 */ addi r3, r30, 0 -/* 8034E630 64 04 00 40 */ oris r4, r0, 0x40 -/* 8034E634 4B FF 71 9D */ bl SISetCommand -/* 8034E638 80 6D 92 CC */ lwz r3, EnabledBits(r13) -/* 8034E63C 4B FF 72 25 */ bl SIEnablePolling -/* 8034E640 80 0D 84 A4 */ lwz r0, ResettingChan(r13) -/* 8034E644 80 6D 92 D8 */ lwz r3, WaitingBits(r13) -/* 8034E648 7F E0 04 30 */ srw r0, r31, r0 -/* 8034E64C 7C 60 03 78 */ or r0, r3, r0 -/* 8034E650 90 0D 92 D8 */ stw r0, WaitingBits(r13) -lbl_8034E654: -/* 8034E654 80 AD 92 D0 */ lwz r5, ResettingBits(r13) -/* 8034E658 7C A0 00 34 */ cntlzw r0, r5 -/* 8034E65C 90 0D 84 A4 */ stw r0, ResettingChan(r13) -/* 8034E660 80 8D 84 A4 */ lwz r4, ResettingChan(r13) -/* 8034E664 2C 04 00 20 */ cmpwi r4, 0x20 -/* 8034E668 41 82 00 40 */ beq lbl_8034E6A8 -/* 8034E66C 3C 00 80 00 */ lis r0, 0x8000 -/* 8034E670 7C 00 24 30 */ srw r0, r0, r4 -/* 8034E674 7C A0 00 78 */ andc r0, r5, r0 -/* 8034E678 1C 84 00 0C */ mulli r4, r4, 0xc -/* 8034E67C 90 0D 92 D0 */ stw r0, ResettingBits(r13) -/* 8034E680 3C 60 80 45 */ lis r3, Origin@ha /* 0x8044CB80@ha */ -/* 8034E684 38 03 CB 80 */ addi r0, r3, Origin@l /* 0x8044CB80@l */ -/* 8034E688 7C 60 22 14 */ add r3, r0, r4 -/* 8034E68C 38 80 00 00 */ li r4, 0 -/* 8034E690 38 A0 00 0C */ li r5, 0xc -/* 8034E694 4B CB 4D C5 */ bl memset -/* 8034E698 3C 80 80 35 */ lis r4, PADTypeAndStatusCallback@ha /* 0x8034E6C0@ha */ -/* 8034E69C 80 6D 84 A4 */ lwz r3, ResettingChan(r13) -/* 8034E6A0 38 84 E6 C0 */ addi r4, r4, PADTypeAndStatusCallback@l /* 0x8034E6C0@l */ -/* 8034E6A4 4B FF 7A B1 */ bl SIGetTypeAsync -lbl_8034E6A8: -/* 8034E6A8 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8034E6AC 83 E1 00 2C */ lwz r31, 0x2c(r1) -/* 8034E6B0 83 C1 00 28 */ lwz r30, 0x28(r1) -/* 8034E6B4 38 21 00 30 */ addi r1, r1, 0x30 -/* 8034E6B8 7C 08 03 A6 */ mtlr r0 -/* 8034E6BC 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Pad/PADRead.s b/asm/dolphin/pad/Pad/PADRead.s deleted file mode 100644 index 691ac69a362..00000000000 --- a/asm/dolphin/pad/Pad/PADRead.s +++ /dev/null @@ -1,206 +0,0 @@ -lbl_8034EEA0: -/* 8034EEA0 7C 08 02 A6 */ mflr r0 -/* 8034EEA4 90 01 00 04 */ stw r0, 4(r1) -/* 8034EEA8 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 8034EEAC BE C1 00 18 */ stmw r22, 0x18(r1) -/* 8034EEB0 7C 77 1B 78 */ mr r23, r3 -/* 8034EEB4 4B FE E8 41 */ bl OSDisableInterrupts -/* 8034EEB8 3B 20 00 00 */ li r25, 0 -/* 8034EEBC 1C B9 00 0C */ mulli r5, r25, 0xc -/* 8034EEC0 3C 80 80 45 */ lis r4, Origin@ha /* 0x8044CB80@ha */ -/* 8034EEC4 38 04 CB 80 */ addi r0, r4, Origin@l /* 0x8044CB80@l */ -/* 8034EEC8 7F 80 2A 14 */ add r28, r0, r5 -/* 8034EECC 3C 80 80 35 */ lis r4, PADOriginUpdateCallback@ha /* 0x8034E51C@ha */ -/* 8034EED0 3C A0 80 35 */ lis r5, PADReceiveCheckCallback@ha /* 0x8034E9EC@ha */ -/* 8034EED4 3B 43 00 00 */ addi r26, r3, 0 -/* 8034EED8 3A C4 E5 1C */ addi r22, r4, PADOriginUpdateCallback@l /* 0x8034E51C@l */ -/* 8034EEDC 3B E5 E9 EC */ addi r31, r5, PADReceiveCheckCallback@l /* 0x8034E9EC@l */ -/* 8034EEE0 3B 00 00 00 */ li r24, 0 -/* 8034EEE4 3F C0 80 00 */ lis r30, 0x8000 -lbl_8034EEE8: -/* 8034EEE8 80 0D 92 E0 */ lwz r0, PendingBits(r13) -/* 8034EEEC 7F DB CC 30 */ srw r27, r30, r25 -/* 8034EEF0 7C 00 D8 39 */ and. r0, r0, r27 -/* 8034EEF4 41 82 00 28 */ beq lbl_8034EF1C -/* 8034EEF8 38 60 00 00 */ li r3, 0 -/* 8034EEFC 4B FF FC 31 */ bl PADReset -/* 8034EF00 38 00 FF FE */ li r0, -2 -/* 8034EF04 98 17 00 0A */ stb r0, 0xa(r23) -/* 8034EF08 38 77 00 00 */ addi r3, r23, 0 -/* 8034EF0C 38 80 00 00 */ li r4, 0 -/* 8034EF10 38 A0 00 0A */ li r5, 0xa -/* 8034EF14 4B CB 45 45 */ bl memset -/* 8034EF18 48 00 02 54 */ b lbl_8034F16C -lbl_8034EF1C: -/* 8034EF1C 80 0D 92 D0 */ lwz r0, ResettingBits(r13) -/* 8034EF20 7C 00 D8 39 */ and. r0, r0, r27 -/* 8034EF24 40 82 00 10 */ bne lbl_8034EF34 -/* 8034EF28 80 0D 84 A4 */ lwz r0, ResettingChan(r13) -/* 8034EF2C 7C 00 C8 00 */ cmpw r0, r25 -/* 8034EF30 40 82 00 20 */ bne lbl_8034EF50 -lbl_8034EF34: -/* 8034EF34 38 00 FF FE */ li r0, -2 -/* 8034EF38 98 17 00 0A */ stb r0, 0xa(r23) -/* 8034EF3C 38 77 00 00 */ addi r3, r23, 0 -/* 8034EF40 38 80 00 00 */ li r4, 0 -/* 8034EF44 38 A0 00 0A */ li r5, 0xa -/* 8034EF48 4B CB 45 11 */ bl memset -/* 8034EF4C 48 00 02 20 */ b lbl_8034F16C -lbl_8034EF50: -/* 8034EF50 80 0D 92 CC */ lwz r0, EnabledBits(r13) -/* 8034EF54 7C 00 D8 39 */ and. r0, r0, r27 -/* 8034EF58 40 82 00 20 */ bne lbl_8034EF78 -/* 8034EF5C 38 00 FF FF */ li r0, -1 -/* 8034EF60 98 17 00 0A */ stb r0, 0xa(r23) -/* 8034EF64 38 77 00 00 */ addi r3, r23, 0 -/* 8034EF68 38 80 00 00 */ li r4, 0 -/* 8034EF6C 38 A0 00 0A */ li r5, 0xa -/* 8034EF70 4B CB 44 E9 */ bl memset -/* 8034EF74 48 00 01 F8 */ b lbl_8034F16C -lbl_8034EF78: -/* 8034EF78 7F 23 CB 78 */ mr r3, r25 -/* 8034EF7C 4B FF 5C 45 */ bl SIIsChanBusy -/* 8034EF80 2C 03 00 00 */ cmpwi r3, 0 -/* 8034EF84 41 82 00 20 */ beq lbl_8034EFA4 -/* 8034EF88 38 00 FF FD */ li r0, -3 -/* 8034EF8C 98 17 00 0A */ stb r0, 0xa(r23) -/* 8034EF90 38 77 00 00 */ addi r3, r23, 0 -/* 8034EF94 38 80 00 00 */ li r4, 0 -/* 8034EF98 38 A0 00 0A */ li r5, 0xa -/* 8034EF9C 4B CB 44 BD */ bl memset -/* 8034EFA0 48 00 01 CC */ b lbl_8034F16C -lbl_8034EFA4: -/* 8034EFA4 7F 23 CB 78 */ mr r3, r25 -/* 8034EFA8 4B FF 67 AD */ bl SIGetStatus -/* 8034EFAC 54 60 07 39 */ rlwinm. r0, r3, 0, 0x1c, 0x1c -/* 8034EFB0 41 82 00 D8 */ beq lbl_8034F088 -/* 8034EFB4 38 79 00 00 */ addi r3, r25, 0 -/* 8034EFB8 38 81 00 10 */ addi r4, r1, 0x10 -/* 8034EFBC 4B FF 6A 81 */ bl SIGetResponse -/* 8034EFC0 80 0D 92 D8 */ lwz r0, WaitingBits(r13) -/* 8034EFC4 7C 00 D8 39 */ and. r0, r0, r27 -/* 8034EFC8 41 82 00 40 */ beq lbl_8034F008 -/* 8034EFCC 38 00 00 00 */ li r0, 0 -/* 8034EFD0 98 17 00 0A */ stb r0, 0xa(r23) -/* 8034EFD4 38 77 00 00 */ addi r3, r23, 0 -/* 8034EFD8 38 80 00 00 */ li r4, 0 -/* 8034EFDC 38 A0 00 0A */ li r5, 0xa -/* 8034EFE0 4B CB 44 79 */ bl memset -/* 8034EFE4 80 6D 92 DC */ lwz r3, CheckingBits(r13) -/* 8034EFE8 7C 60 D8 39 */ and. r0, r3, r27 -/* 8034EFEC 40 82 01 80 */ bne lbl_8034F16C -/* 8034EFF0 7C 60 DB 78 */ or r0, r3, r27 -/* 8034EFF4 90 0D 92 DC */ stw r0, CheckingBits(r13) -/* 8034EFF8 38 79 00 00 */ addi r3, r25, 0 -/* 8034EFFC 38 9F 00 00 */ addi r4, r31, 0 -/* 8034F000 4B FF 71 55 */ bl SIGetTypeAsync -/* 8034F004 48 00 01 68 */ b lbl_8034F16C -lbl_8034F008: -/* 8034F008 4B FE E6 ED */ bl OSDisableInterrupts -/* 8034F00C 3B A3 00 00 */ addi r29, r3, 0 -/* 8034F010 38 7B 00 00 */ addi r3, r27, 0 -/* 8034F014 4B FF 68 E9 */ bl SIDisablePolling -/* 8034F018 80 0D 92 CC */ lwz r0, EnabledBits(r13) -/* 8034F01C 7F 69 D8 F8 */ nor r9, r27, r27 -/* 8034F020 80 CD 92 D8 */ lwz r6, WaitingBits(r13) -/* 8034F024 7F 23 CB 78 */ mr r3, r25 -/* 8034F028 80 AD 92 DC */ lwz r5, CheckingBits(r13) -/* 8034F02C 80 8D 92 E0 */ lwz r4, PendingBits(r13) -/* 8034F030 7C 08 48 38 */ and r8, r0, r9 -/* 8034F034 80 0D 92 E4 */ lwz r0, BarrelBits(r13) -/* 8034F038 7C C7 48 38 */ and r7, r6, r9 -/* 8034F03C 7C A6 48 38 */ and r6, r5, r9 -/* 8034F040 7C 85 48 38 */ and r5, r4, r9 -/* 8034F044 91 0D 92 CC */ stw r8, EnabledBits(r13) -/* 8034F048 7C 00 48 38 */ and r0, r0, r9 -/* 8034F04C 90 ED 92 D8 */ stw r7, WaitingBits(r13) -/* 8034F050 38 80 00 00 */ li r4, 0 -/* 8034F054 90 CD 92 DC */ stw r6, CheckingBits(r13) -/* 8034F058 90 AD 92 E0 */ stw r5, PendingBits(r13) -/* 8034F05C 90 0D 92 E4 */ stw r0, BarrelBits(r13) -/* 8034F060 4B FF 17 ED */ bl OSSetWirelessID -/* 8034F064 7F A3 EB 78 */ mr r3, r29 -/* 8034F068 4B FE E6 B5 */ bl OSRestoreInterrupts -/* 8034F06C 38 00 FF FF */ li r0, -1 -/* 8034F070 98 17 00 0A */ stb r0, 0xa(r23) -/* 8034F074 38 77 00 00 */ addi r3, r23, 0 -/* 8034F078 38 80 00 00 */ li r4, 0 -/* 8034F07C 38 A0 00 0A */ li r5, 0xa -/* 8034F080 4B CB 43 D9 */ bl memset -/* 8034F084 48 00 00 E8 */ b lbl_8034F16C -lbl_8034F088: -/* 8034F088 7F 23 CB 78 */ mr r3, r25 -/* 8034F08C 4B FF 6F 05 */ bl SIGetType -/* 8034F090 54 60 00 85 */ rlwinm. r0, r3, 0, 2, 2 -/* 8034F094 40 82 00 08 */ bne lbl_8034F09C -/* 8034F098 7F 18 DB 78 */ or r24, r24, r27 -lbl_8034F09C: -/* 8034F09C 38 79 00 00 */ addi r3, r25, 0 -/* 8034F0A0 38 81 00 10 */ addi r4, r1, 0x10 -/* 8034F0A4 4B FF 69 99 */ bl SIGetResponse -/* 8034F0A8 2C 03 00 00 */ cmpwi r3, 0 -/* 8034F0AC 40 82 00 20 */ bne lbl_8034F0CC -/* 8034F0B0 38 00 FF FD */ li r0, -3 -/* 8034F0B4 98 17 00 0A */ stb r0, 0xa(r23) -/* 8034F0B8 38 77 00 00 */ addi r3, r23, 0 -/* 8034F0BC 38 80 00 00 */ li r4, 0 -/* 8034F0C0 38 A0 00 0A */ li r5, 0xa -/* 8034F0C4 4B CB 43 95 */ bl memset -/* 8034F0C8 48 00 00 A4 */ b lbl_8034F16C -lbl_8034F0CC: -/* 8034F0CC 80 01 00 10 */ lwz r0, 0x10(r1) -/* 8034F0D0 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0 -/* 8034F0D4 41 82 00 20 */ beq lbl_8034F0F4 -/* 8034F0D8 38 00 FF FD */ li r0, -3 -/* 8034F0DC 98 17 00 0A */ stb r0, 0xa(r23) -/* 8034F0E0 38 77 00 00 */ addi r3, r23, 0 -/* 8034F0E4 38 80 00 00 */ li r4, 0 -/* 8034F0E8 38 A0 00 0A */ li r5, 0xa -/* 8034F0EC 4B CB 43 6D */ bl memset -/* 8034F0F0 48 00 00 7C */ b lbl_8034F16C -lbl_8034F0F4: -/* 8034F0F4 81 8D 84 B4 */ lwz r12, MakeStatus(r13) -/* 8034F0F8 38 79 00 00 */ addi r3, r25, 0 -/* 8034F0FC 38 97 00 00 */ addi r4, r23, 0 -/* 8034F100 7D 88 03 A6 */ mtlr r12 -/* 8034F104 38 A1 00 10 */ addi r5, r1, 0x10 -/* 8034F108 4E 80 00 21 */ blrl -/* 8034F10C A0 17 00 00 */ lhz r0, 0(r23) -/* 8034F110 54 00 04 A5 */ rlwinm. r0, r0, 0, 0x12, 0x12 -/* 8034F114 41 82 00 44 */ beq lbl_8034F158 -/* 8034F118 38 00 FF FD */ li r0, -3 -/* 8034F11C 98 17 00 0A */ stb r0, 0xa(r23) -/* 8034F120 38 77 00 00 */ addi r3, r23, 0 -/* 8034F124 38 80 00 00 */ li r4, 0 -/* 8034F128 38 A0 00 0A */ li r5, 0xa -/* 8034F12C 4B CB 43 2D */ bl memset -/* 8034F130 38 79 00 00 */ addi r3, r25, 0 -/* 8034F134 38 DC 00 00 */ addi r6, r28, 0 -/* 8034F138 39 16 00 00 */ addi r8, r22, 0 -/* 8034F13C 38 8D 84 B8 */ la r4, CmdReadOrigin(r13) /* 80450A38-_SDA_BASE_ */ -/* 8034F140 38 A0 00 01 */ li r5, 1 -/* 8034F144 38 E0 00 0A */ li r7, 0xa -/* 8034F148 39 40 00 00 */ li r10, 0 -/* 8034F14C 39 20 00 00 */ li r9, 0 -/* 8034F150 4B FF 6A 3D */ bl SITransfer -/* 8034F154 48 00 00 18 */ b lbl_8034F16C -lbl_8034F158: -/* 8034F158 38 00 00 00 */ li r0, 0 -/* 8034F15C 98 17 00 0A */ stb r0, 0xa(r23) -/* 8034F160 A0 17 00 00 */ lhz r0, 0(r23) -/* 8034F164 54 00 06 6E */ rlwinm r0, r0, 0, 0x19, 0x17 -/* 8034F168 B0 17 00 00 */ sth r0, 0(r23) -lbl_8034F16C: -/* 8034F16C 3B 39 00 01 */ addi r25, r25, 1 -/* 8034F170 2C 19 00 04 */ cmpwi r25, 4 -/* 8034F174 3B 9C 00 0C */ addi r28, r28, 0xc -/* 8034F178 3A F7 00 0C */ addi r23, r23, 0xc -/* 8034F17C 41 80 FD 6C */ blt lbl_8034EEE8 -/* 8034F180 7F 43 D3 78 */ mr r3, r26 -/* 8034F184 4B FE E5 99 */ bl OSRestoreInterrupts -/* 8034F188 7F 03 C3 78 */ mr r3, r24 -/* 8034F18C BA C1 00 18 */ lmw r22, 0x18(r1) -/* 8034F190 80 01 00 44 */ lwz r0, 0x44(r1) -/* 8034F194 38 21 00 40 */ addi r1, r1, 0x40 -/* 8034F198 7C 08 03 A6 */ mtlr r0 -/* 8034F19C 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Pad/PADSetAnalogMode.s b/asm/dolphin/pad/Pad/PADSetAnalogMode.s deleted file mode 100644 index 82b6339a24f..00000000000 --- a/asm/dolphin/pad/Pad/PADSetAnalogMode.s +++ /dev/null @@ -1,30 +0,0 @@ -lbl_8034FA10: -/* 8034FA10 7C 08 02 A6 */ mflr r0 -/* 8034FA14 90 01 00 04 */ stw r0, 4(r1) -/* 8034FA18 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8034FA1C 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8034FA20 7C 7F 1B 78 */ mr r31, r3 -/* 8034FA24 4B FE DC D1 */ bl OSDisableInterrupts -/* 8034FA28 80 AD 92 CC */ lwz r5, EnabledBits(r13) -/* 8034FA2C 57 E6 40 2E */ slwi r6, r31, 8 -/* 8034FA30 80 8D 92 D8 */ lwz r4, WaitingBits(r13) -/* 8034FA34 7C 7F 1B 78 */ mr r31, r3 -/* 8034FA38 39 05 00 00 */ addi r8, r5, 0 -/* 8034FA3C 7D 07 40 F8 */ nor r7, r8, r8 -/* 8034FA40 80 0D 92 DC */ lwz r0, CheckingBits(r13) -/* 8034FA44 7C A5 28 78 */ andc r5, r5, r5 -/* 8034FA48 90 CD 84 AC */ stw r6, AnalogMode(r13) -/* 8034FA4C 7C 84 38 38 */ and r4, r4, r7 -/* 8034FA50 7C 00 38 38 */ and r0, r0, r7 -/* 8034FA54 90 AD 92 CC */ stw r5, EnabledBits(r13) -/* 8034FA58 7D 03 43 78 */ mr r3, r8 -/* 8034FA5C 90 8D 92 D8 */ stw r4, WaitingBits(r13) -/* 8034FA60 90 0D 92 DC */ stw r0, CheckingBits(r13) -/* 8034FA64 4B FF 5E 99 */ bl SIDisablePolling -/* 8034FA68 7F E3 FB 78 */ mr r3, r31 -/* 8034FA6C 4B FE DC B1 */ bl OSRestoreInterrupts -/* 8034FA70 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8034FA74 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8034FA78 38 21 00 18 */ addi r1, r1, 0x18 -/* 8034FA7C 7C 08 03 A6 */ mtlr r0 -/* 8034FA80 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Pad/PADSetSpec.s b/asm/dolphin/pad/Pad/PADSetSpec.s deleted file mode 100644 index ad8f86ebcb7..00000000000 --- a/asm/dolphin/pad/Pad/PADSetSpec.s +++ /dev/null @@ -1,30 +0,0 @@ -lbl_8034F258: -/* 8034F258 38 00 00 00 */ li r0, 0 -/* 8034F25C 2C 03 00 01 */ cmpwi r3, 1 -/* 8034F260 90 0D 92 F0 */ stw r0, __PADSpec(r13) -/* 8034F264 41 82 00 30 */ beq lbl_8034F294 -/* 8034F268 40 80 00 10 */ bge lbl_8034F278 -/* 8034F26C 2C 03 00 00 */ cmpwi r3, 0 -/* 8034F270 40 80 00 14 */ bge lbl_8034F284 -/* 8034F274 48 00 00 3C */ b lbl_8034F2B0 -lbl_8034F278: -/* 8034F278 2C 03 00 06 */ cmpwi r3, 6 -/* 8034F27C 40 80 00 34 */ bge lbl_8034F2B0 -/* 8034F280 48 00 00 24 */ b lbl_8034F2A4 -lbl_8034F284: -/* 8034F284 3C 80 80 35 */ lis r4, SPEC0_MakeStatus@ha /* 0x8034F2B8@ha */ -/* 8034F288 38 04 F2 B8 */ addi r0, r4, SPEC0_MakeStatus@l /* 0x8034F2B8@l */ -/* 8034F28C 90 0D 84 B4 */ stw r0, MakeStatus(r13) -/* 8034F290 48 00 00 20 */ b lbl_8034F2B0 -lbl_8034F294: -/* 8034F294 3C 80 80 35 */ lis r4, SPEC1_MakeStatus@ha /* 0x8034F42C@ha */ -/* 8034F298 38 04 F4 2C */ addi r0, r4, SPEC1_MakeStatus@l /* 0x8034F42C@l */ -/* 8034F29C 90 0D 84 B4 */ stw r0, MakeStatus(r13) -/* 8034F2A0 48 00 00 10 */ b lbl_8034F2B0 -lbl_8034F2A4: -/* 8034F2A4 3C 80 80 35 */ lis r4, SPEC2_MakeStatus@ha /* 0x8034F5A0@ha */ -/* 8034F2A8 38 04 F5 A0 */ addi r0, r4, SPEC2_MakeStatus@l /* 0x8034F5A0@l */ -/* 8034F2AC 90 0D 84 B4 */ stw r0, MakeStatus(r13) -lbl_8034F2B0: -/* 8034F2B0 90 6D 84 B0 */ stw r3, Spec(r13) -/* 8034F2B4 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Pad/PADTypeAndStatusCallback.s b/asm/dolphin/pad/Pad/PADTypeAndStatusCallback.s deleted file mode 100644 index 4caf7bad0ad..00000000000 --- a/asm/dolphin/pad/Pad/PADTypeAndStatusCallback.s +++ /dev/null @@ -1,214 +0,0 @@ -lbl_8034E6C0: -/* 8034E6C0 7C 08 02 A6 */ mflr r0 -/* 8034E6C4 3C C0 80 45 */ lis r6, Type@ha /* 0x8044CB70@ha */ -/* 8034E6C8 90 01 00 04 */ stw r0, 4(r1) -/* 8034E6CC 54 80 07 3F */ clrlwi. r0, r4, 0x1c -/* 8034E6D0 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 8034E6D4 93 E1 00 3C */ stw r31, 0x3c(r1) -/* 8034E6D8 3F E0 80 00 */ lis r31, 0x8000 -/* 8034E6DC 93 C1 00 38 */ stw r30, 0x38(r1) -/* 8034E6E0 3B C6 CB 70 */ addi r30, r6, Type@l /* 0x8044CB70@l */ -/* 8034E6E4 93 A1 00 34 */ stw r29, 0x34(r1) -/* 8034E6E8 93 81 00 30 */ stw r28, 0x30(r1) -/* 8034E6EC 83 AD 84 A4 */ lwz r29, ResettingChan(r13) -/* 8034E6F0 80 AD 92 D4 */ lwz r5, RecalibrateBits(r13) -/* 8034E6F4 7F FC EC 30 */ srw r28, r31, r29 -/* 8034E6F8 7C A3 E0 78 */ andc r3, r5, r28 -/* 8034E6FC 90 6D 92 D4 */ stw r3, RecalibrateBits(r13) -/* 8034E700 7C A5 E0 38 */ and r5, r5, r28 -/* 8034E704 38 60 00 01 */ li r3, 1 -/* 8034E708 41 82 00 54 */ beq lbl_8034E75C -/* 8034E70C 80 8D 92 D0 */ lwz r4, ResettingBits(r13) -/* 8034E710 7C 80 00 34 */ cntlzw r0, r4 -/* 8034E714 90 0D 84 A4 */ stw r0, ResettingChan(r13) -/* 8034E718 80 6D 84 A4 */ lwz r3, ResettingChan(r13) -/* 8034E71C 2C 03 00 20 */ cmpwi r3, 0x20 -/* 8034E720 41 82 02 AC */ beq lbl_8034E9CC -/* 8034E724 1C 03 00 0C */ mulli r0, r3, 0xc -/* 8034E728 7F E3 1C 30 */ srw r3, r31, r3 -/* 8034E72C 7C 84 18 78 */ andc r4, r4, r3 -/* 8034E730 7C 7E 02 14 */ add r3, r30, r0 -/* 8034E734 90 8D 92 D0 */ stw r4, ResettingBits(r13) -/* 8034E738 38 80 00 00 */ li r4, 0 -/* 8034E73C 38 A0 00 0C */ li r5, 0xc -/* 8034E740 38 63 00 10 */ addi r3, r3, 0x10 -/* 8034E744 4B CB 4D 15 */ bl memset -/* 8034E748 3C 80 80 35 */ lis r4, PADTypeAndStatusCallback@ha /* 0x8034E6C0@ha */ -/* 8034E74C 80 6D 84 A4 */ lwz r3, ResettingChan(r13) -/* 8034E750 38 84 E6 C0 */ addi r4, r4, PADTypeAndStatusCallback@l /* 0x8034E6C0@l */ -/* 8034E754 4B FF 7A 01 */ bl SIGetTypeAsync -/* 8034E758 48 00 02 74 */ b lbl_8034E9CC -lbl_8034E75C: -/* 8034E75C 54 86 00 2E */ rlwinm r6, r4, 0, 0, 0x17 -/* 8034E760 54 84 00 C8 */ rlwinm r4, r4, 0, 3, 4 -/* 8034E764 3C 04 F8 00 */ addis r0, r4, 0xf800 -/* 8034E768 57 A4 10 3A */ slwi r4, r29, 2 -/* 8034E76C 28 00 00 00 */ cmplwi r0, 0 -/* 8034E770 7C DE 21 2E */ stwx r6, r30, r4 -/* 8034E774 40 82 00 0C */ bne lbl_8034E780 -/* 8034E778 54 C0 01 CF */ rlwinm. r0, r6, 0, 7, 7 -/* 8034E77C 40 82 00 58 */ bne lbl_8034E7D4 -lbl_8034E780: -/* 8034E780 80 AD 92 D0 */ lwz r5, ResettingBits(r13) -/* 8034E784 7C A0 00 34 */ cntlzw r0, r5 -/* 8034E788 90 0D 84 A4 */ stw r0, ResettingChan(r13) -/* 8034E78C 80 8D 84 A4 */ lwz r4, ResettingChan(r13) -/* 8034E790 2C 04 00 20 */ cmpwi r4, 0x20 -/* 8034E794 41 82 02 38 */ beq lbl_8034E9CC -/* 8034E798 3C 60 80 00 */ lis r3, 0x8000 -/* 8034E79C 1C 04 00 0C */ mulli r0, r4, 0xc -/* 8034E7A0 7C 63 24 30 */ srw r3, r3, r4 -/* 8034E7A4 7C A4 18 78 */ andc r4, r5, r3 -/* 8034E7A8 7C 7E 02 14 */ add r3, r30, r0 -/* 8034E7AC 90 8D 92 D0 */ stw r4, ResettingBits(r13) -/* 8034E7B0 38 80 00 00 */ li r4, 0 -/* 8034E7B4 38 A0 00 0C */ li r5, 0xc -/* 8034E7B8 38 63 00 10 */ addi r3, r3, 0x10 -/* 8034E7BC 4B CB 4C 9D */ bl memset -/* 8034E7C0 3C 80 80 35 */ lis r4, PADTypeAndStatusCallback@ha /* 0x8034E6C0@ha */ -/* 8034E7C4 80 6D 84 A4 */ lwz r3, ResettingChan(r13) -/* 8034E7C8 38 84 E6 C0 */ addi r4, r4, PADTypeAndStatusCallback@l /* 0x8034E6C0@l */ -/* 8034E7CC 4B FF 79 89 */ bl SIGetTypeAsync -/* 8034E7D0 48 00 01 FC */ b lbl_8034E9CC -lbl_8034E7D4: -/* 8034E7D4 80 0D 84 B0 */ lwz r0, Spec(r13) -/* 8034E7D8 28 00 00 02 */ cmplwi r0, 2 -/* 8034E7DC 40 80 00 84 */ bge lbl_8034E860 -/* 8034E7E0 80 0D 92 CC */ lwz r0, EnabledBits(r13) -/* 8034E7E4 38 7D 00 00 */ addi r3, r29, 0 -/* 8034E7E8 38 81 00 1C */ addi r4, r1, 0x1c -/* 8034E7EC 7C 00 E3 78 */ or r0, r0, r28 -/* 8034E7F0 90 0D 92 CC */ stw r0, EnabledBits(r13) -/* 8034E7F4 4B FF 72 49 */ bl SIGetResponse -/* 8034E7F8 80 0D 84 AC */ lwz r0, AnalogMode(r13) -/* 8034E7FC 38 7D 00 00 */ addi r3, r29, 0 -/* 8034E800 64 04 00 40 */ oris r4, r0, 0x40 -/* 8034E804 4B FF 6F CD */ bl SISetCommand -/* 8034E808 80 6D 92 CC */ lwz r3, EnabledBits(r13) -/* 8034E80C 4B FF 70 55 */ bl SIEnablePolling -/* 8034E810 80 8D 92 D0 */ lwz r4, ResettingBits(r13) -/* 8034E814 7C 80 00 34 */ cntlzw r0, r4 -/* 8034E818 90 0D 84 A4 */ stw r0, ResettingChan(r13) -/* 8034E81C 80 6D 84 A4 */ lwz r3, ResettingChan(r13) -/* 8034E820 2C 03 00 20 */ cmpwi r3, 0x20 -/* 8034E824 41 82 01 A8 */ beq lbl_8034E9CC -/* 8034E828 1C 03 00 0C */ mulli r0, r3, 0xc -/* 8034E82C 7F E3 1C 30 */ srw r3, r31, r3 -/* 8034E830 7C 84 18 78 */ andc r4, r4, r3 -/* 8034E834 7C 7E 02 14 */ add r3, r30, r0 -/* 8034E838 90 8D 92 D0 */ stw r4, ResettingBits(r13) -/* 8034E83C 38 80 00 00 */ li r4, 0 -/* 8034E840 38 A0 00 0C */ li r5, 0xc -/* 8034E844 38 63 00 10 */ addi r3, r3, 0x10 -/* 8034E848 4B CB 4C 11 */ bl memset -/* 8034E84C 3C 80 80 35 */ lis r4, PADTypeAndStatusCallback@ha /* 0x8034E6C0@ha */ -/* 8034E850 80 6D 84 A4 */ lwz r3, ResettingChan(r13) -/* 8034E854 38 84 E6 C0 */ addi r4, r4, PADTypeAndStatusCallback@l /* 0x8034E6C0@l */ -/* 8034E858 4B FF 78 FD */ bl SIGetTypeAsync -/* 8034E85C 48 00 01 70 */ b lbl_8034E9CC -lbl_8034E860: -/* 8034E860 54 C0 00 01 */ rlwinm. r0, r6, 0, 0, 0 -/* 8034E864 41 82 00 0C */ beq lbl_8034E870 -/* 8034E868 54 C0 01 4B */ rlwinm. r0, r6, 0, 5, 5 -/* 8034E86C 41 82 00 74 */ beq lbl_8034E8E0 -lbl_8034E870: -/* 8034E870 28 05 00 00 */ cmplwi r5, 0 -/* 8034E874 41 82 00 38 */ beq lbl_8034E8AC -/* 8034E878 1C 1D 00 0C */ mulli r0, r29, 0xc -/* 8034E87C 3C 60 80 35 */ lis r3, PADOriginCallback@ha /* 0x8034E458@ha */ -/* 8034E880 7C DE 02 14 */ add r6, r30, r0 -/* 8034E884 39 03 E4 58 */ addi r8, r3, PADOriginCallback@l /* 0x8034E458@l */ -/* 8034E888 38 7D 00 00 */ addi r3, r29, 0 -/* 8034E88C 38 8D 84 BC */ la r4, CmdCalibrate(r13) /* 80450A3C-_SDA_BASE_ */ -/* 8034E890 38 A0 00 03 */ li r5, 3 -/* 8034E894 38 E0 00 0A */ li r7, 0xa -/* 8034E898 39 40 00 00 */ li r10, 0 -/* 8034E89C 39 20 00 00 */ li r9, 0 -/* 8034E8A0 38 C6 00 10 */ addi r6, r6, 0x10 -/* 8034E8A4 4B FF 72 E9 */ bl SITransfer -/* 8034E8A8 48 00 00 C0 */ b lbl_8034E968 -lbl_8034E8AC: -/* 8034E8AC 1C 1D 00 0C */ mulli r0, r29, 0xc -/* 8034E8B0 3C 60 80 35 */ lis r3, PADOriginCallback@ha /* 0x8034E458@ha */ -/* 8034E8B4 7C DE 02 14 */ add r6, r30, r0 -/* 8034E8B8 39 03 E4 58 */ addi r8, r3, PADOriginCallback@l /* 0x8034E458@l */ -/* 8034E8BC 38 7D 00 00 */ addi r3, r29, 0 -/* 8034E8C0 38 8D 84 B8 */ la r4, CmdReadOrigin(r13) /* 80450A38-_SDA_BASE_ */ -/* 8034E8C4 38 A0 00 01 */ li r5, 1 -/* 8034E8C8 38 E0 00 0A */ li r7, 0xa -/* 8034E8CC 39 40 00 00 */ li r10, 0 -/* 8034E8D0 39 20 00 00 */ li r9, 0 -/* 8034E8D4 38 C6 00 10 */ addi r6, r6, 0x10 -/* 8034E8D8 4B FF 72 B5 */ bl SITransfer -/* 8034E8DC 48 00 00 8C */ b lbl_8034E968 -lbl_8034E8E0: -/* 8034E8E0 54 C0 02 D7 */ rlwinm. r0, r6, 0, 0xb, 0xb -/* 8034E8E4 41 82 00 84 */ beq lbl_8034E968 -/* 8034E8E8 54 C0 03 19 */ rlwinm. r0, r6, 0, 0xc, 0xc -/* 8034E8EC 40 82 00 7C */ bne lbl_8034E968 -/* 8034E8F0 54 C0 03 5B */ rlwinm. r0, r6, 0, 0xd, 0xd -/* 8034E8F4 40 82 00 74 */ bne lbl_8034E968 -/* 8034E8F8 54 C0 00 43 */ rlwinm. r0, r6, 0, 1, 1 -/* 8034E8FC 41 82 00 38 */ beq lbl_8034E934 -/* 8034E900 1C 1D 00 0C */ mulli r0, r29, 0xc -/* 8034E904 3C 60 80 35 */ lis r3, PADOriginCallback@ha /* 0x8034E458@ha */ -/* 8034E908 7C DE 02 14 */ add r6, r30, r0 -/* 8034E90C 39 03 E4 58 */ addi r8, r3, PADOriginCallback@l /* 0x8034E458@l */ -/* 8034E910 38 7D 00 00 */ addi r3, r29, 0 -/* 8034E914 38 8D 84 B8 */ la r4, CmdReadOrigin(r13) /* 80450A38-_SDA_BASE_ */ -/* 8034E918 38 A0 00 01 */ li r5, 1 -/* 8034E91C 38 E0 00 0A */ li r7, 0xa -/* 8034E920 39 40 00 00 */ li r10, 0 -/* 8034E924 39 20 00 00 */ li r9, 0 -/* 8034E928 38 C6 00 10 */ addi r6, r6, 0x10 -/* 8034E92C 4B FF 72 61 */ bl SITransfer -/* 8034E930 48 00 00 38 */ b lbl_8034E968 -lbl_8034E934: -/* 8034E934 1C 1D 00 0C */ mulli r0, r29, 0xc -/* 8034E938 3C 60 80 35 */ lis r3, PADProbeCallback@ha /* 0x8034E5E8@ha */ -/* 8034E93C 7C 9E 22 14 */ add r4, r30, r4 -/* 8034E940 7C DE 02 14 */ add r6, r30, r0 -/* 8034E944 39 03 E5 E8 */ addi r8, r3, PADProbeCallback@l /* 0x8034E5E8@l */ -/* 8034E948 38 7D 00 00 */ addi r3, r29, 0 -/* 8034E94C 38 A0 00 03 */ li r5, 3 -/* 8034E950 38 E0 00 08 */ li r7, 8 -/* 8034E954 39 40 00 00 */ li r10, 0 -/* 8034E958 39 20 00 00 */ li r9, 0 -/* 8034E95C 38 84 00 40 */ addi r4, r4, 0x40 -/* 8034E960 38 C6 00 10 */ addi r6, r6, 0x10 -/* 8034E964 4B FF 72 29 */ bl SITransfer -lbl_8034E968: -/* 8034E968 2C 03 00 00 */ cmpwi r3, 0 -/* 8034E96C 40 82 00 60 */ bne lbl_8034E9CC -/* 8034E970 80 AD 92 D0 */ lwz r5, ResettingBits(r13) -/* 8034E974 80 6D 92 E0 */ lwz r3, PendingBits(r13) -/* 8034E978 7C A0 00 34 */ cntlzw r0, r5 -/* 8034E97C 90 0D 84 A4 */ stw r0, ResettingChan(r13) -/* 8034E980 7C 60 E3 78 */ or r0, r3, r28 -/* 8034E984 80 8D 84 A4 */ lwz r4, ResettingChan(r13) -/* 8034E988 90 0D 92 E0 */ stw r0, PendingBits(r13) -/* 8034E98C 2C 04 00 20 */ cmpwi r4, 0x20 -/* 8034E990 41 82 00 3C */ beq lbl_8034E9CC -/* 8034E994 3C 60 80 00 */ lis r3, 0x8000 -/* 8034E998 1C 04 00 0C */ mulli r0, r4, 0xc -/* 8034E99C 7C 63 24 30 */ srw r3, r3, r4 -/* 8034E9A0 7C A4 18 78 */ andc r4, r5, r3 -/* 8034E9A4 7C 7E 02 14 */ add r3, r30, r0 -/* 8034E9A8 90 8D 92 D0 */ stw r4, ResettingBits(r13) -/* 8034E9AC 38 80 00 00 */ li r4, 0 -/* 8034E9B0 38 A0 00 0C */ li r5, 0xc -/* 8034E9B4 38 63 00 10 */ addi r3, r3, 0x10 -/* 8034E9B8 4B CB 4A A1 */ bl memset -/* 8034E9BC 3C 80 80 35 */ lis r4, PADTypeAndStatusCallback@ha /* 0x8034E6C0@ha */ -/* 8034E9C0 80 6D 84 A4 */ lwz r3, ResettingChan(r13) -/* 8034E9C4 38 84 E6 C0 */ addi r4, r4, PADTypeAndStatusCallback@l /* 0x8034E6C0@l */ -/* 8034E9C8 4B FF 77 8D */ bl SIGetTypeAsync -lbl_8034E9CC: -/* 8034E9CC 80 01 00 44 */ lwz r0, 0x44(r1) -/* 8034E9D0 83 E1 00 3C */ lwz r31, 0x3c(r1) -/* 8034E9D4 83 C1 00 38 */ lwz r30, 0x38(r1) -/* 8034E9D8 83 A1 00 34 */ lwz r29, 0x34(r1) -/* 8034E9DC 83 81 00 30 */ lwz r28, 0x30(r1) -/* 8034E9E0 38 21 00 40 */ addi r1, r1, 0x40 -/* 8034E9E4 7C 08 03 A6 */ mtlr r0 -/* 8034E9E8 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Pad/SPEC0_MakeStatus.s b/asm/dolphin/pad/Pad/SPEC0_MakeStatus.s deleted file mode 100644 index c349617bff6..00000000000 --- a/asm/dolphin/pad/Pad/SPEC0_MakeStatus.s +++ /dev/null @@ -1,105 +0,0 @@ -lbl_8034F2B8: -/* 8034F2B8 38 60 00 00 */ li r3, 0 -/* 8034F2BC B0 64 00 00 */ sth r3, 0(r4) -/* 8034F2C0 80 05 00 00 */ lwz r0, 0(r5) -/* 8034F2C4 54 00 87 39 */ rlwinm. r0, r0, 0x10, 0x1c, 0x1c -/* 8034F2C8 41 82 00 08 */ beq lbl_8034F2D0 -/* 8034F2CC 38 60 01 00 */ li r3, 0x100 -lbl_8034F2D0: -/* 8034F2D0 A0 04 00 00 */ lhz r0, 0(r4) -/* 8034F2D4 7C 00 1B 78 */ or r0, r0, r3 -/* 8034F2D8 B0 04 00 00 */ sth r0, 0(r4) -/* 8034F2DC 80 05 00 00 */ lwz r0, 0(r5) -/* 8034F2E0 54 00 86 B5 */ rlwinm. r0, r0, 0x10, 0x1a, 0x1a -/* 8034F2E4 41 82 00 0C */ beq lbl_8034F2F0 -/* 8034F2E8 38 60 02 00 */ li r3, 0x200 -/* 8034F2EC 48 00 00 08 */ b lbl_8034F2F4 -lbl_8034F2F0: -/* 8034F2F0 38 60 00 00 */ li r3, 0 -lbl_8034F2F4: -/* 8034F2F4 A0 04 00 00 */ lhz r0, 0(r4) -/* 8034F2F8 7C 00 1B 78 */ or r0, r0, r3 -/* 8034F2FC B0 04 00 00 */ sth r0, 0(r4) -/* 8034F300 80 05 00 00 */ lwz r0, 0(r5) -/* 8034F304 54 00 85 EF */ rlwinm. r0, r0, 0x10, 0x17, 0x17 -/* 8034F308 41 82 00 0C */ beq lbl_8034F314 -/* 8034F30C 38 60 04 00 */ li r3, 0x400 -/* 8034F310 48 00 00 08 */ b lbl_8034F318 -lbl_8034F314: -/* 8034F314 38 60 00 00 */ li r3, 0 -lbl_8034F318: -/* 8034F318 A0 04 00 00 */ lhz r0, 0(r4) -/* 8034F31C 7C 00 1B 78 */ or r0, r0, r3 -/* 8034F320 B0 04 00 00 */ sth r0, 0(r4) -/* 8034F324 80 05 00 00 */ lwz r0, 0(r5) -/* 8034F328 54 00 87 FF */ rlwinm. r0, r0, 0x10, 0x1f, 0x1f -/* 8034F32C 41 82 00 0C */ beq lbl_8034F338 -/* 8034F330 38 60 08 00 */ li r3, 0x800 -/* 8034F334 48 00 00 08 */ b lbl_8034F33C -lbl_8034F338: -/* 8034F338 38 60 00 00 */ li r3, 0 -lbl_8034F33C: -/* 8034F33C A0 04 00 00 */ lhz r0, 0(r4) -/* 8034F340 7C 00 1B 78 */ or r0, r0, r3 -/* 8034F344 B0 04 00 00 */ sth r0, 0(r4) -/* 8034F348 80 05 00 00 */ lwz r0, 0(r5) -/* 8034F34C 54 00 86 F7 */ rlwinm. r0, r0, 0x10, 0x1b, 0x1b -/* 8034F350 41 82 00 0C */ beq lbl_8034F35C -/* 8034F354 38 C0 10 00 */ li r6, 0x1000 -/* 8034F358 48 00 00 08 */ b lbl_8034F360 -lbl_8034F35C: -/* 8034F35C 38 C0 00 00 */ li r6, 0 -lbl_8034F360: -/* 8034F360 A0 64 00 00 */ lhz r3, 0(r4) -/* 8034F364 38 00 00 00 */ li r0, 0 -/* 8034F368 7C 63 33 78 */ or r3, r3, r6 -/* 8034F36C B0 64 00 00 */ sth r3, 0(r4) -/* 8034F370 80 65 00 04 */ lwz r3, 4(r5) -/* 8034F374 54 63 84 3E */ srwi r3, r3, 0x10 -/* 8034F378 7C 63 07 74 */ extsb r3, r3 -/* 8034F37C 98 64 00 02 */ stb r3, 2(r4) -/* 8034F380 80 65 00 04 */ lwz r3, 4(r5) -/* 8034F384 54 63 46 3E */ srwi r3, r3, 0x18 -/* 8034F388 7C 63 07 74 */ extsb r3, r3 -/* 8034F38C 98 64 00 03 */ stb r3, 3(r4) -/* 8034F390 80 65 00 04 */ lwz r3, 4(r5) -/* 8034F394 7C 63 07 74 */ extsb r3, r3 -/* 8034F398 98 64 00 04 */ stb r3, 4(r4) -/* 8034F39C 80 65 00 04 */ lwz r3, 4(r5) -/* 8034F3A0 54 63 C2 3E */ srwi r3, r3, 8 -/* 8034F3A4 7C 63 07 74 */ extsb r3, r3 -/* 8034F3A8 98 64 00 05 */ stb r3, 5(r4) -/* 8034F3AC 80 65 00 00 */ lwz r3, 0(r5) -/* 8034F3B0 54 63 C6 3E */ rlwinm r3, r3, 0x18, 0x18, 0x1f -/* 8034F3B4 98 64 00 06 */ stb r3, 6(r4) -/* 8034F3B8 80 65 00 00 */ lwz r3, 0(r5) -/* 8034F3BC 98 64 00 07 */ stb r3, 7(r4) -/* 8034F3C0 98 04 00 08 */ stb r0, 8(r4) -/* 8034F3C4 98 04 00 09 */ stb r0, 9(r4) -/* 8034F3C8 88 04 00 06 */ lbz r0, 6(r4) -/* 8034F3CC 28 00 00 AA */ cmplwi r0, 0xaa -/* 8034F3D0 41 80 00 10 */ blt lbl_8034F3E0 -/* 8034F3D4 A0 04 00 00 */ lhz r0, 0(r4) -/* 8034F3D8 60 00 00 40 */ ori r0, r0, 0x40 -/* 8034F3DC B0 04 00 00 */ sth r0, 0(r4) -lbl_8034F3E0: -/* 8034F3E0 88 04 00 07 */ lbz r0, 7(r4) -/* 8034F3E4 28 00 00 AA */ cmplwi r0, 0xaa -/* 8034F3E8 41 80 00 10 */ blt lbl_8034F3F8 -/* 8034F3EC A0 04 00 00 */ lhz r0, 0(r4) -/* 8034F3F0 60 00 00 20 */ ori r0, r0, 0x20 -/* 8034F3F4 B0 04 00 00 */ sth r0, 0(r4) -lbl_8034F3F8: -/* 8034F3F8 88 64 00 02 */ lbz r3, 2(r4) -/* 8034F3FC 38 03 FF 80 */ addi r0, r3, -128 -/* 8034F400 98 04 00 02 */ stb r0, 2(r4) -/* 8034F404 88 64 00 03 */ lbz r3, 3(r4) -/* 8034F408 38 03 FF 80 */ addi r0, r3, -128 -/* 8034F40C 98 04 00 03 */ stb r0, 3(r4) -/* 8034F410 88 64 00 04 */ lbz r3, 4(r4) -/* 8034F414 38 03 FF 80 */ addi r0, r3, -128 -/* 8034F418 98 04 00 04 */ stb r0, 4(r4) -/* 8034F41C 88 64 00 05 */ lbz r3, 5(r4) -/* 8034F420 38 03 FF 80 */ addi r0, r3, -128 -/* 8034F424 98 04 00 05 */ stb r0, 5(r4) -/* 8034F428 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Pad/SPEC1_MakeStatus.s b/asm/dolphin/pad/Pad/SPEC1_MakeStatus.s deleted file mode 100644 index 0ff47a5899c..00000000000 --- a/asm/dolphin/pad/Pad/SPEC1_MakeStatus.s +++ /dev/null @@ -1,105 +0,0 @@ -lbl_8034F42C: -/* 8034F42C 38 60 00 00 */ li r3, 0 -/* 8034F430 B0 64 00 00 */ sth r3, 0(r4) -/* 8034F434 80 05 00 00 */ lwz r0, 0(r5) -/* 8034F438 54 00 86 31 */ rlwinm. r0, r0, 0x10, 0x18, 0x18 -/* 8034F43C 41 82 00 08 */ beq lbl_8034F444 -/* 8034F440 38 60 01 00 */ li r3, 0x100 -lbl_8034F444: -/* 8034F444 A0 04 00 00 */ lhz r0, 0(r4) -/* 8034F448 7C 00 1B 78 */ or r0, r0, r3 -/* 8034F44C B0 04 00 00 */ sth r0, 0(r4) -/* 8034F450 80 05 00 00 */ lwz r0, 0(r5) -/* 8034F454 54 00 85 EF */ rlwinm. r0, r0, 0x10, 0x17, 0x17 -/* 8034F458 41 82 00 0C */ beq lbl_8034F464 -/* 8034F45C 38 60 02 00 */ li r3, 0x200 -/* 8034F460 48 00 00 08 */ b lbl_8034F468 -lbl_8034F464: -/* 8034F464 38 60 00 00 */ li r3, 0 -lbl_8034F468: -/* 8034F468 A0 04 00 00 */ lhz r0, 0(r4) -/* 8034F46C 7C 00 1B 78 */ or r0, r0, r3 -/* 8034F470 B0 04 00 00 */ sth r0, 0(r4) -/* 8034F474 80 05 00 00 */ lwz r0, 0(r5) -/* 8034F478 54 00 86 B5 */ rlwinm. r0, r0, 0x10, 0x1a, 0x1a -/* 8034F47C 41 82 00 0C */ beq lbl_8034F488 -/* 8034F480 38 60 04 00 */ li r3, 0x400 -/* 8034F484 48 00 00 08 */ b lbl_8034F48C -lbl_8034F488: -/* 8034F488 38 60 00 00 */ li r3, 0 -lbl_8034F48C: -/* 8034F48C A0 04 00 00 */ lhz r0, 0(r4) -/* 8034F490 7C 00 1B 78 */ or r0, r0, r3 -/* 8034F494 B0 04 00 00 */ sth r0, 0(r4) -/* 8034F498 80 05 00 00 */ lwz r0, 0(r5) -/* 8034F49C 54 00 86 F7 */ rlwinm. r0, r0, 0x10, 0x1b, 0x1b -/* 8034F4A0 41 82 00 0C */ beq lbl_8034F4AC -/* 8034F4A4 38 60 08 00 */ li r3, 0x800 -/* 8034F4A8 48 00 00 08 */ b lbl_8034F4B0 -lbl_8034F4AC: -/* 8034F4AC 38 60 00 00 */ li r3, 0 -lbl_8034F4B0: -/* 8034F4B0 A0 04 00 00 */ lhz r0, 0(r4) -/* 8034F4B4 7C 00 1B 78 */ or r0, r0, r3 -/* 8034F4B8 B0 04 00 00 */ sth r0, 0(r4) -/* 8034F4BC 80 05 00 00 */ lwz r0, 0(r5) -/* 8034F4C0 54 00 85 AD */ rlwinm. r0, r0, 0x10, 0x16, 0x16 -/* 8034F4C4 41 82 00 0C */ beq lbl_8034F4D0 -/* 8034F4C8 38 C0 10 00 */ li r6, 0x1000 -/* 8034F4CC 48 00 00 08 */ b lbl_8034F4D4 -lbl_8034F4D0: -/* 8034F4D0 38 C0 00 00 */ li r6, 0 -lbl_8034F4D4: -/* 8034F4D4 A0 64 00 00 */ lhz r3, 0(r4) -/* 8034F4D8 38 00 00 00 */ li r0, 0 -/* 8034F4DC 7C 63 33 78 */ or r3, r3, r6 -/* 8034F4E0 B0 64 00 00 */ sth r3, 0(r4) -/* 8034F4E4 80 65 00 04 */ lwz r3, 4(r5) -/* 8034F4E8 54 63 84 3E */ srwi r3, r3, 0x10 -/* 8034F4EC 7C 63 07 74 */ extsb r3, r3 -/* 8034F4F0 98 64 00 02 */ stb r3, 2(r4) -/* 8034F4F4 80 65 00 04 */ lwz r3, 4(r5) -/* 8034F4F8 54 63 46 3E */ srwi r3, r3, 0x18 -/* 8034F4FC 7C 63 07 74 */ extsb r3, r3 -/* 8034F500 98 64 00 03 */ stb r3, 3(r4) -/* 8034F504 80 65 00 04 */ lwz r3, 4(r5) -/* 8034F508 7C 63 07 74 */ extsb r3, r3 -/* 8034F50C 98 64 00 04 */ stb r3, 4(r4) -/* 8034F510 80 65 00 04 */ lwz r3, 4(r5) -/* 8034F514 54 63 C2 3E */ srwi r3, r3, 8 -/* 8034F518 7C 63 07 74 */ extsb r3, r3 -/* 8034F51C 98 64 00 05 */ stb r3, 5(r4) -/* 8034F520 80 65 00 00 */ lwz r3, 0(r5) -/* 8034F524 54 63 C6 3E */ rlwinm r3, r3, 0x18, 0x18, 0x1f -/* 8034F528 98 64 00 06 */ stb r3, 6(r4) -/* 8034F52C 80 65 00 00 */ lwz r3, 0(r5) -/* 8034F530 98 64 00 07 */ stb r3, 7(r4) -/* 8034F534 98 04 00 08 */ stb r0, 8(r4) -/* 8034F538 98 04 00 09 */ stb r0, 9(r4) -/* 8034F53C 88 04 00 06 */ lbz r0, 6(r4) -/* 8034F540 28 00 00 AA */ cmplwi r0, 0xaa -/* 8034F544 41 80 00 10 */ blt lbl_8034F554 -/* 8034F548 A0 04 00 00 */ lhz r0, 0(r4) -/* 8034F54C 60 00 00 40 */ ori r0, r0, 0x40 -/* 8034F550 B0 04 00 00 */ sth r0, 0(r4) -lbl_8034F554: -/* 8034F554 88 04 00 07 */ lbz r0, 7(r4) -/* 8034F558 28 00 00 AA */ cmplwi r0, 0xaa -/* 8034F55C 41 80 00 10 */ blt lbl_8034F56C -/* 8034F560 A0 04 00 00 */ lhz r0, 0(r4) -/* 8034F564 60 00 00 20 */ ori r0, r0, 0x20 -/* 8034F568 B0 04 00 00 */ sth r0, 0(r4) -lbl_8034F56C: -/* 8034F56C 88 64 00 02 */ lbz r3, 2(r4) -/* 8034F570 38 03 FF 80 */ addi r0, r3, -128 -/* 8034F574 98 04 00 02 */ stb r0, 2(r4) -/* 8034F578 88 64 00 03 */ lbz r3, 3(r4) -/* 8034F57C 38 03 FF 80 */ addi r0, r3, -128 -/* 8034F580 98 04 00 03 */ stb r0, 3(r4) -/* 8034F584 88 64 00 04 */ lbz r3, 4(r4) -/* 8034F588 38 03 FF 80 */ addi r0, r3, -128 -/* 8034F58C 98 04 00 04 */ stb r0, 4(r4) -/* 8034F590 88 64 00 05 */ lbz r3, 5(r4) -/* 8034F594 38 03 FF 80 */ addi r0, r3, -128 -/* 8034F598 98 04 00 05 */ stb r0, 5(r4) -/* 8034F59C 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Pad/SamplingHandler.s b/asm/dolphin/pad/Pad/SamplingHandler.s deleted file mode 100644 index 5c7525bdb2f..00000000000 --- a/asm/dolphin/pad/Pad/SamplingHandler.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_8034FB40: -/* 8034FB40 7C 08 02 A6 */ mflr r0 -/* 8034FB44 90 01 00 04 */ stw r0, 4(r1) -/* 8034FB48 94 21 FD 20 */ stwu r1, -0x2e0(r1) -/* 8034FB4C 93 E1 02 DC */ stw r31, 0x2dc(r1) -/* 8034FB50 3B E4 00 00 */ addi r31, r4, 0 -/* 8034FB54 80 0D 92 E8 */ lwz r0, SamplingCallback(r13) -/* 8034FB58 28 00 00 00 */ cmplwi r0, 0 -/* 8034FB5C 41 82 00 30 */ beq lbl_8034FB8C -/* 8034FB60 38 61 00 10 */ addi r3, r1, 0x10 -/* 8034FB64 4B FE C4 9D */ bl OSClearContext -/* 8034FB68 38 61 00 10 */ addi r3, r1, 0x10 -/* 8034FB6C 4B FE C2 CD */ bl OSSetCurrentContext -/* 8034FB70 81 8D 92 E8 */ lwz r12, SamplingCallback(r13) -/* 8034FB74 7D 88 03 A6 */ mtlr r12 -/* 8034FB78 4E 80 00 21 */ blrl -/* 8034FB7C 38 61 00 10 */ addi r3, r1, 0x10 -/* 8034FB80 4B FE C4 81 */ bl OSClearContext -/* 8034FB84 7F E3 FB 78 */ mr r3, r31 -/* 8034FB88 4B FE C2 B1 */ bl OSSetCurrentContext -lbl_8034FB8C: -/* 8034FB8C 80 01 02 E4 */ lwz r0, 0x2e4(r1) -/* 8034FB90 83 E1 02 DC */ lwz r31, 0x2dc(r1) -/* 8034FB94 38 21 02 E0 */ addi r1, r1, 0x2e0 -/* 8034FB98 7C 08 03 A6 */ mtlr r0 -/* 8034FB9C 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Pad/UpdateOrigin.s b/asm/dolphin/pad/Pad/UpdateOrigin.s deleted file mode 100644 index 1ddee530adc..00000000000 --- a/asm/dolphin/pad/Pad/UpdateOrigin.s +++ /dev/null @@ -1,114 +0,0 @@ -lbl_8034E2B4: -/* 8034E2B4 7C 08 02 A6 */ mflr r0 -/* 8034E2B8 3C A0 80 45 */ lis r5, Origin@ha /* 0x8044CB80@ha */ -/* 8034E2BC 90 01 00 04 */ stw r0, 4(r1) -/* 8034E2C0 1C C3 00 0C */ mulli r6, r3, 0xc -/* 8034E2C4 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8034E2C8 38 A5 CB 80 */ addi r5, r5, Origin@l /* 0x8044CB80@l */ -/* 8034E2CC 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8034E2D0 7F E5 32 14 */ add r31, r5, r6 -/* 8034E2D4 80 0D 84 AC */ lwz r0, AnalogMode(r13) -/* 8034E2D8 54 04 05 6E */ rlwinm r4, r0, 0, 0x15, 0x17 -/* 8034E2DC 2C 04 04 00 */ cmpwi r4, 0x400 -/* 8034E2E0 3C 00 80 00 */ lis r0, 0x8000 -/* 8034E2E4 7C 00 1C 30 */ srw r0, r0, r3 -/* 8034E2E8 41 82 00 F4 */ beq lbl_8034E3DC -/* 8034E2EC 40 80 00 34 */ bge lbl_8034E320 -/* 8034E2F0 2C 04 02 00 */ cmpwi r4, 0x200 -/* 8034E2F4 41 82 00 B8 */ beq lbl_8034E3AC -/* 8034E2F8 40 80 00 1C */ bge lbl_8034E314 -/* 8034E2FC 2C 04 01 00 */ cmpwi r4, 0x100 -/* 8034E300 41 82 00 78 */ beq lbl_8034E378 -/* 8034E304 40 80 00 D8 */ bge lbl_8034E3DC -/* 8034E308 2C 04 00 00 */ cmpwi r4, 0 -/* 8034E30C 41 82 00 38 */ beq lbl_8034E344 -/* 8034E310 48 00 00 CC */ b lbl_8034E3DC -lbl_8034E314: -/* 8034E314 2C 04 03 00 */ cmpwi r4, 0x300 -/* 8034E318 41 82 00 C4 */ beq lbl_8034E3DC -/* 8034E31C 48 00 00 C0 */ b lbl_8034E3DC -lbl_8034E320: -/* 8034E320 2C 04 06 00 */ cmpwi r4, 0x600 -/* 8034E324 41 82 00 20 */ beq lbl_8034E344 -/* 8034E328 40 80 00 10 */ bge lbl_8034E338 -/* 8034E32C 2C 04 05 00 */ cmpwi r4, 0x500 -/* 8034E330 41 82 00 14 */ beq lbl_8034E344 -/* 8034E334 48 00 00 A8 */ b lbl_8034E3DC -lbl_8034E338: -/* 8034E338 2C 04 07 00 */ cmpwi r4, 0x700 -/* 8034E33C 41 82 00 08 */ beq lbl_8034E344 -/* 8034E340 48 00 00 9C */ b lbl_8034E3DC -lbl_8034E344: -/* 8034E344 88 9F 00 06 */ lbz r4, 6(r31) -/* 8034E348 54 84 00 36 */ rlwinm r4, r4, 0, 0, 0x1b -/* 8034E34C 98 9F 00 06 */ stb r4, 6(r31) -/* 8034E350 88 9F 00 07 */ lbz r4, 7(r31) -/* 8034E354 54 84 00 36 */ rlwinm r4, r4, 0, 0, 0x1b -/* 8034E358 98 9F 00 07 */ stb r4, 7(r31) -/* 8034E35C 88 9F 00 08 */ lbz r4, 8(r31) -/* 8034E360 54 84 00 36 */ rlwinm r4, r4, 0, 0, 0x1b -/* 8034E364 98 9F 00 08 */ stb r4, 8(r31) -/* 8034E368 88 9F 00 09 */ lbz r4, 9(r31) -/* 8034E36C 54 84 00 36 */ rlwinm r4, r4, 0, 0, 0x1b -/* 8034E370 98 9F 00 09 */ stb r4, 9(r31) -/* 8034E374 48 00 00 68 */ b lbl_8034E3DC -lbl_8034E378: -/* 8034E378 88 9F 00 04 */ lbz r4, 4(r31) -/* 8034E37C 54 84 00 36 */ rlwinm r4, r4, 0, 0, 0x1b -/* 8034E380 98 9F 00 04 */ stb r4, 4(r31) -/* 8034E384 88 9F 00 05 */ lbz r4, 5(r31) -/* 8034E388 54 84 00 36 */ rlwinm r4, r4, 0, 0, 0x1b -/* 8034E38C 98 9F 00 05 */ stb r4, 5(r31) -/* 8034E390 88 9F 00 08 */ lbz r4, 8(r31) -/* 8034E394 54 84 00 36 */ rlwinm r4, r4, 0, 0, 0x1b -/* 8034E398 98 9F 00 08 */ stb r4, 8(r31) -/* 8034E39C 88 9F 00 09 */ lbz r4, 9(r31) -/* 8034E3A0 54 84 00 36 */ rlwinm r4, r4, 0, 0, 0x1b -/* 8034E3A4 98 9F 00 09 */ stb r4, 9(r31) -/* 8034E3A8 48 00 00 34 */ b lbl_8034E3DC -lbl_8034E3AC: -/* 8034E3AC 88 9F 00 04 */ lbz r4, 4(r31) -/* 8034E3B0 54 84 00 36 */ rlwinm r4, r4, 0, 0, 0x1b -/* 8034E3B4 98 9F 00 04 */ stb r4, 4(r31) -/* 8034E3B8 88 9F 00 05 */ lbz r4, 5(r31) -/* 8034E3BC 54 84 00 36 */ rlwinm r4, r4, 0, 0, 0x1b -/* 8034E3C0 98 9F 00 05 */ stb r4, 5(r31) -/* 8034E3C4 88 9F 00 06 */ lbz r4, 6(r31) -/* 8034E3C8 54 84 00 36 */ rlwinm r4, r4, 0, 0, 0x1b -/* 8034E3CC 98 9F 00 06 */ stb r4, 6(r31) -/* 8034E3D0 88 9F 00 07 */ lbz r4, 7(r31) -/* 8034E3D4 54 84 00 36 */ rlwinm r4, r4, 0, 0, 0x1b -/* 8034E3D8 98 9F 00 07 */ stb r4, 7(r31) -lbl_8034E3DC: -/* 8034E3DC 88 9F 00 02 */ lbz r4, 2(r31) -/* 8034E3E0 38 84 FF 80 */ addi r4, r4, -128 -/* 8034E3E4 98 9F 00 02 */ stb r4, 2(r31) -/* 8034E3E8 88 9F 00 03 */ lbz r4, 3(r31) -/* 8034E3EC 38 84 FF 80 */ addi r4, r4, -128 -/* 8034E3F0 98 9F 00 03 */ stb r4, 3(r31) -/* 8034E3F4 88 9F 00 04 */ lbz r4, 4(r31) -/* 8034E3F8 38 84 FF 80 */ addi r4, r4, -128 -/* 8034E3FC 98 9F 00 04 */ stb r4, 4(r31) -/* 8034E400 88 9F 00 05 */ lbz r4, 5(r31) -/* 8034E404 38 84 FF 80 */ addi r4, r4, -128 -/* 8034E408 98 9F 00 05 */ stb r4, 5(r31) -/* 8034E40C 80 8D 84 A8 */ lwz r4, XPatchBits(r13) -/* 8034E410 7C 80 00 39 */ and. r0, r4, r0 -/* 8034E414 41 82 00 30 */ beq lbl_8034E444 -/* 8034E418 88 1F 00 02 */ lbz r0, 2(r31) -/* 8034E41C 7C 00 07 74 */ extsb r0, r0 -/* 8034E420 2C 00 00 40 */ cmpwi r0, 0x40 -/* 8034E424 40 81 00 20 */ ble lbl_8034E444 -/* 8034E428 4B FF 7B 69 */ bl SIGetType -/* 8034E42C 54 63 00 1E */ rlwinm r3, r3, 0, 0, 0xf -/* 8034E430 3C 03 F7 00 */ addis r0, r3, 0xf700 -/* 8034E434 28 00 00 00 */ cmplwi r0, 0 -/* 8034E438 40 82 00 0C */ bne lbl_8034E444 -/* 8034E43C 38 00 00 00 */ li r0, 0 -/* 8034E440 98 1F 00 02 */ stb r0, 2(r31) -lbl_8034E444: -/* 8034E444 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8034E448 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8034E44C 38 21 00 18 */ addi r1, r1, 0x18 -/* 8034E450 7C 08 03 A6 */ mtlr r0 -/* 8034E454 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Padclamp/ClampStick.s b/asm/dolphin/pad/Padclamp/ClampStick.s deleted file mode 100644 index 0addcb013e0..00000000000 --- a/asm/dolphin/pad/Padclamp/ClampStick.s +++ /dev/null @@ -1,88 +0,0 @@ -lbl_8034DDBC: -/* 8034DDBC 88 03 00 00 */ lbz r0, 0(r3) -/* 8034DDC0 89 84 00 00 */ lbz r12, 0(r4) -/* 8034DDC4 7C 00 07 75 */ extsb. r0, r0 -/* 8034DDC8 7D 8C 07 74 */ extsb r12, r12 -/* 8034DDCC 7C 0B 03 78 */ mr r11, r0 -/* 8034DDD0 41 80 00 0C */ blt lbl_8034DDDC -/* 8034DDD4 38 00 00 01 */ li r0, 1 -/* 8034DDD8 48 00 00 0C */ b lbl_8034DDE4 -lbl_8034DDDC: -/* 8034DDDC 38 00 FF FF */ li r0, -1 -/* 8034DDE0 7D 6B 00 D0 */ neg r11, r11 -lbl_8034DDE4: -/* 8034DDE4 2C 0C 00 00 */ cmpwi r12, 0 -/* 8034DDE8 41 80 00 0C */ blt lbl_8034DDF4 -/* 8034DDEC 39 00 00 01 */ li r8, 1 -/* 8034DDF0 48 00 00 0C */ b lbl_8034DDFC -lbl_8034DDF4: -/* 8034DDF4 39 00 FF FF */ li r8, -1 -/* 8034DDF8 7D 8C 00 D0 */ neg r12, r12 -lbl_8034DDFC: -/* 8034DDFC 7C E7 07 74 */ extsb r7, r7 -/* 8034DE00 7C 0B 38 00 */ cmpw r11, r7 -/* 8034DE04 41 81 00 0C */ bgt lbl_8034DE10 -/* 8034DE08 39 60 00 00 */ li r11, 0 -/* 8034DE0C 48 00 00 08 */ b lbl_8034DE14 -lbl_8034DE10: -/* 8034DE10 7D 67 58 50 */ subf r11, r7, r11 -lbl_8034DE14: -/* 8034DE14 7C 0C 38 00 */ cmpw r12, r7 -/* 8034DE18 41 81 00 0C */ bgt lbl_8034DE24 -/* 8034DE1C 39 80 00 00 */ li r12, 0 -/* 8034DE20 48 00 00 08 */ b lbl_8034DE28 -lbl_8034DE24: -/* 8034DE24 7D 87 60 50 */ subf r12, r7, r12 -lbl_8034DE28: -/* 8034DE28 2C 0B 00 00 */ cmpwi r11, 0 -/* 8034DE2C 40 82 00 1C */ bne lbl_8034DE48 -/* 8034DE30 2C 0C 00 00 */ cmpwi r12, 0 -/* 8034DE34 40 82 00 14 */ bne lbl_8034DE48 -/* 8034DE38 38 00 00 00 */ li r0, 0 -/* 8034DE3C 98 04 00 00 */ stb r0, 0(r4) -/* 8034DE40 98 03 00 00 */ stb r0, 0(r3) -/* 8034DE44 4E 80 00 20 */ blr -lbl_8034DE48: -/* 8034DE48 7C C6 07 74 */ extsb r6, r6 -/* 8034DE4C 7D 26 61 D6 */ mullw r9, r6, r12 -/* 8034DE50 7C E6 59 D6 */ mullw r7, r6, r11 -/* 8034DE54 7C 09 38 00 */ cmpw r9, r7 -/* 8034DE58 41 81 00 44 */ bgt lbl_8034DE9C -/* 8034DE5C 7C A9 07 74 */ extsb r9, r5 -/* 8034DE60 7C A6 48 50 */ subf r5, r6, r9 -/* 8034DE64 7C AC 29 D6 */ mullw r5, r12, r5 -/* 8034DE68 7D 26 49 D6 */ mullw r9, r6, r9 -/* 8034DE6C 7C E7 2A 14 */ add r7, r7, r5 -/* 8034DE70 7C 09 38 00 */ cmpw r9, r7 -/* 8034DE74 40 80 00 64 */ bge lbl_8034DED8 -/* 8034DE78 7C CB 49 D6 */ mullw r6, r11, r9 -/* 8034DE7C 7C AC 49 D6 */ mullw r5, r12, r9 -/* 8034DE80 7C C6 3B D6 */ divw r6, r6, r7 -/* 8034DE84 7C A5 3B D6 */ divw r5, r5, r7 -/* 8034DE88 7C C6 07 74 */ extsb r6, r6 -/* 8034DE8C 7C A5 07 74 */ extsb r5, r5 -/* 8034DE90 39 66 00 00 */ addi r11, r6, 0 -/* 8034DE94 39 85 00 00 */ addi r12, r5, 0 -/* 8034DE98 48 00 00 40 */ b lbl_8034DED8 -lbl_8034DE9C: -/* 8034DE9C 7C A7 07 74 */ extsb r7, r5 -/* 8034DEA0 7C A6 38 50 */ subf r5, r6, r7 -/* 8034DEA4 7C AB 29 D6 */ mullw r5, r11, r5 -/* 8034DEA8 7D 46 39 D6 */ mullw r10, r6, r7 -/* 8034DEAC 7C E9 2A 14 */ add r7, r9, r5 -/* 8034DEB0 7C 0A 38 00 */ cmpw r10, r7 -/* 8034DEB4 40 80 00 24 */ bge lbl_8034DED8 -/* 8034DEB8 7C CB 51 D6 */ mullw r6, r11, r10 -/* 8034DEBC 7C AC 51 D6 */ mullw r5, r12, r10 -/* 8034DEC0 7C C6 3B D6 */ divw r6, r6, r7 -/* 8034DEC4 7C A5 3B D6 */ divw r5, r5, r7 -/* 8034DEC8 7C C6 07 74 */ extsb r6, r6 -/* 8034DECC 7C A5 07 74 */ extsb r5, r5 -/* 8034DED0 39 66 00 00 */ addi r11, r6, 0 -/* 8034DED4 39 85 00 00 */ addi r12, r5, 0 -lbl_8034DED8: -/* 8034DED8 7C A0 59 D6 */ mullw r5, r0, r11 -/* 8034DEDC 7C 08 61 D6 */ mullw r0, r8, r12 -/* 8034DEE0 98 A3 00 00 */ stb r5, 0(r3) -/* 8034DEE4 98 04 00 00 */ stb r0, 0(r4) -/* 8034DEE8 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Padclamp/PADClamp.s b/asm/dolphin/pad/Padclamp/PADClamp.s deleted file mode 100644 index 932d27a6109..00000000000 --- a/asm/dolphin/pad/Padclamp/PADClamp.s +++ /dev/null @@ -1,77 +0,0 @@ -lbl_8034E094: -/* 8034E094 7C 08 02 A6 */ mflr r0 -/* 8034E098 3C 80 80 3A */ lis r4, ClampRegion@ha /* 0x803A2170@ha */ -/* 8034E09C 90 01 00 04 */ stw r0, 4(r1) -/* 8034E0A0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8034E0A4 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8034E0A8 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8034E0AC 3B C0 00 00 */ li r30, 0 -/* 8034E0B0 93 A1 00 14 */ stw r29, 0x14(r1) -/* 8034E0B4 3B A3 00 00 */ addi r29, r3, 0 -/* 8034E0B8 93 81 00 10 */ stw r28, 0x10(r1) -/* 8034E0BC 3B 84 21 70 */ addi r28, r4, ClampRegion@l /* 0x803A2170@l */ -/* 8034E0C0 3B FC 00 01 */ addi r31, r28, 1 -lbl_8034E0C4: -/* 8034E0C4 88 1D 00 0A */ lbz r0, 0xa(r29) -/* 8034E0C8 7C 00 07 75 */ extsb. r0, r0 -/* 8034E0CC 40 82 00 AC */ bne lbl_8034E178 -/* 8034E0D0 88 BC 00 03 */ lbz r5, 3(r28) -/* 8034E0D4 38 7D 00 02 */ addi r3, r29, 2 -/* 8034E0D8 88 DC 00 04 */ lbz r6, 4(r28) -/* 8034E0DC 38 9D 00 03 */ addi r4, r29, 3 -/* 8034E0E0 88 FC 00 02 */ lbz r7, 2(r28) -/* 8034E0E4 4B FF FC D9 */ bl ClampStick -/* 8034E0E8 88 BC 00 06 */ lbz r5, 6(r28) -/* 8034E0EC 38 7D 00 04 */ addi r3, r29, 4 -/* 8034E0F0 88 DC 00 07 */ lbz r6, 7(r28) -/* 8034E0F4 38 9D 00 05 */ addi r4, r29, 5 -/* 8034E0F8 88 FC 00 05 */ lbz r7, 5(r28) -/* 8034E0FC 4B FF FC C1 */ bl ClampStick -/* 8034E100 88 9D 00 06 */ lbz r4, 6(r29) -/* 8034E104 88 1C 00 00 */ lbz r0, 0(r28) -/* 8034E108 88 7F 00 00 */ lbz r3, 0(r31) -/* 8034E10C 7C 04 00 40 */ cmplw r4, r0 -/* 8034E110 41 81 00 10 */ bgt lbl_8034E120 -/* 8034E114 38 00 00 00 */ li r0, 0 -/* 8034E118 98 1D 00 06 */ stb r0, 6(r29) -/* 8034E11C 48 00 00 20 */ b lbl_8034E13C -lbl_8034E120: -/* 8034E120 7C 03 20 40 */ cmplw r3, r4 -/* 8034E124 40 80 00 08 */ bge lbl_8034E12C -/* 8034E128 98 7D 00 06 */ stb r3, 6(r29) -lbl_8034E12C: -/* 8034E12C 88 7C 00 00 */ lbz r3, 0(r28) -/* 8034E130 88 1D 00 06 */ lbz r0, 6(r29) -/* 8034E134 7C 03 00 50 */ subf r0, r3, r0 -/* 8034E138 98 1D 00 06 */ stb r0, 6(r29) -lbl_8034E13C: -/* 8034E13C 88 9D 00 07 */ lbz r4, 7(r29) -/* 8034E140 88 1C 00 00 */ lbz r0, 0(r28) -/* 8034E144 88 7F 00 00 */ lbz r3, 0(r31) -/* 8034E148 7C 04 00 40 */ cmplw r4, r0 -/* 8034E14C 41 81 00 10 */ bgt lbl_8034E15C -/* 8034E150 38 00 00 00 */ li r0, 0 -/* 8034E154 98 1D 00 07 */ stb r0, 7(r29) -/* 8034E158 48 00 00 20 */ b lbl_8034E178 -lbl_8034E15C: -/* 8034E15C 7C 03 20 40 */ cmplw r3, r4 -/* 8034E160 40 80 00 08 */ bge lbl_8034E168 -/* 8034E164 98 7D 00 07 */ stb r3, 7(r29) -lbl_8034E168: -/* 8034E168 88 7C 00 00 */ lbz r3, 0(r28) -/* 8034E16C 88 1D 00 07 */ lbz r0, 7(r29) -/* 8034E170 7C 03 00 50 */ subf r0, r3, r0 -/* 8034E174 98 1D 00 07 */ stb r0, 7(r29) -lbl_8034E178: -/* 8034E178 3B DE 00 01 */ addi r30, r30, 1 -/* 8034E17C 2C 1E 00 04 */ cmpwi r30, 4 -/* 8034E180 3B BD 00 0C */ addi r29, r29, 0xc -/* 8034E184 41 80 FF 40 */ blt lbl_8034E0C4 -/* 8034E188 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8034E18C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8034E190 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8034E194 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 8034E198 83 81 00 10 */ lwz r28, 0x10(r1) -/* 8034E19C 38 21 00 20 */ addi r1, r1, 0x20 -/* 8034E1A0 7C 08 03 A6 */ mtlr r0 -/* 8034E1A4 4E 80 00 20 */ blr diff --git a/asm/dolphin/pad/Padclamp/PADClampCircle.s b/asm/dolphin/pad/Padclamp/PADClampCircle.s deleted file mode 100644 index 44011d08ad0..00000000000 --- a/asm/dolphin/pad/Padclamp/PADClampCircle.s +++ /dev/null @@ -1,75 +0,0 @@ -lbl_8034E1A8: -/* 8034E1A8 7C 08 02 A6 */ mflr r0 -/* 8034E1AC 3C 80 80 3A */ lis r4, ClampRegion@ha /* 0x803A2170@ha */ -/* 8034E1B0 90 01 00 04 */ stw r0, 4(r1) -/* 8034E1B4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8034E1B8 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8034E1BC 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8034E1C0 3B C0 00 00 */ li r30, 0 -/* 8034E1C4 93 A1 00 14 */ stw r29, 0x14(r1) -/* 8034E1C8 3B A3 00 00 */ addi r29, r3, 0 -/* 8034E1CC 93 81 00 10 */ stw r28, 0x10(r1) -/* 8034E1D0 3B 84 21 70 */ addi r28, r4, ClampRegion@l /* 0x803A2170@l */ -/* 8034E1D4 3B FC 00 01 */ addi r31, r28, 1 -lbl_8034E1D8: -/* 8034E1D8 88 1D 00 0A */ lbz r0, 0xa(r29) -/* 8034E1DC 7C 00 07 75 */ extsb. r0, r0 -/* 8034E1E0 40 82 00 A4 */ bne lbl_8034E284 -/* 8034E1E4 88 BC 00 08 */ lbz r5, 8(r28) -/* 8034E1E8 38 7D 00 02 */ addi r3, r29, 2 -/* 8034E1EC 88 DC 00 02 */ lbz r6, 2(r28) -/* 8034E1F0 38 9D 00 03 */ addi r4, r29, 3 -/* 8034E1F4 4B FF FC F9 */ bl ClampCircle -/* 8034E1F8 88 BC 00 09 */ lbz r5, 9(r28) -/* 8034E1FC 38 7D 00 04 */ addi r3, r29, 4 -/* 8034E200 88 DC 00 05 */ lbz r6, 5(r28) -/* 8034E204 38 9D 00 05 */ addi r4, r29, 5 -/* 8034E208 4B FF FC E5 */ bl ClampCircle -/* 8034E20C 88 9D 00 06 */ lbz r4, 6(r29) -/* 8034E210 88 1C 00 00 */ lbz r0, 0(r28) -/* 8034E214 88 7F 00 00 */ lbz r3, 0(r31) -/* 8034E218 7C 04 00 40 */ cmplw r4, r0 -/* 8034E21C 41 81 00 10 */ bgt lbl_8034E22C -/* 8034E220 38 00 00 00 */ li r0, 0 -/* 8034E224 98 1D 00 06 */ stb r0, 6(r29) -/* 8034E228 48 00 00 20 */ b lbl_8034E248 -lbl_8034E22C: -/* 8034E22C 7C 03 20 40 */ cmplw r3, r4 -/* 8034E230 40 80 00 08 */ bge lbl_8034E238 -/* 8034E234 98 7D 00 06 */ stb r3, 6(r29) -lbl_8034E238: -/* 8034E238 88 7C 00 00 */ lbz r3, 0(r28) -/* 8034E23C 88 1D 00 06 */ lbz r0, 6(r29) -/* 8034E240 7C 03 00 50 */ subf r0, r3, r0 -/* 8034E244 98 1D 00 06 */ stb r0, 6(r29) -lbl_8034E248: -/* 8034E248 88 9D 00 07 */ lbz r4, 7(r29) -/* 8034E24C 88 1C 00 00 */ lbz r0, 0(r28) -/* 8034E250 88 7F 00 00 */ lbz r3, 0(r31) -/* 8034E254 7C 04 00 40 */ cmplw r4, r0 -/* 8034E258 41 81 00 10 */ bgt lbl_8034E268 -/* 8034E25C 38 00 00 00 */ li r0, 0 -/* 8034E260 98 1D 00 07 */ stb r0, 7(r29) -/* 8034E264 48 00 00 20 */ b lbl_8034E284 -lbl_8034E268: -/* 8034E268 7C 03 20 40 */ cmplw r3, r4 -/* 8034E26C 40 80 00 08 */ bge lbl_8034E274 -/* 8034E270 98 7D 00 07 */ stb r3, 7(r29) -lbl_8034E274: -/* 8034E274 88 7C 00 00 */ lbz r3, 0(r28) -/* 8034E278 88 1D 00 07 */ lbz r0, 7(r29) -/* 8034E27C 7C 03 00 50 */ subf r0, r3, r0 -/* 8034E280 98 1D 00 07 */ stb r0, 7(r29) -lbl_8034E284: -/* 8034E284 3B DE 00 01 */ addi r30, r30, 1 -/* 8034E288 2C 1E 00 04 */ cmpwi r30, 4 -/* 8034E28C 3B BD 00 0C */ addi r29, r29, 0xc -/* 8034E290 41 80 FF 48 */ blt lbl_8034E1D8 -/* 8034E294 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8034E298 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8034E29C 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8034E2A0 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 8034E2A4 83 81 00 10 */ lwz r28, 0x10(r1) -/* 8034E2A8 38 21 00 20 */ addi r1, r1, 0x20 -/* 8034E2AC 7C 08 03 A6 */ mtlr r0 -/* 8034E2B0 4E 80 00 20 */ blr diff --git a/asm/dolphin/si/SIBios/AlarmHandler.s b/asm/dolphin/si/SIBios/AlarmHandler.s deleted file mode 100644 index bfd235c63f7..00000000000 --- a/asm/dolphin/si/SIBios/AlarmHandler.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_80345B00: -/* 80345B00 7C 08 02 A6 */ mflr r0 -/* 80345B04 3C 80 80 45 */ lis r4, Alarm@ha /* 0x8044C6B0@ha */ -/* 80345B08 90 01 00 04 */ stw r0, 4(r1) -/* 80345B0C 38 04 C6 B0 */ addi r0, r4, Alarm@l /* 0x8044C6B0@l */ -/* 80345B10 3C 80 66 66 */ lis r4, 0x6666 /* 0x66666667@ha */ -/* 80345B14 7C 00 18 50 */ subf r0, r0, r3 -/* 80345B18 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80345B1C 38 64 66 67 */ addi r3, r4, 0x6667 /* 0x66666667@l */ -/* 80345B20 7C 03 00 96 */ mulhw r0, r3, r0 -/* 80345B24 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80345B28 7C 00 26 70 */ srawi r0, r0, 4 -/* 80345B2C 54 03 0F FE */ srwi r3, r0, 0x1f -/* 80345B30 7C 00 1A 14 */ add r0, r0, r3 -/* 80345B34 3C 60 80 45 */ lis r3, Packet@ha /* 0x8044C630@ha */ -/* 80345B38 54 04 28 34 */ slwi r4, r0, 5 -/* 80345B3C 38 03 C6 30 */ addi r0, r3, Packet@l /* 0x8044C630@l */ -/* 80345B40 7F E0 22 14 */ add r31, r0, r4 -/* 80345B44 80 7F 00 00 */ lwz r3, 0(r31) -/* 80345B48 2C 03 FF FF */ cmpwi r3, -1 -/* 80345B4C 41 82 00 2C */ beq lbl_80345B78 -/* 80345B50 80 9F 00 04 */ lwz r4, 4(r31) -/* 80345B54 80 BF 00 08 */ lwz r5, 8(r31) -/* 80345B58 80 DF 00 0C */ lwz r6, 0xc(r31) -/* 80345B5C 80 FF 00 10 */ lwz r7, 0x10(r31) -/* 80345B60 81 1F 00 14 */ lwz r8, 0x14(r31) -/* 80345B64 4B FF F9 E5 */ bl __SITransfer -/* 80345B68 2C 03 00 00 */ cmpwi r3, 0 -/* 80345B6C 41 82 00 0C */ beq lbl_80345B78 -/* 80345B70 38 00 FF FF */ li r0, -1 -/* 80345B74 90 1F 00 00 */ stw r0, 0(r31) -lbl_80345B78: -/* 80345B78 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80345B7C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80345B80 38 21 00 20 */ addi r1, r1, 0x20 -/* 80345B84 7C 08 03 A6 */ mtlr r0 -/* 80345B88 4E 80 00 20 */ blr diff --git a/asm/dolphin/si/SIBios/CompleteTransfer.s b/asm/dolphin/si/SIBios/CompleteTransfer.s deleted file mode 100644 index 93ff6eb3035..00000000000 --- a/asm/dolphin/si/SIBios/CompleteTransfer.s +++ /dev/null @@ -1,206 +0,0 @@ -lbl_80344BFC: -/* 80344BFC 7C 08 02 A6 */ mflr r0 -/* 80344C00 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006400@ha */ -/* 80344C04 90 01 00 04 */ stw r0, 4(r1) -/* 80344C08 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80344C0C 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80344C10 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80344C14 3B C3 64 00 */ addi r30, r3, 0x6400 /* 0xCC006400@l */ -/* 80344C18 93 A1 00 14 */ stw r29, 0x14(r1) -/* 80344C1C 3B BE 00 34 */ addi r29, r30, 0x34 -/* 80344C20 93 81 00 10 */ stw r28, 0x10(r1) -/* 80344C24 80 03 64 34 */ lwz r0, 0x6434(r3) -/* 80344C28 83 83 64 38 */ lwz r28, 0x6438(r3) -/* 80344C2C 3C 60 80 3D */ lis r3, lit_1@ha /* 0x803D11B8@ha */ -/* 80344C30 64 00 80 00 */ oris r0, r0, 0x8000 -/* 80344C34 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e -/* 80344C38 90 1E 00 34 */ stw r0, 0x34(r30) -/* 80344C3C 3B E3 11 B8 */ addi r31, r3, lit_1@l /* 0x803D11B8@l */ -/* 80344C40 80 1F 00 44 */ lwz r0, 0x44(r31) -/* 80344C44 2C 00 FF FF */ cmpwi r0, -1 -/* 80344C48 41 82 02 74 */ beq lbl_80344EBC -/* 80344C4C 4B FF DA D1 */ bl __OSGetSystemTime -/* 80344C50 80 DF 00 44 */ lwz r6, 0x44(r31) -/* 80344C54 3C A0 80 45 */ lis r5, XferTime@ha /* 0x8044C770@ha */ -/* 80344C58 38 05 C7 70 */ addi r0, r5, XferTime@l /* 0x8044C770@l */ -/* 80344C5C 54 C5 18 38 */ slwi r5, r6, 3 -/* 80344C60 7C A0 2A 14 */ add r5, r0, r5 -/* 80344C64 90 85 00 04 */ stw r4, 4(r5) -/* 80344C68 38 DF 00 4C */ addi r6, r31, 0x4c -/* 80344C6C 38 80 00 00 */ li r4, 0 -/* 80344C70 90 65 00 00 */ stw r3, 0(r5) -/* 80344C74 80 1F 00 4C */ lwz r0, 0x4c(r31) -/* 80344C78 80 BF 00 50 */ lwz r5, 0x50(r31) -/* 80344C7C 54 07 F0 BE */ srwi r7, r0, 2 -/* 80344C80 28 07 00 00 */ cmplwi r7, 0 -/* 80344C84 40 81 00 A0 */ ble lbl_80344D24 -/* 80344C88 28 07 00 08 */ cmplwi r7, 8 -/* 80344C8C 38 67 FF F8 */ addi r3, r7, -8 -/* 80344C90 40 81 02 34 */ ble lbl_80344EC4 -/* 80344C94 38 03 00 07 */ addi r0, r3, 7 -/* 80344C98 54 00 E8 FE */ srwi r0, r0, 3 -/* 80344C9C 28 03 00 00 */ cmplwi r3, 0 -/* 80344CA0 7C 09 03 A6 */ mtctr r0 -/* 80344CA4 40 81 02 20 */ ble lbl_80344EC4 -lbl_80344CA8: -/* 80344CA8 80 1E 00 80 */ lwz r0, 0x80(r30) -/* 80344CAC 38 84 00 08 */ addi r4, r4, 8 -/* 80344CB0 90 05 00 00 */ stw r0, 0(r5) -/* 80344CB4 80 1E 00 84 */ lwz r0, 0x84(r30) -/* 80344CB8 90 05 00 04 */ stw r0, 4(r5) -/* 80344CBC 80 1E 00 88 */ lwz r0, 0x88(r30) -/* 80344CC0 90 05 00 08 */ stw r0, 8(r5) -/* 80344CC4 80 1E 00 8C */ lwz r0, 0x8c(r30) -/* 80344CC8 90 05 00 0C */ stw r0, 0xc(r5) -/* 80344CCC 80 1E 00 90 */ lwz r0, 0x90(r30) -/* 80344CD0 90 05 00 10 */ stw r0, 0x10(r5) -/* 80344CD4 80 1E 00 94 */ lwz r0, 0x94(r30) -/* 80344CD8 90 05 00 14 */ stw r0, 0x14(r5) -/* 80344CDC 80 1E 00 98 */ lwz r0, 0x98(r30) -/* 80344CE0 90 05 00 18 */ stw r0, 0x18(r5) -/* 80344CE4 80 1E 00 9C */ lwz r0, 0x9c(r30) -/* 80344CE8 3B DE 00 20 */ addi r30, r30, 0x20 -/* 80344CEC 90 05 00 1C */ stw r0, 0x1c(r5) -/* 80344CF0 38 A5 00 20 */ addi r5, r5, 0x20 -/* 80344CF4 42 00 FF B4 */ bdnz lbl_80344CA8 -/* 80344CF8 48 00 01 CC */ b lbl_80344EC4 -lbl_80344CFC: -/* 80344CFC 7C 04 38 50 */ subf r0, r4, r7 -/* 80344D00 7C 04 38 40 */ cmplw r4, r7 -/* 80344D04 7C 09 03 A6 */ mtctr r0 -/* 80344D08 40 80 00 1C */ bge lbl_80344D24 -lbl_80344D0C: -/* 80344D0C 80 03 00 80 */ lwz r0, 0x80(r3) -/* 80344D10 38 63 00 04 */ addi r3, r3, 4 -/* 80344D14 38 84 00 01 */ addi r4, r4, 1 -/* 80344D18 90 05 00 00 */ stw r0, 0(r5) -/* 80344D1C 38 A5 00 04 */ addi r5, r5, 4 -/* 80344D20 42 00 FF EC */ bdnz lbl_80344D0C -lbl_80344D24: -/* 80344D24 80 06 00 00 */ lwz r0, 0(r6) -/* 80344D28 54 03 07 BF */ clrlwi. r3, r0, 0x1e -/* 80344D2C 41 82 01 10 */ beq lbl_80344E3C -/* 80344D30 3C C0 CC 00 */ lis r6, 0xCC00 /* 0xCC006400@ha */ -/* 80344D34 38 C6 64 00 */ addi r6, r6, 0x6400 /* 0xCC006400@l */ -/* 80344D38 54 80 10 3A */ slwi r0, r4, 2 -/* 80344D3C 7C 86 02 14 */ add r4, r6, r0 -/* 80344D40 80 C4 00 80 */ lwz r6, 0x80(r4) -/* 80344D44 38 80 00 00 */ li r4, 0 -/* 80344D48 40 81 00 F4 */ ble lbl_80344E3C -/* 80344D4C 28 03 00 08 */ cmplwi r3, 8 -/* 80344D50 38 E3 FF F8 */ addi r7, r3, -8 -/* 80344D54 40 81 00 BC */ ble lbl_80344E10 -/* 80344D58 38 07 00 07 */ addi r0, r7, 7 -/* 80344D5C 54 00 E8 FE */ srwi r0, r0, 3 -/* 80344D60 28 07 00 00 */ cmplwi r7, 0 -/* 80344D64 7C 09 03 A6 */ mtctr r0 -/* 80344D68 40 81 00 A8 */ ble lbl_80344E10 -lbl_80344D6C: -/* 80344D6C 20 04 00 03 */ subfic r0, r4, 3 -/* 80344D70 54 07 18 38 */ slwi r7, r0, 3 -/* 80344D74 38 04 00 01 */ addi r0, r4, 1 -/* 80344D78 7C C7 3C 30 */ srw r7, r6, r7 -/* 80344D7C 20 00 00 03 */ subfic r0, r0, 3 -/* 80344D80 98 E5 00 00 */ stb r7, 0(r5) -/* 80344D84 54 00 18 38 */ slwi r0, r0, 3 -/* 80344D88 38 E4 00 02 */ addi r7, r4, 2 -/* 80344D8C 7C C0 04 30 */ srw r0, r6, r0 -/* 80344D90 20 E7 00 03 */ subfic r7, r7, 3 -/* 80344D94 98 05 00 01 */ stb r0, 1(r5) -/* 80344D98 54 E7 18 38 */ slwi r7, r7, 3 -/* 80344D9C 7C CC 3C 30 */ srw r12, r6, r7 -/* 80344DA0 7C E4 00 D0 */ neg r7, r4 -/* 80344DA4 99 85 00 02 */ stb r12, 2(r5) -/* 80344DA8 54 E8 18 38 */ slwi r8, r7, 3 -/* 80344DAC 38 E4 00 04 */ addi r7, r4, 4 -/* 80344DB0 7C CB 44 30 */ srw r11, r6, r8 -/* 80344DB4 20 E7 00 03 */ subfic r7, r7, 3 -/* 80344DB8 99 65 00 03 */ stb r11, 3(r5) -/* 80344DBC 54 E8 18 38 */ slwi r8, r7, 3 -/* 80344DC0 38 E4 00 05 */ addi r7, r4, 5 -/* 80344DC4 7C CA 44 30 */ srw r10, r6, r8 -/* 80344DC8 20 E7 00 03 */ subfic r7, r7, 3 -/* 80344DCC 99 45 00 04 */ stb r10, 4(r5) -/* 80344DD0 54 E8 18 38 */ slwi r8, r7, 3 -/* 80344DD4 7C C9 44 30 */ srw r9, r6, r8 -/* 80344DD8 38 E4 00 06 */ addi r7, r4, 6 -/* 80344DDC 99 25 00 05 */ stb r9, 5(r5) -/* 80344DE0 21 07 00 03 */ subfic r8, r7, 3 -/* 80344DE4 38 E4 00 07 */ addi r7, r4, 7 -/* 80344DE8 55 08 18 38 */ slwi r8, r8, 3 -/* 80344DEC 7C C8 44 30 */ srw r8, r6, r8 -/* 80344DF0 20 E7 00 03 */ subfic r7, r7, 3 -/* 80344DF4 99 05 00 06 */ stb r8, 6(r5) -/* 80344DF8 54 E7 18 38 */ slwi r7, r7, 3 -/* 80344DFC 7C C7 3C 30 */ srw r7, r6, r7 -/* 80344E00 98 E5 00 07 */ stb r7, 7(r5) -/* 80344E04 38 A5 00 08 */ addi r5, r5, 8 -/* 80344E08 38 84 00 08 */ addi r4, r4, 8 -/* 80344E0C 42 00 FF 60 */ bdnz lbl_80344D6C -lbl_80344E10: -/* 80344E10 7C 04 18 50 */ subf r0, r4, r3 -/* 80344E14 7C 04 18 40 */ cmplw r4, r3 -/* 80344E18 7C 09 03 A6 */ mtctr r0 -/* 80344E1C 40 80 00 20 */ bge lbl_80344E3C -lbl_80344E20: -/* 80344E20 20 04 00 03 */ subfic r0, r4, 3 -/* 80344E24 54 00 18 38 */ slwi r0, r0, 3 -/* 80344E28 7C C0 04 30 */ srw r0, r6, r0 -/* 80344E2C 98 05 00 00 */ stb r0, 0(r5) -/* 80344E30 38 A5 00 01 */ addi r5, r5, 1 -/* 80344E34 38 84 00 01 */ addi r4, r4, 1 -/* 80344E38 42 00 FF E8 */ bdnz lbl_80344E20 -lbl_80344E3C: -/* 80344E3C 80 1D 00 00 */ lwz r0, 0(r29) -/* 80344E40 54 00 00 85 */ rlwinm. r0, r0, 0, 2, 2 -/* 80344E44 41 82 00 4C */ beq lbl_80344E90 -/* 80344E48 80 7F 00 44 */ lwz r3, 0x44(r31) -/* 80344E4C 20 03 00 03 */ subfic r0, r3, 3 -/* 80344E50 54 00 18 38 */ slwi r0, r0, 3 -/* 80344E54 7F 9C 04 30 */ srw r28, r28, r0 -/* 80344E58 57 9C 07 3E */ clrlwi r28, r28, 0x1c -/* 80344E5C 57 80 07 39 */ rlwinm. r0, r28, 0, 0x1c, 0x1c -/* 80344E60 41 82 00 20 */ beq lbl_80344E80 -/* 80344E64 54 60 10 3A */ slwi r0, r3, 2 -/* 80344E68 7C 7F 02 14 */ add r3, r31, r0 -/* 80344E6C 84 03 00 58 */ lwzu r0, 0x58(r3) -/* 80344E70 54 00 06 31 */ rlwinm. r0, r0, 0, 0x18, 0x18 -/* 80344E74 40 82 00 0C */ bne lbl_80344E80 -/* 80344E78 38 00 00 08 */ li r0, 8 -/* 80344E7C 90 03 00 00 */ stw r0, 0(r3) -lbl_80344E80: -/* 80344E80 28 1C 00 00 */ cmplwi r28, 0 -/* 80344E84 40 82 00 30 */ bne lbl_80344EB4 -/* 80344E88 3B 80 00 04 */ li r28, 4 -/* 80344E8C 48 00 00 28 */ b lbl_80344EB4 -lbl_80344E90: -/* 80344E90 4B FF D8 8D */ bl __OSGetSystemTime -/* 80344E94 80 DF 00 44 */ lwz r6, 0x44(r31) -/* 80344E98 3C A0 80 45 */ lis r5, TypeTime@ha /* 0x8044C750@ha */ -/* 80344E9C 38 05 C7 50 */ addi r0, r5, TypeTime@l /* 0x8044C750@l */ -/* 80344EA0 54 C5 18 38 */ slwi r5, r6, 3 -/* 80344EA4 7C A0 2A 14 */ add r5, r0, r5 -/* 80344EA8 90 85 00 04 */ stw r4, 4(r5) -/* 80344EAC 3B 80 00 00 */ li r28, 0 -/* 80344EB0 90 65 00 00 */ stw r3, 0(r5) -lbl_80344EB4: -/* 80344EB4 38 00 FF FF */ li r0, -1 -/* 80344EB8 90 1F 00 44 */ stw r0, 0x44(r31) -lbl_80344EBC: -/* 80344EBC 7F 83 E3 78 */ mr r3, r28 -/* 80344EC0 48 00 00 18 */ b lbl_80344ED8 -lbl_80344EC4: -/* 80344EC4 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006400@ha */ -/* 80344EC8 54 80 10 3A */ slwi r0, r4, 2 -/* 80344ECC 38 63 64 00 */ addi r3, r3, 0x6400 /* 0xCC006400@l */ -/* 80344ED0 7C 63 02 14 */ add r3, r3, r0 -/* 80344ED4 4B FF FE 28 */ b lbl_80344CFC -lbl_80344ED8: -/* 80344ED8 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80344EDC 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80344EE0 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80344EE4 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80344EE8 83 81 00 10 */ lwz r28, 0x10(r1) -/* 80344EEC 38 21 00 20 */ addi r1, r1, 0x20 -/* 80344EF0 7C 08 03 A6 */ mtlr r0 -/* 80344EF4 4E 80 00 20 */ blr diff --git a/asm/dolphin/si/SIBios/SIBusy.s b/asm/dolphin/si/SIBios/SIBusy.s deleted file mode 100644 index 94e1723c50a..00000000000 --- a/asm/dolphin/si/SIBios/SIBusy.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_80344BA0: -/* 80344BA0 3C 60 80 3D */ lis r3, Si@ha /* 0x803D11FC@ha */ -/* 80344BA4 80 03 11 FC */ lwz r0, Si@l(r3) /* 0x803D11FC@l */ -/* 80344BA8 2C 00 FF FF */ cmpwi r0, -1 -/* 80344BAC 41 82 00 0C */ beq lbl_80344BB8 -/* 80344BB0 38 60 00 01 */ li r3, 1 -/* 80344BB4 4E 80 00 20 */ blr -lbl_80344BB8: -/* 80344BB8 38 60 00 00 */ li r3, 0 -/* 80344BBC 4E 80 00 20 */ blr diff --git a/asm/dolphin/si/SIBios/SIDisablePolling.s b/asm/dolphin/si/SIBios/SIDisablePolling.s deleted file mode 100644 index ddbfb01bd9c..00000000000 --- a/asm/dolphin/si/SIBios/SIDisablePolling.s +++ /dev/null @@ -1,30 +0,0 @@ -lbl_803458FC: -/* 803458FC 7C 08 02 A6 */ mflr r0 -/* 80345900 90 01 00 04 */ stw r0, 4(r1) -/* 80345904 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 80345908 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8034590C 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80345910 40 82 00 14 */ bne lbl_80345924 -/* 80345914 3C 60 80 3D */ lis r3, Si@ha /* 0x803D11FC@ha */ -/* 80345918 38 63 11 FC */ addi r3, r3, Si@l /* 0x803D11FC@l */ -/* 8034591C 80 63 00 04 */ lwz r3, 4(r3) -/* 80345920 48 00 00 34 */ b lbl_80345954 -lbl_80345924: -/* 80345924 4B FF 7D D1 */ bl OSDisableInterrupts -/* 80345928 3C 80 80 3D */ lis r4, Si@ha /* 0x803D11FC@ha */ -/* 8034592C 38 84 11 FC */ addi r4, r4, Si@l /* 0x803D11FC@l */ -/* 80345930 80 04 00 04 */ lwz r0, 4(r4) -/* 80345934 57 FF 46 36 */ rlwinm r31, r31, 8, 0x18, 0x1b -/* 80345938 38 A4 00 04 */ addi r5, r4, 4 -/* 8034593C 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC006430@ha */ -/* 80345940 7C 1F F8 78 */ andc r31, r0, r31 -/* 80345944 93 E4 64 30 */ stw r31, 0x6430(r4) /* 0xCC006430@l */ -/* 80345948 93 E5 00 00 */ stw r31, 0(r5) -/* 8034594C 4B FF 7D D1 */ bl OSRestoreInterrupts -/* 80345950 7F E3 FB 78 */ mr r3, r31 -lbl_80345954: -/* 80345954 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80345958 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8034595C 38 21 00 18 */ addi r1, r1, 0x18 -/* 80345960 7C 08 03 A6 */ mtlr r0 -/* 80345964 4E 80 00 20 */ blr diff --git a/asm/dolphin/si/SIBios/SIInit.s b/asm/dolphin/si/SIBios/SIInit.s deleted file mode 100644 index af7c2efc8de..00000000000 --- a/asm/dolphin/si/SIBios/SIInit.s +++ /dev/null @@ -1,47 +0,0 @@ -lbl_80345494: -/* 80345494 7C 08 02 A6 */ mflr r0 -/* 80345498 3C 80 80 45 */ lis r4, Packet@ha /* 0x8044C630@ha */ -/* 8034549C 90 01 00 04 */ stw r0, 4(r1) -/* 803454A0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803454A4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 803454A8 3B E4 C6 30 */ addi r31, r4, Packet@l /* 0x8044C630@l */ -/* 803454AC 80 6D 84 48 */ lwz r3, __SIVersion(r13) -/* 803454B0 4B FF 53 C5 */ bl OSRegisterVersion -/* 803454B4 38 A0 FF FF */ li r5, -1 -/* 803454B8 90 BF 00 60 */ stw r5, 0x60(r31) -/* 803454BC 3C 60 80 3D */ lis r3, Si@ha /* 0x803D11FC@ha */ -/* 803454C0 38 83 11 FC */ addi r4, r3, Si@l /* 0x803D11FC@l */ -/* 803454C4 90 BF 00 40 */ stw r5, 0x40(r31) -/* 803454C8 38 00 00 00 */ li r0, 0 -/* 803454CC 38 60 00 00 */ li r3, 0 -/* 803454D0 90 BF 00 20 */ stw r5, 0x20(r31) -/* 803454D4 90 BF 00 00 */ stw r5, 0(r31) -/* 803454D8 90 04 00 04 */ stw r0, 4(r4) -/* 803454DC 48 00 0D B5 */ bl SISetSamplingRate -/* 803454E0 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006400@ha */ -lbl_803454E4: -/* 803454E4 38 83 64 00 */ addi r4, r3, 0x6400 /* 0xCC006400@l */ -/* 803454E8 84 04 00 34 */ lwzu r0, 0x34(r4) -/* 803454EC 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 803454F0 40 82 FF F4 */ bne lbl_803454E4 -/* 803454F4 3C 00 80 00 */ lis r0, 0x8000 -/* 803454F8 3C 60 80 34 */ lis r3, SIInterruptHandler@ha /* 0x80344EF8@ha */ -/* 803454FC 90 04 00 00 */ stw r0, 0(r4) -/* 80345500 38 83 4E F8 */ addi r4, r3, SIInterruptHandler@l /* 0x80344EF8@l */ -/* 80345504 38 60 00 14 */ li r3, 0x14 -/* 80345508 4B FF 82 39 */ bl __OSSetInterruptHandler -/* 8034550C 38 60 08 00 */ li r3, 0x800 -/* 80345510 4B FF 86 35 */ bl __OSUnmaskInterrupts -/* 80345514 38 60 00 00 */ li r3, 0 -/* 80345518 48 00 0A 79 */ bl SIGetType -/* 8034551C 38 60 00 01 */ li r3, 1 -/* 80345520 48 00 0A 71 */ bl SIGetType -/* 80345524 38 60 00 02 */ li r3, 2 -/* 80345528 48 00 0A 69 */ bl SIGetType -/* 8034552C 38 60 00 03 */ li r3, 3 -/* 80345530 48 00 0A 61 */ bl SIGetType -/* 80345534 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80345538 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8034553C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80345540 7C 08 03 A6 */ mtlr r0 -/* 80345544 4E 80 00 20 */ blr diff --git a/asm/dolphin/si/SIBios/SIIsChanBusy.s b/asm/dolphin/si/SIBios/SIIsChanBusy.s deleted file mode 100644 index dcd7ea760d1..00000000000 --- a/asm/dolphin/si/SIBios/SIIsChanBusy.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_80344BC0: -/* 80344BC0 3C 80 80 45 */ lis r4, Packet@ha /* 0x8044C630@ha */ -/* 80344BC4 54 65 28 34 */ slwi r5, r3, 5 -/* 80344BC8 38 04 C6 30 */ addi r0, r4, Packet@l /* 0x8044C630@l */ -/* 80344BCC 7C 80 2A 14 */ add r4, r0, r5 -/* 80344BD0 80 04 00 00 */ lwz r0, 0(r4) -/* 80344BD4 38 A0 00 01 */ li r5, 1 -/* 80344BD8 2C 00 FF FF */ cmpwi r0, -1 -/* 80344BDC 40 82 00 18 */ bne lbl_80344BF4 -/* 80344BE0 3C 80 80 3D */ lis r4, Si@ha /* 0x803D11FC@ha */ -/* 80344BE4 80 04 11 FC */ lwz r0, Si@l(r4) /* 0x803D11FC@l */ -/* 80344BE8 7C 00 18 00 */ cmpw r0, r3 -/* 80344BEC 41 82 00 08 */ beq lbl_80344BF4 -/* 80344BF0 38 A0 00 00 */ li r5, 0 -lbl_80344BF4: -/* 80344BF4 7C A3 2B 78 */ mr r3, r5 -/* 80344BF8 4E 80 00 20 */ blr diff --git a/asm/dolphin/si/SIBios/SIRegisterPollingHandler.s b/asm/dolphin/si/SIBios/SIRegisterPollingHandler.s deleted file mode 100644 index 04d7ef32793..00000000000 --- a/asm/dolphin/si/SIBios/SIRegisterPollingHandler.s +++ /dev/null @@ -1,57 +0,0 @@ -lbl_803452D4: -/* 803452D4 7C 08 02 A6 */ mflr r0 -/* 803452D8 90 01 00 04 */ stw r0, 4(r1) -/* 803452DC 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 803452E0 93 E1 00 14 */ stw r31, 0x14(r1) -/* 803452E4 93 C1 00 10 */ stw r30, 0x10(r1) -/* 803452E8 7C 7E 1B 78 */ mr r30, r3 -/* 803452EC 4B FF 84 09 */ bl OSDisableInterrupts -/* 803452F0 3C 80 80 45 */ lis r4, RDSTHandler@ha /* 0x8044C7D0@ha */ -/* 803452F4 38 00 00 04 */ li r0, 4 -/* 803452F8 38 84 C7 D0 */ addi r4, r4, RDSTHandler@l /* 0x8044C7D0@l */ -/* 803452FC 7C 09 03 A6 */ mtctr r0 -/* 80345300 3B E3 00 00 */ addi r31, r3, 0 -/* 80345304 38 64 00 00 */ addi r3, r4, 0 -lbl_80345308: -/* 80345308 80 03 00 00 */ lwz r0, 0(r3) -/* 8034530C 7C 00 F0 40 */ cmplw r0, r30 -/* 80345310 40 82 00 14 */ bne lbl_80345324 -/* 80345314 7F E3 FB 78 */ mr r3, r31 -/* 80345318 4B FF 84 05 */ bl OSRestoreInterrupts -/* 8034531C 38 60 00 01 */ li r3, 1 -/* 80345320 48 00 00 68 */ b lbl_80345388 -lbl_80345324: -/* 80345324 38 63 00 04 */ addi r3, r3, 4 -/* 80345328 42 00 FF E0 */ bdnz lbl_80345308 -/* 8034532C 38 00 00 04 */ li r0, 4 -/* 80345330 7C 09 03 A6 */ mtctr r0 -/* 80345334 38 A0 00 00 */ li r5, 0 -lbl_80345338: -/* 80345338 80 04 00 00 */ lwz r0, 0(r4) -/* 8034533C 28 00 00 00 */ cmplwi r0, 0 -/* 80345340 40 82 00 30 */ bne lbl_80345370 -/* 80345344 3C 60 80 45 */ lis r3, RDSTHandler@ha /* 0x8044C7D0@ha */ -/* 80345348 54 A4 10 3A */ slwi r4, r5, 2 -/* 8034534C 38 03 C7 D0 */ addi r0, r3, RDSTHandler@l /* 0x8044C7D0@l */ -/* 80345350 7C 60 22 14 */ add r3, r0, r4 -/* 80345354 93 C3 00 00 */ stw r30, 0(r3) -/* 80345358 38 60 00 01 */ li r3, 1 -/* 8034535C 4B FF FE E1 */ bl SIEnablePollingInterrupt -/* 80345360 7F E3 FB 78 */ mr r3, r31 -/* 80345364 4B FF 83 B9 */ bl OSRestoreInterrupts -/* 80345368 38 60 00 01 */ li r3, 1 -/* 8034536C 48 00 00 1C */ b lbl_80345388 -lbl_80345370: -/* 80345370 38 84 00 04 */ addi r4, r4, 4 -/* 80345374 38 A5 00 01 */ addi r5, r5, 1 -/* 80345378 42 00 FF C0 */ bdnz lbl_80345338 -/* 8034537C 7F E3 FB 78 */ mr r3, r31 -/* 80345380 4B FF 83 9D */ bl OSRestoreInterrupts -/* 80345384 38 60 00 00 */ li r3, 0 -lbl_80345388: -/* 80345388 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8034538C 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80345390 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 80345394 38 21 00 18 */ addi r1, r1, 0x18 -/* 80345398 7C 08 03 A6 */ mtlr r0 -/* 8034539C 4E 80 00 20 */ blr diff --git a/asm/dolphin/si/SIBios/SISetCommand.s b/asm/dolphin/si/SIBios/SISetCommand.s deleted file mode 100644 index 4fcfa3ffad3..00000000000 --- a/asm/dolphin/si/SIBios/SISetCommand.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_803457D0: -/* 803457D0 1C 03 00 0C */ mulli r0, r3, 0xc -/* 803457D4 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006400@ha */ -/* 803457D8 38 63 64 00 */ addi r3, r3, 0x6400 /* 0xCC006400@l */ -/* 803457DC 7C 83 01 2E */ stwx r4, r3, r0 -/* 803457E0 4E 80 00 20 */ blr diff --git a/asm/dolphin/si/SIBios/SITransfer.s b/asm/dolphin/si/SIBios/SITransfer.s deleted file mode 100644 index 59dda363be3..00000000000 --- a/asm/dolphin/si/SIBios/SITransfer.s +++ /dev/null @@ -1,99 +0,0 @@ -lbl_80345B8C: -/* 80345B8C 7C 08 02 A6 */ mflr r0 -/* 80345B90 90 01 00 04 */ stw r0, 4(r1) -/* 80345B94 94 21 FF A0 */ stwu r1, -0x60(r1) -/* 80345B98 BE 61 00 2C */ stmw r19, 0x2c(r1) -/* 80345B9C 3B 03 00 00 */ addi r24, r3, 0 -/* 80345BA0 3C 60 80 45 */ lis r3, Packet@ha /* 0x8044C630@ha */ -/* 80345BA4 3A E3 C6 30 */ addi r23, r3, Packet@l /* 0x8044C630@l */ -/* 80345BA8 57 00 28 34 */ slwi r0, r24, 5 -/* 80345BAC 3B 24 00 00 */ addi r25, r4, 0 -/* 80345BB0 3B 45 00 00 */ addi r26, r5, 0 -/* 80345BB4 3B 66 00 00 */ addi r27, r6, 0 -/* 80345BB8 3B 87 00 00 */ addi r28, r7, 0 -/* 80345BBC 3B A8 00 00 */ addi r29, r8, 0 -/* 80345BC0 3B E9 00 00 */ addi r31, r9, 0 -/* 80345BC4 3B CA 00 00 */ addi r30, r10, 0 -/* 80345BC8 7E D7 02 14 */ add r22, r23, r0 -/* 80345BCC 4B FF 7B 29 */ bl OSDisableInterrupts -/* 80345BD0 80 16 00 00 */ lwz r0, 0(r22) -/* 80345BD4 3A A3 00 00 */ addi r21, r3, 0 -/* 80345BD8 2C 00 FF FF */ cmpwi r0, -1 -/* 80345BDC 40 82 00 14 */ bne lbl_80345BF0 -/* 80345BE0 3C 60 80 3D */ lis r3, Si@ha /* 0x803D11FC@ha */ -/* 80345BE4 80 03 11 FC */ lwz r0, Si@l(r3) /* 0x803D11FC@l */ -/* 80345BE8 7C 00 C0 00 */ cmpw r0, r24 -/* 80345BEC 40 82 00 14 */ bne lbl_80345C00 -lbl_80345BF0: -/* 80345BF0 7E A3 AB 78 */ mr r3, r21 -/* 80345BF4 4B FF 7B 29 */ bl OSRestoreInterrupts -/* 80345BF8 38 60 00 00 */ li r3, 0 -/* 80345BFC 48 00 00 E8 */ b lbl_80345CE4 -lbl_80345C00: -/* 80345C00 4B FF CB 1D */ bl __OSGetSystemTime -/* 80345C04 38 00 00 00 */ li r0, 0 -/* 80345C08 7F C5 02 78 */ xor r5, r30, r0 -/* 80345C0C 7F E0 02 78 */ xor r0, r31, r0 -/* 80345C10 7C A0 03 79 */ or. r0, r5, r0 -/* 80345C14 40 82 00 10 */ bne lbl_80345C24 -/* 80345C18 3A 64 00 00 */ addi r19, r4, 0 -/* 80345C1C 3A 83 00 00 */ addi r20, r3, 0 -/* 80345C20 48 00 00 1C */ b lbl_80345C3C -lbl_80345C24: -/* 80345C24 57 00 18 38 */ slwi r0, r24, 3 -/* 80345C28 7C D7 02 14 */ add r6, r23, r0 -/* 80345C2C 80 A6 01 44 */ lwz r5, 0x144(r6) -/* 80345C30 80 06 01 40 */ lwz r0, 0x140(r6) -/* 80345C34 7E 7E 28 14 */ addc r19, r30, r5 -/* 80345C38 7E 9F 01 14 */ adde r20, r31, r0 -lbl_80345C3C: -/* 80345C3C 6C 66 80 00 */ xoris r6, r3, 0x8000 -/* 80345C40 6E 85 80 00 */ xoris r5, r20, 0x8000 -/* 80345C44 7C 13 20 10 */ subfc r0, r19, r4 -/* 80345C48 7C A5 31 10 */ subfe r5, r5, r6 -/* 80345C4C 7C A6 31 10 */ subfe r5, r6, r6 -/* 80345C50 7C A5 00 D1 */ neg. r5, r5 -/* 80345C54 41 82 00 30 */ beq lbl_80345C84 -/* 80345C58 1C 18 00 28 */ mulli r0, r24, 0x28 -/* 80345C5C 7F C4 98 10 */ subfc r30, r4, r19 -/* 80345C60 7F E3 A1 10 */ subfe r31, r3, r20 -/* 80345C64 3C 80 80 34 */ lis r4, AlarmHandler@ha /* 0x80345B00@ha */ -/* 80345C68 7C 77 02 14 */ add r3, r23, r0 -/* 80345C6C 38 E4 5B 00 */ addi r7, r4, AlarmHandler@l /* 0x80345B00@l */ -/* 80345C70 38 DE 00 00 */ addi r6, r30, 0 -/* 80345C74 38 BF 00 00 */ addi r5, r31, 0 -/* 80345C78 38 63 00 80 */ addi r3, r3, 0x80 -/* 80345C7C 4B FF 4E DD */ bl OSSetAlarm -/* 80345C80 48 00 00 38 */ b lbl_80345CB8 -lbl_80345C84: -/* 80345C84 38 78 00 00 */ addi r3, r24, 0 -/* 80345C88 38 99 00 00 */ addi r4, r25, 0 -/* 80345C8C 38 BA 00 00 */ addi r5, r26, 0 -/* 80345C90 38 DB 00 00 */ addi r6, r27, 0 -/* 80345C94 38 FC 00 00 */ addi r7, r28, 0 -/* 80345C98 39 1D 00 00 */ addi r8, r29, 0 -/* 80345C9C 4B FF F8 AD */ bl __SITransfer -/* 80345CA0 2C 03 00 00 */ cmpwi r3, 0 -/* 80345CA4 41 82 00 14 */ beq lbl_80345CB8 -/* 80345CA8 7E A3 AB 78 */ mr r3, r21 -/* 80345CAC 4B FF 7A 71 */ bl OSRestoreInterrupts -/* 80345CB0 38 60 00 01 */ li r3, 1 -/* 80345CB4 48 00 00 30 */ b lbl_80345CE4 -lbl_80345CB8: -/* 80345CB8 93 16 00 00 */ stw r24, 0(r22) -/* 80345CBC 7E A3 AB 78 */ mr r3, r21 -/* 80345CC0 93 36 00 04 */ stw r25, 4(r22) -/* 80345CC4 93 56 00 08 */ stw r26, 8(r22) -/* 80345CC8 93 76 00 0C */ stw r27, 0xc(r22) -/* 80345CCC 93 96 00 10 */ stw r28, 0x10(r22) -/* 80345CD0 93 B6 00 14 */ stw r29, 0x14(r22) -/* 80345CD4 92 76 00 1C */ stw r19, 0x1c(r22) -/* 80345CD8 92 96 00 18 */ stw r20, 0x18(r22) -/* 80345CDC 4B FF 7A 41 */ bl OSRestoreInterrupts -/* 80345CE0 38 60 00 01 */ li r3, 1 -lbl_80345CE4: -/* 80345CE4 BA 61 00 2C */ lmw r19, 0x2c(r1) -/* 80345CE8 80 01 00 64 */ lwz r0, 0x64(r1) -/* 80345CEC 38 21 00 60 */ addi r1, r1, 0x60 -/* 80345CF0 7C 08 03 A6 */ mtlr r0 -/* 80345CF4 4E 80 00 20 */ blr diff --git a/asm/dolphin/si/SIBios/SITransferCommands.s b/asm/dolphin/si/SIBios/SITransferCommands.s deleted file mode 100644 index bfa8e10bf44..00000000000 --- a/asm/dolphin/si/SIBios/SITransferCommands.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_803457E4: -/* 803457E4 3C 60 CC 00 */ lis r3, 0xCC00 /* 0xCC006438@ha */ -/* 803457E8 3C 00 80 00 */ lis r0, 0x8000 -/* 803457EC 90 03 64 38 */ stw r0, 0x6438(r3) /* 0xCC006438@l */ -/* 803457F0 4E 80 00 20 */ blr diff --git a/asm/dolphin/si/SIBios/SIUnregisterPollingHandler.s b/asm/dolphin/si/SIBios/SIUnregisterPollingHandler.s deleted file mode 100644 index 997011ba65c..00000000000 --- a/asm/dolphin/si/SIBios/SIUnregisterPollingHandler.s +++ /dev/null @@ -1,67 +0,0 @@ -lbl_803453A0: -/* 803453A0 7C 08 02 A6 */ mflr r0 -/* 803453A4 90 01 00 04 */ stw r0, 4(r1) -/* 803453A8 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 803453AC 93 E1 00 14 */ stw r31, 0x14(r1) -/* 803453B0 93 C1 00 10 */ stw r30, 0x10(r1) -/* 803453B4 7C 7E 1B 78 */ mr r30, r3 -/* 803453B8 4B FF 83 3D */ bl OSDisableInterrupts -/* 803453BC 3C 80 80 45 */ lis r4, RDSTHandler@ha /* 0x8044C7D0@ha */ -/* 803453C0 38 00 00 04 */ li r0, 4 -/* 803453C4 38 A4 C7 D0 */ addi r5, r4, RDSTHandler@l /* 0x8044C7D0@l */ -/* 803453C8 7C 09 03 A6 */ mtctr r0 -/* 803453CC 3B E3 00 00 */ addi r31, r3, 0 -/* 803453D0 38 65 00 00 */ addi r3, r5, 0 -/* 803453D4 38 80 00 00 */ li r4, 0 -lbl_803453D8: -/* 803453D8 80 03 00 00 */ lwz r0, 0(r3) -/* 803453DC 7C 00 F0 40 */ cmplw r0, r30 -/* 803453E0 40 82 00 84 */ bne lbl_80345464 -/* 803453E4 3C 60 80 45 */ lis r3, RDSTHandler@ha /* 0x8044C7D0@ha */ -/* 803453E8 54 84 10 3A */ slwi r4, r4, 2 -/* 803453EC 38 03 C7 D0 */ addi r0, r3, RDSTHandler@l /* 0x8044C7D0@l */ -/* 803453F0 7C 60 22 14 */ add r3, r0, r4 -/* 803453F4 38 00 00 00 */ li r0, 0 -/* 803453F8 90 03 00 00 */ stw r0, 0(r3) -/* 803453FC 38 80 00 00 */ li r4, 0 -/* 80345400 80 05 00 00 */ lwz r0, 0(r5) -/* 80345404 28 00 00 00 */ cmplwi r0, 0 -/* 80345408 40 82 00 3C */ bne lbl_80345444 -/* 8034540C 38 65 00 04 */ addi r3, r5, 4 -/* 80345410 80 05 00 04 */ lwz r0, 4(r5) -/* 80345414 38 80 00 01 */ li r4, 1 -/* 80345418 28 00 00 00 */ cmplwi r0, 0 -/* 8034541C 40 82 00 28 */ bne lbl_80345444 -/* 80345420 84 03 00 04 */ lwzu r0, 4(r3) -/* 80345424 38 80 00 02 */ li r4, 2 -/* 80345428 28 00 00 00 */ cmplwi r0, 0 -/* 8034542C 40 82 00 18 */ bne lbl_80345444 -/* 80345430 80 03 00 04 */ lwz r0, 4(r3) -/* 80345434 38 80 00 03 */ li r4, 3 -/* 80345438 28 00 00 00 */ cmplwi r0, 0 -/* 8034543C 40 82 00 08 */ bne lbl_80345444 -/* 80345440 38 80 00 04 */ li r4, 4 -lbl_80345444: -/* 80345444 2C 04 00 04 */ cmpwi r4, 4 -/* 80345448 40 82 00 0C */ bne lbl_80345454 -/* 8034544C 38 60 00 00 */ li r3, 0 -/* 80345450 4B FF FD ED */ bl SIEnablePollingInterrupt -lbl_80345454: -/* 80345454 7F E3 FB 78 */ mr r3, r31 -/* 80345458 4B FF 82 C5 */ bl OSRestoreInterrupts -/* 8034545C 38 60 00 01 */ li r3, 1 -/* 80345460 48 00 00 1C */ b lbl_8034547C -lbl_80345464: -/* 80345464 38 63 00 04 */ addi r3, r3, 4 -/* 80345468 38 84 00 01 */ addi r4, r4, 1 -/* 8034546C 42 00 FF 6C */ bdnz lbl_803453D8 -/* 80345470 7F E3 FB 78 */ mr r3, r31 -/* 80345474 4B FF 82 A9 */ bl OSRestoreInterrupts -/* 80345478 38 60 00 00 */ li r3, 0 -lbl_8034547C: -/* 8034547C 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 80345480 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 80345484 83 C1 00 10 */ lwz r30, 0x10(r1) -/* 80345488 38 21 00 18 */ addi r1, r1, 0x18 -/* 8034548C 7C 08 03 A6 */ mtlr r0 -/* 80345490 4E 80 00 20 */ blr diff --git a/asm/dolphin/si/SIBios/__SITransfer.s b/asm/dolphin/si/SIBios/__SITransfer.s deleted file mode 100644 index 262378e3fa6..00000000000 --- a/asm/dolphin/si/SIBios/__SITransfer.s +++ /dev/null @@ -1,145 +0,0 @@ -lbl_80345548: -/* 80345548 7C 08 02 A6 */ mflr r0 -/* 8034554C 3D 20 80 3D */ lis r9, lit_1@ha /* 0x803D11B8@ha */ -/* 80345550 90 01 00 04 */ stw r0, 4(r1) -/* 80345554 94 21 FF B8 */ stwu r1, -0x48(r1) -/* 80345558 BF 21 00 2C */ stmw r25, 0x2c(r1) -/* 8034555C 3B 43 00 00 */ addi r26, r3, 0 -/* 80345560 3B 64 00 00 */ addi r27, r4, 0 -/* 80345564 3B 85 00 00 */ addi r28, r5, 0 -/* 80345568 3B A6 00 00 */ addi r29, r6, 0 -/* 8034556C 3B C7 00 00 */ addi r30, r7, 0 -/* 80345570 3B E8 00 00 */ addi r31, r8, 0 -/* 80345574 3B 29 11 B8 */ addi r25, r9, lit_1@l /* 0x803D11B8@l */ -/* 80345578 4B FF 81 7D */ bl OSDisableInterrupts -/* 8034557C 80 19 00 44 */ lwz r0, 0x44(r25) -/* 80345580 2C 00 FF FF */ cmpwi r0, -1 -/* 80345584 41 82 00 10 */ beq lbl_80345594 -/* 80345588 4B FF 81 95 */ bl OSRestoreInterrupts -/* 8034558C 38 60 00 00 */ li r3, 0 -/* 80345590 48 00 01 B0 */ b lbl_80345740 -lbl_80345594: -/* 80345594 3C C0 CC 00 */ lis r6, 0xCC00 /* 0xCC006438@ha */ -/* 80345598 57 40 18 38 */ slwi r0, r26, 3 -/* 8034559C 80 E6 64 38 */ lwz r7, 0x6438(r6) /* 0xCC006438@l */ -/* 803455A0 3C 80 0F 00 */ lis r4, 0xf00 -/* 803455A4 7C 80 06 30 */ sraw r0, r4, r0 -/* 803455A8 7C E7 00 38 */ and r7, r7, r0 -/* 803455AC 90 E6 64 38 */ stw r7, 0x6438(r6) -/* 803455B0 38 1C 00 03 */ addi r0, r28, 3 -/* 803455B4 54 04 F0 BE */ srwi r4, r0, 2 -/* 803455B8 93 59 00 44 */ stw r26, 0x44(r25) -/* 803455BC 28 04 00 00 */ cmplwi r4, 0 -/* 803455C0 38 A0 00 00 */ li r5, 0 -/* 803455C4 93 F9 00 54 */ stw r31, 0x54(r25) -/* 803455C8 93 D9 00 4C */ stw r30, 0x4c(r25) -/* 803455CC 93 B9 00 50 */ stw r29, 0x50(r25) -/* 803455D0 40 81 00 A4 */ ble lbl_80345674 -/* 803455D4 28 04 00 08 */ cmplwi r4, 8 -/* 803455D8 38 E4 FF F8 */ addi r7, r4, -8 -/* 803455DC 40 81 01 4C */ ble lbl_80345728 -/* 803455E0 38 07 00 07 */ addi r0, r7, 7 -/* 803455E4 54 00 E8 FE */ srwi r0, r0, 3 -/* 803455E8 28 07 00 00 */ cmplwi r7, 0 -/* 803455EC 7C 09 03 A6 */ mtctr r0 -/* 803455F0 38 FB 00 00 */ addi r7, r27, 0 -/* 803455F4 38 C6 64 00 */ addi r6, r6, 0x6400 -/* 803455F8 40 81 01 30 */ ble lbl_80345728 -lbl_803455FC: -/* 803455FC 80 07 00 00 */ lwz r0, 0(r7) -/* 80345600 38 A5 00 08 */ addi r5, r5, 8 -/* 80345604 90 06 00 80 */ stw r0, 0x80(r6) -/* 80345608 80 07 00 04 */ lwz r0, 4(r7) -/* 8034560C 90 06 00 84 */ stw r0, 0x84(r6) -/* 80345610 80 07 00 08 */ lwz r0, 8(r7) -/* 80345614 90 06 00 88 */ stw r0, 0x88(r6) -/* 80345618 80 07 00 0C */ lwz r0, 0xc(r7) -/* 8034561C 90 06 00 8C */ stw r0, 0x8c(r6) -/* 80345620 80 07 00 10 */ lwz r0, 0x10(r7) -/* 80345624 90 06 00 90 */ stw r0, 0x90(r6) -/* 80345628 80 07 00 14 */ lwz r0, 0x14(r7) -/* 8034562C 90 06 00 94 */ stw r0, 0x94(r6) -/* 80345630 80 07 00 18 */ lwz r0, 0x18(r7) -/* 80345634 90 06 00 98 */ stw r0, 0x98(r6) -/* 80345638 80 07 00 1C */ lwz r0, 0x1c(r7) -/* 8034563C 38 E7 00 20 */ addi r7, r7, 0x20 -/* 80345640 90 06 00 9C */ stw r0, 0x9c(r6) -/* 80345644 38 C6 00 20 */ addi r6, r6, 0x20 -/* 80345648 42 00 FF B4 */ bdnz lbl_803455FC -/* 8034564C 48 00 00 DC */ b lbl_80345728 -lbl_80345650: -/* 80345650 7C 05 20 50 */ subf r0, r5, r4 -/* 80345654 7C 05 20 40 */ cmplw r5, r4 -/* 80345658 7C 09 03 A6 */ mtctr r0 -/* 8034565C 40 80 00 18 */ bge lbl_80345674 -lbl_80345660: -/* 80345660 80 06 00 00 */ lwz r0, 0(r6) -/* 80345664 38 C6 00 04 */ addi r6, r6, 4 -/* 80345668 90 07 00 80 */ stw r0, 0x80(r7) -/* 8034566C 38 E7 00 04 */ addi r7, r7, 4 -/* 80345670 42 00 FF F0 */ bdnz lbl_80345660 -lbl_80345674: -/* 80345674 3C 80 CC 00 */ lis r4, 0xCC00 /* 0xCC006400@ha */ -/* 80345678 38 C4 64 00 */ addi r6, r4, 0x6400 /* 0xCC006400@l */ -/* 8034567C 84 06 00 34 */ lwzu r0, 0x34(r6) -/* 80345680 38 80 00 01 */ li r4, 1 -/* 80345684 90 01 00 24 */ stw r0, 0x24(r1) -/* 80345688 28 1F 00 00 */ cmplwi r31, 0 -/* 8034568C 88 01 00 24 */ lbz r0, 0x24(r1) -/* 80345690 50 80 3E 30 */ rlwimi r0, r4, 7, 0x18, 0x18 -/* 80345694 98 01 00 24 */ stb r0, 0x24(r1) -/* 80345698 41 82 00 08 */ beq lbl_803456A0 -/* 8034569C 48 00 00 08 */ b lbl_803456A4 -lbl_803456A0: -/* 803456A0 38 80 00 00 */ li r4, 0 -lbl_803456A4: -/* 803456A4 88 01 00 24 */ lbz r0, 0x24(r1) -/* 803456A8 50 80 36 72 */ rlwimi r0, r4, 6, 0x19, 0x19 -/* 803456AC 28 1C 00 80 */ cmplwi r28, 0x80 -/* 803456B0 98 01 00 24 */ stb r0, 0x24(r1) -/* 803456B4 40 82 00 0C */ bne lbl_803456C0 -/* 803456B8 38 00 00 00 */ li r0, 0 -/* 803456BC 48 00 00 08 */ b lbl_803456C4 -lbl_803456C0: -/* 803456C0 7F 80 E3 78 */ mr r0, r28 -lbl_803456C4: -/* 803456C4 54 04 06 3E */ clrlwi r4, r0, 0x18 -/* 803456C8 88 01 00 25 */ lbz r0, 0x25(r1) -/* 803456CC 50 80 06 7E */ rlwimi r0, r4, 0, 0x19, 0x1f -/* 803456D0 28 1E 00 80 */ cmplwi r30, 0x80 -/* 803456D4 98 01 00 25 */ stb r0, 0x25(r1) -/* 803456D8 40 82 00 0C */ bne lbl_803456E4 -/* 803456DC 38 00 00 00 */ li r0, 0 -/* 803456E0 48 00 00 08 */ b lbl_803456E8 -lbl_803456E4: -/* 803456E4 7F C0 F3 78 */ mr r0, r30 -lbl_803456E8: -/* 803456E8 54 04 06 3E */ clrlwi r4, r0, 0x18 -/* 803456EC 88 01 00 26 */ lbz r0, 0x26(r1) -/* 803456F0 50 80 06 7E */ rlwimi r0, r4, 0, 0x19, 0x1f -/* 803456F4 98 01 00 26 */ stb r0, 0x26(r1) -/* 803456F8 38 80 00 01 */ li r4, 1 -/* 803456FC 88 01 00 27 */ lbz r0, 0x27(r1) -/* 80345700 53 40 0F 7C */ rlwimi r0, r26, 1, 0x1d, 0x1e -/* 80345704 98 01 00 27 */ stb r0, 0x27(r1) -/* 80345708 88 01 00 27 */ lbz r0, 0x27(r1) -/* 8034570C 50 80 07 FE */ rlwimi r0, r4, 0, 0x1f, 0x1f -/* 80345710 98 01 00 27 */ stb r0, 0x27(r1) -/* 80345714 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80345718 90 06 00 00 */ stw r0, 0(r6) -/* 8034571C 4B FF 80 01 */ bl OSRestoreInterrupts -/* 80345720 38 60 00 01 */ li r3, 1 -/* 80345724 48 00 00 1C */ b lbl_80345740 -lbl_80345728: -/* 80345728 3C C0 CC 00 */ lis r6, 0xCC00 /* 0xCC006400@ha */ -/* 8034572C 54 A0 10 3A */ slwi r0, r5, 2 -/* 80345730 38 E6 64 00 */ addi r7, r6, 0x6400 /* 0xCC006400@l */ -/* 80345734 7C DB 02 14 */ add r6, r27, r0 -/* 80345738 7C E7 02 14 */ add r7, r7, r0 -/* 8034573C 4B FF FF 14 */ b lbl_80345650 -lbl_80345740: -/* 80345740 BB 21 00 2C */ lmw r25, 0x2c(r1) -/* 80345744 80 01 00 4C */ lwz r0, 0x4c(r1) -/* 80345748 38 21 00 48 */ addi r1, r1, 0x48 -/* 8034574C 7C 08 03 A6 */ mtlr r0 -/* 80345750 4E 80 00 20 */ blr diff --git a/asm/dolphin/si/SISamplingRate/SIRefreshSamplingRate.s b/asm/dolphin/si/SISamplingRate/SIRefreshSamplingRate.s deleted file mode 100644 index dcd415d3093..00000000000 --- a/asm/dolphin/si/SISamplingRate/SIRefreshSamplingRate.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_80346374: -/* 80346374 7C 08 02 A6 */ mflr r0 -/* 80346378 90 01 00 04 */ stw r0, 4(r1) -/* 8034637C 94 21 FF F8 */ stwu r1, -8(r1) -/* 80346380 80 6D 91 80 */ lwz r3, SamplingRate(r13) -/* 80346384 4B FF FF 0D */ bl SISetSamplingRate -/* 80346388 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8034638C 38 21 00 08 */ addi r1, r1, 8 -/* 80346390 7C 08 03 A6 */ mtlr r0 -/* 80346394 4E 80 00 20 */ blr diff --git a/asm/m_Do/m_Do_printf/OSPanic.s b/asm/m_Do/m_Do_printf/OSPanic.s deleted file mode 100644 index c612487cd77..00000000000 --- a/asm/m_Do/m_Do_printf/OSPanic.s +++ /dev/null @@ -1,83 +0,0 @@ -lbl_80006E7C: -/* 80006E7C 94 21 FF 70 */ stwu r1, -0x90(r1) -/* 80006E80 7C 08 02 A6 */ mflr r0 -/* 80006E84 90 01 00 94 */ stw r0, 0x94(r1) -/* 80006E88 39 61 00 90 */ addi r11, r1, 0x90 -/* 80006E8C 48 35 B3 51 */ bl _savegpr_29 -/* 80006E90 7C 7F 1B 78 */ mr r31, r3 -/* 80006E94 7C 9E 23 78 */ mr r30, r4 -/* 80006E98 7C BD 2B 78 */ mr r29, r5 -/* 80006E9C 40 86 00 24 */ bne cr1, lbl_80006EC0 -/* 80006EA0 D8 21 00 28 */ stfd f1, 0x28(r1) -/* 80006EA4 D8 41 00 30 */ stfd f2, 0x30(r1) -/* 80006EA8 D8 61 00 38 */ stfd f3, 0x38(r1) -/* 80006EAC D8 81 00 40 */ stfd f4, 0x40(r1) -/* 80006EB0 D8 A1 00 48 */ stfd f5, 0x48(r1) -/* 80006EB4 D8 C1 00 50 */ stfd f6, 0x50(r1) -/* 80006EB8 D8 E1 00 58 */ stfd f7, 0x58(r1) -/* 80006EBC D9 01 00 60 */ stfd f8, 0x60(r1) -lbl_80006EC0: -/* 80006EC0 90 61 00 08 */ stw r3, 8(r1) -/* 80006EC4 90 81 00 0C */ stw r4, 0xc(r1) -/* 80006EC8 90 A1 00 10 */ stw r5, 0x10(r1) -/* 80006ECC 90 C1 00 14 */ stw r6, 0x14(r1) -/* 80006ED0 90 E1 00 18 */ stw r7, 0x18(r1) -/* 80006ED4 91 01 00 1C */ stw r8, 0x1c(r1) -/* 80006ED8 91 21 00 20 */ stw r9, 0x20(r1) -/* 80006EDC 91 41 00 24 */ stw r10, 0x24(r1) -/* 80006EE0 48 33 68 15 */ bl OSDisableInterrupts -/* 80006EE4 38 81 00 68 */ addi r4, r1, 0x68 -/* 80006EE8 3C 00 03 00 */ lis r0, 0x300 -/* 80006EEC 90 01 00 68 */ stw r0, 0x68(r1) -/* 80006EF0 38 01 00 98 */ addi r0, r1, 0x98 -/* 80006EF4 90 01 00 6C */ stw r0, 0x6c(r1) -/* 80006EF8 38 01 00 08 */ addi r0, r1, 8 -/* 80006EFC 90 01 00 70 */ stw r0, 0x70(r1) -/* 80006F00 7F A3 EB 78 */ mr r3, r29 -/* 80006F04 4B FF FA 81 */ bl mDoPrintf_vprintf__FPCcP16__va_list_struct -/* 80006F08 3C 60 80 37 */ lis r3, m_Do_m_Do_printf__stringBase0@ha /* 0x80373CB0@ha */ -/* 80006F0C 38 63 3C B0 */ addi r3, r3, m_Do_m_Do_printf__stringBase0@l /* 0x80373CB0@l */ -/* 80006F10 38 63 00 60 */ addi r3, r3, 0x60 -/* 80006F14 7F E4 FB 78 */ mr r4, r31 -/* 80006F18 7F C5 F3 78 */ mr r5, r30 -/* 80006F1C 4C C6 31 82 */ crclr 6 -/* 80006F20 4B FF F8 F5 */ bl OSAttention -/* 80006F24 3C 60 80 37 */ lis r3, m_Do_m_Do_printf__stringBase0@ha /* 0x80373CB0@ha */ -/* 80006F28 38 63 3C B0 */ addi r3, r3, m_Do_m_Do_printf__stringBase0@l /* 0x80373CB0@l */ -/* 80006F2C 38 63 00 76 */ addi r3, r3, 0x76 -/* 80006F30 4C C6 31 82 */ crclr 6 -/* 80006F34 4B FF F8 E1 */ bl OSAttention -/* 80006F38 3B C0 00 00 */ li r30, 0 -/* 80006F3C 48 33 50 BD */ bl OSGetStackPointer -/* 80006F40 7C 7D 1B 78 */ mr r29, r3 -/* 80006F44 3C 60 80 37 */ lis r3, m_Do_m_Do_printf__stringBase0@ha /* 0x80373CB0@ha */ -/* 80006F48 3B E3 3C B0 */ addi r31, r3, m_Do_m_Do_printf__stringBase0@l /* 0x80373CB0@l */ -/* 80006F4C 48 00 00 20 */ b lbl_80006F6C -lbl_80006F50: -/* 80006F50 38 7F 00 9C */ addi r3, r31, 0x9c -/* 80006F54 7F A4 EB 78 */ mr r4, r29 -/* 80006F58 80 BD 00 00 */ lwz r5, 0(r29) -/* 80006F5C 80 DD 00 04 */ lwz r6, 4(r29) -/* 80006F60 4C C6 31 82 */ crclr 6 -/* 80006F64 4B FF F8 B1 */ bl OSAttention -/* 80006F68 83 BD 00 00 */ lwz r29, 0(r29) -lbl_80006F6C: -/* 80006F6C 28 1D 00 00 */ cmplwi r29, 0 -/* 80006F70 41 82 00 1C */ beq lbl_80006F8C -/* 80006F74 3C 1D 00 01 */ addis r0, r29, 1 -/* 80006F78 28 00 FF FF */ cmplwi r0, 0xffff -/* 80006F7C 41 82 00 10 */ beq lbl_80006F8C -/* 80006F80 28 1E 00 10 */ cmplwi r30, 0x10 -/* 80006F84 3B DE 00 01 */ addi r30, r30, 1 -/* 80006F88 41 80 FF C8 */ blt lbl_80006F50 -lbl_80006F8C: -/* 80006F8C 3C 60 01 23 */ lis r3, 0x0123 /* 0x01234567@ha */ -/* 80006F90 38 03 45 67 */ addi r0, r3, 0x4567 /* 0x01234567@l */ -/* 80006F94 90 03 45 67 */ stw r0, 0x4567(r3) -/* 80006F98 48 33 2D 69 */ bl PPCHalt -/* 80006F9C 39 61 00 90 */ addi r11, r1, 0x90 -/* 80006FA0 48 35 B2 89 */ bl _restgpr_29 -/* 80006FA4 80 01 00 94 */ lwz r0, 0x94(r1) -/* 80006FA8 7C 08 03 A6 */ mtlr r0 -/* 80006FAC 38 21 00 90 */ addi r1, r1, 0x90 -/* 80006FB0 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/attr__14daObjCatDoor_cCFv.s b/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/attr__14daObjCatDoor_cCFv.s deleted file mode 100644 index 5bc0857c927..00000000000 --- a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/attr__14daObjCatDoor_cCFv.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_80BC42B8: -/* 80BC42B8 3C 60 80 BC */ lis r3, M_attr__14daObjCatDoor_c@ha /* 0x80BC49B4@ha */ -/* 80BC42BC 38 63 49 B4 */ addi r3, r3, M_attr__14daObjCatDoor_c@l /* 0x80BC49B4@l */ -/* 80BC42C0 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/calcOpen__14daObjCatDoor_cFv.s b/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/calcOpen__14daObjCatDoor_cFv.s deleted file mode 100644 index 05e039b3809..00000000000 --- a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/calcOpen__14daObjCatDoor_cFv.s +++ /dev/null @@ -1,57 +0,0 @@ -lbl_80BC4560: -/* 80BC4560 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80BC4564 7C 08 02 A6 */ mflr r0 -/* 80BC4568 90 01 00 14 */ stw r0, 0x14(r1) -/* 80BC456C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80BC4570 93 C1 00 08 */ stw r30, 8(r1) -/* 80BC4574 7C 7E 1B 78 */ mr r30, r3 -/* 80BC4578 AB E3 07 90 */ lha r31, 0x790(r3) -/* 80BC457C 4B FF FD 3D */ bl attr__14daObjCatDoor_cCFv -/* 80BC4580 A8 A3 00 00 */ lha r5, 0(r3) -/* 80BC4584 38 7E 07 90 */ addi r3, r30, 0x790 -/* 80BC4588 38 80 00 00 */ li r4, 0 -/* 80BC458C 4B 6A C1 45 */ bl cLib_chaseS__FPsss -/* 80BC4590 38 C0 00 00 */ li r6, 0 -/* 80BC4594 38 00 00 02 */ li r0, 2 -/* 80BC4598 7C 09 03 A6 */ mtctr r0 -lbl_80BC459C: -/* 80BC459C 2C 06 00 00 */ cmpwi r6, 0 -/* 80BC45A0 40 82 00 0C */ bne lbl_80BC45AC -/* 80BC45A4 38 BE 05 70 */ addi r5, r30, 0x570 -/* 80BC45A8 48 00 00 08 */ b lbl_80BC45B0 -lbl_80BC45AC: -/* 80BC45AC 38 BE 06 68 */ addi r5, r30, 0x668 -lbl_80BC45B0: -/* 80BC45B0 2C 06 00 00 */ cmpwi r6, 0 -/* 80BC45B4 40 82 00 18 */ bne lbl_80BC45CC -/* 80BC45B8 A8 9E 07 90 */ lha r4, 0x790(r30) -/* 80BC45BC A8 05 00 F4 */ lha r0, 0xf4(r5) -/* 80BC45C0 7C 04 00 50 */ subf r0, r4, r0 -/* 80BC45C4 B0 05 00 F4 */ sth r0, 0xf4(r5) -/* 80BC45C8 48 00 00 14 */ b lbl_80BC45DC -lbl_80BC45CC: -/* 80BC45CC A8 85 00 F4 */ lha r4, 0xf4(r5) -/* 80BC45D0 A8 1E 07 90 */ lha r0, 0x790(r30) -/* 80BC45D4 7C 04 02 14 */ add r0, r4, r0 -/* 80BC45D8 B0 05 00 F4 */ sth r0, 0xf4(r5) -lbl_80BC45DC: -/* 80BC45DC 38 C6 00 01 */ addi r6, r6, 1 -/* 80BC45E0 42 00 FF BC */ bdnz lbl_80BC459C -/* 80BC45E4 7F E0 07 35 */ extsh. r0, r31 -/* 80BC45E8 41 82 00 28 */ beq lbl_80BC4610 -/* 80BC45EC 2C 03 00 00 */ cmpwi r3, 0 -/* 80BC45F0 41 82 00 20 */ beq lbl_80BC4610 -/* 80BC45F4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80BC45F8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80BC45FC 80 1E 00 B0 */ lwz r0, 0xb0(r30) -/* 80BC4600 54 04 06 3E */ clrlwi r4, r0, 0x18 -/* 80BC4604 88 1E 04 BA */ lbz r0, 0x4ba(r30) -/* 80BC4608 7C 05 07 74 */ extsb r5, r0 -/* 80BC460C 4B 47 0B F5 */ bl onSwitch__10dSv_info_cFii -lbl_80BC4610: -/* 80BC4610 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80BC4614 83 C1 00 08 */ lwz r30, 8(r1) -/* 80BC4618 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80BC461C 7C 08 03 A6 */ mtlr r0 -/* 80BC4620 38 21 00 10 */ addi r1, r1, 0x10 -/* 80BC4624 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/createSolidHeap__FP10fopAc_ac_c.s b/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/createSolidHeap__FP10fopAc_ac_c.s deleted file mode 100644 index d548368a3a7..00000000000 --- a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/createSolidHeap__FP10fopAc_ac_c.s +++ /dev/null @@ -1,82 +0,0 @@ -lbl_80BC42C4: -/* 80BC42C4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80BC42C8 7C 08 02 A6 */ mflr r0 -/* 80BC42CC 90 01 00 24 */ stw r0, 0x24(r1) -/* 80BC42D0 39 61 00 20 */ addi r11, r1, 0x20 -/* 80BC42D4 4B 79 DF 09 */ bl _savegpr_29 -/* 80BC42D8 7C 7F 1B 78 */ mr r31, r3 -/* 80BC42DC 3C 60 80 BC */ lis r3, l_arcName@ha /* 0x80BC49E0@ha */ -/* 80BC42E0 38 63 49 E0 */ addi r3, r3, l_arcName@l /* 0x80BC49E0@l */ -/* 80BC42E4 80 63 00 00 */ lwz r3, 0(r3) -/* 80BC42E8 38 80 00 04 */ li r4, 4 -/* 80BC42EC 3C A0 80 40 */ lis r5, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80BC42F0 38 A5 61 C0 */ addi r5, r5, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80BC42F4 3F A5 00 02 */ addis r29, r5, 2 -/* 80BC42F8 3B BD C2 F8 */ addi r29, r29, -15624 -/* 80BC42FC 7F A5 EB 78 */ mr r5, r29 -/* 80BC4300 38 C0 00 80 */ li r6, 0x80 -/* 80BC4304 4B 47 7F E9 */ bl getRes__14dRes_control_cFPCclP11dRes_info_ci -/* 80BC4308 7C 7E 1B 78 */ mr r30, r3 -/* 80BC430C 3C 80 00 08 */ lis r4, 8 -/* 80BC4310 3C A0 11 00 */ lis r5, 0x1100 /* 0x11000084@ha */ -/* 80BC4314 38 A5 00 84 */ addi r5, r5, 0x0084 /* 0x11000084@l */ -/* 80BC4318 4B 45 09 3D */ bl mDoExt_J3DModel__create__FP12J3DModelDataUlUl -/* 80BC431C 90 7F 05 70 */ stw r3, 0x570(r31) -/* 80BC4320 7F C3 F3 78 */ mr r3, r30 -/* 80BC4324 3C 80 00 08 */ lis r4, 8 -/* 80BC4328 3C A0 11 00 */ lis r5, 0x1100 /* 0x11000084@ha */ -/* 80BC432C 38 A5 00 84 */ addi r5, r5, 0x0084 /* 0x11000084@l */ -/* 80BC4330 4B 45 09 25 */ bl mDoExt_J3DModel__create__FP12J3DModelDataUlUl -/* 80BC4334 90 7F 06 68 */ stw r3, 0x668(r31) -/* 80BC4338 80 1F 05 70 */ lwz r0, 0x570(r31) -/* 80BC433C 28 00 00 00 */ cmplwi r0, 0 -/* 80BC4340 41 82 00 10 */ beq lbl_80BC4350 -/* 80BC4344 80 1F 06 68 */ lwz r0, 0x668(r31) -/* 80BC4348 28 00 00 00 */ cmplwi r0, 0 -/* 80BC434C 40 82 00 0C */ bne lbl_80BC4358 -lbl_80BC4350: -/* 80BC4350 38 60 00 00 */ li r3, 0 -/* 80BC4354 48 00 00 88 */ b lbl_80BC43DC -lbl_80BC4358: -/* 80BC4358 3C 60 80 BC */ lis r3, l_arcName@ha /* 0x80BC49E0@ha */ -/* 80BC435C 38 63 49 E0 */ addi r3, r3, l_arcName@l /* 0x80BC49E0@l */ -/* 80BC4360 80 63 00 00 */ lwz r3, 0(r3) -/* 80BC4364 38 80 00 07 */ li r4, 7 -/* 80BC4368 7F A5 EB 78 */ mr r5, r29 -/* 80BC436C 38 C0 00 80 */ li r6, 0x80 -/* 80BC4370 4B 47 7F 7D */ bl getRes__14dRes_control_cFPCclP11dRes_info_ci -/* 80BC4374 7C 64 1B 78 */ mr r4, r3 -/* 80BC4378 38 7F 05 74 */ addi r3, r31, 0x574 -/* 80BC437C 38 A0 00 01 */ li r5, 1 -/* 80BC4380 38 DF 06 34 */ addi r6, r31, 0x634 -/* 80BC4384 4B 4B 5B B5 */ bl Set__4cBgWFP6cBgD_tUlPA3_A4_f -/* 80BC4388 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80BC438C 41 82 00 0C */ beq lbl_80BC4398 -/* 80BC4390 38 60 00 00 */ li r3, 0 -/* 80BC4394 48 00 00 48 */ b lbl_80BC43DC -lbl_80BC4398: -/* 80BC4398 3C 60 80 BC */ lis r3, l_arcName@ha /* 0x80BC49E0@ha */ -/* 80BC439C 38 63 49 E0 */ addi r3, r3, l_arcName@l /* 0x80BC49E0@l */ -/* 80BC43A0 80 63 00 00 */ lwz r3, 0(r3) -/* 80BC43A4 38 80 00 07 */ li r4, 7 -/* 80BC43A8 7F A5 EB 78 */ mr r5, r29 -/* 80BC43AC 38 C0 00 80 */ li r6, 0x80 -/* 80BC43B0 4B 47 7F 3D */ bl getRes__14dRes_control_cFPCclP11dRes_info_ci -/* 80BC43B4 7C 64 1B 78 */ mr r4, r3 -/* 80BC43B8 38 7F 06 6C */ addi r3, r31, 0x66c -/* 80BC43BC 38 A0 00 01 */ li r5, 1 -/* 80BC43C0 38 DF 07 2C */ addi r6, r31, 0x72c -/* 80BC43C4 4B 4B 5B 75 */ bl Set__4cBgWFP6cBgD_tUlPA3_A4_f -/* 80BC43C8 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80BC43CC 41 82 00 0C */ beq lbl_80BC43D8 -/* 80BC43D0 38 60 00 00 */ li r3, 0 -/* 80BC43D4 48 00 00 08 */ b lbl_80BC43DC -lbl_80BC43D8: -/* 80BC43D8 38 60 00 01 */ li r3, 1 -lbl_80BC43DC: -/* 80BC43DC 39 61 00 20 */ addi r11, r1, 0x20 -/* 80BC43E0 4B 79 DE 49 */ bl _restgpr_29 -/* 80BC43E4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80BC43E8 7C 08 03 A6 */ mtlr r0 -/* 80BC43EC 38 21 00 20 */ addi r1, r1, 0x20 -/* 80BC43F0 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Draw__FP14daObjCatDoor_c.s b/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Draw__FP14daObjCatDoor_c.s deleted file mode 100644 index d2ae393317d..00000000000 --- a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Draw__FP14daObjCatDoor_c.s +++ /dev/null @@ -1,50 +0,0 @@ -lbl_80BC4628: -/* 80BC4628 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80BC462C 7C 08 02 A6 */ mflr r0 -/* 80BC4630 90 01 00 14 */ stw r0, 0x14(r1) -/* 80BC4634 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80BC4638 93 C1 00 08 */ stw r30, 8(r1) -/* 80BC463C 7C 7E 1B 78 */ mr r30, r3 -/* 80BC4640 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */ -/* 80BC4644 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */ -/* 80BC4648 38 80 00 10 */ li r4, 0x10 -/* 80BC464C 38 BE 04 D0 */ addi r5, r30, 0x4d0 -/* 80BC4650 38 DE 01 0C */ addi r6, r30, 0x10c -/* 80BC4654 4B 5D F1 71 */ bl settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c -/* 80BC4658 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */ -/* 80BC465C 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */ -/* 80BC4660 80 9E 05 70 */ lwz r4, 0x570(r30) -/* 80BC4664 80 84 00 04 */ lwz r4, 4(r4) -/* 80BC4668 38 BE 01 0C */ addi r5, r30, 0x10c -/* 80BC466C 4B 5E 07 35 */ bl setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c -/* 80BC4670 3C 60 80 43 */ lis r3, g_env_light@ha /* 0x8042CA54@ha */ -/* 80BC4674 38 63 CA 54 */ addi r3, r3, g_env_light@l /* 0x8042CA54@l */ -/* 80BC4678 80 9E 06 68 */ lwz r4, 0x668(r30) -/* 80BC467C 80 84 00 04 */ lwz r4, 4(r4) -/* 80BC4680 38 BE 01 0C */ addi r5, r30, 0x10c -/* 80BC4684 4B 5E 07 1D */ bl setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c -/* 80BC4688 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80BC468C 38 83 61 C0 */ addi r4, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80BC4690 80 04 5F 70 */ lwz r0, 0x5f70(r4) -/* 80BC4694 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 80BC4698 3B E3 4A C8 */ addi r31, r3, j3dSys@l /* 0x80434AC8@l */ -/* 80BC469C 90 1F 00 48 */ stw r0, 0x48(r31) -/* 80BC46A0 80 04 5F 74 */ lwz r0, 0x5f74(r4) -/* 80BC46A4 90 1F 00 4C */ stw r0, 0x4c(r31) -/* 80BC46A8 80 7E 05 70 */ lwz r3, 0x570(r30) -/* 80BC46AC 4B 44 96 19 */ bl mDoExt_modelUpdateDL__FP8J3DModel -/* 80BC46B0 80 7E 06 68 */ lwz r3, 0x668(r30) -/* 80BC46B4 4B 44 96 11 */ bl mDoExt_modelUpdateDL__FP8J3DModel -/* 80BC46B8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80BC46BC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80BC46C0 80 03 5F 80 */ lwz r0, 0x5f80(r3) -/* 80BC46C4 90 1F 00 48 */ stw r0, 0x48(r31) -/* 80BC46C8 80 03 5F 84 */ lwz r0, 0x5f84(r3) -/* 80BC46CC 90 1F 00 4C */ stw r0, 0x4c(r31) -/* 80BC46D0 38 60 00 01 */ li r3, 1 -/* 80BC46D4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80BC46D8 83 C1 00 08 */ lwz r30, 8(r1) -/* 80BC46DC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80BC46E0 7C 08 03 A6 */ mtlr r0 -/* 80BC46E4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80BC46E8 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Execute__FP14daObjCatDoor_c.s b/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Execute__FP14daObjCatDoor_c.s deleted file mode 100644 index 1180447fce0..00000000000 --- a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Execute__FP14daObjCatDoor_c.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_80BC46EC: -/* 80BC46EC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80BC46F0 7C 08 02 A6 */ mflr r0 -/* 80BC46F4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80BC46F8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80BC46FC 7C 7F 1B 78 */ mr r31, r3 -/* 80BC4700 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80BC4704 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80BC4708 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 80BC470C 54 04 06 3E */ clrlwi r4, r0, 0x18 -/* 80BC4710 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 80BC4714 7C 05 07 74 */ extsb r5, r0 -/* 80BC4718 4B 47 0C 49 */ bl isSwitch__10dSv_info_cCFii -/* 80BC471C 2C 03 00 00 */ cmpwi r3, 0 -/* 80BC4720 40 82 00 10 */ bne lbl_80BC4730 -/* 80BC4724 A8 1F 07 90 */ lha r0, 0x790(r31) -/* 80BC4728 2C 00 00 00 */ cmpwi r0, 0 -/* 80BC472C 40 82 00 0C */ bne lbl_80BC4738 -lbl_80BC4730: -/* 80BC4730 38 60 00 01 */ li r3, 1 -/* 80BC4734 48 00 00 18 */ b lbl_80BC474C -lbl_80BC4738: -/* 80BC4738 7F E3 FB 78 */ mr r3, r31 -/* 80BC473C 4B FF FE 25 */ bl calcOpen__14daObjCatDoor_cFv -/* 80BC4740 7F E3 FB 78 */ mr r3, r31 -/* 80BC4744 4B FF FD 11 */ bl setBaseMtx__14daObjCatDoor_cFv -/* 80BC4748 38 60 00 01 */ li r3, 1 -lbl_80BC474C: -/* 80BC474C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80BC4750 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80BC4754 7C 08 03 A6 */ mtlr r0 -/* 80BC4758 38 21 00 10 */ addi r1, r1, 0x10 -/* 80BC475C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/initBaseMtx__14daObjCatDoor_cFv.s b/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/initBaseMtx__14daObjCatDoor_cFv.s deleted file mode 100644 index 4ceb5b5ae1a..00000000000 --- a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/initBaseMtx__14daObjCatDoor_cFv.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_80BC43F4: -/* 80BC43F4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80BC43F8 7C 08 02 A6 */ mflr r0 -/* 80BC43FC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80BC4400 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80BC4404 7C 7F 1B 78 */ mr r31, r3 -/* 80BC4408 38 1F 07 60 */ addi r0, r31, 0x760 -/* 80BC440C 90 03 05 04 */ stw r0, 0x504(r3) -/* 80BC4410 38 7F 04 D0 */ addi r3, r31, 0x4d0 -/* 80BC4414 4B 44 89 51 */ bl transS__14mDoMtx_stack_cFRC4cXyz -/* 80BC4418 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80BC441C 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80BC4420 A8 9F 04 E6 */ lha r4, 0x4e6(r31) -/* 80BC4424 4B 44 80 11 */ bl mDoMtx_YrotM__FPA4_fs -/* 80BC4428 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80BC442C 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80BC4430 38 9F 07 60 */ addi r4, r31, 0x760 -/* 80BC4434 4B 78 20 7D */ bl PSMTXCopy -/* 80BC4438 7F E3 FB 78 */ mr r3, r31 -/* 80BC443C 48 00 00 19 */ bl setBaseMtx__14daObjCatDoor_cFv -/* 80BC4440 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80BC4444 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80BC4448 7C 08 03 A6 */ mtlr r0 -/* 80BC444C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80BC4450 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/setBaseMtx__14daObjCatDoor_cFv.s b/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/setBaseMtx__14daObjCatDoor_cFv.s deleted file mode 100644 index 47613ed2452..00000000000 --- a/asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/setBaseMtx__14daObjCatDoor_cFv.s +++ /dev/null @@ -1,75 +0,0 @@ -lbl_80BC4454: -/* 80BC4454 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 80BC4458 7C 08 02 A6 */ mflr r0 -/* 80BC445C 90 01 00 44 */ stw r0, 0x44(r1) -/* 80BC4460 DB E1 00 30 */ stfd f31, 0x30(r1) -/* 80BC4464 F3 E1 00 38 */ psq_st f31, 56(r1), 0, 0 /* qr0 */ -/* 80BC4468 39 61 00 30 */ addi r11, r1, 0x30 -/* 80BC446C 4B 79 DD 61 */ bl _savegpr_25 -/* 80BC4470 7C 79 1B 78 */ mr r25, r3 -/* 80BC4474 3C 60 80 BC */ lis r3, M_attr__14daObjCatDoor_c@ha /* 0x80BC49B4@ha */ -/* 80BC4478 3B A3 49 B4 */ addi r29, r3, M_attr__14daObjCatDoor_c@l /* 0x80BC49B4@l */ -/* 80BC447C 38 79 04 D0 */ addi r3, r25, 0x4d0 -/* 80BC4480 4B 44 88 E5 */ bl transS__14mDoMtx_stack_cFRC4cXyz -/* 80BC4484 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80BC4488 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80BC448C A8 99 04 E6 */ lha r4, 0x4e6(r25) -/* 80BC4490 4B 44 7F A5 */ bl mDoMtx_YrotM__FPA4_fs -/* 80BC4494 3B 40 00 00 */ li r26, 0 -/* 80BC4498 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 80BC449C 3B C3 D4 70 */ addi r30, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 80BC44A0 7F DF F3 78 */ mr r31, r30 -lbl_80BC44A4: -/* 80BC44A4 2C 1A 00 00 */ cmpwi r26, 0 -/* 80BC44A8 40 82 00 0C */ bne lbl_80BC44B4 -/* 80BC44AC 3B 99 05 70 */ addi r28, r25, 0x570 -/* 80BC44B0 48 00 00 08 */ b lbl_80BC44B8 -lbl_80BC44B4: -/* 80BC44B4 3B 99 06 68 */ addi r28, r25, 0x668 -lbl_80BC44B8: -/* 80BC44B8 2C 1A 00 00 */ cmpwi r26, 0 -/* 80BC44BC 40 82 00 0C */ bne lbl_80BC44C8 -/* 80BC44C0 C3 FD 00 04 */ lfs f31, 4(r29) -/* 80BC44C4 48 00 00 08 */ b lbl_80BC44CC -lbl_80BC44C8: -/* 80BC44C8 C3 FD 00 08 */ lfs f31, 8(r29) -lbl_80BC44CC: -/* 80BC44CC 2C 1A 00 00 */ cmpwi r26, 0 -/* 80BC44D0 40 82 00 0C */ bne lbl_80BC44DC -/* 80BC44D4 AB 7C 00 F4 */ lha r27, 0xf4(r28) -/* 80BC44D8 48 00 00 14 */ b lbl_80BC44EC -lbl_80BC44DC: -/* 80BC44DC A8 7C 00 F4 */ lha r3, 0xf4(r28) -/* 80BC44E0 3C 63 00 01 */ addis r3, r3, 1 -/* 80BC44E4 38 03 80 00 */ addi r0, r3, -32768 -/* 80BC44E8 7C 1B 07 34 */ extsh r27, r0 -lbl_80BC44EC: -/* 80BC44EC 4B 44 87 DD */ bl push__14mDoMtx_stack_cFv -/* 80BC44F0 FC 20 F8 90 */ fmr f1, f31 -/* 80BC44F4 C0 5D 00 0C */ lfs f2, 0xc(r29) -/* 80BC44F8 FC 60 10 90 */ fmr f3, f2 -/* 80BC44FC 4B 44 88 A1 */ bl transM__14mDoMtx_stack_cFfff -/* 80BC4500 7F C3 F3 78 */ mr r3, r30 -/* 80BC4504 7F 64 07 34 */ extsh r4, r27 -/* 80BC4508 4B 44 7F 2D */ bl mDoMtx_YrotM__FPA4_fs -/* 80BC450C 7F C3 F3 78 */ mr r3, r30 -/* 80BC4510 80 9C 00 00 */ lwz r4, 0(r28) -/* 80BC4514 38 84 00 24 */ addi r4, r4, 0x24 -/* 80BC4518 4B 78 1F 99 */ bl PSMTXCopy -/* 80BC451C 7F E3 FB 78 */ mr r3, r31 -/* 80BC4520 38 9C 00 C4 */ addi r4, r28, 0xc4 -/* 80BC4524 4B 78 1F 8D */ bl PSMTXCopy -/* 80BC4528 38 7C 00 04 */ addi r3, r28, 4 -/* 80BC452C 4B 4B 74 95 */ bl Move__4dBgWFv -/* 80BC4530 4B 44 87 E5 */ bl pop__14mDoMtx_stack_cFv -/* 80BC4534 3B 5A 00 01 */ addi r26, r26, 1 -/* 80BC4538 2C 1A 00 02 */ cmpwi r26, 2 -/* 80BC453C 41 80 FF 68 */ blt lbl_80BC44A4 -/* 80BC4540 E3 E1 00 38 */ psq_l f31, 56(r1), 0, 0 /* qr0 */ -/* 80BC4544 CB E1 00 30 */ lfd f31, 0x30(r1) -/* 80BC4548 39 61 00 30 */ addi r11, r1, 0x30 -/* 80BC454C 4B 79 DC CD */ bl _restgpr_25 -/* 80BC4550 80 01 00 44 */ lwz r0, 0x44(r1) -/* 80BC4554 7C 08 03 A6 */ mtlr r0 -/* 80BC4558 38 21 00 40 */ addi r1, r1, 0x40 -/* 80BC455C 4E 80 00 20 */ blr diff --git a/include/JSystem/J3DGraphAnimator/J3DJointTree.h b/include/JSystem/J3DGraphAnimator/J3DJointTree.h index 80513fb4de3..a58b55c9a90 100644 --- a/include/JSystem/J3DGraphAnimator/J3DJointTree.h +++ b/include/JSystem/J3DGraphAnimator/J3DJointTree.h @@ -43,11 +43,14 @@ public: u16 getDrawFullWgtMtxNum() const { return mDrawMtxData.mDrawFullWgtMtxNum; } u16 getJointNum() const { return mJointNum; } u16 getDrawMtxNum() const { return mDrawMtxData.mEntryNum; } + u8 getDrawMtxFlag(u16 idx) const { return mDrawMtxData.mDrawMtxFlag[idx]; } + u8 getDrawMtxIndex(u16 idx) const { return mDrawMtxData.mDrawMtxIndex[idx]; } JUTNameTab* getJointName() const { return mJointName; } J3DJoint* getRootNode() { return mRootNode; } J3DJoint* getJointNodePointer(u16 idx) const { return mJointNodePointer[idx]; } J3DMtxCalc* getBasicMtxCalc() const { return mBasicMtxCalc; } Mtx& getInvJointMtx(s32 idx) const { return mInvJointMtx[idx]; } + u32 getModelDataType() const { return mModelDataType; } private: /* 0x04 */ J3DModelHierarchy* mHierarchy; diff --git a/include/JSystem/J3DGraphAnimator/J3DModel.h b/include/JSystem/J3DGraphAnimator/J3DModel.h index 931c225adbc..a6537a1bf2b 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModel.h +++ b/include/JSystem/J3DGraphAnimator/J3DModel.h @@ -65,12 +65,13 @@ public: void offFlag(u32 flag) { mFlags &= ~flag; } bool checkFlag(u32 flag) const { return (mFlags & flag) ? true : false; } - bool isCpuSkinningOn() const { return (mFlags & 4) && (mFlags & 8); } + bool isCpuSkinningOn() const { return (mFlags & J3DMdlFlag_SkinPosCpu) && (mFlags & J3DMdlFlag_SkinNrmCpu); } Mtx& getBaseTRMtx() { return mBaseTransformMtx; } void i_setBaseTRMtx(Mtx m) { PSMTXCopy(m, mBaseTransformMtx); } u32 getMtxCalcMode() const { return mFlags & 0x03; } J3DVertexBuffer* getVertexBuffer() const { return (J3DVertexBuffer*)&mVertexBuffer; } + J3DMatPacket* getMatPacket(u16 idx) const { return &mMatPacket[idx]; } J3DShapePacket* getShapePacket(u16 idx) const { return &mShapePacket[idx]; } Mtx33* getBumpMtxPtr(int idx) const { return mMtxBuffer->getBumpMtxPtr(idx); } Mtx33* getNrmMtxPtr() const { return mMtxBuffer->getNrmMtxPtr(); } diff --git a/include/JSystem/J3DGraphAnimator/J3DModelData.h b/include/JSystem/J3DGraphAnimator/J3DModelData.h index 51d8f08e8cc..1bc947fab48 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModelData.h +++ b/include/JSystem/J3DGraphAnimator/J3DModelData.h @@ -38,11 +38,14 @@ public: J3DTexture* getTexture() const { return mMaterialTable.getTexture(); } JUTNameTab* getTextureName() const { return mMaterialTable.getTextureName(); } u16 getWEvlpMtxNum() const { return mJointTree.getWEvlpMtxNum(); } + u32 getModelDataType() const { return mJointTree.getModelDataType(); } void* getVtxPosArray() const { return mVertexData.getVtxPosArray(); } void* getVtxNrmArray() const { return mVertexData.getVtxNrmArray(); } GXColor* getVtxColorArray(u8 idx) const { return mVertexData.getVtxColorArray(idx); } - bool checkFlag(u32 flag) const { return !!(mFlags & flag); } - bool checkBumpFlag() const { return mbHasBumpArray; } + bool checkFlag(u32 flag) const { return (mFlags & flag) ? true : false; } + u32 getFlag() const { return mFlags; } + u16 checkBumpFlag() const { return mbHasBumpArray; } + void setBumpFlag(u32 flag) { mbHasBumpArray = flag; } bool checkBBoardFlag() const { return mbHasBillboard == 1; } bool isLocked() { return mMaterialTable.isLocked(); } void entryTexMtxAnimator(J3DAnmTextureSRTKey* anm) { mMaterialTable.entryTexMtxAnimator(anm); } diff --git a/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h b/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h index 1977afe281c..ee497312894 100644 --- a/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h +++ b/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h @@ -14,11 +14,11 @@ public: /* 80326214 */ void initialize(); /* 80326258 */ s32 create(J3DModelData*, u32); - /* 80326364 */ void createAnmMtx(J3DModelData*); - /* 803263F0 */ void createWeightEnvelopeMtx(J3DModelData*); - /* 8032648C */ void setNoUseDrawMtx(); - /* 803264B8 */ void createDoubleDrawMtx(J3DModelData*, u32); - /* 80326664 */ void createBumpMtxArray(J3DModelData*, u32); + /* 80326364 */ s32 createAnmMtx(J3DModelData*); + /* 803263F0 */ s32 createWeightEnvelopeMtx(J3DModelData*); + /* 8032648C */ s32 setNoUseDrawMtx(); + /* 803264B8 */ s32 createDoubleDrawMtx(J3DModelData*, u32); + /* 80326664 */ s32 createBumpMtxArray(J3DModelData*, u32); /* 803268D4 */ void calcWeightEnvelopeMtx(); /* 80326ACC */ void calcDrawMtx(u32, Vec const&, f32 const (&)[3][4]); /* 80326D3C */ void calcNrmMtx(); @@ -26,26 +26,29 @@ public: MtxP getAnmMtx(int idx) const { return mpAnmMtx[idx]; } - void setScaleFlag(int idx, u8 flag) { mScaleFlagArray[idx] = flag; } + void setScaleFlag(int idx, u8 flag) { mpScaleFlagArr[idx] = flag; } u32* getCurrentViewNoPtr() { return &mCurrentViewNo; } - u8* getScaleFlagArray() const { return mScaleFlagArray; } - Mtx** getDrawMtxPtrPtr() const { return mpDrawMtxArr; } - Mtx* getDrawMtxPtr() const { return mpDrawMtxArr[mCurrentViewNo]; } - Mtx33** getNrmMtxPtrPtr() const { return mpNrmMtxArr; } - Mtx33* getNrmMtxPtr() const { return mpNrmMtxArr[mCurrentViewNo]; } - Mtx33** getBumpMtxPtrPtr() const { return mpBumpMtxArr; } - Mtx33* getBumpMtxPtr(int idx) const { return mpBumpMtxArr[idx]; } + u8* getScaleFlagArray() const { return mpScaleFlagArr; } + u8 getScaleFlag(u16 idx) const { return mpScaleFlagArr[idx]; } + Mtx** getDrawMtxPtrPtr() const { return mpDrawMtxArr[1]; } + Mtx* getDrawMtxPtr() const { return mpDrawMtxArr[1][mCurrentViewNo]; } + Mtx* getDrawMtx(u16 idx) const { return &mpDrawMtxArr[1][mCurrentViewNo][idx]; } + Mtx33** getNrmMtxPtrPtr() const { return mpNrmMtxArr[1]; } + Mtx33* getNrmMtxPtr() const { return mpNrmMtxArr[1][mCurrentViewNo]; } + Mtx33* getNrmMtx(u16 idx) const { return &mpNrmMtxArr[1][mCurrentViewNo][idx]; } + Mtx33*** getBumpMtxPtrPtr() const { return mpBumpMtxArr[1]; } + Mtx33* getBumpMtxPtr(int idx) const { return mpBumpMtxArr[1][idx][mCurrentViewNo]; } void swapDrawMtx() { - Mtx* tmp = mpOldDrawMtxArr[mCurrentViewNo]; - mpOldDrawMtxArr[mCurrentViewNo] = mpDrawMtxArr[mCurrentViewNo]; - mpDrawMtxArr[mCurrentViewNo] = tmp; + Mtx* tmp = mpDrawMtxArr[0][mCurrentViewNo]; + mpDrawMtxArr[0][mCurrentViewNo] = mpDrawMtxArr[1][mCurrentViewNo]; + mpDrawMtxArr[1][mCurrentViewNo] = tmp; } void swapNrmMtx() { - Mtx33* tmp = mpOldNrmMtxArr[mCurrentViewNo]; - mpOldNrmMtxArr[mCurrentViewNo] = mpNrmMtxArr[mCurrentViewNo]; - mpNrmMtxArr[mCurrentViewNo] = tmp; + Mtx33* tmp = mpNrmMtxArr[0][mCurrentViewNo]; + mpNrmMtxArr[0][mCurrentViewNo] = mpNrmMtxArr[1][mCurrentViewNo]; + mpNrmMtxArr[1][mCurrentViewNo] = tmp; } static Mtx sNoUseDrawMtx; @@ -55,19 +58,16 @@ public: private: /* 0x00 */ J3DJointTree* mJointTree; - /* 0x04 */ u8* mScaleFlagArray; - /* 0x08 */ u8* mEnvScaleFlag; + /* 0x04 */ u8* mpScaleFlagArr; + /* 0x08 */ u8* mpEvlpScaleFlagArr; /* 0x0C */ Mtx* mpAnmMtx; - /* 0x10 */ Mtx* mpWeightEnvMtx; - /* 0x14 */ Mtx** mpOldDrawMtxArr; - /* 0x18 */ Mtx** mpDrawMtxArr; - /* 0x1C */ Mtx33** mpOldNrmMtxArr; - /* 0x20 */ Mtx33** mpNrmMtxArr; - /* 0x24 */ u32 field_0x24; - /* 0x28 */ Mtx33** mpBumpMtxArr; + /* 0x10 */ Mtx* mpWeightEvlpMtx; + /* 0x14 */ Mtx** mpDrawMtxArr[2]; + /* 0x1C */ Mtx33** mpNrmMtxArr[2]; + /* 0x28 */ Mtx33*** mpBumpMtxArr[2]; /* 0x2C */ u32 mFlags; /* 0x30 */ u32 mCurrentViewNo; - /* 0x34 */ Mtx** mUserAnmMtx; + /* 0x34 */ Mtx* mpUserAnmMtx; public: /* 803283B4 */ virtual ~J3DMtxBuffer(); diff --git a/include/JSystem/J3DGraphBase/J3DMatBlock.h b/include/JSystem/J3DGraphBase/J3DMatBlock.h index 5097825618f..c489742c32b 100644 --- a/include/JSystem/J3DGraphBase/J3DMatBlock.h +++ b/include/JSystem/J3DGraphBase/J3DMatBlock.h @@ -148,7 +148,7 @@ public: /* 8031730C */ virtual bool countDLSize(); /* 80323544 */ virtual void setTexNo(u32, u16 const*); /* 8000E0AC */ virtual void setTexNo(u32, u16); - /* 8000DF94 */ virtual void getTexNo(u32) const; + /* 8000DF94 */ virtual u32 getTexNo(u32) const; /* 80323548 */ virtual void setTevOrder(u32, J3DTevOrder const*); /* 8000E0BC */ virtual void setTevOrder(u32, J3DTevOrder); /* 8000DFB8 */ virtual bool getTevOrder(u32); @@ -211,7 +211,7 @@ public: /* 80317BB4 */ virtual s32 countDLSize(); /* 803229D0 */ virtual void setTexNo(u32, u16 const*); /* 803229C0 */ virtual void setTexNo(u32, u16); - /* 803229E4 */ virtual void getTexNo(u32) const; + /* 803229E4 */ virtual u32 getTexNo(u32) const; /* 80322A08 */ virtual void setTevOrder(u32, J3DTevOrder const*); /* 803229F4 */ virtual void setTevOrder(u32, J3DTevOrder); /* 80322A1C */ virtual void getTevOrder(u32); @@ -275,7 +275,7 @@ public: /* 80317BCC */ virtual s32 countDLSize(); /* 8032202C */ virtual void setTexNo(u32, u16 const*); /* 8032201C */ virtual void setTexNo(u32, u16); - /* 80322040 */ virtual void getTexNo(u32) const; + /* 80322040 */ virtual u32 getTexNo(u32) const; /* 80322064 */ virtual void setTevOrder(u32, J3DTevOrder const*); /* 80322050 */ virtual void setTevOrder(u32, J3DTevOrder); /* 80322078 */ virtual void getTevOrder(u32); @@ -345,7 +345,7 @@ public: /* 80317BC4 */ virtual s32 countDLSize(); /* 803223F0 */ virtual void setTexNo(u32, u16 const*); /* 803223E0 */ virtual void setTexNo(u32, u16); - /* 80322404 */ virtual void getTexNo(u32) const; + /* 80322404 */ virtual u32 getTexNo(u32) const; /* 80322428 */ virtual void setTevOrder(u32, J3DTevOrder const*); /* 80322414 */ virtual void setTevOrder(u32, J3DTevOrder); /* 8032243C */ virtual void getTevOrder(u32); @@ -415,7 +415,7 @@ public: /* 80317BD4 */ virtual s32 countDLSize(); /* 80321C60 */ virtual void setTexNo(u32, u16 const*); /* 80321C50 */ virtual void setTexNo(u32, u16); - /* 80321C74 */ virtual void getTexNo(u32) const; + /* 80321C74 */ virtual u32 getTexNo(u32) const; /* 80321C98 */ virtual void setTevOrder(u32, J3DTevOrder const*); /* 80321C84 */ virtual void setTevOrder(u32, J3DTevOrder); /* 80321CAC */ virtual void getTevOrder(u32); @@ -485,7 +485,7 @@ public: /* 80317BBC */ virtual s32 countDLSize(); /* 803227B4 */ virtual void setTexNo(u32, u16 const*); /* 803227A4 */ virtual void setTexNo(u32, u16); - /* 803227C8 */ virtual void getTexNo(u32) const; + /* 803227C8 */ virtual u32 getTexNo(u32) const; /* 803227EC */ virtual void setTevOrder(u32, J3DTevOrder const*); /* 803227D8 */ virtual void setTevOrder(u32, J3DTevOrder); /* 80322800 */ virtual void getTevOrder(u32); diff --git a/include/JSystem/J3DGraphBase/J3DMaterial.h b/include/JSystem/J3DGraphBase/J3DMaterial.h index 3e6b8228233..3dae56cd03b 100644 --- a/include/JSystem/J3DGraphBase/J3DMaterial.h +++ b/include/JSystem/J3DGraphBase/J3DMaterial.h @@ -60,6 +60,7 @@ public: } } J3DNBTScale* getNBTScale() const { return mTexGenBlock->getNBTScale(); } + u32 getTexNo(u32 idx) const { return mTevBlock->getTexNo(idx); } void setTevColor(u32 i, const J3DGXColorS10* i_color) { mTevBlock->setTevColor(i, i_color); } @@ -71,7 +72,7 @@ public: /* 0x14 */ u16 mIndex; /* 0x18 */ u32 mInvalid; /* 0x1C */ u32 field_0x1c; - /* 0x20 */ u32 field_0x20; + /* 0x20 */ u32 mDiffFlag; /* 0x24 */ J3DColorBlock* mColorBlock; /* 0x28 */ J3DTexGenBlock* mTexGenBlock; /* 0x2C */ J3DTevBlock* mTevBlock; diff --git a/include/JSystem/J3DGraphBase/J3DPacket.h b/include/JSystem/J3DGraphBase/J3DPacket.h index 232db283d3d..00fa7590f04 100644 --- a/include/JSystem/J3DGraphBase/J3DPacket.h +++ b/include/JSystem/J3DGraphBase/J3DPacket.h @@ -15,6 +15,7 @@ class J3DModel; class J3DMtxBuffer; class J3DShape; class J3DTexMtx; +class J3DTexMtxObj; class J3DTexture; class J3DDisplayListObj { @@ -100,13 +101,13 @@ public: void offFlag(u32 flag) { mFlags &= ~flag; } void lock() { onFlag(LOCKED); } void unlock() { offFlag(LOCKED); } - J3DTexMtx* getTexMtxObj() const { return mpTexMtx; } + J3DTexMtxObj* getTexMtxObj() const { return mpTexMtxObj; } public: /* 0x10 */ u32 mFlags; /* 0x14 */ char mPad0[0x0C]; // unk /* 0x20 */ J3DDisplayListObj* mpDisplayListObj; - /* 0x24 */ J3DTexMtx* mpTexMtx; + /* 0x24 */ J3DTexMtxObj* mpTexMtxObj; }; // Size: 0x28 class J3DShapePacket : public J3DDrawPacket { @@ -149,7 +150,7 @@ public: J3DShapePacket* getShapePacket() const { return mpShapePacket; } void setShapePacket(J3DShapePacket* packet) { mpShapePacket = packet; } void setInitShapePacket(J3DShapePacket* packet) { mpInitShapePacket = packet; } - bool isChanged() const { return mDiffFlag < 0; } + bool isChanged() const { return mDiffFlag & 0x80000000; } virtual ~J3DMatPacket(); virtual int entry(J3DDrawBuffer*); diff --git a/include/JSystem/J3DGraphBase/J3DShape.h b/include/JSystem/J3DGraphBase/J3DShape.h index 372dacc9766..3d26ef2d6be 100644 --- a/include/JSystem/J3DGraphBase/J3DShape.h +++ b/include/JSystem/J3DGraphBase/J3DShape.h @@ -101,6 +101,7 @@ public: u32 getBumpMtxOffset() const { return mBumpMtxOffset; } inline J3DMaterial* getMaterial() const { return mMaterial; } + inline u32 getIndex() const { return mIndex; } inline u32 getPipeline() const { return (mFlags >> 2) & 0x07; } inline u32 getTexMtxLoadType() const { return mFlags & 0xF000; } inline u32 getMtxGroupNum() const { return mMtxGroupNum; } diff --git a/include/JSystem/J3DGraphBase/J3DShapeMtx.h b/include/JSystem/J3DGraphBase/J3DShapeMtx.h index 2496c9b8a3d..177f7542612 100644 --- a/include/JSystem/J3DGraphBase/J3DShapeMtx.h +++ b/include/JSystem/J3DGraphBase/J3DShapeMtx.h @@ -7,6 +7,14 @@ class J3DTexMtx; class J3DTexGenBlock; +class J3DTexMtxObj { +public: + Mtx& getMtx(u16 idx) { return mpTexMtx[idx]; } + +private: + /* 0x00 */ Mtx *mpTexMtx; +}; + class J3DDifferedTexMtx { public: /* 8031322C */ static void loadExecute(f32 const (*)[4]); @@ -17,7 +25,7 @@ public: } static J3DTexGenBlock* sTexGenBlock; - static J3DTexMtx* sTexMtxObj; + static J3DTexMtxObj* sTexMtxObj; }; extern u8 struct_804515B0[4]; diff --git a/include/JSystem/J3DGraphBase/J3DTexture.h b/include/JSystem/J3DGraphBase/J3DTexture.h index e5559255ba2..8a8158b7bac 100644 --- a/include/JSystem/J3DGraphBase/J3DTexture.h +++ b/include/JSystem/J3DGraphBase/J3DTexture.h @@ -54,6 +54,7 @@ public: /* 803243BC */ void loadPostTexMtx(u32) const; J3DTexMtxInfo& getTexMtxInfo() { return mTexMtxInfo; } + Mtx& getMtx() { return mMtx; } private: /* 0x00 */ J3DTexMtxInfo mTexMtxInfo; diff --git a/include/JSystem/JAudio2/JAISound.h b/include/JSystem/JAudio2/JAISound.h index f027ab22cdd..e586164f0d7 100644 --- a/include/JSystem/JAudio2/JAISound.h +++ b/include/JSystem/JAudio2/JAISound.h @@ -10,17 +10,23 @@ class JAISoundID { public: - operator u32() const { return this->mId; } - void operator=(JAISoundID const& other) {mId = other.mId;}; + operator u32() const { return this->mId.mFullId; } + void operator=(JAISoundID const& other) { mId.mFullId = other.mId.mFullId; }; - JAISoundID(u32 pId) { mId = pId; }; + JAISoundID(u32 pId) { mId.mFullId = pId; }; - JAISoundID(JAISoundID const& other) {mId = other.mId;}; + JAISoundID(JAISoundID const& other) { mId = other.mId; }; JAISoundID() {} -private: - u32 mId; + union { + u32 mFullId; + struct { + u16 mSoundType; + u16 mShortId; + } mAdvancedId; // Debug doesn't have an inline for referencing the short ID so I assume + // it's similar to this + } mId; }; struct JASTrack { @@ -30,11 +36,9 @@ struct JASTrack { /* 80292918 */ void writePort(u32, u16); /* 8029297C */ void readPort(u32); - inline int getChannelMgrCount() { - return channelMgrCount; - } + inline int getChannelMgrCount() { return channelMgrCount; } - /* 0x0 */u8 field_0x0[0x1d0]; + /* 0x0 */ u8 field_0x0[0x1d0]; /* 0x1d0 */ int channelMgrCount; }; @@ -49,54 +53,50 @@ struct JAISoundStatus_ { user_data = 0; } - bool isAlive(); //used in assert + bool isAlive(); // used in assert - inline bool isPlaying() { - return state.unk==5; - } + inline bool isPlaying() { return state.unk == 5; } - inline bool isPaused() { - return field_0x0.flags.paused; - } + inline bool isPaused() { return field_0x0.flags.paused; } /* 0x0 */ union { u8 value; - struct{ - u8 flag1:1; - u8 paused:1; - u8 flag3:1; - u8 flag4:1; - u8 flag5:1; - u8 flag6:1; - u8 flag7:1; - u8 flag8:1; - }flags; - }field_0x0; + struct { + u8 flag1 : 1; + u8 paused : 1; + u8 flag3 : 1; + u8 flag4 : 1; + u8 flag5 : 1; + u8 flag6 : 1; + u8 flag7 : 1; + u8 flag8 : 1; + } flags; + } field_0x0; /* 0x1 */ union { u8 value; - struct{ - u8 flag1:1; - u8 flag2:1; - u8 flag3:1; - u8 flag4:1; - u8 flag5:1; - u8 flag6:1; - u8 flag7:1; - u8 flag8:1; - }flags; - }field_0x1; + struct { + u8 flag1 : 1; + u8 flag2 : 1; + u8 flag3 : 1; + u8 flag4 : 1; + u8 flag5 : 1; + u8 flag6 : 1; + u8 flag7 : 1; + u8 flag8 : 1; + } flags; + } field_0x1; /* 0x2 */ struct { u8 unk; struct { - u8 flag1:1; - u8 flag2:1; - u8 flag3:1; - u8 flag4:1; - u8 flag5:1; - u8 flag6:1; - u8 flag7:1; - u8 flag8:1; - }flags; + u8 flag1 : 1; + u8 flag2 : 1; + u8 flag3 : 1; + u8 flag4 : 1; + u8 flag5 : 1; + u8 flag6 : 1; + u8 flag7 : 1; + u8 flag8 : 1; + } flags; } state; /* 0x4 */ u32 user_data; }; // Size: 0x6 @@ -111,21 +111,19 @@ struct JAISoundFader { mTransition.zero(); } void fadeOut(u32 fadeCount) { - if (fadeCount!=0) { - mTransition.set(0.0f,mIntensity,fadeCount); - }else{ + if (fadeCount != 0) { + mTransition.set(0.0f, mIntensity, fadeCount); + } else { forceOut(); } } bool isOut() { - if(mTransition.mCount != 0 || mIntensity < 0.01f) { + if (mTransition.mCount != 0 || mIntensity < 0.01f) { return true; } return false; } - inline void calc() { - mIntensity = mTransition.apply(mIntensity); - } + inline void calc() { mIntensity = mTransition.apply(mIntensity); } /* 0x00 */ f32 mIntensity; /* 0x04 */ JAISoundParamsTransition::TTransition mTransition; @@ -181,16 +179,14 @@ public: u32 getUserData() const { return status_.user_data; } bool isHandleAttached() const { return handle_ != NULL; } - void removeLifeTime_() { - status_.field_0x1.flags.flag1 = false; - } + void removeLifeTime_() { status_.field_0x1.flags.flag1 = false; } void stop_JAISound_() { status_.state.flags.flag5 = 0; status_.state.flags.flag1 = 1; } bool isStopping() { bool isStopping = false; - if(status_.state.flags.flag1) { + if (status_.state.flags.flag1) { isStopping = status_.state.flags.flag5 ? fader.isOut() : true; } return isStopping; diff --git a/include/JSystem/JAudio2/JASTaskThread.h b/include/JSystem/JAudio2/JASTaskThread.h index d98f9bb4503..e24d03bb6d6 100644 --- a/include/JSystem/JAudio2/JASTaskThread.h +++ b/include/JSystem/JAudio2/JASTaskThread.h @@ -10,7 +10,7 @@ public: /* 8028F9EC */ void allocCallStack(void (*)(void*), void*); /* 8028F850 */ void allocCallStack(void (*)(void*), void const*, u32); /* 8028FC54 */ void sendCmdMsg(void (*)(void*), void*); - /* 8028FB5C */ void sendCmdMsg(void (*)(void*), void const*, u32); + /* 8028FB5C */ int sendCmdMsg(void (*)(void*), void const*, u32); /* 8028FE88 */ void pause(bool); /* 8028F724 */ virtual ~JASTaskThread(); diff --git a/include/JSystem/JAudio2/JASWaveArcLoader.h b/include/JSystem/JAudio2/JASWaveArcLoader.h index 355e5ad8015..2d7e55e0aa1 100644 --- a/include/JSystem/JAudio2/JASWaveArcLoader.h +++ b/include/JSystem/JAudio2/JASWaveArcLoader.h @@ -1,6 +1,110 @@ #ifndef JASWAVEARCLOADER_H #define JASWAVEARCLOADER_H +#include "dol2asm.h" #include "dolphin/types.h" +#include "global.h" + +#include "MSL_C/MSL_Common/Src/string.h" +#include "dolphin/os/OSMutex.h" + +#include "JSystem/JAudio2/JASDvdThread.h" +#include "JSystem/JAudio2/JASHeapCtrl.h" +#include "JSystem/JKernel/JKRDvdAramRipper.h" +#include "JSystem/JKernel/JKRSolidHeap.h" + +struct JASDisposer { + JASDisposer() {} + /* 8029A7B8 */ virtual ~JASDisposer() {} + /* 80290BCC */ virtual void onDispose(); +}; + +struct JASHeap : JSUTree { + /* 80290140 */ JASHeap(JASDisposer*); + /* 802901AC */ void initRootHeap(void*, u32); + /* 8029021C */ bool alloc(JASHeap*, u32); + /* 802903F4 */ bool allocTail(JASHeap*, u32); + /* 802904E4 */ void free(); + /* 80290608 */ void insertChild(JASHeap*, JASHeap*, void*, u32, bool); + /* 802906F0 */ void getTailHeap(); + /* 8029077C */ void getTailOffset(); + /* 802907E0 */ void getCurOffset(); + /* 80290B54 */ ~JASHeap() {} + void* getBase() { return mBase; } + + /* 0x1C */ OSMutex mMutex; + /* 0x38 */ JASDisposer* mDisposer; + /* 0x3C */ void* mBase; + /* 0x40 */ u32 _3c; + /* 0x44 */ u32 _40; +}; + +struct JASKernel { + /* 802909B8 */ void setupRootHeap(JKRSolidHeap*, u32); + /* 80290AC0 */ static JKRHeap* getSystemHeap(); + /* 80290AC8 */ u32 getCommandHeap(); + /* 80290AD0 */ void setupAramHeap(u32, u32); + /* 80290B08 */ static JASHeap* getAramHeap(); + + static u8 audioAramHeap[68]; + static u8 sAramBase[4]; + static JKRHeap* sSystemHeap; + static u8 sCommandHeap[4]; +}; + +#define DIR_MAX 64 +struct JASWaveArcLoader { + /* 8029A0A0 */ static JASHeap* getRootHeap(); + /* 8029A0D0 */ static void setCurrentDir(char const*); + /* 8029A130 */ static char* getCurrentDir(); + + static char sCurrentDir[DIR_MAX]; + static JASHeap* sAramHeap; +}; + +struct JASWaveArc : JASDisposer { + /* 8029A13C */ JASWaveArc(); + /* 8029A258 */ bool loadSetup(u32); + /* 8029A2EC */ bool eraseSetup(); + /* 8029A378 */ static void loadToAramCallback(void*); + /* 8029A404 */ bool sendLoadCmd(); + /* 8029A4C0 */ bool load(JASHeap*); + /* 8029A580 */ bool loadTail(JASHeap*); + /* 8029A640 */ void erase(); + /* 8029A6AC */ void setEntryNum(s32); + /* 8029A70C */ void setFileName(char const*); + + /* 8029A1B4 */ virtual ~JASWaveArc(); + /* 8029A664 */ virtual void onDispose(); + /* 80298FA0 */ virtual void onLoadDone(); + /* 80298FA4 */ virtual void onEraseDone(); + + struct loadToAramCallbackParams { + // not official struct name + /* 0x0 */ JASWaveArc* mWavArc; + /* 0x4 */ long mEntryNum; + /* 0x8 */ u32 mBase; + /* 0xC */ u32 _c; + }; + + /* 0x04 */ JASHeap mHeap; + /* 0x48 */ u32 _48; + /* 0x4C */ volatile s32 _4c; + /* 0x50 */ int mEntryNum; + /* 0x54 */ u32 mFileLength; + /* 0x58 */ u16 _58; + /* 0x5A */ u16 _5a; + /* 0x5C */ OSMutex mMutex; +}; + +struct JASMutexLock { + JASMutexLock(OSMutex* mutex) { + mMutex = mutex; + OSLockMutex(mMutex); + } + ~JASMutexLock() { OSUnlockMutex(mMutex); } + + /* 0x0 */ OSMutex* mMutex; +}; #endif /* JASWAVEARCLOADER_H */ diff --git a/include/JSystem/JAudio2/JAUBankTable.h b/include/JSystem/JAudio2/JAUBankTable.h index 96f0360a8c2..c441f8ff307 100644 --- a/include/JSystem/JAudio2/JAUBankTable.h +++ b/include/JSystem/JAudio2/JAUBankTable.h @@ -1,6 +1,30 @@ #ifndef JAUBANKTABLE_H #define JAUBANKTABLE_H +#include "JSystem/JSupport/JSUList.h" #include "dolphin/types.h" +template +struct JASPtrTable { + T* get(u32 value) const { + if (value >= mLength) { + return NULL; + } + return mTable[value]; + } + T** mTable; + u32 mLength; +}; + +struct JASBank; +struct JAUBankTable { + /* 802A4AA0 */ /*virtual*/ JASBank* getBank(u32) const; + /* 0x0 */ void* vtable; + /* 0x4 */ JASPtrTable mBankPtrTable; +}; + +struct JAUBankTableDictionary : JSUList { + /* 802A4A80 */ void appendBankTable(JSULink*); +}; + #endif /* JAUBANKTABLE_H */ diff --git a/include/JSystem/JAudio2/JAUStreamFileTable.h b/include/JSystem/JAudio2/JAUStreamFileTable.h index b6f8d6b5677..46bdf5ad545 100644 --- a/include/JSystem/JAudio2/JAUStreamFileTable.h +++ b/include/JSystem/JAudio2/JAUStreamFileTable.h @@ -1,6 +1,33 @@ #ifndef JAUSTREAMFILETABLE_H #define JAUSTREAMFILETABLE_H +#include "JSystem/JAudio2/JAISound.h" #include "dolphin/types.h" +struct BinaryStreamFileTable { + /* 0x0 */ char mIdentifier[4]; + /* 0x4 */ int mNumFiles; + /* 0x8 */ int mFilePathOffsets[]; +}; + +struct JAUStreamFileTable { + /* 802A7420 */ JAUStreamFileTable(); + /* 802A742C */ void init(void const*); + /* 802A7478 */ int getNumFiles() const; + /* 802A7484 */ const char* getFilePath(int) const; + + /* 0x0 */ const BinaryStreamFileTable* mData; +}; + +struct JAIStreamDataMgr { + /* 802A3AD8 */ ~JAIStreamDataMgr(); +}; + +struct JAUStreamDataMgr_StreamFileTable : JAIStreamDataMgr { + /* 802A74AC */ virtual int getStreamFileEntry(JAISoundID); + /* 802A74E8 */ virtual ~JAUStreamDataMgr_StreamFileTable() {} + + /* 0x4 */ JAUStreamFileTable mStreamFileTable; +}; + #endif /* JAUSTREAMFILETABLE_H */ diff --git a/include/MSL_C/MSL_Common/Src/FILE_POS.h b/include/MSL_C/MSL_Common/Src/FILE_POS.h index ca2e0688d81..867b1919499 100644 --- a/include/MSL_C/MSL_Common/Src/FILE_POS.h +++ b/include/MSL_C/MSL_Common/Src/FILE_POS.h @@ -1,6 +1,18 @@ #ifndef MSL_COMMON_SRC_FILE_POS_H #define MSL_COMMON_SRC_FILE_POS_H -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int fseek(FILE* file, long offset, int mode); +int _fseek(FILE* file, fpos_t offset, int mode); +long ftell(FILE* file); + +#ifdef __cplusplus +} +#endif #endif /* MSL_COMMON_SRC_FILE_POS_H */ diff --git a/include/MSL_C/MSL_Common/Src/abort_exit.h b/include/MSL_C/MSL_Common/Src/abort_exit.h index 2313c639cbe..80eea639042 100644 --- a/include/MSL_C/MSL_Common/Src/abort_exit.h +++ b/include/MSL_C/MSL_Common/Src/abort_exit.h @@ -1,6 +1,17 @@ #ifndef MSL_COMMON_SRC_ABORT_EXIT_H #define MSL_COMMON_SRC_ABORT_EXIT_H -#include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + +void exit(int status); +void abort(void); + +extern void (*__stdio_exit)(void); + +#ifdef __cplusplus +}; +#endif #endif /* MSL_COMMON_SRC_ABORT_EXIT_H */ diff --git a/include/MSL_C/MSL_Common/Src/alloc.h b/include/MSL_C/MSL_Common/Src/alloc.h index c66afbcf9a0..67b7763feb2 100644 --- a/include/MSL_C/MSL_Common/Src/alloc.h +++ b/include/MSL_C/MSL_Common/Src/alloc.h @@ -1,6 +1,17 @@ #ifndef MSL_COMMON_SRC_ALLOC_H #define MSL_COMMON_SRC_ALLOC_H -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void free(FILE* file); +void __pool_free(); + +#ifdef __cplusplus +} +#endif #endif /* MSL_COMMON_SRC_ALLOC_H */ diff --git a/include/MSL_C/MSL_Common/Src/ansi_files.h b/include/MSL_C/MSL_Common/Src/ansi_files.h index b16eccd5eff..56573407cc1 100644 --- a/include/MSL_C/MSL_Common/Src/ansi_files.h +++ b/include/MSL_C/MSL_Common/Src/ansi_files.h @@ -1,11 +1,33 @@ #ifndef MSL_COMMON_SRC_ANSI_FILES_H #define MSL_COMMON_SRC_ANSI_FILES_H +#include "MSL_C/MSL_Common/Src/stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 + +typedef unsigned long __file_handle; +typedef unsigned long fpos_t; +#ifndef __cplusplus +typedef unsigned short wchar_t; +#endif + +#define set_error(file) \ + do { \ + (file)->file_state.error = 1; \ + (file)->buffer_length = 0; \ + } while (0) + enum __file_kinds { - /* 0x0 */ CLOSED_FILE, - /* 0x1 */ DISK_FILE, - /* 0x2 */ CONSOLE_FILE, - /* 0x3 */ UNAVAILABLE_FILE, + __closed_file, + __disk_file, + __console_file, + __unavailable_file, }; enum __file_orientation { @@ -23,6 +45,26 @@ typedef struct _file_modes { unsigned int binary_io : 1; } file_modes; +enum __io_modes { + __read = 1, + __write = 2, + __read_write = 3, + __append = 4, +}; + +enum __io_states { + __neutral, + __writing, + __reading, + __rereading, +}; + +enum __io_results { + __no_io_error, + __io_error, + __io_EOF, +}; + typedef struct _file_states { unsigned int io_state : 3; unsigned int free_buffer : 1; @@ -30,28 +72,34 @@ typedef struct _file_states { unsigned char error; } file_states; +typedef void (*__idle_proc)(void); +typedef int (*__pos_proc)(__file_handle file, fpos_t* position, int mode, __idle_proc idle_proc); +typedef int (*__io_proc)(__file_handle file, unsigned char* buff, size_t* count, + __idle_proc idle_proc); +typedef int (*__close_proc)(__file_handle file); + typedef struct _FILE { - /* 0x00 */ unsigned int handle; + /* 0x00 */ __file_handle handle; /* 0x04 */ file_modes file_mode; /* 0x08 */ file_states file_state; - /* 0x0C */ unsigned char flag; + /* 0x0C */ unsigned char is_dynamically_allocated; /* 0x0D */ char char_buffer; - /* 0x0E */ char char_buffer_2; + /* 0x0E */ char char_buffer_overflow; /* 0x0F */ char ungetc_buffer[2]; - /* 0x12 */ unsigned short ungetc_wide_buffer[2]; - /* 0x18 */ unsigned int position; + /* 0x12 */ wchar_t ungetc_wide_buffer[2]; + /* 0x18 */ unsigned long position; /* 0x1C */ unsigned char* buffer; - /* 0x20 */ unsigned int buffer_size; + /* 0x20 */ unsigned long buffer_size; /* 0x24 */ unsigned char* buffer_ptr; - /* 0x28 */ unsigned int buffer_length; - /* 0x2C */ unsigned int buffer_alignment; - /* 0x30 */ unsigned int buffer_length2; - /* 0x34 */ unsigned int buffer_position; - /* 0x38 */ void* position_fn; - /* 0x3C */ void* read_fn; - /* 0x40 */ void* write_fn; - /* 0x44 */ void* close_fn; - /* 0x48 */ void* unknown; + /* 0x28 */ unsigned long buffer_length; + /* 0x2C */ unsigned long buffer_alignment; + /* 0x30 */ unsigned long save_buffer_length; + /* 0x34 */ unsigned long buffer_position; + /* 0x38 */ __pos_proc position_fn; + /* 0x3C */ __io_proc read_fn; + /* 0x40 */ __io_proc write_fn; + /* 0x44 */ __close_proc close_fn; + /* 0x48 */ __idle_proc idle_fn; /* 0x4C */ struct _FILE* next_file; } FILE; @@ -62,6 +110,20 @@ typedef struct _files { FILE empty; } files; +#define _IONBF 0 +#define _IOLBF 1 +#define _IOFBF 2 + extern files __files; +extern int __close_console(__file_handle file); +extern int __write_console(__file_handle file, unsigned char* buf, size_t* count, __idle_proc idle_fn); +extern int __read_console(__file_handle file, unsigned char* buf, size_t* count, __idle_proc idle_fn); + +unsigned int __flush_all(void); +void __close_all(void); + +#ifdef __cplusplus +}; +#endif #endif /* MSL_COMMON_SRC_ANSI_FILES_H */ diff --git a/include/MSL_C/MSL_Common/Src/arith.h b/include/MSL_C/MSL_Common/Src/arith.h index 83ad47056a0..dd92a0bb030 100644 --- a/include/MSL_C/MSL_Common/Src/arith.h +++ b/include/MSL_C/MSL_Common/Src/arith.h @@ -1,6 +1,19 @@ #ifndef MSL_COMMON_SRC_ARITH_H #define MSL_COMMON_SRC_ARITH_H -#include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + int quot; /* quotient */ + int rem; /* remainder */ +} div_t; + +div_t div(int numerator, int denominator); + +#ifdef __cplusplus +} +#endif #endif /* MSL_COMMON_SRC_ARITH_H */ diff --git a/include/MSL_C/MSL_Common/Src/buffer_io.h b/include/MSL_C/MSL_Common/Src/buffer_io.h index a1b8998825a..e020d543ace 100644 --- a/include/MSL_C/MSL_Common/Src/buffer_io.h +++ b/include/MSL_C/MSL_Common/Src/buffer_io.h @@ -1,6 +1,11 @@ #ifndef MSL_COMMON_SRC_BUFFER_IO_H #define MSL_COMMON_SRC_BUFFER_IO_H -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/ansi_files.h" + +enum { __align_buffer, __dont_align_buffer }; + +void __prep_buffer(FILE* file); +int __flush_buffer(FILE* file, size_t* bytes_flushed); #endif /* MSL_COMMON_SRC_BUFFER_IO_H */ diff --git a/include/MSL_C/MSL_Common/Src/char_io.h b/include/MSL_C/MSL_Common/Src/char_io.h index 4a6e04cce96..47f7ac4ed30 100644 --- a/include/MSL_C/MSL_Common/Src/char_io.h +++ b/include/MSL_C/MSL_Common/Src/char_io.h @@ -2,13 +2,13 @@ #define MSL_COMMON_SRC_CHAR_IO_H #include "MSL_C/MSL_Common/Src/ansi_files.h" -#include "dolphin/types.h" #ifdef __cplusplus extern "C" { #endif -int fputs(const char*, FILE*); +int fputs(const char* str, FILE* stream); +int __put_char(int c, FILE* stream); #ifdef __cplusplus } diff --git a/include/MSL_C/MSL_Common/Src/ctype.h b/include/MSL_C/MSL_Common/Src/ctype.h index 100460e7084..86290cf26fb 100644 --- a/include/MSL_C/MSL_Common/Src/ctype.h +++ b/include/MSL_C/MSL_Common/Src/ctype.h @@ -1,12 +1,33 @@ #ifndef MSL_COMMON_SRC_CTYPE_H #define MSL_COMMON_SRC_CTYPE_H -#include "dolphin/types.h" - #ifdef __cplusplus extern "C" { #endif +#define EOF -1L + +extern unsigned char __ctype_map[]; +extern unsigned char __lower_map[]; +extern unsigned char __upper_map[]; + +#define __control_char 0x01 +#define __motion_char 0x02 +#define __space_char 0x04 +#define __punctuation 0x08 +#define __digit 0x10 +#define __hex_digit 0x20 +#define __lower_case 0x40 +#define __upper_case 0x80 + +#define __letter (__lower_case | __upper_case) +#define __alphanumeric (__letter | __digit) +#define __graphic (__alphanumeric | __punctuation) +#define __printable (__graphic | __space_char) +#define __whitespace (__motion_char | __space_char) +#define __control (__motion_char | __control_char) +#define __zero_fill(c) ((int)(unsigned char)(c)) + int tolower(int); #ifdef __cplusplus diff --git a/include/MSL_C/MSL_Common/Src/direct_io.h b/include/MSL_C/MSL_Common/Src/direct_io.h index 078da82b330..a15d4ee9029 100644 --- a/include/MSL_C/MSL_Common/Src/direct_io.h +++ b/include/MSL_C/MSL_Common/Src/direct_io.h @@ -1,6 +1,17 @@ #ifndef MSL_COMMON_SRC_DIRECT_IO_H #define MSL_COMMON_SRC_DIRECT_IO_H -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +size_t __fwrite(const void* buffer, size_t size, size_t count, FILE* stream); +size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream); + +#ifdef __cplusplus +} +#endif #endif /* MSL_COMMON_SRC_DIRECT_IO_H */ diff --git a/include/MSL_C/MSL_Common/Src/extras.h b/include/MSL_C/MSL_Common/Src/extras.h index 6e96e650b78..2b89fc3fec1 100644 --- a/include/MSL_C/MSL_Common/Src/extras.h +++ b/include/MSL_C/MSL_Common/Src/extras.h @@ -1,6 +1,15 @@ #ifndef MSL_COMMON_SRC_EXTRAS_H #define MSL_COMMON_SRC_EXTRAS_H -#include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + +int strnicmp(const char* str1, const char* str2, int n); +int stricmp(const char* str1, const char* str2); + +#ifdef __cplusplus +} +#endif #endif /* MSL_COMMON_SRC_EXTRAS_H */ diff --git a/include/MSL_C/MSL_Common/Src/file_io.h b/include/MSL_C/MSL_Common/Src/file_io.h index 5bde365a925..0fe74469248 100644 --- a/include/MSL_C/MSL_Common/Src/file_io.h +++ b/include/MSL_C/MSL_Common/Src/file_io.h @@ -1,6 +1,18 @@ #ifndef MSL_COMMON_SRC_FILE_IO_H #define MSL_COMMON_SRC_FILE_IO_H -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int __msl_strnicmp(const char* str1, const char* str2, size_t n); +int fflush(FILE* file); +int fclose(FILE* file); + +#ifdef __cplusplus +} +#endif #endif /* MSL_COMMON_SRC_FILE_IO_H */ diff --git a/include/MSL_C/MSL_Common/Src/float.h b/include/MSL_C/MSL_Common/Src/float.h index 794e5f853bc..b4ec7130e0b 100644 --- a/include/MSL_C/MSL_Common/Src/float.h +++ b/include/MSL_C/MSL_Common/Src/float.h @@ -1,7 +1,6 @@ #ifndef MSL_COMMON_SRC_FLOAT_H #define MSL_COMMON_SRC_FLOAT_H -#include "dolphin/types.h" #include "fdlibm.h" #define FP_SNAN 0 @@ -17,13 +16,13 @@ #define signbit(x) ((sizeof(x) == sizeof(float)) ? __signbitf(x) : __signbitd(x)) #define isfinite(x) ((fpclassify(x) > 2)) -#define __signbitf(x) ((*(u8*)&(x)) & 0x80) +#define __signbitf(x) ((*(unsigned char*)&(x)) & 0x80) // TODO: OK? -#define __signbitd(x) ((*(u8*)&(x)) & 0x80) +#define __signbitd(x) ((*(unsigned char*)&(x)) & 0x80) inline int __fpclassifyf(float __value) { - u32 integer = *(u32*)&__value; + unsigned long integer = *(unsigned long*)&__value; switch (integer & 0x7f800000) { case 0x7f800000: diff --git a/include/MSL_C/MSL_Common/Src/mbstring.h b/include/MSL_C/MSL_Common/Src/mbstring.h index 22fa9c5bfc0..e42bcd0edb9 100644 --- a/include/MSL_C/MSL_Common/Src/mbstring.h +++ b/include/MSL_C/MSL_Common/Src/mbstring.h @@ -1,6 +1,16 @@ #ifndef MSL_COMMON_SRC_MBSTRING_H #define MSL_COMMON_SRC_MBSTRING_H -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/wchar_io.h" + +#ifdef __cplusplus +extern "C" { +#endif + +size_t wcstombs(char* dst, const wchar_t* src, size_t n); + +#ifdef __cplusplus +} +#endif #endif /* MSL_COMMON_SRC_MBSTRING_H */ diff --git a/include/MSL_C/MSL_Common/Src/mem.h b/include/MSL_C/MSL_Common/Src/mem.h index 73edb308eea..1cca85f192a 100644 --- a/include/MSL_C/MSL_Common/Src/mem.h +++ b/include/MSL_C/MSL_Common/Src/mem.h @@ -1,13 +1,16 @@ #ifndef MSL_COMMON_SRC_MEM_H #define MSL_COMMON_SRC_MEM_H -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/stddef.h" #ifdef __cplusplus extern "C" { #endif -int memcmp(const void*, const void*, size_t); +int memcmp(const void* lhs, const void* rhs, size_t count); +void* __memrchr(const void* ptr, int ch, size_t count); +void* memchr(const void* ptr, int ch, size_t count); +void* memmove(void* dst, const void* src, size_t n); #ifdef __cplusplus } diff --git a/include/MSL_C/MSL_Common/Src/mem_funcs.h b/include/MSL_C/MSL_Common/Src/mem_funcs.h index 0bb1d80808d..a5c91107161 100644 --- a/include/MSL_C/MSL_Common/Src/mem_funcs.h +++ b/include/MSL_C/MSL_Common/Src/mem_funcs.h @@ -1,6 +1,19 @@ #ifndef MSL_COMMON_SRC_MEM_FUNCS_H #define MSL_COMMON_SRC_MEM_FUNCS_H -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void __copy_longs_rev_unaligned(void* dst, const void* src, size_t n); +void __copy_longs_unaligned(void* dst, const void* src, size_t n); +void __copy_longs_rev_aligned(void* dst, const void* src, size_t n); +void __copy_longs_aligned(void* dst, const void* src, size_t n); + +#ifdef __cplusplus +} +#endif #endif /* MSL_COMMON_SRC_MEM_FUNCS_H */ diff --git a/include/MSL_C/MSL_Common/Src/misc_io.h b/include/MSL_C/MSL_Common/Src/misc_io.h index d78ebc46471..3860462910b 100644 --- a/include/MSL_C/MSL_Common/Src/misc_io.h +++ b/include/MSL_C/MSL_Common/Src/misc_io.h @@ -1,6 +1,14 @@ #ifndef MSL_COMMON_SRC_MISC_IO_H #define MSL_COMMON_SRC_MISC_IO_H -#include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + +void __stdio_atexit(void); + +#ifdef __cplusplus +} +#endif #endif /* MSL_COMMON_SRC_MISC_IO_H */ diff --git a/include/MSL_C/MSL_Common/Src/printf.h b/include/MSL_C/MSL_Common/Src/printf.h index e8cfdf2814d..5b1a7ccd60d 100644 --- a/include/MSL_C/MSL_Common/Src/printf.h +++ b/include/MSL_C/MSL_Common/Src/printf.h @@ -1,18 +1,19 @@ #ifndef MSL_COMMON_SRC_PRINTF_H #define MSL_COMMON_SRC_PRINTF_H +#include "MSL_C/MSL_Common/Src/ansi_files.h" #include "Runtime.PPCEABI.H/__va_arg.h" -#include "dolphin/types.h" #ifdef __cplusplus extern "C" { #endif -size_t sprintf(const char*, const char*, ...); -size_t snprintf(const char*, size_t, const char*, ...); -size_t vsnprintf(char*, size_t, const char*, va_list); -size_t vprintf(const char*, va_list); -size_t printf(const char*, ...); +int fprintf(FILE* stream, const char* format, ...); +int printf(const char* format, ...); +int sprintf(const char* str, const char* format, ...); +int snprintf(const char* str, size_t n, const char* format, ...); +int vsnprintf(char* str, size_t n, const char* format, va_list arg); +int vprintf(const char* format, va_list arg); #ifdef __cplusplus } diff --git a/include/MSL_C/MSL_Common/Src/scanf.h b/include/MSL_C/MSL_Common/Src/scanf.h index febd050a26b..d0a323df591 100644 --- a/include/MSL_C/MSL_Common/Src/scanf.h +++ b/include/MSL_C/MSL_Common/Src/scanf.h @@ -1,6 +1,14 @@ #ifndef MSL_COMMON_SRC_SCANF_H #define MSL_COMMON_SRC_SCANF_H -#include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + +int __StringRead(char* str, int ch, int behavior); + +#ifdef __cplusplus +} +#endif #endif /* MSL_COMMON_SRC_SCANF_H */ diff --git a/include/MSL_C/MSL_Common/Src/signal.h b/include/MSL_C/MSL_Common/Src/signal.h index b477c030b8a..5906c8e88dc 100644 --- a/include/MSL_C/MSL_Common/Src/signal.h +++ b/include/MSL_C/MSL_Common/Src/signal.h @@ -1,6 +1,14 @@ #ifndef MSL_COMMON_SRC_SIGNAL_H #define MSL_COMMON_SRC_SIGNAL_H -#include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + +int raise(int sig); + +#ifdef __cplusplus +} +#endif #endif /* MSL_COMMON_SRC_SIGNAL_H */ diff --git a/include/MSL_C/MSL_Common/Src/stddef.h b/include/MSL_C/MSL_Common/Src/stddef.h new file mode 100644 index 00000000000..91086efb336 --- /dev/null +++ b/include/MSL_C/MSL_Common/Src/stddef.h @@ -0,0 +1,19 @@ +#ifndef _STDDEF_H_ +#define _STDDEF_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef unsigned long size_t; +typedef long ptrdiff_t; + +#ifndef NULL +#define NULL (0) +#endif + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/include/MSL_C/MSL_Common/Src/string.h b/include/MSL_C/MSL_Common/Src/string.h index c70f319597f..8a0a3f97ba0 100644 --- a/include/MSL_C/MSL_Common/Src/string.h +++ b/include/MSL_C/MSL_Common/Src/string.h @@ -1,24 +1,23 @@ #ifndef MSL_COMMON_SRC_STRING_H #define MSL_COMMON_SRC_STRING_H -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/stddef.h" #ifdef __cplusplus extern "C" { #endif -void* memcpy(void*, const void*, size_t); -void* memset(void*, int, u32); -char* strrchr(const char*, int); -char* strchr(const char*, int); -int strncmp(const char*, const char*, u32); -int strcmp(const char*, const char*); -char* strcat(char*, const char*); -char* strncpy(char*, const char*, u32); -char* strcpy(char*, const char*); -u32 strlen(const char*); +void* memcpy(void* dst, const void* src, size_t n); +void* memset(void* dst, int val, size_t n); -int stricmp(const char*, const char*); +char* strrchr(const char* str, int c); +char* strchr(const char* str, int c); +int strncmp(const char* str1, const char* str2, size_t n); +int strcmp(const char* str1, const char* str2); +char* strcat(char* dst, const char* src); +char* strncpy(char* dst, const char* src, size_t n); +char* strcpy(char* dst, const char* src); +size_t strlen(const char* str); #ifdef __cplusplus } diff --git a/include/MSL_C/MSL_Common/Src/strtoul.h b/include/MSL_C/MSL_Common/Src/strtoul.h index 117de10b578..a2888157575 100644 --- a/include/MSL_C/MSL_Common/Src/strtoul.h +++ b/include/MSL_C/MSL_Common/Src/strtoul.h @@ -1,6 +1,16 @@ #ifndef MSL_COMMON_SRC_STRTOUL_H #define MSL_COMMON_SRC_STRTOUL_H -#include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + +long strtol(const char* str, char** endptr, int base); +unsigned long strtoul(const char* str, char** endptr, int base); +unsigned long __strtoul(const char* str, char** endptr, int base); + +#ifdef __cplusplus +} +#endif #endif /* MSL_COMMON_SRC_STRTOUL_H */ diff --git a/include/MSL_C/MSL_Common/Src/wchar_io.h b/include/MSL_C/MSL_Common/Src/wchar_io.h index fc8d3d43326..d42110c0160 100644 --- a/include/MSL_C/MSL_Common/Src/wchar_io.h +++ b/include/MSL_C/MSL_Common/Src/wchar_io.h @@ -1,8 +1,10 @@ #ifndef MSL_COMMON_SRC_WCHAR_IO_H #define MSL_COMMON_SRC_WCHAR_IO_H -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/ansi_files.h" typedef unsigned short wchar_t; +int fwide(FILE* file, int mode); + #endif /* MSL_COMMON_SRC_WCHAR_IO_H */ diff --git a/include/MSL_C/MSL_Common_Embedded/Src/ansi_fp.h b/include/MSL_C/MSL_Common_Embedded/Src/ansi_fp.h index cf26db8d31f..38e5dec6f68 100644 --- a/include/MSL_C/MSL_Common_Embedded/Src/ansi_fp.h +++ b/include/MSL_C/MSL_Common_Embedded/Src/ansi_fp.h @@ -1,6 +1,6 @@ #ifndef MSL_COMMON_EMBEDDED_SRC_ANSI_FP_H #define MSL_COMMON_EMBEDDED_SRC_ANSI_FP_H -#include "dolphin/types.h" + #endif /* MSL_COMMON_EMBEDDED_SRC_ANSI_FP_H */ diff --git a/include/MSL_C/Math/Double_precision/e_acos.h b/include/MSL_C/Math/Double_precision/e_acos.h index f38187c7ae5..04748bc4425 100644 --- a/include/MSL_C/Math/Double_precision/e_acos.h +++ b/include/MSL_C/Math/Double_precision/e_acos.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_E_ACOS_H #define MATH_DOUBLE_PRECISION_E_ACOS_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_E_ACOS_H */ diff --git a/include/MSL_C/Math/Double_precision/e_asin.h b/include/MSL_C/Math/Double_precision/e_asin.h index 3edf8c4bef4..0413f5038b0 100644 --- a/include/MSL_C/Math/Double_precision/e_asin.h +++ b/include/MSL_C/Math/Double_precision/e_asin.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_E_ASIN_H #define MATH_DOUBLE_PRECISION_E_ASIN_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_E_ASIN_H */ diff --git a/include/MSL_C/Math/Double_precision/e_atan2.h b/include/MSL_C/Math/Double_precision/e_atan2.h index 952d6ab7c29..5233f7f418c 100644 --- a/include/MSL_C/Math/Double_precision/e_atan2.h +++ b/include/MSL_C/Math/Double_precision/e_atan2.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_E_ATAN2_H #define MATH_DOUBLE_PRECISION_E_ATAN2_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_E_ATAN2_H */ diff --git a/include/MSL_C/Math/Double_precision/e_exp.h b/include/MSL_C/Math/Double_precision/e_exp.h index c2436675e0b..ac89887b96a 100644 --- a/include/MSL_C/Math/Double_precision/e_exp.h +++ b/include/MSL_C/Math/Double_precision/e_exp.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_E_EXP_H #define MATH_DOUBLE_PRECISION_E_EXP_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_E_EXP_H */ diff --git a/include/MSL_C/Math/Double_precision/e_fmod.h b/include/MSL_C/Math/Double_precision/e_fmod.h index 3777d15aa75..c94d42c5a82 100644 --- a/include/MSL_C/Math/Double_precision/e_fmod.h +++ b/include/MSL_C/Math/Double_precision/e_fmod.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_E_FMOD_H #define MATH_DOUBLE_PRECISION_E_FMOD_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_E_FMOD_H */ diff --git a/include/MSL_C/Math/Double_precision/e_pow.h b/include/MSL_C/Math/Double_precision/e_pow.h index 0cec144a485..3f208c4dc59 100644 --- a/include/MSL_C/Math/Double_precision/e_pow.h +++ b/include/MSL_C/Math/Double_precision/e_pow.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_E_POW_H #define MATH_DOUBLE_PRECISION_E_POW_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_E_POW_H */ diff --git a/include/MSL_C/Math/Double_precision/e_rem_pio2.h b/include/MSL_C/Math/Double_precision/e_rem_pio2.h index 9d9f292ec45..7a74dcd37c4 100644 --- a/include/MSL_C/Math/Double_precision/e_rem_pio2.h +++ b/include/MSL_C/Math/Double_precision/e_rem_pio2.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_E_REM_PIO2_H #define MATH_DOUBLE_PRECISION_E_REM_PIO2_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_E_REM_PIO2_H */ diff --git a/include/MSL_C/Math/Double_precision/e_sqrt.h b/include/MSL_C/Math/Double_precision/e_sqrt.h index 4e96b2a1412..cfbfd46cf65 100644 --- a/include/MSL_C/Math/Double_precision/e_sqrt.h +++ b/include/MSL_C/Math/Double_precision/e_sqrt.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_E_SQRT_H #define MATH_DOUBLE_PRECISION_E_SQRT_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_E_SQRT_H */ diff --git a/include/MSL_C/Math/Double_precision/k_cos.h b/include/MSL_C/Math/Double_precision/k_cos.h index feb38811c6b..ca810015e5c 100644 --- a/include/MSL_C/Math/Double_precision/k_cos.h +++ b/include/MSL_C/Math/Double_precision/k_cos.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_K_COS_H #define MATH_DOUBLE_PRECISION_K_COS_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_K_COS_H */ diff --git a/include/MSL_C/Math/Double_precision/k_rem_pio2.h b/include/MSL_C/Math/Double_precision/k_rem_pio2.h index 82ec8406b83..e95f42ab16d 100644 --- a/include/MSL_C/Math/Double_precision/k_rem_pio2.h +++ b/include/MSL_C/Math/Double_precision/k_rem_pio2.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_K_REM_PIO2_H #define MATH_DOUBLE_PRECISION_K_REM_PIO2_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_K_REM_PIO2_H */ diff --git a/include/MSL_C/Math/Double_precision/k_sin.h b/include/MSL_C/Math/Double_precision/k_sin.h index 938b840a316..7edda8d5758 100644 --- a/include/MSL_C/Math/Double_precision/k_sin.h +++ b/include/MSL_C/Math/Double_precision/k_sin.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_K_SIN_H #define MATH_DOUBLE_PRECISION_K_SIN_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_K_SIN_H */ diff --git a/include/MSL_C/Math/Double_precision/k_tan.h b/include/MSL_C/Math/Double_precision/k_tan.h index c483f52336e..8ab3a8c8c82 100644 --- a/include/MSL_C/Math/Double_precision/k_tan.h +++ b/include/MSL_C/Math/Double_precision/k_tan.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_K_TAN_H #define MATH_DOUBLE_PRECISION_K_TAN_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_K_TAN_H */ diff --git a/include/MSL_C/Math/Double_precision/s_atan.h b/include/MSL_C/Math/Double_precision/s_atan.h index 72f309ddc90..c3fce4ed7b6 100644 --- a/include/MSL_C/Math/Double_precision/s_atan.h +++ b/include/MSL_C/Math/Double_precision/s_atan.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_S_ATAN_H #define MATH_DOUBLE_PRECISION_S_ATAN_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_S_ATAN_H */ diff --git a/include/MSL_C/Math/Double_precision/s_ceil.h b/include/MSL_C/Math/Double_precision/s_ceil.h index 4979134a8c0..3437b2c2091 100644 --- a/include/MSL_C/Math/Double_precision/s_ceil.h +++ b/include/MSL_C/Math/Double_precision/s_ceil.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_S_CEIL_H #define MATH_DOUBLE_PRECISION_S_CEIL_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_S_CEIL_H */ diff --git a/include/MSL_C/Math/Double_precision/s_copysign.h b/include/MSL_C/Math/Double_precision/s_copysign.h index 3036ebaf043..531a4e7f6eb 100644 --- a/include/MSL_C/Math/Double_precision/s_copysign.h +++ b/include/MSL_C/Math/Double_precision/s_copysign.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_S_COPYSIGN_H #define MATH_DOUBLE_PRECISION_S_COPYSIGN_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_S_COPYSIGN_H */ diff --git a/include/MSL_C/Math/Double_precision/s_cos.h b/include/MSL_C/Math/Double_precision/s_cos.h index 54d6285d7d8..4b70fd9d94d 100644 --- a/include/MSL_C/Math/Double_precision/s_cos.h +++ b/include/MSL_C/Math/Double_precision/s_cos.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_S_COS_H #define MATH_DOUBLE_PRECISION_S_COS_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_S_COS_H */ diff --git a/include/MSL_C/Math/Double_precision/s_floor.h b/include/MSL_C/Math/Double_precision/s_floor.h index 2d22c8f0fee..fa3dc539ab7 100644 --- a/include/MSL_C/Math/Double_precision/s_floor.h +++ b/include/MSL_C/Math/Double_precision/s_floor.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_S_FLOOR_H #define MATH_DOUBLE_PRECISION_S_FLOOR_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_S_FLOOR_H */ diff --git a/include/MSL_C/Math/Double_precision/s_frexp.h b/include/MSL_C/Math/Double_precision/s_frexp.h index f50267e446b..2dfd7d048ee 100644 --- a/include/MSL_C/Math/Double_precision/s_frexp.h +++ b/include/MSL_C/Math/Double_precision/s_frexp.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_S_FREXP_H #define MATH_DOUBLE_PRECISION_S_FREXP_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_S_FREXP_H */ diff --git a/include/MSL_C/Math/Double_precision/s_ldexp.h b/include/MSL_C/Math/Double_precision/s_ldexp.h index f3af0dc6b2c..e9c241263ec 100644 --- a/include/MSL_C/Math/Double_precision/s_ldexp.h +++ b/include/MSL_C/Math/Double_precision/s_ldexp.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_S_LDEXP_H #define MATH_DOUBLE_PRECISION_S_LDEXP_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_S_LDEXP_H */ diff --git a/include/MSL_C/Math/Double_precision/s_modf.h b/include/MSL_C/Math/Double_precision/s_modf.h index d0a5cd5f409..08b07880d7e 100644 --- a/include/MSL_C/Math/Double_precision/s_modf.h +++ b/include/MSL_C/Math/Double_precision/s_modf.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_S_MODF_H #define MATH_DOUBLE_PRECISION_S_MODF_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_S_MODF_H */ diff --git a/include/MSL_C/Math/Double_precision/s_sin.h b/include/MSL_C/Math/Double_precision/s_sin.h index f2623636386..b4ac62f5b98 100644 --- a/include/MSL_C/Math/Double_precision/s_sin.h +++ b/include/MSL_C/Math/Double_precision/s_sin.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_S_SIN_H #define MATH_DOUBLE_PRECISION_S_SIN_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_S_SIN_H */ diff --git a/include/MSL_C/Math/Double_precision/s_tan.h b/include/MSL_C/Math/Double_precision/s_tan.h index c517f1fb515..9ddbb42a561 100644 --- a/include/MSL_C/Math/Double_precision/s_tan.h +++ b/include/MSL_C/Math/Double_precision/s_tan.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_S_TAN_H #define MATH_DOUBLE_PRECISION_S_TAN_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_S_TAN_H */ diff --git a/include/MSL_C/Math/Double_precision/w_acos.h b/include/MSL_C/Math/Double_precision/w_acos.h index f7e17414106..aee53d2893e 100644 --- a/include/MSL_C/Math/Double_precision/w_acos.h +++ b/include/MSL_C/Math/Double_precision/w_acos.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_W_ACOS_H #define MATH_DOUBLE_PRECISION_W_ACOS_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_W_ACOS_H */ diff --git a/include/MSL_C/Math/Double_precision/w_asin.h b/include/MSL_C/Math/Double_precision/w_asin.h index 2d1418d0b56..ed894295961 100644 --- a/include/MSL_C/Math/Double_precision/w_asin.h +++ b/include/MSL_C/Math/Double_precision/w_asin.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_W_ASIN_H #define MATH_DOUBLE_PRECISION_W_ASIN_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_W_ASIN_H */ diff --git a/include/MSL_C/Math/Double_precision/w_atan2.h b/include/MSL_C/Math/Double_precision/w_atan2.h index 20b36097627..5e0656ae230 100644 --- a/include/MSL_C/Math/Double_precision/w_atan2.h +++ b/include/MSL_C/Math/Double_precision/w_atan2.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_W_ATAN2_H #define MATH_DOUBLE_PRECISION_W_ATAN2_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_W_ATAN2_H */ diff --git a/include/MSL_C/Math/Double_precision/w_exp.h b/include/MSL_C/Math/Double_precision/w_exp.h index 06288628eaa..d1b8d7b90d2 100644 --- a/include/MSL_C/Math/Double_precision/w_exp.h +++ b/include/MSL_C/Math/Double_precision/w_exp.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_W_EXP_H #define MATH_DOUBLE_PRECISION_W_EXP_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_W_EXP_H */ diff --git a/include/MSL_C/Math/Double_precision/w_fmod.h b/include/MSL_C/Math/Double_precision/w_fmod.h index 0533db226b7..2d37b22e170 100644 --- a/include/MSL_C/Math/Double_precision/w_fmod.h +++ b/include/MSL_C/Math/Double_precision/w_fmod.h @@ -1,7 +1,7 @@ #ifndef MATH_DOUBLE_PRECISION_W_FMOD_H #define MATH_DOUBLE_PRECISION_W_FMOD_H -#include "dolphin/types.h" + double fmod(double, double); diff --git a/include/MSL_C/Math/Double_precision/w_pow.h b/include/MSL_C/Math/Double_precision/w_pow.h index 57667d71a46..ad5968fb409 100644 --- a/include/MSL_C/Math/Double_precision/w_pow.h +++ b/include/MSL_C/Math/Double_precision/w_pow.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_W_POW_H #define MATH_DOUBLE_PRECISION_W_POW_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_W_POW_H */ diff --git a/include/MSL_C/Math/Double_precision/w_sqrt.h b/include/MSL_C/Math/Double_precision/w_sqrt.h index ea36d743fd9..226e8ea63c2 100644 --- a/include/MSL_C/Math/Double_precision/w_sqrt.h +++ b/include/MSL_C/Math/Double_precision/w_sqrt.h @@ -1,6 +1,6 @@ #ifndef MATH_DOUBLE_PRECISION_W_SQRT_H #define MATH_DOUBLE_PRECISION_W_SQRT_H -#include "dolphin/types.h" + #endif /* MATH_DOUBLE_PRECISION_W_SQRT_H */ diff --git a/include/MSL_C/PPC_EABI/Src/critical_regions.gamecube.h b/include/MSL_C/PPC_EABI/Src/critical_regions.gamecube.h index 86768e9d1a1..fd099812d64 100644 --- a/include/MSL_C/PPC_EABI/Src/critical_regions.gamecube.h +++ b/include/MSL_C/PPC_EABI/Src/critical_regions.gamecube.h @@ -1,6 +1,6 @@ #ifndef PPC_EABI_SRC_CRITICAL_REGIONSGAMECUBE_H #define PPC_EABI_SRC_CRITICAL_REGIONSGAMECUBE_H -#include "dolphin/types.h" + #endif /* PPC_EABI_SRC_CRITICAL_REGIONSGAMECUBE_H */ diff --git a/include/MSL_C/PPC_EABI/Src/math_ppc.h b/include/MSL_C/PPC_EABI/Src/math_ppc.h index 71a44b5f95a..4882e9fa800 100644 --- a/include/MSL_C/PPC_EABI/Src/math_ppc.h +++ b/include/MSL_C/PPC_EABI/Src/math_ppc.h @@ -1,6 +1,6 @@ #ifndef PPC_EABI_SRC_MATH_PPC_H #define PPC_EABI_SRC_MATH_PPC_H -#include "dolphin/types.h" + #endif /* PPC_EABI_SRC_MATH_PPC_H */ diff --git a/include/MSL_C/PPC_EABI/Src/uart_console_io_gcn.h b/include/MSL_C/PPC_EABI/Src/uart_console_io_gcn.h index 8a31c977830..a821c1e851b 100644 --- a/include/MSL_C/PPC_EABI/Src/uart_console_io_gcn.h +++ b/include/MSL_C/PPC_EABI/Src/uart_console_io_gcn.h @@ -1,6 +1,6 @@ #ifndef PPC_EABI_SRC_UART_CONSOLE_IO_GCN_H #define PPC_EABI_SRC_UART_CONSOLE_IO_GCN_H -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/ansi_files.h" #endif /* PPC_EABI_SRC_UART_CONSOLE_IO_GCN_H */ diff --git a/include/MSL_C/math.h b/include/MSL_C/math.h index 0bae081bf72..2becbd2f8cb 100644 --- a/include/MSL_C/math.h +++ b/include/MSL_C/math.h @@ -2,7 +2,6 @@ #define MSL_MATH_H_ #include "MSL_C/MSL_Common/Src/float.h" -#include "dolphin/types.h" #define M_PI 3.14159265358979323846f @@ -76,7 +75,7 @@ inline float sqrtf(float mag) { } inline float atan2f(float y, float x) { - return (f32)atan2(y, x); + return (float)atan2(y, x); } #ifdef __cplusplus diff --git a/include/MSL_C/string.h b/include/MSL_C/string.h index bbf8425561c..c1105257c8c 100644 --- a/include/MSL_C/string.h +++ b/include/MSL_C/string.h @@ -2,7 +2,7 @@ #define MSL_STRING_H_ #include "Runtime.PPCEABI.H/__va_arg.h" -#include "dolphin/types.h" + // TODO: move to MSL_C/ extern "C" { diff --git a/include/d/a/d_a_alink.h b/include/d/a/d_a_alink.h index be42e28f57d..9c270ccd33c 100644 --- a/include/d/a/d_a_alink.h +++ b/include/d/a/d_a_alink.h @@ -2393,10 +2393,10 @@ public: /* 80108F64 */ bool cancelHookshotMove(); /* 8010903C */ BOOL checkHookshotReadyMaterialOffMode() const; /* 80109070 */ void setHookshotReadyMaterial(); - /* 801090EC */ void initHookshotUpperAnimeSpeed(int); + /* 801090EC */ int initHookshotUpperAnimeSpeed(int); /* 80109170 */ void initHookshotReady(); /* 801091E4 */ void setHookshotReadyAnime(); - /* 80109284 */ void checkUpperItemActionHookshot(); + /* 80109284 */ int checkUpperItemActionHookshot(); /* 801095C8 */ int checkNextActionHookshot(); /* 801097A0 */ void setHookshotReturnEnd(); /* 80109890 */ void setHookshotHangMoveBGCollect(); diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index 2f74001e9df..cdb09b53fc3 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -954,7 +954,9 @@ inline void dComIfGs_onEventBit(u16 i_flag) { g_dComIfG_gameInfo.info.getSavedata().getEvent().onEventBit(i_flag); } -inline BOOL i_dComIfGs_isEventBit(u16 i_flag) { +// debug rom says `i_flag` is not const, but it's needed to match in some places? +// missing some other inline maybe? +inline BOOL i_dComIfGs_isEventBit(const u16 i_flag) { return g_dComIfG_gameInfo.info.getEvent().isEventBit(i_flag); } @@ -2566,7 +2568,7 @@ inline int dComIfG_getTimerNowTimeMs() { return g_dComIfG_gameInfo.play.getTimerNowTimeMs(); } -inline int dComIfG_setTimerNowTimeMs(int time) { +inline void dComIfG_setTimerNowTimeMs(int time) { g_dComIfG_gameInfo.play.setTimerNowTimeMs(time); } diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h index c99567d4b52..331228746f1 100644 --- a/include/d/kankyo/d_kankyo.h +++ b/include/d/kankyo/d_kankyo.h @@ -542,7 +542,7 @@ inline dScnKy_env_light_c* i_dKy_getEnvlight() { return &g_env_light; } -BOOL dKy_darkworld_stage_check(char const*, int); +u8 dKy_darkworld_stage_check(char const*, int); BOOL dKy_withwarp_capture_check(); bool dKy_darkworld_check(); void dKy_undwater_filter_draw(); diff --git a/include/dolphin/ai/ai.h b/include/dolphin/ai/ai.h index e0ee3a3adf6..0de6e2d9ccc 100644 --- a/include/dolphin/ai/ai.h +++ b/include/dolphin/ai/ai.h @@ -3,4 +3,31 @@ #include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*AISCallback)(u32 count); +typedef void (*AIDCallback)(); + +AIDCallback AIRegisterDMACallback(AIDCallback callback); +void AIInitDMA(u32 addr, u32 length); +void AIStartDMA(void); +void AIStopDMA(void); +void AISetStreamPlayState(u32 state); +inline u32 AIGetStreamPlayState(void); +void AISetDSPSampleRate(u32 rate); +u32 AIGetDSPSampleRate(void); +void __AI_set_stream_sample_rate(u32 rate); +u32 AIGetStreamSampleRate(void); +void AISetStreamVolLeft(u8 vol); +u8 AIGetStreamVolLeft(void); +void AISetStreamVolRight(u8 vol); +u8 AIGetStreamVolRight(void); +void AIInit(u8* stack); + +#ifdef __cplusplus +}; +#endif + #endif /* AI_H */ diff --git a/include/dolphin/ar/ar.h b/include/dolphin/ar/ar.h index 4e7621c45d8..c04e41f1de2 100644 --- a/include/dolphin/ar/ar.h +++ b/include/dolphin/ar/ar.h @@ -7,8 +7,13 @@ extern "C" { #endif -u32 ARInit(u32*, u32); -u32 ARAlloc(u32); +typedef void (*ARCallback)(void); + +ARCallback ARRegisterDMACallback(ARCallback callback); +u32 ARGetDMAStatus(void); +void ARStartDMA(u32 type, u32 mainmem_addr, u32 aram_addr, u32 length); +u32 ARInit(u32* stack_index_addr, u32 num_entries); +u32 ARAlloc(u32 length); u32 ARGetSize(void); #ifdef __cplusplus diff --git a/include/dolphin/base/PPCArch.h b/include/dolphin/base/PPCArch.h index d721eb225c8..120ba922529 100644 --- a/include/dolphin/base/PPCArch.h +++ b/include/dolphin/base/PPCArch.h @@ -3,6 +3,492 @@ #include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + +#define CTR 9 +#define XER 1 +#define LR 8 + +#define UPMC1 937 +#define UPMC2 938 +#define UPMC3 941 +#define UPMC4 942 + +#define USIA 939 + +#define UMMCR0 936 +#define UMMCR1 940 + +#define HID0 1008 +#define HID1 1009 + +#define PVR 287 + +#define IBAT0U 528 +#define IBAT0L 529 +#define IBAT1U 530 +#define IBAT1L 531 +#define IBAT2U 532 +#define IBAT2L 533 +#define IBAT3U 534 +#define IBAT3L 535 + +#define DBAT0U 536 +#define DBAT0L 537 +#define DBAT1U 538 +#define DBAT1L 539 +#define DBAT2U 540 +#define DBAT2L 541 +#define DBAT3U 542 +#define DBAT3L 543 + +#define SDR1 25 + +#define SPRG0 272 +#define SPRG1 273 +#define SPRG2 274 +#define SPRG3 275 + +#define DAR 19 +#define DSISR 18 + +#define SRR0 26 +#define SRR1 27 + +#define EAR 282 + +#define DABR 1013 + +#define TBL 284 +#define TBU 285 + +#define L2CR 1017 + +#define DEC 22 + +#define IABR 1010 + +#define PMC1 953 +#define PMC2 954 +#define PMC3 957 +#define PMC4 958 + +#define SIA 955 + +#define MMCR0 952 +#define MMCR1 956 + +#define THRM1 1020 +#define THRM2 1021 +#define THRM3 1022 + +#define ICTC 1019 + +#define GQR0 912 +#define GQR1 913 +#define GQR2 914 +#define GQR3 915 +#define GQR4 916 +#define GQR5 917 +#define GQR6 918 +#define GQR7 919 + +#define HID2 920 + +#define WPAR 921 + +#define DMA_U 922 +#define DMA_L 923 + +#define MSR_POW 0x00040000 // Power Management +#define MSR_ILE 0x00010000 // Interrupt Little Endian +#define MSR_EE 0x00008000 // external interrupt +#define MSR_PR 0x00004000 // privilege level(should be 0) +#define MSR_FP 0x00002000 // floating point available +#define MSR_ME 0x00001000 // machine check enable +#define MSR_FE0 0x00000800 // floating point exception enable +#define MSR_SE 0x00000400 // single step trace enable +#define MSR_BE 0x00000200 // branch trace enable +#define MSR_FE1 0x00000100 // floating point exception enable +#define MSR_IP 0x00000040 // Exception prefix +#define MSR_IR 0x00000020 // instruction relocate +#define MSR_DR 0x00000010 // data relocate +#define MSR_PM 0x00000004 // Performance monitor marked mode +#define MSR_RI 0x00000002 // Recoverable interrupt +#define MSR_LE 0x00000001 // Little Endian + +#define MSR_POW_BIT 13 // Power Management +#define MSR_ILE_BIT 15 // Interrupt Little Endian +#define MSR_EE_BIT 16 // external interrupt +#define MSR_PR_BIT 17 // privilege level (should be 0) +#define MSR_FP_BIT 18 // floating point available +#define MSR_ME_BIT 19 // machine check enable +#define MSR_FE0_BIT 20 // floating point exception enable +#define MSR_SE_BIT 21 // single step trace enable +#define MSR_BE_BIT 22 // branch trace enable +#define MSR_FE1_BIT 23 // floating point exception enable +#define MSR_IP_BIT 25 // Exception prefix +#define MSR_IR_BIT 26 // instruction relocate +#define MSR_DR_BIT 27 // data relocate +#define MSR_PM_BIT 29 // Performance monitor marked mode +#define MSR_RI_BIT 30 // Recoverable interrupt +#define MSR_LE_BIT 31 // Little Endian + +/*---------------------------------------------------------------------------* + HID0 bits + *---------------------------------------------------------------------------*/ +#define HID0_EMCP 0x80000000 // Enable MCP +#define HID0_DBP 0x40000000 // Enable 60x bus address and data parity chk +#define HID0_EBA 0x20000000 // Enable 60x address parity checking +#define HID0_EBD 0x10000000 // Enable 60x data parity checking +#define HID0_BCLK 0x08000000 // CLK_OUT output enable and clk selection +#define HID0_ECLK 0x02000000 // CLK_OUT output enable and clk selection +#define HID0_PAR 0x01000000 // Disable !ARTRY precharge +#define HID0_DOZE 0x00800000 // Doze mode enable +#define HID0_NAP 0x00400000 // Nap mode enable +#define HID0_SLEEP 0x00200000 // Sleep mode enable +#define HID0_DPM 0x00100000 // Dynamic power management enable +#define HID0_NHR 0x00010000 // Not hard reset (0 hard reset if s/w set it) +#define HID0_ICE 0x00008000 // Instruction cache enable +#define HID0_DCE 0x00004000 // Data cache enable +#define HID0_ILOCK 0x00002000 // ICache lock +#define HID0_DLOCK 0x00001000 // DCache lock +#define HID0_ICFI 0x00000800 // ICache flash invalidate +#define HID0_DCFI 0x00000400 // DCache flash invalidate +#define HID0_SPD 0x00000200 // Speculative cache access enable (0 enable) +#define HID0_IFEM 0x00000100 // Enable M bit on bus for Ifetch +#define HID0_SGE 0x00000080 // Store gathering enable +#define HID0_DCFA 0x00000040 // DCache flush assist - set before a flush +#define HID0_BTIC 0x00000020 // Branch target icache enable +#define HID0_ABE 0x00000008 // Address bcast enable +#define HID0_BHT 0x00000004 // Branch history table enable +#define HID0_NOOPTI 0x00000001 // No-op Dcache touch instructions + +#define HID0_ICE_BIT 16 // Instruction cache enable +#define HID0_DCE_BIT 17 // Data cache enable +#define HID0_ILOCK_BIT 18 // ICache lock +#define HID0_DLOCK_BIT 19 // DCache lock + +#define HID2_LSQE 0x80000000 // L/S quantize enable +#define HID2_WPE 0x40000000 // Write pipe enable +#define HID2_PSE 0x20000000 // Paired single enable +#define HID2_LCE 0x10000000 // Locked cache enable + +#define HID2_DCHERR 0x00800000 // ERROR: dcbz_l cache hit +#define HID2_DNCERR 0x00400000 // ERROR: DMA access to normal cache +#define HID2_DCMERR 0x00200000 // ERROR: DMA cache miss error +#define HID2_DQOERR 0x00100000 // ERROR: DMA queue overflow +#define HID2_DCHEE 0x00080000 // dcbz_l cache hit error enable +#define HID2_DNCEE 0x00040000 // DMA access to normal cache error enable +#define HID2_DCMEE 0x00020000 // DMA cache miss error error enable +#define HID2_DQOEE 0x00010000 // DMA queue overflow error enable + +#define HID2_DMAQL_MASK 0x0F000000 // DMA queue length mask +#define HID2_DMAQL_SHIFT 24 // DMA queue shift + +#define HID2_LSQE_BIT 0 +#define HID2_WPE_BIT 1 +#define HID2_PSE_BIT 2 +#define HID2_LCE_BIT 3 + +#define HID2_DCHERR_BIT 8 +#define HID2_DNCERR_BIT 9 +#define HID2_DCMERR_BIT 10 +#define HID2_DQOERR_BIT 11 +#define HID2_DCHEE_BIT 12 +#define HID2_DNCEE_BIT 13 +#define HID2_DCMEE_BIT 14 +#define HID2_DQOEE_BIT 15 + +#define GQR_LOAD_SCALE_MASK 0x3F000000 // load scale field +#define GQR_LOAD_TYPE_MASK 0x00070000 // load type field +#define GQR_STORE_SCALE_MASK 0x00003F00 // store scale field +#define GQR_STORE_TYPE_MASK 0x00000007 // store type field + +typedef struct { + u32 _pad0 :2; + u32 loadScale :6; + u32 _pad1 :5; + u32 loadType :3; + u32 _pad2 :2; + u32 storeScale :6; + u32 _pad3 :5; + u32 storeType :3; +} PPC_GQR_t; + +typedef union { + u32 val; + PPC_GQR_t f; +} PPC_GQR_u; + + +#define DMA_U_ADDR_MASK 0xFFFFFFE0 // Start addr in memory +#define DMA_U_LEN_U_MASK 0x0000001F // lines to transfer (U) + +#define DMA_L_LC_ADDR_MASK 0xFFFFFFE0 // Start addr in LC +#define DMA_L_LOAD 0x00000010 // 0 - store, 1 - load +#define DMA_L_STORE 0x00000000 // 0 - store, 1 - load +#define DMA_L_LEN_MASK 0x0000000C // lines to transfer (L) +#define DMA_L_TRIGGER 0x00000002 // 0 - cmd inactive, 1 - cmd rdy +#define DMA_L_FLUSH 0x00000001 // 1 - Flush DMA queue + +typedef struct { + u32 memAddr :27; + u32 dmaLenU :5; +} PPC_DMA_U_t; + +typedef union { + u32 val; + PPC_DMA_U_t f; +} PPC_DMA_U_u; + + +typedef struct { + u32 lcAddr :27; + u32 dmaLd :1; + u32 dmaLenL :2; + u32 dmaTrigger :1; + u32 dmaFlush :1; +} PPC_DMA_L_t; + + +typedef union { + u32 val; + PPC_DMA_L_t f; +} PPC_DMA_L_u; + + +#define WPAR_ADDR 0xFFFFFFE0 // 32byte gather address +#define WPAR_BNE 0x00000001 // Buffer not empty (R) + +#define SRR1_DMA_BIT 0x00200000 +#define SRR1_L2DP_BIT 0x00100000 + +#define L2CR_L2E 0x80000000 // L2 Enable +#define L2CR_L2PE 0x40000000 // L2 data parity generation and checking enable + +#define L2CR_L2SIZ_256K 0x10000000 // L2 size 256K +#define L2CR_L2SIZ_512K 0x20000000 // L2 size 512 +#define L2CR_L2SIZ_1M 0x30000000 // L2 size 1M + +#define L2CR_L2CLK_1_0 0x02000000 // L2 clock ratio 1 +#define L2CR_L2CLK_1_5 0x04000000 // L2 clock ratio 1.5 +#define L2CR_L2CLK_2_0 0x08000000 // L2 clock ratio 2 +#define L2CR_L2CLK_2_5 0x0A000000 // L2 clock ratio 2.5 +#define L2CR_L2CLK_3_0 0x0C000000 // L2 clock ratio 3 + +#define L2CR_RAM_FLOW_THRU_BURST 0x00000000 // L2 RAM type flow-through sync. burst SRAM +#define L2CR_RAM_PIPELINE_BURST 0x01000000 // L2 RAM type pipelined sync. burst SRAM +#define L2CR_RAM_PIPELINE_LATE 0x01800000 // L2 RAM type pipelined sync. late-write SRAM + +#define L2CR_L2DO 0x00400000 // Data only +#define L2CR_L2I 0x00200000 // Global invalidate +#define L2CR_L2CTL 0x00100000 // ZZ enable +#define L2CR_L2WT 0x00080000 // L2 write through +#define L2CR_L2TS 0x00040000 // L2 test support + +#define L2CR_L2OH_0_5 0x00000000 // L2 output hold 0.5 ns +#define L2CR_L2OH_1_0 0x00010000 // L2 output hold 1.0 ns + +#define L2CR_L2SL 0x00008000 // L2 DLL slow +#define L2CR_L2DF 0x00004000 // L2 differential clock +#define L2CR_L2BYP 0x00002000 // L2 DLL bypass +#define L2CR_L2CS 0x00000200 // L2 clock stop +#define L2CR_L2DRO 0x00000100 // L2 DLL rollover checkstop enable +#define L2CR_L2CTR_MASK 0x000000FE // L2 counter value mask +#define L2CR_L2IP 0x00000001 // L2 global invalidate in progress + +#define MMCR0_DIS 0x80000000 // Disables counting unconditionally +#define MMCR0_DP 0x40000000 // Disables counting while in supervisor mode +#define MMCR0_DU 0x20000000 // Disables counting while in user mode +#define MMCR0_DMS 0x10000000 // Disables counting while MSR[PM] is set +#define MMCR0_DMR 0x08000000 // Disables counting while MSR[PM] is zero +#define MMCR0_ENINT 0x04000000 // Enables performance monitor interrupt signaling +#define MMCR0_DISCOUNT 0x02000000 // Disables counting of PMCn when a performance monitor interrupt is signaled or... +#define MMCR0_RTCSELECT_MASK 0x01800000 // 64-bit time base, bit selection enable +#define MMCR0_RTCSELECT_63 0x00000000 // Pick bit 63 to count +#define MMCR0_RTCSELECT_55 0x00800000 // Pick bit 55 to count +#define MMCR0_RTCSELECT_51 0x01000000 // Pick bit 51 to count +#define MMCR0_RTCSELECT_47 0x01800000 // Pick bit 47 to count +#define MMCR0_INTONBITTRANS 0x00400000 // Causes interrupt signaling on bit transition from off to on +#define MMCR0_THRESHOLD_MASK 0x003F0000 // Threshold value +#define MMCR0_THRESHOLD(n) ((n) << 16) // Threshold value (0 - 63) +#define MMCR0_PMC1INTCONTROL 0x00008000 // Enables interrupt signaling due to PMC1 counter overflow +#define MMCR0_PMC2INTCONTROL 0x00004000 // Enables interrupt signaling due to PMC2-PMC4 counter overflow +#define MMCR0_PMCTRIGGER 0x00002000 // Can be used to trigger counting of PMC2-PMC4 after PMC1 has overflowed or... +#define MMCR0_PMC1SELECT_MASK 0x00001FC0 // PMC1 input selector +#define MMCR0_PMC2SELECT_MASK 0x0000003F // PMC2 input selector + +#define MMCR1_PMC3SELECT_MASK 0xF8000000 // PMC3 input selector +#define MMCR1_PMC4SELECT_MASK 0x07C00000 // PMC4 input selector + +#define PMC1_OV 0x80000000 // Overflow +#define PMC1_COUNTER 0x7FFFFFFF // Counter value +#define PMC2_OV 0x80000000 // Overflow +#define PMC2_COUNTER 0x7FFFFFFF // Counter value +#define PMC3_OV 0x80000000 // Overflow +#define PMC3_COUNTER 0x7FFFFFFF // Counter value +#define PMC4_OV 0x80000000 // Overflow +#define PMC4_COUNTER 0x7FFFFFFF // Counter value + +/*---------------------------------------------------------------------------* + PMC1 Events + *---------------------------------------------------------------------------*/ +#define MMCR0_PMC1_HOLD 0x00000000 // Register holds current value +#define MMCR0_PMC1_CYCLE 0x00000040 // Processor cycles +#define MMCR0_PMC1_INSTRUCTION 0x00000080 // # of instructions completed. +#define MMCR0_PMC1_TRANSITION 0x000000C0 // # of transitions for 0 to 1 +#define MMCR0_PMC1_DISPATCHED 0x00000100 // # of instructions dispatched +#define MMCR0_PMC1_EIEIO 0x00000140 // # of eieio instructions completed +#define MMCR0_PMC1_ITLB_CYCLE 0x00000180 // # of cycles spent performing table search op. for the ITLB +#define MMCR0_PMC1_L2_HIT 0x000001C0 // # of access that hit the L2. +#define MMCR0_PMC1_EA 0x00000200 // # of valid instruction EAs delivered to the memory subsystem +#define MMCR0_PMC1_IABR 0x00000240 // # of time the address of an instruction matches the IABR +#define MMCR0_PMC1_L1_MISS 0x00000280 // # of loads that miss the L1 +#define MMCR0_PMC1_Bx_UNRESOLVED 0x000002C0 // # of branches that are unresolved when processed +#define MMCR0_PMC1_Bx_STALL_CYCLE 0x00000300 // # of cycles that dispatcher stalls due to a second + // unresolved branch in the instruction stream +#define MMCR0_PMC1_IC_FETCH_MISS 0x00000340 // # of times an instruction fetch missed the L1 Icache +#define MMCR0_PMC2_HOLD 0x00000000 // Register holds current value +#define MMCR0_PMC2_CYCLE 0x00000001 // Processor cycles +#define MMCR0_PMC2_INSTRUCTION 0x00000002 // # of instructions completed +#define MMCR0_PMC2_TRANSITION 0x00000003 // # of time-base (lower) bit transitions +#define MMCR0_PMC2_DISPATCHED 0x00000004 // # of instructions dispatched +#define MMCR0_PMC2_IC_MISS 0x00000005 // # of L1 instruction cache misses +#define MMCR0_PMC2_ITLB_MISS 0x00000006 // # of ITLB misses +#define MMCR0_PMC2_L2_I_MISS 0x00000007 // # of L2 instruction misses +#define MMCR0_PMC2_Bx_FALL_TROUGH 0x00000008 // # of fall-through branches +#define MMCR0_PMC2_PR_SWITCH 0x00000009 // # of MSR[PR] bit toggles +#define MMCR0_PMC2_RESERVED_LOAD 0x0000000A // # of reserved loads completed +#define MMCR0_PMC2_LOAD_STORE 0x0000000B // # of completed loads and stores +#define MMCR0_PMC2_SNOOP 0x0000000C // # of snoops +#define MMCR0_PMC2_L1_CASTOUT 0x0000000D // # of L1 castouts to L2 +#define MMCR0_PMC2_SYSTEM 0x0000000E // # of completed system unit instructions +#define MMCR0_PMC2_IC_FETCH_MISS 0x0000000F // # of instruction fetch misses in the L1 +#define MMCR0_PMC2_Bx_OUT_OF_ORDER 0x00000010 // # of branches allowing out-of-order execution + +/*---------------------------------------------------------------------------* + PMC3 Events + *---------------------------------------------------------------------------*/ +#define MMCR1_PMC3_HOLD 0x00000000 // Register holds current value +#define MMCR1_PMC3_CYCLE 0x08000000 // Processor cycles +#define MMCR1_PMC3_INSTRUCTION 0x10000000 // # of instructions completed +#define MMCR1_PMC3_TRANSITION 0x18000000 // # of time-base (lower) bit transitions +#define MMCR1_PMC3_DISPATCHED 0x20000000 // # of instructions dispatched +#define MMCR1_PMC3_DC_MISS 0x28000000 // # of L1 data cache misses +#define MMCR1_PMC3_DTLB_MISS 0x30000000 // # of DTLB misses +#define MMCR1_PMC3_L2_D_MISS 0x38000000 // # of L2 data misses +#define MMCR1_PMC3_Bx_TAKEN 0x40000000 // # predicted branches that were taken +#define MMCR1_PMC3_PM_SWITCH 0x48000000 // # of transitions between marked and unmarked processes +#define MMCR1_PMC3_COND_STORE 0x50000000 // # of store conditional instructions completed +#define MMCR1_PMC3_FPU 0x58000000 // # of instructions completed from the FPU +#define MMCR1_PMC3_L2_SNOOP_CASTOUT 0x60000000 // # of L2 castout caused by snoops to modified lines +#define MMCR1_PMC3_L2_HIT 0x68000000 // # of cache operations that hit in the L2 cache +#define MMCR1_PMC3_L1_MISS_CYCLE 0x78000000 // # of cycles generated by L1 load misses +#define MMCR1_PMC3_Bx_SECOND 0x80000000 // # of branches in the second speculative branch + // resolved correctly +#define MMCR1_PMC3_BPU_LR_CR 0x88000000 // # of cycles the BPU stalls due to LR or CR unresolved + // dependencies + +#define MMCR1_PMC4_HOLD 0x00000000 // Register holds current value +#define MMCR1_PMC4_CYCLE 0x00400000 // Processor cycles +#define MMCR1_PMC4_INSTRUCTION 0x00800000 // # of instructions completed +#define MMCR1_PMC4_TRANSITION 0x00C00000 // # of time-base (lower) bit transitions +#define MMCR1_PMC4_DISPATCHED 0x01000000 // # of instructions dispatched +#define MMCR1_PMC4_L2_CASTOUT 0x01400000 // # of L2 castouts +#define MMCR1_PMC4_DTLB_CYCLE 0x01800000 // # of cycles spent performing table searches for DTLB accesses +#define MMCR1_PMC4_Bx_MISSED 0x02000000 // # of mispredicted branches +#define MMCR1_PMC4_COND_STORE_INT 0x02800000 // # of store conditional instructions completed + // with reservation intact +#define MMCR1_PMC4_SYNC 0x02C00000 // # of completed sync instructions +#define MMCR1_PMC4_SNOOP_RETRY 0x03000000 // # of snoop request retries +#define MMCR1_PMC4_INTEGER 0x03400000 // # of completed integer operations +#define MMCR1_PMC4_BPU_THIRD 0x03800000 // # of cycles the BPU cannot process new branches + // due to having two unresolved branches +#define MMCR1_PMC4_DC_MISS 0x07C00000 // # of L1 data cache misses + +/*---------------------------------------------------------------------------* + FPSCR bits + *---------------------------------------------------------------------------*/ +#ifndef FPSCR_FX +#define FPSCR_FX 0x80000000 // Exception summary +#define FPSCR_FEX 0x40000000 // Enabled exception summary +#define FPSCR_VX 0x20000000 // Invalid operation +#define FPSCR_OX 0x10000000 // Overflow exception +#define FPSCR_UX 0x08000000 // Underflow exception +#define FPSCR_ZX 0x04000000 // Zero divide exception +#define FPSCR_XX 0x02000000 // Inexact exception +#define FPSCR_VXSNAN 0x01000000 // SNaN +#define FPSCR_VXISI 0x00800000 // Infinity - Infinity +#define FPSCR_VXIDI 0x00400000 // Infinity / Infinity +#define FPSCR_VXZDZ 0x00200000 // 0 / 0 +#define FPSCR_VXIMZ 0x00100000 // Infinity * 0 +#define FPSCR_VXVC 0x00080000 // Invalid compare +#define FPSCR_FR 0x00040000 // Fraction rounded +#define FPSCR_FI 0x00020000 // Fraction inexact +#define FPSCR_VXSOFT 0x00000400 // Software request +#define FPSCR_VXSQRT 0x00000200 // Invalid square root +#define FPSCR_VXCVI 0x00000100 // Invalid integer convert +#define FPSCR_VE 0x00000080 // Invalid operation exception enable +#define FPSCR_OE 0x00000040 // Overflow exception enable +#define FPSCR_UE 0x00000020 // Underflow exception enable +#define FPSCR_ZE 0x00000010 // Zero divide exception enable +#define FPSCR_XE 0x00000008 // Inexact exception enable +#define FPSCR_NI 0x00000004 // Non-IEEE mode +#endif + +#ifndef FPSCR_FX_BIT +#define FPSCR_FX_BIT 0 // Exception summary +#define FPSCR_FEX_BIT 1 // Enabled exception summary +#define FPSCR_VX_BIT 2 // Invalid operation +#define FPSCR_OX_BIT 3 // Overflow exception +#define FPSCR_UX_BIT 4 // Underflow exception +#define FPSCR_ZX_BIT 5 // Zero divide exception +#define FPSCR_XX_BIT 6 // Inexact exception +#define FPSCR_VXSNAN_BIT 7 // SNaN +#define FPSCR_VXISI_BIT 8 // Infinity - Infinity +#define FPSCR_VXIDI_BIT 9 // Infinity / Infinity +#define FPSCR_VXZDZ_BIT 10 // 0 / 0 +#define FPSCR_VXIMZ_BIT 11 // Infinity * 0 +#define FPSCR_VXVC_BIT 12 // Invalid compare +#define FPSCR_FR_BIT 13 // Fraction rounded +#define FPSCR_FI_BIT 14 // Fraction inexact +#define FPSCR_VXSOFT_BIT 21 // Software request +#define FPSCR_VXSQRT_BIT 22 // Invalid square root +#define FPSCR_VXCVI_BIT 23 // Invalid integer convert +#define FPSCR_VE_BIT 24 // Invalid operation exception enable +#define FPSCR_OE_BIT 25 // Overflow exception enable +#define FPSCR_UE_BIT 26 // Underflow exception enable +#define FPSCR_ZE_BIT 27 // Zero divide exception enable +#define FPSCR_XE_BIT 28 // Inexact exception enable +#define FPSCR_NI_BIT 29 // Non-IEEE mode +#endif + +u32 PPCMfmsr(void); +void PPCMtmsr(register u32 newMSR); +u32 PPCMfhid0(void); +void PPCMthid0(register u32 newHID0); +u32 PPCMfl2cr(void); +void PPCMtl2cr(register u32 newL2cr); +void PPCMtdec(register u32 newDec); +void PPCSync(void); +void PPCHalt(void); +void PPCMtmmcr0(register u32 newMmcr0); +void PPCMtmmcr1(register u32 newMmcr1); +void PPCMtpmc1(register u32 newPmc1); +void PPCMtpmc2(register u32 newPmc2); +void PPCMtpmc3(register u32 newPmc3); +void PPCMtpmc4(register u32 newPmc4); +u32 PPCMffpscr(void); +void PPCMtfpscr(register u32 newFPSCR); +u32 PPCMfhid2(void); +void PPCMthid2(register u32 newhid2); +void PPCMtwpar(register u32 newwpar); +void PPCDisableSpeculation(void); +void PPCSetFpNonIEEEMode(void); + union FpscrUnion { f64 f; struct { @@ -11,4 +497,8 @@ union FpscrUnion { } u; }; +#ifdef __cplusplus +}; +#endif + #endif /* PPCARCH_H */ diff --git a/include/dolphin/card/CARDPriv.h b/include/dolphin/card/CARDPriv.h new file mode 100644 index 00000000000..6d6f3da480d --- /dev/null +++ b/include/dolphin/card/CARDPriv.h @@ -0,0 +1,180 @@ +#ifndef CARDPRIV_H +#define CARDPRIV_H + +#include "dolphin/types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define CARD_FAT_AVAIL 0x0000u +#define CARD_FAT_CHECKSUM 0x0000u +#define CARD_FAT_CHECKSUMINV 0x0001u +#define CARD_FAT_CHECKCODE 0x0002u +#define CARD_FAT_FREEBLOCKS 0x0003u +#define CARD_FAT_LASTSLOT 0x0004u + +#define CARD_PAGE_SIZE 128u +#define CARD_SEG_SIZE 512u + +#define CARD_NUM_SYSTEM_BLOCK 5 +#define CARD_SYSTEM_BLOCK_SIZE (8 * 1024u) + +#define CARD_MAX_MOUNT_STEP (CARD_NUM_SYSTEM_BLOCK + 2) + +typedef struct CARDDir { + u8 gameName[4]; + u8 company[2]; + u8 _padding0; + u8 bannerFormat; + u8 fileName[CARD_FILENAME_MAX]; + u32 time; // seconds since 01/01/2000 midnight + + u32 iconAddr; // 0xFFFFFFFF if not used + u16 iconFormat; + u16 iconSpeed; + + u8 permission; + u8 copyTimes; + u16 startBlock; + u16 length; + u8 _padding1[2]; + + u32 commentAddr; // 0xFFFFFFFF if not used +} CARDDir; + +typedef struct CARDDirCheck { + u8 padding0[64 - 2 * 4]; + u16 padding1; + s16 checkCode; + u16 checkSum; + u16 checkSumInv; +} CARDDirCheck; + +typedef struct CARDControl { + /* 0x000 */ BOOL attached; + /* 0x004 */ s32 result; + /* 0x008 */ u16 size; + /* 0x00A */ u16 pageSize; + /* 0x00C */ s32 sectorSize; + /* 0x010 */ u16 cBlock; + /* 0x012 */ u16 vendorID; + /* 0x014 */ s32 latency; + /* 0x018 */ u8 id[12]; + /* 0x024 */ int mountStep; + /* 0x028 */ int formatStep; + /* 0x02C */ u32 scramble; + /* 0x030 */ DSPTaskInfo task; + /* 0x080 */ void* workArea; + /* 0x084 */ CARDDir* currentDir; + /* 0x088 */ u16* currentFat; + /* 0x08C */ OSThreadQueue threadQueue; + /* 0x094 */ u8 cmd[9]; + /* 0x0A0 */ s32 cmdlen; + /* 0x0A4 */ vu32 mode; + /* 0x0A8 */ int retry; + /* 0x0AC */ int repeat; + /* 0x0B0 */ u32 addr; + /* 0x0B4 */ void* buffer; + /* 0x0B8 */ s32 xferred; + /* 0x0BC */ u16 freeNo; + /* 0x0BE */ u16 startBlock; + /* 0x0C0 */ CARDFileInfo* fileInfo; + /* 0x0C4 */ CARDCallback extCallback; + /* 0x0C8 */ CARDCallback txCallback; + /* 0x0CC */ CARDCallback exiCallback; + /* 0x0D0 */ CARDCallback apiCallback; + /* 0x0D4 */ CARDCallback xferCallback; + /* 0x0D8 */ CARDCallback eraseCallback; + /* 0x0DC */ CARDCallback unlockCallback; + /* 0x0E0 */ OSAlarm alarm; + /* 0x108 */ u32 cid; + /* 0x10C */ const DVDDiskID* diskID; +} CARDControl; + +typedef struct CARDID { + u8 serial[32]; // flashID[12] + timebase[8] + counterBias[4] + language[4] + XXX[4] + u16 deviceID; + u16 size; + u16 encode; // character set -- 0: S-JIS, 1: ANSI + + u8 padding[512 - 32 - 5 * 2]; + + u16 checkSum; + u16 checkSumInv; +} CARDID; + +void __CARDDefaultApiCallback(s32 chan, s32 result); +s32 __CARDEraseSector(s32 chan, u32 addr, CARDCallback callback); +s32 __CARDPutControlBlock(struct CARDControl* card, s32 result); +void __CARDSyncCallback(s32 chan, s32 result); +u16* __CARDGetFatBlock(CARDControl* card); + +/* CARDBios */ +void __CARDExtHandler(s32 chan, OSContext* context); +void __CARDExiHandler(s32 chan, OSContext* context); +void __CARDTxHandler(s32 chan, OSContext* context); +void __CARDUnlockedHandler(s32 chan, OSContext* context); +s32 __CARDEnableInterrupt(s32 chan, BOOL enable); +s32 __CARDReadStatus(s32 chan, u8* status); +void __CARDReadVendorID(); +s32 __CARDClearStatus(s32 chan); +s32 __CARDStart(s32 chan, CARDCallback txCallback, CARDCallback exiCallback); +s32 __CARDReadSegment(s32 chan, CARDCallback callback); +s32 __CARDWritePage(s32 chan, CARDCallback callback); +u16 __CARDGetFontEncode(void); +void __CARDSetDiskID(const DVDDiskID* id); +s32 __CARDGetControlBlock(s32 chan, struct CARDControl** pcard); +s32 __CARDSync(s32 chan); + +/* CARDBlock */ +s32 __CARDAllocBlock(s32 chan, u32 cBlock, CARDCallback callback); +s32 __CARDUpdateFatBlock(s32 chan, u16* fat, CARDCallback callback); + +/* CARDCheck */ +void __CARDCheckSum(void* ptr, int length, u16* checksum, u16* checksumInv); +s32 __CARDVerify(CARDControl* card); + +/* CARDDir */ +CARDDir* __CARDGetDirBlock(CARDControl* card); +s32 __CARDUpdateDir(s32 chan, CARDCallback callback); + +/* CARDFormat */ +s32 __CARDFormatRegionAsync(s32 chan, u16 encode, CARDCallback callback); + +/* CARDMount */ +void __CARDMountCallback(s32 chan, s32 result); + +/* CARDOpen */ +BOOL __CARDCompareFileName(CARDDir* ent, const char* fileName); +s32 __CARDAccess(CARDControl* card, CARDDir* ent); +s32 __CARDIsWritable(CARDControl* card, CARDDir* ent); +s32 __CARDIsReadable(CARDControl* card, CARDDir* ent); + +/* CARDRdwr */ +s32 __CARDRead(s32 chan, u32 addr, s32 length, void* dst, CARDCallback callback); +s32 __CARDWrite(s32 chan, u32 addr, s32 length, void* dst, CARDCallback callback); + +/* CARDRead */ +s32 __CARDSeek(CARDFileInfo* fileInfo, s32 length, s32 offset, CARDControl** pcard); + +/* CARDUnlock */ +s32 __CARDUnlock(s32 chan, u8 flashID[12]); + +#define CARDIsValidBlockNo(card, iBlock) \ + (CARD_NUM_SYSTEM_BLOCK <= (iBlock) && (iBlock) < (card)->cBlock) +#define __CARDGetDirCheck(dir) ((CARDDirCheck*)&(dir)[CARD_MAX_FILE]) + +#define TRUNC(n, a) (((u32)(n)) & ~((a)-1)) +#define OFFSET(n, a) (((u32)(n)) & ((a)-1)) + +extern CARDControl __CARDBlock[2]; +extern DVDDiskID __CARDDiskNone; +extern u16 __CARDVendorID; +extern u8 data_80450A72; + +#ifdef __cplusplus +} +#endif + +#endif /* CARDPRIV_H */ diff --git a/include/dolphin/card/card.h b/include/dolphin/card/card.h index 447b4cd6446..b4caf506165 100644 --- a/include/dolphin/card/card.h +++ b/include/dolphin/card/card.h @@ -3,71 +3,172 @@ #include "dolphin/types.h" -#define CARD_ERROR_UNLOCKED 1 -#define CARD_ERROR_READY 0 -#define CARD_ERROR_BUSY -1 -#define CARD_ERROR_WRONGDEVICE -2 -#define CARD_ERROR_NOCARD -3 -#define CARD_ERROR_NOFILE -4 -#define CARD_ERROR_IOERROR -5 -#define CARD_ERROR_BROKEN -6 -#define CARD_ERROR_EXIST -7 -#define CARD_ERROR_NOENT -8 -#define CARD_ERROR_INSSPACE -9 -#define CARD_ERROR_NOPERM -10 -#define CARD_ERROR_LIMIT -11 -#define CARD_ERROR_NAMETOOLONG -12 -#define CARD_ERROR_ENCODING -13 -#define CARD_ERROR_CANCELED -14 -#define CARD_ERROR_FATAL_ERROR -128 - -struct CARDFileInfo { - /* 0x00 */ s32 channel; - /* 0x04 */ s32 fileNo; - /* 0x08 */ u32 offset; - /* 0x0C */ u16 iconIndex; - /* 0x0E */ u16 commentIndex; - /* 0x10 */ u16 field_0x10; -}; // Size: 0x10 - -struct CARDStat { - /* 0x00 */ char filename[32]; - /* 0x20 */ u32 length; - /* 0x24 */ u32 time; - /* 0x28 */ char gamecode[4]; - /* 0x2C */ char company[2]; - /* 0x2E */ u8 gameVersion; - /* 0x2F */ u8 bannerFormat; - /* 0x30 */ u32 iconAddress; - /* 0x34 */ u16 iconFormat; - /* 0x36 */ u16 iconSpeed; - /* 0x38 */ u32 commentAddress; - /* 0x3C */ u32 bannerOffset; - /* 0x40 */ u32 bannerPalOffset; - /* 0x44 */ u32 iconOffset[8]; - /* 0x64 */ u32 iconPalOffset; - /* 0x68 */ u32 dataOffset; -}; // Size: 0x6C - -typedef void (*CARDCallback)(s32 channel, s32 result); - +#ifdef __cplusplus extern "C" { -s32 CARDInit(void); -s32 CARDFreeBlocks(s32 channel, s32* free_bytes, s32* free_files); -s32 CARDCheck(s32 channel); -s32 CARDProbe(s32 channel); -s32 CARDProbeEx(s32 channel, s32* mem_size, s32* sect_size); -s32 CARDMount(s32 channel, void* buffer, CARDCallback callback); -s32 CARDUnmount(s32 channel); -s32 CARDFormat(s32 channel); -s32 CARDOpen(s32 channel, const char* filename, CARDFileInfo* file); -s32 CARDClose(CARDFileInfo* file); -s32 CARDCreate(s32 channel, const char* filename, u32 size, CARDFileInfo* file); -s32 CARDRead(CARDFileInfo* file, void* buffer, u32 size, u32 offset); -s32 CARDWrite(CARDFileInfo* file, void* buffer, u32 size, u32 offset); -s32 CARDGetStatus(s32 channel, s32 fileNo, CARDStat* stat); -s32 CARDSetStatus(s32 channel, s32 fileNo, CARDStat* stat); -s32 CARDGetSerialNo(s32 channel, u32* serial1, u32* serial2); -}; +#endif + +#define CARD_ENCODE_ANSI 0u +#define CARD_ENCODE_SJIS 1u + +/* Sizes */ +#define CARD_WORKAREA_SIZE (5 * 8 * 1024) +#define CARD_READ_SIZE 512 +#define CARD_MAX_FILE 127 +#define CARD_COMMENT_SIZE 64 +#define CARD_FILENAME_MAX 32 +#define CARD_ICON_MAX 8 +#define CARD_ICON_WIDTH 32 +#define CARD_ICON_HEIGHT 32 +#define CARD_BANNER_WIDTH 96 +#define CARD_BANNER_HEIGHT 32 + +/* Icon animation */ +#define CARD_MODE_NORMAL 0 +#define CARD_MODE_FAST 1 + +#define CARDGetBannerFormat(stat) (((stat)->bannerFormat) & CARD_STAT_BANNER_MASK) +#define CARDGetIconAnim(stat) (((stat)->bannerFormat) & CARD_STAT_ANIM_MASK) +#define CARDGetIconFormat(stat, n) (((stat)->iconFormat >> (2 * (n))) & CARD_STAT_ICON_MASK) +#define CARDGetIconSpeed(stat, n) (((stat)->iconSpeed >> (2 * (n))) & CARD_STAT_SPEED_MASK) +#define CARDSetBannerFormat(stat, f) \ + ((stat)->bannerFormat = (u8)(((stat)->bannerFormat & ~CARD_STAT_BANNER_MASK) | (f))) +#define CARDSetIconAnim(stat, f) \ + ((stat)->bannerFormat = (u8)(((stat)->bannerFormat & ~CARD_STAT_ANIM_MASK) | (f))) +#define CARDSetIconFormat(stat, n, f) \ + ((stat)->iconFormat = \ + (u16)(((stat)->iconFormat & ~(CARD_STAT_ICON_MASK << (2 * (n)))) | ((f) << (2 * (n))))) +#define CARDSetIconSpeed(stat, n, f) \ + ((stat)->iconSpeed = \ + (u16)(((stat)->iconSpeed & ~(CARD_STAT_SPEED_MASK << (2 * (n)))) | ((f) << (2 * (n))))) +#define CARDSetIconAddress(stat, addr) ((stat)->iconAddr = (u32)(addr)) +#define CARDSetCommentAddress(stat, addr) ((stat)->commentAddr = (u32)(addr)) +#define CARDGetFileNo(fileInfo) ((fileInfo)->fileNo) + +#define CARD_RESULT_UNLOCKED 1 +#define CARD_RESULT_READY 0 +#define CARD_RESULT_BUSY -1 +#define CARD_RESULT_WRONGDEVICE -2 +#define CARD_RESULT_NOCARD -3 +#define CARD_RESULT_NOFILE -4 +#define CARD_RESULT_IOERROR -5 +#define CARD_RESULT_BROKEN -6 +#define CARD_RESULT_EXIST -7 +#define CARD_RESULT_NOENT -8 +#define CARD_RESULT_INSSPACE -9 +#define CARD_RESULT_NOPERM -10 +#define CARD_RESULT_LIMIT -11 +#define CARD_RESULT_NAMETOOLONG -12 +#define CARD_RESULT_ENCODING -13 +#define CARD_RESULT_CANCELED -14 +#define CARD_RESULT_FATAL_ERROR -128 + +#define CARD_STAT_ICON_NONE 0 +#define CARD_STAT_ICON_C8 1 +#define CARD_STAT_ICON_RGB5A3 2 +#define CARD_STAT_ICON_MASK 3 + +#define CARD_STAT_BANNER_NONE 0 +#define CARD_STAT_BANNER_C8 1 +#define CARD_STAT_BANNER_RGB5A3 2 +#define CARD_STAT_BANNER_MASK 3 + +#define CARD_STAT_ANIM_LOOP 0x00 +#define CARD_STAT_ANIM_BOUNCE 0x04 +#define CARD_STAT_ANIM_MASK 0x04 + +#define CARD_STAT_SPEED_END 0 +#define CARD_STAT_SPEED_FAST 1 +#define CARD_STAT_SPEED_MIDDLE 2 +#define CARD_STAT_SPEED_SLOW 3 +#define CARD_STAT_SPEED_MASK 3 + +#define CARD_ATTR_PUBLIC 0x04u +#define CARD_ATTR_NO_COPY 0x08u +#define CARD_ATTR_NO_MOVE 0x10u +#define CARD_ATTR_GLOBAL 0x20u +#define CARD_ATTR_COMPANY 0x40u + +typedef struct CARDFileInfo { + s32 chan; + s32 fileNo; + + s32 offset; + s32 length; + u16 iBlock; + u16 __padding; +} CARDFileInfo; + +typedef struct CARDStat { + char fileName[CARD_FILENAME_MAX]; + u32 length; + u32 time; // seconds since 01/01/2000 midnight + u8 gameName[4]; + u8 company[2]; + + u8 bannerFormat; + u8 __padding; + u32 iconAddr; // offset to the banner, bannerTlut, icon, iconTlut data set. + u16 iconFormat; + u16 iconSpeed; + u32 commentAddr; // offset to the pair of 32 byte character strings. + + u32 offsetBanner; + u32 offsetBannerTlut; + u32 offsetIcon[CARD_ICON_MAX]; + u32 offsetIconTlut; + u32 offsetData; +} CARDStat; + +typedef void (*CARDCallback)(s32 chan, s32 result); + +/* CARDBios */ +void CARDInit(void); +BOOL CARDGetFastMode(void); +s32 CARDFreeBlocks(s32 chan, s32* byteNotUsed, s32* filesNotUsed); + +/* CARDCheck */ +s32 CARDCheck(s32 chan); +static s32 CARDCheckExAsync(s32 chan, s32* xferBytes, CARDCallback callback); + +/* CARDCreate */ +static s32 CARDCreateAsync(s32 chan, const char* fileName, u32 size, CARDFileInfo* fileInfo, + CARDCallback callback); +s32 CARDCreate(s32 chan, const char* fileName, u32 size, CARDFileInfo* fileInfo); + +/* CARDFormat */ +s32 CARDFormat(s32 chan); + +/* CARDMount */ +s32 CARDProbe(s32 chan); +s32 CARDProbeEx(s32 chan, s32* memSize, s32* sectorSize); +s32 CARDMount(s32 chan, void* workArea, CARDCallback attachCb); +s32 CARDUnmount(s32 chan); +static s32 CARDMountAsync(s32 chan, void* workArea, CARDCallback detachCb, CARDCallback attachCb); + +/* CARDNet */ +s32 CARDGetSerialNo(s32 chan, u64* serialNo); + +/* CARDOpen */ +s32 CARDOpen(s32 chan, const char* fileName, CARDFileInfo* fileInfo); +s32 CARDClose(CARDFileInfo* fileInfo); + +/* CARDRead */ +static s32 CARDReadAsync(CARDFileInfo* fileInfo, void* buf, s32 length, s32 offset, + CARDCallback callback); +s32 CARDRead(CARDFileInfo* fileInfo, void* buf, s32 length, s32 offset); + +/* CARDStat */ +s32 CARDSetStatus(s32 chan, s32 fileNo, CARDStat* stat); +s32 CARDGetStatus(s32 chan, s32 fileNo, CARDStat* stat); +static s32 CARDSetStatusAsync(s32 chan, s32 fileNo, CARDStat* stat, CARDCallback callback); + +/* CARDWrite */ +static s32 CARDWriteAsync(CARDFileInfo* fileInfo, const void* buf, s32 length, s32 offset, + CARDCallback callback); +s32 CARDWrite(CARDFileInfo* fileInfo, const void* buf, s32 length, s32 offset); + +#ifdef __cplusplus +} +#endif #endif /* CARD_H */ diff --git a/include/dolphin/db/db.h b/include/dolphin/db/db.h index cc7cd0a94e7..2d786f48806 100644 --- a/include/dolphin/db/db.h +++ b/include/dolphin/db/db.h @@ -3,4 +3,28 @@ #include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + +#define OS_DBINTERFACE_ADDR 0x00000040 + +typedef struct DBInterface { + /* 0x0 */ u32 bPresent; + /* 0x4 */ u32 exceptionMask; + /* 0x8 */ void (*ExceptionDestination)(void); + /* 0xC */ void* exceptionReturn; +} DBInterface; + +extern DBInterface* __DBInterface; + +void DBInit(void); +void __DBExceptionDestinationAux(void); +void __DBExceptionDestination(void); +void DBPrintf(char* format, ...); + +#ifdef __cplusplus +} +#endif + #endif /* DB_H */ diff --git a/include/dolphin/dsp/dsp.h b/include/dolphin/dsp/dsp.h index 65c00614896..e45c5c11af6 100644 --- a/include/dolphin/dsp/dsp.h +++ b/include/dolphin/dsp/dsp.h @@ -1,7 +1,65 @@ #ifndef DSP_H #define DSP_H -#include "dolphin/types.h" +#include "dolphin/os/OS.h" + +volatile u16 __DSPRegs[32] : 0xCC005000; +volatile u32 __AIRegs[8] : 0xCC006C00; + +#ifdef __cplusplus +extern "C" { +#endif + +#define DSP_TASK_FLAG_CLEARALL 0x00000000 +#define DSP_TASK_FLAG_ATTACHED 0x00000001 +#define DSP_TASK_FLAG_CANCEL 0x00000002 + +#define DSP_TASK_STATE_INIT 0 +#define DSP_TASK_STATE_RUN 1 +#define DSP_TASK_STATE_YIELD 2 +#define DSP_TASK_STATE_DONE 3 + +typedef void (*DSPCallback)(void* task); + +typedef struct DSPTaskInfo DSPTaskInfo; + +typedef struct DSPTaskInfo { + /* 0x00 */ vu32 state; + /* 0x04 */ vu32 priority; + /* 0x08 */ vu32 flags; + /* 0x0C */ u16* iram_mmem_addr; + /* 0x10 */ u32 iram_length; + /* 0x14 */ u32 iram_addr; + + /* 0x18 */ u16* dram_mmem_addr; + /* 0x1C */ u32 dram_length; + /* 0x20 */ u32 dram_addr; + + /* 0x24 */ u16 dsp_init_vector; + /* 0x26 */ u16 dsp_resume_vector; + + /* 0x28 */ DSPCallback init_cb; + /* 0x2C */ DSPCallback res_cb; + /* 0x30 */ DSPCallback done_cb; + /* 0x34 */ DSPCallback req_cb; + + /* 0x38 */ struct DSPTaskInfo* next; + /* 0x3C */ struct DSPTaskInfo* prev; + + /* 0x40 */ OSTime t_context; + /* 0x48 */ OSTime t_task; +} DSPTaskInfo; + +u32 DSPCheckMailToDSP(void); +u32 DSPCheckMailFromDSP(void); +u32 DSPReadMailFromDSP(void); +void DSPSendMailToDSP(u32 mail); +void DSPAssertInt(); +void DSPInit(void); + +#ifdef __cplusplus +} +#endif void DSPReleaseHalt2(u32 msg); u16 DSP_CreateMap2(u32 msg); diff --git a/include/dolphin/dsp/dsp_debug.h b/include/dolphin/dsp/dsp_debug.h index 72ec9f7cd88..1939e9412b2 100644 --- a/include/dolphin/dsp/dsp_debug.h +++ b/include/dolphin/dsp/dsp_debug.h @@ -3,4 +3,14 @@ #include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + +void __DSP_debug_printf(const char* fmt, ...); + +#ifdef __cplusplus +} +#endif + #endif /* DSP_DEBUG_H */ diff --git a/include/dolphin/dsp/dsp_task.h b/include/dolphin/dsp/dsp_task.h index 45199d5224f..8b2e88ff7bf 100644 --- a/include/dolphin/dsp/dsp_task.h +++ b/include/dolphin/dsp/dsp_task.h @@ -1,6 +1,11 @@ #ifndef DSP_TASK_H #define DSP_TASK_H -#include "dolphin/types.h" +#include "dolphin/dsp/dsp.h" + +extern DSPTaskInfo* __DSP_tmp_task; +extern DSPTaskInfo* __DSP_last_task; +extern DSPTaskInfo* __DSP_first_task; +extern DSPTaskInfo* __DSP_curr_task; #endif /* DSP_TASK_H */ diff --git a/include/dolphin/dvd/dvd.h b/include/dolphin/dvd/dvd.h index bdf0da3b33f..5253960ac2d 100644 --- a/include/dolphin/dvd/dvd.h +++ b/include/dolphin/dvd/dvd.h @@ -7,6 +7,8 @@ extern "C" { #endif +vu32 __DIRegs[16] : 0xCC006000; + typedef enum DVDState { DVD_STATE_END = 0x0, DVD_STATE_BUSY = 0x1, @@ -23,15 +25,15 @@ typedef enum DVDState { } DVDState; typedef struct DVDDirectory { - u32 entry_number; - u32 location; - u32 next; + /* 0x0 */ u32 entry_number; + /* 0x4 */ u32 location; + /* 0x8 */ u32 next; } DVDDirectory; typedef struct DVDDirectoryEntry { - u32 entry_number; - BOOL is_directory; - char* name; + /* 0x0 */ u32 entry_number; + /* 0x4 */ BOOL is_directory; + /* 0x8 */ char* name; } DVDDirectoryEntry; typedef struct DVDDiskID { @@ -48,57 +50,87 @@ struct DVDFileInfo; struct DVDCommandBlock; typedef void (*DVDCBCallback)(s32 result, struct DVDCommandBlock* block); typedef void (*DVDCallback)(s32 result, struct DVDFileInfo* info); +typedef void (*DVDLowCallback)(u32 intType); typedef struct DVDCommandBlock { - struct DVDCommandBlock* next; - struct DVDCommandBlock* prev; - u32 command; - s32 state; - u32 offset; - u32 length; - void* buffer; - u32 current_transfer_size; - u32 transferred_size; - DVDDiskID* disk_id; - DVDCBCallback callback; - void* user_data; + /* 0x00 */ struct DVDCommandBlock* next; + /* 0x04 */ struct DVDCommandBlock* prev; + /* 0x08 */ u32 command; + /* 0x0C */ s32 state; + /* 0x10 */ u32 offset; + /* 0x14 */ u32 length; + /* 0x18 */ void* buffer; + /* 0x1C */ u32 current_transfer_size; + /* 0x20 */ u32 transferred_size; + /* 0x24 */ DVDDiskID* disk_id; + /* 0x28 */ DVDCBCallback callback; + /* 0x2C */ void* user_data; } DVDCommandBlock; typedef struct DVDFileInfo { - DVDCommandBlock block; - u32 start_address; - u32 length; - DVDCallback callback; + /* 0x00 */ DVDCommandBlock block; + /* 0x30 */ u32 start_address; + /* 0x34 */ u32 length; + /* 0x38 */ DVDCallback callback; } DVDFileInfo; typedef struct DVDDriveInfo { - /* 0x00 */ u16 field_0x0; + /* 0x00 */ u16 revision_level; /* 0x02 */ u16 device_code; - /* 0x04 */ u32 field_0x4; - /* 0x08 */ u32 field_0x8; - /* 0x0C */ u32 field_0xc; - /* 0x10 */ u32 field_0x10; - /* 0x14 */ u32 field_0x14; - /* 0x18 */ u32 field_0x18; - /* 0x1C */ u32 field_0x1c; + /* 0x04 */ u32 release_date; + /* 0x08 */ u8 padding[24]; } DVDDriveInfo; +typedef struct DVDBB1 { + u32 appLoaderLength; + void* appLoaderFunc1; + void* appLoaderFunc2; + void* appLoaderFunc3; +} DVDBB1; + +typedef struct DVDBB2 { + u32 bootFilePosition; + u32 FSTPosition; + u32 FSTLength; + u32 FSTMaxLength; + void* FSTAddress; + u32 userPosition; + u32 userLength; + + u32 padding0; +} DVDBB2; + +typedef void (*DVDOptionalCommandChecker)(DVDCommandBlock* block, void (*cb)(u32 intType)); + void DVDInit(void); BOOL DVDOpen(const char* filename, DVDFileInfo* fileinfo); BOOL DVDClose(DVDFileInfo* fileinfo); BOOL DVDReadPrio(DVDFileInfo* fileinfo, void*, s32, s32, s32); DVDDiskID* DVDGetCurrentDiskID(void); BOOL DVDFastOpen(long, DVDFileInfo* fileinfo); -BOOL DVDGetCommandBlockStatus(DVDCommandBlock*); +s32 DVDGetCommandBlockStatus(const DVDCommandBlock* block); BOOL DVDReadAsyncPrio(DVDFileInfo* fileinfo, void*, long, long, DVDCallback, long); -BOOL DVDConvertPathToEntrynum(const char*); -DVDState DVDGetDriveStatus(void); +int DVDConvertPathToEntrynum(const char*); +s32 DVDGetDriveStatus(void); BOOL DVDCheckDisk(void); - BOOL DVDChangeDir(const char* dirname); BOOL DVDCloseDir(DVDDirectory* dir); BOOL DVDOpenDir(const char*, DVDDirectory* dir); BOOL DVDReadDir(DVDDirectory* dir, DVDDirectoryEntry* entry); +BOOL DVDReadAbsAsyncPrio(DVDCommandBlock* block, void* addr, s32 length, s32 offset, + DVDCBCallback callback, s32 prio); +BOOL DVDReadAbsAsyncForBS(DVDCommandBlock* block, void* addr, s32 length, s32 offset, + DVDCBCallback callback); +BOOL DVDReadDiskID(DVDCommandBlock* block, DVDDiskID* diskID, DVDCBCallback callback); +BOOL DVDCancelStreamAsync(DVDCommandBlock* block, DVDCBCallback callback); +BOOL DVDInquiryAsync(DVDCommandBlock* block, DVDDriveInfo* info, DVDCBCallback callback); +void DVDReset(void); +BOOL DVDSetAutoInvalidation(BOOL autoInval); +void DVDResume(void); +static BOOL DVDCancelAsync(DVDCommandBlock* block, DVDCBCallback callback); +s32 DVDCancel(DVDCommandBlock* block); + +BOOL DVDCompareDiskID(DVDDiskID* id1, DVDDiskID* id2); #ifdef __cplusplus }; diff --git a/include/dolphin/exi/EXIBios.h b/include/dolphin/exi/EXIBios.h new file mode 100644 index 00000000000..5e842a27742 --- /dev/null +++ b/include/dolphin/exi/EXIBios.h @@ -0,0 +1,64 @@ +#ifndef EXIBIOS_H +#define EXIBIOS_H + +#include "dolphin/os/OS.h" + +#ifdef __cplusplus +extern "C" { +#endif + +vu32 __EXIRegs[16] : 0xCC006800; + +#define EXI_READ 0 +#define EXI_WRITE 1 + +#define EXI_STATE_IDLE 0x00 +#define EXI_STATE_DMA 0x01 +#define EXI_STATE_IMM 0x02 +#define EXI_STATE_BUSY (EXI_STATE_DMA | EXI_STATE_IMM) +#define EXI_STATE_SELECTED 0x04 +#define EXI_STATE_ATTACHED 0x08 +#define EXI_STATE_LOCKED 0x10 + +typedef void (*EXICallback)(s32 chan, OSContext* context); + +typedef struct EXIControl { + EXICallback exiCallback; + EXICallback tcCallback; + EXICallback extCallback; + vu32 state; + int immLen; + u8* immBuf; + u32 dev; + u32 id; + s32 idTime; + int items; + struct { + u32 dev; + EXICallback callback; + } queue[3]; +} EXIControl; + +s32 EXIImm(s32 chan, void* buf, s32 len, u32 type, EXICallback callback); +s32 EXIImmEx(s32 chan, void* buf, s32 len, u32 mode); +BOOL EXIDma(s32 chan, void* buf, s32 len, u32 type, EXICallback callback); +BOOL EXISync(s32 chan); +EXICallback EXISetExiCallback(s32 chan, EXICallback exiCallback); +BOOL EXIProbe(s32 chan); +s32 EXIProbeEx(s32 chan); +BOOL EXIAttach(s32 chan, EXICallback extCallback); +BOOL EXIDetach(s32 chan); +BOOL EXISelect(s32 chan, u32 dev, u32 freq); +BOOL EXIDeselect(s32 chan); +void EXIInit(void); +BOOL EXILock(s32 chan, u32 dev, EXICallback unlockedCallback); +BOOL EXIUnlock(s32 chan); +u32 EXIGetState(s32 chan); +static void UnlockedHandler(s32 chan, OSContext* context); +s32 EXIGetID(s32 chan, u32 dev, u32* id); + +#ifdef __cplusplus +}; +#endif + +#endif /* EXIBIOS_H */ diff --git a/include/exi/EXIUart.h b/include/dolphin/exi/EXIUart.h similarity index 100% rename from include/exi/EXIUart.h rename to include/dolphin/exi/EXIUart.h diff --git a/include/dolphin/os/OS.h b/include/dolphin/os/OS.h index 11b60643e2c..2d91a6ad0c0 100644 --- a/include/dolphin/os/OS.h +++ b/include/dolphin/os/OS.h @@ -30,14 +30,54 @@ extern "C" { #endif +// Upper words of the masks, since UIMM is only 16 bits +#define OS_CACHED_REGION_PREFIX 0x8000 +#define OS_UNCACHED_REGION_PREFIX 0xC000 +#define OS_PHYSICAL_MASK 0x3FFF + +#define OS_BASE_CACHED (OS_CACHED_REGION_PREFIX << 16) +#define OS_BASE_UNCACHED (OS_UNCACHED_REGION_PREFIX << 16) + #define OS_BUS_CLOCK (*(u32*)0x800000F8) #define OS_CORE_CLOCK (*(u32*)0x800000FC) #define OS_TIMER_CLOCK (OS_BUS_CLOCK / 4) #define OS_TIMER_CLOCK_MS (OS_TIMER_CLOCK / 1000) +#define OSTicksToCycles(ticks) (((ticks) * ((OS_CORE_CLOCK * 2) / OS_TIMER_CLOCK)) / 2) +#define OSTicksToSeconds(ticks) ((ticks) / OS_TIMER_CLOCK) +#define OSTicksToMilliseconds(ticks) ((ticks) / (OS_TIMER_CLOCK / 1000)) +#define OSTicksToMicroseconds(ticks) (((ticks)*8) / (OS_TIMER_CLOCK / 125000)) +#define OSTicksToNanoseconds(ticks) (((ticks)*8000) / (OS_TIMER_CLOCK / 125000)) +#define OSSecondsToTicks(sec) ((sec)*OS_TIMER_CLOCK) +#define OSMillisecondsToTicks(msec) ((msec) * (OS_TIMER_CLOCK / 1000)) +#define OSMicrosecondsToTicks(usec) (((usec) * (OS_TIMER_CLOCK / 125000)) / 8) +#define OSNanosecondsToTicks(nsec) (((nsec) * (OS_TIMER_CLOCK / 125000)) / 8000) + #define OS_MESSAGE_NON_BLOCKING 0 #define OS_MESSAGE_BLOCKING 1 +#define OS_CONSOLE_MASK 0xf0000000 +#define OS_CONSOLE_RETAIL 0x00000000 +#define OS_CONSOLE_DEVELOPMENT 0x10000000 +#define OS_CONSOLE_TDEV 0x20000000 + +#define OS_CONSOLE_RETAIL4 0x00000004 +#define OS_CONSOLE_RETAIL3 0x00000003 +#define OS_CONSOLE_RETAIL2 0x00000002 +#define OS_CONSOLE_RETAIL1 0x00000001 +#define OS_CONSOLE_TDEVHW4 0x20000007 +#define OS_CONSOLE_TDEVHW3 0x20000006 +#define OS_CONSOLE_TDEVHW2 0x20000005 +#define OS_CONSOLE_TDEVHW1 0x20000004 +#define OS_CONSOLE_DEVHW4 0x10000007 +#define OS_CONSOLE_DEVHW3 0x10000006 +#define OS_CONSOLE_DEVHW2 0x10000005 +#define OS_CONSOLE_DEVHW1 0x10000004 +#define OS_CONSOLE_MINNOW 0x10000003 +#define OS_CONSOLE_ARTHUR 0x10000002 +#define OS_CONSOLE_PC_EMULATOR 0x10000001 +#define OS_CONSOLE_EMULATOR 0x10000000 + volatile u16 __OSDeviceCode : 0x800030E6; volatile u32 OS_PI_INTR_CAUSE : 0xCC003000; @@ -81,7 +121,7 @@ static void OSExceptionInit(void); void __OSDBIntegrator(void); void __OSDBJump(void); -typedef void (*OSExceptionHandler)(OSException, OSContext*); +typedef void (*OSExceptionHandler)(__OSException, OSContext*); OSExceptionHandler __OSSetExceptionHandler(__OSException exception, OSExceptionHandler handler); OSExceptionHandler __OSGetExceptionHandler(__OSException exception); static void OSExceptionVector(void); @@ -90,7 +130,7 @@ void __OSEVSetNumber(); void __OSEVEnd(); static void OSDefaultExceptionHandler(__OSException exception, OSContext* context); void __OSPSInit(void); -void __OSGetDIConfig(void); +u32 __OSGetDIConfig(void); void OSRegisterVersion(char* version); void OSSwitchFiberEx(u32, u32, u32, u32, u32, u32); @@ -161,6 +201,28 @@ typedef struct OSBootInfo { /* 0x3C */ u32 fst_max_length; } OSBootInfo; +typedef struct { + BOOL valid; + u32 restartCode; + u32 bootDol; + void* regionStart; + void* regionEnd; + BOOL argsUseDefault; + void* argsAddr; // valid only when argsUseDefault = FALSE +} OSExecParams; + +typedef struct BI2Debug { + /* 0x00 */ s32 debugMonSize; + /* 0x04 */ s32 simMemSize; + /* 0x08 */ u32 argOffset; + /* 0x0C */ u32 debugFlag; + /* 0x10 */ int trackLocation; + /* 0x14 */ int trackSize; + /* 0x18 */ u32 countryCode; + /* 0x1C */ u8 unk[8]; + /* 0x24 */ u32 padSpec; +} BI2Debug; + struct GLOBAL_MEMORY { DVDDiskID disk; u32 nintendo_boot_code; /* Nintendo Standard Boot Code. */ @@ -245,10 +307,14 @@ struct GLOBAL_MEMORY { #define OS_ASSERT(...) -inline void* OSPhysicalToCached(u32 offset) { - OS_ASSERT(offset <= 0x1fffffff); - return (void*)(offset + 0x80000000); -} +#define OSPhysicalToCached(paddr) ((void*)((u32)(paddr) + OS_BASE_CACHED)) +#define OSPhysicalToUncached(paddr) ((void*)((u32)(paddr) + OS_BASE_UNCACHED)) +#define OSCachedToPhysical(caddr) ((u32)((u8*)(caddr)-OS_BASE_CACHED)) +#define OSUncachedToPhysical(ucaddr) ((u32)((u8*)(ucaddr)-OS_BASE_UNCACHED)) +#define OSCachedToUncached(caddr) ((void*)((u8*)(caddr) + (OS_BASE_UNCACHED - OS_BASE_CACHED))) +#define OSUncachedToCached(ucaddr) ((void*)((u8*)(ucaddr) - (OS_BASE_UNCACHED - OS_BASE_CACHED))) + +extern OSTime __OSStartTime; #ifdef __cplusplus }; diff --git a/include/dolphin/os/OSAlarm.h b/include/dolphin/os/OSAlarm.h index 56cf7975def..f628e20da8e 100644 --- a/include/dolphin/os/OSAlarm.h +++ b/include/dolphin/os/OSAlarm.h @@ -25,15 +25,19 @@ typedef struct OSAlarm { /* 0x20 */ OSTime start_time; } OSAlarm; // Size: 0x28 +typedef struct OSAlarmQueue { + OSAlarm* head; + OSAlarm* tail; +} OSAlarmQueue; + void OSInitAlarm(void); void OSCreateAlarm(OSAlarm* alarm); -static void InsertAlarm(OSAlarm* alarm, s64 time, OSAlarmHandler* handler); -void OSSetAlarm(OSAlarm* alarm, s64 time, OSAlarmHandler* handler); -void OSSetPeriodicAlarm(OSAlarm* alarm, s64 start, s64 period, OSAlarmHandler* handler); +static void InsertAlarm(OSAlarm* alarm, s64 time, OSAlarmHandler handler); +void OSSetAlarm(OSAlarm* alarm, s64 time, OSAlarmHandler handler); +void OSSetPeriodicAlarm(OSAlarm* alarm, s64 start, s64 period, OSAlarmHandler handler); void OSCancelAlarm(OSAlarm* alarm); static void DecrementerExceptionCallback(__OSException exception, OSContext* context); static void DecrementerExceptionHandler(__OSException exception, OSContext* context); -static s32 OnReset(s32 param_0); #ifdef __cplusplus }; diff --git a/include/dolphin/os/OSAlloc.h b/include/dolphin/os/OSAlloc.h index 5a5ff4c3f59..7a74b1e4bcf 100644 --- a/include/dolphin/os/OSAlloc.h +++ b/include/dolphin/os/OSAlloc.h @@ -26,6 +26,8 @@ typedef u32 OSHeapHandle; extern volatile s32 __OSCurrHeap; +#define OSRoundUp32B(v) (((u32)(v + 31) & ~31)) + #define OSRoundUp(x, align) (((x) + (align)-1) & (-(align))) #define OSRoundUpPtr(x, align) ((void*)((((u32)(x)) + (align)-1) & (~((align)-1)))) diff --git a/include/dolphin/os/OSContext.h b/include/dolphin/os/OSContext.h index 7a22d6b231b..78562a353de 100644 --- a/include/dolphin/os/OSContext.h +++ b/include/dolphin/os/OSContext.h @@ -7,6 +7,133 @@ extern "C" { #endif +#define __OS_CONTEXT_FRAME 768 + +#define OS_CONTEXT_R0 0 +#define OS_CONTEXT_R1 4 +#define OS_CONTEXT_R2 8 +#define OS_CONTEXT_R3 12 +#define OS_CONTEXT_R4 16 +#define OS_CONTEXT_R5 20 +#define OS_CONTEXT_R6 24 +#define OS_CONTEXT_R7 28 +#define OS_CONTEXT_R8 32 +#define OS_CONTEXT_R9 36 +#define OS_CONTEXT_R10 40 +#define OS_CONTEXT_R11 44 +#define OS_CONTEXT_R12 48 +#define OS_CONTEXT_R13 52 +#define OS_CONTEXT_R14 56 +#define OS_CONTEXT_R15 60 +#define OS_CONTEXT_R16 64 +#define OS_CONTEXT_R17 68 +#define OS_CONTEXT_R18 72 +#define OS_CONTEXT_R19 76 +#define OS_CONTEXT_R20 80 +#define OS_CONTEXT_R21 84 +#define OS_CONTEXT_R22 88 +#define OS_CONTEXT_R23 92 +#define OS_CONTEXT_R24 96 +#define OS_CONTEXT_R25 100 +#define OS_CONTEXT_R26 104 +#define OS_CONTEXT_R27 108 +#define OS_CONTEXT_R28 112 +#define OS_CONTEXT_R29 116 +#define OS_CONTEXT_R30 120 +#define OS_CONTEXT_R31 124 + +#define OS_CONTEXT_CR 128 +#define OS_CONTEXT_LR 132 +#define OS_CONTEXT_CTR 136 +#define OS_CONTEXT_XER 140 + +#define OS_CONTEXT_FPR0 144 +#define OS_CONTEXT_FPR1 152 +#define OS_CONTEXT_FPR2 160 +#define OS_CONTEXT_FPR3 168 +#define OS_CONTEXT_FPR4 176 +#define OS_CONTEXT_FPR5 184 +#define OS_CONTEXT_FPR6 192 +#define OS_CONTEXT_FPR7 200 +#define OS_CONTEXT_FPR8 208 +#define OS_CONTEXT_FPR9 216 +#define OS_CONTEXT_FPR10 224 +#define OS_CONTEXT_FPR11 232 +#define OS_CONTEXT_FPR12 240 +#define OS_CONTEXT_FPR13 248 +#define OS_CONTEXT_FPR14 256 +#define OS_CONTEXT_FPR15 264 +#define OS_CONTEXT_FPR16 272 +#define OS_CONTEXT_FPR17 280 +#define OS_CONTEXT_FPR18 288 +#define OS_CONTEXT_FPR19 296 +#define OS_CONTEXT_FPR20 304 +#define OS_CONTEXT_FPR21 312 +#define OS_CONTEXT_FPR22 320 +#define OS_CONTEXT_FPR23 328 +#define OS_CONTEXT_FPR24 336 +#define OS_CONTEXT_FPR25 344 +#define OS_CONTEXT_FPR26 352 +#define OS_CONTEXT_FPR27 360 +#define OS_CONTEXT_FPR28 368 +#define OS_CONTEXT_FPR29 376 +#define OS_CONTEXT_FPR30 384 +#define OS_CONTEXT_FPR31 392 + +#define OS_CONTEXT_FPSCR 400 + +#define OS_CONTEXT_SRR0 408 +#define OS_CONTEXT_SRR1 412 + +#define OS_CONTEXT_MODE 416 +#define OS_CONTEXT_STATE 418 + +#define OS_CONTEXT_GQR0 420 +#define OS_CONTEXT_GQR1 424 +#define OS_CONTEXT_GQR2 428 +#define OS_CONTEXT_GQR3 432 +#define OS_CONTEXT_GQR4 436 +#define OS_CONTEXT_GQR5 440 +#define OS_CONTEXT_GQR6 444 +#define OS_CONTEXT_GQR7 448 +#define __OSCONTEXT_PADDING 452 + +#define OS_CONTEXT_PSF0 456 +#define OS_CONTEXT_PSF1 464 +#define OS_CONTEXT_PSF2 472 +#define OS_CONTEXT_PSF3 480 +#define OS_CONTEXT_PSF4 488 +#define OS_CONTEXT_PSF5 496 +#define OS_CONTEXT_PSF6 504 +#define OS_CONTEXT_PSF7 512 +#define OS_CONTEXT_PSF8 520 +#define OS_CONTEXT_PSF9 528 +#define OS_CONTEXT_PSF10 536 +#define OS_CONTEXT_PSF11 544 +#define OS_CONTEXT_PSF12 552 +#define OS_CONTEXT_PSF13 560 +#define OS_CONTEXT_PSF14 568 +#define OS_CONTEXT_PSF15 576 +#define OS_CONTEXT_PSF16 584 +#define OS_CONTEXT_PSF17 592 +#define OS_CONTEXT_PSF18 600 +#define OS_CONTEXT_PSF19 608 +#define OS_CONTEXT_PSF20 616 +#define OS_CONTEXT_PSF21 624 +#define OS_CONTEXT_PSF22 632 +#define OS_CONTEXT_PSF23 640 +#define OS_CONTEXT_PSF24 648 +#define OS_CONTEXT_PSF25 656 +#define OS_CONTEXT_PSF26 664 +#define OS_CONTEXT_PSF27 672 +#define OS_CONTEXT_PSF28 680 +#define OS_CONTEXT_PSF29 688 +#define OS_CONTEXT_PSF30 696 +#define OS_CONTEXT_PSF31 704 +#define OS_CONTEXT_STATE_EXC 0x02u + +#define OS_CONTEXT_STATE_FPSAVED 0x01u + typedef struct OSContext { /* 0x000 */ u32 gpr[32]; /* 0x080 */ u32 cr; @@ -32,7 +159,7 @@ void __OSSaveFPUContext(s32 unused0, s32 unused1, OSContext* context); void OSSaveFPUContext(OSContext* context); void OSSetCurrentContext(OSContext* context); OSContext* OSGetCurrentContext(void); -void OSSaveContext(OSContext* context); +u32 OSSaveContext(OSContext* context); void OSLoadContext(OSContext* context); void OSClearContext(OSContext* context); void OSInitContext(OSContext* context, u32 pc, u32 lr); diff --git a/include/dolphin/os/OSError.h b/include/dolphin/os/OSError.h index 6f5b41f57d1..ec07c81632f 100644 --- a/include/dolphin/os/OSError.h +++ b/include/dolphin/os/OSError.h @@ -53,7 +53,7 @@ typedef u8 __OSException; typedef void (*OSErrorHandler)(OSError error, OSContext* context, u32, u32); OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler); -void __OSUnhandledException(OSException exception, OSContext* context, u32 dsisr, u32 dar); +void __OSUnhandledException(__OSException exception, OSContext* context, u32 dsisr, u32 dar); #ifdef __cplusplus }; diff --git a/include/dolphin/os/OSInterrupt.h b/include/dolphin/os/OSInterrupt.h index ac5ccf97796..7654dfd4312 100644 --- a/include/dolphin/os/OSInterrupt.h +++ b/include/dolphin/os/OSInterrupt.h @@ -44,6 +44,64 @@ typedef enum { OS_INTR_MAX } OSInterruptType; +#define OS_INTERRUPTMASK(interrupt) (0x80000000u >> (interrupt)) + +#define OS_INTERRUPTMASK_MEM_0 OS_INTERRUPTMASK(OS_INTR_MEM_0) +#define OS_INTERRUPTMASK_MEM_1 OS_INTERRUPTMASK(OS_INTR_MEM_1) +#define OS_INTERRUPTMASK_MEM_2 OS_INTERRUPTMASK(OS_INTR_MEM_2) +#define OS_INTERRUPTMASK_MEM_3 OS_INTERRUPTMASK(OS_INTR_MEM_3) +#define OS_INTERRUPTMASK_MEM_ADDRESS OS_INTERRUPTMASK(OS_INTR_MEM_ADDRESS) +#define OS_INTERRUPTMASK_MEM \ + (OS_INTERRUPTMASK_MEM_0 | OS_INTERRUPTMASK_MEM_1 | OS_INTERRUPTMASK_MEM_2 | \ + OS_INTERRUPTMASK_MEM_3 | OS_INTERRUPTMASK_MEM_ADDRESS) + +#define OS_INTERRUPTMASK_DSP_AI OS_INTERRUPTMASK(OS_INTR_DSP_AI) +#define OS_INTERRUPTMASK_DSP_ARAM OS_INTERRUPTMASK(OS_INTR_DSP_ARAM) +#define OS_INTERRUPTMASK_DSP_DSP OS_INTERRUPTMASK(OS_INTR_DSP_DSP) +#define OS_INTERRUPTMASK_DSP \ + (OS_INTERRUPTMASK_DSP_AI | OS_INTERRUPTMASK_DSP_ARAM | OS_INTERRUPTMASK_DSP_DSP) + +#define OS_INTERRUPTMASK_AI_AI OS_INTERRUPTMASK(OS_INTR_AI_AI) +#define OS_INTERRUPTMASK_AI (OS_INTERRUPTMASK_AI_AI) + +#define OS_INTERRUPTMASK_EXI_0_EXI OS_INTERRUPTMASK(OS_INTR_EXI_0_EXI) +#define OS_INTERRUPTMASK_EXI_0_TC OS_INTERRUPTMASK(OS_INTR_EXI_0_TC) +#define OS_INTERRUPTMASK_EXI_0_EXT OS_INTERRUPTMASK(OS_INTR_EXI_0_EXT) +#define OS_INTERRUPTMASK_EXI_0 \ + (OS_INTERRUPTMASK_EXI_0_EXI | OS_INTERRUPTMASK_EXI_0_TC | OS_INTERRUPTMASK_EXI_0_EXT) + +#define OS_INTERRUPTMASK_EXI_1_EXI OS_INTERRUPTMASK(OS_INTR_EXI_1_EXI) +#define OS_INTERRUPTMASK_EXI_1_TC OS_INTERRUPTMASK(OS_INTR_EXI_1_TC) +#define OS_INTERRUPTMASK_EXI_1_EXT OS_INTERRUPTMASK(OS_INTR_EXI_1_EXT) +#define OS_INTERRUPTMASK_EXI_1 \ + (OS_INTERRUPTMASK_EXI_1_EXI | OS_INTERRUPTMASK_EXI_1_TC | OS_INTERRUPTMASK_EXI_1_EXT) + +#define OS_INTERRUPTMASK_EXI_2_EXI OS_INTERRUPTMASK(OS_INTR_EXI_2_EXI) +#define OS_INTERRUPTMASK_EXI_2_TC OS_INTERRUPTMASK(OS_INTR_EXI_2_TC) +#define OS_INTERRUPTMASK_EXI_2 (OS_INTERRUPTMASK_EXI_2_EXI | OS_INTERRUPTMASK_EXI_2_TC) +#define OS_INTERRUPTMASK_EXI \ + (OS_INTERRUPTMASK_EXI_0_EXI | OS_INTERRUPTMASK_EXI_0_TC | OS_INTERRUPTMASK_EXI_0_EXT | \ + OS_INTERRUPTMASK_EXI_1_EXI | OS_INTERRUPTMASK_EXI_1_TC | OS_INTERRUPTMASK_EXI_1_EXT | \ + OS_INTERRUPTMASK_EXI_2_EXI | OS_INTERRUPTMASK_EXI_2_TC) + +#define OS_INTERRUPTMASK_PI_PE_TOKEN OS_INTERRUPTMASK(OS_INTR_PI_PE_TOKEN) +#define OS_INTERRUPTMASK_PI_PE_FINISH OS_INTERRUPTMASK(OS_INTR_PI_PE_FINISH) +#define OS_INTERRUPTMASK_PI_PE (OS_INTERRUPTMASK_PI_PE_TOKEN | OS_INTERRUPTMASK_PI_PE_FINISH) + +#define OS_INTERRUPTMASK_PI_CP OS_INTERRUPTMASK(OS_INTR_PI_CP) +#define OS_INTERRUPTMASK_PI_SI OS_INTERRUPTMASK(OS_INTR_PI_SI) +#define OS_INTERRUPTMASK_PI_DI OS_INTERRUPTMASK(OS_INTR_PI_DI) +#define OS_INTERRUPTMASK_PI_RSW OS_INTERRUPTMASK(OS_INTR_PI_RSW) +#define OS_INTERRUPTMASK_PI_ERROR OS_INTERRUPTMASK(OS_INTR_PI_ERROR) +#define OS_INTERRUPTMASK_PI_VI OS_INTERRUPTMASK(OS_INTR_PI_VI) +#define OS_INTERRUPTMASK_PI_DEBUG OS_INTERRUPTMASK(OS_INTR_PI_DEBUG) +#define OS_INTERRUPTMASK_PI_HSP OS_INTERRUPTMASK(OS_INTR_PI_HSP) +#define OS_INTERRUPTMASK_PI \ + (OS_INTERRUPTMASK_PI_CP | OS_INTERRUPTMASK_PI_SI | OS_INTERRUPTMASK_PI_DI | \ + OS_INTERRUPTMASK_PI_RSW | OS_INTERRUPTMASK_PI_ERROR | OS_INTERRUPTMASK_PI_VI | \ + OS_INTERRUPTMASK_PI_PE_TOKEN | OS_INTERRUPTMASK_PI_PE_FINISH | OS_INTERRUPTMASK_PI_DEBUG | \ + OS_INTERRUPTMASK_PI_HSP) + typedef s16 OSInterrupt; typedef u32 OSInterruptMask; typedef void (*OSInterruptHandler)(OSInterrupt interrupt, OSContext* context); @@ -58,7 +116,7 @@ void __OSInterruptInit(void); static OSInterruptMask SetInterruptMask(OSInterruptMask param_0, OSInterruptMask param_1); OSInterruptMask __OSMaskInterrupts(OSInterruptMask mask); OSInterruptMask __OSUnmaskInterrupts(OSInterruptMask mask); -void __OSDispatchInterrupt(OSInterrupt interrupt, OSContext* context); +void __OSDispatchInterrupt(u8 interrupt, OSContext* context); static void ExternalInterruptHandler(OSInterrupt interrupt, OSContext* context); void __RAS_OSDisableInterrupts_begin(void); diff --git a/include/dolphin/os/OSMemory.h b/include/dolphin/os/OSMemory.h index 7a1be5185c8..92c5da07aed 100644 --- a/include/dolphin/os/OSMemory.h +++ b/include/dolphin/os/OSMemory.h @@ -8,12 +8,21 @@ extern "C" { #endif -static s32 OnReset(s32 param_0); +#define OS_PROTECT_CHAN0 0 +#define OS_PROTECT_CHAN1 1 +#define OS_PROTECT_CHAN2 2 +#define OS_PROTECT_CHAN3 3 + +#define OS_PROTECT_CONTROL_NONE 0x00 +#define OS_PROTECT_CONTROL_READ 0x01 +#define OS_PROTECT_CONTROL_WRITE 0x02 +#define OS_PROTECT_CONTROL_RDWR (OS_PROTECT_CONTROL_READ | OS_PROTECT_CONTROL_WRITE) + static void MEMIntrruptHandler(OSInterrupt interrupt, struct OSContext* context); void OSProtectRange(u32 channel, void* address, u32 nBytes, u32 control); static void Config24MB(void); static void Config48MB(void); -static void RealMode(void* config); +static void RealMode(u32 config); void __OSInitMemoryProtection(void); #ifdef __cplusplus diff --git a/include/dolphin/os/OSMessage.h b/include/dolphin/os/OSMessage.h index d4ab6b36013..a6447ec9ce3 100644 --- a/include/dolphin/os/OSMessage.h +++ b/include/dolphin/os/OSMessage.h @@ -18,6 +18,10 @@ typedef struct OSMessageQueue { /* 0x1C */ s32 num_used; } OSMessageQueue; +// Flags to turn blocking on/off when sending/receiving message +#define OS_MESSAGE_NOBLOCK 0 +#define OS_MESSAGE_BLOCK 1 + void OSInitMessageQueue(OSMessageQueue* queue, OSMessage* msgArray, s32 msgCount); BOOL OSSendMessage(OSMessageQueue* queue, OSMessage msg, s32 flags); BOOL OSReceiveMessage(OSMessageQueue* queue, OSMessage* msg, s32 flags); diff --git a/include/dolphin/os/OSMutex.h b/include/dolphin/os/OSMutex.h index a3815e294a2..7e42c91bc4e 100644 --- a/include/dolphin/os/OSMutex.h +++ b/include/dolphin/os/OSMutex.h @@ -14,14 +14,19 @@ typedef struct OSMutex { /* 0x10 */ OSMutexLink link; } OSMutex; // Size: 0x18 +typedef struct OSCond { + OSThreadQueue queue; +} OSCond; + void OSInitMutex(OSMutex* mutex); void OSLockMutex(OSMutex* mutex); void OSUnlockMutex(OSMutex* mutex); -void __OSUnlockAllMutex(OSThread* thread); s32 OSTryLockMutex(OSMutex* mutex); void OSInitCond(OSCond* cond); void OSWaitCond(OSCond* cond, OSMutex* mutex); void OSSignalCond(OSCond* cond); + +void __OSUnlockAllMutex(OSThread* thread); s32 __OSCheckMutex(OSThread* thread); BOOL __OSCheckDeadLock(OSThread* thread); BOOL __OSCheckMutexes(OSThread* thread); diff --git a/include/dolphin/os/OSReset.h b/include/dolphin/os/OSReset.h index 49281240521..c642db18352 100644 --- a/include/dolphin/os/OSReset.h +++ b/include/dolphin/os/OSReset.h @@ -7,6 +7,25 @@ extern "C" { #endif +#define OS_RESETCODE_RESTART 0x80000000 +#define OS_RESETCODE_SYSTEM 0x40000000 + +#define OS_RESETCODE_EXEC 0xC0000000 +#define OS_RESETCODE_NETCONFIG 0xC0010000 + +#define OS_RESET_TIMEOUT OSMillisecondsToTicks(1000) + +#define OS_RESET_RESTART 0 +#define OS_RESET_HOTRESET 1 +#define OS_RESET_SHUTDOWN 2 + +#define OS_RESET_PRIO_SO 110 +#define OS_RESET_PRIO_IP 111 +#define OS_RESET_PRIO_CARD 127 +#define OS_RESET_PRIO_PAD 127 +#define OS_RESET_PRIO_GX 127 +#define OS_RESET_PRIO_ALARM 4294967295 + typedef s32 (*OSResetFunction)(s32); typedef struct OSResetFunctionInfo { @@ -16,12 +35,17 @@ typedef struct OSResetFunctionInfo { /* 0xC */ struct OSResetFunctionInfo* prev; } OSResetFunctionInfo; +typedef struct OSResetQueue { + OSResetFunctionInfo* first; + OSResetFunctionInfo* last; +} OSResetQueue; + void OSRegisterResetFunction(OSResetFunctionInfo* info); -BOOL __OSCallResetFunctions(s32 param_0); +BOOL __OSCallResetFunctions(u32 param_0); static void Reset(s32 param_0); static void KillThreads(void); void __OSDoHotReset(s32 param_0); -void OSResetSystem(s32 reset, u32 resetCode, BOOL forceMenu); +void OSResetSystem(int reset, u32 resetCode, BOOL forceMenu); u32 OSGetResetCode(void); #ifdef __cplusplus diff --git a/include/dolphin/os/OSResetSW.h b/include/dolphin/os/OSResetSW.h index 9cacab0c8f7..4ac78009a5f 100644 --- a/include/dolphin/os/OSResetSW.h +++ b/include/dolphin/os/OSResetSW.h @@ -7,7 +7,8 @@ extern "C" { #endif -void __OSResetSWInterruptHandler(void); +typedef void (*OSResetCallback)(void); + static BOOL OSGetResetButtonState(void); BOOL OSGetResetSwitchState(void); diff --git a/include/dolphin/os/OSRtc.h b/include/dolphin/os/OSRtc.h index a3c04a1ac37..e19f09155a2 100644 --- a/include/dolphin/os/OSRtc.h +++ b/include/dolphin/os/OSRtc.h @@ -7,26 +7,65 @@ extern "C" { #endif -typedef enum OSSoundMode { - /* 0x0 */ SOUND_MODE_MONO, - /* 0x1 */ SOUND_MODE_STEREO, -} OSSoundMode; +typedef u32 OSSoundMode; + +#define OS_SOUND_MODE_MONO 0 +#define OS_SOUND_MODE_STEREO 1 + +#define RTC_CMD_READ 0x20000000 +#define RTC_CMD_WRITE 0xa0000000 + +#define RTC_SRAM_ADDR 0x00000100 +#define RTC_SRAM_SIZE 64 + +#define RTC_CHAN 0 +#define RTC_DEV 1 +#define RTC_FREQ 3 // EXI_FREQ_8M + +typedef struct SramControlBlock { + u8 sram[RTC_SRAM_SIZE]; + u32 offset; + BOOL enabled; + BOOL locked; + BOOL sync; + void (*callback)(void); +} SramControlBlock; + +typedef struct OSSram { + u16 checkSum; + u16 checkSumInv; + u32 ead0; + u32 ead1; + u32 counterBias; + s8 displayOffsetH; + u8 ntd; + u8 language; + u8 flags; +} OSSram; + +typedef struct OSSramEx { + u8 flashID[2][12]; + u32 wirelessKeyboardID; + u16 wirelessPadID[4]; + u8 dvdErrorCode; + u8 _padding0; + u8 flashIDCheckSum[2]; + u16 gbs; + u8 _padding1[2]; +} OSSramEx; -static void WriteSramCallback(void); -static u8 WriteSram(u8* param_0, u32 param_1, u32 param_2); void __OSInitSram(void); -u16* __OSLockSram(void); -u16* __OSLockSramEx(void); -static u32 UnlockSram(s32 param_0, u32 param_1); -u32 __OSUnlockSram(s32 param_0); -u32 __OSUnlockSramEx(s32 param_0); -u32 __OSSyncSram(void); +OSSram* __OSLockSram(void); +OSSramEx* __OSLockSramEx(void); +BOOL __OSUnlockSram(BOOL commit); +BOOL __OSUnlockSramEx(BOOL commit); +BOOL __OSSyncSram(void); u32 OSGetSoundMode(void); void OSSetSoundMode(OSSoundMode mode); u32 OSGetProgressiveMode(void); void OSSetProgressiveMode(u32 mode); -u16 OSGetWirelessID(s32 index); -void OSSetWirelessID(s32 index, u16 id); +u16 OSGetWirelessID(s32 channel); +void OSSetWirelessID(s32 channel, u16 id); static u16 OSGetGbsMode(void); static void OSSetGbsMode(u16 mode); diff --git a/include/dolphin/os/OSThread.h b/include/dolphin/os/OSThread.h index 5b77de94122..40b9e134c19 100644 --- a/include/dolphin/os/OSThread.h +++ b/include/dolphin/os/OSThread.h @@ -8,37 +8,52 @@ extern "C" { #endif typedef u16 OSThreadState; +typedef s32 OSPriority; // 0 highest, 31 lowest + #define OS_THREAD_STATE_UNINITIALIZED 0 #define OS_THREAD_STATE_READY 1 #define OS_THREAD_STATE_RUNNING 2 #define OS_THREAD_STATE_WAITING 4 #define OS_THREAD_STATE_DEAD 8 -typedef struct OSThreadLink { - struct OSThread* prev; - struct OSThread* next; -} OSThreadLink; +#define OS_THREAD_ATTR_DETACH 0x0001u -typedef struct OSThreadQueue { - /* 0x0 */ struct OSThread* head; - /* 0x4 */ struct OSThread* tail; -} OSThreadQueue; +#define OS_THREAD_STACK_MAGIC 0xDEADBABE -typedef struct OSMutexLink { - struct OSMutex* prev; - struct OSMutex* next; -} OSMutexLink; +#define OS_PRIORITY_MIN 0 // highest +#define OS_PRIORITY_MAX 31 // lowest +#define OS_PRIORITY_IDLE OS_PRIORITY_MAX -typedef struct OSMutexQueue { - struct OSMutex* prev; - struct OSMutex* next; -} OSMutexQueue; +typedef struct OSThread OSThread; +typedef struct OSThreadQueue OSThreadQueue; +typedef struct OSThreadLink OSThreadLink; -typedef struct OSCond { - OSThreadQueue queue; -} OSCond; +typedef struct OSMutex OSMutex; +typedef struct OSMutexQueue OSMutexQueue; +typedef struct OSMutexLink OSMutexLink; +typedef struct OSCond OSCond; -typedef struct OSThread { +struct OSThreadLink { + OSThread* next; + OSThread* prev; +}; + +struct OSThreadQueue { + /* 0x0 */ OSThread* head; + /* 0x4 */ OSThread* tail; +}; + +struct OSMutexLink { + OSMutex* prev; + OSMutex* next; +}; + +struct OSMutexQueue { + OSMutex* head; + OSMutex* tail; +}; + +struct OSThread { OSContext context; OSThreadState state; u16 attributes; @@ -49,14 +64,14 @@ typedef struct OSThread { OSThreadQueue* queue; OSThreadLink link; OSThreadQueue join_queue; - struct OSMutex* mutex; + OSMutex* mutex; OSMutexQueue owned_mutexes; OSThreadLink active_threads_link; u8* stack_base; u8* stack_end; u8* error_code; void* data[2]; -} OSThread; +}; typedef void (*OSSwitchThreadCallback)(OSThread* from, OSThread* to); @@ -73,13 +88,13 @@ s32 OSDisableScheduler(void); s32 OSEnableScheduler(void); static void UnsetRun(OSThread* thread); s32 __OSGetEffectivePriority(OSThread* thread); -static void SetEffectivePriority(OSThread* thread, s32 priority); +static OSThread* SetEffectivePriority(OSThread* thread, s32 priority); void __OSPromoteThread(OSThread* thread, s32 priority); -static void SelectThread(OSThread* thread); +static OSThread* SelectThread(BOOL yield); void __OSReschedule(void); void OSYieldThread(void); -BOOL OSCreateThread(OSThread* thread, void* func, void* param, void* stackBase, - u32 stackSize, s32 priority, u16 attribute); +BOOL OSCreateThread(OSThread* thread, void* func, void* param, void* stackBase, u32 stackSize, + s32 priority, u16 attribute); void OSExitThread(void* exitValue); void OSCancelThread(OSThread* thread); void OSDetachThread(OSThread* thread); diff --git a/include/dolphin/os/OSTime.h b/include/dolphin/os/OSTime.h index 38470ad7813..7d67ca5b2c0 100644 --- a/include/dolphin/os/OSTime.h +++ b/include/dolphin/os/OSTime.h @@ -29,7 +29,7 @@ OSTime OSGetTime(void); OSTick OSGetTick(void); OSTime __OSGetSystemTime(void); OSTime __OSTimeToSystemTime(OSTime time); -void GetDates(OSTime ticks, OSCalendarTime* ct); +void GetDates(s32 days, OSCalendarTime* ct); void OSTicksToCalendarTime(OSTime ticks, OSCalendarTime* ct); #ifdef __cplusplus diff --git a/include/dolphin/pad/Pad.h b/include/dolphin/pad/Pad.h index 7cc798cb449..5fc625ff259 100644 --- a/include/dolphin/pad/Pad.h +++ b/include/dolphin/pad/Pad.h @@ -1,7 +1,7 @@ #ifndef PAD_H #define PAD_H -#include "dolphin/types.h" +#include "dolphin/os/OS.h" #ifdef __cplusplus extern "C" { @@ -14,6 +14,36 @@ typedef enum PADMask { PAD_CHAN0_BIT = (1 << 31), } PADMask; +#define PAD_SPEC_0 0 +#define PAD_SPEC_1 1 +#define PAD_SPEC_2 2 +#define PAD_SPEC_3 3 +#define PAD_SPEC_4 4 +#define PAD_SPEC_5 5 + +#define PAD_MOTOR_STOP 0 +#define PAD_MOTOR_RUMBLE 1 +#define PAD_MOTOR_STOP_HARD 2 + +#define PAD_ERR_NONE 0 +#define PAD_ERR_NO_CONTROLLER -1 +#define PAD_ERR_NOT_READY -2 +#define PAD_ERR_TRANSFER -3 + +#define PAD_BUTTON_LEFT 0x0001 +#define PAD_BUTTON_RIGHT 0x0002 +#define PAD_BUTTON_DOWN 0x0004 +#define PAD_BUTTON_UP 0x0008 +#define PAD_TRIGGER_Z 0x0010 +#define PAD_TRIGGER_R 0x0020 +#define PAD_TRIGGER_L 0x0040 +#define PAD_BUTTON_A 0x0100 +#define PAD_BUTTON_B 0x0200 +#define PAD_BUTTON_X 0x0400 +#define PAD_BUTTON_Y 0x0800 +#define PAD_BUTTON_MENU 0x1000 +#define PAD_BUTTON_START 0x1000 + typedef struct PADStatus { /* 0x0 */ u16 button; /* 0x2 */ s8 stick_x; @@ -27,15 +57,22 @@ typedef struct PADStatus { /* 0xA */ s8 error; } PADStatus; -u32 PADInit(void); +typedef void (*PADSamplingCallback)(void); + +BOOL PADInit(void); void PADSetAnalogMode(u32 mode); -void PADSetSpec(int spec); +void PADSetSpec(u32 spec); BOOL PADReset(u32 mask); void PADClampCircle(PADStatus* status); void PADClamp(PADStatus* status); u32 PADRead(PADStatus* status); void PADControlMotor(s32 channel, u32 command); BOOL PADRecalibrate(u32 mask); +static void PADOriginCallback(s32 chan, u32 error, OSContext* context); +static void PADOriginUpdateCallback(s32 chan, u32 error, OSContext* context); +static void PADProbeCallback(s32 chan, u32 error, OSContext* context); +static void PADTypeAndStatusCallback(s32 chan, u32 type); +static void PADReceiveCheckCallback(s32 chan, u32 type); #ifdef __cplusplus }; diff --git a/include/dolphin/pad/Padclamp.h b/include/dolphin/pad/Padclamp.h index d9c5b8b6d4f..4de100a5c5a 100644 --- a/include/dolphin/pad/Padclamp.h +++ b/include/dolphin/pad/Padclamp.h @@ -3,4 +3,28 @@ #include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct PADClampRegion { + u8 minTrigger; + u8 maxTrigger; + s8 minStick; + s8 maxStick; + s8 xyStick; + s8 minSubstick; + s8 maxSubstick; + s8 xySubstick; + s8 radStick; + s8 radSubstick; +} PADClampRegion; + +void PADClamp(PADStatus* status); +void PADClampCircle(PADStatus* status); + +#ifdef __cplusplus +}; +#endif + #endif /* PADCLAMP_H */ diff --git a/include/dolphin/si/SIBios.h b/include/dolphin/si/SIBios.h index d1340a8d206..34f04fc2f67 100644 --- a/include/dolphin/si/SIBios.h +++ b/include/dolphin/si/SIBios.h @@ -1,6 +1,128 @@ #ifndef SIBIOS_H #define SIBIOS_H -#include "dolphin/types.h" +#include "dolphin/os/OS.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define SI_MAX_CHAN 4 +#define SI_MAX_COMCSR_INLNGTH 128 +#define SI_MAX_COMCSR_OUTLNGTH 128 +#define SI_ERROR_UNDER_RUN 0x0001 +#define SI_ERROR_OVER_RUN 0x0002 +#define SI_ERROR_COLLISION 0x0004 +#define SI_ERROR_NO_RESPONSE 0x0008 +#define SI_ERROR_WRST 0x0010 +#define SI_ERROR_RDST 0x0020 +#define SI_ERROR_UNKNOWN 0x0040 +#define SI_ERROR_BUSY 0x0080 +#define SI_CHAN0 0 +#define SI_CHAN1 1 +#define SI_CHAN2 2 +#define SI_CHAN3 3 +#define SI_CHAN0_BIT 0x80000000 +#define SI_CHAN1_BIT 0x40000000 +#define SI_CHAN2_BIT 0x20000000 +#define SI_CHAN3_BIT 0x10000000 +#define SI_CHAN_BIT(chan) (SI_CHAN0_BIT >> (chan)) +#define SI_TYPE_MASK 0x18000000u +#define SI_TYPE_N64 0x00000000u +#define SI_TYPE_DOLPHIN 0x08000000u +#define SI_TYPE_GC SI_TYPE_DOLPHIN +#define SI_GC_WIRELESS 0x80000000 +#define SI_GC_NOMOTOR 0x20000000 +#define SI_GC_STANDARD 0x01000000 +#define SI_WIRELESS_RECEIVED 0x40000000 +#define SI_WIRELESS_IR 0x04000000 +#define SI_WIRELESS_STATE 0x02000000 +#define SI_WIRELESS_ORIGIN 0x00200000 +#define SI_WIRELESS_FIX_ID 0x00100000 +#define SI_WIRELESS_TYPE 0x000f0000 +#define SI_WIRELESS_LITE_MASK 0x000c0000 +#define SI_WIRELESS_LITE 0x00040000 +#define SI_WIRELESS_CONT_MASK 0x00080000 +#define SI_WIRELESS_CONT 0x00000000 +#define SI_WIRELESS_ID 0x00c0ff00 +#define SI_WIRELESS_TYPE_ID (SI_WIRELESS_TYPE | SI_WIRELESS_ID) +#define SI_N64_CONTROLLER (SI_TYPE_N64 | 0x05000000) +#define SI_N64_MIC (SI_TYPE_N64 | 0x00010000) +#define SI_N64_KEYBOARD (SI_TYPE_N64 | 0x00020000) +#define SI_N64_MOUSE (SI_TYPE_N64 | 0x02000000) +#define SI_GBA (SI_TYPE_N64 | 0x00040000) +#define SI_GC_CONTROLLER (SI_TYPE_GC | SI_GC_STANDARD) +#define SI_GC_RECEIVER (SI_TYPE_GC | SI_GC_WIRELESS) +#define SI_GC_WAVEBIRD \ + (SI_TYPE_GC | SI_GC_WIRELESS | SI_GC_STANDARD | SI_WIRELESS_STATE | SI_WIRELESS_FIX_ID) +#define SI_GC_KEYBOARD (SI_TYPE_GC | 0x00200000) +#define SI_GC_STEERING (SI_TYPE_GC | 0x00000000) + +typedef void (*SICallback)(s32 chan, u32 sr, OSContext* context); +typedef void (*SITypeAndStatusCallback)(s32 chan, u32 type); + +typedef struct SIPacket { + s32 chan; + void* output; + u32 outputBytes; + void* input; + u32 inputBytes; + SICallback callback; + OSTime fire; +} SIPacket; + +typedef struct SIControl { + s32 chan; + u32 poll; + u32 inputBytes; + void* input; + SICallback callback; +} SIControl; + +typedef struct SIComm_s { + u32 tcint : 1; + u32 tcintmsk : 1; + u32 comerr : 1; + u32 rdstint : 1; + u32 rdstintmsk : 1; + u32 pad0 : 4; + u32 outlngth : 7; + u32 pad1 : 1; + u32 inlngth : 7; + u32 pad2 : 5; + u32 channel : 2; + u32 tstart : 1; +} SIComm_s; + +typedef union SIComm_u { + u32 val; + SIComm_s f; +} SIComm_u; + +BOOL SIBusy(void); +BOOL SIIsChanBusy(s32 chan); +static void SIInterruptHandler(OSInterrupt interrupt, OSContext* context); +static BOOL SIEnablePollingInterrupt(BOOL enable); +BOOL SIRegisterPollingHandler(OSInterruptHandler handler); +BOOL SIUnregisterPollingHandler(OSInterruptHandler handler); +void SIInit(void); +u32 SIGetStatus(s32 chan); +void SISetCommand(s32 chan, u32 command); +void SITransferCommands(void); +u32 SISetXY(u32 x, u32 y); +u32 SIEnablePolling(u32 poll); +u32 SIDisablePolling(u32 poll); +static BOOL SIGetResponseRaw(s32 chan); +BOOL SIGetResponse(s32 chan, void* data); +BOOL SITransfer(s32 chan, void* output, u32 outputBytes, void* input, u32 inputBytes, + SICallback callback, OSTime delay); +u32 SIGetType(s32 chan); +u32 SIGetTypeAsync(s32 chan, SITypeAndStatusCallback callback); + +vu32 __SIRegs[64] : 0xCC006400; + +#ifdef __cplusplus +} +#endif #endif /* SIBIOS_H */ diff --git a/include/dolphin/si/SISamplingRate.h b/include/dolphin/si/SISamplingRate.h index b5f95d475d9..01aa045fef8 100644 --- a/include/dolphin/si/SISamplingRate.h +++ b/include/dolphin/si/SISamplingRate.h @@ -3,4 +3,20 @@ #include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct XY { + u16 line; + u8 count; +} XY; + +void SISetSamplingRate(u32 msec); +void SIRefreshSamplingRate(void); + +#ifdef __cplusplus +} +#endif + #endif /* SISAMPLINGRATE_H */ diff --git a/include/dolphin/types.h b/include/dolphin/types.h index 072a4dac123..28ccfa4b144 100644 --- a/include/dolphin/types.h +++ b/include/dolphin/types.h @@ -26,12 +26,10 @@ typedef volatile f64 vf64; typedef int BOOL; -typedef unsigned long size_t; - #define TRUE 1 #define FALSE 0 -#define NULL (0) +#include "MSL_C/MSL_Common/Src/stddef.h" #define INT32_MAX (0x7fffffff) #define UINT32_MAX (0xffffffff) diff --git a/include/dolphin/vi/vi.h b/include/dolphin/vi/vi.h index e3eb7c8902a..cf1552d85c1 100644 --- a/include/dolphin/vi/vi.h +++ b/include/dolphin/vi/vi.h @@ -8,6 +8,36 @@ extern "C" { #endif +#define VI_TVMODE(format, interlace) (((format) << 2) + (interlace)) + +#define VI_INTERLACE 0 +#define VI_NON_INTERLACE 1 +#define VI_PROGRESSIVE 2 + +#define VI_NTSC 0 +#define VI_PAL 1 +#define VI_MPAL 2 +#define VI_DEBUG 3 +#define VI_DEBUG_PAL 4 +#define VI_EURGB60 5 + +typedef enum { + VI_TVMODE_NTSC_INT = VI_TVMODE(VI_NTSC, VI_INTERLACE), + VI_TVMODE_NTSC_DS = VI_TVMODE(VI_NTSC, VI_NON_INTERLACE), + VI_TVMODE_NTSC_PROG = VI_TVMODE(VI_NTSC, VI_PROGRESSIVE), + VI_TVMODE_PAL_INT = VI_TVMODE(VI_PAL, VI_INTERLACE), + VI_TVMODE_PAL_DS = VI_TVMODE(VI_PAL, VI_NON_INTERLACE), + VI_TVMODE_EURGB60_INT = VI_TVMODE(VI_EURGB60, VI_INTERLACE), + VI_TVMODE_EURGB60_DS = VI_TVMODE(VI_EURGB60, VI_NON_INTERLACE), + VI_TVMODE_MPAL_INT = VI_TVMODE(VI_MPAL, VI_INTERLACE), + VI_TVMODE_MPAL_DS = VI_TVMODE(VI_MPAL, VI_NON_INTERLACE), + VI_TVMODE_DEBUG_INT = VI_TVMODE(VI_DEBUG, VI_INTERLACE), + VI_TVMODE_DEBUG_PAL_INT = VI_TVMODE(VI_DEBUG_PAL, VI_INTERLACE), + VI_TVMODE_DEBUG_PAL_DS = VI_TVMODE(VI_DEBUG_PAL, VI_NON_INTERLACE) +} VITVMode; + +typedef enum { VI_XFBMODE_SF = 0, VI_XFBMODE_DF } VIXFBMode; + typedef void (*VIRetraceCallback)(u32); void VIWaitForRetrace(void); @@ -22,6 +52,8 @@ void* VIGetCurrentFrameBuffer(); void VISetBlack(BOOL); u32 VIGetRetraceCount(); +vu16 __VIRegs[59] : 0xCC002000; + #ifdef __cplusplus }; #endif diff --git a/include/errno.h b/include/errno.h index c7569bf20d6..1826b92e75f 100644 --- a/include/errno.h +++ b/include/errno.h @@ -1,6 +1,20 @@ #ifndef MSL_COMMON_SRC_ERRNO_H #define MSL_COMMON_SRC_ERRNO_H +#ifdef __cplusplus +extern "C" { +#endif + +#define ENOERR 0 +#define EDOM 33 +#define ERANGE 34 +#define EFPOS 40 +#define ESIGPARM 36 + extern int errno; +#ifdef __cplusplus +} +#endif + #endif /* MSL_COMMON_SRC_ERRNO_H */ diff --git a/include/exi/EXIBios.h b/include/exi/EXIBios.h deleted file mode 100644 index 6d664a641c1..00000000000 --- a/include/exi/EXIBios.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef EXIBIOS_H -#define EXIBIOS_H - -#include "dolphin/types.h" - -#endif /* EXIBIOS_H */ diff --git a/include_link.mk b/include_link.mk index 9f0bd28a960..c0df6258c0d 100644 --- a/include_link.mk +++ b/include_link.mk @@ -28,7 +28,7 @@ -include libs/JSystem/JMath/Makefile -include libs/dolphin/base/Makefile -include libs/dolphin/os/Makefile --include libs/exi/Makefile +-include libs/dolphin/exi/Makefile -include libs/dolphin/si/Makefile -include libs/dolphin/db/Makefile -include libs/dolphin/mtx/Makefile diff --git a/libs/JSystem/J3DGraphAnimator/J3DModel.cpp b/libs/JSystem/J3DGraphAnimator/J3DModel.cpp index 80f312c3815..52d2a992dd7 100644 --- a/libs/JSystem/J3DGraphAnimator/J3DModel.cpp +++ b/libs/JSystem/J3DGraphAnimator/J3DModel.cpp @@ -206,7 +206,6 @@ s32 J3DModel::entryModelData(J3DModelData* p_modelData, u32 param_1, u32 param_2 /* 80327300-803273CC 321C40 00CC+00 1/1 0/0 0/0 .text createShapePacket__8J3DModelFP12J3DModelData */ -// probably some wrong member types s32 J3DModel::createShapePacket(J3DModelData* p_modelData) { if (p_modelData->getShapeNum() != 0) { u16 shapeNum = p_modelData->getShapeNum(); @@ -229,6 +228,87 @@ s32 J3DModel::createShapePacket(J3DModelData* p_modelData) { /* 803273CC-803275FC 321D0C 0230+00 1/1 0/0 0/0 .text createMatPacket__8J3DModelFP12J3DModelDataUl */ +#if defined NON_MATCHING +s32 J3DModel::createMatPacket(J3DModelData* p_modelData, u32 flag) { + // regalloc + if (p_modelData->getMaterialNum() != 0) { + mMatPacket = new J3DMatPacket[p_modelData->getMaterialNum()]; + + if (mMatPacket == NULL) { + return kJ3DError_Alloc; + } + } + + s32 ret; + u16 matNum = p_modelData->getMaterialNum(); + u16 i = 0; + + u32 singleDLFlag = flag & 0x40000; + for (; i < matNum; i++) { + J3DMaterial* materialNode = p_modelData->getMaterialNodePointer(i); + J3DMatPacket* pkt = getMatPacket(i); + u16 shapeIndex = materialNode->getShape()->getIndex(); + J3DShapePacket* shapePacket = getShapePacket(shapeIndex); + pkt->mpMaterial = materialNode; + pkt->mpInitShapePacket = shapePacket; + pkt->addShapePacket(shapePacket); + pkt->mpTexture = p_modelData->getMaterialTable().getTexture(); + pkt->mDiffFlag = materialNode->mDiffFlag; + + if (p_modelData->getModelDataType() == 1) { + pkt->mFlags |= 0x01; + } + + if (!!(flag & 0x80000)) { + pkt->mpDisplayListObj = materialNode->getSharedDisplayListObj(); + } else { + if (p_modelData->getModelDataType() == 1) { + if (!!(flag & 0x40000)) { + pkt->mpDisplayListObj = materialNode->getSharedDisplayListObj(); + } else { + J3DDisplayListObj* sharedDL = materialNode->getSharedDisplayListObj(); + ret = sharedDL->single_To_Double(); + if (ret != kJ3DError_Success) + return ret; + + pkt->mpDisplayListObj = sharedDL; + } + } else if (!!(flag & 0x20000)) { + if (!!(flag & 0x40000)) { + ret = materialNode->newSingleSharedDisplayList(materialNode->countDLSize()); + if (ret != kJ3DError_Success) + return ret; + + pkt->mpDisplayListObj = materialNode->getSharedDisplayListObj(); + } else { + ret = materialNode->newSharedDisplayList(materialNode->countDLSize()); + if (ret != kJ3DError_Success) + return ret; + + J3DDisplayListObj* sharedDL = materialNode->getSharedDisplayListObj(); + ret = sharedDL->single_To_Double(); + if (ret != kJ3DError_Success) + return ret; + + pkt->mpDisplayListObj = sharedDL; + } + } else { + if (!!(flag & 0x40000)) { + ret = pkt->newSingleDisplayList(materialNode->countDLSize()); + if (ret != kJ3DError_Success) + return ret; + } else { + ret = pkt->newDisplayList(materialNode->countDLSize()); + if (ret != kJ3DError_Success) + return ret; + } + } + } + } + + return kJ3DError_Success; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -237,16 +317,19 @@ asm s32 J3DModel::createMatPacket(J3DModelData* param_0, u32 param_1) { #include "asm/JSystem/J3DGraphAnimator/J3DModel/createMatPacket__8J3DModelFP12J3DModelDataUl.s" } #pragma pop +#endif /* 803275FC-8032767C 321F3C 0080+00 0/0 1/1 0/0 .text newDifferedDisplayList__8J3DModelFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 J3DModel::newDifferedDisplayList(u32 param_0) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DModel/newDifferedDisplayList__8J3DModelFUl.s" +s32 J3DModel::newDifferedDisplayList(u32 flag) { + mDiffFlag = flag; + u16 shapeNum = getModelData()->getShapeNum(); + for (u16 i = 0; i < shapeNum; i++) { + s32 ret = mShapePacket[i].newDifferedDisplayList(flag); + if (ret != kJ3DError_Success) + return ret; + } + return kJ3DError_Success; } -#pragma pop /* 8032767C-803276B4 321FBC 0038+00 0/0 4/4 0/0 .text lock__8J3DModelFv */ void J3DModel::lock() { @@ -300,6 +383,33 @@ void J3DModel::calcMaterial() { } /* 80327858-803279A0 322198 0148+00 1/0 0/0 0/0 .text calcDiffTexMtx__8J3DModelFv */ +#if defined NON_MATCHING +void J3DModel::calcDiffTexMtx() { + // regalloc + j3dSys.setModel(this); + + u16 num; + num = getModelData()->getMaterialNum(); + for (u16 i = 0; i < num; i++) { + j3dSys.setMatPacket(getMatPacket(i)); + J3DMaterial* materialNode = getModelData()->getMaterialNodePointer(i); + materialNode->calcDiffTexMtx(i_getAnmMtx(materialNode->getJoint()->getJntNo())); + } + + num = getModelData()->getShapeNum(); + for (u16 i = 0; i < num; i++) { + J3DShapePacket* shapePacket = getShapePacket(i); + J3DTexGenBlock* texGenBlock = getModelData()->getShapeNodePointer(i)->getMaterial()->getTexGenBlock(); + for (u16 j = 0; (int)j < 8; j++) { + J3DTexMtx* texMtxNode = texGenBlock->getTexMtx(j); + J3DTexMtxObj* texMtxObj = shapePacket->getTexMtxObj(); + if (texMtxNode != NULL && texMtxObj != NULL) { + PSMTXCopy(texMtxNode->getMtx(), texMtxObj->getMtx(j)); + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -308,6 +418,7 @@ asm void J3DModel::calcDiffTexMtx() { #include "asm/JSystem/J3DGraphAnimator/J3DModel/calcDiffTexMtx__8J3DModelFv.s" } #pragma pop +#endif /* 803279A0-80327A2C 3222E0 008C+00 0/0 2/2 0/0 .text diff__8J3DModelFv */ void J3DModel::diff() { @@ -350,7 +461,7 @@ s32 J3DModel::setSkinDeform(J3DSkinDeform* p_skinDeform, u32 flags) { mSkinDeform->initMtxIndexArray(mModelData); ret = mModelData->checkFlag(0x100); - if (ret != 0) { + if (ret != kJ3DError_Success) { mSkinDeform->changeFastSkinDL(mModelData); flags &= ~2; flags &= ~4; @@ -512,13 +623,13 @@ void J3DModel::viewCalc() { if (getMtxCalcMode() == 2) { J3DCalcViewBaseMtx(j3dSys.getViewMtx(), mBaseScale, mBaseTransformMtx, (MtxP)&mInternalView); } - } else if (checkFlag(4)) { + } else if (checkFlag(J3DMdlFlag_SkinPosCpu)) { mMtxBuffer->calcDrawMtx(getMtxCalcMode(), mBaseScale, mBaseTransformMtx); calcNrmMtx(); calcBumpMtx(); DCStoreRangeNoSync(getDrawMtxPtr(), mModelData->getDrawMtxNum() * sizeof(Mtx)); DCStoreRange(getNrmMtxPtr(), mModelData->getDrawMtxNum() * sizeof(Mtx33)); - } else if (checkFlag(8)) { + } else if (checkFlag(J3DMdlFlag_SkinNrmCpu)) { mMtxBuffer->calcDrawMtx(getMtxCalcMode(), mBaseScale, mBaseTransformMtx); calcBBoardMtx(); DCStoreRange(getDrawMtxPtr(), mModelData->getDrawMtxNum() * sizeof(Mtx)); @@ -540,33 +651,22 @@ void J3DModel::calcNrmMtx() { } /* 803281B4-803282B8 322AF4 0104+00 1/1 0/0 0/0 .text calcBumpMtx__8J3DModelFv */ -#ifdef NONMATCHING void J3DModel::calcBumpMtx() { - // comparison (might be b/c of bool rather than u8?) - if (!getModelData()->checkBumpFlag()) - return; + if (getModelData()->checkBumpFlag() == 1) { + u32 bumpMtxIdx = 0; + u16 materialNum = getModelData()->getMaterialNum(); + u16 i = 0; - // loop is a bit different - for (u16 n = getModelData()->getMaterialNum(), i = 0; i < n; i++) { - J3DMaterial* material = getModelData()->getMaterialNodePointer(i); - if (!material->getNBTScale()->mbHasScale) - continue; - - material->getShape()->calcNBTScale(*material->getNBTScale()->getScale(), getNrmMtxPtr(), - getBumpMtxPtr(i)); - DCStoreRange(getBumpMtxPtr(i), getModelData()->getDrawMtxNum() * 0x24); + for (; i < materialNum; i++) { + J3DMaterial* material = getModelData()->getMaterialNodePointer(i); + if (material->getNBTScale()->mbHasScale == 1) { + material->getShape()->calcNBTScale(*material->getNBTScale()->getScale(), getNrmMtxPtr(), getBumpMtxPtr(bumpMtxIdx)); + DCStoreRange(getBumpMtxPtr(bumpMtxIdx), getModelData()->getDrawMtxNum() * 0x24); + bumpMtxIdx++; + } + } } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DModel::calcBumpMtx() { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DModel/calcBumpMtx__8J3DModelFv.s" -} -#pragma pop -#endif /* 803282B8-803282EC 322BF8 0034+00 1/1 0/0 0/0 .text calcBBoardMtx__8J3DModelFv */ void J3DModel::calcBBoardMtx() { @@ -576,9 +676,11 @@ void J3DModel::calcBBoardMtx() { } /* 803282EC-80328350 322C2C 0064+00 2/2 0/0 0/0 .text prepareShapePackets__8J3DModelFv */ -#ifdef NONMATCHING +#if defined NONMATCHING void J3DModel::prepareShapePackets() { - for (u16 n = getModelData()->getShapeNum(), i = 0; i < n; i++) { + u16 shapeNum = getModelData()->getShapeNum(); + + for (u16 i = 0; i < shapeNum; i++) { // two swapped instructions right around here when calling getShapePacket J3DShapePacket* pkt = getShapePacket(i); pkt->setMtxBuffer(mMtxBuffer); diff --git a/libs/JSystem/J3DGraphAnimator/J3DModelData.cpp b/libs/JSystem/J3DGraphAnimator/J3DModelData.cpp index fff6473d6da..9bf2bea95ea 100644 --- a/libs/JSystem/J3DGraphAnimator/J3DModelData.cpp +++ b/libs/JSystem/J3DGraphAnimator/J3DModelData.cpp @@ -76,41 +76,23 @@ J3DModelData::J3DModelData() { } /* 80325E14-80325EC8 320754 00B4+00 0/0 2/2 0/0 .text newSharedDisplayList__12J3DModelDataFUl */ -#ifdef NONMATCHING -s32 J3DModelData::newSharedDisplayList(u32 param_0) { +s32 J3DModelData::newSharedDisplayList(u32 flag) { u16 matNum = getMaterialNum(); for (u16 i = 0; i < matNum; i++) { - if ((param_0 & 0x40000)) { - J3DMaterial* matNode = getMaterialNodePointer(i); - u32 dl_size = matNode->countDLSize(); - switch (matNode->newSingleSharedDisplayList(dl_size)) { - case 0: - continue; - } - break; + if (!!(flag & 0x40000)) { + s32 ret = getMaterialNodePointer(i)->newSingleSharedDisplayList(getMaterialNodePointer(i)->countDLSize()); + if (ret != kJ3DError_Success) + return ret; } else { - J3DMaterial* matNode = getMaterialNodePointer(i); - u32 dl_size = matNode->countDLSize(); - switch (matNode->newSharedDisplayList(dl_size)) { - case 0: - continue; - } - break; + s32 ret = getMaterialNodePointer(i)->newSharedDisplayList(getMaterialNodePointer(i)->countDLSize()); + if (ret != kJ3DError_Success) + return ret; } } - return 0; + + return kJ3DError_Success; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 J3DModelData::newSharedDisplayList(u32 param_0) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DModelData/newSharedDisplayList__12J3DModelDataFUl.s" -} -#pragma pop -#endif /* ############################################################################################## */ /* 804515E8-804515EC 000AE8 0004+00 1/1 0/0 0/0 .sbss sInterruptFlag$965 */ diff --git a/libs/JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp b/libs/JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp index b1549a97fe5..2ad0f1fdd29 100644 --- a/libs/JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp +++ b/libs/JSystem/J3DGraphAnimator/J3DMtxBuffer.cpp @@ -4,8 +4,10 @@ // #include "JSystem/J3DGraphAnimator/J3DMtxBuffer.h" +#include "JSystem/JKernel/JKRHeap.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "mtx/mtx.h" // // Forward References: @@ -55,46 +57,106 @@ extern "C" void _restgpr_29(); // /* 80326214-80326258 320B54 0044+00 0/0 1/1 0/0 .text initialize__12J3DMtxBufferFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DMtxBuffer::initialize() { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/initialize__12J3DMtxBufferFv.s" +void J3DMtxBuffer::initialize() { + mJointTree = NULL; + mpScaleFlagArr = NULL; + mpEvlpScaleFlagArr = NULL; + mpAnmMtx = NULL; + mpWeightEvlpMtx = NULL; + mpDrawMtxArr[0] = NULL; + mpDrawMtxArr[1] = NULL; + mpNrmMtxArr[0] = NULL; + mpNrmMtxArr[1] = NULL; + mpBumpMtxArr[0] = NULL; + mpBumpMtxArr[1] = NULL; + mFlags = 1; + mCurrentViewNo = 0; + mpUserAnmMtx = NULL; } -#pragma pop /* 80326258-80326364 320B98 010C+00 0/0 1/1 0/0 .text create__12J3DMtxBufferFP12J3DModelDataUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 J3DMtxBuffer::create(J3DModelData* param_0, u32 param_1) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/create__12J3DMtxBufferFP12J3DModelDataUl.s" +enum { + J3DMdlDataFlag_ConcatView = 0x10, + J3DMdlDataFlag_NoAnimation = 0x100, +}; + +static inline u32 getMdlDataFlag_MtxLoadType(u32 flag) { + return flag & 0x10; +} + +s32 J3DMtxBuffer::create(J3DModelData* p_modelData, u32 flag) { + s32 ret; + + mFlags = flag; + mJointTree = &p_modelData->getJointTree(); + + ret = createAnmMtx(p_modelData); + if (ret != kJ3DError_Success) + return ret; + + ret = createWeightEnvelopeMtx(p_modelData); + if (ret != kJ3DError_Success) + return ret; + + if (p_modelData->checkFlag(J3DMdlDataFlag_NoAnimation)) { + setNoUseDrawMtx(); + } else { + switch (getMdlDataFlag_MtxLoadType(p_modelData->getFlag())) { + case J3DMdlDataFlag_ConcatView: + ret = setNoUseDrawMtx(); + break; + case 0: + default: + ret = createDoubleDrawMtx(p_modelData, flag); + break; + } + } + + if (ret != kJ3DError_Success) + return ret; + + if (p_modelData->getFlag() & J3DMdlDataFlag_ConcatView) { + p_modelData->setBumpFlag(0); + } else { + ret = createBumpMtxArray(p_modelData, flag); + + if (ret != kJ3DError_Success) + return ret; + } + + return ret; } -#pragma pop /* 80326364-803263F0 320CA4 008C+00 1/1 0/0 0/0 .text createAnmMtx__12J3DMtxBufferFP12J3DModelData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DMtxBuffer::createAnmMtx(J3DModelData* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/createAnmMtx__12J3DMtxBufferFP12J3DModelData.s" +s32 J3DMtxBuffer::createAnmMtx(J3DModelData* p_modelData) { + if (p_modelData->getJointNum() != 0) { + mpScaleFlagArr = new u8[p_modelData->getJointNum()]; + mpAnmMtx = new Mtx[p_modelData->getJointNum()]; + mpUserAnmMtx = mpAnmMtx; + } + + if (mpScaleFlagArr == NULL) + return kJ3DError_Alloc; + + return mpAnmMtx == NULL ? kJ3DError_Alloc : kJ3DError_Success; } -#pragma pop /* 803263F0-8032648C 320D30 009C+00 1/1 0/0 0/0 .text * createWeightEnvelopeMtx__12J3DMtxBufferFP12J3DModelData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DMtxBuffer::createWeightEnvelopeMtx(J3DModelData* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/createWeightEnvelopeMtx__12J3DMtxBufferFP12J3DModelData.s" +s32 J3DMtxBuffer::createWeightEnvelopeMtx(J3DModelData* p_modelData) { + if (p_modelData->getWEvlpMtxNum() != 0) { + mpEvlpScaleFlagArr = new u8[p_modelData->getWEvlpMtxNum()]; + mpWeightEvlpMtx = new Mtx[p_modelData->getWEvlpMtxNum()]; + } + + if (p_modelData->getWEvlpMtxNum() != 0 && mpEvlpScaleFlagArr == NULL) + return kJ3DError_Alloc; + if (p_modelData->getWEvlpMtxNum() != 0 && mpWeightEvlpMtx == NULL) + return kJ3DError_Alloc; + + return kJ3DError_Success; } -#pragma pop /* ############################################################################################## */ /* 804371C0-804371F0 063EE0 0030+00 1/0 0/0 0/0 .bss sNoUseDrawMtx__12J3DMtxBuffer */ @@ -111,32 +173,65 @@ Mtx33* J3DMtxBuffer::sNoUseNrmMtxPtr = &J3DMtxBuffer::sNoUseNrmMtx; /* 8032648C-803264B8 320DCC 002C+00 1/1 0/0 0/0 .text setNoUseDrawMtx__12J3DMtxBufferFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DMtxBuffer::setNoUseDrawMtx() { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/setNoUseDrawMtx__12J3DMtxBufferFv.s" +s32 J3DMtxBuffer::setNoUseDrawMtx() { + mpDrawMtxArr[1] = &sNoUseDrawMtxPtr; + mpDrawMtxArr[0] = &sNoUseDrawMtxPtr; + mpNrmMtxArr[1] = &sNoUseNrmMtxPtr; + mpNrmMtxArr[0] = &sNoUseNrmMtxPtr; + mpBumpMtxArr[1] = NULL; + mpBumpMtxArr[0] = NULL; + return kJ3DError_Success; } -#pragma pop /* 803264B8-80326664 320DF8 01AC+00 1/1 0/0 0/0 .text * createDoubleDrawMtx__12J3DMtxBufferFP12J3DModelDataUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DMtxBuffer::createDoubleDrawMtx(J3DModelData* param_0, u32 param_1) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/createDoubleDrawMtx__12J3DMtxBufferFP12J3DModelDataUl.s" +s32 J3DMtxBuffer::createDoubleDrawMtx(J3DModelData* p_modelData, u32 num) { + if (num != 0) { + for (s32 i = 0; i < 2; i++) { + mpDrawMtxArr[i] = new Mtx*[num]; + mpNrmMtxArr[i] = new Mtx33*[num]; + mpBumpMtxArr[i] = NULL; + } + } + + if (num != 0) { + for (u32 i = 0; i < 2; i++) { + if (mpDrawMtxArr[i] == NULL) + return kJ3DError_Alloc; + if (mpNrmMtxArr[i] == NULL) + return kJ3DError_Alloc; + } + } + + for (s32 i = 0; i < 2; i++) { + for (u32 j = 0; j < num; j++) { + if (p_modelData->getDrawMtxNum() != 0) { + mpDrawMtxArr[i][j] = new (0x20) Mtx[p_modelData->getDrawMtxNum()]; + mpNrmMtxArr[i][j] = new (0x20) Mtx33[p_modelData->getDrawMtxNum()]; + } + } + } + + for (s32 i = 0; i < 2; i++) { + for (u32 j = 0; j < num; j++) { + if (p_modelData->getDrawMtxNum() != 0) { + if (mpDrawMtxArr[i][j] == NULL) + return kJ3DError_Alloc; + if (mpNrmMtxArr[i][j] == NULL) + return kJ3DError_Alloc; + } + } + } + + return kJ3DError_Success; } -#pragma pop /* 80326664-803268D4 320FA4 0270+00 1/1 0/0 0/0 .text * createBumpMtxArray__12J3DMtxBufferFP12J3DModelDataUl */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DMtxBuffer::createBumpMtxArray(J3DModelData* param_0, u32 param_1) { +asm s32 J3DMtxBuffer::createBumpMtxArray(J3DModelData* param_0, u32 param_1) { nofralloc #include "asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/createBumpMtxArray__12J3DMtxBufferFP12J3DModelDataUl.s" } @@ -169,6 +264,8 @@ asm void J3DMtxBuffer::calcDrawMtx(u32 param_0, Vec const& param_1, f32 const (& } #pragma pop +extern void J3DPSCalcInverseTranspose(Mtx p1, Mtx33 p2); + /* 80326D3C-80326EF0 32167C 01B4+00 0/0 1/1 0/0 .text calcNrmMtx__12J3DMtxBufferFv */ #pragma push #pragma optimization_level 0 @@ -203,12 +300,23 @@ asm void J3DMtxBuffer::calcBBoardMtx() { /* 80327048-80327100 321988 00B8+00 1/1 1/1 0/0 .text * J3DCalcViewBaseMtx__FPA4_fRC3VecRA3_A4_CfPA4_f */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DCalcViewBaseMtx(f32 (*param_0)[4], Vec const& param_1, f32 const (¶m_2)[3][4], - f32 (*param_3)[4]) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/J3DCalcViewBaseMtx__FPA4_fRC3VecRA3_A4_CfPA4_f.s" +void J3DCalcViewBaseMtx(Mtx view, Vec const& scale, const Mtx& base, Mtx dst) { + Mtx m; + + m[0][0] = base[0][0] * scale.x; + m[0][1] = base[0][1] * scale.y; + m[0][2] = base[0][2] * scale.z; + m[0][3] = base[0][3]; + + m[1][0] = base[1][0] * scale.x; + m[1][1] = base[1][1] * scale.y; + m[1][2] = base[1][2] * scale.z; + m[1][3] = base[1][3]; + + m[2][0] = base[2][0] * scale.x; + m[2][1] = base[2][1] * scale.y; + m[2][2] = base[2][2] * scale.z; + m[2][3] = base[2][3]; + + PSMTXConcat(view, m, dst); } -#pragma pop diff --git a/libs/JSystem/J3DGraphBase/J3DDrawBuffer.cpp b/libs/JSystem/J3DGraphBase/J3DDrawBuffer.cpp index 371059303cc..d6160a56432 100644 --- a/libs/JSystem/J3DGraphBase/J3DDrawBuffer.cpp +++ b/libs/JSystem/J3DGraphBase/J3DDrawBuffer.cpp @@ -8,6 +8,7 @@ #include "dol2asm.h" #include "dolphin/types.h" #include "JSystem/J3DGraphBase/J3DPacket.h" +#include "JSystem/J3DGraphBase/J3DMaterial.h" // // Forward References: @@ -90,48 +91,82 @@ J3DDrawBuffer::~J3DDrawBuffer() { mpBuf = NULL; } -#ifdef NONMATCHING /* 80325068-8032509C 31F9A8 0034+00 2/2 1/1 0/0 .text frameInit__13J3DDrawBufferFv */ void J3DDrawBuffer::frameInit() { - // can't make mwcc not generate "mtctr" for this loop - for (int i = 0; i < mBufSize; i++) + u32 bufSize = mBufSize; + for (u32 i = 0; i < bufSize; i++) mpBuf[i] = NULL; mpCallBackPacket = NULL; } -#else -/* 80325068-8032509C 31F9A8 0034+00 2/2 1/1 0/0 .text frameInit__13J3DDrawBufferFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DDrawBuffer::frameInit() { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/frameInit__13J3DDrawBufferFv.s" -} -#pragma pop -#endif /* 8032509C-803251E4 31F9DC 0148+00 2/1 0/0 0/0 .text * entryMatSort__13J3DDrawBufferFP12J3DMatPacket */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int J3DDrawBuffer::entryMatSort(J3DMatPacket* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatSort__13J3DDrawBufferFP12J3DMatPacket.s" +int J3DDrawBuffer::entryMatSort(J3DMatPacket* pMatPacket) { + pMatPacket->drawClear(); + pMatPacket->getShapePacket()->drawClear(); + + if (pMatPacket->isChanged()) { + pMatPacket->setNextPacket(mpBuf[0]); + mpBuf[0] = pMatPacket; + return 1; + } + + J3DTexture* texture = j3dSys.getTexture(); + u32 hash; + u32 texNo = pMatPacket->getMaterial()->getTexNo(0); + if ((u16)texNo == 0xFFFF) { + hash = 0; + } else { + hash = ((u32)texture->getResTIMG(texNo) + texture->getResTIMG(texNo)->imageOffset) >> 5; + } + u32 slot = hash & (mBufSize - 1); + + if (mpBuf[slot] == NULL) { + mpBuf[slot] = pMatPacket; + return 1; + } else { + for (J3DMatPacket* pkt = (J3DMatPacket*)mpBuf[slot]; pkt != NULL; pkt = (J3DMatPacket*)pkt->getNextPacket()) { + if (pkt->isSame(pMatPacket)) { + pkt->addShapePacket(pMatPacket->getShapePacket()); + return 0; + } + } + + pMatPacket->setNextPacket(mpBuf[slot]); + mpBuf[slot] = pMatPacket; + return 1; + } } -#pragma pop /* 803251E4-8032529C 31FB24 00B8+00 1/0 0/0 0/0 .text * entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int J3DDrawBuffer::entryMatAnmSort(J3DMatPacket* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket.s" +int J3DDrawBuffer::entryMatAnmSort(J3DMatPacket* pMatPacket) { + J3DMaterialAnm* pMaterialAnm = pMatPacket->mpMaterialAnm; + u32 slot = (u32)pMaterialAnm & (mBufSize - 1); + + if (pMaterialAnm == NULL) { + return entryMatSort(pMatPacket); + } else { + pMatPacket->drawClear(); + pMatPacket->getShapePacket()->drawClear(); + if (mpBuf[slot] == NULL) { + mpBuf[slot] = pMatPacket; + return 1; + } else { + for (J3DMatPacket* pkt = (J3DMatPacket*)mpBuf[slot]; pkt != NULL; pkt = (J3DMatPacket*)pkt->getNextPacket()) { + if (pkt->mpMaterialAnm == pMaterialAnm) { + pkt->addShapePacket(pMatPacket->getShapePacket()); + return 0; + } + } + + pMatPacket->setNextPacket(mpBuf[slot]); + mpBuf[slot] = pMatPacket; + return 1; + } + } } -#pragma pop inline f32 J3DCalcZValue(register MtxP m, register Vec v) { register f32 out; diff --git a/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp b/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp index 20dd9a32ab3..3d0a4df2cc0 100644 --- a/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp +++ b/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp @@ -2586,7 +2586,7 @@ asm void J3DTevBlock16::setTexNo(u32 param_0, u16 const* param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DTevBlock16::getTexNo(u32 param_0) const { +asm u32 J3DTevBlock16::getTexNo(u32 param_0) const { nofralloc #include "asm/JSystem/J3DGraphBase/J3DMatBlock/getTexNo__13J3DTevBlock16CFUl.s" } @@ -3639,7 +3639,7 @@ asm void J3DTevBlock4::setTexNo(u32 param_0, u16 const* param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DTevBlock4::getTexNo(u32 param_0) const { +asm u32 J3DTevBlock4::getTexNo(u32 param_0) const { nofralloc #include "asm/JSystem/J3DGraphBase/J3DMatBlock/getTexNo__12J3DTevBlock4CFUl.s" } @@ -4032,7 +4032,7 @@ asm void J3DTevBlock2::setTexNo(u32 param_0, u16 const* param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DTevBlock2::getTexNo(u32 param_0) const { +asm u32 J3DTevBlock2::getTexNo(u32 param_0) const { nofralloc #include "asm/JSystem/J3DGraphBase/J3DMatBlock/getTexNo__12J3DTevBlock2CFUl.s" } @@ -4425,7 +4425,7 @@ asm void J3DTevBlock1::setTexNo(u32 param_0, u16 const* param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DTevBlock1::getTexNo(u32 param_0) const { +asm u32 J3DTevBlock1::getTexNo(u32 param_0) const { nofralloc #include "asm/JSystem/J3DGraphBase/J3DMatBlock/getTexNo__12J3DTevBlock1CFUl.s" } @@ -4679,7 +4679,7 @@ asm void J3DTevBlockPatched::setTexNo(u32 param_0, u16 const* param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DTevBlockPatched::getTexNo(u32 param_0) const { +asm u32 J3DTevBlockPatched::getTexNo(u32 param_0) const { nofralloc #include "asm/JSystem/J3DGraphBase/J3DMatBlock/getTexNo__18J3DTevBlockPatchedCFUl.s" } diff --git a/libs/JSystem/J3DGraphBase/J3DPacket.cpp b/libs/JSystem/J3DGraphBase/J3DPacket.cpp index bf734f17107..109074b7532 100644 --- a/libs/JSystem/J3DGraphBase/J3DPacket.cpp +++ b/libs/JSystem/J3DGraphBase/J3DPacket.cpp @@ -209,7 +209,7 @@ SECTION_DATA static s32 sSizeOfDiffered[8] = { J3DDrawPacket::J3DDrawPacket() { mFlags = 0; mpDisplayListObj = NULL; - mpTexMtx = NULL; + mpTexMtxObj = NULL; } /* 803127B0-8031280C 30D0F0 005C+00 3/2 0/0 0/0 .text __dt__13J3DDrawPacketFv */ @@ -348,7 +348,7 @@ J3DError J3DShapePacket::newDifferedDisplayList(u32 flag) { } /* 80312E08-80312F24 30D748 011C+00 2/2 0/0 0/0 .text prepareDraw__14J3DShapePacketCFv */ -#ifdef NONMATCHING +#if defined NONMATCHING void J3DShapePacket::prepareDraw() const { mpModel->getVertexBuffer()->setArray(); j3dSys.setModel(mpModel); @@ -376,7 +376,7 @@ void J3DShapePacket::prepareDraw() const { if (!mpShape->getNBTFlag()) { mpShape->setNrmMtx(mpMtxBuffer->getNrmMtxPtrPtr()); } else { - mpShape->setNrmMtx(mpMtxBuffer->getBumpMtxPtrPtr() + mpShape->getBumpMtxOffset()); + mpShape->setNrmMtx(mpMtxBuffer->getBumpMtxPtrPtr()[mpShape->getBumpMtxOffset()]); } mpModel->getModelData()->syncJ3DSysFlags(); @@ -397,7 +397,7 @@ void J3DShapePacket::draw() { if (!checkFlag(J3DShpFlag_Hidden) && mpShape != NULL) { prepareDraw(); - if (mpTexMtx != NULL) { + if (mpTexMtxObj != NULL) { J3DMaterial* material = mpShape->getMaterial(); J3DDifferedTexMtx::sTexGenBlock = material->getTexGenBlock(); J3DDifferedTexMtx::sTexMtxObj = getTexMtxObj(); @@ -418,7 +418,7 @@ void J3DShapePacket::drawFast() { if (!checkFlag(J3DShpFlag_Hidden) && mpShape != NULL) { prepareDraw(); - if (mpTexMtx != NULL) { + if (mpTexMtxObj != NULL) { J3DMaterial* material = mpShape->getMaterial(); J3DDifferedTexMtx::sTexGenBlock = material->getTexGenBlock(); J3DDifferedTexMtx::sTexMtxObj = getTexMtxObj(); diff --git a/libs/JSystem/J3DGraphBase/J3DShapeMtx.cpp b/libs/JSystem/J3DGraphBase/J3DShapeMtx.cpp index 86d52ff500b..dd9d77b10c3 100644 --- a/libs/JSystem/J3DGraphBase/J3DShapeMtx.cpp +++ b/libs/JSystem/J3DGraphBase/J3DShapeMtx.cpp @@ -370,7 +370,7 @@ u8 J3DShapeMtxConcatView::sMtxPtrTbl[8]; J3DTexGenBlock* J3DDifferedTexMtx::sTexGenBlock; /* 804515C4-804515C8 000AC4 0004+00 1/1 2/2 0/0 .sbss sTexMtxObj__17J3DDifferedTexMtx */ -J3DTexMtx* J3DDifferedTexMtx::sTexMtxObj; +J3DTexMtxObj* J3DDifferedTexMtx::sTexMtxObj; /* 80456398-8045639C 004998 0004+00 2/2 0/0 0/0 .sdata2 @1032 */ SECTION_SDATA2 static u8 lit_1032[4] = { diff --git a/libs/JSystem/JAudio2/JASTaskThread.cpp b/libs/JSystem/JAudio2/JASTaskThread.cpp index 7c8438e661f..87fc196a3b2 100644 --- a/libs/JSystem/JAudio2/JASTaskThread.cpp +++ b/libs/JSystem/JAudio2/JASTaskThread.cpp @@ -107,7 +107,7 @@ asm void JASTaskThread::allocCallStack(void (*param_0)(void*), void* param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JASTaskThread::sendCmdMsg(void (*param_0)(void*), void const* param_1, u32 param_2) { +asm int JASTaskThread::sendCmdMsg(void (*param_0)(void*), void const* param_1, u32 param_2) { nofralloc #include "asm/JSystem/JAudio2/JASTaskThread/sendCmdMsg__13JASTaskThreadFPFPv_vPCvUl.s" } diff --git a/libs/JSystem/JAudio2/JASWaveArcLoader.cpp b/libs/JSystem/JAudio2/JASWaveArcLoader.cpp index 135315119ea..af19d207c4b 100644 --- a/libs/JSystem/JAudio2/JASWaveArcLoader.cpp +++ b/libs/JSystem/JAudio2/JASWaveArcLoader.cpp @@ -4,74 +4,6 @@ // #include "JSystem/JAudio2/JASWaveArcLoader.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Types: -// - -struct JSUPtrList { - /* 802DBEAC */ ~JSUPtrList(); -}; - -struct JSUPtrLink { - /* 802DBE14 */ ~JSUPtrLink(); -}; - -struct JKRHeap {}; - -struct JKRExpandSwitch {}; - -struct JKRDvdAramRipper { - /* 802DA874 */ void loadToAram(s32, u32, JKRExpandSwitch, u32, u32, u32*); -}; - -struct JASWaveArcLoader { - /* 8029A0A0 */ void getRootHeap(); - /* 8029A0D0 */ void setCurrentDir(char const*); - /* 8029A130 */ void getCurrentDir(); - - static u8 sCurrentDir[64]; - static u8 sAramHeap[4 + 4 /* padding */]; -}; - -struct JASDisposer { - /* 80290BCC */ void onDispose(); - /* 8029A7B8 */ ~JASDisposer(); -}; - -struct JASHeap { - /* 80290140 */ JASHeap(JASDisposer*); - /* 8029021C */ void alloc(JASHeap*, u32); - /* 802903F4 */ void allocTail(JASHeap*, u32); - /* 802904E4 */ void free(); -}; - -struct JASWaveArc { - /* 80298FA0 */ void onLoadDone(); - /* 80298FA4 */ void onEraseDone(); - /* 8029A13C */ JASWaveArc(); - /* 8029A1B4 */ ~JASWaveArc(); - /* 8029A258 */ void loadSetup(u32); - /* 8029A2EC */ void eraseSetup(); - /* 8029A378 */ void loadToAramCallback(void*); - /* 8029A404 */ void sendLoadCmd(); - /* 8029A4C0 */ void load(JASHeap*); - /* 8029A580 */ void loadTail(JASHeap*); - /* 8029A640 */ void erase(); - /* 8029A664 */ void onDispose(); - /* 8029A6AC */ void setEntryNum(s32); - /* 8029A70C */ void setFileName(char const*); -}; - -struct JASTaskThread { - /* 8028FB5C */ void sendCmdMsg(void (*)(void*), void const*, u32); -}; - -struct JASKernel { - /* 80290B08 */ void getAramHeap(); -}; // // Forward References: @@ -117,17 +49,8 @@ extern "C" void __dla__FPv(); extern "C" void loadToAram__16JKRDvdAramRipperFlUl15JKRExpandSwitchUlUlPUl(); extern "C" void __dt__10JSUPtrLinkFv(); extern "C" void __dt__10JSUPtrListFv(); -extern "C" void OSInitMutex(); -extern "C" void OSLockMutex(); -extern "C" void OSUnlockMutex(); -extern "C" void DVDConvertPathToEntrynum(); -extern "C" void DVDFastOpen(); -extern "C" void DVDClose(); extern "C" void _savegpr_27(); extern "C" void _restgpr_27(); -extern "C" void strcat(); -extern "C" void strcpy(); -extern "C" void strlen(); // // Declarations: @@ -135,48 +58,39 @@ extern "C" void strlen(); /* ############################################################################################## */ /* 80451290-80451298 000790 0004+04 1/1 0/0 0/0 .sbss sAramHeap__16JASWaveArcLoader */ -u8 JASWaveArcLoader::sAramHeap[4 + 4 /* padding */]; +JASHeap* JASWaveArcLoader::sAramHeap; /* 8029A0A0-8029A0D0 2949E0 0030+00 2/2 0/0 0/0 .text getRootHeap__16JASWaveArcLoaderFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASWaveArcLoader::getRootHeap() { - nofralloc -#include "asm/JSystem/JAudio2/JASWaveArcLoader/getRootHeap__16JASWaveArcLoaderFv.s" +JASHeap* JASWaveArcLoader::getRootHeap() { + if (JASWaveArcLoader::sAramHeap) { + return JASWaveArcLoader::sAramHeap; + } + return JASKernel::getAramHeap(); } -#pragma pop /* ############################################################################################## */ /* 803C77E0-803C7820 024900 0040+00 2/2 0/0 0/0 .data sCurrentDir__16JASWaveArcLoader */ -SECTION_DATA u8 JASWaveArcLoader::sCurrentDir[64] = { - 0x2F, 0x41, 0x75, 0x64, 0x69, 0x6F, 0x52, 0x65, 0x73, 0x2F, 0x57, 0x61, 0x76, 0x65, 0x73, 0x2F, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; +char JASWaveArcLoader::sCurrentDir[DIR_MAX] = "/AudioRes/Waves/"; /* 8029A0D0-8029A130 294A10 0060+00 0/0 1/1 0/0 .text setCurrentDir__16JASWaveArcLoaderFPCc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASWaveArcLoader::setCurrentDir(char const* param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JASWaveArcLoader/setCurrentDir__16JASWaveArcLoaderFPCc.s" +void JASWaveArcLoader::setCurrentDir(char const* dir) { + ASSERT(std::strlen(dir) < DIR_MAX - 1); + strcpy(sCurrentDir, dir); + u32 len = strlen(sCurrentDir); + if (sCurrentDir[len - 1] != '/') { + ASSERT(len + 1 < DIR_MAX); + sCurrentDir[len] = '/'; + sCurrentDir[len + 1] = '\0'; + } } -#pragma pop /* 8029A130-8029A13C 294A70 000C+00 1/1 0/0 0/0 .text getCurrentDir__16JASWaveArcLoaderFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASWaveArcLoader::getCurrentDir() { - nofralloc -#include "asm/JSystem/JAudio2/JASWaveArcLoader/getCurrentDir__16JASWaveArcLoaderFv.s" + +char* JASWaveArcLoader::getCurrentDir() { + return sCurrentDir; } -#pragma pop /* ############################################################################################## */ /* 803C7820-803C7838 024940 0018+00 2/2 0/0 0/0 .data __vt__10JASWaveArc */ @@ -198,131 +112,185 @@ SECTION_DATA extern void* __vt__11JASDisposer[4] = { }; /* 8029A13C-8029A1B4 294A7C 0078+00 0/0 2/2 0/0 .text __ct__10JASWaveArcFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JASWaveArc::JASWaveArc() { - nofralloc -#include "asm/JSystem/JAudio2/JASWaveArcLoader/__ct__10JASWaveArcFv.s" + +JASWaveArc::JASWaveArc() : mHeap(this) { + _48 = 0; + _4c = 0; + mEntryNum = -1; + mFileLength = 0; + _58 = 0; + _5a = 0; + OSInitMutex(&mMutex); } -#pragma pop /* 8029A1B4-8029A258 294AF4 00A4+00 1/0 2/2 0/0 .text __dt__10JASWaveArcFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JASWaveArc::~JASWaveArc() { +#ifdef NONMATCHING +JASWaveArc::~JASWaveArc() {} +#else +asm void __dt__10JASWaveArcFv() { nofralloc #include "asm/JSystem/JAudio2/JASWaveArcLoader/__dt__10JASWaveArcFv.s" } -#pragma pop +#endif /* 8029A258-8029A2EC 294B98 0094+00 1/1 0/0 0/0 .text loadSetup__10JASWaveArcFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASWaveArc::loadSetup(u32 param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JASWaveArcLoader/loadSetup__10JASWaveArcFUl.s" +bool JASWaveArc::loadSetup(u32 param_0) { + JASMutexLock mutexLock(&mMutex); + if (_58 != param_0) { + return false; + } + if (_4c != 1) { + return false; + } + _48 = 1; + _4c = 2; + return true; } -#pragma pop /* 8029A2EC-8029A378 294C2C 008C+00 1/1 0/0 0/0 .text eraseSetup__10JASWaveArcFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASWaveArc::eraseSetup() { - nofralloc -#include "asm/JSystem/JAudio2/JASWaveArcLoader/eraseSetup__10JASWaveArcFv.s" +bool JASWaveArc::eraseSetup() { + JASMutexLock mutexLock(&mMutex); + if (_4c == 0) { + return false; + } + if (_4c == 1) { + _4c = 0; + return false; + } + _48 = 0; + _4c = 0; + return true; } -#pragma pop /* 8029A378-8029A404 294CB8 008C+00 1/1 0/0 0/0 .text loadToAramCallback__10JASWaveArcFPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASWaveArc::loadToAramCallback(void* param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JASWaveArcLoader/loadToAramCallback__10JASWaveArcFPv.s" +void JASWaveArc::loadToAramCallback(void* this_) { + loadToAramCallbackParams* tmp = (loadToAramCallbackParams*)this_; + JASWaveArc* wavArc = tmp->mWavArc; + JKRAramBlock* block = JKRDvdAramRipper::loadToAram(tmp->mEntryNum, tmp->mBase, + EXPAND_SWITCH_UNKNOWN0, 0, 0, NULL); + if (block == NULL) { + // "loadToAram Failed" + return; + } + wavArc->_5a--; + if (wavArc->loadSetup(tmp->_c)) { + wavArc->onLoadDone(); + } } -#pragma pop /* 8029A404-8029A4C0 294D44 00BC+00 2/2 0/0 0/0 .text sendLoadCmd__10JASWaveArcFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASWaveArc::sendLoadCmd() { - nofralloc -#include "asm/JSystem/JAudio2/JASWaveArcLoader/sendLoadCmd__10JASWaveArcFv.s" +bool JASWaveArc::sendLoadCmd() { + JASMutexLock mutexLock(&mMutex); + _48 = 0; + _4c = 1; + void* base = mHeap.getBase(); + loadToAramCallbackParams commandInfo; + commandInfo.mWavArc = this; + commandInfo.mEntryNum = mEntryNum; + commandInfo.mBase = (u32)mHeap.mBase; + commandInfo._c = ++_58; + + _5a++; + + JASTaskThread* thread = JASDvd::getThreadPointer(); + int status = thread->sendCmdMsg(loadToAramCallback, &commandInfo, 0x10); + if (status == 0) { + // "sendCmdMsg loadToAramCallback Failed" + mHeap.free(); + return false; + } + return true; } -#pragma pop /* 8029A4C0-8029A580 294E00 00C0+00 0/0 2/2 0/0 .text load__10JASWaveArcFP7JASHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASWaveArc::load(JASHeap* param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JASWaveArcLoader/load__10JASWaveArcFP7JASHeap.s" +bool JASWaveArc::load(JASHeap* heap) { + if (mEntryNum < 0) { + return false; + } + JASMutexLock mutexLock(&mMutex); + if (_4c != 0) { + return false; + } + if (heap == NULL) { + heap = JASWaveArcLoader::getRootHeap(); + } + bool result = mHeap.alloc(heap, mFileLength); + if (result == false) { + return false; + } + return sendLoadCmd(); } -#pragma pop /* 8029A580-8029A640 294EC0 00C0+00 0/0 1/1 0/0 .text loadTail__10JASWaveArcFP7JASHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASWaveArc::loadTail(JASHeap* param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JASWaveArcLoader/loadTail__10JASWaveArcFP7JASHeap.s" +bool JASWaveArc::loadTail(JASHeap* heap) { + if (mEntryNum < 0) { + return false; + } + JASMutexLock mutexLock(&mMutex); + if (_4c != 0) { + return false; + } + if (heap == NULL) { + heap = JASWaveArcLoader::getRootHeap(); + } + bool result = mHeap.allocTail(heap, mFileLength); + if (result == false) { + return false; + } + return sendLoadCmd(); } -#pragma pop /* 8029A640-8029A664 294F80 0024+00 0/0 2/2 0/0 .text erase__10JASWaveArcFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASWaveArc::erase() { - nofralloc -#include "asm/JSystem/JAudio2/JASWaveArcLoader/erase__10JASWaveArcFv.s" +void JASWaveArc::erase() { + mHeap.free(); } -#pragma pop /* 8029A664-8029A6AC 294FA4 0048+00 1/0 2/0 0/0 .text onDispose__10JASWaveArcFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASWaveArc::onDispose() { - nofralloc -#include "asm/JSystem/JAudio2/JASWaveArcLoader/onDispose__10JASWaveArcFv.s" +void JASWaveArc::onDispose() { + if (eraseSetup()) { + onEraseDone(); + } } -#pragma pop /* 8029A6AC-8029A70C 294FEC 0060+00 1/1 0/0 0/0 .text setEntryNum__10JASWaveArcFl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASWaveArc::setEntryNum(s32 param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JASWaveArcLoader/setEntryNum__10JASWaveArcFl.s" +void JASWaveArc::setEntryNum(s32 entryNum) { + DVDFileInfo fileInfo; + if (entryNum < 0) { + return; + } + BOOL openStatus = DVDFastOpen(entryNum, &fileInfo); + if (openStatus == FALSE) { + return; + } + mFileLength = fileInfo.length; + DVDClose(&fileInfo); + mEntryNum = entryNum; } -#pragma pop /* 8029A70C-8029A7B8 29504C 00AC+00 0/0 2/2 0/0 .text setFileName__10JASWaveArcFPCc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JASWaveArc::setFileName(char const* param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JASWaveArcLoader/setFileName__10JASWaveArcFPCc.s" +void JASWaveArc::setFileName(char const* fileName) { + char* currentDir = JASWaveArcLoader::getCurrentDir(); + size_t length = strlen(currentDir); + length = length + strlen(fileName); + JKRHeap* systemHeap = JASKernel::getSystemHeap(); + char* fileString = new (systemHeap, -4) char[length + 1]; + strcpy(fileString, currentDir); + strcat(fileString, fileName); + fileString[length] = '\0'; + int entryNum = DVDConvertPathToEntrynum(fileString); + delete[] fileString; + if (entryNum < 0) { + return; + } + setEntryNum(entryNum); } -#pragma pop /* 8029A7B8-8029A800 2950F8 0048+00 1/0 0/0 0/0 .text __dt__11JASDisposerFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm JASDisposer::~JASDisposer() { +asm void __dt__11JASDisposerFv() { nofralloc #include "asm/JSystem/JAudio2/JASWaveArcLoader/__dt__11JASDisposerFv.s" } diff --git a/libs/JSystem/JAudio2/JAUBankTable.cpp b/libs/JSystem/JAudio2/JAUBankTable.cpp index ae28058b261..23215ad7254 100644 --- a/libs/JSystem/JAudio2/JAUBankTable.cpp +++ b/libs/JSystem/JAudio2/JAUBankTable.cpp @@ -7,63 +7,13 @@ #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct JSUPtrLink {}; - -struct JSUPtrList { - /* 802DBF4C */ void append(JSUPtrLink*); -}; - -template -struct JSULink {}; -/* JSULink */ -struct JSULink__template0 {}; - -struct JAUBankTable { - /* 802A4AA0 */ void getBank(u32) const; -}; - -struct JAUBankTableDictionary { - /* 802A4A80 */ void appendBankTable(JSULink*); -}; - -// -// Forward References: -// - -extern "C" void func_802A4A80(); -extern "C" void getBank__12JAUBankTableCFUl(); - -// -// External References: -// - -extern "C" void append__10JSUPtrListFP10JSUPtrLink(); - -// -// Declarations: -// - /* 802A4A80-802A4AA0 29F3C0 0020+00 0/0 1/1 0/0 .text * appendBankTable__22JAUBankTableDictionaryFP23JSULink<12JAUBankTable> */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAUBankTableDictionary::appendBankTable(JSULink* param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JAUBankTable/func_802A4A80.s" +void JAUBankTableDictionary::appendBankTable(JSULink* bankTableList) { + append(bankTableList); } -#pragma pop /* 802A4AA0-802A4AC4 29F3E0 0024+00 0/0 2/0 0/0 .text getBank__12JAUBankTableCFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAUBankTable::getBank(u32 param_0) const { - nofralloc -#include "asm/JSystem/JAudio2/JAUBankTable/getBank__12JAUBankTableCFUl.s" +JASBank* JAUBankTable::getBank(u32 bank) const { + return mBankPtrTable.get(bank); } -#pragma pop diff --git a/libs/JSystem/JAudio2/JAUStreamFileTable.cpp b/libs/JSystem/JAudio2/JAUStreamFileTable.cpp index 7aaca2f249f..6cd6f121675 100644 --- a/libs/JSystem/JAudio2/JAUStreamFileTable.cpp +++ b/libs/JSystem/JAudio2/JAUStreamFileTable.cpp @@ -1,124 +1,49 @@ -// -// Generated By: dol2asm -// Translation Unit: JAUStreamFileTable -// - #include "JSystem/JAudio2/JAUStreamFileTable.h" #include "dol2asm.h" +#include "dolphin/dvd/dvd.h" #include "dolphin/types.h" - -// -// Types: -// - -struct JAUStreamFileTable { - /* 802A7420 */ JAUStreamFileTable(); - /* 802A742C */ void init(void const*); - /* 802A7478 */ void getNumFiles() const; - /* 802A7484 */ void getFilePath(int) const; -}; - -struct JAISoundID {}; - -struct JAUStreamDataMgr_StreamFileTable { - /* 802A74AC */ void getStreamFileEntry(JAISoundID); - /* 802A74E8 */ ~JAUStreamDataMgr_StreamFileTable(); -}; - -struct JAIStreamDataMgr { - /* 802A3AD8 */ ~JAIStreamDataMgr(); -}; - -// -// Forward References: -// - -extern "C" void __ct__18JAUStreamFileTableFv(); -extern "C" void init__18JAUStreamFileTableFPCv(); -extern "C" void getNumFiles__18JAUStreamFileTableCFv(); -extern "C" void getFilePath__18JAUStreamFileTableCFi(); -extern "C" void getStreamFileEntry__32JAUStreamDataMgr_StreamFileTableF10JAISoundID(); -extern "C" void __dt__32JAUStreamDataMgr_StreamFileTableFv(); - -// -// External References: -// - -extern "C" void __dt__16JAIStreamDataMgrFv(); -extern "C" void __dl__FPv(); -extern "C" void DVDConvertPathToEntrynum(); - -// -// Declarations: -// +#include "global.h" /* 802A7420-802A742C 2A1D60 000C+00 0/0 1/1 0/0 .text __ct__18JAUStreamFileTableFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JAUStreamFileTable::JAUStreamFileTable() { - nofralloc -#include "asm/JSystem/JAudio2/JAUStreamFileTable/__ct__18JAUStreamFileTableFv.s" +JAUStreamFileTable::JAUStreamFileTable() { + mData = NULL; } -#pragma pop /* 802A742C-802A7478 2A1D6C 004C+00 0/0 1/1 0/0 .text init__18JAUStreamFileTableFPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAUStreamFileTable::init(void const* param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JAUStreamFileTable/init__18JAUStreamFileTableFPCv.s" +void JAUStreamFileTable::init(void const* data) { + if (data == NULL) { + mData = NULL; + return; + } + const BinaryStreamFileTable* binaryTable = (const BinaryStreamFileTable*)data; + const char* ident = binaryTable->mIdentifier; + if (ident[0] == 'b' && ident[1] == 's' && ident[2] == 'f' && ident[3] == 't') { + mData = binaryTable; + } } -#pragma pop /* 802A7478-802A7484 2A1DB8 000C+00 0/0 1/1 0/0 .text getNumFiles__18JAUStreamFileTableCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAUStreamFileTable::getNumFiles() const { - nofralloc -#include "asm/JSystem/JAudio2/JAUStreamFileTable/getNumFiles__18JAUStreamFileTableCFv.s" +int JAUStreamFileTable::getNumFiles() const { + return mData->mNumFiles; } -#pragma pop /* 802A7484-802A74AC 2A1DC4 0028+00 1/1 1/1 0/0 .text getFilePath__18JAUStreamFileTableCFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAUStreamFileTable::getFilePath(int param_0) const { - nofralloc -#include "asm/JSystem/JAudio2/JAUStreamFileTable/getFilePath__18JAUStreamFileTableCFi.s" +const char* JAUStreamFileTable::getFilePath(int index) const { + if (mData == NULL) { + return 0; + } + ASSERT(index >= 0); + ASSERT(index < getNumFiles()); + char* data = (char*)mData; + return (char*)(data + *(int*)(data + 8 + (index * sizeof(s32)))); } -#pragma pop /* 802A74AC-802A74E8 2A1DEC 003C+00 1/0 0/0 0/0 .text * getStreamFileEntry__32JAUStreamDataMgr_StreamFileTableF10JAISoundID */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAUStreamDataMgr_StreamFileTable::getStreamFileEntry(JAISoundID param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JAUStreamFileTable/getStreamFileEntry__32JAUStreamDataMgr_StreamFileTableF10JAISoundID.s" +int JAUStreamDataMgr_StreamFileTable::getStreamFileEntry(JAISoundID soundId) { + const char* filePath = mStreamFileTable.getFilePath(soundId.mId.mAdvancedId.mShortId); + if (filePath == NULL) { + return -1; + } + return DVDConvertPathToEntrynum(filePath); } -#pragma pop - -/* ############################################################################################## */ -/* 803C9B50-803C9B60 026C70 0010+00 1/1 1/1 0/0 .data __vt__32JAUStreamDataMgr_StreamFileTable */ -SECTION_DATA extern void* __vt__32JAUStreamDataMgr_StreamFileTable[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)getStreamFileEntry__32JAUStreamDataMgr_StreamFileTableF10JAISoundID, - (void*)__dt__32JAUStreamDataMgr_StreamFileTableFv, -}; - -/* 802A74E8-802A7548 2A1E28 0060+00 1/0 0/0 0/0 .text __dt__32JAUStreamDataMgr_StreamFileTableFv - */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm JAUStreamDataMgr_StreamFileTable::~JAUStreamDataMgr_StreamFileTable() { - nofralloc -#include "asm/JSystem/JAudio2/JAUStreamFileTable/__dt__32JAUStreamDataMgr_StreamFileTableFv.s" -} -#pragma pop diff --git a/libs/JSystem/JFramework/JFWDisplay.cpp b/libs/JSystem/JFramework/JFWDisplay.cpp index 7134e6cf231..5e977b58e4d 100644 --- a/libs/JSystem/JFramework/JFWDisplay.cpp +++ b/libs/JSystem/JFramework/JFWDisplay.cpp @@ -573,7 +573,7 @@ void JFWDisplay::threadSleep(s64 time) { s32 status = OSDisableInterrupts(); alarm.appendLink(); - OSSetAlarm(&alarm, time, (OSAlarmHandler*)JFWThreadAlarmHandler); + OSSetAlarm(&alarm, time, JFWThreadAlarmHandler); OSSuspendThread(alarm.getThread()); OSRestoreInterrupts(status); } @@ -694,7 +694,7 @@ static void JFWDrawDoneAlarm() { s32 status = OSDisableInterrupts(); alarm.createAlarm(); alarm.appendLink(); - OSSetAlarm(&alarm, 0.5 * (*(u32*)0x800000F8 / 4), (OSAlarmHandler*)JFWGXAbortAlarmHandler); + OSSetAlarm(&alarm, 0.5 * (*(u32*)0x800000F8 / 4), JFWGXAbortAlarmHandler); GXDrawDone(); alarm.cancelAlarm(); alarm.removeLink(); diff --git a/libs/MSL_C/MSL_Common/Src/FILE_POS.c b/libs/MSL_C/MSL_Common/Src/FILE_POS.c index dad60257d73..9652ce84f86 100644 --- a/libs/MSL_C/MSL_Common/Src/FILE_POS.c +++ b/libs/MSL_C/MSL_Common/Src/FILE_POS.c @@ -4,25 +4,15 @@ // #include "MSL_C/MSL_Common/Src/FILE_POS.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -void fseek(); -static void _fseek(); -void ftell(); +#include "MSL_C/MSL_Common/Src/buffer_io.h" +#include "errno.h" // // External References: // -void __flush_buffer(); void __end_critical_region(); void __begin_critical_region(); -extern u8 errno[4 + 4 /* padding */]; // // Declarations: @@ -32,7 +22,7 @@ extern u8 errno[4 + 4 /* padding */]; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void fseek() { +asm int fseek(FILE* file, long offset, int mode) { nofralloc #include "asm/MSL_C/MSL_Common/Src/FILE_POS/fseek.s" } @@ -42,7 +32,7 @@ asm void fseek() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void _fseek() { +asm int _fseek(FILE* file, fpos_t offset, int mode) { nofralloc #include "asm/MSL_C/MSL_Common/Src/FILE_POS/_fseek.s" } @@ -52,7 +42,7 @@ static asm void _fseek() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void ftell() { +asm long ftell(FILE* file) { nofralloc #include "asm/MSL_C/MSL_Common/Src/FILE_POS/ftell.s" } diff --git a/libs/MSL_C/MSL_Common/Src/abort_exit.c b/libs/MSL_C/MSL_Common/Src/abort_exit.c index 4685d60803c..3bcc1ef7c6b 100644 --- a/libs/MSL_C/MSL_Common/Src/abort_exit.c +++ b/libs/MSL_C/MSL_Common/Src/abort_exit.c @@ -1,19 +1,8 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/abort_exit -// - #include "MSL_C/MSL_Common/Src/abort_exit.h" -#include "dol2asm.h" -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/signal.h" +#include "MSL_C/MSL_Common/Src/stddef.h" -// -// Forward References: -// - -void exit(); -void abort(); -extern u8 data_804519A0[8]; +extern unsigned char data_804519A0[8]; // // External References: @@ -24,12 +13,7 @@ void __destroy_global_chain(); void __end_critical_region(); void __begin_critical_region(); void __kill_critical_regions(); -void raise(int); -SECTION_DTORS10 extern void (*__destroy_global_chain_reference[])(void); - -// -// Declarations: -// +extern void (*__destroy_global_chain_reference[])(void); /* ############################################################################################## */ /* 8044D440-8044D540 07A160 0100+00 2/2 0/0 0/0 .bss __atexit_funcs */ @@ -37,14 +21,13 @@ static void (*__atexit_funcs[64])(void); /* ############################################################################################## */ /* 804519A0-804519A8 000EA0 0008+00 0/0 1/1 0/0 .sbss None */ -extern u8 data_804519A0[8]; -u8 data_804519A0[8]; +extern unsigned char data_804519A0[8]; +unsigned char data_804519A0[8]; /* 8045199C-804519A0 000E9C 0004+00 2/2 0/0 0/0 .sbss __console_exit */ static void (*__console_exit)(void); /* 80451998-8045199C 000E98 0004+00 1/1 1/1 0/0 .sbss __stdio_exit */ -extern void (*__stdio_exit)(void); void (*__stdio_exit)(void); /* 80451994-80451998 000E94 0004+00 2/2 0/0 0/0 .sbss __atexit_curr_func */ @@ -53,43 +36,6 @@ static int __atexit_curr_func; /* 80451990-80451994 000E90 0004+00 2/2 0/0 0/0 .sbss __aborting */ static int __aborting; -/* 803629CC-80362ABC 35D30C 00F0+00 0/0 2/2 0/0 .text exit */ -void exit(int status) { - int i; - void (**dtor)(void); - - if (!__aborting) { - __begin_critical_region(0); - __end_critical_region(0); - __destroy_global_chain(); - - dtor = __destroy_global_chain_reference; - while (*dtor != NULL) { - (*dtor)(); - dtor++; - } - - if (__stdio_exit != NULL) { - __stdio_exit(); - __stdio_exit = NULL; - } - } - - __begin_critical_region(0); - while (__atexit_curr_func > 0) - __atexit_funcs[--__atexit_curr_func](); - - __end_critical_region(0); - __kill_critical_regions(); - - if (__console_exit != NULL) { - __console_exit(); - __console_exit = NULL; - } - - _ExitProcess(); -} - /* 80362ABC-80362B58 35D3FC 009C+00 0/0 9/9 0/0 .text abort */ void abort(void) { raise(1); @@ -97,15 +43,52 @@ void abort(void) { __begin_critical_region(0); while (__atexit_curr_func > 0) - __atexit_funcs[--__atexit_curr_func](); - + __atexit_funcs[--__atexit_curr_func](); + __end_critical_region(0); __kill_critical_regions(); if (__console_exit != NULL) { - __console_exit(); - __console_exit = NULL; - } + __console_exit(); + __console_exit = NULL; + } - _ExitProcess(); + _ExitProcess(); +} + +/* 803629CC-80362ABC 35D30C 00F0+00 0/0 2/2 0/0 .text exit */ +void exit(int status) { + int i; + void (**dtor)(void); + + if (!__aborting) { + __begin_critical_region(0); + __end_critical_region(0); + __destroy_global_chain(); + + dtor = __destroy_global_chain_reference; + while (*dtor != NULL) { + (*dtor)(); + dtor++; + } + + if (__stdio_exit != NULL) { + __stdio_exit(); + __stdio_exit = NULL; + } + } + + __begin_critical_region(0); + while (__atexit_curr_func > 0) + __atexit_funcs[--__atexit_curr_func](); + + __end_critical_region(0); + __kill_critical_regions(); + + if (__console_exit != NULL) { + __console_exit(); + __console_exit = NULL; + } + + _ExitProcess(); } diff --git a/libs/MSL_C/MSL_Common/Src/alloc.c b/libs/MSL_C/MSL_Common/Src/alloc.c index 41c4f7ca57b..56c27b1f83e 100644 --- a/libs/MSL_C/MSL_Common/Src/alloc.c +++ b/libs/MSL_C/MSL_Common/Src/alloc.c @@ -1,18 +1,6 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/alloc -// - #include "MSL_C/MSL_Common/Src/alloc.h" -#include "dol2asm.h" -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/string.h" -// -// Forward References: -// - -void free(); -void __pool_free(); static void deallocate_from_fixed_pools(); static void deallocate_from_var_pools(); @@ -20,11 +8,10 @@ static void deallocate_from_var_pools(); // External References: // -SECTION_INIT void memset(); void __sys_free(); void __end_critical_region(); void __begin_critical_region(); -extern u8 data_804519A0[8]; +extern unsigned char data_804519A0[8]; // // Declarations: @@ -32,13 +19,13 @@ extern u8 data_804519A0[8]; /* ############################################################################################## */ /* 8044D540-8044D578 07A260 0038+00 1/1 0/0 0/0 .bss protopool$192 */ -static u8 protopool[56]; +static unsigned char protopool[56]; /* 80362B58-80362BC8 35D498 0070+00 0/0 2/2 0/0 .text free */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void free() { +asm void free(FILE* file) { nofralloc #include "asm/MSL_C/MSL_Common/Src/alloc/free.s" } @@ -56,11 +43,10 @@ asm void __pool_free() { /* ############################################################################################## */ /* 803A2220-803A2238 02E880 0018+00 1/1 0/0 0/0 .rodata fix_pool_sizes */ -SECTION_RODATA static u8 const fix_pool_sizes[24] = { +static unsigned char const fix_pool_sizes[24] = { 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x44, }; -COMPILER_STRIP_GATE(0x803A2220, &fix_pool_sizes); /* 80362C20-80362D78 35D560 0158+00 1/1 0/0 0/0 .text deallocate_from_fixed_pools */ #pragma push diff --git a/libs/MSL_C/MSL_Common/Src/ansi_files.c b/libs/MSL_C/MSL_Common/Src/ansi_files.c index 39b0e2c3069..931435b2de7 100644 --- a/libs/MSL_C/MSL_Common/Src/ansi_files.c +++ b/libs/MSL_C/MSL_Common/Src/ansi_files.c @@ -1,142 +1,152 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/ansi_files -// - #include "MSL_C/MSL_Common/Src/ansi_files.h" -#include "dol2asm.h" -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/alloc.h" +#include "MSL_C/MSL_Common/Src/file_io.h" -// -// Forward References: -// - -unsigned int __flush_all(); -void __close_all(); - -// -// External References: -// - -void free(FILE*); void __end_critical_region(int); void __begin_critical_region(int); -int fflush(FILE*); -void fclose(FILE*); -int __close_console(unsigned int); -int __write_console(int, int, int*, int); -int __read_console(unsigned int, unsigned int, unsigned int*); - -// -// Declarations: -// /* ############################################################################################## */ /* 8044D778-8044D878 07A498 0100+00 1/0 0/0 0/0 .bss stdin_buff */ -static u8 stdin_buff[0x100]; +static unsigned char stdin_buff[0x100]; /* 8044D678-8044D778 07A398 0100+00 1/0 0/0 0/0 .bss stdout_buff */ -static u8 stdout_buff[0x100]; +static unsigned char stdout_buff[0x100]; /* 8044D578-8044D678 07A298 0100+00 1/0 0/0 0/0 .bss stderr_buff */ -static u8 stderr_buff[0x100]; +static unsigned char stderr_buff[0x100]; /* 803D29B0-803D2AF0 -00001 0140+00 3/2 15/15 0/0 .data __files */ -SECTION_DATA extern files __files = { - {0, - 0, - 1, - 1, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - {0, 0}, - {0, 0}, - 0, - stdin_buff, - 0x00000100, - stdin_buff, - 0, - 0, - 0, - 0, - NULL, - __read_console, - __write_console, - __close_console, - NULL, - &__files.stdout}, - {1, - 0, - 2, - 1, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - {0, 0}, - {0, 0}, - 0, - stdout_buff, - 0x00000100, - stdout_buff, - 0, - 0, - 0, - 0, - NULL, - __read_console, - __write_console, - __close_console, - NULL, - &__files.stderr}, - {2, - 0, - 2, - 0, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - {0, 0}, - {0, 0}, - 0, - stderr_buff, - 0x00000100, - stderr_buff, - 0, - 0, - 0, - 0, - NULL, - __read_console, - __write_console, - __close_console, - NULL, - &__files.empty}, - {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0}, - {0, 0}, 0, NULL, 0x00000000, NULL, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL}, +extern files __files = { + { + 0, + 0, + 1, + 1, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + {0, 0}, + {0, 0}, + 0, + stdin_buff, + 0x00000100, + stdin_buff, + 0, + 0, + 0, + 0, + NULL, + __read_console, + __write_console, + __close_console, + NULL, + &__files.stdout, + }, + { + 1, + 0, + 2, + 1, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + {0, 0}, + {0, 0}, + 0, + stdout_buff, + 0x00000100, + stdout_buff, + 0, + 0, + 0, + 0, + NULL, + __read_console, + __write_console, + __close_console, + NULL, + &__files.stderr, + }, + { + 2, + 0, + 2, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + {0, 0}, + {0, 0}, + 0, + stderr_buff, + 0x00000100, + stderr_buff, + 0, + 0, + 0, + 0, + NULL, + __read_console, + __write_console, + __close_console, + NULL, + &__files.empty, + }, + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0}, + {0, 0}, 0, NULL, 0x00000000, NULL, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, + }, }; +/* 8036307C-80363124 35D9BC 00A8+00 0/0 1/1 0/0 .text __close_all */ +void __close_all(void) { + FILE* file = &__files.stdin; + FILE* last_file; + + __begin_critical_region(2); + + while (file != NULL) { + if (file->file_mode.file_kind != __closed_file) { + fclose(file); + } + + last_file = file; + file = file->next_file; + + if (last_file->is_dynamically_allocated) { + free(last_file); + } else { + last_file->file_mode.file_kind = __unavailable_file; + if (file != NULL && file->is_dynamically_allocated) { + last_file->next_file = NULL; + } + } + } + + __end_critical_region(2); +} + /* 8036300C-8036307C 35D94C 0070+00 0/0 2/2 0/0 .text __flush_all */ unsigned int __flush_all(void) { unsigned int ret = 0; @@ -151,31 +161,3 @@ unsigned int __flush_all(void) { return ret; } - -/* 8036307C-80363124 35D9BC 00A8+00 0/0 1/1 0/0 .text __close_all */ -void __close_all(void) { - FILE* file = &__files.stdin; - FILE* last_file; - - __begin_critical_region(2); - - while (file != NULL) { - if (file->file_mode.file_kind != CLOSED_FILE) { - fclose(file); - } - - last_file = file; - file = file->next_file; - - if (last_file->flag) { - free(last_file); - } else { - last_file->file_mode.file_kind = UNAVAILABLE_FILE; - if (file != NULL && file->flag) { - last_file->next_file = NULL; - } - } - } - - __end_critical_region(2); -} diff --git a/libs/MSL_C/MSL_Common/Src/arith.c b/libs/MSL_C/MSL_Common/Src/arith.c index f3833afe379..df7d40f114c 100644 --- a/libs/MSL_C/MSL_Common/Src/arith.c +++ b/libs/MSL_C/MSL_Common/Src/arith.c @@ -1,43 +1,20 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/arith -// - #include "MSL_C/MSL_Common/Src/arith.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -void div(); -void abs(); - -// -// External References: -// - -// -// Declarations: -// +#include "MSL_C/math.h" /* 80365078-803650D0 35F9B8 0058+00 0/0 1/1 0/0 .text div */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void div() { +asm div_t div(int numerator, int denominator) { nofralloc #include "asm/MSL_C/MSL_Common/Src/arith/div.s" } #pragma pop /* 803650D0-803650E0 35FA10 0010+00 0/0 66/66 225/225 .text abs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void abs() { - nofralloc -#include "asm/MSL_C/MSL_Common/Src/arith/abs.s" +int abs(int n) { + if (n < 0) + return (-n); + else + return (n); } -#pragma pop diff --git a/libs/MSL_C/MSL_Common/Src/buffer_io.c b/libs/MSL_C/MSL_Common/Src/buffer_io.c index fde0e98e1f0..376ead3b18c 100644 --- a/libs/MSL_C/MSL_Common/Src/buffer_io.c +++ b/libs/MSL_C/MSL_Common/Src/buffer_io.c @@ -1,43 +1,43 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/buffer_io -// - #include "MSL_C/MSL_Common/Src/buffer_io.h" -#include "dol2asm.h" -#include "dolphin/types.h" -// -// Forward References: -// +void __convert_from_newlines(unsigned char* buf, size_t* n) {} -void __flush_buffer(); -void __prep_buffer(); - -// -// External References: -// - -// -// Declarations: -// - -/* 803650E0-803651A4 35FA20 00C4+00 0/0 5/5 0/0 .text __flush_buffer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __flush_buffer() { - nofralloc -#include "asm/MSL_C/MSL_Common/Src/buffer_io/__flush_buffer.s" -} -#pragma pop +void __convert_to_newlines(unsigned char* buf, size_t* n) {} /* 803651A4-803651D8 35FAE4 0034+00 0/0 2/2 0/0 .text __prep_buffer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __prep_buffer() { - nofralloc -#include "asm/MSL_C/MSL_Common/Src/buffer_io/__prep_buffer.s" +void __prep_buffer(FILE* file) { + file->buffer_ptr = file->buffer; + file->buffer_length = file->buffer_size; + file->buffer_length -= file->position & file->buffer_alignment; + file->buffer_position = file->position; +} + +/* 803650E0-803651A4 35FA20 00C4+00 0/0 5/5 0/0 .text __flush_buffer */ +int __flush_buffer(FILE* file, size_t* bytes_flushed) { + size_t buffer_len; + int ioresult; + + buffer_len = file->buffer_ptr - file->buffer; + + if (buffer_len) { + file->buffer_length = buffer_len; + + if (!file->file_mode.binary_io) + __convert_from_newlines(file->buffer, (size_t*)&file->buffer_length); + + ioresult = (*file->write_fn)(file->handle, file->buffer, (size_t*)&file->buffer_length, + file->idle_fn); + + if (bytes_flushed) + *bytes_flushed = file->buffer_length; + + if (ioresult) + return (ioresult); + + file->position += file->buffer_length; + } + + __prep_buffer(file); + + return 0; } -#pragma pop diff --git a/libs/MSL_C/MSL_Common/Src/char_io.c b/libs/MSL_C/MSL_Common/Src/char_io.c index 5fd56198bbd..2c9850ed764 100644 --- a/libs/MSL_C/MSL_Common/Src/char_io.c +++ b/libs/MSL_C/MSL_Common/Src/char_io.c @@ -1,39 +1,17 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/char_io -// - #include "MSL_C/MSL_Common/Src/char_io.h" -#include "dol2asm.h" -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/FILE_POS.h" +#include "MSL_C/MSL_Common/Src/buffer_io.h" +#include "MSL_C/MSL_Common/Src/misc_io.h" +#include "MSL_C/MSL_Common/Src/wchar_io.h" -// -// Forward References: -// - -void __put_char(); - -// -// External References: -// - -void __flush_buffer(); -void __prep_buffer(); void __end_critical_region(); void __begin_critical_region(); -void fseek(); -void __stdio_atexit(); -void fwide(); - -// -// Declarations: -// /* 803651D8-803652AC 35FB18 00D4+00 0/0 1/1 0/0 .text fputs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm int fputs(const char*, FILE*) { +asm int fputs(const char* str, FILE* stream) { nofralloc #include "asm/MSL_C/MSL_Common/Src/char_io/fputs.s" } @@ -43,7 +21,7 @@ asm int fputs(const char*, FILE*) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __put_char() { +asm int __put_char(int c, FILE* stream) { nofralloc #include "asm/MSL_C/MSL_Common/Src/char_io/__put_char.s" } diff --git a/libs/MSL_C/MSL_Common/Src/ctype.c b/libs/MSL_C/MSL_Common/Src/ctype.c index beb4563240b..e3ef04d0499 100644 --- a/libs/MSL_C/MSL_Common/Src/ctype.c +++ b/libs/MSL_C/MSL_Common/Src/ctype.c @@ -1,57 +1,43 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/ctype -// - #include "MSL_C/MSL_Common/Src/ctype.h" -#include "dol2asm.h" -#include "dolphin/types.h" -// -// Forward References: -// - -extern unsigned char __upper_map[256]; - -// -// External References: -// - -// -// Declarations: -// +#define ctrl __control_char +#define motn __motion_char +#define spac __space_char +#define punc __punctuation +#define digi __digit +#define hexd __hex_digit +#define lowc __lower_case +#define uppc __upper_case +#define dhex (hexd | digi) +#define uhex (hexd | uppc) +#define lhex (hexd | lowc) /* ############################################################################################## */ /* 803D2C18-803D2D18 02FD38 0100+00 0/0 3/3 0/0 .data __ctype_map */ -SECTION_DATA extern unsigned char __ctype_map[256] = { - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x08, 0x08, 0x08, 0x08, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +unsigned char __ctype_map[256] = { + // clang-format off + ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, motn, motn, motn, motn, motn, ctrl, ctrl, + ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, + spac, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, + dhex, dhex, dhex, dhex, dhex, dhex, dhex, dhex, dhex, dhex, punc, punc, punc, punc, punc, punc, + punc, uhex, uhex, uhex, uhex, uhex, uhex, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, + uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, punc, punc, punc, punc, punc, + punc, lhex, lhex, lhex, lhex, lhex, lhex, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, + lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, punc, punc, punc, punc, ctrl, + // clang-format on }; /* 803D2D18-803D2E18 02FE38 0100+00 1/1 3/3 0/0 .data __lower_map */ -SECTION_DATA extern unsigned char __lower_map[256] = { +unsigned char __lower_map[256] = { + // clang-format off 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, - 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, - 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, - 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, - 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, - 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, + ' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', + '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '[', '\\', ']', '^', '_', + '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 0x7F, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, @@ -60,6 +46,7 @@ SECTION_DATA extern unsigned char __lower_map[256] = { 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, + // clang-format on }; /* 80365470-80365494 35FDB0 0024+00 0/0 4/4 0/0 .text tolower */ @@ -75,15 +62,15 @@ int tolower(int __c) { /* ############################################################################################## */ /* 803D2E18-803D2F18 02FF38 0100+00 0/0 1/1 0/0 .data __upper_map */ -SECTION_DATA extern unsigned char __upper_map[256] = { +unsigned char __upper_map[256] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, - 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, - 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, - 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, - 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, - 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, + ' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', + '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', + '`', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '{', '|', '}', '~', 0x7F, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, @@ -92,4 +79,5 @@ SECTION_DATA extern unsigned char __upper_map[256] = { 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, + // clang-format on }; diff --git a/libs/MSL_C/MSL_Common/Src/direct_io.c b/libs/MSL_C/MSL_Common/Src/direct_io.c index 47b4141973d..8c6d8a56b01 100644 --- a/libs/MSL_C/MSL_Common/Src/direct_io.c +++ b/libs/MSL_C/MSL_Common/Src/direct_io.c @@ -1,53 +1,129 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/direct_io -// - #include "MSL_C/MSL_Common/Src/direct_io.h" +#include "MSL_C/MSL_Common/Src/FILE_POS.h" +#include "MSL_C/MSL_Common/Src/ansi_files.h" +#include "MSL_C/MSL_Common/Src/buffer_io.h" +#include "MSL_C/MSL_Common/Src/mem.h" +#include "MSL_C/MSL_Common/Src/misc_io.h" +#include "MSL_C/MSL_Common/Src/string.h" +#include "MSL_C/MSL_Common/Src/wchar_io.h" #include "dol2asm.h" -#include "dolphin/types.h" -// -// Forward References: -// - -void __fwrite(); -void fwrite(); - -// -// External References: -// - -SECTION_INIT void memcpy(); -void __flush_buffer(); -void __prep_buffer(); void __end_critical_region(); void __begin_critical_region(); -void fseek(); -void __memrchr(); -void __stdio_atexit(); -void fwide(); - -// -// Declarations: -// /* 80365494-803657A0 35FDD4 030C+00 1/1 0/0 0/0 .text __fwrite */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __fwrite() { - nofralloc -#include "asm/MSL_C/MSL_Common/Src/direct_io/__fwrite.s" +size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream) { + size_t retval; + + __begin_critical_region(2); + retval = __fwrite(buffer, size, count, stream); + __end_critical_region(2); + + return (retval); } -#pragma pop /* 803657A0-8036581C 3600E0 007C+00 0/0 1/1 0/0 .text fwrite */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void fwrite() { - nofralloc -#include "asm/MSL_C/MSL_Common/Src/direct_io/fwrite.s" +size_t __fwrite(const void* buffer, size_t size, size_t count, FILE* stream) { + unsigned char* write_ptr; + size_t num_bytes, bytes_to_go, bytes_written; + int ioresult, always_buffer; + +#ifndef __NO_WIDE_CHAR + if (fwide(stream, 0) == 0) + fwide(stream, -1); +#endif + + bytes_to_go = size * count; + + if (!bytes_to_go || stream->file_state.error || stream->file_mode.file_kind == __closed_file) + return 0; + + if (stream->file_mode.file_kind == __console_file) + __stdio_atexit(); + + always_buffer = !stream->file_mode.binary_io || stream->file_mode.buffer_mode == _IOFBF || + stream->file_mode.buffer_mode == _IOLBF; + + if (stream->file_state.io_state == __neutral) { + if (stream->file_mode.io_mode & __write) { + if (stream->file_mode.io_mode & __append) { + if (fseek(stream, 0, SEEK_END)) + return 0; + } + stream->file_state.io_state = __writing; + + __prep_buffer(stream); + } + } + + if (stream->file_state.io_state != __writing) { + set_error(stream); + return 0; + } + + write_ptr = (unsigned char*)buffer; + bytes_written = 0; + + if (bytes_to_go && (stream->buffer_ptr != stream->buffer || always_buffer)) { + stream->buffer_length = stream->buffer_size - (stream->buffer_ptr - stream->buffer); + + do { + unsigned char* newline = NULL; + + num_bytes = stream->buffer_length; + + if (num_bytes > bytes_to_go) + num_bytes = bytes_to_go; + if (stream->file_mode.buffer_mode == _IOLBF && num_bytes) + if ((newline = (unsigned char*)__memrchr(write_ptr, '\n', num_bytes)) != NULL) + num_bytes = newline + 1 - write_ptr; + + if (num_bytes) { + memcpy(stream->buffer_ptr, write_ptr, num_bytes); + + write_ptr += num_bytes; + bytes_written += num_bytes; + bytes_to_go -= num_bytes; + + stream->buffer_ptr += num_bytes; + stream->buffer_length -= num_bytes; + } + if (!stream->buffer_length || newline != NULL || + (stream->file_mode.buffer_mode == _IONBF)) { + ioresult = __flush_buffer(stream, NULL); + + if (ioresult) { + set_error(stream); + bytes_to_go = 0; + break; + } + } + } while (bytes_to_go && always_buffer); + } + + if (bytes_to_go && !always_buffer) { + unsigned char* save_buffer = stream->buffer; + size_t save_size = stream->buffer_size; + + stream->buffer = write_ptr; + stream->buffer_size = bytes_to_go; + stream->buffer_ptr = write_ptr + bytes_to_go; + + if (__flush_buffer(stream, &num_bytes) != __no_io_error) + set_error(stream); + + bytes_written += num_bytes; + + stream->buffer = save_buffer; + stream->buffer_size = save_size; + + __prep_buffer(stream); + + stream->buffer_length = 0; + } + + if (stream->file_mode.buffer_mode != _IOFBF) + stream->buffer_length = 0; + + return ((bytes_written + size - 1) / size); } -#pragma pop diff --git a/libs/MSL_C/MSL_Common/Src/errno.c b/libs/MSL_C/MSL_Common/Src/errno.c index dca8350e9d9..ee5aafe92c6 100644 --- a/libs/MSL_C/MSL_Common/Src/errno.c +++ b/libs/MSL_C/MSL_Common/Src/errno.c @@ -1,10 +1,4 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/errno -// - #include "errno.h" -/* ############################################################################################## */ /* 804519A8-804519B0 000EA8 0004+04 0/0 6/6 0/0 .sbss errno */ int errno; diff --git a/libs/MSL_C/MSL_Common/Src/extras.c b/libs/MSL_C/MSL_Common/Src/extras.c index 4fc1b12b314..f5f7b7c5314 100644 --- a/libs/MSL_C/MSL_Common/Src/extras.c +++ b/libs/MSL_C/MSL_Common/Src/extras.c @@ -1,35 +1,12 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/extras -// - #include "MSL_C/MSL_Common/Src/extras.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -void strnicmp(); -void stricmp(); - -// -// External References: -// - -void __msl_strnicmp(); -extern u8 __lower_map[256]; - -// -// Declarations: -// +#include "MSL_C/MSL_Common/Src/ctype.h" +#include "MSL_C/MSL_Common/Src/file_io.h" /* 8036CA74-8036CA94 3673B4 0020+00 0/0 1/1 0/0 .text strnicmp */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void strnicmp() { +asm int strnicmp(const char* str1, const char* str2, int n) { nofralloc #include "asm/MSL_C/MSL_Common/Src/extras/strnicmp.s" } @@ -39,7 +16,7 @@ asm void strnicmp() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void stricmp() { +asm int stricmp(const char* str1, const char* str2) { nofralloc #include "asm/MSL_C/MSL_Common/Src/extras/stricmp.s" } diff --git a/libs/MSL_C/MSL_Common/Src/file_io.c b/libs/MSL_C/MSL_Common/Src/file_io.c index 332ee0b5a2b..0638a7c9d2d 100644 --- a/libs/MSL_C/MSL_Common/Src/file_io.c +++ b/libs/MSL_C/MSL_Common/Src/file_io.c @@ -1,60 +1,83 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/file_io -// - #include "MSL_C/MSL_Common/Src/file_io.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -void __msl_strnicmp(); -void fflush(); -void fclose(); - -// -// External References: -// - -void free(); -void __flush_all(); -void __flush_buffer(); -void ftell(); -extern u8 __lower_map[256]; - -// -// Declarations: -// +#include "MSL_C/MSL_Common/Src/FILE_POS.h" +#include "MSL_C/MSL_Common/Src/alloc.h" +#include "MSL_C/MSL_Common/Src/buffer_io.h" +#include "MSL_C/MSL_Common/Src/ctype.h" /* 8036581C-803658C0 36015C 00A4+00 0/0 1/1 0/0 .text __msl_strnicmp */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __msl_strnicmp() { +asm int __msl_strnicmp(const char* str1, const char* str2, size_t n) { nofralloc #include "asm/MSL_C/MSL_Common/Src/file_io/__msl_strnicmp.s" } #pragma pop -/* 803658C0-803659F8 360200 0138+00 0/0 4/4 0/0 .text fflush */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void fflush() { - nofralloc -#include "asm/MSL_C/MSL_Common/Src/file_io/fflush.s" -} -#pragma pop - /* 803659F8-80365BB4 360338 01BC+00 0/0 1/1 0/0 .text fclose */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void fclose() { - nofralloc -#include "asm/MSL_C/MSL_Common/Src/file_io/fclose.s" +int fclose(FILE* file) { + int flush_result, close_result; + + if (file == NULL) + return (-1); + if (file->file_mode.file_kind == __closed_file) + return (0); + + flush_result = fflush(file); + + close_result = (*file->close_fn)(file->handle); + + file->file_mode.file_kind = __closed_file; + file->handle = NULL; + + if (file->file_state.free_buffer) + free((FILE*)file->buffer); + return ((flush_result || close_result) ? -1 : 0); +} + +/* 803658C0-803659F8 360200 0138+00 0/0 4/4 0/0 .text fflush */ +int fflush(FILE* file) { + int pos; + + if (file == NULL) { + return __flush_all(); + } + + if (file->file_state.error != 0 || file->file_mode.file_kind == __closed_file) { + return -1; + } + + if (file->file_mode.io_mode == 1) { + return 0; + } + + if (file->file_state.io_state >= 3) { + file->file_state.io_state = 2; + } + + if (file->file_state.io_state == 2) { + file->buffer_length = 0; + } + + if (file->file_state.io_state != 1) { + file->file_state.io_state = 0; + return 0; + } + + if (file->file_mode.file_kind != __disk_file) { + pos = 0; + } else { + pos = ftell(file); + } + + if (__flush_buffer(file, 0) != 0) { + file->file_state.error = 1; + file->buffer_length = 0; + return -1; + } + + file->file_state.io_state = 0; + file->position = pos; + file->buffer_length = 0; + return 0; } -#pragma pop diff --git a/libs/MSL_C/MSL_Common/Src/float.c b/libs/MSL_C/MSL_Common/Src/float.c index ac0853bb14e..4d03906f041 100644 --- a/libs/MSL_C/MSL_Common/Src/float.c +++ b/libs/MSL_C/MSL_Common/Src/float.c @@ -1,43 +1,17 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/float -// - #include "MSL_C/MSL_Common/Src/float.h" -#include "dol2asm.h" -#include "dolphin/types.h" -// -// Forward References: -// - -extern u32 __float_nan; -extern u32 __float_huge; -extern u32 __float_max; -extern u32 __float_epsilon; -extern f32 data_80450AF0; - -// -// External References: -// - -// -// Declarations: -// - -/* ############################################################################################## */ /* 80450AE0-80450AE4 000560 0004+00 0/0 204/204 1060/1060 .sdata __float_nan */ -SECTION_SDATA extern u32 __float_nan = 0x7FFFFFFF; +extern unsigned long __float_nan = 0x7FFFFFFF; /* 80450AE4-80450AE8 000564 0004+00 0/0 1/1 0/0 .sdata __float_huge */ -SECTION_SDATA extern u32 __float_huge = 0x7F800000; +extern unsigned long __float_huge = 0x7F800000; /* 80450AE8-80450AEC 000568 0004+00 0/0 18/18 14/14 .sdata __float_max */ -SECTION_SDATA extern u32 __float_max = 0x7F7FFFFF; +extern unsigned long __float_max = 0x7F7FFFFF; /* 80450AEC-80450AF0 00056C 0004+00 0/0 28/28 0/0 .sdata __float_epsilon */ -SECTION_SDATA extern u32 __float_epsilon = 0x34000000; +extern unsigned long __float_epsilon = 0x34000000; /* 80450AF0-80450AF4 000570 0004+00 0/0 1/1 0/0 .sdata None */ -SECTION_SDATA extern f32 data_80450AF0; -SECTION_SDATA f32 data_80450AF0 = -0.0f; +extern float data_80450AF0; +float data_80450AF0 = -0.0f; diff --git a/libs/MSL_C/MSL_Common/Src/mbstring.c b/libs/MSL_C/MSL_Common/Src/mbstring.c index cd9b3e72f6f..82c7bcd9571 100644 --- a/libs/MSL_C/MSL_Common/Src/mbstring.c +++ b/libs/MSL_C/MSL_Common/Src/mbstring.c @@ -1,41 +1,16 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/mbstring -// - #include "MSL_C/MSL_Common/Src/mbstring.h" +#include "MSL_C/MSL_Common/Src/string.h" #include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -void wcstombs(); - -// -// External References: -// - -void strncpy(); - -// -// Declarations: -// /* ############################################################################################## */ /* 80456668-80456670 004C68 0004+04 1/1 0/0 0/0 .sdata2 @74 */ -SECTION_SDATA2 static u32 lit_74[1 + 1 /* padding */] = { - 0x0000C0E0, - /* padding */ - 0x00000000, -}; +SECTION_SDATA2 static unsigned long lit_74 = 0x0000C0E0; /* 80365F74-8036608C 3608B4 0118+00 0/0 1/1 0/0 .text wcstombs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void wcstombs() { +asm size_t wcstombs(char* dst, const wchar_t* src, size_t n) { nofralloc #include "asm/MSL_C/MSL_Common/Src/mbstring/wcstombs.s" } diff --git a/libs/MSL_C/MSL_Common/Src/mem.c b/libs/MSL_C/MSL_Common/Src/mem.c index bdf297797a7..e218ae1f183 100644 --- a/libs/MSL_C/MSL_Common/Src/mem.c +++ b/libs/MSL_C/MSL_Common/Src/mem.c @@ -1,101 +1,25 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/mem -// - #include "MSL_C/MSL_Common/Src/mem.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -unsigned char* __memrchr(unsigned char*, unsigned char, size_t); -void* memchr(unsigned char*, int, size_t); -void* memmove(void* dst, const void* src, size_t len); - -// -// External References: -// - -void __copy_longs_rev_unaligned(void* dst, const void* src, size_t len); -void __copy_longs_unaligned(void* dst, const void* src, size_t len); -void __copy_longs_rev_aligned(void* dst, const void* src, size_t len); -void __copy_longs_aligned(void* dst, const void* src, size_t len); - -// -// Declarations: -// - -/* 8036608C-803660D8 3609CC 004C+00 0/0 19/19 5/5 .text memcmp */ -int memcmp(const void* __s1, const void* __s2, size_t __n) { - const unsigned char* val1 = ((const unsigned char*)__s1 - 1); - const unsigned char* val2 = ((const unsigned char*)__s2 - 1); - - size_t size = __n + 1; - while (--size > 0) { - if (*++val1 != *++val2) { - return val1[0] < val2[0] ? -1 : 1; - } - } - - return 0; -} - -/* 803660D8-80366104 360A18 002C+00 0/0 1/1 0/0 .text __memrchr */ -unsigned char* __memrchr(unsigned char* s, unsigned char c, size_t n) { - int n_count; - size_t char_check; - - char_check = (unsigned char)c; - s = &s[n]; - n_count = n + 1; - while (--n_count) { - if (*--s == char_check) { - return s; - } - } - - return NULL; -} - -/* 80366104-80366130 360A44 002C+00 0/0 1/1 0/0 .text memchr */ -void* memchr(unsigned char* s, int c, size_t n) { - int n_count; - size_t char_check; - - char_check = (unsigned char)c; - s = &s[-1]; - n_count = n + 1; - while (--n_count) { - if (*++s == char_check) { - return s; - } - } - - return NULL; -} +#include "MSL_C/MSL_Common/Src/mem_funcs.h" /* 80366130-803661FC 360A70 00CC+00 0/0 2/2 0/0 .text memmove */ -void* memmove(void* dst, const void* src, size_t len) { +void* memmove(void* dst, const void* src, size_t n) { unsigned char* csrc; unsigned char* cdst; int reverse = (unsigned int)src < (unsigned int)dst; - if (len >= 32) { + if (n >= 32) { if (((unsigned int)dst ^ (unsigned int)src) & 3) { if (!reverse) { - __copy_longs_unaligned(dst, src, len); + __copy_longs_unaligned(dst, src, n); } else { - __copy_longs_rev_unaligned(dst, src, len); + __copy_longs_rev_unaligned(dst, src, n); } } else { if (!reverse) { - __copy_longs_aligned(dst, src, len); + __copy_longs_aligned(dst, src, n); } else { - __copy_longs_rev_aligned(dst, src, len); + __copy_longs_rev_aligned(dst, src, n); } } @@ -104,17 +28,17 @@ void* memmove(void* dst, const void* src, size_t len) { if (!reverse) { csrc = ((unsigned char*)src) - 1; cdst = ((unsigned char*)dst) - 1; - len++; + n++; - while (--len > 0) { + while (--n > 0) { *++cdst = *++csrc; } } else { - csrc = (unsigned char*)src + len; - cdst = (unsigned char*)dst + len; - len++; + csrc = (unsigned char*)src + n; + cdst = (unsigned char*)dst + n; + n++; - while (--len > 0) { + while (--n > 0) { *--cdst = *--csrc; } } @@ -122,3 +46,41 @@ void* memmove(void* dst, const void* src, size_t len) { return dst; } + +/* 80366104-80366130 360A44 002C+00 0/0 1/1 0/0 .text memchr */ +void* memchr(const void* ptr, int ch, size_t count) { + const unsigned char* p; + + unsigned long v = (ch & 0xff); + + for (p = (unsigned char*)ptr - 1, count++; --count;) + if ((*++p & 0xff) == v) + return (void*)p; + + return NULL; +} + +/* 803660D8-80366104 360A18 002C+00 0/0 1/1 0/0 .text __memrchr */ +void* __memrchr(const void* ptr, int ch, size_t count) { + const unsigned char* p; + + unsigned long v = (ch & 0xff); + + for (p = (unsigned char*)ptr + count, count++; --count;) + if (*--p == v) + return (void*)p; + + return NULL; +} + +/* 8036608C-803660D8 3609CC 004C+00 0/0 19/19 5/5 .text memcmp */ +int memcmp(const void* lhs, const void* rhs, size_t count) { + const unsigned char* p1; + const unsigned char* p2; + + for (p1 = (const unsigned char*)lhs - 1, p2 = (const unsigned char*)rhs - 1, count++; --count;) + if (*++p1 != *++p2) + return ((*p1 < *p2) ? -1 : +1); + + return 0; +} diff --git a/libs/MSL_C/MSL_Common/Src/mem_funcs.c b/libs/MSL_C/MSL_Common/Src/mem_funcs.c index 0c3966539f2..9c737aa4203 100644 --- a/libs/MSL_C/MSL_Common/Src/mem_funcs.c +++ b/libs/MSL_C/MSL_Common/Src/mem_funcs.c @@ -1,65 +1,221 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/mem_funcs -// - #include "MSL_C/MSL_Common/Src/mem_funcs.h" -#include "dol2asm.h" -#include "dolphin/types.h" -// -// Forward References: -// - -void __copy_longs_rev_unaligned(); -void __copy_longs_unaligned(); -void __copy_longs_rev_aligned(); -void __copy_longs_aligned(); - -// -// External References: -// - -// -// Declarations: -// - -/* 803661FC-803662A8 360B3C 00AC+00 0/0 1/1 0/0 .text __copy_longs_rev_unaligned */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __copy_longs_rev_unaligned() { - nofralloc -#include "asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_rev_unaligned.s" -} -#pragma pop - -/* 803662A8-80366368 360BE8 00C0+00 0/0 1/1 0/0 .text __copy_longs_unaligned */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __copy_longs_unaligned() { - nofralloc -#include "asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_unaligned.s" -} -#pragma pop - -/* 80366368-80366410 360CA8 00A8+00 0/0 1/1 0/0 .text __copy_longs_rev_aligned */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __copy_longs_rev_aligned() { - nofralloc -#include "asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_rev_aligned.s" -} -#pragma pop +#define cps ((unsigned char*)src) +#define cpd ((unsigned char*)dst) +#define lps ((unsigned long*)src) +#define lpd ((unsigned long*)dst) +#define deref_auto_inc(p) *++(p) /* 80366410-803664CC 360D50 00BC+00 0/0 1/1 0/0 .text __copy_longs_aligned */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __copy_longs_aligned() { - nofralloc -#include "asm/MSL_C/MSL_Common/Src/mem_funcs/__copy_longs_aligned.s" +void __copy_longs_aligned(void* dst, const void* src, size_t n) { + unsigned long i; + + i = (-(unsigned long)dst) & 3; + + cps = ((unsigned char*)src) - 1; + cpd = ((unsigned char*)dst) - 1; + + if (i) { + n -= i; + + do + deref_auto_inc(cpd) = deref_auto_inc(cps); + while (--i); + } + + lps = ((unsigned long*)(cps + 1)) - 1; + lpd = ((unsigned long*)(cpd + 1)) - 1; + + i = n >> 5; + + if (i) + do { + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + } while (--i); + + i = (n & 31) >> 2; + + if (i) + do + deref_auto_inc(lpd) = deref_auto_inc(lps); + while (--i); + + cps = ((unsigned char*)(lps + 1)) - 1; + cpd = ((unsigned char*)(lpd + 1)) - 1; + + n &= 3; + + if (n) + do + deref_auto_inc(cpd) = deref_auto_inc(cps); + while (--n); + + return; +} + +/* 80366368-80366410 360CA8 00A8+00 0/0 1/1 0/0 .text __copy_longs_rev_aligned */ +void __copy_longs_rev_aligned(void* dst, const void* src, size_t n) { + unsigned long i; + + cps = ((unsigned char*)src) + n; + cpd = ((unsigned char*)dst) + n; + + i = ((unsigned long)cpd) & 3; + + if (i) { + n -= i; + + do + *--cpd = *--cps; + while (--i); + } + + i = n >> 5; + + if (i) + do { + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + } while (--i); + + i = (n & 31) >> 2; + + if (i) + do + *--lpd = *--lps; + while (--i); + + n &= 3; + + if (n) + do + *--cpd = *--cps; + while (--n); + + return; +} + +/* 803662A8-80366368 360BE8 00C0+00 0/0 1/1 0/0 .text __copy_longs_unaligned */ +void __copy_longs_unaligned(void* dst, const void* src, size_t n) { + unsigned long i, v1, v2; + unsigned int src_offset, left_shift, right_shift; + + i = (-(unsigned long)dst) & 3; + + cps = ((unsigned char*)src) - 1; + cpd = ((unsigned char*)dst) - 1; + + if (i) { + n -= i; + + do + deref_auto_inc(cpd) = deref_auto_inc(cps); + while (--i); + } + + src_offset = ((unsigned int)(cps + 1)) & 3; + + left_shift = src_offset << 3; + right_shift = 32 - left_shift; + + cps -= src_offset; + + lps = ((unsigned long*)(cps + 1)) - 1; + lpd = ((unsigned long*)(cpd + 1)) - 1; + + i = n >> 3; + + v1 = deref_auto_inc(lps); + + do { + v2 = deref_auto_inc(lps); + deref_auto_inc(lpd) = (v1 << left_shift) | (v2 >> right_shift); + v1 = deref_auto_inc(lps); + deref_auto_inc(lpd) = (v2 << left_shift) | (v1 >> right_shift); + } while (--i); + + if (n & 4) { + v2 = deref_auto_inc(lps); + deref_auto_inc(lpd) = (v1 << left_shift) | (v2 >> right_shift); + } + + cps = ((unsigned char*)(lps + 1)) - 1; + cpd = ((unsigned char*)(lpd + 1)) - 1; + + n &= 3; + + if (n) { + cps -= 4 - src_offset; + do + deref_auto_inc(cpd) = deref_auto_inc(cps); + while (--n); + } + + return; +} + +/* 803661FC-803662A8 360B3C 00AC+00 0/0 1/1 0/0 .text __copy_longs_rev_unaligned */ +void __copy_longs_rev_unaligned(void* dst, const void* src, size_t n) { + unsigned long i, v1, v2; + unsigned int src_offset, left_shift, right_shift; + + cps = ((unsigned char*)src) + n; + cpd = ((unsigned char*)dst) + n; + + i = ((unsigned long)cpd) & 3; + + if (i) { + n -= i; + + do + *--cpd = *--cps; + while (--i); + } + + src_offset = ((unsigned int)cps) & 3; + + left_shift = src_offset << 3; + right_shift = 32 - left_shift; + + cps += 4 - src_offset; + + i = n >> 3; + + v1 = *--lps; + + do { + v2 = *--lps; + *--lpd = (v2 << left_shift) | (v1 >> right_shift); + v1 = *--lps; + *--lpd = (v1 << left_shift) | (v2 >> right_shift); + } while (--i); + + if (n & 4) { + v2 = *--lps; + *--lpd = (v2 << left_shift) | (v1 >> right_shift); + } + + n &= 3; + + if (n) { + cps += src_offset; + do + *--cpd = *--cps; + while (--n); + } + + return; } -#pragma pop diff --git a/libs/MSL_C/MSL_Common/Src/misc_io.c b/libs/MSL_C/MSL_Common/Src/misc_io.c index 9dd9827d9b1..86cda57b235 100644 --- a/libs/MSL_C/MSL_Common/Src/misc_io.c +++ b/libs/MSL_C/MSL_Common/Src/misc_io.c @@ -1,30 +1,8 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/misc_io -// - #include "MSL_C/MSL_Common/Src/misc_io.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -void __stdio_atexit(); - -// -// External References: -// - -void __close_all(void); -extern void (*__stdio_exit)(void); - -// -// Declarations: -// +#include "MSL_C/MSL_Common/Src/abort_exit.h" +#include "MSL_C/MSL_Common/Src/ansi_files.h" /* 803664CC-803664DC 360E0C 0010+00 0/0 2/2 0/0 .text __stdio_atexit */ -void __stdio_atexit() { +void __stdio_atexit(void) { __stdio_exit = __close_all; } diff --git a/libs/MSL_C/MSL_Common/Src/printf.c b/libs/MSL_C/MSL_Common/Src/printf.c index fa801a005a3..814b6c0e61a 100644 --- a/libs/MSL_C/MSL_Common/Src/printf.c +++ b/libs/MSL_C/MSL_Common/Src/printf.c @@ -4,15 +4,17 @@ // #include "MSL_C/MSL_Common/Src/printf.h" +#include "MSL_C/MSL_Common/Src/ctype.h" +#include "MSL_C/MSL_Common/Src/mem.h" +#include "MSL_C/MSL_Common/Src/string.h" +#include "MSL_C/MSL_Common/Src/wchar_io.h" #include "Runtime.PPCEABI.H/__va_arg.h" #include "dol2asm.h" -#include "dolphin/types.h" // // Forward References: // -void fprintf(); void __StringWrite(); void __FileWrite(); void __pformatter(); @@ -28,7 +30,6 @@ extern char const* const MSL_Common_Src_printf__stringBase0; // External References: // -SECTION_INIT void memcpy(); void __div2u(); void __mod2u(); void __num2dec(); @@ -36,13 +37,6 @@ void __end_critical_region(); void __begin_critical_region(); void fwrite(); void wcstombs(); -void memchr(); -void strchr(); -void strcpy(); -void strlen(); -void fwide(); -extern void* __files[80]; -extern u8 __ctype_map[256]; // // Declarations: @@ -52,7 +46,7 @@ extern u8 __ctype_map[256]; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm size_t sprintf(const char*, const char*, ...) { +asm int sprintf(const char* str, const char* format, ...) { nofralloc #include "asm/MSL_C/MSL_Common/Src/printf/sprintf.s" } @@ -62,7 +56,7 @@ asm size_t sprintf(const char*, const char*, ...) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm size_t snprintf(const char*, size_t, const char*, ...) { +asm int snprintf(const char* str, size_t n, const char* format, ...) { nofralloc #include "asm/MSL_C/MSL_Common/Src/printf/snprintf.s" } @@ -72,7 +66,7 @@ asm size_t snprintf(const char*, size_t, const char*, ...) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm size_t vsnprintf(char* buffer, size_t buffer_size, const char* format, va_list args) { +asm int vsnprintf(char* str, size_t n, const char* format, va_list arg) { nofralloc #include "asm/MSL_C/MSL_Common/Src/printf/vsnprintf.s" } @@ -82,7 +76,7 @@ asm size_t vsnprintf(char* buffer, size_t buffer_size, const char* format, va_li #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm size_t vprintf(const char*, va_list) { +asm int vprintf(const char* format, va_list arg) { nofralloc #include "asm/MSL_C/MSL_Common/Src/printf/vprintf.s" } @@ -92,7 +86,7 @@ asm size_t vprintf(const char*, va_list) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void fprintf() { +asm int fprintf(FILE* stream, const char* format, ...) { nofralloc #include "asm/MSL_C/MSL_Common/Src/printf/fprintf.s" } @@ -102,7 +96,7 @@ asm void fprintf() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm size_t printf(const char*, ...) { +asm int printf(const char* format, ...) { nofralloc #include "asm/MSL_C/MSL_Common/Src/printf/printf.s" } @@ -136,7 +130,7 @@ SECTION_DEAD static char const* const stringBase_803A2318 = ""; #pragma pop /* 80450AD8-80450AE0 000558 0002+06 1/1 0/0 0/0 .sdata @wstringBase0 */ -SECTION_SDATA static u8 data_80450AD8[2 + 6 /* padding */] = { +SECTION_SDATA static unsigned char data_80450AD8[2 + 6 /* padding */] = { 0x00, 0x00, /* padding */ @@ -176,7 +170,7 @@ SECTION_DEAD static char const* const pad_803A233D = "\0\0"; #pragma pop /* 80456670-80456678 004C70 0008+00 1/1 0/0 0/0 .sdata2 @1089 */ -SECTION_SDATA2 static u8 lit_1089[8] = { +SECTION_SDATA2 static unsigned char lit_1089[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; diff --git a/libs/MSL_C/MSL_Common/Src/scanf.c b/libs/MSL_C/MSL_Common/Src/scanf.c index f3f3fe048f5..f6640613eb1 100644 --- a/libs/MSL_C/MSL_Common/Src/scanf.c +++ b/libs/MSL_C/MSL_Common/Src/scanf.c @@ -1,31 +1,10 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/scanf -// - #include "MSL_C/MSL_Common/Src/scanf.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -void __StringRead(); - -// -// External References: -// - -// -// Declarations: -// /* 8036878C-8036881C 3630CC 0090+00 0/0 2/2 0/0 .text __StringRead */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __StringRead() { +asm int __StringRead(char* str, int ch, int behavior) { nofralloc #include "asm/MSL_C/MSL_Common/Src/scanf/__StringRead.s" } diff --git a/libs/MSL_C/MSL_Common/Src/signal.c b/libs/MSL_C/MSL_Common/Src/signal.c index 676d4a5373f..6fb6830310d 100644 --- a/libs/MSL_C/MSL_Common/Src/signal.c +++ b/libs/MSL_C/MSL_Common/Src/signal.c @@ -1,39 +1,18 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/signal -// - #include "MSL_C/MSL_Common/Src/signal.h" -#include "dol2asm.h" -#include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/abort_exit.h" -// -// Forward References: -// - -void raise(); - -// -// External References: -// - -void exit(); void __end_critical_region(); void __begin_critical_region(); -// -// Declarations: -// - /* ############################################################################################## */ /* 8044D878-8044D890 07A598 0018+00 1/1 0/0 0/0 .bss signal_funcs */ -static u8 signal_funcs[24]; +static unsigned char signal_funcs[24]; /* 8036881C-803688DC 36315C 00C0+00 0/0 1/1 0/0 .text raise */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void raise() { +asm int raise(int sig) { nofralloc #include "asm/MSL_C/MSL_Common/Src/signal/raise.s" } diff --git a/libs/MSL_C/MSL_Common/Src/string.c b/libs/MSL_C/MSL_Common/Src/string.c index df42867b387..51e74fcda79 100644 --- a/libs/MSL_C/MSL_Common/Src/string.c +++ b/libs/MSL_C/MSL_Common/Src/string.c @@ -1,77 +1,123 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/string -// - #include "MSL_C/MSL_Common/Src/string.h" -#include "dol2asm.h" -#include "dolphin/types.h" #define K1 0x80808080 #define K2 0xFEFEFEFF -// -// Declarations: -// +/* 80368BE4-80368C00 363524 001C+00 0/0 28/28 8/8 .text strlen */ +size_t strlen(const char* str) { + size_t len = -1; + unsigned char* p = (unsigned char*)str - 1; -/* 803688DC-80368924 36321C 0048+00 0/0 1/1 0/0 .text strrchr */ -char* strrchr(const char* str, int chr) { - const u8* p = (u8*)str - 1; - const u8* q = NULL; - u32 c = (chr & 0xFF); + do { + len++; + } while (*++p); - u32 ch; - while (ch = *++p) { - if (ch == c) { - q = p; - } - } - - if (q != NULL) { - return (char*)q; - } - - return c ? NULL : (char*)p; + return len; } -/* 80368924-80368954 363264 0030+00 0/0 3/3 0/0 .text strchr */ -char* strchr(const char* str, int chr) { - const u8* p = (u8*)str - 1; - u32 c = (chr & 0xFF); +/* 80368B2C-80368BE4 36346C 00B8+00 0/0 131/131 13/13 .text strcpy */ +char* strcpy(char* dst, const char* src) { + register unsigned char *destb, *fromb; + register unsigned long w, t, align; - u32 ch; - while (ch = *++p) { - if (ch == c) { - return (char*)p; - } + fromb = (unsigned char*)src; + destb = (unsigned char*)dst; + + if ((align = ((int)fromb & 3)) != ((int)destb & 3)) { + goto bytecopy; } - return c ? NULL : (char*)p; + if (align) { + if ((*destb = *fromb) == 0) { + return dst; + } + + for (align = 3 - align; align; align--) { + if ((*(++destb) = *(++fromb)) == 0) { + return dst; + } + } + ++destb; + ++fromb; + } + + w = *((int*)(fromb)); + + t = w + K2; + + t &= K1; + if (t) { + goto bytecopy; + } + --((int*)(destb)); + + do { + *(++((int*)(destb))) = w; + w = *(++((int*)(fromb))); + + t = w + K2; + t &= K1; + if (t) { + goto adjust; + } + } while (1); + +adjust: + ++((int*)(destb)); + +bytecopy: + if ((*destb = *fromb) == 0) { + return dst; + } + + do { + if ((*(++destb) = *(++fromb)) == 0) { + return dst; + } + } while (1); + + return dst; } -/* 80368954-80368994 363294 0040+00 0/0 6/6 0/0 .text strncmp */ -int strncmp(const char* strA, const char* strB, u32 n) { - const u8* p1 = (u8*)strA - 1; - const u8* p2 = (u8*)strB - 1; - u32 c1, c2; +/* 80368AE8-80368B2C 363428 0044+00 0/0 9/9 1/1 .text strncpy */ +char* strncpy(char* dst, const char* src, size_t n) { + const unsigned char* p = (const unsigned char*)src - 1; + unsigned char* q = (unsigned char*)dst - 1; n++; while (--n) { - if ((c1 = *++p1) != (c2 = *++p2)) { - return c1 - c2; - } else if (c1 == 0) { + if (!(*++q = *++p)) { + while (--n) { + *++q = 0; + } break; } } - return 0; + return dst; +} + +/* 80368ABC-80368AE8 3633FC 002C+00 0/0 20/20 8/8 .text strcat */ +char* strcat(char* dst, const char* src) { + const unsigned char* p = (unsigned char*)src - 1; + unsigned char* q = (unsigned char*)dst - 1; + + while (*++q) { + } + + q--; + + while (*++q = *++p) { + } + + return dst; } /* 80368994-80368ABC 3632D4 0128+00 0/0 155/155 279/279 .text strcmp */ -int strcmp(const char* strA, const char* strB) { - register u8* left = (u8*)strA; - register u8* right = (u8*)strB; - u32 align, l1, r1, x; +int strcmp(const char* str1, const char* str2) { + register unsigned char* left = (unsigned char*)str1; + register unsigned char* right = (unsigned char*)str2; + unsigned long align, l1, r1, x; l1 = *left; r1 = *right; @@ -146,112 +192,55 @@ bytecopy: } while (1); } -/* 80368ABC-80368AE8 3633FC 002C+00 0/0 20/20 8/8 .text strcat */ -char* strcat(char* dst, const char* src) { - const u8* p = (u8*)src - 1; - u8* q = (u8*)dst - 1; - - while (*++q) { - } - - q--; - - while (*++q = *++p) { - } - - return dst; -} - -/* 80368AE8-80368B2C 363428 0044+00 0/0 9/9 1/1 .text strncpy */ -char* strncpy(char* dst, const char* src, size_t n) { - const u8* p = (const u8*)src - 1; - u8* q = (u8*)dst - 1; +/* 80368954-80368994 363294 0040+00 0/0 6/6 0/0 .text strncmp */ +int strncmp(const char* str1, const char* str2, size_t n) { + const unsigned char* p1 = (unsigned char*)str1 - 1; + const unsigned char* p2 = (unsigned char*)str2 - 1; + unsigned long c1, c2; n++; while (--n) { - if (!(*++q = *++p)) { - while (--n) { - *++q = 0; - } + if ((c1 = *++p1) != (c2 = *++p2)) { + return c1 - c2; + } else if (c1 == 0) { break; } } - return dst; + return 0; } -/* 80368B2C-80368BE4 36346C 00B8+00 0/0 131/131 13/13 .text strcpy */ -char* strcpy(char* dst, const char* src) { - register u8 *destb, *fromb; - register u32 w, t, align; +/* 80368924-80368954 363264 0030+00 0/0 3/3 0/0 .text strchr */ +char* strchr(const char* str, int c) { + const unsigned char* p = (unsigned char*)str - 1; + unsigned long chr = (c & 0xFF); - fromb = (u8*)src; - destb = (u8*)dst; - - if ((align = ((int)fromb & 3)) != ((int)destb & 3)) { - goto bytecopy; + unsigned long ch; + while (ch = *++p) { + if (ch == chr) { + return (char*)p; + } } - if (align) { - if ((*destb = *fromb) == 0) { - return dst; - } - - for (align = 3 - align; align; align--) { - if ((*(++destb) = *(++fromb)) == 0) { - return dst; - } - } - ++destb; - ++fromb; - } - - w = *((int*)(fromb)); - - t = w + K2; - - t &= K1; - if (t) { - goto bytecopy; - } - --((int*)(destb)); - - do { - *(++((int*)(destb))) = w; - w = *(++((int*)(fromb))); - - t = w + K2; - t &= K1; - if (t) { - goto adjust; - } - } while (1); - -adjust: - ++((int*)(destb)); - -bytecopy: - if ((*destb = *fromb) == 0) { - return dst; - } - - do { - if ((*(++destb) = *(++fromb)) == 0) { - return dst; - } - } while (1); - - return dst; + return chr ? NULL : (char*)p; } -/* 80368BE4-80368C00 363524 001C+00 0/0 28/28 8/8 .text strlen */ -u32 strlen(const char* str) { - size_t len = -1; - u8* p = (u8*)str - 1; +/* 803688DC-80368924 36321C 0048+00 0/0 1/1 0/0 .text strrchr */ +char* strrchr(const char* str, int c) { + const unsigned char* p = (unsigned char*)str - 1; + const unsigned char* q = NULL; + unsigned long chr = (c & 0xFF); - do { - len++; - } while (*++p); + unsigned long ch; + while (ch = *++p) { + if (ch == chr) { + q = p; + } + } - return len; + if (q != NULL) { + return (char*)q; + } + + return chr ? NULL : (char*)p; } diff --git a/libs/MSL_C/MSL_Common/Src/strtoul.c b/libs/MSL_C/MSL_Common/Src/strtoul.c index 3cc0b88b906..dd7147bd1b6 100644 --- a/libs/MSL_C/MSL_Common/Src/strtoul.c +++ b/libs/MSL_C/MSL_Common/Src/strtoul.c @@ -4,35 +4,16 @@ // #include "MSL_C/MSL_Common/Src/strtoul.h" +#include "MSL_C/MSL_Common/Src/ctype.h" +#include "MSL_C/MSL_Common/Src/scanf.h" +#include "errno.h" #include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -void strtol(); -void strtoul(); -void __strtoul(); - -// -// External References: -// - -void __StringRead(); -extern u8 __ctype_map[256]; -extern u8 __upper_map[256]; -extern u8 errno[4 + 4 /* padding */]; - -// -// Declarations: -// /* 80368C00-80368CF0 363540 00F0+00 0/0 3/3 0/0 .text strtol */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void strtol() { +asm long strtol(const char* str, char** endptr, int base) { nofralloc #include "asm/MSL_C/MSL_Common/Src/strtoul/strtol.s" } @@ -42,7 +23,7 @@ asm void strtol() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void strtoul() { +asm unsigned long strtoul(const char* str, char** endptr, int base) { nofralloc #include "asm/MSL_C/MSL_Common/Src/strtoul/strtoul.s" } @@ -69,14 +50,14 @@ SECTION_DATA static void* lit_431[17 + 1 /* padding */] = { (void*)(((char*)__strtoul) + 0x310), (void*)(((char*)__strtoul) + 0x1FC), /* padding */ - NULL, + 0, }; /* 80368D9C-80369114 3636DC 0378+00 3/2 0/0 0/0 .text __strtoul */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __strtoul() { +asm unsigned long __strtoul(const char* str, char** endptr, int base) { nofralloc #include "asm/MSL_C/MSL_Common/Src/strtoul/__strtoul.s" } diff --git a/libs/MSL_C/MSL_Common/Src/wchar_io.c b/libs/MSL_C/MSL_Common/Src/wchar_io.c index f6ac7a3f993..e88208d69e1 100644 --- a/libs/MSL_C/MSL_Common/Src/wchar_io.c +++ b/libs/MSL_C/MSL_Common/Src/wchar_io.c @@ -1,30 +1,8 @@ -// -// Generated By: dol2asm -// Translation Unit: MSL_Common/Src/wchar_io -// - #include "MSL_C/MSL_Common/Src/wchar_io.h" -#include "MSL_C/MSL_Common/Src/ansi_files.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -int fwide(FILE* file, int mode); - -// -// External References: -// - -// -// Declarations: -// /* 80369114-8036919C 363A54 0088+00 0/0 5/5 0/0 .text fwide */ int fwide(FILE* file, int mode) { - if (file == NULL || file->file_mode.file_kind == CLOSED_FILE) { + if (file == NULL || file->file_mode.file_kind == __closed_file) { return 0; } diff --git a/libs/MSL_C/Makefile b/libs/MSL_C/Makefile index 52659a9d8a8..2f0e5a83177 100644 --- a/libs/MSL_C/Makefile +++ b/libs/MSL_C/Makefile @@ -123,6 +123,7 @@ LIBMSL_C_PPCEABI_BARE_H_A_CFLAGS := \ -lang=c \ -fp_contract on \ -use_lmw_stmw on \ + -inline deferred,auto \ LIBMSL_C_PPCEABI_BARE_H_A_LDFLAGS := \ -nodefaults \ diff --git a/libs/MSL_C/Math/Double_precision/s_ldexp.c b/libs/MSL_C/Math/Double_precision/s_ldexp.c index ef927feb436..8ecee878a44 100644 --- a/libs/MSL_C/Math/Double_precision/s_ldexp.c +++ b/libs/MSL_C/Math/Double_precision/s_ldexp.c @@ -22,7 +22,7 @@ static const double double ldexp(double x, int n) { - s32 k, hx, lx; /*- cc 020130 -*/ + long k, hx, lx; /*- cc 020130 -*/ if (!isfinite(x) || x == 0.0) return x; diff --git a/libs/MSL_C/PPC_EABI/Src/critical_regions.gamecube.c b/libs/MSL_C/PPC_EABI/Src/critical_regions.gamecube.c index 4d4a55a2d78..1bab3322e87 100644 --- a/libs/MSL_C/PPC_EABI/Src/critical_regions.gamecube.c +++ b/libs/MSL_C/PPC_EABI/Src/critical_regions.gamecube.c @@ -1,30 +1,11 @@ -// -// Generated By: dol2asm -// Translation Unit: PPC_EABI/Src/critical_regions.gamecube -// - #include "MSL_C/PPC_EABI/Src/critical_regions.gamecube.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// void __end_critical_region(); void __begin_critical_region(); void __kill_critical_regions(); -// -// External References: -// - -// -// Declarations: -// - -/* 80365464-80365468 35FDA4 0004+00 0/0 12/12 0/0 .text __end_critical_region */ -void __end_critical_region() { +/* 8036546C-80365470 35FDAC 0004+00 0/0 2/2 0/0 .text __kill_critical_regions */ +void __kill_critical_regions() { /* empty function */ } @@ -33,7 +14,7 @@ void __begin_critical_region() { /* empty function */ } -/* 8036546C-80365470 35FDAC 0004+00 0/0 2/2 0/0 .text __kill_critical_regions */ -void __kill_critical_regions() { +/* 80365464-80365468 35FDA4 0004+00 0/0 12/12 0/0 .text __end_critical_region */ +void __end_critical_region() { /* empty function */ -} +} \ No newline at end of file diff --git a/libs/MSL_C/PPC_EABI/Src/math_ppc.c b/libs/MSL_C/PPC_EABI/Src/math_ppc.c index b969b129673..c118d913c9c 100644 --- a/libs/MSL_C/PPC_EABI/Src/math_ppc.c +++ b/libs/MSL_C/PPC_EABI/Src/math_ppc.c @@ -4,8 +4,6 @@ // #include "MSL_C/PPC_EABI/Src/math_ppc.h" -#include "dol2asm.h" -#include "dolphin/types.h" #include "fdlibm.h" // @@ -21,14 +19,9 @@ float acosf(float); // Declarations: // -/* 8036C9C4-8036C9E8 367304 0024+00 0/0 2/2 0/0 .text tanf */ -float tanf(float x) { - return tan(x); -} - -/* 8036C9E8-8036CA0C 367328 0024+00 0/0 4/4 0/0 .text sinf */ -float sinf(float x) { - return sin(x); +/* 8036CA30-8036CA54 367370 0024+00 0/0 1/1 0/0 .text acosf */ +float acosf(float x) { + return acos(x); } /* 8036CA0C-8036CA30 36734C 0024+00 0/0 4/4 0/0 .text cosf */ @@ -36,7 +29,12 @@ float cosf(float x) { return cos(x); } -/* 8036CA30-8036CA54 367370 0024+00 0/0 1/1 0/0 .text acosf */ -float acosf(float x) { - return acos(x); +/* 8036C9E8-8036CA0C 367328 0024+00 0/0 4/4 0/0 .text sinf */ +float sinf(float x) { + return sin(x); +} + +/* 8036C9C4-8036C9E8 367304 0024+00 0/0 2/2 0/0 .text tanf */ +float tanf(float x) { + return tan(x); } diff --git a/libs/MSL_C/PPC_EABI/Src/uart_console_io_gcn.c b/libs/MSL_C/PPC_EABI/Src/uart_console_io_gcn.c index 89458682ff5..da80f4720a1 100644 --- a/libs/MSL_C/PPC_EABI/Src/uart_console_io_gcn.c +++ b/libs/MSL_C/PPC_EABI/Src/uart_console_io_gcn.c @@ -1,39 +1,14 @@ -// -// Generated By: dol2asm -// Translation Unit: PPC_EABI/Src/uart_console_io_gcn -// - #include "MSL_C/PPC_EABI/Src/uart_console_io_gcn.h" -#include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/os/OS.h" -// -// Forward References: -// - -int __close_console(); -int __write_console(s32 arg0, s32 arg1, s32* arg2, s32 arg3); - -// -// External References: -// - -s32 OSGetConsoleType(void); -s32 InitializeUART(u32); -s32 WriteUARTN(s32, s32); -s32 __TRK_write_console(s32, s32, s32*, s32); - -// -// Declarations: -// - -/* 8036919C-803691A4 363ADC 0008+00 0/0 1/0 0/0 .text __close_console */ -int __close_console() { - return 0; -} +int InitializeUART(size_t); +int WriteUARTN(unsigned char*, size_t); +int __TRK_write_console(__file_handle handle, unsigned char* buffer, size_t* count, + __idle_proc idle_fn); /* 803691A4-80369274 363AE4 00D0+00 0/0 1/0 0/0 .text __write_console */ -int __write_console(s32 param_0, s32 param_1, s32* param_2, s32 param_3) { +int __write_console(__file_handle handle, unsigned char* buffer, size_t* count, + __idle_proc idle_fn) { static int initialized; if ((OSGetConsoleType() & 0x20000000) == 0) { @@ -50,12 +25,17 @@ int __write_console(s32 param_0, s32 param_1, s32* param_2, s32 param_3) { return 1; } - if (WriteUARTN(param_1, *param_2) != 0) { - *param_2 = 0; + if (WriteUARTN(buffer, *count) != 0) { + *count = 0; return 1; } } - __TRK_write_console(param_0, param_1, param_2, param_3); + __TRK_write_console(handle, buffer, count, idle_fn); + return 0; +} + +/* 8036919C-803691A4 363ADC 0008+00 0/0 1/0 0/0 .text __close_console */ +int __close_console(__file_handle handle) { return 0; } diff --git a/libs/dolphin/ai/Makefile b/libs/dolphin/ai/Makefile index 4e1b30c82ba..b4a68b263eb 100644 --- a/libs/dolphin/ai/Makefile +++ b/libs/dolphin/ai/Makefile @@ -9,6 +9,14 @@ LIBAI_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/ai/ai.o \ LIBAI_A_CFLAGS := \ + -Cpp_exceptions off \ + -proc gekko \ + -fp hard \ + -nodefaults \ + -str reuse \ + -RTTI off \ + -maxerrors 5 \ + -enum int $(INCLUDES) \ -O4,p \ -lang=c \ @@ -27,4 +35,6 @@ $(BUILD_DIR)/libs/dolphin/ai/%.o: libs/dolphin/ai/%.c @mkdir -p $(@D) @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c - @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBAI_A_CFLAGS) -c -o $@ $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(LIBAI_A_CFLAGS) -c -o $@ $(basename $@).c + @echo Frank is fixing $@ + @$(PYTHON) $(FRANK) $@ $@ $@ diff --git a/libs/dolphin/ai/ai.c b/libs/dolphin/ai/ai.c index 091025ddb63..c305f120850 100644 --- a/libs/dolphin/ai/ai.c +++ b/libs/dolphin/ai/ai.c @@ -5,295 +5,353 @@ #include "dolphin/ai/ai.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/os/OS.h" -// -// Forward References: -// - -void AIRegisterDMACallback(); -void AIInitDMA(); -void AIStartDMA(); -void AIStopDMA(); -void AISetStreamPlayState(); -static void AIGetStreamPlayState(); -void AISetDSPSampleRate(); -void AIGetDSPSampleRate(); -void __AI_set_stream_sample_rate(); -static void AIGetStreamSampleRate(); -void AISetStreamVolLeft(); -static void AIGetStreamVolLeft(); -void AISetStreamVolRight(); -static void AIGetStreamVolRight(); -void AIInit(); -void __AISHandler(); -void __AIDHandler(); -void __AICallbackStackSwitch(); -void __AI_SRC_INIT(); - -// -// External References: -// - -void OSRegisterVersion(); -void OSSetCurrentContext(); -void OSClearContext(); -void OSDisableInterrupts(); -void OSRestoreInterrupts(); -void __OSSetInterruptHandler(); -void __OSUnmaskInterrupts(); -void OSGetTime(); - -// -// Declarations: -// +void __AISHandler(s16 interrupt, OSContext* context); +void __AIDHandler(s16 interrupt, OSContext* context); +void __AICallbackStackSwitch(AIDCallback callback); +void __AI_SRC_INIT(void); /* ############################################################################################## */ /* 80451878-8045187C 000D78 0004+00 2/2 0/0 0/0 .sbss __AIS_Callback */ -static u8 __AIS_Callback[4]; +static AISCallback __AIS_Callback; /* 8045187C-80451880 000D7C 0004+00 3/3 0/0 0/0 .sbss __AID_Callback */ -static u8 __AID_Callback[4]; +static AIDCallback __AID_Callback; /* 8034FC70-8034FCB4 34A5B0 0044+00 0/0 1/1 0/0 .text AIRegisterDMACallback */ +// need compiler epilogue patch #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void AIRegisterDMACallback() { +asm AIDCallback AIRegisterDMACallback(AIDCallback callback) { nofralloc #include "asm/dolphin/ai/ai/AIRegisterDMACallback.s" } #pragma pop /* 8034FCB4-8034FD3C 34A5F4 0088+00 0/0 2/2 0/0 .text AIInitDMA */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void AIInitDMA() { - nofralloc -#include "asm/dolphin/ai/ai/AIInitDMA.s" +void AIInitDMA(u32 addr, u32 length) { + s32 oldInts; + oldInts = OSDisableInterrupts(); + __DSPRegs[24] = (u16)((__DSPRegs[24] & ~0x3FF) | (addr >> 16)); + __DSPRegs[25] = (u16)((__DSPRegs[25] & ~0xFFE0) | (0xffff & addr)); + __DSPRegs[27] = (u16)((__DSPRegs[27] & ~0x7FFF) | (u16)((length >> 5) & 0xFFFF)); + OSRestoreInterrupts(oldInts); } -#pragma pop /* 8034FD3C-8034FD54 34A67C 0018+00 0/0 1/1 0/0 .text AIStartDMA */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void AIStartDMA() { - nofralloc -#include "asm/dolphin/ai/ai/AIStartDMA.s" +void AIStartDMA(void) { + __DSPRegs[27] |= 0x8000; } -#pragma pop /* 8034FD54-8034FD6C 34A694 0018+00 0/0 1/1 0/0 .text AIStopDMA */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void AIStopDMA() { - nofralloc -#include "asm/dolphin/ai/ai/AIStopDMA.s" + +void AIStopDMA(void) { + __DSPRegs[27] &= ~0x8000; } -#pragma pop /* 8034FD6C-8034FE44 34A6AC 00D8+00 1/1 1/1 0/0 .text AISetStreamPlayState */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void AISetStreamPlayState() { - nofralloc -#include "asm/dolphin/ai/ai/AISetStreamPlayState.s" +void AISetStreamPlayState(u32 state) { + s32 oldInts; + u8 volRight; + u8 volLeft; + + if (state == AIGetStreamPlayState()) { + return; + } + + if (AIGetStreamSampleRate() == 0 && state == 1) { + volRight = AIGetStreamVolRight(); + volLeft = AIGetStreamVolLeft(); + AISetStreamVolRight(0); + AISetStreamVolLeft(0); + oldInts = OSDisableInterrupts(); + __AI_SRC_INIT(); + __AIRegs[0] = (__AIRegs[0] & ~0x20) | 0x20; + __AIRegs[0] = (__AIRegs[0] & ~1) | 1; + OSRestoreInterrupts(oldInts); + AISetStreamVolLeft(volRight); + AISetStreamVolRight(volLeft); + } else { + __AIRegs[0] = (__AIRegs[0] & ~1) | state; + } } -#pragma pop /* 8034FE44-8034FE54 34A784 0010+00 1/1 0/0 0/0 .text AIGetStreamPlayState */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void AIGetStreamPlayState() { - nofralloc -#include "asm/dolphin/ai/ai/AIGetStreamPlayState.s" +inline u32 AIGetStreamPlayState(void) { + return __AIRegs[0] & 1; } -#pragma pop /* 8034FE54-8034FF34 34A794 00E0+00 1/1 1/1 0/0 .text AISetDSPSampleRate */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void AISetDSPSampleRate() { - nofralloc -#include "asm/dolphin/ai/ai/AISetDSPSampleRate.s" +void AISetDSPSampleRate(u32 rate) { + u32 state; + s32 oldInts; + u8 left; + u8 right; + u32 sampleRate; + + if (rate == AIGetDSPSampleRate()) { + return; + } + + __AIRegs[0] &= ~0x40; + if (rate == 0) { + left = AIGetStreamVolLeft(); + right = AIGetStreamVolRight(); + state = AIGetStreamPlayState(); + sampleRate = AIGetStreamSampleRate(); + AISetStreamVolLeft(0); + AISetStreamVolRight(0); + oldInts = OSDisableInterrupts(); + __AI_SRC_INIT(); + __AIRegs[0] = (__AIRegs[0] & ~0x20) | 0x20; + __AIRegs[0] = (__AIRegs[0] & ~2) | (sampleRate * 2); + __AIRegs[0] = (__AIRegs[0] & ~1) | state; + __AIRegs[0] |= 0x40; + OSRestoreInterrupts(oldInts); + AISetStreamVolLeft(left); + AISetStreamVolRight(right); + } } -#pragma pop /* 8034FF34-8034FF48 34A874 0014+00 1/1 0/0 1/1 .text AIGetDSPSampleRate */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void AIGetDSPSampleRate() { - nofralloc -#include "asm/dolphin/ai/ai/AIGetDSPSampleRate.s" +u32 AIGetDSPSampleRate(void) { + return ((__AIRegs[0] >> 6) & 1) ^ 1; } -#pragma pop /* 8034FF48-8035001C 34A888 00D4+00 1/1 0/1 0/0 .text __AI_set_stream_sample_rate */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __AI_set_stream_sample_rate() { - nofralloc -#include "asm/dolphin/ai/ai/__AI_set_stream_sample_rate.s" +void __AI_set_stream_sample_rate(u32 rate) { + s32 oldInts; + s32 state; + u8 left; + u8 right; + s32 temp_r26; + + if (rate == AIGetStreamSampleRate()) { + return; + } + + state = AIGetStreamPlayState(); + left = AIGetStreamVolLeft(); + right = AIGetStreamVolRight(); + AISetStreamVolRight(0); + AISetStreamVolLeft(0); + temp_r26 = __AIRegs[0] & 0x40; + __AIRegs[0] &= ~0x40; + oldInts = OSDisableInterrupts(); + __AI_SRC_INIT(); + __AIRegs[0] |= temp_r26; + __AIRegs[0] = (__AIRegs[0] & ~0x20) | 0x20; + __AIRegs[0] = (__AIRegs[0] & ~2) | (rate * 2); + OSRestoreInterrupts(oldInts); + AISetStreamPlayState(state); + AISetStreamVolLeft(left); + AISetStreamVolRight(right); } -#pragma pop /* 8035001C-8035002C 34A95C 0010+00 3/3 0/0 0/0 .text AIGetStreamSampleRate */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void AIGetStreamSampleRate() { - nofralloc -#include "asm/dolphin/ai/ai/AIGetStreamSampleRate.s" +u32 AIGetStreamSampleRate(void) { + return (__AIRegs[0] >> 1) & 1; } -#pragma pop /* 8035002C-80350048 34A96C 001C+00 3/3 1/1 0/0 .text AISetStreamVolLeft */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void AISetStreamVolLeft() { - nofralloc -#include "asm/dolphin/ai/ai/AISetStreamVolLeft.s" +void AISetStreamVolLeft(u8 vol) { + __AIRegs[1] = (__AIRegs[1] & ~0xFF) | (vol & 0xFF); } -#pragma pop /* 80350048-80350058 34A988 0010+00 3/3 0/0 0/0 .text AIGetStreamVolLeft */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void AIGetStreamVolLeft() { - nofralloc -#include "asm/dolphin/ai/ai/AIGetStreamVolLeft.s" +u8 AIGetStreamVolLeft(void) { + return __AIRegs[1]; } -#pragma pop /* 80350058-80350074 34A998 001C+00 3/3 1/1 0/0 .text AISetStreamVolRight */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void AISetStreamVolRight() { - nofralloc -#include "asm/dolphin/ai/ai/AISetStreamVolRight.s" +void AISetStreamVolRight(u8 vol) { + __AIRegs[1] = (__AIRegs[1] & ~0xFF00) | ((vol & 0xFF) << 8); } -#pragma pop /* 80350074-80350084 34A9B4 0010+00 3/3 0/0 0/0 .text AIGetStreamVolRight */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void AIGetStreamVolRight() { - nofralloc -#include "asm/dolphin/ai/ai/AIGetStreamVolRight.s" +u8 AIGetStreamVolRight(void) { + return __AIRegs[1] >> 8; } -#pragma pop /* ############################################################################################## */ /* 803D1BA0-803D1BE8 02ECC0 0044+04 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[] = "<< Dolphin SDK - AI\trelease build: Apr 5 2004 04:15:02 (0x2301) >>"; +SECTION_DATA static char lit_1[] = + "<< Dolphin SDK - AI\trelease build: Apr 5 2004 04:15:02 (0x2301) >>"; /* 80450A40-80450A48 -00001 0004+04 1/1 0/0 0/0 .sdata __AIVersion */ -SECTION_SDATA static void* __AIVersion[1 + 1 /* padding */] = { - (void*)&lit_1, - /* padding */ - NULL, -}; +SECTION_SDATA static const char* __AIVersion = lit_1; /* 80451880-80451884 000D80 0004+00 3/3 0/0 0/0 .sbss __CallbackStack */ -static u8 __CallbackStack[4]; +static u8* __CallbackStack; /* 80451884-80451888 000D84 0004+00 1/1 0/0 0/0 .sbss __OldStack */ -static u8 __OldStack[4]; +static u8* __OldStack; /* 80451888-8045188C 000D88 0004+00 1/1 0/0 0/0 .sbss __AI_init_flag */ -static u8 __AI_init_flag[4]; +static volatile s32 __AI_init_flag; /* 8045188C-80451890 000D8C 0004+00 1/1 0/0 0/0 .sbss __AID_Active */ -static u8 __AID_Active[4]; +static volatile s32 __AID_Active; /* 80451890-80451894 000D90 0004+00 2/2 0/0 0/0 .sbss bound_32KHz */ -static u8 bound_32KHz[4]; - -/* 80451894-80451898 000D94 0004+00 2/2 0/0 0/0 .sbss None */ -static u8 data_80451894[4]; +static OSTime bound_32KHz; /* 80451898-8045189C 000D98 0004+00 2/2 0/0 0/0 .sbss bound_48KHz */ -static u8 bound_48KHz[4]; - -/* 8045189C-804518A0 000D9C 0004+00 2/2 0/0 0/0 .sbss None */ -static u8 data_8045189C[4]; +static OSTime bound_48KHz; /* 804518A0-804518A4 000DA0 0004+00 2/2 0/0 0/0 .sbss min_wait */ -static u8 min_wait[4]; - -/* 804518A4-804518A8 000DA4 0004+00 2/2 0/0 0/0 .sbss None */ -static u8 data_804518A4[4]; +static OSTime min_wait; /* 804518A8-804518AC 000DA8 0004+00 2/2 0/0 0/0 .sbss max_wait */ -static u8 max_wait[4]; - -/* 804518AC-804518B0 000DAC 0004+00 2/2 0/0 0/0 .sbss None */ -static u8 data_804518AC[4]; +static OSTime max_wait; /* 804518B0-804518B4 000DB0 0004+00 2/2 0/0 0/0 .sbss buffer */ -static u8 buffer[4]; - -/* 804518B4-804518B8 000DB4 0004+00 2/2 0/0 0/0 .sbss None */ -static u8 data_804518B4[4]; +static OSTime buffer; /* 80350084-803501F0 34A9C4 016C+00 0/0 1/1 0/0 .text AIInit */ +// need compiler epilogue patch #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void AIInit() { +asm void AIInit(u8* stack) { nofralloc #include "asm/dolphin/ai/ai/AIInit.s" } #pragma pop /* 803501F0-8035026C 34AB30 007C+00 1/1 0/0 0/0 .text __AISHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __AISHandler() { - nofralloc -#include "asm/dolphin/ai/ai/__AISHandler.s" +void __AISHandler(s16 interrupt, OSContext* context) { + OSContext tmpContext; + __AIRegs[0] |= 8; + OSClearContext(&tmpContext); + OSSetCurrentContext(&tmpContext); + + if (__AIS_Callback != NULL) { + __AIS_Callback(__AIRegs[2]); + } + + OSClearContext(&tmpContext); + OSSetCurrentContext(context); } -#pragma pop /* 8035026C-80350318 34ABAC 00AC+00 1/1 0/0 0/0 .text __AIDHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __AIDHandler() { - nofralloc -#include "asm/dolphin/ai/ai/__AIDHandler.s" +void __AIDHandler(s16 interrupt, OSContext* context) { + OSContext tempContext; + u32 temp = __DSPRegs[5]; + __DSPRegs[5] = (temp & ~0xA0) | 8; + OSClearContext(&tempContext); + OSSetCurrentContext(&tempContext); + + if (__AID_Callback && !__AID_Active) { + __AID_Active = TRUE; + + if (__CallbackStack) { + __AICallbackStackSwitch(__AID_Callback); + } else { + __AID_Callback(); + } + + __AID_Active = FALSE; + } + + OSClearContext(&tempContext); + OSSetCurrentContext(context); } -#pragma pop /* 80350318-80350370 34AC58 0058+00 1/1 0/0 0/0 .text __AICallbackStackSwitch */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __AICallbackStackSwitch() { - nofralloc -#include "asm/dolphin/ai/ai/__AICallbackStackSwitch.s" +// clang-format off +asm void __AICallbackStackSwitch(register AIDCallback cb) { + // Allocate stack frame + fralloc + + // Store current stack + lis r5, __OldStack@ha + addi r5, r5, __OldStack@l + stw r1, 0(r5) + + // Load stack for callback + lis r5, __CallbackStack@ha + addi r5, r5, __CallbackStack@l + lwz r1,0(r5) + + // Move stack down 8 bytes + subi r1, r1, 8 + // Call callback + mtlr cb + blrl + + // Restore old stack + lis r5, __OldStack @ha + addi r5, r5, __OldStack@l + lwz r1,0(r5) + + // Free stack frame + frfree + + blr } -#pragma pop +// clang-format on /* 80350370-80350554 34ACB0 01E4+00 3/3 0/0 0/0 .text __AI_SRC_INIT */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __AI_SRC_INIT() { - nofralloc -#include "asm/dolphin/ai/ai/__AI_SRC_INIT.s" +void __AI_SRC_INIT(void) { + OSTime rise32 = 0; + OSTime rise48 = 0; + OSTime diff = 0; + OSTime unused1 = 0; + OSTime temp = 0; + u32 temp0 = 0; + u32 temp1 = 0; + u32 done = 0; + u32 walking = 0; + u32 unused2 = 0; + u32 initCnt = 0; + + walking = 0; + initCnt = 0; + temp = 0; + + while (!done) { + __AIRegs[0] = (__AIRegs[0] & ~0x20) | 0x20; + __AIRegs[0] &= ~2; + __AIRegs[0] = (__AIRegs[0] & ~1) | 1; + + temp0 = __AIRegs[2]; + + while (temp0 == __AIRegs[2]) + ; + rise32 = OSGetTime(); + + __AIRegs[0] = (__AIRegs[0] & ~2) | 2; + __AIRegs[0] = (__AIRegs[0] & ~1) | 1; + + temp1 = __AIRegs[2]; + while (temp1 == __AIRegs[2]) + ; + + rise48 = OSGetTime(); + + diff = rise48 - rise32; + __AIRegs[0] &= ~2; + __AIRegs[0] &= ~1; + + if (diff < (bound_32KHz - buffer)) { + temp = min_wait; + done = 1; + ++initCnt; + } else if (diff >= (bound_32KHz + buffer) && diff < (bound_48KHz - buffer)) { + temp = max_wait; + done = 1; + ++initCnt; + } else { + done = 0; + walking = 1; + ++initCnt; + } + } + + while ((rise48 + temp) > OSGetTime()) + ; } -#pragma pop diff --git a/libs/dolphin/ar/Makefile b/libs/dolphin/ar/Makefile index 26a079b70e5..0d2c1d0264c 100644 --- a/libs/dolphin/ar/Makefile +++ b/libs/dolphin/ar/Makefile @@ -11,6 +11,14 @@ LIBAR_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/ar/arq.o \ LIBAR_A_CFLAGS := \ + -Cpp_exceptions off \ + -proc gekko \ + -fp hard \ + -nodefaults \ + -str reuse \ + -RTTI off \ + -maxerrors 5 \ + -enum int $(INCLUDES) \ -O4,p \ -lang=c \ @@ -29,5 +37,7 @@ $(BUILD_DIR)/libs/dolphin/ar/%.o: libs/dolphin/ar/%.c @mkdir -p $(@D) @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c - @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBAR_A_CFLAGS) -c -o $@ $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(LIBAR_A_CFLAGS) -c -o $@ $(basename $@).c + @echo Frank is fixing $@ + @$(PYTHON) $(FRANK) $@ $@ $@ diff --git a/libs/dolphin/ar/ar.c b/libs/dolphin/ar/ar.c index 58eae0f455a..71a085cce92 100644 --- a/libs/dolphin/ar/ar.c +++ b/libs/dolphin/ar/ar.c @@ -4,142 +4,174 @@ // #include "dolphin/ar/ar.h" +#include "MSL_C/MSL_Common/Src/string.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/base/PPCArch.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/os/OS.h" -// -// Forward References: -// - -void ARRegisterDMACallback(); -void ARGetDMAStatus(); -void ARStartDMA(); -void __ARHandler(); +void __ARHandler(s16 interrupt, OSContext* context); void __ARClearInterrupt(); void __ARGetInterruptStatus(); void __ARChecksize(); -// -// External References: -// - -SECTION_INIT void memset(); -void PPCSync(); -void OSRegisterVersion(); -void DCInvalidateRange(); -void DCFlushRange(); -void OSSetCurrentContext(); -void OSClearContext(); -void OSDisableInterrupts(); -void OSRestoreInterrupts(); -void __OSSetInterruptHandler(); -void __OSUnmaskInterrupts(); - -// -// Declarations: -// - /* ############################################################################################## */ /* 804518B8-804518BC 000DB8 0004+00 3/3 0/0 0/0 .sbss __AR_Callback */ -static u8 __AR_Callback[4]; +static ARCallback __AR_Callback; /* 80350554-80350598 34AE94 0044+00 0/0 1/1 0/0 .text ARRegisterDMACallback */ +// needs compiler epilogue patch +#ifdef NONMATCHING +ARCallback ARRegisterDMACallback(ARCallback callback) { + ARCallback oldCb; + BOOL enabled; + oldCb = __AR_Callback; + enabled = OSDisableInterrupts(); + __AR_Callback = callback; + OSRestoreInterrupts(enabled); + return oldCb; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void ARRegisterDMACallback() { +asm ARCallback ARRegisterDMACallback(ARCallback callback) { nofralloc #include "asm/dolphin/ar/ar/ARRegisterDMACallback.s" } #pragma pop +#endif /* 80350598-803505D4 34AED8 003C+00 0/0 2/2 0/0 .text ARGetDMAStatus */ +// needs compiler epilogue patch +#ifdef NONMATCHING +u32 ARGetDMAStatus() { + BOOL enabled; + u32 val; + enabled = OSDisableInterrupts(); + val = __DSPRegs[5] & 0x0200; + OSRestoreInterrupts(enabled); + return val; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void ARGetDMAStatus() { +asm u32 ARGetDMAStatus(void) { nofralloc #include "asm/dolphin/ar/ar/ARGetDMAStatus.s" } #pragma pop +#endif /* 803505D4-803506C4 34AF14 00F0+00 0/0 5/5 0/0 .text ARStartDMA */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void ARStartDMA() { - nofralloc -#include "asm/dolphin/ar/ar/ARStartDMA.s" +void ARStartDMA(u32 type, u32 mainmem_addr, u32 aram_addr, u32 length) { + BOOL enabled; + + enabled = OSDisableInterrupts(); + + __DSPRegs[16] = (u16)(__DSPRegs[16] & ~0x3ff) | (u16)(mainmem_addr >> 16); + __DSPRegs[17] = (u16)(__DSPRegs[17] & ~0xffe0) | (u16)(mainmem_addr & 0xffff); + __DSPRegs[18] = (u16)(__DSPRegs[18] & ~0x3ff) | (u16)(aram_addr >> 16); + __DSPRegs[19] = (u16)(__DSPRegs[19] & ~0xffe0) | (u16)(aram_addr & 0xffff); + __DSPRegs[20] = (u16)((__DSPRegs[20] & ~0x8000) | (type << 15)); + __DSPRegs[20] = (u16)(__DSPRegs[20] & ~0x3ff) | (u16)(length >> 16); + __DSPRegs[21] = (u16)(__DSPRegs[21] & ~0xffe0) | (u16)(length & 0xffff); + OSRestoreInterrupts(enabled); } -#pragma pop /* ############################################################################################## */ /* 804518BC-804518C0 000DBC 0004+00 2/1 0/0 0/0 .sbss __AR_Size */ -static u8 __AR_Size[4]; +static u32 __AR_Size; /* 804518C0-804518C4 000DC0 0004+00 1/1 0/0 0/0 .sbss __AR_InternalSize */ -static u8 __AR_InternalSize[4]; +static u32 __AR_InternalSize; /* 804518C4-804518C8 000DC4 0004+00 1/1 0/0 0/0 .sbss __AR_ExpansionSize */ -static u8 __AR_ExpansionSize[4]; +static u32 __AR_ExpansionSize; /* 804518C8-804518CC 000DC8 0004+00 2/2 0/0 0/0 .sbss __AR_StackPointer */ -static u8 __AR_StackPointer[4]; +static u32 __AR_StackPointer; /* 804518CC-804518D0 000DCC 0004+00 2/2 0/0 0/0 .sbss __AR_FreeBlocks */ -static u8 __AR_FreeBlocks[4]; +static u32 __AR_FreeBlocks; /* 804518D0-804518D4 000DD0 0004+00 2/2 0/0 0/0 .sbss __AR_BlockLength */ -static u8 __AR_BlockLength[4]; +static u32* __AR_BlockLength; /* 803506C4-8035072C 34B004 0068+00 0/0 1/1 0/0 .text ARAlloc */ +// needs compiler epilogue patch +#ifdef NONMATCHING +u32 ARAlloc(u32 length) { + u32 tmp; + BOOL enabled; + + enabled = OSDisableInterrupts(); + tmp = __AR_StackPointer; + __AR_StackPointer += length; + *__AR_BlockLength = length; + __AR_BlockLength++; + __AR_FreeBlocks--; + OSRestoreInterrupts(enabled); + + return tmp; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm u32 ARAlloc(u32) { +asm u32 ARAlloc(u32 length) { nofralloc #include "asm/dolphin/ar/ar/ARAlloc.s" } #pragma pop +#endif /* ############################################################################################## */ /* 803D1BE8-803D1C30 02ED08 0044+04 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[] = "<< Dolphin SDK - AR\trelease build: Apr 5 2004 04:15:03 (0x2301) >>"; +SECTION_DATA static char lit_1[] = + "<< Dolphin SDK - AR\trelease build: Apr 5 2004 04:15:03 (0x2301) >>"; /* 80450A48-80450A50 -00001 0004+04 1/1 0/0 0/0 .sdata __ARVersion */ -SECTION_SDATA static void* __ARVersion[1 + 1 /* padding */] = { - (void*)&lit_1, - /* padding */ - NULL, -}; +SECTION_SDATA static const char* __ARVersion = lit_1; /* 804518D4-804518D8 000DD4 0004+00 1/1 0/0 0/0 .sbss __AR_init_flag */ -static u8 __AR_init_flag[4]; +static volatile BOOL __AR_init_flag; /* 8035072C-803507F0 34B06C 00C4+00 0/0 1/1 0/0 .text ARInit */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm u32 ARInit(u32*, u32) { +asm u32 ARInit(u32* stack_index_addr, u32 num_entries) { nofralloc #include "asm/dolphin/ar/ar/ARInit.s" } #pragma pop /* 803507F0-803507F8 -00001 0008+00 0/0 0/0 0/0 .text ARGetSize */ -u32 ARGetSize() { - return *(u32*)(&__AR_Size); +u32 ARGetSize(void) { + return __AR_Size; } /* 803507F8-80350870 34B138 0078+00 1/1 0/0 0/0 .text __ARHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __ARHandler() { - nofralloc -#include "asm/dolphin/ar/ar/__ARHandler.s" +static void __ARHandler(s16 interrupt, OSContext* context) { + OSContext exceptionContext; + u16 tmp; + + tmp = __DSPRegs[5]; + tmp = (u16)((tmp & ~0x00000088) | 0x20); + __DSPRegs[5] = tmp; + + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + + if (__AR_Callback) { + (*__AR_Callback)(); + } + + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); } -#pragma pop /* 80350870-80350890 34B1B0 0020+00 0/0 2/2 0/0 .text __ARClearInterrupt */ #pragma push diff --git a/libs/dolphin/base/Makefile b/libs/dolphin/base/Makefile index 96c4fd0c8e6..91baf15200d 100644 --- a/libs/dolphin/base/Makefile +++ b/libs/dolphin/base/Makefile @@ -18,8 +18,6 @@ LIBBASE_A_LDFLAGS := \ -proc gekko \ -linkmode moreram \ -$(BUILD_DIR)/libs/dolphin/base/PPCArch.o: MWCC_VERSION := 1.2.5 - $(BUILD_DIR)/libbase.a: $(LIBBASE_A_O_FILES) @echo linking... $(BUILD_DIR)/libbase.a @echo $(LIBBASE_A_O_FILES) > build/LIBBASE_A_ofiles @@ -29,5 +27,7 @@ $(BUILD_DIR)/libs/dolphin/base/%.o: libs/dolphin/base/%.c @mkdir -p $(@D) @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c - @$(CC) $(CFLAGS) $(LIBBASE_A_CFLAGS) -c -o $@ $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBBASE_A_CFLAGS) -c -o $@ $(basename $@).c + @echo Frank is fixing $@ + @$(PYTHON) $(FRANK) $@ $@ $@ diff --git a/libs/dolphin/base/PPCArch.c b/libs/dolphin/base/PPCArch.c index bc7319b47bf..a3254d92ca1 100644 --- a/libs/dolphin/base/PPCArch.c +++ b/libs/dolphin/base/PPCArch.c @@ -1,248 +1,171 @@ -// -// Generated By: dol2asm -// Translation Unit: PPCArch -// - #include "dolphin/base/PPCArch.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern void PPCMfmsr(); -extern void PPCMtmsr(); -extern void PPCMfhid0(); -extern void PPCMthid0(); -extern void PPCMfl2cr(); -extern void PPCMtl2cr(); -extern void PPCMtdec(); -extern void PPCSync(); -extern void PPCHalt(); -extern void PPCMtmmcr0(); -extern void PPCMtmmcr1(); -extern void PPCMtpmc1(); -extern void PPCMtpmc2(); -extern void PPCMtpmc3(); -extern void PPCMtpmc4(); -extern u32 PPCMffpscr(); -extern void PPCMtfpscr(); -extern void PPCMfhid2(); -extern void PPCMthid2(); -extern void PPCMtwpar(); -extern void PPCDisableSpeculation(); -extern void PPCSetFpNonIEEEMode(); - -// -// External References: -// - -// -// Declarations: -// +// clang-format off /* 80339CC0-80339CC8 -00001 0008+00 0/0 0/0 0/0 .text PPCMfmsr */ -asm void PPCMfmsr() { - // clang-format off +asm u32 PPCMfmsr(void) { nofralloc mfmsr r3 blr - // clang-format on } /* 80339CC8-80339CD0 -00001 0008+00 0/0 0/0 0/0 .text PPCMtmsr */ -asm void PPCMtmsr() { - // clang-format off +asm void PPCMtmsr(register u32 newMSR) { nofralloc - mtmsr r3 + mtmsr newMSR blr - // clang-format on } /* 80339CD0-80339CD8 -00001 0008+00 0/0 0/0 0/0 .text PPCMfhid0 */ -asm void PPCMfhid0() { - // clang-format off +asm u32 PPCMfhid0(void) { nofralloc - mfspr r3, 0x3f0 + mfspr r3, HID0 blr - // clang-format on } /* 80339CD8-80339CE0 -00001 0008+00 0/0 0/0 0/0 .text PPCMthid0 */ -asm void PPCMthid0() { - // clang-format off +asm void PPCMthid0(register u32 newHID0) { nofralloc - mtspr 0x3f0, r3 + mtspr HID0, newHID0 blr - // clang-format on } /* 80339CE0-80339CE8 -00001 0008+00 0/0 0/0 0/0 .text PPCMfl2cr */ -asm void PPCMfl2cr() { - // clang-format off +asm u32 PPCMfl2cr(void) { nofralloc - mfspr r3, 0x3f9 + mfspr r3, L2CR blr - // clang-format on } /* 80339CE8-80339CF0 -00001 0008+00 0/0 0/0 0/0 .text PPCMtl2cr */ -asm void PPCMtl2cr() { - // clang-format off +asm void PPCMtl2cr(register u32 newL2cr) { nofralloc - mtspr 0x3f9, r3 + mtspr L2CR, newL2cr blr - // clang-format on } /* 80339CF0-80339CF8 -00001 0008+00 0/0 0/0 0/0 .text PPCMtdec */ -asm void PPCMtdec() { - // clang-format off +asm void PPCMtdec(register u32 newDec) { nofralloc - mtspr 0x16, r3 + mtdec newDec blr - // clang-format on } /* 80339CF8-80339D00 -00001 0008+00 0/0 0/0 0/0 .text PPCSync */ -asm void PPCSync() { - // clang-format off +asm void PPCSync(void) { nofralloc sc blr - // clang-format on } /* 80339D00-80339D14 334640 0014+00 0/0 7/7 0/0 .text PPCHalt */ asm void PPCHalt(void) { - // clang-format off nofralloc sync + _spin: nop li r3, 0 nop b _spin - // clang-format on } /* 80339D14-80339D1C -00001 0008+00 0/0 0/0 0/0 .text PPCMtmmcr0 */ -asm void PPCMtmmcr0() { - // clang-format off +asm void PPCMtmmcr0(register u32 newMmcr0) { nofralloc - mtspr 0x3b8, r3 + mtspr MMCR0, newMmcr0 blr - // clang-format on } /* 80339D1C-80339D24 -00001 0008+00 0/0 0/0 0/0 .text PPCMtmmcr1 */ -asm void PPCMtmmcr1() { - // clang-format off +asm void PPCMtmmcr1(register u32 newMmcr1) { nofralloc - mtspr 0x3bc, r3 + mtspr MMCR1, newMmcr1 blr - // clang-format on } /* 80339D24-80339D2C -00001 0008+00 0/0 0/0 0/0 .text PPCMtpmc1 */ -asm void PPCMtpmc1() { - // clang-format off +asm void PPCMtpmc1(register u32 newPmc1) { nofralloc - mtspr 0x3b9, r3 + mtspr PMC1, newPmc1 blr - // clang-format on } /* 80339D2C-80339D34 -00001 0008+00 0/0 0/0 0/0 .text PPCMtpmc2 */ -asm void PPCMtpmc2() { - // clang-format off +asm void PPCMtpmc2(register u32 newPmc2) { nofralloc - mtspr 0x3ba, r3 + mtspr PMC2, newPmc2 blr - // clang-format on } /* 80339D34-80339D3C -00001 0008+00 0/0 0/0 0/0 .text PPCMtpmc3 */ -asm void PPCMtpmc3() { - // clang-format off +asm void PPCMtpmc3(register u32 newPmc3) { nofralloc - mtspr 0x3bd, r3 + mtspr PMC3, newPmc3 blr - // clang-format on } /* 80339D3C-80339D44 -00001 0008+00 0/0 0/0 0/0 .text PPCMtpmc4 */ -asm void PPCMtpmc4() { - // clang-format off +asm void PPCMtpmc4(register u32 newPmc4) { nofralloc - mtspr 0x3be, r3 + mtspr PMC4, newPmc4 blr - // clang-format on } /* 80339D44-80339D64 334684 0020+00 0/0 2/2 0/0 .text PPCMffpscr */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 PPCMffpscr() { - nofralloc -#include "asm/dolphin/base/PPCArch/PPCMffpscr.s" +u32 PPCMffpscr(void) { + union FpscrUnion m; + + asm { + mffs fp31 + stfd fp31, m.f; + } + + return m.u.fpscr; } -#pragma pop /* 80339D64-80339D8C 3346A4 0028+00 0/0 2/2 0/0 .text PPCMtfpscr */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PPCMtfpscr() { - nofralloc -#include "asm/dolphin/base/PPCArch/PPCMtfpscr.s" +void PPCMtfpscr(register u32 newFPSCR) { + union FpscrUnion m; + + asm { + li r4, 0 + stw r4, m.u.fpscr_pad; + stw newFPSCR, m.u.fpscr + lfd fp31, m.f + mtfsf 0xff, fp31 + } } -#pragma pop /* 80339D8C-80339D94 -00001 0008+00 0/0 0/0 0/0 .text PPCMfhid2 */ -asm void PPCMfhid2() { - // clang-format off +asm u32 PPCMfhid2(void) { nofralloc - mfspr r3, 0x398 + mfspr r3, HID2 blr - // clang-format on } /* 80339D94-80339D9C -00001 0008+00 0/0 0/0 0/0 .text PPCMthid2 */ -asm void PPCMthid2() { - // clang-format off +asm void PPCMthid2(register u32 newhid2) { nofralloc - mtspr 0x398, r3 + mtspr HID2, newhid2 blr - // clang-format on } /* 80339D9C-80339DA4 -00001 0008+00 0/0 0/0 0/0 .text PPCMtwpar */ -asm void PPCMtwpar() { - // clang-format off +asm void PPCMtwpar(register u32 newwpar) { nofralloc - mtspr 0x399, r3 + mtspr WPAR, newwpar blr - // clang-format on } /* 80339DA4-80339DCC 3346E4 0028+00 0/0 1/1 0/0 .text PPCDisableSpeculation */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PPCDisableSpeculation() { - nofralloc -#include "asm/dolphin/base/PPCArch/PPCDisableSpeculation.s" +void PPCDisableSpeculation(void) { + PPCMthid0(PPCMfhid0() | HID0_SPD); } -#pragma pop /* 80339DCC-80339DD4 -00001 0008+00 0/0 0/0 0/0 .text PPCSetFpNonIEEEMode */ asm void PPCSetFpNonIEEEMode() { - // clang-format off nofralloc - mtfsb1 0x1d + mtfsb1 4*7+1 blr - // clang-format on } +// clang-format on diff --git a/libs/dolphin/card/CARDBios.c b/libs/dolphin/card/CARDBios.c index c4c2bcada93..47217f41be2 100644 --- a/libs/dolphin/card/CARDBios.c +++ b/libs/dolphin/card/CARDBios.c @@ -3,160 +3,187 @@ // Translation Unit: CARDBios // -#include "dolphin/card/CARDBios.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/card/card.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/dvd/dvd.h" +#include "dolphin/exi/EXIBios.h" + +#include "dolphin/card/CARDPriv.h" // // Forward References: // - -void __CARDDefaultApiCallback(); -void __CARDSyncCallback(); -void __CARDExtHandler(); -void __CARDExiHandler(); -void __CARDTxHandler(); -void __CARDUnlockedHandler(); -void __CARDEnableInterrupt(); -void __CARDReadStatus(); -void __CARDReadVendorID(); -void __CARDClearStatus(); -static void TimeoutHandler(); -static void Retry(); -static void UnlockedCallback(); -void __CARDStart(); -void __CARDReadSegment(); -void __CARDWritePage(); -void __CARDEraseSector(); -void CARDInit(); -void __CARDGetFontEncode(); -void __CARDSetDiskID(); -void __CARDGetControlBlock(); -void __CARDPutControlBlock(); -void CARDFreeBlocks(); -void __CARDSync(); -static void OnReset(); -void CARDGetFastMode(); +static s32 OnReset(s32); +static void TimeoutHandler(OSAlarm* alarm, OSContext* context); +static s32 Retry(s32 chan); +static void UnlockedCallback(s32 chan, s32 result); // // External References: // -void OSRegisterVersion(); -void OSInitAlarm(); -void OSCreateAlarm(); -void OSSetAlarm(); -void OSCancelAlarm(); -void OSGetFontEncode(); -void OSDisableInterrupts(); -void OSRestoreInterrupts(); -void OSRegisterResetFunction(); -void OSInitThreadQueue(); -void OSSleepThread(); -void OSWakeupThread(); -void EXIImm(); -void EXIImmEx(); -void EXIDma(); -void EXISync(); -void EXISetExiCallback(); -void EXIProbe(); -void EXISelect(); -void EXIDeselect(); -void EXILock(); -void EXIUnlock(); void DSPInit(); -void __CARDGetFatBlock(); -void __CARDGetDirBlock(); -void CARDUnmount(); // // Declarations: // /* 80352A30-80352A34 34D370 0004+00 0/0 5/5 0/0 .text __CARDDefaultApiCallback */ -void __CARDDefaultApiCallback() { - /* empty function */ -} +void __CARDDefaultApiCallback(s32 chan, s32 result) {} /* ############################################################################################## */ /* 8044CDE0-8044CE00 079B00 0020+00 0/1 3/3 0/0 .bss __CARDDiskNone */ -extern u8 __CARDDiskNone[32]; -u8 __CARDDiskNone[32]; +DVDDiskID __CARDDiskNone; /* ############################################################################################## */ /* 8044CBC0-8044CDE0 0798E0 0220+00 16/16 27/27 0/0 .bss __CARDBlock */ -extern u8 __CARDBlock[544]; -u8 __CARDBlock[544]; +CARDControl __CARDBlock[2]; /* 80352A34-80352A68 34D374 0034+00 0/0 7/7 0/0 .text __CARDSyncCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDSyncCallback() { - nofralloc -#include "asm/dolphin/card/CARDBios/__CARDSyncCallback.s" +void __CARDSyncCallback(s32 chan, s32 result) { + OSWakeupThread(&__CARDBlock[chan].threadQueue); } -#pragma pop /* 80352A68-80352B40 34D3A8 00D8+00 0/0 1/1 0/0 .text __CARDExtHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDExtHandler() { - nofralloc -#include "asm/dolphin/card/CARDBios/__CARDExtHandler.s" +void __CARDExtHandler(s32 chan, OSContext* context) { + CARDControl* card; + CARDCallback callback; + + card = &__CARDBlock[chan]; + if (card->attached) { + card->attached = FALSE; + EXISetExiCallback(chan, 0); + OSCancelAlarm(&card->alarm); + callback = card->exiCallback; + + if (callback) { + card->exiCallback = 0; + callback(chan, CARD_RESULT_NOCARD); + } + + if (card->result != CARD_RESULT_BUSY) { + card->result = CARD_RESULT_NOCARD; + } + + callback = card->extCallback; + if (callback && CARD_MAX_MOUNT_STEP <= card->mountStep) { + card->extCallback = 0; + callback(chan, CARD_RESULT_NOCARD); + } + } } -#pragma pop /* 80352B40-80352C58 34D480 0118+00 0/0 1/1 0/0 .text __CARDExiHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDExiHandler() { - nofralloc -#include "asm/dolphin/card/CARDBios/__CARDExiHandler.s" +void __CARDExiHandler(s32 chan, OSContext* context) { + CARDControl* card; + CARDCallback callback; + u8 status; + s32 result; + + card = &__CARDBlock[chan]; + + OSCancelAlarm(&card->alarm); + + if (!card->attached) { + return; + } + + if (!EXILock(chan, 0, 0)) { + result = CARD_RESULT_FATAL_ERROR; + goto fatal; + } + + if ((result = __CARDReadStatus(chan, &status)) < 0 || (result = __CARDClearStatus(chan)) < 0) { + goto error; + } + + if ((result = (status & 0x18) ? CARD_RESULT_IOERROR : CARD_RESULT_READY) == + CARD_RESULT_IOERROR && + --card->retry > 0) { + result = Retry(chan); + if (result >= 0) { + return; + } + goto fatal; + } + +error: + EXIUnlock(chan); + +fatal: + callback = card->exiCallback; + if (callback) { + card->exiCallback = 0; + callback(chan, result); + } } -#pragma pop /* 80352C58-80352D00 34D598 00A8+00 3/3 0/0 0/0 .text __CARDTxHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDTxHandler() { - nofralloc -#include "asm/dolphin/card/CARDBios/__CARDTxHandler.s" +void __CARDTxHandler(s32 chan, OSContext* context) { + CARDControl* card; + CARDCallback callback; + BOOL err; + + card = &__CARDBlock[chan]; + err = !EXIDeselect(chan); + EXIUnlock(chan); + callback = card->txCallback; + + if (callback) { + card->txCallback = 0; + callback(chan, (!err && EXIProbe(chan)) ? CARD_RESULT_READY : CARD_RESULT_NOCARD); + } } -#pragma pop /* 80352D00-80352D84 34D640 0084+00 2/2 2/2 0/0 .text __CARDUnlockedHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDUnlockedHandler() { - nofralloc -#include "asm/dolphin/card/CARDBios/__CARDUnlockedHandler.s" +void __CARDUnlockedHandler(s32 chan, OSContext* context) { + CARDControl* card; + CARDCallback callback; + + card = &__CARDBlock[chan]; + callback = card->unlockCallback; + if (callback) { + card->unlockCallback = 0; + callback(chan, EXIProbe(chan) ? CARD_RESULT_UNLOCKED : CARD_RESULT_NOCARD); + } } -#pragma pop /* 80352D84-80352E44 34D6C4 00C0+00 0/0 1/1 0/0 .text __CARDEnableInterrupt */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDEnableInterrupt() { - nofralloc -#include "asm/dolphin/card/CARDBios/__CARDEnableInterrupt.s" +s32 __CARDEnableInterrupt(s32 chan, BOOL enable) { + BOOL err; + u32 cmd; + + if (!EXISelect(chan, 0, 4)) { + return CARD_RESULT_NOCARD; + } + + cmd = enable ? 0x81010000 : 0x81000000; + err = FALSE; + err |= !EXIImm(chan, &cmd, 2, 1, NULL); + err |= !EXISync(chan); + err |= !EXIDeselect(chan); + return err ? CARD_RESULT_NOCARD : CARD_RESULT_READY; } -#pragma pop /* 80352E44-80352F34 34D784 00F0+00 1/1 2/2 0/0 .text __CARDReadStatus */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDReadStatus() { - nofralloc -#include "asm/dolphin/card/CARDBios/__CARDReadStatus.s" +s32 __CARDReadStatus(s32 chan, u8* status) { + BOOL err; + u32 cmd; + + if (!EXISelect(chan, 0, 4)) { + return CARD_RESULT_NOCARD; + } + + cmd = 0x83000000; + err = FALSE; + err |= !EXIImm(chan, &cmd, 2, 1, NULL); + err |= !EXISync(chan); + err |= !EXIImm(chan, status, 1, 0, NULL); + err |= !EXISync(chan); + err |= !EXIDeselect(chan); + return err ? CARD_RESULT_NOCARD : CARD_RESULT_READY; } -#pragma pop /* 80352F34-80353024 34D874 00F0+00 0/0 1/1 0/0 .text __CARDReadVendorID */ #pragma push @@ -169,80 +196,195 @@ asm void __CARDReadVendorID() { #pragma pop /* 80353024-803530D0 34D964 00AC+00 1/1 1/1 0/0 .text __CARDClearStatus */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDClearStatus() { - nofralloc -#include "asm/dolphin/card/CARDBios/__CARDClearStatus.s" +s32 __CARDClearStatus(s32 chan) { + BOOL err; + u32 cmd; + + if (!EXISelect(chan, 0, 4)) { + return CARD_RESULT_NOCARD; + } + + cmd = 0x89000000; + err = FALSE; + err |= !EXIImm(chan, &cmd, 1, 1, 0); + err |= !EXISync(chan); + err |= !EXIDeselect(chan); + + return err ? CARD_RESULT_NOCARD : CARD_RESULT_READY; } -#pragma pop /* 803530D0-80353174 34DA10 00A4+00 2/2 0/0 0/0 .text TimeoutHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void TimeoutHandler() { - nofralloc -#include "asm/dolphin/card/CARDBios/TimeoutHandler.s" +static void TimeoutHandler(OSAlarm* alarm, OSContext* context) { + s32 chan; + CARDControl* card; + CARDCallback callback; + for (chan = 0; chan < 2; ++chan) { + card = &__CARDBlock[chan]; + if (alarm == &card->alarm) { + break; + } + } + + if (!card->attached) { + return; + } + + EXISetExiCallback(chan, NULL); + callback = card->exiCallback; + if (callback) { + card->exiCallback = 0; + callback(chan, CARD_RESULT_IOERROR); + } } -#pragma pop /* 80353174-80353414 34DAB4 02A0+00 2/2 0/0 0/0 .text Retry */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void Retry() { +static asm s32 Retry(s32 chan) { nofralloc #include "asm/dolphin/card/CARDBios/Retry.s" } #pragma pop /* 80353414-80353524 34DD54 0110+00 1/1 0/0 0/0 .text UnlockedCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void UnlockedCallback() { - nofralloc -#include "asm/dolphin/card/CARDBios/UnlockedCallback.s" +static void UnlockedCallback(s32 chan, s32 result) { + CARDCallback callback; + CARDControl* card; + + card = &__CARDBlock[chan]; + if (result >= 0) { + card->unlockCallback = UnlockedCallback; + if (!EXILock(chan, 0, __CARDUnlockedHandler)) { + result = CARD_RESULT_READY; + } else { + card->unlockCallback = 0; + result = Retry(chan); + } + } + + if (result < 0) { + switch (card->cmd[0]) { + case 0x52: + callback = card->txCallback; + if (callback) { + card->txCallback = 0; + callback(chan, result); + } + + break; + case 0xF2: + case 0xF4: + case 0xF1: + callback = card->exiCallback; + if (callback) { + card->exiCallback = 0; + callback(chan, result); + } + break; + } + } } -#pragma pop /* 80353524-80353748 34DE64 0224+00 3/3 0/0 0/0 .text __CARDStart */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __CARDStart() { +asm s32 __CARDStart(s32 chan, CARDCallback txCallback, CARDCallback exiCallback) { nofralloc #include "asm/dolphin/card/CARDBios/__CARDStart.s" } #pragma pop +#define AD1(x) ((u8)(((x) >> 17) & 0x7f)) +#define AD1EX(x) ((u8)(AD1(x) | 0x80)); +#define AD2(x) ((u8)(((x) >> 9) & 0xff)) +#define AD3(x) ((u8)(((x) >> 7) & 0x03)) +#define BA(x) ((u8)((x)&0x7f)) + /* 80353748-8035387C 34E088 0134+00 0/0 2/2 0/0 .text __CARDReadSegment */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDReadSegment() { - nofralloc -#include "asm/dolphin/card/CARDBios/__CARDReadSegment.s" +s32 __CARDReadSegment(s32 chan, CARDCallback callback) { + CARDControl* card; + s32 result; + + card = &__CARDBlock[chan]; + card->cmd[0] = 0x52; + card->cmd[1] = AD1(card->addr); + card->cmd[2] = AD2(card->addr); + card->cmd[3] = AD3(card->addr); + card->cmd[4] = BA(card->addr); + card->cmdlen = 5; + card->mode = 0; + card->retry = 0; + + result = __CARDStart(chan, callback, 0); + if (result == CARD_RESULT_BUSY) { + result = CARD_RESULT_READY; + } else if (result >= 0) { + if (!EXIImmEx(chan, card->cmd, card->cmdlen, 1) || + !EXIImmEx(chan, (u8*)card->workArea + sizeof(CARDID), card->latency, + 1) || // XXX use DMA if possible + !EXIDma(chan, card->buffer, 512, card->mode, __CARDTxHandler)) { + card->txCallback = 0; + EXIDeselect(chan); + EXIUnlock(chan); + result = CARD_RESULT_NOCARD; + } else { + result = CARD_RESULT_READY; + } + } + return result; } -#pragma pop /* 8035387C-803539B8 34E1BC 013C+00 0/0 2/2 0/0 .text __CARDWritePage */ +// needs compiler epilogue patch +#ifdef NONMATCH +s32 __CARDWritePage(s32 chan, CARDCallback callback) { + CARDControl* card; + s32 result; + + card = &__CARDBlock[chan]; + card->cmd[0] = 0xF2; + card->cmd[1] = AD1(card->addr); + card->cmd[2] = AD2(card->addr); + card->cmd[3] = AD3(card->addr); + card->cmd[4] = BA(card->addr); + card->cmdlen = 5; + card->mode = 1; + card->retry = 3; + + result = __CARDStart(chan, 0, callback); + if (result == CARD_RESULT_BUSY) { + result = CARD_RESULT_READY; + } else if (result >= 0) { + if (!EXIImmEx(chan, card->cmd, card->cmdlen, 1) || + !EXIDma(chan, card->buffer, 128, card->mode, __CARDTxHandler)) { + card->exiCallback = 0; + EXIDeselect(chan); + EXIUnlock(chan); + result = CARD_RESULT_NOCARD; + } else { + result = CARD_RESULT_READY; + } + } + return result; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __CARDWritePage() { +asm s32 __CARDWritePage(s32 chan, CARDCallback callback) { nofralloc #include "asm/dolphin/card/CARDBios/__CARDWritePage.s" } #pragma pop +#endif /* 803539B8-80353AC8 34E2F8 0110+00 0/0 6/6 0/0 .text __CARDEraseSector */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __CARDEraseSector() { +asm s32 __CARDEraseSector(s32 chan, u32 addr, CARDCallback callback) { nofralloc #include "asm/dolphin/card/CARDBios/__CARDEraseSector.s" } @@ -250,78 +392,96 @@ asm void __CARDEraseSector() { /* ############################################################################################## */ /* 803D1E38-803D1E80 02EF58 0046+02 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[] = "<< Dolphin SDK - CARD\trelease build: Apr 5 2004 04:15:35 (0x2301) >>"; +SECTION_DATA static char lit_1[] = + "<< Dolphin SDK - CARD\trelease build: Apr 5 2004 04:15:35 (0x2301) >>"; /* 803D1E80-803D1EA0 -00001 0010+10 1/1 0/0 0/0 .data ResetFunctionInfo */ -SECTION_DATA static void* ResetFunctionInfo[4 + 4 /* padding */] = { - (void*)OnReset, - (void*)0x0000007F, - (void*)NULL, - (void*)NULL, - /* padding */ - NULL, - NULL, +SECTION_DATA static OSResetFunctionInfo ResetFunctionInfo = { + OnReset, + 127, NULL, NULL, }; /* 80450A60-80450A68 -00001 0004+04 1/1 0/0 0/0 .sdata __CARDVersion */ -SECTION_SDATA static void* __CARDVersion[1 + 1 /* padding */] = { - (void*)&lit_1, - /* padding */ - NULL, -}; +SECTION_SDATA static const char* __CARDVersion = lit_1; /* 80451918-80451920 -00001 0004+04 3/3 0/0 0/0 .sbss None */ /* 80451918 0002+00 data_80451918 __CARDEncode */ +static u16 __CARDEncode; + /* 8045191A 0002+00 data_8045191A __CARDFastMode */ -static u8 struct_80451918[4 + 4 /* padding */]; +static u16 __CARDFastMode; /* 80353AC8-80353B74 34E408 00AC+00 0/0 1/1 0/0 .text CARDInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CARDInit() { - nofralloc -#include "asm/dolphin/card/CARDBios/CARDInit.s" +void CARDInit(void) { + int chan; + + if (__CARDBlock[0].diskID && __CARDBlock[1].diskID) { + return; + } + + __CARDEncode = OSGetFontEncode(); + + OSRegisterVersion(__CARDVersion); + + DSPInit(); + OSInitAlarm(); + + for (chan = 0; chan < 2; ++chan) { + CARDControl* card = &__CARDBlock[chan]; + + card->result = CARD_RESULT_NOCARD; + OSInitThreadQueue(&card->threadQueue); + OSCreateAlarm(&card->alarm); + } + __CARDSetDiskID((DVDDiskID*)OSPhysicalToCached(0x0)); + + OSRegisterResetFunction(&ResetFunctionInfo); } -#pragma pop /* 80353B74-80353B7C 34E4B4 0008+00 0/0 2/2 0/0 .text __CARDGetFontEncode */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDGetFontEncode() { - nofralloc -#include "asm/dolphin/card/CARDBios/__CARDGetFontEncode.s" +u16 __CARDGetFontEncode(void) { + return __CARDEncode; } -#pragma pop /* 80353B7C-80353BB4 34E4BC 0038+00 1/1 0/0 0/0 .text __CARDSetDiskID */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDSetDiskID() { - nofralloc -#include "asm/dolphin/card/CARDBios/__CARDSetDiskID.s" +void __CARDSetDiskID(const DVDDiskID* id) { + __CARDBlock[0].diskID = id ? id : &__CARDDiskNone; + __CARDBlock[1].diskID = id ? id : &__CARDDiskNone; } -#pragma pop /* 80353BB4-80353C6C 34E4F4 00B8+00 1/1 10/10 0/0 .text __CARDGetControlBlock */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDGetControlBlock() { - nofralloc -#include "asm/dolphin/card/CARDBios/__CARDGetControlBlock.s" +s32 __CARDGetControlBlock(s32 chan, CARDControl** pcard) { + BOOL enabled; + s32 result; + CARDControl* card; + + card = &__CARDBlock[chan]; + if (chan < 0 || chan >= 2 || card->diskID == NULL) { + return CARD_RESULT_FATAL_ERROR; + } + + enabled = OSDisableInterrupts(); + if (!card->attached) { + result = CARD_RESULT_NOCARD; + } else if (card->result == CARD_RESULT_BUSY) { + result = CARD_RESULT_BUSY; + } else { + card->result = CARD_RESULT_BUSY; + result = CARD_RESULT_READY; + card->apiCallback = 0; + *pcard = card; + } + OSRestoreInterrupts(enabled); + return result; } -#pragma pop /* 80353C6C-80353CD0 34E5AC 0064+00 0/0 24/24 0/0 .text __CARDPutControlBlock */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __CARDPutControlBlock() { +asm s32 __CARDPutControlBlock(CARDControl* card, s32 result) { nofralloc #include "asm/dolphin/card/CARDBios/__CARDPutControlBlock.s" } @@ -331,7 +491,7 @@ asm void __CARDPutControlBlock() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void CARDFreeBlocks() { +asm s32 CARDFreeBlocks(s32 chan, s32* byteNotUsed, s32* filesNotUsed) { nofralloc #include "asm/dolphin/card/CARDBios/CARDFreeBlocks.s" } @@ -341,28 +501,28 @@ asm void CARDFreeBlocks() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __CARDSync() { +asm s32 __CARDSync(s32 chan) { nofralloc #include "asm/dolphin/card/CARDBios/__CARDSync.s" } #pragma pop /* 80353EB8-80353F08 34E7F8 0050+00 1/0 0/0 0/0 .text OnReset */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void OnReset() { - nofralloc -#include "asm/dolphin/card/CARDBios/OnReset.s" +static s32 OnReset(s32 f) { + if (!f) { + if (CARDUnmount(0) == CARD_RESULT_BUSY || CARDUnmount(1) == CARD_RESULT_BUSY) { + return FALSE; + } + } + + return TRUE; } -#pragma pop /* 80353F08-80353F24 34E848 001C+00 0/0 1/1 0/0 .text CARDGetFastMode */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CARDGetFastMode() { - nofralloc -#include "asm/dolphin/card/CARDBios/CARDGetFastMode.s" +BOOL CARDGetFastMode(void) { + if (__CARDFastMode != 0) { + return TRUE; + } + + return FALSE; } -#pragma pop diff --git a/libs/dolphin/card/CARDBlock.c b/libs/dolphin/card/CARDBlock.c index 9fd492ece3f..a1cab5be6aa 100644 --- a/libs/dolphin/card/CARDBlock.c +++ b/libs/dolphin/card/CARDBlock.c @@ -4,80 +4,140 @@ // #include "dolphin/card/CARDBlock.h" +#include "MSL_C/MSL_Common/Src/string.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/card/card.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/dvd/dvd.h" + +#include "dolphin/card/CARDPriv.h" // // Forward References: // -void __CARDGetFatBlock(); -static void WriteCallback(); -static void EraseCallback(); -void __CARDAllocBlock(); -void __CARDUpdateFatBlock(); - -// -// External References: -// - -SECTION_INIT void memcpy(); -void DCStoreRange(); -void __CARDEraseSector(); -void __CARDPutControlBlock(); -void __CARDWrite(); -void __CARDCheckSum(); -extern u8 __CARDBlock[544]; +static void WriteCallback(s32 chan, s32 result); +static void EraseCallback(s32 chan, s32 result); // // Declarations: // /* 80355414-8035541C 34FD54 0008+00 0/0 5/5 0/0 .text __CARDGetFatBlock */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDGetFatBlock() { - nofralloc -#include "asm/dolphin/card/CARDBlock/__CARDGetFatBlock.s" +u16* __CARDGetFatBlock(CARDControl* card) { + return card->currentFat; } -#pragma pop /* 8035541C-803554F0 34FD5C 00D4+00 1/1 0/0 0/0 .text WriteCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void WriteCallback() { - nofralloc -#include "asm/dolphin/card/CARDBlock/WriteCallback.s" +static void WriteCallback(s32 chan, s32 result) { + CARDControl* card; + CARDCallback callback; + u16* fat; + u16* fatBack; + + card = &__CARDBlock[chan]; + + if (result >= 0) { + fat = (u16*)((u8*)card->workArea + 0x6000); + fatBack = (u16*)((u8*)card->workArea + 0x8000); + + if (card->currentFat == fat) { + card->currentFat = fatBack; + memcpy(fatBack, fat, 0x2000); + } else { + card->currentFat = fat; + memcpy(fat, fatBack, 0x2000); + } + } + + if (card->apiCallback == NULL) { + __CARDPutControlBlock(card, result); + } + + callback = card->eraseCallback; + if (callback) { + card->eraseCallback = NULL; + callback(chan, result); + } } -#pragma pop /* 803554F0-803555B8 34FE30 00C8+00 1/1 0/0 0/0 .text EraseCallback */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void EraseCallback() { +static asm void EraseCallback(s32 chan, s32 result) { nofralloc #include "asm/dolphin/card/CARDBlock/EraseCallback.s" } #pragma pop /* 803555B8-803556D0 34FEF8 0118+00 0/0 1/1 0/0 .text __CARDAllocBlock */ +// needs compiler epilogue patch +#ifdef NONMATCHING +s32 __CARDAllocBlock(s32 chan, u32 cBlock, CARDCallback callback) { + CARDControl* card; + u16* fat; + u16 iBlock; + u16 startBlock; + u16 prevBlock; + u16 count; + + card = &__CARDBlock[chan]; + if (!card->attached) { + return CARD_RESULT_NOCARD; + } + + fat = __CARDGetFatBlock(card); + if (fat[3] < cBlock) { + return CARD_RESULT_INSSPACE; + } + + fat[3] -= cBlock; + startBlock = 0xFFFF; + iBlock = fat[4]; + count = 0; + while (0 < cBlock) { + if (card->cBlock - 5 < ++count) { + return CARD_RESULT_BROKEN; + } + + iBlock++; + if (!CARDIsValidBlockNo(card, iBlock)) { + iBlock = 5; + } + + if (fat[iBlock] == 0x0000u) { + if (startBlock == 0xFFFF) { + startBlock = iBlock; + } else { + fat[prevBlock] = iBlock; + } + prevBlock = iBlock; + fat[iBlock] = 0xFFFF; + --cBlock; + } + } + fat[4] = iBlock; + card->startBlock = startBlock; + + return __CARDUpdateFatBlock(chan, fat, callback); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __CARDAllocBlock() { +asm s32 __CARDAllocBlock(s32 chan, u32 cBlock, CARDCallback callback) { nofralloc #include "asm/dolphin/card/CARDBlock/__CARDAllocBlock.s" } #pragma pop +#endif /* 803556D0-8035577C 350010 00AC+00 1/1 1/1 0/0 .text __CARDUpdateFatBlock */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __CARDUpdateFatBlock() { +asm s32 __CARDUpdateFatBlock(s32 chan, u16* fat, CARDCallback callback) { nofralloc #include "asm/dolphin/card/CARDBlock/__CARDUpdateFatBlock.s" } diff --git a/libs/dolphin/card/CARDCheck.c b/libs/dolphin/card/CARDCheck.c index 12531f4116e..d1fea3f8da6 100644 --- a/libs/dolphin/card/CARDCheck.c +++ b/libs/dolphin/card/CARDCheck.c @@ -4,60 +4,59 @@ // #include "dolphin/card/CARDCheck.h" +#include "MSL_C/MSL_Common/Src/string.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/card/card.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/dvd/dvd.h" + +#include "dolphin/card/CARDPriv.h" // // Forward References: // -void __CARDCheckSum(); -static void VerifyID(); -static void VerifyDir(); -static void VerifyFAT(); -void __CARDVerify(); -static void CARDCheckExAsync(); -void CARDCheck(); +static s32 VerifyID(CARDControl* card); +static s32 VerifyDir(CARDControl* card, int* outCurrent); +static s32 VerifyFAT(CARDControl* card, int* outCurrent); // // External References: // -SECTION_INIT void memset(); -SECTION_INIT void memcpy(); -void OSDisableInterrupts(); -void OSRestoreInterrupts(); -void __OSLockSramEx(); -void __OSUnlockSramEx(); -void __CARDSyncCallback(); -void __CARDGetFontEncode(); -void __CARDGetControlBlock(); -void __CARDPutControlBlock(); -void __CARDSync(); -void __CARDUpdateFatBlock(); -void __CARDUpdateDir(); void __shr2i(); -extern u8 __CARDBlock[544]; // // Declarations: // /* 803559E0-80355B90 350320 01B0+00 0/0 3/3 0/0 .text __CARDCheckSum */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDCheckSum() { - nofralloc -#include "asm/dolphin/card/CARDCheck/__CARDCheckSum.s" +void __CARDCheckSum(void* ptr, int length, u16* checksum, u16* checksumInv) { + u16* p; + int i; + + length /= sizeof(u16); + *checksum = *checksumInv = 0; + + for (i = 0, p = ptr; i < length; i++, p++) { + *checksum += *p; + *checksumInv += ~*p; + } + + if (*checksum == 0xFFFF) { + *checksum = 0; + } + + if (*checksumInv == 0xFFFF) { + *checksumInv = 0; + } } -#pragma pop /* 80355B90-80355E14 3504D0 0284+00 2/2 0/0 0/0 .text VerifyID */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void VerifyID() { +static asm s32 VerifyID(CARDControl* card) { nofralloc #include "asm/dolphin/card/CARDCheck/VerifyID.s" } @@ -67,7 +66,7 @@ static asm void VerifyID() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void VerifyDir() { +static asm s32 VerifyDir(CARDControl* card, int* outCurrent) { nofralloc #include "asm/dolphin/card/CARDCheck/VerifyDir.s" } @@ -77,38 +76,188 @@ static asm void VerifyDir() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void VerifyFAT() { +static asm s32 VerifyFAT(CARDControl* card, int* outCurrent) { nofralloc #include "asm/dolphin/card/CARDCheck/VerifyFAT.s" } #pragma pop /* 803562D8-80356364 350C18 008C+00 0/0 1/1 0/0 .text __CARDVerify */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDVerify() { - nofralloc -#include "asm/dolphin/card/CARDCheck/__CARDVerify.s" +s32 __CARDVerify(CARDControl* card) { + s32 result; + int errors; + + result = VerifyID(card); + if (result < 0) { + return result; + } + + errors = VerifyDir(card, NULL); + errors += VerifyFAT(card, NULL); + switch (errors) { + case 0: + return CARD_RESULT_READY; + case 1: + return CARD_RESULT_BROKEN; + default: + return CARD_RESULT_BROKEN; + } } -#pragma pop /* 80356364-803568F4 350CA4 0590+00 1/1 0/0 0/0 .text CARDCheckExAsync */ +#ifdef NONMATCHING +s32 CARDCheckExAsync(s32 chan, s32* xferBytes, CARDCallback callback) { + CARDControl* card; + CARDDir* dir[2]; + u16* fat[2]; + u16* map; + s32 result; + int errors; + int currentFat; + int currentDir; + s32 fileNo; + u16 iBlock; + u16 cBlock; + u16 cFree; + BOOL updateFat = FALSE; + BOOL updateDir = FALSE; + BOOL updateOrphan = FALSE; + + if (xferBytes) { + *xferBytes = 0; + } + + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + + result = VerifyID(card); + if (result < 0) { + return __CARDPutControlBlock(card, result); + } + + errors = VerifyDir(card, ¤tDir); + errors += VerifyFAT(card, ¤tFat); + if (1 < errors) { + return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); + } + + dir[0] = (CARDDir*)((u8*)card->workArea + (1 + 0) * CARD_SYSTEM_BLOCK_SIZE); + dir[1] = (CARDDir*)((u8*)card->workArea + (1 + 1) * CARD_SYSTEM_BLOCK_SIZE); + fat[0] = (u16*)((u8*)card->workArea + (3 + 0) * CARD_SYSTEM_BLOCK_SIZE); + fat[1] = (u16*)((u8*)card->workArea + (3 + 1) * CARD_SYSTEM_BLOCK_SIZE); + + switch (errors) { + case 0: + break; + case 1: + if (!card->currentDir) { + card->currentDir = dir[currentDir]; + memcpy(dir[currentDir], dir[currentDir ^ 1], CARD_SYSTEM_BLOCK_SIZE); + updateDir = TRUE; + } else { + card->currentFat = fat[currentFat]; + memcpy(fat[currentFat], fat[currentFat ^ 1], CARD_SYSTEM_BLOCK_SIZE); + updateFat = TRUE; + } + break; + } + + map = fat[currentFat ^ 1]; + memset(map, 0, CARD_SYSTEM_BLOCK_SIZE); + + for (fileNo = 0; fileNo < CARD_MAX_FILE; fileNo++) { + CARDDir* ent; + + ent = &card->currentDir[fileNo]; + if (ent->gameName[0] == 0xff) { + continue; + } + + for (iBlock = ent->startBlock, cBlock = 0; iBlock != 0xFFFF && cBlock < ent->length; + iBlock = card->currentFat[iBlock], ++cBlock) { + if (!CARDIsValidBlockNo(card, iBlock) || 1 < ++map[iBlock]) { + return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); + } + } + if (cBlock != ent->length || iBlock != 0xFFFF) { + return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); + } + } + + cFree = 0; + for (iBlock = CARD_NUM_SYSTEM_BLOCK; iBlock < card->cBlock; iBlock++) { + u16 nextBlock; + + nextBlock = card->currentFat[iBlock]; + if (map[iBlock] == 0) { + if (nextBlock != CARD_FAT_AVAIL) { + card->currentFat[iBlock] = CARD_FAT_AVAIL; + updateOrphan = TRUE; + } + cFree++; + } else if (!CARDIsValidBlockNo(card, nextBlock) && nextBlock != 0xFFFF) { + return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); + } + } + if (cFree != card->currentFat[CARD_FAT_FREEBLOCKS]) { + card->currentFat[CARD_FAT_FREEBLOCKS] = cFree; + updateOrphan = TRUE; + } + if (updateOrphan) { + __CARDCheckSum(&card->currentFat[CARD_FAT_CHECKCODE], CARD_SYSTEM_BLOCK_SIZE - sizeof(u32), + &card->currentFat[CARD_FAT_CHECKSUM], + &card->currentFat[CARD_FAT_CHECKSUMINV]); + } + + memcpy(fat[currentFat ^ 1], fat[currentFat], CARD_SYSTEM_BLOCK_SIZE); + + if (updateDir) { + if (xferBytes) { + *xferBytes = CARD_SYSTEM_BLOCK_SIZE; + } + return __CARDUpdateDir(chan, callback); + } + + if (updateFat | updateOrphan) { + if (xferBytes) { + *xferBytes = CARD_SYSTEM_BLOCK_SIZE; + } + return __CARDUpdateFatBlock(chan, card->currentFat, callback); + } + + __CARDPutControlBlock(card, CARD_RESULT_READY); + if (callback) { + BOOL enabled = OSDisableInterrupts(); + callback(chan, CARD_RESULT_READY); + OSRestoreInterrupts(enabled); + } + return CARD_RESULT_READY; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void CARDCheckExAsync() { +static asm s32 CARDCheckExAsync(s32 chan, s32* xferBytes, CARDCallback callback) { nofralloc #include "asm/dolphin/card/CARDCheck/CARDCheckExAsync.s" } #pragma pop +#endif /* 803568F4-80356948 351234 0054+00 0/0 2/2 0/0 .text CARDCheck */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CARDCheck() { - nofralloc -#include "asm/dolphin/card/CARDCheck/CARDCheck.s" +s32 CARDCheck(s32 chan) { + s32 xferBytes; + + s32 result = CARDCheckExAsync(chan, &xferBytes, __CARDSyncCallback); + if (result >= 0) { + if (&xferBytes == NULL) { + return result; + } + + return __CARDSync(chan); + } + + return result; } -#pragma pop diff --git a/libs/dolphin/card/CARDCreate.c b/libs/dolphin/card/CARDCreate.c index 4b96229d487..01caf4025c9 100644 --- a/libs/dolphin/card/CARDCreate.c +++ b/libs/dolphin/card/CARDCreate.c @@ -4,69 +4,135 @@ // #include "dolphin/card/CARDCreate.h" +#include "MSL_C/MSL_Common/Src/mem.h" +#include "MSL_C/MSL_Common/Src/string.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/card/card.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/dvd/dvd.h" -// -// Forward References: -// +#include "dolphin/card/CARDPriv.h" -static void CreateCallbackFat(); -static void CARDCreateAsync(); -void CARDCreate(); - -// -// External References: -// - -SECTION_INIT void memcpy(); -void OSGetTime(); -void __CARDDefaultApiCallback(); -void __CARDSyncCallback(); -void __CARDGetControlBlock(); -void __CARDPutControlBlock(); -void __CARDSync(); -void __CARDGetFatBlock(); -void __CARDAllocBlock(); -void __CARDGetDirBlock(); -void __CARDUpdateDir(); -void __CARDCompareFileName(); -void __div2i(); -void memcmp(); -void strncpy(); -void strlen(); -extern u8 __CARDBlock[544]; - -// -// Declarations: -// +static void CreateCallbackFat(s32 chan, s32 result); /* 80358108-80358238 352A48 0130+00 1/1 0/0 0/0 .text CreateCallbackFat */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void CreateCallbackFat() { - nofralloc -#include "asm/dolphin/card/CARDCreate/CreateCallbackFat.s" +static void CreateCallbackFat(s32 chan, s32 result) { + CARDControl* card; + CARDDir* dir; + CARDDir* ent; + CARDCallback callback; + + card = &__CARDBlock[chan]; + callback = card->apiCallback; + card->apiCallback = 0; + if (result < 0) { + goto error; + } + + dir = __CARDGetDirBlock(card); + ent = &dir[card->freeNo]; + memcpy(ent->gameName, card->diskID->game_name, sizeof(ent->gameName)); + memcpy(ent->company, card->diskID->company, sizeof(ent->company)); + ent->permission = CARD_ATTR_PUBLIC; + ent->copyTimes = 0; + ent->startBlock = card->startBlock; + + ent->bannerFormat = 0; + ent->iconAddr = 0xFFFFFFFF; + ent->iconFormat = 0; + ent->iconSpeed = 0; + ent->commentAddr = 0xFFFFFFFF; + + CARDSetIconSpeed(ent, 0, CARD_STAT_SPEED_FAST); + + card->fileInfo->offset = 0; + card->fileInfo->iBlock = ent->startBlock; + + ent->time = (u32)OSTicksToSeconds(OSGetTime()); + result = __CARDUpdateDir(chan, callback); + if (result < 0) { + goto error; + } + return; + +error: + __CARDPutControlBlock(card, result); + if (callback) { + callback(chan, result); + } } -#pragma pop /* 80358238-80358458 352B78 0220+00 1/1 0/0 0/0 .text CARDCreateAsync */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void CARDCreateAsync() { - nofralloc -#include "asm/dolphin/card/CARDCreate/CARDCreateAsync.s" +s32 CARDCreateAsync(s32 chan, const char* fileName, u32 size, CARDFileInfo* fileInfo, + CARDCallback callback) { + CARDControl* card; + CARDDir* dir; + CARDDir* ent; + s32 result; + u16 fileNo; + u16 freeNo; + u16* fat; + + if (strlen(fileName) > (u32)CARD_FILENAME_MAX) { + return CARD_RESULT_NAMETOOLONG; + } + + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + + if (size <= 0 || (size % card->sectorSize) != 0) { + return CARD_RESULT_FATAL_ERROR; + } + + freeNo = (u16)-1; + dir = __CARDGetDirBlock(card); + for (fileNo = 0; fileNo < CARD_MAX_FILE; fileNo++) { + ent = &dir[fileNo]; + if (ent->gameName[0] == 0xff) { + if (freeNo == (u16)-1) { + freeNo = fileNo; + } + } else if (memcmp(ent->gameName, card->diskID->game_name, sizeof(ent->gameName)) == 0 && + memcmp(ent->company, card->diskID->company, sizeof(ent->company)) == 0 && + __CARDCompareFileName(ent, fileName)) { + return __CARDPutControlBlock(card, CARD_RESULT_EXIST); + } + } + + if (freeNo == (u16)-1) { + return __CARDPutControlBlock(card, CARD_RESULT_NOENT); + } + + fat = __CARDGetFatBlock(card); + if (card->sectorSize * fat[CARD_FAT_FREEBLOCKS] < size) { + return __CARDPutControlBlock(card, CARD_RESULT_INSSPACE); + } + + card->apiCallback = callback ? callback : __CARDDefaultApiCallback; + card->freeNo = freeNo; + ent = &dir[freeNo]; + ent->length = (u16)(size / card->sectorSize); + strncpy((char*)ent->fileName, fileName, CARD_FILENAME_MAX); + + card->fileInfo = fileInfo; + fileInfo->chan = chan; + fileInfo->fileNo = freeNo; + + result = __CARDAllocBlock(chan, size / card->sectorSize, CreateCallbackFat); + if (result < 0) { + return __CARDPutControlBlock(card, result); + } + return result; } -#pragma pop /* 80358458-803584A0 352D98 0048+00 0/0 1/1 0/0 .text CARDCreate */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CARDCreate() { - nofralloc -#include "asm/dolphin/card/CARDCreate/CARDCreate.s" +s32 CARDCreate(s32 chan, const char* fileName, u32 size, CARDFileInfo* fileInfo) { + s32 result = CARDCreateAsync(chan, fileName, size, fileInfo, __CARDSyncCallback); + if (result < 0) { + return result; + } + + return __CARDSync(chan); } -#pragma pop diff --git a/libs/dolphin/card/CARDDir.c b/libs/dolphin/card/CARDDir.c index 0bd2900be99..adbdffaf4ff 100644 --- a/libs/dolphin/card/CARDDir.c +++ b/libs/dolphin/card/CARDDir.c @@ -4,70 +4,132 @@ // #include "dolphin/card/CARDDir.h" +#include "MSL_C/MSL_Common/Src/string.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/card/card.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/dvd/dvd.h" -// -// Forward References: -// +#include "dolphin/card/CARDPriv.h" -void __CARDGetDirBlock(); -static void WriteCallback(); -static void EraseCallback(); -void __CARDUpdateDir(); - -// -// External References: -// - -SECTION_INIT void memcpy(); -void DCStoreRange(); -void __CARDEraseSector(); -void __CARDPutControlBlock(); -void __CARDWrite(); -void __CARDCheckSum(); -extern u8 __CARDBlock[544]; +static void WriteCallback(s32 chan, s32 result); +static void EraseCallback(s32 chan, s32 result); // // Declarations: // /* 8035577C-80355784 3500BC 0008+00 0/0 10/10 0/0 .text __CARDGetDirBlock */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDGetDirBlock() { - nofralloc -#include "asm/dolphin/card/CARDDir/__CARDGetDirBlock.s" +CARDDir* __CARDGetDirBlock(CARDControl* card) { + return card->currentDir; } -#pragma pop /* 80355784-80355854 3500C4 00D0+00 1/1 0/0 0/0 .text WriteCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void WriteCallback() { - nofralloc -#include "asm/dolphin/card/CARDDir/WriteCallback.s" +static void WriteCallback(s32 chan, s32 result) { + CARDControl* card; + CARDCallback callback; + + card = &__CARDBlock[chan]; + if (0 <= result) { + CARDDir* dir0 = (CARDDir*)((u8*)card->workArea + 0x2000); + CARDDir* dir1 = (CARDDir*)((u8*)card->workArea + 0x4000); + + if (card->currentDir == dir0) { + card->currentDir = dir1; + memcpy(dir1, dir0, 0x2000); + } else { + card->currentDir = dir0; + memcpy(dir0, dir1, 0x2000); + } + } + +error: + if (card->apiCallback == 0) { + __CARDPutControlBlock(card, result); + } + callback = card->eraseCallback; + if (callback) { + card->eraseCallback = 0; + callback(chan, result); + } } -#pragma pop /* 80355854-8035591C 350194 00C8+00 1/1 0/0 0/0 .text EraseCallback */ +// needs compiler epilogue patch +#ifdef NONMATCHING +static void EraseCallback(s32 chan, s32 result) { + CARDControl* card; + CARDCallback callback; + CARDDir* dir; + u32 tmp[2]; + u32 addr; + + card = &__CARDBlock[chan]; + if (result < 0) { + goto error; + } + + dir = __CARDGetDirBlock(card); + addr = ((u32)dir - (u32)card->workArea) / 0x2000 * card->sectorSize; + result = __CARDWrite(chan, addr, 0x2000, dir, WriteCallback); + if (result < 0) { + goto error; + } + + return; + +error: + if (card->apiCallback == 0) { + __CARDPutControlBlock(card, result); + } + callback = card->eraseCallback; + if (callback) { + card->eraseCallback = 0; + callback(chan, result); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void EraseCallback() { +static asm void EraseCallback(s32 chan, s32 result) { nofralloc #include "asm/dolphin/card/CARDDir/EraseCallback.s" } #pragma pop +#endif /* 8035591C-803559E0 35025C 00C4+00 0/0 4/4 0/0 .text __CARDUpdateDir */ +#ifdef NONMATCHING +s32 __CARDUpdateDir(s32 chan, CARDCallback callback) { + CARDControl* card; + CARDDirCheck* check; + u32 tmp[2]; + u32 addr; + CARDDir* dir; + + card = &__CARDBlock[chan]; + if (!card->attached) { + return CARD_RESULT_NOCARD; + } + + dir = __CARDGetDirBlock(card); + check = __CARDGetDirCheck(dir); + ++check->checkCode; + __CARDCheckSum(dir, 0x2000 - sizeof(u32), &check->checkSum, &check->checkSumInv); + DCStoreRange(dir, 0x2000); + + card->eraseCallback = callback; + addr = ((u32)dir - (u32)card->workArea) / 0x2000 * card->sectorSize; + return __CARDEraseSector(chan, addr, EraseCallback); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __CARDUpdateDir() { +asm s32 __CARDUpdateDir(s32 chan, CARDCallback callback) { nofralloc #include "asm/dolphin/card/CARDDir/__CARDUpdateDir.s" } #pragma pop +#endif diff --git a/libs/dolphin/card/CARDFormat.c b/libs/dolphin/card/CARDFormat.c index b5c87f0dcb2..00d5923bfa8 100644 --- a/libs/dolphin/card/CARDFormat.c +++ b/libs/dolphin/card/CARDFormat.c @@ -4,71 +4,85 @@ // #include "dolphin/card/CARDFormat.h" +#include "MSL_C/MSL_Common/Src/string.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/card/card.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/dvd/dvd.h" + +#include "dolphin/card/CARDPriv.h" // // Forward References: // -static void FormatCallback(); -void __CARDFormatRegionAsync(); -void CARDFormat(); +static void FormatCallback(s32 chan, s32 result); // // External References: // -SECTION_INIT void memset(); -SECTION_INIT void memcpy(); -void DCStoreRange(); -void __OSLockSram(); -void __OSLockSramEx(); -void __OSUnlockSram(); -void __OSUnlockSramEx(); -void OSGetTime(); -void __CARDDefaultApiCallback(); -void __CARDSyncCallback(); -void __CARDEraseSector(); -void __CARDGetFontEncode(); -void __CARDGetControlBlock(); -void __CARDPutControlBlock(); -void __CARDSync(); -void __CARDWrite(); -void __CARDCheckSum(); void __shr2i(); -extern u8 __CARDBlock[544]; // // Declarations: // /* 80357484-803575C8 351DC4 0144+00 1/1 0/0 0/0 .text FormatCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void FormatCallback() { - nofralloc -#include "asm/dolphin/card/CARDFormat/FormatCallback.s" +static void FormatCallback(s32 chan, s32 result) { + CARDControl* card; + CARDCallback callback; + + card = &__CARDBlock[chan]; + if (result < 0) { + goto error; + } + + ++card->formatStep; + if (card->formatStep < CARD_NUM_SYSTEM_BLOCK) { + result = __CARDEraseSector(chan, (u32)card->sectorSize * card->formatStep, FormatCallback); + if (0 <= result) { + return; + } + } else if (card->formatStep < 2 * CARD_NUM_SYSTEM_BLOCK) { + int step = card->formatStep - CARD_NUM_SYSTEM_BLOCK; + result = __CARDWrite(chan, (u32)card->sectorSize * step, CARD_SYSTEM_BLOCK_SIZE, + (u8*)card->workArea + (CARD_SYSTEM_BLOCK_SIZE * step), FormatCallback); + if (result >= 0) { + return; + } + } else { + card->currentDir = (CARDDir*)((u8*)card->workArea + (1 + 0) * CARD_SYSTEM_BLOCK_SIZE); + memcpy(card->currentDir, (u8*)card->workArea + (1 + 1) * CARD_SYSTEM_BLOCK_SIZE, + CARD_SYSTEM_BLOCK_SIZE); + card->currentFat = (u16*)((u8*)card->workArea + (3 + 0) * CARD_SYSTEM_BLOCK_SIZE); + memcpy(card->currentFat, (u8*)card->workArea + (3 + 1) * CARD_SYSTEM_BLOCK_SIZE, + CARD_SYSTEM_BLOCK_SIZE); + } + +error: + callback = card->apiCallback; + card->apiCallback = 0; + __CARDPutControlBlock(card, result); + callback(chan, result); } -#pragma pop /* 803575C8-80357C20 351F08 0658+00 1/1 0/0 0/0 .text __CARDFormatRegionAsync */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __CARDFormatRegionAsync() { +asm s32 __CARDFormatRegionAsync(s32 chan, u16 encode, CARDCallback callback) { nofralloc #include "asm/dolphin/card/CARDFormat/__CARDFormatRegionAsync.s" } #pragma pop /* 80357C20-80357C74 352560 0054+00 0/0 1/1 0/0 .text CARDFormat */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CARDFormat() { - nofralloc -#include "asm/dolphin/card/CARDFormat/CARDFormat.s" +s32 CARDFormat(s32 chan) { + s32 result = __CARDFormatRegionAsync(chan, __CARDGetFontEncode(), __CARDSyncCallback); + if (result < 0) { + return result; + } + + return __CARDSync(chan); } -#pragma pop diff --git a/libs/dolphin/card/CARDMount.c b/libs/dolphin/card/CARDMount.c index 88cc8d41633..77c04418076 100644 --- a/libs/dolphin/card/CARDMount.c +++ b/libs/dolphin/card/CARDMount.c @@ -5,59 +5,22 @@ #include "dolphin/card/CARDMount.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/card/card.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/dvd/dvd.h" +#include "dolphin/exi/EXIBios.h" + +#include "dolphin/card/CARDPriv.h" + +u8 GameChoice : 0x800030E3; // // Forward References: // -static void IsCard(); -void CARDProbe(); -void CARDProbeEx(); -static void DoMount(); -void __CARDMountCallback(); -static void CARDMountAsync(); -void CARDMount(); -static void DoUnmount(); -void CARDUnmount(); - -// -// External References: -// - -void OSCancelAlarm(); -void DCInvalidateRange(); -void OSDisableInterrupts(); -void OSRestoreInterrupts(); -void __OSLockSramEx(); -void __OSUnlockSramEx(); -void EXISetExiCallback(); -void EXIProbe(); -void EXIProbeEx(); -void EXIAttach(); -void EXIDetach(); -void EXILock(); -void EXIUnlock(); -void EXIGetState(); -void EXIGetID(); -void __CARDDefaultApiCallback(); -void __CARDSyncCallback(); -void __CARDExtHandler(); -void __CARDExiHandler(); -void __CARDUnlockedHandler(); -void __CARDEnableInterrupt(); -void __CARDReadStatus(); -void __CARDReadVendorID(); -void __CARDClearStatus(); -void __CARDGetControlBlock(); -void __CARDPutControlBlock(); -void __CARDSync(); -void CARDGetFastMode(); -void __CARDUnlock(); -void __CARDRead(); -void __CARDVerify(); -extern u8 __CARDBlock[544]; -extern u8 struct_80450A70[8]; +static BOOL IsCard(u32 id); +static s32 DoMount(s32 chan); +static void DoUnmount(s32 chan, s32 result); // // Declarations: @@ -65,103 +28,266 @@ extern u8 struct_80450A70[8]; /* ############################################################################################## */ /* 803D2000-803D2020 02F120 0020+00 3/3 0/0 0/0 .data SectorSizeTable */ -SECTION_DATA static u8 SectorSizeTable[32] = { - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static u32 SectorSizeTable[8] = { + 8 * 1024, 16 * 1024, 32 * 1024, 64 * 1024, 128 * 1024, 256 * 1024, 0, 0, }; /* 80356948-80356A14 351288 00CC+00 2/2 0/0 0/0 .text IsCard */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void IsCard() { - nofralloc -#include "asm/dolphin/card/CARDMount/IsCard.s" +static BOOL IsCard(u32 id) { + u32 size; + s32 sectorSize; + if (id & (0xFFFF0000) && (id != 0x80000004 || __CARDVendorID == 0xFFFF)) { + return FALSE; + } + + if ((id & 3) != 0) { + return FALSE; + } + + size = id & 0xfc; + switch (size) { + case 4: + case 8: + case 16: + case 32: + case 64: + case 128: + break; + default: + return FALSE; + break; + } + + sectorSize = SectorSizeTable[(id & 0x00003800) >> 11]; + if (sectorSize == 0) { + return FALSE; + } + + if ((size * 1024 * 1024 / 8) / sectorSize < 8) { + return FALSE; + } + + return TRUE; } -#pragma pop /* 80356A14-80356A4C 351354 0038+00 0/0 1/1 0/0 .text CARDProbe */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CARDProbe() { - nofralloc -#include "asm/dolphin/card/CARDMount/CARDProbe.s" +s32 CARDProbe(s32 chan) { + s32 result; + + if (GameChoice & 0x80) { + result = 0; + } else { + result = EXIProbe(chan); + } + + return result; } -#pragma pop /* 80356A4C-80356BC8 35138C 017C+00 0/0 1/1 0/0 .text CARDProbeEx */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CARDProbeEx() { - nofralloc -#include "asm/dolphin/card/CARDMount/CARDProbeEx.s" +s32 CARDProbeEx(s32 chan, s32* memSize, s32* sectorSize) { + u32 id; + CARDControl* card; + BOOL enabled; + s32 result; + int probe; + + if (chan < 0 || 2 <= chan) { + return CARD_RESULT_FATAL_ERROR; + } + + if (GameChoice & 0x80) { + return CARD_RESULT_NOCARD; + } + + card = &__CARDBlock[chan]; + enabled = OSDisableInterrupts(); + + probe = EXIProbeEx(chan); + if (probe == -1) { + result = CARD_RESULT_NOCARD; + } else if (probe == 0) { + result = CARD_RESULT_BUSY; + } else if (card->attached) { + if (card->mountStep < 1) { + result = CARD_RESULT_BUSY; + } else { + if (memSize) { + *memSize = card->size; + } + if (sectorSize) { + *sectorSize = card->sectorSize; + } + result = CARD_RESULT_READY; + } + } else if ((EXIGetState(chan) & 8)) { + result = CARD_RESULT_WRONGDEVICE; + } else if (!EXIGetID(chan, 0, &id)) { + result = CARD_RESULT_BUSY; + } else if (IsCard(id)) { + if (memSize) { + *memSize = (s32)(id & 0xfc); + } + if (sectorSize) { + *sectorSize = SectorSizeTable[(id & 0x00003800) >> 11]; + } + result = CARD_RESULT_READY; + } else { + result = CARD_RESULT_WRONGDEVICE; + } + + OSRestoreInterrupts(enabled); + return result; } -#pragma pop /* ############################################################################################## */ /* 803D2020-803D2040 02F140 0020+00 1/1 0/0 0/0 .data LatencyTable */ -SECTION_DATA static u8 LatencyTable[32] = { - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, +static u32 LatencyTable[8] = { + 4, 8, 16, 32, 64, 128, 256, 512, }; /* 80356BC8-8035701C 351508 0454+00 2/2 0/0 0/0 .text DoMount */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void DoMount() { +static asm s32 DoMount(s32 chan) { nofralloc #include "asm/dolphin/card/CARDMount/DoMount.s" } #pragma pop /* 8035701C-80357154 35195C 0138+00 2/2 1/1 0/0 .text __CARDMountCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDMountCallback() { - nofralloc -#include "asm/dolphin/card/CARDMount/__CARDMountCallback.s" +void __CARDMountCallback(s32 chan, s32 result) { + CARDControl* card; + CARDCallback callback; + + card = &__CARDBlock[chan]; + + switch (result) { + case CARD_RESULT_READY: + if (++card->mountStep < CARD_MAX_MOUNT_STEP) { + result = DoMount(chan); + if (0 <= result) { + return; + } + } else { + result = __CARDVerify(card); + } + break; + case CARD_RESULT_UNLOCKED: + card->unlockCallback = __CARDMountCallback; + if (!EXILock(chan, 0, __CARDUnlockedHandler)) { + return; + } + card->unlockCallback = 0; + + result = DoMount(chan); + if (0 <= result) { + return; + } + break; + case CARD_RESULT_IOERROR: + case CARD_RESULT_NOCARD: + DoUnmount(chan, result); + break; + } + + callback = card->apiCallback; + card->apiCallback = 0; + __CARDPutControlBlock(card, result); + callback(chan, result); } -#pragma pop /* 80357154-803572F4 351A94 01A0+00 1/1 0/0 0/0 .text CARDMountAsync */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void CARDMountAsync() { - nofralloc -#include "asm/dolphin/card/CARDMount/CARDMountAsync.s" +s32 CARDMountAsync(s32 chan, void* workArea, CARDCallback detachCallback, + CARDCallback attachCallback) { + CARDControl* card; + BOOL enabled; + + if (chan < 0 || 2 <= chan) { + return CARD_RESULT_FATAL_ERROR; + } + + if (GameChoice & 0x80) { + return CARD_RESULT_NOCARD; + } + + card = &__CARDBlock[chan]; + + enabled = OSDisableInterrupts(); + if (card->result == CARD_RESULT_BUSY) { + OSRestoreInterrupts(enabled); + return CARD_RESULT_BUSY; + } + + if (!card->attached && (EXIGetState(chan) & 0x08)) { + OSRestoreInterrupts(enabled); + return CARD_RESULT_WRONGDEVICE; + } + + card->result = CARD_RESULT_BUSY; + card->workArea = workArea; + card->extCallback = detachCallback; + card->apiCallback = attachCallback ? attachCallback : __CARDDefaultApiCallback; + card->exiCallback = 0; + + if (!card->attached && !EXIAttach(chan, __CARDExtHandler)) { + card->result = CARD_RESULT_NOCARD; + OSRestoreInterrupts(enabled); + return CARD_RESULT_NOCARD; + } + + card->mountStep = 0; + card->attached = TRUE; + EXISetExiCallback(chan, 0); + OSCancelAlarm(&card->alarm); + + card->currentDir = 0; + card->currentFat = 0; + + OSRestoreInterrupts(enabled); + + card->unlockCallback = __CARDMountCallback; + if (!EXILock(chan, 0, __CARDUnlockedHandler)) { + return CARD_RESULT_READY; + } + card->unlockCallback = 0; + + return DoMount(chan); } -#pragma pop /* 803572F4-8035733C 351C34 0048+00 0/0 1/1 0/0 .text CARDMount */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CARDMount() { - nofralloc -#include "asm/dolphin/card/CARDMount/CARDMount.s" +s32 CARDMount(s32 chan, void* workArea, CARDCallback attachCb) { + s32 result = CARDMountAsync(chan, workArea, attachCb, __CARDSyncCallback); + if (result < 0) { + return result; + } + + return __CARDSync(chan); } -#pragma pop /* 8035733C-803573D8 351C7C 009C+00 2/2 0/0 0/0 .text DoUnmount */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void DoUnmount() { - nofralloc -#include "asm/dolphin/card/CARDMount/DoUnmount.s" +static void DoUnmount(s32 chan, s32 result) { + CARDControl* card; + BOOL enabled; + + card = &__CARDBlock[chan]; + enabled = OSDisableInterrupts(); + if (card->attached) { + EXISetExiCallback(chan, 0); + EXIDetach(chan); + OSCancelAlarm(&card->alarm); + card->attached = FALSE; + card->result = result; + card->mountStep = 0; + } + OSRestoreInterrupts(enabled); } -#pragma pop /* 803573D8-80357484 351D18 00AC+00 0/0 2/2 0/0 .text CARDUnmount */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void CARDUnmount() { +asm s32 CARDUnmount(s32 chan) { nofralloc #include "asm/dolphin/card/CARDMount/CARDUnmount.s" } diff --git a/libs/dolphin/card/CARDNet.c b/libs/dolphin/card/CARDNet.c index 8c87a4acc41..1ce5bcf2c10 100644 --- a/libs/dolphin/card/CARDNet.c +++ b/libs/dolphin/card/CARDNet.c @@ -5,48 +5,40 @@ #include "dolphin/card/CARDNet.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/card/card.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/dvd/dvd.h" -// -// Forward References: -// +#include "dolphin/card/CARDPriv.h" -void CARDGetSerialNo(); -extern u8 struct_80450A70[8]; +/* 80450A70 0002+00 data_80450A70 __CARDVendorID */ +SECTION_SDATA u16 __CARDVendorID = 0xFFFF; -// -// External References: -// - -void __CARDGetControlBlock(); -void __CARDPutControlBlock(); - -// -// Declarations: -// +/* 80450A72 0006+00 data_80450A72 None */ +SECTION_SDATA u8 data_80450A72 = 0x1C; /* 80359158-8035921C 353A98 00C4+00 0/0 1/1 0/0 .text CARDGetSerialNo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CARDGetSerialNo() { - nofralloc -#include "asm/dolphin/card/CARDNet/CARDGetSerialNo.s" -} -#pragma pop +s32 CARDGetSerialNo(s32 chan, u64* serialNo) { + CARDControl* card; + CARDID* id; + int i; + u64 code; + s32 result; -/* ############################################################################################## */ -/* 80450A70-80450A78 -00001 0008+00 0/0 4/4 0/0 .sdata None */ -SECTION_SDATA extern u8 struct_80450A70[8]; -SECTION_SDATA u8 struct_80450A70[8] = { - /* 80450A70 0002+00 data_80450A70 __CARDVendorID */ - 0xFF, - 0xFF, - /* 80450A72 0006+00 data_80450A72 None */ - 0x1C, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; + if (!(0 <= chan && chan < 2)) { + return CARD_RESULT_FATAL_ERROR; + } + + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + + id = (CARDID*)card->workArea; + for (code = 0, i = 0; i < sizeof(id->serial) / sizeof(u64); ++i) { + code ^= *(u64*)&id->serial[sizeof(u64) * i]; + } + *serialNo = code; + + return __CARDPutControlBlock(card, CARD_RESULT_READY); +} diff --git a/libs/dolphin/card/CARDOpen.c b/libs/dolphin/card/CARDOpen.c index 78b2264e9c8..a492ad9ab2a 100644 --- a/libs/dolphin/card/CARDOpen.c +++ b/libs/dolphin/card/CARDOpen.c @@ -4,60 +4,73 @@ // #include "dolphin/card/CARDOpen.h" +#include "MSL_C/MSL_Common/Src/mem.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/card/card.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/dvd/dvd.h" -// -// Forward References: -// - -void __CARDCompareFileName(); -void __CARDAccess(); -void __CARDIsWritable(); -void __CARDIsReadable(); -void CARDOpen(); -void CARDClose(); - -// -// External References: -// - -void __CARDGetControlBlock(); -void __CARDPutControlBlock(); -void __CARDGetDirBlock(); -void memcmp(); -extern u8 __CARDDiskNone[32]; -extern u8 struct_80450A70[8]; +#include "dolphin/card/CARDPriv.h" // // Declarations: // /* 80357C74-80357CDC 3525B4 0068+00 1/1 1/1 0/0 .text __CARDCompareFileName */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDCompareFileName() { - nofralloc -#include "asm/dolphin/card/CARDOpen/__CARDCompareFileName.s" +BOOL __CARDCompareFileName(CARDDir* ent, const char* fileName) { + char* entName; + char c1; + char c2; + int n; + + entName = (char*)ent->fileName; + n = CARD_FILENAME_MAX; + while (0 <= --n) { + if ((c1 = *entName++) != (c2 = *fileName++)) { + return FALSE; + } else if (c2 == '\0') { + return TRUE; + } + } + + if (*fileName == '\0') { + return TRUE; + } + + return FALSE; } -#pragma pop /* 80357CDC-80357D70 35261C 0094+00 2/2 0/0 0/0 .text __CARDAccess */ +#ifdef NONMATCHING +s32 __CARDAccess(CARDControl* card, CARDDir* ent) { + if (ent->gameName[0] == 0xFF) { + return CARD_RESULT_NOFILE; + } + + if (card->diskID == &__CARDDiskNone || + (memcmp(ent->gameName, card->diskID->game_name, 4) == 0 && + memcmp(ent->company, card->diskID->company, 2) == 0)) { + return CARD_RESULT_READY; + } + + return CARD_RESULT_NOPERM; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __CARDAccess() { +asm s32 __CARDAccess(CARDControl* card, CARDDir* ent) { nofralloc #include "asm/dolphin/card/CARDOpen/__CARDAccess.s" } #pragma pop +#endif /* 80357D70-80357EA4 3526B0 0134+00 0/0 2/2 0/0 .text __CARDIsWritable */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __CARDIsWritable() { +asm s32 __CARDIsWritable(CARDControl* card, CARDDir* ent) { nofralloc #include "asm/dolphin/card/CARDOpen/__CARDIsWritable.s" } @@ -67,7 +80,7 @@ asm void __CARDIsWritable() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __CARDIsReadable() { +asm s32 __CARDIsReadable(CARDControl* card, CARDDir* ent) { nofralloc #include "asm/dolphin/card/CARDOpen/__CARDIsReadable.s" } @@ -77,18 +90,22 @@ asm void __CARDIsReadable() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void CARDOpen() { +asm s32 CARDOpen(s32 chan, const char* fileName, CARDFileInfo* fileInfo) { nofralloc #include "asm/dolphin/card/CARDOpen/CARDOpen.s" } #pragma pop /* 803580B4-80358108 3529F4 0054+00 0/0 3/3 0/0 .text CARDClose */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CARDClose() { - nofralloc -#include "asm/dolphin/card/CARDOpen/CARDClose.s" +s32 CARDClose(CARDFileInfo* fileInfo) { + CARDControl* card; + s32 result; + + result = __CARDGetControlBlock(fileInfo->chan, &card); + if (result < 0) { + return result; + } + + fileInfo->chan = -1; + return __CARDPutControlBlock(card, CARD_RESULT_READY); } -#pragma pop diff --git a/libs/dolphin/card/CARDRdwr.c b/libs/dolphin/card/CARDRdwr.c index 5e2565a3844..6e244cdecdf 100644 --- a/libs/dolphin/card/CARDRdwr.c +++ b/libs/dolphin/card/CARDRdwr.c @@ -5,66 +5,96 @@ #include "dolphin/card/CARDRdwr.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/card/card.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/dvd/dvd.h" + +#include "dolphin/card/CARDPriv.h" // // Forward References: // -static void BlockReadCallback(); -void __CARDRead(); -static void BlockWriteCallback(); -void __CARDWrite(); - -// -// External References: -// - -void __CARDReadSegment(); -void __CARDWritePage(); -void __CARDPutControlBlock(); -extern u8 __CARDBlock[544]; +static void BlockReadCallback(s32 chan, s32 result); +static void BlockWriteCallback(s32 chan, s32 result); // // Declarations: // /* 80355184-80355260 34FAC4 00DC+00 1/1 0/0 0/0 .text BlockReadCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void BlockReadCallback() { - nofralloc -#include "asm/dolphin/card/CARDRdwr/BlockReadCallback.s" +static void BlockReadCallback(s32 chan, s32 result) { + CARDControl* card; + CARDCallback callback; + + card = &__CARDBlock[chan]; + if (result < 0) { + goto error; + } + + card->xferred += CARD_SEG_SIZE; + + card->addr += CARD_SEG_SIZE; + (u8*)card->buffer += CARD_SEG_SIZE; + if (--card->repeat <= 0) { + goto error; + } + + result = __CARDReadSegment(chan, BlockReadCallback); + if (result < 0) { + goto error; + } + return; + +error: + if (card->apiCallback == 0) { + __CARDPutControlBlock(card, result); + } + callback = card->xferCallback; + if (callback) { + card->xferCallback = 0; + callback(chan, result); + } } -#pragma pop /* 80355260-803552C4 34FBA0 0064+00 0/0 3/3 0/0 .text __CARDRead */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDRead() { - nofralloc -#include "asm/dolphin/card/CARDRdwr/__CARDRead.s" +s32 __CARDRead(s32 chan, u32 addr, s32 length, void* dst, CARDCallback callback) { + CARDControl* card; + card = &__CARDBlock[chan]; + if (!card->attached) { + return CARD_RESULT_NOCARD; + } + + card->xferCallback = callback; + card->repeat = (int)(length / CARD_SEG_SIZE); + card->addr = addr; + card->buffer = dst; + + return __CARDReadSegment(chan, BlockReadCallback); } -#pragma pop /* 803552C4-803553AC 34FC04 00E8+00 1/1 0/0 0/0 .text BlockWriteCallback */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void BlockWriteCallback() { +static asm void BlockWriteCallback(s32 chan, s32 result) { nofralloc #include "asm/dolphin/card/CARDRdwr/BlockWriteCallback.s" } #pragma pop /* 803553AC-80355414 34FCEC 0068+00 0/0 4/4 0/0 .text __CARDWrite */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDWrite() { - nofralloc -#include "asm/dolphin/card/CARDRdwr/__CARDWrite.s" +s32 __CARDWrite(s32 chan, u32 addr, s32 length, void* dst, CARDCallback callback) { + CARDControl* card; + card = &__CARDBlock[chan]; + if (!card->attached) { + return CARD_RESULT_NOCARD; + } + + card->xferCallback = callback; + card->repeat = (int)(length / card->pageSize); + card->addr = addr; + card->buffer = dst; + + return __CARDWritePage(chan, BlockWriteCallback); } -#pragma pop diff --git a/libs/dolphin/card/CARDRead.c b/libs/dolphin/card/CARDRead.c index 3f6ae72bb95..f48f104f6eb 100644 --- a/libs/dolphin/card/CARDRead.c +++ b/libs/dolphin/card/CARDRead.c @@ -5,73 +5,178 @@ #include "dolphin/card/CARDRead.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/card/card.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/dvd/dvd.h" + +#include "dolphin/card/CARDPriv.h" // // Forward References: // -void __CARDSeek(); -static void ReadCallback(); -static void CARDReadAsync(); -void CARDRead(); - -// -// External References: -// - -void DCInvalidateRange(); -void __CARDDefaultApiCallback(); -void __CARDSyncCallback(); -void __CARDGetControlBlock(); -void __CARDPutControlBlock(); -void __CARDSync(); -void __CARDRead(); -void __CARDGetFatBlock(); -void __CARDGetDirBlock(); -void __CARDIsReadable(); -extern u8 __CARDBlock[544]; +static void ReadCallback(s32 chan, s32 result); // // Declarations: // /* 803584A0-80358658 352DE0 01B8+00 1/1 1/1 0/0 .text __CARDSeek */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __CARDSeek() { - nofralloc -#include "asm/dolphin/card/CARDRead/__CARDSeek.s" +s32 __CARDSeek(CARDFileInfo* fileInfo, s32 length, s32 offset, CARDControl** pcard) { + CARDControl* card; + CARDDir* dir; + CARDDir* ent; + s32 result; + u16* fat; + + result = __CARDGetControlBlock(fileInfo->chan, &card); + if (result < 0) { + return result; + } + + if (!CARDIsValidBlockNo(card, fileInfo->iBlock) || + card->cBlock * card->sectorSize <= fileInfo->offset) { + return __CARDPutControlBlock(card, CARD_RESULT_FATAL_ERROR); + } + + dir = __CARDGetDirBlock(card); + ent = &dir[fileInfo->fileNo]; + if (ent->length * card->sectorSize <= offset || + ent->length * card->sectorSize < offset + length) { + return __CARDPutControlBlock(card, CARD_RESULT_LIMIT); + } + + card->fileInfo = fileInfo; + fileInfo->length = length; + if (offset < fileInfo->offset) { + fileInfo->offset = 0; + fileInfo->iBlock = ent->startBlock; + if (!CARDIsValidBlockNo(card, fileInfo->iBlock)) { + return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); + } + } + fat = __CARDGetFatBlock(card); + while (fileInfo->offset < TRUNC(offset, card->sectorSize)) { + fileInfo->offset += card->sectorSize; + fileInfo->iBlock = fat[fileInfo->iBlock]; + if (!CARDIsValidBlockNo(card, fileInfo->iBlock)) { + return __CARDPutControlBlock(card, CARD_RESULT_BROKEN); + } + } + + fileInfo->offset = offset; + + *pcard = card; + return CARD_RESULT_READY; } -#pragma pop /* 80358658-80358788 352F98 0130+00 1/1 0/0 0/0 .text ReadCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void ReadCallback() { - nofralloc -#include "asm/dolphin/card/CARDRead/ReadCallback.s" +static void ReadCallback(s32 chan, s32 result) { + CARDControl* card; + CARDCallback callback; + u16* fat; + CARDFileInfo* fileInfo; + s32 length; + + card = &__CARDBlock[chan]; + if (result < 0) { + goto error; + } + + fileInfo = card->fileInfo; + if (fileInfo->length < 0) { + result = CARD_RESULT_CANCELED; + goto error; + } + + length = (s32)TRUNC(fileInfo->offset + card->sectorSize, card->sectorSize) - fileInfo->offset; + fileInfo->length -= length; + if (fileInfo->length <= 0) { + goto error; + } + + fat = __CARDGetFatBlock(card); + fileInfo->offset += length; + fileInfo->iBlock = fat[fileInfo->iBlock]; + if (!CARDIsValidBlockNo(card, fileInfo->iBlock)) { + result = CARD_RESULT_BROKEN; + goto error; + } + + result = __CARDRead(chan, card->sectorSize * (u32)fileInfo->iBlock, + (fileInfo->length < card->sectorSize) ? fileInfo->length : card->sectorSize, + card->buffer, ReadCallback); + if (result < 0) { + goto error; + } + + return; + +error: + callback = card->apiCallback; + card->apiCallback = 0; + __CARDPutControlBlock(card, result); + callback(chan, result); } -#pragma pop /* 80358788-803588CC 3530C8 0144+00 1/1 0/0 0/0 .text CARDReadAsync */ +#ifdef NONMATCHING +s32 CARDReadAsync(CARDFileInfo* fileInfo, void* buf, s32 length, s32 offset, + CARDCallback callback) { + CARDControl* card; + s32 result; + CARDDir* dir; + CARDDir* ent; + + if (OFFSET(offset, CARD_SEG_SIZE) != 0 || OFFSET(length, CARD_SEG_SIZE) != 0) { + return CARD_RESULT_FATAL_ERROR; + } + result = __CARDSeek(fileInfo, length, offset, &card); + if (result < 0) { + return result; + } + + dir = __CARDGetDirBlock(card); + ent = &dir[fileInfo->fileNo]; + result = __CARDAccess(card, ent); + if (result == CARD_RESULT_NOPERM) { + result = __CARDIsWritable(ent); + } + + if (result < 0) { + return __CARDPutControlBlock(card, result); + } + + DCInvalidateRange(buf, (u32)length); + card->apiCallback = callback ? callback : __CARDDefaultApiCallback; + + offset = (s32)OFFSET(fileInfo->offset, card->sectorSize); + length = (length < card->sectorSize - offset) ? length : card->sectorSize - offset; + result = __CARDRead(fileInfo->chan, card->sectorSize * (u32)fileInfo->iBlock + offset, length, + buf, ReadCallback); + if (result < 0) { + __CARDPutControlBlock(card, result); + } + return result; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void CARDReadAsync() { +static asm s32 CARDReadAsync(CARDFileInfo* fileInfo, void* buf, s32 length, s32 offset, + CARDCallback callback) { nofralloc #include "asm/dolphin/card/CARDRead/CARDReadAsync.s" } #pragma pop +#endif /* 803588CC-80358914 35320C 0048+00 0/0 2/2 0/0 .text CARDRead */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CARDRead() { - nofralloc -#include "asm/dolphin/card/CARDRead/CARDRead.s" +s32 CARDRead(CARDFileInfo* fileInfo, void* buf, s32 length, s32 offset) { + s32 result = CARDReadAsync(fileInfo, buf, length, offset, __CARDSyncCallback); + if (result < 0) { + return result; + } + + return __CARDSync(fileInfo->chan); } -#pragma pop diff --git a/libs/dolphin/card/CARDStat.c b/libs/dolphin/card/CARDStat.c index 340690a561b..2d5531682e3 100644 --- a/libs/dolphin/card/CARDStat.c +++ b/libs/dolphin/card/CARDStat.c @@ -5,31 +5,19 @@ #include "dolphin/card/CARDStat.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/card/card.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/dvd/dvd.h" -// -// Forward References: -// +#include "dolphin/card/CARDPriv.h" -static void UpdateIconOffsets(); -void CARDGetStatus(); -static void CARDSetStatusAsync(); -void CARDSetStatus(); +static void UpdateIconOffsets(CARDDir* ent, CARDStat* stat); // // External References: // SECTION_INIT void memcpy(); -void OSGetTime(); -void __CARDSyncCallback(); -void __CARDGetControlBlock(); -void __CARDPutControlBlock(); -void __CARDSync(); -void __CARDGetDirBlock(); -void __CARDUpdateDir(); -void __CARDIsWritable(); -void __CARDIsReadable(); void __div2i(); // @@ -37,41 +25,176 @@ void __div2i(); // /* 80358C90-80358E88 3535D0 01F8+00 2/2 0/0 0/0 .text UpdateIconOffsets */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void UpdateIconOffsets() { - nofralloc -#include "asm/dolphin/card/CARDStat/UpdateIconOffsets.s" +static void UpdateIconOffsets(CARDDir* ent, CARDStat* stat) { + u32 offset; + BOOL iconTlut; + int i; + + offset = ent->iconAddr; + if (offset == 0xFFFFFFFF) { + stat->bannerFormat = 0; + stat->iconFormat = 0; + stat->iconSpeed = 0; + offset = 0; + } + + iconTlut = FALSE; + switch (CARDGetBannerFormat(ent)) { + case CARD_STAT_BANNER_C8: + stat->offsetBanner = offset; + offset += CARD_BANNER_WIDTH * CARD_BANNER_HEIGHT; + stat->offsetBannerTlut = offset; + offset += 2 * 256; + break; + case CARD_STAT_BANNER_RGB5A3: + stat->offsetBanner = offset; + offset += 2 * CARD_BANNER_WIDTH * CARD_BANNER_HEIGHT; + stat->offsetBannerTlut = 0xFFFFFFFF; + break; + default: + stat->offsetBanner = 0xFFFFFFFF; + stat->offsetBannerTlut = 0xFFFFFFFF; + break; + } + + for (i = 0; i < CARD_ICON_MAX; ++i) { + switch (CARDGetIconFormat(ent, i)) { + case CARD_STAT_ICON_C8: + stat->offsetIcon[i] = offset; + offset += CARD_ICON_WIDTH * CARD_ICON_HEIGHT; + iconTlut = TRUE; + break; + case CARD_STAT_ICON_RGB5A3: + stat->offsetIcon[i] = offset; + offset += 2 * CARD_ICON_WIDTH * CARD_ICON_HEIGHT; + break; + default: + stat->offsetIcon[i] = 0xFFFFFFFF; + break; + } + } + + if (iconTlut) { + stat->offsetIconTlut = offset; + offset += 2 * 256; + } else { + stat->offsetIconTlut = 0xFFFFFFFF; + } + stat->offsetData = offset; } -#pragma pop /* 80358E88-80358F9C 3537C8 0114+00 0/0 2/2 0/0 .text CARDGetStatus */ +#ifdef NONMATCHING +s32 CARDGetStatus(s32 chan, s32 fileNo, CARDStat* stat) { + CARDControl* card; + CARDDir* dir; + CARDDir* ent; + s32 result; + + if (fileNo < 0 || CARD_MAX_FILE <= fileNo) { + return CARD_RESULT_FATAL_ERROR; + } + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + + dir = __CARDGetDirBlock(card); + ent = &dir[fileNo]; + result = __CARDAccess(card, ent); + if (result == CARD_RESULT_NOPERM) { + result = __CARDIsWritable(ent); + } + + if (result >= 0) { + memcpy(stat->gameName, ent->gameName, sizeof(stat->gameName)); + memcpy(stat->company, ent->company, sizeof(stat->company)); + stat->length = (u32)ent->length * card->sectorSize; + memcpy(stat->fileName, ent->fileName, CARD_FILENAME_MAX); + stat->time = ent->time; + + stat->bannerFormat = ent->bannerFormat; + stat->iconAddr = ent->iconAddr; + stat->iconFormat = ent->iconFormat; + stat->iconSpeed = ent->iconSpeed; + stat->commentAddr = ent->commentAddr; + + UpdateIconOffsets(ent, stat); + } + return __CARDPutControlBlock(card, result); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void CARDGetStatus() { +asm s32 CARDGetStatus(s32 chan, s32 fileNo, CARDStat* stat) { nofralloc #include "asm/dolphin/card/CARDStat/CARDGetStatus.s" } #pragma pop +#endif /* 80358F9C-80359110 3538DC 0174+00 1/1 0/0 0/0 .text CARDSetStatusAsync */ +#ifdef NONMATCHING +s32 CARDSetStatusAsync(s32 chan, s32 fileNo, CARDStat* stat, CARDCallback callback) { + CARDControl* card; + CARDDir* dir; + CARDDir* ent; + s32 result; + + if (fileNo < 0 || CARD_MAX_FILE <= fileNo || + (stat->iconAddr != 0xffffffff && CARD_READ_SIZE <= stat->iconAddr) || + (stat->commentAddr != 0xffffffff && + CARD_SYSTEM_BLOCK_SIZE - CARD_COMMENT_SIZE < stat->commentAddr % CARD_SYSTEM_BLOCK_SIZE)) { + return CARD_RESULT_FATAL_ERROR; + } + result = __CARDGetControlBlock(chan, &card); + if (result < 0) { + return result; + } + + dir = __CARDGetDirBlock(card); + ent = &dir[fileNo]; + result = __CARDAccess(card, ent); + if (result < 0) { + return __CARDPutControlBlock(card, result); + } + + ent->bannerFormat = stat->bannerFormat; + ent->iconAddr = stat->iconAddr; + ent->iconFormat = stat->iconFormat; + ent->iconSpeed = stat->iconSpeed; + ent->commentAddr = stat->commentAddr; + UpdateIconOffsets(ent, stat); + + if (ent->iconAddr == 0xffffffff) { + CARDSetIconSpeed(ent, 0, CARD_STAT_SPEED_FAST); + } + + ent->time = (u32)OSTicksToSeconds(OSGetTime()); + result = __CARDUpdateDir(chan, callback); + if (result < 0) { + __CARDPutControlBlock(card, result); + } + return result; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void CARDSetStatusAsync() { +static asm s32 CARDSetStatusAsync(s32 chan, s32 fileNo, CARDStat* stat, CARDCallback callback) { nofralloc #include "asm/dolphin/card/CARDStat/CARDSetStatusAsync.s" } #pragma pop +#endif /* 80359110-80359158 353A50 0048+00 0/0 1/1 0/0 .text CARDSetStatus */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CARDSetStatus() { - nofralloc -#include "asm/dolphin/card/CARDStat/CARDSetStatus.s" +s32 CARDSetStatus(s32 chan, s32 fileNo, CARDStat* stat) { + s32 result = CARDSetStatusAsync(chan, fileNo, stat, __CARDSyncCallback); + if (result < 0) { + return result; + } + + return __CARDSync(chan); } -#pragma pop diff --git a/libs/dolphin/card/CARDUnlock.c b/libs/dolphin/card/CARDUnlock.c index 9a039ba1917..20b38c35f88 100644 --- a/libs/dolphin/card/CARDUnlock.c +++ b/libs/dolphin/card/CARDUnlock.c @@ -5,18 +5,22 @@ #include "dolphin/card/CARDUnlock.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/card/card.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/dvd/dvd.h" +#include "dolphin/exi/EXIBios.h" + +#include "dolphin/card/CARDPriv.h" // // Forward References: // -static void bitrev(); -static void ReadArrayUnlock(); -static void DummyLen(); -void __CARDUnlock(); -static void InitCallback(); -static void DoneCallback(); +static u32 bitrev(u32 data); +static s32 ReadArrayUnlock(s32 chan, u32 data, void* rbuf, s32 rlen, s32 mode); +static s32 DummyLen(void); +static void InitCallback(void* _task); +static void DoneCallback(void* _task); // // External References: @@ -24,57 +28,83 @@ static void DoneCallback(); SECTION_INIT void memset(); void DSPAddTask(); -void DCInvalidateRange(); -void DCFlushRange(); -void OSGetTick(); -void EXIImmEx(); -void EXIProbe(); -void EXISelect(); -void EXIDeselect(); -void EXIUnlock(); -void DSPCheckMailToDSP(); void DSPSendMailToDSP(); -void __CARDReadStatus(); -void __CARDMountCallback(); -extern u8 __CARDBlock[544]; // // Declarations: // /* 80353F24-80354090 34E864 016C+00 1/1 0/0 0/0 .text bitrev */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void bitrev() { - nofralloc -#include "asm/dolphin/card/CARDUnlock/bitrev.s" +static u32 bitrev(u32 data) { + u32 wk; + u32 i; + u32 k = 0; + u32 j = 1; + + wk = 0; + for (i = 0; i < 32; i++) { + if (i > 15) { + if (i == 31) { + wk |= (((data & (0x01 << 31)) >> 31) & 0x01); + } else { + wk |= ((data & (0x01 << i)) >> j); + j += 2; + } + } else { + wk |= ((data & (0x01 << i)) << (31 - i - k)); + k++; + } + } + return wk; } -#pragma pop + +#define SEC_AD1(x) ((u8)(((x) >> 29) & 0x03)) +#define SEC_AD2(x) ((u8)(((x) >> 21) & 0xff)) +#define SEC_AD3(x) ((u8)(((x) >> 19) & 0x03)) +#define SEC_BA(x) ((u8)(((x) >> 12) & 0x7f)) /* 80354090-803541D4 34E9D0 0144+00 2/2 0/0 0/0 .text ReadArrayUnlock */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void ReadArrayUnlock() { - nofralloc -#include "asm/dolphin/card/CARDUnlock/ReadArrayUnlock.s" +static s32 ReadArrayUnlock(s32 chan, u32 data, void* rbuf, s32 rlen, s32 mode) { + CARDControl* card; + BOOL err; + u8 cmd[5]; + + card = &__CARDBlock[chan]; + if (!EXISelect(chan, 0, 4)) { + return CARD_RESULT_NOCARD; + } + + data &= 0xfffff000; + memset(cmd, 0, 5); + cmd[0] = 0x52; + if (mode == 0) { + cmd[1] = SEC_AD1(data); + cmd[2] = SEC_AD2(data); + cmd[3] = SEC_AD3(data); + cmd[4] = SEC_BA(data); + } else { + cmd[1] = (u8)((data & 0xff000000) >> 24); + cmd[2] = (u8)((data & 0x00ff0000) >> 16); + } + + err = FALSE; + err |= !EXIImmEx(chan, cmd, 5, 1); + err |= !EXIImmEx(chan, (u8*)card->workArea + (u32)sizeof(CARDID), card->latency, 1); + err |= !EXIImmEx(chan, rbuf, rlen, 0); + err |= !EXIDeselect(chan); + + return err ? CARD_RESULT_NOCARD : CARD_RESULT_READY; } -#pragma pop /* ############################################################################################## */ /* 80450A68-80450A70 0004E8 0004+04 2/2 0/0 0/0 .sdata next */ -SECTION_SDATA static u32 next[1 + 1 /* padding */] = { - 0x00000001, - /* padding */ - 0x00000000, -}; +static unsigned long int next = 1; /* 803541D4-80354298 34EB14 00C4+00 2/2 0/0 0/0 .text DummyLen */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void DummyLen() { +static asm s32 DummyLen(void) { nofralloc #include "asm/dolphin/card/CARDUnlock/DummyLen.s" } @@ -82,7 +112,7 @@ static asm void DummyLen() { /* ############################################################################################## */ /* 803D1EA0-803D2000 02EFC0 0160+00 1/1 0/0 0/0 .data CardData */ -SECTION_DATA static u8 CardData[352] = { +SECTION_DATA static u8 CardData[352] ALIGN_DECL(32) = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x02, 0xFF, 0x00, 0x21, 0x13, 0x06, 0x12, 0x03, 0x12, 0x04, 0x13, 0x05, 0x00, 0x92, 0x00, 0xFF, 0x00, 0x88, 0xFF, 0xFF, @@ -111,7 +141,7 @@ SECTION_DATA static u8 CardData[352] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __CARDUnlock() { +asm s32 __CARDUnlock(s32 chan, u8 flashID[12]) { nofralloc #include "asm/dolphin/card/CARDUnlock/__CARDUnlock.s" } @@ -121,7 +151,7 @@ asm void __CARDUnlock() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void InitCallback() { +static asm void InitCallback(void* _task) { nofralloc #include "asm/dolphin/card/CARDUnlock/InitCallback.s" } @@ -131,7 +161,7 @@ static asm void InitCallback() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void DoneCallback() { +static asm void DoneCallback(void* _task) { nofralloc #include "asm/dolphin/card/CARDUnlock/DoneCallback.s" } diff --git a/libs/dolphin/card/CARDWrite.c b/libs/dolphin/card/CARDWrite.c index 144e7d30805..a020c7c209f 100644 --- a/libs/dolphin/card/CARDWrite.c +++ b/libs/dolphin/card/CARDWrite.c @@ -5,36 +5,24 @@ #include "dolphin/card/CARDWrite.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/card/card.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/os/OS.h" + +#include "dolphin/card/CARDPriv.h" // // Forward References: // -static void WriteCallback(); -static void EraseCallback(); -static void CARDWriteAsync(); -void CARDWrite(); +static void WriteCallback(s32 chan, s32 result); +static void EraseCallback(s32 chan, s32 result); // // External References: // -void DCStoreRange(); -void OSGetTime(); -void __CARDDefaultApiCallback(); -void __CARDSyncCallback(); -void __CARDEraseSector(); -void __CARDPutControlBlock(); -void __CARDSync(); -void __CARDWrite(); -void __CARDGetFatBlock(); -void __CARDGetDirBlock(); -void __CARDUpdateDir(); -void __CARDIsWritable(); -void __CARDSeek(); void __div2i(); -extern u8 __CARDBlock[544]; // // Declarations: @@ -44,7 +32,7 @@ extern u8 __CARDBlock[544]; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void WriteCallback() { +static asm void WriteCallback(s32 chan, s32 result) { nofralloc #include "asm/dolphin/card/CARDWrite/WriteCallback.s" } @@ -54,28 +42,53 @@ static asm void WriteCallback() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void EraseCallback() { +static asm void EraseCallback(s32 chan, s32 result) { nofralloc #include "asm/dolphin/card/CARDWrite/EraseCallback.s" } #pragma pop /* 80358B34-80358C48 353474 0114+00 1/1 0/0 0/0 .text CARDWriteAsync */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void CARDWriteAsync() { - nofralloc -#include "asm/dolphin/card/CARDWrite/CARDWriteAsync.s" +s32 CARDWriteAsync(CARDFileInfo* fileInfo, const void* buf, s32 length, s32 offset, + CARDCallback callback) { + CARDControl* card; + s32 result; + CARDDir* dir; + CARDDir* ent; + + result = __CARDSeek(fileInfo, length, offset, &card); + if (result < 0) { + return result; + } + + if (OFFSET(offset, card->sectorSize) != 0 || OFFSET(length, card->sectorSize) != 0) { + return __CARDPutControlBlock(card, CARD_RESULT_FATAL_ERROR); + } + + dir = __CARDGetDirBlock(card); + ent = &dir[fileInfo->fileNo]; + result = __CARDIsWritable(card, ent); + if (result < 0) { + return __CARDPutControlBlock(card, result); + } + + DCStoreRange((void*)buf, (u32)length); + card->apiCallback = callback ? callback : __CARDDefaultApiCallback; + card->buffer = (void*)buf; + result = + __CARDEraseSector(fileInfo->chan, card->sectorSize * (u32)fileInfo->iBlock, EraseCallback); + if (result < 0) { + __CARDPutControlBlock(card, result); + } + return result; } -#pragma pop /* 80358C48-80358C90 353588 0048+00 0/0 2/2 0/0 .text CARDWrite */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CARDWrite() { - nofralloc -#include "asm/dolphin/card/CARDWrite/CARDWrite.s" +s32 CARDWrite(CARDFileInfo* fileInfo, const void* buf, s32 length, s32 offset) { + s32 result = CARDWriteAsync(fileInfo, buf, length, offset, __CARDSyncCallback); + if (result < 0) { + return result; + } + + return __CARDSync(fileInfo->chan); } -#pragma pop diff --git a/libs/dolphin/card/Makefile b/libs/dolphin/card/Makefile index 962ff914422..1ff4e5596cb 100644 --- a/libs/dolphin/card/Makefile +++ b/libs/dolphin/card/Makefile @@ -35,6 +35,14 @@ LIBCARD_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/card/CARDNet.o \ LIBCARD_A_CFLAGS := \ + -Cpp_exceptions off \ + -proc gekko \ + -fp hard \ + -nodefaults \ + -str reuse \ + -RTTI off \ + -maxerrors 5 \ + -enum int $(INCLUDES) \ -O4,p \ -lang=c \ @@ -53,5 +61,7 @@ $(BUILD_DIR)/libs/dolphin/card/%.o: libs/dolphin/card/%.c @mkdir -p $(@D) @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c - @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBCARD_A_CFLAGS) -c -o $@ $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(LIBCARD_A_CFLAGS) -c -o $@ $(basename $@).c + @echo Frank is fixing $@ + @$(PYTHON) $(FRANK) $@ $@ $@ diff --git a/libs/dolphin/db/Makefile b/libs/dolphin/db/Makefile index 4bcef9c0fb5..6f6e3b5d726 100644 --- a/libs/dolphin/db/Makefile +++ b/libs/dolphin/db/Makefile @@ -9,6 +9,14 @@ LIBDB_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/db/db.o \ LIBDB_A_CFLAGS := \ + -Cpp_exceptions off \ + -proc gekko \ + -fp hard \ + -nodefaults \ + -str reuse \ + -RTTI off \ + -maxerrors 5 \ + -enum int $(INCLUDES) \ -O4,p \ -lang=c \ @@ -27,5 +35,7 @@ $(BUILD_DIR)/libs/dolphin/db/%.o: libs/dolphin/db/%.c @mkdir -p $(@D) @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c - @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBDB_A_CFLAGS) -c -o $@ $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(LIBDB_A_CFLAGS) -c -o $@ $(basename $@).c + @echo Frank is fixing $@ + @$(PYTHON) $(FRANK) $@ $@ $@ diff --git a/libs/dolphin/db/db.c b/libs/dolphin/db/db.c index 66f131c1d1d..1e7d5f81497 100644 --- a/libs/dolphin/db/db.c +++ b/libs/dolphin/db/db.c @@ -4,88 +4,51 @@ // #include "dolphin/db/db.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -void DBInit(); -void __DBExceptionDestinationAux(); -void __DBExceptionDestination(); -void __DBIsExceptionMarked(); -void DBPrintf(); - -// -// External References: -// - -void OSReport(); -void PPCHalt(); -void OSDumpContext(); - -// -// Declarations: -// +#include "dolphin/base/PPCArch.h" +#include "dolphin/os/OS.h" /* ############################################################################################## */ /* 80451708-8045170C 000C08 0004+00 2/2 0/0 0/0 .sbss __DBInterface */ -static u8 __DBInterface[4]; +static DBInterface* __DBInterface; /* 8045170C-80451710 000C0C 0004+00 1/1 0/0 0/0 .sbss DBVerbose */ -static u8 DBVerbose[4]; +static int DBVerbose; /* 80346398-803463C0 340CD8 0028+00 0/0 1/1 0/0 .text DBInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DBInit() { - nofralloc -#include "asm/dolphin/db/db/DBInit.s" +void DBInit(void) { + __DBInterface = (DBInterface*)OSPhysicalToCached(OS_DBINTERFACE_ADDR); + __DBInterface->ExceptionDestination = (void (*)())OSCachedToPhysical(__DBExceptionDestination); + DBVerbose = TRUE; } -#pragma pop - -/* ############################################################################################## */ -/* 803D1368-803D1380 02E488 0018+00 1/1 0/0 0/0 .data @9 */ -SECTION_DATA static char lit_9[] = "DBExceptionDestination\n";; /* 803463C0-80346408 340D00 0048+00 1/1 0/0 0/0 .text __DBExceptionDestinationAux */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __DBExceptionDestinationAux() { - nofralloc -#include "asm/dolphin/db/db/__DBExceptionDestinationAux.s" +void __DBExceptionDestinationAux(void) { + u32* contextAddr = (void*)0x00C0; + OSContext* context = (OSContext*)OSPhysicalToCached(*contextAddr); + + OSReport("DBExceptionDestination\n"); + OSDumpContext(context); + PPCHalt(); } -#pragma pop /* 80346408-80346418 340D48 0010+00 1/1 0/0 0/0 .text __DBExceptionDestination */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __DBExceptionDestination() { +/* clang-format off */ +asm void __DBExceptionDestination(void) { nofralloc -#include "asm/dolphin/db/db/__DBExceptionDestination.s" + mfmsr r3 + ori r3, r3, 0x10|0x20 + mtmsr r3 + + b __DBExceptionDestinationAux } -#pragma pop +/* clang-format on */ /* 80346418-80346434 340D58 001C+00 0/0 1/1 0/0 .text __DBIsExceptionMarked */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __DBIsExceptionMarked() { - nofralloc -#include "asm/dolphin/db/db/__DBIsExceptionMarked.s" +BOOL __DBIsExceptionMarked(__OSException exception) { + u32 mask = 1 << exception; + + return (BOOL)(__DBInterface->exceptionMask & mask); } -#pragma pop /* 80346434-80346484 340D74 0050+00 0/0 4/4 0/0 .text DBPrintf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DBPrintf() { - nofralloc -#include "asm/dolphin/db/db/DBPrintf.s" -} -#pragma pop +void DBPrintf(char* format, ...) {} diff --git a/libs/dolphin/dsp/Makefile b/libs/dolphin/dsp/Makefile index e4040f765b8..6cb9ad4e5bc 100644 --- a/libs/dolphin/dsp/Makefile +++ b/libs/dolphin/dsp/Makefile @@ -13,6 +13,14 @@ LIBDSP_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/dsp/dsp_task.o \ LIBDSP_A_CFLAGS := \ + -Cpp_exceptions off \ + -proc gekko \ + -fp hard \ + -nodefaults \ + -str reuse \ + -RTTI off \ + -maxerrors 5 \ + -enum int $(INCLUDES) \ -O4,p \ -lang=c \ @@ -31,5 +39,7 @@ $(BUILD_DIR)/libs/dolphin/dsp/%.o: libs/dolphin/dsp/%.c @mkdir -p $(@D) @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c - @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBDSP_A_CFLAGS) -c -o $@ $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(LIBDSP_A_CFLAGS) -c -o $@ $(basename $@).c + @echo Frank is fixing $@ + @$(PYTHON) $(FRANK) $@ $@ $@ diff --git a/libs/dolphin/dsp/dsp.c b/libs/dolphin/dsp/dsp.c index 4e1118a6fee..0feefca3ac8 100644 --- a/libs/dolphin/dsp/dsp.c +++ b/libs/dolphin/dsp/dsp.c @@ -1,131 +1,90 @@ -// -// Generated By: dol2asm -// Translation Unit: dsp -// - #include "dolphin/dsp/dsp.h" -#include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/dsp/dsp_debug.h" +#include "dolphin/dsp/dsp_task.h" -// -// Forward References: -// +/* 80450A58-80450A60 -00001 0004+04 1/1 0/0 0/0 .sdata __DSPVersion */ +static char* __DSPVersion = "<< Dolphin SDK - DSP\trelease build: Apr 5 2004 04:15:32 (0x2301) >>"; -void DSPCheckMailToDSP(); -void DSPCheckMailFromDSP(); -void DSPReadMailFromDSP(); -void DSPSendMailToDSP(); -void DSPAssertInt(); -void DSPInit(); +/* 80451900-80451908 000E00 0004+04 1/1 0/0 0/0 .sbss __DSP_init_flag */ +static s32 __DSP_init_flag; // // External References: // -void __DSPHandler(); -void OSRegisterVersion(); -void OSDisableInterrupts(); -void OSRestoreInterrupts(); -void __OSSetInterruptHandler(); -void __OSUnmaskInterrupts(); -void __DSP_debug_printf(); -extern u8 __DSP_tmp_task[4]; -extern u8 __DSP_last_task[4]; -extern u8 __DSP_first_task[4]; -extern u8 __DSP_curr_task[4]; +void __DSPHandler(s16 interrupt, OSContext* context); // // Declarations: // /* 80352430-80352440 34CD70 0010+00 0/0 5/5 0/0 .text DSPCheckMailToDSP */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DSPCheckMailToDSP() { - nofralloc -#include "asm/dolphin/dsp/dsp/DSPCheckMailToDSP.s" +u32 DSPCheckMailToDSP(void) { + return (__DSPRegs[0] >> 0xF) & 1; } -#pragma pop /* 80352440-80352450 34CD80 0010+00 0/0 4/4 0/0 .text DSPCheckMailFromDSP */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DSPCheckMailFromDSP() { - nofralloc -#include "asm/dolphin/dsp/dsp/DSPCheckMailFromDSP.s" +u32 DSPCheckMailFromDSP(void) { + return (__DSPRegs[2] >> 0xF) & 1; } -#pragma pop /* 80352450-80352468 34CD90 0018+00 0/0 4/4 0/0 .text DSPReadMailFromDSP */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DSPReadMailFromDSP() { - nofralloc -#include "asm/dolphin/dsp/dsp/DSPReadMailFromDSP.s" +u32 DSPReadMailFromDSP(void) { + u16 reg1; + u16 reg2; + reg1 = __DSPRegs[2]; + reg2 = __DSPRegs[3]; + return reg1 << 16 | reg2; } -#pragma pop /* 80352468-8035247C 34CDA8 0014+00 0/0 5/5 0/0 .text DSPSendMailToDSP */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DSPSendMailToDSP() { - nofralloc -#include "asm/dolphin/dsp/dsp/DSPSendMailToDSP.s" +void DSPSendMailToDSP(u32 mail) { + __DSPRegs[0] = mail >> 16; + __DSPRegs[1] = mail; } -#pragma pop /* 8035247C-803524BC 34CDBC 0040+00 0/0 1/1 0/0 .text DSPAssertInt */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DSPAssertInt() { - nofralloc -#include "asm/dolphin/dsp/dsp/DSPAssertInt.s" +void DSPAssertInt(void) { + u32 oldInt; + u16 reg; + + oldInt = OSDisableInterrupts(); + + reg = __DSPRegs[5]; + reg = (reg & ~0xA8) | 0x2; + __DSPRegs[5] = reg; + + OSRestoreInterrupts(oldInt); } -#pragma pop - -/* ############################################################################################## */ -/* 803D1C78-803D1CC0 02ED98 0045+03 2/1 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[] = "<< Dolphin SDK - DSP\trelease build: Apr 5 2004 04:15:32 (0x2301) >>"; - -/* 803D1CC0-803D1CE0 02EDE0 001E+02 0/1 0/0 0/0 .data @19 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_19[] = "DSPInit(): Build Date: %s %s\n"; -#pragma pop - -/* 803D1CE0-803D1CEC 02EE00 000C+00 0/1 0/0 0/0 .data @20 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_20[] = "Apr 5 2004"; -#pragma pop - -/* 803D1CEC-803D1CF8 02EE0C 0009+03 0/1 0/0 0/0 .data @21 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_21[] = "04:15:32"; -#pragma pop - -/* 80450A58-80450A60 -00001 0004+04 1/1 0/0 0/0 .sdata __DSPVersion */ -SECTION_SDATA static void* __DSPVersion[1 + 1 /* padding */] = { - (void*)&lit_1, - /* padding */ - NULL, -}; - -/* 80451900-80451908 000E00 0004+04 1/1 0/0 0/0 .sbss __DSP_init_flag */ -static u8 __DSP_init_flag[4 + 4 /* padding */]; /* 803524BC-80352580 34CDFC 00C4+00 0/0 2/2 0/0 .text DSPInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DSPInit() { - nofralloc -#include "asm/dolphin/dsp/dsp/DSPInit.s" +void DSPInit(void) { + u32 oldInt; + u16 reg; + __DSP_debug_printf("DSPInit(): Build Date: %s %s\n", "Apr 5 2004", "04:15:32"); + + if (__DSP_init_flag == 1) { + return; + } + + OSRegisterVersion(__DSPVersion); + oldInt = OSDisableInterrupts(); + + __OSSetInterruptHandler(7, __DSPHandler); + __OSUnmaskInterrupts(0x1000000); + + reg = __DSPRegs[5]; + reg = (reg & ~0xA8) | 0x800; + __DSPRegs[5] = reg; + reg = __DSPRegs[5]; + reg = reg & ~0xAC; + __DSPRegs[5] = reg; + + __DSP_tmp_task = NULL; + __DSP_curr_task = NULL; + __DSP_last_task = NULL; + __DSP_first_task = NULL; + __DSP_init_flag = 1; + + OSRestoreInterrupts(oldInt); } -#pragma pop diff --git a/libs/dolphin/dsp/dsp_debug.c b/libs/dolphin/dsp/dsp_debug.c index 8255a1a364c..1a184ed7c9c 100644 --- a/libs/dolphin/dsp/dsp_debug.c +++ b/libs/dolphin/dsp/dsp_debug.c @@ -1,32 +1,5 @@ -// -// Generated By: dol2asm -// Translation Unit: dsp_debug -// - #include "dolphin/dsp/dsp_debug.h" -#include "dol2asm.h" #include "dolphin/types.h" -// -// Forward References: -// - -void __DSP_debug_printf(); - -// -// External References: -// - -// -// Declarations: -// - /* 80352580-803525D0 34CEC0 0050+00 0/0 2/2 0/0 .text __DSP_debug_printf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __DSP_debug_printf() { - nofralloc -#include "asm/dolphin/dsp/dsp_debug/__DSP_debug_printf.s" -} -#pragma pop +void __DSP_debug_printf(const char* fmt, ...) {} \ No newline at end of file diff --git a/libs/dolphin/dsp/dsp_task.c b/libs/dolphin/dsp/dsp_task.c index 032a0357b42..9d3a19f3233 100644 --- a/libs/dolphin/dsp/dsp_task.c +++ b/libs/dolphin/dsp/dsp_task.c @@ -5,7 +5,20 @@ #include "dolphin/dsp/dsp_task.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/dsp/dsp_debug.h" + +/* ############################################################################################## */ +/* 80451914-80451918 000E14 0004+00 2/2 2/2 0/0 .sbss __DSP_curr_task */ +DSPTaskInfo* __DSP_curr_task; + +/* 80451910-80451914 000E10 0004+00 2/2 2/2 0/0 .sbss __DSP_first_task */ +DSPTaskInfo* __DSP_first_task; + +/* 8045190C-80451910 000E0C 0004+00 2/2 1/1 0/0 .sbss __DSP_last_task */ +DSPTaskInfo* __DSP_last_task; + +/* 80451908-8045190C 000E08 0004+00 0/0 1/1 0/0 .sbss __DSP_tmp_task */ +DSPTaskInfo* __DSP_tmp_task; // // Forward References: @@ -16,113 +29,192 @@ void __DSP_boot_task(); void __DSP_insert_task(); void __DSP_remove_task(); -// -// External References: -// - -void DSPCheckMailToDSP(); -void DSPCheckMailFromDSP(); -void DSPReadMailFromDSP(); -void DSPSendMailToDSP(); -void __DSP_debug_printf(); - // // Declarations: // /* 803525D0-80352770 34CF10 01A0+00 0/0 1/1 0/0 .text __DSP_exec_task */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __DSP_exec_task() { - nofralloc -#include "asm/dolphin/dsp/dsp_task/__DSP_exec_task.s" +void __DSP_exec_task(DSPTaskInfo* curr, DSPTaskInfo* next) { + if (curr) { + DSPSendMailToDSP((u32)(curr->dram_mmem_addr)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(curr->dram_length)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(curr->dram_addr)); + while (DSPCheckMailToDSP()) + ; + } else { + DSPSendMailToDSP((u32)(0)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(0)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(0)); + while (DSPCheckMailToDSP()) + ; + } + + DSPSendMailToDSP((u32)(next->iram_mmem_addr)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(next->iram_length)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(next->iram_addr)); + while (DSPCheckMailToDSP()) + ; + + if (DSP_TASK_STATE_INIT == next->state) { + DSPSendMailToDSP((u32)(next->dsp_init_vector)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(0)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(0)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(0)); + while (DSPCheckMailToDSP()) + ; + } else { + DSPSendMailToDSP((u32)(next->dsp_resume_vector)); + while (DSPCheckMailToDSP()) + ; + DSPSendMailToDSP((u32)(next->dram_mmem_addr)); + while (DSPCheckMailToDSP()) + ; + + DSPSendMailToDSP((u32)(next->dram_length)); + while (DSPCheckMailToDSP()) + ; + + DSPSendMailToDSP((u32)(next->dram_addr)); + while (DSPCheckMailToDSP()) + ; + } } -#pragma pop -/* ############################################################################################## */ -/* 803D1CF8-803D1D18 02EE18 001D+03 1/1 0/0 0/0 .data @266 */ -SECTION_DATA static char lit_266[] = "DSP is booting task: 0x%08X\n"; - -/* 803D1D18-803D1D48 02EE38 002D+03 0/1 0/0 0/0 .data @267 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_267[] = "__DSP_boot_task() : IRAM MMEM ADDR: 0x%08X\n"; -#pragma pop - -/* 803D1D48-803D1D78 02EE68 002D+03 0/1 0/0 0/0 .data @268 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_268[] = "__DSP_boot_task() : IRAM DSP ADDR : 0x%08X\n"; -#pragma pop - -/* 803D1D78-803D1DA8 02EE98 002D+03 0/1 0/0 0/0 .data @269 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_269[] = "__DSP_boot_task() : IRAM LENGTH : 0x%08X\n"; -#pragma pop - -/* 803D1DA8-803D1DD8 02EEC8 002D+03 0/1 0/0 0/0 .data @270 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_270[] = "__DSP_boot_task() : DRAM MMEM ADDR: 0x%08X\n"; -#pragma pop - -/* 803D1DD8-803D1E08 02EEF8 002D+03 0/1 0/0 0/0 .data @271 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_271[] = "__DSP_boot_task() : Start Vector : 0x%08X\n"; -#pragma pop +#define MSG_BASE 0x80F30000 /* 80352770-803528FC 34D0B0 018C+00 0/0 1/1 0/0 .text __DSP_boot_task */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __DSP_boot_task() { - nofralloc -#include "asm/dolphin/dsp/dsp_task/__DSP_boot_task.s" +void __DSP_boot_task(DSPTaskInfo* task) { + volatile u32 mail; + + while (!DSPCheckMailFromDSP()) + ; + + mail = DSPReadMailFromDSP(); + + DSPSendMailToDSP(MSG_BASE | 0xA001); + while (DSPCheckMailToDSP()) { + } + DSPSendMailToDSP((u32)(task->iram_mmem_addr)); + while (DSPCheckMailToDSP()) { + } + + DSPSendMailToDSP(MSG_BASE | 0xC002); + while (DSPCheckMailToDSP()) { + } + DSPSendMailToDSP((u32)(task->iram_addr & 0xffff)); + while (DSPCheckMailToDSP()) { + } + + DSPSendMailToDSP(MSG_BASE | 0xA002); + while (DSPCheckMailToDSP()) { + } + DSPSendMailToDSP(task->iram_length); + while (DSPCheckMailToDSP()) { + } + + DSPSendMailToDSP(MSG_BASE | 0xB002); + while (DSPCheckMailToDSP()) { + } + DSPSendMailToDSP(0x00000000); + while (DSPCheckMailToDSP()) { + } + + DSPSendMailToDSP(MSG_BASE | 0xD001); + while (DSPCheckMailToDSP()) { + } + DSPSendMailToDSP((u32)(0xffff & task->dsp_init_vector)); + while (DSPCheckMailToDSP()) { + } + + __DSP_debug_printf("DSP is booting task: 0x%08X\n", task); + __DSP_debug_printf("__DSP_boot_task() : IRAM MMEM ADDR: 0x%08X\n", + (u32)(task->iram_mmem_addr)); + __DSP_debug_printf("__DSP_boot_task() : IRAM DSP ADDR : 0x%08X\n", (u32)(task->iram_addr)); + __DSP_debug_printf("__DSP_boot_task() : IRAM LENGTH : 0x%08X\n", (u32)(task->iram_length)); + __DSP_debug_printf("__DSP_boot_task() : DRAM MMEM ADDR: 0x%08X\n", (u32)(task->dram_length)); + __DSP_debug_printf("__DSP_boot_task() : Start Vector : 0x%08X\n", + (u32)(task->dsp_init_vector)); } -#pragma pop - -/* ############################################################################################## */ -/* 80451914-80451918 000E14 0004+00 2/2 2/2 0/0 .sbss __DSP_curr_task */ -extern u8 __DSP_curr_task[4]; -u8 __DSP_curr_task[4]; - -/* 80451910-80451914 000E10 0004+00 2/2 2/2 0/0 .sbss __DSP_first_task */ -extern u8 __DSP_first_task[4]; -u8 __DSP_first_task[4]; - -/* 8045190C-80451910 000E0C 0004+00 2/2 1/1 0/0 .sbss __DSP_last_task */ -extern u8 __DSP_last_task[4]; -u8 __DSP_last_task[4]; - -/* 80451908-8045190C 000E08 0004+00 0/0 1/1 0/0 .sbss __DSP_tmp_task */ -extern u8 __DSP_tmp_task[4]; -u8 __DSP_tmp_task[4]; /* 803528FC-8035299C 34D23C 00A0+00 0/0 1/1 0/0 .text __DSP_insert_task */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __DSP_insert_task() { - nofralloc -#include "asm/dolphin/dsp/dsp_task/__DSP_insert_task.s" +void __DSP_insert_task(DSPTaskInfo* task) { + DSPTaskInfo* temp; + + if (__DSP_first_task == NULL) { + __DSP_first_task = __DSP_last_task = __DSP_curr_task = task; + task->next = task->prev = NULL; + } else { + temp = __DSP_first_task; + + while (temp) { + if (task->priority < temp->priority) { + task->prev = temp->prev; + temp->prev = task; + task->next = temp; + if (task->prev == NULL) { + __DSP_first_task = task; + } else { + (task->prev)->next = task; + } + break; + } + temp = temp->next; + } + + if (temp == NULL) { + __DSP_last_task->next = task; + task->next = NULL; + task->prev = __DSP_last_task; + __DSP_last_task = task; + } + } } -#pragma pop /* 8035299C-80352A30 34D2DC 0094+00 0/0 1/1 0/0 .text __DSP_remove_task */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __DSP_remove_task() { - nofralloc -#include "asm/dolphin/dsp/dsp_task/__DSP_remove_task.s" +void __DSP_remove_task(DSPTaskInfo* task) { + task->flags = DSP_TASK_FLAG_CLEARALL; + task->state = DSP_TASK_STATE_DONE; + + if (__DSP_first_task == task) { + if (task->next) { + __DSP_first_task = (task->next); + task->next->prev = NULL; + } else { + __DSP_first_task = __DSP_last_task = __DSP_curr_task = NULL; + } + } else if (__DSP_last_task == task) { + __DSP_last_task = (task->prev); + task->prev->next = NULL; + __DSP_curr_task = __DSP_first_task; + + } else { + __DSP_curr_task = task->next; + task->prev->next = task->next; + task->next->prev = task->prev; + } } -#pragma pop /* ############################################################################################## */ /* 803D1E08-803D1E38 02EF28 002B+05 0/0 0/0 0/0 .data @294 */ +// used in stripped `__DSP_add_task` function #pragma push #pragma force_active on SECTION_DATA static char lit_294[] = "__DSP_add_task() : Added task : 0x%08X\n"; diff --git a/libs/dolphin/dvd/Makefile b/libs/dolphin/dvd/Makefile index cc820f89607..fdbbf629972 100644 --- a/libs/dolphin/dvd/Makefile +++ b/libs/dolphin/dvd/Makefile @@ -23,6 +23,14 @@ LIBDVD_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/dvd/fstload.o \ LIBDVD_A_CFLAGS := \ + -Cpp_exceptions off \ + -proc gekko \ + -fp hard \ + -nodefaults \ + -str reuse \ + -RTTI off \ + -maxerrors 5 \ + -enum int $(INCLUDES) \ -O4,p \ -lang=c \ @@ -41,5 +49,7 @@ $(BUILD_DIR)/libs/dolphin/dvd/%.o: libs/dolphin/dvd/%.c @mkdir -p $(@D) @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c - @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBDVD_A_CFLAGS) -c -o $@ $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(LIBDVD_A_CFLAGS) -c -o $@ $(basename $@).c + @echo Frank is fixing $@ + @$(PYTHON) $(FRANK) $@ $@ $@ diff --git a/libs/dolphin/dvd/dvd.c b/libs/dolphin/dvd/dvd.c index 1167b07ae1d..ee2f9879add 100644 --- a/libs/dolphin/dvd/dvd.c +++ b/libs/dolphin/dvd/dvd.c @@ -4,8 +4,10 @@ // #include "dolphin/dvd/dvd.h" +#include "MSL_C/MSL_Common/Src/mem.h" +#include "MSL_C/MSL_Common/Src/string.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/os/OS.h" // // Forward References: @@ -17,7 +19,7 @@ static void cbForStateReadingFST(); static void cbForStateError(); static void stateTimeout(); static void stateGettingError(); -static void CategorizeError(); +static u32 CategorizeError(u32 error); static void cbForStateGettingError(); static void cbForUnrecoveredError(); static void cbForUnrecoveredErrorRetry(); @@ -40,40 +42,16 @@ static void cbForStateMotorStopped(); static void stateReady(); static void stateBusy(); static void cbForStateBusy(); -void DVDReadAbsAsyncPrio(); -void DVDReadAbsAsyncForBS(); -void DVDReadDiskID(); -void DVDCancelStreamAsync(); -void DVDInquiryAsync(); -void DVDReset(); -void DVDSetAutoInvalidation(); -void DVDResume(); -static void DVDCancelAsync(); -void DVDCancel(); -static void cbForCancelSync(); -void __DVDPrepareResetAsync(); -void __DVDTestAlarm(); +static void cbForCancelSync(s32 result, DVDCommandBlock* block); +void __DVDPrepareResetAsync(DVDCBCallback callbac); +BOOL __DVDTestAlarm(OSAlarm* alarm); // // External References: // -SECTION_INIT void memcpy(); -void OSReport(); -void OSPanic(); -void OSRegisterVersion(); -void OSCreateAlarm(); -void OSSetAlarm(); -void DCInvalidateRange(); -void OSDisableInterrupts(); -void OSRestoreInterrupts(); -void __OSSetInterruptHandler(); -void __OSUnmaskInterrupts(); -void OSInitThreadQueue(); -void OSSleepThread(); -void OSWakeupThread(); void __DVDInitWA(); -void __DVDInterruptHandler(); +void __DVDInterruptHandler(s16 interrupt, OSContext* context); void DVDLowRead(); void DVDLowSeek(); void DVDLowWaitCoverClose(); @@ -87,127 +65,138 @@ void DVDLowAudioBufferConfig(); void DVDLowReset(); void DVDLowBreak(); void DVDLowClearCallback(); -void __DVDLowTestAlarm(); +BOOL __DVDLowTestAlarm(OSAlarm* alarm); void __DVDFSInit(); void __DVDClearWaitingQueue(); -void __DVDPushWaitingQueue(); -void __DVDPopWaitingQueue(); -void __DVDCheckWaitingQueue(); +BOOL __DVDPushWaitingQueue(); +DVDCommandBlock* __DVDPopWaitingQueue(); +BOOL __DVDCheckWaitingQueue(); void __DVDDequeueWaitingQueue(); void __DVDStoreErrorCode(); -void DVDCompareDiskID(); +BOOL DVDCompareDiskID(DVDDiskID*, DVDDiskID*); void __DVDPrintFatalMessage(); void __fstLoad(); -void memcmp(); -extern u8 __DVDThreadQueue[8]; +extern OSThreadQueue __DVDThreadQueue; // // Declarations: // /* 803490EC-803490F0 343A2C 0004+00 1/0 0/0 0/0 .text defaultOptionalCommandChecker */ -static void defaultOptionalCommandChecker() { - /* empty function */ -} - -/* ############################################################################################## */ -/* 803D1520-803D1568 02E640 0045+03 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[] = "<< Dolphin SDK - DVD\trelease build: Apr 5 2004 04:14:51 (0x2301) >>"; - -/* 803D1568-803D1574 02E688 000A+02 1/1 0/0 0/0 .data @18 */ -SECTION_DATA static char lit_18[] = "load fst\n"; +static void defaultOptionalCommandChecker() {} /* 804509E8-804509EC -00001 0004+00 1/1 0/0 0/0 .sdata __DVDVersion */ -SECTION_SDATA static void* __DVDVersion = (void*)&lit_1; +SECTION_SDATA static char* __DVDVersion = "<< Dolphin SDK - DVD\trelease build: Apr 5 2004 04:14:51 (0x2301) >>"; /* 80451778-8045177C 000C78 0004+00 24/24 0/0 0/0 .sbss executing */ -static u8 executing[4]; +static DVDCommandBlock* executing; /* 8045177C-80451780 000C7C 0004+00 4/4 0/0 0/0 .sbss IDShouldBe */ -static u8 IDShouldBe[4]; +static DVDDiskID* IDShouldBe; /* 80451780-80451784 000C80 0004+00 3/3 0/0 0/0 .sbss bootInfo */ -static u8 bootInfo[4]; +static OSBootInfo* bootInfo; /* 80451784-80451788 000C84 0004+00 8/8 0/0 0/0 .sbss PauseFlag */ -static u8 PauseFlag[4]; +static volatile BOOL PauseFlag; /* 80451788-8045178C 000C88 0004+00 5/5 0/0 0/0 .sbss PausingFlag */ -static u8 PausingFlag[4]; +static volatile BOOL PausingFlag; /* 8045178C-80451790 000C8C 0004+00 2/2 0/0 0/0 .sbss AutoFinishing */ -static u8 AutoFinishing[4]; +static volatile BOOL AutoFinishing; /* 80451790-80451794 000C90 0004+00 4/4 0/0 0/0 .sbss FatalErrorFlag */ -static u8 FatalErrorFlag[4]; +static volatile BOOL FatalErrorFlag; /* 80451794-80451798 000C94 0004+00 6/6 0/0 0/0 .sbss CurrCommand */ -static u8 CurrCommand[4]; +static volatile u32 CurrCommand; /* 80451798-8045179C 000C98 0004+00 8/8 0/0 0/0 .sbss Canceling */ -static u8 Canceling[4]; +static volatile u32 Canceling; /* 8045179C-804517A0 000C9C 0004+00 8/8 0/0 0/0 .sbss CancelCallback */ -static u8 CancelCallback[4]; +static DVDCBCallback CancelCallback; /* 804517A0-804517A4 000CA0 0004+00 9/9 0/0 0/0 .sbss ResumeFromHere */ -static u8 ResumeFromHere[4]; +static volatile u32 ResumeFromHere; /* 804517A4-804517A8 000CA4 0004+00 1/1 0/0 0/0 .sbss CancelLastError */ -static u8 CancelLastError[4]; +static volatile u32 CancelLastError; /* 804517A8-804517AC 000CA8 0004+00 1/1 0/0 0/0 .sbss LastError */ -static u8 LastError[4]; +static volatile u32 LastError; /* 804517AC-804517B0 000CAC 0004+00 9/9 0/0 0/0 .sbss NumInternalRetry */ -static u8 NumInternalRetry[4]; +static volatile s32 NumInternalRetry; /* 804517B0-804517B4 000CB0 0004+00 3/3 0/0 0/0 .sbss ResetRequired */ -static u8 ResetRequired[4]; +static volatile BOOL ResetRequired; /* 804517B4-804517B8 000CB4 0004+00 1/1 0/0 0/0 .sbss FirstTimeInBootrom */ -static u8 FirstTimeInBootrom[4]; +static volatile BOOL FirstTimeInBootrom; /* 804517B8-804517BC 000CB8 0004+00 5/5 0/0 0/0 .sbss MotorState */ -static u8 MotorState[4]; +static u32 MotorState; /* 804517BC-804517C0 000CBC 0004+00 1/1 0/0 0/0 .sbss DVDInitialized */ -static u8 DVDInitialized[4]; +static BOOL DVDInitialized; /* 803490F0-803491C8 343A30 00D8+00 0/0 3/3 0/0 .text DVDInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DVDInit(void) { - nofralloc -#include "asm/dolphin/dvd/dvd/DVDInit.s" +void DVDInit(void) { + if (DVDInitialized) { + return; + } + + OSRegisterVersion(__DVDVersion); + DVDInitialized = TRUE; + __DVDFSInit(); + __DVDClearWaitingQueue(); + __DVDInitWA(); + + bootInfo = (OSBootInfo*)OSPhysicalToCached(0x0000); + MotorState = 0; + IDShouldBe = &(bootInfo->disk_info); + __OSSetInterruptHandler(21, __DVDInterruptHandler); + __OSUnmaskInterrupts(0x400); + OSInitThreadQueue(&__DVDThreadQueue); + + __DIRegs[0] = 0x2A; + __DIRegs[1] = 0; + + if (bootInfo->boot_code == 0xE5207C22) { + OSReport("load fst\n"); + __fstLoad(); + } else if (bootInfo->boot_code != 0xD15EA5E) { + FirstTimeInBootrom = TRUE; + } } -#pragma pop /* ############################################################################################## */ /* 803D1574-803D15A8 02E694 0034+00 2/2 0/0 0/0 .data @24 */ SECTION_DATA static char lit_24[] = "DVDChangeDisk(): FST in the new disc is too big. "; /* 8044C900-8044C920 079620 0020+00 8/8 0/0 0/0 .bss BB2 */ -static u8 BB2[32]; +static DVDBB2 BB2 ALIGN_DECL(32); /* 804509EC-804509F0 00046C 0004+00 6/6 0/0 0/0 .sdata autoInvalidation */ SECTION_SDATA static u32 autoInvalidation = 0x00000001; /* 804509F0-804509F4 -00001 0004+00 1/1 0/0 0/0 .sdata checkOptionalCommand */ -SECTION_SDATA static void* checkOptionalCommand = (void*)defaultOptionalCommandChecker; +SECTION_SDATA static DVDOptionalCommandChecker checkOptionalCommand = defaultOptionalCommandChecker; /* 804509F4-804509FC 000474 0006+02 2/2 0/0 0/0 .sdata @23 */ SECTION_SDATA static char lit_23[] = "dvd.c"; +typedef void (*stateFunc)(DVDCommandBlock* block); /* 804517C0-804517C8 000CC0 0004+04 6/6 0/0 0/0 .sbss LastState */ -static u8 LastState[4 + 4 /* padding */]; +static stateFunc LastState; /* 803491C8-8034925C 343B08 0094+00 1/1 0/0 0/0 .text stateReadingFST */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void stateReadingFST() { +static asm void stateReadingFST(void) { nofralloc #include "asm/dolphin/dvd/dvd/stateReadingFST.s" } @@ -215,323 +204,712 @@ static asm void stateReadingFST() { /* ############################################################################################## */ /* 8044C920-8044C940 079640 0020+00 2/3 0/0 0/0 .bss CurrDiskID */ -static u8 CurrDiskID[32]; +static DVDDiskID CurrDiskID ALIGN_DECL(32); /* 8044C940-8044C970 079660 0030+00 10/14 0/0 0/0 .bss DummyCommandBlock */ -static u8 DummyCommandBlock[48]; +static DVDCommandBlock DummyCommandBlock; /* 8034925C-803492DC 343B9C 0080+00 2/2 0/0 0/0 .text cbForStateReadingFST */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void cbForStateReadingFST() { - nofralloc -#include "asm/dolphin/dvd/dvd/cbForStateReadingFST.s" +static void cbForStateReadingFST(u32 intType) { + DVDCommandBlock* finished; + + if (intType == 16) { + stateTimeout(); + return; + } + + if (intType & 1) { + NumInternalRetry = 0; + __DVDFSInit(); + finished = executing; + executing = &DummyCommandBlock; + finished->state = 0; + if (finished->callback) { + (finished->callback)(0, finished); + } + + stateReady(); + + } else { + stateGettingError(); + } } -#pragma pop /* 803492DC-80349388 343C1C 00AC+00 12/12 0/0 0/0 .text cbForStateError */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void cbForStateError() { - nofralloc -#include "asm/dolphin/dvd/dvd/cbForStateError.s" +static void cbForStateError(u32 intType) { + DVDCommandBlock* finished; + executing->state = -1; + + if (intType == 16) { + stateTimeout(); + return; + } + + __DVDPrintFatalMessage(); + + FatalErrorFlag = TRUE; + finished = executing; + executing = &DummyCommandBlock; + if (finished->callback) { + (finished->callback)(-1, finished); + } + + if (Canceling) { + Canceling = FALSE; + if (CancelCallback) + (CancelCallback)(0, finished); + } + + stateReady(); } -#pragma pop /* 80349388-803493BC 343CC8 0034+00 2/2 0/0 0/0 .text stateTimeout */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void stateTimeout() { - nofralloc -#include "asm/dolphin/dvd/dvd/stateTimeout.s" +static void stateTimeout(void) { + __DVDStoreErrorCode(0x1234568); + DVDReset(); + cbForStateError(0); } -#pragma pop /* 803493BC-803493E4 343CFC 0028+00 1/1 0/0 0/0 .text stateGettingError */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void stateGettingError() { - nofralloc -#include "asm/dolphin/dvd/dvd/stateGettingError.s" +static inline void stateGettingError(void) { + DVDLowRequestError(cbForStateGettingError); } -#pragma pop /* 803493E4-80349498 343D24 00B4+00 1/1 0/0 0/0 .text CategorizeError */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void CategorizeError() { - nofralloc -#include "asm/dolphin/dvd/dvd/CategorizeError.s" +static u32 CategorizeError(u32 error) { + if (error == 0x20400) { + LastError = error; + return 1; + } + + error &= 0xffffff; + + if ((error == 0x62800) || (error == 0x23a00) || (error == 0xb5a01)) { + return 0; + } + + ++NumInternalRetry; + if (NumInternalRetry == 2) { + if (error == LastError) { + LastError = error; + return 1; + } else { + LastError = error; + return 2; + } + } else { + LastError = error; + + if ((error == 0x31100) || (executing->command == 5)) { + return 2; + } else { + return 3; + } + } +} + +inline static BOOL CheckCancel(u32 resume) { + DVDCommandBlock* finished; + + if (Canceling) { + ResumeFromHere = resume; + Canceling = FALSE; + + finished = executing; + executing = &DummyCommandBlock; + + finished->state = 10; + if (finished->callback) + (*finished->callback)(-3, finished); + if (CancelCallback) + (CancelCallback)(0, finished); + stateReady(); + return TRUE; + } + return FALSE; } -#pragma pop /* 80349498-803496FC 343DD8 0264+00 6/6 0/0 0/0 .text cbForStateGettingError */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void cbForStateGettingError() { - nofralloc -#include "asm/dolphin/dvd/dvd/cbForStateGettingError.s" +static void cbForStateGettingError(u32 intType) { + u32 error; + u32 status; + u32 errorCategory; + u32 resume; + + if (intType == 16) { + __DVDStoreErrorCode(0x1234568); + DVDReset(); + cbForStateError(0); + return; + } + + if (intType & 2) { + __DVDStoreErrorCode(0x1234567); + DVDLowStopMotor(cbForStateError); + return; + } + + error = __DIRegs[8]; + status = error & 0xff000000; + + errorCategory = CategorizeError(error); + + if (errorCategory == 1) { + __DVDStoreErrorCode(error); + DVDLowStopMotor(cbForStateError); + return; + } + + if ((errorCategory == 2) || (errorCategory == 3)) { + resume = 0; + } else { + if (status == 0x01000000) + resume = 4; + else if (status == 0x02000000) + resume = 6; + else if (status == 0x03000000) + resume = 3; + else + resume = 5; + } + + if (CheckCancel(resume)) + return; + + if (errorCategory == 2) { + __DVDStoreErrorCode(error); + stateGoToRetry(); + return; + } + + if (errorCategory == 3) { + if ((error & 0x00ffffff) == 0x00031100) { + DVDLowSeek(executing->offset, cbForUnrecoveredError); + } else { + LastState(executing); + } + return; + } + + if (status == 0x01000000) { + executing->state = 5; + stateMotorStopped(); + return; + } else if (status == 0x02000000) { + executing->state = 3; + stateCoverClosed(); + return; + } else if (status == 0x03000000) { + executing->state = 4; + stateMotorStopped(); + return; + } else { + __DVDStoreErrorCode(0x1234567); + DVDLowStopMotor(cbForStateError); + return; + } } -#pragma pop /* 803496FC-80349758 34403C 005C+00 1/1 0/0 0/0 .text cbForUnrecoveredError */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void cbForUnrecoveredError() { - nofralloc -#include "asm/dolphin/dvd/dvd/cbForUnrecoveredError.s" +static void cbForUnrecoveredError(u32 intType) { + if (intType == 16) { + __DVDStoreErrorCode(0x1234568); + DVDReset(); + cbForStateError(0); + return; + } + + if (intType & 1) { + stateGoToRetry(); + return; + } + + DVDLowRequestError(cbForUnrecoveredErrorRetry); } -#pragma pop /* 80349758-803497D8 344098 0080+00 1/1 0/0 0/0 .text cbForUnrecoveredErrorRetry */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void cbForUnrecoveredErrorRetry() { - nofralloc -#include "asm/dolphin/dvd/dvd/cbForUnrecoveredErrorRetry.s" +static void cbForUnrecoveredErrorRetry(u32 intType) { + if (intType == 16) { + __DVDStoreErrorCode(0x1234568); + DVDReset(); + cbForStateError(0); + return; + } + + if (intType & 2) { + __DVDStoreErrorCode(0x1234567); + DVDLowStopMotor(cbForStateError); + return; + } + + __DVDStoreErrorCode(__DIRegs[8]); + DVDLowStopMotor(cbForStateError); } -#pragma pop /* 803497D8-80349800 344118 0028+00 2/2 0/0 0/0 .text stateGoToRetry */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void stateGoToRetry() { - nofralloc -#include "asm/dolphin/dvd/dvd/stateGoToRetry.s" +static void stateGoToRetry(void) { + DVDLowStopMotor(cbForStateGoToRetry); } -#pragma pop /* 80349800-80349940 344140 0140+00 1/1 0/0 0/0 .text cbForStateGoToRetry */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void cbForStateGoToRetry() { - nofralloc -#include "asm/dolphin/dvd/dvd/cbForStateGoToRetry.s" +static void cbForStateGoToRetry(u32 intType) { + if (intType == 16) { + __DVDStoreErrorCode(0x1234568); + DVDReset(); + cbForStateError(0); + return; + } + + if (intType & 2) { + __DVDStoreErrorCode(0x1234567); + DVDLowStopMotor(cbForStateError); + return; + } + + NumInternalRetry = 0; + + if ((CurrCommand == 4) || (CurrCommand == 5) || (CurrCommand == 13) || (CurrCommand == 15)) { + ResetRequired = TRUE; + } + + if (!CheckCancel(2)) { + executing->state = 11; + stateMotorStopped(); + } } -#pragma pop /* 80349940-80349A20 344280 00E0+00 1/1 0/0 0/0 .text stateCheckID */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void stateCheckID() { - nofralloc -#include "asm/dolphin/dvd/dvd/stateCheckID.s" +static void stateCheckID(void) { + switch (CurrCommand) { + case 3: + if (DVDCompareDiskID(&CurrDiskID, executing->disk_id)) { + memcpy(IDShouldBe, &CurrDiskID, sizeof(DVDDiskID)); + + executing->state = 1; + DCInvalidateRange(&BB2, sizeof(DVDBB2)); + LastState = stateCheckID2a; + stateCheckID2a(executing); + return; + } else { + DVDLowStopMotor(cbForStateCheckID1); + } + break; + + default: + if (memcmp(&CurrDiskID, IDShouldBe, sizeof(DVDDiskID))) { + DVDLowStopMotor(cbForStateCheckID1); + } else { + LastState = stateCheckID3; + stateCheckID3(executing); + } + break; + } } -#pragma pop /* 80349A20-80349A54 344360 0034+00 1/1 0/0 0/0 .text stateCheckID3 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void stateCheckID3() { - nofralloc -#include "asm/dolphin/dvd/dvd/stateCheckID3.s" +static void stateCheckID3(void) { + DVDLowAudioBufferConfig(IDShouldBe->is_streaming, 10, cbForStateCheckID3); } -#pragma pop /* 80349A54-80349A88 344394 0034+00 1/1 0/0 0/0 .text stateCheckID2a */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void stateCheckID2a() { - nofralloc -#include "asm/dolphin/dvd/dvd/stateCheckID2a.s" +static void stateCheckID2a(void) { + DVDLowAudioBufferConfig(IDShouldBe->is_streaming, 10, cbForStateCheckID2a); } -#pragma pop /* 80349A88-80349AF0 3443C8 0068+00 1/1 0/0 0/0 .text cbForStateCheckID2a */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void cbForStateCheckID2a() { - nofralloc -#include "asm/dolphin/dvd/dvd/cbForStateCheckID2a.s" +static void cbForStateCheckID2a(u32 intType) { + if (intType == 16) { + __DVDStoreErrorCode(0x1234568); + DVDReset(); + cbForStateError(0); + return; + } + + if (intType & 1) { + NumInternalRetry = 0; + stateCheckID2(executing); + return; + } + + DVDLowRequestError(cbForStateGettingError); } -#pragma pop /* 80349AF0-80349B28 344430 0038+00 1/1 0/0 0/0 .text stateCheckID2 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void stateCheckID2() { - nofralloc -#include "asm/dolphin/dvd/dvd/stateCheckID2.s" +static void stateCheckID2() { + DVDLowRead(&BB2, OSRoundUp32B(sizeof(BB2)), 0x420, cbForStateCheckID2); } -#pragma pop /* 80349B28-80349C24 344468 00FC+00 1/1 0/0 0/0 .text cbForStateCheckID1 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void cbForStateCheckID1() { - nofralloc -#include "asm/dolphin/dvd/dvd/cbForStateCheckID1.s" +static void cbForStateCheckID1(u32 intType) { + if (intType == 16) { + __DVDStoreErrorCode(0x1234568); + DVDReset(); + cbForStateError(0); + return; + } + + if (intType & 2) { + __DVDStoreErrorCode(0x1234567); + DVDLowStopMotor(cbForStateError); + return; + } + + NumInternalRetry = 0; + + if (!CheckCancel(1)) { + executing->state = 6; + stateMotorStopped(); + } } -#pragma pop /* 80349C24-80349CFC 344564 00D8+00 1/1 0/0 0/0 .text cbForStateCheckID2 */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void cbForStateCheckID2() { +static asm void cbForStateCheckID2(u32 intType) { nofralloc #include "asm/dolphin/dvd/dvd/cbForStateCheckID2.s" } #pragma pop /* 80349CFC-80349DEC 34463C 00F0+00 1/1 0/0 0/0 .text cbForStateCheckID3 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void cbForStateCheckID3() { - nofralloc -#include "asm/dolphin/dvd/dvd/cbForStateCheckID3.s" +static void cbForStateCheckID3(u32 intType) { + if (intType == 16) { + __DVDStoreErrorCode(0x1234568); + DVDReset(); + cbForStateError(0); + return; + } + + if (intType & 1) { + NumInternalRetry = 0; + + if (!CheckCancel(0)) { + executing->state = 1; + stateBusy(executing); + } + } else { + stateGettingError(); + } } -#pragma pop /* 80349DEC-80349E30 34472C 0044+00 3/3 0/0 0/0 .text AlarmHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void AlarmHandler() { - nofralloc -#include "asm/dolphin/dvd/dvd/AlarmHandler.s" +static void AlarmHandler(OSAlarm* alarm, OSContext* context) { + DVDReset(); + DCInvalidateRange(&CurrDiskID, sizeof(DVDDiskID)); + LastState = stateCoverClosed_CMD; + stateCoverClosed_CMD(executing); } -#pragma pop /* ############################################################################################## */ /* 8044C970-8044C998 079690 0028+00 1/4 0/0 0/0 .bss ResetAlarm */ -static u8 ResetAlarm[40]; +static OSAlarm ResetAlarm; /* 80349E30-80349F04 344770 00D4+00 1/1 0/0 0/0 .text stateCoverClosed */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void stateCoverClosed() { - nofralloc -#include "asm/dolphin/dvd/dvd/stateCoverClosed.s" +static inline void stateCoverClosed(void) { + DVDCommandBlock* finished; + + switch (CurrCommand) { + case 5: + case 4: + case 13: + case 15: + __DVDClearWaitingQueue(); + finished = executing; + executing = &DummyCommandBlock; + if (finished->callback) { + (finished->callback)(-4, finished); + } + stateReady(); + break; + + default: + MotorState = 0; + DVDReset(); + OSCreateAlarm(&ResetAlarm); + OSSetAlarm(&ResetAlarm, OSMillisecondsToTicks(1150), AlarmHandler); + break; + } } -#pragma pop /* 80349F04-80349F34 344844 0030+00 1/1 0/0 0/0 .text stateCoverClosed_CMD */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void stateCoverClosed_CMD() { - nofralloc -#include "asm/dolphin/dvd/dvd/stateCoverClosed_CMD.s" +static void stateCoverClosed_CMD(DVDCommandBlock* block) { + DVDLowReadDiskID(&CurrDiskID, cbForStateCoverClosed); } -#pragma pop /* 80349F34-80349F98 344874 0064+00 1/1 0/0 0/0 .text cbForStateCoverClosed */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void cbForStateCoverClosed() { - nofralloc -#include "asm/dolphin/dvd/dvd/cbForStateCoverClosed.s" +static void cbForStateCoverClosed(u32 intType) { + if (intType == 16) { + __DVDStoreErrorCode(0x1234568); + DVDReset(); + cbForStateError(0); + return; + } + + if (intType & 1) { + NumInternalRetry = 0; + stateCheckID(); + } else { + stateGettingError(); + } } -#pragma pop /* 80349F98-80349FC0 3448D8 0028+00 3/3 0/0 0/0 .text stateMotorStopped */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void stateMotorStopped() { - nofralloc -#include "asm/dolphin/dvd/dvd/stateMotorStopped.s" +static void stateMotorStopped(void) { + DVDLowWaitCoverClose(cbForStateMotorStopped); } -#pragma pop /* 80349FC0-8034A0AC 344900 00EC+00 4/4 0/0 0/0 .text cbForStateMotorStopped */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void cbForStateMotorStopped() { - nofralloc -#include "asm/dolphin/dvd/dvd/cbForStateMotorStopped.s" +static void cbForStateMotorStopped(u32 intType) { + __DIRegs[1] = 0; + executing->state = 3; + stateCoverClosed(); } -#pragma pop /* 8034A0AC-8034A394 3449EC 02E8+00 18/18 0/0 0/0 .text stateReady */ +#ifdef NONMATCHING +static void stateReady() { + DVDCommandBlock* finished; + + if (!__DVDCheckWaitingQueue()) { + executing = (DVDCommandBlock*)NULL; + return; + } + + if (PauseFlag) { + PausingFlag = TRUE; + executing = (DVDCommandBlock*)NULL; + return; + } + + executing = __DVDPopWaitingQueue(); + + if (FatalErrorFlag) { + executing->state = -1; + finished = executing; + executing = &DummyCommandBlock; + if (finished->callback) { + (finished->callback)(-1, finished); + } + stateReady(); + return; + } + + CurrCommand = executing->command; + + if (ResumeFromHere) { + switch (ResumeFromHere) { + case 1: + executing->state = 1; + stateCoverClosed(); + break; + case 2: + executing->state = 11; + stateMotorStopped(); + break; + + case 3: + executing->state = 4; + stateMotorStopped(); + break; + + case 4: + executing->state = 5; + stateMotorStopped(); + break; + case 7: + case 6: + executing->state = 3; + stateCoverClosed(); + break; + + case 5: + executing->state = -1; + break; + } + + ResumeFromHere = 0; + } else { + executing->state = 1; + stateBusy(executing); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void stateReady() { +static asm void stateReady(void) { nofralloc #include "asm/dolphin/dvd/dvd/stateReady.s" } #pragma pop - -/* ############################################################################################## */ -/* 803D15A8-803D15EC -00001 0044+00 1/1 0/0 0/0 .data @359 */ -SECTION_DATA static void* lit_359[17] = { - (void*)(((char*)stateBusy) + 0x318), (void*)(((char*)stateBusy) + 0x6C), - (void*)(((char*)stateBusy) + 0x10C), (void*)(((char*)stateBusy) + 0x130), - (void*)(((char*)stateBusy) + 0x6C), (void*)(((char*)stateBusy) + 0x40), - (void*)(((char*)stateBusy) + 0x150), (void*)(((char*)stateBusy) + 0x1B4), - (void*)(((char*)stateBusy) + 0x1E0), (void*)(((char*)stateBusy) + 0x214), - (void*)(((char*)stateBusy) + 0x238), (void*)(((char*)stateBusy) + 0x25C), - (void*)(((char*)stateBusy) + 0x280), (void*)(((char*)stateBusy) + 0x2A4), - (void*)(((char*)stateBusy) + 0x2CC), (void*)(((char*)stateBusy) + 0x140), - (void*)(((char*)stateBusy) + 0x2F8), -}; +#endif /* 8034A394-8034A6D4 344CD4 0340+00 4/3 0/0 0/0 .text stateBusy */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void stateBusy() { - nofralloc -#include "asm/dolphin/dvd/dvd/stateBusy.s" +#define MIN(a, b) (((a) > (b)) ? (b) : (a)) +static void stateBusy(DVDCommandBlock* block) { + DVDCommandBlock* finished; + LastState = stateBusy; + switch (block->command) { + case 5: + __DIRegs[1] = __DIRegs[1]; + block->current_transfer_size = sizeof(DVDDiskID); + DVDLowReadDiskID(block->buffer, cbForStateBusy); + break; + case 1: + case 4: + if (!block->length) { + finished = executing; + executing = &DummyCommandBlock; + finished->state = 0; + if (finished->callback) { + finished->callback(0, finished); + } + stateReady(); + } else { + __DIRegs[1] = __DIRegs[1]; + block->current_transfer_size = MIN(block->length - block->transferred_size, 0x80000); + DVDLowRead((void*)((u8*)block->buffer + block->transferred_size), + block->current_transfer_size, block->offset + block->transferred_size, + cbForStateBusy); + } + break; + case 2: + __DIRegs[1] = __DIRegs[1]; + DVDLowSeek(block->offset, cbForStateBusy); + break; + case 3: + DVDLowStopMotor(cbForStateBusy); + break; + case 15: + DVDLowStopMotor(cbForStateBusy); + break; + case 6: + __DIRegs[1] = __DIRegs[1]; + if (AutoFinishing) { + executing->current_transfer_size = 0; + DVDLowRequestAudioStatus(0, cbForStateBusy); + } else { + executing->current_transfer_size = 1; + DVDLowAudioStream(0, block->length, block->offset, cbForStateBusy); + } + break; + case 7: + __DIRegs[1] = __DIRegs[1]; + DVDLowAudioStream(0x10000, 0, 0, cbForStateBusy); + break; + case 8: + __DIRegs[1] = __DIRegs[1]; + AutoFinishing = TRUE; + DVDLowAudioStream(0, 0, 0, cbForStateBusy); + break; + case 9: + __DIRegs[1] = __DIRegs[1]; + DVDLowRequestAudioStatus(0, cbForStateBusy); + break; + case 10: + __DIRegs[1] = __DIRegs[1]; + DVDLowRequestAudioStatus(0x10000, cbForStateBusy); + break; + case 11: + __DIRegs[1] = __DIRegs[1]; + DVDLowRequestAudioStatus(0x20000, cbForStateBusy); + break; + case 12: + __DIRegs[1] = __DIRegs[1]; + DVDLowRequestAudioStatus(0x30000, cbForStateBusy); + break; + case 13: + __DIRegs[1] = __DIRegs[1]; + DVDLowAudioBufferConfig(block->offset, block->length, cbForStateBusy); + break; + case 14: + __DIRegs[1] = __DIRegs[1]; + block->current_transfer_size = sizeof(DVDDriveInfo); + DVDLowInquiry(block->buffer, cbForStateBusy); + break; + case 16: + __DIRegs[1] = __DIRegs[1]; + DVDLowStopMotor(cbForStateBusy); + break; + default: + checkOptionalCommand(block, cbForStateBusy); + break; + } } -#pragma pop - /* ############################################################################################## */ /* 803D15EC-803D15F8 02E70C 000C+00 1/1 0/0 0/0 .data ImmCommand */ -SECTION_DATA static u8 ImmCommand[12] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -}; +static u32 ImmCommand[] = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}; /* 804509FC-80450A00 00047C 0004+00 1/1 0/0 0/0 .sdata DmaCommand */ -SECTION_SDATA static u32 DmaCommand = 0xFFFFFFFF; +SECTION_SDATA static u32 DmaCommand[] = {0xFFFFFFFF}; /* 8034A6D4-8034AD2C 345014 0658+00 1/1 0/0 0/0 .text cbForStateBusy */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void cbForStateBusy() { +static asm void cbForStateBusy(u32 intType) { nofralloc #include "asm/dolphin/dvd/dvd/cbForStateBusy.s" } #pragma pop +static inline BOOL issueCommand(s32 prio, DVDCommandBlock* block) { + BOOL level; + BOOL result; + + if (autoInvalidation && (block->command == 1 || block->command == 4 || block->command == 5 || + block->command == 14)) { + DCInvalidateRange(block->buffer, block->length); + } + + level = OSDisableInterrupts(); + + block->state = 2; + result = __DVDPushWaitingQueue(prio, block); + + if ((executing == (DVDCommandBlock*)NULL) && (PauseFlag == FALSE)) { + stateReady(); + } + + OSRestoreInterrupts(level); + + return result; +} + /* 8034AD2C-8034AE08 34566C 00DC+00 0/0 5/5 0/0 .text DVDReadAbsAsyncPrio */ +#ifdef NONMATCHING +BOOL DVDReadAbsAsyncPrio(DVDCommandBlock* block, void* addr, s32 length, s32 offset, + DVDCBCallback callback, s32 prio) { + BOOL idle; + block->command = 1; + block->buffer = addr; + block->length = length; + block->offset = offset; + block->transferred_size = 0; + block->callback = callback; + + idle = issueCommand(prio, block); + return idle; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void DVDReadAbsAsyncPrio() { +asm BOOL DVDReadAbsAsyncPrio(DVDCommandBlock* block, void* addr, s32 length, s32 offset, + DVDCBCallback callback, s32 prio) { nofralloc #include "asm/dolphin/dvd/dvd/DVDReadAbsAsyncPrio.s" } #pragma pop +#endif /* 8034AE08-8034AED8 345748 00D0+00 0/0 1/1 0/0 .text DVDReadAbsAsyncForBS */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void DVDReadAbsAsyncForBS() { +asm BOOL DVDReadAbsAsyncForBS(DVDCommandBlock* block, void* addr, s32 length, s32 offset, + DVDCBCallback callback) { nofralloc #include "asm/dolphin/dvd/dvd/DVDReadAbsAsyncForBS.s" } @@ -541,7 +919,7 @@ asm void DVDReadAbsAsyncForBS() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void DVDReadDiskID() { +asm BOOL DVDReadDiskID(DVDCommandBlock* block, DVDDiskID* diskID, DVDCBCallback callback) { nofralloc #include "asm/dolphin/dvd/dvd/DVDReadDiskID.s" } @@ -551,7 +929,7 @@ asm void DVDReadDiskID() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void DVDCancelStreamAsync() { +asm BOOL DVDCancelStreamAsync(DVDCommandBlock* block, DVDCBCallback callback) { nofralloc #include "asm/dolphin/dvd/dvd/DVDCancelStreamAsync.s" } @@ -561,67 +939,87 @@ asm void DVDCancelStreamAsync() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void DVDInquiryAsync() { +asm BOOL DVDInquiryAsync(DVDCommandBlock* block, DVDDriveInfo* info, DVDCBCallback callback) { nofralloc #include "asm/dolphin/dvd/dvd/DVDInquiryAsync.s" } #pragma pop /* 8034B138-8034B17C 345A78 0044+00 15/15 2/2 0/0 .text DVDReset */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DVDReset() { - nofralloc -#include "asm/dolphin/dvd/dvd/DVDReset.s" +void DVDReset(void) { + DVDLowReset(); + __DIRegs[0] = 0x2A; + __DIRegs[1] = __DIRegs[1]; + ResetRequired = FALSE; + ResumeFromHere = 0; } -#pragma pop /* 8034B17C-8034B1C8 345ABC 004C+00 0/0 6/6 0/0 .text DVDGetCommandBlockStatus */ +// needs compiler epilogue patch +#ifdef NONMATCHING +s32 DVDGetCommandBlockStatus(const DVDCommandBlock* block) { + BOOL enabled; + s32 retVal; + + enabled = OSDisableInterrupts(); + + if (block->state == 3) { + retVal = 1; + } else { + retVal = block->state; + } + + OSRestoreInterrupts(enabled); + + return retVal; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm int DVDGetCommandBlockStatus(DVDCommandBlock*) { +asm s32 DVDGetCommandBlockStatus(const DVDCommandBlock* block) { nofralloc #include "asm/dolphin/dvd/dvd/DVDGetCommandBlockStatus.s" } #pragma pop +#endif /* 8034B1C8-8034B274 345B08 00AC+00 0/0 7/7 0/0 .text DVDGetDriveStatus */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm DVDState DVDGetDriveStatus() { +asm s32 DVDGetDriveStatus(void) { nofralloc #include "asm/dolphin/dvd/dvd/DVDGetDriveStatus.s" } #pragma pop /* 8034B274-8034B284 345BB4 0010+00 0/0 1/1 0/0 .text DVDSetAutoInvalidation */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DVDSetAutoInvalidation() { - nofralloc -#include "asm/dolphin/dvd/dvd/DVDSetAutoInvalidation.s" +BOOL DVDSetAutoInvalidation(BOOL autoInval) { + BOOL prev; + prev = autoInvalidation; + autoInvalidation = autoInval; + return prev; } -#pragma pop /* 8034B284-8034B2D4 345BC4 0050+00 0/0 1/1 0/0 .text DVDResume */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DVDResume() { - nofralloc -#include "asm/dolphin/dvd/dvd/DVDResume.s" +void DVDResume(void) { + BOOL level; + level = OSDisableInterrupts(); + PauseFlag = FALSE; + if (PausingFlag) { + PausingFlag = FALSE; + stateReady(); + } + OSRestoreInterrupts(level); } -#pragma pop /* ############################################################################################## */ /* 803D15F8-803D163C 02E718 0041+03 0/0 0/0 0/0 .data @789 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_789[] = "DVDChangeDiskAsync(): You can't specify NULL to company name. \n"; +SECTION_DATA static char lit_789[] = + "DVDChangeDiskAsync(): You can't specify NULL to company name. \n"; #pragma pop /* 803D163C-803D1670 -00001 0034+00 1/1 0/0 0/0 .data @956 */ @@ -636,44 +1034,160 @@ SECTION_DATA static void* lit_956[13] = { }; /* 8034B2D4-8034B550 345C14 027C+00 3/2 0/0 0/0 .text DVDCancelAsync */ +// needs compiler epilogue patch +#ifdef NONMATCHING +BOOL DVDCancelAsync(DVDCommandBlock* block, DVDCBCallback callback) { + BOOL enabled; + DVDLowCallback old; + + enabled = OSDisableInterrupts(); + + switch (block->state) { + case -1: + case 0: + case 10: + if (callback) + (*callback)(0, block); + break; + + case 1: + if (Canceling) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + Canceling = TRUE; + CancelCallback = callback; + if (block->command == 4 || block->command == 1) { + DVDLowBreak(); + } + break; + + case 2: + __DVDDequeueWaitingQueue(block); + block->state = 10; + if (block->callback) + (block->callback)(-3, block); + if (callback) + (*callback)(0, block); + break; + + case 3: + switch (block->command) { + case 5: + case 4: + case 13: + case 15: + if (callback) + (*callback)(0, block); + break; + + default: + if (Canceling) { + OSRestoreInterrupts(enabled); + return FALSE; + } + Canceling = TRUE; + CancelCallback = callback; + break; + } + break; + + case 4: + case 5: + case 6: + case 7: + case 11: + old = DVDLowClearCallback(); + if (old != cbForStateMotorStopped) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + if (block->state == 4) + ResumeFromHere = 3; + if (block->state == 5) + ResumeFromHere = 4; + if (block->state == 6) + ResumeFromHere = 1; + if (block->state == 11) + ResumeFromHere = 2; + if (block->state == 7) + ResumeFromHere = 7; + + executing = &DummyCommandBlock; + + block->state = 10; + if (block->callback) { + (block->callback)(-3, block); + } + if (callback) { + (callback)(0, block); + } + stateReady(); + break; + } + + OSRestoreInterrupts(enabled); + return TRUE; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void DVDCancelAsync() { +static asm BOOL DVDCancelAsync(DVDCommandBlock* block, DVDCBCallback callback) { nofralloc #include "asm/dolphin/dvd/dvd/DVDCancelAsync.s" } #pragma pop +#endif /* 8034B550-8034B5FC 345E90 00AC+00 0/0 1/1 1/1 .text DVDCancel */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DVDCancel() { - nofralloc -#include "asm/dolphin/dvd/dvd/DVDCancel.s" +s32 DVDCancel(DVDCommandBlock* block) { + BOOL result; + s32 state; + u32 command; + BOOL enabled; + + result = DVDCancelAsync(block, cbForCancelSync); + + if (result == FALSE) { + return -1; + } + + enabled = OSDisableInterrupts(); + + for (;;) { + state = ((volatile DVDCommandBlock*)block)->state; + + if ((state == 0) || (state == -1) || (state == 10)) { + break; + } + + if (state == 3) { + command = ((volatile DVDCommandBlock*)block)->command; + + if ((command == 4) || (command == 5) || (command == 13) || (command == 15)) { + break; + } + } + + OSSleepThread(&__DVDThreadQueue); + } + + OSRestoreInterrupts(enabled); + return 0; } -#pragma pop /* 8034B5FC-8034B620 345F3C 0024+00 1/1 0/0 0/0 .text cbForCancelSync */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void cbForCancelSync() { - nofralloc -#include "asm/dolphin/dvd/dvd/cbForCancelSync.s" +static void cbForCancelSync(s32 result, DVDCommandBlock* block) { + OSWakeupThread(&__DVDThreadQueue); } -#pragma pop /* 8034B620-8034B628 345F60 0008+00 0/0 3/3 0/0 .text DVDGetCurrentDiskID */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm DVDDiskID* DVDGetCurrentDiskID() { - nofralloc -#include "asm/dolphin/dvd/dvd/DVDGetCurrentDiskID.s" +DVDDiskID* DVDGetCurrentDiskID(void) { + return (DVDDiskID*)OSPhysicalToCached(0); } -#pragma pop /* ############################################################################################## */ /* 803D1670-803D16A8 -00001 0034+04 1/1 0/0 0/0 .data @1060 */ @@ -696,31 +1210,88 @@ SECTION_DATA static void* lit_1060[13 + 1 /* padding */] = { }; /* 8034B628-8034B720 345F68 00F8+00 1/0 4/4 0/0 .text DVDCheckDisk */ +// needs compiler epilogue patch +#ifdef NONMATCHING +BOOL DVDCheckDisk(void) { + BOOL enabled; + s32 retVal; + s32 state; + u32 coverReg; + + enabled = OSDisableInterrupts(); + + if (FatalErrorFlag) { + state = -1; + } else if (PausingFlag) { + state = 8; + } else { + if (executing == (DVDCommandBlock*)NULL) { + state = 0; + } else if (executing == &DummyCommandBlock) { + state = 0; + } else { + state = executing->state; + } + } + + switch (state) { + case 1: + case 9: + case 10: + case 2: + retVal = TRUE; + break; + + case -1: + case 11: + case 7: + case 3: + case 4: + case 5: + case 6: + retVal = FALSE; + break; + + case 0: + case 8: + coverReg = __DIRegs[1]; + if (((coverReg >> 2) & 1) || (coverReg & 1)) { + retVal = FALSE; + } else { + retVal = TRUE; + } + } + + OSRestoreInterrupts(enabled); + + return retVal; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm BOOL DVDCheckDisk() { +asm BOOL DVDCheckDisk(void) { nofralloc #include "asm/dolphin/dvd/dvd/DVDCheckDisk.s" } #pragma pop +#endif /* 8034B720-8034B83C 346060 011C+00 0/0 1/1 0/0 .text __DVDPrepareResetAsync */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __DVDPrepareResetAsync() { +asm void __DVDPrepareResetAsync(DVDCBCallback callback) { nofralloc #include "asm/dolphin/dvd/dvd/__DVDPrepareResetAsync.s" } #pragma pop /* 8034B83C-8034B874 34617C 0038+00 0/0 1/1 0/0 .text __DVDTestAlarm */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __DVDTestAlarm() { - nofralloc -#include "asm/dolphin/dvd/dvd/__DVDTestAlarm.s" +BOOL __DVDTestAlarm(OSAlarm* alarm) { + if (alarm == &ResetAlarm) { + return TRUE; + } + + return __DVDLowTestAlarm(alarm); } -#pragma pop diff --git a/libs/dolphin/dvd/dvdidutils.c b/libs/dolphin/dvd/dvdidutils.c index 5b5b1cc636d..de95f3e4815 100644 --- a/libs/dolphin/dvd/dvdidutils.c +++ b/libs/dolphin/dvd/dvdidutils.c @@ -1,34 +1,27 @@ -// -// Generated By: dol2asm -// Translation Unit: dvdidutils -// - #include "dolphin/dvd/dvdidutils.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -void DVDCompareDiskID(); - -// -// External References: -// - -void strncmp(); - -// -// Declarations: -// +#include "MSL_C/MSL_Common/Src/string.h" +#include "dolphin/dvd/dvd.h" /* 8034BC04-8034BCFC 346544 00F8+00 0/0 1/1 0/0 .text DVDCompareDiskID */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DVDCompareDiskID() { - nofralloc -#include "asm/dolphin/dvd/dvdidutils/DVDCompareDiskID.s" +BOOL DVDCompareDiskID(DVDDiskID* id1, DVDDiskID* id2) { + if (id1->game_name[0] && id2->game_name[0] && + strncmp(&id1->game_name[0], &id2->game_name[0], 4)) { + return FALSE; + } + + if (!id1->company[0] || !id2->company[0] || strncmp(&id1->company[0], &id2->company[0], 2)) { + return FALSE; + } + + if (id1->disk_number != 0xff && id2->disk_number != 0xff && + id1->disk_number != id2->disk_number) { + return FALSE; + } + + if (id1->game_version != 0xff && id2->game_version != 0xff && + id1->game_version != id2->game_version) { + return FALSE; + } + + return TRUE; } -#pragma pop diff --git a/libs/dolphin/dvd/fstload.c b/libs/dolphin/dvd/fstload.c index 80795a70a15..d39425eae65 100644 --- a/libs/dolphin/dvd/fstload.c +++ b/libs/dolphin/dvd/fstload.c @@ -4,8 +4,10 @@ // #include "dolphin/dvd/fstload.h" +#include "MSL_C/MSL_Common/Src/string.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/dvd/dvd.h" +#include "dolphin/os/OS.h" // // Forward References: @@ -14,92 +16,79 @@ static void cb(); void __fstLoad(); -// -// External References: -// - -SECTION_INIT void memcpy(); -void OSReport(); -void OSGetArenaHi(); -void OSSetArenaHi(); -void DVDReadAbsAsyncForBS(); -void DVDReadDiskID(); -void DVDReset(); -void DVDGetDriveStatus(); - // // Declarations: // /* ############################################################################################## */ /* 804517D0-804517D4 000CD0 0004+00 1/1 0/0 0/0 .sbss status */ -static u8 status[4]; +static s32 status; /* 804517D4-804517D8 000CD4 0004+00 2/2 0/0 0/0 .sbss bb2 */ -static u8 bb2[4]; +static DVDBB2* bb2; /* 804517D8-804517E0 000CD8 0004+04 2/2 0/0 0/0 .sbss idTmp */ -static u8 idTmp[4 + 4 /* padding */]; +static DVDDiskID* idTmp; /* 8034BD2C-8034BE04 34666C 00D8+00 1/1 0/0 0/0 .text cb */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void cb() { - nofralloc -#include "asm/dolphin/dvd/fstload/cb.s" +static void cb(s32 result, DVDCommandBlock* block) { + if (result > 0) { + switch (status) { + case 0: + status = 1; + DVDReadAbsAsyncForBS(block, bb2, OSRoundUp32B(sizeof(bb2)), 0x420, cb); + break; + case 1: + status = 2; + DVDReadAbsAsyncForBS(block, bb2->FSTAddress, OSRoundUp32B(bb2->FSTLength), + bb2->FSTPosition, cb); + } + } else if (result == -1) { + } else if (result == -4) { + status = 0; + DVDReset(); + DVDReadDiskID(block, idTmp, cb); + } } -#pragma pop - -/* ############################################################################################## */ -/* 803D16F0-803D170C 02E810 001A+02 1/1 0/0 0/0 .data @38 */ -SECTION_DATA static char lit_38[] = " Game Name ... %c%c%c%c\n"; - -/* 803D170C-803D1724 02E82C 0016+02 0/1 0/0 0/0 .data @39 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_39[] = " Company ..... %c%c\n"; -#pragma pop - -/* 803D1724-803D1738 02E844 0014+00 0/1 0/0 0/0 .data @40 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_40[] = " Disk # ...... %d\n"; -#pragma pop - -/* 803D1738-803D174C 02E858 0014+00 0/1 0/0 0/0 .data @41 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_41[] = " Game ver .... %d\n"; -#pragma pop - -/* 803D174C-803D1760 02E86C 0014+00 0/1 0/0 0/0 .data @44 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_44[] = " Streaming ... %s\n"; -#pragma pop /* 8044C9B8-8044C9F8 0796D8 003F+01 1/1 0/0 0/0 .bss bb2Buf */ -static u8 bb2Buf[63 + 1 /* padding */]; +static u8 bb2Buf[OSRoundUp32B(sizeof(DVDBB2)) + 31]; /* 8044C9F8-8044CA28 079718 0030+00 1/1 0/0 0/0 .bss block$18 */ static u8 block[48]; -/* 80450A00-80450A04 000480 0002+02 1/1 0/0 0/0 .sdata @37 */ -SECTION_SDATA static char lit_37[] = "\n"; - -/* 80450A04-80450A08 000484 0004+00 1/1 0/0 0/0 .sdata @42 */ -SECTION_SDATA static char lit_42[] = "OFF"; - -/* 80450A08-80450A10 000488 0003+05 1/1 0/0 0/0 .sdata @43 */ -SECTION_SDATA static char lit_43[] = "ON"; - /* 8034BE04-8034BF6C 346744 0168+00 0/0 1/1 0/0 .text __fstLoad */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __fstLoad() { - nofralloc -#include "asm/dolphin/dvd/fstload/__fstLoad.s" +void __fstLoad(void) { + OSBootInfo* bootInfo; + DVDDiskID* id; + u8 idTmpBuf[sizeof(DVDDiskID) + 31]; + static DVDCommandBlock block; + void* arenaHi; + + arenaHi = OSGetArenaHi(); + bootInfo = (OSBootInfo*)OSPhysicalToCached(0); + + idTmp = (DVDDiskID*)(OSRoundUp32B(idTmpBuf)); + bb2 = (DVDBB2*)(OSRoundUp32B(bb2Buf)); + + DVDReset(); + DVDReadDiskID(&block, idTmp, cb); + while (DVDGetDriveStatus() != 0) + ; + + bootInfo->fst_location = bb2->FSTAddress; + bootInfo->fst_max_length = bb2->FSTMaxLength; + + id = &bootInfo->disk_info; + + memcpy(id, idTmp, sizeof(DVDDiskID)); + OSReport("\n"); + OSReport(" Game Name ... %c%c%c%c\n", id->game_name[0], id->game_name[1], id->game_name[2], + id->game_name[3]); + OSReport(" Company ..... %c%c\n", id->company[0], id->company[1]); + OSReport(" Disk # ...... %d\n", id->disk_number); + OSReport(" Game ver .... %d\n", id->game_version); + OSReport(" Streaming ... %s\n", (id->is_streaming == 0) ? "OFF" : "ON"); + OSReport("\n"); + OSSetArenaHi(bb2->FSTAddress); } -#pragma pop diff --git a/libs/exi/EXIBios.c b/libs/dolphin/exi/EXIBios.c similarity index 61% rename from libs/exi/EXIBios.c rename to libs/dolphin/exi/EXIBios.c index b857b70927b..a2534b240e9 100644 --- a/libs/exi/EXIBios.c +++ b/libs/dolphin/exi/EXIBios.c @@ -3,54 +3,31 @@ // Translation Unit: EXIBios // -#include "exi/EXIBios.h" +#include "dolphin/exi/EXIBios.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/os/OS.h" + +#define REG_MAX 5 +#define REG(chan, idx) (__EXIRegs[((chan)*REG_MAX) + (idx)]) + +#define EXI_0CR(tstart, dma, rw, tlen) \ + ((((u32)(tstart)) << 0) | (((u32)(dma)) << 1) | (((u32)(rw)) << 2) | (((u32)(tlen)) << 4)) // // Forward References: // -static void SetExiInterruptMask(); -void EXIImm(); -void EXIImmEx(); -void EXIDma(); -void EXISync(); -static void EXIClearInterrupts(); -void EXISetExiCallback(); -void __EXIProbe(); -void EXIProbe(); -void EXIProbeEx(); -void EXIAttach(); -void EXIDetach(); -void EXISelect(); -void EXIDeselect(); -static void EXIIntrruptHandler(); -static void TCIntrruptHandler(); -static void EXTIntrruptHandler(); -void EXIInit(); -void EXILock(); -void EXIUnlock(); -void EXIGetState(); -static void UnlockedHandler(); -void EXIGetID(); +static void SetExiInterruptMask(s32 chan, EXIControl* exi); +BOOL __EXIProbe(s32 chan); +static u32 EXIClearInterrupts(s32 chan, BOOL exi, BOOL tc, BOOL ext); +static void EXIIntrruptHandler(s16 interrupt, OSContext* context); +static void TCIntrruptHandler(s16 interrupt, OSContext* context); +static void EXTIntrruptHandler(s16 interrupt, OSContext* context); // // External References: // -void OSGetConsoleType(); -void __OSGetDIConfig(); -void OSRegisterVersion(); -void OSSetCurrentContext(); -void OSClearContext(); -void OSDisableInterrupts(); -void OSRestoreInterrupts(); -void __OSSetInterruptHandler(); -void __OSGetInterruptHandler(); -void __OSMaskInterrupts(); -void __OSUnmaskInterrupts(); -void OSGetTime(); void __OSEnableBarnacle(); void __div2i(); void memmove(); @@ -62,53 +39,176 @@ extern u8 __OSInIPL[4 + 4 /* padding */]; /* ############################################################################################## */ /* 8044C570-8044C630 079290 00C0+00 20/20 0/0 0/0 .bss Ecb */ -static u8 Ecb[192]; +static EXIControl Ecb[3]; /* 80342C0C-80342D00 33D54C 00F4+00 4/4 0/0 0/0 .text SetExiInterruptMask */ +#ifdef NONMATCHING +static void SetExiInterruptMask(s32 chan, EXIControl* exi) { + EXIControl* exi2; + + exi2 = &Ecb[2]; + switch (chan) { + case 0: + if ((exi->exiCallback == 0 && exi2->exiCallback == 0) || (exi->state & STATE_LOCKED)) { + __OSMaskInterrupts(OS_INTERRUPTMASK_EXI_0_EXI | OS_INTERRUPTMASK_EXI_2_EXI); + } else { + __OSUnmaskInterrupts(OS_INTERRUPTMASK_EXI_0_EXI | OS_INTERRUPTMASK_EXI_2_EXI); + } + break; + case 1: + if (exi->exiCallback == 0 || (exi->state & STATE_LOCKED)) { + __OSMaskInterrupts(OS_INTERRUPTMASK_EXI_1_EXI); + } else { + __OSUnmaskInterrupts(OS_INTERRUPTMASK_EXI_1_EXI); + } + break; + case 2: + if (__OSGetInterruptHandler(OS_INTR_PI_DEBUG) == 0 || (exi->state & STATE_LOCKED)) { + __OSMaskInterrupts(OS_INTERRUPTMASK_PI_DEBUG); + } else { + __OSUnmaskInterrupts(OS_INTERRUPTMASK_PI_DEBUG); + } + break; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void SetExiInterruptMask() { +static asm void SetExiInterruptMask(s32 chan, EXIControl* exi) { nofralloc #include "asm/exi/EXIBios/SetExiInterruptMask.s" } #pragma pop +#endif /* 80342D00-80342F5C 33D640 025C+00 2/2 9/9 0/0 .text EXIImm */ +#ifdef NONMATCHING +s32 EXIImm(s32 chan, void* buf, s32 len, u32 type, EXICallback callback) { + EXIControl* exi = &Ecb[chan]; + BOOL enabled; + + enabled = OSDisableInterrupts(); + if ((exi->state & EXI_STATE_BUSY) || !(exi->state & EXI_STATE_SELECTED)) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + exi->tcCallback = callback; + if (exi->tcCallback) { + EXIClearInterrupts(chan, FALSE, TRUE, FALSE); + __OSUnmaskInterrupts(OS_INTERRUPTMASK_EXI_0_TC >> (3 * chan)); + } + + exi->state |= EXI_STATE_IMM; + + if (type != EXI_READ) { + u32 data; + int i; + + data = 0; + for (i = 0; i < len; i++) { + data |= ((u8*)buf)[i] << ((3 - i) * 8); + } + REG(chan, 4) = data; + } + + exi->immBuf = buf; + exi->immLen = (type != EXI_WRITE) ? len : 0; + + REG(chan, 3) = EXI_0CR(1, 0, type, len - 1); + + OSRestoreInterrupts(enabled); + + return TRUE; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXIImm() { +asm s32 EXIImm(s32 chan, void* buf, s32 len, u32 type, EXICallback callback) { nofralloc #include "asm/exi/EXIBios/EXIImm.s" } #pragma pop +#endif /* 80342F5C-80342FFC 33D89C 00A0+00 0/0 7/7 0/0 .text EXIImmEx */ +// needs compiler lmw/lwz order patch +#ifdef NONMATCHING +s32 EXIImmEx(s32 chan, void* buf, s32 len, u32 mode) { + s32 xLen; + + while (len) { + xLen = (len < 4) ? len : 4; + if (!EXIImm(chan, buf, xLen, mode, NULL)) { + return FALSE; + } + + if (!EXISync(chan)) { + return FALSE; + } + + (u8*)buf += xLen; + len -= xLen; + } + return TRUE; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXIImmEx() { +asm s32 EXIImmEx(s32 chan, void* buf, s32 len, u32 mode) { nofralloc #include "asm/exi/EXIBios/EXIImmEx.s" } #pragma pop +#endif /* 80342FFC-803430E8 33D93C 00EC+00 0/0 4/4 0/0 .text EXIDma */ +#ifdef NONMATCHING +BOOL EXIDma(s32 chan, void* buf, s32 len, u32 type, EXICallback callback) { + EXIControl* exi = &Ecb[chan]; + BOOL enabled; + + enabled = OSDisableInterrupts(); + if ((exi->state & EXI_STATE_BUSY) || !(exi->state & EXI_STATE_SELECTED)) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + exi->tcCallback = callback; + if (exi->tcCallback) { + EXIClearInterrupts(chan, FALSE, TRUE, FALSE); + __OSUnmaskInterrupts(OS_INTERRUPTMASK_EXI_0_TC >> (3 * chan)); + } + + exi->state |= EXI_STATE_DMA; + + REG(chan, 1) = (u32)buf & 0x3ffffe0; + REG(chan, 2) = (u32)len; + REG(chan, 3) = EXI_0CR(1, 1, type, 0); + + OSRestoreInterrupts(enabled); + + return TRUE; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXIDma() { +asm BOOL EXIDma(s32 chan, void* buf, s32 len, u32 type, EXICallback callback) { nofralloc #include "asm/exi/EXIBios/EXIDma.s" } #pragma pop +#endif /* 803430E8-80343334 33DA28 024C+00 2/2 9/9 0/0 .text EXISync */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXISync() { +asm BOOL EXISync(s32 chan) { nofralloc #include "asm/exi/EXIBios/EXISync.s" } @@ -118,7 +218,7 @@ asm void EXISync() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void EXIClearInterrupts() { +static asm u32 EXIClearInterrupts(s32 chan, BOOL exi, BOOL tc, BOOL ext) { nofralloc #include "asm/exi/EXIBios/EXIClearInterrupts.s" } @@ -128,7 +228,7 @@ static asm void EXIClearInterrupts() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXISetExiCallback() { +asm EXICallback EXISetExiCallback(s32 chan, EXICallback exiCallback) { nofralloc #include "asm/exi/EXIBios/EXISetExiCallback.s" } @@ -138,7 +238,7 @@ asm void EXISetExiCallback() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __EXIProbe() { +asm BOOL __EXIProbe(s32 chan) { nofralloc #include "asm/exi/EXIBios/__EXIProbe.s" } @@ -148,7 +248,7 @@ asm void __EXIProbe() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXIProbe() { +asm BOOL EXIProbe(s32 chan) { nofralloc #include "asm/exi/EXIBios/EXIProbe.s" } @@ -158,7 +258,7 @@ asm void EXIProbe() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXIProbeEx() { +asm s32 EXIProbeEx(s32 chan) { nofralloc #include "asm/exi/EXIBios/EXIProbeEx.s" } @@ -168,7 +268,7 @@ asm void EXIProbeEx() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXIAttach() { +asm BOOL EXIAttach(s32 chan, EXICallback extCallback) { nofralloc #include "asm/exi/EXIBios/EXIAttach.s" } @@ -178,7 +278,7 @@ asm void EXIAttach() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXIDetach() { +asm BOOL EXIDetach(s32 chan) { nofralloc #include "asm/exi/EXIBios/EXIDetach.s" } @@ -188,7 +288,7 @@ asm void EXIDetach() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXISelect() { +asm BOOL EXISelect(s32 chan, u32 dev, u32 freq) { nofralloc #include "asm/exi/EXIBios/EXISelect.s" } @@ -198,7 +298,7 @@ asm void EXISelect() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXIDeselect() { +asm BOOL EXIDeselect(s32 chan) { nofralloc #include "asm/exi/EXIBios/EXIDeselect.s" } @@ -208,7 +308,7 @@ asm void EXIDeselect() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void EXIIntrruptHandler() { +static asm void EXIIntrruptHandler(s16 interrupt, OSContext* context) { nofralloc #include "asm/exi/EXIBios/EXIIntrruptHandler.s" } @@ -218,7 +318,7 @@ static asm void EXIIntrruptHandler() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void TCIntrruptHandler() { +static asm void TCIntrruptHandler(s16 interrupt, OSContext* context) { nofralloc #include "asm/exi/EXIBios/TCIntrruptHandler.s" } @@ -228,7 +328,7 @@ static asm void TCIntrruptHandler() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void EXTIntrruptHandler() { +static asm void EXTIntrruptHandler(s16 interrupt, OSContext* context) { nofralloc #include "asm/exi/EXIBios/EXTIntrruptHandler.s" } @@ -236,14 +336,11 @@ static asm void EXTIntrruptHandler() { /* ############################################################################################## */ /* 803D10A8-803D10F0 02E1C8 0045+03 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[] = "<< Dolphin SDK - EXI\trelease build: Apr 5 2004 04:14:14 (0x2301) >>"; +SECTION_DATA static char lit_1[] = + "<< Dolphin SDK - EXI\trelease build: Apr 5 2004 04:14:14 (0x2301) >>"; /* 804509C0-804509C8 -00001 0004+04 1/1 0/0 0/0 .sdata __EXIVersion */ -SECTION_SDATA static void* __EXIVersion[1 + 1 /* padding */] = { - (void*)&lit_1, - /* padding */ - NULL, -}; +SECTION_SDATA static const char* __EXIVersion = lit_1; /* 804516D8-804516E0 000BD8 0004+04 2/2 0/0 0/0 .sbss IDSerialPort1 */ static u8 IDSerialPort1[4 + 4 /* padding */]; @@ -252,7 +349,7 @@ static u8 IDSerialPort1[4 + 4 /* padding */]; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXIInit() { +asm void EXIInit(void) { nofralloc #include "asm/exi/EXIBios/EXIInit.s" } @@ -262,7 +359,7 @@ asm void EXIInit() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXILock() { +asm BOOL EXILock(s32 chan, u32 dev, EXICallback unlockedCallback) { nofralloc #include "asm/exi/EXIBios/EXILock.s" } @@ -272,7 +369,7 @@ asm void EXILock() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXIUnlock() { +asm BOOL EXIUnlock(s32 chan) { nofralloc #include "asm/exi/EXIBios/EXIUnlock.s" } @@ -282,7 +379,7 @@ asm void EXIUnlock() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXIGetState() { +asm u32 EXIGetState(s32 chan) { nofralloc #include "asm/exi/EXIBios/EXIGetState.s" } @@ -292,7 +389,7 @@ asm void EXIGetState() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void UnlockedHandler() { +static asm void UnlockedHandler(s32 chan, OSContext* context) { nofralloc #include "asm/exi/EXIBios/UnlockedHandler.s" } @@ -302,7 +399,7 @@ static asm void UnlockedHandler() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void EXIGetID() { +asm s32 EXIGetID(s32 chan, u32 dev, u32* id) { nofralloc #include "asm/exi/EXIBios/EXIGetID.s" } diff --git a/libs/exi/EXIUart.c b/libs/dolphin/exi/EXIUart.c similarity index 98% rename from libs/exi/EXIUart.c rename to libs/dolphin/exi/EXIUart.c index 16da2210a01..e030d9b9391 100644 --- a/libs/exi/EXIUart.c +++ b/libs/dolphin/exi/EXIUart.c @@ -3,7 +3,7 @@ // Translation Unit: EXIUart // -#include "exi/EXIUart.h" +#include "dolphin/exi/EXIUart.h" #include "dol2asm.h" #include "dolphin/types.h" diff --git a/libs/exi/Makefile b/libs/dolphin/exi/Makefile similarity index 51% rename from libs/exi/Makefile rename to libs/dolphin/exi/Makefile index f8ea01c4390..ebed15640c5 100644 --- a/libs/exi/Makefile +++ b/libs/dolphin/exi/Makefile @@ -3,14 +3,22 @@ # LIBEXI_A_CPP_FILES := \ - libs/exi/EXIBios.c \ - libs/exi/EXIUart.c \ + libs/dolphin/exi/EXIBios.c \ + libs/dolphin/exi/EXIUart.c \ LIBEXI_A_O_FILES := \ - $(BUILD_DIR)/libs/exi/EXIBios.o \ - $(BUILD_DIR)/libs/exi/EXIUart.o \ + $(BUILD_DIR)/libs/dolphin/exi/EXIBios.o \ + $(BUILD_DIR)/libs/dolphin/exi/EXIUart.o \ LIBEXI_A_CFLAGS := \ + -Cpp_exceptions off \ + -proc gekko \ + -fp hard \ + -nodefaults \ + -str reuse \ + -RTTI off \ + -maxerrors 5 \ + -enum int $(INCLUDES) \ -O4,p \ -lang=c \ @@ -25,9 +33,11 @@ $(BUILD_DIR)/libexi.a: $(LIBEXI_A_O_FILES) @echo $(LIBEXI_A_O_FILES) > build/LIBEXI_A_ofiles @$(LD) -xm l $(LIBEXI_A_LDFLAGS) -o $(BUILD_DIR)/libexi.a @build/LIBEXI_A_ofiles -$(BUILD_DIR)/libs/exi/%.o: libs/exi/%.c +$(BUILD_DIR)/libs/dolphin/exi/%.o: libs/dolphin/exi/%.c @mkdir -p $(@D) @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c - @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBEXI_A_CFLAGS) -c -o $@ $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(LIBEXI_A_CFLAGS) -c -o $@ $(basename $@).c + @echo Frank is fixing $@ + @$(PYTHON) $(FRANK) $@ $@ $@ diff --git a/libs/dolphin/gd/Makefile b/libs/dolphin/gd/Makefile index 630a6cf1060..83c2cfe71cc 100644 --- a/libs/dolphin/gd/Makefile +++ b/libs/dolphin/gd/Makefile @@ -11,6 +11,14 @@ LIBGD_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/gd/GDGeometry.o \ LIBGD_A_CFLAGS := \ + -Cpp_exceptions off \ + -proc gekko \ + -fp hard \ + -nodefaults \ + -str reuse \ + -RTTI off \ + -maxerrors 5 \ + -enum int $(INCLUDES) \ -O4,p \ -lang=c \ @@ -29,5 +37,7 @@ $(BUILD_DIR)/libs/dolphin/gd/%.o: libs/dolphin/gd/%.c @mkdir -p $(@D) @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c - @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBGD_A_CFLAGS) -c -o $@ $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(LIBGD_A_CFLAGS) -c -o $@ $(basename $@).c + @echo Frank is fixing $@ + @$(PYTHON) $(FRANK) $@ $@ $@ diff --git a/libs/dolphin/gx/Makefile b/libs/dolphin/gx/Makefile index 0f00f994e33..3278a71f3d0 100644 --- a/libs/dolphin/gx/Makefile +++ b/libs/dolphin/gx/Makefile @@ -54,4 +54,6 @@ $(BUILD_DIR)/libs/dolphin/gx/%.o: libs/dolphin/gx/%.c @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBGX_A_CFLAGS) -c -o $@ $(basename $@).c + @echo Frank is fixing $@ + @$(PYTHON) $(FRANK) $@ $@ $@ diff --git a/libs/dolphin/mtx/Makefile b/libs/dolphin/mtx/Makefile index 65c6ad64d1e..3262e3e80d0 100644 --- a/libs/dolphin/mtx/Makefile +++ b/libs/dolphin/mtx/Makefile @@ -36,4 +36,6 @@ $(BUILD_DIR)/libs/dolphin/mtx/%.o: libs/dolphin/mtx/%.c @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBMTX_A_CFLAGS) -c -o $@ $(basename $@).c + @echo Frank is fixing $@ + @$(PYTHON) $(FRANK) $@ $@ $@ diff --git a/libs/dolphin/os/Makefile b/libs/dolphin/os/Makefile index 916f20e5ba9..b757133808a 100644 --- a/libs/dolphin/os/Makefile +++ b/libs/dolphin/os/Makefile @@ -53,6 +53,14 @@ LIBOS_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/os/__ppc_eabi_init.o \ LIBOS_A_CFLAGS := \ + -Cpp_exceptions off \ + -proc gekko \ + -fp hard \ + -nodefaults \ + -str reuse \ + -RTTI off \ + -maxerrors 5 \ + -enum int $(INCLUDES) \ -O4,p \ -lang=c \ @@ -71,5 +79,7 @@ $(BUILD_DIR)/libs/dolphin/os/%.o: libs/dolphin/os/%.c @mkdir -p $(@D) @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c - @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBOS_A_CFLAGS) -c -o $@ $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(LIBOS_A_CFLAGS) -c -o $@ $(basename $@).c + @echo Frank is fixing $@ + @$(PYTHON) $(FRANK) $@ $@ $@ diff --git a/libs/dolphin/os/OS.c b/libs/dolphin/os/OS.c index ba545478b64..4d884b53f0d 100644 --- a/libs/dolphin/os/OS.c +++ b/libs/dolphin/os/OS.c @@ -5,7 +5,16 @@ #include "dolphin/os/OS.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/base/PPCArch.h" +#include "dolphin/db/db.h" +#include "dolphin/dvd/dvd.h" + +#define OS_CURRENTCONTEXT_PADDR 0x00C0 +#define OS_EXCEPTIONTABLE_ADDR 0x3000 +#define OS_DBJUMPPOINT_ADDR 0x60 +#define OS_BI2_DEBUG_ADDRESS 0x800000F4 +#define OS_DEBUG_ADDRESS_2 0x800030E9 +#define DEBUGFLAG_ADDR 0x800030E8 // // External References: @@ -19,7 +28,6 @@ void PPCMtpmc1(); void PPCMtpmc2(); void PPCMtpmc3(); void PPCMtpmc4(); -void PPCMfhid2(); void PPCMthid2(); void PPCDisableSpeculation(); void PPCSetFpNonIEEEMode(); @@ -36,13 +44,10 @@ void __OSInitSystemCall(); void __OSThreadInit(); void EXIInit(); void SIInit(); -void __DBIsExceptionMarked(); -void DBPrintf(); -void DVDInit(); -void DVDInquiryAsync(); +BOOL __DBIsExceptionMarked(__OSException); void EnableMetroTRKInterrupts(); -extern u8 __DVDLongFileNameFlag[4]; -extern u8 __PADSpec[4 + 4 /* padding */]; +extern u32 __DVDLongFileNameFlag; +extern u32 __PADSpec; void _epilog(); void regist__9daBgObj_cFP4dBgW(); @@ -61,7 +66,6 @@ static volatile u32* BI2DebugFlag; static u32* BI2DebugFlagHolder; /* 80451630-80451634 000B30 0004+00 1/1 1/1 0/0 .sbss __OSStartTime */ -extern OSTime __OSStartTime; OSTime __OSStartTime; /* 80451628-80451630 000B28 0004+04 1/1 1/1 0/0 .sbss __OSInIPL */ @@ -178,7 +182,7 @@ skip_ps_init: /* 80339EFC-80339F24 33483C 0028+00 0/0 5/5 0/0 .text OSGetConsoleType */ u32 OSGetConsoleType(void) { if (BootInfo == NULL || BootInfo->console_type == 0) { - return 0x10000002; // default console type + return OS_CONSOLE_ARTHUR; } return BootInfo->console_type; @@ -188,6 +192,38 @@ u32 OSGetConsoleType(void) { /* 8044BA60-8044BA80 078780 0020+00 2/2 0/0 0/0 .bss DriveInfo */ static DVDDriveInfo DriveInfo; +void* __OSSavedRegionStart; +void* __OSSavedRegionEnd; + +extern u32 BOOT_REGION_START : 0x812FDFF0; //(*(u32 *)0x812fdff0) +extern u32 BOOT_REGION_END : 0x812FDFEC; //(*(u32 *)0x812fdfec) + +inline void ClearArena(void) { + if ((u32)(OSGetResetCode() + 0x80000000) != 0U) { + __OSSavedRegionStart = 0U; + __OSSavedRegionEnd = 0U; + memset(OSGetArenaLo(), 0U, (u32)OSGetArenaHi() - (u32)OSGetArenaLo()); + return; + } + __OSSavedRegionStart = (void*)BOOT_REGION_START; + __OSSavedRegionEnd = (void*)BOOT_REGION_END; + if (BOOT_REGION_START == 0U) { + memset(OSGetArenaLo(), 0U, (u32)OSGetArenaHi() - (u32)OSGetArenaLo()); + return; + } + + if ((u32)OSGetArenaLo() < (u32)__OSSavedRegionStart) { + if ((u32)OSGetArenaHi() <= (u32)__OSSavedRegionStart) { + memset((u32)OSGetArenaLo(), 0U, (u32)OSGetArenaHi() - (u32)OSGetArenaLo()); + return; + } + memset(OSGetArenaLo(), 0U, (u32)__OSSavedRegionStart - (u32)OSGetArenaLo()); + if ((u32)OSGetArenaHi() > (u32)__OSSavedRegionEnd) { + memset((u32)__OSSavedRegionEnd, 0, (u32)OSGetArenaHi() - (u32)__OSSavedRegionEnd); + } + } +} + /* 80339F24-80339F60 334864 003C+00 1/1 0/0 0/0 .text InquiryCallback */ static void InquiryCallback(u32 result, DVDCommandBlock* block) { switch (block->state) { @@ -290,8 +326,8 @@ static u8 DriveBlock[48]; #pragma pop /* 8044BAB0-8044BAD0 0787D0 001C+04 0/1 1/1 0/0 .bss __OSRebootParams */ -extern u8 __OSRebootParams[28 + 4 /* padding */]; -u8 __OSRebootParams[28 + 4 /* padding */]; +extern OSExecParams __OSRebootParams; +OSExecParams __OSRebootParams; /* 80450980-80450984 -00001 0004+00 1/1 0/0 0/0 .sdata __OSVersion */ SECTION_SDATA static void* __OSVersion = (void*)&lit_1; @@ -301,8 +337,180 @@ SECTION_SDATA static char lit_116[6] = "%08x\n"; extern void* __ArenaHi; extern void* _stack_end; +extern char _db_stack_end[]; /* 80339F60-8033A440 3348A0 04E0+00 0/0 2/2 0/0 .text OSInit */ +#ifdef NONMATCHING +void OSInit(void) { + /* + Initializes the Dolphin operating system. + - most of the main operations get farmed out to other functions + - loading debug info and setting up heap bounds largely happen here + - a lot of OS reporting also gets controlled here + */ + // pretty sure this is the min(/max) amount of pointers etc for the stack to match + BI2Debug* DebugInfo; + void* debugArenaLo; + u32 inputConsoleType; + u32 tdev; + + // check if we've already done all this or not + if ((BOOL)AreWeInitialized == FALSE) { // fantastic name + AreWeInitialized = TRUE; // flag to make sure we don't have to do this again + + // SYSTEM // + __OSStartTime = __OSGetSystemTime(); + OSDisableInterrupts(); + + __OSGetExecParams(&__OSRebootParams); + PPCMtmmcr0(0); + PPCMtmmcr1(0); + PPCMtpmc1(0); + PPCMtpmc2(0); + PPCMtpmc3(0); + PPCMtpmc4(0); + + // set some PPC things + PPCDisableSpeculation(); + PPCSetFpNonIEEEMode(); + + // DEBUG // + // load some DVD stuff + BI2DebugFlag = 0; // debug flag from the DVD BI2 header + BootInfo = (OSBootInfo*)OS_BASE_CACHED; // set pointer to BootInfo + + __DVDLongFileNameFlag = + (u32)0; // flag to tell us whether we make it through the debug loading + + // time to grab a bunch of debug info from the DVD + // the address for where the BI2 debug info is, is stored at OS_BI2_DEBUG_ADDRESS + DebugInfo = (BI2Debug*)*((u32*)OS_BI2_DEBUG_ADDRESS); + + // if the debug info address exists, grab some debug info + if (DebugInfo != NULL) { + BI2DebugFlag = &DebugInfo->debugFlag; // debug flag from DVD BI2 + __PADSpec = (u32)DebugInfo->padSpec; // some other info from DVD BI2 + *((u8*)DEBUGFLAG_ADDR) = (u8)*BI2DebugFlag; // store flag in mem + *((u8*)OS_DEBUG_ADDRESS_2) = (u8)__PADSpec; // store other info in mem + } else if (BootInfo->arena_hi) { // if the top of the heap is already set + BI2DebugFlagHolder = + (u32*)*((u8*)DEBUGFLAG_ADDR); // grab whatever's stored at 0x800030E8 + BI2DebugFlag = (u32*)&BI2DebugFlagHolder; // flag is then address of flag holder + __PADSpec = (u32) * ((u8*)OS_DEBUG_ADDRESS_2); // pad spec is whatever's at 0x800030E9 + } + + __DVDLongFileNameFlag = 1; // we made it through debug! + + // HEAP // + // set up bottom of heap (ArenaLo) + // grab address from BootInfo if it exists, otherwise use default __ArenaLo + OSSetArenaLo((BootInfo->arena_lo == NULL) ? /* __ArenaLo */ 0 : BootInfo->arena_lo); + + // if the input arenaLo is null, and debug flag location exists (and flag is < 2), + // set arenaLo to just past the end of the db stack + if ((BootInfo->arena_lo == NULL) && (BI2DebugFlag != 0) && (*BI2DebugFlag < 2)) { + debugArenaLo = (char*)(((u32)_db_stack_end + 0x1f) & ~0x1f); + OSSetArenaLo(debugArenaLo); + } + + // set up top of heap (ArenaHi) + // grab address from BootInfo if it exists, otherwise use default __ArenaHi + OSSetArenaHi((BootInfo->arena_hi == NULL) ? /* __ArenaHi */ 0 : BootInfo->arena_hi); + + // OS INIT AND REPORT // + // initialise a whole bunch of OS stuff + OSExceptionInit(); + __OSInitSystemCall(); + OSInitAlarm(); + __OSModuleInit(); + __OSInterruptInit(); + __OSSetInterruptHandler(OS_INTR_PI_RSW, (void*)__OSResetSWInterruptHandler); + __OSContextInit(); + __OSCacheInit(); + EXIInit(); + SIInit(); + __OSInitSram(); + __OSThreadInit(); + __OSInitAudioSystem(); + PPCMthid2(PPCMfhid2() & 0xBFFFFFFF); + if ((BOOL)__OSInIPL == FALSE) { + __OSInitMemoryProtection(); + } + + // begin OS reporting + OSReport("\nDolphin OS\n"); + OSReport("Kernel built : %s %s\n", "Nov 10 2004", "06:26:41"); + OSReport("Console Type : "); + + // this is a function in the same file, but it doesn't seem to match + // inputConsoleType = OSGetConsoleType(); + + // inputConsoleType = (BootInfo == NULL || (inputConsoleType = BootInfo->consoleType) == 0) + // ? 0x10000002 : BootInfo->consoleType; + if (BootInfo == NULL || (inputConsoleType = BootInfo->console_type) == 0) { + inputConsoleType = OS_CONSOLE_ARTHUR; // default console type + } else { + inputConsoleType = BootInfo->console_type; + } + + // work out what console type this corresponds to and report it + // consoleTypeSwitchHi = inputConsoleType & 0xF0000000; + switch (inputConsoleType & 0xffff0000) { // check "first" byte + case OS_CONSOLE_RETAIL: + OSReport("Retail %d\n", inputConsoleType); + break; + default: + switch (inputConsoleType & 0x0000ffff) { // if "first" byte is 2, check "the rest" + case OS_CONSOLE_EMULATOR: + OSReport("Mac Emulator\n"); + break; + case OS_CONSOLE_PC_EMULATOR: + OSReport("PC Emulator\n"); + break; + case OS_CONSOLE_ARTHUR: + OSReport("EPPC Arthur\n"); + break; + case OS_CONSOLE_MINNOW: + OSReport("EPPC Minnow\n"); + break; + default: + tdev = ((u32)inputConsoleType & 0x0000ffff); + OSReport("Development HW%d (%08x)\n", tdev - 3, inputConsoleType); + break; + } + break; + } + + // report memory size + OSReport("Memory %d MB\n", (u32)BootInfo->memory_size >> 0x14U); + // report heap bounds + OSReport("Arena : 0x%x - 0x%x\n", OSGetArenaLo(), OSGetArenaHi()); + // report OS version + OSRegisterVersion(__OSVersion); + + // if location of debug flag exists, and flag is >= 2, enable MetroTRKInterrupts + if (BI2DebugFlag && ((*BI2DebugFlag) >= 2)) { + EnableMetroTRKInterrupts(); + } + + // free up memory and re-enable things + ClearArena(); + OSEnableInterrupts(); + + // check if we can load OS from IPL; if not, grab it from DVD (?) + if ((BOOL)__OSInIPL == FALSE) { + DVDInit(); + if ((BOOL)__OSIsGcam) { + __OSDeviceCode = 0x9000; + return; + } + DCInvalidateRange(&DriveInfo, sizeof(DriveInfo)); + DVDInquiryAsync((DVDCommandBlock*)&DriveBlock, &DriveInfo, + (DVDCBCallback)InquiryCallback); + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -311,11 +519,10 @@ asm void OSInit(void) { #include "asm/dolphin/os/OS/OSInit.s" } #pragma pop +#endif /* ############################################################################################## */ /* 803CF3AC-803CF3E8 02C4CC 003C+00 0/1 0/0 0/0 .data __OSExceptionLocations */ -#pragma push -#pragma force_active on SECTION_DATA static u32 __OSExceptionLocations[] = { 0x00000100, // 0 System reset 0x00000200, // 1 Machine check @@ -333,47 +540,103 @@ SECTION_DATA static u32 __OSExceptionLocations[] = { 0x00001400, // 13 System management interrupt 0x00001700 // 14 Thermal interrupt }; -#pragma pop -/* 803CF3E8-803CF404 02C508 001B+01 0/1 0/0 0/0 .data @152 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_152[27] = "Installing OSDBIntegrator\n"; -#pragma pop +// dummy entry points to the OS Exception vector +void __OSEVStart(void); +void __OSDBINTSTART(void); +void __OSDBINTEND(void); +void __OSDBJUMPSTART(void); +void __OSDBJUMPEND(void); -/* 803CF404-803CF434 02C524 002E+02 0/1 0/0 0/0 .data @153 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_153[46] = ">>> OSINIT: exception %d commandeered by TRK\n"; -#pragma pop - -/* 803CF434-803CF464 02C554 002F+01 0/1 0/0 0/0 .data @154 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_154[47] = ">>> OSINIT: exception %d vectored to debugger\n"; -#pragma pop - -/* 803CF464-803CF480 02C584 001B+01 0/1 0/0 0/0 .data @155 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_155[27] = "Exceptions initialized...\n"; -#pragma pop +#define NOP 0x60000000 /* 8033A440-8033A6C0 334D80 0280+00 1/1 0/0 0/0 .text OSExceptionInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void OSExceptionInit(void) { - nofralloc -#include "asm/dolphin/os/OS/OSExceptionInit.s" +static void OSExceptionInit(void) { + __OSException exception; + void* destAddr; + + // These two vars help us change the exception number embedded + // in the exception handler code. + u32* opCodeAddr; + u32 oldOpCode; + + // Address range of the actual code to be copied. + u8* handlerStart; + u32 handlerSize; + + // Install the first level exception vector. + opCodeAddr = (u32*)__OSEVSetNumber; + oldOpCode = *opCodeAddr; + handlerStart = (u8*)__OSEVStart; + handlerSize = (u32)((u8*)__OSEVEnd - (u8*)__OSEVStart); + + // Install the DB integrator, only if we are the first OSInit to be run + destAddr = (void*)OSPhysicalToCached(OS_DBJUMPPOINT_ADDR); + if (*(u32*)destAddr == 0) // Lomem should be zero cleared only once by BS2 + { + DBPrintf("Installing OSDBIntegrator\n"); + memcpy(destAddr, (void*)__OSDBINTSTART, (u32)__OSDBINTEND - (u32)__OSDBINTSTART); + DCFlushRangeNoSync(destAddr, (u32)__OSDBINTEND - (u32)__OSDBINTSTART); + __sync(); + ICInvalidateRange(destAddr, (u32)__OSDBINTEND - (u32)__OSDBINTSTART); + } + + // Copy the right vector into the table + for (exception = 0; exception < 15; exception++) { + if (BI2DebugFlag && (*BI2DebugFlag >= 2) && __DBIsExceptionMarked(exception)) { + // this DBPrintf is suspicious. + DBPrintf(">>> OSINIT: exception %d commandeered by TRK\n", exception); + continue; + } + + // Modify the copy of code in text before transferring + // to the exception table. + *opCodeAddr = oldOpCode | exception; + + // Modify opcodes at __DBVECTOR if necessary + if (__DBIsExceptionMarked(exception)) { + DBPrintf(">>> OSINIT: exception %d vectored to debugger\n", exception); + memcpy((void*)__DBVECTOR, (void*)__OSDBJUMPSTART, + (u32)__OSDBJUMPEND - (u32)__OSDBJUMPSTART); + } else { + // make sure the opcodes are still nop + u32* ops = (u32*)__DBVECTOR; + int cb; + + for (cb = 0; cb < (u32)__OSDBJUMPEND - (u32)__OSDBJUMPSTART; cb += sizeof(u32)) { + *ops++ = NOP; + } + } + + // Install the modified handler. + destAddr = (void*)OSPhysicalToCached(__OSExceptionLocations[(u32)exception]); + memcpy(destAddr, handlerStart, handlerSize); + DCFlushRangeNoSync(destAddr, handlerSize); + __sync(); + ICInvalidateRange(destAddr, handlerSize); + } + + // initialize pointer to exception table + OSExceptionTable = OSPhysicalToCached(OS_EXCEPTIONTABLE_ADDR); + + // install default exception handlers + for (exception = 0; exception < 15; exception++) { + __OSSetExceptionHandler(exception, OSDefaultExceptionHandler); + } + + // restore the old opcode, so that we can re-start an application without + // downloading the text segments + *opCodeAddr = oldOpCode; + + DBPrintf("Exceptions initialized...\n"); } -#pragma pop /* 8033A6C0-8033A6E4 335000 0024+00 1/1 0/0 0/0 .text __OSDBIntegrator */ asm void __OSDBIntegrator(void) { // clang-format off nofralloc +entry __OSDBINTSTART li r5, 0x40 mflr r3 stw r3, 0xc(r5) @@ -383,6 +646,7 @@ asm void __OSDBIntegrator(void) { li r3, 0x30 mtmsr r3 blr +entry __OSDBINTEND // clang-format on } @@ -391,7 +655,9 @@ asm void __OSDBJump(void){ // clang-format off nofralloc +entry __OSDBJUMPSTART bla 0x60 +entry __OSDBJUMPEND // clang-format on } @@ -412,57 +678,80 @@ static asm void OSExceptionVector(void) { // clang-format off nofralloc - mtspr 0x110, r4 +entry __OSEVStart + // Save r4 into SPRG0 + mtsprg 0, r4 - lwz r4, 0xc0(r0) + // Load current context physical address into r4 + lwz r4, OS_CURRENTCONTEXT_PADDR - stw r3, 0xc(r4) - mfspr r3, 0x110 - stw r3, 0x10(r4) - stw r5, 0x14(r4) + // Save r3 - r5 into the current context + stw r3, OS_CONTEXT_R3(r4) + mfsprg r3, 0 + stw r3, OS_CONTEXT_R4(r4) + stw r5, OS_CONTEXT_R5(r4) - lhz r3, 0x1a2(r4) - ori r3, r3, 2 - sth r3, 0x1a2(r4) + lhz r3, OS_CONTEXT_STATE(r4) + ori r3, r3, OS_CONTEXT_STATE_EXC + sth r3, OS_CONTEXT_STATE(r4) + // Save misc registers mfcr r3 - stw r3, 0x80(r4) + stw r3, OS_CONTEXT_CR(r4) mflr r3 - stw r3, 0x84(r4) + stw r3, OS_CONTEXT_LR(r4) mfctr r3 - stw r3, 0x88(r4) + stw r3, OS_CONTEXT_CTR(r4) mfxer r3 - stw r3, 0x8c(r4) - mfspr r3, 0x1a - stw r3, 0x198(r4) - mfspr r3, 0x1b - stw r3, 0x19c(r4) + stw r3, OS_CONTEXT_XER(r4) + mfsrr0 r3 + stw r3, OS_CONTEXT_SRR0(r4) + mfsrr1 r3 + stw r3, OS_CONTEXT_SRR1(r4) mr r5, r3 entry __DBVECTOR nop + // Set SRR1[IR|DR] to turn on address + // translation at the next RFI mfmsr r3 ori r3, r3, 0x30 - mtspr 0x1b, r3 + mtsrr1 r3 + // This lets us change the exception number based on the + // exception we're installing. entry __OSEVSetNumber li r3, 0 + // Load current context virtual address into r4 lwz r4, 0xd4(r0) - rlwinm. r5, r5, 0, 0x1e, 0x1e + // Check non-recoverable interrupt + rlwinm. r5, r5, 0, MSR_RI_BIT, MSR_RI_BIT bne recoverable lis r5, OSDefaultExceptionHandler@ha addi r5, r5, OSDefaultExceptionHandler@l - mtspr 0x1a, r5 + mtsrr0 r5 rfi + // NOT REACHED HERE recoverable: - rlwinm r5, r3, 2, 0x16, 0x1d - lwz r5, 0x3000(r5) - mtspr 0x1a, r5 + // Locate exception handler. + rlwinm r5, r3, 2, 0x16, 0x1d // r5 contains exception*4 + lwz r5, OS_EXCEPTIONTABLE_ADDR(r5) + mtsrr0 r5 + + // Final state + // r3 - exception number + // r4 - pointer to context + // r5 - garbage + // srr0 - exception handler + // srr1 - address translation enabled, not yet recoverable + rfi + // NOT REACHED HERE + // The handler will restore state entry __OSEVEnd nop @@ -503,7 +792,7 @@ static asm void OSDefaultExceptionHandler(register __OSException exception, } /* 8033A80C-8033A860 33514C 0054+00 0/0 1/1 0/0 .text __OSPSInit */ -asm void __OSPSInit(void) { +asm void __OSPSInit(void){ // clang-format off nofralloc @@ -533,26 +822,16 @@ asm void __OSPSInit(void) { // clang-format on } -/* 8033A860-8033A874 3351A0 0014+00 0/0 1/1 0/0 .text __OSGetDIConfig */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSGetDIConfig(void) { - nofralloc -#include "asm/dolphin/os/OS/__OSGetDIConfig.s" -} -#pragma pop +vu32 __DIRegs[16] : 0xCC006000; +#define DI_CONFIG_IDX 0x9 +#define DI_CONFIG_CONFIG_MASK 0xFF -/* ############################################################################################## */ -/* 8045098C-80450990 00040C 0004+00 1/1 0/0 0/0 .sdata @163 */ -SECTION_SDATA static char lit_163[4] = "%s\n"; +/* 8033A860-8033A874 3351A0 0014+00 0/0 1/1 0/0 .text __OSGetDIConfig */ +u32 __OSGetDIConfig(void) { + return (__DIRegs[DI_CONFIG_IDX] & DI_CONFIG_CONFIG_MASK); +} /* 8033A874-8033A8A0 3351B4 002C+00 1/1 11/11 0/0 .text OSRegisterVersion */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSRegisterVersion(char* version) { - nofralloc -#include "asm/dolphin/os/OS/OSRegisterVersion.s" +void OSRegisterVersion(char* version) { + OSReport("%s\n", version); } -#pragma pop diff --git a/libs/dolphin/os/OSAlarm.c b/libs/dolphin/os/OSAlarm.c index 3ae3df79fbc..5a43e591644 100644 --- a/libs/dolphin/os/OSAlarm.c +++ b/libs/dolphin/os/OSAlarm.c @@ -5,25 +5,16 @@ #include "dolphin/os/OSAlarm.h" #include "dol2asm.h" +#include "dolphin/base/PPCArch.h" +#include "dolphin/os/OS.h" #include "dolphin/os/OSReset.h" -#include "dolphin/types.h" + +static s32 OnReset(s32 param_0); // // External References: // -void PPCMtdec(); -void __OSSetExceptionHandler(); -void __OSGetExceptionHandler(); -void OSSetCurrentContext(); -void OSLoadContext(); -void OSClearContext(); -void OSDisableInterrupts(); -void OSRestoreInterrupts(); -void OSRegisterResetFunction(); -void OSDisableScheduler(); -void OSEnableScheduler(); -void __OSReschedule(); void __DVDTestAlarm(); void __div2i(); @@ -41,17 +32,16 @@ static OSResetFunctionInfo ResetFunctionInfo = { }; /* 80451638-80451640 000B38 0008+00 5/5 0/0 0/0 .sbss AlarmQueue */ -static u8 AlarmQueue[8]; +static OSAlarmQueue AlarmQueue; /* 8033A8A0-8033A8F8 3351E0 0058+00 0/0 3/3 0/0 .text OSInitAlarm */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSInitAlarm(void) { - nofralloc -#include "asm/dolphin/os/OSAlarm/OSInitAlarm.s" +void OSInitAlarm(void) { + if (__OSGetExceptionHandler(8) != DecrementerExceptionHandler) { + AlarmQueue.head = AlarmQueue.tail = NULL; + __OSSetExceptionHandler(8, DecrementerExceptionHandler); + OSRegisterResetFunction(&ResetFunctionInfo); + } } -#pragma pop /* 8033A8F8-8033A908 335238 0010+00 0/0 17/17 0/0 .text OSCreateAlarm */ void OSCreateAlarm(OSAlarm* alarm) { @@ -59,55 +49,164 @@ void OSCreateAlarm(OSAlarm* alarm) { alarm->tag = 0; } -/* 8033A908-8033AB58 335248 0250+00 3/3 0/0 0/0 .text InsertAlarm */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void InsertAlarm(OSAlarm* alarm, s64 time, OSAlarmHandler* handler) { - nofralloc -#include "asm/dolphin/os/OSAlarm/InsertAlarm.s" +static inline SetTimer(OSAlarm* alarm) { + OSTime delta; + + delta = alarm->fire_time - __OSGetSystemTime(); + if (delta < 0) { + PPCMtdec(0); + } else if (delta < 0x80000000) { + PPCMtdec((u32)delta); + } else { + PPCMtdec(0x7fffffff); + } +} + +/* 8033A908-8033AB58 335248 0250+00 3/3 0/0 0/0 .text InsertAlarm */ +static void InsertAlarm(OSAlarm* alarm, OSTime fire, OSAlarmHandler handler) { + OSAlarm* next; + OSAlarm* prev; + + if (0 < alarm->period_time) { + OSTime time = __OSGetSystemTime(); + + fire = alarm->start_time; + if (alarm->start_time < time) { + fire += alarm->period_time * ((time - alarm->start_time) / alarm->period_time + 1); + } + } + + alarm->handler = handler; + alarm->fire_time = fire; + + for (next = AlarmQueue.head; next; next = next->link.next) { + if (next->fire_time <= fire) { + continue; + } + + alarm->link.prev = next->link.prev; + next->link.prev = alarm; + alarm->link.next = next; + prev = alarm->link.prev; + if (prev) { + prev->link.next = alarm; + } else { + AlarmQueue.head = alarm; + SetTimer(alarm); + } + return; + } + + alarm->link.next = 0; + prev = AlarmQueue.tail; + AlarmQueue.tail = alarm; + alarm->link.prev = prev; + + if (prev) { + prev->link.next = alarm; + } else { + AlarmQueue.head = AlarmQueue.tail = alarm; + SetTimer(alarm); + } } -#pragma pop /* 8033AB58-8033ABC0 335498 0068+00 0/0 18/18 0/0 .text OSSetAlarm */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSSetAlarm(OSAlarm* alarm, s64 time, OSAlarmHandler* handler) { - nofralloc -#include "asm/dolphin/os/OSAlarm/OSSetAlarm.s" +void OSSetAlarm(OSAlarm* alarm, OSTime tick, OSAlarmHandler handler) { + BOOL enabled; + enabled = OSDisableInterrupts(); + alarm->period_time = 0; + InsertAlarm(alarm, __OSGetSystemTime() + tick, handler); + OSRestoreInterrupts(enabled); } -#pragma pop /* 8033ABC0-8033AC3C 335500 007C+00 0/0 1/1 0/0 .text OSSetPeriodicAlarm */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSSetPeriodicAlarm(OSAlarm* alarm, s64 start, s64 period, OSAlarmHandler* handler) { - nofralloc -#include "asm/dolphin/os/OSAlarm/OSSetPeriodicAlarm.s" +void OSSetPeriodicAlarm(OSAlarm* alarm, OSTime start, OSTime period, OSAlarmHandler handler) { + BOOL enabled; + enabled = OSDisableInterrupts(); + alarm->period_time = period; + alarm->start_time = __OSTimeToSystemTime(start); + InsertAlarm(alarm, 0, handler); + OSRestoreInterrupts(enabled); } -#pragma pop /* 8033AC3C-8033AD58 33557C 011C+00 1/1 11/11 0/0 .text OSCancelAlarm */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSCancelAlarm(OSAlarm* alarm) { - nofralloc -#include "asm/dolphin/os/OSAlarm/OSCancelAlarm.s" +void OSCancelAlarm(OSAlarm* alarm) { + OSAlarm* next; + BOOL enabled; + + enabled = OSDisableInterrupts(); + + if (alarm->handler == 0) { + OSRestoreInterrupts(enabled); + return; + } + + next = alarm->link.next; + if (next == 0) { + AlarmQueue.tail = alarm->link.prev; + } else { + next->link.prev = alarm->link.prev; + } + if (alarm->link.prev) { + alarm->link.prev->link.next = next; + } else { + AlarmQueue.head = next; + if (next) { + SetTimer(next); + } + } + alarm->handler = 0; + + OSRestoreInterrupts(enabled); } -#pragma pop /* 8033AD58-8033AF88 335698 0230+00 1/1 0/0 0/0 .text DecrementerExceptionCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void DecrementerExceptionCallback(__OSException exception, OSContext* context) { - nofralloc -#include "asm/dolphin/os/OSAlarm/DecrementerExceptionCallback.s" +static void DecrementerExceptionCallback(register __OSException exception, + register OSContext* context) { + OSAlarm* alarm; + OSAlarm* next; + OSAlarmHandler handler; + OSTime time; + OSContext exceptionContext; + time = __OSGetSystemTime(); + alarm = AlarmQueue.head; + if (alarm == 0) { + OSLoadContext(context); + } + + if (time < alarm->fire_time) { + SetTimer(alarm); + OSLoadContext(context); + } + + next = alarm->link.next; + AlarmQueue.head = next; + if (next == 0) { + AlarmQueue.tail = 0; + } else { + next->link.prev = 0; + } + + handler = alarm->handler; + alarm->handler = 0; + if (0 < alarm->period_time) { + InsertAlarm(alarm, 0, handler); + } + + if (AlarmQueue.head) { + SetTimer(AlarmQueue.head); + } + + OSDisableScheduler(); + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + handler(alarm, context); + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); + OSEnableScheduler(); + __OSReschedule(); + OSLoadContext(context); } -#pragma pop /* 8033AF88-8033AFD8 3358C8 0050+00 1/1 0/0 0/0 .text DecrementerExceptionHandler */ static asm void DecrementerExceptionHandler(register __OSException exception, diff --git a/libs/dolphin/os/OSAudioSystem.c b/libs/dolphin/os/OSAudioSystem.c index 2e851bb3cfd..e431a1327a9 100644 --- a/libs/dolphin/os/OSAudioSystem.c +++ b/libs/dolphin/os/OSAudioSystem.c @@ -5,16 +5,14 @@ #include "dolphin/os/OSAudioSystem.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/os/OS.h" // // External References: // SECTION_INIT void memcpy(); -void OSGetArenaHi(); -void DCFlushRange(); -void OSGetTick(); // // Declarations: @@ -33,22 +31,95 @@ static u8 DSPInitCode[128] = { 0x02, 0xFF, 0x02, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; +#define __DSPWorkBuffer (void*)0x81000000 + /* 8033B2D8-8033B494 335C18 01BC+00 0/0 1/1 0/0 .text __OSInitAudioSystem */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSInitAudioSystem(void) { - nofralloc -#include "asm/dolphin/os/OSAudioSystem/__OSInitAudioSystem.s" +void __OSInitAudioSystem(void) { + u32 r28; + u16 r3; + + u32 padding; + + memcpy((void*)((u8*)OSGetArenaHi() - 128), __DSPWorkBuffer, 128); + memcpy(__DSPWorkBuffer, (void*)DSPInitCode, 128); + + DCFlushRange(__DSPWorkBuffer, 128); + + __DSPRegs[9] = 0x43; + __DSPRegs[5] = 0x8AC; + __DSPRegs[5] |= 1; + while (__DSPRegs[5] & 1) + ; + __DSPRegs[0] = 0; + while (((__DSPRegs[2] << 16) | __DSPRegs[3]) & 0x80000000) + ; + *(u32*)&__DSPRegs[16] = 0x1000000; + *(u32*)&__DSPRegs[18] = 0; + *(u32*)&__DSPRegs[20] = 0x20; + + r3 = __DSPRegs[5]; + while (!(r3 & 0x20)) + r3 = __DSPRegs[5]; + __DSPRegs[5] = r3; + + r28 = OSGetTick(); + while ((s32)(OSGetTick() - r28) < 0x892) + ; + + *(u32*)&__DSPRegs[16] = 0x1000000; + *(u32*)&__DSPRegs[18] = 0; + *(u32*)&__DSPRegs[20] = 0x20; + + r3 = __DSPRegs[5]; + while (!(r3 & 0x20)) + r3 = __DSPRegs[5]; + __DSPRegs[5] = r3; + + __DSPRegs[5] &= ~0x800; + while ((__DSPRegs[5]) & 0x400) + ; + __DSPRegs[5] &= ~4; + + r3 = __DSPRegs[2]; + + while (!(r3 & 0x8000)) + r3 = __DSPRegs[2]; + + (void)__DSPRegs[3]; + r3 != 42069; + __DSPRegs[5] |= 4; + __DSPRegs[5] = 0x8AC; + __DSPRegs[5] |= 1; + while (__DSPRegs[5] & 1) + ; + memcpy(__DSPWorkBuffer, (void*)((u8*)OSGetArenaHi() - 128), 128); } -#pragma pop /* 8033B494-8033B56C 335DD4 00D8+00 0/0 1/1 0/0 .text __OSStopAudioSystem */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSStopAudioSystem(void) { - nofralloc -#include "asm/dolphin/os/OSAudioSystem/__OSStopAudioSystem.s" +void __OSStopAudioSystem(void) { + u32 r28; + +#define waitUntil(load, mask) \ + r28 = (load); \ + while (r28 & (mask)) { \ + r28 = (load); \ + } + + __DSPRegs[5] = 0x804; + r28 = __DSPRegs[27]; + __DSPRegs[27] = r28 & ~0x8000; + waitUntil(__DSPRegs[5], 0x400); + waitUntil(__DSPRegs[5], 0x200); + __DSPRegs[5] = 0x8ac; + __DSPRegs[0] = 0; + + while (((__DSPRegs[2] << 16) | __DSPRegs[3]) & 0x80000000) + ; + r28 = OSGetTick(); + while ((s32)(OSGetTick() - r28) < 0x2c) + ; + __DSPRegs[5] |= 1; + waitUntil(__DSPRegs[5], 0x001); + +#undef waitUntil } -#pragma pop diff --git a/libs/dolphin/os/OSCache.c b/libs/dolphin/os/OSCache.c index 8b7b018f4cf..35290c9ac4c 100644 --- a/libs/dolphin/os/OSCache.c +++ b/libs/dolphin/os/OSCache.c @@ -351,8 +351,6 @@ static asm void LCStoreBlocks(register void* destAddr, register void* srcAddr, // clang-format on } /* 8033B838-8033B8E4 336178 00AC+00 0/0 0/0 3/3 .text LCStoreData */ -// matches with mwcc 1.2.5e -#ifdef NONMATCHING u32 LCStoreData(void* destAddr, void* srcAddr, u32 nBytes) { u32 blocks = (nBytes + 31) / 32; u32 ret = (blocks + 127) / 128; @@ -372,16 +370,6 @@ u32 LCStoreData(void* destAddr, void* srcAddr, u32 nBytes) { return ret; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 LCStoreData(void* destAddr, void* srcAddr, u32 nBytes) { - nofralloc -#include "asm/dolphin/os/OSCache/LCStoreData.s" -} -#pragma pop -#endif /* 8033B8E4-8033B8F8 336224 0014+00 0/0 0/0 3/3 .text LCQueueWait */ asm void LCQueueWait(register u32 len){ diff --git a/libs/dolphin/os/OSContext.c b/libs/dolphin/os/OSContext.c index f07a80e95dd..35d64ddf1a0 100644 --- a/libs/dolphin/os/OSContext.c +++ b/libs/dolphin/os/OSContext.c @@ -1,25 +1,10 @@ -// -// Generated By: dol2asm -// Translation Unit: OSContext -// - #include "dolphin/os/OSContext.h" -#include "dol2asm.h" +#include "dolphin/db/db.h" #include "dolphin/os/OS.h" #include "dolphin/os/OSInterrupt.h" -#include "dolphin/types.h" -// -// External References: -// - -void __RAS_OSDisableInterrupts_end(); -void DBPrintf(); -void __cvt_fp2unsigned(); - -// -// Declarations: -// +volatile OSContext* __OSCurrentContext : (OS_BASE_CACHED | 0x00D4); +volatile OSContext* __OSFPUContext : (OS_BASE_CACHED | 0x00D8); /* 8033BBE4-8033BD08 336524 0124+00 1/1 0/0 0/0 .text __OSLoadFPUContext */ asm void __OSLoadFPUContext(void) { @@ -244,7 +229,7 @@ OSContext* OSGetCurrentContext(void) { } /* 8033BEA0-8033BF20 3367E0 0080+00 0/0 1/1 0/0 .text OSSaveContext */ -asm void OSSaveContext(register OSContext* context) { +asm u32 OSSaveContext(register OSContext* context) { // clang-format off nofralloc @@ -377,7 +362,7 @@ void OSClearContext(OSContext* context) { } /* 8033C024-8033C0E0 336964 00BC+00 0/0 1/1 0/0 .text OSInitContext */ -asm void OSInitContext(register OSContext* context, register u32 srr0, register u32 stack){ +asm void OSInitContext(register OSContext* context, register u32 srr0, register u32 stack) { // clang-format off nofralloc @@ -432,85 +417,73 @@ asm void OSInitContext(register OSContext* context, register u32 srr0, register // clang-format on } -/* ############################################################################################## */ -/* 803CF740-803CF784 02C860 0044+00 1/1 0/0 0/0 .data @61 */ -SECTION_DATA - static char lit_61[] = "------------------------- Context 0x%08x -------------------------\n"; +// inline duplicates for OSDumpContext to match +// maybe need to change inlining compiler flag for better match? +inline void i_OSClearContext(OSContext* context) { + context->mode = 0; + context->state = 0; -/* 803CF784-803CF7B4 02C8A4 0030+00 0/1 0/0 0/0 .data @62 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_62[] = "r%-2d = 0x%08x (%14d) r%-2d = 0x%08x (%14d)\n"; + if (context == OS_CURRENT_FPU_CONTEXT) { + OS_CURRENT_FPU_CONTEXT = NULL; + } +} -/* 803CF7B4-803CF7E4 02C8D4 002F+01 0/1 0/0 0/0 .data @63 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_63[] = "LR = 0x%08x CR = 0x%08x\n"; -#pragma pop - -/* 803CF7E4-803CF814 02C904 002F+01 0/1 0/0 0/0 .data @64 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_64[] = "SRR0 = 0x%08x SRR1 = 0x%08x\n"; -#pragma pop - -/* 803CF814-803CF828 02C934 0011+03 0/1 0/0 0/0 .data @65 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_65[] = "\nGQRs----------\n"; -#pragma pop - -/* 803CF828-803CF84C 02C948 0021+03 0/1 0/0 0/0 .data @66 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_66[] = "gqr%d = 0x%08x \t gqr%d = 0x%08x\n"; -#pragma pop - -/* 803CF84C-803CF860 02C96C 0012+02 0/1 0/0 0/0 .data @67 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_67[] = "\n\nFPRs----------\n"; -#pragma pop - -/* 803CF860-803CF87C 02C980 0019+03 0/1 0/0 0/0 .data @68 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_68[] = "fr%d \t= %d \t fr%d \t= %d\n"; -#pragma pop - -/* 803CF87C-803CF890 02C99C 0012+02 0/1 0/0 0/0 .data @69 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_69[] = "\n\nPSFs----------\n"; -#pragma pop - -/* 803CF890-803CF8B0 02C9B0 001D+03 0/1 0/0 0/0 .data @70 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_70[] = "ps%d \t= 0x%x \t ps%d \t= 0x%x\n"; -#pragma pop - -/* 803CF8B0-803CF8D8 02C9D0 0026+02 0/1 0/0 0/0 .data @71 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_71[] = "\nAddress: Back Chain LR Save\n"; -#pragma pop - -/* 803CF8D8-803CF8F4 02C9F8 001C+00 0/1 0/0 0/0 .data @72 */ -#pragma push -#pragma force_active on -SECTION_DATA static char lit_72[] = "0x%08x: 0x%08x 0x%08x\n"; -#pragma pop +inline OSContext* i_OSGetCurrentContext(void) { + return OS_CURRENT_CONTEXT; +} /* 8033C0E0-8033C388 336A20 02A8+00 0/0 3/3 0/0 .text OSDumpContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSDumpContext(OSContext* context) { - nofralloc -#include "asm/dolphin/os/OSContext/OSDumpContext.s" +void OSDumpContext(OSContext* context) { + u32 i; + u32* p; + + OSReport("------------------------- Context 0x%08x -------------------------\n", context); + + for (i = 0; i < 16; ++i) { + OSReport("r%-2d = 0x%08x (%14d) r%-2d = 0x%08x (%14d)\n", i, context->gpr[i], + context->gpr[i], i + 16, context->gpr[i + 16], context->gpr[i + 16]); + } + + OSReport("LR = 0x%08x CR = 0x%08x\n", context->lr, context->cr); + OSReport("SRR0 = 0x%08x SRR1 = 0x%08x\n", context->srr0, context->srr1); + + OSReport("\nGQRs----------\n"); + for (i = 0; i < 4; ++i) { + OSReport("gqr%d = 0x%08x \t gqr%d = 0x%08x\n", i, context->gqr[i], i + 4, + context->gqr[i + 4]); + } + + if (context->state & OS_CONTEXT_STATE_FPSAVED) { + OSContext* currentContext; + OSContext fpuContext; + BOOL enabled; + + enabled = OSDisableInterrupts(); + currentContext = i_OSGetCurrentContext(); + i_OSClearContext(&fpuContext); + OSSetCurrentContext(&fpuContext); + + OSReport("\n\nFPRs----------\n"); + for (i = 0; i < 32; i += 2) { + OSReport("fr%d \t= %d \t fr%d \t= %d\n", i, (u32)context->fpr[i], i + 1, + (u32)context->fpr[i + 1]); + } + OSReport("\n\nPSFs----------\n"); + for (i = 0; i < 32; i += 2) { + OSReport("ps%d \t= 0x%x \t ps%d \t= 0x%x\n", i, (u32)context->ps[i], i + 1, + (u32)context->ps[i + 1]); + } + + i_OSClearContext(&fpuContext); + OSSetCurrentContext(currentContext); + OSRestoreInterrupts(enabled); + } + + OSReport("\nAddress: Back Chain LR Save\n"); + for (i = 0, p = (u32*)context->gpr[1]; p && (u32)p != 0xffffffff && i++ < 16; p = (u32*)*p) { + OSReport("0x%08x: 0x%08x 0x%08x\n", p, p[0], p[1]); + } } -#pragma pop /* 8033C388-8033C40C 336CC8 0084+00 1/1 0/0 0/0 .text OSSwitchFPUContext */ static asm void OSSwitchFPUContext(register u8 err, register OSContext* context) { @@ -557,19 +530,12 @@ context_is_curr_fpu_context: // clang-format on } -/* ############################################################################################## */ -/* 803CF8F4-803CF918 02CA14 0023+01 1/1 0/0 0/0 .data @76 */ -SECTION_DATA static char lit_76[] = "FPU-unavailable handler installed\n"; - /* 8033C40C-8033C454 336D4C 0048+00 0/0 1/1 0/0 .text __OSContextInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSContextInit(void) { - nofralloc -#include "asm/dolphin/os/OSContext/__OSContextInit.s" +void __OSContextInit(void) { + __OSSetExceptionHandler(EXCEPTION_FLOATING_POINT, OSSwitchFPUContext); + __OSFPUContext = NULL; + DBPrintf("FPU-unavailable handler installed\n"); } -#pragma pop /* 8033C454-8033C580 336D94 012C+00 0/0 1/1 0/0 .text OSFillFPUContext */ asm void OSFillFPUContext(register OSContext* context) { diff --git a/libs/dolphin/os/OSError.c b/libs/dolphin/os/OSError.c index e3c503ffba8..dfd56d764fe 100644 --- a/libs/dolphin/os/OSError.c +++ b/libs/dolphin/os/OSError.c @@ -5,27 +5,18 @@ #include "dolphin/os/OSError.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/base/PPCArch.h" +#include "dolphin/os/OS.h" +#include "dolphin/dsp/dsp.h" + +OSThread* __OSCurrentThread : (OS_BASE_CACHED | 0x00E4); +OSThreadQueue __OSActiveThreadQueue : (OS_BASE_CACHED | 0x00DC); +volatile OSContext* __OSFPUContext : (OS_BASE_CACHED | 0x00D8); // // External References: // -void OSReport(); -void PPCMfmsr(); -void PPCMtmsr(); -void PPCHalt(); -void PPCMffpscr(); -void PPCMtfpscr(); -void OSSaveFPUContext(); -void OSLoadContext(); -void OSDumpContext(); -void OSDisableInterrupts(); -void OSRestoreInterrupts(); -void OSDisableScheduler(); -void OSEnableScheduler(); -void __OSReschedule(); -void OSGetTime(); extern u8 __OSLastInterruptSrr0[4]; extern u8 __OSLastInterrupt[2 + 6 /* padding */]; extern u8 __OSLastInterruptTime[4]; @@ -37,11 +28,12 @@ extern u8 data_80451684[4]; /* ############################################################################################## */ /* 8044BAD0-8044BB20 0787F0 0044+0C 2/2 2/2 0/0 .bss __OSErrorTable */ -extern OSErrorHandler __OSErrorTable[17 + 3 /* padding */]; -OSErrorHandler __OSErrorTable[17 + 3 /* padding */]; +extern OSErrorHandler __OSErrorTable[17]; +OSErrorHandler __OSErrorTable[17]; /* 804509A0-804509A4 000420 0004+00 1/1 2/2 0/0 .sdata __OSFpscrEnableBits */ -SECTION_SDATA extern u32 __OSFpscrEnableBits = 0xF8; +#define FPSCR_ENABLE (FPSCR_VE | FPSCR_OE | FPSCR_UE | FPSCR_ZE | FPSCR_XE) +SECTION_SDATA extern u32 __OSFpscrEnableBits = FPSCR_ENABLE; /* 8033C580-8033C798 336EC0 0218+00 0/0 4/4 0/0 .text OSSetErrorHandler */ #pragma push @@ -96,25 +88,29 @@ SECTION_DATA static char lit_78[] = "TB = 0x%016llx\n"; /* 803CF9F0-803CFA50 02CB10 0060+00 0/1 0/0 0/0 .data @79 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_79[] = "\nInstruction at 0x%x (read from SRR0) attempted to access invalid address 0x%x (read from DAR)\n"; +SECTION_DATA static char lit_79[] = "\nInstruction at 0x%x (read from SRR0) attempted to access " + "invalid address 0x%x (read from DAR)\n"; #pragma pop /* 803CFA50-803CFA9C 02CB70 004C+00 0/0 0/0 0/0 .data @80 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_80[] = "\nAttempted to fetch instruction from invalid address 0x%x (read from SRR0)\n"; +SECTION_DATA static char lit_80[] = + "\nAttempted to fetch instruction from invalid address 0x%x (read from SRR0)\n"; #pragma pop /* 803CFA9C-803CFB00 02CBBC 0062+02 0/0 0/0 0/0 .data @81 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_81[] = "\nInstruction at 0x%x (read from SRR0) attempted to access unaligned address 0x%x (read from DAR)\n"; +SECTION_DATA static char lit_81[] = "\nInstruction at 0x%x (read from SRR0) attempted to access " + "unaligned address 0x%x (read from DAR)\n"; #pragma pop /* 803CFB00-803CFB60 02CC20 0060+00 0/0 0/0 0/0 .data @82 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_82[] = "\nProgram exception : Possible illegal instruction/operation at or around 0x%x (read from SRR0)\n"; +SECTION_DATA static char lit_82[] = "\nProgram exception : Possible illegal instruction/operation " + "at or around 0x%x (read from SRR0)\n"; #pragma pop /* 803CFB60-803CFB80 02CC80 001F+01 0/0 0/0 0/0 .data @83 */ @@ -167,11 +163,120 @@ SECTION_DATA static void* lit_87[16 + 1 /* padding */] = { SECTION_SDATA static char lit_76[] = "\n"; /* 8033C798-8033CA80 3370D8 02E8+00 1/0 2/2 0/0 .text __OSUnhandledException */ +#ifdef NONMATCHING +void __OSUnhandledException(__OSException exception, OSContext* context, u32 dsisr, u32 dar) { + OSTime now; + + now = OSGetTime(); + + if (!(context->srr1 & MSR_RI)) { + OSReport("Non-recoverable Exception %d", exception); + } else { + if (exception == EXCEPTION_PROGRAM && (context->srr1 & (0x80000000 >> 11)) && + __OSErrorTable[EXCEPTION_FLOATING_POINT_EXCEPTION] != 0) { + u32 fpscr; + u32 msr; + + exception = EXCEPTION_FLOATING_POINT_EXCEPTION; + + msr = PPCMfmsr(); + PPCMtmsr(msr | MSR_FP); + + if (__OSFPUContext) { + OSSaveFPUContext((OSContext*)__OSFPUContext); + } + + fpscr = PPCMffpscr(); + fpscr &= ~(FPSCR_VXVC | FPSCR_VXIMZ | FPSCR_VXZDZ | FPSCR_VXIDI | FPSCR_VXISI | + FPSCR_VXSNAN | FPSCR_VXSOFT | FPSCR_VXSQRT | FPSCR_VXCVI | FPSCR_XX | + FPSCR_ZX | FPSCR_UX | FPSCR_OX | FPSCR_FX | FPSCR_FI); + PPCMtfpscr(fpscr); + + PPCMtmsr(msr); + + if (__OSFPUContext == context) { + OSDisableScheduler(); + __OSErrorTable[exception](exception, context, dsisr, dar); + context->srr1 &= ~MSR_FP; + __OSFPUContext = NULL; + + context->fpscr &= + ~(FPSCR_VXVC | FPSCR_VXIMZ | FPSCR_VXZDZ | FPSCR_VXIDI | FPSCR_VXISI | + FPSCR_VXSNAN | FPSCR_VXSOFT | FPSCR_VXSQRT | FPSCR_VXCVI | FPSCR_XX | + FPSCR_ZX | FPSCR_UX | FPSCR_OX | FPSCR_FX | FPSCR_FI); + OSEnableScheduler(); + __OSReschedule(); + } else { + context->srr1 &= ~MSR_FP; + __OSFPUContext = NULL; + } + + OSLoadContext(context); + } + + if (__OSErrorTable[exception]) { + OSDisableScheduler(); + __OSErrorTable[exception](exception, context, dsisr, dar); + OSEnableScheduler(); + __OSReschedule(); + OSLoadContext(context); + } + + if (exception == OS_ERROR_DECREMENTER) { + OSLoadContext(context); + } + + OSReport("Unhandled Exception %d", exception); + } + + OSReport("\n"); + OSDumpContext(context); + OSReport("\nDSISR = 0x%08x DAR = 0x%08x\n", dsisr, dar); + OSReport("TB = 0x%016llx\n", now); + + switch (exception) { + case EXCEPTION_DSI: + OSReport("\nInstruction at 0x%x (read from SRR0) attempted to access " + "invalid address 0x%x (read from DAR)\n", + context->srr0, dar); + break; + case EXCEPTION_ISI: + OSReport("\nAttempted to fetch instruction from invalid address 0x%x " + "(read from SRR0)\n", + context->srr0); + break; + case EXCEPTION_ALIGNMENT: + OSReport("\nInstruction at 0x%x (read from SRR0) attempted to access " + "unaligned address 0x%x (read from DAR)\n", + context->srr0, dar); + break; + case EXCEPTION_PROGRAM: + OSReport("\nProgram exception : Possible illegal instruction/operation " + "at or around 0x%x (read from SRR0)\n", + context->srr0, dar); + break; + case EXCEPTION_MEMORY_PROTECTION: + OSReport("\n"); + OSReport("AI DMA Address = 0x%04x%04x\n", __DSPRegs[0x00000018], + __DSPRegs[0x00000018 + 1]); + OSReport("ARAM DMA Address = 0x%04x%04x\n", __DSPRegs[0x00000010], + __DSPRegs[0x00000010 + 1]); + OSReport("DI DMA Address = 0x%08x\n", __DIRegs[0x00000005]); + break; + } + + OSReport("\nLast interrupt (%d): SRR0 = 0x%08x TB = 0x%016llx\n", __OSLastInterrupt, + __OSLastInterruptSrr0, __OSLastInterruptTime); + + PPCHalt(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __OSUnhandledException(OSException exception, OSContext* context, u32 dsisr, u32 dar) { +asm void __OSUnhandledException(__OSException exception, OSContext* context, u32 dsisr, u32 dar) { nofralloc #include "asm/dolphin/os/OSError/__OSUnhandledException.s" } #pragma pop +#endif diff --git a/libs/dolphin/os/OSInterrupt.c b/libs/dolphin/os/OSInterrupt.c index e888111599b..e86ded77fae 100644 --- a/libs/dolphin/os/OSInterrupt.c +++ b/libs/dolphin/os/OSInterrupt.c @@ -5,16 +5,19 @@ #include "dolphin/os/OSInterrupt.h" #include "dol2asm.h" +#include "dolphin/ai/ai.h" +#include "dolphin/dsp/dsp.h" +#include "dolphin/exi/EXIBios.h" #include "dolphin/os/OS.h" -#include "dolphin/types.h" + +vu32 __PIRegs[12] : 0xCC003000; +vu16 __MEMRegs[64] : 0xCC004000; // // External References: // SECTION_INIT void memset(); -void OSLoadContext(); -void __OSReschedule(); // // Declarations: @@ -98,44 +101,199 @@ OSInterruptHandler __OSGetInterruptHandler(OSInterrupt type) { } /* 8033D770-8033D7E4 3380B0 0074+00 0/0 1/1 0/0 .text __OSInterruptInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSInterruptInit(void) { - nofralloc -#include "asm/dolphin/os/OSInterrupt/__OSInterruptInit.s" +void __OSInterruptInit(void) { + InterruptHandlerTable = OSPhysicalToCached(0x3040); + memset(InterruptHandlerTable, 0, 32 * sizeof(OSInterruptHandler)); + + *(OSInterruptMask*)OSPhysicalToCached(0x00C4) = 0; + + *(OSInterruptMask*)OSPhysicalToCached(0x00C8) = 0; + + __PIRegs[1] = 0xf0; + + __OSMaskInterrupts(OS_INTERRUPTMASK_MEM | OS_INTERRUPTMASK_DSP | OS_INTERRUPTMASK_AI | + OS_INTERRUPTMASK_EXI | OS_INTERRUPTMASK_PI); + + __OSSetExceptionHandler(4, (OSExceptionHandler)ExternalInterruptHandler); } -#pragma pop /* 8033D7E4-8033DABC 338124 02D8+00 2/2 0/0 0/0 .text SetInterruptMask */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm OSInterruptMask SetInterruptMask(OSInterruptMask param_0, OSInterruptMask param_1) { - nofralloc -#include "asm/dolphin/os/OSInterrupt/SetInterruptMask.s" +u32 SetInterruptMask(OSInterruptMask mask, OSInterruptMask current) { + u32 reg; + + switch (__cntlzw(mask)) { + case OS_INTR_MEM_0: + case OS_INTR_MEM_1: + case OS_INTR_MEM_2: + case OS_INTR_MEM_3: + case OS_INTR_MEM_ADDRESS: + reg = 0; + if (!(current & OS_INTERRUPTMASK_MEM_0)) + reg |= 0x1; + if (!(current & OS_INTERRUPTMASK_MEM_1)) + reg |= 0x2; + if (!(current & OS_INTERRUPTMASK_MEM_2)) + reg |= 0x4; + if (!(current & OS_INTERRUPTMASK_MEM_3)) + reg |= 0x8; + if (!(current & OS_INTERRUPTMASK_MEM_ADDRESS)) + reg |= 0x10; + __MEMRegs[0x0000000e] = (u16)reg; + mask &= ~OS_INTERRUPTMASK_MEM; + break; + case OS_INTR_DSP_AI: + case OS_INTR_DSP_ARAM: + case OS_INTR_DSP_DSP: + reg = __DSPRegs[0x00000005]; + reg &= ~0x1F8; + if (!(current & OS_INTERRUPTMASK_DSP_AI)) + reg |= 0x10; + if (!(current & OS_INTERRUPTMASK_DSP_ARAM)) + reg |= 0x40; + if (!(current & OS_INTERRUPTMASK_DSP_DSP)) + reg |= 0x100; + __DSPRegs[0x00000005] = (u16)reg; + mask &= ~OS_INTERRUPTMASK_DSP; + break; + case OS_INTR_AI_AI: + reg = __AIRegs[0]; + reg &= ~0x2C; + if (!(current & OS_INTERRUPTMASK_AI_AI)) + reg |= 0x4; + __AIRegs[0] = reg; + mask &= ~OS_INTERRUPTMASK_AI; + break; + case OS_INTR_EXI_0_EXI: + case OS_INTR_EXI_0_TC: + case OS_INTR_EXI_0_EXT: + reg = __EXIRegs[0]; + reg &= ~0x2C0F; + if (!(current & OS_INTERRUPTMASK_EXI_0_EXI)) + reg |= 0x1; + if (!(current & OS_INTERRUPTMASK_EXI_0_TC)) + reg |= 0x4; + if (!(current & OS_INTERRUPTMASK_EXI_0_EXT)) + reg |= 0x400; + __EXIRegs[0] = reg; + mask &= ~OS_INTERRUPTMASK_EXI_0; + break; + case OS_INTR_EXI_1_EXI: + case OS_INTR_EXI_1_TC: + case OS_INTR_EXI_1_EXT: + reg = __EXIRegs[5]; + reg &= ~0xC0F; + + if (!(current & OS_INTERRUPTMASK_EXI_1_EXI)) + reg |= 0x1; + if (!(current & OS_INTERRUPTMASK_EXI_1_TC)) + reg |= 0x4; + if (!(current & OS_INTERRUPTMASK_EXI_1_EXT)) + reg |= 0x400; + __EXIRegs[5] = reg; + mask &= ~OS_INTERRUPTMASK_EXI_1; + break; + case OS_INTR_EXI_2_EXI: + case OS_INTR_EXI_2_TC: + reg = __EXIRegs[10]; + reg &= ~0xF; + if (!(current & OS_INTERRUPTMASK_EXI_2_EXI)) + reg |= 0x1; + if (!(current & OS_INTERRUPTMASK_EXI_2_TC)) + reg |= 0x4; + + __EXIRegs[10] = reg; + mask &= ~OS_INTERRUPTMASK_EXI_2; + break; + case OS_INTR_PI_CP: + case OS_INTR_PI_SI: + case OS_INTR_PI_DI: + case OS_INTR_PI_RSW: + case OS_INTR_PI_ERROR: + case OS_INTR_PI_VI: + case OS_INTR_PI_DEBUG: + case OS_INTR_PI_PE_TOKEN: + case OS_INTR_PI_PE_FINISH: + case OS_INTR_PI_HSP: + reg = 0xF0; + + if (!(current & OS_INTERRUPTMASK_PI_CP)) { + reg |= 0x800; + } + if (!(current & OS_INTERRUPTMASK_PI_SI)) { + reg |= 0x8; + } + if (!(current & OS_INTERRUPTMASK_PI_DI)) { + reg |= 0x4; + } + if (!(current & OS_INTERRUPTMASK_PI_RSW)) { + reg |= 0x2; + } + if (!(current & OS_INTERRUPTMASK_PI_ERROR)) { + reg |= 0x1; + } + if (!(current & OS_INTERRUPTMASK_PI_VI)) { + reg |= 0x100; + } + if (!(current & OS_INTERRUPTMASK_PI_DEBUG)) { + reg |= 0x1000; + } + if (!(current & OS_INTERRUPTMASK_PI_PE_TOKEN)) { + reg |= 0x200; + } + if (!(current & OS_INTERRUPTMASK_PI_PE_FINISH)) { + reg |= 0x400; + } + if (!(current & OS_INTERRUPTMASK_PI_HSP)) { + reg |= 0x2000; + } + __PIRegs[1] = reg; + mask &= ~OS_INTERRUPTMASK_PI; + break; + default: + break; + } + return mask; } -#pragma pop /* 8033DABC-8033DB44 3383FC 0088+00 1/1 15/15 0/0 .text __OSMaskInterrupts */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm OSInterruptMask __OSMaskInterrupts(OSInterruptMask mask) { - nofralloc -#include "asm/dolphin/os/OSInterrupt/__OSMaskInterrupts.s" +OSInterruptMask __OSMaskInterrupts(OSInterruptMask global) { + BOOL enabled; + OSInterruptMask prev; + OSInterruptMask local; + OSInterruptMask mask; + + enabled = OSDisableInterrupts(); + prev = *(OSInterruptMask*)OSPhysicalToCached(0x00C4); + local = *(OSInterruptMask*)OSPhysicalToCached(0x00C8); + mask = ~(prev | local) & global; + global |= prev; + *(OSInterruptMask*)OSPhysicalToCached(0x00C4) = global; + while (mask) { + mask = SetInterruptMask(mask, global | local); + } + OSRestoreInterrupts(enabled); + return prev; } -#pragma pop /* 8033DB44-8033DBCC 338484 0088+00 0/0 18/18 0/0 .text __OSUnmaskInterrupts */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm OSInterruptMask __OSUnmaskInterrupts(OSInterruptMask mask) { - nofralloc -#include "asm/dolphin/os/OSInterrupt/__OSUnmaskInterrupts.s" +OSInterruptMask __OSUnmaskInterrupts(OSInterruptMask global) { + BOOL enabled; + OSInterruptMask prev; + OSInterruptMask local; + OSInterruptMask mask; + + enabled = OSDisableInterrupts(); + prev = *(OSInterruptMask*)OSPhysicalToCached(0x00C4); + local = *(OSInterruptMask*)OSPhysicalToCached(0x00C8); + mask = (prev | local) & global; + global = prev & ~global; + *(OSInterruptMask*)OSPhysicalToCached(0x00C4) = global; + while (mask) { + mask = SetInterruptMask(mask, global | local); + } + OSRestoreInterrupts(enabled); + return prev; } -#pragma pop /* ############################################################################################## */ /* 803D0758-803D0788 02D878 002C+04 1/1 0/0 0/0 .data InterruptPrioTable */ @@ -157,14 +315,136 @@ extern u32 __OSLastInterruptSrr0; u32 __OSLastInterruptSrr0; /* 8033DBCC-8033DF10 33850C 0344+00 1/1 0/0 0/0 .text __OSDispatchInterrupt */ +// need compiler epilogue patch +#ifdef NONMATCHING +void __OSDispatchInterrupt(__OSException exception, OSContext* context) { + u32 intsr; + u32 reg; + OSInterruptMask cause; + OSInterruptMask unmasked; + OSInterruptMask* prio; + OSInterrupt interrupt; + OSInterruptHandler handler; + intsr = __PIRegs[0]; + intsr &= ~0x00010000; + + if (intsr == 0 || (intsr & __PIRegs[1]) == 0) { + OSLoadContext(context); + } + + cause = 0; + + if (intsr & 0x00000080) { + reg = __MEMRegs[15]; + if (reg & 0x1) + cause |= OS_INTERRUPTMASK_MEM_0; + if (reg & 0x2) + cause |= OS_INTERRUPTMASK_MEM_1; + if (reg & 0x4) + cause |= OS_INTERRUPTMASK_MEM_2; + if (reg & 0x8) + cause |= OS_INTERRUPTMASK_MEM_3; + if (reg & 0x10) + cause |= OS_INTERRUPTMASK_MEM_ADDRESS; + } + + if (intsr & 0x00000040) { + reg = __DSPRegs[5]; + if (reg & 0x8) + cause |= OS_INTERRUPTMASK_DSP_AI; + if (reg & 0x20) + cause |= OS_INTERRUPTMASK_DSP_ARAM; + if (reg & 0x80) + cause |= OS_INTERRUPTMASK_DSP_DSP; + } + + if (intsr & 0x00000020) { + reg = __AIRegs[0]; + if (reg & 0x8) + cause |= OS_INTERRUPTMASK_AI_AI; + } + + if (intsr & 0x00000010) { + reg = __EXIRegs[0]; + if (reg & 0x2) + cause |= OS_INTERRUPTMASK_EXI_0_EXI; + if (reg & 0x8) + cause |= OS_INTERRUPTMASK_EXI_0_TC; + if (reg & 0x800) + cause |= OS_INTERRUPTMASK_EXI_0_EXT; + reg = __EXIRegs[5]; + if (reg & 0x2) + cause |= OS_INTERRUPTMASK_EXI_1_EXI; + if (reg & 0x8) + cause |= OS_INTERRUPTMASK_EXI_1_TC; + if (reg & 0x800) + cause |= OS_INTERRUPTMASK_EXI_1_EXT; + reg = __EXIRegs[10]; + if (reg & 0x2) + cause |= OS_INTERRUPTMASK_EXI_2_EXI; + if (reg & 0x8) + cause |= OS_INTERRUPTMASK_EXI_2_TC; + } + + if (intsr & 0x00002000) + cause |= OS_INTERRUPTMASK_PI_HSP; + if (intsr & 0x00001000) + cause |= OS_INTERRUPTMASK_PI_DEBUG; + if (intsr & 0x00000400) + cause |= OS_INTERRUPTMASK_PI_PE_FINISH; + if (intsr & 0x00000200) + cause |= OS_INTERRUPTMASK_PI_PE_TOKEN; + if (intsr & 0x00000100) + cause |= OS_INTERRUPTMASK_PI_VI; + if (intsr & 0x00000008) + cause |= OS_INTERRUPTMASK_PI_SI; + if (intsr & 0x00000004) + cause |= OS_INTERRUPTMASK_PI_DI; + if (intsr & 0x00000002) + cause |= OS_INTERRUPTMASK_PI_RSW; + if (intsr & 0x00000800) + cause |= OS_INTERRUPTMASK_PI_CP; + if (intsr & 0x00000001) + cause |= OS_INTERRUPTMASK_PI_ERROR; + + unmasked = cause & ~(*(OSInterruptMask*)OSPhysicalToCached(0x00C4) | + *(OSInterruptMask*)OSPhysicalToCached(0x00C8)); + if (unmasked) { + for (prio = InterruptPrioTable;; ++prio) { + if (unmasked & *prio) { + interrupt = (OSInterrupt)__cntlzw(unmasked & *prio); + break; + } + } + + handler = __OSGetInterruptHandler(interrupt); + if (handler) { + if (OS_INTR_MEM_ADDRESS < interrupt) { + __OSLastInterrupt = interrupt; + __OSLastInterruptTime = OSGetTime(); + __OSLastInterruptSrr0 = context->srr0; + } + + OSDisableScheduler(); + handler(interrupt, context); + OSEnableScheduler(); + __OSReschedule(); + OSLoadContext(context); + } + } + + OSLoadContext(context); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __OSDispatchInterrupt(OSInterrupt interrupt, OSContext* context) { +asm void __OSDispatchInterrupt(__OSException exception, OSContext* context) { nofralloc #include "asm/dolphin/os/OSInterrupt/__OSDispatchInterrupt.s" } #pragma pop +#endif /* 8033DF10-8033DF60 338850 0050+00 1/1 0/0 0/0 .text ExternalInterruptHandler */ static asm void ExternalInterruptHandler(register OSInterrupt type, register OSContext* context) { diff --git a/libs/dolphin/os/OSLink.c b/libs/dolphin/os/OSLink.c index 371d33dfd28..d5f5e37a12a 100644 --- a/libs/dolphin/os/OSLink.c +++ b/libs/dolphin/os/OSLink.c @@ -7,6 +7,113 @@ #include "dol2asm.h" #include "dolphin/types.h" +#define SHN_UNDEF 0 +#define SHN_LORESERVE 0xff00 +#define SHN_LOPROC 0xff00 +#define SHN_HIPROC 0xff1f +#define SHN_ABS 0xfff1 +#define SHN_COMMON 0xfff2 +#define SHN_HIRESERVE 0xffff + +#define ELF32_R_SYM(i) ((i) >> 8) +#define ELF32_R_TYPE(i) ((unsigned char)(i)) +#define ELF32_R_INFO(s, t) (((s) << 8) + (unsigned char)(t)) + +// Name Value Field Calculation +#define R_PPC_NONE 0 // none none +#define R_PPC_ADDR32 1 // word32 S + A +#define R_PPC_ADDR24 2 // low24* (S + A) >> 2 +#define R_PPC_ADDR16 3 // half16* S + A +#define R_PPC_ADDR16_LO 4 // half16 #lo(S + A) +#define R_PPC_ADDR16_HI 5 // half16 #hi(S + A) +#define R_PPC_ADDR16_HA 6 // half16 #ha(S + A) +#define R_PPC_ADDR14 7 // low14* (S + A) >> 2 +#define R_PPC_ADDR14_BRTAKEN 8 // low14* (S + A) >> 2 +#define R_PPC_ADDR14_BRNTAKEN 9 // low14* (S + A) >> 2 +#define R_PPC_REL24 10 // low24* (S + A - P) >> 2 +#define R_PPC_REL14 11 // low14* (S + A - P) >> 2 +#define R_PPC_REL14_BRTAKEN 12 // low14* (S + A - P) >> 2 +#define R_PPC_REL14_BRNTAKEN 13 // low14* (S + A - P) >> 2 + +#define R_PPC_GOT16 14 // half16* G + A +#define R_PPC_GOT16_LO 15 // half16 #lo(G + A) +#define R_PPC_GOT16_HI 16 // half16 #hi(G + A) +#define R_PPC_GOT16_HA 17 // half16 #ha(G + A) +#define R_PPC_PLTREL24 18 // low24* (L + A - P) >> 2 +#define R_PPC_COPY 19 // none none +#define R_PPC_GLOB_DAT 20 // word32 S + A +#define R_PPC_JMP_SLOT 21 // none +#define R_PPC_RELATIVE 22 // word32 B + A + +#define R_PPC_LOCAL24PC 23 // low24* + +#define R_PPC_UADDR32 24 // word32 S + A +#define R_PPC_UADDR16 25 // half16* S + A +#define R_PPC_REL32 26 // word32 S + A - P + +#define R_PPC_PLT32 27 // word32 L + A +#define R_PPC_PLTREL32 28 // word32 L + A - P +#define R_PPC_PLT16_LO 29 // half16 #lo(L + A) +#define R_PPL_PLT16_HI 30 // half16 #hi(L + A) +#define R_PPC_PLT16_HA 31 // half16 #ha(L + A) + +#define R_PPC_SDAREL16 32 // half16* S + A - _SDA_BASE_ +#define R_PPC_SECTOFF 33 // half16* R + A +#define R_PPC_SECTOFF_LO 34 // half16 #lo(R + A) +#define R_PPC_SECTOFF_HI 35 // half16 #hi(R + A) +#define R_PPC_SECTOFF_HA 36 // half16 #ha(R + A) +#define R_PPC_ADDR30 37 // word30 (S + A - P) >> 2 + +#define R_PPC_EMB_NADDR32 101 // uword32 N (A - S) +#define R_PPC_EMB_NADDR16 102 // uhalf16 Y (A - S) +#define R_PPC_EMB_NADDR16_LO 103 // uhalf16 N #lo(A - S) +#define R_PPC_EMB_NADDR16_HI 104 // uhalf16 N #hi(A - S) +#define R_PPC_EMB_NADDR16_HA 105 // uhalf16 N #ha(A - S) +#define R_PPC_EMB_SDAI16 106 // uhalf16 Y T +#define R_PPC_EMB_SDA2I16 107 // uhalf16 Y U +#define R_PPC_EMB_SDA2REL 108 // uhalf16 Y S + A - _SDA2_BASE_ +#define R_PPC_EMB_SDA21 109 // ulow21 N +#define R_PPC_EMB_MRKREF 110 // none N +#define R_PPC_EMB_RELSEC16 111 // uhalf16 Y V + A +#define R_PPC_EMB_RELST_LO 112 // uhalf16 N #lo(W + A) +#define R_PPC_EMB_RELST_HI 113 // uhalf16 N #hi(W + A) +#define R_PPC_EMB_RELST_HA 114 // uhalf16 N #ha(W + A) +#define R_PPC_EMB_BIT_FLD 115 // uword32 Y +#define R_PPC_EMB_RELSDA 116 // uhalf16 Y + +#define EnqueueTail(queue, moduleInfo, link) \ + do { \ + OSModuleInfo* __prev; \ + \ + __prev = (queue)->tail; \ + if (__prev == NULL) \ + (queue)->head = (moduleInfo); \ + else \ + __prev->link.next = (moduleInfo); \ + (moduleInfo)->link.prev = __prev; \ + (moduleInfo)->link.next = NULL; \ + (queue)->tail = (moduleInfo); \ + } while (0) + +#define DequeueItem(queue, moduleInfo, link) \ + do { \ + OSModuleInfo* __next; \ + OSModuleInfo* __prev; \ + \ + __next = (moduleInfo)->link.next; \ + __prev = (moduleInfo)->link.prev; \ + \ + if (__next == NULL) \ + (queue)->tail = __prev; \ + else \ + __next->link.prev = __prev; \ + \ + if (__prev == NULL) \ + (queue)->head = __next; \ + else \ + __prev->link.next = __next; \ + } while (0) + // // External References: // diff --git a/libs/dolphin/os/OSMemory.c b/libs/dolphin/os/OSMemory.c index 14b93984540..1ffd8a4ccbf 100644 --- a/libs/dolphin/os/OSMemory.c +++ b/libs/dolphin/os/OSMemory.c @@ -5,18 +5,19 @@ #include "dolphin/os/OSMemory.h" #include "dol2asm.h" +#include "dolphin/os/OS.h" #include "dolphin/os/OSReset.h" -#include "dolphin/types.h" + +#define TRUNC(n, a) (((u32)(n)) & ~((a)-1)) +#define ROUND(n, a) (((u32)(n) + (a)-1) & ~((a)-1)) + +vu16 __MEMRegs[64] : 0xCC004000; // // External References: // -void DCInvalidateRange(); -void DCFlushRange(); -void __OSUnhandledException(); -void OSRegisterResetFunction(); -extern u8 __OSErrorTable[68 + 12 /* padding */]; +extern OSErrorHandler __OSErrorTable[16]; // // Declarations: @@ -33,6 +34,24 @@ static asm s32 OnReset(s32 param_0) { #pragma pop /* 8033ECA8-8033ED14 3395E8 006C+00 1/1 0/0 0/0 .text MEMIntrruptHandler */ +#ifdef NONMATCHING +static void MEMIntrruptHandler(OSInterrupt interrupt, OSContext* context) { + u32 addr; + u32 cause; + + cause = __MEMRegs[0xf]; + addr = (((u32)__MEMRegs[0x12] & 0x3ff) << 16) | __MEMRegs[0x11]; + __MEMRegs[0x10] = 0; + + if (__OSErrorTable[EXCEPTION_MEMORY_PROTECTION]) { + __OSErrorTable[EXCEPTION_MEMORY_PROTECTION](EXCEPTION_MEMORY_PROTECTION, context, cause, + addr); + return; + } + + __OSUnhandledException(EXCEPTION_MEMORY_PROTECTION, context, cause, addr); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -41,16 +60,44 @@ static asm void MEMIntrruptHandler(OSInterrupt interrupt, struct OSContext* cont #include "asm/dolphin/os/OSMemory/MEMIntrruptHandler.s" } #pragma pop +#endif /* 8033ED14-8033EDD8 339654 00C4+00 0/0 1/1 0/0 .text OSProtectRange */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSProtectRange(u32 channel, void* address, u32 nBytes, u32 control) { - nofralloc -#include "asm/dolphin/os/OSMemory/OSProtectRange.s" +void OSProtectRange(u32 chan, void* addr, u32 nBytes, u32 control) { + BOOL enabled; + u32 start; + u32 end; + u16 reg; + if (4 <= chan) { + return; + } + + control &= OS_PROTECT_CONTROL_RDWR; + + end = (u32)addr + nBytes; + start = TRUNC(addr, 1u << 10); + end = ROUND(end, 1u << 10); + + DCFlushRange((void*)start, end - start); + + enabled = OSDisableInterrupts(); + + __OSMaskInterrupts(OS_INTERRUPTMASK(OS_INTR_MEM_0 + chan)); + + __MEMRegs[0 + 2 * chan] = (u16)(start >> 10); + __MEMRegs[1 + 2 * chan] = (u16)(end >> 10); + + reg = __MEMRegs[8]; + reg &= ~(OS_PROTECT_CONTROL_RDWR << 2 * chan); + reg |= control << 2 * chan; + __MEMRegs[8] = reg; + + if (control != OS_PROTECT_CONTROL_RDWR) { + __OSUnmaskInterrupts(OS_INTERRUPTMASK(OS_INTR_MEM_0 + chan)); + } + + OSRestoreInterrupts(enabled); } -#pragma pop /* 8033EDD8-8033EE58 339718 0080+00 1/1 0/0 0/0 .text Config24MB */ static asm void Config24MB(void) { @@ -133,7 +180,7 @@ static asm void Config48MB(void) { } /* 8033EED8-8033EEF0 339818 0018+00 1/1 0/0 0/0 .text RealMode */ -static asm void RealMode(register void* config){ +static asm void RealMode(register u32 config) { // clang-format off nofralloc @@ -155,12 +202,46 @@ static OSResetFunctionInfo ResetFunctionInfo = { NULL, }; -/* 8033EEF0-8033F008 339830 0118+00 0/0 1/1 0/0 .text __OSInitMemoryProtection */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSInitMemoryProtection(void) { - nofralloc -#include "asm/dolphin/os/OSMemory/__OSInitMemoryProtection.s" +inline u32 OSGetPhysicalMemSize() { + return *(u32*)(OSPhysicalToCached(0x0028)); +} + +inline u32 OSGetConsoleSimulatedMemSize() { + return *(u32*)(OSPhysicalToCached(0x00F0)); +} + +/* 8033EEF0-8033F008 339830 0118+00 0/0 1/1 0/0 .text __OSInitMemoryProtection */ +void __OSInitMemoryProtection() { + u32 padding[8]; + u32 simulatedSize; + BOOL enabled; + simulatedSize = OSGetConsoleSimulatedMemSize(); + enabled = OSDisableInterrupts(); + + __MEMRegs[16] = 0; + __MEMRegs[8] = 0xFF; + + __OSMaskInterrupts(OS_INTERRUPTMASK_MEM_0 | OS_INTERRUPTMASK_MEM_1 | OS_INTERRUPTMASK_MEM_2 | + OS_INTERRUPTMASK_MEM_3); + __OSSetInterruptHandler(OS_INTR_MEM_0, MEMIntrruptHandler); + __OSSetInterruptHandler(OS_INTR_MEM_1, MEMIntrruptHandler); + __OSSetInterruptHandler(OS_INTR_MEM_2, MEMIntrruptHandler); + __OSSetInterruptHandler(OS_INTR_MEM_3, MEMIntrruptHandler); + __OSSetInterruptHandler(OS_INTR_MEM_ADDRESS, MEMIntrruptHandler); + OSRegisterResetFunction(&ResetFunctionInfo); + + if (OSGetConsoleSimulatedMemSize() < OSGetPhysicalMemSize() && + OSGetConsoleSimulatedMemSize() == 0x1800000) { + DCInvalidateRange((void*)0x81800000, 0x1800000); + __MEMRegs[20] = 2; + } + + if (simulatedSize <= 0x1800000) { + RealMode((u32)&Config24MB); + } else if (simulatedSize <= 0x3000000) { + RealMode((u32)&Config48MB); + } + + __OSUnmaskInterrupts(OS_INTERRUPTMASK_MEM_ADDRESS); + OSRestoreInterrupts(enabled); } -#pragma pop diff --git a/libs/dolphin/os/OSMessage.c b/libs/dolphin/os/OSMessage.c index 024b6f3d028..620eebb01e1 100644 --- a/libs/dolphin/os/OSMessage.c +++ b/libs/dolphin/os/OSMessage.c @@ -5,48 +5,74 @@ #include "dolphin/os/OSMessage.h" #include "dol2asm.h" -#include "dolphin/types.h" - -// -// External References: -// - -void OSDisableInterrupts(); -void OSRestoreInterrupts(); +#include "dolphin/os/OS.h" // // Declarations: // /* 8033E994-8033E9F4 3392D4 0060+00 0/0 13/13 5/5 .text OSInitMessageQueue */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSInitMessageQueue(OSMessageQueue* queue, OSMessage* msgArray, s32 msgCount) { - nofralloc -#include "asm/dolphin/os/OSMessage/OSInitMessageQueue.s" +void OSInitMessageQueue(OSMessageQueue* mq, OSMessage* msgArray, s32 msgCount) { + OSInitThreadQueue(&mq->sending_queue); + OSInitThreadQueue(&mq->receiving_queue); + mq->message_array = msgArray; + mq->num_messages = msgCount; + mq->first_index = 0; + mq->num_used = 0; } -#pragma pop /* 8033E9F4-8033EABC 339334 00C8+00 0/0 21/21 9/9 .text OSSendMessage */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL OSSendMessage(OSMessageQueue* queue, OSMessage msg, s32 flags) { - nofralloc -#include "asm/dolphin/os/OSMessage/OSSendMessage.s" +BOOL OSSendMessage(OSMessageQueue* mq, OSMessage msg, s32 flags) { + BOOL enabled; + s32 lastIndex; + + enabled = OSDisableInterrupts(); + + while (mq->num_messages <= mq->num_used) { + if (!(flags & OS_MESSAGE_BLOCK)) { + OSRestoreInterrupts(enabled); + return FALSE; + } else { + OSSleepThread(&mq->sending_queue); + } + } + + lastIndex = (mq->first_index + mq->num_used) % mq->num_messages; + mq->message_array[lastIndex] = msg; + mq->num_used++; + + OSWakeupThread(&mq->receiving_queue); + + OSRestoreInterrupts(enabled); + return TRUE; } -#pragma pop /* 8033EABC-8033EB98 3393FC 00DC+00 0/0 15/15 9/9 .text OSReceiveMessage */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL OSReceiveMessage(OSMessageQueue* queue, OSMessage* msg, s32 flags) { - nofralloc -#include "asm/dolphin/os/OSMessage/OSReceiveMessage.s" +BOOL OSReceiveMessage(OSMessageQueue* mq, OSMessage* msg, s32 flags) { + BOOL enabled; + + enabled = OSDisableInterrupts(); + + while (mq->num_used == 0) { + if (!(flags & OS_MESSAGE_BLOCK)) { + OSRestoreInterrupts(enabled); + return FALSE; + } else { + OSSleepThread(&mq->receiving_queue); + } + } + + if (msg != NULL) { + *msg = mq->message_array[mq->first_index]; + } + mq->first_index = (mq->first_index + 1) % mq->num_messages; + mq->num_used--; + + OSWakeupThread(&mq->sending_queue); + + OSRestoreInterrupts(enabled); + return TRUE; } -#pragma pop /* 8033EB98-8033EC6C 3394D8 00D4+00 0/0 1/1 0/0 .text OSJamMessage */ #pragma push diff --git a/libs/dolphin/os/OSMutex.c b/libs/dolphin/os/OSMutex.c index a6a8cb80b0e..ad538a75d87 100644 --- a/libs/dolphin/os/OSMutex.c +++ b/libs/dolphin/os/OSMutex.c @@ -5,54 +5,136 @@ #include "dolphin/os/OSMutex.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/os/OS.h" -// -// External References: -// +#define PushTail(queue, mutex, link) \ + do { \ + OSMutex* __prev; \ + \ + __prev = (queue)->tail; \ + if (__prev == NULL) \ + (queue)->head = (mutex); \ + else \ + __prev->link.next = (mutex); \ + (mutex)->link.prev = __prev; \ + (mutex)->link.next = NULL; \ + (queue)->tail = (mutex); \ + } while (0) -void OSDisableInterrupts(); -void OSRestoreInterrupts(); +#define PopHead(queue, mutex, link) \ + do { \ + OSMutex* __next; \ + \ + (mutex) = (queue)->head; \ + __next = (mutex)->link.next; \ + if (__next == NULL) \ + (queue)->tail = NULL; \ + else \ + __next->link.prev = NULL; \ + (queue)->head = __next; \ + } while (0) + +#define PopItem(queue, mutex, link) \ + do { \ + OSMutex* __next; \ + OSMutex* __prev; \ + \ + __next = (mutex)->link.next; \ + __prev = (mutex)->link.prev; \ + \ + if (__next == NULL) \ + (queue)->tail = __prev; \ + else \ + __next->link.prev = __prev; \ + \ + if (__prev == NULL) \ + (queue)->head = __next; \ + else \ + __prev->link.next = __next; \ + } while (0) // // Declarations: // /* 8033F008-8033F040 339948 0038+00 0/0 12/12 0/0 .text OSInitMutex */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSInitMutex(struct OSMutex* mutex) { - nofralloc -#include "asm/dolphin/os/OSMutex/OSInitMutex.s" +void OSInitMutex(OSMutex* mutex) { + OSInitThreadQueue(&mutex->queue); + mutex->thread = 0; + mutex->count = 0; } -#pragma pop /* 8033F040-8033F11C 339980 00DC+00 1/1 62/62 0/0 .text OSLockMutex */ +// needs compiler epilogue patch +#ifdef NONMATCHING +void OSLockMutex(OSMutex* mutex) { + BOOL enabled = OSDisableInterrupts(); + OSThread* currentThread = OSGetCurrentThread(); + OSThread* ownerThread; + + while (TRUE) { + ownerThread = ((OSMutex*)mutex)->thread; + if (ownerThread == 0) { + mutex->thread = currentThread; + mutex->count++; + PushTail(¤tThread->owned_mutexes, mutex, link); + break; + } else if (ownerThread == currentThread) { + mutex->count++; + break; + } else { + currentThread->mutex = mutex; + __OSPromoteThread(mutex->thread, currentThread->effective_priority); + OSSleepThread(&mutex->queue); + currentThread->mutex = 0; + } + } + OSRestoreInterrupts(enabled); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void OSLockMutex(struct OSMutex* mutex) { +asm void OSLockMutex(OSMutex* mutex) { nofralloc #include "asm/dolphin/os/OSMutex/OSLockMutex.s" } #pragma pop +#endif /* 8033F11C-8033F1E4 339A5C 00C8+00 0/0 71/71 0/0 .text OSUnlockMutex */ +#ifdef NONMATCHING +void OSUnlockMutex(OSMutex* mutex) { + BOOL enabled = OSDisableInterrupts(); + OSThread* currentThread = OSGetCurrentThread(); + + if (mutex->thread == currentThread && --mutex->count == 0) { + PopItem(¤tThread->owned_mutexes, mutex, link); + mutex->thread = NULL; + if (currentThread->effective_priority < currentThread->base_priority) { + currentThread->effective_priority = __OSGetEffectivePriority(currentThread); + } + + OSWakeupThread(&mutex->queue); + } + OSRestoreInterrupts(enabled); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void OSUnlockMutex(struct OSMutex* mutex) { +asm void OSUnlockMutex(OSMutex* mutex) { nofralloc #include "asm/dolphin/os/OSMutex/OSUnlockMutex.s" } #pragma pop +#endif /* 8033F1E4-8033F254 339B24 0070+00 0/0 2/2 0/0 .text __OSUnlockAllMutex */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __OSUnlockAllMutex(struct OSThread* thread) { +asm void __OSUnlockAllMutex(OSThread* thread) { nofralloc #include "asm/dolphin/os/OSMutex/__OSUnlockAllMutex.s" } @@ -62,7 +144,7 @@ asm void __OSUnlockAllMutex(struct OSThread* thread) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm s32 OSTryLockMutex(struct OSMutex* mutex) { +asm s32 OSTryLockMutex(OSMutex* mutex) { nofralloc #include "asm/dolphin/os/OSMutex/OSTryLockMutex.s" } @@ -72,7 +154,7 @@ asm s32 OSTryLockMutex(struct OSMutex* mutex) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void OSInitCond(struct OSCond* cond) { +asm void OSInitCond(OSCond* cond) { nofralloc #include "asm/dolphin/os/OSMutex/OSInitCond.s" } @@ -82,7 +164,7 @@ asm void OSInitCond(struct OSCond* cond) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void OSWaitCond(struct OSCond* cond, struct OSMutex* mutex) { +asm void OSWaitCond(OSCond* cond, OSMutex* mutex) { nofralloc #include "asm/dolphin/os/OSMutex/OSWaitCond.s" } @@ -92,7 +174,7 @@ asm void OSWaitCond(struct OSCond* cond, struct OSMutex* mutex) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void OSSignalCond(struct OSCond* con) { +asm void OSSignalCond(OSCond* con) { nofralloc #include "asm/dolphin/os/OSMutex/OSSignalCond.s" } @@ -102,7 +184,7 @@ asm void OSSignalCond(struct OSCond* con) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm s32 __OSCheckMutex(struct OSThread* thread) { +asm s32 __OSCheckMutex(OSThread* thread) { nofralloc #include "asm/dolphin/os/OSMutex/__OSCheckMutex.s" } @@ -112,7 +194,7 @@ asm s32 __OSCheckMutex(struct OSThread* thread) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm BOOL __OSCheckDeadLock(struct OSThread* thread) { +asm BOOL __OSCheckDeadLock(OSThread* thread) { nofralloc #include "asm/dolphin/os/OSMutex/__OSCheckDeadLock.s" } @@ -122,7 +204,7 @@ asm BOOL __OSCheckDeadLock(struct OSThread* thread) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm BOOL __OSCheckMutexes(struct OSThread* thread) { +asm BOOL __OSCheckMutexes(OSThread* thread) { nofralloc #include "asm/dolphin/os/OSMutex/__OSCheckMutexes.s" } diff --git a/libs/dolphin/os/OSReset.c b/libs/dolphin/os/OSReset.c index f3b53327490..c3a06a02113 100644 --- a/libs/dolphin/os/OSReset.c +++ b/libs/dolphin/os/OSReset.c @@ -5,26 +5,17 @@ #include "dolphin/os/OSReset.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/os/OS.h" + +vu16 __VIRegs[59] : 0xCC002000; +OSThreadQueue __OSActiveThreadQueue : (OS_BASE_CACHED | 0x00DC); // // External References: // SECTION_INIT void memset(); -void OSReport(); -void __OSStopAudioSystem(); -void ICFlashInvalidate(); -void LCDisable(); -void OSDisableInterrupts(); -void __OSReboot(); -void __OSLockSram(); -void __OSUnlockSram(); -void __OSSyncSram(); -void OSDisableScheduler(); -void OSEnableScheduler(); -void OSCancelThread(); -void __PADDisableRecalibration(); +int __PADDisableRecalibration(); extern u8 __OSRebootParams[28 + 4 /* padding */]; // @@ -33,27 +24,66 @@ extern u8 __OSRebootParams[28 + 4 /* padding */]; /* ############################################################################################## */ /* 80451690-80451698 000B90 0008+00 2/2 0/0 0/0 .sbss ResetFunctionQueue */ -static u8 ResetFunctionQueue[8]; +static OSResetQueue ResetFunctionQueue; /* 8033F660-8033F6E4 339FA0 0084+00 0/0 5/5 0/0 .text OSRegisterResetFunction */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSRegisterResetFunction(OSResetFunctionInfo* info) { - nofralloc -#include "asm/dolphin/os/OSReset/OSRegisterResetFunction.s" +void OSRegisterResetFunction(OSResetFunctionInfo* func) { + OSResetFunctionInfo* tmp; + OSResetFunctionInfo* iter; + + for (iter = ResetFunctionQueue.first; iter && iter->priority <= func->priority; + iter = iter->next) + ; + + if (iter == NULL) { + tmp = ResetFunctionQueue.last; + if (tmp == NULL) { + ResetFunctionQueue.first = func; + } else { + tmp->next = func; + } + func->prev = tmp; + func->next = NULL; + ResetFunctionQueue.last = func; + return; + } + + func->next = iter; + tmp = iter->prev; + iter->prev = func; + func->prev = tmp; + if (tmp == NULL) { + ResetFunctionQueue.first = func; + return; + } + tmp->next = func; } -#pragma pop /* 8033F6E4-8033F78C 33A024 00A8+00 1/1 0/0 0/0 .text __OSCallResetFunctions */ +#ifdef NONMATCHING +BOOL __OSCallResetFunctions(u32 arg0) { + OSResetFunctionInfo* iter; + s32 retCode = 0; + + for (iter = ResetFunctionQueue.first; iter != NULL; iter = iter->next) { + retCode |= !iter->func(arg0); + } + retCode |= !__OSSyncSram(); + if (retCode) { + return 0; + } + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm BOOL __OSCallResetFunctions(s32 param_0) { +asm BOOL __OSCallResetFunctions(u32 param_0) { nofralloc #include "asm/dolphin/os/OSReset/__OSCallResetFunctions.s" } #pragma pop +#endif /* 8033F78C-8033F7FC 33A0CC 0070+00 2/2 0/0 0/0 .text Reset */ static asm void Reset(register s32 param_0) { @@ -120,31 +150,77 @@ static asm void KillThreads(void) { #pragma pop /* 8033F864-8033F8AC 33A1A4 0048+00 0/0 3/3 0/0 .text __OSDoHotReset */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSDoHotReset(s32 param_0) { - nofralloc -#include "asm/dolphin/os/OSReset/__OSDoHotReset.s" +void __OSDoHotReset(s32 arg0) { + OSDisableInterrupts(); + __VIRegs[1] = 0; + ICFlashInvalidate(); + Reset(arg0 * 8); } -#pragma pop /* ############################################################################################## */ /* 803D07E8-803D0838 02D908 004E+02 1/1 0/0 0/0 .data @153 */ -SECTION_DATA static char lit_153[] = "OSResetSystem(): You can't specify TRUE to forceMenu if you restart. Ignored\n"; +SECTION_DATA static char lit_153[] = + "OSResetSystem(): You can't specify TRUE to forceMenu if you restart. Ignored\n"; /* 80451698-804516A0 000B98 0004+04 1/1 0/0 0/0 .sbss bootThisDol */ static u8 bootThisDol[4 + 4 /* padding */]; /* 8033F8AC-8033FAAC 33A1EC 0200+00 0/0 5/5 0/0 .text OSResetSystem */ +#ifdef NONMATCHING +void OSResetSystem(int reset, u32 resetCode, BOOL forceMenu) { + BOOL rc; + BOOL disableRecalibration; + u32 unk[3]; + OSDisableScheduler(); + __OSStopAudioSystem(); + + if (reset == OS_RESET_SHUTDOWN) { + disableRecalibration = __PADDisableRecalibration(TRUE); + } + + while (!__OSCallResetFunctions(FALSE)) + ; + + if (reset == OS_RESET_HOTRESET && forceMenu) { + OSSram* sram; + + sram = __OSLockSram(); + sram->flags |= 0x40; + __OSUnlockSram(TRUE); + + while (!__OSSyncSram()) + ; + } + OSDisableInterrupts(); + __OSCallResetFunctions(TRUE); + LCDisable(); + if (reset == OS_RESET_HOTRESET) { + __OSDoHotReset(resetCode); + } else if (reset == OS_RESET_RESTART) { + KillThreads(); + OSEnableScheduler(); + __OSReboot(resetCode, forceMenu); + } + KillThreads(); + memset(OSPhysicalToCached(0x40), 0, 0xcc - 0x40); + memset(OSPhysicalToCached(0xd4), 0, 0xe8 - 0xd4); + memset(OSPhysicalToCached(0xf4), 0, 0xf8 - 0xf4); + memset(OSPhysicalToCached(0x3000), 0, 0xc0); + memset(OSPhysicalToCached(0x30c8), 0, 0xd4 - 0xc8); + memset(OSPhysicalToCached(0x30e2), 0, 1); + + __PADDisableRecalibration(disableRecalibration); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void OSResetSystem(s32 reset, u32 resetCode, BOOL forceMenu) { +asm void OSResetSystem(int reset, u32 resetCode, BOOL forceMenu) { nofralloc #include "asm/dolphin/os/OSReset/OSResetSystem.s" } #pragma pop +#endif /* 8033FAAC-8033FAE4 33A3EC 0038+00 0/0 3/3 0/0 .text OSGetResetCode */ #pragma push diff --git a/libs/dolphin/os/OSResetSW.c b/libs/dolphin/os/OSResetSW.c index d6c7707ae6b..7b65a5e5940 100644 --- a/libs/dolphin/os/OSResetSW.c +++ b/libs/dolphin/os/OSResetSW.c @@ -5,18 +5,19 @@ #include "dolphin/os/OSResetSW.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/os/OS.h" + +u8 GameChoice : (OS_BASE_CACHED | 0x30E3); + +vu32 __PIRegs[12] : 0xCC003000; + +void __OSResetSWInterruptHandler(OSInterrupt interrupt, OSContext* context); // // External References: // -void OSDisableInterrupts(); -void OSRestoreInterrupts(); -void __OSMaskInterrupts(); -void __OSGetSystemTime(); void __div2i(); -extern u8 __OSStartTime[4]; // // Declarations: @@ -24,35 +25,51 @@ extern u8 __OSStartTime[4]; /* ############################################################################################## */ /* 804516A0-804516A4 000BA0 0004+00 1/1 0/0 0/0 .sbss ResetCallback */ -static u8 ResetCallback[4]; +static OSResetCallback ResetCallback; /* 804516A4-804516A8 000BA4 0004+00 2/2 0/0 0/0 .sbss Down */ -static u8 Down[4]; +static BOOL Down; /* 804516A8-804516B0 000BA8 0004+04 2/2 0/0 0/0 .sbss LastState */ -static u8 LastState[4 + 4 /* padding */]; +static BOOL LastState; /* 804516B0-804516B4 000BB0 0004+00 1/1 0/0 0/0 .sbss HoldUp */ -static u8 HoldUp[4]; - -/* 804516B4-804516B8 000BB4 0004+00 1/1 0/0 0/0 .sbss None */ -static u8 data_804516B4[4]; +static OSTime HoldUp; /* 804516B8-804516BC 000BB8 0004+00 2/2 0/0 0/0 .sbss HoldDown */ -static u8 HoldDown[4]; - -/* 804516BC-804516C0 000BBC 0004+00 2/2 0/0 0/0 .sbss None */ -static u8 data_804516BC[4]; +static OSTime HoldDown; /* 8033FAE4-8033FBD8 33A424 00F4+00 0/0 1/1 0/0 .text __OSResetSWInterruptHandler */ +#ifdef NONMATCHING +void __OSResetSWInterruptHandler(OSInterrupt interrupt, OSContext* context) { + OSResetCallback callback; + + HoldDown = __OSGetSystemTime(); + while (__OSGetSystemTime() - HoldDown < OSMicrosecondsToTicks(100) && + !(__PIRegs[0] & 0x00010000)) { + ; + } + if (!(__PIRegs[0] & 0x00010000)) { + LastState = Down = TRUE; + __OSMaskInterrupts(OS_INTERRUPTMASK_PI_RSW); + if (ResetCallback) { + callback = ResetCallback; + ResetCallback = NULL; + callback(); + } + } + __PIRegs[0] = 2; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __OSResetSWInterruptHandler(void) { +asm void __OSResetSWInterruptHandler(OSInterrupt interrupt, OSContext* context) { nofralloc #include "asm/dolphin/os/OSResetSW/__OSResetSWInterruptHandler.s" } #pragma pop +#endif /* 8033FBD8-8033FE70 33A518 0298+00 1/1 0/0 0/0 .text OSGetResetButtonState */ #pragma push @@ -65,11 +82,6 @@ static asm BOOL OSGetResetButtonState(void) { #pragma pop /* 8033FE70-8033FE90 33A7B0 0020+00 0/0 1/1 0/0 .text OSGetResetSwitchState */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL OSGetResetSwitchState(void) { - nofralloc -#include "asm/dolphin/os/OSResetSW/OSGetResetSwitchState.s" +BOOL OSGetResetSwitchState(void) { + return OSGetResetButtonState(); } -#pragma pop diff --git a/libs/dolphin/os/OSRtc.c b/libs/dolphin/os/OSRtc.c index 9b84faf09a9..6e2195bd55a 100644 --- a/libs/dolphin/os/OSRtc.c +++ b/libs/dolphin/os/OSRtc.c @@ -5,23 +5,12 @@ #include "dolphin/os/OSRtc.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/exi/EXIBios.h" +#include "dolphin/os/OS.h" -// -// External References: -// - -void DCInvalidateRange(); -void OSDisableInterrupts(); -void OSRestoreInterrupts(); -void EXIImm(); -void EXIImmEx(); -void EXIDma(); -void EXISync(); -void EXISelect(); -void EXIDeselect(); -void EXILock(); -void EXIUnlock(); +static void WriteSramCallback(s32 chan, OSContext* context); +static BOOL WriteSram(void* buffer, u32 offset, u32 size); +static BOOL UnlockSram(BOOL commit, u32 offset); // // Declarations: @@ -29,43 +18,80 @@ void EXIUnlock(); /* ############################################################################################## */ /* 8044BB20-8044BB78 078840 0054+04 14/14 0/0 0/0 .bss Scb */ -static u8 Scb[84 + 4 /* padding */]; +static SramControlBlock Scb ALIGN_DECL(32); /* 8033FE90-8033FEF0 33A7D0 0060+00 2/2 0/0 0/0 .text WriteSramCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void WriteSramCallback(void) { - nofralloc -#include "asm/dolphin/os/OSRtc/WriteSramCallback.s" +static void WriteSramCallback(s32 chan, OSContext* context) { + Scb.sync = WriteSram(Scb.sram + Scb.offset, Scb.offset, RTC_SRAM_SIZE - Scb.offset); + if (Scb.sync) { + Scb.offset = RTC_SRAM_SIZE; + } +} + +static inline BOOL ReadSram(void* buffer) { + BOOL err; + u32 cmd; + + DCInvalidateRange(buffer, RTC_SRAM_SIZE); + + if (!EXILock(RTC_CHAN, RTC_DEV, 0)) { + return FALSE; + } + if (!EXISelect(RTC_CHAN, RTC_DEV, RTC_FREQ)) { + EXIUnlock(RTC_CHAN); + return FALSE; + } + + cmd = RTC_CMD_READ | RTC_SRAM_ADDR; + err = FALSE; + err |= !EXIImm(RTC_CHAN, &cmd, 4, 1, NULL); + err |= !EXISync(RTC_CHAN); + err |= !EXIDma(RTC_CHAN, buffer, RTC_SRAM_SIZE, 0, NULL); + err |= !EXISync(RTC_CHAN); + err |= !EXIDeselect(RTC_CHAN); + EXIUnlock(RTC_CHAN); + + return !err; } -#pragma pop /* 8033FEF0-80340008 33A830 0118+00 1/1 0/0 0/0 .text WriteSram */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm u8 WriteSram(u8* param_0, u32 param_1, u32 param_2) { - nofralloc -#include "asm/dolphin/os/OSRtc/WriteSram.s" +BOOL WriteSram(void* buffer, u32 offset, u32 size) { + BOOL err; + u32 cmd; + + if (!EXILock(RTC_CHAN, RTC_DEV, WriteSramCallback)) { + return FALSE; + } + if (!EXISelect(RTC_CHAN, RTC_DEV, RTC_FREQ)) { + EXIUnlock(RTC_CHAN); + return FALSE; + } + + offset <<= 6; + cmd = RTC_CMD_WRITE | RTC_SRAM_ADDR + offset; + err = FALSE; + err |= !EXIImm(RTC_CHAN, &cmd, 4, 1, NULL); + err |= !EXISync(RTC_CHAN); + err |= !EXIImmEx(RTC_CHAN, buffer, (s32)size, 1); + err |= !EXIDeselect(RTC_CHAN); + EXIUnlock(RTC_CHAN); + + return !err; } -#pragma pop /* 80340008-80340144 33A948 013C+00 0/0 1/1 0/0 .text __OSInitSram */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSInitSram(void) { - nofralloc -#include "asm/dolphin/os/OSRtc/__OSInitSram.s" +void __OSInitSram(void) { + Scb.locked = Scb.enabled = FALSE; + Scb.sync = ReadSram(Scb.sram); + Scb.offset = RTC_SRAM_SIZE; + OSSetGbsMode(OSGetGbsMode()); } -#pragma pop /* 80340144-803401A0 33AA84 005C+00 0/0 3/3 0/0 .text __OSLockSram */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm u16* __OSLockSram(void) { +asm OSSram* __OSLockSram(void) { nofralloc #include "asm/dolphin/os/OSRtc/__OSLockSram.s" } @@ -75,7 +101,7 @@ asm u16* __OSLockSram(void) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm u16* __OSLockSramEx(void) { +asm OSSramEx* __OSLockSramEx(void) { nofralloc #include "asm/dolphin/os/OSRtc/__OSLockSramEx.s" } @@ -85,7 +111,7 @@ asm u16* __OSLockSramEx(void) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm u32 UnlockSram(s32 param_0, u32 param_1) { +static asm BOOL UnlockSram(BOOL commit, u32 offset) { nofralloc #include "asm/dolphin/os/OSRtc/UnlockSram.s" } @@ -95,7 +121,7 @@ static asm u32 UnlockSram(s32 param_0, u32 param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm u32 __OSUnlockSram(s32 param_0) { +asm BOOL __OSUnlockSram(BOOL commit) { nofralloc #include "asm/dolphin/os/OSRtc/__OSUnlockSram.s" } @@ -105,21 +131,16 @@ asm u32 __OSUnlockSram(s32 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm u32 __OSUnlockSramEx(s32 param_0) { +asm BOOL __OSUnlockSramEx(BOOL commit) { nofralloc #include "asm/dolphin/os/OSRtc/__OSUnlockSramEx.s" } #pragma pop /* 80340580-80340590 33AEC0 0010+00 0/0 2/2 0/0 .text __OSSyncSram */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 __OSSyncSram(void) { - nofralloc -#include "asm/dolphin/os/OSRtc/__OSSyncSram.s" +BOOL __OSSyncSram(void) { + return Scb.sync; } -#pragma pop /* 80340590-80340610 33AED0 0080+00 0/0 4/4 0/0 .text OSGetSoundMode */ #pragma push @@ -165,21 +186,36 @@ asm void OSSetProgressiveMode(u32 mode) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm u16 OSGetWirelessID(s32 index) { +asm u16 OSGetWirelessID(s32 channel) { nofralloc #include "asm/dolphin/os/OSRtc/OSGetWirelessID.s" } #pragma pop /* 8034084C-803408F8 33B18C 00AC+00 0/0 4/4 0/0 .text OSSetWirelessID */ +#ifdef NONMATCHING +void OSSetWirelessID(s32 channel, u16 id) { + OSSramEx* sram; + + sram = __OSLockSramEx(); + if (sram->wirelessPadID[channel] != id) { + sram->wirelessPadID[channel] = id; + __OSUnlockSramEx(TRUE); + return; + } + + __OSUnlockSramEx(FALSE); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void OSSetWirelessID(s32 index, u16 id) { +asm void OSSetWirelessID(s32 channel, u16 id) { nofralloc #include "asm/dolphin/os/OSRtc/OSSetWirelessID.s" } #pragma pop +#endif /* 803408F8-80340968 33B238 0070+00 1/1 0/0 0/0 .text OSGetGbsMode */ #pragma push diff --git a/libs/dolphin/os/OSSync.c b/libs/dolphin/os/OSSync.c index 2a38584f785..55fa3765f7b 100644 --- a/libs/dolphin/os/OSSync.c +++ b/libs/dolphin/os/OSSync.c @@ -1,48 +1,35 @@ -// -// Generated By: dol2asm -// Translation Unit: OSSync -// - #include "dolphin/os/OSSync.h" -#include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/base/PPCArch.h" +#include "dolphin/os/OS.h" -// -// External References: -// - -SECTION_INIT void memcpy(); -void DCFlushRangeNoSync(); -void ICInvalidateRange(); - -// -// Declarations: -// +void __OSSystemCallVectorStart(); +void __OSSystemCallVectorEnd(); /* 80340A20-80340A3C 33B360 001C+00 1/1 0/0 0/0 .text SystemCallVector */ static asm void SystemCallVector(void) { // clang-format off nofralloc - mfspr r9, 0x3F0 +entry __OSSystemCallVectorStart + mfspr r9, HID0 ori r10, r9, 8 - mtspr 0x3F0, r10 + mtspr HID0, r10 isync sync - mtspr 0x3F0, r9 + mtspr HID0, r9 rfi - entry __OSSystemCallVectorEnd +entry __OSSystemCallVectorEnd nop // clang-format on } /* 80340A40-80340AA4 33B380 0064+00 0/0 1/1 0/0 .text __OSInitSystemCall */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSInitSystemCall(void) { - nofralloc -#include "asm/dolphin/os/OSSync/__OSInitSystemCall.s" +void __OSInitSystemCall(void) { + void* addr = OSPhysicalToCached(0x00C00); + memcpy(addr, __OSSystemCallVectorStart, + (size_t)__OSSystemCallVectorEnd - (size_t)__OSSystemCallVectorStart); + DCFlushRangeNoSync(addr, 0x100); + __sync(); + ICInvalidateRange(addr, 0x100); } -#pragma pop diff --git a/libs/dolphin/os/OSThread.c b/libs/dolphin/os/OSThread.c index 8553c040324..3519272ce2e 100644 --- a/libs/dolphin/os/OSThread.c +++ b/libs/dolphin/os/OSThread.c @@ -5,19 +5,80 @@ #include "dolphin/os/OSThread.h" #include "dol2asm.h" +#include "dolphin/os/OS.h" #include "dolphin/os/OSMutex.h" -#include "dolphin/types.h" + +OSThread* __OSCurrentThread : OS_BASE_CACHED + 0x00E4; +OSThreadQueue __OSActiveThreadQueue : OS_BASE_CACHED + 0x00DC; +volatile OSContext __OSCurrentContext : OS_BASE_CACHED + 0x00D4; +volatile OSContext* __OSFPUContext : OS_BASE_CACHED + 0x00D8; + +#define AddTail(queue, thread, link) \ + do { \ + OSThread* prev; \ + \ + prev = (queue)->tail; \ + if (prev == NULL) \ + (queue)->head = (thread); \ + else \ + prev->link.next = (thread); \ + (thread)->link.prev = prev; \ + (thread)->link.next = NULL; \ + (queue)->tail = (thread); \ + } while (0) + +#define AddPrio(queue, thread, link) \ + do { \ + OSThread *prev, *next; \ + \ + for (next = (queue)->head; next && next->effective_priority <= thread->effective_priority; \ + next = next->link.next) \ + ; \ + if (next == NULL) \ + AddTail(queue, thread, link); \ + else { \ + (thread)->link.next = next; \ + prev = next->link.prev; \ + next->link.prev = (thread); \ + (thread)->link.prev = prev; \ + if (prev == NULL) \ + (queue)->head = (thread); \ + else \ + prev->link.next = (thread); \ + } \ + } while (0) + +#define RemoveItem(queue, thread, link) \ + do { \ + OSThread *next, *prev; \ + next = (thread)->link.next; \ + prev = (thread)->link.prev; \ + if (next == NULL) \ + (queue)->tail = prev; \ + else \ + next->link.prev = prev; \ + if (prev == NULL) \ + (queue)->head = next; \ + else \ + prev->link.next = next; \ + } while (0) + +#define RemoveHead(queue, thread, link) \ + do { \ + OSThread* __next; \ + (thread) = (queue)->head; \ + __next = (thread)->link.next; \ + if (__next == NULL) \ + (queue)->tail = NULL; \ + else \ + __next->link.prev = NULL; \ + (queue)->head = __next; \ + } while (0) // // External References: // -void OSReport(); -void OSPanic(); -void OSGetStackPointer(); -void OSDisableInterrupts(); -void OSEnableInterrupts(); -void OSRestoreInterrupts(); extern u8 __OSErrorTable[68 + 12 /* padding */]; extern u32 __OSFpscrEnableBits; void _epilog(); @@ -72,12 +133,57 @@ static u32 RunQueueBits; static BOOL RunQueueHint; /* 804516C8-804516D0 000BC8 0004+04 4/4 0/0 0/0 .sbss Reschedule */ -static u8 Reschedule[4 + 4 /* padding */]; - -/* 80340B1C-80340C74 33B45C 0158+00 0/0 1/1 0/0 .text __OSThreadInit */ +static volatile s32 Reschedule; extern void* _stack_end; +static inline void OSInitMutexQueue(OSMutexQueue* queue) { + queue->head = queue->tail = NULL; +} + +static inline void OSSetCurrentThread(OSThread* thread) { + SwitchThreadCallback(__OSCurrentThread, thread); + __OSCurrentThread = thread; +} + +/* 80340B1C-80340C74 33B45C 0158+00 0/0 1/1 0/0 .text __OSThreadInit */ +#ifdef NONMATCHING +void __OSThreadInit() { + OSThread* thread = &DefaultThread; + int prio; + + thread->state = OS_THREAD_STATE_RUNNING; + thread->attributes = OS_THREAD_ATTR_DETACH; + thread->effective_priority = thread->base_priority = 16; + thread->suspend_count = 0; + thread->exit_value = (void*)-1; + thread->mutex = NULL; + OSInitThreadQueue(&thread->join_queue); + OSInitMutexQueue(&thread->owned_mutexes); + + __OSFPUContext = &thread->context; + + OSClearContext(&thread->context); + OSSetCurrentContext(&thread->context); + /* thread->stack_base = (void*)_stack_addr; + thread->stack_end = (void*)_stack_end; */ + *(thread->stack_end) = OS_THREAD_STACK_MAGIC; + + OSSetCurrentThread(thread); + OSClearStack(0); + + RunQueueBits = 0; + RunQueueHint = FALSE; + for (prio = OS_PRIORITY_MIN; prio <= OS_PRIORITY_MAX; ++prio) { + OSInitThreadQueue(&RunQueue[prio]); + } + + OSInitThreadQueue(&__OSActiveThreadQueue); + AddTail(&__OSActiveThreadQueue, thread, active_threads_link); + OSClearContext(&IdleContext); + Reschedule = 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -86,6 +192,7 @@ asm void __OSThreadInit(void) { #include "asm/dolphin/os/OSThread/__OSThreadInit.s" } #pragma pop +#endif /* 80340C74-80340C84 33B5B4 0010+00 1/1 9/9 0/0 .text OSInitThreadQueue */ void OSInitThreadQueue(OSThreadQueue* queue) { @@ -125,26 +232,33 @@ asm s32 OSEnableScheduler(void) { } #pragma pop +static inline void SetRun(OSThread* thread) { + thread->queue = &RunQueue[thread->effective_priority]; + AddTail(thread->queue, thread, link); + RunQueueBits |= 1u << (OS_PRIORITY_MAX - thread->effective_priority); + RunQueueHint = TRUE; +} + /* 80340D44-80340DAC 33B684 0068+00 3/3 0/0 0/0 .text UnsetRun */ static void UnsetRun(OSThread* thread) { OSThreadQueue* queue; OSThread* next; OSThread* prev; - prev = thread->link.prev; + prev = thread->link.next; queue = thread->queue; - next = thread->link.next; + next = thread->link.prev; if (prev == NULL) { queue->tail = next; } else { - prev->link.next = next; + prev->link.prev = next; } if (next == NULL) { queue->head = prev; } else { - next->link.prev = prev; + next->link.next = prev; } if (queue->head == NULL) { @@ -159,7 +273,7 @@ s32 __OSGetEffectivePriority(OSThread* thread) { s32 prio = thread->base_priority; OSMutex* mutex; - for (mutex = thread->owned_mutexes.prev; mutex != NULL; mutex = mutex->link.prev) { + for (mutex = thread->owned_mutexes.head; mutex != NULL; mutex = mutex->link.prev) { OSThread* mutexThread = mutex->queue.head; if (mutexThread != NULL && mutexThread->effective_priority < prio) { prio = mutexThread->effective_priority; @@ -170,14 +284,40 @@ s32 __OSGetEffectivePriority(OSThread* thread) { } /* 80340DE8-80340FA8 33B728 01C0+00 5/5 0/0 0/0 .text SetEffectivePriority */ +// needs compiler epilogue patch +#ifdef NONMATCHING +static OSThread* SetEffectivePriority(OSThread* thread, s32 priority) { + switch (thread->state) { + case OS_THREAD_STATE_READY: + UnsetRun(thread); + thread->effective_priority = priority; + SetRun(thread); + break; + case OS_THREAD_STATE_WAITING: + RemoveItem(thread->queue, thread, link); + thread->effective_priority = priority; + AddPrio(thread->queue, thread, link); + if (thread->mutex) { + return thread->mutex->thread; + } + break; + case OS_THREAD_STATE_RUNNING: + RunQueueHint = TRUE; + thread->effective_priority = priority; + break; + } + return NULL; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void SetEffectivePriority(OSThread* thread, s32 priority) { +static asm OSThread* SetEffectivePriority(OSThread* thread, s32 priority) { nofralloc #include "asm/dolphin/os/OSThread/SetEffectivePriority.s" } #pragma pop +#endif /* 80340FA8-80340FF8 33B8E8 0050+00 0/0 1/1 0/0 .text __OSPromoteThread */ #pragma push @@ -189,35 +329,107 @@ asm void __OSPromoteThread(OSThread* thread, s32 priority) { } #pragma pop +static inline void __OSSwitchThread(OSThread* nextThread) { + OSSetCurrentThread(nextThread); + OSSetCurrentContext(&nextThread->context); + OSLoadContext(&nextThread->context); +} + /* 80340FF8-80341220 33B938 0228+00 9/9 0/0 0/0 .text SelectThread */ +#ifdef NONMATCHING +inline OSThread* i_OSGetCurrentThread(void) { + return OS_CURRENT_THREAD; +} + +static OSThread* SelectThread(BOOL yield) { + OSContext* currentContext; + OSThread* currentThread; + OSThread* nextThread; + OSPriority priority; + OSThreadQueue* queue; + + if (0 < Reschedule) { + return 0; + } + + currentContext = OSGetCurrentContext(); + currentThread = i_OSGetCurrentThread(); + if (currentContext != ¤tThread->context) { + return 0; + } + + if (currentThread) { + if (currentThread->state == OS_THREAD_STATE_RUNNING) { + if (!yield) { + priority = __cntlzw(RunQueueBits); + if (currentThread->effective_priority <= priority) { + return 0; + } + } + currentThread->state = OS_THREAD_STATE_READY; + SetRun(currentThread); + } + + if (!(currentThread->context.state & OS_CONTEXT_STATE_EXC) && + OSSaveContext(¤tThread->context)) { + return 0; + } + } + + OSSetCurrentThread(NULL); + if (RunQueueBits == 0) { + OSSetCurrentContext(&IdleContext); + do { + OSEnableInterrupts(); + while (RunQueueBits == 0) + ; + OSDisableInterrupts(); + } while (RunQueueBits == 0); + + OSClearContext(&IdleContext); + } + + RunQueueHint = FALSE; + + priority = __cntlzw(RunQueueBits); + queue = &RunQueue[priority]; + RemoveHead(queue, nextThread, link); + if (queue->head == 0) { + RunQueueBits &= ~(1u << (OS_PRIORITY_MAX - priority)); + } + nextThread->queue = NULL; + nextThread->state = OS_THREAD_STATE_RUNNING; + __OSSwitchThread(nextThread); + return nextThread; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void SelectThread(OSThread* thread) { +static asm OSThread* SelectThread(BOOL yield) { nofralloc #include "asm/dolphin/os/OSThread/SelectThread.s" } #pragma pop +#endif /* 80341220-80341250 33BB60 0030+00 0/0 3/3 0/0 .text __OSReschedule */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSReschedule(void) { - nofralloc -#include "asm/dolphin/os/OSThread/__OSReschedule.s" +void __OSReschedule(void) { + if (!RunQueueHint) { + return; + } + + SelectThread(FALSE); } -#pragma pop /* 80341250-8034128C 33BB90 003C+00 0/0 2/2 0/0 .text OSYieldThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSYieldThread(void) { - nofralloc -#include "asm/dolphin/os/OSThread/OSYieldThread.s" +void OSYieldThread(void) { + BOOL enabled; + + enabled = OSDisableInterrupts(); + SelectThread(TRUE); + OSRestoreInterrupts(enabled); } -#pragma pop /* 8034128C-80341474 33BBCC 01E8+00 0/0 5/5 3/3 .text OSCreateThread */ #pragma push @@ -327,7 +539,8 @@ static asm s32 CheckThreadQueue(OSThread* thread) { /* ############################################################################################## */ /* 803D0838-803D0898 02D958 005F+01 1/1 0/0 0/0 .data @831 */ -SECTION_DATA static char lit_831[] = "OSCheckActiveThreads: Failed RunQueue[prio].head != NULL && RunQueue[prio].tail != NULL in %d\n"; +SECTION_DATA static char lit_831[] = "OSCheckActiveThreads: Failed RunQueue[prio].head != NULL && " + "RunQueue[prio].tail != NULL in %d\n"; /* 803D0898-803D08A4 02D9B8 000B+01 0/1 0/0 0/0 .data @832 */ #pragma push @@ -338,49 +551,62 @@ SECTION_DATA static char lit_832[] = "OSThread.c"; /* 803D08A4-803D0904 02D9C4 005F+01 0/1 0/0 0/0 .data @834 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_834[] = "OSCheckActiveThreads: Failed RunQueue[prio].head == NULL && RunQueue[prio].tail == NULL in %d\n"; +SECTION_DATA static char lit_834[] = "OSCheckActiveThreads: Failed RunQueue[prio].head == NULL && " + "RunQueue[prio].tail == NULL in %d\n"; #pragma pop /* 803D0904-803D094C 02DA24 0046+02 0/1 0/0 0/0 .data @835 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_835[] = "OSCheckActiveThreads: Failed CheckThreadQueue(&RunQueue[prio]) in %d\n"; +SECTION_DATA static char lit_835[] = + "OSCheckActiveThreads: Failed CheckThreadQueue(&RunQueue[prio]) in %d\n"; #pragma pop /* 803D094C-803D09CC 02DA6C 007E+02 0/1 0/0 0/0 .data @836 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_836[] = "OSCheckActiveThreads: Failed __OSActiveThreadQueue.head == NULL || __OSActiveThreadQueue.head->linkActive.prev == NULL in %d\n"; +SECTION_DATA static char lit_836[] = + "OSCheckActiveThreads: Failed __OSActiveThreadQueue.head == NULL || " + "__OSActiveThreadQueue.head->linkActive.prev == NULL in %d\n"; #pragma pop /* 803D09CC-803D0A4C 02DAEC 007E+02 0/1 0/0 0/0 .data @837 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_837[] = "OSCheckActiveThreads: Failed __OSActiveThreadQueue.tail == NULL || __OSActiveThreadQueue.tail->linkActive.next == NULL in %d\n"; +SECTION_DATA static char lit_837[] = + "OSCheckActiveThreads: Failed __OSActiveThreadQueue.tail == NULL || " + "__OSActiveThreadQueue.tail->linkActive.next == NULL in %d\n"; #pragma pop /* 803D0A4C-803D0AC8 02DB6C 007A+02 0/1 0/0 0/0 .data @838 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_838[] = "OSCheckActiveThreads: Failed thread->linkActive.next == NULL || thread == thread->linkActive.next->linkActive.prev in %d\n"; +SECTION_DATA static char lit_838[] = + "OSCheckActiveThreads: Failed thread->linkActive.next == NULL || thread == " + "thread->linkActive.next->linkActive.prev in %d\n"; #pragma pop /* 803D0AC8-803D0B44 02DBE8 007A+02 0/1 0/0 0/0 .data @839 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_839[] = "OSCheckActiveThreads: Failed thread->linkActive.prev == NULL || thread == thread->linkActive.prev->linkActive.next in %d\n"; +SECTION_DATA static char lit_839[] = + "OSCheckActiveThreads: Failed thread->linkActive.prev == NULL || thread == " + "thread->linkActive.prev->linkActive.next in %d\n"; #pragma pop /* 803D0B44-803D0B98 02DC64 0051+03 0/1 0/0 0/0 .data @840 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_840[] = "OSCheckActiveThreads: Failed *(thread->stackEnd) == OS_THREAD_STACK_MAGIC in %d\n"; +SECTION_DATA static char lit_840[] = + "OSCheckActiveThreads: Failed *(thread->stackEnd) == OS_THREAD_STACK_MAGIC in %d\n"; #pragma pop /* 803D0B98-803D0C0C 02DCB8 0071+03 0/1 0/0 0/0 .data @841 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_841[] = "OSCheckActiveThreads: Failed OS_PRIORITY_MIN <= thread->priority && thread->priority <= OS_PRIORITY_MAX+1 in %d\n"; +SECTION_DATA static char lit_841[] = + "OSCheckActiveThreads: Failed OS_PRIORITY_MIN <= thread->priority && thread->priority <= " + "OS_PRIORITY_MAX+1 in %d\n"; #pragma pop /* 803D0C0C-803D0C48 02DD2C 0039+03 0/1 0/0 0/0 .data @842 */ @@ -392,31 +618,36 @@ SECTION_DATA static char lit_842[] = "OSCheckActiveThreads: Failed 0 <= thread-> /* 803D0C48-803D0C94 02DD68 0049+03 0/1 0/0 0/0 .data @843 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_843[] = "OSCheckActiveThreads: Failed CheckThreadQueue(&thread->queueJoin) in %d\n"; +SECTION_DATA static char lit_843[] = + "OSCheckActiveThreads: Failed CheckThreadQueue(&thread->queueJoin) in %d\n"; #pragma pop /* 803D0C94-803D0CE8 02DDB4 0051+03 0/1 0/0 0/0 .data @844 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_844[] = "OSCheckActiveThreads: Failed thread->queue == &RunQueue[thread->priority] in %d\n"; +SECTION_DATA static char lit_844[] = + "OSCheckActiveThreads: Failed thread->queue == &RunQueue[thread->priority] in %d\n"; #pragma pop /* 803D0CE8-803D0D3C 02DE08 0052+02 0/1 0/0 0/0 .data @845 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_845[] = "OSCheckActiveThreads: Failed IsMember(&RunQueue[thread->priority], thread) in %d\n"; +SECTION_DATA static char lit_845[] = + "OSCheckActiveThreads: Failed IsMember(&RunQueue[thread->priority], thread) in %d\n"; #pragma pop /* 803D0D3C-803D0D98 02DE5C 0059+03 0/1 0/0 0/0 .data @846 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_846[] = "OSCheckActiveThreads: Failed thread->priority == __OSGetEffectivePriority(thread) in %d\n"; +SECTION_DATA static char lit_846[] = + "OSCheckActiveThreads: Failed thread->priority == __OSGetEffectivePriority(thread) in %d\n"; #pragma pop /* 803D0D98-803D0DDC 02DEB8 0042+02 0/1 0/0 0/0 .data @847 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_847[] = "OSCheckActiveThreads: Failed !IsSuspended(thread->suspend) in %d\n"; +SECTION_DATA static char lit_847[] = + "OSCheckActiveThreads: Failed !IsSuspended(thread->suspend) in %d\n"; #pragma pop /* 803D0DDC-803D0E18 02DEFC 003A+02 0/1 0/0 0/0 .data @848 */ @@ -434,13 +665,15 @@ SECTION_DATA static char lit_849[] = "OSCheckActiveThreads: Failed thread->queue /* 803D0E54-803D0E98 02DF74 0044+00 0/1 0/0 0/0 .data @850 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_850[] = "OSCheckActiveThreads: Failed CheckThreadQueue(thread->queue) in %d\n"; +SECTION_DATA static char lit_850[] = + "OSCheckActiveThreads: Failed CheckThreadQueue(thread->queue) in %d\n"; #pragma pop /* 803D0E98-803D0EDC 02DFB8 0044+00 0/1 0/0 0/0 .data @851 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_851[] = "OSCheckActiveThreads: Failed IsMember(thread->queue, thread) in %d\n"; +SECTION_DATA static char lit_851[] = + "OSCheckActiveThreads: Failed IsMember(thread->queue, thread) in %d\n"; #pragma pop /* 803D0EDC-803D0F18 02DFFC 003B+01 0/1 0/0 0/0 .data @852 */ @@ -452,25 +685,29 @@ SECTION_DATA static char lit_852[] = "OSCheckActiveThreads: Failed thread->prior /* 803D0F18-803D0F58 02E038 003F+01 0/1 0/0 0/0 .data @853 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_853[] = "OSCheckActiveThreads: Failed !__OSCheckDeadLock(thread) in %d\n"; +SECTION_DATA static char lit_853[] = + "OSCheckActiveThreads: Failed !__OSCheckDeadLock(thread) in %d\n"; #pragma pop /* 803D0F58-803D0FC0 02E078 0067+01 0/1 0/0 0/0 .data @854 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_854[] = "OSCheckActiveThreads: Failed thread->queueMutex.head == NULL && thread->queueMutex.tail == NULL in %d\n"; +SECTION_DATA static char lit_854[] = "OSCheckActiveThreads: Failed thread->queueMutex.head == NULL " + "&& thread->queueMutex.tail == NULL in %d\n"; #pragma pop /* 803D0FC0-803D1008 02E0E0 0045+03 0/1 0/0 0/0 .data @855 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_855[] = "OSCheckActiveThreads: Failed. unkown thread state (%d) of thread %p\n"; +SECTION_DATA static char lit_855[] = + "OSCheckActiveThreads: Failed. unkown thread state (%d) of thread %p\n"; #pragma pop /* 803D1008-803D1048 02E128 003D+03 0/1 0/0 0/0 .data @856 */ #pragma push #pragma force_active on -SECTION_DATA static char lit_856[] = "OSCheckActiveThreads: Failed __OSCheckMutexes(thread) in %d\n"; +SECTION_DATA static char lit_856[] = + "OSCheckActiveThreads: Failed __OSCheckMutexes(thread) in %d\n"; #pragma pop /* 804509BC-804509C0 00043C 0001+03 1/1 0/0 0/0 .sdata @833 */ @@ -499,4 +736,4 @@ static asm void OSClearStack(u32 value) { /* ############################################################################################## */ /* 804516D0-804516D8 000BD0 0008+00 0/0 2/1 0/0 .sbss None */ extern u8 data_804516D0[8]; -u8 data_804516D0[8]; +u8 data_804516D0[8] ALIGN_DECL(8); diff --git a/libs/dolphin/os/OSTime.c b/libs/dolphin/os/OSTime.c index 0d7b86abe0a..3e2abdf929e 100644 --- a/libs/dolphin/os/OSTime.c +++ b/libs/dolphin/os/OSTime.c @@ -5,8 +5,13 @@ #include "dolphin/os/OSTime.h" #include "dol2asm.h" +#include "dolphin/os/OS.h" #include "dolphin/os/OSInterrupt.h" +#define OS_TIME_MONTH_MAX 12 +#define OS_TIME_WEEK_DAY_MAX 7 +#define OS_TIME_YEAR_DAY_MAX 365 + // // External References: // @@ -35,7 +40,7 @@ asm OSTime OSGetTime(void) { } /* 80342714-8034271C -00001 0008+00 0/0 0/0 0/0 .text OSGetTick */ -asm OSTick OSGetTick(void){ +asm OSTick OSGetTick(void) { // clang-format off nofralloc @@ -44,36 +49,33 @@ asm OSTick OSGetTick(void){ // clang-format on } +#define OS_SYSTEMTIME_BASE 0x30D8 + /* 8034271C-80342780 33D05C 0064+00 0/0 16/16 0/0 .text __OSGetSystemTime */ -// matches with mwcc 1.2.5e -#ifdef NONMATCHING OSTime __OSGetSystemTime(void) { - s32 pad; - const BOOL intr = OSDisableInterrupts(); - const OSTime time = OSGetTime() + OS_SYSTEM_TIME; - OSRestoreInterrupts(intr); - return time; + BOOL enabled; + OSTime* timeAdjustAddr = (OSTime*)(OS_BASE_CACHED + OS_SYSTEMTIME_BASE); + OSTime result; + + enabled = OSDisableInterrupts(); + result = *timeAdjustAddr + OSGetTime(); + OSRestoreInterrupts(enabled); + + return result; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm OSTime __OSGetSystemTime(void) { - nofralloc -#include "asm/dolphin/os/OSTime/__OSGetSystemTime.s" -} -#pragma pop -#endif /* 80342780-803427D8 33D0C0 0058+00 0/0 1/1 0/0 .text __OSTimeToSystemTime */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm OSTime __OSTimeToSystemTime(OSTime time) { - nofralloc -#include "asm/dolphin/os/OSTime/__OSTimeToSystemTime.s" +OSTime __OSTimeToSystemTime(OSTime time) { + BOOL enabled; + OSTime* timeAdjustAddr = (OSTime*)(OS_BASE_CACHED + OS_SYSTEMTIME_BASE); + OSTime result; + + enabled = OSDisableInterrupts(); + result = *timeAdjustAddr + time; + OSRestoreInterrupts(enabled); + + return result; } -#pragma pop /* ############################################################################################## */ /* 803D1048-803D1078 02E168 0030+00 1/1 0/0 0/0 .data YearDays */ @@ -88,17 +90,78 @@ static s32 LeapYearDays[] = { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, }; -/* 803427D8-80342974 33D118 019C+00 1/1 0/0 0/0 .text GetDates */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GetDates(OSTime ticks, OSCalendarTime* ct) { - nofralloc -#include "asm/dolphin/os/OSTime/GetDates.s" +static inline BOOL IsLeapYear(s32 year) { + return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } -#pragma pop + +static inline s32 GetYearDays(s32 year, s32 mon) { + return (IsLeapYear(year) ? LeapYearDays : YearDays)[mon]; +} + +static inline s32 GetLeapDays(s32 year) { + if (year < 1) { + return 0; + } + return (year + 3) / 4 - (year - 1) / 100 + (year - 1) / 400; +} + +/* 803427D8-80342974 33D118 019C+00 1/1 0/0 0/0 .text GetDates */ +static void GetDates(s32 days, OSCalendarTime* cal) { + s32 year; + s32 totalDays; + s32* p_days; + s32 month; + cal->week_day = (days + 6) % OS_TIME_WEEK_DAY_MAX; + + for (year = days / OS_TIME_YEAR_DAY_MAX; + days < (totalDays = year * OS_TIME_YEAR_DAY_MAX + GetLeapDays(year));) { + year--; + } + + days -= totalDays; + cal->year = year; + cal->year_day = days; + + p_days = IsLeapYear(year) ? LeapYearDays : YearDays; + month = OS_TIME_MONTH_MAX; + while (days < p_days[--month]) { + ; + } + cal->month = month; + cal->day_of_month = days - p_days[month] + 1; +} + +#define BIAS (2000 * 365 + (2000 + 3) / 4 - (2000 - 1) / 100 + (2000 - 1) / 400) /* 80342974-80342B78 33D2B4 0204+00 0/0 4/4 0/0 .text OSTicksToCalendarTime */ +#ifdef NONMATCHING +void OSTicksToCalendarTime(OSTime ticks, OSCalendarTime* td) { + int days; + int secs; + OSTime d; + + d = ticks % OSSecondsToTicks(1); + if (d < 0) { + d += OSSecondsToTicks(1); + } + td->microseconds = (int)(OSTicksToMicroseconds(d) % 1000); + td->milliseconds = (int)(OSTicksToMilliseconds(d) % 1000); + + ticks -= d; + days = (int)(OSTicksToSeconds(ticks) / 86400 + BIAS); + secs = (int)(OSTicksToSeconds(ticks) % 86400); + if (secs < 0) { + days -= 1; + secs += 24 * 60 * 60; + } + + GetDates(days, td); + + td->hours = secs / 60 / 60; + td->minutes = (secs / 60) % 60; + td->seconds = secs % 60; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -107,3 +170,4 @@ asm void OSTicksToCalendarTime(OSTime ticks, OSCalendarTime* ct) { #include "asm/dolphin/os/OSTime/OSTicksToCalendarTime.s" } #pragma pop +#endif diff --git a/libs/dolphin/os/__ppc_eabi_init.c b/libs/dolphin/os/__ppc_eabi_init.c index 8aef4938994..ce4cac67fef 100644 --- a/libs/dolphin/os/__ppc_eabi_init.c +++ b/libs/dolphin/os/__ppc_eabi_init.c @@ -5,7 +5,7 @@ #include "dolphin/os/__ppc_eabi_init.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/base/PPCArch.h" // // Forward References: @@ -19,7 +19,6 @@ void _ExitProcess(); // External References: // -void PPCHalt(); SECTION_CTORS10 extern void* const __init_cpp_exceptions_reference; // @@ -27,31 +26,21 @@ SECTION_CTORS10 extern void* const __init_cpp_exceptions_reference; // /* 80342B78-80342B98 33D4B8 0020+00 0/0 1/1 0/0 .text __init_user */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __init_user() { - nofralloc -#include "asm/dolphin/os/__ppc_eabi_init/__init_user.s" +void __init_user(void) { + __init_cpp(); } -#pragma pop /* 80342B98-80342BEC 33D4D8 0054+00 1/1 0/0 0/0 .text __init_cpp */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __init_cpp() { +asm void __init_cpp(void) { nofralloc #include "asm/dolphin/os/__ppc_eabi_init/__init_cpp.s" } #pragma pop /* 80342BEC-80342C0C 33D52C 0020+00 0/0 2/2 0/0 .text _ExitProcess */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void _ExitProcess() { - nofralloc -#include "asm/dolphin/os/__ppc_eabi_init/_ExitProcess.s" +void _ExitProcess(void) { + PPCHalt(); } -#pragma pop diff --git a/libs/dolphin/pad/Makefile b/libs/dolphin/pad/Makefile index 18a82510327..27f49a6db12 100644 --- a/libs/dolphin/pad/Makefile +++ b/libs/dolphin/pad/Makefile @@ -11,6 +11,14 @@ LIBPAD_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/pad/Pad.o \ LIBPAD_A_CFLAGS := \ + -Cpp_exceptions off \ + -proc gekko \ + -fp hard \ + -nodefaults \ + -str reuse \ + -RTTI off \ + -maxerrors 5 \ + -enum int $(INCLUDES) \ -O4,p \ -lang=c \ @@ -29,5 +37,7 @@ $(BUILD_DIR)/libs/dolphin/pad/%.o: libs/dolphin/pad/%.c @mkdir -p $(@D) @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c - @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBPAD_A_CFLAGS) -c -o $@ $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(LIBPAD_A_CFLAGS) -c -o $@ $(basename $@).c + @echo Frank is fixing $@ + @$(PYTHON) $(FRANK) $@ $@ $@ diff --git a/libs/dolphin/pad/Pad.c b/libs/dolphin/pad/Pad.c index 98e8ca4aaca..535eba9da4f 100644 --- a/libs/dolphin/pad/Pad.c +++ b/libs/dolphin/pad/Pad.c @@ -4,155 +4,217 @@ // #include "dolphin/pad/Pad.h" +#include "MSL_C/MSL_Common/Src/string.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/si/SIBios.h" +#include "dolphin/si/SISamplingRate.h" + +u8 UnkVal : (OS_BASE_CACHED | 0x30e3); +u16 __OSWirelessPadFixMode : (OS_BASE_CACHED | 0x30E0); + +/* 80450A20-80450A24 -00001 0004+00 1/1 0/0 0/0 .sdata __PADVersion */ +static char* __PADVersion = "<< Dolphin SDK - PAD\trelease build: Apr 5 2004 04:14:49 (0x2301) >>"; // // Forward References: // -static void UpdateOrigin(); -static void PADOriginCallback(); -static void PADOriginUpdateCallback(); -static void PADProbeCallback(); -static void PADTypeAndStatusCallback(); -static void PADReceiveCheckCallback(); -static void SPEC0_MakeStatus(); -static void SPEC1_MakeStatus(); -static void SPEC2_MakeStatus(); -static void OnReset(); -static void SamplingHandler(); -static void PADSetSamplingCallback(); -void __PADDisableRecalibration(); +static void UpdateOrigin(s32 chan); +static void SPEC0_MakeStatus(s32 chan, PADStatus* status, u32 data[2]); +static void SPEC1_MakeStatus(s32 chan, PADStatus* status, u32 data[2]); +static void SPEC2_MakeStatus(s32 chan, PADStatus* status, u32 data[2]); +static s32 OnReset(s32 final); +static void SamplingHandler(OSInterrupt interrupt, OSContext* context); +static PADSamplingCallback PADSetSamplingCallback(PADSamplingCallback callback); +BOOL __PADDisableRecalibration(BOOL disable); // // External References: // -SECTION_INIT void memset(); -void OSRegisterVersion(); -void OSSetCurrentContext(); -void OSClearContext(); -void OSDisableInterrupts(); -void OSRestoreInterrupts(); -void OSRegisterResetFunction(); -void OSSetWirelessID(); -void OSGetTime(); -void SIBusy(); -void SIIsChanBusy(); -void SIRegisterPollingHandler(); -void SIUnregisterPollingHandler(); -void SIGetStatus(); -void SISetCommand(); -void SITransferCommands(); -void SIEnablePolling(); -void SIDisablePolling(); -void SIGetResponse(); -void SITransfer(); -void SIGetType(); -void SIGetTypeAsync(); -void SIRefreshSamplingRate(); void __shr2i(); -extern u8 __PADFixBits[4 + 4 /* padding */]; +extern u32 __PADFixBits; // // Declarations: // /* ############################################################################################## */ -/* 803D1B48-803D1B90 02EC68 0045+03 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[] = "<< Dolphin SDK - PAD\trelease build: Apr 5 2004 04:14:49 (0x2301) >>"; - /* 8044CB70-8044CB80 079890 0010+00 3/3 0/0 0/0 .bss Type */ -static u8 Type[16]; +static u32 Type[4]; /* 8044CB80-8044CBB0 0798A0 0030+00 8/8 0/0 0/0 .bss Origin */ -static u8 Origin[48]; - -/* 80450A20-80450A24 -00001 0004+00 1/1 0/0 0/0 .sdata __PADVersion */ -SECTION_SDATA static void* __PADVersion = (void*)&lit_1; +static PADStatus Origin[4]; /* 80450A24-80450A28 0004A4 0004+00 7/7 0/0 0/0 .sdata ResettingChan */ -SECTION_SDATA static u32 ResettingChan = 0x00000020; +SECTION_SDATA static s32 ResettingChan = 0x00000020; /* 80450A28-80450A2C 0004A8 0004+00 1/1 0/0 0/0 .sdata XPatchBits */ -SECTION_SDATA static u32 XPatchBits = 0xF0000000; +SECTION_SDATA static u32 XPatchBits = PAD_CHAN0_BIT | PAD_CHAN1_BIT | PAD_CHAN2_BIT | PAD_CHAN3_BIT; /* 80450A2C-80450A30 0004AC 0004+00 7/7 0/0 0/0 .sdata AnalogMode */ SECTION_SDATA static u32 AnalogMode = 0x00000300; /* 8034E2B4-8034E458 348BF4 01A4+00 2/2 0/0 0/0 .text UpdateOrigin */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void UpdateOrigin() { - nofralloc -#include "asm/dolphin/pad/Pad/UpdateOrigin.s" +static void UpdateOrigin(s32 chan) { + PADStatus* origin; + u32 chanBit = (u32)PAD_CHAN0_BIT >> chan; + + origin = &Origin[chan]; + switch (AnalogMode & 0x00000700u) { + case 0x00000000u: + case 0x00000500u: + case 0x00000600u: + case 0x00000700u: + origin->trigger_left &= ~15; + origin->trigger_right &= ~15; + origin->analog_a &= ~15; + origin->analog_b &= ~15; + break; + case 0x00000100u: + origin->substick_x &= ~15; + origin->substick_y &= ~15; + origin->analog_a &= ~15; + origin->analog_b &= ~15; + break; + case 0x00000200u: + origin->substick_x &= ~15; + origin->substick_y &= ~15; + origin->trigger_left &= ~15; + origin->trigger_right &= ~15; + break; + case 0x00000300u: + break; + case 0x00000400u: + break; + } + + origin->stick_x -= 128; + origin->stick_y -= 128; + origin->substick_x -= 128; + origin->substick_y -= 128; + + if (XPatchBits & chanBit) { + if (64 < origin->stick_x && (SIGetType(chan) & 0xFFFF0000) == SI_GC_CONTROLLER) { + origin->stick_x = 0; + } + } } -#pragma pop /* ############################################################################################## */ /* 80451848-8045184C 000D48 0004+00 1/1 0/0 0/0 .sbss Initialized */ -static u8 Initialized[4]; +static BOOL Initialized; /* 8045184C-80451850 000D4C 0004+00 10/10 0/0 0/0 .sbss EnabledBits */ -static u8 EnabledBits[4]; +static u32 EnabledBits; /* 80451850-80451854 000D50 0004+00 7/7 0/0 0/0 .sbss ResettingBits */ -static u8 ResettingBits[4]; +static u32 ResettingBits; + +inline void PADEnable(s32 chan) { + u32 cmd; + u32 chanBit; + u32 data[2]; + + chanBit = (u32)PAD_CHAN0_BIT >> chan; + EnabledBits |= chanBit; + SIGetResponse(chan, data); + cmd = (0x40 << 16) | AnalogMode; + SISetCommand(chan, cmd); + SIEnablePolling(EnabledBits); +} + +inline void DoReset(void) { + u32 chanBit; + + ResettingChan = __cntlzw(ResettingBits); + if (ResettingChan == 32) { + return; + } + + chanBit = (u32)PAD_CHAN0_BIT >> ResettingChan; + ResettingBits &= ~chanBit; + + memset(&Origin[ResettingChan], 0, sizeof(PADStatus)); + SIGetTypeAsync(ResettingChan, PADTypeAndStatusCallback); +} /* 8034E458-8034E51C 348D98 00C4+00 1/1 0/0 0/0 .text PADOriginCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void PADOriginCallback() { - nofralloc -#include "asm/dolphin/pad/Pad/PADOriginCallback.s" +static void PADOriginCallback(s32 chan, u32 error, OSContext* context) { + if (!(error & + (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION))) { + UpdateOrigin(ResettingChan); + PADEnable(ResettingChan); + } + DoReset(); } -#pragma pop /* ############################################################################################## */ /* 80451854-80451858 000D54 0004+00 4/4 0/0 0/0 .sbss RecalibrateBits */ -static u8 RecalibrateBits[4]; +static u32 RecalibrateBits; /* 80451858-8045185C 000D58 0004+00 7/7 0/0 0/0 .sbss WaitingBits */ -static u8 WaitingBits[4]; +static u32 WaitingBits; /* 8045185C-80451860 000D5C 0004+00 6/6 0/0 0/0 .sbss CheckingBits */ -static u8 CheckingBits[4]; +static u32 CheckingBits; /* 80451860-80451864 000D60 0004+00 6/6 0/0 0/0 .sbss PendingBits */ -static u8 PendingBits[4]; +static u32 PendingBits; /* 80451864-80451868 000D64 0004+00 6/6 0/0 0/0 .sbss BarrelBits */ -static u8 BarrelBits[4]; +static u32 BarrelBits; + +inline void PADDisable(s32 chan) { + BOOL enabled; + u32 chanBit; + + enabled = OSDisableInterrupts(); + + chanBit = (u32)PAD_CHAN0_BIT >> chan; + SIDisablePolling(chanBit); + EnabledBits &= ~chanBit; + WaitingBits &= ~chanBit; + CheckingBits &= ~chanBit; + PendingBits &= ~chanBit; + BarrelBits &= ~chanBit; + OSSetWirelessID(chan, 0); + + OSRestoreInterrupts(enabled); +} /* 8034E51C-8034E5E8 348E5C 00CC+00 2/2 0/0 0/0 .text PADOriginUpdateCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void PADOriginUpdateCallback() { - nofralloc -#include "asm/dolphin/pad/Pad/PADOriginUpdateCallback.s" +static void PADOriginUpdateCallback(s32 chan, u32 error, OSContext* context) { + if (!(EnabledBits & ((u32)PAD_CHAN0_BIT >> chan))) { + return; + } + + if (!(error & + (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION))) { + UpdateOrigin(chan); + } + + if (error & SI_ERROR_NO_RESPONSE) { + PADDisable(chan); + } } -#pragma pop /* 8034E5E8-8034E6C0 348F28 00D8+00 1/1 0/0 0/0 .text PADProbeCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void PADProbeCallback() { - nofralloc -#include "asm/dolphin/pad/Pad/PADProbeCallback.s" +static void PADProbeCallback(s32 chan, u32 error, OSContext* context) { + if (!(error & + (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION))) { + PADEnable(ResettingChan); + WaitingBits |= (u32)PAD_CHAN0_BIT >> ResettingChan; + } + DoReset(); } -#pragma pop /* ############################################################################################## */ /* 80450A30-80450A34 0004B0 0004+00 4/4 0/0 0/0 .sdata Spec */ -SECTION_SDATA static u32 Spec = 0x00000005; +SECTION_SDATA static u32 Spec = 5; /* 80450A34-80450A38 -00001 0004+00 2/2 0/0 0/0 .sdata MakeStatus */ -SECTION_SDATA static void* MakeStatus = (void*)SPEC2_MakeStatus; +SECTION_SDATA static void (*MakeStatus)(s32, PADStatus*, u32[2]) = SPEC2_MakeStatus; /* 80450A38-80450A3C 0004B8 0004+00 3/3 0/0 0/0 .sdata CmdReadOrigin */ SECTION_SDATA static f32 CmdReadOrigin = 8.0f; @@ -160,27 +222,107 @@ SECTION_SDATA static f32 CmdReadOrigin = 8.0f; /* 80450A3C-80450A40 0004BC 0004+00 1/1 0/0 0/0 .sdata CmdCalibrate */ SECTION_SDATA static f32 CmdCalibrate = 32.0f; -/* 8034E6C0-8034E9EC 349000 032C+00 4/4 0/0 0/0 .text PADTypeAndStatusCallback */ +/* 8044CBB0-8044CBC0 0798D0 0010+00 0/1 0/0 0/0 .bss CmdProbeDevice */ #pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void PADTypeAndStatusCallback() { - nofralloc -#include "asm/dolphin/pad/Pad/PADTypeAndStatusCallback.s" -} +#pragma force_active on +static u32 CmdProbeDevice[4]; #pragma pop +/* 8034E6C0-8034E9EC 349000 032C+00 4/4 0/0 0/0 .text PADTypeAndStatusCallback */ +static void PADTypeAndStatusCallback(s32 chan, u32 type) { + u32 chanBit; + u32 recalibrate; + BOOL rc = TRUE; + u32 error; + chanBit = (u32)PAD_CHAN0_BIT >> ResettingChan; + error = type & 0xFF; + recalibrate = RecalibrateBits & chanBit; + RecalibrateBits &= ~chanBit; + + if (error & + (SI_ERROR_UNDER_RUN | SI_ERROR_OVER_RUN | SI_ERROR_NO_RESPONSE | SI_ERROR_COLLISION)) { + DoReset(); + return; + } + + type &= ~0xFF; + + Type[ResettingChan] = type; + + if ((type & SI_TYPE_MASK) != SI_TYPE_GC || !(type & SI_GC_STANDARD)) { + DoReset(); + return; + } + + if (Spec < PAD_SPEC_2) { + PADEnable(ResettingChan); + DoReset(); + return; + } + + if (!(type & SI_GC_WIRELESS) || (type & SI_WIRELESS_IR)) { + if (recalibrate) { + rc = SITransfer(ResettingChan, &CmdCalibrate, 3, &Origin[ResettingChan], 10, + PADOriginCallback, 0); + } else { + rc = SITransfer(ResettingChan, &CmdReadOrigin, 1, &Origin[ResettingChan], 10, + PADOriginCallback, 0); + } + } else if ((type & SI_WIRELESS_FIX_ID) && (type & SI_WIRELESS_CONT_MASK) == SI_WIRELESS_CONT && + !(type & SI_WIRELESS_LITE)) { + if (type & SI_WIRELESS_RECEIVED) { + rc = SITransfer(ResettingChan, &CmdReadOrigin, 1, &Origin[ResettingChan], 10, + PADOriginCallback, 0); + } else { + rc = SITransfer(ResettingChan, &CmdProbeDevice[ResettingChan], 3, + &Origin[ResettingChan], 8, PADProbeCallback, 0); + } + } + if (!rc) { + PendingBits |= chanBit; + DoReset(); + return; + } +} + /* 8034E9EC-8034EB2C 34932C 0140+00 1/1 0/0 0/0 .text PADReceiveCheckCallback */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void PADReceiveCheckCallback() { +static asm void PADReceiveCheckCallback(s32 chan, u32 type) { nofralloc #include "asm/dolphin/pad/Pad/PADReceiveCheckCallback.s" } #pragma pop /* 8034EB2C-8034EC3C 34946C 0110+00 2/2 1/1 0/0 .text PADReset */ +#ifdef NONMATCHING +BOOL PADReset(u32 mask) { + BOOL enabled; + u32 diableBits; + + enabled = OSDisableInterrupts(); + + mask |= PendingBits; + PendingBits = 0; + mask &= ~(WaitingBits | CheckingBits); + ResettingBits |= mask; + diableBits = ResettingBits & EnabledBits; + EnabledBits &= ~mask; + + if (Spec == PAD_SPEC_4) { + RecalibrateBits |= mask; + } + + SIDisablePolling(diableBits); + + if (ResettingChan == 32) { + DoReset(); + } + OSRestoreInterrupts(enabled); + return TRUE; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -189,8 +331,36 @@ asm BOOL PADReset(u32 mask) { #include "asm/dolphin/pad/Pad/PADReset.s" } #pragma pop +#endif /* 8034EC3C-8034ED50 34957C 0114+00 1/1 1/1 0/0 .text PADRecalibrate */ +#ifdef NONMATCHING +BOOL PADRecalibrate(u32 mask) { + BOOL enabled; + u32 disableBits; + + enabled = OSDisableInterrupts(); + + mask |= PendingBits; + PendingBits = 0; + mask &= ~(WaitingBits | CheckingBits); + ResettingBits |= mask; + BarrelBits &= ~mask; + disableBits = ResettingBits & EnabledBits; + EnabledBits &= ~mask; + + if (!(UnkVal & 0x40)) { + RecalibrateBits |= mask; + } + + SIDisablePolling(disableBits); + if (ResettingChan == 32) { + DoReset(); + } + OSRestoreInterrupts(enabled); + return TRUE; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -199,53 +369,186 @@ asm BOOL PADRecalibrate(u32 mask) { #include "asm/dolphin/pad/Pad/PADRecalibrate.s" } #pragma pop +#endif /* ############################################################################################## */ /* 803D1B90-803D1BA0 -00001 0010+00 1/1 0/0 0/0 .data ResetFunctionInfo */ -SECTION_DATA static void* ResetFunctionInfo[4] = { - (void*)OnReset, - (void*)0x0000007F, - (void*)NULL, - (void*)NULL, +SECTION_DATA static OSResetFunctionInfo ResetFunctionInfo = { + OnReset, + 0x0000007F, + NULL, + NULL, }; -/* 8044CBB0-8044CBC0 0798D0 0010+00 0/1 0/0 0/0 .bss CmdProbeDevice */ -#pragma push -#pragma force_active on -static u8 CmdProbeDevice[16]; -#pragma pop - /* 80451868-8045186C 000D68 0004+00 3/3 0/0 0/0 .sbss SamplingCallback */ -static u8 SamplingCallback[4]; +static void (*SamplingCallback)(void); /* 8045186C-80451870 000D6C 0004+00 1/1 0/0 0/0 .sbss recalibrated$388 */ -static u8 recalibrated[4]; +static BOOL recalibrated; /* 80451870-80451878 000D70 0004+04 2/2 1/1 0/0 .sbss __PADSpec */ -extern u8 __PADSpec[4 + 4 /* padding */]; -u8 __PADSpec[4 + 4 /* padding */]; +extern u32 __PADSpec; +u32 __PADSpec; /* 8034ED50-8034EEA0 349690 0150+00 0/0 1/1 0/0 .text PADInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 PADInit() { - nofralloc -#include "asm/dolphin/pad/Pad/PADInit.s" +BOOL PADInit() { + s32 chan; + if (Initialized) { + return TRUE; + } + + OSRegisterVersion(__PADVersion); + + if (__PADSpec) { + PADSetSpec(__PADSpec); + } + + Initialized = TRUE; + + if (__PADFixBits != 0) { + OSTime time = OSGetTime(); + __OSWirelessPadFixMode = (u16)((((time)&0xffff) + ((time >> 16) & 0xffff) + + ((time >> 32) & 0xffff) + ((time >> 48) & 0xffff)) & + 0x3fffu); + RecalibrateBits = PAD_CHAN0_BIT | PAD_CHAN1_BIT | PAD_CHAN2_BIT | PAD_CHAN3_BIT; + } + + for (chan = 0; chan < SI_MAX_CHAN; ++chan) { + CmdProbeDevice[chan] = + (0x4D << 24) | (chan << 22) | ((__OSWirelessPadFixMode & 0x3fffu) << 8); + } + + SIRefreshSamplingRate(); + OSRegisterResetFunction(&ResetFunctionInfo); + + return PADReset(PAD_CHAN0_BIT | PAD_CHAN1_BIT | PAD_CHAN2_BIT | PAD_CHAN3_BIT); } -#pragma pop + +#define offsetof(type, memb) ((u32) & ((type*)0)->memb) /* 8034EEA0-8034F1A0 3497E0 0300+00 0/0 1/1 0/0 .text PADRead */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 PADRead(PADStatus* status) { - nofralloc -#include "asm/dolphin/pad/Pad/PADRead.s" +u32 PADRead(PADStatus* status) { + BOOL enabled; + s32 chan; + u32 data[2]; + u32 chanBit; + u32 sr; + int chanShift; + u32 motor; + + enabled = OSDisableInterrupts(); + + motor = 0; + for (chan = 0; chan < SI_MAX_CHAN; chan++, status++) { + chanBit = (u32)PAD_CHAN0_BIT >> chan; + chanShift = 8 * (SI_MAX_CHAN - 1 - chan); + + if (PendingBits & chanBit) { + PADReset(0); + status->error = PAD_ERR_NOT_READY; + memset(status, 0, offsetof(PADStatus, error)); + continue; + } + + if ((ResettingBits & chanBit) || ResettingChan == chan) { + status->error = PAD_ERR_NOT_READY; + memset(status, 0, offsetof(PADStatus, error)); + continue; + } + + if (!(EnabledBits & chanBit)) { + status->error = (s8)PAD_ERR_NO_CONTROLLER; + memset(status, 0, offsetof(PADStatus, error)); + continue; + } + + if (SIIsChanBusy(chan)) { + status->error = PAD_ERR_TRANSFER; + memset(status, 0, offsetof(PADStatus, error)); + continue; + } + + sr = SIGetStatus(chan); + if (sr & SI_ERROR_NO_RESPONSE) { + SIGetResponse(chan, data); + + if (WaitingBits & chanBit) { + status->error = (s8)PAD_ERR_NONE; + memset(status, 0, offsetof(PADStatus, error)); + + if (!(CheckingBits & chanBit)) { + CheckingBits |= chanBit; + SIGetTypeAsync(chan, PADReceiveCheckCallback); + } + continue; + } + + PADDisable(chan); + + status->error = (s8)PAD_ERR_NO_CONTROLLER; + memset(status, 0, offsetof(PADStatus, error)); + continue; + } + + if (!(SIGetType(chan) & SI_GC_NOMOTOR)) { + motor |= chanBit; + } + + if (!SIGetResponse(chan, data)) { + status->error = PAD_ERR_TRANSFER; + memset(status, 0, offsetof(PADStatus, error)); + continue; + } + + if (data[0] & 0x80000000) { + status->error = PAD_ERR_TRANSFER; + memset(status, 0, offsetof(PADStatus, error)); + continue; + } + + MakeStatus(chan, status, data); + + // Check and clear PAD_ORIGIN bit + if (status->button & 0x2000) { + status->error = PAD_ERR_TRANSFER; + memset(status, 0, offsetof(PADStatus, error)); + + // Get origin. It is okay if the following transfer fails + // since the PAD_ORIGIN bit remains until the read origin + // command complete. + SITransfer(chan, &CmdReadOrigin, 1, &Origin[chan], 10, PADOriginUpdateCallback, 0); + continue; + } + + status->error = PAD_ERR_NONE; + + // Clear PAD_INTERFERE bit + status->button &= ~0x0080; + } + + OSRestoreInterrupts(enabled); + return motor; } -#pragma pop /* 8034F1A0-8034F258 349AE0 00B8+00 0/0 2/2 0/0 .text PADControlMotor */ +#ifdef NONMATCHING +void PADControlMotor(s32 chan, u32 command) { + BOOL enabled; + u32 chanBit; + + enabled = OSDisableInterrupts(); + chanBit = (u32)PAD_CHAN0_BIT >> chan; + if ((EnabledBits & chanBit) && !(SIGetType(chan) & SI_GC_NOMOTOR)) { + if (Spec < PAD_SPEC_2 && command == PAD_MOTOR_STOP_HARD) { + command = PAD_MOTOR_STOP; + } + + SISetCommand(chan, (0x40 << 16) | AnalogMode | (command & (0x00000001 | 0x00000002))); + SITransferCommands(); + } + OSRestoreInterrupts(enabled); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -254,82 +557,267 @@ asm void PADControlMotor(s32 channel, u32 command) { #include "asm/dolphin/pad/Pad/PADControlMotor.s" } #pragma pop +#endif /* 8034F258-8034F2B8 349B98 0060+00 1/1 1/1 0/0 .text PADSetSpec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PADSetSpec(int spec) { - nofralloc -#include "asm/dolphin/pad/Pad/PADSetSpec.s" +void PADSetSpec(u32 spec) { + __PADSpec = 0; + switch (spec) { + case PAD_SPEC_0: + MakeStatus = SPEC0_MakeStatus; + break; + case PAD_SPEC_1: + MakeStatus = SPEC1_MakeStatus; + break; + case PAD_SPEC_2: + case PAD_SPEC_3: + case PAD_SPEC_4: + case PAD_SPEC_5: + MakeStatus = SPEC2_MakeStatus; + break; + } + Spec = spec; } -#pragma pop /* 8034F2B8-8034F42C 349BF8 0174+00 1/1 0/0 0/0 .text SPEC0_MakeStatus */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void SPEC0_MakeStatus() { - nofralloc -#include "asm/dolphin/pad/Pad/SPEC0_MakeStatus.s" +static void SPEC0_MakeStatus(s32 chan, PADStatus* status, u32 data[2]) { + status->button = 0; + status->button |= ((data[0] >> 16) & 0x0008) ? PAD_BUTTON_A : 0; + status->button |= ((data[0] >> 16) & 0x0020) ? PAD_BUTTON_B : 0; + status->button |= ((data[0] >> 16) & 0x0100) ? PAD_BUTTON_X : 0; + status->button |= ((data[0] >> 16) & 0x0001) ? PAD_BUTTON_Y : 0; + status->button |= ((data[0] >> 16) & 0x0010) ? PAD_BUTTON_START : 0; + + status->stick_x = (s8)(data[1] >> 16); + status->stick_y = (s8)(data[1] >> 24); + + status->substick_x = (s8)(data[1]); + status->substick_y = (s8)(data[1] >> 8); + + status->trigger_left = (u8)(data[0] >> 8); + status->trigger_right = (u8)data[0]; + + status->analog_a = 0; + status->analog_b = 0; + + if (170 <= status->trigger_left) { + status->button |= PAD_TRIGGER_L; + } + + if (170 <= status->trigger_right) { + status->button |= PAD_TRIGGER_R; + } + + status->stick_x -= 128; + status->stick_y -= 128; + + status->substick_x -= 128; + status->substick_y -= 128; } -#pragma pop /* 8034F42C-8034F5A0 349D6C 0174+00 1/1 0/0 0/0 .text SPEC1_MakeStatus */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void SPEC1_MakeStatus() { - nofralloc -#include "asm/dolphin/pad/Pad/SPEC1_MakeStatus.s" +static void SPEC1_MakeStatus(s32 chan, PADStatus* status, u32 data[2]) { + status->button = 0; + status->button |= ((data[0] >> 16) & 0x0080) ? PAD_BUTTON_A : 0; + status->button |= ((data[0] >> 16) & 0x0100) ? PAD_BUTTON_B : 0; + status->button |= ((data[0] >> 16) & 0x0020) ? PAD_BUTTON_X : 0; + status->button |= ((data[0] >> 16) & 0x0010) ? PAD_BUTTON_Y : 0; + status->button |= ((data[0] >> 16) & 0x0200) ? PAD_BUTTON_START : 0; + + status->stick_x = (s8)(data[1] >> 16); + status->stick_y = (s8)(data[1] >> 24); + status->substick_x = (s8)(data[1]); + status->substick_y = (s8)(data[1] >> 8); + + status->trigger_left = (u8)(data[0] >> 8); + status->trigger_right = (u8)data[0]; + + status->analog_a = 0; + status->analog_b = 0; + + if (170 <= status->trigger_left) { + status->button |= PAD_TRIGGER_L; + } + + if (170 <= status->trigger_right) { + status->button |= PAD_TRIGGER_R; + } + + status->stick_x -= 128; + status->stick_y -= 128; + status->substick_x -= 128; + status->substick_y -= 128; } -#pragma pop + +inline s8 ClampS8(s8 var, s8 org) { + if (0 < org) { + s8 min = (s8)(-128 + org); + if (var < min) { + var = min; + } + } else if (org < 0) { + s8 max = (s8)(127 + org); + if (max < var) { + var = max; + } + } + return var -= org; +} + +inline u8 ClampU8(u8 var, u8 org) { + if (var < org) { + var = org; + } + return var -= org; +} + +#define PAD_ALL \ + (PAD_BUTTON_LEFT | PAD_BUTTON_RIGHT | PAD_BUTTON_DOWN | PAD_BUTTON_UP | PAD_TRIGGER_Z | \ + PAD_TRIGGER_R | PAD_TRIGGER_L | PAD_BUTTON_A | PAD_BUTTON_B | PAD_BUTTON_X | PAD_BUTTON_Y | \ + PAD_BUTTON_MENU | 0x2000 | 0x0080) /* 8034F5A0-8034FA10 349EE0 0470+00 2/1 0/0 0/0 .text SPEC2_MakeStatus */ +#ifdef NONMATCHING +static void SPEC2_MakeStatus(s32 chan, PADStatus* status, u32 data[2]) { + PADStatus* origin; + + status->button = (u16)((data[0] >> 16) & PAD_ALL); + status->stick_x = (s8)(data[0] >> 8); + status->stick_y = (s8)(data[0]); + + switch (AnalogMode & 0x00000700) { + case 0x00000000: + case 0x00000500: + case 0x00000600: + case 0x00000700: + status->substick_x = (s8)(data[1] >> 24); + status->substick_y = (s8)(data[1] >> 16); + status->trigger_left = (u8)(((data[1] >> 12) & 0x0f) << 4); + status->trigger_right = (u8)(((data[1] >> 8) & 0x0f) << 4); + status->analog_a = (u8)(((data[1] >> 4) & 0x0f) << 4); + status->analog_b = (u8)(((data[1] >> 0) & 0x0f) << 4); + break; + case 0x00000100: + status->substick_x = (s8)(((data[1] >> 28) & 0x0f) << 4); + status->substick_y = (s8)(((data[1] >> 24) & 0x0f) << 4); + status->trigger_left = (u8)(data[1] >> 16); + status->trigger_right = (u8)(data[1] >> 8); + status->analog_a = (u8)(((data[1] >> 4) & 0x0f) << 4); + status->analog_b = (u8)(((data[1] >> 0) & 0x0f) << 4); + break; + case 0x00000200: + status->substick_x = (s8)(((data[1] >> 28) & 0x0f) << 4); + status->substick_y = (s8)(((data[1] >> 24) & 0x0f) << 4); + status->trigger_left = (u8)(((data[1] >> 20) & 0x0f) << 4); + status->trigger_right = (u8)(((data[1] >> 16) & 0x0f) << 4); + status->analog_a = (u8)(data[1] >> 8); + status->analog_b = (u8)(data[1] >> 0); + break; + case 0x00000300: + status->substick_x = (s8)(data[1] >> 24); + status->substick_y = (s8)(data[1] >> 16); + status->trigger_left = (u8)(data[1] >> 8); + status->trigger_right = (u8)(data[1] >> 0); + status->analog_a = 0; + status->analog_b = 0; + break; + case 0x00000400: + status->substick_x = (s8)(data[1] >> 24); + status->substick_y = (s8)(data[1] >> 16); + status->trigger_left = 0; + status->trigger_right = 0; + status->analog_a = (u8)(data[1] >> 8); + status->analog_b = (u8)(data[1] >> 0); + break; + } + + status->stick_x -= 128; + status->stick_y -= 128; + status->substick_x -= 128; + status->substick_y -= 128; + + origin = &Origin[chan]; + status->stick_x = ClampS8(status->stick_x, origin->stick_x); + status->stick_y = ClampS8(status->stick_y, origin->stick_y); + status->substick_x = ClampS8(status->substick_x, origin->substick_x); + status->substick_y = ClampS8(status->substick_y, origin->substick_y); + status->trigger_left = ClampU8(status->trigger_left, origin->trigger_left); + status->trigger_right = ClampU8(status->trigger_right, origin->trigger_right); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void SPEC2_MakeStatus() { +static asm void SPEC2_MakeStatus(s32 chan, PADStatus* status, u32 data[2]) { nofralloc #include "asm/dolphin/pad/Pad/SPEC2_MakeStatus.s" } #pragma pop +#endif /* 8034FA10-8034FA84 34A350 0074+00 0/0 2/2 0/0 .text PADSetAnalogMode */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PADSetAnalogMode(u32 mode) { - nofralloc -#include "asm/dolphin/pad/Pad/PADSetAnalogMode.s" +void PADSetAnalogMode(u32 mode) { + BOOL enabled; + u32 mask; + + enabled = OSDisableInterrupts(); + AnalogMode = mode << 8; + mask = EnabledBits; + + EnabledBits &= ~mask; + WaitingBits &= ~mask; + CheckingBits &= ~mask; + + SIDisablePolling(mask); + OSRestoreInterrupts(enabled); +} + +inline BOOL PADSync(void) { + return ResettingBits == 0 && ResettingChan == 32 && !SIBusy(); } -#pragma pop /* 8034FA84-8034FB40 34A3C4 00BC+00 1/0 0/0 0/0 .text OnReset */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void OnReset() { - nofralloc -#include "asm/dolphin/pad/Pad/OnReset.s" +static s32 OnReset(s32 f) { + static BOOL recalibrated = FALSE; + BOOL sync; + + if (SamplingCallback) { + PADSetSamplingCallback(NULL); + } + + if (!f) { + sync = PADSync(); + if (!recalibrated && sync) { + recalibrated = + PADRecalibrate(PAD_CHAN0_BIT | PAD_CHAN1_BIT | PAD_CHAN2_BIT | PAD_CHAN3_BIT); + return FALSE; + } + return sync; + } else { + recalibrated = FALSE; + } + + return TRUE; } -#pragma pop /* 8034FB40-8034FBA0 34A480 0060+00 1/1 0/0 0/0 .text SamplingHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void SamplingHandler() { - nofralloc -#include "asm/dolphin/pad/Pad/SamplingHandler.s" +static void SamplingHandler(OSInterrupt interrupt, OSContext* context) { + OSContext exceptionContext; + + if (SamplingCallback) { + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + SamplingCallback(); + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); + } } -#pragma pop /* 8034FBA0-8034FBF4 34A4E0 0054+00 1/1 0/0 0/0 .text PADSetSamplingCallback */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void PADSetSamplingCallback() { +static asm PADSamplingCallback PADSetSamplingCallback(PADSamplingCallback callback) { nofralloc #include "asm/dolphin/pad/Pad/PADSetSamplingCallback.s" } @@ -339,7 +827,7 @@ static asm void PADSetSamplingCallback() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __PADDisableRecalibration() { +asm BOOL __PADDisableRecalibration(BOOL disable) { nofralloc #include "asm/dolphin/pad/Pad/__PADDisableRecalibration.s" } diff --git a/libs/dolphin/pad/Padclamp.c b/libs/dolphin/pad/Padclamp.c index aa5e4a5136a..a2051d8b6b5 100644 --- a/libs/dolphin/pad/Padclamp.c +++ b/libs/dolphin/pad/Padclamp.c @@ -3,36 +3,76 @@ // Translation Unit: Padclamp // +#include "dolphin/pad/Pad.h" #include "dolphin/pad/Padclamp.h" #include "dol2asm.h" -#include "dolphin/types.h" // // Forward References: // -static void ClampStick(); -static void ClampCircle(); -void PADClamp(); -void PADClampCircle(); - -// -// External References: -// +static void ClampStick(s8* px, s8* py, s8 max, s8 xy, s8 min); +static void ClampCircle(s8* px, s8* py, s8 radius, s8 min); // // Declarations: // /* 8034DDBC-8034DEEC 3486FC 0130+00 1/1 0/0 0/0 .text ClampStick */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void ClampStick() { - nofralloc -#include "asm/dolphin/pad/Padclamp/ClampStick.s" +static void ClampStick(s8* px, s8* py, s8 max, s8 xy, s8 min) { + int x = *px; + int y = *py; + int signX; + int signY; + int d; + + if (0 <= x) { + signX = 1; + } else { + signX = -1; + x = -x; + } + + if (0 <= y) { + signY = 1; + } else { + signY = -1; + y = -y; + } + + if (x <= min) { + x = 0; + } else { + x -= min; + } + if (y <= min) { + y = 0; + } else { + y -= min; + } + + if (x == 0 && y == 0) { + *px = *py = 0; + return; + } + + if (xy * y <= xy * x) { + d = xy * x + (max - xy) * y; + if (xy * max < d) { + x = (s8)(xy * max * x / d); + y = (s8)(xy * max * y / d); + } + } else { + d = xy * y + (max - xy) * x; + if (xy * max < d) { + x = (s8)(xy * max * x / d); + y = (s8)(xy * max * y / d); + } + } + + *px = (s8)(signX * x); + *py = (s8)(signY * y); } -#pragma pop /* ############################################################################################## */ /* 80456560-80456568 004B60 0004+04 1/1 0/0 0/0 .sdata2 @160 */ @@ -55,7 +95,7 @@ SECTION_SDATA2 static f64 lit_164 = 4503601774854144.0 /* cast s32 to float */; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void ClampCircle() { +static asm void ClampCircle(s8* px, s8* py, s8 radius, s8 min) { nofralloc #include "asm/dolphin/pad/Padclamp/ClampCircle.s" } @@ -63,43 +103,66 @@ static asm void ClampCircle() { /* ############################################################################################## */ /* 803A2170-803A2180 02E7D0 000A+06 2/2 0/0 0/0 .rodata ClampRegion */ -SECTION_RODATA static u8 const ClampRegion[10 + 6 /* padding */] = { - 0x1E, - 0xB4, - 0x0F, - 0x48, - 0x28, - 0x0F, - 0x3B, - 0x1F, - 0x38, - 0x2C, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, +static const PADClampRegion ClampRegion = { + // Triggers + 30, + 180, + + // Left stick + 15, + 72, + 40, + + // Right stick + 15, + 59, + 31, + + // Stick radii + 56, + 44, }; -COMPILER_STRIP_GATE(0x803A2170, &ClampRegion); + +inline void ClampTrigger(u8* trigger, u8 min, u8 max) { + if (*trigger <= min) { + *trigger = 0; + } else { + if (max < *trigger) { + *trigger = max; + } + *trigger -= min; + } +} /* 8034E094-8034E1A8 3489D4 0114+00 0/0 1/1 0/0 .text PADClamp */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PADClamp() { - nofralloc -#include "asm/dolphin/pad/Padclamp/PADClamp.s" +void PADClamp(PADStatus* status) { + int i; + for (i = 0; i < 4; i++, status++) { + if (status->error != PAD_ERR_NONE) { + continue; + } + + ClampStick(&status->stick_x, &status->stick_y, ClampRegion.maxStick, ClampRegion.xyStick, + ClampRegion.minStick); + ClampStick(&status->substick_x, &status->substick_y, ClampRegion.maxSubstick, + ClampRegion.xySubstick, ClampRegion.minSubstick); + ClampTrigger(&status->trigger_left, ClampRegion.minTrigger, ClampRegion.maxTrigger); + ClampTrigger(&status->trigger_right, ClampRegion.minTrigger, ClampRegion.maxTrigger); + } } -#pragma pop /* 8034E1A8-8034E2B4 348AE8 010C+00 0/0 1/1 0/0 .text PADClampCircle */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PADClampCircle() { - nofralloc -#include "asm/dolphin/pad/Padclamp/PADClampCircle.s" +void PADClampCircle(PADStatus* status) { + int i; + for (i = 0; i < 4; ++i, status++) { + if (status->error != PAD_ERR_NONE) { + continue; + } + + ClampCircle(&status->stick_x, &status->stick_y, ClampRegion.radStick, ClampRegion.minStick); + ClampCircle(&status->substick_x, &status->substick_y, ClampRegion.radSubstick, + ClampRegion.minSubstick); + ClampTrigger(&status->trigger_left, ClampRegion.minTrigger, ClampRegion.maxTrigger); + ClampTrigger(&status->trigger_right, ClampRegion.minTrigger, ClampRegion.maxTrigger); + } } -#pragma pop diff --git a/libs/dolphin/si/Makefile b/libs/dolphin/si/Makefile index f79ca0af02a..31460266071 100644 --- a/libs/dolphin/si/Makefile +++ b/libs/dolphin/si/Makefile @@ -11,6 +11,14 @@ LIBSI_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/si/SISamplingRate.o \ LIBSI_A_CFLAGS := \ + -Cpp_exceptions off \ + -proc gekko \ + -fp hard \ + -nodefaults \ + -str reuse \ + -RTTI off \ + -maxerrors 5 \ + -enum int $(INCLUDES) \ -O4,p \ -lang=c \ @@ -29,5 +37,7 @@ $(BUILD_DIR)/libs/dolphin/si/%.o: libs/dolphin/si/%.c @mkdir -p $(@D) @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c - @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBSI_A_CFLAGS) -c -o $@ $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(LIBSI_A_CFLAGS) -c -o $@ $(basename $@).c + @echo Frank is fixing $@ + @$(PYTHON) $(FRANK) $@ $@ $@ diff --git a/libs/dolphin/si/SIBios.c b/libs/dolphin/si/SIBios.c index 3b9e8044a67..af28da30bbc 100644 --- a/libs/dolphin/si/SIBios.c +++ b/libs/dolphin/si/SIBios.c @@ -5,352 +5,764 @@ #include "dolphin/si/SIBios.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/si/SISamplingRate.h" +#include "dolphin/vi/vi.h" + +/* 803D11B8-803D11FC 02E2D8 0044+00 4/3 0/0 0/0 .data @1 */ +SECTION_DATA static char lit_1[] = + "<< Dolphin SDK - SI\trelease build: Apr 5 2004 04:14:16 (0x2301) >>"; + +/* 804509C8-804509D0 -00001 0004+04 1/1 0/0 0/0 .sdata __SIVersion */ +SECTION_SDATA static char* __SIVersion = lit_1; // // Forward References: // -void SIBusy(); -void SIIsChanBusy(); -static void CompleteTransfer(); -static void SIInterruptHandler(); -static void SIEnablePollingInterrupt(); -void SIRegisterPollingHandler(); -void SIUnregisterPollingHandler(); -void SIInit(); -void __SITransfer(); -void SIGetStatus(); -void SISetCommand(); -void SITransferCommands(); -void SISetXY(); -void SIEnablePolling(); -void SIDisablePolling(); -static void SIGetResponseRaw(); -void SIGetResponse(); -static void AlarmHandler(); -void SITransfer(); -static void GetTypeCallback(); -void SIGetType(); -void SIGetTypeAsync(); +static u32 CompleteTransfer(void); +BOOL __SITransfer(s32 chan, void* output, u32 outputBytes, void* input, u32 inputBytes, + SICallback callback); +static void AlarmHandler(OSAlarm* alarm, OSContext* context); +static void GetTypeCallback(s32 chan, u32 error, OSContext* context); // // External References: // -void OSRegisterVersion(); -void OSSetAlarm(); -void OSCancelAlarm(); -void OSDisableInterrupts(); -void OSRestoreInterrupts(); -void __OSSetInterruptHandler(); -void __OSUnmaskInterrupts(); -void OSGetWirelessID(); -void OSSetWirelessID(); -void __OSGetSystemTime(); -void SISetSamplingRate(); -void VIGetCurrentLine(); +u32 VIGetCurrentLine(); // // Declarations: // -/* ############################################################################################## */ -/* 803D11B8-803D11FC 02E2D8 0044+00 4/3 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[] = "<< Dolphin SDK - SI\trelease build: Apr 5 2004 04:14:16 (0x2301) >>"; - /* 803D11FC-803D1210 02E31C 0014+00 8/11 0/0 0/0 .data Si */ -SECTION_DATA static u8 Si[20] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static SIControl Si = { + -1, 0, 0, NULL, NULL, +}; + +/* ############################################################################################## */ +/* 803D1210-803D1220 02E330 0010+00 5/5 0/0 0/0 .data Type */ +static u32 Type[SI_MAX_CHAN] = { + SI_ERROR_NO_RESPONSE, + SI_ERROR_NO_RESPONSE, + SI_ERROR_NO_RESPONSE, + SI_ERROR_NO_RESPONSE, }; /* 80344BA0-80344BC0 33F4E0 0020+00 0/0 1/1 0/0 .text SIBusy */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void SIBusy() { - nofralloc -#include "asm/dolphin/si/SIBios/SIBusy.s" +BOOL SIBusy() { + return Si.chan != -1 ? TRUE : FALSE; } -#pragma pop /* ############################################################################################## */ /* 8044C630-8044C6B0 079350 0080+00 9/9 0/0 0/0 .bss Packet */ -static u8 Packet[128]; +static SIPacket Packet[SI_MAX_CHAN]; /* 80344BC0-80344BFC 33F500 003C+00 0/0 1/1 0/0 .text SIIsChanBusy */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void SIIsChanBusy() { - nofralloc -#include "asm/dolphin/si/SIBios/SIIsChanBusy.s" +BOOL SIIsChanBusy(s32 chan) { + return (Packet[chan].chan != -1 || Si.chan == chan); } -#pragma pop /* ############################################################################################## */ /* 8044C6B0-8044C750 0793D0 00A0+00 1/1 0/0 0/0 .bss Alarm */ -static u8 Alarm[160]; +static OSAlarm Alarm[SI_MAX_CHAN]; /* 8044C750-8044C770 079470 0020+00 2/2 0/0 0/0 .bss TypeTime */ -static u8 TypeTime[32]; +static OSTime TypeTime[SI_MAX_CHAN]; /* 8044C770-8044C790 079490 0020+00 1/1 0/0 0/0 .bss XferTime */ -static u8 XferTime[32]; +static OSTime XferTime[SI_MAX_CHAN]; + +static inline void SIClearTCInterrupt() { + u32 reg; + + reg = __SIRegs[13]; + reg |= 0x80000000; + reg &= ~0x00000001; + __SIRegs[13] = reg; +} /* 80344BFC-80344EF8 33F53C 02FC+00 1/1 0/0 0/0 .text CompleteTransfer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void CompleteTransfer() { - nofralloc -#include "asm/dolphin/si/SIBios/CompleteTransfer.s" +static u32 CompleteTransfer() { + u32 sr; + u32 i; + u32 rLen; + u8* input; + + sr = __SIRegs[14]; + + SIClearTCInterrupt(); + + if (Si.chan != -1) { + XferTime[Si.chan] = __OSGetSystemTime(); + + input = Si.input; + + rLen = Si.inputBytes / 4; + for (i = 0; i < rLen; i++) { + *(u32*)input = __SIRegs[32 + i]; + input += 4; + } + + rLen = Si.inputBytes & 3; + if (rLen) { + u32 temp = __SIRegs[32 + i]; + for (i = 0; i < rLen; i++) { + *input++ = (u8)((temp >> ((3 - i) * 8)) & 0xff); + } + } + + if (__SIRegs[13] & 0x20000000) { + sr >>= 8 * (3 - Si.chan); + sr &= 0xf; + + if ((sr & SI_ERROR_NO_RESPONSE) && !(Type[Si.chan] & SI_ERROR_BUSY)) { + Type[Si.chan] = SI_ERROR_NO_RESPONSE; + } + if (sr == 0) { + sr = SI_ERROR_COLLISION; + } + } else { + TypeTime[Si.chan] = __OSGetSystemTime(); + sr = 0; + } + + Si.chan = -1; + } + return sr; } -#pragma pop /* ############################################################################################## */ /* 8044C790-8044C7D0 0794B0 0040+00 1/1 0/0 0/0 .bss TypeCallback */ -static u8 TypeCallback[64]; +static SITypeAndStatusCallback TypeCallback[SI_MAX_CHAN][4]; /* 8044C7D0-8044C7E0 0794F0 0010+00 2/3 0/0 0/0 .bss RDSTHandler */ -static u8 RDSTHandler[16]; +static OSInterruptHandler RDSTHandler[4]; /* 8044C7E0-8044C7F0 079500 0010+00 0/0 0/0 0/0 .bss InputBufferValid */ #pragma push #pragma force_active on -static u8 InputBufferValid[16]; +static BOOL InputBufferValid[SI_MAX_CHAN]; #pragma pop /* 8044C7F0-8044C810 079510 0020+00 0/0 0/0 0/0 .bss InputBuffer */ #pragma push #pragma force_active on -static u8 InputBuffer[32]; +static u32 InputBuffer[SI_MAX_CHAN][2]; #pragma pop /* 8044C810-8044C820 079530 0010+00 0/2 0/0 0/0 .bss InputBufferVcount */ #pragma push #pragma force_active on -static u8 InputBufferVcount[16]; +static volatile u32 InputBufferVcount[SI_MAX_CHAN]; #pragma pop +inline void SITransferNext(s32 chan) { + int i; + SIPacket* packet; + + for (i = 0; i < SI_MAX_CHAN; ++i) { + ++chan; + chan %= SI_MAX_CHAN; + packet = &Packet[chan]; + if (packet->chan != -1 && packet->fire <= __OSGetSystemTime()) { + if (__SITransfer(packet->chan, packet->output, packet->outputBytes, packet->input, + packet->inputBytes, packet->callback)) { + OSCancelAlarm(&Alarm[chan]); + packet->chan = -1; + } + break; + } + } +} + /* 804516F0-804516F4 000BF0 0004+00 1/1 0/0 0/0 .sbss cmdTypeAndStatus$78 */ static u8 cmdTypeAndStatus_78[4]; /* 80344EF8-8034523C 33F838 0344+00 1/1 0/0 0/0 .text SIInterruptHandler */ +#ifdef NONMATCHING +static void SIInterruptHandler(OSInterrupt interrupt, OSContext* context) { + u32 reg; + + reg = __SIRegs[13]; + + if ((reg & 0xc0000000) == 0xc0000000) { + s32 chan; + u32 sr; + SICallback callback; + + chan = Si.chan; + sr = CompleteTransfer(); + callback = Si.callback; + Si.callback = 0; + + SITransferNext(chan); + + if (callback) { + callback(chan, sr, context); + } + + sr = __SIRegs[14]; + sr &= 0xf000000 >> (8 * chan); + __SIRegs[14] = sr; + + if (Type[chan] == SI_ERROR_BUSY && !SIIsChanBusy(chan)) { + static u32 cmdTypeAndStatus = 0 << 24; + SITransfer(chan, &cmdTypeAndStatus, 1, &Type[chan], 3, GetTypeCallback, + OSMicrosecondsToTicks(65)); + } + } + + if ((reg & 0x18000000) == 0x18000000) { + int i; + u32 vcount; + u32 x; + + vcount = VIGetCurrentLine() + 1; + x = (Si.poll & 0x03ff0000) >> 16; + + for (i = 0; i < SI_MAX_CHAN; ++i) { + if (SIGetResponseRaw(i)) { + InputBufferVcount[i] = vcount; + } + } + + for (i = 0; i < SI_MAX_CHAN; ++i) { + if (!(Si.poll & (SI_CHAN0_BIT >> (31 - 7 + i)))) { + continue; + } + if (InputBufferVcount[i] == 0 || InputBufferVcount[i] + (x / 2) < vcount) { + return; + } + } + + for (i = 0; i < SI_MAX_CHAN; ++i) { + InputBufferVcount[i] = 0; + } + + for (i = 0; i < 4; ++i) { + if (RDSTHandler[i]) { + RDSTHandler[i](interrupt, context); + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void SIInterruptHandler() { +static asm void SIInterruptHandler(OSInterrupt interrupt, OSContext* context) { nofralloc #include "asm/dolphin/si/SIBios/SIInterruptHandler.s" } #pragma pop +#endif /* 8034523C-803452D4 33FB7C 0098+00 2/2 0/0 0/0 .text SIEnablePollingInterrupt */ +// lwz and mr swapped +#ifdef NONMATCHING +static BOOL SIEnablePollingInterrupt(BOOL enable) { + BOOL enabled; + BOOL rc; + u32 reg; + int i; + + enabled = OSDisableInterrupts(); + reg = __SIRegs[13]; + rc = (reg & 0x08000000) ? TRUE : FALSE; + if (enable) { + reg |= 0x08000000; + for (i = 0; i < SI_MAX_CHAN; ++i) { + InputBufferVcount[i] = 0; + } + } else { + reg &= ~0x08000000; + } + reg &= ~0x80000001; + __SIRegs[13] = reg; + OSRestoreInterrupts(enabled); + return rc; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void SIEnablePollingInterrupt() { +static asm BOOL SIEnablePollingInterrupt(BOOL enable) { nofralloc #include "asm/dolphin/si/SIBios/SIEnablePollingInterrupt.s" } #pragma pop +#endif /* 803452D4-803453A0 33FC14 00CC+00 0/0 1/1 0/0 .text SIRegisterPollingHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void SIRegisterPollingHandler() { - nofralloc -#include "asm/dolphin/si/SIBios/SIRegisterPollingHandler.s" +BOOL SIRegisterPollingHandler(OSInterruptHandler handler) { + BOOL enabled; + int i; + + enabled = OSDisableInterrupts(); + for (i = 0; i < 4; ++i) { + if (RDSTHandler[i] == handler) { + OSRestoreInterrupts(enabled); + return TRUE; + } + } + for (i = 0; i < 4; ++i) { + if (RDSTHandler[i] == 0) { + RDSTHandler[i] = handler; + SIEnablePollingInterrupt(TRUE); + OSRestoreInterrupts(enabled); + return TRUE; + } + } + OSRestoreInterrupts(enabled); + return FALSE; } -#pragma pop /* 803453A0-80345494 33FCE0 00F4+00 0/0 1/1 0/0 .text SIUnregisterPollingHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void SIUnregisterPollingHandler() { - nofralloc -#include "asm/dolphin/si/SIBios/SIUnregisterPollingHandler.s" -} -#pragma pop +BOOL SIUnregisterPollingHandler(OSInterruptHandler handler) { + BOOL enabled; + int i; -/* ############################################################################################## */ -/* 804509C8-804509D0 -00001 0004+04 1/1 0/0 0/0 .sdata __SIVersion */ -SECTION_SDATA static void* __SIVersion[1 + 1 /* padding */] = { - (void*)&lit_1, - /* padding */ - NULL, -}; + enabled = OSDisableInterrupts(); + for (i = 0; i < 4; ++i) { + if (RDSTHandler[i] == handler) { + RDSTHandler[i] = 0; + for (i = 0; i < 4; ++i) { + if (RDSTHandler[i]) { + break; + } + } + if (i == 4) { + SIEnablePollingInterrupt(FALSE); + } + OSRestoreInterrupts(enabled); + return TRUE; + break; + } + } + OSRestoreInterrupts(enabled); + return FALSE; +} /* 80345494-80345548 33FDD4 00B4+00 0/0 1/1 0/0 .text SIInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void SIInit() { - nofralloc -#include "asm/dolphin/si/SIBios/SIInit.s" +void SIInit(void) { + OSRegisterVersion(__SIVersion); + + Packet[0].chan = Packet[1].chan = Packet[2].chan = Packet[3].chan = -1; + + Si.poll = 0; + SISetSamplingRate(0); + + while (__SIRegs[13] & 1) + ; + + __SIRegs[13] = 0x80000000; + + __OSSetInterruptHandler(OS_INTR_PI_SI, SIInterruptHandler); + __OSUnmaskInterrupts(OS_INTERRUPTMASK_PI_SI); + + SIGetType(0); + SIGetType(1); + SIGetType(2); + SIGetType(3); } -#pragma pop + +#define ROUND(n, a) (((u32)(n) + (a)-1) & ~((a)-1)) /* 80345548-80345754 33FE88 020C+00 3/3 0/0 0/0 .text __SITransfer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __SITransfer() { - nofralloc -#include "asm/dolphin/si/SIBios/__SITransfer.s" -} -#pragma pop +static BOOL __SITransfer(s32 chan, void* output, u32 outputBytes, void* input, u32 inputBytes, + SICallback callback) { + BOOL enabled; + u32 rLen; + u32 i; + u32 sr; + SIComm_u comcsr; -/* ############################################################################################## */ -/* 803D1210-803D1220 02E330 0010+00 5/5 0/0 0/0 .data Type */ -SECTION_DATA static u8 Type[16] = { - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, -}; + enabled = OSDisableInterrupts(); + if (Si.chan != -1) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + sr = __SIRegs[14]; + sr &= (0xf000000) >> (8 * chan); + __SIRegs[14] = sr; + + Si.chan = chan; + Si.callback = callback; + Si.inputBytes = inputBytes; + Si.input = input; + + rLen = ROUND(outputBytes, 4) / 4; + for (i = 0; i < rLen; i++) { + __SIRegs[32 + i] = ((u32*)output)[i]; + } + + comcsr.val = __SIRegs[13]; + comcsr.f.tcint = 1; + comcsr.f.tcintmsk = callback ? 1 : 0; + comcsr.f.outlngth = (outputBytes == SI_MAX_COMCSR_OUTLNGTH) ? 0 : outputBytes; + comcsr.f.inlngth = (inputBytes == SI_MAX_COMCSR_INLNGTH) ? 0 : inputBytes; + comcsr.f.channel = chan; + comcsr.f.tstart = 1; + __SIRegs[13] = comcsr.val; + + OSRestoreInterrupts(enabled); + + return TRUE; +} /* 80345754-803457D0 340094 007C+00 1/1 1/1 0/0 .text SIGetStatus */ +// lwz and mr swap +#ifdef NONMATCHING +u32 SIGetStatus(s32 chan) { + BOOL enabled; + u32 sr; + int chanShift; + + enabled = OSDisableInterrupts(); + sr = __SIRegs[14]; + chanShift = 8 * (SI_MAX_CHAN - 1 - chan); + sr >>= chanShift; + if (sr & SI_ERROR_NO_RESPONSE) { + if (!(Type[chan] & SI_ERROR_BUSY)) { + Type[chan] = SI_ERROR_NO_RESPONSE; + } + } + OSRestoreInterrupts(enabled); + return sr; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void SIGetStatus() { +asm u32 SIGetStatus(s32 chan) { nofralloc #include "asm/dolphin/si/SIBios/SIGetStatus.s" } #pragma pop +#endif /* 803457D0-803457E4 340110 0014+00 0/0 4/4 0/0 .text SISetCommand */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void SISetCommand() { - nofralloc -#include "asm/dolphin/si/SIBios/SISetCommand.s" +void SISetCommand(s32 chan, u32 command) { + __SIRegs[3 * chan] = command; } -#pragma pop /* 803457E4-803457F4 340124 0010+00 0/0 1/1 0/0 .text SITransferCommands */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void SITransferCommands() { - nofralloc -#include "asm/dolphin/si/SIBios/SITransferCommands.s" +void SITransferCommands(void) { + __SIRegs[14] = 0x80000000; } -#pragma pop /* 803457F4-80345860 340134 006C+00 0/0 1/1 0/0 .text SISetXY */ +// needs compiler epilogue patch +#ifdef NONMATCHING +u32 SISetXY(u32 x, u32 y) { + u32 poll; + BOOL enabled; + + poll = x << 16; + poll |= y << 8; + + enabled = OSDisableInterrupts(); + Si.poll &= ~(0x03ff0000 | 0x0000ff00); + Si.poll |= poll; + poll = Si.poll; + __SIRegs[12] = poll; + OSRestoreInterrupts(enabled); + return poll; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void SISetXY() { +asm u32 SISetXY(u32 x, u32 y) { nofralloc #include "asm/dolphin/si/SIBios/SISetXY.s" } #pragma pop +#endif /* 80345860-803458FC 3401A0 009C+00 0/0 3/3 0/0 .text SIEnablePolling */ +#ifdef NONMATCHING +u32 SIEnablePolling(u32 poll) { + BOOL enabled; + u32 en; + + if (poll == 0) { + return Si.poll; + } + + enabled = OSDisableInterrupts(); + + poll >>= (31 - 7); + en = poll & 0xf0; + + poll &= (en >> 4) | 0x03fffff0; + + poll &= ~0x03ffff00; + + Si.poll &= ~(en >> 4); + + Si.poll |= poll; + + poll = Si.poll; + + SITransferCommands(); + + __SIRegs[12] = poll; + + OSRestoreInterrupts(enabled); + + return poll; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void SIEnablePolling() { +asm u32 SIEnablePolling(u32 poll) { nofralloc #include "asm/dolphin/si/SIBios/SIEnablePolling.s" } #pragma pop +#endif /* 803458FC-80345968 34023C 006C+00 0/0 6/6 0/0 .text SIDisablePolling */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void SIDisablePolling() { - nofralloc -#include "asm/dolphin/si/SIBios/SIDisablePolling.s" +u32 SIDisablePolling(u32 poll) { + BOOL enabled; + + if (poll == 0) { + return Si.poll; + } + + enabled = OSDisableInterrupts(); + + poll >>= (31 - 7); + poll &= 0xf0; + + poll = Si.poll & ~poll; + + __SIRegs[12] = poll; + Si.poll = poll; + + OSRestoreInterrupts(enabled); + return poll; } -#pragma pop /* 80345968-80345A3C 3402A8 00D4+00 1/1 0/0 0/0 .text SIGetResponseRaw */ +#ifdef NONMATCHING +static BOOL SIGetResponseRaw(s32 chan) { + u32 sr; + + sr = SIGetStatus(chan); + if (sr & SI_ERROR_RDST) { + InputBuffer[chan][0] = __SIRegs[3 * chan + 1]; + InputBuffer[chan][1] = __SIRegs[3 * chan + 2]; + InputBufferValid[chan] = TRUE; + return TRUE; + } + return FALSE; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void SIGetResponseRaw() { +static asm BOOL SIGetResponseRaw(s32 chan) { nofralloc #include "asm/dolphin/si/SIBios/SIGetResponseRaw.s" } #pragma pop +#endif /* 80345A3C-80345B00 34037C 00C4+00 0/0 4/4 0/0 .text SIGetResponse */ +#ifdef NONMATCHING +BOOL SIGetResponse(s32 chan, void* data) { + BOOL rc; + BOOL enabled; + + enabled = OSDisableInterrupts(); + SIGetResponseRaw(chan); + rc = InputBufferValid[chan]; + InputBufferValid[chan] = FALSE; + if (rc) { + ((u32*)data)[0] = InputBuffer[chan][0]; + ((u32*)data)[1] = InputBuffer[chan][1]; + } + OSRestoreInterrupts(enabled); + return rc; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void SIGetResponse() { +asm BOOL SIGetResponse(s32 chan, void* data) { nofralloc #include "asm/dolphin/si/SIBios/SIGetResponse.s" } #pragma pop +#endif /* 80345B00-80345B8C 340440 008C+00 1/1 0/0 0/0 .text AlarmHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void AlarmHandler() { - nofralloc -#include "asm/dolphin/si/SIBios/AlarmHandler.s" +static void AlarmHandler(OSAlarm* alarm, OSContext* context) { + s32 chan; + SIPacket* packet; + + chan = alarm - Alarm; + packet = &Packet[chan]; + if (packet->chan != -1) { + if (__SITransfer(packet->chan, packet->output, packet->outputBytes, packet->input, + packet->inputBytes, packet->callback)) { + packet->chan = -1; + } + } } -#pragma pop /* 80345B8C-80345CF8 3404CC 016C+00 3/3 3/3 0/0 .text SITransfer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void SITransfer() { - nofralloc -#include "asm/dolphin/si/SIBios/SITransfer.s" +BOOL SITransfer(s32 chan, void* output, u32 outputBytes, void* input, u32 inputBytes, + SICallback callback, OSTime delay) { + BOOL enabled; + SIPacket* packet = &Packet[chan]; + OSTime now; + OSTime fire; + + enabled = OSDisableInterrupts(); + if (packet->chan != -1 || Si.chan == chan) { + OSRestoreInterrupts(enabled); + return FALSE; + } + + now = __OSGetSystemTime(); + if (delay == 0) { + fire = now; + } else { + fire = XferTime[chan] + delay; + } + if (now < fire) { + delay = fire - now; + OSSetAlarm(&Alarm[chan], delay, AlarmHandler); + } else if (__SITransfer(chan, output, outputBytes, input, inputBytes, callback)) { + OSRestoreInterrupts(enabled); + return TRUE; + } + + packet->chan = chan; + packet->output = output; + packet->outputBytes = outputBytes; + packet->input = input; + packet->inputBytes = inputBytes; + packet->callback = callback; + packet->fire = fire; + + OSRestoreInterrupts(enabled); + return TRUE; } -#pragma pop /* ############################################################################################## */ /* 804516F4-804516F8 000BF4 0004+00 1/1 0/0 0/0 .sbss cmdTypeAndStatus$372 */ static u8 cmdTypeAndStatus_372[4]; /* 804516F8-80451700 000BF8 0004+04 1/1 1/1 0/0 .sbss __PADFixBits */ -extern u8 __PADFixBits[4 + 4 /* padding */]; -u8 __PADFixBits[4 + 4 /* padding */]; +extern u32 __PADFixBits; +u32 __PADFixBits; /* 80345CF8-80345F90 340638 0298+00 2/2 0/0 0/0 .text GetTypeCallback */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void GetTypeCallback() { +static asm void GetTypeCallback(s32 chan, u32 error, OSContext* context) { nofralloc #include "asm/dolphin/si/SIBios/GetTypeCallback.s" } #pragma pop /* 80345F90-80346154 3408D0 01C4+00 2/2 3/3 0/0 .text SIGetType */ +#ifdef NONMATCHING +u32 SIGetType(s32 chan) { + static u32 cmdTypeAndStatus; + BOOL enabled; + u32 type; + OSTime diff; + + enabled = OSDisableInterrupts(); + + type = Type[chan]; + diff = __OSGetSystemTime() - TypeTime[chan]; + if (Si.poll & (0x80 >> chan)) { + if (type != SI_ERROR_NO_RESPONSE) { + TypeTime[chan] = __OSGetSystemTime(); + OSRestoreInterrupts(enabled); + return type; + } else { + type = Type[chan] = SI_ERROR_BUSY; + } + } else if (diff <= OSMillisecondsToTicks(50) && type != SI_ERROR_NO_RESPONSE) { + OSRestoreInterrupts(enabled); + return type; + } else if (diff <= OSMillisecondsToTicks(75)) { + Type[chan] = SI_ERROR_BUSY; + } else { + type = Type[chan] = SI_ERROR_BUSY; + } + TypeTime[chan] = __OSGetSystemTime(); + + SITransfer(chan, &cmdTypeAndStatus, 1, &Type[chan], 3, GetTypeCallback, + OSMicrosecondsToTicks(65)); + + OSRestoreInterrupts(enabled); + return type; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void SIGetType() { +asm u32 SIGetType(s32 chan) { nofralloc #include "asm/dolphin/si/SIBios/SIGetType.s" } #pragma pop +#endif /* 80346154-80346290 340A94 013C+00 0/0 6/6 0/0 .text SIGetTypeAsync */ +// needs compiler epilogue patch +#ifdef NONMATCHING +u32 SIGetTypeAsync(s32 chan, SITypeAndStatusCallback callback) { + BOOL enabled; + u32 type; + + enabled = OSDisableInterrupts(); + type = SIGetType(chan); + if (Type[chan] & SI_ERROR_BUSY) { + int i; + + for (i = 0; i < 4; ++i) { + if (TypeCallback[chan][i] == callback) { + break; + } + if (TypeCallback[chan][i] == 0) { + TypeCallback[chan][i] = callback; + break; + } + } + } else { + callback(chan, type); + } + OSRestoreInterrupts(enabled); + return type; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void SIGetTypeAsync() { +asm u32 SIGetTypeAsync(s32 chan, SITypeAndStatusCallback callback) { nofralloc #include "asm/dolphin/si/SIBios/SIGetTypeAsync.s" } #pragma pop +#endif /* ############################################################################################## */ /* 803D1220-803D122C 02E340 000C+00 0/0 0/0 0/0 .data @457 */ + +// All of these strings are from the stripped `SIGetTypeString` function #pragma push #pragma force_active on SECTION_DATA static char lit_457[] = "No response"; diff --git a/libs/dolphin/si/SISamplingRate.c b/libs/dolphin/si/SISamplingRate.c index 4bf5ca3d4a8..7a6ff1a28b5 100644 --- a/libs/dolphin/si/SISamplingRate.c +++ b/libs/dolphin/si/SISamplingRate.c @@ -5,24 +5,14 @@ #include "dolphin/si/SISamplingRate.h" #include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -void SISetSamplingRate(); -void SIRefreshSamplingRate(); +#include "dolphin/si/SIBios.h" +#include "dolphin/vi/vi.h" // // External References: // -void OSReport(); -void OSDisableInterrupts(); -void OSRestoreInterrupts(); -void SISetXY(); -void VIGetTvFormat(); +u32 VIGetTvFormat(); // // Declarations: @@ -30,19 +20,17 @@ void VIGetTvFormat(); /* ############################################################################################## */ /* 803D12D0-803D1300 02E3F0 0030+00 1/1 0/0 0/0 .data XYNTSC */ -SECTION_DATA static u8 XYNTSC[48] = { - 0x00, 0xF6, 0x02, 0x00, 0x00, 0x0E, 0x13, 0x00, 0x00, 0x1E, 0x09, 0x00, 0x00, 0x2C, 0x06, 0x00, - 0x00, 0x34, 0x05, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00, 0x57, 0x03, 0x00, 0x00, 0x57, 0x03, 0x00, - 0x00, 0x57, 0x03, 0x00, 0x00, 0x83, 0x02, 0x00, 0x00, 0x83, 0x02, 0x00, 0x00, 0x83, 0x02, 0x00, +static XY XYNTSC[12] = { + {263 - 17, 2}, {14, 19}, {30, 9}, {44, 6}, {52, 5}, {65, 4}, + {87, 3}, {87, 3}, {87, 3}, {131, 2}, {131, 2}, {131, 2}, }; /* 803D1300-803D1330 02E420 0030+00 0/1 0/0 0/0 .data XYPAL */ #pragma push #pragma force_active on -SECTION_DATA static u8 XYPAL[48] = { - 0x01, 0x28, 0x02, 0x00, 0x00, 0x0F, 0x15, 0x00, 0x00, 0x1D, 0x0B, 0x00, 0x00, 0x2D, 0x07, 0x00, - 0x00, 0x34, 0x06, 0x00, 0x00, 0x3F, 0x05, 0x00, 0x00, 0x4E, 0x04, 0x00, 0x00, 0x68, 0x03, 0x00, - 0x00, 0x68, 0x03, 0x00, 0x00, 0x68, 0x03, 0x00, 0x00, 0x68, 0x03, 0x00, 0x00, 0x9C, 0x02, 0x00, +static XY XYPAL[12] = { + {313 - 17, 2}, {15, 21}, {29, 11}, {45, 7}, {52, 6}, {63, 5}, + {78, 4}, {104, 3}, {104, 3}, {104, 3}, {104, 3}, {156, 2}, }; #pragma pop @@ -53,24 +41,54 @@ SECTION_DATA static char lit_16[] = "SISetSamplingRate: unknown TV format. Use d #pragma pop /* 80451700-80451708 000C00 0004+04 2/2 0/0 0/0 .sbss SamplingRate */ -static u8 SamplingRate[4 + 4 /* padding */]; +static u32 SamplingRate; /* 80346290-80346374 340BD0 00E4+00 1/1 1/1 0/0 .text SISetSamplingRate */ +// needs compiler epilogue patch +#ifdef NONMATCHING +void SISetSamplingRate(u32 msec) { + XY* xy; + BOOL enabled; + + if (msec > 11) { + msec = 11; + } + + enabled = OSDisableInterrupts(); + + SamplingRate = msec; + + switch (VIGetTvFormat()) { + case VI_NTSC: + case VI_MPAL: + case VI_EURGB60: + xy = XYNTSC; + break; + case VI_PAL: + xy = XYPAL; + break; + default: + OSReport("SISetSamplingRate: unknown TV format. Use default."); + msec = 0; + xy = XYNTSC; + break; + } + + SISetXY((__VIRegs[54] & 1 ? 2u : 1u) * xy[msec].line, xy[msec].count); + OSRestoreInterrupts(enabled); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void SISetSamplingRate() { +asm void SISetSamplingRate(u32 msec) { nofralloc #include "asm/dolphin/si/SISamplingRate/SISetSamplingRate.s" } #pragma pop +#endif /* 80346374-80346398 340CB4 0024+00 0/0 2/2 0/0 .text SIRefreshSamplingRate */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void SIRefreshSamplingRate() { - nofralloc -#include "asm/dolphin/si/SISamplingRate/SIRefreshSamplingRate.s" +void SIRefreshSamplingRate() { + SISetSamplingRate(SamplingRate); } -#pragma pop diff --git a/libs/dolphin/vi/Makefile b/libs/dolphin/vi/Makefile index 08cfcd08058..b59f0351ac9 100644 --- a/libs/dolphin/vi/Makefile +++ b/libs/dolphin/vi/Makefile @@ -9,6 +9,14 @@ LIBVI_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/vi/vi.o \ LIBVI_A_CFLAGS := \ + -Cpp_exceptions off \ + -proc gekko \ + -fp hard \ + -nodefaults \ + -str reuse \ + -RTTI off \ + -maxerrors 5 \ + -enum int $(INCLUDES) \ -O4,p \ -lang=c \ @@ -27,5 +35,7 @@ $(BUILD_DIR)/libs/dolphin/vi/%.o: libs/dolphin/vi/%.c @mkdir -p $(@D) @echo building... $< @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c - @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBVI_A_CFLAGS) -c -o $@ $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(LIBVI_A_CFLAGS) -c -o $@ $(basename $@).c + @echo Frank is fixing $@ + @$(PYTHON) $(FRANK) $@ $@ $@ diff --git a/rel/d/a/d_a_movie_player/d_a_movie_player.cpp b/rel/d/a/d_a_movie_player/d_a_movie_player.cpp index 404daa344f7..56804c25845 100644 --- a/rel/d/a/d_a_movie_player/d_a_movie_player.cpp +++ b/rel/d/a/d_a_movie_player/d_a_movie_player.cpp @@ -224,7 +224,6 @@ extern "C" void free__7JKRHeapFPvP7JKRHeap(); extern "C" void PPCMfhid2(); extern "C" void LCEnable(); extern "C" void LCDisable(); -extern "C" void DVDCancel(); extern "C" void VISetPostRetraceCallback(); extern "C" void VIGetNextField(); extern "C" void VIGetTvFormat(); diff --git a/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.cpp b/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.cpp index 12ebca70150..768f5300957 100644 --- a/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.cpp +++ b/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.cpp @@ -4,105 +4,151 @@ // #include "rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.h" +#include "JSystem/J3DGraphAnimator/J3DModel.h" +#include "SSystem/SComponent/c_phase.h" +#include "d/bg/d_bg_w.h" +#include "d/com/d_com_inf_game.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "f_op/f_op_actor.h" +#include "f_op/f_op_actor_mng.h" -// -// Types: -// +extern const char* l_arcName; +static int createSolidHeap(fopAc_ac_c* i_this); -struct request_of_phase_process_class {}; - -struct cXyz {}; - -struct mDoMtx_stack_c { - /* 8000CCC8 */ void push(); - /* 8000CD14 */ void pop(); - /* 8000CD64 */ void transS(cXyz const&); - /* 8000CD9C */ void transM(f32, f32, f32); - - static u8 now[48]; +struct daObjCatDoor_Door_c { + /* 0x00 */ J3DModel* pmodel; + /* 0x04 */ dBgW bgw; + /* 0xe0 */ Mtx mtx; + /* 0xf4 */ s16 angle; }; -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; +class daObjCatDoor_c : public fopAc_ac_c { +public: + daObjCatDoor_c() {} + ~daObjCatDoor_c() { + if (mDoor1.bgw.ChkUsed()) { + dComIfG_Bgsp().Release(&mDoor1.bgw); + } + if (mDoor2.bgw.ChkUsed()) { + dComIfG_Bgsp().Release(&mDoor2.bgw); + } + dComIfG_resDelete(&mPhaseReq, l_arcName); + } -struct daObjCatDoor_c { - /* 80BC42B8 */ void attr() const; + /* 80BC42B8 */ const s16* attr() const; /* 80BC43F4 */ void initBaseMtx(); /* 80BC4454 */ void setBaseMtx(); /* 80BC4560 */ void calcOpen(); + u8 getSwitchNo() { return fopAcM_GetParam(this); } + + int createHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4); + + ASSERT(modelData != NULL); + mDoor1.pmodel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + mDoor2.pmodel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); + if (mDoor1.pmodel == NULL || mDoor2.pmodel == NULL) { + return 0; + } + + cBgD_t* cbgd = (cBgD_t*)dComIfG_getObjectRes(l_arcName, 7); + if (mDoor1.bgw.Set(cbgd, 1, &mDoor1.mtx)) { + return 0; + } + + cBgD_t* cbgd2 = (cBgD_t*)dComIfG_getObjectRes(l_arcName, 7); + if (mDoor2.bgw.Set(cbgd2, 1, &mDoor2.mtx)) { + return 0; + } + + return 1; + } + + int draw() { + g_env_light.settingTevStruct(0x10, ¤t.pos, &mTevStr); + + fopAc_ac_c* p1 = static_cast(this); + g_env_light.setLightTevColorType_MAJI(mDoor1.pmodel, &p1->mTevStr); + g_env_light.setLightTevColorType_MAJI(mDoor2.pmodel, &p1->mTevStr); + + dComIfGd_setListBG(); + mDoExt_modelUpdateDL(mDoor1.pmodel); + mDoExt_modelUpdateDL(mDoor2.pmodel); + dComIfGd_setList(); + return 1; + } + + int execute() { + if (dComIfGs_isSwitch(fopAcM_GetParam(this) & 0xFF, fopAcM_GetHomeRoomNo(this)) || + mRotSpeed == 0) { + return 1; + } + calcOpen(); + setBaseMtx(); + return 1; + } + + int create() { + if (!fopAcM_CheckCondition(this, 8)) { + new (this) daObjCatDoor_c(); + fopAcM_OnCondition(this, 8); + } + + int phase_state = dComIfG_resLoad(&mPhaseReq, l_arcName); + if (phase_state != cPhs_COMPLEATE_e) { + return phase_state; + } + + if (!fopAcM_entrySolidHeap(this, createSolidHeap, 0x2520)) { + return cPhs_ERROR_e; + } + + create_init(); + return phase_state; + } + + void create_init() { + ASSERT(getSwitchNo() != 0xff); + fopAcM_setCullSizeBox(this, -200.0f, 0.0f, -20.0f, 200.0f, 260.0f, 100.0f); + if (i_fopAcM_isSwitch(this, getSwitchNo())) { + mDoor1.angle = 0x8800; + mDoor2.angle = 0x7800; + } else { + mDoor1.bgw.SetCrrFunc(NULL); + mDoor1.bgw.SetRoomId(fopAcM_GetRoomNo(this)); + dComIfG_Bgsp().Regist(&mDoor1.bgw, this); + mDoor2.bgw.SetCrrFunc(NULL); + mDoor2.bgw.SetRoomId(fopAcM_GetRoomNo(this)); + dComIfG_Bgsp().Regist(&mDoor2.bgw, this); + } + initBaseMtx(); + } + +private: + /* 0x568 */ request_of_phase_process_class mPhaseReq; + /* 0x570 */ daObjCatDoor_Door_c mDoor1; + /* 0x660 */ daObjCatDoor_Door_c mDoor2; + /* 0x760 */ Mtx mMtx; + /* 0x790 */ s16 mRotSpeed; + +public: static u32 const M_attr; }; -struct dSv_info_c { - /* 80035200 */ void onSwitch(int, int); - /* 80035360 */ void isSwitch(int, int) const; -}; - -struct dKy_tevstr_c {}; - -struct J3DModelData {}; - -struct dScnKy_env_light_c { - /* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*); - /* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*); -}; - -struct dRes_info_c {}; - -struct dRes_control_c { - /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); -}; - -struct dBgW_Base {}; - -struct dBgW { - /* 8007B970 */ dBgW(); - /* 8007B9C0 */ void Move(); -}; - -struct dBgS { - /* 80074A08 */ void Regist(dBgW_Base*, fopAc_ac_c*); -}; - -struct cBgW_BgId { - /* 802681D4 */ void ChkUsed() const; -}; - -struct cBgD_t {}; - -struct cBgW { - /* 8007933C */ ~cBgW(); - /* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]); -}; - -struct cBgS { - /* 80074250 */ void Release(dBgW_Base*); -}; - -struct J3DModel {}; - // // Forward References: // -extern "C" void attr__14daObjCatDoor_cCFv(); extern "C" static void createSolidHeap__FP10fopAc_ac_c(); extern "C" void initBaseMtx__14daObjCatDoor_cFv(); -extern "C" void setBaseMtx__14daObjCatDoor_cFv(); -extern "C" void calcOpen__14daObjCatDoor_cFv(); extern "C" static void daObjCatDoor_Draw__FP14daObjCatDoor_c(); -extern "C" static void daObjCatDoor_Execute__FP14daObjCatDoor_c(); +extern "C" static int daObjCatDoor_Execute__FP14daObjCatDoor_c(); extern "C" static bool daObjCatDoor_IsDelete__FP14daObjCatDoor_c(); extern "C" static void daObjCatDoor_Delete__FP14daObjCatDoor_c(); extern "C" static void daObjCatDoor_Create__FP10fopAc_ac_c(); extern "C" u32 const M_attr__14daObjCatDoor_c; -extern "C" extern char const* const d_a_obj_catdoor__stringBase0; -extern "C" extern void* g_profile_Obj_CatDoor[12]; // // External References: @@ -134,18 +180,13 @@ extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); extern "C" void ChkUsed__9cBgW_BgIdCFv(); extern "C" void cLib_chaseS__FPsss(); -extern "C" void PSMTXCopy(); extern "C" void _savegpr_25(); extern "C" void _savegpr_29(); extern "C" void _restgpr_25(); extern "C" void _restgpr_29(); extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; extern "C" extern void* __vt__4dBgW[65]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_env_light[4880]; -extern "C" extern u8 j3dSys[284]; // // Declarations: @@ -157,118 +198,86 @@ SECTION_RODATA u32 const daObjCatDoor_c::M_attr = 0x001E0578; COMPILER_STRIP_GATE(0x80BC49B4, &daObjCatDoor_c::M_attr); /* 80BC42B8-80BC42C4 000078 000C+00 1/1 0/0 1/1 .text attr__14daObjCatDoor_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjCatDoor_c::attr() const { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/attr__14daObjCatDoor_cCFv.s" +const s16* daObjCatDoor_c::attr() const { + return (const s16*)&daObjCatDoor_c::M_attr; } -#pragma pop - -/* ############################################################################################## */ -/* 80BC49D8-80BC49D8 000024 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80BC49D8 = "CatDoor"; -#pragma pop /* 80BC49E0-80BC49E4 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName = (void*)&d_a_obj_catdoor__stringBase0; +static const char* l_arcName = "CatDoor"; /* 80BC42C4-80BC43F4 000084 0130+00 1/1 0/0 0/0 .text createSolidHeap__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void createSolidHeap(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/createSolidHeap__FP10fopAc_ac_c.s" +static int createSolidHeap(fopAc_ac_c* i_this) { + return static_cast(i_this)->createHeap(); } -#pragma pop /* 80BC43F4-80BC4454 0001B4 0060+00 1/1 0/0 0/0 .text initBaseMtx__14daObjCatDoor_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjCatDoor_c::initBaseMtx() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/initBaseMtx__14daObjCatDoor_cFv.s" +void daObjCatDoor_c::initBaseMtx() { + mCullMtx = mMtx; + mDoMtx_stack_c::transS(current.pos); + mDoMtx_YrotM(mDoMtx_stack_c::get(), shape_angle.y); + PSMTXCopy(mDoMtx_stack_c::get(), mMtx); + setBaseMtx(); } -#pragma pop - -/* ############################################################################################## */ -/* 80BC49B8-80BC49BC 000004 0004+00 0/1 0/0 0/0 .rodata @3712 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3712 = -97.0f; -COMPILER_STRIP_GATE(0x80BC49B8, &lit_3712); -#pragma pop - -/* 80BC49BC-80BC49C0 000008 0004+00 0/1 0/0 0/0 .rodata @3713 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3713 = 97.0f; -COMPILER_STRIP_GATE(0x80BC49BC, &lit_3713); -#pragma pop - -/* 80BC49C0-80BC49C4 00000C 0004+00 0/2 0/0 0/0 .rodata @3714 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3714[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x80BC49C0, &lit_3714); -#pragma pop /* 80BC4454-80BC4560 000214 010C+00 2/2 0/0 1/1 .text setBaseMtx__14daObjCatDoor_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjCatDoor_c::setBaseMtx() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/setBaseMtx__14daObjCatDoor_cFv.s" +void daObjCatDoor_c::setBaseMtx() { + mDoMtx_stack_c::transS(current.pos); + mDoMtx_YrotM(mDoMtx_stack_c::get(), shape_angle.y); + for (int i = 0; i < 2; i++) { + daObjCatDoor_Door_c* door = i == 0 ? &mDoor1 : &mDoor2; + f32 xOff = i == 0 ? -97.0f : 97.0f; + s16 rot = i == 0 ? door->angle : s16(door->angle + 0x8000); + mDoMtx_stack_c::push(); + mDoMtx_stack_c::transM(xOff, 0.0, 0.0); + mDoMtx_YrotM(mDoMtx_stack_c::get(), (s16)rot); + mDoMtx_copy(mDoMtx_stack_c::get(), door->pmodel->mBaseTransformMtx); + mDoMtx_copy(mDoMtx_stack_c::get(), door->mtx); + door->bgw.Move(); + mDoMtx_stack_c::pop(); + } } -#pragma pop /* 80BC4560-80BC4628 000320 00C8+00 1/1 0/0 0/0 .text calcOpen__14daObjCatDoor_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daObjCatDoor_c::calcOpen() { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/calcOpen__14daObjCatDoor_cFv.s" +void daObjCatDoor_c::calcOpen() { + s16 prev = mRotSpeed; + int res = cLib_chaseS(&mRotSpeed, 0, *attr()); + for (int i = 0; i < 2; i++) { + daObjCatDoor_Door_c* door = i == 0 ? &mDoor1 : &mDoor2; + if (i == 0) { + door->angle -= mRotSpeed; + } else { + door->angle += mRotSpeed; + } + } + + if (prev != 0 && res != 0) { + i_fopAcM_onSwitch(this, getSwitchNo()); + } } -#pragma pop /* 80BC4628-80BC46EC 0003E8 00C4+00 1/0 0/0 0/0 .text daObjCatDoor_Draw__FP14daObjCatDoor_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjCatDoor_Draw(daObjCatDoor_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Draw__FP14daObjCatDoor_c.s" +static int daObjCatDoor_Draw(daObjCatDoor_c* i_this) { + return static_cast(i_this)->draw(); } -#pragma pop /* 80BC46EC-80BC4760 0004AC 0074+00 1/0 0/0 0/0 .text daObjCatDoor_Execute__FP14daObjCatDoor_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daObjCatDoor_Execute(daObjCatDoor_c* param_0) { - nofralloc -#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Execute__FP14daObjCatDoor_c.s" +static int daObjCatDoor_Execute(daObjCatDoor_c* i_this) { + return static_cast(i_this)->execute(); } -#pragma pop /* 80BC4760-80BC4768 000520 0008+00 1/0 0/0 0/0 .text daObjCatDoor_IsDelete__FP14daObjCatDoor_c */ -static bool daObjCatDoor_IsDelete(daObjCatDoor_c* param_0) { +static bool daObjCatDoor_IsDelete(daObjCatDoor_c* i_this) { return true; } /* 80BC4768-80BC4848 000528 00E0+00 1/0 0/0 0/0 .text daObjCatDoor_Delete__FP14daObjCatDoor_c */ +#ifdef NONMATCHING // ~dBgW is not inlined +static int daObjCatDoor_Delete(daObjCatDoor_c* i_this) { + fopAcM_GetID(i_this); + i_this->~daObjCatDoor_c(); + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -277,6 +286,7 @@ static asm void daObjCatDoor_Delete(daObjCatDoor_c* param_0) { #include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Delete__FP14daObjCatDoor_c.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80BC49C4-80BC49C8 000010 0004+00 0/1 0/0 0/0 .rodata @3860 */ @@ -316,6 +326,12 @@ COMPILER_STRIP_GATE(0x80BC49D4, &lit_3864); /* 80BC4848-80BC49AC 000608 0164+00 1/0 0/0 0/0 .text daObjCatDoor_Create__FP10fopAc_ac_c */ +#ifdef NONMATCHING // inverted conditional branch +static void daObjCatDoor_Create(fopAc_ac_c* i_this) { + fopAcM_GetID(i_this); + static_cast(i_this)->create(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -324,6 +340,7 @@ static asm void daObjCatDoor_Create(fopAc_ac_c* param_0) { #include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Create__FP10fopAc_ac_c.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80BC49E4-80BC4A04 -00001 0020+00 1/0 0/0 0/0 .data l_daObjCatDoor_Method */ diff --git a/src/d/a/d_a_alink_hook.inc b/src/d/a/d_a_alink_hook.inc index 6e6f036a87f..ad5abe36359 100644 --- a/src/d/a/d_a_alink_hook.inc +++ b/src/d/a/d_a_alink_hook.inc @@ -313,46 +313,161 @@ void daAlink_c::setHookshotReadyMaterial() { } /* 801090EC-80109170 103A2C 0084+00 8/8 0/0 0/0 .text initHookshotUpperAnimeSpeed__9daAlink_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::initHookshotUpperAnimeSpeed(int param_0) { - nofralloc -#include "asm/d/a/d_a_alink/initHookshotUpperAnimeSpeed__9daAlink_cFi.s" +int daAlink_c::initHookshotUpperAnimeSpeed(int param_0) { + if (checkHookshotWait()) { + if (param_0) { + f32 tmp_0 = FLOAT_LABEL(lit_6108); + mUpperFrameCtrl[2].setRate(tmp_0); + mUpperFrameCtrl[2].setFrame(tmp_0); + getNowAnmPackUpper(UPPER_2)->setFrame(tmp_0); + } else { + setWaterInAnmRate(&mUpperFrameCtrl[2], daAlinkHIO_hookshot_c0::m.mWaitAnmSpeed); + } + + return 1; + } + + return 0; } -#pragma pop /* 80109170-801091E4 103AB0 0074+00 4/4 0/0 0/0 .text initHookshotReady__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::initHookshotReady() { - nofralloc -#include "asm/d/a/d_a_alink/initHookshotReady__9daAlink_cFv.s" +void daAlink_c::initHookshotReady() { + mItemMode = 1; + + f32 tmp_0 = FLOAT_LABEL(lit_6108); + field_0x33e0 = tmp_0; + + dComIfGp_getVibration().StartShock(1, 1, cXyz(tmp_0, lit_6040, tmp_0)); + + field_0x3018 = 3; + field_0x3494 = lit_6041; } -#pragma pop /* 801091E4-80109284 103B24 00A0+00 1/1 0/0 0/0 .text setHookshotReadyAnime__9daAlink_cFv */ #pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setHookshotReadyAnime() { - nofralloc -#include "asm/d/a/d_a_alink/setHookshotReadyAnime__9daAlink_cFv.s" +#pragma optimization_level 2 +void daAlink_c::setHookshotReadyAnime() { + f32 speed; + if (!i_checkAttentionLock() && mFastShotTime == 0) { + speed = FLOAT_LABEL(lit_6108); + } else { + speed = daAlinkHIO_hookshot_c0::m.mWaitAnmSpeed; + } + + setUpperAnimeBaseSpeed(0x18D, speed, lit_6109); + field_0x3020 = 0; + initHookshotReady(); } #pragma pop /* 80109284-801095C8 103BC4 0344+00 3/3 0/0 0/0 .text checkUpperItemActionHookshot__9daAlink_cFv */ +// checkAttentionLock +#ifdef NONMATCHING +int daAlink_c::checkUpperItemActionHookshot() { + if (checkHookshotWait()) { + mSearchBallScale = __float_max[0]; + } + + if (mItemMode == 1) { + if (!itemButton() && field_0x3018 == 0 && checkReadyItem()) { + mItemMode = 2; + field_0x3026 = 0; + field_0x3494 = lit_6041; + field_0x284c.clearData(); + cancelLockAt(); + field_0x2804 = NULL; + + if (mProcID == PROC_HOOKSHOT_ROOF_SHOOT || mProcID == PROC_HOOKSHOT_WALL_SHOOT) { + daAlink_ANM anmID; + if (mProcID == PROC_HOOKSHOT_ROOF_SHOOT) { + if (field_0x3020 == 0) { + anmID = ANM_HOOKSHOT_HANG_SHOOT_RIGHT; + } else { + anmID = ANM_HOOKSHOT_HANG_SHOOT_LEFT; + } + } else if (field_0x3020 == 0) { + anmID = ANM_HOOKSHOT_WALL_SHOOT_RIGHT; + } else { + anmID = ANM_HOOKSHOT_WALL_SHOOT_LEFT; + } + + setSingleAnimeBaseMorf(anmID, FLOAT_LABEL(lit_6108)); + } else if (i_checkModeFlg(0x40400)) { + setUpperAnimeParam(0x18C, UPPER_2, &daAlinkHIO_hookshot_c0::m.mShootAnm); + + if (i_checkModeFlg(0x40000)) { + mNormalSpeed = FLOAT_LABEL(lit_6108); + } + } else { + f32 tmp_0 = FLOAT_LABEL(lit_6108); + mUpperFrameCtrl[2].setRate(tmp_0); + mUpperFrameCtrl[2].setFrame(tmp_0); + getNowAnmPackUpper(UPPER_2)->setFrame(tmp_0); + + mNormalSpeed = tmp_0; + onModeFlg(1); + mSpeedModifier = tmp_0; + mNowAnmPackUpper[2].setRatio(tmp_0); + + setSingleAnimeParam(ANM_HOOKSHOT_SHOOT, &daAlinkHIO_hookshot_c0::m.mShootAnm); + } + + if (!i_checkNoResetFlg3(FLG3_UNK_4)) { + f32 tmp_0 = FLOAT_LABEL(lit_6108); + dComIfGp_getVibration().StartQuake(1, 1, cXyz(tmp_0, lit_6040, tmp_0)); + i_onNoResetFlg3(FLG3_UNK_4); + } + + return 1; + } + } else if (mItemMode == 0) { + if (i_checkModeFlg(0x400) && i_checkAttentionLock() && mTargetedActor == NULL) { + resetUpperAnime(UPPER_2, lit_6109); + dComIfGp_clearPlayerStatus0(0, 0x4000); + return 1; + } + + if (checkReadyItem() && itemButton()) { + initHookshotReady(); + } + } else if (mItemMode == 3) { + if (checkReadyItem() && itemTrigger()) { + mItemMode = 6; + } + + checkNextActionHookshot(); + return 1; + } else if (mItemMode == 6) { + checkNextActionHookshot(); + return 1; + } else if (mItemMode == 5 || mItemMode == 4) { + if (field_0x3026 != 0) { + field_0x3026--; + setHookshotTopPosFly(); + return 1; + } + + return procHookshotFlyInit(); + } + + if (field_0x3018 > 0) { + field_0x3018--; + } + + return cancelUpperItemReadyAnime(0); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkUpperItemActionHookshot() { +asm int daAlink_c::checkUpperItemActionHookshot() { nofralloc #include "asm/d/a/d_a_alink/checkUpperItemActionHookshot__9daAlink_cFv.s" } #pragma pop +#endif /* 801095C8-801097A0 103F08 01D8+00 7/7 0/0 0/0 .text checkNextActionHookshot__9daAlink_cFv */ #pragma push diff --git a/src/d/com/d_com_inf_game.cpp b/src/d/com/d_com_inf_game.cpp index d85e252e31a..1c6dfc1dcb3 100644 --- a/src/d/com/d_com_inf_game.cpp +++ b/src/d/com/d_com_inf_game.cpp @@ -438,701 +438,647 @@ void dComIfG_play_c::setStartStage(dStage_startStage_c* i_startStage) { } /* 8002B3F4-8002B434 025D34 0040+00 1/1 0/0 0/0 .text dComIfG_get_timelayer__FPi */ -void dComIfG_get_timelayer(int* i_layer) { +void dComIfG_get_timelayer(int* o_layer) { if (dKy_daynight_check()) { - *i_layer += 1; + *o_layer += 1; } } -/* ############################################################################################## */ -/* 80378F38-80378F38 005598 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80378F38 = "D_MN11"; -SECTION_DEAD static char const* const stringBase_80378F3F = "F_SP114"; -SECTION_DEAD static char const* const stringBase_80378F47 = "F_SP108"; -SECTION_DEAD static char const* const stringBase_80378F4F = "R_SP108"; -SECTION_DEAD static char const* const stringBase_80378F57 = "F_SP109"; -SECTION_DEAD static char const* const stringBase_80378F5F = "F_SP111"; -SECTION_DEAD static char const* const stringBase_80378F67 = "R_SP109"; -SECTION_DEAD static char const* const stringBase_80378F6F = "R_SP209"; -SECTION_DEAD static char const* const stringBase_80378F77 = "F_SP110"; -SECTION_DEAD static char const* const stringBase_80378F7F = "R_SP110"; -SECTION_DEAD static char const* const stringBase_80378F87 = "F_SP115"; -SECTION_DEAD static char const* const stringBase_80378F8F = "F_SP116"; -SECTION_DEAD static char const* const stringBase_80378F97 = "R_SP116"; -SECTION_DEAD static char const* const stringBase_80378F9F = "R_SP115"; -SECTION_DEAD static char const* const stringBase_80378FA7 = "F_SP113"; -SECTION_DEAD static char const* const stringBase_80378FAF = "F_SP126"; -SECTION_DEAD static char const* const stringBase_80378FB7 = "F_SP124"; -SECTION_DEAD static char const* const stringBase_80378FBF = "F_SP112"; -SECTION_DEAD static char const* const stringBase_80378FC7 = "F_SP103"; -SECTION_DEAD static char const* const stringBase_80378FCF = "R_SP01"; -SECTION_DEAD static char const* const stringBase_80378FD6 = "F_SP104"; -SECTION_DEAD static char const* const stringBase_80378FDE = "F_SP00"; -SECTION_DEAD static char const* const stringBase_80378FE5 = "F_SP121"; -SECTION_DEAD static char const* const stringBase_80378FED = "F_SP122"; -SECTION_DEAD static char const* const stringBase_80378FF5 = "F_SP128"; -SECTION_DEAD static char const* const stringBase_80378FFD = "R_SP160"; -SECTION_DEAD static char const* const stringBase_80379005 = "F_SP117"; -SECTION_DEAD static char const* const stringBase_8037900D = "F_SP118"; -SECTION_DEAD static char const* const stringBase_80379015 = "D_SB10"; -SECTION_DEAD static char const* const stringBase_8037901C = "R_SP107"; -SECTION_DEAD static char const* const stringBase_80379024 = "D_MN09"; -SECTION_DEAD static char const* const stringBase_8037902B = "F_SP127"; -SECTION_DEAD static char const* const stringBase_80379033 = "R_SP127"; -SECTION_DEAD static char const* const stringBase_8037903B = "D_MN08A"; -#pragma pop - /* 8002B434-8002C950 025D74 151C+00 1/1 1/1 0/0 .text * getLayerNo_common_common__14dComIfG_play_cFPCcii */ -// only issue should be regalloc -#ifdef NONMATCHING -int dComIfG_play_c::getLayerNo_common_common(const char* stageName, int roomId, int layer) { - if (layer < 0) { - layer = -1; +int dComIfG_play_c::getLayerNo_common_common(const char* i_stageName, int i_roomNo, int o_layer) { + if (o_layer < 0) { + o_layer = -1; // Stage is in a Twilight state - if (dKy_darkworld_stage_check(stageName, roomId) == 1) { - layer = 14; + if (dKy_darkworld_stage_check(i_stageName, i_roomNo) == TRUE) { + o_layer = 14; } - if (layer < 13) { + if (o_layer < 13) { // Stage is Snowpeak Ruins or Snowpeak - if (!strcmp(stageName, "D_MN11") || !strcmp(stageName, "F_SP114")) { + if (!strcmp(i_stageName, "D_MN11") || !strcmp(i_stageName, "F_SP114")) { // Cleared Snowpeak Ruins if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[266])) { - layer = 3; + o_layer = 3; } // Talked with Yeta after giving Cheese else if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[163])) { - layer = 2; + o_layer = 2; } // Talked with Yeta after giving Pumpkin else if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[162])) { - layer = 1; + o_layer = 1; } } // Stage is Faron Woods - else if (!strcmp(stageName, "F_SP108")) { + else if (!strcmp(i_stageName, "F_SP108")) { // Cleared Snowpeak Ruins if (i_dComIfGs_isEventBit(0x2008)) { - layer = 5; + o_layer = 5; } // Completed Midna's Desperate Hour else if (i_dComIfGs_isEventBit(0x1E08)) { - layer = 3; + o_layer = 3; } // Cleared Forest Temple else if (i_dComIfGs_isEventBit(0x0602)) { - layer = 2; + o_layer = 2; } // Haven't finished Ordon Day 2 else if (!i_dComIfGs_isEventBit(0x4510)) { - layer = 1; + o_layer = 1; } } // Stage is Faron Woods Interiors - else if (!strcmp(stageName, "R_SP108")) { + else if (!strcmp(i_stageName, "R_SP108")) { // Cleared Forest Temple if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[55])) { - layer = 2; + o_layer = 2; } // Haven't finished Ordon Day 2 else if (!i_dComIfGs_isEventBit(0x4510)) { - layer = 1; + o_layer = 1; } } // Stage is Kakariko Village or Kakariko Graveyard - else if (!strcmp(stageName, "F_SP109") || !strcmp(stageName, "F_SP111")) { + else if (!strcmp(i_stageName, "F_SP109") || !strcmp(i_stageName, "F_SP111")) { // Obtained Zora's Armor if (i_dComIfGs_isEventBit(0x0804)) { - layer = 2; - dComIfG_get_timelayer(&layer); + o_layer = 2; + dComIfG_get_timelayer(&o_layer); } // Finished Telma Wagon Escort else if (i_dComIfGs_isEventBit(0x0810)) { - layer = 4; + o_layer = 4; } // Watched cutscene after leaving Goron Mines else if (i_dComIfGs_isEventBit(0x1320)) { - layer = 2; - dComIfG_get_timelayer(&layer); + o_layer = 2; + dComIfG_get_timelayer(&o_layer); } // Cleared Goron Mines else if (i_dComIfGs_isEventBit(0x0701)) { - layer = 12; + o_layer = 12; } // Defeated King Bulblin 1 else if (i_dComIfGs_isEventBit(0x0A08)) { - layer = 2; - dComIfG_get_timelayer(&layer); + o_layer = 2; + dComIfG_get_timelayer(&o_layer); } // King Bulblin 1 trigger activated else if (i_dComIfGs_isEventBit(0x0608)) { - layer = 1; + o_layer = 1; } } // Stage is Kakariko Village Interiors or Graveyard Interiors - else if (!strcmp(stageName, "R_SP109") || !strcmp(stageName, "R_SP209")) { + else if (!strcmp(i_stageName, "R_SP109") || !strcmp(i_stageName, "R_SP209")) { // Stage is Kakariko Interiors and room is Barnes shop and Cleared Lakebed Temple - if (!strcmp(stageName, "R_SP109") && roomId == 1 && i_dComIfGs_isEventBit(0x0904)) { - layer = 4; - dComIfG_get_timelayer(&layer); - + if (!strcmp(i_stageName, "R_SP109") && i_roomNo == 1 && i_dComIfGs_isEventBit(0x0904)) { + o_layer = 4; + dComIfG_get_timelayer(&o_layer); } else { // Defeated King Bulblin 1 if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[85])) { - layer = 2; - dComIfG_get_timelayer(&layer); + o_layer = 2; + dComIfG_get_timelayer(&o_layer); } // King Bulblin 1 trigger activated else if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[53])) { - layer = 1; + o_layer = 1; } } } // Stage is Death Mountain - else if (!strcmp(stageName, "F_SP110")) { + else if (!strcmp(i_stageName, "F_SP110")) { // Cleared Goron Mines if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[64])) { - layer = 2; + o_layer = 2; } } // Stage is Death Mountain Interiors - else if (!strcmp(stageName, "R_SP110")) { + else if (!strcmp(i_stageName, "R_SP110")) { // Returned Wood Statue to Ilia if (i_dComIfGs_isEventBit(0x2320)) { - layer = 3; + o_layer = 3; } // Cleared Temple of Time else if (i_dComIfGs_isEventBit(0x2004)) { - layer = 4; + o_layer = 4; } // Obtained Master Sword else if (i_dComIfGs_isEventBit(0x2020)) { - layer = 2; + o_layer = 2; } // Cleared Goron Mines else if (i_dComIfGs_isEventBit(0x0701)) { - layer = 1; + o_layer = 1; } } // Stage is Lake Hylia, Castle Town, Telma's Bar, or R_SP115 (removed) - else if (!strcmp(stageName, "F_SP115") || !strcmp(stageName, "F_SP116") || - (!strcmp(stageName, "R_SP116") && roomId == 5) || - !strcmp(stageName, "R_SP115")) { + else if (!strcmp(i_stageName, "F_SP115") || !strcmp(i_stageName, "F_SP116") || + (!strcmp(i_stageName, "R_SP116") && i_roomNo == 5) || + !strcmp(i_stageName, "R_SP115")) { // Stage is Lake Hylia and room is Lake - if (!strcmp(stageName, "F_SP115") && roomId == 0) { + if (!strcmp(i_stageName, "F_SP115") && i_roomNo == 0) { // Repaired Sky Cannon if (i_dComIfGs_isEventBit(0x3B08)) { - layer = 3; + o_layer = 3; } // Warped Sky Cannon to Lake Hylia else if (i_dComIfGs_isEventBit(0x3120)) { - layer = 1; + o_layer = 1; } // Cleared Lakebed Temple else if (i_dComIfGs_isEventBit(0x0904)) { - layer = 2; + o_layer = 2; } } // Stage is Telma's Bar and room is Bar and Obtained Master Sword - else if (!strcmp(stageName, "R_SP116") && roomId == 5 && + else if (!strcmp(i_stageName, "R_SP116") && i_roomNo == 5 && i_dComIfGs_isEventBit(0x2020)) { - layer = 4; + o_layer = 4; } // Completed Midna's Desperate Hour and Stage is Castle Town - else if (i_dComIfGs_isEventBit(0x1E08) && !strcmp(stageName, "F_SP116")) { + else if (i_dComIfGs_isEventBit(0x1E08) && !strcmp(i_stageName, "F_SP116")) { // Room is not East, South, or North Castle Town - if (roomId != 4 && roomId != 3 && roomId != 1) { - layer = 0; + if (i_roomNo != 4 && i_roomNo != 3 && i_roomNo != 1) { + o_layer = 0; } else { - layer = 1; + o_layer = 1; } } else { // Cleared Lakebed Temple if (i_dComIfGs_isEventBit(0x0904)) { // Stage is Lake Hylia and room is Fountain and haven't started Midna's // Desperate Hour - if ((!strcmp(stageName, "F_SP115") && roomId == 1) && + if ((!strcmp(i_stageName, "F_SP115") && i_roomNo == 1) && !i_dComIfGs_isEventBit(0x0C01)) { - layer = 9; + o_layer = 9; } else { - layer = 2; + o_layer = 2; } } else { // Stage is Castle Town and room is South Castle Town and Finished Telma // Wagon Escort - if ((!strcmp(stageName, "F_SP116") && roomId == 3) && + if ((!strcmp(i_stageName, "F_SP116") && i_roomNo == 3) && i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[68])) { - layer = 1; + o_layer = 1; } } } } // Stage is Zora's Domain - else if (!strcmp(stageName, "F_SP113")) { + else if (!strcmp(i_stageName, "F_SP113")) { // Cleared Snowpeak Ruins if (i_dComIfGs_isEventBit(0x2008)) { - layer = 2; + o_layer = 2; } } // Stage is Upper Zora's River - else if (!strcmp(stageName, "F_SP126")) { + else if (!strcmp(i_stageName, "F_SP126")) { // Unlocked Iza's River Ride (1) if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[95])) { - layer = 1; + o_layer = 1; } } // Stage is Gerudo Desert and room is Desert - else if (!strcmp(stageName, "F_SP124") && roomId == 0) { - layer = 8; + else if (!strcmp(i_stageName, "F_SP124") && i_roomNo == 0) { + o_layer = 8; // Used Sky Cannon to go to Desert if (i_dComIfGs_isEventBit(0x4008)) { - layer = 0; + o_layer = 0; } } // Stage is Zora's River - else if (!strcmp(stageName, "F_SP112")) { + else if (!strcmp(i_stageName, "F_SP112")) { // Unlocked Iza's River Ride (1) if (i_dComIfGs_isEventBit(0x0B01)) { - layer = 1; + o_layer = 1; } // Started Iza's River Ride (1) else if (i_dComIfGs_isEventBit(0x0902)) { - layer = 2; + o_layer = 2; } } // Stage is Ordon Village - else if (!strcmp(stageName, "F_SP103")) { + else if (!strcmp(i_stageName, "F_SP103")) { // Room is Main Village - if (roomId == 0) { + if (i_roomNo == 0) { // Tamed Epona if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[56])) { - layer = 4; - dComIfG_get_timelayer(&layer); + o_layer = 4; + dComIfG_get_timelayer(&o_layer); } // Cleared Faron Twilight else if (dComIfGs_isDarkClearLV(0)) { - layer = 2; - dComIfG_get_timelayer(&layer); + o_layer = 2; + dComIfG_get_timelayer(&o_layer); } // Escaped Hyrule Castle Sewers (1st Time) else if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[47])) { - layer = 1; + o_layer = 1; } // Finished Ordon Day 2 else if (i_dComIfGs_isEventBit(0x4510)) { - layer = 7; + o_layer = 7; } // Finished Ordon Day 1 else if (i_dComIfGs_isEventBit(0x4A40)) { - layer = 0; + o_layer = 0; } else { - layer = 6; + o_layer = 6; } } // Room is Outside Link's House - else if (roomId == 1) { + else if (i_roomNo == 1) { // Cleared Faron Twilight if (dComIfGs_isDarkClearLV(0)) { - layer = 2; + o_layer = 2; } // Escaped Hyrule Castle Sewers (1st Time) else if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[47])) { - layer = 1; + o_layer = 1; } // Finished Ordon Day 2 else if (i_dComIfGs_isEventBit(0x4510)) { - layer = 0; + o_layer = 0; } // Finished Ordon Day 1 else if (i_dComIfGs_isEventBit(0x4A40)) { - layer = 4; + o_layer = 4; } else { - layer = 3; + o_layer = 3; } } } // Stage is Ordon Village Interiors - else if (!strcmp(stageName, "R_SP01")) { + else if (!strcmp(i_stageName, "R_SP01")) { // Room is Sera's Shop - if (roomId == 1) { + if (i_roomNo == 1) { // Cleared Faron Twilight if (dComIfGs_isDarkClearLV(0)) { - layer = 2; + o_layer = 2; } } // Room is Shield house - else if (roomId == 2) { + else if (i_roomNo == 2) { // Watched cutscene after defeating King Bulblin 1 if (i_dComIfGs_isEventBit(0x0780)) { - layer = 3; + o_layer = 3; } // Cleared Faron Twilight else if (dComIfGs_isDarkClearLV(0)) { - layer = 2; + o_layer = 2; } // Escaped Hyrule Castle Sewers (1st Time) else if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[47])) { - layer = 1; + o_layer = 1; } } // Room is Rusl and Uli's house - else if (roomId == 5) { + else if (i_roomNo == 5) { // Tamed Epona if (i_dComIfGs_isEventBit(0x0601)) { - layer = 4; + o_layer = 4; } // Cleared Faron Twilight else if (dComIfGs_isDarkClearLV(0)) { - layer = 2; + o_layer = 2; } } } // Stage is Ordon Spring - else if (!strcmp(stageName, "F_SP104")) { + else if (!strcmp(i_stageName, "F_SP104")) { // Room is Ordon Spring - if (roomId == 1) { + if (i_roomNo == 1) { // Cleared Faron Twilight if (dComIfGs_isDarkClearLV(0)) { - layer = 2; + o_layer = 2; } // Escaped Hyrule Castle Sewers (1st Time) else if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[47])) { - layer = 4; + o_layer = 4; } // Finished Ordon Day 2 else if (i_dComIfGs_isEventBit(0x4510)) { - layer = 0; + o_layer = 0; } // Finished Ordon Day 1 else if (i_dComIfGs_isEventBit(0x4A20)) { - layer = 3; + o_layer = 3; } else { - layer = 1; + o_layer = 1; } } // Cleared Faron Twilight else if (dComIfGs_isDarkClearLV(0)) { - layer = 2; + o_layer = 2; } // Escaped Hyrule Castle Sewers (1st Time) else if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[47])) { - layer = 4; + o_layer = 4; } } // Stage is Ordon Ranch - else if (!strcmp(stageName, "F_SP00")) { + else if (!strcmp(i_stageName, "F_SP00")) { // Cleared Faron Twilight if (dComIfGs_isDarkClearLV(0)) { - layer = 2; - dComIfG_get_timelayer(&layer); + o_layer = 2; + dComIfG_get_timelayer(&o_layer); } // Escaped Hyrule Castle Sewers (1st Time) else if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[47])) { - layer = 1; + o_layer = 1; } // Watched cutscene after herding goats on Ordon Day 3 else if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[169])) { - layer = 10; + o_layer = 10; } // Finished Ordon Day 2 else if (i_dComIfGs_isEventBit(0x4510)) { - layer = 9; + o_layer = 9; } // Finished Ordon Day 1 else if (i_dComIfGs_isEventBit(0x4A40)) { - layer = 11; + o_layer = 11; } else { - layer = 12; + o_layer = 12; } } // Stage is Hyrule Field - else if (!strcmp(stageName, "F_SP121")) { + else if (!strcmp(i_stageName, "F_SP121")) { // Completed Midna's Desperate Hour if (i_dComIfGs_isEventBit(0x1E08)) { - layer = 6; + o_layer = 6; } // Started Midna's Desperate Hour else if (i_dComIfGs_isEventBit(0x0C01)) { - layer = 4; + o_layer = 4; } // Finished Telma Wagon Escort else if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[68])) { - layer = 0; + o_layer = 0; } else if (dComIfGs_isTmpBit(0x0601)) { if (dComIfGs_isTmpBit(0x0602)) { - layer = 2; + o_layer = 2; } else { - layer = 3; + o_layer = 3; } } } // Stage is Outside Castle Town - else if (!strcmp(stageName, "F_SP122")) { + else if (!strcmp(i_stageName, "F_SP122")) { // Room is Outside Castle Town - West - if (roomId == 8) { + if (i_roomNo == 8) { // Completed Midna's Desperate Hour if (i_dComIfGs_isEventBit(0x1E08)) { - layer = 6; + o_layer = 6; } // Started Midna's Desperate Hour else if (i_dComIfGs_isEventBit(0x0C01)) { - layer = 4; + o_layer = 4; } } // Room is Outside Castle Town - South - else if (roomId == 16) { + else if (i_roomNo == 16) { // Obtained Wood Statue if (i_dComIfGs_isEventBit(0x2204)) { - layer = 6; + o_layer = 6; } // Talked to Louise after getting Medicine Scent else if (i_dComIfGs_isEventBit(0x2102)) { - layer = 1; + o_layer = 1; } // Completed Midna's Desperate Hour else if (i_dComIfGs_isEventBit(0x1E08)) { - layer = 6; + o_layer = 6; } // Started Midna's Desperate Hour else if (i_dComIfGs_isEventBit(0x0C01)) { - layer = 4; + o_layer = 4; } } // Room is Outside Castle Town - East - else if (roomId == 17) { + else if (i_roomNo == 17) { // Completed Midna's Desperate Hour if (i_dComIfGs_isEventBit(0x1E08)) { - layer = 0; + o_layer = 0; } // Started Midna's Desperate Hour else if (i_dComIfGs_isEventBit(0x0C01)) { - layer = 4; + o_layer = 4; } } } // Stage is Hidden Village - else if (!strcmp(stageName, "F_SP128")) { + else if (!strcmp(i_stageName, "F_SP128")) { if (i_dComIfGs_isEventBit(0x2320)) { - layer = 1; + o_layer = 1; } } // Stage is Castle Town Interiors - else if (!strcmp(stageName, "R_SP160")) { + else if (!strcmp(i_stageName, "R_SP160")) { // Room is Jovani's house - if (roomId == 5) { + if (i_roomNo == 5) { // Completed Midna's Desperate Hour if (i_dComIfGs_isEventBit(0x1E08)) { - layer = 0; + o_layer = 0; } else { - layer = 1; + o_layer = 1; } } // Fundraised Malo Mart Castle Town branch else if (i_dComIfGs_isEventBit(0x2210)) { - layer = 1; + o_layer = 1; } } // Stage is Sacred Grove - else if (!strcmp(stageName, "F_SP117")) { + else if (!strcmp(i_stageName, "F_SP117")) { // Cleared Snowpeak Ruins if (i_dComIfGs_isEventBit(0x2008)) { - layer = 2; + o_layer = 2; } } // Stage is Bulblin Camp - else if (!strcmp(stageName, "F_SP118")) { + else if (!strcmp(i_stageName, "F_SP118")) { // Fixed the Mirror of Twilight if (i_dComIfGs_isEventBit(0x2B08)) { - layer = 3; + o_layer = 3; } // Cleared Arbiter's Grounds else if (i_dComIfGs_isEventBit(0x2010)) { - layer = 2; + o_layer = 2; } // Escaped the burning tent else if (i_dComIfGs_isEventBit(0x0B40)) { - layer = 1; + o_layer = 1; } } // Stage is Faron Woods Cave - else if (!strcmp(stageName, "D_SB10")) { + else if (!strcmp(i_stageName, "D_SB10")) { // Finished Ordon Day 2 if (i_dComIfGs_isEventBit(0x4510)) { - layer = 1; + o_layer = 1; } } // Stage is Hyrule Castle Sewers - else if (!strcmp(stageName, "R_SP107")) { + else if (!strcmp(i_stageName, "R_SP107")) { if (dComIfGs_isTransformLV(3)) { - layer = 13; + o_layer = 13; } } // Stage is Hyrule Castle - else if (!strcmp(stageName, "D_MN09")) { + else if (!strcmp(i_stageName, "D_MN09")) { // Room is not Entrance, Outside Left Wing, or Outside Right Wing - if (roomId != 11 && roomId != 13 && roomId != 14) { - layer = 1; + if (i_roomNo != 11 && i_roomNo != 13 && i_roomNo != 14) { + o_layer = 1; } } // Stage is Fishing Pond or Hena's Hut - else if (!strcmp(stageName, "F_SP127") || !strcmp(stageName, "R_SP127")) { + else if (!strcmp(i_stageName, "F_SP127") || !strcmp(i_stageName, "R_SP127")) { switch (g_env_light.field_0x12fe) { case 1: - layer = 0; + o_layer = 0; break; case 2: - layer = 1; + o_layer = 1; break; case 3: - layer = 2; + o_layer = 2; break; case 4: - layer = 3; + o_layer = 3; break; } } } } - if (layer == 14) { - int tmp = layer; + if (o_layer == 14) { + int roomNo = i_roomNo; // Warped meteor to Zora's Domain if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[65])) { // Stage is Zora's River, Zora's Domain, Lake Hylia, Castle Town, Telma's Bar, R_SP115, // Hyrule Field, Upper Zora's River, or Outside Castle Town - if (!strcmp(stageName, "F_SP112") || !strcmp(stageName, "F_SP113") || - !strcmp(stageName, "F_SP115") || !strcmp(stageName, "F_SP116") || - (!strcmp(stageName, "R_SP116") && roomId == 5) || !strcmp(stageName, "R_SP115") || - !strcmp(stageName, "F_SP121") || !strcmp(stageName, "F_SP126") || - !strcmp(stageName, "F_SP122")) { + if (!strcmp(i_stageName, "F_SP112") || !strcmp(i_stageName, "F_SP113") || + !strcmp(i_stageName, "F_SP115") || !strcmp(i_stageName, "F_SP116") || + (!strcmp(i_stageName, "R_SP116") && i_roomNo == 5) || !strcmp(i_stageName, "R_SP115") || + !strcmp(i_stageName, "F_SP121") || !strcmp(i_stageName, "F_SP126") || + !strcmp(i_stageName, "F_SP122")) { // Stage is Hyrule Field - if (!strcmp(stageName, "F_SP121")) { - if (tmp >= 9 && tmp <= 14) { - layer = 13; + if (!strcmp(i_stageName, "F_SP121")) { + if (roomNo >= 9 && roomNo <= 14) { + o_layer = 13; } } else { - layer = 13; + o_layer = 13; } } } // Stage is Hyrule Castle Sewers and room is Prison Cell - if (!strcmp(stageName, "R_SP107") && roomId == 0) { + if (!strcmp(i_stageName, "R_SP107") && i_roomNo == 0) { // Haven't been to Hyrule Castle Sewers if (!i_dComIfGs_isEventBit(0x4D08)) { - layer = 11; + o_layer = 11; } } // Stage and room is Zant Throne Room - else if (!strcmp(stageName, "D_MN08A") && roomId == 10) { + else if (!strcmp(i_stageName, "D_MN08A") && i_roomNo == 10) { // Defeated Zant if (i_dComIfGs_isEventBit(0x5410)) { - layer = 1; + o_layer = 1; } else { - layer = 0; + o_layer = 0; } } } - return layer; + return o_layer; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dComIfG_play_c::getLayerNo_common_common(char const* i_stageName, int i_roomID, - int i_layerOverride) { - nofralloc -#include "asm/d/com/d_com_inf_game/getLayerNo_common_common__14dComIfG_play_cFPCcii.s" -} -#pragma pop -#endif /* 8002C950-8002C97C 027290 002C+00 1/1 3/3 0/0 .text getLayerNo_common__14dComIfG_play_cFPCcii */ int dComIfG_play_c::getLayerNo_common(char const* i_stageName, int i_roomID, int i_layerOverride) { diff --git a/src/d/d_kyeff.cpp b/src/d/d_kyeff.cpp index fc8551f2d32..209563d338f 100644 --- a/src/d/d_kyeff.cpp +++ b/src/d/d_kyeff.cpp @@ -4,18 +4,17 @@ // #include "d/d_kyeff.h" + #include "Z2AudioLib/Z2EnvSeMgr.h" #include "d/com/d_com_inf_game.h" +#include "f_op/f_op_actor.h" +#include "f_op/f_op_kankyo.h" +#include "OS/OSTime.h" #include "d/kankyo/d_kankyo.h" +#include "d/kankyo/d_kankyo_wether.h" #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct kankyo_class {}; - // // Forward References: // @@ -131,12 +130,16 @@ static asm int dKyeff_Create(kankyo_class* param_0) { /* ############################################################################################## */ /* 803BC158-803BC16C -00001 0014+00 1/0 0/0 0/0 .data l_dKyeff_Method */ -SECTION_DATA static void* l_dKyeff_Method[5] = { - (void*)dKyeff_Create__FP12kankyo_class, (void*)dKyeff_Delete__FP8dKyeff_c, - (void*)dKyeff_Execute__FP8dKyeff_c, (void*)dKyeff_IsDelete__FP8dKyeff_c, - (void*)dKyeff_Draw__FP8dKyeff_c, +static leafdraw_method_class l_dKyeff_Method = { + (process_method_func)dKyeff_Create, + (process_method_func)dKyeff_Delete, + (process_method_func)dKyeff_Execute, + (process_method_func)dKyeff_IsDelete, + (process_method_func)dKyeff_Draw, }; +extern "C" extern void* g_fopKy_Method[5 + 1 /* padding */]; + /* 803BC16C-803BC198 -00001 0028+04 0/0 0/0 1/0 .data g_profile_KYEFF */ SECTION_DATA extern void* g_profile_KYEFF[10 + 1 /* padding */] = { (void*)0xFFFFFFFD, diff --git a/src/d/d_kyeff2.cpp b/src/d/d_kyeff2.cpp index 2c501a71068..b419aa95a54 100644 --- a/src/d/d_kyeff2.cpp +++ b/src/d/d_kyeff2.cpp @@ -4,43 +4,11 @@ // #include "d/d_kyeff2.h" +#include "f_op/f_op_kankyo.h" #include "d/kankyo/d_kankyo_wether.h" #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct kankyo_class {}; - -// -// Forward References: -// - -extern "C" static void dKyeff2_Draw__FP9dKyeff2_c(); -extern "C" void execute__9dKyeff2_cFv(); -extern "C" static void dKyeff2_Execute__FP9dKyeff2_c(); -extern "C" static bool dKyeff2_IsDelete__FP9dKyeff2_c(); -extern "C" static void dKyeff2_Delete__FP9dKyeff2_c(); -extern "C" static void dKyeff2_Create__FP12kankyo_class(); -extern "C" extern void* g_profile_KYEFF2[10 + 1 /* padding */]; - -// -// External References: -// - -extern "C" void dKyw_wether_init2__Fv(); -extern "C" void dKyw_wether_delete2__Fv(); -extern "C" void dKyw_wether_move_draw2__Fv(); -extern "C" void dKyw_wether_draw2__Fv(); -extern "C" extern void* g_fopKy_Method[5 + 1 /* padding */]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; - -// -// Declarations: -// - static bool dKyeff2_Draw(dKyeff2_c* ptr) { dKyw_wether_draw2(); return true; @@ -71,12 +39,16 @@ static int dKyeff2_Create(kankyo_class* ptr) { /* ############################################################################################## */ /* 803BC198-803BC1AC -00001 0014+00 1/0 0/0 0/0 .data l_dKyeff2_Method */ -SECTION_DATA static void* l_dKyeff2_Method[5] = { - (void*)dKyeff2_Create__FP12kankyo_class, (void*)dKyeff2_Delete__FP9dKyeff2_c, - (void*)dKyeff2_Execute__FP9dKyeff2_c, (void*)dKyeff2_IsDelete__FP9dKyeff2_c, - (void*)dKyeff2_Draw__FP9dKyeff2_c, +static leafdraw_method_class l_dKyeff2_Method = { + (process_method_func)dKyeff2_Create, + (process_method_func)dKyeff2_Delete, + (process_method_func)dKyeff2_Execute, + (process_method_func)dKyeff2_IsDelete, + (process_method_func)dKyeff2_Draw, }; +extern "C" extern void* g_fopKy_Method[5 + 1 /* padding */]; + /* 803BC1AC-803BC1D8 -00001 0028+04 0/0 0/0 1/0 .data g_profile_KYEFF2 */ SECTION_DATA extern void* g_profile_KYEFF2[10 + 1 /* padding */] = { (void*)0xFFFFFFFD, diff --git a/src/d/d_resorce.cpp b/src/d/d_resorce.cpp index 689dac49a66..f13f809b9c6 100644 --- a/src/d/d_resorce.cpp +++ b/src/d/d_resorce.cpp @@ -12,6 +12,7 @@ #include "JSystem/J3DGraphLoader/J3DClusterLoader.h" #include "JSystem/J3DGraphLoader/J3DModelLoader.h" #include "JSystem/JKernel/JKRSolidHeap.h" +#include "MSL_C/MSL_Common/Src/extras.h" #include "d/com/d_com_inf_game.h" #include "dol2asm.h" #include "dolphin/mtx/mtx.h" @@ -704,7 +705,8 @@ void dRes_info_c::dump_long(dRes_info_c* param_0, int param_1) { JUTReportConsole_f("%2d %08x %08x %08x(%6x) %08x(%5x) %08x %3d %s\n", i, param_0->getDMCommand(), archive, header, blockSize1, - ¶m_0->mDataHeap, blockSize2, param_0->mRes, param_0->getArchiveName()); + ¶m_0->mDataHeap, blockSize2, param_0->mRes, + param_0->getArchiveName()); } param_0++; } diff --git a/src/d/kankyo/d_kankyo.cpp b/src/d/kankyo/d_kankyo.cpp index 6dbee8d36e7..d90843e3b84 100644 --- a/src/d/kankyo/d_kankyo.cpp +++ b/src/d/kankyo/d_kankyo.cpp @@ -3865,9 +3865,9 @@ static int dKy_F_SP121Check(char const* stageName, int roomNo, u8* out_darkLv, i * cleared it, else FALSE. */ /* 801AC70C-801AC7E0 1A704C 00D4+00 0/0 2/2 0/0 .text dKy_darkworld_stage_check__FPCci */ -BOOL dKy_darkworld_stage_check(char const* stageName, int roomNo) { +u8 dKy_darkworld_stage_check(char const* stageName, int roomNo) { dKydata_darkworldInfo_c* darkworldTbl = dKyd_darkworld_tbl_getp(); - BOOL result = FALSE; + u8 result = FALSE; u8 darkLv[1]; for (int i = 0; i < 34; i++) { diff --git a/src/d/save/d_save.cpp b/src/d/save/d_save.cpp index 37014fdffc2..d4f2605ca36 100644 --- a/src/d/save/d_save.cpp +++ b/src/d/save/d_save.cpp @@ -1173,12 +1173,12 @@ void dSv_player_info_c::init() { void dSv_player_config_c::init() { unk0 = 1; - if (OSGetSoundMode() == SOUND_MODE_MONO) { - mSoundMode = SOUND_MODE_MONO; - Z2AudioMgr::mAudioMgrPtr->setOutputMode(SOUND_MODE_MONO); + if (OSGetSoundMode() == OS_SOUND_MODE_MONO) { + mSoundMode = OS_SOUND_MODE_MONO; + Z2AudioMgr::mAudioMgrPtr->setOutputMode(OS_SOUND_MODE_MONO); } else { - mSoundMode = SOUND_MODE_STEREO; - Z2AudioMgr::mAudioMgrPtr->setOutputMode(SOUND_MODE_STEREO); + mSoundMode = OS_SOUND_MODE_STEREO; + Z2AudioMgr::mAudioMgrPtr->setOutputMode(OS_SOUND_MODE_STEREO); } mAttentionType = 0; @@ -1828,9 +1828,9 @@ SECTION_DEAD static char const* const stringBase_8037927A = "LOAD size:%d\n"; int dSv_info_c::card_to_memory(char* card_ptr, int dataNum) { memcpy(dComIfGs_getSaveData(), card_ptr + dataNum * 0xa94, sizeof(dSv_save_c)); - if (OSGetSoundMode() == SOUND_MODE_MONO) { - g_dComIfG_gameInfo.info.getPlayer().getConfig().setSound(SOUND_MODE_MONO); - Z2AudioMgr::mAudioMgrPtr->setOutputMode(SOUND_MODE_MONO); + if (OSGetSoundMode() == OS_SOUND_MODE_MONO) { + g_dComIfG_gameInfo.info.getPlayer().getConfig().setSound(OS_SOUND_MODE_MONO); + Z2AudioMgr::mAudioMgrPtr->setOutputMode(OS_SOUND_MODE_MONO); } else if (g_dComIfG_gameInfo.info.getPlayer().getConfig().getSound() == 2) { Z2AudioMgr::mAudioMgrPtr->setOutputMode(2); } else { diff --git a/src/f_op/f_op_scene.cpp b/src/f_op/f_op_scene.cpp index 8815ca8ff93..6651b5a8261 100644 --- a/src/f_op/f_op_scene.cpp +++ b/src/f_op/f_op_scene.cpp @@ -4,10 +4,10 @@ // #include "f_op/f_op_scene.h" -#include "f_op/f_op_scene_tag.h" -#include "f_pc/f_pc_manager.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "f_op/f_op_scene_tag.h" +#include "f_pc/f_pc_manager.h" /* 8001EB34-8001EB5C 019474 0028+00 1/0 0/0 0/0 .text fopScn_Draw__FP11scene_class */ static void fopScn_Draw(scene_class* pScene) { @@ -20,43 +20,43 @@ static void fopScn_Execute(scene_class* pScene) { } /* 8001EB84-8001EBAC 0194C4 0028+00 1/0 0/0 0/0 .text fopScn_IsDelete__FPv */ -static s32 fopScn_IsDelete(scene_class* pScene) { - return fpcMtd_IsDelete(pScene->mpMtd, pScene); +static s32 fopScn_IsDelete(void* pScene) { + return fpcMtd_IsDelete(static_cast(pScene)->mpMtd, pScene); } /* 8001EBAC-8001EC00 0194EC 0054+00 1/0 0/0 0/0 .text fopScn_Delete__FPv */ -static s32 fopScn_Delete(void* param_1) { - scene_class* pScene = (scene_class*)param_1; - s32 ret = fpcMtd_Delete(pScene->mpMtd, pScene); +static s32 fopScn_Delete(void* pScene) { + scene_class* scene = static_cast(pScene); + s32 ret = fpcMtd_Delete(scene->mpMtd, scene); if (ret == 1) { - fopScnTg_QueueTo(&pScene->mScnTg); + fopScnTg_QueueTo(&scene->mScnTg); } return ret; } /* 8001EC00-8001EC74 019540 0074+00 1/0 0/0 0/0 .text fopScn_Create__FPv */ -static s32 fopScn_Create(scene_class * pScene) { +static s32 fopScn_Create(void* pScene) { + scene_class* scene = static_cast(pScene); if (fpcM_IsFirstCreating(pScene)) { - scene_process_profile_definition* profile = (scene_process_profile_definition*) fpcM_GetProfile(pScene); - pScene->mpMtd = profile->mpMtd; - fopScnTg_Init(&pScene->mScnTg, pScene); - fopScnTg_ToQueue(&pScene->mScnTg); + scene_process_profile_definition* profile = + (scene_process_profile_definition*)fpcM_GetProfile(pScene); + scene->mpMtd = profile->mpMtd; + fopScnTg_Init(&scene->mScnTg, pScene); + fopScnTg_ToQueue(&scene->mScnTg); - u32 * append = (u32*)fpcM_GetAppend(pScene); + u32* append = (u32*)fpcM_GetAppend(pScene); if (append != NULL) { - pScene->mBase.mBase.mParameters = *append; + scene->mBase.mBase.mParameters = *append; } } - return fpcMtd_Create(pScene->mpMtd, pScene); + return fpcMtd_Create(scene->mpMtd, pScene); } /* ############################################################################################## */ /* 803A38B0-803A38C8 -00001 0014+04 0/0 9/0 0/0 .data g_fopScn_Method */ nodedraw_method_class g_fopScn_Method = { - (process_method_func)fopScn_Create, - (process_method_func)fopScn_Delete, - (process_method_func)fopScn_Execute, - (process_method_func)fopScn_IsDelete, + (process_method_func)fopScn_Create, (process_method_func)fopScn_Delete, + (process_method_func)fopScn_Execute, (process_method_func)fopScn_IsDelete, (process_method_func)fopScn_Draw, }; diff --git a/src/m_Do/m_Do_DVDError.cpp b/src/m_Do/m_Do_DVDError.cpp index 004f7a5f747..34af3543acd 100644 --- a/src/m_Do/m_Do_DVDError.cpp +++ b/src/m_Do/m_Do_DVDError.cpp @@ -38,7 +38,7 @@ void mDoDvdErr_ThdInit() { sizeof(DvdErr_stack), priority - 3, 1); OSResumeThread(&DvdErr_thread); OSCreateAlarm(&Alarm); - OSSetPeriodicAlarm(&Alarm, time, OS_BUS_CLOCK / 4, (OSAlarmHandler*)AlarmHandler); + OSSetPeriodicAlarm(&Alarm, time, OS_BUS_CLOCK / 4, AlarmHandler); mDoDvdErr_initialized = true; } diff --git a/src/m_Do/m_Do_MemCard.cpp b/src/m_Do/m_Do_MemCard.cpp index b75099e0caa..3ee1f436204 100644 --- a/src/m_Do/m_Do_MemCard.cpp +++ b/src/m_Do/m_Do_MemCard.cpp @@ -164,7 +164,7 @@ void mDoMemCd_Ctrl_c::restore() { field_0x1fc8 = 0; s32 card_state = CARDOpen(mChannel, "gczelda2", &file); - if (card_state == CARD_ERROR_READY) { + if (card_state == CARD_RESULT_READY) { if (!mDoMemCdRWm_Restore(&file, this, sizeof(mData))) { mCardState = 3; } else { @@ -221,7 +221,7 @@ void mDoMemCd_Ctrl_c::store() { if (mCardState == 2) { card_state = CARDCreate(mChannel, "gczelda2", 0x8000, &file); - if (card_state == CARD_ERROR_READY || card_state == CARD_ERROR_EXIST) { + if (card_state == CARD_RESULT_READY || card_state == CARD_RESULT_EXIST) { mCardState = 1; } else { setCardState(card_state); @@ -230,9 +230,9 @@ void mDoMemCd_Ctrl_c::store() { if (mCardState == 1) { card_state = CARDOpen(mChannel, "gczelda2", &file); - if (card_state == CARD_ERROR_READY) { + if (card_state == CARD_RESULT_READY) { card_state = mDoMemCdRWm_Store(&file, this, sizeof(mData)); - if (card_state != CARD_ERROR_READY) { + if (card_state != CARD_RESULT_READY) { setCardState(card_state); } else { mCardState = 4; @@ -343,7 +343,7 @@ void mDoMemCd_Ctrl_c::format() { s32 card_state = CARDFormat(mChannel); if (OSTryLockMutex(&mMutex)) { - if (card_state == CARD_ERROR_READY) { + if (card_state == CARD_RESULT_READY) { mCardState = 5; } else { setCardState(card_state); @@ -478,12 +478,12 @@ s32 mDoMemCd_Ctrl_c::loadfile() { CARDFileInfo file; s32 card_state = CARDOpen(mChannel, "gczelda2", &file); - if (card_state == CARD_ERROR_READY) { + if (card_state == CARD_RESULT_READY) { CARDClose(&file); - return CARD_ERROR_UNLOCKED; + return CARD_RESULT_UNLOCKED; } else { setCardState(card_state); - return CARD_ERROR_READY; + return CARD_RESULT_READY; } } diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index f1aa65aea33..0e702ac63c6 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -1657,7 +1657,7 @@ bool J3DTevBlock::getTevStage(u32 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DTevBlock::getTexNo(u32 param_0) const { +asm u32 J3DTevBlock::getTexNo(u32 param_0) const { nofralloc #include "asm/m_Do/m_Do_ext/getTexNo__11J3DTevBlockCFUl.s" } diff --git a/src/m_Do/m_Do_printf.cpp b/src/m_Do/m_Do_printf.cpp index 3880b2d23fc..6b3fb09e84e 100644 --- a/src/m_Do/m_Do_printf.cpp +++ b/src/m_Do/m_Do_printf.cpp @@ -246,50 +246,27 @@ void OSReport_System(char* fmt, ...) { } } -/* ############################################################################################## */ -/* 80373CB0-80373CB0 000310 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_80373D10 = " in \"%s\" on line %d.\n"; -SECTION_DEAD static char const* const stringBase_80373D26 = - "\nAddress: Back Chain LR Save\n"; -SECTION_DEAD static char const* const stringBase_80373D4C = "0x%08x: 0x%08x 0x%08x\n"; -#pragma pop - /* 80006E7C-80006FB4 0017BC 0138+00 0/0 9/9 0/0 .text OSPanic */ -// loop stuff / ending -#ifdef NONMATCHING void OSPanic(char* file, s32 line, char* fmt, ...) { - OSDisableInterrupts(); - va_list args; + u32 i; + u32* p; + u32* tmp; + + OSDisableInterrupts(); va_start(args, fmt); - mDoPrintf_vprintf(fmt, args); - OSAttention(" in \"%s\" on line %d.\n", file, line); - OSAttention("\nAddress: Back Chain LR Save\n"); - - u32 tmp = 0; - u8* stackPtr = OSGetStackPointer(); - while (stackPtr != NULL && tmp < 0x10) { - OSAttention("0x%08x: 0x%08x 0x%08x\n", stackPtr, *(u32*)stackPtr, - *(u32*)(stackPtr + 4)); - stackPtr++; - tmp++; - } - PPCHalt(); - va_end(args); + OSAttention(" in \"%s\" on line %d.\n", file, line); + + OSAttention("\nAddress: Back Chain LR Save\n"); + for (i = 0, p = (u32*)OSGetStackPointer(); p && (u32)p != 0xFFFFFFFF && i++ < 16; p = (u32*)*p) { + OSAttention("0x%08x: 0x%08x 0x%08x\n", p, p[0], p[1]); + } + + tmp = (u32*)0x1234567; // ?????? + *tmp = 0x1234567; + PPCHalt(); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSPanic(char* file, s32 line, char* fmt, ...) { - nofralloc -#include "asm/m_Do/m_Do_printf/OSPanic.s" -} -#pragma pop -#endif /* 80373CB0-80373CB0 000310 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/tools/decompctx.py b/tools/decompctx.py index abf997e91fa..ba22ef47961 100644 --- a/tools/decompctx.py +++ b/tools/decompctx.py @@ -39,7 +39,7 @@ def import_c_file(in_file) -> str: defines.add(guard_match[1]) print("Processing file", in_file) include_match = include_pattern.match(line.strip()) - if include_match: + if include_match and not include_match[1].endswith(".s"): out_text += f"/* \"{in_file}\" line {idx} \"{include_match[1]}\" */\n" out_text += import_h_file(include_match[1], os.path.dirname(in_file)) out_text += f"/* end \"{include_match[1]}\" */\n" diff --git a/tools/frank.py b/tools/frank.py new file mode 100644 index 00000000000..2165b0b6658 --- /dev/null +++ b/tools/frank.py @@ -0,0 +1,213 @@ +#! /usr/bin/env python3 + +# Written by Ethan Roseman (ethteck) +# MIT License +# Copyright 2021 + +# Modified by EpochFlame + +import argparse +import sys + +# Byte sequence that marks code size +CODESIZE_MAGIC = b"\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x34" +BLR_BYTE_SEQ = b"\x4E\x80\x00\x20" +MTLR_BYTE_SEQ = b"\x7C\x08\x03\xA6" +PROFILE_EXTRA_BYTES = b"\x48\x00\x00\x01\x60\x00\x00\x00" + +LWZ_BYTE = b"\x80" + +# Byte sequence array for branches to link register +BLR_BYTE_SEQ_ARRAY = [BLR_BYTE_SEQ, +b"\x4D\x80\x00\x20", b"\x4D\x80\x00\x21", b"\x4C\x81\x00\x20", b"\x4C\x81\x00\x21", +b"\x4D\x82\x00\x20", b"\x4D\x82\x00\x21", b"\x4C\x80\x00\x20", b"\x4C\x80\x00\x21", +b"\x4D\x81\x00\x20", b"\x4D\x81\x00\x21", b"\x4C\x80\x00\x20", b"\x4C\x80\x00\x21", +b"\x4C\x82\x00\x20", b"\x4C\x82\x00\x21", b"\x4C\x81\x00\x20", b"\x4C\x81\x00\x21", +b"\x4D\x83\x00\x20", b"\x4D\x83\x00\x21", b"\x4C\x83\x00\x20", b"\x4C\x83\x00\x21", +b"\x4D\x83\x00\x20", b"\x4D\x83\x00\x21", b"\x4C\x83\x00\x20", b"\x4C\x83\x00\x21"] + +# Example invocation: ./frank.py vanilla.o profile.o output.o +parser = argparse.ArgumentParser() +parser.add_argument("vanilla", help="Path to the vanilla object", type=argparse.FileType('rb')) +parser.add_argument("profile", help="Path to the profile object", type=argparse.FileType('rb')) +parser.add_argument("target", help="Path to the target object (to write)") + +args = parser.parse_args() + +# Read contents into bytearrays and close files +vanilla_bytes = args.vanilla.read() +args.vanilla.close() + +# If the file contains no code, the codesize magic will not be found. +# The vanilla object requires no modification. +code_size_magic_idx = vanilla_bytes.find(CODESIZE_MAGIC) +if code_size_magic_idx == -1: + with open(args.target, "wb") as f: + f.write(vanilla_bytes) + sys.exit(0) + +profile_bytes = args.profile.read() +args.profile.close() + +# Peephole rescheduling +# +# This is the pattern we will detect: +# (A) lwz <--. .--> (A) li +# (B) li <---\-' bl +# \ nop +# '---> (B) lwz +# +# If the profiled schedule swaps the +# instructions around the bl/nop, we +# instead use the vanilla schedule. +# +idx = 8 +shift = 0 # difference between vanilla and profile code, due to bl/nops +while idx < len(profile_bytes) - 16: + # Find next epilogue + epi_pos = profile_bytes.find(PROFILE_EXTRA_BYTES, idx) + if epi_pos == -1: + break # break while loop when no targets remain + if epi_pos % 4 != 0: # check 4-byte alignment + idx += 4 + continue + + v_pos = epi_pos - shift + shift += 8 + + vanilla_inst_a = vanilla_bytes[v_pos-4:v_pos] + vanilla_inst_b = vanilla_bytes[v_pos:v_pos+4] + vanilla_inst_c = vanilla_bytes[v_pos+4:v_pos+8] + profile_inst_a = profile_bytes[epi_pos-4:epi_pos] + profile_inst_b = profile_bytes[epi_pos+8:epi_pos+12] + profile_inst_c = profile_bytes[epi_pos+12:epi_pos+16] + + opcode_a = vanilla_inst_a[0] >> 2 + opcode_b = vanilla_inst_b[0] >> 2 + opcode_c = vanilla_inst_c[0] >> 2 + + LWZ = 0x80 >> 2 + LFS = 0xC0 >> 2 + ADDI = 0x38 >> 2 + LI = ADDI # an LI instruction is just an ADDI with RA=0 + LMW = 0xB8 >> 2 + + if opcode_a == LWZ and \ + opcode_b in [LI, LFS] and \ + vanilla_inst_a == profile_inst_b and \ + vanilla_inst_b == profile_inst_a and \ + vanilla_inst_c == profile_inst_c and \ + opcode_c != ADDI: # <- don't reorder if at the very end of the epilogue + + # Swap instructions (A) and (B) + profile_bytes = profile_bytes[:epi_pos-4] \ + + vanilla_inst_a \ + + PROFILE_EXTRA_BYTES \ + + vanilla_inst_b \ + + profile_bytes[epi_pos+12:] + + # Similar reordering for lwz/lmw, except both insns follow the bl/nop + elif opcode_b == LWZ and \ + opcode_c == LMW and \ + vanilla_inst_b == profile_inst_c and \ + vanilla_inst_c == profile_inst_b: + + profile_bytes = profile_bytes[:epi_pos+8] \ + + vanilla_inst_b \ + + vanilla_inst_c \ + + profile_bytes[epi_pos+16:] + + idx = epi_pos + 8 + +# Remove byte sequence +stripped_bytes = profile_bytes.replace(PROFILE_EXTRA_BYTES, b"") + +# Find end of code sections in vanilla and stripped bytes +code_size_offset = code_size_magic_idx + len(CODESIZE_MAGIC) +code_size_bytes = vanilla_bytes[code_size_offset:code_size_offset+4] +code_size = int.from_bytes(code_size_bytes, byteorder='big') + +eoc_offset = 0x34 + code_size + +# Break if the eoc is not found +assert(eoc_offset != len(vanilla_bytes)) + +# Replace 0x34 - eoc in vanilla with bytes from stripped +final_bytes = vanilla_bytes[:0x34] + stripped_bytes[0x34:eoc_offset] + vanilla_bytes[eoc_offset:] + +# Fix branches to link register +for seq in BLR_BYTE_SEQ_ARRAY: + idx = 0 + + while idx < len(vanilla_bytes): + found_pos = vanilla_bytes.find(seq, idx) + if found_pos == -1: + break # break while loop when no targets remain + if found_pos % 4 != 0: # check 4-byte alignment + idx += 4 + continue + final_bytes = final_bytes[:found_pos] + vanilla_bytes[found_pos:found_pos+4] + final_bytes[found_pos+4:] + idx = found_pos + len(seq) + +# Reunify mtlr/blr instructions, shifting intermediary instructions up +idx = 0 + +while idx < len(final_bytes): + # Find mtlr position + mtlr_found_pos = final_bytes.find(MTLR_BYTE_SEQ, idx) + if mtlr_found_pos == -1: + break # break while loop when no targets remain + if mtlr_found_pos % 4 != 0: # check 4-byte alignment + idx += 4 + continue + # Find paired blr position + blr_found_pos = final_bytes.find(BLR_BYTE_SEQ, mtlr_found_pos) + if blr_found_pos == -1: + break # break while loop when no targets remain + if blr_found_pos % 4 != 0: # check 4-byte alignment + idx += 4 + continue + if mtlr_found_pos + 4 == blr_found_pos: + idx += 4 + continue # continue if mtlr is followed directly by blr + + final_bytes = final_bytes[:mtlr_found_pos] + final_bytes[mtlr_found_pos+4:blr_found_pos] + final_bytes[mtlr_found_pos:mtlr_found_pos+4] + final_bytes[blr_found_pos:] + idx = mtlr_found_pos + len(MTLR_BYTE_SEQ) + +# Reorder lmw/lwz/lfd instructions, if needed (@Altafen) +# Specifically, if this sequence shows up in the stripped profiler code: "LMW, LWZ, LFD*" +# And this sequence shows up in the vanilla code: "LWZ, LFD*, LMW" +# (LFD* = any number of LFDs, including zero) +# If all bytes match between the two (except for the reordering), then use the vanilla ordering. +# This could be written to anchor around the "BL, NOP" instructions in unstripped profiler code, +# or to check for the presence of "ADDI, MTLR, BLR" soon after. +# This also could be written to decode the operands of each instruction to make sure the reorder is harmless. +# Neither of these safeguards are necessary at the moment. +LWZ = 32 +LMW = 46 +LFD = 50 +idx = 0 +while idx+4 < len(final_bytes): + if final_bytes[idx] >> 2 == LMW and final_bytes[idx+4] >> 2 == LWZ and vanilla_bytes[idx] >> 2 == LWZ: + start_idx = idx + lmw_bytes = final_bytes[idx:idx+4] + lwz_bytes = final_bytes[idx+4:idx+8] + if vanilla_bytes[idx:idx+4] != lwz_bytes: + idx += 4 + continue + lfd_bytes = b"" + idx += 4 + while vanilla_bytes[idx] >> 2 == LFD: + lfd_bytes += vanilla_bytes[idx:idx+4] + idx += 4 + if vanilla_bytes[idx:idx+4] != lmw_bytes: + continue + if final_bytes[start_idx+8:start_idx+8+len(lfd_bytes)] != lfd_bytes: + continue + idx += 4 + final_bytes = final_bytes[:start_idx] + lwz_bytes + lfd_bytes + lmw_bytes + final_bytes[idx:] + continue + idx += 4 + +with open(args.target, "wb") as f: + f.write(final_bytes) \ No newline at end of file