diff --git a/Progress.md b/Progress.md index 6add53159fb..8d4693b78a1 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 | 29.223610% | 1051040 | 3596544 +.text | 29.253861% | 1052128 | 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 | 36.684813% | 1474976 | 4020672 +Total | 36.711873% | 1476064 | 4020672 ## Total Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- -main.dol | 36.684813% | 1474976 | 4020672 +main.dol | 36.711873% | 1476064 | 4020672 RELs | 33.883741% | 3896740 | 11500324 -Total | 34.609351% | 5371716 | 15520996 +Total | 34.616361% | 5372804 | 15520996 ## RELs diff --git a/asm/JSystem/JAudio2/JAISeq/JAISeqMgr_mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity.s b/asm/JSystem/JAudio2/JAISeq/JAISeqMgr_mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity.s deleted file mode 100644 index 98d1bc4997f..00000000000 --- a/asm/JSystem/JAudio2/JAISeq/JAISeqMgr_mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity.s +++ /dev/null @@ -1,31 +0,0 @@ -lbl_802A14FC: -/* 802A14FC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802A1500 7C 08 02 A6 */ mflr r0 -/* 802A1504 90 01 00 24 */ stw r0, 0x24(r1) -/* 802A1508 39 61 00 20 */ addi r11, r1, 0x20 -/* 802A150C 48 0C 0C D1 */ bl _savegpr_29 -/* 802A1510 7C 7D 1B 78 */ mr r29, r3 -/* 802A1514 7C 9E 23 78 */ mr r30, r4 -/* 802A1518 7C BF 2B 78 */ mr r31, r5 -/* 802A151C 88 05 00 00 */ lbz r0, 0(r5) -/* 802A1520 98 01 00 0C */ stb r0, 0xc(r1) -/* 802A1524 38 A1 00 0C */ addi r5, r1, 0xc -/* 802A1528 4B FF FA 69 */ bl prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity -/* 802A152C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 802A1530 41 82 00 28 */ beq lbl_802A1558 -/* 802A1534 88 1D 02 BD */ lbz r0, 0x2bd(r29) -/* 802A1538 28 00 00 01 */ cmplwi r0, 1 -/* 802A153C 40 82 00 1C */ bne lbl_802A1558 -/* 802A1540 88 1F 00 00 */ lbz r0, 0(r31) -/* 802A1544 98 01 00 08 */ stb r0, 8(r1) -/* 802A1548 7F A3 EB 78 */ mr r3, r29 -/* 802A154C 7F C4 F3 78 */ mr r4, r30 -/* 802A1550 38 A1 00 08 */ addi r5, r1, 8 -/* 802A1554 4B FF FD F5 */ bl mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity -lbl_802A1558: -/* 802A1558 39 61 00 20 */ addi r11, r1, 0x20 -/* 802A155C 48 0C 0C CD */ bl _restgpr_29 -/* 802A1560 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802A1564 7C 08 03 A6 */ mtlr r0 -/* 802A1568 38 21 00 20 */ addi r1, r1, 0x20 -/* 802A156C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAISeq/func_802A0B64.s b/asm/JSystem/JAudio2/JAISeq/func_802A0B64.s deleted file mode 100644 index 0457ee327c2..00000000000 --- a/asm/JSystem/JAudio2/JAISeq/func_802A0B64.s +++ /dev/null @@ -1,43 +0,0 @@ -lbl_802A0B64: -/* 802A0B64 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802A0B68 7C 08 02 A6 */ mflr r0 -/* 802A0B6C 90 01 00 24 */ stw r0, 0x24(r1) -/* 802A0B70 39 61 00 20 */ addi r11, r1, 0x20 -/* 802A0B74 48 0C 16 65 */ bl _savegpr_28 -/* 802A0B78 7C 7C 1B 78 */ mr r28, r3 -/* 802A0B7C 7C 9D 23 78 */ mr r29, r4 -/* 802A0B80 7C BE 2B 78 */ mr r30, r5 -/* 802A0B84 7C DF 33 78 */ mr r31, r6 -/* 802A0B88 90 E3 03 9C */ stw r7, 0x39c(r3) -/* 802A0B8C 7D 04 43 78 */ mr r4, r8 -/* 802A0B90 48 00 01 15 */ bl reserveChildTracks___6JAISeqFi -/* 802A0B94 80 1D 00 00 */ lwz r0, 0(r29) -/* 802A0B98 90 01 00 0C */ stw r0, 0xc(r1) -/* 802A0B9C 7F 83 E3 78 */ mr r3, r28 -/* 802A0BA0 38 81 00 0C */ addi r4, r1, 0xc -/* 802A0BA4 7F C5 F3 78 */ mr r5, r30 -/* 802A0BA8 7F E6 FB 78 */ mr r6, r31 -/* 802A0BAC 48 00 17 7D */ bl func_802A2328 -/* 802A0BB0 80 1C 03 A4 */ lwz r0, 0x3a4(r28) -/* 802A0BB4 28 00 00 00 */ cmplwi r0, 0 -/* 802A0BB8 41 82 00 2C */ beq lbl_802A0BE4 -/* 802A0BBC 80 1D 00 00 */ lwz r0, 0(r29) -/* 802A0BC0 90 01 00 08 */ stw r0, 8(r1) -/* 802A0BC4 80 7C 03 A4 */ lwz r3, 0x3a4(r28) -/* 802A0BC8 38 81 00 08 */ addi r4, r1, 8 -/* 802A0BCC 81 83 00 00 */ lwz r12, 0(r3) -/* 802A0BD0 81 8C 00 0C */ lwz r12, 0xc(r12) -/* 802A0BD4 7D 89 03 A6 */ mtctr r12 -/* 802A0BD8 4E 80 04 21 */ bctrl -/* 802A0BDC 90 7C 03 A8 */ stw r3, 0x3a8(r28) -/* 802A0BE0 48 00 00 0C */ b lbl_802A0BEC -lbl_802A0BE4: -/* 802A0BE4 38 00 00 00 */ li r0, 0 -/* 802A0BE8 90 1C 03 A8 */ stw r0, 0x3a8(r28) -lbl_802A0BEC: -/* 802A0BEC 39 61 00 20 */ addi r11, r1, 0x20 -/* 802A0BF0 48 0C 16 35 */ bl _restgpr_28 -/* 802A0BF4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802A0BF8 7C 08 03 A6 */ mtlr r0 -/* 802A0BFC 38 21 00 20 */ addi r1, r1, 0x20 -/* 802A0C00 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAISeq/getChildTrack__6JAISeqFi.s b/asm/JSystem/JAudio2/JAISeq/getChildTrack__6JAISeqFi.s deleted file mode 100644 index 8c65841cc4f..00000000000 --- a/asm/JSystem/JAudio2/JAISeq/getChildTrack__6JAISeqFi.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_802A1730: -/* 802A1730 54 85 E1 3E */ srwi r5, r4, 4 -/* 802A1734 54 80 F0 BA */ rlwinm r0, r4, 0x1e, 2, 0x1d -/* 802A1738 7C 63 02 14 */ add r3, r3, r0 -/* 802A173C 80 63 01 D8 */ lwz r3, 0x1d8(r3) -/* 802A1740 28 03 00 00 */ cmplwi r3, 0 -/* 802A1744 41 82 00 1C */ beq lbl_802A1760 -/* 802A1748 54 A0 20 36 */ slwi r0, r5, 4 -/* 802A174C 7C 00 20 50 */ subf r0, r0, r4 -/* 802A1750 54 00 10 3A */ slwi r0, r0, 2 -/* 802A1754 7C 63 02 14 */ add r3, r3, r0 -/* 802A1758 80 63 01 30 */ lwz r3, 0x130(r3) -/* 802A175C 4E 80 00 20 */ blr -lbl_802A1760: -/* 802A1760 38 60 00 00 */ li r3, 0 -/* 802A1764 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAISeq/getTempoMgr__6JAISeqFv.s b/asm/JSystem/JAudio2/JAISeq/getTempoMgr__6JAISeqFv.s deleted file mode 100644 index 8eca9e37849..00000000000 --- a/asm/JSystem/JAudio2/JAISeq/getTempoMgr__6JAISeqFv.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_802A176C: -/* 802A176C 38 63 03 70 */ addi r3, r3, 0x370 -/* 802A1770 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAISeq/getTrack__6JAISeqFv.s b/asm/JSystem/JAudio2/JAISeq/getTrack__6JAISeqFv.s deleted file mode 100644 index ba09dc0e36c..00000000000 --- a/asm/JSystem/JAudio2/JAISeq/getTrack__6JAISeqFv.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_802A1728: -/* 802A1728 38 63 00 A8 */ addi r3, r3, 0xa8 -/* 802A172C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAISeq/playSeqData___6JAISeqFRC14JASSoundParams16JAISoundActivity.s b/asm/JSystem/JAudio2/JAISeq/playSeqData___6JAISeqFRC14JASSoundParams16JAISoundActivity.s deleted file mode 100644 index 42cdfd2e531..00000000000 --- a/asm/JSystem/JAudio2/JAISeq/playSeqData___6JAISeqFRC14JASSoundParams16JAISoundActivity.s +++ /dev/null @@ -1,43 +0,0 @@ -lbl_802A0C04: -/* 802A0C04 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802A0C08 7C 08 02 A6 */ mflr r0 -/* 802A0C0C 90 01 00 24 */ stw r0, 0x24(r1) -/* 802A0C10 39 61 00 20 */ addi r11, r1, 0x20 -/* 802A0C14 48 0C 15 C9 */ bl _savegpr_29 -/* 802A0C18 7C 7D 1B 78 */ mr r29, r3 -/* 802A0C1C 7C 9E 23 78 */ mr r30, r4 -/* 802A0C20 7C BF 2B 78 */ mr r31, r5 -/* 802A0C24 38 7D 00 A8 */ addi r3, r29, 0xa8 -/* 802A0C28 80 9D 03 94 */ lwz r4, 0x394(r29) -/* 802A0C2C 80 BD 03 98 */ lwz r5, 0x398(r29) -/* 802A0C30 4B FF 0D D9 */ bl setSeqData__8JASTrackFPvUl -/* 802A0C34 80 1D 00 08 */ lwz r0, 8(r29) -/* 802A0C38 28 00 00 00 */ cmplwi r0, 0 -/* 802A0C3C 41 82 00 14 */ beq lbl_802A0C50 -/* 802A0C40 7F A3 EB 78 */ mr r3, r29 -/* 802A0C44 38 9D 00 A8 */ addi r4, r29, 0xa8 -/* 802A0C48 48 00 1D 95 */ bl initTrack_JAISound___8JAISoundFP8JASTrack -/* 802A0C4C 48 00 00 20 */ b lbl_802A0C6C -lbl_802A0C50: -/* 802A0C50 38 7D 00 A8 */ addi r3, r29, 0xa8 -/* 802A0C54 38 80 00 01 */ li r4, 1 -/* 802A0C58 4B FF 07 ED */ bl setChannelMgrCount__8JASTrackFUl -/* 802A0C5C 38 7D 00 A8 */ addi r3, r29, 0xa8 -/* 802A0C60 38 80 00 00 */ li r4, 0 -/* 802A0C64 38 BD 03 80 */ addi r5, r29, 0x380 -/* 802A0C68 4B FF 0D 8D */ bl assignExtBuffer__8JASTrackFUlP14JASSoundParams -lbl_802A0C6C: -/* 802A0C6C 88 1F 00 00 */ lbz r0, 0(r31) -/* 802A0C70 98 01 00 08 */ stb r0, 8(r1) -/* 802A0C74 7F A3 EB 78 */ mr r3, r29 -/* 802A0C78 7F C4 F3 78 */ mr r4, r30 -/* 802A0C7C 38 A1 00 08 */ addi r5, r1, 8 -/* 802A0C80 48 00 06 C9 */ bl mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity -/* 802A0C84 38 7D 00 A8 */ addi r3, r29, 0xa8 -/* 802A0C88 4B FF 0D A1 */ bl startSeq__8JASTrackFv -/* 802A0C8C 39 61 00 20 */ addi r11, r1, 0x20 -/* 802A0C90 48 0C 15 99 */ bl _restgpr_29 -/* 802A0C94 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802A0C98 7C 08 03 A6 */ mtlr r0 -/* 802A0C9C 38 21 00 20 */ addi r1, r1, 0x20 -/* 802A0CA0 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAISeq/prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity.s b/asm/JSystem/JAudio2/JAISeq/prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity.s deleted file mode 100644 index ec89458adc3..00000000000 --- a/asm/JSystem/JAudio2/JAISeq/prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity.s +++ /dev/null @@ -1,67 +0,0 @@ -lbl_802A0F90: -/* 802A0F90 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802A0F94 7C 08 02 A6 */ mflr r0 -/* 802A0F98 90 01 00 24 */ stw r0, 0x24(r1) -/* 802A0F9C 39 61 00 20 */ addi r11, r1, 0x20 -/* 802A0FA0 48 0C 12 3D */ bl _savegpr_29 -/* 802A0FA4 7C 7F 1B 78 */ mr r31, r3 -/* 802A0FA8 7C 9D 23 78 */ mr r29, r4 -/* 802A0FAC 7C BE 2B 78 */ mr r30, r5 -/* 802A0FB0 88 03 00 1E */ lbz r0, 0x1e(r3) -/* 802A0FB4 28 00 00 06 */ cmplwi r0, 6 -/* 802A0FB8 41 81 00 B8 */ bgt lbl_802A1070 -/* 802A0FBC 3C A0 80 3D */ lis r5, lit_852@ha /* 0x803C98D8@ha */ -/* 802A0FC0 38 A5 98 D8 */ addi r5, r5, lit_852@l /* 0x803C98D8@l */ -/* 802A0FC4 54 00 10 3A */ slwi r0, r0, 2 -/* 802A0FC8 7C 05 00 2E */ lwzx r0, r5, r0 -/* 802A0FCC 7C 09 03 A6 */ mtctr r0 -/* 802A0FD0 4E 80 04 20 */ bctr -/* 802A0FD4 38 60 00 00 */ li r3, 0 -/* 802A0FD8 88 1F 00 1F */ lbz r0, 0x1f(r31) -/* 802A0FDC 50 60 1F 38 */ rlwimi r0, r3, 3, 0x1c, 0x1c -/* 802A0FE0 98 1F 00 1F */ stb r0, 0x1f(r31) -/* 802A0FE4 38 60 00 01 */ li r3, 1 -/* 802A0FE8 88 1F 00 1F */ lbz r0, 0x1f(r31) -/* 802A0FEC 50 60 3E 30 */ rlwimi r0, r3, 7, 0x18, 0x18 -/* 802A0FF0 98 1F 00 1F */ stb r0, 0x1f(r31) -/* 802A0FF4 48 00 00 7C */ b lbl_802A1070 -/* 802A0FF8 4B FF FE E5 */ bl prepare_getSeqData___6JAISeqFv -/* 802A0FFC 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 802A1000 41 82 00 70 */ beq lbl_802A1070 -/* 802A1004 38 00 00 05 */ li r0, 5 -/* 802A1008 98 1F 00 1E */ stb r0, 0x1e(r31) -/* 802A100C 88 1E 00 00 */ lbz r0, 0(r30) -/* 802A1010 98 01 00 0C */ stb r0, 0xc(r1) -/* 802A1014 7F E3 FB 78 */ mr r3, r31 -/* 802A1018 7F A4 EB 78 */ mr r4, r29 -/* 802A101C 38 A1 00 0C */ addi r5, r1, 0xc -/* 802A1020 4B FF FB E5 */ bl playSeqData___6JAISeqFRC14JASSoundParams16JAISoundActivity -/* 802A1024 38 60 00 01 */ li r3, 1 -/* 802A1028 48 00 00 4C */ b lbl_802A1074 -/* 802A102C 4B FF FE B1 */ bl prepare_getSeqData___6JAISeqFv -/* 802A1030 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 802A1034 41 82 00 0C */ beq lbl_802A1040 -/* 802A1038 38 00 00 03 */ li r0, 3 -/* 802A103C 98 1F 00 1E */ stb r0, 0x1e(r31) -lbl_802A1040: -/* 802A1040 38 60 00 00 */ li r3, 0 -/* 802A1044 48 00 00 30 */ b lbl_802A1074 -/* 802A1048 38 00 00 05 */ li r0, 5 -/* 802A104C 98 1F 00 1E */ stb r0, 0x1e(r31) -/* 802A1050 88 1E 00 00 */ lbz r0, 0(r30) -/* 802A1054 98 01 00 08 */ stb r0, 8(r1) -/* 802A1058 38 A1 00 08 */ addi r5, r1, 8 -/* 802A105C 4B FF FB A9 */ bl playSeqData___6JAISeqFRC14JASSoundParams16JAISoundActivity -/* 802A1060 38 60 00 01 */ li r3, 1 -/* 802A1064 48 00 00 10 */ b lbl_802A1074 -/* 802A1068 38 60 00 01 */ li r3, 1 -/* 802A106C 48 00 00 08 */ b lbl_802A1074 -lbl_802A1070: -/* 802A1070 38 60 00 00 */ li r3, 0 -lbl_802A1074: -/* 802A1074 39 61 00 20 */ addi r11, r1, 0x20 -/* 802A1078 48 0C 11 B1 */ bl _restgpr_29 -/* 802A107C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802A1080 7C 08 03 A6 */ mtlr r0 -/* 802A1084 38 21 00 20 */ addi r1, r1, 0x20 -/* 802A1088 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAISeq/prepare_getSeqData___6JAISeqFv.s b/asm/JSystem/JAudio2/JAISeq/prepare_getSeqData___6JAISeqFv.s deleted file mode 100644 index 971aedcd007..00000000000 --- a/asm/JSystem/JAudio2/JAISeq/prepare_getSeqData___6JAISeqFv.s +++ /dev/null @@ -1,53 +0,0 @@ -lbl_802A0EDC: -/* 802A0EDC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802A0EE0 7C 08 02 A6 */ mflr r0 -/* 802A0EE4 90 01 00 24 */ stw r0, 0x24(r1) -/* 802A0EE8 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 802A0EEC 7C 7F 1B 78 */ mr r31, r3 -/* 802A0EF0 80 83 00 18 */ lwz r4, 0x18(r3) -/* 802A0EF4 90 81 00 0C */ stw r4, 0xc(r1) -/* 802A0EF8 3C 04 00 01 */ addis r0, r4, 1 -/* 802A0EFC 28 00 FF FF */ cmplwi r0, 0xffff -/* 802A0F00 40 82 00 0C */ bne lbl_802A0F0C -/* 802A0F04 38 60 00 01 */ li r3, 1 -/* 802A0F08 48 00 00 74 */ b lbl_802A0F7C -lbl_802A0F0C: -/* 802A0F0C 80 7F 03 A0 */ lwz r3, 0x3a0(r31) -/* 802A0F10 80 63 00 0C */ lwz r3, 0xc(r3) -/* 802A0F14 90 81 00 08 */ stw r4, 8(r1) -/* 802A0F18 38 81 00 08 */ addi r4, r1, 8 -/* 802A0F1C 38 BF 03 94 */ addi r5, r31, 0x394 -/* 802A0F20 81 83 00 00 */ lwz r12, 0(r3) -/* 802A0F24 81 8C 00 0C */ lwz r12, 0xc(r12) -/* 802A0F28 7D 89 03 A6 */ mtctr r12 -/* 802A0F2C 4E 80 04 21 */ bctrl -/* 802A0F30 2C 03 00 01 */ cmpwi r3, 1 -/* 802A0F34 41 82 00 2C */ beq lbl_802A0F60 -/* 802A0F38 40 80 00 10 */ bge lbl_802A0F48 -/* 802A0F3C 2C 03 00 00 */ cmpwi r3, 0 -/* 802A0F40 40 80 00 14 */ bge lbl_802A0F54 -/* 802A0F44 48 00 00 34 */ b lbl_802A0F78 -lbl_802A0F48: -/* 802A0F48 2C 03 00 03 */ cmpwi r3, 3 -/* 802A0F4C 40 80 00 2C */ bge lbl_802A0F78 -/* 802A0F50 48 00 00 20 */ b lbl_802A0F70 -lbl_802A0F54: -/* 802A0F54 38 00 00 02 */ li r0, 2 -/* 802A0F58 98 1F 00 1E */ stb r0, 0x1e(r31) -/* 802A0F5C 48 00 00 1C */ b lbl_802A0F78 -lbl_802A0F60: -/* 802A0F60 7F E3 FB 78 */ mr r3, r31 -/* 802A0F64 48 00 17 09 */ bl increasePrepareCount_JAISound___8JAISoundFv -/* 802A0F68 38 60 00 00 */ li r3, 0 -/* 802A0F6C 48 00 00 10 */ b lbl_802A0F7C -lbl_802A0F70: -/* 802A0F70 38 60 00 01 */ li r3, 1 -/* 802A0F74 48 00 00 08 */ b lbl_802A0F7C -lbl_802A0F78: -/* 802A0F78 38 60 00 00 */ li r3, 0 -lbl_802A0F7C: -/* 802A0F7C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 802A0F80 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802A0F84 7C 08 03 A6 */ mtlr r0 -/* 802A0F88 38 21 00 20 */ addi r1, r1, 0x20 -/* 802A0F8C 4E 80 00 20 */ blr diff --git a/asm/JSystem/JAudio2/JAISeq/releaseChildTracks___6JAISeqFv.s b/asm/JSystem/JAudio2/JAISeq/releaseChildTracks___6JAISeqFv.s deleted file mode 100644 index 5412046ddbd..00000000000 --- a/asm/JSystem/JAudio2/JAISeq/releaseChildTracks___6JAISeqFv.s +++ /dev/null @@ -1,42 +0,0 @@ -lbl_802A0E48: -/* 802A0E48 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802A0E4C 7C 08 02 A6 */ mflr r0 -/* 802A0E50 90 01 00 24 */ stw r0, 0x24(r1) -/* 802A0E54 39 61 00 20 */ addi r11, r1, 0x20 -/* 802A0E58 48 0C 13 79 */ bl _savegpr_26 -/* 802A0E5C 7C 7A 1B 78 */ mr r26, r3 -/* 802A0E60 3B 80 00 00 */ li r28, 0 -/* 802A0E64 3B E0 00 00 */ li r31, 0 -lbl_802A0E68: -/* 802A0E68 38 1F 01 D8 */ addi r0, r31, 0x1d8 -/* 802A0E6C 7F BA 00 2E */ lwzx r29, r26, r0 -/* 802A0E70 28 1D 00 00 */ cmplwi r29, 0 -/* 802A0E74 41 82 00 40 */ beq lbl_802A0EB4 -/* 802A0E78 3B 60 00 00 */ li r27, 0 -/* 802A0E7C 3B C0 00 00 */ li r30, 0 -lbl_802A0E80: -/* 802A0E80 38 1E 01 30 */ addi r0, r30, 0x130 -/* 802A0E84 7C 7D 00 2E */ lwzx r3, r29, r0 -/* 802A0E88 28 03 00 00 */ cmplwi r3, 0 -/* 802A0E8C 41 82 00 0C */ beq lbl_802A0E98 -/* 802A0E90 38 80 00 01 */ li r4, 1 -/* 802A0E94 4B FF 04 89 */ bl __dt__8JASTrackFv -lbl_802A0E98: -/* 802A0E98 3B 7B 00 01 */ addi r27, r27, 1 -/* 802A0E9C 28 1B 00 10 */ cmplwi r27, 0x10 -/* 802A0EA0 3B DE 00 04 */ addi r30, r30, 4 -/* 802A0EA4 41 80 FF DC */ blt lbl_802A0E80 -/* 802A0EA8 7F A3 EB 78 */ mr r3, r29 -/* 802A0EAC 38 80 00 01 */ li r4, 1 -/* 802A0EB0 4B FF 04 6D */ bl __dt__8JASTrackFv -lbl_802A0EB4: -/* 802A0EB4 3B 9C 00 01 */ addi r28, r28, 1 -/* 802A0EB8 28 1C 00 02 */ cmplwi r28, 2 -/* 802A0EBC 3B FF 00 04 */ addi r31, r31, 4 -/* 802A0EC0 41 80 FF A8 */ blt lbl_802A0E68 -/* 802A0EC4 39 61 00 20 */ addi r11, r1, 0x20 -/* 802A0EC8 48 0C 13 55 */ bl _restgpr_26 -/* 802A0ECC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802A0ED0 7C 08 03 A6 */ mtlr r0 -/* 802A0ED4 38 21 00 20 */ addi r1, r1, 0x20 -/* 802A0ED8 4E 80 00 20 */ blr diff --git a/include/JSystem/J2DGraph/J2DMatBlock.h b/include/JSystem/J2DGraph/J2DMatBlock.h index 1a036dc072e..5473a3a0c12 100644 --- a/include/JSystem/J2DGraph/J2DMatBlock.h +++ b/include/JSystem/J2DGraph/J2DMatBlock.h @@ -16,6 +16,16 @@ struct ResTLUT; struct J2DGXColorS10 : public GXColorS10 { /* 802F1B90 */ J2DGXColorS10(); + + /* + J2DGXColorS10& operator=(const GXColorS10& other) { + r = other.r; + g = other.g; + b = other.b; + a = other.a; + return *this; + } + */ }; struct J2DTevSwapModeInfo; diff --git a/include/JSystem/J2DGraph/J2DTevs.h b/include/JSystem/J2DGraph/J2DTevs.h index 6a561e95570..1fdcc0c0f9f 100644 --- a/include/JSystem/J2DGraph/J2DTevs.h +++ b/include/JSystem/J2DGraph/J2DTevs.h @@ -124,11 +124,31 @@ private: /* 0x0 */ J2DIndTexCoordScaleInfo mInfo; }; // Size: 0x2 +struct J2DIndTevStageInfo { + /* 0x0 */ u8 field_0x0; + /* 0x1 */ u8 field_0x1; + /* 0x2 */ u8 field_0x2; + /* 0x3 */ u8 field_0x3; + /* 0x4 */ u8 field_0x4; + /* 0x5 */ u8 field_0x5; + /* 0x6 */ u8 field_0x6; + /* 0x7 */ u8 field_0x7; + /* 0x8 */ int field_0x8; +}; + +inline u32 J2DCalcIndTevStage(J2DIndTevStageInfo info) { + return (info.field_0x8 << 22) | (info.field_0x7 << 21) | (info.field_0x6 << 20) | + (info.field_0x3 << 16) | (info.field_0x5 << 11) | (info.field_0x4 << 8) | + (info.field_0x2 << 4) | (info.field_0x1 << 2) | info.field_0x0; +} + class J2DIndTevStage { public: /* 802EA044 */ void load(u8); /* 802F18A0 */ J2DIndTevStage(); + void setIndTevStageInfo(const J2DIndTevStageInfo& info) { mFlags = J2DCalcIndTevStage(info); } + private: /* 0x0 */ u32 mFlags; @@ -143,24 +163,6 @@ private: GXIndTexAlphaSel getAlphaSel() const { return (GXIndTexAlphaSel)((mFlags >> 22) & 0x03); } }; -struct J2DIndTevStageInfo { - /* 0x0 */ u8 field_0x0; - /* 0x1 */ u8 field_0x1; - /* 0x2 */ u8 field_0x2; - /* 0x3 */ u8 field_0x3; - /* 0x4 */ u8 field_0x4; - /* 0x5 */ u8 field_0x5; - /* 0x6 */ u8 field_0x6; - /* 0x7 */ u8 field_0x7; - /* 0x8 */ int field_0x8; -}; - -inline u32 J2DCalcIndTevStage(J2DIndTevStageInfo info) { - return (info.field_0x8 << 22) | (info.field_0x7 << 21) | (info.field_0x6 << 20) | - (info.field_0x3 << 16) | (info.field_0x5 << 11) | (info.field_0x4 << 8) | - (info.field_0x2 << 4) | (info.field_0x1 << 2) | info.field_0x0; -} - struct J2DTexCoordInfo { /* 0x0 */ u8 mTexGenType; /* 0x1 */ u8 mTexGenSrc; @@ -191,18 +193,26 @@ struct J2DTevOrderInfo { /* 0x0 */ u8 mTexCoord; /* 0x1 */ u8 mTexMap; /* 0x2 */ u8 mColor; + /* 0x3 */ u8 field_0x3; + + J2DTevOrderInfo& operator=(const J2DTevOrderInfo& other) { + mTexCoord = other.mTexCoord; + mTexMap = other.mTexMap; + mColor = other.mColor; + return *this; + } }; class J2DTevOrder { public: /* 802F1B70 */ J2DTevOrder(); + void setTevOrderInfo(const J2DTevOrderInfo& info) {mTevOrderInfo = info; } GXChannelID getColor() const { return (GXChannelID)mTevOrderInfo.mColor; } GXTexMapID getTexMap() const { return (GXTexMapID)mTevOrderInfo.mTexMap; } GXTexCoordID getTexCoord() const { return (GXTexCoordID)mTevOrderInfo.mTexCoord; } /* 0x0 */ J2DTevOrderInfo mTevOrderInfo; - /* 0x4 */ u8 field_0x4; }; struct J2DTevStageInfo { @@ -240,6 +250,11 @@ public: /* 802F1940 */ J2DTevStage(); /* 802F19A8 */ void setTevStageInfo(J2DTevStageInfo const&); + void setStageNo(u32 param_0) { + field_0x0 = (param_0 << 1) - 0x40; + field_0x4 = (param_0 << 1) - 0x3f; + } + void setTevSwapModeInfo(const J2DTevSwapModeInfo& swapInfo) { setTexSel(swapInfo.field_0x1); setRasSel(swapInfo.field_0x0); @@ -358,10 +373,24 @@ private: /* 0x7 */ u8 field_0x7; }; +struct J2DTevSwapModeTableInfo { + /* 0x0 */ u8 field_0x0; + /* 0x1 */ u8 field_0x1; + /* 0x2 */ u8 field_0x2; + /* 0x3 */ u8 field_0x3; +}; + +inline u8 J2DCalcTevSwapTable(u8 param_0, u8 param_1, u8 param_2, u8 param_3) { + return (param_0 << 6) + (param_1 << 4) + (param_2 << 2) + param_3; +} + class J2DTevSwapModeTable { public: /* 802F1934 */ J2DTevSwapModeTable(); + void setTevSwapModeTableInfo(const J2DTevSwapModeTableInfo& info) { + field_0x0 = J2DCalcTevSwapTable(info.field_0x0, info.field_0x1, info.field_0x2, info.field_0x3); + } u8 getR() { return field_0x0 >> 6 & 3; } u8 getG() { return field_0x0 >> 4 & 3; } u8 getB() { return field_0x0 >> 2 & 3; } diff --git a/include/JSystem/JAudio2/JAIAudible.h b/include/JSystem/JAudio2/JAIAudible.h index 1f89a60d73a..a7db5ee39c8 100644 --- a/include/JSystem/JAudio2/JAIAudible.h +++ b/include/JSystem/JAudio2/JAIAudible.h @@ -1,14 +1,21 @@ #ifndef JAIAUDIBLE_H #define JAIAUDIBLE_H +#include "JSystem/JGeometry.h" #include "dolphin/types.h" struct JASSoundParams; -struct JAIAudible { +class JAIAudible { +public: virtual ~JAIAudible(); virtual JASSoundParams* getOuterParams(int) = 0; virtual void calc() = 0; + + JGeometry::TVec3& getPos() { return mPos; } + void setPos(const JGeometry::TVec3& other) { mPos.set(other); } + + /* 0x04 */ JGeometry::TVec3 mPos; }; #endif /* JAIAUDIBLE_H */ diff --git a/include/JSystem/JAudio2/JAISe.h b/include/JSystem/JAudio2/JAISe.h index cd398bd72a1..3c28fa464a8 100644 --- a/include/JSystem/JAudio2/JAISe.h +++ b/include/JSystem/JAudio2/JAISe.h @@ -1,6 +1,56 @@ #ifndef JAISE_H #define JAISE_H -#include "dolphin/types.h" +#include "JSystem/JAudio2/JAISeqDataMgr.h" +#include "JSystem/JAudio2/JAISound.h" +#include "JSystem/JAudio2/JASTrack.h" +#include "JSystem/JSupport/JSUList.h" + +class JAISeMgr; + +class JAISe : public JSULink, public JAISound { +public: + class TInner { + public: + TInner() : mSeqData(NULL, 0) {} + + /* 0x000 */ u32 mProperPriority; + /* 0x004 */ u32 mPriority; + /* 0x008 */ JASSoundParams mSoundParams; + /* 0x01c */ JASTrack track; + /* 0x264 */ JAISeqData mSeqData; + /* 0x26c */ u8 field_0x26c; + /* 0x270 */ JAISeMgr* seMgr; + /* 0x274 */ JAISoundStrategyMgr* mSoundStrategyMgr; + /* 0x278 */ JAISoundStrategyMgr__unknown* field_0x278; + /* 0x27c */ JAITempoMgr mTempoMgr; + }; + + /* 8029F6D8 */ virtual bool getNumChild() const; + /* 8029F6E0 */ virtual bool getChild(int); + /* 8029F6E8 */ virtual void releaseChild(int); + /* 8029F84C */ virtual JASTrack* getTrack(); + /* 8029F854 */ virtual JASTrack* getChildTrack(int); + /* 8029F864 */ virtual JAISe* asSe(); + /* 8029F868 */ virtual JAITempoMgr* getTempoMgr(); + /* 8029F5C8 */ virtual bool JAISound_tryDie_(); + + /* 8029F03C */ JAISe(JAISeMgr*, JAISoundStrategyMgr*, u32); + /* 8029F0F8 */ void mixOut_(JASSoundParams const&); + /* 8029F214 */ void stopTrack_(); + /* 8029F250 */ void startTrack_(JASSoundParams const&); + /* 8029F304 */ void JAISeCategoryMgr_mixOut_(bool, JASSoundParams const&, JAISoundActivity); + /* 8029F4CC */ void JAISeCategoryMgr_calc_(); + /* 8029F650 */ void JAISeMgr_startID_(JAISoundID, JGeometry::TVec3 const*, JAIAudience*); + /* 8029F6EC */ bool prepare_getSeqData_(); + /* 8029F78C */ void prepare_(); + + JAISeqData* getSeqData() { return &inner_.mSeqData; } + u32 JAISeCategoryMgr_getProperPriority_() const { return inner_.mProperPriority; } + u32 JAISeCategoryMgr_getPriority_() const { return inner_.mPriority; } + bool isFarAway() const { return mPriority == -1; } + + /* 0x0ac */ TInner inner_; +}; #endif /* JAISE_H */ diff --git a/include/JSystem/JAudio2/JAISeMgr.h b/include/JSystem/JAudio2/JAISeMgr.h index 67b79c362d6..c34adf04b52 100644 --- a/include/JSystem/JAudio2/JAISeMgr.h +++ b/include/JSystem/JAudio2/JAISeMgr.h @@ -1,6 +1,7 @@ #ifndef JAISEMGR_H #define JAISEMGR_H +#include "JSystem/JAudio2/JAISe.h" #include "JSystem/JAudio2/JAISeqDataMgr.h" #include "JSystem/JAudio2/JAISound.h" #include "JSystem/JAudio2/JAISoundParams.h" @@ -27,28 +28,6 @@ struct JAISeCategoryArrangement { class JAISeMgr; -struct JAISePlaceHolder { - u8 field_0x0[0x10]; -}; - -struct JAISe : public JAISePlaceHolder, public JAISound { - /* 8029F03C */ JAISe(JAISeMgr*, JAISoundStrategyMgr*, u32); - /* 8029F304 */ void JAISeCategoryMgr_mixOut_(bool, JASSoundParams const&, JAISoundActivity); - /* 8029F4CC */ void JAISeCategoryMgr_calc_(); - /* 8029F650 */ void JAISeMgr_startID_(JAISoundID, JGeometry::TVec3 const*, JAIAudience*); - - JAISeqData* getSeqData() { return &mSeqData; } - u32 JAISeCategoryMgr_getProperPriority_() const { return mProperPriority; } - u32 JAISeCategoryMgr_getPriority_() const { return mPriority;} - bool isFarAway() const { return mPriority == -1; } - - /* 0x0aa */ u8 field_0x0[2]; - /* 0x0ac */ u32 mProperPriority; - /* 0x0b0 */ u32 mPriority; - /* 0x0b4 */ u8 field_0xb4[0x25c]; - /* 0x310 */ JAISeqData mSeqData; -}; - class JAISeCategoryMgr : public JAISeqDataUser { public: /* 8029F9C4 */ void JAISeMgr_calc_(); @@ -117,6 +96,7 @@ public: } return mAudience; } + JAISeqDataMgr* getSeqDataMgr() { return mSeqDataMgr; } private: /* 0x008 */ JAIAudience* mAudience; diff --git a/include/JSystem/JAudio2/JAISeq.h b/include/JSystem/JAudio2/JAISeq.h index ed6c6dee9fb..14e3d1ee806 100644 --- a/include/JSystem/JAudio2/JAISeq.h +++ b/include/JSystem/JAudio2/JAISeq.h @@ -1,6 +1,55 @@ #ifndef JAISEQ_H #define JAISEQ_H -#include "dolphin/types.h" +#include "JSystem/JAudio2/JAISeqDataMgr.h" +#include "JSystem/JAudio2/JAISound.h" +#include "JSystem/JAudio2/JASHeapCtrl.h" +#include "JSystem/JAudio2/JASTrack.h" +#include "JSystem/JSupport/JSUList.h" + +class JAISeqMgr; +class JAISoundChild; + +class JAISeq : public JAISound, JSULink { +public: + class TInner { + public: + TInner() : mSeqData(NULL, 0) {} + + /* 0x000 */ JASTrack outputTrack; + /* 0x248 */ JASPoolAllocObject* mSoundChild[32]; + /* 0x2C8 */ JAITempoMgr mTempoMgr; + /* 0x2D8 */ JASSoundParams mSoundParams; + /* 0x2EC */ JAISeqData mSeqData; + /* 0x2F4 */ s32 field_0x39c; + /* 0x2F8 */ JAISeqMgr* seqMgr; + /* 0x2FC */ JAISoundStrategyMgr* strategyMgr; + }; + + /* 802A1570 */ virtual s32 getNumChild() const; + /* 802A1578 */ virtual JAISoundChild* getChild(int); + /* 802A165C */ virtual void releaseChild(int); + /* 802A1768 */ virtual JAISeq* asSeq(); + /* 802A1728 */ virtual JASTrack* getTrack(); + /* 802A1730 */ virtual JASTrack* getChildTrack(int); + /* 802A176C */ virtual JAITempoMgr* getTempoMgr(); + /* 802A12BC */ virtual bool JAISound_tryDie_(); + + /* 802A0A8C */ JAISeq(JAISeqMgr*, JAISoundStrategyMgr*); + /* 802A0B64 */ void JAISeqMgr_startID_(JAISoundID, JGeometry::TVec3 const*, JAIAudience*, + int, int); + /* 802A0C04 */ void playSeqData_(JASSoundParams const&, JAISoundActivity); + /* 802A0CA4 */ void reserveChildTracks_(int); + /* 802A0E48 */ void releaseChildTracks_(); + /* 802A0EDC */ bool prepare_getSeqData_(); + /* 802A0F90 */ bool prepare_(JASSoundParams const&, JAISoundActivity); + /* 802A108C */ void JAISeqMgr_calc_(); + /* 802A1180 */ void die_(); + /* 802A1348 */ void mixOut_(JASSoundParams const&, JAISoundActivity); + /* 802A14FC */ void JAISeqMgr_mixOut_(JASSoundParams const&, JAISoundActivity); + + /* 0x0a8 */ TInner inner_; + /* 0x3A8 */ JAISoundStrategyMgr__unknown* field_0x3a8; +}; #endif /* JAISEQ_H */ diff --git a/include/JSystem/JAudio2/JAISeqDataMgr.h b/include/JSystem/JAudio2/JAISeqDataMgr.h index f97e502ce1c..afa630f0e3a 100644 --- a/include/JSystem/JAudio2/JAISeqDataMgr.h +++ b/include/JSystem/JAudio2/JAISeqDataMgr.h @@ -5,16 +5,21 @@ #include "dolphin/types.h" struct JAISeqData { - /* 0x00 */ u32 field_0x0; + JAISeqData(void* param_0, u32 param_1) { + field_0x0 = param_0; + field_0x4 = param_1; + } + + /* 0x00 */ void* field_0x0; /* 0x04 */ u32 field_0x4; }; struct JAISeqDataRegion { bool intersects(JAISeqData& seqData) const { - if (field_0x0 + field_0x4 < seqData.field_0x0) { + if (field_0x0 + field_0x4 < (u32)seqData.field_0x0) { return false; } - if (seqData.field_0x0 + seqData.field_0x4 < field_0x0) { + if ((u32)seqData.field_0x0 + seqData.field_0x4 < field_0x0) { return false; } return true; @@ -33,7 +38,7 @@ struct JAISeqDataUser { struct JAISeqDataMgr { virtual ~JAISeqDataMgr(); - virtual void getSeqData(JAISoundID, JAISeqData*) = 0; + virtual int getSeqData(JAISoundID, JAISeqData*) = 0; virtual int releaseSeqData() = 0; virtual void setSeqDataUser(JAISeqDataUser*) = 0; }; diff --git a/include/JSystem/JAudio2/JAISeqMgr.h b/include/JSystem/JAudio2/JAISeqMgr.h index 4d87772f52f..db7ef079043 100644 --- a/include/JSystem/JAudio2/JAISeqMgr.h +++ b/include/JSystem/JAudio2/JAISeqMgr.h @@ -27,11 +27,13 @@ public: /* 802A1804 */ virtual bool isUsingSeqData(JAISeqDataRegion const&); /* 802A1870 */ virtual int releaseSeqData(JAISeqDataRegion const&); + JAISeqDataMgr* getSeqDataMgr() { return seqDataMgr_; } + private: /* 0x04 */ JAISoundActivity mActivity; - /* 0x08 */ void* field_0x8; - /* 0x0C */ JAIAudience* mAudience; - /* 0x10 */ JAISeqDataMgr* seqDataMgr_; + /* 0x08 */ JAIAudience* mAudience; + /* 0x0C */ JAISeqDataMgr* seqDataMgr_; + /* 0x10 */ void* field_0x10; /* 0x14 */ JAISoundParamsMove mMove; /* 0x64 */ JSUList mSeqList; /* 0x70 */ int field_0x70; diff --git a/include/JSystem/JAudio2/JAISound.h b/include/JSystem/JAudio2/JAISound.h index 2896ec23571..8752faca66a 100644 --- a/include/JSystem/JAudio2/JAISound.h +++ b/include/JSystem/JAudio2/JAISound.h @@ -53,12 +53,13 @@ struct JAISoundStatus_ { inline bool isPlaying() { return state.unk == 5; } + inline bool isMute() { return field_0x0.flags.mute; } inline bool isPaused() { return field_0x0.flags.paused; } /* 0x0 */ union { u8 value; struct { - u8 flag1 : 1; + u8 mute : 1; u8 paused : 1; u8 flag3 : 1; u8 flag4 : 1; @@ -120,13 +121,24 @@ struct JAISoundFader { return false; } inline void calc() { mIntensity = mTransition.apply(mIntensity); } + f32 getIntensity() { return mIntensity; } /* 0x00 */ f32 mIntensity; /* 0x04 */ JAISoundParamsTransition::TTransition mTransition; }; // Size: 0x10 +template +struct JAISoundStrategyMgr__unknown { + virtual void virtual2(); + virtual void virtual3(A0*); + virtual void virtual4(A0*, const JASSoundParams&); +}; template -struct JAISoundStrategyMgr {}; +struct JAISoundStrategyMgr { + virtual void virtual2(); + virtual JAISoundStrategyMgr__unknown* virtual3(JAISoundID); + virtual void virtual4(JAISoundStrategyMgr__unknown*); +}; /* JAISoundStrategyMgr */ struct JAISoundStrategyMgr__template0 {}; /* JAISoundStrategyMgr */ @@ -136,14 +148,46 @@ struct JAISoundStrategyMgr__template2 {}; class JAISoundActivity { public: - void init() { field_0x0 = 0; } + void init() { field_0x0.value = 0; } - /* 0x0 */ u8 field_0x0; + /* 0x0 */ 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_0x0; +}; + +class JAITempoMgr { +public: + /* 0x00 */ f32 mTempo; + /* 0x04 */ JAISoundParamsTransition::TTransition field_0x4; + + JAITempoMgr() { init(); } + void init() { setTempo(1.0f); } + void setTempo(f32 param_0) { + mTempo = param_0; + field_0x4.zero(); + } + f32 getTempo() { return mTempo; } + void calc() { mTempo = field_0x4.apply(mTempo); } }; class JAISoundHandle; class JAIAudible; class JAIAudience; +class JAISe; +class JAISeq; +class JAISoundChild; +class JAIStream; +class JAITempoMgr; class JAISound { public: /* 802A21A0 */ void releaseHandle(); @@ -160,15 +204,15 @@ public: /* 802A26B8 */ bool calc_JAISound_(); /* 802A29DC */ void initTrack_JAISound_(JASTrack*); - virtual void getNumChild() = 0; - virtual void getChild() = 0; - virtual void releaseChild() = 0; - /* 802A25D8 */ virtual bool asSe(); - /* 802A25E0 */ virtual bool asSeq(); - /* 802A25E8 */ virtual bool asStream(); - virtual void getTrack() = 0; - virtual void getChildTrack() = 0; - virtual void getTempoMgr() = 0; + virtual s32 getNumChild() const = 0; + virtual JAISoundChild* getChild(int) = 0; + virtual void releaseChild(int) = 0; + /* 802A25D8 */ virtual JAISe* asSe(); + /* 802A25E0 */ virtual JAISeq* asSeq(); + /* 802A25E8 */ virtual JAIStream* asStream(); + virtual JASTrack* getTrack() = 0; + virtual JASTrack* getChildTrack(int) = 0; + virtual JAITempoMgr* getTempoMgr() = 0; virtual bool JAISound_tryDie_() = 0; JAISoundID getID() const; @@ -200,7 +244,7 @@ public: /* 0x18 */ JAISoundID soundID; /* 0x1C */ JAISoundStatus_ status_; /* 0x24 */ JAISoundFader fader; - /* 0x34 */ s32 mPriority; + /* 0x34 */ u32 mPriority; /* 0x38 */ s32 mCount; /* 0x3C */ JAISoundParams params; }; // Size: 0x98 diff --git a/include/JSystem/JAudio2/JAISoundChild.h b/include/JSystem/JAudio2/JAISoundChild.h index b3ac7d6942e..df8ad962248 100644 --- a/include/JSystem/JAudio2/JAISoundChild.h +++ b/include/JSystem/JAudio2/JAISoundChild.h @@ -11,6 +11,8 @@ struct JAISoundChild { /* 802A2B28 */ void mixOut(JASTrack*); /* 802A2B7C */ void calc(); + JAISoundChild() { init(); } + /* 0x00 */ JAISoundParamsMove mMove; /* 0x50 */ JASSoundParams mParams; }; // Size: 0x64 diff --git a/include/JSystem/JAudio2/JAIStream.h b/include/JSystem/JAudio2/JAIStream.h index 8fd4ea9e32b..ec9f25ec94c 100644 --- a/include/JSystem/JAudio2/JAIStream.h +++ b/include/JSystem/JAudio2/JAIStream.h @@ -1,6 +1,7 @@ #ifndef JAISTREAM_H #define JAISTREAM_H -#include "dolphin/types.h" +#include "JSystem/JAudio2/JAISound.h" +#include "JSystem/JSupport/JSUList.h" #endif /* JAISTREAM_H */ diff --git a/include/JSystem/JAudio2/JASHeapCtrl.h b/include/JSystem/JAudio2/JASHeapCtrl.h index 139fcbb4f6a..78e9cbb69e0 100644 --- a/include/JSystem/JAudio2/JASHeapCtrl.h +++ b/include/JSystem/JAudio2/JASHeapCtrl.h @@ -1,14 +1,125 @@ #ifndef JASHEAPCTRL_H #define JASHEAPCTRL_H -#include "dolphin/types.h" +#include "JSystem/JSupport/JSUList.h" +#include "dolphin/os/OSInterrupt.h" +#include "dolphin/os/OSMutex.h" + +class JASDisposer; + +class JASHeap { + /* 80290140 */ JASHeap(JASDisposer*); + /* 802901AC */ void initRootHeap(void*, u32); + /* 8029021C */ void alloc(JASHeap*, u32); + /* 802903F4 */ void 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(); + + /* 0x00 */ JSUTree mTree; + /* 0x1C */ OSMutex mMutex; + /* 0x34 */ JASDisposer* mDisposer; + /* 0x38 */ int field_0x38; + /* 0x3c */ int field_0x3c; + /* 0x40 */ void* field_0x40; +}; struct JASGenericMemPool { /* 80290848 */ JASGenericMemPool(); /* 80290860 */ ~JASGenericMemPool(); /* 802908C8 */ void newMemPool(u32, int); - /* 80290948 */ void alloc(u32); + /* 80290948 */ void* alloc(u32); /* 80290994 */ void free(void*, u32); + + /* 0x00 */ void* field_0x0; + /* 0x04 */ int freeMemCount; + /* 0x08 */ int totalMemCount; + /* 0x0C */ int field_0xc; + +}; + +namespace JASThreadingModel { + template + struct InterruptsDisable { + struct Lock { + Lock(const A0& param_0) { field_0x0 = OSDisableInterrupts(); } + ~Lock() { OSRestoreInterrupts(field_0x0); } + + BOOL field_0x0; + }; + }; +}; + +template +class JASMemPool : public JASGenericMemPool { +public: + void newMemPool(int param_0) { JASGenericMemPool::newMemPool(sizeof(T), param_0); } + void* alloc(u32 n) { return JASGenericMemPool::alloc(n); } + void free(void* ptr, u32 n) { JASGenericMemPool::free(ptr, n); } +}; + +template +class JASPoolAllocObject : public T { +public: + static void* operator new(size_t n) { + JASMemPool* memPool = getMemPool(); + return memPool->alloc(n); + } + static void operator delete(void* ptr, size_t n) { + JASMemPool* memPool_ = getMemPool(); + memPool_->free(ptr, n); + } + static void newMemPool(int param_0) { + JASMemPool* memPool_ = getMemPool(); + memPool_->newMemPool(param_0); + } + +private: + static JASMemPool* getMemPool() { + static JASMemPool memPool_; + return &memPool_; + } +}; + +template +class JASMemPool_MultiThreaded : public JASGenericMemPool { +public: + void newMemPool(int param_0) { + JASThreadingModel::InterruptsDisable >::Lock lock(*this); + JASGenericMemPool::newMemPool(sizeof(T), param_0); + } + + void* alloc(size_t count) { + JASThreadingModel::InterruptsDisable >::Lock lock(*this); + return JASGenericMemPool::alloc(count); + } + + void free(void* ptr, u32 param_1) { + JASThreadingModel::InterruptsDisable >::Lock lock(*this); + JASGenericMemPool::free(ptr, param_1); + } +}; + +template +class JASPoolAllocObject_MultiThreaded : public T { +public: + static void* operator new(size_t n) { + JASMemPool_MultiThreaded* memPool_ = getMemPool(); + return memPool_->alloc(n); + } + static void operator delete(void* ptr, size_t n) { + JASMemPool_MultiThreaded* memPool_ = getMemPool(); + memPool_->free(ptr, n); + } + +private: + static JASMemPool_MultiThreaded* getMemPool() { + static JASMemPool_MultiThreaded memPool_; + return &memPool_; + } }; #endif /* JASHEAPCTRL_H */ diff --git a/include/JSystem/JAudio2/JASTrack.h b/include/JSystem/JAudio2/JASTrack.h index 396a32ae150..bc5879bdf9f 100644 --- a/include/JSystem/JAudio2/JASTrack.h +++ b/include/JSystem/JAudio2/JASTrack.h @@ -30,12 +30,23 @@ struct JASChannel { }; struct JASTrack { + enum Status { + STATUS_FREE, + STATUS_RUN, + }; + struct TChannelMgr { /* 802930DC */ TChannelMgr(JASTrack*); /* 80293148 */ void init(); /* 802931B0 */ void releaseAll(); /* 80293220 */ void noteOff(u32, u16); /* 802932A0 */ void setPauseFlag(bool); + + /* 0x00 */ JASChannel* field_0x0[8]; + /* 0x20 */ u8 field_0x20[0x18]; // JASChannelParams + /* 0x38 */ short field_0x38[8]; + /* 0x48 */ JASSoundParams* field_0x48; + /* 0x4c */ JASTrack* field_0x4c; }; struct TList { @@ -47,6 +58,10 @@ struct JASTrack { struct MoveParam_ { /* 802932C8 */ MoveParam_(); + + /* 0x00 */ f32 field_0x0; + /* 0x04 */ f32 field_0x4; + /* 0x08 */ int field_0x8; }; /* 80291228 */ JASTrack(); @@ -109,9 +124,53 @@ struct JASTrack { static u8 sTrackList[16]; int getChannelMgrCount() { return channelMgrCount; } + u8 getStatus() const { return mStatus; } + JASTrack* getChild(u32 index) { return field_0x130[index]; } + void setAutoDelete(bool param_0) { + field_0x216 = (param_0 << 4) | field_0x216 & ~0x10; + } - /* 0x000 */ u8 field_0x0[0x1d0]; + /* 0x000 */ u8 field_0x0[0x5c]; // JASSeqCtrl + /* 0x05C */ u8 field_0x5c[0x24]; // JASTrackPort + /* 0x080 */ u8 field_0x80[0x1c]; // JASRegisterParam + /* 0x09C */ MoveParam_ field_0x9c[6]; + /* 0x0e4 */ u8 mOscParam[0x30]; // JASOscillator::Data[2] + /* 0x114 */ u8 field_0x114[0x18]; // JASOscillator::Point[4] + /* 0x12C */ JASTrack* mParent; + /* 0x130 */ JASTrack* field_0x130[16]; + /* 0x170 */ TChannelMgr* field_0x170[4]; + /* 0x180 */ TChannelMgr field_0x180; /* 0x1D0 */ int channelMgrCount; + /* 0x1D4 */ void* field_0x1d4; + /* 0x1D8 */ f32 field_0x1d8; + /* 0x1DC */ f32 field_0x1dc; + /* 0x1E0 */ f32 field_0x1e0; + /* 0x1E4 */ f32 field_0x1e4; + /* 0x1E8 */ f32 field_0x1e8; + /* 0x1EC */ f32 field_0x1ec; + /* 0x1F0 */ u16 field_0x1f0; + /* 0x1F2 */ u16 field_0x1f2; + /* 0x1F4 */ short field_0x1f4[8]; + /* 0x204 */ short field_0x204[8]; + /* 0x214 */ char field_0x214; + /* 0x215 */ u8 mStatus; + /* 0x216 */ u8 field_0x216; + /* 0x218 */ f32 field_0x218; + /* 0x21C */ f32 field_0x21c; + /* 0x220 */ u32 field_0x220; + /* 0x224 */ short field_0x224; + /* 0x226 */ u16 field_0x226; + /* 0x228 */ u16 field_0x228; + /* 0x22A */ s8 field_0x22a; + /* 0x22B */ char field_0x22b; + /* 0x22C */ short field_0x22c; + /* 0x22E */ short field_0x22e; + /* 0x230 */ char field_0x230; + /* 0x231 */ char field_0x231; + /* 0x232 */ char field_0x232; + /* 0x233 */ char field_0x233; + /* 0x234 */ u16 field_0x234[6]; + /* 0x240 */ u8 field_0x240[0x08]; // TLinkListNode }; struct JASDefaultBankTable : public JASGlobalInstance { diff --git a/libs/JSystem/J2DGraph/J2DMatBlock.cpp b/libs/JSystem/J2DGraph/J2DMatBlock.cpp index d0f8659164e..ffe89176334 100644 --- a/libs/JSystem/J2DGraph/J2DMatBlock.cpp +++ b/libs/JSystem/J2DGraph/J2DMatBlock.cpp @@ -358,11 +358,11 @@ extern "C" extern void* __vt__11J2DIndBlock[14]; extern "C" extern GXColor j2dDefaultColInfo; extern "C" extern J2DTevOrderInfo j2dDefaultTevOrderInfoNull; extern "C" extern u16 j2dDefaultIndTexOrderNull[1 + 1 /* padding */]; -extern "C" extern u8 j2dDefaultTevColor[8]; +extern "C" extern J2DGXColorS10 j2dDefaultTevColor; extern "C" extern u8 j2dDefaultIndTexCoordScaleInfo[2 + 2 /* padding */]; -extern "C" extern u32 j2dDefaultTevKColor; +extern "C" extern GXColor j2dDefaultTevKColor; extern "C" extern J2DTevSwapModeInfo j2dDefaultTevSwapMode; -extern "C" extern u32 j2dDefaultTevSwapModeTable; +extern "C" extern J2DTevSwapModeTableInfo j2dDefaultTevSwapModeTable; extern "C" extern u8 data_804561A4; extern "C" extern J2DColorChanInfo j2dDefaultColorChanInfo; extern "C" extern u8 data_804561AC; @@ -771,6 +771,29 @@ J2DTevBlock1::~J2DTevBlock1() { } /* 802EBA50-802EBC0C 2E6390 01BC+00 1/0 0/0 0/0 .text initialize__12J2DTevBlock1Fv */ +// inlines +#ifdef NONMATCHING +void J2DTevBlock1::initialize() { + mTexNo[0] = -1; + mFontNo = -1; + mTevOrder[0].setTevOrderInfo(j2dDefaultTevOrderInfoNull); + for (int i = 0; i < 4; i++) { + mTevColor[i] = j2dDefaultTevColor; + } + mTevStage[0].setStageNo(0); + for (int i = 0; i < 4; i++) { + mTevKColor[i] = j2dDefaultTevKColor; + } + mTevKColorSel[0] = -1; + mTevKAlphaSel[0] = -1; + for (int i = 0; i < 4; i++) { + mTevSwapModeTable[i].setTevSwapModeTableInfo(j2dDefaultTevSwapModeTable); + } + mIndTevStage[0].setIndTevStageInfo(j2dDefaultIndTevStageInfo); + mPalette[0] = NULL; + mFont = NULL; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -780,6 +803,7 @@ extern "C" asm void initialize__12J2DTevBlock1Fv() { #include "asm/JSystem/J2DGraph/J2DMatBlock/initialize__12J2DTevBlock1Fv.s" } #pragma pop +#endif /* 802EBC0C-802EBCC0 2E654C 00B4+00 1/0 0/0 0/0 .text prepareTexture__12J2DTevBlock1FUc */ @@ -1526,6 +1550,42 @@ J2DTevBlock4::~J2DTevBlock4() { } /* 802EDAC4-802EDD34 2E8404 0270+00 1/0 0/0 0/0 .text initialize__12J2DTevBlock4Fv */ +// inlines +#ifdef NONMATCHING +void J2DTevBlock4::initialize() { + for (int i = 0; i < 4; i++) { + mTexNo[i] = -1; + } + mFontNo = -1; + for (int i = 0; i < 4; i++) { + mTevOrder[i].setTevOrderInfo(j2dDefaultTevOrderInfoNull); + } + for (int i = 0; i < 4; i++) { + mTevColor[i] = j2dDefaultTevColor; + } + mTevStageNum = 1; + for (int i = 0; i < 4; i++) { + mTevStage[i].setStageNo(i); + } + for (int i = 0; i < 4; i++) { + mTevKColor[i] = j2dDefaultTevKColor; + } + for (int i = 0; i < 4; i++) { + mTevKColorSel[i] = -1; + mTevKAlphaSel[i] = -1; + } + for (int i = 0; i < 4; i++) { + mTevSwapModeTable[i].setTevSwapModeTableInfo(j2dDefaultTevSwapModeTable); + } + for (int i = 0; i < 4; i++) { + mIndTevStage[i].setIndTevStageInfo(j2dDefaultIndTevStageInfo); + } + for (int i = 0; i < 4; i++) { + mPalette[i] = NULL; + } + mFont = NULL; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1535,6 +1595,7 @@ extern "C" asm void initialize__12J2DTevBlock4Fv() { #include "asm/JSystem/J2DGraph/J2DMatBlock/initialize__12J2DTevBlock4Fv.s" } #pragma pop +#endif /* 802EDD34-802EDE04 2E8674 00D0+00 1/0 0/0 0/0 .text prepareTexture__12J2DTevBlock4FUc */ diff --git a/libs/JSystem/J3DU/J3DUDL.cpp b/libs/JSystem/J3DU/J3DUDL.cpp index 93e5377efec..3696a633ba6 100644 --- a/libs/JSystem/J3DU/J3DUDL.cpp +++ b/libs/JSystem/J3DU/J3DUDL.cpp @@ -4,32 +4,10 @@ // #include "JSystem/J3DU/J3DUDL.h" -#include "dol2asm.h" +#include "JSystem/J3DGraphBase/J3DShapeMtx.h" #include "dolphin/types.h" -// -// Types: -// - -struct J3DShapeMtx { - /* 80273E08 */ bool getUseMtxNum() const; -}; - -// -// Forward References: -// - -extern "C" bool getUseMtxNum__11J3DShapeMtxCFv(); - -// -// External References: -// - -// -// Declarations: -// - /* 80273E08-80273E10 26E748 0008+00 0/0 4/0 0/0 .text getUseMtxNum__11J3DShapeMtxCFv */ -bool J3DShapeMtx::getUseMtxNum() const { - return true; +u32 J3DShapeMtx::getUseMtxNum() const { + return 1; } diff --git a/libs/JSystem/JAudio2/JAISe.cpp b/libs/JSystem/JAudio2/JAISe.cpp index 41e97ec9ea0..40d46c30846 100644 --- a/libs/JSystem/JAudio2/JAISe.cpp +++ b/libs/JSystem/JAudio2/JAISe.cpp @@ -3,7 +3,12 @@ // Translation Unit: JAISe // -#include "JSystem/JAudio2/JAISe.h" +//#include "JSystem/JAudio2/JAISe.h" +#include "JSystem/JAudio2/JAIAudience.h" +//#include "JSystem/JAudio2/JAISeMgr.h" +#include "JSystem/JAudio2/JAISound.h" +#include "JSystem/JAudio2/JASTrack.h" +#include "JSystem/JSupport/JSUList.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -11,58 +16,6 @@ // Types: // -struct JSUPtrLink { - /* 802DBDFC */ JSUPtrLink(void*); -}; - -struct JGeometry { - template - struct TVec3 {}; - /* TVec3 */ - struct TVec3__template0 {}; -}; - -struct JASSoundParams {}; - -struct JASTrack { - /* 80291228 */ JASTrack(); - /* 80291444 */ void setChannelMgrCount(u32); - /* 802915D4 */ void init(); - /* 802919F4 */ void assignExtBuffer(u32, JASSoundParams*); - /* 80291A08 */ void setSeqData(void*, u32); - /* 80291A28 */ void startSeq(); - /* 80291A78 */ void stopSeq(); - /* 802927A0 */ void mute(bool); - /* 80292A3C */ void pause(bool); - /* 80292B8C */ void setTempoRate(f32); -}; - -template -struct JAISoundStrategyMgr {}; -/* JAISoundStrategyMgr */ -struct JAISoundStrategyMgr__template0 {}; - -struct JAISoundParams { - /* 802A2280 */ void mixOutAll(JASSoundParams const&, JASSoundParams*, f32); -}; - -struct JAISoundID {}; - -struct JAISoundActivity {}; - -struct JAIAudience {}; - -struct JAISound { - /* 802A22F8 */ JAISound(); - /* 802A2328 */ void start_JAISound_(JAISoundID, JGeometry::TVec3 const*, JAIAudience*); - /* 802A25E0 */ bool asSeq(); - /* 802A25E8 */ bool asStream(); - /* 802A25F0 */ void die_JAISound_(); - /* 802A266C */ void increasePrepareCount_JAISound_(); - /* 802A26B8 */ void calc_JAISound_(); - /* 802A29DC */ void initTrack_JAISound_(JASTrack*); -}; - struct JAISeMgr {}; struct JAISe { @@ -72,17 +25,17 @@ struct JAISe { /* 8029F250 */ void startTrack_(JASSoundParams const&); /* 8029F304 */ void JAISeCategoryMgr_mixOut_(bool, JASSoundParams const&, JAISoundActivity); /* 8029F4CC */ void JAISeCategoryMgr_calc_(); - /* 8029F5C8 */ void JAISound_tryDie_(); + /* 8029F5C8 */ bool JAISound_tryDie_(); /* 8029F650 */ void JAISeMgr_startID_(JAISoundID, JGeometry::TVec3 const*, JAIAudience*); /* 8029F6D8 */ bool getNumChild() const; /* 8029F6E0 */ bool getChild(int); /* 8029F6E8 */ void releaseChild(int); - /* 8029F6EC */ void prepare_getSeqData_(); + /* 8029F6EC */ bool prepare_getSeqData_(); /* 8029F78C */ void prepare_(); - /* 8029F84C */ void getTrack(); - /* 8029F854 */ void getChildTrack(int); - /* 8029F864 */ void asSe(); - /* 8029F868 */ void getTempoMgr(); + /* 8029F84C */ JASTrack* getTrack(); + /* 8029F854 */ JASTrack* getChildTrack(int); + /* 8029F864 */ JAISe* asSe(); + /* 8029F868 */ JAITempoMgr* getTempoMgr(); }; // @@ -191,6 +144,14 @@ SECTION_SDATA2 static f32 lit_628 = 0.5f; /* 8029F03C-8029F0F8 29997C 00BC+00 0/0 1/1 0/0 .text * __ct__5JAISeFP8JAISeMgrP27JAISoundStrategyMgr<5JAISe>Ul */ +// multiple inheritance thunks +#ifdef NONMATCHING +JAISe::JAISe(JAISeMgr* param_0, JAISoundStrategyMgr* param_1, u32 param_2) : JSULink(this) { + inner_.mSoundStrategyMgr = param_1; + inner_.seMgr = param_0; + inner_.mProperPriority = param_2; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -199,9 +160,29 @@ asm JAISe::JAISe(JAISeMgr* param_0, JAISoundStrategyMgr* param_1, u32 par #include "asm/JSystem/JAudio2/JAISe/func_8029F03C.s" } #pragma pop +#endif /* 8029F0F8-8029F214 299A38 011C+00 1/1 0/0 0/0 .text mixOut___5JAISeFRC14JASSoundParams */ +// multiple inheritance thunks +#ifdef NONMATCHING +void JAISe::mixOut_(JASSoundParams const& param_0) { + inner_.track.setTempoRate(inner_.mTempoMgr.getTempo()); + JASSoundParams stackParams; + params.mixOutAll(param_0, &stackParams, fader.getIntensity()); + if (inner_.field_0x278) { + inner_.field_0x278->virtual4(this, stackParams); + } + if (audible_) { + int maxChannels = audience_->getMaxChannels(); + for (int i = 0; i < maxChannels; i++) { + audience_->mixChannelOut(stackParams, audible_, i); + } + } else { + inner_.mSoundParams = stackParams; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -210,8 +191,23 @@ asm void JAISe::mixOut_(JASSoundParams const& param_0) { #include "asm/JSystem/JAudio2/JAISe/mixOut___5JAISeFRC14JASSoundParams.s" } #pragma pop +#endif /* 8029F214-8029F250 299B54 003C+00 1/1 0/0 0/0 .text stopTrack___5JAISeFv */ +// multiple inheritance thunks +#ifdef NONMATCHING +void JAISe::stopTrack_() { + switch (inner_.track.getStatus()) { + case 0: + break; + case 1: + inner_.track.stopSeq(); + break; + case 2: + break; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -220,8 +216,27 @@ asm void JAISe::stopTrack_() { #include "asm/JSystem/JAudio2/JAISe/stopTrack___5JAISeFv.s" } #pragma pop +#endif /* 8029F250-8029F304 299B90 00B4+00 1/1 0/0 0/0 .text startTrack___5JAISeFRC14JASSoundParams */ +// multiple inheritance thunks +#ifdef NONMATCHING +void JAISe::startTrack_(JASSoundParams const& param_0) { + if (inner_.track.getStatus() == 2) { + inner_.track.init(); + } + if (audible_) { + initTrack_JAISound_(&inner_.track); + } else { + params.mixOutAll(param_0, &inner_.mSoundParams, fader.getIntensity()); + inner_.track.setChannelMgrCount(1); + inner_.track.assignExtBuffer(0, &inner_.mSoundParams); + } + inner_.field_0x26c = 1; + inner_.track.setSeqData(inner_.mSeqData.field_0x0, inner_.mSeqData.field_0x4); + inner_.track.startSeq(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -230,6 +245,7 @@ asm void JAISe::startTrack_(JASSoundParams const& param_0) { #include "asm/JSystem/JAudio2/JAISe/startTrack___5JAISeFRC14JASSoundParams.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80455784-80455788 003D84 0004+00 2/2 0/0 0/0 .sdata2 @736 */ @@ -237,6 +253,43 @@ SECTION_SDATA2 static f32 lit_736 = 1.0f / 100.0f; /* 8029F304-8029F4CC 299C44 01C8+00 0/0 1/1 0/0 .text * JAISeCategoryMgr_mixOut___5JAISeFbRC14JASSoundParams16JAISoundActivity */ +// isStopping inline +#ifdef NONMATCHING +void JAISe::JAISeCategoryMgr_mixOut_(bool param_0, JASSoundParams const& param_1, JAISoundActivity param_2) { + mixOut_(param_1); + if (isStopping()) { + stopTrack_(); + } else if (param_0) { + if (status_.isPlaying()) { + if (inner_.field_0x26c) { + switch (inner_.track.getStatus()) { + case 2: + if (status_.field_0x1.flags.flag1) { + startTrack_(param_1); + } else { + stop_JAISound_(); + } + break; + case 1: + inner_.track.pause(status_.isPaused() || param_2.field_0x0.flags.flag2); + inner_.track.mute(status_.isMute() || param_2.field_0x0.flags.flag1); + } + } else { + startTrack_(param_1); + } + } + } else if (status_.field_0x1.flags.flag1) { + if (status_.field_0x1.flags.flag3) { + inner_.track.pause(true); + } else { + stopTrack_(); + } + } else { + stopTrack_(); + stop_JAISound_(); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -246,8 +299,26 @@ asm void JAISe::JAISeCategoryMgr_mixOut_(bool param_0, JASSoundParams const& par #include "asm/JSystem/JAudio2/JAISe/JAISeCategoryMgr_mixOut___5JAISeFbRC14JASSoundParams16JAISoundActivity.s" } #pragma pop +#endif /* 8029F4CC-8029F5C8 299E0C 00FC+00 0/0 1/1 0/0 .text JAISeCategoryMgr_calc___5JAISeFv */ +// isStopping inline +#ifdef NONMATCHING +void JAISe::JAISeCategoryMgr_calc_() { + prepare_(); + if (calc_JAISound_()) { + inner_.mTempoMgr.calc(); + if (inner_.field_0x278) { + inner_.field_0x278->virtual3(this); + } + } + if (isStopping() || mPriority == -1) { + inner_.mPriority = -1; + } else { + inner_.mPriority = inner_.mProperPriority + mPriority; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -256,19 +327,51 @@ asm void JAISe::JAISeCategoryMgr_calc_() { #include "asm/JSystem/JAudio2/JAISe/JAISeCategoryMgr_calc___5JAISeFv.s" } #pragma pop +#endif /* 8029F5C8-8029F650 299F08 0088+00 2/1 0/0 0/0 .text JAISound_tryDie___5JAISeFv */ +// multiple inheritance thunks +#ifdef NONMATCHING +bool JAISe::JAISound_tryDie_() { + switch (inner_.track.getStatus()) { + case 0: + case 2: + if (inner_.field_0x278) { + inner_.mSoundStrategyMgr->virtual4(inner_.field_0x278); + inner_.field_0x278 = NULL; + } + die_JAISound_(); + return true; + case 1: + break; + } + return false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JAISe::JAISound_tryDie_() { +asm bool JAISe::JAISound_tryDie_() { nofralloc #include "asm/JSystem/JAudio2/JAISe/JAISound_tryDie___5JAISeFv.s" } #pragma pop +#endif /* 8029F650-8029F6D8 299F90 0088+00 0/0 1/1 0/0 .text * JAISeMgr_startID___5JAISeF10JAISoundIDPCQ29JGeometry8TVec3P11JAIAudience */ +// multiple inheritance thunks +#ifdef NONMATCHING +void JAISe::JAISeMgr_startID_(JAISoundID param_0, JGeometry::TVec3 const* param_1, JAIAudience* param_2) { + start_JAISound_(param_0, param_1, param_2); + inner_.field_0x26c = 0; + if (inner_.mSoundStrategyMgr) { + inner_.field_0x278 = inner_.mSoundStrategyMgr->virtual3(param_0); + } else { + inner_.field_0x278 = NULL; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -278,6 +381,7 @@ asm void JAISe::JAISeMgr_startID_(JAISoundID param_0, JGeometry::TVec3 cons #include "asm/JSystem/JAudio2/JAISe/func_8029F650.s" } #pragma pop +#endif /* 8029F6D8-8029F6E0 29A018 0008+00 2/1 0/0 0/0 .text getNumChild__5JAISeCFv */ bool JAISe::getNumChild() const { @@ -295,16 +399,61 @@ void JAISe::releaseChild(int param_0) { } /* 8029F6EC-8029F78C 29A02C 00A0+00 1/1 0/0 0/0 .text prepare_getSeqData___5JAISeFv */ +// multiple inheritance thunks +#ifdef NONMATCHING +bool JAISe::prepare_getSeqData_() { + switch (inner_.seMgr->getSeqDataMgr()->getSeqData(soundID, &inner_.mSeqData)) { + case 0: + status_.state.unk = 2; + return false; + case 1: + increasePrepareCount_JAISound_(); + return false; + case 2: + return true; + } + return false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JAISe::prepare_getSeqData_() { +asm bool JAISe::prepare_getSeqData_() { nofralloc #include "asm/JSystem/JAudio2/JAISe/prepare_getSeqData___5JAISeFv.s" } #pragma pop +#endif /* 8029F78C-8029F84C 29A0CC 00C0+00 1/1 0/0 0/0 .text prepare___5JAISeFv */ +// multiple inheritance thunks +#ifdef NONMATCHING +void JAISe::prepare_() { + switch (status_.state.unk) { + case 6: + break; + case 2: + stop_JAISound_(); + break; + case 0: + if (prepare_getSeqData_()) { + status_.state.unk = 5; + } + break; + case 1: + if (prepare_getSeqData_()) { + status_.state.unk = 3; + } + break; + case 4: + status_.state.unk = 5; + break; + case 3: + case 5: + break; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -313,41 +462,63 @@ asm void JAISe::prepare_() { #include "asm/JSystem/JAudio2/JAISe/prepare___5JAISeFv.s" } #pragma pop +#endif /* 8029F84C-8029F854 29A18C 0008+00 2/1 0/0 0/0 .text getTrack__5JAISeFv */ +// multiple inheritance thunks +#ifdef NONMATCHING +JASTrack* JAISe::getTrack() { + return &inner_.track; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JAISe::getTrack() { +asm JASTrack* JAISe::getTrack() { nofralloc #include "asm/JSystem/JAudio2/JAISe/getTrack__5JAISeFv.s" } #pragma pop +#endif /* 8029F854-8029F864 29A194 0010+00 2/1 0/0 0/0 .text getChildTrack__5JAISeFi */ +// multiple inheritance thunks +#ifdef NONMATCHING +JASTrack* JAISe::getChildTrack(int param_0) { + return inner_.track.getChild(param_0); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JAISe::getChildTrack(int param_0) { +asm JASTrack* JAISe::getChildTrack(int param_0) { nofralloc #include "asm/JSystem/JAudio2/JAISe/getChildTrack__5JAISeFi.s" } #pragma pop +#endif /* 8029F864-8029F868 29A1A4 0004+00 2/1 0/0 0/0 .text asSe__5JAISeFv */ -void JAISe::asSe() { - /* empty function */ +JAISe* JAISe::asSe() { + return this; } /* 8029F868-8029F870 29A1A8 0008+00 2/1 0/0 0/0 .text getTempoMgr__5JAISeFv */ +// multiple inheritance thunks +#ifdef NONMATCHING +JAITempoMgr* JAISe::getTempoMgr() { + return &inner_.mTempoMgr; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JAISe::getTempoMgr() { +asm JAITempoMgr* JAISe::getTempoMgr() { nofralloc #include "asm/JSystem/JAudio2/JAISe/getTempoMgr__5JAISeFv.s" } #pragma pop +#endif /* 8029F870-8029F878 29A1B0 0008+00 1/0 0/0 0/0 .text @16@JAISound_tryDie___5JAISeFv */ #pragma push diff --git a/libs/JSystem/JAudio2/JAISeMgr.cpp b/libs/JSystem/JAudio2/JAISeMgr.cpp index 8f02a6fb9aa..538c8820d5e 100644 --- a/libs/JSystem/JAudio2/JAISeMgr.cpp +++ b/libs/JSystem/JAudio2/JAISeMgr.cpp @@ -10,17 +10,6 @@ #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -template -struct JASMemPool {}; -/* JASMemPool */ -struct JASMemPool__template0 { - /* 8029FC34 */ void func_8029FC34(void* _this); -}; - // // Forward References: // diff --git a/libs/JSystem/JAudio2/JAISeq.cpp b/libs/JSystem/JAudio2/JAISeq.cpp index 207358d2c79..2bd948131d2 100644 --- a/libs/JSystem/JAudio2/JAISeq.cpp +++ b/libs/JSystem/JAudio2/JAISeq.cpp @@ -4,123 +4,17 @@ // #include "JSystem/JAudio2/JAISeq.h" +#include "JSystem/JAudio2/JAIAudience.h" +#include "JSystem/JAudio2/JAISeqMgr.h" +#include "JSystem/JAudio2/JAISoundChild.h" +#include "JSystem/JAudio2/JASAudioReseter.h" // JASCriticalSection #include "dol2asm.h" -#include "dolphin/types.h" - -// -// Types: -// - -struct JSUPtrLink { - /* 802DBDFC */ JSUPtrLink(void*); -}; - -struct JGeometry { - template - struct TVec3 {}; - /* TVec3 */ - struct TVec3__template0 {}; -}; - -struct JASSoundParams {}; - -struct JASTrack { - /* 80291228 */ JASTrack(); - /* 8029131C */ ~JASTrack(); - /* 80291444 */ void setChannelMgrCount(u32); - /* 802919F4 */ void assignExtBuffer(u32, JASSoundParams*); - /* 80291A08 */ void setSeqData(void*, u32); - /* 80291A28 */ void startSeq(); - /* 80291A78 */ void stopSeq(); - /* 80291B8C */ void connectChild(u32, JASTrack*); - /* 802927A0 */ void mute(bool); - /* 80292A3C */ void pause(bool); - /* 80292B8C */ void setTempoRate(f32); -}; - -template -struct JASMemPool_MultiThreaded {}; -/* JASMemPool_MultiThreaded */ -struct JASMemPool_MultiThreaded__template0 { - /* 802932E0 */ void func_802932E0(void* _this); -}; - -template -struct JASMemPool {}; -/* JASMemPool */ -struct JASMemPool__template1 { - /* 802A1268 */ void func_802A1268(void* _this); -}; - -struct JASGenericMemPool { - /* 80290848 */ JASGenericMemPool(); - /* 80290860 */ ~JASGenericMemPool(); - /* 80290948 */ void alloc(u32); - /* 80290994 */ void free(void*, u32); -}; - -template -struct JAISoundStrategyMgr {}; -/* JAISoundStrategyMgr */ -struct JAISoundStrategyMgr__template1 {}; - -struct JAISoundParams { - /* 802A2280 */ void mixOutAll(JASSoundParams const&, JASSoundParams*, f32); -}; - -struct JAISoundID {}; - -struct JAISoundChild { - /* 802A2AB0 */ void init(); - /* 802A2B28 */ void mixOut(JASTrack*); - /* 802A2B7C */ void calc(); -}; - -struct JAISoundActivity {}; - -struct JAIAudience {}; - -struct JAISound { - /* 802A22F8 */ JAISound(); - /* 802A2328 */ void start_JAISound_(JAISoundID, JGeometry::TVec3 const*, JAIAudience*); - /* 802A25D8 */ bool asSe(); - /* 802A25E8 */ bool asStream(); - /* 802A25F0 */ void die_JAISound_(); - /* 802A266C */ void increasePrepareCount_JAISound_(); - /* 802A26B8 */ void calc_JAISound_(); - /* 802A29DC */ void initTrack_JAISound_(JASTrack*); -}; - -struct JAISeqMgr {}; - -struct JAISeq { - /* 802A0A8C */ JAISeq(JAISeqMgr*, JAISoundStrategyMgr*); - /* 802A0B64 */ void JAISeqMgr_startID_(JAISoundID, JGeometry::TVec3 const*, JAIAudience*, - int, int); - /* 802A0C04 */ void playSeqData_(JASSoundParams const&, JAISoundActivity); - /* 802A0CA4 */ void reserveChildTracks_(int); - /* 802A0E48 */ void releaseChildTracks_(); - /* 802A0EDC */ void prepare_getSeqData_(); - /* 802A0F90 */ void prepare_(JASSoundParams const&, JAISoundActivity); - /* 802A108C */ void JAISeqMgr_calc_(); - /* 802A1180 */ void die_(); - /* 802A12BC */ void JAISound_tryDie_(); - /* 802A1348 */ void mixOut_(JASSoundParams const&, JAISoundActivity); - /* 802A14FC */ void JAISeqMgr_mixOut_(JASSoundParams const&, JAISoundActivity); - /* 802A1570 */ s32 getNumChild() const; - /* 802A1578 */ void getChild(int); - /* 802A165C */ void releaseChild(int); - /* 802A1728 */ void getTrack(); - /* 802A1730 */ void getChildTrack(int); - /* 802A1768 */ void asSeq(); - /* 802A176C */ void getTempoMgr(); -}; // // Forward References: // -extern "C" static void func_802A0A6C(); +extern "C" static bool func_802A0A6C(JASTrack*); extern "C" void func_802A0A8C(); extern "C" void func_802A0B64(); extern "C" void playSeqData___6JAISeqFRC14JASSoundParams16JAISoundActivity(); @@ -176,8 +70,6 @@ extern "C" void mixOut__13JAISoundChildFP8JASTrack(); extern "C" void calc__13JAISoundChildFv(); extern "C" void __dl__FPv(); extern "C" void __ct__10JSUPtrLinkFPv(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); extern "C" void __register_global_object(); extern "C" void _savegpr_24(); extern "C" void _savegpr_26(); @@ -199,26 +91,22 @@ extern "C" extern u8 data_80451318[8]; /* 802A0A6C-802A0A8C 29B3AC 0020+00 1/1 0/0 0/0 .text * JASTrack_isFreeOrStopped__20@unnamed@JAISeq_cpp@FP8JASTrack */ +// instruction order +#ifdef NONMATCHING +static bool func_802A0A6C(JASTrack* track) { + u8 status = track->getStatus(); + return status == 0 || status == 2; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void func_802A0A6C() { +static asm bool func_802A0A6C(JASTrack*) { nofralloc #include "asm/JSystem/JAudio2/JAISeq/func_802A0A6C.s" } #pragma pop - -/* ############################################################################################## */ -/* 803C98D8-803C98F4 -00001 001C+00 1/1 0/0 0/0 .data @852 */ -SECTION_DATA static void* lit_852[7] = { - (void*)(((char*)prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity) + 0x68), - (void*)(((char*)prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity) + 0x9C), - (void*)(((char*)prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity) + 0x44), - (void*)(((char*)prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity) + 0xE0), - (void*)(((char*)prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity) + 0xB8), - (void*)(((char*)prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity) + 0xD8), - (void*)(((char*)prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity) + 0xE0), -}; +#endif /* 803C98F4-803C9928 026A14 0030+04 1/1 2/2 0/0 .data __vt__6JAISeq */ SECTION_DATA extern void* __vt__6JAISeq[12 + 1 /* padding */] = { @@ -234,8 +122,6 @@ SECTION_DATA extern void* __vt__6JAISeq[12 + 1 /* padding */] = { (void*)getChildTrack__6JAISeqFi, (void*)getTempoMgr__6JAISeqFv, (void*)JAISound_tryDie___6JAISeqFv, - /* padding */ - NULL, }; /* 80455798-8045579C 003D98 0004+00 3/3 0/0 0/0 .sdata2 @642 */ @@ -258,6 +144,17 @@ SECTION_SDATA2 static f32 lit_644[1 + 1 /* padding */] = { /* 802A0A8C-802A0B64 29B3CC 00D8+00 0/0 2/1 0/0 .text * __ct__6JAISeqFP9JAISeqMgrP28JAISoundStrategyMgr<6JAISeq> */ +// matches with literals +#ifdef NONMATCHING +JAISeq::JAISeq(JAISeqMgr* param_0, JAISoundStrategyMgr* param_1) : JSULink(this) { + inner_.seqMgr = param_0; + inner_.strategyMgr = param_1; + inner_.mSoundParams.init(); + for (int i = 0; i < 32; i++) { + inner_.mSoundChild[i] = NULL; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -266,35 +163,62 @@ asm JAISeq::JAISeq(JAISeqMgr* param_0, JAISoundStrategyMgr* param_1) { #include "asm/JSystem/JAudio2/JAISeq/func_802A0A8C.s" } #pragma pop +#endif /* 802A0B64-802A0C04 29B4A4 00A0+00 0/0 1/1 0/0 .text * JAISeqMgr_startID___6JAISeqF10JAISoundIDPCQ29JGeometry8TVec3P11JAIAudienceii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAISeq::JAISeqMgr_startID_(JAISoundID param_0, JGeometry::TVec3 const* param_1, - JAIAudience* param_2, int param_3, int param_4) { - nofralloc -#include "asm/JSystem/JAudio2/JAISeq/func_802A0B64.s" +void JAISeq::JAISeqMgr_startID_(JAISoundID param_0, JGeometry::TVec3 const* param_1, JAIAudience* param_2, int param_3, int param_4) { + inner_.field_0x39c = param_3; + reserveChildTracks_(param_4); + start_JAISound_(param_0, param_1, param_2); + if (inner_.strategyMgr) { + field_0x3a8 = inner_.strategyMgr->virtual3(param_0); + } else { + field_0x3a8 = NULL; + } } -#pragma pop /* 802A0C04-802A0CA4 29B544 00A0+00 1/1 0/0 0/0 .text * playSeqData___6JAISeqFRC14JASSoundParams16JAISoundActivity */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAISeq::playSeqData_(JASSoundParams const& param_0, JAISoundActivity param_1) { - nofralloc -#include "asm/JSystem/JAudio2/JAISeq/playSeqData___6JAISeqFRC14JASSoundParams16JAISoundActivity.s" +void JAISeq::playSeqData_(JASSoundParams const& param_0, JAISoundActivity param_1) { + inner_.outputTrack.setSeqData(inner_.mSeqData.field_0x0, inner_.mSeqData.field_0x4); + if (audible_) { + initTrack_JAISound_(&inner_.outputTrack); + } else { + inner_.outputTrack.setChannelMgrCount(1); + inner_.outputTrack.assignExtBuffer(0, &inner_.mSoundParams); + } + mixOut_(param_0, param_1); + inner_.outputTrack.startSeq(); } -#pragma pop /* ############################################################################################## */ /* 80434098-804340A4 060DB8 000C+00 1/1 0/0 0/0 .bss @716 */ static u8 lit_716[12]; /* 802A0CA4-802A0E48 29B5E4 01A4+00 1/1 0/0 0/0 .text reserveChildTracks___6JAISeqFi */ +// setAutoDelete inline, operator new? +#ifdef NONMATCHING +void JAISeq::reserveChildTracks_(int param_0) { + for (int i = 0; i < 2; i++) { + JASTrack* track = new JASPoolAllocObject_MultiThreaded(); + if (track) { + track->setAutoDelete(true); + inner_.outputTrack.connectChild(i, track); + for (int j = 0; j < 16; j++) { + if (i * 16 + j >= param_0) { + continue; + } + JASTrack* track2 = new JASPoolAllocObject_MultiThreaded(); + if (track2) { + track2->setAutoDelete(true); + track->connectChild(j, track2); + } + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -303,39 +227,96 @@ asm void JAISeq::reserveChildTracks_(int param_0) { #include "asm/JSystem/JAudio2/JAISeq/reserveChildTracks___6JAISeqFi.s" } #pragma pop +#endif /* 802A0E48-802A0EDC 29B788 0094+00 1/1 0/0 0/0 .text releaseChildTracks___6JAISeqFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAISeq::releaseChildTracks_() { - nofralloc -#include "asm/JSystem/JAudio2/JAISeq/releaseChildTracks___6JAISeqFv.s" +void JAISeq::releaseChildTracks_() { + for (u32 i = 0; i < 2; i++) { + JASTrack* track = inner_.outputTrack.getChild(i); + if (track) { + for (u32 j = 0; j < 16; j++) { + JASTrack* track2 = track->getChild(j); + if (track2) { + delete track2; + } + } + delete track; + } + } } -#pragma pop /* 802A0EDC-802A0F90 29B81C 00B4+00 1/1 0/0 0/0 .text prepare_getSeqData___6JAISeqFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAISeq::prepare_getSeqData_() { - nofralloc -#include "asm/JSystem/JAudio2/JAISeq/prepare_getSeqData___6JAISeqFv.s" +bool JAISeq::prepare_getSeqData_() { + JAISoundID id(soundID); + if (id.isAnonymous()) { + return true; + } + JAISeqDataMgr* seqDataMgr = inner_.seqMgr->getSeqDataMgr(); + switch (seqDataMgr->getSeqData(id, &inner_.mSeqData)) { + case 0: + status_.state.unk = 2; + break; + case 1: + increasePrepareCount_JAISound_(); + return false; + case 2: + return true; + } + return false; } -#pragma pop /* 802A0F90-802A108C 29B8D0 00FC+00 2/1 0/0 0/0 .text * prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAISeq::prepare_(JASSoundParams const& param_0, JAISoundActivity param_1) { - nofralloc -#include "asm/JSystem/JAudio2/JAISeq/prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity.s" +bool JAISeq::prepare_(JASSoundParams const& param_0, JAISoundActivity param_1) { + switch (status_.state.unk) { + case 6: + break; + case 2: + stop_JAISound_(); + break; + case 0: + if (prepare_getSeqData_()) { + status_.state.unk = 5; + playSeqData_(param_0, param_1); + return true; + } + break; + case 1: + if (prepare_getSeqData_()) { + status_.state.unk = 3; + } + return false; + case 4: + status_.state.unk = 5; + playSeqData_(param_0, param_1); + return true; + case 5: + return true; + } + return false; } -#pragma pop /* 802A108C-802A1180 29B9CC 00F4+00 0/0 1/1 0/0 .text JAISeqMgr_calc___6JAISeqFv */ +// missing instruction +#ifdef NONMATCHING +void JAISeq::JAISeqMgr_calc_() { + if (inner_.outputTrack.getStatus() == 2 || (inner_.outputTrack.getStatus() == 0 && status_.state.unk == 2)) { + die_(); + return; + } + if (calc_JAISound_()) { + inner_.mTempoMgr.calc(); + for (int i = 0; i < 32; i++) { + if (inner_.mSoundChild[i]) { + inner_.mSoundChild[i]->calc(); + } + } + if (field_0x3a8) { + field_0x3a8->virtual3(this); + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -344,6 +325,7 @@ asm void JAISeq::JAISeqMgr_calc_() { #include "asm/JSystem/JAudio2/JAISeq/JAISeqMgr_calc___6JAISeqFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 804340A4-804340B0 060DC4 000C+00 3/3 0/0 0/0 .bss @896 */ @@ -355,6 +337,23 @@ extern u8 data_804340B0[16]; u8 data_804340B0[16]; /* 802A1180-802A1268 29BAC0 00E8+00 2/2 0/0 0/0 .text die___6JAISeqFv */ +// matches with literals +#ifdef NONMATCHING +void JAISeq::die_() { + for (int i = 0; i < 32; i++) { + if (inner_.mSoundChild[i]) { + delete inner_.mSoundChild[i]; + inner_.mSoundChild[i] = NULL; + } + } + if (field_0x3a8) { + inner_.strategyMgr->virtual4(field_0x3a8); + field_0x3a8 = NULL; + } + releaseChildTracks_(); + die_JAISound_(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -363,6 +362,7 @@ asm void JAISeq::die_() { #include "asm/JSystem/JAudio2/JAISeq/die___6JAISeqFv.s" } #pragma pop +#endif /* 802A1268-802A12BC 29BBA8 0054+00 3/3 4/4 0/0 .text __dt__27JASMemPool<13JAISoundChild>Fv */ #pragma push @@ -375,17 +375,61 @@ extern "C" asm void func_802A1268(void* _this) { #pragma pop /* 802A12BC-802A1348 29BBFC 008C+00 1/0 0/0 0/0 .text JAISound_tryDie___6JAISeqFv */ +// matches with literals +#ifdef NONMATCHING +bool JAISeq::JAISound_tryDie_() { + if (func_802A0A6C(&inner_.outputTrack)) { + die_(); + return true; + } + fader.forceOut(); + status_.state.flags.flag1 = 1; + JASCriticalSection cs; + inner_.outputTrack.stopSeq(); + return false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JAISeq::JAISound_tryDie_() { +asm bool JAISeq::JAISound_tryDie_() { nofralloc #include "asm/JSystem/JAudio2/JAISeq/JAISound_tryDie___6JAISeqFv.s" } #pragma pop +#endif /* 802A1348-802A14FC 29BC88 01B4+00 2/2 0/0 0/0 .text * mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity */ +// matches with literals +#ifdef NONMATCHING +void JAISeq::mixOut_(JASSoundParams const& param_0, JAISoundActivity param_1) { + inner_.outputTrack.setTempoRate(inner_.mTempoMgr.getTempo()); + inner_.outputTrack.mute(param_1.field_0x0.flags.flag1 || status_.isMute()); + inner_.outputTrack.pause(param_1.field_0x0.flags.flag2 || status_.isPaused()); + JASSoundParams stackParams; + params.mixOutAll(param_0, &stackParams, fader.getIntensity()); + if (field_0x3a8) { + field_0x3a8->virtual4(this, stackParams); + } + if (audible_) { + int maxChannels = audience_->getMaxChannels(); + for (int i = 0; i < maxChannels; i++) { + audience_->mixChannelOut(stackParams, audible_, i); + } + } else { + inner_.mSoundParams = stackParams; + for (int i = 0; i < 32; i++) { + if (inner_.mSoundChild[i]) { + JASTrack* track = JAISeq::getChildTrack(i); + if (track) { + inner_.mSoundChild[i]->mixOut(track); + } + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -394,17 +438,15 @@ asm void JAISeq::mixOut_(JASSoundParams const& param_0, JAISoundActivity param_1 #include "asm/JSystem/JAudio2/JAISeq/mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity.s" } #pragma pop +#endif /* 802A14FC-802A1570 29BE3C 0074+00 0/0 1/1 0/0 .text * JAISeqMgr_mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAISeq::JAISeqMgr_mixOut_(JASSoundParams const& param_0, JAISoundActivity param_1) { - nofralloc -#include "asm/JSystem/JAudio2/JAISeq/JAISeqMgr_mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity.s" +void JAISeq::JAISeqMgr_mixOut_(JASSoundParams const& param_0, JAISoundActivity param_1) { + if (prepare_(param_0, param_1) && inner_.outputTrack.getStatus() == 1) { + mixOut_(param_0, param_1); + } } -#pragma pop /* 802A1570-802A1578 29BEB0 0008+00 1/0 0/0 0/0 .text getNumChild__6JAISeqCFv */ s32 JAISeq::getNumChild() const { @@ -412,16 +454,43 @@ s32 JAISeq::getNumChild() const { } /* 802A1578-802A165C 29BEB8 00E4+00 1/0 0/0 0/0 .text getChild__6JAISeqFi */ +// matches with literals +#ifdef NONMATCHING +JAISoundChild* JAISeq::getChild(int index) { + if (inner_.mSoundChild[index]) { + return inner_.mSoundChild[index]; + } + inner_.mSoundChild[index] = new JASPoolAllocObject(); + if (!inner_.mSoundChild[index]) { + return NULL; + } + return inner_.mSoundChild[index]; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JAISeq::getChild(int param_0) { +asm JAISoundChild* JAISeq::getChild(int param_0) { nofralloc #include "asm/JSystem/JAudio2/JAISeq/getChild__6JAISeqFi.s" } #pragma pop +#endif /* 802A165C-802A1728 29BF9C 00CC+00 1/0 0/0 0/0 .text releaseChild__6JAISeqFi */ +// matches with literals +#ifdef NONMATCHING +void JAISeq::releaseChild(int param_0) { + if (inner_.outputTrack.getStatus() == 1 && inner_.mSoundChild[param_0]) { + JASTrack* track = getChildTrack(param_0); + if (track) { + track->assignExtBuffer(0, NULL); + } + delete inner_.mSoundChild[param_0]; + inner_.mSoundChild[param_0] = NULL; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -430,38 +499,30 @@ asm void JAISeq::releaseChild(int param_0) { #include "asm/JSystem/JAudio2/JAISeq/releaseChild__6JAISeqFi.s" } #pragma pop +#endif /* 802A1728-802A1730 29C068 0008+00 1/0 0/0 0/0 .text getTrack__6JAISeqFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAISeq::getTrack() { - nofralloc -#include "asm/JSystem/JAudio2/JAISeq/getTrack__6JAISeqFv.s" +JASTrack* JAISeq::getTrack() { + return &inner_.outputTrack; } -#pragma pop /* 802A1730-802A1768 29C070 0038+00 2/1 0/0 0/0 .text getChildTrack__6JAISeqFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAISeq::getChildTrack(int param_0) { - nofralloc -#include "asm/JSystem/JAudio2/JAISeq/getChildTrack__6JAISeqFi.s" +JASTrack* JAISeq::getChildTrack(int param_0) { + u32 tmp = u32(param_0) >> 4; + JASTrack* track = inner_.outputTrack.getChild(tmp); + if (track) { + JASTrack* track2 = track->getChild(param_0 - (tmp << 4)); + return track2; + } + return NULL; } -#pragma pop /* 802A1768-802A176C 29C0A8 0004+00 1/0 0/0 0/0 .text asSeq__6JAISeqFv */ -void JAISeq::asSeq() { - /* empty function */ +JAISeq* JAISeq::asSeq() { + return this; } /* 802A176C-802A1774 29C0AC 0008+00 1/0 0/0 0/0 .text getTempoMgr__6JAISeqFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JAISeq::getTempoMgr() { - nofralloc -#include "asm/JSystem/JAudio2/JAISeq/getTempoMgr__6JAISeqFv.s" +JAITempoMgr* JAISeq::getTempoMgr() { + return &inner_.mTempoMgr; } -#pragma pop diff --git a/libs/JSystem/JAudio2/JAISound.cpp b/libs/JSystem/JAudio2/JAISound.cpp index 2d6b1fc82d2..c9848856259 100644 --- a/libs/JSystem/JAudio2/JAISound.cpp +++ b/libs/JSystem/JAudio2/JAISound.cpp @@ -253,18 +253,18 @@ void JAISound::stop() { } /* 802A25D8-802A25E0 29CF18 0008+00 1/0 2/0 0/0 .text asSe__8JAISoundFv */ -bool JAISound::asSe() { - return false; +JAISe* JAISound::asSe() { + return NULL; } /* 802A25E0-802A25E8 29CF20 0008+00 1/0 2/0 0/0 .text asSeq__8JAISoundFv */ -bool JAISound::asSeq() { - return false; +JAISeq* JAISound::asSeq() { + return NULL; } /* 802A25E8-802A25F0 29CF28 0008+00 1/0 2/0 0/0 .text asStream__8JAISoundFv */ -bool JAISound::asStream() { - return false; +JAIStream* JAISound::asStream() { + return NULL; } /* 802A25F0-802A266C 29CF30 007C+00 0/0 3/3 0/0 .text die_JAISound___8JAISoundFv */ diff --git a/libs/JSystem/JAudio2/JAIStream.cpp b/libs/JSystem/JAudio2/JAIStream.cpp index 9319b66b1dc..6a902295b39 100644 --- a/libs/JSystem/JAudio2/JAIStream.cpp +++ b/libs/JSystem/JAudio2/JAIStream.cpp @@ -11,26 +11,6 @@ // Types: // -struct JSUPtrLink { - /* 802DBDFC */ JSUPtrLink(void*); -}; - -struct JGeometry { - template - struct TVec3 {}; - /* TVec3 */ - struct TVec3__template0 {}; -}; - -struct JASSoundParams {}; - -template -struct JASMemPool {}; -/* JASMemPool */ -struct JASMemPool__template1 { - /* 802A1268 */ void func_802A1268(void* _this); -}; - struct JASGenericMemPool { /* 80290848 */ JASGenericMemPool(); /* 80290948 */ void alloc(u32); @@ -49,17 +29,8 @@ struct JASAramStream { struct JAIStreamMgr {}; -struct JAISoundActivity {}; - -template -struct JAISoundStrategyMgr {}; -/* JAISoundStrategyMgr */ -struct JAISoundStrategyMgr__template2 {}; - struct JAIAudience {}; -struct JAISoundID {}; - struct JAIStream { /* 802A3104 */ JAIStream(JAIStreamMgr*, JAISoundStrategyMgr*); /* 802A319C */ void JAIStreamMgr_startID_(JAISoundID, s32, JGeometry::TVec3 const*, @@ -74,14 +45,10 @@ struct JAIStream { /* 802A3948 */ s32 getNumChild() const; /* 802A3950 */ void getChild(int); /* 802A3A24 */ void releaseChild(int); - /* 802A3ABC */ bool getTrack(); - /* 802A3AC4 */ bool getChildTrack(int); - /* 802A3ACC */ void asStream(); - /* 802A3AD0 */ bool getTempoMgr(); -}; - -struct JAISoundParams { - /* 802A2280 */ void mixOutAll(JASSoundParams const&, JASSoundParams*, f32); + /* 802A3ABC */ JASTrack* getTrack(); + /* 802A3AC4 */ JASTrack* getChildTrack(int); + /* 802A3ACC */ JAIStream* asStream(); + /* 802A3AD0 */ JAITempoMgr* getTempoMgr(); }; struct JAISoundChild { @@ -89,16 +56,6 @@ struct JAISoundChild { /* 802A2B7C */ void calc(); }; -struct JAISound { - /* 802A22F8 */ JAISound(); - /* 802A2328 */ void start_JAISound_(JAISoundID, JGeometry::TVec3 const*, JAIAudience*); - /* 802A25D8 */ bool asSe(); - /* 802A25E0 */ bool asSeq(); - /* 802A25F0 */ void die_JAISound_(); - /* 802A266C */ void increasePrepareCount_JAISound_(); - /* 802A26B8 */ void calc_JAISound_(); -}; - // // Forward References: // @@ -333,21 +290,21 @@ asm void JAIStream::releaseChild(int param_0) { #pragma pop /* 802A3ABC-802A3AC4 29E3FC 0008+00 1/0 0/0 0/0 .text getTrack__9JAIStreamFv */ -bool JAIStream::getTrack() { - return false; +JASTrack* JAIStream::getTrack() { + return NULL; } /* 802A3AC4-802A3ACC 29E404 0008+00 1/0 0/0 0/0 .text getChildTrack__9JAIStreamFi */ -bool JAIStream::getChildTrack(int param_0) { - return false; +JASTrack* JAIStream::getChildTrack(int param_0) { + return NULL; } /* 802A3ACC-802A3AD0 29E40C 0004+00 1/0 0/0 0/0 .text asStream__9JAIStreamFv */ -void JAIStream::asStream() { - /* empty function */ +JAIStream* JAIStream::asStream() { + return this; } /* 802A3AD0-802A3AD8 29E410 0008+00 1/0 0/0 0/0 .text getTempoMgr__9JAIStreamFv */ -bool JAIStream::getTempoMgr() { - return false; +JAITempoMgr* JAIStream::getTempoMgr() { + return NULL; } diff --git a/libs/JSystem/JAudio2/JASHeapCtrl.cpp b/libs/JSystem/JAudio2/JASHeapCtrl.cpp index caeb493e464..fbaef9a02c3 100644 --- a/libs/JSystem/JAudio2/JASHeapCtrl.cpp +++ b/libs/JSystem/JAudio2/JASHeapCtrl.cpp @@ -11,18 +11,6 @@ // Types: // -struct JSUPtrLink { - /* 802DBDFC */ JSUPtrLink(void*); - /* 802DBE14 */ ~JSUPtrLink(); -}; - -struct JSUPtrList { - /* 802DBEAC */ ~JSUPtrList(); - /* 802DBF14 */ void initiate(); - /* 802DC094 */ void insert(JSUPtrLink*, JSUPtrLink*); - /* 802DC15C */ void remove(JSUPtrLink*); -}; - struct JKRSolidHeap {}; struct JKRHeap { @@ -50,19 +38,6 @@ struct JASDisposer { /* 80290BCC */ void onDispose(); }; -struct JASHeap { - /* 80290140 */ JASHeap(JASDisposer*); - /* 802901AC */ void initRootHeap(void*, u32); - /* 8029021C */ void alloc(JASHeap*, u32); - /* 802903F4 */ void 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(); -}; - // // Forward References: // @@ -109,9 +84,6 @@ extern "C" void __dt__10JSUPtrListFv(); extern "C" void initiate__10JSUPtrListFv(); extern "C" void insert__10JSUPtrListFP10JSUPtrLinkP10JSUPtrLink(); extern "C" void remove__10JSUPtrListFP10JSUPtrLink(); -extern "C" void OSInitMutex(); -extern "C" void OSLockMutex(); -extern "C" void OSUnlockMutex(); extern "C" void __register_global_object(); extern "C" void _savegpr_26(); extern "C" void _savegpr_27(); @@ -131,7 +103,7 @@ extern "C" u8 sSystemHeap__7JKRHeap[4]; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm JASHeap::JASHeap(JASDisposer* param_0) { +asm JASHeap::JASHeap(JASDisposer* param_0) : mTree(this) { nofralloc #include "asm/JSystem/JAudio2/JASHeapCtrl/__ct__7JASHeapFP11JASDisposer.s" } @@ -259,7 +231,7 @@ asm void JASGenericMemPool::newMemPool(u32 param_0, int param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void JASGenericMemPool::alloc(u32 param_0) { +asm void* JASGenericMemPool::alloc(u32 param_0) { nofralloc #include "asm/JSystem/JAudio2/JASHeapCtrl/alloc__17JASGenericMemPoolFUl.s" } diff --git a/libs/Z2AudioLib/Z2AudioMgr.cpp b/libs/Z2AudioLib/Z2AudioMgr.cpp index e953c601551..0a1606b0869 100644 --- a/libs/Z2AudioLib/Z2AudioMgr.cpp +++ b/libs/Z2AudioLib/Z2AudioMgr.cpp @@ -82,29 +82,10 @@ struct JASResArcLoader { /* 80290C04 */ void getResMaxSize(JKRArchive const*); }; -template -struct JASMemPool {}; -/* JASMemPool */ -struct JASMemPool__template4 { - /* 802AB200 */ void func_802AB200(void* _this); -}; - -/* JASMemPool */ -struct JASMemPool__template5 { - /* 802BD288 */ void func_802BD288(void* _this); -}; - struct JASKernel { /* 80290B08 */ void getAramHeap(); }; -struct JASHeap { - /* 8029021C */ void alloc(JASHeap*, u32); - /* 802904E4 */ void free(); - /* 80290B54 */ ~JASHeap(); - /* 802A4A5C */ void __defctor(); -}; - struct JASAramStream { static u8 sBlockSize[4]; }; diff --git a/libs/Z2AudioLib/Z2SceneMgr.cpp b/libs/Z2AudioLib/Z2SceneMgr.cpp index bad0c63461a..98d15480367 100644 --- a/libs/Z2AudioLib/Z2SceneMgr.cpp +++ b/libs/Z2AudioLib/Z2SceneMgr.cpp @@ -51,8 +51,6 @@ struct JAUSoundTable { /* 802A7160 */ void getTypeID(JAISoundID) const; }; -struct JASHeap {}; - struct JASWaveArc { /* 8029A4C0 */ void load(JASHeap*); /* 8029A580 */ void loadTail(JASHeap*); diff --git a/src/d/d_vib_pattern.cpp b/src/d/d_vib_pattern.cpp index 6d2a7986736..5babeb756d6 100644 --- a/src/d/d_vib_pattern.cpp +++ b/src/d/d_vib_pattern.cpp @@ -4,76 +4,64 @@ // #include "d/d_vib_pattern.h" -#include "dol2asm.h" +#include "d/d_vibration.h" #include "dolphin/types.h" -// -// Types: -// - -struct dVibration_c { - static u8 const MS_patt[88]; - static u8 const CS_patt[88]; - static u8 const MQ_patt[80]; - static u8 const CQ_patt[80]; -}; - -// -// Forward References: -// - -extern "C" u8 const MS_patt__12dVibration_c[88]; -extern "C" u8 const CS_patt__12dVibration_c[88]; -extern "C" u8 const MQ_patt__12dVibration_c[80]; -extern "C" u8 const CQ_patt__12dVibration_c[80]; - -// -// External References: -// - -// -// Declarations: -// - /* ############################################################################################## */ /* 8037A620-8037A678 006C80 0058+00 0/0 1/1 0/0 .rodata MS_patt__12dVibration_c */ -SECTION_RODATA u8 const dVibration_c::MS_patt[88] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xE8, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xF6, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, - 0xF6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xFB, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xC0, 0x00, 0x00, 0x00, +const dVibration_pattern dVibration_c::MS_patt[11] = { + {0x0000, 0x0000, 0x00000000}, + {0x0000, 0x0003, 0xC0000000}, + {0x0000, 0x0004, 0xE0000000}, + {0x0000, 0x0006, 0xE8000000}, + {0x0000, 0x0007, 0xEC000000}, + {0x0000, 0x0008, 0xF6000000}, + {0x0000, 0x0009, 0xFB000000}, + {0x0000, 0x000A, 0xF6800000}, + {0x0000, 0x000B, 0xFB400000}, + {0x0000, 0x0008, 0xC2000000}, + {0x0000, 0x0002, 0xC0000000}, }; -COMPILER_STRIP_GATE(0x8037A620, &dVibration_c::MS_patt); /* 8037A678-8037A6D0 006CD8 0058+00 0/0 1/1 0/0 .rodata CS_patt__12dVibration_c */ -SECTION_RODATA u8 const dVibration_c::CS_patt[88] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xE8, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xF6, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, - 0xF6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xFB, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xC0, 0x00, 0x00, 0x00, +const dVibration_pattern dVibration_c::CS_patt[11] = { + {0x0000, 0x0000, 0x00000000}, + {0x0000, 0x0003, 0xC0000000}, + {0x0000, 0x0004, 0xE0000000}, + {0x0000, 0x0006, 0xE8000000}, + {0x0000, 0x0007, 0xEC000000}, + {0x0000, 0x0008, 0xF6000000}, + {0x0000, 0x0009, 0xFB000000}, + {0x0000, 0x000A, 0xF6800000}, + {0x0000, 0x000B, 0xFB400000}, + {0x0000, 0x0008, 0xC2000000}, + {0x0000, 0x0002, 0xC0000000}, }; -COMPILER_STRIP_GATE(0x8037A678, &dVibration_c::CS_patt); /* 8037A6D0-8037A720 006D30 0050+00 0/0 1/1 0/0 .rodata MQ_patt__12dVibration_c */ -SECTION_RODATA u8 const dVibration_c::MQ_patt[80] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x10, 0x20, 0x20, 0x20, - 0x00, 0x01, 0x00, 0x20, 0x42, 0x10, 0x42, 0x08, 0x00, 0x02, 0x00, 0x20, 0x22, 0x22, 0x22, 0x22, - 0x00, 0x02, 0x00, 0x20, 0x22, 0x49, 0x22, 0x49, 0x00, 0x03, 0x00, 0x20, 0x52, 0x52, 0x52, 0x52, - 0x00, 0x03, 0x00, 0x20, 0x4A, 0x94, 0xAA, 0x95, 0x00, 0x04, 0x00, 0x20, 0x36, 0x55, 0x56, 0x55, - 0x00, 0x04, 0x00, 0x20, 0x6B, 0x6D, 0x6B, 0x6D, 0x00, 0x01, 0x00, 0x1B, 0x20, 0x20, 0x10, 0x00, +const dVibration_pattern dVibration_c::MQ_patt[10] = { + {0x0000, 0x0000, 0x00000000}, + {0x0001, 0x0020, 0x10202020}, + {0x0001, 0x0020, 0x42104208}, + {0x0002, 0x0020, 0x22222222}, + {0x0002, 0x0020, 0x22492249}, + {0x0003, 0x0020, 0x52525252}, + {0x0003, 0x0020, 0x4A94AA95}, + {0x0004, 0x0020, 0x36555655}, + {0x0004, 0x0020, 0x6B6D6B6D}, + {0x0001, 0x001B, 0x20201000}, }; -COMPILER_STRIP_GATE(0x8037A6D0, &dVibration_c::MQ_patt); /* 8037A720-8037A770 006D80 0050+00 0/0 1/1 0/0 .rodata CQ_patt__12dVibration_c */ -SECTION_RODATA u8 const dVibration_c::CQ_patt[80] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x10, 0x20, 0x20, 0x20, - 0x00, 0x01, 0x00, 0x20, 0x42, 0x10, 0x42, 0x08, 0x00, 0x02, 0x00, 0x20, 0x22, 0x22, 0x22, 0x22, - 0x00, 0x02, 0x00, 0x20, 0x22, 0x49, 0x22, 0x49, 0x00, 0x03, 0x00, 0x20, 0x52, 0x52, 0x52, 0x52, - 0x00, 0x03, 0x00, 0x20, 0x4A, 0x94, 0xAA, 0x95, 0x00, 0x04, 0x00, 0x20, 0x36, 0x55, 0x56, 0x55, - 0x00, 0x04, 0x00, 0x20, 0x6B, 0x6D, 0x6B, 0x6D, 0x00, 0x00, 0x00, 0x1B, 0x20, 0x20, 0x10, 0x00, +const dVibration_pattern dVibration_c::CQ_patt[10] = { + {0x0000, 0x0000, 0x00000000}, + {0x0001, 0x0020, 0x10202020}, + {0x0001, 0x0020, 0x42104208}, + {0x0002, 0x0020, 0x22222222}, + {0x0002, 0x0020, 0x22492249}, + {0x0003, 0x0020, 0x52525252}, + {0x0003, 0x0020, 0x4A94AA95}, + {0x0004, 0x0020, 0x36555655}, + {0x0004, 0x0020, 0x6B6D6B6D}, + {0x0000, 0x001B, 0x20201000}, }; -COMPILER_STRIP_GATE(0x8037A720, &dVibration_c::CQ_patt);