CSPspEmu.Hle.Formats.audio.At3.MaiAT3PlusCoreDecoder.makeSL128 C# (CSharp) Method

makeSL128() static private method

static private makeSL128 ( MaiAT3PlusCoreDecoderChnACCTableTable acc, float lo, int num0, int num1, int acc_4, int acc_360, int chn ) : int
acc MaiAT3PlusCoreDecoderChnACCTableTable
lo float
num0 int
num1 int
acc_4 int
acc_360 int
chn int
return int
        static int makeSL128(MaiAT3PlusCoreDecoderChnACCTableTable acc, float* lo, int num0, int num1, int acc_4, int acc_360, int chn)
        {
            fixed (byte* table_tmp0_o = _makeSL128_table_tmp0_o)
            fixed (byte* table_tmp1_o = _makeSL128_table_tmp1_o)
            {
                float* table_tmp0 = (float*)table_tmp0_o;
                float* table_tmp1 = (float*)table_tmp1_o;

                for (int a0 = 0; a0 < num1; a0++) lo[a0] = 0.0f;

                if (acc_4 == 0)
                {
                    for (int a0 = 0; a0 < acc.num_uk; a0++)
                    {
                        float l259 = table_tmp0[acc.ptr0[a0].unk0]
                            * table_tmp1[acc.ptr0[a0].unk1];

                        int atmp0 = acc.ptr0[a0].unk2;
                        atmp0 &= 0x1F;
                        atmp0 <<= 6;

                        int ctmp0 = num0 - 0x80;
                        ctmp0 *= acc.ptr0[a0].unk3;
                        ctmp0 += atmp0;
                        ctmp0 &= 0x7FF;

                        for (int a1 = 0; a1 < num1; a1++)
                        {
                            lo[a1] += l259 * MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_table_static_3[ctmp0];
                            ctmp0 += acc.ptr0[a0].unk3;
                            ctmp0 &= 0x7FF;
                        }
                    }
                }
                else
                {
                    for (int a0 = 0; a0 < acc.num_uk; a0++)
                    {
                        float l259 = table_tmp0[acc.ptr0[a0].unk0];

                        int atmp0 = acc.ptr0[a0].unk2;
                        atmp0 &= 0x1F;
                        atmp0 <<= 6;

                        int ctmp0 = num0 - 0x80;
                        ctmp0 *= acc.ptr0[a0].unk3;
                        ctmp0 += atmp0;
                        ctmp0 &= 0x7FF;

                        for (int a1 = 0; a1 < num1; a1++)
                        {
                            lo[a1] += l259 * MaiAT3PlusCoreDecoder_StaticData.MAPCDSD_table_static_3[ctmp0];
                            ctmp0 += acc.ptr0[a0].unk3;
                            ctmp0 &= 0x7FF;
                        }
                    }
                }

                if ((chn != 0) && (acc_360 != 0))
                {
                    for (int a1 = 0; a1 < num1; a1++)
                    {
                        lo[a1] *= -1.0f;
                    }
                }

                float* l256 = stackalloc float[0x100];

                {
                    for (int a0 = 0; a0 < 0x100; a0++) l256[a0] = 1.0f;
                    if (acc.unk[0] != 0)
                    {
                        for (int a0 = 0; a0 < acc.unk[2]; a0++) l256[a0] = 0.0f;
                        l256[acc.unk[2]] = 0.0f;
                        l256[acc.unk[2] + 1] = 0.1464233f;
                        l256[acc.unk[2] + 2] = 0.5f;
                        l256[acc.unk[2] + 3] = 0.8535767f;
                    }
                    if (acc.unk[1] != 0)
                    {
                        l256[acc.unk[3] - 4] = 0.8535767f;
                        l256[acc.unk[3] - 3] = 0.5f;
                        l256[acc.unk[3] - 2] = 0.1464233f;
                        l256[acc.unk[3] - 1] = 0.0f;
                        for (int a0 = acc.unk[3]; a0 < 0x100; a0++) l256[a0] = 0.0f;
                    }
                }

                for (int a1 = 0; a1 < num1; a1++)
                {
                    lo[a1] *= l256[num0 + a1];
                }

                return 0;
            }
        }
MaiAT3PlusCoreDecoder