mirror of https://github.com/zeldaret/tp.git
JASSoundParams imported. Work on JASTaskThread (#1961)
This commit is contained in:
parent
69e9173e0f
commit
3625dae703
|
|
@ -1,61 +0,0 @@
|
|||
lbl_8029E3B0:
|
||||
/* 8029E3B0 C0 23 00 00 */ lfs f1, 0(r3)
|
||||
/* 8029E3B4 C0 02 BD 60 */ lfs f0, lit_299(r2)
|
||||
/* 8029E3B8 FC 01 00 40 */ fcmpo cr0, f1, f0
|
||||
/* 8029E3BC 40 80 00 0C */ bge lbl_8029E3C8
|
||||
/* 8029E3C0 D0 03 00 00 */ stfs f0, 0(r3)
|
||||
/* 8029E3C4 48 00 00 14 */ b lbl_8029E3D8
|
||||
lbl_8029E3C8:
|
||||
/* 8029E3C8 C0 02 BD 64 */ lfs f0, lit_300(r2)
|
||||
/* 8029E3CC FC 01 00 40 */ fcmpo cr0, f1, f0
|
||||
/* 8029E3D0 40 81 00 08 */ ble lbl_8029E3D8
|
||||
/* 8029E3D4 D0 03 00 00 */ stfs f0, 0(r3)
|
||||
lbl_8029E3D8:
|
||||
/* 8029E3D8 C0 23 00 08 */ lfs f1, 8(r3)
|
||||
/* 8029E3DC C0 02 BD 60 */ lfs f0, lit_299(r2)
|
||||
/* 8029E3E0 FC 01 00 40 */ fcmpo cr0, f1, f0
|
||||
/* 8029E3E4 40 80 00 0C */ bge lbl_8029E3F0
|
||||
/* 8029E3E8 D0 03 00 08 */ stfs f0, 8(r3)
|
||||
/* 8029E3EC 48 00 00 14 */ b lbl_8029E400
|
||||
lbl_8029E3F0:
|
||||
/* 8029E3F0 C0 02 BD 68 */ lfs f0, lit_301(r2)
|
||||
/* 8029E3F4 FC 01 00 40 */ fcmpo cr0, f1, f0
|
||||
/* 8029E3F8 40 81 00 08 */ ble lbl_8029E400
|
||||
/* 8029E3FC D0 03 00 08 */ stfs f0, 8(r3)
|
||||
lbl_8029E400:
|
||||
/* 8029E400 C0 23 00 04 */ lfs f1, 4(r3)
|
||||
/* 8029E404 C0 02 BD 60 */ lfs f0, lit_299(r2)
|
||||
/* 8029E408 FC 01 00 40 */ fcmpo cr0, f1, f0
|
||||
/* 8029E40C 40 80 00 0C */ bge lbl_8029E418
|
||||
/* 8029E410 D0 03 00 04 */ stfs f0, 4(r3)
|
||||
/* 8029E414 48 00 00 14 */ b lbl_8029E428
|
||||
lbl_8029E418:
|
||||
/* 8029E418 C0 02 BD 64 */ lfs f0, lit_300(r2)
|
||||
/* 8029E41C FC 01 00 40 */ fcmpo cr0, f1, f0
|
||||
/* 8029E420 40 81 00 08 */ ble lbl_8029E428
|
||||
/* 8029E424 D0 03 00 04 */ stfs f0, 4(r3)
|
||||
lbl_8029E428:
|
||||
/* 8029E428 C0 23 00 0C */ lfs f1, 0xc(r3)
|
||||
/* 8029E42C C0 02 BD 60 */ lfs f0, lit_299(r2)
|
||||
/* 8029E430 FC 01 00 40 */ fcmpo cr0, f1, f0
|
||||
/* 8029E434 40 80 00 0C */ bge lbl_8029E440
|
||||
/* 8029E438 D0 03 00 0C */ stfs f0, 0xc(r3)
|
||||
/* 8029E43C 48 00 00 14 */ b lbl_8029E450
|
||||
lbl_8029E440:
|
||||
/* 8029E440 C0 02 BD 64 */ lfs f0, lit_300(r2)
|
||||
/* 8029E444 FC 01 00 40 */ fcmpo cr0, f1, f0
|
||||
/* 8029E448 40 81 00 08 */ ble lbl_8029E450
|
||||
/* 8029E44C D0 03 00 0C */ stfs f0, 0xc(r3)
|
||||
lbl_8029E450:
|
||||
/* 8029E450 C0 23 00 10 */ lfs f1, 0x10(r3)
|
||||
/* 8029E454 C0 02 BD 60 */ lfs f0, lit_299(r2)
|
||||
/* 8029E458 FC 01 00 40 */ fcmpo cr0, f1, f0
|
||||
/* 8029E45C 40 80 00 0C */ bge lbl_8029E468
|
||||
/* 8029E460 D0 03 00 10 */ stfs f0, 0x10(r3)
|
||||
/* 8029E464 4E 80 00 20 */ blr
|
||||
lbl_8029E468:
|
||||
/* 8029E468 C0 02 BD 64 */ lfs f0, lit_300(r2)
|
||||
/* 8029E46C FC 01 00 40 */ fcmpo cr0, f1, f0
|
||||
/* 8029E470 4C 81 00 20 */ blelr
|
||||
/* 8029E474 D0 03 00 10 */ stfs f0, 0x10(r3)
|
||||
/* 8029E478 4E 80 00 20 */ blr
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
lbl_8029E47C:
|
||||
/* 8029E47C C0 24 00 00 */ lfs f1, 0(r4)
|
||||
/* 8029E480 C0 05 00 00 */ lfs f0, 0(r5)
|
||||
/* 8029E484 EC 01 00 32 */ fmuls f0, f1, f0
|
||||
/* 8029E488 D0 03 00 00 */ stfs f0, 0(r3)
|
||||
/* 8029E48C C0 24 00 08 */ lfs f1, 8(r4)
|
||||
/* 8029E490 C0 05 00 08 */ lfs f0, 8(r5)
|
||||
/* 8029E494 EC 01 00 32 */ fmuls f0, f1, f0
|
||||
/* 8029E498 D0 03 00 08 */ stfs f0, 8(r3)
|
||||
/* 8029E49C C0 24 00 04 */ lfs f1, 4(r4)
|
||||
/* 8029E4A0 C0 05 00 04 */ lfs f0, 4(r5)
|
||||
/* 8029E4A4 EC 01 00 2A */ fadds f0, f1, f0
|
||||
/* 8029E4A8 D0 03 00 04 */ stfs f0, 4(r3)
|
||||
/* 8029E4AC C0 24 00 0C */ lfs f1, 0xc(r4)
|
||||
/* 8029E4B0 C0 05 00 0C */ lfs f0, 0xc(r5)
|
||||
/* 8029E4B4 EC 21 00 2A */ fadds f1, f1, f0
|
||||
/* 8029E4B8 C0 02 BD 6C */ lfs f0, lit_311(r2)
|
||||
/* 8029E4BC EC 01 00 28 */ fsubs f0, f1, f0
|
||||
/* 8029E4C0 D0 03 00 0C */ stfs f0, 0xc(r3)
|
||||
/* 8029E4C4 C0 24 00 10 */ lfs f1, 0x10(r4)
|
||||
/* 8029E4C8 C0 05 00 10 */ lfs f0, 0x10(r5)
|
||||
/* 8029E4CC EC 01 00 2A */ fadds f0, f1, f0
|
||||
/* 8029E4D0 D0 03 00 10 */ stfs f0, 0x10(r3)
|
||||
/* 8029E4D4 4E 80 00 20 */ blr
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
lbl_8028F6C4:
|
||||
/* 8028F6C4 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 8028F6C8 7C 08 02 A6 */ mflr r0
|
||||
/* 8028F6CC 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 8028F6D0 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 8028F6D4 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 8028F6D8 7C 87 23 78 */ mr r7, r4
|
||||
/* 8028F6DC 7C A0 2B 78 */ mr r0, r5
|
||||
/* 8028F6E0 80 8D 8C 90 */ lwz r4, JASDram(r13)
|
||||
/* 8028F6E4 7C C5 33 78 */ mr r5, r6
|
||||
/* 8028F6E8 7C 06 03 78 */ mr r6, r0
|
||||
/* 8028F6EC 48 04 1F 25 */ bl __ct__9JKRThreadFP7JKRHeapUlii
|
||||
/* 8028F6F0 3C 60 80 3C */ lis r3, __vt__13JASTaskThread@ha /* 0x803C5B58@ha */
|
||||
/* 8028F6F4 38 03 5B 58 */ addi r0, r3, __vt__13JASTaskThread@l /* 0x803C5B58@l */
|
||||
/* 8028F6F8 90 1F 00 00 */ stw r0, 0(r31)
|
||||
/* 8028F6FC 38 00 00 00 */ li r0, 0
|
||||
/* 8028F700 98 1F 00 84 */ stb r0, 0x84(r31)
|
||||
/* 8028F704 38 7F 00 7C */ addi r3, r31, 0x7c
|
||||
/* 8028F708 48 0B 15 6D */ bl OSInitThreadQueue
|
||||
/* 8028F70C 7F E3 FB 78 */ mr r3, r31
|
||||
/* 8028F710 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 8028F714 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 8028F718 7C 08 03 A6 */ mtlr r0
|
||||
/* 8028F71C 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 8028F720 4E 80 00 20 */ blr
|
||||
|
|
@ -1,115 +0,0 @@
|
|||
lbl_8028F850:
|
||||
/* 8028F850 94 21 FF D0 */ stwu r1, -0x30(r1)
|
||||
/* 8028F854 7C 08 02 A6 */ mflr r0
|
||||
/* 8028F858 90 01 00 34 */ stw r0, 0x34(r1)
|
||||
/* 8028F85C 39 61 00 30 */ addi r11, r1, 0x30
|
||||
/* 8028F860 48 0D 29 71 */ bl _savegpr_26
|
||||
/* 8028F864 7C 9C 23 78 */ mr r28, r4
|
||||
/* 8028F868 7C BD 2B 78 */ mr r29, r5
|
||||
/* 8028F86C 7C DE 33 78 */ mr r30, r6
|
||||
/* 8028F870 3B FE 00 08 */ addi r31, r30, 8
|
||||
/* 8028F874 48 00 12 55 */ bl getCommandHeap__9JASKernelFv
|
||||
/* 8028F878 7C 7B 1B 78 */ mr r27, r3
|
||||
/* 8028F87C 93 61 00 08 */ stw r27, 8(r1)
|
||||
/* 8028F880 48 0A F7 C1 */ bl OSLockMutex
|
||||
/* 8028F884 83 5B 00 18 */ lwz r26, 0x18(r27)
|
||||
/* 8028F888 80 1A 00 04 */ lwz r0, 4(r26)
|
||||
/* 8028F88C 20 00 04 00 */ subfic r0, r0, 0x400
|
||||
/* 8028F890 7C 00 F8 40 */ cmplw r0, r31
|
||||
/* 8028F894 40 80 00 E4 */ bge lbl_8028F978
|
||||
/* 8028F898 28 1F 04 00 */ cmplwi r31, 0x400
|
||||
/* 8028F89C 40 81 00 14 */ ble lbl_8028F8B0
|
||||
/* 8028F8A0 7F 63 DB 78 */ mr r3, r27
|
||||
/* 8028F8A4 48 0A F8 79 */ bl OSUnlockMutex
|
||||
/* 8028F8A8 3B 60 00 00 */ li r27, 0
|
||||
/* 8028F8AC 48 00 00 F8 */ b lbl_8028F9A4
|
||||
lbl_8028F8B0:
|
||||
/* 8028F8B0 28 1A 00 00 */ cmplwi r26, 0
|
||||
/* 8028F8B4 41 82 00 20 */ beq lbl_8028F8D4
|
||||
/* 8028F8B8 80 1A 00 08 */ lwz r0, 8(r26)
|
||||
/* 8028F8BC 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8028F8C0 40 82 00 14 */ bne lbl_8028F8D4
|
||||
/* 8028F8C4 38 00 00 00 */ li r0, 0
|
||||
/* 8028F8C8 90 1A 00 04 */ stw r0, 4(r26)
|
||||
/* 8028F8CC 38 00 00 01 */ li r0, 1
|
||||
/* 8028F8D0 48 00 00 90 */ b lbl_8028F960
|
||||
lbl_8028F8D4:
|
||||
/* 8028F8D4 48 00 11 ED */ bl getSystemHeap__9JASKernelFv
|
||||
/* 8028F8D8 7C 64 1B 78 */ mr r4, r3
|
||||
/* 8028F8DC 38 60 04 0C */ li r3, 0x40c
|
||||
/* 8028F8E0 38 A0 00 00 */ li r5, 0
|
||||
/* 8028F8E4 48 03 F3 B5 */ bl __nw__FUlP7JKRHeapi
|
||||
/* 8028F8E8 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 8028F8EC 41 82 00 14 */ beq lbl_8028F900
|
||||
/* 8028F8F0 93 43 00 00 */ stw r26, 0(r3)
|
||||
/* 8028F8F4 38 00 00 00 */ li r0, 0
|
||||
/* 8028F8F8 90 03 00 04 */ stw r0, 4(r3)
|
||||
/* 8028F8FC 90 03 00 08 */ stw r0, 8(r3)
|
||||
lbl_8028F900:
|
||||
/* 8028F900 90 7B 00 18 */ stw r3, 0x18(r27)
|
||||
/* 8028F904 80 1B 00 18 */ lwz r0, 0x18(r27)
|
||||
/* 8028F908 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8028F90C 41 82 00 0C */ beq lbl_8028F918
|
||||
/* 8028F910 38 00 00 01 */ li r0, 1
|
||||
/* 8028F914 48 00 00 4C */ b lbl_8028F960
|
||||
lbl_8028F918:
|
||||
/* 8028F918 38 60 04 0C */ li r3, 0x40c
|
||||
/* 8028F91C 80 8D 8D F0 */ lwz r4, sSystemHeap__7JKRHeap(r13)
|
||||
/* 8028F920 38 A0 00 00 */ li r5, 0
|
||||
/* 8028F924 48 03 F3 75 */ bl __nw__FUlP7JKRHeapi
|
||||
/* 8028F928 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 8028F92C 41 82 00 14 */ beq lbl_8028F940
|
||||
/* 8028F930 93 43 00 00 */ stw r26, 0(r3)
|
||||
/* 8028F934 38 00 00 00 */ li r0, 0
|
||||
/* 8028F938 90 03 00 04 */ stw r0, 4(r3)
|
||||
/* 8028F93C 90 03 00 08 */ stw r0, 8(r3)
|
||||
lbl_8028F940:
|
||||
/* 8028F940 90 7B 00 18 */ stw r3, 0x18(r27)
|
||||
/* 8028F944 80 1B 00 18 */ lwz r0, 0x18(r27)
|
||||
/* 8028F948 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8028F94C 41 82 00 0C */ beq lbl_8028F958
|
||||
/* 8028F950 38 00 00 01 */ li r0, 1
|
||||
/* 8028F954 48 00 00 0C */ b lbl_8028F960
|
||||
lbl_8028F958:
|
||||
/* 8028F958 93 5B 00 18 */ stw r26, 0x18(r27)
|
||||
/* 8028F95C 38 00 00 00 */ li r0, 0
|
||||
lbl_8028F960:
|
||||
/* 8028F960 54 00 06 3F */ clrlwi. r0, r0, 0x18
|
||||
/* 8028F964 40 82 00 14 */ bne lbl_8028F978
|
||||
/* 8028F968 80 61 00 08 */ lwz r3, 8(r1)
|
||||
/* 8028F96C 48 0A F7 B1 */ bl OSUnlockMutex
|
||||
/* 8028F970 3B 60 00 00 */ li r27, 0
|
||||
/* 8028F974 48 00 00 30 */ b lbl_8028F9A4
|
||||
lbl_8028F978:
|
||||
/* 8028F978 80 9B 00 18 */ lwz r4, 0x18(r27)
|
||||
/* 8028F97C 80 64 00 04 */ lwz r3, 4(r4)
|
||||
/* 8028F980 3B 63 00 0C */ addi r27, r3, 0xc
|
||||
/* 8028F984 7F 64 DA 14 */ add r27, r4, r27
|
||||
/* 8028F988 7C 03 FA 14 */ add r0, r3, r31
|
||||
/* 8028F98C 90 04 00 04 */ stw r0, 4(r4)
|
||||
/* 8028F990 80 64 00 08 */ lwz r3, 8(r4)
|
||||
/* 8028F994 38 03 00 01 */ addi r0, r3, 1
|
||||
/* 8028F998 90 04 00 08 */ stw r0, 8(r4)
|
||||
/* 8028F99C 80 61 00 08 */ lwz r3, 8(r1)
|
||||
/* 8028F9A0 48 0A F7 7D */ bl OSUnlockMutex
|
||||
lbl_8028F9A4:
|
||||
/* 8028F9A4 28 1B 00 00 */ cmplwi r27, 0
|
||||
/* 8028F9A8 40 82 00 0C */ bne lbl_8028F9B4
|
||||
/* 8028F9AC 38 60 00 00 */ li r3, 0
|
||||
/* 8028F9B0 48 00 00 24 */ b lbl_8028F9D4
|
||||
lbl_8028F9B4:
|
||||
/* 8028F9B4 38 00 00 01 */ li r0, 1
|
||||
/* 8028F9B8 90 1B 00 04 */ stw r0, 4(r27)
|
||||
/* 8028F9BC 7F A3 EB 78 */ mr r3, r29
|
||||
/* 8028F9C0 38 9B 00 08 */ addi r4, r27, 8
|
||||
/* 8028F9C4 7F C5 F3 78 */ mr r5, r30
|
||||
/* 8028F9C8 4B FF F9 8D */ bl bcopy__7JASCalcFPCvPvUl
|
||||
/* 8028F9CC 93 9B 00 00 */ stw r28, 0(r27)
|
||||
/* 8028F9D0 7F 63 DB 78 */ mr r3, r27
|
||||
lbl_8028F9D4:
|
||||
/* 8028F9D4 39 61 00 30 */ addi r11, r1, 0x30
|
||||
/* 8028F9D8 48 0D 28 45 */ bl _restgpr_26
|
||||
/* 8028F9DC 80 01 00 34 */ lwz r0, 0x34(r1)
|
||||
/* 8028F9E0 7C 08 03 A6 */ mtlr r0
|
||||
/* 8028F9E4 38 21 00 30 */ addi r1, r1, 0x30
|
||||
/* 8028F9E8 4E 80 00 20 */ blr
|
||||
|
|
@ -1,103 +0,0 @@
|
|||
lbl_8028F9EC:
|
||||
/* 8028F9EC 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 8028F9F0 7C 08 02 A6 */ mflr r0
|
||||
/* 8028F9F4 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 8028F9F8 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 8028F9FC 48 0D 27 DD */ bl _savegpr_28
|
||||
/* 8028FA00 7C 9E 23 78 */ mr r30, r4
|
||||
/* 8028FA04 7C BF 2B 78 */ mr r31, r5
|
||||
/* 8028FA08 48 00 10 C1 */ bl getCommandHeap__9JASKernelFv
|
||||
/* 8028FA0C 7C 7D 1B 78 */ mr r29, r3
|
||||
/* 8028FA10 93 A1 00 08 */ stw r29, 8(r1)
|
||||
/* 8028FA14 48 0A F6 2D */ bl OSLockMutex
|
||||
/* 8028FA18 83 9D 00 18 */ lwz r28, 0x18(r29)
|
||||
/* 8028FA1C 80 1C 00 04 */ lwz r0, 4(r28)
|
||||
/* 8028FA20 20 00 04 00 */ subfic r0, r0, 0x400
|
||||
/* 8028FA24 28 00 00 0C */ cmplwi r0, 0xc
|
||||
/* 8028FA28 40 80 00 CC */ bge lbl_8028FAF4
|
||||
/* 8028FA2C 28 1C 00 00 */ cmplwi r28, 0
|
||||
/* 8028FA30 41 82 00 20 */ beq lbl_8028FA50
|
||||
/* 8028FA34 80 1C 00 08 */ lwz r0, 8(r28)
|
||||
/* 8028FA38 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8028FA3C 40 82 00 14 */ bne lbl_8028FA50
|
||||
/* 8028FA40 38 00 00 00 */ li r0, 0
|
||||
/* 8028FA44 90 1C 00 04 */ stw r0, 4(r28)
|
||||
/* 8028FA48 38 00 00 01 */ li r0, 1
|
||||
/* 8028FA4C 48 00 00 90 */ b lbl_8028FADC
|
||||
lbl_8028FA50:
|
||||
/* 8028FA50 48 00 10 71 */ bl getSystemHeap__9JASKernelFv
|
||||
/* 8028FA54 7C 64 1B 78 */ mr r4, r3
|
||||
/* 8028FA58 38 60 04 0C */ li r3, 0x40c
|
||||
/* 8028FA5C 38 A0 00 00 */ li r5, 0
|
||||
/* 8028FA60 48 03 F2 39 */ bl __nw__FUlP7JKRHeapi
|
||||
/* 8028FA64 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 8028FA68 41 82 00 14 */ beq lbl_8028FA7C
|
||||
/* 8028FA6C 93 83 00 00 */ stw r28, 0(r3)
|
||||
/* 8028FA70 38 00 00 00 */ li r0, 0
|
||||
/* 8028FA74 90 03 00 04 */ stw r0, 4(r3)
|
||||
/* 8028FA78 90 03 00 08 */ stw r0, 8(r3)
|
||||
lbl_8028FA7C:
|
||||
/* 8028FA7C 90 7D 00 18 */ stw r3, 0x18(r29)
|
||||
/* 8028FA80 80 1D 00 18 */ lwz r0, 0x18(r29)
|
||||
/* 8028FA84 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8028FA88 41 82 00 0C */ beq lbl_8028FA94
|
||||
/* 8028FA8C 38 00 00 01 */ li r0, 1
|
||||
/* 8028FA90 48 00 00 4C */ b lbl_8028FADC
|
||||
lbl_8028FA94:
|
||||
/* 8028FA94 38 60 04 0C */ li r3, 0x40c
|
||||
/* 8028FA98 80 8D 8D F0 */ lwz r4, sSystemHeap__7JKRHeap(r13)
|
||||
/* 8028FA9C 38 A0 00 00 */ li r5, 0
|
||||
/* 8028FAA0 48 03 F1 F9 */ bl __nw__FUlP7JKRHeapi
|
||||
/* 8028FAA4 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 8028FAA8 41 82 00 14 */ beq lbl_8028FABC
|
||||
/* 8028FAAC 93 83 00 00 */ stw r28, 0(r3)
|
||||
/* 8028FAB0 38 00 00 00 */ li r0, 0
|
||||
/* 8028FAB4 90 03 00 04 */ stw r0, 4(r3)
|
||||
/* 8028FAB8 90 03 00 08 */ stw r0, 8(r3)
|
||||
lbl_8028FABC:
|
||||
/* 8028FABC 90 7D 00 18 */ stw r3, 0x18(r29)
|
||||
/* 8028FAC0 80 1D 00 18 */ lwz r0, 0x18(r29)
|
||||
/* 8028FAC4 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8028FAC8 41 82 00 0C */ beq lbl_8028FAD4
|
||||
/* 8028FACC 38 00 00 01 */ li r0, 1
|
||||
/* 8028FAD0 48 00 00 0C */ b lbl_8028FADC
|
||||
lbl_8028FAD4:
|
||||
/* 8028FAD4 93 9D 00 18 */ stw r28, 0x18(r29)
|
||||
/* 8028FAD8 38 00 00 00 */ li r0, 0
|
||||
lbl_8028FADC:
|
||||
/* 8028FADC 54 00 06 3F */ clrlwi. r0, r0, 0x18
|
||||
/* 8028FAE0 40 82 00 14 */ bne lbl_8028FAF4
|
||||
/* 8028FAE4 80 61 00 08 */ lwz r3, 8(r1)
|
||||
/* 8028FAE8 48 0A F6 35 */ bl OSUnlockMutex
|
||||
/* 8028FAEC 3B A0 00 00 */ li r29, 0
|
||||
/* 8028FAF0 48 00 00 30 */ b lbl_8028FB20
|
||||
lbl_8028FAF4:
|
||||
/* 8028FAF4 80 9D 00 18 */ lwz r4, 0x18(r29)
|
||||
/* 8028FAF8 80 64 00 04 */ lwz r3, 4(r4)
|
||||
/* 8028FAFC 3B A3 00 0C */ addi r29, r3, 0xc
|
||||
/* 8028FB00 7F A4 EA 14 */ add r29, r4, r29
|
||||
/* 8028FB04 38 03 00 0C */ addi r0, r3, 0xc
|
||||
/* 8028FB08 90 04 00 04 */ stw r0, 4(r4)
|
||||
/* 8028FB0C 80 64 00 08 */ lwz r3, 8(r4)
|
||||
/* 8028FB10 38 03 00 01 */ addi r0, r3, 1
|
||||
/* 8028FB14 90 04 00 08 */ stw r0, 8(r4)
|
||||
/* 8028FB18 80 61 00 08 */ lwz r3, 8(r1)
|
||||
/* 8028FB1C 48 0A F6 01 */ bl OSUnlockMutex
|
||||
lbl_8028FB20:
|
||||
/* 8028FB20 28 1D 00 00 */ cmplwi r29, 0
|
||||
/* 8028FB24 40 82 00 0C */ bne lbl_8028FB30
|
||||
/* 8028FB28 38 60 00 00 */ li r3, 0
|
||||
/* 8028FB2C 48 00 00 18 */ b lbl_8028FB44
|
||||
lbl_8028FB30:
|
||||
/* 8028FB30 38 00 00 00 */ li r0, 0
|
||||
/* 8028FB34 90 1D 00 04 */ stw r0, 4(r29)
|
||||
/* 8028FB38 93 FD 00 08 */ stw r31, 8(r29)
|
||||
/* 8028FB3C 93 DD 00 00 */ stw r30, 0(r29)
|
||||
/* 8028FB40 7F A3 EB 78 */ mr r3, r29
|
||||
lbl_8028FB44:
|
||||
/* 8028FB44 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 8028FB48 48 0D 26 DD */ bl _restgpr_28
|
||||
/* 8028FB4C 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 8028FB50 7C 08 03 A6 */ mtlr r0
|
||||
/* 8028FB54 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 8028FB58 4E 80 00 20 */ blr
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
lbl_8028FE88:
|
||||
/* 8028FE88 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 8028FE8C 7C 08 02 A6 */ mflr r0
|
||||
/* 8028FE90 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 8028FE94 93 E1 00 1C */ stw r31, 0x1c(r1)
|
||||
/* 8028FE98 93 C1 00 18 */ stw r30, 0x18(r1)
|
||||
/* 8028FE9C 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 8028FEA0 7C 9F 23 78 */ mr r31, r4
|
||||
/* 8028FEA4 48 0A D8 51 */ bl OSDisableInterrupts
|
||||
/* 8028FEA8 90 61 00 08 */ stw r3, 8(r1)
|
||||
/* 8028FEAC 57 E0 06 3F */ clrlwi. r0, r31, 0x18
|
||||
/* 8028FEB0 41 82 00 10 */ beq lbl_8028FEC0
|
||||
/* 8028FEB4 38 00 00 01 */ li r0, 1
|
||||
/* 8028FEB8 98 1E 00 84 */ stb r0, 0x84(r30)
|
||||
/* 8028FEBC 48 00 00 20 */ b lbl_8028FEDC
|
||||
lbl_8028FEC0:
|
||||
/* 8028FEC0 88 1E 00 84 */ lbz r0, 0x84(r30)
|
||||
/* 8028FEC4 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8028FEC8 41 82 00 0C */ beq lbl_8028FED4
|
||||
/* 8028FECC 38 7E 00 7C */ addi r3, r30, 0x7c
|
||||
/* 8028FED0 48 0B 1D C9 */ bl OSWakeupThread
|
||||
lbl_8028FED4:
|
||||
/* 8028FED4 38 00 00 00 */ li r0, 0
|
||||
/* 8028FED8 98 1E 00 84 */ stb r0, 0x84(r30)
|
||||
lbl_8028FEDC:
|
||||
/* 8028FEDC 80 61 00 08 */ lwz r3, 8(r1)
|
||||
/* 8028FEE0 48 0A D8 3D */ bl OSRestoreInterrupts
|
||||
/* 8028FEE4 83 E1 00 1C */ lwz r31, 0x1c(r1)
|
||||
/* 8028FEE8 83 C1 00 18 */ lwz r30, 0x18(r1)
|
||||
/* 8028FEEC 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 8028FEF0 7C 08 03 A6 */ mtlr r0
|
||||
/* 8028FEF4 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 8028FEF8 4E 80 00 20 */ blr
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
lbl_8028FB5C:
|
||||
/* 8028FB5C 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 8028FB60 7C 08 02 A6 */ mflr r0
|
||||
/* 8028FB64 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 8028FB68 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 8028FB6C 48 0D 26 6D */ bl _savegpr_28
|
||||
/* 8028FB70 7C 7D 1B 78 */ mr r29, r3
|
||||
/* 8028FB74 4B FF FC DD */ bl allocCallStack__13JASTaskThreadFPFPv_vPCvUl
|
||||
/* 8028FB78 7C 7C 1B 79 */ or. r28, r3, r3
|
||||
/* 8028FB7C 40 82 00 0C */ bne lbl_8028FB88
|
||||
/* 8028FB80 38 60 00 00 */ li r3, 0
|
||||
/* 8028FB84 48 00 00 B8 */ b lbl_8028FC3C
|
||||
lbl_8028FB88:
|
||||
/* 8028FB88 38 7D 00 30 */ addi r3, r29, 0x30
|
||||
/* 8028FB8C 7F 84 E3 78 */ mr r4, r28
|
||||
/* 8028FB90 38 A0 00 00 */ li r5, 0
|
||||
/* 8028FB94 48 0A EE 61 */ bl OSSendMessage
|
||||
/* 8028FB98 7C 7D 1B 79 */ or. r29, r3, r3
|
||||
/* 8028FB9C 40 82 00 9C */ bne lbl_8028FC38
|
||||
/* 8028FBA0 48 00 0F 29 */ bl getCommandHeap__9JASKernelFv
|
||||
/* 8028FBA4 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 8028FBA8 93 E1 00 08 */ stw r31, 8(r1)
|
||||
/* 8028FBAC 48 0A F4 95 */ bl OSLockMutex
|
||||
/* 8028FBB0 80 7F 00 18 */ lwz r3, 0x18(r31)
|
||||
/* 8028FBB4 3B C0 00 00 */ li r30, 0
|
||||
/* 8028FBB8 48 00 00 70 */ b lbl_8028FC28
|
||||
lbl_8028FBBC:
|
||||
/* 8028FBBC 38 80 00 00 */ li r4, 0
|
||||
/* 8028FBC0 38 03 00 0C */ addi r0, r3, 0xc
|
||||
/* 8028FBC4 7C 00 E0 40 */ cmplw r0, r28
|
||||
/* 8028FBC8 41 81 00 14 */ bgt lbl_8028FBDC
|
||||
/* 8028FBCC 38 03 04 0C */ addi r0, r3, 0x40c
|
||||
/* 8028FBD0 7C 1C 00 40 */ cmplw r28, r0
|
||||
/* 8028FBD4 40 80 00 08 */ bge lbl_8028FBDC
|
||||
/* 8028FBD8 38 80 00 01 */ li r4, 1
|
||||
lbl_8028FBDC:
|
||||
/* 8028FBDC 54 80 06 3F */ clrlwi. r0, r4, 0x18
|
||||
/* 8028FBE0 41 82 00 40 */ beq lbl_8028FC20
|
||||
/* 8028FBE4 80 83 00 08 */ lwz r4, 8(r3)
|
||||
/* 8028FBE8 38 04 FF FF */ addi r0, r4, -1
|
||||
/* 8028FBEC 90 03 00 08 */ stw r0, 8(r3)
|
||||
/* 8028FBF0 80 1F 00 18 */ lwz r0, 0x18(r31)
|
||||
/* 8028FBF4 7C 03 00 40 */ cmplw r3, r0
|
||||
/* 8028FBF8 41 82 00 1C */ beq lbl_8028FC14
|
||||
/* 8028FBFC 80 03 00 08 */ lwz r0, 8(r3)
|
||||
/* 8028FC00 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8028FC04 40 82 00 10 */ bne lbl_8028FC14
|
||||
/* 8028FC08 83 E3 00 00 */ lwz r31, 0(r3)
|
||||
/* 8028FC0C 48 03 F1 31 */ bl __dl__FPv
|
||||
/* 8028FC10 93 FE 00 00 */ stw r31, 0(r30)
|
||||
lbl_8028FC14:
|
||||
/* 8028FC14 80 61 00 08 */ lwz r3, 8(r1)
|
||||
/* 8028FC18 48 0A F5 05 */ bl OSUnlockMutex
|
||||
/* 8028FC1C 48 00 00 1C */ b lbl_8028FC38
|
||||
lbl_8028FC20:
|
||||
/* 8028FC20 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 8028FC24 80 63 00 00 */ lwz r3, 0(r3)
|
||||
lbl_8028FC28:
|
||||
/* 8028FC28 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 8028FC2C 40 82 FF 90 */ bne lbl_8028FBBC
|
||||
/* 8028FC30 80 61 00 08 */ lwz r3, 8(r1)
|
||||
/* 8028FC34 48 0A F4 E9 */ bl OSUnlockMutex
|
||||
lbl_8028FC38:
|
||||
/* 8028FC38 7F A3 EB 78 */ mr r3, r29
|
||||
lbl_8028FC3C:
|
||||
/* 8028FC3C 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 8028FC40 48 0D 25 E5 */ bl _restgpr_28
|
||||
/* 8028FC44 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 8028FC48 7C 08 03 A6 */ mtlr r0
|
||||
/* 8028FC4C 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 8028FC50 4E 80 00 20 */ blr
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
lbl_8028FC54:
|
||||
/* 8028FC54 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 8028FC58 7C 08 02 A6 */ mflr r0
|
||||
/* 8028FC5C 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 8028FC60 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 8028FC64 48 0D 25 75 */ bl _savegpr_28
|
||||
/* 8028FC68 7C 7D 1B 78 */ mr r29, r3
|
||||
/* 8028FC6C 4B FF FD 81 */ bl allocCallStack__13JASTaskThreadFPFPv_vPv
|
||||
/* 8028FC70 7C 7C 1B 79 */ or. r28, r3, r3
|
||||
/* 8028FC74 40 82 00 0C */ bne lbl_8028FC80
|
||||
/* 8028FC78 38 60 00 00 */ li r3, 0
|
||||
/* 8028FC7C 48 00 00 B8 */ b lbl_8028FD34
|
||||
lbl_8028FC80:
|
||||
/* 8028FC80 38 7D 00 30 */ addi r3, r29, 0x30
|
||||
/* 8028FC84 7F 84 E3 78 */ mr r4, r28
|
||||
/* 8028FC88 38 A0 00 00 */ li r5, 0
|
||||
/* 8028FC8C 48 0A ED 69 */ bl OSSendMessage
|
||||
/* 8028FC90 7C 7D 1B 79 */ or. r29, r3, r3
|
||||
/* 8028FC94 40 82 00 9C */ bne lbl_8028FD30
|
||||
/* 8028FC98 48 00 0E 31 */ bl getCommandHeap__9JASKernelFv
|
||||
/* 8028FC9C 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 8028FCA0 93 E1 00 08 */ stw r31, 8(r1)
|
||||
/* 8028FCA4 48 0A F3 9D */ bl OSLockMutex
|
||||
/* 8028FCA8 80 7F 00 18 */ lwz r3, 0x18(r31)
|
||||
/* 8028FCAC 3B C0 00 00 */ li r30, 0
|
||||
/* 8028FCB0 48 00 00 70 */ b lbl_8028FD20
|
||||
lbl_8028FCB4:
|
||||
/* 8028FCB4 38 80 00 00 */ li r4, 0
|
||||
/* 8028FCB8 38 03 00 0C */ addi r0, r3, 0xc
|
||||
/* 8028FCBC 7C 00 E0 40 */ cmplw r0, r28
|
||||
/* 8028FCC0 41 81 00 14 */ bgt lbl_8028FCD4
|
||||
/* 8028FCC4 38 03 04 0C */ addi r0, r3, 0x40c
|
||||
/* 8028FCC8 7C 1C 00 40 */ cmplw r28, r0
|
||||
/* 8028FCCC 40 80 00 08 */ bge lbl_8028FCD4
|
||||
/* 8028FCD0 38 80 00 01 */ li r4, 1
|
||||
lbl_8028FCD4:
|
||||
/* 8028FCD4 54 80 06 3F */ clrlwi. r0, r4, 0x18
|
||||
/* 8028FCD8 41 82 00 40 */ beq lbl_8028FD18
|
||||
/* 8028FCDC 80 83 00 08 */ lwz r4, 8(r3)
|
||||
/* 8028FCE0 38 04 FF FF */ addi r0, r4, -1
|
||||
/* 8028FCE4 90 03 00 08 */ stw r0, 8(r3)
|
||||
/* 8028FCE8 80 1F 00 18 */ lwz r0, 0x18(r31)
|
||||
/* 8028FCEC 7C 03 00 40 */ cmplw r3, r0
|
||||
/* 8028FCF0 41 82 00 1C */ beq lbl_8028FD0C
|
||||
/* 8028FCF4 80 03 00 08 */ lwz r0, 8(r3)
|
||||
/* 8028FCF8 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 8028FCFC 40 82 00 10 */ bne lbl_8028FD0C
|
||||
/* 8028FD00 83 E3 00 00 */ lwz r31, 0(r3)
|
||||
/* 8028FD04 48 03 F0 39 */ bl __dl__FPv
|
||||
/* 8028FD08 93 FE 00 00 */ stw r31, 0(r30)
|
||||
lbl_8028FD0C:
|
||||
/* 8028FD0C 80 61 00 08 */ lwz r3, 8(r1)
|
||||
/* 8028FD10 48 0A F4 0D */ bl OSUnlockMutex
|
||||
/* 8028FD14 48 00 00 1C */ b lbl_8028FD30
|
||||
lbl_8028FD18:
|
||||
/* 8028FD18 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 8028FD1C 80 63 00 00 */ lwz r3, 0(r3)
|
||||
lbl_8028FD20:
|
||||
/* 8028FD20 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 8028FD24 40 82 FF 90 */ bne lbl_8028FCB4
|
||||
/* 8028FD28 80 61 00 08 */ lwz r3, 8(r1)
|
||||
/* 8028FD2C 48 0A F3 F1 */ bl OSUnlockMutex
|
||||
lbl_8028FD30:
|
||||
/* 8028FD30 7F A3 EB 78 */ mr r3, r29
|
||||
lbl_8028FD34:
|
||||
/* 8028FD34 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 8028FD38 48 0D 24 ED */ bl _restgpr_28
|
||||
/* 8028FD3C 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 8028FD40 7C 08 03 A6 */ mtlr r0
|
||||
/* 8028FD44 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 8028FD48 4E 80 00 20 */ blr
|
||||
|
|
@ -69,6 +69,24 @@ namespace JASThreadingModel {
|
|||
BOOL field_0x0;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
struct ObjectLevelLockable {
|
||||
// Should be templated on the chunk memory but couldn't initialize it inside the class itself
|
||||
//template <typename A0>
|
||||
struct Lock {
|
||||
Lock(OSMutex* mutex) {
|
||||
mMutex = mutex;
|
||||
OSLockMutex(mMutex);
|
||||
}
|
||||
|
||||
~Lock() {
|
||||
OSUnlockMutex(mMutex);
|
||||
}
|
||||
|
||||
OSMutex* mMutex;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
|
|
@ -79,6 +97,115 @@ public:
|
|||
void free(void* ptr, u32 n) { JASGenericMemPool::free(ptr, n); }
|
||||
};
|
||||
|
||||
template<u32 ChunkSize, typename T>
|
||||
class JASMemChunkPool {
|
||||
struct MemoryChunk {
|
||||
MemoryChunk(MemoryChunk* nextChunk) {
|
||||
mNextChunk = nextChunk;
|
||||
mUsedSize = 0;
|
||||
mChunks = 0;
|
||||
}
|
||||
|
||||
bool checkArea(void* ptr) {
|
||||
return (u8*)this + 0xc <= (u8*)ptr && (u8*)ptr < (u8*)this + (ChunkSize + 0xc);
|
||||
}
|
||||
|
||||
MemoryChunk* getNextChunk() {
|
||||
return mNextChunk;
|
||||
}
|
||||
|
||||
void* alloc(u32 size) {
|
||||
u8* rv = mBuffer + mUsedSize;
|
||||
mUsedSize += size;
|
||||
mChunks++;
|
||||
return rv;
|
||||
}
|
||||
|
||||
void free() {
|
||||
mChunks--;
|
||||
}
|
||||
|
||||
bool isEmpty() {
|
||||
return mChunks == 0;
|
||||
}
|
||||
|
||||
void setNextChunk(MemoryChunk* chunk) {
|
||||
mNextChunk = chunk;
|
||||
}
|
||||
|
||||
u32 getFreeSize() {
|
||||
return ChunkSize - mUsedSize;
|
||||
}
|
||||
|
||||
void revive() {
|
||||
mUsedSize = 0;
|
||||
}
|
||||
|
||||
MemoryChunk* mNextChunk;
|
||||
u32 mUsedSize;
|
||||
u32 mChunks;
|
||||
u8 mBuffer[ChunkSize];
|
||||
};
|
||||
public:
|
||||
bool createNewChunk() {
|
||||
bool uVar2;
|
||||
if (field_0x18 != NULL && field_0x18->isEmpty()) {
|
||||
field_0x18->revive();
|
||||
uVar2 = 1;
|
||||
} else {
|
||||
MemoryChunk* pMVar4 = field_0x18;
|
||||
field_0x18 = new (JASKernel::getSystemHeap(), 0) MemoryChunk(pMVar4);
|
||||
if (field_0x18 != NULL) {
|
||||
uVar2 = 1;
|
||||
} else {
|
||||
field_0x18 = new (JKRHeap::getSystemHeap(), 0) MemoryChunk(pMVar4);
|
||||
if (field_0x18 != NULL) {
|
||||
uVar2 = 1;
|
||||
} else {
|
||||
field_0x18 = pMVar4;
|
||||
uVar2 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
return uVar2;
|
||||
}
|
||||
|
||||
void* alloc(u32 size) {
|
||||
T::Lock lock(&mMutex);
|
||||
if (field_0x18->getFreeSize() < size) {
|
||||
if (ChunkSize < size) {
|
||||
return NULL;
|
||||
}
|
||||
if (createNewChunk() == 0) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return field_0x18->alloc(size);
|
||||
}
|
||||
|
||||
void free(void* ptr) {
|
||||
T::Lock lock(&((JASMemChunkPool<ChunkSize,T>*)ptr)->mMutex);
|
||||
MemoryChunk* chunk = ((JASMemChunkPool<ChunkSize,T>*)ptr)->field_0x18;
|
||||
MemoryChunk* prevChunk = NULL;
|
||||
while (chunk != NULL) {
|
||||
if (chunk->checkArea(this)) {
|
||||
chunk->free();
|
||||
if (chunk != ((JASMemChunkPool<ChunkSize,T>*)ptr)->field_0x18 && chunk->isEmpty()) {
|
||||
MemoryChunk* nextChunk = chunk->getNextChunk();
|
||||
delete chunk;
|
||||
prevChunk->setNextChunk(nextChunk);
|
||||
}
|
||||
return;
|
||||
}
|
||||
prevChunk = chunk;
|
||||
chunk = chunk->getNextChunk();
|
||||
}
|
||||
}
|
||||
|
||||
/* 0x00 */ OSMutex mMutex;
|
||||
/* 0x18 */ MemoryChunk* field_0x18;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
class JASPoolAllocObject {
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -22,6 +22,41 @@ struct JASSoundParams {
|
|||
|
||||
JASSoundParams() { init(); }
|
||||
|
||||
void clampVolume() {
|
||||
if (mVolume < 0.0f)
|
||||
mVolume = 0.0f;
|
||||
else if (mVolume > 1.0f)
|
||||
mVolume = 1.0f;
|
||||
}
|
||||
|
||||
void clampFxMix(void) {
|
||||
if (mFxMix < 0.0f)
|
||||
mFxMix = 0.0f;
|
||||
else if (mFxMix > 1.0f)
|
||||
mFxMix = 1.0f;
|
||||
}
|
||||
|
||||
void clampPitch() {
|
||||
if (mPitch < 0.0f)
|
||||
mPitch = 0.0f;
|
||||
else if (mPitch > 8.0f)
|
||||
mPitch = 8.0f;
|
||||
}
|
||||
|
||||
void clampPan() {
|
||||
if (mPan < 0.0f)
|
||||
mPan = 0.0f;
|
||||
else if (mPan > 1.0f)
|
||||
mPan = 1.0f;
|
||||
}
|
||||
|
||||
void clampDolby() {
|
||||
if (mDolby < 0.0f)
|
||||
mDolby = 0.0f;
|
||||
else if (mDolby > 1.0f)
|
||||
mDolby = 1.0f;
|
||||
}
|
||||
|
||||
/* 0x00 */ f32 mVolume;
|
||||
/* 0x04 */ f32 mFxMix;
|
||||
/* 0x08 */ f32 mPitch;
|
||||
|
|
|
|||
|
|
@ -2,22 +2,33 @@
|
|||
#define JASTASKTHREAD_H
|
||||
|
||||
#include "JSystem/JKernel/JKRThread.h"
|
||||
#include "JSystem/JAudio2/JASHeapCtrl.h"
|
||||
|
||||
class JASTaskThread : public JKRThread {
|
||||
private:
|
||||
struct JASThreadCallStack {
|
||||
/* 0x00 */ void (*mRunFunc)(void*);
|
||||
/* 0x04 */ u32 field_0x4;
|
||||
/* 0x08 */ union {
|
||||
u8 buffer[0x400];
|
||||
void* pBuffer;
|
||||
}field_0x8;
|
||||
};
|
||||
public:
|
||||
typedef JASMemChunkPool<1024, JASThreadingModel::ObjectLevelLockable> ThreadMemPool;
|
||||
|
||||
/* 8028F6C4 */ JASTaskThread(int, int, u32);
|
||||
/* 8028F9EC */ void allocCallStack(void (*)(void*), void*);
|
||||
/* 8028F850 */ void allocCallStack(void (*)(void*), void const*, u32);
|
||||
/* 8028FC54 */ void sendCmdMsg(void (*)(void*), void*);
|
||||
/* 8028F9EC */ void* allocCallStack(void (*)(void*), void*);
|
||||
/* 8028F850 */ void* allocCallStack(void (*)(void*), void const*, u32);
|
||||
/* 8028FC54 */ int sendCmdMsg(void (*)(void*), void*);
|
||||
/* 8028FB5C */ int sendCmdMsg(void (*)(void*), void const*, u32);
|
||||
/* 8028FE88 */ void pause(bool);
|
||||
|
||||
/* 8028F724 */ virtual ~JASTaskThread();
|
||||
/* 8028FD4C */ virtual void run();
|
||||
|
||||
/* 0x7C */ OSThreadQueue* mpThreadQueue;
|
||||
/* 0x7C */ OSThreadQueue mpThreadQueue;
|
||||
/* 0x84 */ bool field_0x84;
|
||||
/* 0x88 */ u32 field_0x88;
|
||||
};
|
||||
|
||||
#endif /* JASTASKTHREAD_H */
|
||||
|
|
|
|||
|
|
@ -74,8 +74,8 @@ public:
|
|||
|
||||
protected:
|
||||
void resume() { OSResumeThread(mThreadRecord); }
|
||||
void sendMessage(OSMessage message) {
|
||||
OSSendMessage(&mMessageQueue, message, OS_MESSAGE_NOBLOCK);
|
||||
BOOL sendMessage(OSMessage message) {
|
||||
return OSSendMessage(&mMessageQueue, message, OS_MESSAGE_NOBLOCK);
|
||||
}
|
||||
void sendMessageBlock(OSMessage message) {
|
||||
OSSendMessage(&mMessageQueue, message, OS_MESSAGE_BLOCK);
|
||||
|
|
@ -85,6 +85,15 @@ protected:
|
|||
OSReceiveMessage(&mMessageQueue, &message, OS_MESSAGE_NOBLOCK);
|
||||
return message;
|
||||
}
|
||||
|
||||
OSMessage waitMessage(BOOL* received) {
|
||||
OSMessage message;
|
||||
BOOL rv = OSReceiveMessage(&mMessageQueue, &message, OS_MESSAGE_NOBLOCK);
|
||||
if (received) {
|
||||
*received = rv;
|
||||
}
|
||||
return message;
|
||||
}
|
||||
OSMessage waitMessageBlock() {
|
||||
OSMessage message;
|
||||
OSReceiveMessage(&mMessageQueue, &message, OS_MESSAGE_BLOCK);
|
||||
|
|
|
|||
|
|
@ -4,59 +4,22 @@
|
|||
//
|
||||
|
||||
#include "JSystem/JAudio2/JASSoundParams.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void clamp__14JASSoundParamsFv();
|
||||
extern "C" void combine__14JASSoundParamsFRC14JASSoundParamsRC14JASSoundParams();
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80455760-80455764 003D60 0004+00 1/1 0/0 0/0 .sdata2 @299 */
|
||||
SECTION_SDATA2 static u8 lit_299[4] = {
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
|
||||
/* 80455764-80455768 003D64 0004+00 1/1 0/0 0/0 .sdata2 @300 */
|
||||
SECTION_SDATA2 static f32 lit_300 = 1.0f;
|
||||
|
||||
/* 80455768-8045576C 003D68 0004+00 1/1 0/0 0/0 .sdata2 @301 */
|
||||
SECTION_SDATA2 static f32 lit_301 = 8.0f;
|
||||
|
||||
/* 8029E3B0-8029E47C 298CF0 00CC+00 0/0 2/2 0/0 .text clamp__14JASSoundParamsFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASSoundParams::clamp() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASSoundParams/clamp__14JASSoundParamsFv.s"
|
||||
void JASSoundParams::clamp() {
|
||||
clampVolume();
|
||||
clampPitch();
|
||||
clampFxMix();
|
||||
clampPan();
|
||||
clampDolby();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 8045576C-80455770 003D6C 0004+00 1/1 0/0 0/0 .sdata2 @311 */
|
||||
SECTION_SDATA2 static f32 lit_311 = 0.5f;
|
||||
|
||||
/* 8029E47C-8029E4D8 298DBC 005C+00 0/0 2/2 0/0 .text
|
||||
* combine__14JASSoundParamsFRC14JASSoundParamsRC14JASSoundParams */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASSoundParams::combine(JASSoundParams const& param_0, JASSoundParams const& param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASSoundParams/combine__14JASSoundParamsFRC14JASSoundParamsRC14JASSoundParams.s"
|
||||
void JASSoundParams::combine(const JASSoundParams &other1, const JASSoundParams &other2) {
|
||||
mVolume = other1.mVolume * other2.mVolume;
|
||||
mPitch = other1.mPitch * other2.mPitch;
|
||||
mFxMix = other1.mFxMix + other2.mFxMix;
|
||||
mPan = other1.mPan + other2.mPan - 0.5f;
|
||||
mDolby = other1.mDolby + other2.mDolby;
|
||||
}
|
||||
#pragma pop
|
||||
|
|
|
|||
|
|
@ -4,16 +4,12 @@
|
|||
//
|
||||
|
||||
#include "JSystem/JAudio2/JASTaskThread.h"
|
||||
#include "JSystem/JAudio2/JASCalc.h"
|
||||
#include "JSystem/JAudio2/JASCriticalSection.h"
|
||||
#include "JSystem/JKernel/JKRSolidHeap.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/os/OSInterrupt.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct JASCalc {
|
||||
/* 8028F354 */ void bcopy(void const*, void*, u32);
|
||||
};
|
||||
#include "dolphin/os/OS.h"
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
|
|
@ -45,7 +41,6 @@ extern "C" void _savegpr_28();
|
|||
extern "C" void _restgpr_26();
|
||||
extern "C" void _restgpr_27();
|
||||
extern "C" void _restgpr_28();
|
||||
extern "C" extern u8 JASDram[4];
|
||||
extern "C" u8 sSystemHeap__7JKRHeap[4];
|
||||
|
||||
//
|
||||
|
|
@ -62,16 +57,25 @@ SECTION_DATA extern void* __vt__13JASTaskThread[4] = {
|
|||
};
|
||||
|
||||
/* 8028F6C4-8028F724 28A004 0060+00 0/0 1/1 0/0 .text __ct__13JASTaskThreadFiiUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JASTaskThread::JASTaskThread(int param_0, int param_1, u32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASTaskThread/__ct__13JASTaskThreadFiiUl.s"
|
||||
JASTaskThread::JASTaskThread(int param_0, int param_1, u32 param_2) : JKRThread(JASDram, param_2, param_1, param_0) {
|
||||
field_0x84 = false;
|
||||
OSInitThreadQueue(&mpThreadQueue);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8028F724-8028F850 28A064 012C+00 1/0 0/0 0/0 .text __dt__13JASTaskThreadFv */
|
||||
// vtable maybe
|
||||
#ifdef NONMATCHING
|
||||
JASTaskThread::~JASTaskThread() {
|
||||
OSMessage msg;
|
||||
BOOL received;
|
||||
waitmsg:
|
||||
msg = waitMessage(&received);
|
||||
if (!received) return;
|
||||
u32 heap = JASKernel::getCommandHeap();
|
||||
((ThreadMemPool*)msg)->free((void*)heap);
|
||||
goto waitmsg;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -81,49 +85,93 @@ extern "C" asm void __dt__13JASTaskThreadFv() {
|
|||
#include "asm/JSystem/JAudio2/JASTaskThread/__dt__13JASTaskThreadFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8028F850-8028F9EC 28A190 019C+00 1/1 0/0 0/0 .text allocCallStack__13JASTaskThreadFPFPv_vPCvUl
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASTaskThread::allocCallStack(void (*param_0)(void*), void const* param_1, u32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASTaskThread/allocCallStack__13JASTaskThreadFPFPv_vPCvUl.s"
|
||||
void* JASTaskThread::allocCallStack(void (*param_0)(void*), void const* param_1, u32 param_2) {
|
||||
ThreadMemPool* heap;
|
||||
u32 size = param_2 + 8;
|
||||
heap =
|
||||
(ThreadMemPool*)JASKernel::getCommandHeap();
|
||||
JASThreadCallStack *callStack = (JASThreadCallStack*) heap->alloc(size);
|
||||
if (callStack == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
callStack->field_0x4 = 1;
|
||||
JASCalc::bcopy(param_1, callStack->field_0x8.buffer, param_2);
|
||||
callStack->mRunFunc = param_0;
|
||||
return callStack;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8028F9EC-8028FB5C 28A32C 0170+00 1/1 0/0 0/0 .text allocCallStack__13JASTaskThreadFPFPv_vPv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASTaskThread::allocCallStack(void (*param_0)(void*), void* param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASTaskThread/allocCallStack__13JASTaskThreadFPFPv_vPv.s"
|
||||
void* JASTaskThread::allocCallStack(void (*runFunc)(void*), void* param_1) {
|
||||
ThreadMemPool* heap;
|
||||
JASThreadCallStack *callStack;
|
||||
heap =
|
||||
(ThreadMemPool*)JASKernel::getCommandHeap();
|
||||
callStack = (JASThreadCallStack*)heap->alloc(0xc);
|
||||
if (callStack == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
callStack->field_0x4 = 0;
|
||||
callStack->field_0x8.pBuffer = param_1;
|
||||
callStack->mRunFunc = runFunc;
|
||||
return callStack;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8028FB5C-8028FC54 28A49C 00F8+00 0/0 6/6 0/0 .text sendCmdMsg__13JASTaskThreadFPFPv_vPCvUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
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"
|
||||
int JASTaskThread::sendCmdMsg(void (*param_0)(void*), void const* param_1, u32 param_2) {
|
||||
void* pvVar1;
|
||||
|
||||
pvVar1 = allocCallStack(param_0, param_1, param_2);
|
||||
if (pvVar1 == NULL) {
|
||||
return 0;
|
||||
}
|
||||
int iVar2 = sendMessage(pvVar1);
|
||||
if (iVar2 == 0) {
|
||||
u32 heap = JASKernel::getCommandHeap();
|
||||
((ThreadMemPool*)pvVar1)->free((void*)heap);
|
||||
}
|
||||
return iVar2;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8028FC54-8028FD4C 28A594 00F8+00 0/0 3/3 0/0 .text sendCmdMsg__13JASTaskThreadFPFPv_vPv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASTaskThread::sendCmdMsg(void (*param_0)(void*), void* param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASTaskThread/sendCmdMsg__13JASTaskThreadFPFPv_vPv.s"
|
||||
int JASTaskThread::sendCmdMsg(void (*param_0)(void*), void* param_1) {
|
||||
void* pvVar1;
|
||||
|
||||
pvVar1 = allocCallStack(param_0, param_1);
|
||||
if (pvVar1 == NULL) {
|
||||
return 0;
|
||||
}
|
||||
int iVar2 = sendMessage(pvVar1);
|
||||
if (iVar2 == 0) {
|
||||
u32 heap = JASKernel::getCommandHeap();
|
||||
((ThreadMemPool*)pvVar1)->free((void*)heap);
|
||||
}
|
||||
return iVar2;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 8028FD4C-8028FE88 28A68C 013C+00 1/0 0/0 0/0 .text run__13JASTaskThreadFv */
|
||||
// Regalloc
|
||||
#ifdef NONMATCHING
|
||||
void JASTaskThread::run() {
|
||||
i_OSInitFastCast();
|
||||
do {
|
||||
JASThreadCallStack* ppcVar1 = (JASThreadCallStack*)waitMessageBlock();
|
||||
if (field_0x84) {
|
||||
OSSleepThread(&mpThreadQueue);
|
||||
}
|
||||
if (ppcVar1->field_0x4) {
|
||||
ppcVar1->mRunFunc(ppcVar1->field_0x8.buffer);
|
||||
} else {
|
||||
ppcVar1->mRunFunc(ppcVar1->field_0x8.pBuffer);
|
||||
}
|
||||
u32 heap = JASKernel::getCommandHeap();
|
||||
((ThreadMemPool*)ppcVar1)->free((void*)heap);
|
||||
} while (true);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -132,13 +180,17 @@ asm void JASTaskThread::run() {
|
|||
#include "asm/JSystem/JAudio2/JASTaskThread/run__13JASTaskThreadFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8028FE88-8028FEFC 28A7C8 0074+00 0/0 1/1 0/0 .text pause__13JASTaskThreadFb */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JASTaskThread::pause(bool param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JAudio2/JASTaskThread/pause__13JASTaskThreadFb.s"
|
||||
void JASTaskThread::pause(bool param_0) {
|
||||
JASCriticalSection aJStack_14;
|
||||
if (param_0) {
|
||||
field_0x84 = 1;
|
||||
} else {
|
||||
if (field_0x84) {
|
||||
OSWakeupThread(&mpThreadQueue);
|
||||
}
|
||||
field_0x84 = 0;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
|
|
|||
Loading…
Reference in New Issue