forked from Ports/perfect_dark
port: begin implementing audio
mixer taken from sm64-port and modified to fit PD's naudio thing MP3 playback not supported yet audio buffering sucks
This commit is contained in:
1 parent
866be01860
commit
ffb5ca4b5b
19 files changed
+1403
-15
No files matched your search
@@ -9839,11 +9839,7 @@ bool aiIfMusicEventQueueIsEmpty(void)
|
||||
{
|
||||
f32 value = (u64)osGetCount() * 64 / 3000;
|
||||
|
||||
#ifdef PLATFORM_N64
|
||||
if (g_MusicEventQueueLength) {
|
||||
#else // don't hang when sound is disabled
|
||||
if (g_MusicEventQueueLength && !g_SndDisabled) {
|
||||
#endif
|
||||
g_Vars.aioffset += 4;
|
||||
} else {
|
||||
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
|
||||
|
||||
@@ -16,4 +16,8 @@ void amgrStartThread(void);
|
||||
OSMesgQueue *amgrGetFrameMesgQueue(void);
|
||||
void amgrStopThread(void);
|
||||
|
||||
#ifndef PLATFORM_N64
|
||||
void amgrFrame(void);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+13
-1
@@ -3436,17 +3436,29 @@ struct surfacetype {
|
||||
union soundnumhack {
|
||||
s16 packed;
|
||||
|
||||
#ifdef PLATFORM_BIG_ENDIAN
|
||||
struct {
|
||||
u16 hasconfig : 1;
|
||||
u16 confignum : 15;
|
||||
};
|
||||
|
||||
struct {
|
||||
u16 hasconfig2 : 1;
|
||||
u16 unk02 : 2;
|
||||
u16 mp3priority : 2;
|
||||
u16 id : 11;
|
||||
};
|
||||
#else
|
||||
struct {
|
||||
u16 confignum : 15;
|
||||
u16 hasconfig : 1;
|
||||
};
|
||||
struct {
|
||||
u16 id : 11;
|
||||
u16 mp3priority : 2;
|
||||
u16 unk02 : 2;
|
||||
u16 hasconfig2 : 1;
|
||||
};
|
||||
#endif
|
||||
};
|
||||
|
||||
struct audiorussmapping {
|
||||
|
||||
@@ -254,7 +254,11 @@ void amgrHandleFrameMsg(AudioInfo *info, AudioInfo *previnfo)
|
||||
|
||||
admaBeginFrame();
|
||||
|
||||
#ifdef PLATFORM_N64
|
||||
somevalue = IO_READ(OS_PHYSICAL_TO_K1(AI_LEN_REG)) / 4;
|
||||
#else
|
||||
somevalue = osAiGetLength() / 4;
|
||||
#endif
|
||||
datastart = g_AudioManager.ACMDList[var8005cf90];
|
||||
outbuffer = (s16 *) osVirtualToPhysical(info->data);
|
||||
|
||||
@@ -307,3 +311,35 @@ void amgrHandleDoneMsg(AudioInfo *info)
|
||||
firsttime = false;
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef PLATFORM_N64
|
||||
void amgrFrame(void)
|
||||
{
|
||||
static AudioInfo *prevInfo = NULL;
|
||||
static s32 count = 0;
|
||||
|
||||
var80091588 = osGetTime();
|
||||
|
||||
AudioInfo *next = g_AudioManager.audioInfo[g_AdmaCurFrame % 3];
|
||||
amgrHandleFrameMsg(next, prevInfo);
|
||||
admaReceiveAll();
|
||||
|
||||
prevInfo = next;
|
||||
|
||||
count++;
|
||||
|
||||
var80091590 = osGetTime();
|
||||
var80091570 = var80091590 - var80091588;
|
||||
|
||||
if (count % 240 == 0) {
|
||||
var80091578 = var80091580 / 240;
|
||||
var80091580 = 0; var80091568 = 0;
|
||||
} else {
|
||||
var80091580 = (var80091580 + var80091590) - var80091588;
|
||||
}
|
||||
|
||||
if (var80091568 < var80091590 - var80091588) {
|
||||
var80091568 = var80091590 - var80091588;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -9,6 +9,8 @@
|
||||
* These two ABI commands are used in this file, but the format of the data
|
||||
* doesn't match the format used by n_audio's ABI.
|
||||
*/
|
||||
#ifdef PLATFORM_N64
|
||||
|
||||
#define acmd07(pkt, a, b) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
@@ -23,6 +25,15 @@
|
||||
_a->words.w1 = a; \
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include "mixer.h"
|
||||
|
||||
#define acmd07(pkt, a, b) aPlayMP3(pkt, a, b)
|
||||
#define acmd08(pkt, a) do { } while(0)
|
||||
|
||||
#endif
|
||||
|
||||
struct mp3vars g_Mp3Vars;
|
||||
struct asistream *g_AsiStream;
|
||||
|
||||
|
||||
+474
-3
@@ -1,28 +1,499 @@
|
||||
#include <ultra64.h>
|
||||
#include "internal.h"
|
||||
#include "mp3.h"
|
||||
#include "data.h"
|
||||
#include "platform.h"
|
||||
|
||||
extern struct mp3decfourbytes *var8009c650[];
|
||||
|
||||
s32 mp3util000461c0(u8 *buffer, s32 *a2, s32 a3, struct mp3decfourbytes *v8, s32 t0)
|
||||
{
|
||||
s32 v4 = t0;
|
||||
s32 v5 = *buffer;
|
||||
s32 v6 = (a3 << 8) + (u8)(((v5 << 8) | (u32)buffer[1]) >> (8 - (v4 & 7)));
|
||||
if (*(u8 *)(var8005f6fc + v6)) {
|
||||
return *(u8 *)(var8005f6f8 + v6) & 0xF;
|
||||
}
|
||||
u32 v9 = 0x80u >> (v4 & 7);
|
||||
|
||||
do {
|
||||
s32 v10;
|
||||
if ((v5 & v9) != 0) {
|
||||
v10 = v8->bytes[1];
|
||||
} else {
|
||||
v10 = v8->bytes[0];
|
||||
}
|
||||
v9 >>= 1;
|
||||
v8 += v10;
|
||||
if (!v9) {
|
||||
v9 = 128;
|
||||
v5 = *++buffer;
|
||||
}
|
||||
++v4;
|
||||
} while (v8->unk02 == -1);
|
||||
|
||||
return v8->unk02;
|
||||
}
|
||||
|
||||
s32 mp3util00046290(u32 *ptr, u8 s1, u8 t0)
|
||||
{
|
||||
return *ptr << (t0 & 7) >> (32 - s1);
|
||||
}
|
||||
|
||||
s32 mp3utilGetBits(u8 *buffer, s32 *count, s32 numbits)
|
||||
{
|
||||
return 0;
|
||||
const s32 result = PD_BE32(*(u32 *)(buffer + (*count >> 3))) << (*count & 7) >> (32 - numbits);
|
||||
*count += numbits;
|
||||
return result;
|
||||
}
|
||||
|
||||
s32 mp3util000462f8(u8 *arg0, s32 *arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s16 **arg6, u8 **arg7)
|
||||
{
|
||||
return 0;
|
||||
s8 cVar1;
|
||||
u32 uVar2;
|
||||
u32 uVar3;
|
||||
s32 *piVar4;
|
||||
u32 uVar5;
|
||||
s16 *puVar6;
|
||||
u8 *puVar7;
|
||||
s32 iVar8;
|
||||
|
||||
struct mp3decfourbytes *s0 = var8009c650[arg2];
|
||||
|
||||
uVar5 = *arg1;
|
||||
puVar6 = (s16 *)*arg6;
|
||||
puVar7 = (u8 *)*arg7;
|
||||
piVar4 = (s32 *)(arg0 + (uVar5 >> 3));
|
||||
iVar8 = -arg3;
|
||||
|
||||
while (iVar8 = arg5 + iVar8, iVar8 > 0) {
|
||||
uVar2 = mp3util000461c0((u8 *)piVar4, arg1, arg2, s0, uVar5);
|
||||
if ((arg4 != 0) && (uVar2 == 0xf)) {
|
||||
uVar2 = mp3util00046290(piVar4, arg4, uVar5);
|
||||
uVar2 = uVar2 + 0xf;
|
||||
}
|
||||
if (uVar2 == 0) {
|
||||
*puVar7 = 0;
|
||||
} else {
|
||||
cVar1 = *(s8 *)piVar4;
|
||||
uVar3 = uVar5 & 7;
|
||||
piVar4 = (s32 *)((u8 *)piVar4 + (uVar3 + 1 >> 3));
|
||||
uVar5 = uVar5 + 1;
|
||||
if (((u32)cVar1 >> (7 - uVar3 & 0x1f) & 1) == 0) {
|
||||
*puVar7 = 0;
|
||||
} else {
|
||||
*puVar7 = 1;
|
||||
}
|
||||
}
|
||||
if ((arg4 != 0) && (iVar8 == 0xf)) {
|
||||
uVar3 = mp3util00046290(piVar4, arg4, uVar5);
|
||||
iVar8 = uVar3 + 0xf;
|
||||
}
|
||||
*puVar6 = (s16)uVar2;
|
||||
puVar6[1] = (s16)iVar8;
|
||||
puVar6 = puVar6 + 2;
|
||||
if (iVar8 == 0) {
|
||||
puVar7[1] = 0;
|
||||
} else {
|
||||
cVar1 = *(s8 *)piVar4;
|
||||
uVar2 = uVar5 & 7;
|
||||
piVar4 = (s32 *)((u8 *)piVar4 + (uVar2 + 1 >> 3));
|
||||
uVar5 = uVar5 + 1;
|
||||
if (((u32)cVar1 >> (7 - uVar2 & 0x1f) & 1) == 0) {
|
||||
puVar7[1] = 0;
|
||||
} else {
|
||||
puVar7[1] = 1;
|
||||
}
|
||||
}
|
||||
arg3 = arg3 + 2;
|
||||
puVar7 = puVar7 + 2;
|
||||
iVar8 = -arg3;
|
||||
}
|
||||
|
||||
*arg1 = uVar5;
|
||||
*arg6 = puVar6;
|
||||
*arg7 = puVar7;
|
||||
|
||||
return arg3;
|
||||
}
|
||||
|
||||
s32 mp3util000464a8(u8 *arg0, s32 *arg1, s32 arg2, s32 arg3, s32 arg4, s16 **arg5, u8 **arg6)
|
||||
{
|
||||
return 0;
|
||||
u32 uVar1;
|
||||
u32 uVar2;
|
||||
s32 *piVar3;
|
||||
s32 iVar4;
|
||||
u32 uVar5;
|
||||
u32 uVar6;
|
||||
u32 uVar7;
|
||||
u32 uVar8;
|
||||
u32 uVar9;
|
||||
s16 *puVar10;
|
||||
u8 *puVar11;
|
||||
|
||||
struct mp3decfourbytes *s0 = var8009c650[arg2];
|
||||
|
||||
uVar5 = *arg1;
|
||||
puVar10 = *arg5;
|
||||
puVar11 = *arg6;
|
||||
piVar3 = (s32 *)(arg0 + (uVar5 >> 3));
|
||||
|
||||
if (((s32)(arg4 - uVar5) > 0) && (iVar4 = arg3, arg3 + -0x240 < 0)) {
|
||||
do {
|
||||
uVar1 = mp3util000461c0((u8 *)piVar3, arg1, arg2, s0, uVar5);
|
||||
uVar6 = uVar1 >> 3 & 1;
|
||||
uVar7 = uVar1 >> 2 & 1;
|
||||
uVar8 = uVar1 >> 1 & 1;
|
||||
uVar1 = uVar1 & 1;
|
||||
*puVar10 = (s16)uVar6;
|
||||
puVar10[1] = (s16)uVar7;
|
||||
puVar10[2] = (s16)uVar8;
|
||||
puVar10[3] = (s16)uVar1;
|
||||
uVar2 = mp3util00046290(piVar3, 4, uVar5);
|
||||
uVar9 = 3;
|
||||
*puVar11 = (u8)uVar2;
|
||||
if (uVar6 != 0) {
|
||||
uVar6 = uVar6 & uVar2 >> 3;
|
||||
uVar9 = 2;
|
||||
}
|
||||
*puVar11 = (u8)uVar6;
|
||||
if (uVar7 != 0) {
|
||||
uVar7 = uVar7 & uVar2 >> uVar9;
|
||||
uVar9 = uVar9 - 1;
|
||||
}
|
||||
puVar11[1] = (u8)uVar7;
|
||||
if (uVar8 != 0) {
|
||||
uVar8 = uVar8 & uVar2 >> (uVar9 & 0x1f);
|
||||
uVar9 = uVar9 - 1;
|
||||
}
|
||||
puVar11[2] = (u8)uVar8;
|
||||
if (uVar1 != 0) {
|
||||
uVar1 = uVar1 & uVar2 >> (uVar9 & 0x1f);
|
||||
uVar9 = uVar9 - 1;
|
||||
}
|
||||
puVar11[3] = (u8)uVar1;
|
||||
uVar1 = uVar5 & 7;
|
||||
uVar5 = uVar5 - (uVar9 + 1);
|
||||
if ((s32)(uVar1 - (uVar9 + 1)) < 0) {
|
||||
piVar3 = (s32 *)((u8 *)piVar3 - 1);
|
||||
}
|
||||
puVar10 = puVar10 + 4;
|
||||
puVar11 = puVar11 + 4;
|
||||
arg3 = iVar4 + 4;
|
||||
} while ((iVar4 + -0x23c < 0) && (iVar4 = arg3, (s32)(arg4 - uVar5) > 0));
|
||||
}
|
||||
|
||||
*arg1 = uVar5;
|
||||
*arg5 = puVar10;
|
||||
*arg6 = puVar11;
|
||||
|
||||
return arg4;
|
||||
}
|
||||
|
||||
void func00046650(struct asistream_4f64 *arg0, s32 arg1, struct asistream_4f64 *arg2, struct asistream_4f64 *arg3, void *arg4)
|
||||
{
|
||||
f32 fVar1;
|
||||
f32 fVar2;
|
||||
f32 fVar3;
|
||||
f32 fVar4;
|
||||
f32 fVar5;
|
||||
f32 fVar6;
|
||||
f32 fVar7;
|
||||
f32 fVar8;
|
||||
f32 fVar9;
|
||||
f32 fVar10;
|
||||
f32 fVar11;
|
||||
f32 fVar12;
|
||||
f32 fVar13;
|
||||
f32 fVar14;
|
||||
f32 fVar15;
|
||||
f32 fVar16;
|
||||
f32 fVar17;
|
||||
f32 fVar18;
|
||||
f32 fVar19;
|
||||
f32 fVar20;
|
||||
f32 fVar21;
|
||||
f32 fVar22;
|
||||
f32 fVar23;
|
||||
f32 fVar24;
|
||||
f32 fVar25;
|
||||
f32 fVar26;
|
||||
f32 fVar27;
|
||||
|
||||
// TODO: can't be arsed to figure out proper types for now
|
||||
|
||||
f32 *param1 = (f32 *)arg0;
|
||||
f32 *param3 = (f32 *)arg2;
|
||||
f32 *param4 = (f32 *)arg3;
|
||||
f32 *param5 = (f32 *)arg4;
|
||||
|
||||
fVar17 = param1[0x10];
|
||||
param1[0x10] = param1[0xf] + fVar17;
|
||||
param1[0x11] = fVar17 + param1[0x11];
|
||||
fVar17 = param1[0xe];
|
||||
param1[0xe] = param1[0xd] + fVar17;
|
||||
param1[0xf] = fVar17 + param1[0xf];
|
||||
fVar17 = param1[0xc];
|
||||
param1[0xc] = param1[0xb] + fVar17;
|
||||
param1[0xd] = fVar17 + param1[0xd];
|
||||
fVar17 = param1[10];
|
||||
param1[10] = param1[9] + fVar17;
|
||||
param1[0xb] = fVar17 + param1[0xb];
|
||||
fVar17 = param1[8];
|
||||
param1[8] = param1[7] + fVar17;
|
||||
param1[9] = fVar17 + param1[9];
|
||||
fVar17 = param1[6];
|
||||
param1[6] = param1[5] + fVar17;
|
||||
param1[7] = fVar17 + param1[7];
|
||||
fVar17 = param1[4];
|
||||
param1[4] = param1[3] + fVar17;
|
||||
param1[5] = fVar17 + param1[5];
|
||||
fVar17 = param1[2];
|
||||
param1[2] = param1[1] + fVar17;
|
||||
param1[3] = fVar17 + param1[3];
|
||||
param1[1] = *param1 + param1[1];
|
||||
fVar17 = param1[0xf];
|
||||
param1[0xf] = param1[0xd] + fVar17;
|
||||
param1[0x11] = fVar17 + param1[0x11];
|
||||
fVar17 = param1[0xb];
|
||||
param1[0xb] = param1[9] + fVar17;
|
||||
param1[0xd] = fVar17 + param1[0xd];
|
||||
fVar17 = param1[7];
|
||||
param1[7] = param1[5] + fVar17;
|
||||
param1[9] = fVar17 + param1[9];
|
||||
fVar17 = param1[3];
|
||||
param1[3] = param1[1] + fVar17;
|
||||
param1[5] = fVar17 + param1[5];
|
||||
fVar1 = *param1 + *param1;
|
||||
fVar17 = fVar1 + param1[0xc];
|
||||
fVar6 = param1[4] * 1.879385 + param1[8] * 1.532089 + param1[0x10] * 0.3472964 + fVar17;
|
||||
fVar7 = param1[4] * -0.3472964 + param1[8] * -1.879385 + param1[0x10] * 1.532089 + fVar17;
|
||||
fVar17 = param1[4] * -1.532089 + param1[8] * 0.3472964 + param1[0x10] * -1.879385 + fVar17;
|
||||
fVar18 = param1[0xc];
|
||||
fVar2 = ((((fVar1 + param1[4]) - param1[8]) - fVar18) - fVar18) - param1[0x10];
|
||||
fVar3 = (((*param1 - param1[4]) + param1[8]) - fVar18) + param1[0x10];
|
||||
fVar8 = param1[2] * 1.969615 + param1[10] * 1.285575 + param1[0xe] * 0.6840403 +
|
||||
param1[6] * 1.732051;
|
||||
fVar1 = -(param1[6] * 1.732051);
|
||||
fVar9 = param1[2] * 1.285575 + param1[10] * -0.6840403 + param1[0xe] * 1.969615 + fVar1;
|
||||
fVar1 = param1[2] * 0.6840403 + param1[10] * 1.969615 + param1[0xe] * -1.285575 + fVar1;
|
||||
fVar10 = ((param1[2] - param1[10]) - param1[0xe]) * 1.732051;
|
||||
fVar4 = param1[1] + param1[1];
|
||||
fVar18 = fVar4 + param1[0xd];
|
||||
fVar11 = param1[5] * 1.879385 + param1[9] * 1.532089 + param1[0x11] * 0.3472964 + fVar18;
|
||||
fVar12 = param1[5] * -0.3472964 + param1[9] * -1.879385 + param1[0x11] * 1.532089 + fVar18;
|
||||
fVar18 = param1[5] * -1.532089 + param1[9] * 0.3472964 + param1[0x11] * -1.879385 + fVar18;
|
||||
fVar19 = param1[0xd];
|
||||
fVar5 = ((((fVar4 + param1[5]) - param1[9]) - fVar19) - fVar19) - param1[0x11];
|
||||
fVar13 = param1[3] * 1.969615 + param1[0xb] * 1.285575 + param1[0xf] * 0.6840403 +
|
||||
param1[7] * 1.732051;
|
||||
fVar4 = -(param1[7] * 1.732051);
|
||||
fVar14 = param1[3] * 1.285575 + param1[0xb] * -0.6840403 + param1[0xf] * 1.969615 + fVar4;
|
||||
fVar4 = param1[3] * 0.6840403 + param1[0xb] * 1.969615 + param1[0xf] * -1.285575 + fVar4;
|
||||
fVar15 = ((param1[3] - param1[0xb]) - param1[0xf]) * 1.732051;
|
||||
fVar16 = fVar6 + fVar8;
|
||||
fVar20 = (fVar11 + fVar13) * 0.5019099;
|
||||
fVar24 = (fVar16 + fVar20) * -0.2502382;
|
||||
fVar16 = (fVar16 - fVar20) * -5.731396;
|
||||
fVar20 = fVar2 + fVar10;
|
||||
fVar21 = (fVar5 + fVar15) * 0.5176381;
|
||||
fVar25 = (fVar20 + fVar21) * -0.2521572;
|
||||
fVar20 = (fVar20 - fVar21) * -1.915324;
|
||||
fVar21 = fVar7 + fVar9;
|
||||
fVar22 = (fVar12 + fVar14) * 0.551689;
|
||||
fVar26 = (fVar21 + fVar22) * -0.2560699;
|
||||
fVar21 = (fVar21 - fVar22) * -1.155057;
|
||||
fVar22 = fVar17 + fVar1;
|
||||
fVar23 = (fVar18 + fVar4) * 0.6103873;
|
||||
fVar27 = (fVar22 + fVar23) * -0.2621323;
|
||||
fVar22 = (fVar22 - fVar23) * -0.8313774;
|
||||
fVar17 = fVar17 - fVar1;
|
||||
fVar1 = (fVar18 - fVar4) * 0.8717234;
|
||||
fVar23 = (fVar17 + fVar1) * -0.2818455;
|
||||
fVar17 = (fVar17 - fVar1) * -0.5414202;
|
||||
fVar7 = fVar7 - fVar9;
|
||||
fVar1 = (fVar12 - fVar14) * 1.183101;
|
||||
fVar9 = (fVar7 + fVar1) * -0.2964223;
|
||||
fVar1 = (fVar7 - fVar1) * -0.4652897;
|
||||
fVar2 = fVar2 - fVar10;
|
||||
fVar18 = (fVar5 - fVar15) * 1.931852;
|
||||
fVar10 = (fVar2 + fVar18) * -0.3151181;
|
||||
fVar18 = (fVar2 - fVar18) * -0.4106699;
|
||||
fVar6 = fVar6 - fVar8;
|
||||
fVar4 = (fVar11 - fVar13) * 5.736856;
|
||||
fVar8 = (fVar6 + fVar4) * -0.3390854;
|
||||
fVar4 = (fVar6 - fVar4) * -0.3700468;
|
||||
fVar2 = ((((param1[1] - param1[5]) + param1[9]) - fVar19) + param1[0x11]) * 0.7071068;
|
||||
fVar5 = (fVar3 + fVar2) * -0.5411961;
|
||||
fVar2 = (fVar3 - fVar2) * -1.306563;
|
||||
if ((arg1 & 1) == 0) {
|
||||
*param3 = -fVar4 * *param5 + *param4;
|
||||
param3[1] = -fVar18 * param5[1] + param4[1];
|
||||
param3[2] = -fVar1 * param5[2] + param4[2];
|
||||
param3[3] = -fVar17 * param5[3] + param4[3];
|
||||
param3[4] = -fVar2 * param5[4] + param4[4];
|
||||
param3[5] = -fVar22 * param5[5] + param4[5];
|
||||
param3[6] = -fVar21 * param5[6] + param4[6];
|
||||
param3[7] = -fVar20 * param5[7] + param4[7];
|
||||
param3[8] = -fVar16 * param5[8] + param4[8];
|
||||
param3[9] = fVar16 * param5[9] + param4[9];
|
||||
param3[10] = fVar20 * param5[10] + param4[10];
|
||||
param3[0xb] = fVar21 * param5[0xb] + param4[0xb];
|
||||
param3[0xc] = fVar22 * param5[0xc] + param4[0xc];
|
||||
param3[0xd] = fVar2 * param5[0xd] + param4[0xd];
|
||||
param3[0xe] = fVar17 * param5[0xe] + param4[0xe];
|
||||
param3[0xf] = fVar1 * param5[0xf] + param4[0xf];
|
||||
param3[0x10] = fVar18 * param5[0x10] + param4[0x10];
|
||||
param3[0x11] = fVar4 * param5[0x11] + param4[0x11];
|
||||
} else {
|
||||
*param3 = -fVar4 * *param5 + *param4;
|
||||
param3[1] = fVar18 * param5[1] - param4[1];
|
||||
param3[2] = -fVar1 * param5[2] + param4[2];
|
||||
param3[3] = fVar17 * param5[3] - param4[3];
|
||||
param3[4] = -fVar2 * param5[4] + param4[4];
|
||||
param3[5] = fVar22 * param5[5] - param4[5];
|
||||
param3[6] = -fVar21 * param5[6] + param4[6];
|
||||
param3[7] = fVar20 * param5[7] - param4[7];
|
||||
param3[8] = -fVar16 * param5[8] + param4[8];
|
||||
param3[9] = -fVar16 * param5[9] - param4[9];
|
||||
param3[10] = fVar20 * param5[10] + param4[10];
|
||||
param3[0xb] = -fVar21 * param5[0xb] - param4[0xb];
|
||||
param3[0xc] = fVar22 * param5[0xc] + param4[0xc];
|
||||
param3[0xd] = -fVar2 * param5[0xd] - param4[0xd];
|
||||
param3[0xe] = fVar17 * param5[0xe] + param4[0xe];
|
||||
param3[0xf] = -fVar1 * param5[0xf] - param4[0xf];
|
||||
param3[0x10] = fVar18 * param5[0x10] + param4[0x10];
|
||||
param3[0x11] = -fVar4 * param5[0x11] - param4[0x11];
|
||||
}
|
||||
fVar17 = param5[0x13];
|
||||
*param4 = fVar8 * param5[0x12];
|
||||
param4[1] = fVar10 * fVar17;
|
||||
fVar17 = param5[0x15];
|
||||
param4[2] = fVar9 * param5[0x14];
|
||||
param4[3] = fVar23 * fVar17;
|
||||
fVar17 = param5[0x17];
|
||||
param4[4] = fVar5 * param5[0x16];
|
||||
param4[5] = fVar27 * fVar17;
|
||||
fVar17 = param5[0x19];
|
||||
param4[6] = fVar26 * param5[0x18];
|
||||
param4[7] = fVar25 * fVar17;
|
||||
fVar17 = param5[0x1b];
|
||||
param4[8] = fVar24 * param5[0x1a];
|
||||
param4[9] = fVar24 * fVar17;
|
||||
fVar17 = param5[0x1d];
|
||||
param4[10] = fVar25 * param5[0x1c];
|
||||
param4[0xb] = fVar26 * fVar17;
|
||||
fVar17 = param5[0x1f];
|
||||
param4[0xc] = fVar27 * param5[0x1e];
|
||||
param4[0xd] = fVar5 * fVar17;
|
||||
fVar17 = param5[0x21];
|
||||
param4[0xe] = fVar23 * param5[0x20];
|
||||
param4[0xf] = fVar9 * fVar17;
|
||||
fVar17 = param5[0x23];
|
||||
param4[0x10] = fVar10 * param5[0x22];
|
||||
param4[0x11] = fVar8 * fVar17;
|
||||
}
|
||||
|
||||
void func00047550(struct asistream_4f64 *arg0, s32 arg1, struct asistream_4f64 *arg2, struct asistream_4f64 *arg3)
|
||||
{
|
||||
f32 *pfVar1;
|
||||
f32 *pfVar2;
|
||||
s32 iVar3;
|
||||
f32 fVar4;
|
||||
f32 fVar5;
|
||||
f32 fVar6;
|
||||
f32 fVar7;
|
||||
f32 fVar8;
|
||||
f32 fVar9;
|
||||
f32 fVar10;
|
||||
f32 fVar11;
|
||||
f32 fVar12;
|
||||
f32 locald0[52];
|
||||
|
||||
// TODO: can't be arsed to figure out proper types
|
||||
f32 *param1 = (f32 *)arg0;
|
||||
f32 *param3 = (f32 *)arg2;
|
||||
f32 *param4 = (f32 *)arg3;
|
||||
|
||||
pfVar1 = locald0;
|
||||
for (s32 i = 0; i < ARRAYCOUNT(locald0); i += 4) {
|
||||
pfVar1[0] = 0.0;
|
||||
pfVar1[1] = 0.0;
|
||||
pfVar1[2] = 0.0;
|
||||
pfVar1[3] = 0.0;
|
||||
pfVar1 = pfVar1 + 4;
|
||||
}
|
||||
pfVar2 = locald0 + 0x10;
|
||||
iVar3 = 3;
|
||||
pfVar1 = pfVar2;
|
||||
do {
|
||||
param1[5] = param1[5] + param1[4];
|
||||
param1[4] = param1[4] + param1[3];
|
||||
param1[3] = param1[3] + param1[2];
|
||||
param1[2] = param1[2] + param1[1];
|
||||
param1[1] = param1[1] + *param1;
|
||||
param1[5] = param1[5] + param1[3];
|
||||
param1[3] = param1[3] + param1[1];
|
||||
fVar11 = *param1 + param1[4] * 0.5;
|
||||
fVar4 = *param1 - param1[4];
|
||||
fVar5 = fVar11 + param1[2] * 0.8660254;
|
||||
fVar11 = fVar11 - param1[2] * 0.8660254;
|
||||
fVar12 = param1[1] + param1[5] * 0.5;
|
||||
fVar6 = (fVar12 - param1[3] * 0.8660254) * 1.931852;
|
||||
fVar9 = (param1[1] - param1[5]) * 0.7071068;
|
||||
fVar12 = (fVar12 + param1[3] * 0.8660254) * 0.5176381;
|
||||
fVar7 = (fVar5 + fVar12) * 0.5043145;
|
||||
fVar10 = (fVar4 + fVar9) * 0.5411961;
|
||||
fVar8 = (fVar11 + fVar6) * 0.6302362;
|
||||
fVar4 = (fVar4 - fVar9) * 1.306563;
|
||||
fVar12 = (fVar5 - fVar12) * 3.830649;
|
||||
fVar5 = (fVar11 - fVar6) * 0.8213398 * 1.0;
|
||||
pfVar1[6] = pfVar1[6] + fVar5 * 0.1305262;
|
||||
pfVar1[7] = pfVar1[7] + fVar4 * 0.3826834;
|
||||
pfVar1[8] = pfVar1[8] + fVar12 * 0.6087614;
|
||||
pfVar1[9] = pfVar1[9] + fVar12 * -0.7933533;
|
||||
pfVar1[10] = pfVar1[10] + fVar4 * -0.9238795;
|
||||
pfVar1[0xb] = pfVar1[0xb] + fVar5 * -0.9914449;
|
||||
pfVar1[0xc] = pfVar1[0xc] + fVar8 * -0.9914449;
|
||||
pfVar1[0xd] = pfVar1[0xd] + fVar10 * -0.9238795;
|
||||
pfVar1[0xe] = pfVar1[0xe] + fVar7 * -0.7933533;
|
||||
pfVar1[0xf] = pfVar1[0xf] + fVar7 * -0.6087614;
|
||||
pfVar1[0x10] = pfVar1[0x10] + fVar10 * -0.3826834;
|
||||
pfVar1[0x11] = pfVar1[0x11] + fVar8 * -0.1305262;
|
||||
param1 = param1 + 6;
|
||||
pfVar1 = pfVar1 + 6;
|
||||
iVar3 = iVar3 + -1;
|
||||
} while (iVar3 != 0);
|
||||
if ((arg1 & 1) == 0) {
|
||||
iVar3 = 0x12;
|
||||
pfVar1 = param4;
|
||||
do {
|
||||
*param3 = *pfVar2 + *pfVar1;
|
||||
param3 = param3 + 1;
|
||||
pfVar1 = pfVar1 + 1;
|
||||
pfVar2 = pfVar2 + 1;
|
||||
iVar3 = iVar3 + -1;
|
||||
} while (iVar3 != 0);
|
||||
} else {
|
||||
iVar3 = 9;
|
||||
pfVar1 = param4;
|
||||
do {
|
||||
fVar4 = pfVar2[1];
|
||||
fVar5 = pfVar1[1];
|
||||
*param3 = *pfVar2 + *pfVar1;
|
||||
param3[1] = -fVar4 - fVar5;
|
||||
param3 = param3 + 2;
|
||||
pfVar1 = pfVar1 + 2;
|
||||
pfVar2 = pfVar2 + 2;
|
||||
iVar3 = iVar3 + -1;
|
||||
} while (iVar3 != 0);
|
||||
}
|
||||
pfVar1 = locald0 + 0x22;
|
||||
iVar3 = 0x12;
|
||||
do {
|
||||
*param4 = *pfVar1;
|
||||
param4 = param4 + 1;
|
||||
pfVar1 = pfVar1 + 1;
|
||||
iVar3 = iVar3 + -1;
|
||||
} while (iVar3 != 0);
|
||||
}
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
#ifdef PLATFORM_N64
|
||||
|
||||
/*
|
||||
* Macros to assemble the audio command list
|
||||
@@ -122,6 +123,23 @@
|
||||
_a->words.w1 = (unsigned int) d; \
|
||||
}
|
||||
|
||||
#else // PLATFORM_N64
|
||||
|
||||
#include <mixer.h>
|
||||
|
||||
#define n_aNoop(pkt, outp, b, c) aDisable(pkt, outp, b, c);
|
||||
#define n_aADPCMdec(pkt, s, f, c, a, d) aADPCMdec(pkt, s, f, c, a, d);
|
||||
#define n_aPoleFilter(pkt, f, g, t, s) aPoleFilter(pkt, f, g, t, s);
|
||||
#define n_aEnvMixer(pkt, f, t, s) aEnvMixer(pkt, f, t, s);
|
||||
#define n_aInterleave(pkt) aInterleave(pkt);
|
||||
#define n_aLoadBuffer(pkt, c, d, s) aLoadBuffer(pkt, c, d, s);
|
||||
#define n_aResample(pkt, s, f, p, i, o) aResample(pkt, s, f, p, i, o);
|
||||
#define n_aSaveBuffer(pkt, c, s, d) aSaveBuffer(pkt, c, s, d);
|
||||
#define n_aSetVolume(pkt, f, v, t, r) aSetVolume(pkt, f, v, t, r);
|
||||
#define n_aLoadADPCM(pkt, c, d) aLoadADPCM(pkt, c, d);
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _LANGUAGE_C */
|
||||
|
||||
#endif /* __N_ABI__ */
|
||||
|
||||
@@ -143,7 +143,7 @@ Acmd *n_alAudioFrame(Acmd *cmdList, s32 *cmdLen, s16 *outBuf, s32 outLen)
|
||||
nOut = MIN(n_syn->maxOutSamples, outLen);
|
||||
|
||||
cmdPtr = cmdlEnd;
|
||||
n_syn->sv_dramout = (intptr_t) lOutBuf;
|
||||
n_syn->sv_dramout = (uintptr_t) lOutBuf;
|
||||
|
||||
cmdlEnd = n_alSavePull(n_syn->curSamples, cmdPtr);
|
||||
|
||||
|
||||
@@ -1445,7 +1445,11 @@ void sndInit(void)
|
||||
|
||||
g_SndMp3Enabled = false;
|
||||
} else {
|
||||
#ifdef PLATFORM_N64
|
||||
g_SndMp3Enabled = true;
|
||||
#else
|
||||
g_SndMp3Enabled = false; // TODO
|
||||
#endif
|
||||
g_SndMaxFxBusses = 2;
|
||||
|
||||
if (argFindByPrefix(1, "-nomp3")) {
|
||||
|
||||
Reference in new issue
Block a user