From 4c5c3a8964dbf5f95f5599ae94bb87aa857931c0 Mon Sep 17 00:00:00 2001 From: hatal175 Date: Wed, 30 Aug 2023 02:43:28 +0300 Subject: [PATCH] c_m3d, c_request OK. Work on Z2Audience (#1900) --- asm/JSystem/JAudio2/JAISeq/func_802A0A6C.s | 10 - .../cM2d_CrossCirLin__FR8cM2dGCirffffPfPf.s | 219 ---- .../cReq_Command__FP18request_base_classUc.s | 9 - .../cReq_Create__FP18request_base_classUc.s | 13 - .../cReq_Done__FP18request_base_class.s | 13 - .../cReq_Is_Done__FP18request_base_class.s | 13 - .../__ct__19Z2Audience3DSettingFv.s | 16 - .../calcDeltaPriority___10Z2AudienceCFfib.s | 32 - .../Z2Audience/calcFxMix___10Z2AudienceCFfi.s | 21 - .../calcMicPriority__9Z2SpotMicFf.s | 26 - .../calcOffMicSound__10Z2AudienceFf.s | 7 - ...calcPriority__10Z2AudienceFP10JAIAudible.s | 92 -- .../calcVolumeFactor__9Z2SpotMicFi.s | 12 - .../Z2Audience/calc__9Z2AudibleFv.s | 16 - .../Z2Audience/clearMicState__9Z2SpotMicFi.s | 17 - ...onvertAbsToRel__10Z2AudienceFR3VecP3Veci.s | 13 - ...ertAbsToRel__13Z2AudioCameraCFR3VecP3Vec.s | 18 - ...rtAbsToRel__13Z2AudioCameraFP9Z2Audiblei.s | 38 - ...eleteAudible__10Z2AudienceFP10JAIAudible.s | 17 - asm/Z2AudioLib/Z2Audience/func_802BBCDC.s | 16 - asm/Z2AudioLib/Z2Audience/func_802BDCB0.s | 21 - .../Z2Audience/getChannel__9Z2AudibleFi.s | 6 - .../Z2Audience/getDistVolBit__9Z2AudibleFv.s | 14 - .../getMaxChannels__10Z2AudienceFv.s | 3 - .../Z2Audience/getOuterParams__9Z2AudibleFi.s | 6 - .../Z2Audience/init__13Z2AudioCameraFv.s | 22 - ...amera__10Z2AudienceFPA4_fR3VecR3Vecffbib.s | 24 - include/JSystem/J3DU/J3DUD.h | 13 + include/JSystem/JAudio2/JAISeq.h | 2 +- include/JSystem/JAudio2/JASHeapCtrl.h | 12 +- include/JSystem/JGeometry.h | 84 +- include/JSystem/JMath/JMATrigonometric.h | 22 + include/JSystem/JMath/JMath.h | 23 + include/JSystem/TPosition3.hh | 40 + include/SSystem/SComponent/c_m3d_g_cir.h | 5 + include/SSystem/SComponent/c_request.h | 12 +- include/Z2AudioLib/Z2Audience.h | 178 ++- include/Z2AudioLib/Z2SoundInfo.h | 6 +- libs/JSystem/JAudio2/JAISeq.cpp | 29 +- libs/SSystem/SComponent/c_lib.cpp | 1 - libs/SSystem/SComponent/c_m2d.cpp | 86 +- libs/SSystem/SComponent/c_phase.cpp | 4 - libs/SSystem/SComponent/c_request.cpp | 49 +- libs/Z2AudioLib/Z2Audience.cpp | 1025 +++++++++++++---- libs/Z2AudioLib/Z2SoundInfo.cpp | 2 +- rel/d/a/b/d_a_b_ob/d_a_b_ob.cpp | 3 +- rel/d/a/e/d_a_e_wb/d_a_e_wb.cpp | 3 +- src/d/d_camera.cpp | 3 +- 48 files changed, 1248 insertions(+), 1068 deletions(-) delete mode 100644 asm/JSystem/JAudio2/JAISeq/func_802A0A6C.s delete mode 100644 asm/SSystem/SComponent/c_m2d/cM2d_CrossCirLin__FR8cM2dGCirffffPfPf.s delete mode 100644 asm/SSystem/SComponent/c_request/cReq_Command__FP18request_base_classUc.s delete mode 100644 asm/SSystem/SComponent/c_request/cReq_Create__FP18request_base_classUc.s delete mode 100644 asm/SSystem/SComponent/c_request/cReq_Done__FP18request_base_class.s delete mode 100644 asm/SSystem/SComponent/c_request/cReq_Is_Done__FP18request_base_class.s delete mode 100644 asm/Z2AudioLib/Z2Audience/__ct__19Z2Audience3DSettingFv.s delete mode 100644 asm/Z2AudioLib/Z2Audience/calcDeltaPriority___10Z2AudienceCFfib.s delete mode 100644 asm/Z2AudioLib/Z2Audience/calcFxMix___10Z2AudienceCFfi.s delete mode 100644 asm/Z2AudioLib/Z2Audience/calcMicPriority__9Z2SpotMicFf.s delete mode 100644 asm/Z2AudioLib/Z2Audience/calcOffMicSound__10Z2AudienceFf.s delete mode 100644 asm/Z2AudioLib/Z2Audience/calcPriority__10Z2AudienceFP10JAIAudible.s delete mode 100644 asm/Z2AudioLib/Z2Audience/calcVolumeFactor__9Z2SpotMicFi.s delete mode 100644 asm/Z2AudioLib/Z2Audience/calc__9Z2AudibleFv.s delete mode 100644 asm/Z2AudioLib/Z2Audience/clearMicState__9Z2SpotMicFi.s delete mode 100644 asm/Z2AudioLib/Z2Audience/convertAbsToRel__10Z2AudienceFR3VecP3Veci.s delete mode 100644 asm/Z2AudioLib/Z2Audience/convertAbsToRel__13Z2AudioCameraCFR3VecP3Vec.s delete mode 100644 asm/Z2AudioLib/Z2Audience/convertAbsToRel__13Z2AudioCameraFP9Z2Audiblei.s delete mode 100644 asm/Z2AudioLib/Z2Audience/deleteAudible__10Z2AudienceFP10JAIAudible.s delete mode 100644 asm/Z2AudioLib/Z2Audience/func_802BBCDC.s delete mode 100644 asm/Z2AudioLib/Z2Audience/func_802BDCB0.s delete mode 100644 asm/Z2AudioLib/Z2Audience/getChannel__9Z2AudibleFi.s delete mode 100644 asm/Z2AudioLib/Z2Audience/getDistVolBit__9Z2AudibleFv.s delete mode 100644 asm/Z2AudioLib/Z2Audience/getMaxChannels__10Z2AudienceFv.s delete mode 100644 asm/Z2AudioLib/Z2Audience/getOuterParams__9Z2AudibleFi.s delete mode 100644 asm/Z2AudioLib/Z2Audience/init__13Z2AudioCameraFv.s delete mode 100644 asm/Z2AudioLib/Z2Audience/setAudioCamera__10Z2AudienceFPA4_fR3VecR3Vecffbib.s create mode 100644 include/JSystem/J3DU/J3DUD.h create mode 100644 include/JSystem/TPosition3.hh diff --git a/asm/JSystem/JAudio2/JAISeq/func_802A0A6C.s b/asm/JSystem/JAudio2/JAISeq/func_802A0A6C.s deleted file mode 100644 index 19648906bca..00000000000 --- a/asm/JSystem/JAudio2/JAISeq/func_802A0A6C.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_802A0A6C: -/* 802A0A6C 88 03 02 15 */ lbz r0, 0x215(r3) -/* 802A0A70 54 00 06 3F */ clrlwi. r0, r0, 0x18 -/* 802A0A74 38 60 00 00 */ li r3, 0 -/* 802A0A78 41 82 00 0C */ beq lbl_802A0A84 -/* 802A0A7C 28 00 00 02 */ cmplwi r0, 2 -/* 802A0A80 4C 82 00 20 */ bnelr -lbl_802A0A84: -/* 802A0A84 38 60 00 01 */ li r3, 1 -/* 802A0A88 4E 80 00 20 */ blr diff --git a/asm/SSystem/SComponent/c_m2d/cM2d_CrossCirLin__FR8cM2dGCirffffPfPf.s b/asm/SSystem/SComponent/c_m2d/cM2d_CrossCirLin__FR8cM2dGCirffffPfPf.s deleted file mode 100644 index 3084b4ab712..00000000000 --- a/asm/SSystem/SComponent/c_m2d/cM2d_CrossCirLin__FR8cM2dGCirffffPfPf.s +++ /dev/null @@ -1,219 +0,0 @@ -lbl_80268260: -/* 80268260 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80268264 C0 03 00 00 */ lfs f0, 0(r3) -/* 80268268 EC E1 00 28 */ fsubs f7, f1, f0 -/* 8026826C C0 03 00 04 */ lfs f0, 4(r3) -/* 80268270 ED 02 00 28 */ fsubs f8, f2, f0 -/* 80268274 EC C3 00 F2 */ fmuls f6, f3, f3 -/* 80268278 EC 04 01 32 */ fmuls f0, f4, f4 -/* 8026827C ED 46 00 2A */ fadds f10, f6, f0 -/* 80268280 C1 22 B6 F0 */ lfs f9, lit_2266(r2) -/* 80268284 EC C3 01 F2 */ fmuls f6, f3, f7 -/* 80268288 EC 04 02 32 */ fmuls f0, f4, f8 -/* 8026828C EC 06 00 2A */ fadds f0, f6, f0 -/* 80268290 EC 09 00 32 */ fmuls f0, f9, f0 -/* 80268294 EC E7 01 F2 */ fmuls f7, f7, f7 -/* 80268298 EC C8 02 32 */ fmuls f6, f8, f8 -/* 8026829C EC E7 30 2A */ fadds f7, f7, f6 -/* 802682A0 C0 C3 00 08 */ lfs f6, 8(r3) -/* 802682A4 EC C6 01 B2 */ fmuls f6, f6, f6 -/* 802682A8 ED 67 30 28 */ fsubs f11, f7, f6 -/* 802682AC FC C0 52 10 */ fabs f6, f10 -/* 802682B0 FC C0 30 18 */ frsp f6, f6 -/* 802682B4 C1 0D 8C 00 */ lfs f8, G_CM3D_F_ABS_MIN(r13) -/* 802682B8 FC 06 40 40 */ fcmpo cr0, f6, f8 -/* 802682BC 40 80 00 20 */ bge lbl_802682DC -/* 802682C0 FC C0 02 10 */ fabs f6, f0 -/* 802682C4 FC C0 30 18 */ frsp f6, f6 -/* 802682C8 FC 06 40 40 */ fcmpo cr0, f6, f8 -/* 802682CC 41 80 02 54 */ blt lbl_80268520 -/* 802682D0 FC A0 58 50 */ fneg f5, f11 -/* 802682D4 EC A5 00 24 */ fdivs f5, f5, f0 -/* 802682D8 48 00 02 48 */ b lbl_80268520 -lbl_802682DC: -/* 802682DC EC E0 00 32 */ fmuls f7, f0, f0 -/* 802682E0 C0 C2 B6 F4 */ lfs f6, lit_2267(r2) -/* 802682E4 EC C6 02 B2 */ fmuls f6, f6, f10 -/* 802682E8 EC C6 02 F2 */ fmuls f6, f6, f11 -/* 802682EC EC C7 30 28 */ fsubs f6, f7, f6 -/* 802682F0 FC E0 32 10 */ fabs f7, f6 -/* 802682F4 FC E0 38 18 */ frsp f7, f7 -/* 802682F8 FC 07 40 40 */ fcmpo cr0, f7, f8 -/* 802682FC 40 80 00 14 */ bge lbl_80268310 -/* 80268300 FC A0 00 50 */ fneg f5, f0 -/* 80268304 EC 09 02 B2 */ fmuls f0, f9, f10 -/* 80268308 EC A5 00 24 */ fdivs f5, f5, f0 -/* 8026830C 48 00 02 14 */ b lbl_80268520 -lbl_80268310: -/* 80268310 C0 E2 B6 F8 */ lfs f7, lit_2268(r2) -/* 80268314 FC 06 38 40 */ fcmpo cr0, f6, f7 -/* 80268318 41 80 02 08 */ blt lbl_80268520 -/* 8026831C C0 E2 B6 FC */ lfs f7, lit_2269(r2) -/* 80268320 EC A9 02 B2 */ fmuls f5, f9, f10 -/* 80268324 EC A7 28 24 */ fdivs f5, f7, f5 -/* 80268328 40 81 00 58 */ ble lbl_80268380 -/* 8026832C FC E0 30 34 */ frsqrte f7, f6 -/* 80268330 C9 42 B7 00 */ lfd f10, lit_2270(r2) -/* 80268334 FD 0A 01 F2 */ fmul f8, f10, f7 -/* 80268338 C9 22 B7 08 */ lfd f9, lit_2271(r2) -/* 8026833C FC E7 01 F2 */ fmul f7, f7, f7 -/* 80268340 FC E6 01 F2 */ fmul f7, f6, f7 -/* 80268344 FC E9 38 28 */ fsub f7, f9, f7 -/* 80268348 FC E8 01 F2 */ fmul f7, f8, f7 -/* 8026834C FD 0A 01 F2 */ fmul f8, f10, f7 -/* 80268350 FC E7 01 F2 */ fmul f7, f7, f7 -/* 80268354 FC E6 01 F2 */ fmul f7, f6, f7 -/* 80268358 FC E9 38 28 */ fsub f7, f9, f7 -/* 8026835C FC E8 01 F2 */ fmul f7, f8, f7 -/* 80268360 FD 0A 01 F2 */ fmul f8, f10, f7 -/* 80268364 FC E7 01 F2 */ fmul f7, f7, f7 -/* 80268368 FC E6 01 F2 */ fmul f7, f6, f7 -/* 8026836C FC E9 38 28 */ fsub f7, f9, f7 -/* 80268370 FC E8 01 F2 */ fmul f7, f8, f7 -/* 80268374 FC E6 01 F2 */ fmul f7, f6, f7 -/* 80268378 FC E0 38 18 */ frsp f7, f7 -/* 8026837C 48 00 00 90 */ b lbl_8026840C -lbl_80268380: -/* 80268380 C8 E2 B7 10 */ lfd f7, lit_2272(r2) -/* 80268384 FC 06 38 40 */ fcmpo cr0, f6, f7 -/* 80268388 40 80 00 10 */ bge lbl_80268398 -/* 8026838C 3C 60 80 45 */ lis r3, __float_nan@ha /* 0x80450AE0@ha */ -/* 80268390 C0 E3 0A E0 */ lfs f7, __float_nan@l(r3) /* 0x80450AE0@l */ -/* 80268394 48 00 00 78 */ b lbl_8026840C -lbl_80268398: -/* 80268398 D0 C1 00 0C */ stfs f6, 0xc(r1) -/* 8026839C 80 C1 00 0C */ lwz r6, 0xc(r1) -/* 802683A0 54 C3 00 50 */ rlwinm r3, r6, 0, 1, 8 -/* 802683A4 3C 00 7F 80 */ lis r0, 0x7f80 -/* 802683A8 7C 03 00 00 */ cmpw r3, r0 -/* 802683AC 41 82 00 14 */ beq lbl_802683C0 -/* 802683B0 40 80 00 40 */ bge lbl_802683F0 -/* 802683B4 2C 03 00 00 */ cmpwi r3, 0 -/* 802683B8 41 82 00 20 */ beq lbl_802683D8 -/* 802683BC 48 00 00 34 */ b lbl_802683F0 -lbl_802683C0: -/* 802683C0 54 C0 02 7F */ clrlwi. r0, r6, 9 -/* 802683C4 41 82 00 0C */ beq lbl_802683D0 -/* 802683C8 38 00 00 01 */ li r0, 1 -/* 802683CC 48 00 00 28 */ b lbl_802683F4 -lbl_802683D0: -/* 802683D0 38 00 00 02 */ li r0, 2 -/* 802683D4 48 00 00 20 */ b lbl_802683F4 -lbl_802683D8: -/* 802683D8 54 C0 02 7F */ clrlwi. r0, r6, 9 -/* 802683DC 41 82 00 0C */ beq lbl_802683E8 -/* 802683E0 38 00 00 05 */ li r0, 5 -/* 802683E4 48 00 00 10 */ b lbl_802683F4 -lbl_802683E8: -/* 802683E8 38 00 00 03 */ li r0, 3 -/* 802683EC 48 00 00 08 */ b lbl_802683F4 -lbl_802683F0: -/* 802683F0 38 00 00 04 */ li r0, 4 -lbl_802683F4: -/* 802683F4 2C 00 00 01 */ cmpwi r0, 1 -/* 802683F8 40 82 00 10 */ bne lbl_80268408 -/* 802683FC 3C 60 80 45 */ lis r3, __float_nan@ha /* 0x80450AE0@ha */ -/* 80268400 C0 E3 0A E0 */ lfs f7, __float_nan@l(r3) /* 0x80450AE0@l */ -/* 80268404 48 00 00 08 */ b lbl_8026840C -lbl_80268408: -/* 80268408 FC E0 30 90 */ fmr f7, f6 -lbl_8026840C: -/* 8026840C FD 40 00 50 */ fneg f10, f0 -/* 80268410 EC 0A 38 2A */ fadds f0, f10, f7 -/* 80268414 ED 65 00 32 */ fmuls f11, f5, f0 -/* 80268418 C0 02 B6 F8 */ lfs f0, lit_2268(r2) -/* 8026841C FC 06 00 40 */ fcmpo cr0, f6, f0 -/* 80268420 40 81 00 58 */ ble lbl_80268478 -/* 80268424 FC 00 30 34 */ frsqrte f0, f6 -/* 80268428 C9 22 B7 00 */ lfd f9, lit_2270(r2) -/* 8026842C FC E9 00 32 */ fmul f7, f9, f0 -/* 80268430 C9 02 B7 08 */ lfd f8, lit_2271(r2) -/* 80268434 FC 00 00 32 */ fmul f0, f0, f0 -/* 80268438 FC 06 00 32 */ fmul f0, f6, f0 -/* 8026843C FC 08 00 28 */ fsub f0, f8, f0 -/* 80268440 FC 07 00 32 */ fmul f0, f7, f0 -/* 80268444 FC E9 00 32 */ fmul f7, f9, f0 -/* 80268448 FC 00 00 32 */ fmul f0, f0, f0 -/* 8026844C FC 06 00 32 */ fmul f0, f6, f0 -/* 80268450 FC 08 00 28 */ fsub f0, f8, f0 -/* 80268454 FC 07 00 32 */ fmul f0, f7, f0 -/* 80268458 FC E9 00 32 */ fmul f7, f9, f0 -/* 8026845C FC 00 00 32 */ fmul f0, f0, f0 -/* 80268460 FC 06 00 32 */ fmul f0, f6, f0 -/* 80268464 FC 08 00 28 */ fsub f0, f8, f0 -/* 80268468 FC 07 00 32 */ fmul f0, f7, f0 -/* 8026846C FC 06 00 32 */ fmul f0, f6, f0 -/* 80268470 FC 00 00 18 */ frsp f0, f0 -/* 80268474 48 00 00 90 */ b lbl_80268504 -lbl_80268478: -/* 80268478 C8 02 B7 10 */ lfd f0, lit_2272(r2) -/* 8026847C FC 06 00 40 */ fcmpo cr0, f6, f0 -/* 80268480 40 80 00 10 */ bge lbl_80268490 -/* 80268484 3C 60 80 45 */ lis r3, __float_nan@ha /* 0x80450AE0@ha */ -/* 80268488 C0 03 0A E0 */ lfs f0, __float_nan@l(r3) /* 0x80450AE0@l */ -/* 8026848C 48 00 00 78 */ b lbl_80268504 -lbl_80268490: -/* 80268490 D0 C1 00 08 */ stfs f6, 8(r1) -/* 80268494 80 C1 00 08 */ lwz r6, 8(r1) -/* 80268498 54 C3 00 50 */ rlwinm r3, r6, 0, 1, 8 -/* 8026849C 3C 00 7F 80 */ lis r0, 0x7f80 -/* 802684A0 7C 03 00 00 */ cmpw r3, r0 -/* 802684A4 41 82 00 14 */ beq lbl_802684B8 -/* 802684A8 40 80 00 40 */ bge lbl_802684E8 -/* 802684AC 2C 03 00 00 */ cmpwi r3, 0 -/* 802684B0 41 82 00 20 */ beq lbl_802684D0 -/* 802684B4 48 00 00 34 */ b lbl_802684E8 -lbl_802684B8: -/* 802684B8 54 C0 02 7F */ clrlwi. r0, r6, 9 -/* 802684BC 41 82 00 0C */ beq lbl_802684C8 -/* 802684C0 38 00 00 01 */ li r0, 1 -/* 802684C4 48 00 00 28 */ b lbl_802684EC -lbl_802684C8: -/* 802684C8 38 00 00 02 */ li r0, 2 -/* 802684CC 48 00 00 20 */ b lbl_802684EC -lbl_802684D0: -/* 802684D0 54 C0 02 7F */ clrlwi. r0, r6, 9 -/* 802684D4 41 82 00 0C */ beq lbl_802684E0 -/* 802684D8 38 00 00 05 */ li r0, 5 -/* 802684DC 48 00 00 10 */ b lbl_802684EC -lbl_802684E0: -/* 802684E0 38 00 00 03 */ li r0, 3 -/* 802684E4 48 00 00 08 */ b lbl_802684EC -lbl_802684E8: -/* 802684E8 38 00 00 04 */ li r0, 4 -lbl_802684EC: -/* 802684EC 2C 00 00 01 */ cmpwi r0, 1 -/* 802684F0 40 82 00 10 */ bne lbl_80268500 -/* 802684F4 3C 60 80 45 */ lis r3, __float_nan@ha /* 0x80450AE0@ha */ -/* 802684F8 C0 03 0A E0 */ lfs f0, __float_nan@l(r3) /* 0x80450AE0@l */ -/* 802684FC 48 00 00 08 */ b lbl_80268504 -lbl_80268500: -/* 80268500 FC 00 30 90 */ fmr f0, f6 -lbl_80268504: -/* 80268504 EC 0A 00 28 */ fsubs f0, f10, f0 -/* 80268508 EC 05 00 32 */ fmuls f0, f5, f0 -/* 8026850C FC 0B 00 40 */ fcmpo cr0, f11, f0 -/* 80268510 40 81 00 0C */ ble lbl_8026851C -/* 80268514 FC A0 58 90 */ fmr f5, f11 -/* 80268518 48 00 00 08 */ b lbl_80268520 -lbl_8026851C: -/* 8026851C FC A0 00 90 */ fmr f5, f0 -lbl_80268520: -/* 80268520 FC 00 2A 10 */ fabs f0, f5 -/* 80268524 FC C0 00 18 */ frsp f6, f0 -/* 80268528 C0 0D 8C 00 */ lfs f0, G_CM3D_F_ABS_MIN(r13) -/* 8026852C FC 06 00 40 */ fcmpo cr0, f6, f0 -/* 80268530 40 80 00 10 */ bge lbl_80268540 -/* 80268534 D0 24 00 00 */ stfs f1, 0(r4) -/* 80268538 D0 45 00 00 */ stfs f2, 0(r5) -/* 8026853C 48 00 00 1C */ b lbl_80268558 -lbl_80268540: -/* 80268540 EC 05 00 F2 */ fmuls f0, f5, f3 -/* 80268544 EC 01 00 2A */ fadds f0, f1, f0 -/* 80268548 D0 04 00 00 */ stfs f0, 0(r4) -/* 8026854C EC 05 01 32 */ fmuls f0, f5, f4 -/* 80268550 EC 02 00 2A */ fadds f0, f2, f0 -/* 80268554 D0 05 00 00 */ stfs f0, 0(r5) -lbl_80268558: -/* 80268558 38 21 00 10 */ addi r1, r1, 0x10 -/* 8026855C 4E 80 00 20 */ blr diff --git a/asm/SSystem/SComponent/c_request/cReq_Command__FP18request_base_classUc.s b/asm/SSystem/SComponent/c_request/cReq_Command__FP18request_base_classUc.s deleted file mode 100644 index 153561c7ae0..00000000000 --- a/asm/SSystem/SComponent/c_request/cReq_Command__FP18request_base_classUc.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80266830: -/* 80266830 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80266834 7C 08 02 A6 */ mflr r0 -/* 80266838 90 01 00 14 */ stw r0, 0x14(r1) -/* 8026683C 48 00 00 15 */ bl cReq_Create__FP18request_base_classUc -/* 80266840 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80266844 7C 08 03 A6 */ mtlr r0 -/* 80266848 38 21 00 10 */ addi r1, r1, 0x10 -/* 8026684C 4E 80 00 20 */ blr diff --git a/asm/SSystem/SComponent/c_request/cReq_Create__FP18request_base_classUc.s b/asm/SSystem/SComponent/c_request/cReq_Create__FP18request_base_classUc.s deleted file mode 100644 index a882d91ad47..00000000000 --- a/asm/SSystem/SComponent/c_request/cReq_Create__FP18request_base_classUc.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80266850: -/* 80266850 38 A0 00 01 */ li r5, 1 -/* 80266854 88 03 00 00 */ lbz r0, 0(r3) -/* 80266858 50 A0 3E 30 */ rlwimi r0, r5, 7, 0x18, 0x18 -/* 8026685C 98 03 00 00 */ stb r0, 0(r3) -/* 80266860 38 A0 00 00 */ li r5, 0 -/* 80266864 88 03 00 00 */ lbz r0, 0(r3) -/* 80266868 50 A0 36 72 */ rlwimi r0, r5, 6, 0x19, 0x19 -/* 8026686C 98 03 00 00 */ stb r0, 0(r3) -/* 80266870 88 03 00 00 */ lbz r0, 0(r3) -/* 80266874 50 80 06 BE */ rlwimi r0, r4, 0, 0x1a, 0x1f -/* 80266878 98 03 00 00 */ stb r0, 0(r3) -/* 8026687C 4E 80 00 20 */ blr diff --git a/asm/SSystem/SComponent/c_request/cReq_Done__FP18request_base_class.s b/asm/SSystem/SComponent/c_request/cReq_Done__FP18request_base_class.s deleted file mode 100644 index 68d1c9712e6..00000000000 --- a/asm/SSystem/SComponent/c_request/cReq_Done__FP18request_base_class.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80266800: -/* 80266800 38 A0 00 00 */ li r5, 0 -/* 80266804 88 03 00 00 */ lbz r0, 0(r3) -/* 80266808 50 A0 3E 30 */ rlwimi r0, r5, 7, 0x18, 0x18 -/* 8026680C 98 03 00 00 */ stb r0, 0(r3) -/* 80266810 38 80 00 01 */ li r4, 1 -/* 80266814 88 03 00 00 */ lbz r0, 0(r3) -/* 80266818 50 80 36 72 */ rlwimi r0, r4, 6, 0x19, 0x19 -/* 8026681C 98 03 00 00 */ stb r0, 0(r3) -/* 80266820 88 03 00 00 */ lbz r0, 0(r3) -/* 80266824 50 A0 06 BE */ rlwimi r0, r5, 0, 0x1a, 0x1f -/* 80266828 98 03 00 00 */ stb r0, 0(r3) -/* 8026682C 4E 80 00 20 */ blr diff --git a/asm/SSystem/SComponent/c_request/cReq_Is_Done__FP18request_base_class.s b/asm/SSystem/SComponent/c_request/cReq_Is_Done__FP18request_base_class.s deleted file mode 100644 index 968c025a55f..00000000000 --- a/asm/SSystem/SComponent/c_request/cReq_Is_Done__FP18request_base_class.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_802667D4: -/* 802667D4 88 83 00 00 */ lbz r4, 0(r3) -/* 802667D8 54 80 D7 FE */ rlwinm r0, r4, 0x1a, 0x1f, 0x1f -/* 802667DC 28 00 00 01 */ cmplwi r0, 1 -/* 802667E0 40 82 00 18 */ bne lbl_802667F8 -/* 802667E4 38 00 00 00 */ li r0, 0 -/* 802667E8 50 04 36 72 */ rlwimi r4, r0, 6, 0x19, 0x19 -/* 802667EC 98 83 00 00 */ stb r4, 0(r3) -/* 802667F0 38 60 00 01 */ li r3, 1 -/* 802667F4 4E 80 00 20 */ blr -lbl_802667F8: -/* 802667F8 38 60 00 00 */ li r3, 0 -/* 802667FC 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/__ct__19Z2Audience3DSettingFv.s b/asm/Z2AudioLib/Z2Audience/__ct__19Z2Audience3DSettingFv.s deleted file mode 100644 index c6854e3e33e..00000000000 --- a/asm/Z2AudioLib/Z2Audience/__ct__19Z2Audience3DSettingFv.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_802BC248: -/* 802BC248 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802BC24C 7C 08 02 A6 */ mflr r0 -/* 802BC250 90 01 00 14 */ stw r0, 0x14(r1) -/* 802BC254 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802BC258 7C 7F 1B 78 */ mr r31, r3 -/* 802BC25C 38 00 00 00 */ li r0, 0 -/* 802BC260 98 03 01 24 */ stb r0, 0x124(r3) -/* 802BC264 98 03 01 25 */ stb r0, 0x125(r3) -/* 802BC268 48 00 00 1D */ bl init__19Z2Audience3DSettingFv -/* 802BC26C 7F E3 FB 78 */ mr r3, r31 -/* 802BC270 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802BC274 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802BC278 7C 08 03 A6 */ mtlr r0 -/* 802BC27C 38 21 00 10 */ addi r1, r1, 0x10 -/* 802BC280 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/calcDeltaPriority___10Z2AudienceCFfib.s b/asm/Z2AudioLib/Z2Audience/calcDeltaPriority___10Z2AudienceCFfib.s deleted file mode 100644 index 3031b0ecfc0..00000000000 --- a/asm/Z2AudioLib/Z2Audience/calcDeltaPriority___10Z2AudienceCFfib.s +++ /dev/null @@ -1,32 +0,0 @@ -lbl_802BDC44: -/* 802BDC44 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802BDC48 7C 08 02 A6 */ mflr r0 -/* 802BDC4C 90 01 00 14 */ stw r0, 0x14(r1) -/* 802BDC50 54 80 10 3A */ slwi r0, r4, 2 -/* 802BDC54 7C 83 02 14 */ add r4, r3, r0 -/* 802BDC58 C0 04 00 0C */ lfs f0, 0xc(r4) -/* 802BDC5C FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 802BDC60 40 81 00 1C */ ble lbl_802BDC7C -/* 802BDC64 54 A0 06 3F */ clrlwi. r0, r5, 0x18 -/* 802BDC68 41 82 00 0C */ beq lbl_802BDC74 -/* 802BDC6C 38 60 FF FF */ li r3, -1 -/* 802BDC70 48 00 00 30 */ b lbl_802BDCA0 -lbl_802BDC74: -/* 802BDC74 80 63 00 70 */ lwz r3, 0x70(r3) -/* 802BDC78 48 00 00 28 */ b lbl_802BDCA0 -lbl_802BDC7C: -/* 802BDC7C C0 03 00 48 */ lfs f0, 0x48(r3) -/* 802BDC80 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 802BDC84 40 80 00 0C */ bge lbl_802BDC90 -/* 802BDC88 38 60 00 00 */ li r3, 0 -/* 802BDC8C 48 00 00 14 */ b lbl_802BDCA0 -lbl_802BDC90: -/* 802BDC90 C0 44 00 B8 */ lfs f2, 0xb8(r4) -/* 802BDC94 EC 01 00 28 */ fsubs f0, f1, f0 -/* 802BDC98 EC 22 00 32 */ fmuls f1, f2, f0 -/* 802BDC9C 48 0A 44 11 */ bl __cvt_fp2unsigned -lbl_802BDCA0: -/* 802BDCA0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802BDCA4 7C 08 03 A6 */ mtlr r0 -/* 802BDCA8 38 21 00 10 */ addi r1, r1, 0x10 -/* 802BDCAC 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/calcFxMix___10Z2AudienceCFfi.s b/asm/Z2AudioLib/Z2Audience/calcFxMix___10Z2AudienceCFfi.s deleted file mode 100644 index 77ae0feed2f..00000000000 --- a/asm/Z2AudioLib/Z2Audience/calcFxMix___10Z2AudienceCFfi.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_802BDD00: -/* 802BDD00 54 80 10 3A */ slwi r0, r4, 2 -/* 802BDD04 7C 83 02 14 */ add r4, r3, r0 -/* 802BDD08 C0 04 00 0C */ lfs f0, 0xc(r4) -/* 802BDD0C FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 802BDD10 40 81 00 0C */ ble lbl_802BDD1C -/* 802BDD14 C0 23 00 60 */ lfs f1, 0x60(r3) -/* 802BDD18 4E 80 00 20 */ blr -lbl_802BDD1C: -/* 802BDD1C C0 03 00 48 */ lfs f0, 0x48(r3) -/* 802BDD20 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 802BDD24 40 80 00 0C */ bge lbl_802BDD30 -/* 802BDD28 C0 23 00 5C */ lfs f1, 0x5c(r3) -/* 802BDD2C 4E 80 00 20 */ blr -lbl_802BDD30: -/* 802BDD30 C0 63 00 5C */ lfs f3, 0x5c(r3) -/* 802BDD34 C0 44 00 F4 */ lfs f2, 0xf4(r4) -/* 802BDD38 EC 01 00 28 */ fsubs f0, f1, f0 -/* 802BDD3C EC 02 00 32 */ fmuls f0, f2, f0 -/* 802BDD40 EC 23 00 2A */ fadds f1, f3, f0 -/* 802BDD44 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/calcMicPriority__9Z2SpotMicFf.s b/asm/Z2AudioLib/Z2Audience/calcMicPriority__9Z2SpotMicFf.s deleted file mode 100644 index 98202c2e824..00000000000 --- a/asm/Z2AudioLib/Z2Audience/calcMicPriority__9Z2SpotMicFf.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_802BCFE4: -/* 802BCFE4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802BCFE8 7C 08 02 A6 */ mflr r0 -/* 802BCFEC 90 01 00 14 */ stw r0, 0x14(r1) -/* 802BCFF0 C0 03 00 04 */ lfs f0, 4(r3) -/* 802BCFF4 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 802BCFF8 40 81 00 10 */ ble lbl_802BD008 -/* 802BCFFC 80 6D 85 C4 */ lwz r3, __OSReport_disable-0x54(r13) -/* 802BD000 80 63 00 70 */ lwz r3, 0x70(r3) -/* 802BD004 48 00 00 28 */ b lbl_802BD02C -lbl_802BD008: -/* 802BD008 C0 03 00 00 */ lfs f0, 0(r3) -/* 802BD00C FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 802BD010 40 80 00 0C */ bge lbl_802BD01C -/* 802BD014 38 60 00 00 */ li r3, 0 -/* 802BD018 48 00 00 14 */ b lbl_802BD02C -lbl_802BD01C: -/* 802BD01C C0 43 00 1C */ lfs f2, 0x1c(r3) -/* 802BD020 EC 01 00 28 */ fsubs f0, f1, f0 -/* 802BD024 EC 22 00 32 */ fmuls f1, f2, f0 -/* 802BD028 48 0A 50 85 */ bl __cvt_fp2unsigned -lbl_802BD02C: -/* 802BD02C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802BD030 7C 08 03 A6 */ mtlr r0 -/* 802BD034 38 21 00 10 */ addi r1, r1, 0x10 -/* 802BD038 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/calcOffMicSound__10Z2AudienceFf.s b/asm/Z2AudioLib/Z2Audience/calcOffMicSound__10Z2AudienceFf.s deleted file mode 100644 index 39e2ebad98c..00000000000 --- a/asm/Z2AudioLib/Z2Audience/calcOffMicSound__10Z2AudienceFf.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_802BD704: -/* 802BD704 88 03 01 DC */ lbz r0, 0x1dc(r3) -/* 802BD708 28 00 00 00 */ cmplwi r0, 0 -/* 802BD70C 4D 82 00 20 */ beqlr -/* 802BD710 C0 03 00 04 */ lfs f0, 4(r3) -/* 802BD714 EC 21 00 32 */ fmuls f1, f1, f0 -/* 802BD718 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/calcPriority__10Z2AudienceFP10JAIAudible.s b/asm/Z2AudioLib/Z2Audience/calcPriority__10Z2AudienceFP10JAIAudible.s deleted file mode 100644 index 70a9626a495..00000000000 --- a/asm/Z2AudioLib/Z2Audience/calcPriority__10Z2AudienceFP10JAIAudible.s +++ /dev/null @@ -1,92 +0,0 @@ -lbl_802BD5B8: -/* 802BD5B8 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 802BD5BC 7C 08 02 A6 */ mflr r0 -/* 802BD5C0 90 01 00 34 */ stw r0, 0x34(r1) -/* 802BD5C4 39 61 00 30 */ addi r11, r1, 0x30 -/* 802BD5C8 48 0A 4C 05 */ bl _savegpr_25 -/* 802BD5CC 7C 7C 1B 78 */ mr r28, r3 -/* 802BD5D0 7C 9F 23 78 */ mr r31, r4 -/* 802BD5D4 88 04 00 10 */ lbz r0, 0x10(r4) -/* 802BD5D8 54 00 EF FF */ rlwinm. r0, r0, 0x1d, 0x1f, 0x1f -/* 802BD5DC 40 82 00 40 */ bne lbl_802BD61C -/* 802BD5E0 3B 20 00 00 */ li r25, 0 -/* 802BD5E4 3B 40 00 00 */ li r26, 0 -/* 802BD5E8 48 00 00 20 */ b lbl_802BD608 -lbl_802BD5EC: -/* 802BD5EC 38 7A 01 34 */ addi r3, r26, 0x134 -/* 802BD5F0 7C 7C 1A 14 */ add r3, r28, r3 -/* 802BD5F4 7F E4 FB 78 */ mr r4, r31 -/* 802BD5F8 7F 25 CB 78 */ mr r5, r25 -/* 802BD5FC 4B FF F5 F1 */ bl convertAbsToRel__13Z2AudioCameraFP9Z2Audiblei -/* 802BD600 3B 39 00 01 */ addi r25, r25, 1 -/* 802BD604 3B 5A 00 74 */ addi r26, r26, 0x74 -lbl_802BD608: -/* 802BD608 80 1C 01 D4 */ lwz r0, 0x1d4(r28) -/* 802BD60C 7C 19 00 00 */ cmpw r25, r0 -/* 802BD610 41 80 FF DC */ blt lbl_802BD5EC -/* 802BD614 38 60 00 00 */ li r3, 0 -/* 802BD618 48 00 00 D4 */ b lbl_802BD6EC -lbl_802BD61C: -/* 802BD61C 3B C0 FF FF */ li r30, -1 -/* 802BD620 3B A0 00 00 */ li r29, 0 -/* 802BD624 3B 60 00 00 */ li r27, 0 -/* 802BD628 3B 40 00 00 */ li r26, 0 -/* 802BD62C 48 00 00 78 */ b lbl_802BD6A4 -lbl_802BD630: -/* 802BD630 7F E3 FB 78 */ mr r3, r31 -/* 802BD634 7F A4 EB 78 */ mr r4, r29 -/* 802BD638 4B FF EB CD */ bl getChannel__9Z2AudibleFi -/* 802BD63C 7C 79 1B 79 */ or. r25, r3, r3 -/* 802BD640 41 82 00 58 */ beq lbl_802BD698 -/* 802BD644 38 7A 01 34 */ addi r3, r26, 0x134 -/* 802BD648 7C 7C 1A 14 */ add r3, r28, r3 -/* 802BD64C 7F E4 FB 78 */ mr r4, r31 -/* 802BD650 7F A5 EB 78 */ mr r5, r29 -/* 802BD654 4B FF F5 99 */ bl convertAbsToRel__13Z2AudioCameraFP9Z2Audiblei -/* 802BD658 7F E3 FB 78 */ mr r3, r31 -/* 802BD65C 4B FF EB BD */ bl getDistVolBit__9Z2AudibleFv -/* 802BD660 7C 64 1B 78 */ mr r4, r3 -/* 802BD664 7F 83 E3 78 */ mr r3, r28 -/* 802BD668 C0 39 00 24 */ lfs f1, 0x24(r25) -/* 802BD66C 88 1F 00 10 */ lbz r0, 0x10(r31) -/* 802BD670 54 05 07 FE */ clrlwi r5, r0, 0x1f -/* 802BD674 30 05 FF FF */ addic r0, r5, -1 -/* 802BD678 7C 00 29 10 */ subfe r0, r0, r5 -/* 802BD67C 54 05 06 3E */ clrlwi r5, r0, 0x18 -/* 802BD680 48 00 05 C5 */ bl calcDeltaPriority___10Z2AudienceCFfib -/* 802BD684 38 81 00 08 */ addi r4, r1, 8 -/* 802BD688 7C 64 D9 2E */ stwx r3, r4, r27 -/* 802BD68C 7C 03 F0 40 */ cmplw r3, r30 -/* 802BD690 40 80 00 08 */ bge lbl_802BD698 -/* 802BD694 7C 7E 1B 78 */ mr r30, r3 -lbl_802BD698: -/* 802BD698 3B BD 00 01 */ addi r29, r29, 1 -/* 802BD69C 3B 7B 00 04 */ addi r27, r27, 4 -/* 802BD6A0 3B 5A 00 74 */ addi r26, r26, 0x74 -lbl_802BD6A4: -/* 802BD6A4 80 1C 01 D4 */ lwz r0, 0x1d4(r28) -/* 802BD6A8 7C 1D 00 00 */ cmpw r29, r0 -/* 802BD6AC 41 80 FF 84 */ blt lbl_802BD630 -/* 802BD6B0 88 1C 01 CD */ lbz r0, 0x1cd(r28) -/* 802BD6B4 28 00 00 00 */ cmplwi r0, 0 -/* 802BD6B8 41 82 00 30 */ beq lbl_802BD6E8 -/* 802BD6BC 3B 3C 01 A8 */ addi r25, r28, 0x1a8 -/* 802BD6C0 7F 23 CB 78 */ mr r3, r25 -/* 802BD6C4 7F E4 FB 78 */ mr r4, r31 -/* 802BD6C8 4B FF F8 95 */ bl calcMicDist__9Z2SpotMicFP9Z2Audible -/* 802BD6CC D0 3F 00 64 */ stfs f1, 0x64(r31) -/* 802BD6D0 7F 23 CB 78 */ mr r3, r25 -/* 802BD6D4 C0 3F 00 64 */ lfs f1, 0x64(r31) -/* 802BD6D8 4B FF F9 0D */ bl calcMicPriority__9Z2SpotMicFf -/* 802BD6DC 7C 03 F0 40 */ cmplw r3, r30 -/* 802BD6E0 40 80 00 08 */ bge lbl_802BD6E8 -/* 802BD6E4 7C 7E 1B 78 */ mr r30, r3 -lbl_802BD6E8: -/* 802BD6E8 7F C3 F3 78 */ mr r3, r30 -lbl_802BD6EC: -/* 802BD6EC 39 61 00 30 */ addi r11, r1, 0x30 -/* 802BD6F0 48 0A 4B 29 */ bl _restgpr_25 -/* 802BD6F4 80 01 00 34 */ lwz r0, 0x34(r1) -/* 802BD6F8 7C 08 03 A6 */ mtlr r0 -/* 802BD6FC 38 21 00 30 */ addi r1, r1, 0x30 -/* 802BD700 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/calcVolumeFactor__9Z2SpotMicFi.s b/asm/Z2AudioLib/Z2Audience/calcVolumeFactor__9Z2SpotMicFi.s deleted file mode 100644 index db05d460a51..00000000000 --- a/asm/Z2AudioLib/Z2Audience/calcVolumeFactor__9Z2SpotMicFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_802BCDE8: -/* 802BCDE8 54 80 10 3A */ slwi r0, r4, 2 -/* 802BCDEC C0 23 00 08 */ lfs f1, 8(r3) -/* 802BCDF0 7C 83 02 14 */ add r4, r3, r0 -/* 802BCDF4 C0 04 00 18 */ lfs f0, 0x18(r4) -/* 802BCDF8 EC 41 00 28 */ fsubs f2, f1, f0 -/* 802BCDFC C0 23 00 04 */ lfs f1, 4(r3) -/* 802BCE00 C0 03 00 00 */ lfs f0, 0(r3) -/* 802BCE04 EC 01 00 28 */ fsubs f0, f1, f0 -/* 802BCE08 EC 02 00 24 */ fdivs f0, f2, f0 -/* 802BCE0C D0 04 00 20 */ stfs f0, 0x20(r4) -/* 802BCE10 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/calc__9Z2AudibleFv.s b/asm/Z2AudioLib/Z2Audience/calc__9Z2AudibleFv.s deleted file mode 100644 index f2c5fc94611..00000000000 --- a/asm/Z2AudioLib/Z2Audience/calc__9Z2AudibleFv.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_802BBE98: -/* 802BBE98 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802BBE9C 7C 08 02 A6 */ mflr r0 -/* 802BBEA0 90 01 00 14 */ stw r0, 0x14(r1) -/* 802BBEA4 7C 64 1B 78 */ mr r4, r3 -/* 802BBEA8 88 03 00 10 */ lbz r0, 0x10(r3) -/* 802BBEAC 54 00 E7 3F */ rlwinm. r0, r0, 0x1c, 0x1c, 0x1f -/* 802BBEB0 41 82 00 10 */ beq lbl_802BBEC0 -/* 802BBEB4 38 64 00 14 */ addi r3, r4, 0x14 -/* 802BBEB8 38 84 00 04 */ addi r4, r4, 4 -/* 802BBEBC 4B FF FE 21 */ bl func_802BBCDC -lbl_802BBEC0: -/* 802BBEC0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802BBEC4 7C 08 03 A6 */ mtlr r0 -/* 802BBEC8 38 21 00 10 */ addi r1, r1, 0x10 -/* 802BBECC 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/clearMicState__9Z2SpotMicFi.s b/asm/Z2AudioLib/Z2Audience/clearMicState__9Z2SpotMicFi.s deleted file mode 100644 index bd0f03b9e7e..00000000000 --- a/asm/Z2AudioLib/Z2Audience/clearMicState__9Z2SpotMicFi.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_802BCDA8: -/* 802BCDA8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802BCDAC 7C 08 02 A6 */ mflr r0 -/* 802BCDB0 90 01 00 14 */ stw r0, 0x14(r1) -/* 802BCDB4 38 00 00 00 */ li r0, 0 -/* 802BCDB8 54 85 10 3A */ slwi r5, r4, 2 -/* 802BCDBC 7C A3 2A 14 */ add r5, r3, r5 -/* 802BCDC0 90 05 00 10 */ stw r0, 0x10(r5) -/* 802BCDC4 C0 03 00 0C */ lfs f0, 0xc(r3) -/* 802BCDC8 D0 05 00 18 */ stfs f0, 0x18(r5) -/* 802BCDCC 7C A3 22 14 */ add r5, r3, r4 -/* 802BCDD0 98 05 00 26 */ stb r0, 0x26(r5) -/* 802BCDD4 48 00 00 15 */ bl calcVolumeFactor__9Z2SpotMicFi -/* 802BCDD8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802BCDDC 7C 08 03 A6 */ mtlr r0 -/* 802BCDE0 38 21 00 10 */ addi r1, r1, 0x10 -/* 802BCDE4 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/convertAbsToRel__10Z2AudienceFR3VecP3Veci.s b/asm/Z2AudioLib/Z2Audience/convertAbsToRel__10Z2AudienceFR3VecP3Veci.s deleted file mode 100644 index ba3d993e396..00000000000 --- a/asm/Z2AudioLib/Z2Audience/convertAbsToRel__10Z2AudienceFR3VecP3Veci.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_802BD92C: -/* 802BD92C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802BD930 7C 08 02 A6 */ mflr r0 -/* 802BD934 90 01 00 14 */ stw r0, 0x14(r1) -/* 802BD938 7C 60 1B 78 */ mr r0, r3 -/* 802BD93C 1C 66 00 74 */ mulli r3, r6, 0x74 -/* 802BD940 38 63 01 34 */ addi r3, r3, 0x134 -/* 802BD944 7C 60 1A 14 */ add r3, r0, r3 -/* 802BD948 4B FF F3 35 */ bl convertAbsToRel__13Z2AudioCameraCFR3VecP3Vec -/* 802BD94C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802BD950 7C 08 03 A6 */ mtlr r0 -/* 802BD954 38 21 00 10 */ addi r1, r1, 0x10 -/* 802BD958 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/convertAbsToRel__13Z2AudioCameraCFR3VecP3Vec.s b/asm/Z2AudioLib/Z2Audience/convertAbsToRel__13Z2AudioCameraCFR3VecP3Vec.s deleted file mode 100644 index 21b9d835eff..00000000000 --- a/asm/Z2AudioLib/Z2Audience/convertAbsToRel__13Z2AudioCameraCFR3VecP3Vec.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_802BCC7C: -/* 802BCC7C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802BCC80 7C 08 02 A6 */ mflr r0 -/* 802BCC84 90 01 00 14 */ stw r0, 0x14(r1) -/* 802BCC88 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802BCC8C 93 C1 00 08 */ stw r30, 8(r1) -/* 802BCC90 7C 7E 1B 78 */ mr r30, r3 -/* 802BCC94 7C BF 2B 78 */ mr r31, r5 -/* 802BCC98 48 08 A0 D5 */ bl PSMTXMultVec -/* 802BCC9C 7F C3 F3 78 */ mr r3, r30 -/* 802BCCA0 7F E4 FB 78 */ mr r4, r31 -/* 802BCCA4 48 00 00 1D */ bl isInSight__13Z2AudioCameraCFR3Vec -/* 802BCCA8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802BCCAC 83 C1 00 08 */ lwz r30, 8(r1) -/* 802BCCB0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802BCCB4 7C 08 03 A6 */ mtlr r0 -/* 802BCCB8 38 21 00 10 */ addi r1, r1, 0x10 -/* 802BCCBC 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/convertAbsToRel__13Z2AudioCameraFP9Z2Audiblei.s b/asm/Z2AudioLib/Z2Audience/convertAbsToRel__13Z2AudioCameraFP9Z2Audiblei.s deleted file mode 100644 index c3d0ad3d1d5..00000000000 --- a/asm/Z2AudioLib/Z2Audience/convertAbsToRel__13Z2AudioCameraFP9Z2Audiblei.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_802BCBEC: -/* 802BCBEC 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 802BCBF0 7C 08 02 A6 */ mflr r0 -/* 802BCBF4 90 01 00 34 */ stw r0, 0x34(r1) -/* 802BCBF8 39 61 00 30 */ addi r11, r1, 0x30 -/* 802BCBFC 48 0A 55 E1 */ bl _savegpr_29 -/* 802BCC00 7C 7D 1B 78 */ mr r29, r3 -/* 802BCC04 7C 9E 23 78 */ mr r30, r4 -/* 802BCC08 7F C3 F3 78 */ mr r3, r30 -/* 802BCC0C 7C A4 2B 78 */ mr r4, r5 -/* 802BCC10 4B FF F5 F5 */ bl getChannel__9Z2AudibleFi -/* 802BCC14 28 03 00 00 */ cmplwi r3, 0 -/* 802BCC18 41 82 00 4C */ beq lbl_802BCC64 -/* 802BCC1C 3B E3 00 14 */ addi r31, r3, 0x14 -/* 802BCC20 7F A3 EB 78 */ mr r3, r29 -/* 802BCC24 38 9E 00 04 */ addi r4, r30, 4 -/* 802BCC28 7F E5 FB 78 */ mr r5, r31 -/* 802BCC2C 48 08 A1 41 */ bl PSMTXMultVec -/* 802BCC30 7F E3 FB 78 */ mr r3, r31 -/* 802BCC34 48 08 A5 1D */ bl PSVECMag -/* 802BCC38 D0 3F 00 0C */ stfs f1, 0xc(r31) -/* 802BCC3C 38 61 00 08 */ addi r3, r1, 8 -/* 802BCC40 E0 1F 00 00 */ psq_l f0, 0(r31), 0, 0 /* qr0 */ -/* 802BCC44 C0 3F 00 08 */ lfs f1, 8(r31) -/* 802BCC48 F0 03 00 00 */ psq_st f0, 0(r3), 0, 0 /* qr0 */ -/* 802BCC4C D0 21 00 10 */ stfs f1, 0x10(r1) -/* 802BCC50 C0 1D 00 58 */ lfs f0, 0x58(r29) -/* 802BCC54 EC 01 00 2A */ fadds f0, f1, f0 -/* 802BCC58 D0 01 00 10 */ stfs f0, 0x10(r1) -/* 802BCC5C 48 08 A4 F5 */ bl PSVECMag -/* 802BCC60 D0 3F 00 10 */ stfs f1, 0x10(r31) -lbl_802BCC64: -/* 802BCC64 39 61 00 30 */ addi r11, r1, 0x30 -/* 802BCC68 48 0A 55 C1 */ bl _restgpr_29 -/* 802BCC6C 80 01 00 34 */ lwz r0, 0x34(r1) -/* 802BCC70 7C 08 03 A6 */ mtlr r0 -/* 802BCC74 38 21 00 30 */ addi r1, r1, 0x30 -/* 802BCC78 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/deleteAudible__10Z2AudienceFP10JAIAudible.s b/asm/Z2AudioLib/Z2Audience/deleteAudible__10Z2AudienceFP10JAIAudible.s deleted file mode 100644 index abe21a98cee..00000000000 --- a/asm/Z2AudioLib/Z2Audience/deleteAudible__10Z2AudienceFP10JAIAudible.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_802BD4D4: -/* 802BD4D4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802BD4D8 7C 08 02 A6 */ mflr r0 -/* 802BD4DC 90 01 00 14 */ stw r0, 0x14(r1) -/* 802BD4E0 28 04 00 00 */ cmplwi r4, 0 -/* 802BD4E4 41 82 00 1C */ beq lbl_802BD500 -/* 802BD4E8 7C 83 23 78 */ mr r3, r4 -/* 802BD4EC 38 80 00 01 */ li r4, 1 -/* 802BD4F0 81 83 00 00 */ lwz r12, 0(r3) -/* 802BD4F4 81 8C 00 08 */ lwz r12, 8(r12) -/* 802BD4F8 7D 89 03 A6 */ mtctr r12 -/* 802BD4FC 4E 80 04 21 */ bctrl -lbl_802BD500: -/* 802BD500 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802BD504 7C 08 03 A6 */ mtlr r0 -/* 802BD508 38 21 00 10 */ addi r1, r1, 0x10 -/* 802BD50C 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/func_802BBCDC.s b/asm/Z2AudioLib/Z2Audience/func_802BBCDC.s deleted file mode 100644 index c4d2414da6d..00000000000 --- a/asm/Z2AudioLib/Z2Audience/func_802BBCDC.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_802BBCDC: -/* 802BBCDC E0 24 00 00 */ psq_l f1, 0(r4), 0, 0 /* qr0 */ -/* 802BBCE0 E0 03 00 00 */ psq_l f0, 0(r3), 0, 0 /* qr0 */ -/* 802BBCE4 10 01 00 28 */ ps_sub f0, f1, f0 -/* 802BBCE8 F0 03 00 0C */ psq_st f0, 12(r3), 0, 0 /* qr0 */ -/* 802BBCEC E0 24 80 08 */ psq_l f1, 8(r4), 1, 0 /* qr0 */ -/* 802BBCF0 E0 03 80 08 */ psq_l f0, 8(r3), 1, 0 /* qr0 */ -/* 802BBCF4 10 01 00 28 */ ps_sub f0, f1, f0 -/* 802BBCF8 F0 03 80 14 */ psq_st f0, 20(r3), 1, 0 /* qr0 */ -/* 802BBCFC C0 04 00 00 */ lfs f0, 0(r4) -/* 802BBD00 D0 03 00 00 */ stfs f0, 0(r3) -/* 802BBD04 C0 04 00 04 */ lfs f0, 4(r4) -/* 802BBD08 D0 03 00 04 */ stfs f0, 4(r3) -/* 802BBD0C C0 04 00 08 */ lfs f0, 8(r4) -/* 802BBD10 D0 03 00 08 */ stfs f0, 8(r3) -/* 802BBD14 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/func_802BDCB0.s b/asm/Z2AudioLib/Z2Audience/func_802BDCB0.s deleted file mode 100644 index f528f141481..00000000000 --- a/asm/Z2AudioLib/Z2Audience/func_802BDCB0.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_802BDCB0: -/* 802BDCB0 E0 64 00 04 */ psq_l f3, 4(r4), 0, 0 /* qr0 */ -/* 802BDCB4 E0 45 00 04 */ psq_l f2, 4(r5), 0, 0 /* qr0 */ -/* 802BDCB8 10 63 00 B2 */ ps_mul f3, f3, f2 -/* 802BDCBC E0 04 00 00 */ psq_l f0, 0(r4), 0, 0 /* qr0 */ -/* 802BDCC0 E0 45 00 00 */ psq_l f2, 0(r5), 0, 0 /* qr0 */ -/* 802BDCC4 10 40 18 BA */ ps_madd f2, f0, f2, f3 -/* 802BDCC8 10 42 18 D4 */ ps_sum0 f2, f2, f3, f3 -/* 802BDCCC E0 84 00 04 */ psq_l f4, 4(r4), 0, 0 /* qr0 */ -/* 802BDCD0 E0 66 00 04 */ psq_l f3, 4(r6), 0, 0 /* qr0 */ -/* 802BDCD4 10 84 00 F2 */ ps_mul f4, f4, f3 -/* 802BDCD8 E0 66 00 00 */ psq_l f3, 0(r6), 0, 0 /* qr0 */ -/* 802BDCDC 10 60 20 FA */ ps_madd f3, f0, f3, f4 -/* 802BDCE0 10 63 21 14 */ ps_sum0 f3, f3, f4, f4 -/* 802BDCE4 C0 83 00 68 */ lfs f4, 0x68(r3) -/* 802BDCE8 EC 01 00 B2 */ fmuls f0, f1, f2 -/* 802BDCEC EC 44 00 2A */ fadds f2, f4, f0 -/* 802BDCF0 EC 01 00 F2 */ fmuls f0, f1, f3 -/* 802BDCF4 EC 04 00 2A */ fadds f0, f4, f0 -/* 802BDCF8 EC 22 00 24 */ fdivs f1, f2, f0 -/* 802BDCFC 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/getChannel__9Z2AudibleFi.s b/asm/Z2AudioLib/Z2Audience/getChannel__9Z2AudibleFi.s deleted file mode 100644 index 3ff64f01c3f..00000000000 --- a/asm/Z2AudioLib/Z2Audience/getChannel__9Z2AudibleFi.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_802BC204: -/* 802BC204 7C 60 1B 78 */ mr r0, r3 -/* 802BC208 1C 64 00 38 */ mulli r3, r4, 0x38 -/* 802BC20C 38 63 00 2C */ addi r3, r3, 0x2c -/* 802BC210 7C 60 1A 14 */ add r3, r0, r3 -/* 802BC214 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/getDistVolBit__9Z2AudibleFv.s b/asm/Z2AudioLib/Z2Audience/getDistVolBit__9Z2AudibleFv.s deleted file mode 100644 index 49271d4b99d..00000000000 --- a/asm/Z2AudioLib/Z2Audience/getDistVolBit__9Z2AudibleFv.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_802BC218: -/* 802BC218 A0 03 00 12 */ lhz r0, 0x12(r3) -/* 802BC21C 28 00 00 00 */ cmplwi r0, 0 -/* 802BC220 41 82 00 20 */ beq lbl_802BC240 -/* 802BC224 54 03 07 7F */ clrlwi. r3, r0, 0x1d -/* 802BC228 4C 82 00 20 */ bnelr -/* 802BC22C 54 00 06 77 */ rlwinm. r0, r0, 0, 0x19, 0x1b -/* 802BC230 41 82 00 10 */ beq lbl_802BC240 -/* 802BC234 7C 03 26 70 */ srawi r3, r0, 4 -/* 802BC238 38 63 00 07 */ addi r3, r3, 7 -/* 802BC23C 4E 80 00 20 */ blr -lbl_802BC240: -/* 802BC240 38 60 00 00 */ li r3, 0 -/* 802BC244 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/getMaxChannels__10Z2AudienceFv.s b/asm/Z2AudioLib/Z2Audience/getMaxChannels__10Z2AudienceFv.s deleted file mode 100644 index db0584886fc..00000000000 --- a/asm/Z2AudioLib/Z2Audience/getMaxChannels__10Z2AudienceFv.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_802BDED4: -/* 802BDED4 80 63 01 D4 */ lwz r3, 0x1d4(r3) -/* 802BDED8 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/getOuterParams__9Z2AudibleFi.s b/asm/Z2AudioLib/Z2Audience/getOuterParams__9Z2AudibleFi.s deleted file mode 100644 index 26f5a093279..00000000000 --- a/asm/Z2AudioLib/Z2Audience/getOuterParams__9Z2AudibleFi.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_802BBED0: -/* 802BBED0 7C 60 1B 78 */ mr r0, r3 -/* 802BBED4 1C 64 00 38 */ mulli r3, r4, 0x38 -/* 802BBED8 38 63 00 2C */ addi r3, r3, 0x2c -/* 802BBEDC 7C 60 1A 14 */ add r3, r0, r3 -/* 802BBEE0 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/init__13Z2AudioCameraFv.s b/asm/Z2AudioLib/Z2Audience/init__13Z2AudioCameraFv.s deleted file mode 100644 index f138f5b9efa..00000000000 --- a/asm/Z2AudioLib/Z2Audience/init__13Z2AudioCameraFv.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_802BC788: -/* 802BC788 94 21 FF B0 */ stwu r1, -0x50(r1) -/* 802BC78C 7C 08 02 A6 */ mflr r0 -/* 802BC790 90 01 00 54 */ stw r0, 0x54(r1) -/* 802BC794 93 E1 00 4C */ stw r31, 0x4c(r1) -/* 802BC798 7C 7F 1B 78 */ mr r31, r3 -/* 802BC79C 38 61 00 14 */ addi r3, r1, 0x14 -/* 802BC7A0 48 08 9C E5 */ bl PSMTXIdentity -/* 802BC7A4 C0 02 C1 04 */ lfs f0, lit_1135(r2) -/* 802BC7A8 D0 01 00 08 */ stfs f0, 8(r1) -/* 802BC7AC D0 01 00 0C */ stfs f0, 0xc(r1) -/* 802BC7B0 D0 01 00 10 */ stfs f0, 0x10(r1) -/* 802BC7B4 7F E3 FB 78 */ mr r3, r31 -/* 802BC7B8 38 81 00 14 */ addi r4, r1, 0x14 -/* 802BC7BC 38 A1 00 08 */ addi r5, r1, 8 -/* 802BC7C0 38 C0 00 01 */ li r6, 1 -/* 802BC7C4 48 00 00 19 */ bl setCameraState__13Z2AudioCameraFPA4_CfR3Vecb -/* 802BC7C8 83 E1 00 4C */ lwz r31, 0x4c(r1) -/* 802BC7CC 80 01 00 54 */ lwz r0, 0x54(r1) -/* 802BC7D0 7C 08 03 A6 */ mtlr r0 -/* 802BC7D4 38 21 00 50 */ addi r1, r1, 0x50 -/* 802BC7D8 4E 80 00 20 */ blr diff --git a/asm/Z2AudioLib/Z2Audience/setAudioCamera__10Z2AudienceFPA4_fR3VecR3Vecffbib.s b/asm/Z2AudioLib/Z2Audience/setAudioCamera__10Z2AudienceFPA4_fR3VecR3Vecffbib.s deleted file mode 100644 index 3f66dbf13c8..00000000000 --- a/asm/Z2AudioLib/Z2Audience/setAudioCamera__10Z2AudienceFPA4_fR3VecR3Vecffbib.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_802BD2DC: -/* 802BD2DC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802BD2E0 7C 08 02 A6 */ mflr r0 -/* 802BD2E4 90 01 00 24 */ stw r0, 0x24(r1) -/* 802BD2E8 39 61 00 20 */ addi r11, r1, 0x20 -/* 802BD2EC 48 0A 4E F1 */ bl _savegpr_29 -/* 802BD2F0 7C 7D 1B 78 */ mr r29, r3 -/* 802BD2F4 7D 1E 43 78 */ mr r30, r8 -/* 802BD2F8 1C 7E 00 74 */ mulli r3, r30, 0x74 -/* 802BD2FC 3B E3 01 34 */ addi r31, r3, 0x134 -/* 802BD300 7F FD FA 14 */ add r31, r29, r31 -/* 802BD304 7F E3 FB 78 */ mr r3, r31 -/* 802BD308 7D 28 4B 78 */ mr r8, r9 -/* 802BD30C 4B FF F5 A1 */ bl setCameraState__13Z2AudioCameraFPA4_fR3VecR3Vecffbb -/* 802BD310 80 7D 01 D0 */ lwz r3, 0x1d0(r29) -/* 802BD314 7F E4 FB 78 */ mr r4, r31 -/* 802BD318 7F C5 F3 78 */ mr r5, r30 -/* 802BD31C 4B FF FA F9 */ bl setMicState__9Z2SpotMicFP13Z2AudioCamerai -/* 802BD320 39 61 00 20 */ addi r11, r1, 0x20 -/* 802BD324 48 0A 4F 05 */ bl _restgpr_29 -/* 802BD328 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802BD32C 7C 08 03 A6 */ mtlr r0 -/* 802BD330 38 21 00 20 */ addi r1, r1, 0x20 -/* 802BD334 4E 80 00 20 */ blr diff --git a/include/JSystem/J3DU/J3DUD.h b/include/JSystem/J3DU/J3DUD.h new file mode 100644 index 00000000000..f0f0e6e963e --- /dev/null +++ b/include/JSystem/J3DU/J3DUD.h @@ -0,0 +1,13 @@ +#ifndef J3DUD_H +#define J3DUD_H + +#include "MSL_C/math.h" +#include "dolphin/types.h" + +namespace J3DUD { + inline f32 JMAAbs(f32 x) { + return __fabsf(x); + } +} + +#endif /* J3DUD_H */ \ No newline at end of file diff --git a/include/JSystem/JAudio2/JAISeq.h b/include/JSystem/JAudio2/JAISeq.h index 88dde573f4b..9d295b83809 100644 --- a/include/JSystem/JAudio2/JAISeq.h +++ b/include/JSystem/JAudio2/JAISeq.h @@ -16,7 +16,7 @@ public: TInner() : mSeqData(NULL, 0) {} /* 0x000 */ JASTrack outputTrack; - /* 0x248 */ JASPoolAllocObject* mSoundChild[32]; + /* 0x248 */ JAISoundChild* mSoundChild[32]; /* 0x2C8 */ JAITempoMgr mTempoMgr; /* 0x2D8 */ JASSoundParams mSoundParams; /* 0x2EC */ JAISeqData mSeqData; diff --git a/include/JSystem/JAudio2/JASHeapCtrl.h b/include/JSystem/JAudio2/JASHeapCtrl.h index 581135682f3..ce17158c6fa 100644 --- a/include/JSystem/JAudio2/JASHeapCtrl.h +++ b/include/JSystem/JAudio2/JASHeapCtrl.h @@ -61,15 +61,15 @@ public: }; template -class JASPoolAllocObject : public T { +class JASPoolAllocObject { public: static void* operator new(size_t n) { JASMemPool* memPool = getMemPool(); - return memPool->alloc(n); + return memPool->alloc(sizeof(T)); } static void operator delete(void* ptr, size_t n) { JASMemPool* memPool_ = getMemPool(); - memPool_->free(ptr, n); + memPool_->free(ptr, sizeof(T)); } static void newMemPool(int param_0) { JASMemPool* memPool_ = getMemPool(); @@ -103,15 +103,15 @@ public: }; template -class JASPoolAllocObject_MultiThreaded : public T { +class JASPoolAllocObject_MultiThreaded { public: static void* operator new(size_t n) { JASMemPool_MultiThreaded* memPool_ = getMemPool(); - return memPool_->alloc(n); + return memPool_->alloc(sizeof(T)); } static void operator delete(void* ptr, size_t n) { JASMemPool_MultiThreaded* memPool_ = getMemPool(); - memPool_->free(ptr, n); + memPool_->free(ptr, sizeof(T)); } static void newMemPool(int n) { diff --git a/include/JSystem/JGeometry.h b/include/JSystem/JGeometry.h index eddf8149849..4b1503f5e49 100644 --- a/include/JSystem/JGeometry.h +++ b/include/JSystem/JGeometry.h @@ -46,9 +46,9 @@ inline void setTVec3f(const f32* vec_a, f32* vec_b) { register f32 b_x; asm { - psq_l a_x, 0(v_a), 0, 0 /* qr0 */ + psq_l a_x, 0(v_a), 0, 0 lfs b_x, 8(v_a) - psq_st a_x, 0(v_b), 0, 0 /* qr0 */ + psq_st a_x, 0(v_b), 0, 0 stfs b_x, 8(v_b) }; } @@ -165,6 +165,21 @@ struct TVec3 { scale(norm); } + void normalize(const TVec3& other) { + f32 sq = other.squared(); + if (sq <= FLT_EPSILON * 32.0f) { + zero(); + return; + } + f32 norm; + if (sq <= 0.0f) { + norm = sq; + } else { + norm = fsqrt_step(sq); + } + scale(norm, other); + } + f32 length() const { return PSVECMag((Vec*)this); } @@ -184,6 +199,22 @@ struct TVec3 { }; } + void scale(register f32 sc, const TVec3& other) { + register const f32* src = &other.x; + register f32 z; + register f32 x_y; + register f32* dst = &x; + register f32 zres; + asm { + psq_l x_y, 0(src), 0, 0 + psq_l z, 8(src), 1, 0 + ps_muls0 x_y, x_y, sc + psq_st x_y, 0(dst), 0, 0 + ps_muls0 zres, z, sc + psq_st zres, 8(dst), 1, 0 + }; + } + void negateInternal(TVec3* dst) { register f32* rdst = &dst->x; const register f32* src = &x; @@ -232,6 +263,25 @@ struct TVec3 { } scale(norm * len); } + + f32 dot(const TVec3& other) const { + register const f32* pThis = &x; + register const f32* pOther = &other.x; + register f32 otherReg; + register f32 thisyz; + register f32 res; + register f32 thisxy; + asm { + psq_l thisyz, 4(pThis), 0, 0 + psq_l otherReg, 4(pOther), 0, 0 + ps_mul thisyz, thisyz, otherReg + psq_l thisxy, 0(pThis), 0, 0 + psq_l otherReg, 0(pOther), 0, 0 + ps_madd res, thisxy, otherReg, thisyz + ps_sum0 res, res, thisyz, thisyz + }; + return res; + } }; template @@ -272,6 +322,23 @@ struct TVec2 { return (x >= other.x) && (y >= other.y) ? true : false; } + f32 dot(const TVec2& other) { + return x * other.x + y * other.y; + } + + f32 squared() { + return dot(*this); + } + + f32 length() { + f32 sqr = squared(); + if (sqr <= 0.0f) { + return sqr; + } + sqr *= fsqrt_step(sqr); + return sqr; + } + T x; T y; }; @@ -330,6 +397,19 @@ struct TBox2 : TBox > { void set(f32 x0, f32 y0, f32 x1, f32 y1) { i.set(x0, y0); f.set(x1, y1); } }; +template +struct TUtil { + static inline T clamp(T v, T min, T max) { + if (v < min) { + return min; + } + if (v > max) { + return max; + } + return v; + } +}; + // clang-format on } // namespace JGeometry diff --git a/include/JSystem/JMath/JMATrigonometric.h b/include/JSystem/JMath/JMATrigonometric.h index 2b09c3939da..6fe4c321695 100644 --- a/include/JSystem/JMath/JMATrigonometric.h +++ b/include/JSystem/JMath/JMATrigonometric.h @@ -16,6 +16,20 @@ struct TSinCosTable { } return table[(u16)(8192.0f * v) & 0x1fff].first; } + + inline f32 sinDegree(f32 degree) { + if (degree < 0.0f) { + return -table[(u16)(-22.755556106567383f * degree) & 0x1fffU].first; + } + return table[(u16)(22.755556106567383f * degree) & 0x1fffU].first; + } + + inline f32 cosDegree(f32 degree) { + if (degree < 0.0f) { + degree = -degree; + } + return table[(u16)(22.755556106567383f * degree) & 0x1fffU].second; + } }; struct TAtanTable { @@ -52,4 +66,12 @@ inline f32 JMASinLap(f32 v) { return JMath::sincosTable_.sinLap(v); } +inline f32 JMASinDegree(f32 degree) { + return JMath::sincosTable_.sinDegree(degree); +} + +inline f32 JMACosDegree(f32 degree) { + return JMath::sincosTable_.cosDegree(degree); +} + #endif /* JMATRIGONOMETRIC_H */ diff --git a/include/JSystem/JMath/JMath.h b/include/JSystem/JMath/JMath.h index f22eeaf2e45..a6978cdb050 100644 --- a/include/JSystem/JMath/JMath.h +++ b/include/JSystem/JMath/JMath.h @@ -38,6 +38,29 @@ inline f32 fastReciprocal(f32 value) { return JMAFastReciprocal(value); } +inline void gekko_ps_copy12(register f32* dst, register const f32* src) { + register f32 src0; + register f32 src1; + register f32 src2; + register f32 src3; + register f32 src4; + register f32 src5; + asm { + psq_l src0, 0(src), 0, 0 + psq_l src1, 8(src), 0, 0 + psq_l src2, 16(src), 0, 0 + psq_l src3, 24(src), 0, 0 + psq_l src4, 32(src), 0, 0 + psq_l src5, 40(src), 0, 0 + psq_st src0, 0(dst), 0, 0 + psq_st src1, 8(dst), 0, 0 + psq_st src2, 16(dst), 0, 0 + psq_st src3, 24(dst), 0, 0 + psq_st src4, 32(dst), 0, 0 + psq_st src5, 40(dst), 0, 0 + }; +} + }; // namespace JMath #endif /* JMATH_H */ diff --git a/include/JSystem/TPosition3.hh b/include/JSystem/TPosition3.hh new file mode 100644 index 00000000000..80138dd749e --- /dev/null +++ b/include/JSystem/TPosition3.hh @@ -0,0 +1,40 @@ +#ifndef TPOSITION3_H +#define TPOSITION3_H + +#include "dolphin/mtx/mtx.h" +#include "JSystem/JMath/JMath.h" + +namespace JGeometry { + +template +struct SMatrix34C { + T data[3][4]; +}; + +template <> +struct SMatrix34C { + f32 data[3][4]; + + void identity() { PSMTXIdentity(data); } + + typedef f32 ArrType[4]; + void set(const ArrType* src) { JMath::gekko_ps_copy12((f32*)data, (f32*)src); } + + operator ArrType*() { return data; } + operator const ArrType*() const { return data; } +}; + +template +struct TMatrix34 : public T {}; + +template +struct TRotation3 : public T {}; + +template +struct TPosition3 : public T {}; + +typedef TPosition3 > > > TPosition3f32; + +} // namespace JGeometry + +#endif \ No newline at end of file diff --git a/include/SSystem/SComponent/c_m3d_g_cir.h b/include/SSystem/SComponent/c_m3d_g_cir.h index d58bd406a40..222de788ffa 100644 --- a/include/SSystem/SComponent/c_m3d_g_cir.h +++ b/include/SSystem/SComponent/c_m3d_g_cir.h @@ -8,6 +8,11 @@ public: f32 mPosX; f32 mPosY; f32 mRadius; + + f32 GetCx() const { return mPosX; } + f32 GetCy() const { return mPosY; } + f32 GetR() const { return mRadius; } + cM2dGCir() {} virtual ~cM2dGCir() {} }; diff --git a/include/SSystem/SComponent/c_request.h b/include/SSystem/SComponent/c_request.h index c7fde53fb01..3133a502103 100644 --- a/include/SSystem/SComponent/c_request.h +++ b/include/SSystem/SComponent/c_request.h @@ -4,7 +4,11 @@ #include "dolphin/types.h" struct request_base_class { - u8 field_0x0; + struct { + u8 flag0 : 1; + u8 flag1 : 1; + u8 flag2 : 6; + } field_0x0; u8 field_0x1; u8 field_0x2; u8 field_0x3; @@ -201,8 +205,8 @@ struct request_base_class { }; int cReq_Is_Done(request_base_class*); -int cReq_Done(request_base_class*); -int cReq_Command(request_base_class*, u8); -int cReq_Create(request_base_class*, u8); +void cReq_Done(request_base_class*); +void cReq_Command(request_base_class*, u8); +void cReq_Create(request_base_class*, u8); #endif /* C_REQUEST_H */ diff --git a/include/Z2AudioLib/Z2Audience.h b/include/Z2AudioLib/Z2Audience.h index df3f518727e..47b63e02260 100644 --- a/include/Z2AudioLib/Z2Audience.h +++ b/include/Z2AudioLib/Z2Audience.h @@ -3,22 +3,72 @@ #include "JSystem/JAudio2/JAIAudience.h" #include "JSystem/JAudio2/JASGadget.h" +#include "JSystem/JAudio2/JAIAudible.h" +#include "JSystem/JAudio2/JASSoundParams.h" +#include "JSystem/JAudio2/JASHeapCtrl.h" +#include "JSystem/TPosition3.hh" #include "dolphin/mtx/mtxvec.h" struct Z2Audible; +struct JAUAudibleParam { + f32 getDopplerPower() const { + return (u32)((*(u8*)&field_0x0.raw >> 4) & 0xf) * (1.0f / 15.0f); + } + union { + struct { + u16 f0; + u16 f1; + } half; + struct { + u8 b0_0 : 1; + u8 b0_1 : 1; + u8 b0_2 : 1; + u8 b0_3 : 1; + u8 b0_4 : 1; + u8 b0_5 : 1; + u8 b0_6 : 1; + u8 b0_7 : 1; + u8 b1; + u8 b2; + u8 b3; + } bytes; + u32 raw; + } field_0x0; +}; + +struct Z2AudibleAbsPos { + /* 802BBCDC */ void calc(JGeometry::TVec3 const&); + /* 802BBD18 */ void init(JGeometry::TVec3*, JGeometry::TVec3 const&, + JGeometry::TVec3 const*); + + /* 0x00 */ JGeometry::TVec3 field_0x0; + /* 0x0C */ JGeometry::TVec3 field_0xc; +}; + struct Z2AudioCamera { /* 802BC758 */ Z2AudioCamera(); /* 802BC788 */ void init(); /* 802BC8AC */ void setCameraState(f32 (*)[4], Vec&, Vec&, f32, f32, bool, bool); /* 802BC7DC */ void setCameraState(f32 const (*)[4], Vec&, bool); /* 802BCBEC */ void convertAbsToRel(Z2Audible*, int); - /* 802BCC7C */ void convertAbsToRel(Vec&, Vec*) const; - /* 802BCCC0 */ void isInSight(Vec&) const; + /* 802BCC7C */ bool convertAbsToRel(Vec&, Vec*) const; + /* 802BCCC0 */ bool isInSight(Vec&) const; JGeometry::TVec3* getPos() { return &mPos; } + f32 getVolCenterZ() const { return mVolCenterZ; } + void setMainCamera() { mSetMainCamera = true; } + void setTargetVolume(f32 volume) { + if (volume < 0.0f) { + volume = 0.0f; + } + mTargetVolume = volume; + } + f32 getDolbyCenterZ() const { return mDolbyCenterZ; } + f32 getFovySin() const { return mFovySin; } + const JGeometry::TVec3* getVel() const { return &mVel; } - /* 0x00 */ u8 field_0x0[0x30]; // set up JGeometry::TPosition3 + /* 0x00 */ JGeometry::TPosition3f32 field_0x0; /* 0x30 */ JGeometry::TVec3 mVel; /* 0x3C */ JGeometry::TVec3 mPos; /* 0x48 */ JGeometry::TVec3 field_0x48; @@ -37,17 +87,18 @@ struct Z2SpotMic { /* 802BCDA8 */ void clearMicState(int); /* 802BCDE8 */ void calcVolumeFactor(int); /* 802BCE14 */ void setMicState(Z2AudioCamera*, int); - /* 802BCF5C */ void calcMicDist(Z2Audible*); - /* 802BCFE4 */ void calcMicPriority(f32); - /* 802BD03C */ void calcMicVolume(f32, int, f32); + /* 802BCF5C */ f32 calcMicDist(Z2Audible*); + /* 802BCFE4 */ u32 calcMicPriority(f32); + /* 802BD03C */ f32 calcMicVolume(f32, int, f32); void setPosPtr(Vec* i_posPtr) { mPosPtr = i_posPtr; } + bool isOn() const { return mMicOn; } /* 0x00 */ f32 field_0x0; /* 0x04 */ f32 field_0x4; /* 0x08 */ f32 field_0x8; /* 0x0C */ f32 field_0xc; - /* 0x10 */ int field_0x10[1]; + /* 0x10 */ Z2AudioCamera* field_0x10[1]; /* 0x14 */ Vec* mPosPtr; /* 0x18 */ f32 field_0x18[1]; /* 0x1C */ f32 field_0x1c; @@ -65,21 +116,39 @@ struct Z2Audience3DSetting { /* 802BC6A4 */ void initDolbyDist(); /* 802BC6F8 */ void updateDolbyDist(f32, f32); - /* 0x000 */ f32 field_0x0; - /* 0x004 */ f32 field_0x4; - /* 0x008 */ f32 field_0x8; - /* 0x00C */ f32 field_0xc; - /* 0x010 */ f32 field_0x10; - /* 0x014 */ f32 field_0x14; - /* 0x018 */ f32 field_0x18; - /* 0x01C */ f32 field_0x1c; - /* 0x020 */ f32 field_0x20; - /* 0x024 */ f32 field_0x24; - /* 0x028 */ f32 field_0x28; - /* 0x02C */ f32 field_0x2c; - /* 0x030 */ f32 field_0x30; - /* 0x034 */ f32 field_0x34; - /* 0x038 */ f32 field_0x38; + void calcVolumeFactorAll() { + field_0x0[1] = 1.25f * field_0x0[0]; + field_0x0[2] = 1.5f * field_0x0[0]; + field_0x0[3] = 2.0f * field_0x0[0]; + field_0x0[4] = 3.0f * field_0x0[0]; + field_0x0[5] = 4.0f * field_0x0[0]; + field_0x0[6] = 6.0f * field_0x0[0]; + field_0x0[7] = 8.0f * field_0x0[0]; + field_0x0[8] = 0.9f * field_0x0[0]; + field_0x0[9] = 0.8f * field_0x0[0]; + field_0x0[10] = 0.7f * field_0x0[0]; + field_0x0[11] = 0.6f * field_0x0[0]; + field_0x0[12] = 0.5f * field_0x0[0]; + field_0x0[13] = 0.4f * field_0x0[0]; + field_0x0[14] = 0.3f * field_0x0[0]; + for (int i = 0; i < 15; i++) { + field_0x70[i] = (field_0x40 - 1.0f) / (field_0x0[i] - field_0x3c); + } + } + + void calcPriorityFactorAll() { + for (int i = 0; i < 15; i++) { + field_0xac[i] = field_0x64 / (field_0x0[i] - field_0x3c); + } + } + + void calcFxMixFactorAll() { + for (int i = 0; i < 15; i++) { + field_0xe8[i] = (field_0x54 - field_0x50) / (field_0x0[i] - field_0x3c); + } + } + + /* 0x000 */ f32 field_0x0[15]; /* 0x03C */ f32 field_0x3c; /* 0x040 */ f32 field_0x40; /* 0x044 */ f32 field_0x44; @@ -90,7 +159,7 @@ struct Z2Audience3DSetting { /* 0x058 */ f32 field_0x58; /* 0x05C */ f32 field_0x5c; /* 0x060 */ f32 field_0x60; - /* 0x064 */ int field_0x64; + /* 0x064 */ u32 field_0x64; /* 0x068 */ f32 field_0x68; /* 0x06C */ f32 field_0x6c; /* 0x070 */ f32 field_0x70[15]; @@ -100,26 +169,68 @@ struct Z2Audience3DSetting { /* 0x125 */ bool mDolbyDistInit; }; // Size: 0x128 +struct Z2AudibleRelPos { + /* 0x00 */ JGeometry::TVec3 field_0x00; + /* 0x0C */ f32 field_0xC; + /* 0x10 */ f32 field_0x10; +}; + struct Z2AudibleChannel { /* 802BBE74 */ Z2AudibleChannel(); + void init() { + field_0x0.init(); + field_0x28 = -1.0f; + mPan = 0.5f; + mDolby = 0.0f; + field_0x34 = 1.0f; + } + + /* 0x00 */ JASSoundParams field_0x0; + /* 0x14 */ Z2AudibleRelPos field_0x14; + /* 0x28 */ f32 field_0x28; + /* 0x2c */ f32 mPan; + /* 0x30 */ f32 mDolby; + /* 0x34 */ f32 field_0x34; +}; + +struct Z2Audible : public JAIAudible, public JASPoolAllocObject { + /* 802BBD94 */ Z2Audible(JGeometry::TVec3 const&, JGeometry::TVec3 const*, u32, bool); + /* 802BBE98 */ void calc(); + /* 802BBED0 */ JASSoundParams* getOuterParams(int); + /* 802BBEE4 */ void setOuterParams(JASSoundParams const&, JASSoundParams const&, int); + /* 802BC204 */ Z2AudibleChannel* getChannel(int); + /* 802BC218 */ u32 getDistVolBit(); + /* 802BD510 */ ~Z2Audible(); + bool isDoppler() { + return ((*(u8*)&field_0x10.field_0x0) >> 4) & 0xf; + } + JAUAudibleParam* getAudibleParam() { return &field_0x10; } + const JAUAudibleParam* getAudibleParam() const { return &field_0x10; } + void setAudibleParam(JAUAudibleParam param) { field_0x10 = param; } + const JGeometry::TVec3* getVel() const { return &field_0x14.field_0xc; } + + /* 0x10 */ JAUAudibleParam field_0x10; + /* 0x14 */ Z2AudibleAbsPos field_0x14; + /* 0x2C */ Z2AudibleChannel field_0x2c[1]; + /* 0x64 */ f32 field_0x64[1]; }; struct Z2Audience : public JAIAudience, public JASGlobalInstance { /* 802BD130 */ Z2Audience(); /* 802BD2DC */ void setAudioCamera(f32 (*)[4], Vec&, Vec&, f32, f32, bool, int, bool); - /* 802BD704 */ void calcOffMicSound(f32); + /* 802BD704 */ f32 calcOffMicSound(f32); /* 802BD90C */ void setTargetVolume(f32, int); - /* 802BD92C */ void convertAbsToRel(Vec&, Vec*, int); - /* 802BD95C */ void calcRelPosVolume(Vec const&, f32, int); - /* 802BDA44 */ void calcRelPosPan(Vec const&, int); - /* 802BDB44 */ void calcRelPosDolby(Vec const&, int); - /* 802BDBDC */ void calcVolume_(f32, int) const; - /* 802BDC44 */ void calcDeltaPriority_(f32, int, bool) const; - /* 802BDCB0 */ void calcPitchDoppler_(JGeometry::TVec3 const&, + /* 802BD92C */ bool convertAbsToRel(Vec&, Vec*, int); + /* 802BD95C */ f32 calcRelPosVolume(Vec const&, f32, int); + /* 802BDA44 */ f32 calcRelPosPan(Vec const&, int); + /* 802BDB44 */ f32 calcRelPosDolby(Vec const&, int); + /* 802BDBDC */ f32 calcVolume_(f32, int) const; + /* 802BDC44 */ u32 calcDeltaPriority_(f32, int, bool) const; + /* 802BDCB0 */ f32 calcPitchDoppler_(JGeometry::TVec3 const&, JGeometry::TVec3 const&, JGeometry::TVec3 const&, f32) const; - /* 802BDD00 */ void calcFxMix_(f32, int) const; - /* 802BDD48 */ void calcPitch_(Z2AudibleChannel*, Z2Audible const*, Z2AudioCamera const*) const; + /* 802BDD00 */ f32 calcFxMix_(f32, int) const; + /* 802BDD48 */ f32 calcPitch_(Z2AudibleChannel*, Z2Audible const*, Z2AudioCamera const*) const; /* 802BD1FC */ virtual ~Z2Audience(); /* 802BD338 */ virtual JAIAudible* newAudible(JGeometry::TVec3 const&, JAISoundID, @@ -135,6 +246,7 @@ struct Z2Audience : public JAIAudience, public JASGlobalInstance { JGeometry::setTVec3f(*(Vec*)mAudioCamera[0].getPos(), *(Vec*)pos); return pos; } + Z2Audience3DSetting* getSetting() { return &mSetting; } /* 0x004 */ f32 field_0x4; /* 0x008 */ u8 field_0x8; diff --git a/include/Z2AudioLib/Z2SoundInfo.h b/include/Z2AudioLib/Z2SoundInfo.h index 1212440ca4c..e2ce2449b04 100644 --- a/include/Z2AudioLib/Z2SoundInfo.h +++ b/include/Z2AudioLib/Z2SoundInfo.h @@ -23,7 +23,7 @@ struct JAIStreamDataMgr { struct Z2SoundInfo /* : public JAISoundInfo, public JAUSoundInfo, public JAIStreamDataMgr */ : public JASGlobalInstance { /* 802BB00C */ void getBgmSeqResourceID(JAISoundID) const; - /* 802BB158 */ void getAudibleSwFull(JAISoundID); + /* 802BB158 */ u32 getAudibleSwFull(JAISoundID); /* 802BB448 */ void getAudibleSw(JAISoundID) const; /* 802BBA10 */ void getStreamFilePath(JAISoundID); /* 802BBA88 */ void getStreamFileEntry(JAISoundID); @@ -39,4 +39,8 @@ struct Z2SoundInfo /* : public JAISoundInfo, public JAUSoundInfo, public JAIStre /* 802BBBE0 */ virtual ~Z2SoundInfo(); }; +inline Z2SoundInfo* Z2GetSoundInfo() { + return JASGlobalInstance::getInstance(); +} + #endif /* Z2SOUNDINFO_H */ diff --git a/libs/JSystem/JAudio2/JAISeq.cpp b/libs/JSystem/JAudio2/JAISeq.cpp index 1ed24481849..974c9c83c56 100644 --- a/libs/JSystem/JAudio2/JAISeq.cpp +++ b/libs/JSystem/JAudio2/JAISeq.cpp @@ -7,6 +7,8 @@ #include "JSystem/JAudio2/JAISeqMgr.h" #include "JSystem/JAudio2/JASAudioReseter.h" // JASCriticalSection #include "JSystem/JAudio2/JAISoundChild.h" +#include "JSystem/JAudio2/JAIAudience.h" +#include "JSystem/JKernel/JKRHeap.h" #include "dol2asm.h" // @@ -90,22 +92,10 @@ 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 bool func_802A0A6C(JASTrack*) { - nofralloc -#include "asm/JSystem/JAudio2/JAISeq/func_802A0A6C.s" -} -#pragma pop -#endif /* 803C98F4-803C9928 026A14 0030+04 1/1 2/2 0/0 .data __vt__6JAISeq */ SECTION_DATA extern void* __vt__6JAISeq[12 + 1 /* padding */] = { @@ -196,11 +186,12 @@ void JAISeq::playSeqData_(JASSoundParams const& param_0, JAISoundActivity param_ static u8 lit_716[12]; /* 802A0CA4-802A0E48 29B5E4 01A4+00 1/1 0/0 0/0 .text reserveChildTracks___6JAISeqFi */ -// operator new? +// Matches with literals #ifdef NONMATCHING void JAISeq::reserveChildTracks_(int param_0) { for (int i = 0; i < 2; i++) { - JASTrack* track = new JASPoolAllocObject_MultiThreaded(); + JASPoolAllocObject_MultiThreaded* allocobj = new JASPoolAllocObject_MultiThreaded(); + JASTrack* track = new (allocobj) JASTrack(); if (track) { track->setAutoDelete(true); inner_.outputTrack.connectChild(i, track); @@ -208,7 +199,8 @@ void JAISeq::reserveChildTracks_(int param_0) { if (i * 16 + j >= param_0) { continue; } - JASTrack* track2 = new JASPoolAllocObject_MultiThreaded(); + JASPoolAllocObject_MultiThreaded* allocobj2 = new JASPoolAllocObject_MultiThreaded(); + JASTrack* track2 = new (allocobj2) JASTrack(); if (track2) { track2->setAutoDelete(true); track->connectChild(j, track2); @@ -329,7 +321,7 @@ u8 data_804340B0[16]; void JAISeq::die_() { for (int i = 0; i < 32; i++) { if (inner_.mSoundChild[i]) { - delete inner_.mSoundChild[i]; + delete (JASPoolAllocObject*)inner_.mSoundChild[i]; inner_.mSoundChild[i] = NULL; } } @@ -447,7 +439,8 @@ JAISoundChild* JAISeq::getChild(int index) { if (inner_.mSoundChild[index]) { return inner_.mSoundChild[index]; } - inner_.mSoundChild[index] = new JASPoolAllocObject(); + JASPoolAllocObject* allocobj = new JASPoolAllocObject(); + inner_.mSoundChild[index] = new (allocobj) JAISoundChild(); if (!inner_.mSoundChild[index]) { return NULL; } @@ -473,7 +466,7 @@ void JAISeq::releaseChild(int param_0) { if (track) { track->assignExtBuffer(0, NULL); } - delete inner_.mSoundChild[param_0]; + delete (JASPoolAllocObject*)inner_.mSoundChild[param_0]; inner_.mSoundChild[param_0] = NULL; } } diff --git a/libs/SSystem/SComponent/c_lib.cpp b/libs/SSystem/SComponent/c_lib.cpp index a31583c26be..66c9ad5df9f 100644 --- a/libs/SSystem/SComponent/c_lib.cpp +++ b/libs/SSystem/SComponent/c_lib.cpp @@ -6,7 +6,6 @@ #include "SSystem/SComponent/c_lib.h" #include "MSL_C/string.h" #include "SSystem/SComponent/c_math.h" -#include "dol2asm.h" #include "dolphin/mtx/mtxvec.h" #include "dolphin/types.h" diff --git a/libs/SSystem/SComponent/c_m2d.cpp b/libs/SSystem/SComponent/c_m2d.cpp index b15b6c76573..37ee7a9d47c 100644 --- a/libs/SSystem/SComponent/c_m2d.cpp +++ b/libs/SSystem/SComponent/c_m2d.cpp @@ -4,67 +4,65 @@ // #include "SSystem/SComponent/c_m2d.h" -#include "dol2asm.h" +#include "SSystem/SComponent/c_m3d.h" +#include "SSystem/SComponent/c_m3d_g_cir.h" // // Types: // -struct cM2dGCir {}; - // // Forward References: // -extern "C" void cM2d_CrossCirLin__FR8cM2dGCirffffPfPf(); - // // External References: // -extern "C" extern u32 __float_nan; -extern "C" extern f32 G_CM3D_F_ABS_MIN[1 + 1 /* padding */]; - // // Declarations: // -/* ############################################################################################## */ -/* 804550F0-804550F4 0036F0 0004+00 1/1 0/0 0/0 .sdata2 @2266 */ -SECTION_SDATA2 static f32 lit_2266 = 2.0f; - -/* 804550F4-804550F8 0036F4 0004+00 1/1 0/0 0/0 .sdata2 @2267 */ -SECTION_SDATA2 static f32 lit_2267 = 4.0f; - -/* 804550F8-804550FC 0036F8 0004+00 1/1 0/0 0/0 .sdata2 @2268 */ -SECTION_SDATA2 static u8 lit_2268[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 804550FC-80455100 0036FC 0004+00 1/1 0/0 0/0 .sdata2 @2269 */ -SECTION_SDATA2 static f32 lit_2269 = 1.0f; - -/* 80455100-80455108 003700 0008+00 1/1 0/0 0/0 .sdata2 @2270 */ -SECTION_SDATA2 static f64 lit_2270 = 0.5; - -/* 80455108-80455110 003708 0008+00 1/1 0/0 0/0 .sdata2 @2271 */ -SECTION_SDATA2 static f64 lit_2271 = 3.0; - -/* 80455110-80455118 003710 0008+00 1/1 0/0 0/0 .sdata2 @2272 */ -SECTION_SDATA2 static u8 lit_2272[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - /* 80268260-80268560 262BA0 0300+00 0/0 4/4 0/0 .text cM2d_CrossCirLin__FR8cM2dGCirffffPfPf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cM2d_CrossCirLin(cM2dGCir& param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, +void cM2d_CrossCirLin(cM2dGCir& param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, f32* param_5, f32* param_6) { - nofralloc -#include "asm/SSystem/SComponent/c_m2d/cM2d_CrossCirLin__FR8cM2dGCirffffPfPf.s" + f32 fVar1 = param_1 - param_0.GetCx(); + f32 fVar15 = param_2 - param_0.GetCy(); + f32 dVar13 = param_3 * param_3 + param_4 * param_4; + f32 dVar14 = 2.0f * ((param_3 * fVar1) + (param_4 * fVar15)); + f32 fVar3 = (fVar1 * fVar1 + fVar15 * fVar15) - (param_0.GetR() * param_0.GetR()); + f32 in_f31; + + if (cM3d_IsZero(dVar13)) { + if (!cM3d_IsZero(dVar14)) { + in_f31 = -fVar3 / dVar14; + } + } else { + f32 dVar10 = ((dVar14 * dVar14) - (4.0f * dVar13) * fVar3); + if (cM3d_IsZero(dVar10)) { + in_f31 =(-dVar14 / (2.0f * dVar13)); + } else { + if (dVar10 < 0.0f) { + } else { + f32 fVar2 = 1.0f / (2.0f * dVar13); + f32 fVar15 = sqrtf(dVar10); + fVar15 = fVar2 * (-dVar14 + fVar15); + f32 fVar16 = sqrtf(dVar10); + f32 fVar4 = fVar2 * (-dVar14 - fVar16); + if (fVar15 > fVar4) { + in_f31 = fVar15; + } else { + in_f31 = fVar4; + } + } + } + } + + if (cM3d_IsZero(in_f31)) { + *param_5 = param_1; + *param_6 = param_2; + } else { + *param_5 = param_1 + (in_f31 * param_3); + *param_6 = param_2 + (in_f31 * param_4); + } } -#pragma pop diff --git a/libs/SSystem/SComponent/c_phase.cpp b/libs/SSystem/SComponent/c_phase.cpp index 72e76f6970b..7384df2c1ac 100644 --- a/libs/SSystem/SComponent/c_phase.cpp +++ b/libs/SSystem/SComponent/c_phase.cpp @@ -6,10 +6,6 @@ #include "SSystem/SComponent/c_phase.h" #include "dolphin/types.h" -extern "C" static void cPhs_UnCompleate__FP30request_of_phase_process_class(); -extern "C" static void cPhs_Compleate__FP30request_of_phase_process_class(); -extern "C" static void cPhs_Next__FP30request_of_phase_process_class(); - // // Declarations: // diff --git a/libs/SSystem/SComponent/c_request.cpp b/libs/SSystem/SComponent/c_request.cpp index 49a48acad63..e5d21020cc0 100644 --- a/libs/SSystem/SComponent/c_request.cpp +++ b/libs/SSystem/SComponent/c_request.cpp @@ -10,11 +10,6 @@ // Forward References: // -extern "C" void cReq_Is_Done__FP18request_base_class(); -extern "C" void cReq_Done__FP18request_base_class(); -extern "C" void cReq_Command__FP18request_base_classUc(); -extern "C" void cReq_Create__FP18request_base_classUc(); - // // External References: // @@ -24,42 +19,30 @@ extern "C" void cReq_Create__FP18request_base_classUc(); // /* 802667D4-80266800 261114 002C+00 0/0 3/3 0/0 .text cReq_Is_Done__FP18request_base_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int cReq_Is_Done(request_base_class* param_0) { - nofralloc -#include "asm/SSystem/SComponent/c_request/cReq_Is_Done__FP18request_base_class.s" +int cReq_Is_Done(request_base_class* param_0) { + if (param_0->field_0x0.flag1 == 1) { + param_0->field_0x0.flag1 = 0; + return 1; + } + return 0; } -#pragma pop /* 80266800-80266830 261140 0030+00 0/0 3/3 0/0 .text cReq_Done__FP18request_base_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int cReq_Done(request_base_class* param_0) { - nofralloc -#include "asm/SSystem/SComponent/c_request/cReq_Done__FP18request_base_class.s" +void cReq_Done(request_base_class* param_0) { + param_0->field_0x0.flag0 = 0; + param_0->field_0x0.flag1 = 1; + param_0->field_0x0.flag2 = 0; } -#pragma pop /* 80266830-80266850 261170 0020+00 0/0 2/2 0/0 .text cReq_Command__FP18request_base_classUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int cReq_Command(request_base_class* param_0, u8 param_1) { - nofralloc -#include "asm/SSystem/SComponent/c_request/cReq_Command__FP18request_base_classUc.s" +void cReq_Command(request_base_class* param_0, u8 param_1) { + cReq_Create(param_0, param_1); } -#pragma pop /* 80266850-80266880 261190 0030+00 1/1 2/2 0/0 .text cReq_Create__FP18request_base_classUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int cReq_Create(request_base_class* param_0, u8 param_1) { - nofralloc -#include "asm/SSystem/SComponent/c_request/cReq_Create__FP18request_base_classUc.s" +void cReq_Create(request_base_class* param_0, u8 param_1) { + param_0->field_0x0.flag0 = 1; + param_0->field_0x0.flag1 = 0; + param_0->field_0x0.flag2 = param_1; } -#pragma pop diff --git a/libs/Z2AudioLib/Z2Audience.cpp b/libs/Z2AudioLib/Z2Audience.cpp index 84639c067aa..d5ea8ea7301 100644 --- a/libs/Z2AudioLib/Z2Audience.cpp +++ b/libs/Z2AudioLib/Z2Audience.cpp @@ -4,27 +4,19 @@ // #include "Z2AudioLib/Z2Audience.h" +#include "Z2AudioLib/Z2Calc.h" +#include "Z2AudioLib/Z2SoundInfo.h" #include "JSystem/JAudio2/JAISound.h" +#include "JSystem/JAudio2/JASHeapCtrl.h" +#include "JSystem/J3DU/J3DUD.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "JSystem/JMath/JMATrigonometric.h" #include "dol2asm.h" // // Types: // -struct Z2Audible { - /* 802BBD94 */ Z2Audible(JGeometry::TVec3 const&, JGeometry::TVec3 const*, u32, bool); - /* 802BBE98 */ void calc(); - /* 802BBED0 */ void getOuterParams(int); - /* 802BBEE4 */ void setOuterParams(JASSoundParams const&, JASSoundParams const&, int); - /* 802BC204 */ void getChannel(int); - /* 802BC218 */ void getDistVolBit(); - /* 802BD510 */ ~Z2Audible(); -}; - -struct Z2SoundInfo { - /* 802BB158 */ void getAudibleSwFull(JAISoundID); -}; - struct Z2Param { static f32 DISTANCE_MAX; static f32 MAX_VOLUME_DISTANCE; @@ -36,33 +28,6 @@ struct Z2Param { static f32 MIN_DISTANCE_VOLUME; }; -struct Z2Calc { - struct CurveSign {}; - - /* 802A968C */ void linearTransform(f32, f32, f32, f32, f32, bool); - /* 802A96F4 */ void getParamByExp(f32, f32, f32, f32, f32, f32, Z2Calc::CurveSign); -}; - -struct Z2AudibleAbsPos { - /* 802BBCDC */ void calc(JGeometry::TVec3 const&); - /* 802BBD18 */ void init(JGeometry::TVec3*, JGeometry::TVec3 const&, - JGeometry::TVec3 const*); -}; - -template -struct JASMemPool {}; -/* JASMemPool */ -struct JASMemPool__template5 { - /* 802BD288 */ void func_802BD288(void* _this); -}; - -struct JASGenericMemPool { - /* 80290848 */ JASGenericMemPool(); - /* 80290860 */ ~JASGenericMemPool(); - /* 80290948 */ void alloc(u32); - /* 80290994 */ void free(void*, u32); -}; - // // Forward References: // @@ -169,14 +134,10 @@ extern "C" extern u8 __OSReport_disable; /* 802BBCDC-802BBD18 2B661C 003C+00 1/1 0/0 0/0 .text * calc__15Z2AudibleAbsPosFRCQ29JGeometry8TVec3 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2AudibleAbsPos::calc(JGeometry::TVec3 const& param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/func_802BBCDC.s" +void Z2AudibleAbsPos::calc(JGeometry::TVec3 const& param_0) { + field_0xc.sub(param_0, field_0x0); + field_0x0.set(param_0); } -#pragma pop /* ############################################################################################## */ /* 80455AA0-80455AA4 0040A0 0004+00 19/19 0/0 0/0 .sdata2 @848 */ @@ -189,6 +150,20 @@ SECTION_SDATA2 static u8 lit_848[4] = { /* 802BBD18-802BBD94 2B6658 007C+00 1/1 0/0 0/0 .text * init__15Z2AudibleAbsPosFPQ29JGeometry8TVec3RCQ29JGeometry8TVec3PCQ29JGeometry8TVec3 */ +// Matches with literals +#ifdef NONMATCHING +void Z2AudibleAbsPos::init(JGeometry::TVec3* param_0, JGeometry::TVec3 const& param_1, + JGeometry::TVec3 const* param_2) { + param_0->set(param_1); + if (param_2 != NULL) { + field_0x0.set(*param_2); + field_0xc.sub(param_1, field_0x0); + return; + } + field_0x0.set(param_1); + field_0xc.zero(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -198,6 +173,7 @@ asm void Z2AudibleAbsPos::init(JGeometry::TVec3* param_0, JGeometry::TVec3< #include "asm/Z2AudioLib/Z2Audience/func_802BBD18.s" } #pragma pop +#endif /* ############################################################################################## */ /* 803CAC98-803CACB8 027DB8 0020+00 2/2 0/0 0/0 .data __vt__10Z2Audience */ @@ -234,6 +210,22 @@ SECTION_SDATA2 static f32 lit_896 = -1.0f; /* 802BBD94-802BBE74 2B66D4 00E0+00 1/1 0/0 0/0 .text * __ct__9Z2AudibleFRCQ29JGeometry8TVec3PCQ29JGeometry8TVec3Ulb */ +// Matches with literals +#ifdef NONMATCHING +Z2Audible::Z2Audible(JGeometry::TVec3 const& param_0, JGeometry::TVec3 const* param_1, + u32 param_2, bool param_3) { + field_0x10.field_0x0.raw = 0xffffffff; + field_0x14.init(&mPos, param_0, param_1); + for (int i = 0; i < 1; i++) { + if ((param_2 & (1 << i)) == 0) { + field_0x2c[i].init(); + } + } + for (int i = 0; i < 1; i = i + 1) { + field_0x64[i] = 0.0f; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -243,8 +235,14 @@ asm Z2Audible::Z2Audible(JGeometry::TVec3 const& param_0, JGeometry::TVec3< #include "asm/Z2AudioLib/Z2Audience/func_802BBD94.s" } #pragma pop +#endif /* 802BBE74-802BBE98 2B67B4 0024+00 1/1 0/0 0/0 .text __ct__16Z2AudibleChannelFv */ +// Matches with literals +#ifdef NONMATCHING +Z2AudibleChannel::Z2AudibleChannel() { +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -253,26 +251,19 @@ asm Z2AudibleChannel::Z2AudibleChannel() { #include "asm/Z2AudioLib/Z2Audience/__ct__16Z2AudibleChannelFv.s" } #pragma pop +#endif /* 802BBE98-802BBED0 2B67D8 0038+00 1/0 0/0 0/0 .text calc__9Z2AudibleFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2Audible::calc() { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/calc__9Z2AudibleFv.s" +void Z2Audible::calc() { + if (isDoppler()) { + field_0x14.calc(mPos); + } } -#pragma pop /* 802BBED0-802BBEE4 2B6810 0014+00 1/0 0/0 0/0 .text getOuterParams__9Z2AudibleFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2Audible::getOuterParams(int param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/getOuterParams__9Z2AudibleFi.s" +JASSoundParams* Z2Audible::getOuterParams(int param_0) { + return &field_0x2c[param_0].field_0x0; } -#pragma pop /* ############################################################################################## */ /* 80455AB0-80455AB4 0040B0 0004+00 4/4 0/0 0/0 .sdata2 @998 */ @@ -305,6 +296,80 @@ SECTION_SDATA2 static f64 lit_1008 = 4503599627370496.0 /* cast u32 to float */; /* 802BBEE4-802BC204 2B6824 0320+00 1/1 0/0 0/0 .text * setOuterParams__9Z2AudibleFRC14JASSoundParamsRC14JASSoundParamsi */ +// regalloc +#ifdef NONMATCHING +void Z2Audible::setOuterParams(JASSoundParams const& param_0, JASSoundParams const& param_1, + int param_2) { + Z2AudibleChannel* this_01 = &field_0x2c[param_2]; + u32 iStack_94 = (field_0x10.field_0x0.b.f1 & 0xf00) >> 8; + if (iStack_94 == 0) { + this_01->field_0x0.combine(param_0, param_1); + return; + } + + if (this_01->field_0x28 < 0.0f) { + this_01->field_0x28 = 1.0f; + this_01->mPan = param_1.mPan; + this_01->mDolby = param_1.mDolby; + this_01->field_0x0.combine(param_0, param_1); + return; + } + + JASSoundParams local_b0; + local_b0.mFxMix = param_1.mFxMix; + local_b0.mPitch = param_1.mPitch; + + JGeometry::TVec2 local_b8; + local_b8.x = param_1.mPan - this_01->mPan; + local_b8.y = param_1.mDolby - this_01->mDolby; + f32 dVar9 = param_1.mVolume * local_b8.length(); + f32 dVar10 = 1.0f; + f32 dVar12 = Z2Calc::linearTransform(iStack_94, 0.0f, 15.0f, 1.0f, 0.3f, true); + if (param_1.mVolume > dVar12 && dVar9 > 0.0010000000474974513f) { + dVar10 = Z2Calc::getParamByExp(dVar9, 0.3f, 0.0010000000474974513f, 0.1f, dVar12, 1.0f, + Z2Calc::CURVE_SIGN_1); + if (dVar10 < 0.0f) { + dVar10 = 0.0f; + } + } + dVar10 -= this_01->field_0x28; + f32 dVar11; + if (dVar10 > 0.0f) { + dVar11 = J3DUD::JMAAbs(dVar10); + dVar11 = Z2Calc::getParamByExp(dVar11, 1.0f, 0.0f, 0.1f, 0.1f, 0.5f, Z2Calc::CURVE_SIGN_1); + } else { + dVar11 = J3DUD::JMAAbs(dVar10); + dVar11 = Z2Calc::getParamByExp(dVar11, -1.0f, 0.0f, 0.1f, 1.0f / 30.0f, 0.5f, Z2Calc::CURVE_SIGN_1); + } + f32 fVar1 = this_01->field_0x28 + (dVar10 * dVar11); + if (fVar1 < 0.0f) { + fVar1 = 0.0f; + } else if (fVar1 > 1.0f) { + fVar1 = 1.0f; + } + local_b0.mVolume = param_1.mVolume * fVar1; + this_01->field_0x28 = fVar1; + f32 dVar8 = J3DUD::JMAAbs(local_b8.x); + f32 dVar13 = Z2Calc::getParamByExp(local_b0.mVolume * dVar8, 1.0f, 0.0f, 0.1f, + 1.0f / 30.0f, 1.0 / 3.0f, Z2Calc::CURVE_SIGN_1); + f32 dVar14 = J3DUD::JMAAbs(local_b8.y); + dVar14 = Z2Calc::getParamByExp(local_b0.mVolume * dVar14, 1.0f, + 0.0f, 0.1f, + 1.0f / 30.0f, 1.0f / 3.0f, Z2Calc::CURVE_SIGN_1); + if (dVar13 > 1.0f / 3.0f) { + dVar13 = 1.0f / 3.0f; + } + if (dVar14 > 1.0f / 3.0f) { + dVar14 = 1.0f / 3.0f; + } + local_b0.mPan = this_01->mPan + (local_b8.x * dVar13); + local_b0.mDolby = this_01->mDolby + (local_b8.y * dVar14); + local_b0.clamp(); + this_01->field_0x0.combine(param_0, local_b0); + this_01->mPan = local_b0.mPan; + this_01->mDolby = local_b0.mDolby; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -314,42 +379,56 @@ asm void Z2Audible::setOuterParams(JASSoundParams const& param_0, JASSoundParams #include "asm/Z2AudioLib/Z2Audience/setOuterParams__9Z2AudibleFRC14JASSoundParamsRC14JASSoundParamsi.s" } #pragma pop +#endif /* 802BC204-802BC218 2B6B44 0014+00 4/4 0/0 0/0 .text getChannel__9Z2AudibleFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2Audible::getChannel(int param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/getChannel__9Z2AudibleFi.s" +Z2AudibleChannel* Z2Audible::getChannel(int param_0) { + return &field_0x2c[param_0]; } -#pragma pop /* 802BC218-802BC248 2B6B58 0030+00 3/3 0/0 0/0 .text getDistVolBit__9Z2AudibleFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2Audible::getDistVolBit() { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/getDistVolBit__9Z2AudibleFv.s" +u32 Z2Audible::getDistVolBit() { + u16 uVar1 = getAudibleParam()->field_0x0.half.f1; + if (uVar1 != 0) { + if ((uVar1 & 7) != 0) { + return uVar1 & 7; + } + if ((uVar1 & 0x70) != 0) { + return ((int)(uVar1 & 0x70) >> 4) + 7; + } + } + return 0; } -#pragma pop /* 802BC248-802BC284 2B6B88 003C+00 1/1 0/0 0/0 .text __ct__19Z2Audience3DSettingFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm Z2Audience3DSetting::Z2Audience3DSetting() { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/__ct__19Z2Audience3DSettingFv.s" +Z2Audience3DSetting::Z2Audience3DSetting() { + mVolumeDistInit = false; + mDolbyDistInit = false; + init(); } -#pragma pop /* ############################################################################################## */ /* 80455AD8-80455ADC 0040D8 0004+00 4/4 0/0 0/0 .sdata2 @1036 */ SECTION_SDATA2 static f32 lit_1036 = 1.5f; /* 802BC284-802BC308 2B6BC4 0084+00 1/1 0/0 0/0 .text init__19Z2Audience3DSettingFv */ +// Matches with literals +#ifdef NONMATCHING +void Z2Audience3DSetting::init() { + field_0x40 = Z2Param::MIN_DISTANCE_VOLUME; + field_0x48 = Z2Param::DOLBY_BEHIND_DISTANCE_MAX; + field_0x44 = Z2Param::DOLBY_FLONT_DISTANCE_MAX; + field_0x54 = Z2Param::DISTANCE_FX_PARAM; + field_0x50 = 0.0f; + field_0x4c = Z2Param::DOLBY_CENTER_VALUE; + field_0x58 = 0.5f; + field_0x64 = 0xff; + field_0x5c = Z2Param::SONIC_SPEED; + field_0x60 = 1.5f; + initVolumeDist(); + initDolbyDist(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -358,6 +437,7 @@ asm void Z2Audience3DSetting::init() { #include "asm/Z2AudioLib/Z2Audience/init__19Z2Audience3DSettingFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80455ADC-80455AE0 0040DC 0004+00 2/2 0/0 0/0 .sdata2 @1058 */ @@ -391,6 +471,19 @@ SECTION_SDATA2 static f32 lit_1066 = 3.0f / 5.0f; SECTION_SDATA2 static f32 lit_1067 = 2.0f / 5.0f; /* 802BC308-802BC4D0 2B6C48 01C8+00 2/2 0/0 0/0 .text initVolumeDist__19Z2Audience3DSettingFv */ +// Matches with literals +#ifdef NONMATCHING +void Z2Audience3DSetting::initVolumeDist() { + if (mVolumeDistInit) return; + + field_0x0[0] = Z2Param::DISTANCE_MAX; + field_0x3c = Z2Param::MAX_VOLUME_DISTANCE; + calcVolumeFactorAll(); + calcPriorityFactorAll(); + calcFxMixFactorAll(); + mVolumeDistInit = true; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -399,12 +492,28 @@ asm void Z2Audience3DSetting::initVolumeDist() { #include "asm/Z2AudioLib/Z2Audience/initVolumeDist__19Z2Audience3DSettingFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80451350-80451354 000850 0004+00 2/2 0/0 0/0 .sbss cNearFarRatio */ static f32 cNearFarRatio; /* 802BC4D0-802BC6A4 2B6E10 01D4+00 1/1 0/0 0/0 .text updateVolumeDist__19Z2Audience3DSettingFf */ +// Matches with literals +#ifdef NONMATCHING +void Z2Audience3DSetting::updateVolumeDist(f32 param_0) { + field_0x0[0] = param_0; + if (param_0 > Z2Param::DISTANCE_MAX) { + field_0x3c = cNearFarRatio * param_0; + } else { + field_0x3c = Z2Param::MAX_VOLUME_DISTANCE; + } + calcVolumeFactorAll(); + calcPriorityFactorAll(); + calcFxMixFactorAll(); + mVolumeDistInit = false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -413,8 +522,21 @@ asm void Z2Audience3DSetting::updateVolumeDist(f32 param_0) { #include "asm/Z2AudioLib/Z2Audience/updateVolumeDist__19Z2Audience3DSettingFf.s" } #pragma pop +#endif /* 802BC6A4-802BC6F8 2B6FE4 0054+00 1/1 0/0 0/0 .text initDolbyDist__19Z2Audience3DSettingFv */ +// matches with literals +#ifdef NONMATCHING +void Z2Audience3DSetting::initDolbyDist() { + if (!mDolbyDistInit) { + field_0x44 = Z2Param::DOLBY_FLONT_DISTANCE_MAX; + field_0x48 = Z2Param::DOLBY_BEHIND_DISTANCE_MAX; + field_0x68 = -field_0x4c / field_0x44; + field_0x6c = (1.0f - field_0x4c) / field_0x48; + mDolbyDistInit = true; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -423,8 +545,28 @@ asm void Z2Audience3DSetting::initDolbyDist() { #include "asm/Z2AudioLib/Z2Audience/initDolbyDist__19Z2Audience3DSettingFv.s" } #pragma pop +#endif /* 802BC6F8-802BC758 2B7038 0060+00 1/1 0/0 0/0 .text updateDolbyDist__19Z2Audience3DSettingFff */ +// Matches with literals +#ifdef NONMATCHING +void Z2Audience3DSetting::updateDolbyDist(f32 param_0, f32 param_1) { + if (param_0 > -1.0f * Z2Param::DOLBY_FLONT_DISTANCE_MAX) { + field_0x44 = -1.0f * param_0; + } else { + field_0x44 = Z2Param::DOLBY_FLONT_DISTANCE_MAX; + } + if (param_1 < 2.0f * field_0x44) { + param_1 = 2.0f * field_0x44; + } + if (param_1 > Z2Param::DOLBY_BEHIND_DISTANCE_MAX) { + field_0x48 = param_1; + } else { + field_0x48 = Z2Param::DOLBY_BEHIND_DISTANCE_MAX; + } + mDolbyDistInit = false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -433,8 +575,22 @@ asm void Z2Audience3DSetting::updateDolbyDist(f32 param_0, f32 param_1) { #include "asm/Z2AudioLib/Z2Audience/updateDolbyDist__19Z2Audience3DSettingFff.s" } #pragma pop +#endif /* 802BC758-802BC788 2B7098 0030+00 1/1 0/0 0/0 .text __ct__13Z2AudioCameraFv */ +// Matches with literals +#ifdef NONMATCHING +Z2AudioCamera::Z2AudioCamera() { + mFovySin = 1.0f; + mVolCenterZ = 0.0f; + mTargetVolume = 0.0f; + mDolbyCenterZ = 0.0f; + mCamDist = 0.0f; + field_0x68 = 0.0f; + field_0x6c = 0.0f; + mSetMainCamera = 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -443,23 +599,34 @@ asm Z2AudioCamera::Z2AudioCamera() { #include "asm/Z2AudioLib/Z2Audience/__ct__13Z2AudioCameraFv.s" } #pragma pop - -/* ############################################################################################## */ -/* 80455B04-80455B08 004104 0004+00 1/1 0/0 0/0 .sdata2 @1135 */ -SECTION_SDATA2 static f32 lit_1135 = 100000.0f; +#endif /* 802BC788-802BC7DC 2B70C8 0054+00 1/1 0/0 0/0 .text init__13Z2AudioCameraFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2AudioCamera::init() { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/init__13Z2AudioCameraFv.s" +void Z2AudioCamera::init() { + JGeometry::TPosition3f32 aTStack_38; + aTStack_38.identity(); + JGeometry::TVec3 VStack_44; + VStack_44.set(100000.0f, 100000.0f, 100000.0f); + setCameraState(aTStack_38, *(Vec*)&VStack_44, true); } -#pragma pop /* 802BC7DC-802BC8AC 2B711C 00D0+00 2/2 0/0 0/0 .text setCameraState__13Z2AudioCameraFPA4_CfR3Vecb */ +// Matches with literals +#ifdef NONMATCHING +void Z2AudioCamera::setCameraState(f32 const (*param_0)[4], Vec& param_1, bool param_2) { + field_0x0.set(param_0); + if (param_2) { + mPos.set(*(JGeometry::TVec3*)¶m_1); + field_0x48.set(mPos); + mVel.zero(); + } else { + field_0x48.set(mPos); + mPos.set(*(JGeometry::TVec3*)¶m_1); + mVel.sub(mPos, field_0x48); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -468,6 +635,7 @@ asm void Z2AudioCamera::setCameraState(f32 const (*param_0)[4], Vec& param_1, bo #include "asm/Z2AudioLib/Z2Audience/setCameraState__13Z2AudioCameraFPA4_CfR3Vecb.s" } #pragma pop +#endif /* ############################################################################################## */ /* 8039C220-8039C230 028880 000C+04 1/1 0/0 0/0 .rodata @1193 */ @@ -515,6 +683,63 @@ SECTION_SDATA2 static f32 lit_1273 = 0.01745329238474369f; /* 802BC8AC-802BCBEC 2B71EC 0340+00 1/1 0/0 0/0 .text * setCameraState__13Z2AudioCameraFPA4_fR3VecR3Vecffbb */ +// Matches with literals +#ifdef NONMATCHING +void Z2AudioCamera::setCameraState(f32 (*param_0)[4], Vec& param_1, Vec& param_2, f32 param_3, + f32 param_4, bool param_5, bool param_6) { + JGeometry::TVec3 aTStack_c0; + PSVECSubtract(¶m_2, ¶m_1, aTStack_c0); + mCamDist = aTStack_c0.length(); + f32 dVar10 = 0.5f * param_3; + mFovySin = JMASinDegree(dVar10); + f32 fVar8 = JMACosDegree(dVar10); + field_0x6c = mFovySin / fVar8; + field_0x68 = field_0x6c * param_4; + + f32 dVar11; + if (param_3 >= 50.0f) { + mVolCenterZ = 0.0f; + dVar11 = mCamDist; + } else { + dVar11 = 2.1445069313049316f * (mCamDist * field_0x6c); + mVolCenterZ = mCamDist - dVar11; + if (mVolCenterZ < 32.0f * FLT_EPSILON) { + mVolCenterZ = 0.0f; + } + } + + if (mSetMainCamera && mTargetVolume > 0.0f) { + if (dVar11 > (double)(Z2Param::DISTANCE_MAX * (1.0f - mTargetVolume))) + { + Z2GetAudience()->getSetting()->updateVolumeDist(dVar11 / (1.0f - mTargetVolume)); + } else { + Z2GetAudience()->getSetting()->initVolumeDist(); + } + } + + if (param_5 || aTStack_c0.y >= 0.0f) { + mDolbyCenterZ = -100.0f; + if (mSetMainCamera) { + Z2GetAudience()->getSetting()->updateDolbyDist(mCamDist, mCamDist); + } + } else { + JGeometry::TVec3 aTStack_cc = {0.0f, 0.0f, 0.0f}; + aTStack_cc.x = param_0[0][0]; + aTStack_cc.y = param_0[0][1]; + aTStack_cc.z = param_0[0][2]; + Mtx rotMtx; + PSMTXRotAxisRad(rotMtx, aTStack_cc, 0.01745329238474369f * (-1.0f * dVar10)); + JGeometry::TVec3 aTStack_d8; + PSMTXMultVec(rotMtx, aTStack_c0, aTStack_d8); + aTStack_d8.scale(aTStack_c0.y / aTStack_d8.y); + mDolbyCenterZ = fVar8 * aTStack_d8.length(); + if (mSetMainCamera) { + Z2GetAudience()->getSetting()->updateDolbyDist(mCamDist - mDolbyCenterZ, mCamDist + mDolbyCenterZ); + } + } + setCameraState(param_0, param_1, param_6); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -524,40 +749,64 @@ asm void Z2AudioCamera::setCameraState(f32 (*param_0)[4], Vec& param_1, Vec& par #include "asm/Z2AudioLib/Z2Audience/setCameraState__13Z2AudioCameraFPA4_fR3VecR3Vecffbb.s" } #pragma pop +#endif /* 802BCBEC-802BCC7C 2B752C 0090+00 2/2 0/0 0/0 .text * convertAbsToRel__13Z2AudioCameraFP9Z2Audiblei */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2AudioCamera::convertAbsToRel(Z2Audible* param_0, int param_1) { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/convertAbsToRel__13Z2AudioCameraFP9Z2Audiblei.s" +void Z2AudioCamera::convertAbsToRel(Z2Audible* param_0, int param_1) { + Z2AudibleChannel* iVar2 = param_0->getChannel(param_1); + if (iVar2 == NULL) { + return; + } + Z2AudibleRelPos* relPos = &iVar2->field_0x14; + PSMTXMultVec(field_0x0, param_0->mPos, relPos->field_0x00); + relPos->field_0xC = relPos->field_0x00.length(); + JGeometry::TVec3 aTStack_38; + JGeometry::setTVec3f(*(Vec*)&relPos->field_0x00, *(Vec*)&aTStack_38); + aTStack_38.z += mVolCenterZ; + relPos->field_0x10 = aTStack_38.length(); } -#pragma pop /* 802BCC7C-802BCCC0 2B75BC 0044+00 2/2 0/0 0/0 .text convertAbsToRel__13Z2AudioCameraCFR3VecP3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2AudioCamera::convertAbsToRel(Vec& param_0, Vec* param_1) const { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/convertAbsToRel__13Z2AudioCameraCFR3VecP3Vec.s" +bool Z2AudioCamera::convertAbsToRel(Vec& param_0, Vec* param_1) const { + PSMTXMultVec(field_0x0, ¶m_0, param_1); + return isInSight(*param_1); } -#pragma pop /* 802BCCC0-802BCD28 2B7600 0068+00 1/1 0/0 0/0 .text isInSight__13Z2AudioCameraCFR3Vec */ +// Matches with literals +#ifdef NONMATCHING +bool Z2AudioCamera::isInSight(Vec& param_0) const { + if (param_0.z >= 0.0f) { + return false; + } + + f32 zabs = J3DUD::JMAAbs(param_0.z); + f32 xabs = J3DUD::JMAAbs(param_0.x); + + if (xabs > field_0x68 * zabs) { + return false; + } + + f32 yabs = J3DUD::JMAAbs(param_0.y); + if (yabs > field_0x6c * zabs) { + return false; + } + + return true; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2AudioCamera::isInSight(Vec& param_0) const { +asm bool Z2AudioCamera::isInSight(Vec& param_0) const { nofralloc #include "asm/Z2AudioLib/Z2Audience/isInSight__13Z2AudioCameraCFR3Vec.s" } #pragma pop - +#endif /* ############################################################################################## */ /* 80455B24-80455B28 004124 0004+00 1/1 0/0 0/0 .sdata2 @1334 */ SECTION_SDATA2 static f32 lit_1334 = 200.0f; @@ -572,6 +821,20 @@ SECTION_SDATA2 static f32 lit_1336 = 1.0f / 5.0f; SECTION_SDATA2 static f32 lit_1337 = 255.0f; /* 802BCD28-802BCDA8 2B7668 0080+00 1/1 0/0 0/0 .text __ct__9Z2SpotMicFv */ +// Matches with literals +#ifdef NONMATCHING +Z2SpotMic::Z2SpotMic() { + field_0x0 = 200.0f; + field_0x4 = 400.0f; + field_0x8 = 0.0f; + field_0xc = 0.2f; + mPosPtr = NULL; + mIgnoreIfOut = true; + mMicOn = true; + field_0x1c = 255.0f / (field_0x4 - field_0x0); + clearMicState(0); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -580,28 +843,51 @@ asm Z2SpotMic::Z2SpotMic() { #include "asm/Z2AudioLib/Z2Audience/__ct__9Z2SpotMicFv.s" } #pragma pop +#endif /* 802BCDA8-802BCDE8 2B76E8 0040+00 2/2 0/0 0/0 .text clearMicState__9Z2SpotMicFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SpotMic::clearMicState(int param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/clearMicState__9Z2SpotMicFi.s" +void Z2SpotMic::clearMicState(int param_0) { + field_0x10[param_0] = NULL; + field_0x18[param_0] = field_0xc; + field_0x26[param_0] = 0; + calcVolumeFactor(param_0); } -#pragma pop /* 802BCDE8-802BCE14 2B7728 002C+00 2/2 0/0 0/0 .text calcVolumeFactor__9Z2SpotMicFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SpotMic::calcVolumeFactor(int param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/calcVolumeFactor__9Z2SpotMicFi.s" +void Z2SpotMic::calcVolumeFactor(int param_0) { + field_0x20[param_0] = (field_0x8 - field_0x18[param_0]) / (field_0x4 - field_0x0); } -#pragma pop /* 802BCE14-802BCF5C 2B7754 0148+00 1/1 0/0 0/0 .text setMicState__9Z2SpotMicFP13Z2AudioCamerai */ +// Matches with literals +#ifdef NONMATCHING +void Z2SpotMic::setMicState(Z2AudioCamera* param_0, int param_1) { + if (mMicOn && mPosPtr != 0 && param_0 != NULL) { + clearMicState(param_1); + JGeometry::TVec3 aVStack_58; + field_0x26[param_1] = param_0->convertAbsToRel(*mPosPtr, aVStack_58); + if (!mIgnoreIfOut || field_0x26[param_1]) { + field_0x10[param_1] = param_0; + aVStack_58.z = aVStack_58[0].z + param_0->getVolCenterZ(); + f32 dVar10 = aVStack_58.length(); + f32 dVar11 = Z2GetAudience()->getSetting()->field_0x0[0]; + f32 dVar12 = Z2GetAudience()->getSetting()->field_0x3c; + if (dVar10 > dVar11) { + field_0x18[param_1] = field_0xc; + } else { + if (dVar10 < dVar12) { + field_0x18[param_1] = 1.0f; + } else { + field_0x18[param_1] = JGeometry::TUtil::clamp( + 1.0f + ((field_0xc - 1.0f) / (dVar11 - dVar12)) * (dVar10 - dVar12), + 0.0f, 1.0f); + } + } + calcVolumeFactor(param_1); + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -610,39 +896,115 @@ asm void Z2SpotMic::setMicState(Z2AudioCamera* param_0, int param_1) { #include "asm/Z2AudioLib/Z2Audience/setMicState__9Z2SpotMicFP13Z2AudioCamerai.s" } #pragma pop +#endif /* 802BCF5C-802BCFE4 2B789C 0088+00 2/2 0/0 0/0 .text calcMicDist__9Z2SpotMicFP9Z2Audible */ +// Matches with literals +#ifdef NONMATCHING +f32 Z2SpotMic::calcMicDist(Z2Audible* param_0) { + if (!mMicOn) { + return 0.0f; + } + if (mPosPtr == NULL) { + return 0.0f; + } + if (param_0 == NULL) { + return 0.0f; + } + + JGeometry::TVec3 aTStack_1c; + JGeometry::TVec3 aTStack_28; + JGeometry::setTVec3f(*mPosPtr, *(Vec*)&aTStack_28); + aTStack_1c.sub(param_0->getPos(), aTStack_28); + return aTStack_1c.length(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2SpotMic::calcMicDist(Z2Audible* param_0) { +asm f32 Z2SpotMic::calcMicDist(Z2Audible* param_0) { nofralloc #include "asm/Z2AudioLib/Z2Audience/calcMicDist__9Z2SpotMicFP9Z2Audible.s" } #pragma pop +#endif /* 802BCFE4-802BD03C 2B7924 0058+00 1/1 0/0 0/0 .text calcMicPriority__9Z2SpotMicFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2SpotMic::calcMicPriority(f32 param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/calcMicPriority__9Z2SpotMicFf.s" +u32 Z2SpotMic::calcMicPriority(f32 param_0) { + if (param_0 > field_0x4) { + return Z2GetAudience()->getSetting()->field_0x64; + } + + if (param_0 < field_0x0) { + return 0; + } + + return field_0x1c * (param_0 - field_0x0); } -#pragma pop /* 802BD03C-802BD130 2B797C 00F4+00 1/1 0/0 0/0 .text calcMicVolume__9Z2SpotMicFfif */ +// Matches with literals +#ifdef NONMATCHING +f32 Z2SpotMic::calcMicVolume(f32 param_0, int param_1, f32 param_2) { + if (mMicOn == NULL) { + return param_2; + } + + if (mPosPtr == NULL) { + return param_2; + } + + if (field_0x10[param_1] == NULL) { + return param_2; + } + + if (mIgnoreIfOut && field_0x26[param_1] == 0) { + return param_2; + } + + if (param_0 > field_0x4) { + return -1.0f; + } + + if (param_2 >= field_0x18[param_1]) { + return param_2; + } + + if (param_0 < field_0x0) { + return field_0x18[param_1]; + } + + f32 dVar7 = JGeometry::TUtil::clamp( + field_0x18[param_1] + field_0x20[param_1] * (param_0 - field_0x0), + field_0x8, field_0x18[param_1]); + if (param_2 < dVar7) { + param_2 = dVar7; + } + return param_2; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2SpotMic::calcMicVolume(f32 param_0, int param_1, f32 param_2) { +asm f32 Z2SpotMic::calcMicVolume(f32 param_0, int param_1, f32 param_2) { nofralloc #include "asm/Z2AudioLib/Z2Audience/calcMicVolume__9Z2SpotMicFfif.s" } #pragma pop +#endif /* 802BD130-802BD1FC 2B7A70 00CC+00 0/0 1/1 0/0 .text __ct__10Z2AudienceFv */ +// Matches with literals +#ifdef NONMATCHING +Z2Audience::Z2Audience() : JASGlobalInstance(true), field_0x4(1.0f), field_0x8(0x7f) { + mNumPlayers = 1; + mUsingOffMicVol = false; + mAudioCamera[0].init(); + mAudioCamera[0].setMainCamera(); + mLinkMic = mSpotMic; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -651,6 +1013,7 @@ asm Z2Audience::Z2Audience() { #include "asm/Z2AudioLib/Z2Audience/__ct__10Z2AudienceFv.s" } #pragma pop +#endif /* 802BD1FC-802BD288 2B7B3C 008C+00 1/0 1/1 0/0 .text __dt__10Z2AudienceFv */ #pragma push @@ -675,15 +1038,11 @@ extern "C" asm void func_802BD288(void* _this) { /* 802BD2DC-802BD338 2B7C1C 005C+00 0/0 1/1 0/0 .text * setAudioCamera__10Z2AudienceFPA4_fR3VecR3Vecffbib */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2Audience::setAudioCamera(f32 (*param_0)[4], Vec& param_1, Vec& param_2, f32 param_3, +void Z2Audience::setAudioCamera(f32 (*param_0)[4], Vec& param_1, Vec& param_2, f32 param_3, f32 param_4, bool param_5, int param_6, bool param_7) { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/setAudioCamera__10Z2AudienceFPA4_fR3VecR3Vecffbib.s" + mAudioCamera[param_6].setCameraState(param_0, param_1, param_2, param_3, param_4, param_5, param_7); + mLinkMic->setMicState(&mAudioCamera[param_6], param_6); } -#pragma pop /* ############################################################################################## */ /* 804341D8-804341E4 060EF8 000C+00 2/2 0/0 0/0 .bss @1539 */ @@ -700,6 +1059,41 @@ u8 data_80451354[4]; /* 802BD338-802BD4D4 2B7C78 019C+00 1/0 0/0 0/0 .text * newAudible__10Z2AudienceFRCQ29JGeometry8TVec310JAISoundIDPCQ29JGeometry8TVec3Ul */ +// Matches with literals +#ifdef NONMATCHING +JAIAudible* Z2Audience::newAudible(JGeometry::TVec3 const& param_0, JAISoundID param_1, + JGeometry::TVec3 const* param_2, u32 param_3) { + JAUAudibleParam local_34; + u32 uVar4 = param_3 | ~((1 << mNumPlayers) + -1); + if (uVar4 == 0xffffffff) { + return NULL; + } + local_34.field_0x0.raw = Z2GetSoundInfo()->getAudibleSwFull(param_1); + bool x = ((local_34.field_0x0.bytes.b0 >> 4) & 0xf) != 0; + Z2Audible* this_01 = (Z2Audible*)new JASPoolAllocObject(); + this_01 = new (this_01) Z2Audible(param_0, param_2, uVar4, x); + if (this_01 == NULL) { + return NULL; + } + + this_01->setAudibleParam(local_34); + for (int iVar5 = 0; iVar5 < mNumPlayers; iVar5++) { + Z2AudibleChannel* iVar2 = this_01->getChannel(iVar5); + if (iVar2 != NULL) { + u32 local_38 = this_01->getDistVolBit(); + mAudioCamera[iVar5].convertAbsToRel(this_01, iVar5); + calcDeltaPriority_(iVar2->field_0x14.field_0x10, local_38, false); + } + } + for (int iVar5 = 0; iVar5 < 1; iVar5++) { + if (mSpotMic[iVar5].isOn()) { + this_01->field_0x64[iVar5] = mSpotMic[iVar5].calcMicDist(this_01); + } + } + + return this_01; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -709,18 +1103,19 @@ asm JAIAudible* Z2Audience::newAudible(JGeometry::TVec3 const& param_0, JAI #include "asm/Z2AudioLib/Z2Audience/func_802BD338.s" } #pragma pop +#endif /* 802BD4D4-802BD510 2B7E14 003C+00 1/0 0/0 0/0 .text deleteAudible__10Z2AudienceFP10JAIAudible */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2Audience::deleteAudible(JAIAudible* param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/deleteAudible__10Z2AudienceFP10JAIAudible.s" +void Z2Audience::deleteAudible(JAIAudible* param_0) { + delete param_0; } -#pragma pop /* 802BD510-802BD5B8 2B7E50 00A8+00 1/0 0/0 0/0 .text __dt__9Z2AudibleFv */ +// Matches with static objects +#ifdef NONMATCHING +Z2Audible::~Z2Audible() { +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -729,29 +1124,117 @@ asm Z2Audible::~Z2Audible() { #include "asm/Z2AudioLib/Z2Audience/__dt__9Z2AudibleFv.s" } #pragma pop +#endif /* 802BD5B8-802BD704 2B7EF8 014C+00 1/0 0/0 0/0 .text calcPriority__10Z2AudienceFP10JAIAudible */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 Z2Audience::calcPriority(JAIAudible* param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/calcPriority__10Z2AudienceFP10JAIAudible.s" +u32 Z2Audience::calcPriority(JAIAudible* param_0) { + Z2Audible* z2Audible = (Z2Audible*)param_0; + if (!z2Audible->getAudibleParam()->field_0x0.bytes.b0_4) { + for (int i = 0; i < mNumPlayers; i++) { + mAudioCamera[i].convertAbsToRel(z2Audible, i); + } + return 0; + } + + u32 deltaPriority[1]; + u32 rv = 0xffffffff; + for (int i = 0; i < mNumPlayers; i++) { + Z2AudibleChannel* iVar4 = (z2Audible)->getChannel(i); + if (iVar4 != NULL) { + mAudioCamera[i].convertAbsToRel(z2Audible, i); + u32 distvolBit = z2Audible->getDistVolBit(); + const JAUAudibleParam* puVar1 = z2Audible->getAudibleParam(); + deltaPriority[i] = calcDeltaPriority_(iVar4->field_0x14.field_0x10, distvolBit, puVar1->field_0x0.bytes.b0_7); + if (deltaPriority[i] < rv) { + rv = deltaPriority[i]; + } + } + } + for (int i = 0; i < 1; i++) { + if (mSpotMic[i].isOn()) { + z2Audible->field_0x64[i] = mSpotMic[i].calcMicDist(z2Audible); + u32 micPriority = mSpotMic[i].calcMicPriority(z2Audible->field_0x64[i]); + if (micPriority < rv) { + rv = micPriority; + } + } + } + + return rv; } -#pragma pop /* 802BD704-802BD71C 2B8044 0018+00 1/1 1/1 0/0 .text calcOffMicSound__10Z2AudienceFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2Audience::calcOffMicSound(f32 param_0) { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/calcOffMicSound__10Z2AudienceFf.s" +f32 Z2Audience::calcOffMicSound(f32 param_0) { + if (mUsingOffMicVol == 0) { + return param_0; + } + + return param_0 * field_0x4; } -#pragma pop /* 802BD71C-802BD90C 2B805C 01F0+00 1/0 0/0 0/0 .text * mixChannelOut__10Z2AudienceFRC14JASSoundParamsP10JAIAudiblei */ +// Matches with literals +#ifdef NONMATCHING +void Z2Audience::mixChannelOut(JASSoundParams const& param_0, JAIAudible* param_1, + int param_2) { + Z2Audible* z2Audible = (Z2Audible*)param_1; + Z2AudibleChannel* pZVar5 = z2Audible->getChannel(param_2); + if (pZVar5 == NULL) { + return; + } + + JASSoundParams local_60; + u32 iVar6 = z2Audible->getDistVolBit(); + if (z2Audible->getAudibleParam()->field_0x0.bytes.b0_5) { + local_60.mVolume = calcVolume_(pZVar5->field_0x14.field_0x10, iVar6); + f32 dVar9 = mLinkMic->calcMicVolume(z2Audible->field_0x64[0], param_2, local_60.mVolume); + if (dVar9 < 0.0f) { + dVar9 = calcOffMicSound(local_60.mVolume); + } + local_60.mVolume = dVar9; + JAUAudibleParam* puVar7 = z2Audible->getAudibleParam(); + if ((puVar7->field_0x0.bytes.b1 & 8) && (local_60.mVolume <= 0.2f)) { + local_60.mVolume = 0.2f; + } + } else { + local_60.mVolume = 1.0f; + } + + if (((z2Audible->getAudibleParam()->field_0x0.bytes.b1 >> 6) & 1) && mNumPlayers == 1) { + local_60.mDolby = calcRelPosDolby(*(Vec*)&pZVar5->field_0x14.field_0x00, param_2); + } else { + local_60.mDolby = 0.5f; + } + + if ((z2Audible->getAudibleParam()->field_0x0.bytes.b1 >> 7) & 1) { + if (mNumPlayers > 2) { + f32 fVar1; + if (param_2 & 1) { + fVar1 = 1.0f; + } else { + fVar1 = 0.0f; + } + local_60.mPan = fVar1; + } else { + local_60.mPan = calcRelPosPan(*(Vec*)&pZVar5->field_0x14.field_0x00, param_2); + } + } else { + local_60.mPan = 0.5f; + } + + local_60.mPitch = calcPitch_(pZVar5, z2Audible, &mAudioCamera[param_2]); + f32 dVar9; + if (z2Audible->getAudibleParam()->field_0x0.bytes.b0_6) { + dVar9 = calcFxMix_(pZVar5->field_0x14.field_0xC, iVar6); + } else { + dVar9 = 0.0f; + } + local_60.mFxMix = dVar9; + local_60.clamp(); + z2Audible->setOuterParams(param_0, local_60, param_2); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -761,8 +1244,15 @@ asm void Z2Audience::mixChannelOut(JASSoundParams const& param_0, JAIAudible* pa #include "asm/Z2AudioLib/Z2Audience/mixChannelOut__10Z2AudienceFRC14JASSoundParamsP10JAIAudiblei.s" } #pragma pop +#endif /* 802BD90C-802BD92C 2B824C 0020+00 0/0 1/1 0/0 .text setTargetVolume__10Z2AudienceFfi */ +// Matches with literals +#ifdef NONMATCHING +void Z2Audience::setTargetVolume(f32 volume, int index) { + mAudioCamera[index].setTargetVolume(volume); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -771,91 +1261,194 @@ asm void Z2Audience::setTargetVolume(f32 param_0, int param_1) { #include "asm/Z2AudioLib/Z2Audience/setTargetVolume__10Z2AudienceFfi.s" } #pragma pop +#endif /* 802BD92C-802BD95C 2B826C 0030+00 0/0 4/4 0/0 .text convertAbsToRel__10Z2AudienceFR3VecP3Veci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2Audience::convertAbsToRel(Vec& param_0, Vec* param_1, int param_2) { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/convertAbsToRel__10Z2AudienceFR3VecP3Veci.s" +bool Z2Audience::convertAbsToRel(Vec& param_0, Vec* param_1, int param_2) { + return mAudioCamera[param_2].convertAbsToRel(param_0, param_1); } -#pragma pop /* 802BD95C-802BDA44 2B829C 00E8+00 0/0 3/3 0/0 .text calcRelPosVolume__10Z2AudienceFRC3Vecfi */ +// Mathces with literals +#ifdef NONMATCHING +f32 Z2Audience::calcRelPosVolume(Vec const& param_0, f32 param_1, int param_2) { + JGeometry::TVec3 aTStack_3c; + JGeometry::setTVec3f(param_0, *(Vec*)&aTStack_3c); + aTStack_3c.z += mAudioCamera[param_2].getVolCenterZ(); + aTStack_3c.y *= 1.5f; + f32 this_00 = aTStack_3c.length(); + if (this_00 > mSetting.field_0x0[0] * param_1) { + return mSetting.field_0x40; + } + + if (this_00 < mSetting.field_0x3c) { + return 1.0f; + } + return JGeometry::TUtil::clamp( + 1.0f + ((mSetting.field_0x40 - 1.0f) / + ((mSetting.field_0x0[0] * param_1) - mSetting.field_0x3c)) * + (this_00 - mSetting.field_0x3c), + 0.0f, 1.0f); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2Audience::calcRelPosVolume(Vec const& param_0, f32 param_1, int param_2) { +asm f32 Z2Audience::calcRelPosVolume(Vec const& param_0, f32 param_1, int param_2) { nofralloc #include "asm/Z2AudioLib/Z2Audience/calcRelPosVolume__10Z2AudienceFRC3Vecfi.s" } #pragma pop +#endif /* 802BDA44-802BDB44 2B8384 0100+00 1/1 3/3 0/0 .text calcRelPosPan__10Z2AudienceFRC3Veci */ +// Matches with literals +#ifdef NONMATCHING +f32 Z2Audience::calcRelPosPan(Vec const& param_0, int param_1) { + Vec local_54 = param_0; + local_54.y = 0.0f; + f32 dVar6 = PSVECMag(&local_54); + if (dVar6 < 0.1f) { + return 0.5f; + } + + dVar6 = (0.5f + mSetting.field_0x58 * (local_54.x / dVar6)); + if (local_54.z <= 0.0f) { + f32 dVar7 = mAudioCamera[param_1].getFovySin(); + if (dVar6 < 0.5f) { + dVar6 = Z2Calc::getParamByExp( + dVar6, 0.0f, 0.5f, + dVar7, 0.0f, 0.5f, Z2Calc::CURVE_SIGN_1); + } else { + dVar6 = Z2Calc::getParamByExp( + dVar6, 0.5f, 1.0f, + dVar7, 0.5f, 1.0f, Z2Calc::CURVE_SIGN_0); + } + } + if (dVar6 > 1.0f) { + return 1.0f; + } + + if (dVar6 < 0.0f) { + return 0.0f; + } + return dVar6; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2Audience::calcRelPosPan(Vec const& param_0, int param_1) { +asm f32 Z2Audience::calcRelPosPan(Vec const& param_0, int param_1) { nofralloc #include "asm/Z2AudioLib/Z2Audience/calcRelPosPan__10Z2AudienceFRC3Veci.s" } #pragma pop +#endif /* 802BDB44-802BDBDC 2B8484 0098+00 1/1 3/3 0/0 .text calcRelPosDolby__10Z2AudienceFRC3Veci */ +// Matches with literals +#ifdef NONMATCHING +f32 Z2Audience::calcRelPosDolby(Vec const& param_0, int param_1) { + f32 fVar1 = param_0.z + mAudioCamera[param_1].getDolbyCenterZ(); + if (fVar1 > mSetting.field_0x48) { + return 1.0f; + } + if (fVar1 < mSetting.field_0x44) { + return 0.0f; + } + if (fVar1 < 0.0f) { + return Z2Calc::getParamByExp( + fVar1, mSetting.field_0x44, 0.0f, + 0.3f, 0.0f, + mSetting.field_0x4c, Z2Calc::CURVE_SIGN_1); + } + return Z2Calc::getParamByExp( + fVar1, 0.0f, mSetting.field_0x48, + 0.3f, mSetting.field_0x4c, + 1.0f, Z2Calc::CURVE_SIGN_0); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2Audience::calcRelPosDolby(Vec const& param_0, int param_1) { +asm f32 Z2Audience::calcRelPosDolby(Vec const& param_0, int param_1) { nofralloc #include "asm/Z2AudioLib/Z2Audience/calcRelPosDolby__10Z2AudienceFRC3Veci.s" } #pragma pop +#endif /* 802BDBDC-802BDC44 2B851C 0068+00 1/1 0/0 0/0 .text calcVolume___10Z2AudienceCFfi */ +// Matches with literals +#ifdef NONMATCHING +f32 Z2Audience::calcVolume_(f32 param_0, int param_1) const { + if (param_0 > mSetting.field_0x0[param_1]) { + return mSetting.field_0x40; + } + + if (param_0 < mSetting.field_0x3c) { + return 1.0f; + } + + f32 volume = 1.0f + mSetting.field_0x70[param_1] * (param_0 - mSetting.field_0x3c); + if (volume < 0.0f) { + return 0.0f; + } + + if (volume > 1.0f) { + return 1.0f; + } + return volume; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2Audience::calcVolume_(f32 param_0, int param_1) const { +asm f32 Z2Audience::calcVolume_(f32 param_0, int param_1) const { nofralloc #include "asm/Z2AudioLib/Z2Audience/calcVolume___10Z2AudienceCFfi.s" } #pragma pop +#endif /* 802BDC44-802BDCB0 2B8584 006C+00 2/2 0/0 0/0 .text calcDeltaPriority___10Z2AudienceCFfib */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2Audience::calcDeltaPriority_(f32 param_0, int param_1, bool param_2) const { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/calcDeltaPriority___10Z2AudienceCFfib.s" +u32 Z2Audience::calcDeltaPriority_(f32 param_0, int param_1, bool param_2) const { + if (param_0 > mSetting.field_0x0[param_1]) { + if (param_2) { + return -1; + } + return mSetting.field_0x64; + } + + if (param_0 < mSetting.field_0x3c) { + return 0; + } + + return mSetting.field_0xac[param_1] * (param_0 - mSetting.field_0x3c); } -#pragma pop /* 802BDCB0-802BDD00 2B85F0 0050+00 1/1 0/0 0/0 .text * calcPitchDoppler___10Z2AudienceCFRCQ29JGeometry8TVec3RCQ29JGeometry8TVec3RCQ29JGeometry8TVec3f */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2Audience::calcPitchDoppler_(JGeometry::TVec3 const& param_0, - JGeometry::TVec3 const& param_1, - JGeometry::TVec3 const& param_2, f32 param_3) const { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/func_802BDCB0.s" +f32 Z2Audience::calcPitchDoppler_(JGeometry::TVec3 const& param_0, + JGeometry::TVec3 const& param_1, + JGeometry::TVec3 const& param_2, f32 param_3) const { + f32 dVar8 = param_0.dot(param_1); + f32 dVar7 = param_0.dot(param_2); + return (mSetting.field_0x5c + param_3 * dVar8) / (mSetting.field_0x5c + param_3 * dVar7); } -#pragma pop /* 802BDD00-802BDD48 2B8640 0048+00 1/1 0/0 0/0 .text calcFxMix___10Z2AudienceCFfi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void Z2Audience::calcFxMix_(f32 param_0, int param_1) const { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/calcFxMix___10Z2AudienceCFfi.s" +f32 Z2Audience::calcFxMix_(f32 param_0, int param_1) const { + if (param_0 > mSetting.field_0x0[param_1]) { + return mSetting.field_0x54; + } + if (param_0 < mSetting.field_0x3c) { + return mSetting.field_0x50; + } + return mSetting.field_0x50 + mSetting.field_0xe8[param_1] * (param_0 - mSetting.field_0x3c); } -#pragma pop /* ############################################################################################## */ /* 80455B34-80455B38 004134 0004+00 1/1 0/0 0/0 .sdata2 @1988 */ @@ -863,25 +1456,51 @@ SECTION_SDATA2 static f32 lit_1988 = 1.0f / 15.0f; /* 802BDD48-802BDED4 2B8688 018C+00 1/1 0/0 0/0 .text * calcPitch___10Z2AudienceCFP16Z2AudibleChannelPC9Z2AudiblePC13Z2AudioCamera */ +// Matches with literals +#ifdef NONMATCHING +f32 Z2Audience::calcPitch_(Z2AudibleChannel* param_0, Z2Audible const* param_1, + Z2AudioCamera const* param_2) const { + JAUAudibleParam audParam = *param_1->getAudibleParam(); + if ((*(u8*)&audParam.field_0x0.raw >> 4) & 0xf) { + JGeometry::TVec3 aTStack_4c; + aTStack_4c.normalize(param_0->field_0x14.field_0x00); + JAUAudibleParam audParam = *param_1->getAudibleParam(); + f32 dVar7 = audParam.getDopplerPower(); + dVar7 = calcPitchDoppler_(aTStack_4c, *param_2->getVel(), *param_1->getVel(), dVar7); + if (param_0->field_0x34 > 0.0f) { + if (param_0->field_0x34 > (dVar7 * mSetting.field_0x60)) { + return param_0->field_0x34; + } + if (dVar7 > (param_0->field_0x34 * mSetting.field_0x60)) { + return param_0->field_0x34; + } + param_0->field_0x34 = dVar7; + return dVar7; + } + if (dVar7 > 0.0f) { + param_0->field_0x34 = dVar7; + return dVar7; + } + return 1.0f; + } + return 1.0f; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2Audience::calcPitch_(Z2AudibleChannel* param_0, Z2Audible const* param_1, +asm f32 Z2Audience::calcPitch_(Z2AudibleChannel* param_0, Z2Audible const* param_1, Z2AudioCamera const* param_2) const { nofralloc #include "asm/Z2AudioLib/Z2Audience/calcPitch___10Z2AudienceCFP16Z2AudibleChannelPC9Z2AudiblePC13Z2AudioCamera.s" } #pragma pop +#endif /* 802BDED4-802BDEDC 2B8814 0008+00 1/0 0/0 0/0 .text getMaxChannels__10Z2AudienceFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int Z2Audience::getMaxChannels() { - nofralloc -#include "asm/Z2AudioLib/Z2Audience/getMaxChannels__10Z2AudienceFv.s" +int Z2Audience::getMaxChannels() { + return mNumPlayers; } -#pragma pop /* 802BDEDC-802BDEF0 2B881C 0014+00 0/0 1/0 0/0 .text __sinit_Z2Audience_cpp */ #pragma push diff --git a/libs/Z2AudioLib/Z2SoundInfo.cpp b/libs/Z2AudioLib/Z2SoundInfo.cpp index 634eda4c8f3..8a9beaa5212 100644 --- a/libs/Z2AudioLib/Z2SoundInfo.cpp +++ b/libs/Z2AudioLib/Z2SoundInfo.cpp @@ -122,7 +122,7 @@ asm void Z2SoundInfo::getPriority(JAISoundID param_0) const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void Z2SoundInfo::getAudibleSwFull(JAISoundID param_0) { +asm u32 Z2SoundInfo::getAudibleSwFull(JAISoundID param_0) { nofralloc #include "asm/Z2AudioLib/Z2SoundInfo/getAudibleSwFull__11Z2SoundInfoF10JAISoundID.s" } diff --git a/rel/d/a/b/d_a_b_ob/d_a_b_ob.cpp b/rel/d/a/b/d_a_b_ob/d_a_b_ob.cpp index 387a0f5f376..29f93a304de 100644 --- a/rel/d/a/b/d_a_b_ob/d_a_b_ob.cpp +++ b/rel/d/a/b/d_a_b_ob/d_a_b_ob.cpp @@ -1881,7 +1881,8 @@ static asm void cM_scos(s16 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void JMAFastSqrt(f32 param_0) { +//static asm void JMAFastSqrt(f32 param_0) { +static asm void JMAFastSqrt__Ff() { nofralloc #include "asm/rel/d/a/b/d_a_b_ob/d_a_b_ob/JMAFastSqrt__Ff.s" } diff --git a/rel/d/a/e/d_a_e_wb/d_a_e_wb.cpp b/rel/d/a/e/d_a_e_wb/d_a_e_wb.cpp index 70003d39ff8..ae815e9389b 100644 --- a/rel/d/a/e/d_a_e_wb/d_a_e_wb.cpp +++ b/rel/d/a/e/d_a_e_wb/d_a_e_wb.cpp @@ -4833,7 +4833,8 @@ extern "C" asm void cMtx_XrotM__FPA4_fs() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void JMAFastSqrt(f32 param_0) { +//static asm void JMAFastSqrt(f32 param_0) { +static asm void JMAFastSqrt__Ff() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/JMAFastSqrt__Ff.s" } diff --git a/src/d/d_camera.cpp b/src/d/d_camera.cpp index c4c4c6ce74e..9131ee42583 100644 --- a/src/d/d_camera.cpp +++ b/src/d/d_camera.cpp @@ -4040,7 +4040,8 @@ asm void daPy_py_c::checkGoronSideMove() const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void JMAFastSqrt(f32 param_0) { +//static asm void JMAFastSqrt(f32 param_0) { +static asm void JMAFastSqrt__Ff() { nofralloc #include "asm/d/d_camera/JMAFastSqrt__Ff.s" }