diff --git a/ld/libfiles.ntsc-final.inc b/ld/libfiles.ntsc-final.inc index 08e929855..2abe65f17 100644 --- a/ld/libfiles.ntsc-final.inc +++ b/ld/libfiles.ntsc-final.inc @@ -72,7 +72,6 @@ build/ROMID/lib/naudio/n_csplayer.o (section); \ build/ROMID/lib/naudio/n_cspsetbank.o (section); \ build/ROMID/lib/ultra/audio/bnkf.o (section); \ - build/ROMID/lib/mp3.o (section); \ build/ROMID/lib/naudio/n_cspgetstate.o (section); \ build/ROMID/lib/naudio/n_csq.o (section); \ build/ROMID/lib/naudio/n_cspsetseq.o (section); \ @@ -104,21 +103,13 @@ build/ROMID/lib/naudio/n_synfilter11.o (section); \ build/ROMID/lib/ultra/audio/cseq.o (section); \ build/ROMID/lib/naudio/n_env.o (section); \ - build/ROMID/lib/mp3/decoder.o (section); \ - build/ROMID/lib/mp3/main.o (section); \ build/ROMID/lib/naudio/n_cspsendmidi.o (section); \ build/ROMID/lib/naudio/n_auxbus.o (section); \ build/ROMID/lib/naudio/n_mainbus.o (section); \ build/ROMID/lib/naudio/n_synsetpriority.o (section); \ build/ROMID/lib/naudio/n_load.o (section); \ build/ROMID/lib/naudio/n_resample2.o (section); \ - build/ROMID/lib/mp3/lib_45ed0.o (section); \ - build/ROMID/lib/mp3/util.o (section); \ - build/ROMID/lib/mp3/lib_46650.o (section); \ - build/ROMID/lib/mp3/lib_47550.o (section); \ build/ROMID/lib/naudio/n_resample.o (section); \ - build/ROMID/lib/mp3/lib_47d20.o (section); \ - build/ROMID/lib/mp3/lib_47ef0.o (section); \ build/ROMID/lib/ultra/io/vitbl.o (section); \ build/ROMID/lib/ultra/os/writebackdcacheall.o (section); \ build/ROMID/lib/ultra/os/invalicache.o (section); \ diff --git a/src/game/lv.c b/src/game/lv.c index 4eb62c124..b8e58a149 100644 --- a/src/game/lv.c +++ b/src/game/lv.c @@ -447,7 +447,6 @@ void lvReset(s32 stagenum) } paksReset(); - sndResetCurMp3(); if (stagenum == STAGE_BOOTPAKMENU) { bootmenuReset(); @@ -2557,9 +2556,7 @@ void lvSetPaused(bool paused) { if (paused) { pakDisableRumbleForAllPlayers(); - snd0000fe20(); } else { - snd0000fe50(); pakEnableRumbleForAllPlayers(); } diff --git a/src/game/propsnd.c b/src/game/propsnd.c index 9378683d3..7c2aa28d5 100644 --- a/src/game/propsnd.c +++ b/src/game/propsnd.c @@ -201,9 +201,7 @@ void func0f092a98(s32 channelnum) propDecrementSoundCount(channel->prop); } - if ((channel->flags & AUDIOCHANNELFLAG_ISMP3)) { - snd0000fbc4(channel->soundnum26); - } else if (channel->audiohandle && sndGetState(channel->audiohandle) != AL_STOPPED) { + if (channel->audiohandle && sndGetState(channel->audiohandle) != AL_STOPPED) { audioStop(channel->audiohandle); } @@ -3441,13 +3439,11 @@ void propsndTickChannel(s32 channelnum) && channel->unk28 != 11 && ((channel->audiohandle != NULL && sndGetState(channel->audiohandle) != AL_STOPPED) || (channel->flags & AUDIOCHANNELFLAG_0002) - || (channel->flags & AUDIOCHANNELFLAG_1000) - || ((channel->flags & AUDIOCHANNELFLAG_ISMP3) && sndIsPlayingMp3()))) + || (channel->flags & AUDIOCHANNELFLAG_1000))) #else if ((channel->audiohandle != NULL && sndGetState(channel->audiohandle) != AL_STOPPED) || (channel->flags & AUDIOCHANNELFLAG_0002) - || (channel->flags & AUDIOCHANNELFLAG_1000) - || ((channel->flags & AUDIOCHANNELFLAG_ISMP3) && sndIsPlayingMp3())) + || (channel->flags & AUDIOCHANNELFLAG_1000)) #endif { struct coord *pos = NULL; // 50 @@ -3633,49 +3629,27 @@ void propsndTickChannel(s32 channelnum) if ((channel->flags & AUDIOCHANNELFLAG_2000) == 0) { if (channel->flags & AUDIOCHANNELFLAG_1000) { - if (channel->flags & AUDIOCHANNELFLAG_ISMP3) { - sndStartMp3(channel->soundnum26, sp48, sp44, (channel->flags2 & AUDIOCHANNELFLAG2_0001) ? 1 : 0); - } else { -#if VERSION >= VERSION_NTSC_1_0 - if (channel->flags & AUDIOCHANNELFLAG_0400) { - if (sp48) { - snd00010718(&channel->audiohandle, channel->flags & AUDIOCHANNELFLAG_ISMP3, sp48, sp44, - channel->soundnum26, sp3c, channel->unk1a, sp40, 1); - } - } else { - if (sp48) { - snd00010718(&channel->audiohandle, channel->flags & AUDIOCHANNELFLAG_ISMP3, sp48, sp44, - channel->soundnum26, sp3c, channel->unk1a, sp40, 1); - } + if (channel->flags & AUDIOCHANNELFLAG_0400) { + if (sp48) { + snd00010718(&channel->audiohandle, 0, sp48, sp44, + channel->soundnum26, sp3c, channel->unk1a, sp40, 1); + } + } else { + if (sp48) { + snd00010718(&channel->audiohandle, 0, sp48, sp44, + channel->soundnum26, sp3c, channel->unk1a, sp40, 1); } -#else - snd00010718(&channel->audiohandle, channel->flags & AUDIOCHANNELFLAG_ISMP3, sp48, sp44, - channel->soundnum26, sp3c, channel->unk1a, sp40, 1); -#endif } channel->flags &= ~AUDIOCHANNELFLAG_1000; } else { - sndAdjust(&channel->audiohandle, channel->flags & AUDIOCHANNELFLAG_ISMP3, sp48, sp44, + sndAdjust(&channel->audiohandle, 0, sp48, sp44, channel->soundnum26, sp3c, channel->unk1a, sp40, channel->flags & AUDIOCHANNELFLAG_4000); } } } else { -#if VERSION >= VERSION_NTSC_1_0 if (channel->unk28 != 11) { - if (channel->flags & AUDIOCHANNELFLAG_ISMP3) { - if (!sndIsPlayingMp3()) { - if (channel->flags & AUDIOCHANNELFLAG_FORPROP) { - propDecrementSoundCount(channel->prop); - } - - if (channel->flags & AUDIOCHANNELFLAG_FORHUDMSG) { - hudmsgsHideByChannel(channelnum); - } - } - - channel->flags = AUDIOCHANNELFLAG_IDLE; - } else if (channel->audiohandle == NULL) { + if (channel->audiohandle == NULL) { if (channel->flags & AUDIOCHANNELFLAG_FORPROP) { propDecrementSoundCount(channel->prop); } @@ -3683,25 +3657,6 @@ void propsndTickChannel(s32 channelnum) channel->flags = AUDIOCHANNELFLAG_IDLE; } } -#else - if (channel->flags & AUDIOCHANNELFLAG_ISMP3) { - if (!sndIsPlayingMp3()) { - if (channel->flags & AUDIOCHANNELFLAG_FORPROP) { - propDecrementSoundCount(channel->prop); - } - - if (channel->flags & AUDIOCHANNELFLAG_FORHUDMSG) { - hudmsgsHideByChannel(channelnum); - } - } - } else if (channel->audiohandle == NULL) { - if (channel->flags & AUDIOCHANNELFLAG_FORPROP) { - propDecrementSoundCount(channel->prop); - } - } - - channel->flags = AUDIOCHANNELFLAG_IDLE; -#endif } if (var8006ae44 && (channel->flags2 & AUDIOCHANNELFLAG2_0004)) { @@ -4095,23 +4050,10 @@ s16 propsnd0f0939f8( channel->flags |= AUDIOCHANNELFLAG_1000; - if (sndIsMp3(soundnum)) { - channel->flags |= AUDIOCHANNELFLAG_ISMP3; - -#if VERSION >= VERSION_NTSC_1_0 - prevpri = osGetThreadPri(0); - osSetThreadPri(0, osGetThreadPri(&g_AudioManager.thread) + 1); - propsndTickChannel(channel->channelnum); - osSetThreadPri(0, prevpri); -#else - propsndTickChannel(channel->channelnum); -#endif - } else { - prevpri = osGetThreadPri(0); - osSetThreadPri(0, osGetThreadPri(&g_AudioManager.thread) + 1); - propsndTickChannel(channel->channelnum); - osSetThreadPri(0, prevpri); - } + prevpri = osGetThreadPri(0); + osSetThreadPri(0, osGetThreadPri(&g_AudioManager.thread) + 1); + propsndTickChannel(channel->channelnum); + osSetThreadPri(0, prevpri); #if VERSION >= VERSION_NTSC_1_0 if (channel->flags & AUDIOCHANNELFLAG_0400) { @@ -4611,7 +4553,7 @@ void func0f09505c(struct sndstate *handle, struct coord *pos, f32 arg2, f32 arg3 sp4c = propsnd0f0946b0(pos, arg2, arg3, arg4, rooms, soundnum, arg7, arg8); pan = propsnd0f094d78(pos, arg2, arg3, arg4, *arg8, sp50, 0); - sndAdjust(&handle, sndIsMp3(soundnum), sp4c, pan, soundnum, 1.0f, 1, -1, 1); + sndAdjust(&handle, false, sp4c, pan, soundnum, 1.0f, 1, -1, 1); } s32 propsndGetRandomSparkSound(void) diff --git a/src/game/propsndstop.c b/src/game/propsndstop.c index 9333c343d..c50da5cd0 100644 --- a/src/game/propsndstop.c +++ b/src/game/propsndstop.c @@ -12,7 +12,6 @@ void propsndStop(void) for (i = 0; i < (IS4MB() ? 30 : 40); i++) { if (g_AudioChannels[i].flags & AUDIOCHANNELFLAG_ISMP3) { - snd0000fbc4(g_AudioChannels[i].soundnum26); g_AudioChannels[i].flags &= ~AUDIOCHANNELFLAG_ISMP3; g_AudioChannels[i].flags &= ~AUDIOCHANNELFLAG_0002; } else if (g_AudioChannels[i].audiohandle && sndGetState(g_AudioChannels[i].audiohandle) != AL_STOPPED) { diff --git a/src/include/lib/mp3.h b/src/include/lib/mp3.h deleted file mode 100644 index 6369dd7e8..000000000 --- a/src/include/lib/mp3.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef _IN_LIB_MP3_H -#define _IN_LIB_MP3_H -#include -#include "data.h" -#include "types.h" - -void mp3Init(ALHeap *heap); -void mp3PlayFile(s32 romaddr, s32 filesize); -void func00037e1c(void); -void func00037e38(void); -void func00037e68(void); -s32 func00037ea4(void); -void func00037f08(s32 arg0, bool arg1); -void func00037f5c(s32 arg0, bool arg1); -s32 func00037fc0(s32 arg0, Acmd **cmd); -void func00038924(struct mp3vars *vars); -void func00038b90(void *fn); -void mp3Dma(void); - -#endif diff --git a/src/include/lib/snd.h b/src/include/lib/snd.h index c751e1aa6..531912266 100644 --- a/src/include/lib/snd.h +++ b/src/include/lib/snd.h @@ -5,11 +5,9 @@ #include "types.h" bool sndIsFiltered(s32 audioid); -bool sndIsPlayingMp3(void); u16 snd0000e9dc(void); void sndSetSfxVolume(u16 volume); void snd0000ea80(u16 volume); -void sndResetCurMp3(void); void sndLoadSfxCtl(void); void sndIncrementAges(void); ALEnvelope *sndLoadEnvelope(u32 offset, u16 index); @@ -21,26 +19,15 @@ void sndSetSoundMode(s32 mode); ALSound *sndLoadSound(s16 soundnum); void seqInit(struct seqinstance *seq); void sndInit(void); -bool sndIsMp3(s16 soundnum); bool snd0000fbc4(s16 arg0); bool seqPlay(struct seqinstance *seq, s32 tracknum); u16 seqGetVolume(struct seqinstance *seq); void seqSetVolume(struct seqinstance *seq, u16 volume); void snd0000fe18(void); -void snd0000fe20(void); -void snd0000fe50(void); void sndTick(void); bool sndIsDisabled(void); -void sndStartMp3ByFilenum(u32 filenum); void sndAdjust(struct sndstate **handle, s32 arg1, s32 arg2, s32 pan, s32 soundnum, f32 arg5, s32 arg6, s32 arg7, s32 arg8); struct sndstate *snd00010718(struct sndstate **handle, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 arg5, s32 arg6, s32 arg7, s32 arg8); struct sndstate *sndStart(s32 arg0, s16 sound, struct sndstate **handle, s32 arg3, s32 arg4, f32 arg5, s32 arg6, s32 arg7); -void sndStartMp3(s16 soundnum, s32 arg1, s32 arg2, s32 arg3); -void sndPlayNosedive(s32 seconds); -void sndStopNosedive(void); -void sndTickNosedive(void); -void sndPlayUfo(s32 seconds); -void sndStopUfo(void); -void sndTickUfo(void); #endif diff --git a/src/lib/main.c b/src/lib/main.c index ba388a23d..c8abd4289 100644 --- a/src/lib/main.c +++ b/src/lib/main.c @@ -1973,8 +1973,6 @@ void mainTick(void) void mainEndStage(void) { - sndStopNosedive(); - if (!g_MainIsEndscreen) { #if VERSION >= VERSION_NTSC_1_0 pak0f11c6d0(); diff --git a/src/lib/mp3.c b/src/lib/mp3.c deleted file mode 100644 index e53864127..000000000 --- a/src/lib/mp3.c +++ /dev/null @@ -1,400 +0,0 @@ -#include -#include -#include "naudio/n_abi.h" -#include "lib/mp3.h" -#include "mp3/mp3.h" -#include "types.h" - -/** - * 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. - */ -#define acmd07(pkt, a, b) \ -{ \ - Acmd *_a = (Acmd *)pkt; \ - _a->words.w0 = _SHIFTL(0x07, 24, 8) | _SHIFTL(a, 0, 16); \ - _a->words.w1 = b; \ -} - -#define acmd08(pkt, a) \ -{ \ - Acmd *_a = (Acmd *)pkt; \ - _a->words.w0 = _SHIFTL(0x08, 24, 8); \ - _a->words.w1 = a; \ -} - -struct mp3vars g_Mp3Vars; -struct asistream *g_AsiStream; - -s32 func00038ba8(s32 arg0, u8 *arg1, s32 arg2, s32 arg3); - -extern f32 *var8009c6d8; -extern f32 *var8009c6dc; -extern struct mp3decfourbytes *var8009c640; -extern f32 *var8009c644; - -void mp3Init(ALHeap *heap) -{ - bzero(&g_Mp3Vars, sizeof(struct mp3vars)); - -#if VERSION < VERSION_NTSC_1_0 - rmonPrintf("MPEG : RWI -> Allocating %d bytes for ASISTREAM from audio heap\n", sizeof(struct asistream)); -#endif - - g_AsiStream = alHeapAlloc(heap, sizeof(struct asistream), 1); - var8005f6f8 = alHeapAlloc(heap, 1, 0x2200); - var8005f6fc = alHeapAlloc(heap, 1, 0x2200); - - var8009c6d8 = alHeapAlloc(heap, 256 * sizeof(f32), 1); - var8009c6dc = alHeapAlloc(heap, 256 * sizeof(f32), 1); - var8009c640 = alHeapAlloc(heap, 10500 * sizeof(struct mp3decfourbytes), 1); - var8009c644 = alHeapAlloc(heap, 8192 * sizeof(f32), 1); - - mp3mainInit(); - - g_Mp3Vars.var8009c398 = alHeapAlloc(heap, 1, 0x50); - *(u8 **)((u32)&g_Mp3Vars+0x44) = alHeapAlloc(heap, 1, 0x440); - - g_Mp3Vars.var8009c3e0 = 0; - g_Mp3Vars.var8009c3e4 = 0x7fff; - g_Mp3Vars.var8009c3ec = g_Mp3Vars.var8009c3ee = 0x40; - g_Mp3Vars.var8009c39e = 0x7fff; - g_Mp3Vars.var8009c39c = 0x40; - - g_Mp3Vars.ivol1 = (n_eqpower[g_Mp3Vars.var8009c39c & 0x7f] * g_Mp3Vars.var8009c39e) >> 15; - g_Mp3Vars.ivol2 = (n_eqpower[127 - (g_Mp3Vars.var8009c39c & 0x7f)] * g_Mp3Vars.var8009c39e) >> 15; - - g_Mp3Vars.var8009c3b4 = 1; - g_Mp3Vars.var8009c3a4 = 0x7ffc; - - if (g_Mp3Vars.var8009c39c & 0x80) { - g_Mp3Vars.var8009c3a6 = 1; - } else { - g_Mp3Vars.var8009c3a6 = 0; - } - - func00038b90(func00038ba8); -} - -void mp3PlayFile(s32 romaddr, s32 filesize) -{ - if (g_Mp3Vars.var8009c3dc == NULL) { - return; - } - - g_Mp3Vars.romaddr = romaddr; - g_Mp3Vars.filesize = filesize; - g_Mp3Vars.var8009c3c4 = 0; - g_Mp3Vars.var8009c3e8 = 0; - g_Mp3Vars.var8009c3e4 = 0x7fff; - g_Mp3Vars.var8009c3f0 = 5; - - mp3Dma(); - - g_Mp3Vars.var8009c3e0 = 4; -} - -void func00037e1c(void) -{ - g_Mp3Vars.var8009c3e0 = 3; -} - -void func00037e38(void) -{ - if (g_Mp3Vars.var8009c3e0 == 1) { - g_Mp3Vars.var8009c3e0 = 2; - } -} - -void func00037e68(void) -{ - if (g_Mp3Vars.var8009c3e0 == 2) { - g_Mp3Vars.var8009c3f0 = 5; - g_Mp3Vars.var8009c3e0 = 5; - } -} - -s32 func00037ea4(void) -{ - if (g_Mp3Vars.var8009c3e0 == 1 - || g_Mp3Vars.var8009c3e0 == 4 - || g_Mp3Vars.var8009c3e0 == 5 - || g_Mp3Vars.var8009c3e0 == 2) { - return g_Mp3Vars.var8009c3e0; - } else { - return 0; - } -} - -void func00037f08(s32 arg0, bool arg1) -{ - if (arg0 < 0) { - g_Mp3Vars.var8009c3e4 = 0; - } else if (arg0 > 0x7fff) { - g_Mp3Vars.var8009c3e4 = 0x7fff; - } else { - g_Mp3Vars.var8009c3e4 = arg0; - } - - g_Mp3Vars.var8009c3e8 = arg1; -} - -void func00037f5c(s32 arg0, bool arg1) -{ - if (arg0 > 255) { - arg0 = 255; - } - - if (arg0 < 0) { - arg0 = 0; - } - - g_Mp3Vars.var8009c3ee = arg0; - - if (arg1) { - g_Mp3Vars.var8009c3ec = g_Mp3Vars.var8009c3ee; - } -} - -void func00037fa8(s32 arg0, s32 arg1) -{ - // empty -} - -s32 func00037fc0(s32 arg0, Acmd **cmd) -{ - s32 i; - s32 sp60; - s32 sp5c = 0; - struct mp3thing *sp58; - struct mp3thing *sp54 = NULL; - s32 sp50; - s32 sp4c = 0x4e0; - s32 sp48 = 0x650; - - if (g_Mp3Vars.var8009c3ec != g_Mp3Vars.var8009c3ee) { - sp60 = g_Mp3Vars.var8009c3ee - g_Mp3Vars.var8009c3ec; - - if (sp60 >= -2 && sp60 <= 2) { - g_Mp3Vars.var8009c3ec += sp60; - } else if (sp60 >= 3) { - g_Mp3Vars.var8009c3ec += 2; - } else { - g_Mp3Vars.var8009c3ec -= 2; - } - } - - if (g_Mp3Vars.var8009c3e0 == 4) { - mp3Dma(); - - if (g_Mp3Vars.var8009c3f0 == 0) { - g_Mp3Vars.var8009c394 = mp3main00044460(0, g_Mp3Vars.var8009c3dc, g_Mp3Vars.filesize); - - if (g_Mp3Vars.var8009c394 == NULL) { - g_Mp3Vars.var8009c3e0 = 0; - return 0; - } else { - g_Mp3Vars.var8009c3e0 = 1; - g_Mp3Vars.var8009c3b4 = 1; - g_Mp3Vars.var8009c3c8 = 0; - g_Mp3Vars.var8009c3cc = 0; - g_Mp3Vars.var8009c3d0 = 0; - g_Mp3Vars.var8009c3d8 = 0; - - bzero(*(u32 **)&g_Mp3Vars.var8009c3d4, 0x440); - } - } else { - g_Mp3Vars.var8009c3f0--; - } - } - - if (g_Mp3Vars.var8009c3e0 == 5) { - mp3Dma(); - - if (g_Mp3Vars.var8009c3f0 == 0) { - g_Mp3Vars.var8009c3e0 = 1; - } else { - g_Mp3Vars.var8009c3f0--; - } - } - - if (g_Mp3Vars.var8009c3e0 == 1) { - if (arg0 + g_Mp3Vars.var8009c3d0 > g_Mp3Vars.var8009c3cc) { - g_Mp3Vars.var8009c3cc -= g_Mp3Vars.var8009c3d0; - - if (g_Mp3Vars.var8009c3cc != 0 && g_Mp3Vars.var8009c3c8 != 0) { - sp54 = (struct mp3thing *)(g_Mp3Vars.var8009c3d0 + g_Mp3Vars.var8009c3c8->unk00); - sp50 = g_Mp3Vars.var8009c3cc; - } - - g_Mp3Vars.var8009c3d0 = 0; - g_Mp3Vars.var8009c3cc = 0; - - if (mp3main0004453c(g_Mp3Vars.var8009c394, &sp58, &sp5c)) { - g_Mp3Vars.var8009c3c8 = sp58; - - for (i = 0; i < sp5c; i++) { - acmd08((*cmd)++, osVirtualToPhysical(g_Mp3Vars.var8009c3d4_arr[i])); - acmd07((*cmd)++, g_Mp3Vars.var8009c3d8, osVirtualToPhysical(sp58)); - - sp58++; - } - - g_Mp3Vars.var8009c3d8 = (g_Mp3Vars.var8009c3d8 - 0x24) & 0x1e; - g_Mp3Vars.var8009c3cc = 0x240; - g_Mp3Vars.var8009c3f1 = sp5c == 2; - } else { - // empty - } - } - - mp3Dma(); - - if (g_Mp3Vars.var8009c3f1 == 0) { - sp4c = 0; - } - - if (sp54 != NULL) { - n_aLoadBuffer((*cmd)++, sp50 + sp50, sp4c, osVirtualToPhysical(sp54)); - - if (g_Mp3Vars.var8009c3f1) { - sp54++; - n_aLoadBuffer((*cmd)++, sp50 + sp50, sp48, osVirtualToPhysical(sp54)); - } - - sp4c += sp50 + sp50; - sp48 += sp50 + sp50; - arg0 -= sp50; - } - - if (arg0 > 0 && g_Mp3Vars.var8009c3c8) { - sp54 = (struct mp3thing *)(g_Mp3Vars.var8009c3d0 * 2 + (u32)g_Mp3Vars.var8009c3c8); - - n_aLoadBuffer((*cmd)++, arg0 + arg0, sp4c, osVirtualToPhysical(sp54)); - - if (g_Mp3Vars.var8009c3f1) { - sp54++; - n_aLoadBuffer((*cmd)++, arg0 + arg0, sp48, osVirtualToPhysical(sp54)); - } - - g_Mp3Vars.var8009c3d0 += arg0; - } - - func00038924(&g_Mp3Vars); - - if (!g_Mp3Vars.var8009c3f1) { - aClearBuffer((*cmd)++, 0x4e0, 0x2e0); - - if (g_Mp3Vars.var8009c3b4) { - g_Mp3Vars.var8009c3b4 = 0; - - g_Mp3Vars.var8009c3ac = n_eqpower[g_Mp3Vars.var8009c39c & 0x7f] * g_Mp3Vars.var8009c39e >> 0xf; - g_Mp3Vars.ratem1 = _getRate(g_Mp3Vars.ivol1, g_Mp3Vars.var8009c3ac, g_Mp3Vars.var8009c3bc, &g_Mp3Vars.ratel1); - - g_Mp3Vars.var8009c3b2 = n_eqpower[0x7f - (g_Mp3Vars.var8009c39c & 0x7f)] * g_Mp3Vars.var8009c39e >> 0xf; - g_Mp3Vars.ratem2 = _getRate(g_Mp3Vars.ivol2, g_Mp3Vars.var8009c3b2, g_Mp3Vars.var8009c3bc, &g_Mp3Vars.ratel2); - - n_aSetVolume((*cmd)++, A_VOL | A_LEFT, g_Mp3Vars.ivol1, g_Mp3Vars.var8009c3a4, g_Mp3Vars.var8009c3a6); - n_aSetVolume((*cmd)++, A_VOL | A_RIGHT, g_Mp3Vars.var8009c3b2, g_Mp3Vars.ratem2, g_Mp3Vars.ratel2); - n_aSetVolume((*cmd)++, A_RATE, g_Mp3Vars.var8009c3ac, g_Mp3Vars.ratem1, g_Mp3Vars.ratel1); - n_aEnvMixer((*cmd)++, 1, g_Mp3Vars.ivol2, osVirtualToPhysical(g_Mp3Vars.var8009c398)); - } else { - n_aEnvMixer((*cmd)++, 0, 0, osVirtualToPhysical(g_Mp3Vars.var8009c398)); - } - - g_Mp3Vars.samples += 184; - - if (g_Mp3Vars.samples > g_Mp3Vars.var8009c3bc) { - g_Mp3Vars.samples = g_Mp3Vars.var8009c3bc; - } - } - } else { - return 0; - } - - return 1; -} - -void func00038924(struct mp3vars *vars) -{ - if (vars->var8009c39e != vars->var8009c3e4 || vars->var8009c39c != vars->var8009c3ec) { - if (vars->samples >= vars->var8009c3bc) { - vars->var8009c3ac = (n_eqpower[vars->var8009c39c & 0x7f] * vars->var8009c39e >> 15); - vars->var8009c3b2 = (n_eqpower[127 - (vars->var8009c39c & 0x7f)] * vars->var8009c39e >> 15); - vars->samples = vars->var8009c3bc; - vars->ivol1 = vars->var8009c3ac; - vars->ivol2 = vars->var8009c3b2; - } else { - vars->ivol1 = _getVol(vars->ivol1, vars->samples, vars->ratem1, vars->ratel1); - vars->ivol2 = _getVol(vars->ivol2, vars->samples, vars->ratem2, vars->ratel2); - } - - if (vars->ivol1 == 0) { - vars->ivol1 = 1; - } - - if (vars->ivol2 == 0) { - vars->ivol2 = 1; - } - - vars->var8009c39e = vars->var8009c3e4; - - if (vars->var8009c39c != vars->var8009c3ec) { - if (var8009c340.headphone) { - vars->var8009c39c = ((s16)(vars->var8009c3ec & 0x7f) >> 1) + 32; - } else { - if (var8009c340.mono) { - vars->var8009c39c = 64; - } else { - vars->var8009c39c = vars->var8009c3ec; - } - } - - vars->var8009c39c &= (vars->var8009c3ec & 0x80) + 0x7f; - - vars->var8009c3a6 = (vars->var8009c39c & 0x80) ? 1 : 0; - } - - vars->samples = 0; - vars->var8009c3bc = (vars->var8009c3e8 + 183) / 184 * 184; - vars->var8009c3b4 = 1; - } -} - -void func00038b90(void *fn) -{ - g_Mp3Vars.var8009c3dc = fn; -} - -s32 func00038ba8(s32 arg0, u8 *arg1, s32 arg2, s32 arg3) -{ - u32 sp1c; - ALDMAproc proc; - - if (arg3 != -1) { - g_Mp3Vars.var8009c3c4 = arg3; - } - - if (g_Mp3Vars.var8009c3c4 + arg2 > g_Mp3Vars.filesize) { - arg2 = g_Mp3Vars.filesize - g_Mp3Vars.var8009c3c4; - } - - proc = n_syn->dma(&sp1c); - sp1c = OS_K0_TO_PHYSICAL(proc(g_Mp3Vars.romaddr + g_Mp3Vars.var8009c3c4, arg2, 0)); - - bcopy((u8 *)sp1c, arg1, arg2); - - g_Mp3Vars.var8009c3c4 += arg2; - - return arg2; -} - -void mp3Dma(void) -{ - u32 state; - ALDMAproc proc; - - proc = n_syn->dma(&state); - - proc(g_Mp3Vars.romaddr + g_Mp3Vars.var8009c3c4, 0x400, 0); -} diff --git a/src/lib/mp3/decoder.c b/src/lib/mp3/decoder.c deleted file mode 100644 index 81f62eb01..000000000 --- a/src/lib/mp3/decoder.c +++ /dev/null @@ -1,3039 +0,0 @@ -#include -#include "internal.h" -#include "mp3.h" - -#define CHANNELMODE_STEREO 0 -#define CHANNELMODE_JOINTSTEREO 1 -#define CHANNELMODE_DUALMONO 2 -#define CHANNELMODE_SINGLEMONO 3 - -#define VERSION_2 0x0 -#define VERSION_1 0x1 - -struct mp3decthing { - u8 unk00; - u8 unk01; - u8 unk02; - u8 unk03; - u32 unk04; -}; - -extern const struct mp3decthing var70054b40[]; - -f32 sine_block[4][36]; -struct mp3decfourbytes *var8009c640; -f32 *var8009c644; -f32 *var8009c648; - -const struct mp3decthing var70054b40[] = { - { 0, 0, 1, 0, 1 }, - { 0, 1, 3, 0, 4 }, - { 1, 0, 2, 0, 2 }, - { 1, 1, 3, 0, 0 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var70054b68[] = { - { 0, 0, 1, 0, 1 }, - { 0, 1, 3, 0, 2 }, - { 0, 2, 6, 0, 32 }, - { 1, 0, 3, 0, 6 }, - { 1, 1, 3, 0, 4 }, - { 1, 2, 5, 0, 16 }, - { 2, 0, 5, 0, 24 }, - { 2, 1, 5, 0, 8 }, - { 2, 2, 6, 0, 0 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var70054bb8[] = { - { 0, 0, 2, 0, 3 }, - { 0, 1, 2, 0, 1 }, - { 0, 2, 6, 0, 32 }, - { 1, 0, 3, 0, 4 }, - { 1, 1, 2, 0, 2 }, - { 1, 2, 5, 0, 16 }, - { 2, 0, 5, 0, 24 }, - { 2, 1, 5, 0, 8 }, - { 2, 2, 6, 0, 0 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var70054c08[] = { - { 0, 0, 1, 0, 1 }, - { 0, 1, 3, 0, 2 }, - { 0, 2, 6, 0, 24 }, - { 0, 3, 7, 0, 80 }, - { 1, 0, 3, 0, 6 }, - { 1, 1, 3, 0, 4 }, - { 1, 2, 6, 0, 8 }, - { 1, 3, 7, 0, 16 }, - { 2, 0, 6, 0, 56 }, - { 2, 1, 6, 0, 40 }, - { 2, 2, 7, 0, 112 }, - { 2, 3, 8, 0, 128 }, - { 3, 0, 7, 0, 48 }, - { 3, 1, 6, 0, 32 }, - { 3, 2, 7, 0, 64 }, - { 3, 3, 8, 0, 0 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var70054c90[] = { - { 0, 0, 3, 0, 7 }, - { 0, 1, 3, 0, 6 }, - { 0, 2, 5, 0, 20 }, - { 0, 3, 7, 0, 64 }, - { 1, 0, 3, 0, 3 }, - { 1, 1, 2, 0, 1 }, - { 1, 2, 4, 0, 12 }, - { 1, 3, 5, 0, 8 }, - { 2, 0, 4, 0, 10 }, - { 2, 1, 4, 0, 2 }, - { 2, 2, 5, 0, 4 }, - { 2, 3, 6, 0, 32 }, - { 3, 0, 6, 0, 48 }, - { 3, 1, 5, 0, 24 }, - { 3, 2, 6, 0, 16 }, - { 3, 3, 7, 0, 0 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var70054d18[] = { - { 0, 0, 1, 0, 1 }, - { 0, 1, 3, 0, 2 }, - { 0, 2, 6, 0, 20 }, - { 0, 3, 8, 0, 200 }, - { 0, 4, 8, 0, 8 }, - { 0, 5, 9, 0, 160 }, - { 1, 0, 3, 0, 6 }, - { 1, 1, 4, 0, 12 }, - { 1, 2, 6, 0, 56 }, - { 1, 3, 7, 0, 40 }, - { 1, 4, 7, 0, 80 }, - { 1, 5, 8, 0, 192 }, - { 2, 0, 6, 0, 52 }, - { 2, 1, 5, 0, 4 }, - { 2, 2, 7, 0, 88 }, - { 2, 3, 8, 0, 136 }, - { 2, 4, 8, 0, 16 }, - { 2, 5, 9, 0, 64 }, - { 3, 0, 7, 0, 24 }, - { 3, 1, 7, 0, 104 }, - { 3, 2, 8, 0, 72 }, - { 3, 3, 9, 0, 480 }, - { 3, 4, 9, 0, 416 }, - { 3, 5, 9, 0, 128 }, - { 4, 0, 7, 0, 112 }, - { 4, 1, 7, 0, 48 }, - { 4, 2, 8, 0, 144 }, - { 4, 3, 9, 0, 224 }, - { 4, 4, 9, 0, 384 }, - { 4, 5, 10, 0, 512 }, - { 5, 0, 8, 0, 96 }, - { 5, 1, 8, 0, 32 }, - { 5, 2, 9, 0, 320 }, - { 5, 3, 10, 0, 768 }, - { 5, 4, 10, 0, 256 }, - { 5, 5, 10, 0, 0 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var70054e40[] = { - { 0, 0, 2, 0, 3 }, - { 0, 1, 3, 0, 1 }, - { 0, 2, 6, 0, 24 }, - { 0, 3, 8, 0, 72 }, - { 0, 4, 8, 0, 48 }, - { 0, 5, 9, 0, 320 }, - { 1, 0, 3, 0, 5 }, - { 1, 1, 2, 0, 2 }, - { 1, 2, 4, 0, 4 }, - { 1, 3, 8, 0, 8 }, - { 1, 4, 8, 0, 144 }, - { 1, 5, 8, 0, 192 }, - { 2, 0, 6, 0, 56 }, - { 2, 1, 4, 0, 12 }, - { 2, 2, 6, 0, 40 }, - { 2, 3, 8, 0, 112 }, - { 2, 4, 8, 0, 224 }, - { 2, 5, 9, 0, 384 }, - { 3, 0, 8, 0, 200 }, - { 3, 1, 8, 0, 136 }, - { 3, 2, 8, 0, 240 }, - { 3, 3, 9, 0, 352 }, - { 3, 4, 9, 0, 160 }, - { 3, 5, 10, 0, 128 }, - { 4, 0, 8, 0, 176 }, - { 4, 1, 7, 0, 80 }, - { 4, 2, 8, 0, 16 }, - { 4, 3, 9, 0, 416 }, - { 4, 4, 10, 0, 640 }, - { 4, 5, 10, 0, 512 }, - { 5, 0, 9, 0, 96 }, - { 5, 1, 8, 0, 32 }, - { 5, 2, 9, 0, 64 }, - { 5, 3, 9, 0, 256 }, - { 5, 4, 11, 0, 1024 }, - { 5, 5, 11, 0, 0 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var70054f68[] = { - { 0, 0, 3, 0, 7 }, - { 0, 1, 3, 0, 5 }, - { 0, 2, 5, 0, 18 }, - { 0, 3, 6, 0, 28 }, - { 0, 4, 8, 0, 240 }, - { 0, 5, 9, 0, 448 }, - { 1, 0, 3, 0, 3 }, - { 1, 1, 3, 0, 1 }, - { 1, 2, 4, 0, 10 }, - { 1, 3, 5, 0, 20 }, - { 1, 4, 6, 0, 24 }, - { 1, 5, 8, 0, 224 }, - { 2, 0, 4, 0, 14 }, - { 2, 1, 4, 0, 6 }, - { 2, 2, 5, 0, 2 }, - { 2, 3, 6, 0, 4 }, - { 2, 4, 7, 0, 8 }, - { 2, 5, 8, 0, 160 }, - { 3, 0, 6, 0, 60 }, - { 3, 1, 5, 0, 12 }, - { 3, 2, 6, 0, 36 }, - { 3, 3, 7, 0, 40 }, - { 3, 4, 7, 0, 80 }, - { 3, 5, 8, 0, 128 }, - { 4, 0, 7, 0, 104 }, - { 4, 1, 6, 0, 56 }, - { 4, 2, 7, 0, 72 }, - { 4, 3, 7, 0, 48 }, - { 4, 4, 8, 0, 32 }, - { 4, 5, 9, 0, 256 }, - { 5, 0, 8, 0, 112 }, - { 5, 1, 7, 0, 16 }, - { 5, 2, 8, 0, 96 }, - { 5, 3, 8, 0, 64 }, - { 5, 4, 9, 0, 192 }, - { 5, 5, 9, 0, 0 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var70055090[] = { - { 0, 0, 1, 0, 1 }, - { 0, 1, 3, 0, 2 }, - { 0, 2, 6, 0, 20 }, - { 0, 3, 8, 0, 232 }, - { 0, 4, 9, 0, 392 }, - { 0, 5, 9, 0, 240 }, - { 0, 6, 9, 0, 96 }, - { 0, 7, 10, 0, 544 }, - { 1, 0, 3, 0, 6 }, - { 1, 1, 4, 0, 12 }, - { 1, 2, 6, 0, 4 }, - { 1, 3, 7, 0, 24 }, - { 1, 4, 8, 0, 72 }, - { 1, 5, 9, 0, 336 }, - { 1, 6, 8, 0, 48 }, - { 1, 7, 8, 0, 224 }, - { 2, 0, 6, 0, 52 }, - { 2, 1, 6, 0, 36 }, - { 2, 2, 7, 0, 120 }, - { 2, 3, 8, 0, 168 }, - { 2, 4, 9, 0, 8 }, - { 2, 5, 10, 0, 80 }, - { 2, 6, 9, 0, 400 }, - { 2, 7, 9, 0, 192 }, - { 3, 0, 7, 0, 56 }, - { 3, 1, 7, 0, 88 }, - { 3, 2, 8, 0, 104 }, - { 3, 3, 9, 0, 136 }, - { 3, 4, 10, 0, 464 }, - { 3, 5, 10, 0, 928 }, - { 3, 6, 9, 0, 144 }, - { 3, 7, 10, 0, 896 }, - { 4, 0, 8, 0, 40 }, - { 4, 1, 8, 0, 200 }, - { 4, 2, 9, 0, 264 }, - { 4, 3, 10, 0, 976 }, - { 4, 4, 10, 0, 864 }, - { 4, 5, 10, 0, 416 }, - { 4, 6, 10, 0, 576 }, - { 4, 7, 10, 0, 768 }, - { 5, 0, 9, 0, 496 }, - { 5, 1, 9, 0, 208 }, - { 5, 2, 10, 0, 592 }, - { 5, 3, 10, 0, 352 }, - { 5, 4, 11, 0, 1344 }, - { 5, 5, 11, 0, 320 }, - { 5, 6, 10, 0, 640 }, - { 5, 7, 11, 0, 1536 }, - { 6, 0, 8, 0, 112 }, - { 6, 1, 8, 0, 176 }, - { 6, 2, 9, 0, 160 }, - { 6, 3, 10, 0, 832 }, - { 6, 4, 10, 0, 32 }, - { 6, 5, 10, 0, 384 }, - { 6, 6, 11, 0, 1280 }, - { 6, 7, 11, 0, 1024 }, - { 7, 0, 9, 0, 288 }, - { 7, 1, 8, 0, 16 }, - { 7, 2, 9, 0, 448 }, - { 7, 3, 10, 0, 64 }, - { 7, 4, 10, 0, 128 }, - { 7, 5, 11, 0, 256 }, - { 7, 6, 11, 0, 512 }, - { 7, 7, 11, 0, 0 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var70055298[] = { - { 0, 0, 2, 0, 3 }, - { 0, 1, 3, 0, 1 }, - { 0, 2, 5, 0, 10 }, - { 0, 3, 7, 0, 12 }, - { 0, 4, 8, 0, 68 }, - { 0, 5, 9, 0, 264 }, - { 0, 6, 8, 0, 168 }, - { 0, 7, 9, 0, 480 }, - { 1, 0, 3, 0, 5 }, - { 1, 1, 3, 0, 6 }, - { 1, 2, 4, 0, 2 }, - { 1, 3, 6, 0, 20 }, - { 1, 4, 8, 0, 4 }, - { 1, 5, 8, 0, 136 }, - { 1, 6, 7, 0, 104 }, - { 1, 7, 8, 0, 80 }, - { 2, 0, 5, 0, 26 }, - { 2, 1, 5, 0, 28 }, - { 2, 2, 6, 0, 44 }, - { 2, 3, 7, 0, 36 }, - { 2, 4, 8, 0, 120 }, - { 2, 5, 9, 0, 496 }, - { 2, 6, 8, 0, 40 }, - { 2, 7, 8, 0, 160 }, - { 3, 0, 7, 0, 76 }, - { 3, 1, 6, 0, 52 }, - { 3, 2, 7, 0, 100 }, - { 3, 3, 9, 0, 440 }, - { 3, 4, 8, 0, 216 }, - { 3, 5, 10, 0, 288 }, - { 3, 6, 8, 0, 48 }, - { 3, 7, 9, 0, 320 }, - { 4, 0, 8, 0, 196 }, - { 4, 1, 8, 0, 132 }, - { 4, 2, 8, 0, 248 }, - { 4, 3, 9, 0, 184 }, - { 4, 4, 9, 0, 240 }, - { 4, 5, 10, 0, 32 }, - { 4, 6, 9, 0, 448 }, - { 4, 7, 10, 0, 640 }, - { 5, 0, 8, 0, 56 }, - { 5, 1, 8, 0, 88 }, - { 5, 2, 9, 0, 8 }, - { 5, 3, 10, 0, 800 }, - { 5, 4, 10, 0, 544 }, - { 5, 5, 11, 0, 1920 }, - { 5, 6, 10, 0, 64 }, - { 5, 7, 11, 0, 896 }, - { 6, 0, 8, 0, 112 }, - { 6, 1, 7, 0, 24 }, - { 6, 2, 7, 0, 72 }, - { 6, 3, 8, 0, 176 }, - { 6, 4, 9, 0, 224 }, - { 6, 5, 10, 0, 576 }, - { 6, 6, 10, 0, 128 }, - { 6, 7, 10, 0, 512 }, - { 7, 0, 8, 0, 208 }, - { 7, 1, 7, 0, 16 }, - { 7, 2, 8, 0, 96 }, - { 7, 3, 9, 0, 192 }, - { 7, 4, 10, 0, 384 }, - { 7, 5, 10, 0, 768 }, - { 7, 6, 10, 0, 256 }, - { 7, 7, 10, 0, 0 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var700554a0[] = { - { 0, 0, 4, 0, 9 }, - { 0, 1, 3, 0, 3 }, - { 0, 2, 5, 0, 1 }, - { 0, 3, 7, 0, 66 }, - { 0, 4, 8, 0, 148 }, - { 0, 5, 9, 0, 456 }, - { 0, 6, 9, 0, 200 }, - { 0, 7, 9, 0, 176 }, - { 1, 0, 3, 0, 7 }, - { 1, 1, 3, 0, 5 }, - { 1, 2, 4, 0, 6 }, - { 1, 3, 5, 0, 18 }, - { 1, 4, 7, 0, 116 }, - { 1, 5, 7, 0, 4 }, - { 1, 6, 8, 0, 88 }, - { 1, 7, 8, 0, 208 }, - { 2, 0, 5, 0, 17 }, - { 2, 1, 4, 0, 14 }, - { 2, 2, 5, 0, 26 }, - { 2, 3, 6, 0, 28 }, - { 2, 4, 7, 0, 84 }, - { 2, 5, 8, 0, 120 }, - { 2, 6, 7, 0, 40 }, - { 2, 7, 8, 0, 224 }, - { 3, 0, 6, 0, 34 }, - { 3, 1, 5, 0, 10 }, - { 3, 2, 6, 0, 60 }, - { 3, 3, 6, 0, 12 }, - { 3, 4, 7, 0, 36 }, - { 3, 5, 8, 0, 56 }, - { 3, 6, 8, 0, 112 }, - { 3, 7, 8, 0, 160 }, - { 4, 0, 7, 0, 2 }, - { 4, 1, 6, 0, 44 }, - { 4, 2, 7, 0, 52 }, - { 4, 3, 7, 0, 100 }, - { 4, 4, 8, 0, 72 }, - { 4, 5, 8, 0, 8 }, - { 4, 6, 8, 0, 144 }, - { 4, 7, 9, 0, 320 }, - { 5, 0, 8, 0, 20 }, - { 5, 1, 7, 0, 68 }, - { 5, 2, 8, 0, 248 }, - { 5, 3, 8, 0, 184 }, - { 5, 4, 8, 0, 136 }, - { 5, 5, 9, 0, 352 }, - { 5, 6, 8, 0, 32 }, - { 5, 7, 9, 0, 128 }, - { 6, 0, 8, 0, 216 }, - { 6, 1, 7, 0, 24 }, - { 6, 2, 7, 0, 104 }, - { 6, 3, 8, 0, 240 }, - { 6, 4, 8, 0, 80 }, - { 6, 5, 9, 0, 448 }, - { 6, 6, 9, 0, 64 }, - { 6, 7, 10, 0, 512 }, - { 7, 0, 9, 0, 432 }, - { 7, 1, 8, 0, 48 }, - { 7, 2, 8, 0, 16 }, - { 7, 3, 9, 0, 96 }, - { 7, 4, 9, 0, 192 }, - { 7, 5, 9, 0, 384 }, - { 7, 6, 9, 0, 256 }, - { 7, 7, 10, 0, 0 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var700556a8[] = { - { 0, 0, 1, 0, 1 }, - { 0, 1, 4, 0, 10 }, - { 0, 2, 6, 0, 28 }, - { 0, 3, 7, 0, 84 }, - { 0, 4, 8, 0, 68 }, - { 0, 5, 9, 0, 408 }, - { 0, 6, 9, 0, 232 }, - { 0, 7, 10, 0, 904 }, - { 0, 8, 9, 0, 168 }, - { 0, 9, 10, 0, 176 }, - { 0, 10, 11, 0, 272 }, - { 0, 11, 11, 0, 352 }, - { 0, 12, 12, 0, 3104 }, - { 0, 13, 12, 0, 832 }, - { 0, 14, 13, 0, 6784 }, - { 0, 15, 13, 0, 6400 }, - { 1, 0, 3, 0, 6 }, - { 1, 1, 4, 0, 2 }, - { 1, 2, 6, 0, 12 }, - { 1, 3, 7, 0, 100 }, - { 1, 4, 8, 0, 248 }, - { 1, 5, 8, 0, 88 }, - { 1, 6, 9, 0, 104 }, - { 1, 7, 9, 0, 264 }, - { 1, 8, 9, 0, 496 }, - { 1, 9, 9, 0, 48 }, - { 1, 10, 10, 0, 16 }, - { 1, 11, 10, 0, 96 }, - { 1, 12, 11, 0, 1984 }, - { 1, 13, 12, 0, 3136 }, - { 1, 14, 12, 0, 1664 }, - { 1, 15, 12, 0, 1792 }, - { 2, 0, 6, 0, 60 }, - { 2, 1, 6, 0, 44 }, - { 2, 2, 7, 0, 116 }, - { 2, 3, 8, 0, 36 }, - { 2, 4, 9, 0, 440 }, - { 2, 5, 9, 0, 280 }, - { 2, 6, 10, 0, 712 }, - { 2, 7, 10, 0, 520 }, - { 2, 8, 9, 0, 368 }, - { 2, 9, 10, 0, 80 }, - { 2, 10, 10, 0, 480 }, - { 2, 11, 11, 0, 160 }, - { 2, 12, 11, 0, 1728 }, - { 2, 13, 12, 0, 2112 }, - { 2, 14, 13, 0, 2688 }, - { 2, 15, 13, 0, 256 }, - { 3, 0, 7, 0, 52 }, - { 3, 1, 7, 0, 20 }, - { 3, 2, 8, 0, 164 }, - { 3, 3, 9, 0, 376 }, - { 3, 4, 9, 0, 56 }, - { 3, 5, 10, 0, 968 }, - { 3, 6, 10, 0, 584 }, - { 3, 7, 10, 0, 8 }, - { 3, 8, 10, 0, 848 }, - { 3, 9, 11, 0, 400 }, - { 3, 10, 11, 0, 224 }, - { 3, 11, 11, 0, 1312 }, - { 3, 12, 11, 0, 704 }, - { 3, 13, 12, 0, 3968 }, - { 3, 14, 13, 0, 4864 }, - { 3, 15, 13, 0, 3584 }, - { 4, 0, 8, 0, 196 }, - { 4, 1, 7, 0, 4 }, - { 4, 2, 9, 0, 120 }, - { 4, 3, 9, 0, 312 }, - { 4, 4, 10, 0, 536 }, - { 4, 5, 10, 0, 840 }, - { 4, 6, 11, 0, 624 }, - { 4, 7, 11, 0, 1744 }, - { 4, 8, 10, 0, 432 }, - { 4, 9, 11, 0, 1168 }, - { 4, 10, 11, 0, 1888 }, - { 4, 11, 12, 0, 2368 }, - { 4, 12, 12, 0, 192 }, - { 4, 13, 13, 0, 5504 }, - { 4, 14, 13, 0, 7424 }, - { 4, 15, 14, 0, 1536 }, - { 5, 0, 9, 0, 184 }, - { 5, 1, 8, 0, 216 }, - { 5, 2, 9, 0, 152 }, - { 5, 3, 10, 0, 24 }, - { 5, 4, 10, 0, 200 }, - { 5, 5, 10, 0, 392 }, - { 5, 6, 11, 0, 1488 }, - { 5, 7, 11, 0, 336 }, - { 5, 8, 11, 0, 1424 }, - { 5, 9, 11, 0, 736 }, - { 5, 10, 12, 0, 3872 }, - { 5, 11, 11, 0, 1472 }, - { 5, 12, 13, 0, 2624 }, - { 5, 13, 13, 0, 4480 }, - { 5, 14, 14, 0, 9472 }, - { 5, 15, 14, 0, 8704 }, - { 6, 0, 9, 0, 488 }, - { 6, 1, 9, 0, 360 }, - { 6, 2, 10, 0, 456 }, - { 6, 3, 10, 0, 328 }, - { 6, 4, 11, 0, 1648 }, - { 6, 5, 11, 0, 976 }, - { 6, 6, 11, 0, 720 }, - { 6, 7, 11, 0, 1936 }, - { 6, 8, 11, 0, 1296 }, - { 6, 9, 12, 0, 3232 }, - { 6, 10, 12, 0, 3616 }, - { 6, 11, 12, 0, 1216 }, - { 6, 12, 13, 0, 7040 }, - { 6, 13, 13, 0, 3200 }, - { 6, 14, 14, 0, 2304 }, - { 6, 15, 14, 0, 15360 }, - { 7, 0, 10, 0, 72 }, - { 7, 1, 9, 0, 136 }, - { 7, 2, 10, 0, 112 }, - { 7, 3, 11, 0, 2000 }, - { 7, 4, 11, 0, 464 }, - { 7, 5, 11, 0, 1360 }, - { 7, 6, 12, 0, 3488 }, - { 7, 7, 12, 0, 1440 }, - { 7, 8, 12, 0, 1696 }, - { 7, 9, 12, 0, 2336 }, - { 7, 10, 13, 0, 5696 }, - { 7, 11, 13, 0, 4160 }, - { 7, 12, 13, 0, 6528 }, - { 7, 13, 14, 0, 3328 }, - { 7, 14, 16, 0, 54272 }, - { 7, 15, 16, 0, 21504 }, - { 8, 0, 9, 0, 424 }, - { 8, 1, 8, 0, 40 }, - { 8, 2, 9, 0, 240 }, - { 8, 3, 10, 0, 208 }, - { 8, 4, 10, 0, 944 }, - { 8, 5, 11, 0, 912 }, - { 8, 6, 11, 0, 144 }, - { 8, 7, 12, 0, 3744 }, - { 8, 8, 12, 0, 1824 }, - { 8, 9, 12, 0, 3008 }, - { 8, 10, 12, 0, 1856 }, - { 8, 11, 13, 0, 3456 }, - { 8, 12, 13, 0, 5248 }, - { 8, 13, 14, 0, 7680 }, - { 8, 14, 15, 0, 5120 }, - { 8, 15, 15, 0, 1024 }, - { 9, 0, 10, 0, 688 }, - { 9, 1, 9, 0, 304 }, - { 9, 2, 10, 0, 592 }, - { 9, 3, 10, 0, 656 }, - { 9, 4, 11, 0, 416 }, - { 9, 5, 11, 0, 1760 }, - { 9, 6, 11, 0, 864 }, - { 9, 7, 13, 0, 4416 }, - { 9, 8, 12, 0, 1056 }, - { 9, 9, 13, 0, 1600 }, - { 9, 10, 13, 0, 4992 }, - { 9, 11, 14, 0, 6912 }, - { 9, 12, 14, 0, 10496 }, - { 9, 13, 14, 0, 4608 }, - { 9, 14, 16, 0, 58368 }, - { 9, 15, 15, 0, 26624 }, - { 10, 0, 10, 0, 784 }, - { 10, 1, 10, 0, 528 }, - { 10, 2, 10, 0, 992 }, - { 10, 3, 11, 0, 1248 }, - { 10, 4, 11, 0, 672 }, - { 10, 5, 12, 0, 1184 }, - { 10, 6, 12, 0, 288 }, - { 10, 7, 13, 0, 320 }, - { 10, 8, 12, 0, 3904 }, - { 10, 9, 13, 0, 2944 }, - { 10, 10, 14, 0, 15104 }, - { 10, 11, 13, 0, 5376 }, - { 10, 12, 14, 0, 6656 }, - { 10, 13, 15, 0, 11264 }, - { 10, 14, 16, 0, 25600 }, - { 10, 15, 17, 0, 53248 }, - { 11, 0, 11, 0, 1376 }, - { 11, 1, 10, 0, 608 }, - { 11, 2, 10, 0, 928 }, - { 11, 3, 11, 0, 800 }, - { 11, 4, 12, 0, 1568 }, - { 11, 5, 12, 0, 960 }, - { 11, 6, 12, 0, 3264 }, - { 11, 7, 12, 0, 576 }, - { 11, 8, 13, 0, 7552 }, - { 11, 9, 13, 0, 2816 }, - { 11, 10, 13, 0, 2176 }, - { 11, 11, 14, 0, 14848 }, - { 11, 12, 15, 0, 27648 }, - { 11, 13, 15, 0, 14336 }, - { 11, 14, 15, 0, 18432 }, - { 11, 15, 16, 0, 57344 }, - { 12, 0, 11, 0, 544 }, - { 12, 1, 11, 0, 32 }, - { 12, 2, 11, 0, 448 }, - { 12, 3, 12, 0, 3648 }, - { 12, 4, 12, 0, 2240 }, - { 12, 5, 13, 0, 6720 }, - { 12, 6, 12, 0, 1920 }, - { 12, 7, 13, 0, 1408 }, - { 12, 8, 14, 0, 768 }, - { 12, 9, 14, 0, 1280 }, - { 12, 10, 15, 0, 5632 }, - { 12, 11, 15, 0, 7168 }, - { 12, 12, 15, 0, 9216 }, - { 12, 13, 16, 0, 34816 }, - { 12, 14, 16, 0, 36864 }, - { 12, 15, 16, 0, 40960 }, - { 13, 0, 12, 0, 2880 }, - { 13, 1, 11, 0, 1344 }, - { 13, 2, 12, 0, 1088 }, - { 13, 3, 13, 0, 64 }, - { 13, 4, 13, 0, 896 }, - { 13, 5, 13, 0, 2432 }, - { 13, 6, 14, 0, 8960 }, - { 13, 7, 14, 0, 11520 }, - { 13, 8, 14, 0, 15872 }, - { 13, 9, 14, 0, 12800 }, - { 13, 10, 14, 0, 3072 }, - { 13, 11, 15, 0, 30720 }, - { 13, 12, 16, 0, 20480 }, - { 13, 13, 15, 0, 28672 }, - { 13, 14, 16, 0, 24576 }, - { 13, 15, 16, 0, 49152 }, - { 14, 0, 13, 0, 384 }, - { 14, 1, 12, 0, 3712 }, - { 14, 2, 12, 0, 640 }, - { 14, 3, 13, 0, 7296 }, - { 14, 4, 13, 0, 1152 }, - { 14, 5, 13, 0, 6272 }, - { 14, 6, 15, 0, 22016 }, - { 14, 7, 14, 0, 10752 }, - { 14, 8, 14, 0, 512 }, - { 14, 9, 17, 0, 118784 }, - { 14, 10, 15, 0, 22528 }, - { 14, 11, 15, 0, 10240 }, - { 14, 12, 15, 0, 12288 }, - { 14, 13, 17, 0, 65536 }, - { 14, 14, 16, 0, 8192 }, - { 14, 15, 16, 0, 16384 }, - { 15, 0, 12, 0, 128 }, - { 15, 1, 12, 0, 3840 }, - { 15, 2, 13, 0, 4352 }, - { 15, 3, 14, 0, 13824 }, - { 15, 4, 14, 0, 9728 }, - { 15, 5, 14, 0, 2560 }, - { 15, 6, 15, 0, 23552 }, - { 15, 7, 14, 0, 13312 }, - { 15, 8, 15, 0, 17408 }, - { 15, 9, 15, 0, 6144 }, - { 15, 10, 16, 0, 2048 }, - { 15, 11, 16, 0, 4096 }, - { 15, 12, 19, 0, 262144 }, - { 15, 13, 18, 0, 131072 }, - { 15, 14, 19, 0, 0 }, - { 15, 15, 16, 0, 32768 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var70055eb0[] = { - { 0, 0, 3, 0, 7 }, - { 0, 1, 4, 0, 3 }, - { 0, 2, 5, 0, 9 }, - { 0, 3, 7, 0, 86 }, - { 0, 4, 7, 0, 122 }, - { 0, 5, 8, 0, 50 }, - { 0, 6, 9, 0, 124 }, - { 0, 7, 9, 0, 108 }, - { 0, 8, 9, 0, 308 }, - { 0, 9, 10, 0, 888 }, - { 0, 10, 10, 0, 216 }, - { 0, 11, 11, 0, 1904 }, - { 0, 12, 11, 0, 1712 }, - { 0, 13, 11, 0, 1104 }, - { 0, 14, 12, 0, 1504 }, - { 0, 15, 13, 0, 8064 }, - { 1, 0, 4, 0, 11 }, - { 1, 1, 3, 0, 5 }, - { 1, 2, 5, 0, 1 }, - { 1, 3, 6, 0, 54 }, - { 1, 4, 7, 0, 58 }, - { 1, 5, 7, 0, 18 }, - { 1, 6, 8, 0, 188 }, - { 1, 7, 8, 0, 204 }, - { 1, 8, 8, 0, 84 }, - { 1, 9, 9, 0, 196 }, - { 1, 10, 9, 0, 88 }, - { 1, 11, 10, 0, 808 }, - { 1, 12, 10, 0, 520 }, - { 1, 13, 10, 0, 592 }, - { 1, 14, 11, 0, 1760 }, - { 1, 15, 11, 0, 288 }, - { 2, 0, 5, 0, 25 }, - { 2, 1, 5, 0, 17 }, - { 2, 2, 5, 0, 30 }, - { 2, 3, 6, 0, 6 }, - { 2, 4, 7, 0, 74 }, - { 2, 5, 7, 0, 34 }, - { 2, 6, 8, 0, 220 }, - { 2, 7, 8, 0, 12 }, - { 2, 8, 8, 0, 20 }, - { 2, 9, 9, 0, 4 }, - { 2, 10, 9, 0, 152 }, - { 2, 11, 10, 0, 456 }, - { 2, 12, 10, 0, 496 }, - { 2, 13, 11, 0, 80 }, - { 2, 14, 11, 0, 224 }, - { 2, 15, 11, 0, 1056 }, - { 3, 0, 6, 0, 46 }, - { 3, 1, 6, 0, 14 }, - { 3, 2, 6, 0, 38 }, - { 3, 3, 7, 0, 106 }, - { 3, 4, 7, 0, 114 }, - { 3, 5, 8, 0, 252 }, - { 3, 6, 8, 0, 236 }, - { 3, 7, 9, 0, 372 }, - { 3, 8, 9, 0, 100 }, - { 3, 9, 9, 0, 440 }, - { 3, 10, 10, 0, 744 }, - { 3, 11, 10, 0, 72 }, - { 3, 12, 10, 0, 432 }, - { 3, 13, 11, 0, 1680 }, - { 3, 14, 11, 0, 608 }, - { 3, 15, 11, 0, 1472 }, - { 4, 0, 7, 0, 22 }, - { 4, 1, 6, 0, 26 }, - { 4, 2, 7, 0, 42 }, - { 4, 3, 7, 0, 10 }, - { 4, 4, 8, 0, 194 }, - { 4, 5, 8, 0, 156 }, - { 4, 6, 9, 0, 500 }, - { 4, 7, 9, 0, 484 }, - { 4, 8, 9, 0, 36 }, - { 4, 9, 9, 0, 312 }, - { 4, 10, 10, 0, 616 }, - { 4, 11, 10, 0, 648 }, - { 4, 12, 10, 0, 560 }, - { 4, 13, 11, 0, 528 }, - { 4, 14, 11, 0, 928 }, - { 4, 15, 11, 0, 1728 }, - { 5, 0, 8, 0, 178 }, - { 5, 1, 7, 0, 82 }, - { 5, 2, 7, 0, 98 }, - { 5, 3, 8, 0, 66 }, - { 5, 4, 8, 0, 92 }, - { 5, 5, 8, 0, 44 }, - { 5, 6, 9, 0, 436 }, - { 5, 7, 9, 0, 164 }, - { 5, 8, 9, 0, 248 }, - { 5, 9, 9, 0, 24 }, - { 5, 10, 10, 0, 968 }, - { 5, 11, 10, 0, 1008 }, - { 5, 12, 11, 0, 720 }, - { 5, 13, 11, 0, 992 }, - { 5, 14, 11, 0, 160 }, - { 5, 15, 12, 0, 1600 }, - { 6, 0, 9, 0, 380 }, - { 6, 1, 7, 0, 2 }, - { 6, 2, 8, 0, 60 }, - { 6, 3, 8, 0, 28 }, - { 6, 4, 8, 0, 76 }, - { 6, 5, 9, 0, 116 }, - { 6, 6, 9, 0, 228 }, - { 6, 7, 9, 0, 260 }, - { 6, 8, 9, 0, 472 }, - { 6, 9, 10, 0, 936 }, - { 6, 10, 10, 0, 904 }, - { 6, 11, 10, 0, 816 }, - { 6, 12, 11, 0, 1168 }, - { 6, 13, 11, 0, 1632 }, - { 6, 14, 12, 0, 1568 }, - { 6, 15, 12, 0, 1920 }, - { 7, 0, 9, 0, 364 }, - { 7, 1, 8, 0, 172 }, - { 7, 2, 8, 0, 140 }, - { 7, 3, 9, 0, 244 }, - { 7, 4, 9, 0, 52 }, - { 7, 5, 9, 0, 420 }, - { 7, 6, 9, 0, 132 }, - { 7, 7, 10, 0, 376 }, - { 7, 8, 10, 0, 872 }, - { 7, 9, 10, 0, 584 }, - { 7, 10, 10, 0, 112 }, - { 7, 11, 10, 0, 336 }, - { 7, 12, 11, 0, 16 }, - { 7, 13, 11, 0, 416 }, - { 7, 14, 11, 0, 1344 }, - { 7, 15, 12, 0, 2432 }, - { 8, 0, 9, 0, 180 }, - { 8, 1, 8, 0, 212 }, - { 8, 2, 8, 0, 148 }, - { 8, 3, 9, 0, 356 }, - { 8, 4, 9, 0, 292 }, - { 8, 5, 9, 0, 504 }, - { 8, 6, 9, 0, 56 }, - { 8, 7, 10, 0, 232 }, - { 8, 8, 10, 0, 712 }, - { 8, 9, 10, 0, 264 }, - { 8, 10, 10, 0, 976 }, - { 8, 11, 11, 0, 1552 }, - { 8, 12, 11, 0, 96 }, - { 8, 13, 12, 0, 2752 }, - { 8, 14, 12, 0, 576 }, - { 8, 15, 12, 0, 640 }, - { 9, 0, 9, 0, 452 }, - { 9, 1, 8, 0, 68 }, - { 9, 2, 9, 0, 388 }, - { 9, 3, 9, 0, 120 }, - { 9, 4, 9, 0, 184 }, - { 9, 5, 9, 0, 280 }, - { 9, 6, 10, 0, 104 }, - { 9, 7, 10, 0, 200 }, - { 9, 8, 10, 0, 776 }, - { 9, 9, 11, 0, 688 }, - { 9, 10, 11, 0, 1808 }, - { 9, 11, 11, 0, 864 }, - { 9, 12, 11, 0, 800 }, - { 9, 13, 12, 0, 3648 }, - { 9, 14, 12, 0, 3712 }, - { 9, 15, 12, 0, 3840 }, - { 10, 0, 10, 0, 728 }, - { 10, 1, 9, 0, 344 }, - { 10, 2, 9, 0, 408 }, - { 10, 3, 9, 0, 488 }, - { 10, 4, 10, 0, 360 }, - { 10, 5, 10, 0, 296 }, - { 10, 6, 10, 0, 368 }, - { 10, 7, 10, 0, 624 }, - { 10, 8, 10, 0, 48 }, - { 10, 9, 11, 0, 144 }, - { 10, 10, 11, 0, 1248 }, - { 10, 11, 11, 0, 1184 }, - { 10, 12, 11, 0, 1856 }, - { 10, 13, 12, 0, 3456 }, - { 10, 14, 13, 0, 3968 }, - { 10, 15, 12, 0, 2304 }, - { 11, 0, 10, 0, 424 }, - { 11, 1, 9, 0, 168 }, - { 11, 2, 9, 0, 40 }, - { 11, 3, 9, 0, 328 }, - { 11, 4, 10, 0, 392 }, - { 11, 5, 10, 0, 8 }, - { 11, 6, 10, 0, 176 }, - { 11, 7, 10, 0, 848 }, - { 11, 8, 11, 0, 784 }, - { 11, 9, 11, 0, 1888 }, - { 11, 10, 11, 0, 672 }, - { 11, 11, 11, 0, 1216 }, - { 11, 12, 12, 0, 2944 }, - { 11, 13, 12, 0, 1152 }, - { 11, 14, 12, 0, 3328 }, - { 11, 15, 13, 0, 6656 }, - { 12, 0, 11, 0, 880 }, - { 12, 1, 10, 0, 136 }, - { 12, 2, 9, 0, 240 }, - { 12, 3, 10, 0, 944 }, - { 12, 4, 10, 0, 304 }, - { 12, 5, 10, 0, 464 }, - { 12, 6, 11, 0, 656 }, - { 12, 7, 11, 0, 1040 }, - { 12, 8, 11, 0, 1120 }, - { 12, 9, 11, 0, 1824 }, - { 12, 10, 11, 0, 192 }, - { 12, 11, 11, 0, 64 }, - { 12, 12, 12, 0, 1664 }, - { 12, 13, 12, 0, 2816 }, - { 12, 14, 13, 0, 3584 }, - { 12, 15, 13, 0, 7168 }, - { 13, 0, 11, 0, 1744 }, - { 13, 1, 10, 0, 208 }, - { 13, 2, 10, 0, 912 }, - { 13, 3, 10, 0, 400 }, - { 13, 4, 10, 0, 272 }, - { 13, 5, 11, 0, 2016 }, - { 13, 6, 11, 0, 352 }, - { 13, 7, 11, 0, 1440 }, - { 13, 8, 11, 0, 1984 }, - { 13, 9, 12, 0, 704 }, - { 13, 10, 12, 0, 896 }, - { 13, 11, 12, 0, 3200 }, - { 13, 12, 12, 0, 1792 }, - { 13, 13, 12, 0, 256 }, - { 13, 14, 13, 0, 4608 }, - { 13, 15, 13, 0, 6144 }, - { 14, 0, 12, 0, 3552 }, - { 14, 1, 11, 0, 480 }, - { 14, 2, 11, 0, 736 }, - { 14, 3, 11, 0, 1376 }, - { 14, 4, 11, 0, 1952 }, - { 14, 5, 11, 0, 1696 }, - { 14, 6, 11, 0, 32 }, - { 14, 7, 11, 0, 832 }, - { 14, 8, 12, 0, 2624 }, - { 14, 9, 12, 0, 384 }, - { 14, 10, 12, 0, 2176 }, - { 14, 11, 12, 0, 768 }, - { 14, 12, 13, 0, 7680 }, - { 14, 13, 13, 0, 2560 }, - { 14, 14, 12, 0, 1024 }, - { 14, 15, 13, 0, 4096 }, - { 15, 0, 12, 0, 3616 }, - { 15, 1, 11, 0, 1312 }, - { 15, 2, 11, 0, 544 }, - { 15, 3, 11, 0, 960 }, - { 15, 4, 11, 0, 448 }, - { 15, 5, 11, 0, 320 }, - { 15, 6, 11, 0, 1088 }, - { 15, 7, 12, 0, 1408 }, - { 15, 8, 12, 0, 2688 }, - { 15, 9, 12, 0, 128 }, - { 15, 10, 12, 0, 1280 }, - { 15, 11, 12, 0, 1536 }, - { 15, 12, 13, 0, 512 }, - { 15, 13, 13, 0, 3072 }, - { 15, 14, 13, 0, 2048 }, - { 15, 15, 13, 0, 0 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var700566b8[] = { - { 0, 0, 1, 0, 1 }, - { 0, 1, 4, 0, 10 }, - { 0, 2, 6, 0, 28 }, - { 0, 3, 8, 0, 52 }, - { 0, 4, 9, 0, 164 }, - { 0, 5, 9, 0, 504 }, - { 0, 6, 10, 0, 472 }, - { 0, 7, 10, 0, 744 }, - { 0, 8, 11, 0, 424 }, - { 0, 9, 11, 0, 1352 }, - { 0, 10, 11, 0, 648 }, - { 0, 11, 12, 0, 1264 }, - { 0, 12, 12, 0, 2160 }, - { 0, 13, 12, 0, 3120 }, - { 0, 14, 13, 0, 976 }, - { 0, 15, 9, 0, 272 }, - { 1, 0, 3, 0, 6 }, - { 1, 1, 4, 0, 2 }, - { 1, 2, 6, 0, 12 }, - { 1, 3, 7, 0, 20 }, - { 1, 4, 8, 0, 196 }, - { 1, 5, 9, 0, 248 }, - { 1, 6, 9, 0, 344 }, - { 1, 7, 9, 0, 488 }, - { 1, 8, 10, 0, 808 }, - { 1, 9, 10, 0, 840 }, - { 1, 10, 10, 0, 136 }, - { 1, 11, 11, 0, 1904 }, - { 1, 12, 12, 0, 2352 }, - { 1, 13, 11, 0, 1712 }, - { 1, 14, 12, 0, 3888 }, - { 1, 15, 8, 0, 144 }, - { 2, 0, 6, 0, 60 }, - { 2, 1, 6, 0, 44 }, - { 2, 2, 7, 0, 116 }, - { 2, 3, 8, 0, 100 }, - { 2, 4, 9, 0, 388 }, - { 2, 5, 9, 0, 184 }, - { 2, 6, 10, 0, 920 }, - { 2, 7, 10, 0, 360 }, - { 2, 8, 11, 0, 1064 }, - { 2, 9, 10, 0, 72 }, - { 2, 10, 11, 0, 2032 }, - { 2, 11, 11, 0, 1392 }, - { 2, 12, 11, 0, 944 }, - { 2, 13, 12, 0, 2224 }, - { 2, 14, 12, 0, 1840 }, - { 2, 15, 9, 0, 16 }, - { 3, 0, 8, 0, 180 }, - { 3, 1, 7, 0, 84 }, - { 3, 2, 8, 0, 228 }, - { 3, 3, 9, 0, 324 }, - { 3, 4, 9, 0, 4 }, - { 3, 5, 10, 0, 312 }, - { 3, 6, 10, 0, 792 }, - { 3, 7, 10, 0, 936 }, - { 3, 8, 11, 0, 968 }, - { 3, 9, 11, 0, 392 }, - { 3, 10, 12, 0, 1008 }, - { 3, 11, 12, 0, 688 }, - { 3, 12, 12, 0, 3632 }, - { 3, 13, 13, 0, 6192 }, - { 3, 14, 13, 0, 5840 }, - { 3, 15, 10, 0, 352 }, - { 4, 0, 9, 0, 420 }, - { 4, 1, 8, 0, 36 }, - { 4, 2, 9, 0, 68 }, - { 4, 3, 9, 0, 260 }, - { 4, 4, 10, 0, 824 }, - { 4, 5, 10, 0, 664 }, - { 4, 6, 11, 0, 1640 }, - { 4, 7, 11, 0, 296 }, - { 4, 8, 11, 0, 1736 }, - { 4, 9, 12, 0, 264 }, - { 4, 10, 12, 0, 1776 }, - { 4, 11, 12, 0, 1136 }, - { 4, 12, 13, 0, 6704 }, - { 4, 13, 13, 0, 4048 }, - { 4, 14, 13, 0, 2768 }, - { 4, 15, 9, 0, 288 }, - { 5, 0, 9, 0, 132 }, - { 5, 1, 8, 0, 120 }, - { 5, 2, 9, 0, 440 }, - { 5, 3, 9, 0, 56 }, - { 5, 4, 10, 0, 408 }, - { 5, 5, 11, 0, 1256 }, - { 5, 6, 11, 0, 1448 }, - { 5, 7, 12, 0, 2312 }, - { 5, 8, 11, 0, 904 }, - { 5, 9, 12, 0, 3056 }, - { 5, 10, 12, 0, 368 }, - { 5, 11, 13, 0, 304 }, - { 5, 12, 13, 0, 1072 }, - { 5, 13, 13, 0, 3024 }, - { 5, 14, 14, 0, 12128 }, - { 5, 15, 10, 0, 32 }, - { 6, 0, 10, 0, 984 }, - { 6, 1, 9, 0, 216 }, - { 6, 2, 9, 0, 88 }, - { 6, 3, 10, 0, 152 }, - { 6, 4, 11, 0, 232 }, - { 6, 5, 11, 0, 616 }, - { 6, 6, 11, 0, 40 }, - { 6, 7, 11, 0, 1288 }, - { 6, 8, 12, 0, 2056 }, - { 6, 9, 12, 0, 752 }, - { 6, 10, 12, 0, 624 }, - { 6, 11, 12, 0, 2480 }, - { 6, 12, 13, 0, 4144 }, - { 6, 13, 13, 0, 3792 }, - { 6, 14, 14, 0, 13520 }, - { 6, 15, 10, 0, 320 }, - { 7, 0, 10, 0, 280 }, - { 7, 1, 9, 0, 24 }, - { 7, 2, 10, 0, 872 }, - { 7, 3, 10, 0, 104 }, - { 7, 4, 11, 0, 1320 }, - { 7, 5, 11, 0, 1480 }, - { 7, 6, 11, 0, 328 }, - { 7, 7, 12, 0, 2568 }, - { 7, 8, 12, 0, 496 }, - { 7, 9, 13, 0, 7472 }, - { 7, 10, 13, 0, 5680 }, - { 7, 11, 13, 0, 1488 }, - { 7, 12, 13, 0, 2000 }, - { 7, 13, 15, 0, 20320 }, - { 7, 14, 15, 0, 5984 }, - { 7, 15, 10, 0, 64 }, - { 8, 0, 10, 0, 680 }, - { 8, 1, 10, 0, 168 }, - { 8, 2, 10, 0, 552 }, - { 8, 3, 11, 0, 1992 }, - { 8, 4, 11, 0, 456 }, - { 8, 5, 11, 0, 1928 }, - { 8, 6, 12, 0, 520 }, - { 8, 7, 12, 0, 2544 }, - { 8, 8, 13, 0, 6832 }, - { 8, 9, 13, 0, 4400 }, - { 8, 10, 13, 0, 560 }, - { 8, 11, 13, 0, 8144 }, - { 8, 12, 14, 0, 15056 }, - { 8, 13, 14, 0, 9424 }, - { 8, 14, 14, 0, 2256 }, - { 8, 15, 10, 0, 896 }, - { 9, 0, 11, 0, 712 }, - { 9, 1, 10, 0, 200 }, - { 9, 2, 10, 0, 584 }, - { 9, 3, 11, 0, 1416 }, - { 9, 4, 11, 0, 1544 }, - { 9, 5, 12, 0, 8 }, - { 9, 6, 12, 0, 2800 }, - { 9, 7, 13, 0, 2736 }, - { 9, 8, 13, 0, 3376 }, - { 9, 9, 13, 0, 2608 }, - { 9, 10, 13, 0, 48 }, - { 9, 11, 14, 0, 16080 }, - { 9, 12, 13, 0, 7376 }, - { 9, 13, 14, 0, 6352 }, - { 9, 14, 13, 0, 208 }, - { 9, 15, 11, 0, 1664 }, - { 10, 0, 11, 0, 1672 }, - { 10, 1, 11, 0, 1032 }, - { 10, 2, 10, 0, 776 }, - { 10, 3, 11, 0, 1520 }, - { 10, 4, 12, 0, 3824 }, - { 10, 5, 12, 0, 2416 }, - { 10, 6, 12, 0, 2672 }, - { 10, 7, 12, 0, 3504 }, - { 10, 8, 13, 0, 4656 }, - { 10, 9, 14, 0, 14800 }, - { 10, 10, 14, 0, 8656 }, - { 10, 11, 14, 0, 720 }, - { 10, 12, 15, 0, 22368 }, - { 10, 13, 15, 0, 10080 }, - { 10, 14, 14, 0, 15200 }, - { 10, 15, 10, 0, 128 }, - { 11, 0, 12, 0, 3312 }, - { 11, 1, 11, 0, 240 }, - { 11, 2, 11, 0, 880 }, - { 11, 3, 11, 0, 1648 }, - { 11, 4, 12, 0, 3184 }, - { 11, 5, 12, 0, 4016 }, - { 11, 6, 13, 0, 1584 }, - { 11, 7, 14, 0, 5584 }, - { 11, 8, 14, 0, 6608 }, - { 11, 9, 14, 0, 464 }, - { 11, 10, 14, 0, 8912 }, - { 11, 11, 14, 0, 1232 }, - { 11, 12, 14, 0, 4304 }, - { 11, 13, 13, 0, 8032 }, - { 11, 14, 14, 0, 2912 }, - { 11, 15, 11, 0, 768 }, - { 12, 0, 12, 0, 1328 }, - { 12, 1, 12, 0, 112 }, - { 12, 2, 12, 0, 1968 }, - { 12, 3, 12, 0, 1456 }, - { 12, 4, 12, 0, 432 }, - { 12, 5, 13, 0, 5168 }, - { 12, 6, 13, 0, 2096 }, - { 12, 7, 13, 0, 6096 }, - { 12, 8, 13, 0, 1744 }, - { 12, 9, 15, 0, 3936 }, - { 12, 10, 14, 0, 14176 }, - { 12, 11, 14, 0, 12496 }, - { 12, 12, 14, 0, 1888 }, - { 12, 13, 14, 0, 11104 }, - { 12, 14, 16, 0, 864 }, - { 12, 15, 11, 0, 256 }, - { 13, 0, 14, 0, 13776 }, - { 13, 1, 12, 0, 3248 }, - { 13, 2, 12, 0, 1200 }, - { 13, 3, 12, 0, 176 }, - { 13, 4, 13, 0, 2512 }, - { 13, 5, 13, 0, 7120 }, - { 13, 6, 14, 0, 7888 }, - { 13, 7, 14, 0, 13008 }, - { 13, 8, 14, 0, 5328 }, - { 13, 9, 16, 0, 58208 }, - { 13, 10, 15, 0, 26464 }, - { 13, 11, 15, 0, 23392 }, - { 13, 12, 15, 0, 7008 }, - { 13, 13, 17, 0, 99168 }, - { 13, 14, 15, 0, 17248 }, - { 13, 15, 11, 0, 512 }, - { 14, 0, 13, 0, 5072 }, - { 14, 1, 13, 0, 4560 }, - { 14, 2, 11, 0, 816 }, - { 14, 3, 12, 0, 3536 }, - { 14, 4, 14, 0, 6864 }, - { 14, 5, 14, 0, 4816 }, - { 14, 6, 13, 0, 3280 }, - { 14, 7, 14, 0, 14544 }, - { 14, 8, 14, 0, 10448 }, - { 14, 9, 15, 0, 9056 }, - { 14, 10, 16, 0, 25440 }, - { 14, 11, 15, 0, 29536 }, - { 14, 12, 17, 0, 33632 }, - { 14, 13, 15, 0, 13152 }, - { 14, 14, 14, 0, 4960 }, - { 14, 15, 11, 0, 0 }, - { 15, 0, 9, 0, 96 }, - { 15, 1, 8, 0, 80 }, - { 15, 2, 8, 0, 224 }, - { 15, 3, 9, 0, 416 }, - { 15, 4, 9, 0, 160 }, - { 15, 5, 10, 0, 544 }, - { 15, 6, 10, 0, 832 }, - { 15, 7, 10, 0, 576 }, - { 15, 8, 11, 0, 1408 }, - { 15, 9, 11, 0, 384 }, - { 15, 10, 11, 0, 640 }, - { 15, 11, 11, 0, 1792 }, - { 15, 12, 11, 0, 1280 }, - { 15, 13, 11, 0, 1536 }, - { 15, 14, 11, 0, 1024 }, - { 15, 15, 8, 0, 192 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var70056ec0[] = { - { 0, 0, 4, 0, 15 }, - { 0, 1, 4, 0, 11 }, - { 0, 2, 6, 0, 29 }, - { 0, 3, 7, 0, 5 }, - { 0, 4, 8, 0, 73 }, - { 0, 5, 9, 0, 193 }, - { 0, 6, 9, 0, 62 }, - { 0, 7, 10, 0, 310 }, - { 0, 8, 10, 0, 342 }, - { 0, 9, 11, 0, 1482 }, - { 0, 10, 11, 0, 1418 }, - { 0, 11, 11, 0, 1162 }, - { 0, 12, 11, 0, 1458 }, - { 0, 13, 11, 0, 1282 }, - { 0, 14, 12, 0, 258 }, - { 0, 15, 9, 0, 52 }, - { 1, 0, 4, 0, 7 }, - { 1, 1, 4, 0, 3 }, - { 1, 2, 5, 0, 21 }, - { 1, 3, 6, 0, 25 }, - { 1, 4, 7, 0, 113 }, - { 1, 5, 8, 0, 65 }, - { 1, 6, 8, 0, 94 }, - { 1, 7, 9, 0, 54 }, - { 1, 8, 9, 0, 278 }, - { 1, 9, 9, 0, 198 }, - { 1, 10, 10, 0, 906 }, - { 1, 11, 10, 0, 618 }, - { 1, 12, 10, 0, 1010 }, - { 1, 13, 10, 0, 594 }, - { 1, 14, 10, 0, 930 }, - { 1, 15, 8, 0, 84 }, - { 2, 0, 6, 0, 61 }, - { 2, 1, 5, 0, 13 }, - { 2, 2, 6, 0, 37 }, - { 2, 3, 7, 0, 41 }, - { 2, 4, 7, 0, 17 }, - { 2, 5, 8, 0, 1 }, - { 2, 6, 8, 0, 30 }, - { 2, 7, 9, 0, 374 }, - { 2, 8, 9, 0, 486 }, - { 2, 9, 9, 0, 134 }, - { 2, 10, 9, 0, 218 }, - { 2, 11, 10, 0, 170 }, - { 2, 12, 10, 0, 882 }, - { 2, 13, 10, 0, 914 }, - { 2, 14, 11, 0, 1474 }, - { 2, 15, 7, 0, 36 }, - { 3, 0, 7, 0, 69 }, - { 3, 1, 6, 0, 57 }, - { 3, 2, 7, 0, 105 }, - { 3, 3, 7, 0, 49 }, - { 3, 4, 8, 0, 97 }, - { 3, 5, 8, 0, 190 }, - { 3, 6, 8, 0, 46 }, - { 3, 7, 9, 0, 118 }, - { 3, 8, 9, 0, 102 }, - { 3, 9, 9, 0, 250 }, - { 3, 10, 9, 0, 154 }, - { 3, 11, 10, 0, 650 }, - { 3, 12, 10, 0, 946 }, - { 3, 13, 10, 0, 658 }, - { 3, 14, 10, 0, 962 }, - { 3, 15, 7, 0, 4 }, - { 4, 0, 8, 0, 201 }, - { 4, 1, 7, 0, 9 }, - { 4, 2, 7, 0, 81 }, - { 4, 3, 8, 0, 225 }, - { 4, 4, 8, 0, 254 }, - { 4, 5, 8, 0, 110 }, - { 4, 6, 8, 0, 14 }, - { 4, 7, 9, 0, 150 }, - { 4, 8, 9, 0, 38 }, - { 4, 9, 9, 0, 122 }, - { 4, 10, 10, 0, 26 }, - { 4, 11, 10, 0, 778 }, - { 4, 12, 10, 0, 306 }, - { 4, 13, 10, 0, 738 }, - { 4, 14, 11, 0, 450 }, - { 4, 15, 7, 0, 56 }, - { 5, 0, 9, 0, 449 }, - { 5, 1, 7, 0, 33 }, - { 5, 2, 8, 0, 129 }, - { 5, 3, 8, 0, 126 }, - { 5, 4, 8, 0, 238 }, - { 5, 5, 8, 0, 78 }, - { 5, 6, 9, 0, 214 }, - { 5, 7, 9, 0, 166 }, - { 5, 8, 9, 0, 6 }, - { 5, 9, 9, 0, 90 }, - { 5, 10, 10, 0, 682 }, - { 5, 11, 10, 0, 754 }, - { 5, 12, 10, 0, 722 }, - { 5, 13, 10, 0, 610 }, - { 5, 14, 10, 0, 386 }, - { 5, 15, 7, 0, 24 }, - { 6, 0, 9, 0, 318 }, - { 6, 1, 8, 0, 222 }, - { 6, 2, 8, 0, 158 }, - { 6, 3, 8, 0, 174 }, - { 6, 4, 8, 0, 142 }, - { 6, 5, 9, 0, 470 }, - { 6, 6, 9, 0, 230 }, - { 6, 7, 9, 0, 390 }, - { 6, 8, 9, 0, 314 }, - { 6, 9, 10, 0, 874 }, - { 6, 10, 10, 0, 330 }, - { 6, 11, 10, 0, 178 }, - { 6, 12, 10, 0, 786 }, - { 6, 13, 10, 0, 34 }, - { 6, 14, 11, 0, 130 }, - { 6, 15, 7, 0, 40 }, - { 7, 0, 10, 0, 822 }, - { 7, 1, 8, 0, 206 }, - { 7, 2, 8, 0, 246 }, - { 7, 3, 8, 0, 182 }, - { 7, 4, 9, 0, 406 }, - { 7, 5, 9, 0, 422 }, - { 7, 6, 9, 0, 70 }, - { 7, 7, 9, 0, 442 }, - { 7, 8, 10, 0, 538 }, - { 7, 9, 10, 0, 202 }, - { 7, 10, 10, 0, 626 }, - { 7, 11, 10, 0, 338 }, - { 7, 12, 10, 0, 866 }, - { 7, 13, 11, 0, 1602 }, - { 7, 14, 11, 0, 1524 }, - { 7, 15, 8, 0, 136 }, - { 8, 0, 10, 0, 854 }, - { 8, 1, 9, 0, 86 }, - { 8, 2, 9, 0, 22 }, - { 8, 3, 9, 0, 358 }, - { 8, 4, 9, 0, 294 }, - { 8, 5, 9, 0, 262 }, - { 8, 6, 9, 0, 186 }, - { 8, 7, 9, 0, 282 }, - { 8, 8, 9, 0, 298 }, - { 8, 9, 10, 0, 10 }, - { 8, 10, 10, 0, 978 }, - { 8, 11, 10, 0, 482 }, - { 8, 12, 10, 0, 194 }, - { 8, 13, 11, 0, 514 }, - { 8, 14, 11, 0, 1268 }, - { 8, 15, 8, 0, 8 }, - { 9, 0, 10, 0, 970 }, - { 9, 1, 9, 0, 454 }, - { 9, 2, 9, 0, 326 }, - { 9, 3, 9, 0, 506 }, - { 9, 4, 9, 0, 378 }, - { 9, 5, 9, 0, 346 }, - { 9, 6, 9, 0, 234 }, - { 9, 7, 10, 0, 714 }, - { 9, 8, 10, 0, 522 }, - { 9, 9, 10, 0, 562 }, - { 9, 10, 10, 0, 530 }, - { 9, 11, 10, 0, 802 }, - { 9, 12, 11, 0, 1154 }, - { 9, 13, 11, 0, 1780 }, - { 9, 14, 11, 0, 1652 }, - { 9, 15, 8, 0, 208 }, - { 10, 0, 11, 0, 458 }, - { 10, 1, 9, 0, 58 }, - { 10, 2, 9, 0, 474 }, - { 10, 3, 9, 0, 410 }, - { 10, 4, 9, 0, 490 }, - { 10, 5, 10, 0, 106 }, - { 10, 6, 10, 0, 842 }, - { 10, 7, 10, 0, 370 }, - { 10, 8, 10, 0, 50 }, - { 10, 9, 10, 0, 274 }, - { 10, 10, 10, 0, 674 }, - { 10, 11, 11, 0, 578 }, - { 10, 12, 11, 0, 2036 }, - { 10, 13, 11, 0, 1396 }, - { 10, 14, 11, 0, 948 }, - { 10, 15, 8, 0, 80 }, - { 11, 0, 11, 0, 394 }, - { 11, 1, 10, 0, 362 }, - { 11, 2, 9, 0, 426 }, - { 11, 3, 9, 0, 42 }, - { 11, 4, 9, 0, 74 }, - { 11, 5, 10, 0, 498 }, - { 11, 6, 10, 0, 690 }, - { 11, 7, 10, 0, 850 }, - { 11, 8, 10, 0, 994 }, - { 11, 9, 10, 0, 162 }, - { 11, 10, 10, 0, 898 }, - { 11, 11, 11, 0, 1026 }, - { 11, 12, 11, 0, 1908 }, - { 11, 13, 11, 0, 116 }, - { 11, 14, 11, 0, 692 }, - { 11, 15, 8, 0, 96 }, - { 12, 0, 11, 0, 138 }, - { 12, 1, 10, 0, 266 }, - { 12, 2, 10, 0, 242 }, - { 12, 3, 10, 0, 114 }, - { 12, 4, 10, 0, 818 }, - { 12, 5, 10, 0, 466 }, - { 12, 6, 10, 0, 146 }, - { 12, 7, 10, 0, 226 }, - { 12, 8, 10, 0, 706 }, - { 12, 9, 10, 0, 642 }, - { 12, 10, 11, 0, 2 }, - { 12, 11, 11, 0, 244 }, - { 12, 12, 11, 0, 628 }, - { 12, 13, 11, 0, 436 }, - { 12, 14, 11, 0, 1844 }, - { 12, 15, 8, 0, 32 }, - { 13, 0, 11, 0, 434 }, - { 13, 1, 10, 0, 210 }, - { 13, 2, 10, 0, 82 }, - { 13, 3, 10, 0, 402 }, - { 13, 4, 10, 0, 18 }, - { 13, 5, 10, 0, 354 }, - { 13, 6, 10, 0, 546 }, - { 13, 7, 10, 0, 322 }, - { 13, 8, 11, 0, 1538 }, - { 13, 9, 11, 0, 500 }, - { 13, 10, 11, 0, 884 }, - { 13, 11, 11, 0, 1140 }, - { 13, 12, 11, 0, 1460 }, - { 13, 13, 11, 0, 1204 }, - { 13, 14, 11, 0, 1332 }, - { 13, 15, 8, 0, 64 }, - { 14, 0, 12, 0, 2306 }, - { 14, 1, 10, 0, 98 }, - { 14, 2, 10, 0, 418 }, - { 14, 3, 10, 0, 290 }, - { 14, 4, 10, 0, 834 }, - { 14, 5, 10, 0, 66 }, - { 14, 6, 10, 0, 770 }, - { 14, 7, 11, 0, 1012 }, - { 14, 8, 11, 0, 756 }, - { 14, 9, 11, 0, 372 }, - { 14, 10, 11, 0, 1972 }, - { 14, 11, 11, 0, 1716 }, - { 14, 12, 11, 0, 180 }, - { 14, 13, 11, 0, 820 }, - { 14, 14, 11, 0, 308 }, - { 14, 15, 8, 0, 0 }, - { 15, 0, 8, 0, 212 }, - { 15, 1, 7, 0, 20 }, - { 15, 2, 7, 0, 100 }, - { 15, 3, 7, 0, 68 }, - { 15, 4, 7, 0, 120 }, - { 15, 5, 7, 0, 88 }, - { 15, 6, 7, 0, 104 }, - { 15, 7, 7, 0, 72 }, - { 15, 8, 7, 0, 112 }, - { 15, 9, 7, 0, 48 }, - { 15, 10, 7, 0, 16 }, - { 15, 11, 8, 0, 224 }, - { 15, 12, 8, 0, 160 }, - { 15, 13, 8, 0, 192 }, - { 15, 14, 8, 0, 128 }, - { 15, 15, 4, 0, 12 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var700576c8[] = { - { 0, 0, 1, 0, 1 }, - { 1, 1, 4, 0, 10 }, - { 2, 2, 4, 0, 2 }, - { 3, 3, 5, 0, 20 }, - { 4, 4, 4, 0, 6 }, - { 5, 5, 6, 0, 40 }, - { 6, 6, 5, 0, 4 }, - { 7, 7, 6, 0, 8 }, - { 8, 8, 4, 0, 14 }, - { 9, 9, 5, 0, 24 }, - { 10, 10, 5, 0, 12 }, - { 11, 11, 6, 0, 0 }, - { 12, 12, 5, 0, 28 }, - { 13, 13, 6, 0, 16 }, - { 14, 14, 6, 0, 48 }, - { 15, 15, 6, 0, 32 }, - { 100, 100, 100, 0, 0 }, -}; - -const struct mp3decthing var70057750[] = { - { 0, 0, 4, 0, 15 }, - { 1, 1, 4, 0, 7 }, - { 2, 2, 4, 0, 11 }, - { 3, 3, 4, 0, 3 }, - { 4, 4, 4, 0, 13 }, - { 5, 5, 4, 0, 5 }, - { 6, 6, 4, 0, 9 }, - { 7, 7, 4, 0, 1 }, - { 8, 8, 4, 0, 14 }, - { 9, 9, 4, 0, 6 }, - { 10, 10, 4, 0, 10 }, - { 11, 11, 4, 0, 2 }, - { 12, 12, 4, 0, 12 }, - { 13, 13, 4, 0, 4 }, - { 14, 14, 4, 0, 8 }, - { 15, 15, 4, 0, 0 }, - { 100, 100, 100, 0, 0 }, -}; - -struct mp3decthing *var8005f670[] = { - NULL, - (struct mp3decthing *)var70054b40, - (struct mp3decthing *)var70054b68, - (struct mp3decthing *)var70054bb8, - (struct mp3decthing *)var70054c08, - (struct mp3decthing *)var70054c08, - (struct mp3decthing *)var70054c90, - (struct mp3decthing *)var70054d18, - (struct mp3decthing *)var70054e40, - (struct mp3decthing *)var70054f68, - (struct mp3decthing *)var70055090, - (struct mp3decthing *)var70055298, - (struct mp3decthing *)var700554a0, - (struct mp3decthing *)var700556a8, - (struct mp3decthing *)var70055eb0, - (struct mp3decthing *)var70055eb0, - (struct mp3decthing *)var700566b8, - (struct mp3decthing *)var700566b8, - (struct mp3decthing *)var700566b8, - (struct mp3decthing *)var700566b8, - (struct mp3decthing *)var700566b8, - (struct mp3decthing *)var700566b8, - (struct mp3decthing *)var700566b8, - (struct mp3decthing *)var700566b8, - (struct mp3decthing *)var70056ec0, - (struct mp3decthing *)var70056ec0, - (struct mp3decthing *)var70056ec0, - (struct mp3decthing *)var70056ec0, - (struct mp3decthing *)var70056ec0, - (struct mp3decthing *)var70056ec0, - (struct mp3decthing *)var70056ec0, - (struct mp3decthing *)var70056ec0, - (struct mp3decthing *)var700576c8, - (struct mp3decthing *)var70057750, -}; - -u8 *var8005f6f8 = NULL; -u8 *var8005f6fc = NULL; - -const s32 var700577d8[34] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, - 6, 8, 10, 13, 4, 5, 6, 7, 8, 9, - 11, 13, -1, -1, -}; - -const s16 var70057860[2][3][22] = { - { - { 5, 11, 17, 23, 29, 35, 43, 53, 65, 79, 95, 115, 139, 167, 199, 237, 283, 335, 395, 463, 521, 575 }, - { 5, 11, 17, 23, 29, 35, 43, 53, 65, 79, 95, 113, 135, 161, 193, 231, 277, 331, 393, 463, 539, 575 }, - { 5, 11, 17, 23, 29, 35, 43, 53, 65, 79, 95, 115, 139, 167, 199, 237, 283, 335, 395, 463, 521, 575 }, - }, { - { 3, 7, 11, 15, 19, 23, 29, 35, 43, 51, 61, 73, 89, 109, 133, 161, 195, 237, 287, 341, 417, 575 }, - { 3, 7, 11, 15, 19, 23, 29, 35, 41, 49, 59, 71, 87, 105, 127, 155, 189, 229, 275, 329, 383, 575 }, - { 3, 7, 11, 15, 19, 23, 29, 35, 43, 53, 65, 81, 101, 125, 155, 193, 239, 295, 363, 447, 549, 575 }, - }, -}; - -const u8 var70057968[2][3][13] = { - { - { 3, 7, 11, 17, 23, 31, 41, 55, 73, 99, 131, 173, 191 }, - { 3, 7, 11, 17, 25, 35, 47, 61, 79, 103, 135, 179, 191 }, - { 3, 7, 11, 17, 25, 35, 47, 61, 79, 103, 133, 173, 191 }, - }, { - { 3, 7, 11, 15, 21, 29, 39, 51, 65, 83, 105, 135, 191 }, - { 3, 7, 11, 15, 21, 27, 37, 49, 63, 79, 99, 125, 191 }, - { 3, 7, 11, 15, 21, 29, 41, 57, 77, 103, 137, 179, 191 }, - }, -}; - -struct mp3decthing2 { - s16 unk00[23]; - s16 unk2e[14]; -}; - -const struct mp3decthing2 var700579b8[6] = { - { { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576 }, { 0, 4, 8, 12, 18, 24, 32, 42, 56, 74, 100, 132, 174, 192 } }, - { { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 114, 136, 162, 194, 232, 278, 330, 394, 464, 540, 576 }, { 0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 136, 180, 192 } }, - { { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576 }, { 0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192 } }, - { { 0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 52, 62, 74, 90, 110, 134, 162, 196, 238, 288, 342, 418, 576 }, { 0, 4, 8, 12, 16, 22, 30, 40, 52, 66, 84, 106, 136, 192 } }, - { { 0, 4, 8, 12, 16, 20, 24, 30, 36, 42, 50, 60, 72, 88, 106, 128, 156, 190, 230, 276, 330, 384, 576 }, { 0, 4, 8, 12, 16, 22, 28, 38, 50, 64, 80, 100, 126, 192 } }, - { { 0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 54, 66, 82, 102, 126, 156, 194, 240, 296, 364, 448, 550, 576 }, { 0, 4, 8, 12, 16, 22, 30, 42, 58, 78, 104, 138, 180, 192 } }, -}; - -const u8 var70057b74[] = { 0, 6, 11, 16, 21, 0, 6, 12 }; - -const u8 var70057b7c[2][16] = { - { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 }, - { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 }, -}; - -const s16 var70057b9c[2][3][576] = { - { - { - 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, - 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 90, 91, - 78, 79, 80, 81, 82, 83, 96, 97, 84, 85, 86, 87, 88, 89, 102, 103, - 92, 93, 94, 95, 108, 109, 110, 111, 112, 113, 98, 99, 100, 101, 114, 115, - 116, 117, 118, 119, 104, 105, 106, 107, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 144, 145, 146, 147, 148, 149, 162, 163, 132, 133, 134, 135, - 136, 137, 150, 151, 152, 153, 154, 155, 168, 169, 138, 139, 140, 141, 142, 143, - 156, 157, 158, 159, 160, 161, 174, 175, 164, 165, 166, 167, 180, 181, 182, 183, - 184, 185, 198, 199, 200, 201, 202, 203, 216, 217, 170, 171, 172, 173, 186, 187, - 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 222, 223, 176, 177, 178, 179, - 192, 193, 194, 195, 196, 197, 210, 211, 212, 213, 214, 215, 228, 229, 218, 219, - 220, 221, 234, 235, 236, 237, 238, 239, 252, 253, 254, 255, 256, 257, 270, 271, - 272, 273, 274, 275, 288, 289, 290, 291, 224, 225, 226, 227, 240, 241, 242, 243, - 244, 245, 258, 259, 260, 261, 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, - 296, 297, 230, 231, 232, 233, 246, 247, 248, 249, 250, 251, 264, 265, 266, 267, - 268, 269, 282, 283, 284, 285, 286, 287, 300, 301, 302, 303, 292, 293, 306, 307, - 308, 309, 310, 311, 324, 325, 326, 327, 328, 329, 342, 343, 344, 345, 346, 347, - 360, 361, 362, 363, 364, 365, 378, 379, 380, 381, 382, 383, 298, 299, 312, 313, - 314, 315, 316, 317, 330, 331, 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, - 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 304, 305, 318, 319, - 320, 321, 322, 323, 336, 337, 338, 339, 340, 341, 354, 355, 356, 357, 358, 359, - 372, 373, 374, 375, 376, 377, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 450, 451, - 452, 453, 454, 455, 468, 469, 470, 471, 472, 473, 486, 487, 488, 489, 490, 491, - 504, 505, 506, 507, 508, 509, 402, 403, 404, 405, 406, 407, 420, 421, 422, 423, - 424, 425, 438, 439, 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, - 476, 477, 478, 479, 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, - 408, 409, 410, 411, 412, 413, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, - 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, - 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, - 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, 528, 529, 530, 531, - 532, 533, 546, 547, 548, 549, 550, 551, 564, 565, 566, 567, 568, 569, 534, 535, - 536, 537, 538, 539, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575, - }, { - 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, - 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 72, 73, 60, 61, - 62, 63, 64, 65, 78, 79, 66, 67, 68, 69, 70, 71, 84, 85, 74, 75, - 76, 77, 90, 91, 92, 93, 94, 95, 80, 81, 82, 83, 96, 97, 98, 99, - 100, 101, 86, 87, 88, 89, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 126, 127, 128, 129, 130, 131, 114, 115, 116, 117, 118, 119, 132, 133, - 134, 135, 136, 137, 120, 121, 122, 123, 124, 125, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 162, 163, 164, 165, 166, 167, 180, 181, 150, 151, - 152, 153, 154, 155, 168, 169, 170, 171, 172, 173, 186, 187, 156, 157, 158, 159, - 160, 161, 174, 175, 176, 177, 178, 179, 192, 193, 182, 183, 184, 185, 198, 199, - 200, 201, 202, 203, 216, 217, 218, 219, 220, 221, 234, 235, 188, 189, 190, 191, - 204, 205, 206, 207, 208, 209, 222, 223, 224, 225, 226, 227, 240, 241, 194, 195, - 196, 197, 210, 211, 212, 213, 214, 215, 228, 229, 230, 231, 232, 233, 246, 247, - 236, 237, 238, 239, 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, - 288, 289, 290, 291, 292, 293, 306, 307, 242, 243, 244, 245, 258, 259, 260, 261, - 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, 296, 297, 298, 299, 312, 313, - 248, 249, 250, 251, 264, 265, 266, 267, 268, 269, 282, 283, 284, 285, 286, 287, - 300, 301, 302, 303, 304, 305, 318, 319, 308, 309, 310, 311, 324, 325, 326, 327, - 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 378, 379, - 380, 381, 382, 383, 396, 397, 398, 399, 314, 315, 316, 317, 330, 331, 332, 333, - 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, 384, 385, - 386, 387, 388, 389, 402, 403, 404, 405, 320, 321, 322, 323, 336, 337, 338, 339, - 340, 341, 354, 355, 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 390, 391, - 392, 393, 394, 395, 408, 409, 410, 411, 400, 401, 414, 415, 416, 417, 418, 419, - 432, 433, 434, 435, 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, - 472, 473, 486, 487, 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 522, 523, - 524, 525, 526, 527, 406, 407, 420, 421, 422, 423, 424, 425, 438, 439, 440, 441, - 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, 492, 493, - 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, 528, 529, 530, 531, 532, 533, - 412, 413, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, 448, 449, 462, 463, - 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, 500, 501, 502, 503, - 516, 517, 518, 519, 520, 521, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 558, 559, 560, 561, 562, 563, 546, 547, 548, 549, 550, 551, 564, 565, - 566, 567, 568, 569, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575, - }, { - 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, - 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 72, 73, 60, 61, - 62, 63, 64, 65, 78, 79, 66, 67, 68, 69, 70, 71, 84, 85, 74, 75, - 76, 77, 90, 91, 92, 93, 94, 95, 80, 81, 82, 83, 96, 97, 98, 99, - 100, 101, 86, 87, 88, 89, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 126, 127, 128, 129, 130, 131, 114, 115, 116, 117, 118, 119, 132, 133, - 134, 135, 136, 137, 120, 121, 122, 123, 124, 125, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 162, 163, 164, 165, 166, 167, 180, 181, 150, 151, - 152, 153, 154, 155, 168, 169, 170, 171, 172, 173, 186, 187, 156, 157, 158, 159, - 160, 161, 174, 175, 176, 177, 178, 179, 192, 193, 182, 183, 184, 185, 198, 199, - 200, 201, 202, 203, 216, 217, 218, 219, 220, 221, 234, 235, 188, 189, 190, 191, - 204, 205, 206, 207, 208, 209, 222, 223, 224, 225, 226, 227, 240, 241, 194, 195, - 196, 197, 210, 211, 212, 213, 214, 215, 228, 229, 230, 231, 232, 233, 246, 247, - 236, 237, 238, 239, 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, - 288, 289, 290, 291, 292, 293, 306, 307, 242, 243, 244, 245, 258, 259, 260, 261, - 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, 296, 297, 298, 299, 312, 313, - 248, 249, 250, 251, 264, 265, 266, 267, 268, 269, 282, 283, 284, 285, 286, 287, - 300, 301, 302, 303, 304, 305, 318, 319, 308, 309, 310, 311, 324, 325, 326, 327, - 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 378, 379, - 380, 381, 382, 383, 396, 397, 314, 315, 316, 317, 330, 331, 332, 333, 334, 335, - 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, - 388, 389, 402, 403, 320, 321, 322, 323, 336, 337, 338, 339, 340, 341, 354, 355, - 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 390, 391, 392, 393, 394, 395, - 408, 409, 398, 399, 400, 401, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, - 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, 472, 473, 486, 487, - 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 404, 405, 406, 407, 420, 421, - 422, 423, 424, 425, 438, 439, 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, - 474, 475, 476, 477, 478, 479, 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, - 514, 515, 410, 411, 412, 413, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, - 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, - 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, - 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, 528, 529, 530, 531, - 532, 533, 546, 547, 548, 549, 550, 551, 564, 565, 566, 567, 568, 569, 534, 535, - 536, 537, 538, 539, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575, - }, - }, { - { - 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, - 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, - 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 44, 45, 48, 49, 50, 51, - 40, 41, 54, 55, 56, 57, 46, 47, 60, 61, 62, 63, 52, 53, 66, 67, - 68, 69, 58, 59, 72, 73, 74, 75, 76, 77, 64, 65, 78, 79, 80, 81, - 82, 83, 70, 71, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 108, 109, 110, 111, 96, 97, 98, 99, 100, 101, 114, 115, 116, 117, 102, 103, - 104, 105, 106, 107, 120, 121, 122, 123, 112, 113, 126, 127, 128, 129, 130, 131, - 144, 145, 146, 147, 118, 119, 132, 133, 134, 135, 136, 137, 150, 151, 152, 153, - 124, 125, 138, 139, 140, 141, 142, 143, 156, 157, 158, 159, 148, 149, 162, 163, - 164, 165, 166, 167, 180, 181, 182, 183, 184, 185, 154, 155, 168, 169, 170, 171, - 172, 173, 186, 187, 188, 189, 190, 191, 160, 161, 174, 175, 176, 177, 178, 179, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 216, 217, 218, 219, - 220, 221, 234, 235, 236, 237, 238, 239, 204, 205, 206, 207, 208, 209, 222, 223, - 224, 225, 226, 227, 240, 241, 242, 243, 244, 245, 210, 211, 212, 213, 214, 215, - 228, 229, 230, 231, 232, 233, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 270, 271, 272, 273, 274, 275, 288, 289, 290, 291, 292, 293, 306, 307, - 308, 309, 258, 259, 260, 261, 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, - 296, 297, 298, 299, 312, 313, 314, 315, 264, 265, 266, 267, 268, 269, 282, 283, - 284, 285, 286, 287, 300, 301, 302, 303, 304, 305, 318, 319, 320, 321, 310, 311, - 324, 325, 326, 327, 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, - 364, 365, 378, 379, 380, 381, 382, 383, 396, 397, 398, 399, 316, 317, 330, 331, - 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, - 384, 385, 386, 387, 388, 389, 402, 403, 404, 405, 322, 323, 336, 337, 338, 339, - 340, 341, 354, 355, 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 390, 391, - 392, 393, 394, 395, 408, 409, 410, 411, 400, 401, 414, 415, 416, 417, 418, 419, - 432, 433, 434, 435, 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, - 472, 473, 486, 487, 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 522, 523, - 524, 525, 526, 527, 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, - 406, 407, 420, 421, 422, 423, 424, 425, 438, 439, 440, 441, 442, 443, 456, 457, - 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, 492, 493, 494, 495, 496, 497, - 510, 511, 512, 513, 514, 515, 528, 529, 530, 531, 532, 533, 546, 547, 548, 549, - 550, 551, 564, 565, 566, 567, 568, 569, 412, 413, 426, 427, 428, 429, 430, 431, - 444, 445, 446, 447, 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, - 484, 485, 498, 499, 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 534, 535, - 536, 537, 538, 539, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575, - }, { - 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, - 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, - 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 44, 45, 48, 49, 50, 51, - 40, 41, 54, 55, 56, 57, 46, 47, 60, 61, 62, 63, 52, 53, 66, 67, - 68, 69, 58, 59, 72, 73, 74, 75, 64, 65, 78, 79, 80, 81, 70, 71, - 84, 85, 86, 87, 76, 77, 90, 91, 92, 93, 94, 95, 108, 109, 82, 83, - 96, 97, 98, 99, 100, 101, 114, 115, 88, 89, 102, 103, 104, 105, 106, 107, - 120, 121, 110, 111, 112, 113, 126, 127, 128, 129, 130, 131, 144, 145, 116, 117, - 118, 119, 132, 133, 134, 135, 136, 137, 150, 151, 122, 123, 124, 125, 138, 139, - 140, 141, 142, 143, 156, 157, 146, 147, 148, 149, 162, 163, 164, 165, 166, 167, - 180, 181, 182, 183, 152, 153, 154, 155, 168, 169, 170, 171, 172, 173, 186, 187, - 188, 189, 158, 159, 160, 161, 174, 175, 176, 177, 178, 179, 192, 193, 194, 195, - 184, 185, 198, 199, 200, 201, 202, 203, 216, 217, 218, 219, 220, 221, 234, 235, - 190, 191, 204, 205, 206, 207, 208, 209, 222, 223, 224, 225, 226, 227, 240, 241, - 196, 197, 210, 211, 212, 213, 214, 215, 228, 229, 230, 231, 232, 233, 246, 247, - 236, 237, 238, 239, 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, - 288, 289, 290, 291, 242, 243, 244, 245, 258, 259, 260, 261, 262, 263, 276, 277, - 278, 279, 280, 281, 294, 295, 296, 297, 248, 249, 250, 251, 264, 265, 266, 267, - 268, 269, 282, 283, 284, 285, 286, 287, 300, 301, 302, 303, 292, 293, 306, 307, - 308, 309, 310, 311, 324, 325, 326, 327, 328, 329, 342, 343, 344, 345, 346, 347, - 360, 361, 362, 363, 364, 365, 298, 299, 312, 313, 314, 315, 316, 317, 330, 331, - 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, - 304, 305, 318, 319, 320, 321, 322, 323, 336, 337, 338, 339, 340, 341, 354, 355, - 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 396, 397, 398, 399, 400, 401, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, - 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, 472, 473, 486, 487, - 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 522, 523, 524, 525, 526, 527, - 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, 384, 385, 386, 387, - 388, 389, 402, 403, 404, 405, 406, 407, 420, 421, 422, 423, 424, 425, 438, 439, - 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, - 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, 528, 529, 530, 531, - 532, 533, 546, 547, 548, 549, 550, 551, 564, 565, 566, 567, 568, 569, 390, 391, - 392, 393, 394, 395, 408, 409, 410, 411, 412, 413, 426, 427, 428, 429, 430, 431, - 444, 445, 446, 447, 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, - 484, 485, 498, 499, 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 534, 535, - 536, 537, 538, 539, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575, - }, { - 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, - 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, - 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 44, 45, 48, 49, 50, 51, - 40, 41, 54, 55, 56, 57, 46, 47, 60, 61, 62, 63, 52, 53, 66, 67, - 68, 69, 58, 59, 72, 73, 74, 75, 76, 77, 64, 65, 78, 79, 80, 81, - 82, 83, 70, 71, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 108, 109, 110, 111, 112, 113, 96, 97, 98, 99, 100, 101, 114, 115, 116, 117, - 118, 119, 102, 103, 104, 105, 106, 107, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 144, 145, 146, 147, 148, 149, 162, 163, 164, 165, 132, 133, - 134, 135, 136, 137, 150, 151, 152, 153, 154, 155, 168, 169, 170, 171, 138, 139, - 140, 141, 142, 143, 156, 157, 158, 159, 160, 161, 174, 175, 176, 177, 166, 167, - 180, 181, 182, 183, 184, 185, 198, 199, 200, 201, 202, 203, 216, 217, 218, 219, - 220, 221, 172, 173, 186, 187, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, - 222, 223, 224, 225, 226, 227, 178, 179, 192, 193, 194, 195, 196, 197, 210, 211, - 212, 213, 214, 215, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, 288, 289, 290, 291, - 292, 293, 306, 307, 240, 241, 242, 243, 244, 245, 258, 259, 260, 261, 262, 263, - 276, 277, 278, 279, 280, 281, 294, 295, 296, 297, 298, 299, 312, 313, 246, 247, - 248, 249, 250, 251, 264, 265, 266, 267, 268, 269, 282, 283, 284, 285, 286, 287, - 300, 301, 302, 303, 304, 305, 318, 319, 308, 309, 310, 311, 324, 325, 326, 327, - 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 378, 379, - 380, 381, 382, 383, 396, 397, 398, 399, 400, 401, 314, 315, 316, 317, 330, 331, - 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, - 384, 385, 386, 387, 388, 389, 402, 403, 404, 405, 406, 407, 320, 321, 322, 323, - 336, 337, 338, 339, 340, 341, 354, 355, 356, 357, 358, 359, 372, 373, 374, 375, - 376, 377, 390, 391, 392, 393, 394, 395, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 450, 451, 452, 453, 454, 455, - 468, 469, 470, 471, 472, 473, 486, 487, 488, 489, 490, 491, 504, 505, 506, 507, - 508, 509, 522, 523, 524, 525, 526, 527, 420, 421, 422, 423, 424, 425, 438, 439, - 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, - 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, 528, 529, 530, 531, - 532, 533, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, 448, 449, 462, 463, - 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, 500, 501, 502, 503, - 516, 517, 518, 519, 520, 521, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 558, 559, 560, 561, 562, 563, 546, 547, 548, 549, 550, 551, 564, 565, - 566, 567, 568, 569, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575, - }, - }, -}; - -const f32 var7005969c[] = { - -0.51449573040009, - -0.47173196077347, - -0.31337743997574, - -0.18191319704056, - -0.094574190676212, - -0.040965583175421, - -0.01419856864959, - -0.0036999746225774, -}; - -const f32 var700596bc[] = { - 0.85749292373657, - 0.88174200057983, - 0.94962865114212, - 0.9833145737648, - 0.99551779031754, - 0.99916058778763, - 0.99989920854568, - 0.99999314546585, -}; - -const u32 var700596dc[2][15] = { - { 0, 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000 }, - { 0, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000 }, -}; - -const u32 var70059754[2][4] = { - { 22050, 24000, 16000, 22050 }, - { 44100, 48000, 32000, 44100 }, -}; - -const u32 var70059774[] = {0xbd03ba34}; -const u32 var70059778[] = {0x3dd41398}; -const u32 var7005977c[] = {0xbe3aec8d}; -const u32 var70059780[] = {0x3e8890b4}; -const u32 var70059784[] = {0xbeb50508}; -const u32 var70059788[] = {0x3ee17918}; -const u32 var7005978c[] = {0xbf0649c3}; -const u32 var70059790[] = {0x3f1a8273}; -const u32 var70059794[] = {0xbf2cc954}; -const u32 var70059798[] = {0x3f3c902e}; -const u32 var7005979c[] = {0xbf495c64}; -const u32 var700597a0[] = {0x3f52ca58}; -const u32 var700597a4[] = {0xbf5890a3}; -const u32 var700597a8[] = {0x3f5a8284}; -const u32 var700597ac[] = {0xbf5890a3}; -const u32 var700597b0[] = {0x3f52ca47}; -const u32 var700597b4[] = {0xbf495c64}; -const u32 var700597b8[] = {0x3f3c902e}; -const u32 var700597bc[] = {0xbf2cc954}; -const u32 var700597c0[] = {0x3f1a8273}; -const u32 var700597c4[] = {0xbf0649d4}; -const u32 var700597c8[] = {0x3ee1793a}; -const u32 var700597cc[] = {0xbeb504e6}; -const u32 var700597d0[] = {0x3e8890b4}; -const u32 var700597d4[] = {0xbe3aecd0}; -const u32 var700597d8[] = {0x3dd41398}; -const u32 var700597dc[] = {0xbd03ba34}; -const u32 var700597e0[] = {0xbcf168f9}; -const u32 var700597e4[] = {0x3da2bb66}; -const u32 var700597e8[] = {0xbdee2b06}; -const u32 var700597ec[] = {0x3e0e2ef5}; -const u32 var700597f0[] = {0xbe15f5f1}; -const u32 var700597f4[] = {0x3e0e2ef5}; -const u32 var700597f8[] = {0xbdee2b06}; -const u32 var700597fc[] = {0x3da2bb66}; -const u32 var70059800[] = {0xbcf168f9}; -const u32 var70059804[] = {0xbd03ba34}; -const u32 var70059808[] = {0x3dd41398}; -const u32 var7005980c[] = {0xbe3aec8d}; -const u32 var70059810[] = {0x3e8890b4}; -const u32 var70059814[] = {0xbeb50508}; -const u32 var70059818[] = {0x3ee17918}; -const u32 var7005981c[] = {0xbf0649c3}; -const u32 var70059820[] = {0x3f1a8273}; -const u32 var70059824[] = {0xbf2cc954}; -const u32 var70059828[] = {0x3f3c902e}; -const u32 var7005982c[] = {0xbf495c64}; -const u32 var70059830[] = {0x3f52ca58}; -const u32 var70059834[] = {0xbf5890a3}; -const u32 var70059838[] = {0x3f5a8284}; -const u32 var7005983c[] = {0xbf5890a3}; -const u32 var70059840[] = {0x3f52ca47}; -const u32 var70059844[] = {0xbf495c64}; -const u32 var70059848[] = {0x3f3c902e}; -const u32 var7005984c[] = {0xbf2cf377}; -const u32 var70059850[] = {0x3f1bd7c3}; -const u32 var70059854[] = {0xbf098c7e}; -const u32 var70059858[] = {0x3eec6a5d}; -const u32 var7005985c[] = {0xbec3ef07}; -const u32 var70059860[] = {0x3e99f623}; -const u32 var70059864[] = {0xbe5bbcf5}; -const u32 var70059868[] = {0x3df6f7e4}; -const u32 var7005986c[] = {0xbd0dbf05}; -const u32 var70059870[] = {0xbcd987c6}; -const u32 var70059874[] = {0x3d4c985f}; -const u32 var70059878[] = {0xbce76ea4}; -const u32 var7005987c[] = {0x00000000}; -const u32 var70059880[] = {0x00000000}; -const u32 var70059884[] = {0x00000000}; -const u32 var70059888[] = {0x00000000}; -const u32 var7005988c[] = {0x00000000}; -const u32 var70059890[] = {0x00000000}; -const u32 var70059894[] = {0xbdd41398}; -const u32 var70059898[] = {0x3eb50508}; -const u32 var7005989c[] = {0xbf1a8273}; -const u32 var700598a0[] = {0x3f495c64}; -const u32 var700598a4[] = {0xbf5a8284}; -const u32 var700598a8[] = {0x3f495c64}; -const u32 var700598ac[] = {0xbf1a8273}; -const u32 var700598b0[] = {0x3eb504e6}; -const u32 var700598b4[] = {0xbdd41398}; -const u32 var700598b8[] = {0xbda2bb66}; -const u32 var700598bc[] = {0x3e15f5f1}; -const u32 var700598c0[] = {0xbda2bb66}; -const u32 var700598c4[] = {0x00000000}; -const u32 var700598c8[] = {0x00000000}; -const u32 var700598cc[] = {0x00000000}; -const u32 var700598d0[] = {0x00000000}; -const u32 var700598d4[] = {0x00000000}; -const u32 var700598d8[] = {0x00000000}; -const u32 var700598dc[] = {0x00000000}; -const u32 var700598e0[] = {0x00000000}; -const u32 var700598e4[] = {0x00000000}; -const u32 var700598e8[] = {0x00000000}; -const u32 var700598ec[] = {0x00000000}; -const u32 var700598f0[] = {0x00000000}; -const u32 var700598f4[] = {0x00000000}; -const u32 var700598f8[] = {0x00000000}; -const u32 var700598fc[] = {0x00000000}; -const u32 var70059900[] = {0x00000000}; -const u32 var70059904[] = {0x00000000}; -const u32 var70059908[] = {0x00000000}; -const u32 var7005990c[] = {0x00000000}; -const u32 var70059910[] = {0x00000000}; -const u32 var70059914[] = {0x00000000}; -const u32 var70059918[] = {0x00000000}; -const u32 var7005991c[] = {0x00000000}; -const u32 var70059920[] = {0x00000000}; -const u32 var70059924[] = {0x00000000}; -const u32 var70059928[] = {0x00000000}; -const u32 var7005992c[] = {0x00000000}; -const u32 var70059930[] = {0x00000000}; -const u32 var70059934[] = {0x00000000}; -const u32 var70059938[] = {0x00000000}; -const u32 var7005993c[] = {0xbe027d89}; -const u32 var70059940[] = {0x3ec24207}; -const u32 var70059944[] = {0xbf1bb1d1}; -const u32 var70059948[] = {0x3f4ae7b4}; -const u32 var7005994c[] = {0xbf6a7d67}; -const u32 var70059950[] = {0x3f77cb2e}; -const u32 var70059954[] = {0xbf7426cc}; -const u32 var70059958[] = {0x3f6c8366}; -const u32 var7005995c[] = {0xbf631327}; -const u32 var70059960[] = {0x3f57e879}; -const u32 var70059964[] = {0xbf4b192f}; -const u32 var70059968[] = {0x3f3cbe2f}; -const u32 var7005996c[] = {0xbf2cc954}; -const u32 var70059970[] = {0x3f1a8273}; -const u32 var70059974[] = {0xbf0649d4}; -const u32 var70059978[] = {0x3ee1793a}; -const u32 var7005997c[] = {0xbeb504e6}; -const u32 var70059980[] = {0x3e8890b4}; -const u32 var70059984[] = {0xbe3aecd0}; -const u32 var70059988[] = {0x3dd41398}; -const u32 var7005998c[] = {0xbd03ba34}; -const u32 var70059990[] = {0xbcf168f9}; -const u32 var70059994[] = {0x3da2bb66}; -const u32 var70059998[] = {0xbdee2b06}; -const u32 var7005999c[] = {0x3e0e2ef5}; -const u32 var700599a0[] = {0xbe15f5f1}; -const u32 var700599a4[] = {0x3e0e2ef5}; -const u32 var700599a8[] = {0xbdee2b06}; -const u32 var700599ac[] = {0x3da2bb66}; -const u32 var700599b0[] = {0xbcf168f9}; -const u32 var700599b4[] = {0xbe327e95}; -const u32 var700599b8[] = {0xbf0483ed}; -const u32 var700599bc[] = {0xbf586174}; -const u32 var700599c0[] = {0xbf92d5e9}; -const u32 var700599c4[] = {0xbfb504f7}; -const u32 var700599c8[] = {0xbfd1b3f2}; -const u32 var700599cc[] = {0xbfe803cd}; -const u32 var700599d0[] = {0xbff746ed}; -const u32 var700599d4[] = {0xbfff069a}; -const u32 var700599d8[] = {0x3e327e95}; -const u32 var700599dc[] = {0x3f0483ed}; -const u32 var700599e0[] = {0x3f586174}; -const u32 var700599e4[] = {0x3f92d5e9}; -const u32 var700599e8[] = {0x3fb504f7}; -const u32 var700599ec[] = {0x3fd1b3f2}; -const u32 var700599f0[] = {0x3fe803cd}; -const u32 var700599f4[] = {0x3ff746ed}; -const u32 var700599f8[] = {0x3fff069a}; -const u32 var700599fc[] = {0xbe327e95}; -const u32 var70059a00[] = {0xbf0483ed}; -const u32 var70059a04[] = {0xbf586174}; -const u32 var70059a08[] = {0xbf92d5e9}; -const u32 var70059a0c[] = {0xbfb504f7}; -const u32 var70059a10[] = {0xbfd1b3f2}; -const u32 var70059a14[] = {0xbfe803cd}; -const u32 var70059a18[] = {0xbff746ed}; -const u32 var70059a1c[] = {0xbfff069a}; -const u32 var70059a20[] = {0x3e327e95}; -const u32 var70059a24[] = {0x3f0483ed}; -const u32 var70059a28[] = {0x3f586174}; -const u32 var70059a2c[] = {0x3f92d5e9}; -const u32 var70059a30[] = {0x3fb504f7}; -const u32 var70059a34[] = {0x3fd1b3f2}; -const u32 var70059a38[] = {0x3fe803cd}; -const u32 var70059a3c[] = {0x3ff746ed}; -const u32 var70059a40[] = {0x3fff069a}; -const u32 var70059a44[] = {0xbf0483ed}; -const u32 var70059a48[] = {0xbfb504d5}; -const u32 var70059a4c[] = {0xbff746dc}; -const u32 var70059a50[] = {0x3f0483ed}; -const u32 var70059a54[] = {0x3fb504d5}; -const u32 var70059a58[] = {0x3ff746dc}; -const u32 var70059a5c[] = {0x00000000}; -const u32 var70059a60[] = {0x00000000}; -const u32 var70059a64[] = {0x00000000}; -const u32 var70059a68[] = {0x00000000}; -const u32 var70059a6c[] = {0x00000000}; -const u32 var70059a70[] = {0x00000000}; -const u32 var70059a74[] = {0x00000000}; -const u32 var70059a78[] = {0x00000000}; -const u32 var70059a7c[] = {0x00000000}; -const u32 var70059a80[] = {0x00000000}; -const u32 var70059a84[] = {0x00000000}; -const u32 var70059a88[] = {0x00000000}; -const u32 var70059a8c[] = {0xbe327e95}; -const u32 var70059a90[] = {0xbf0483ed}; -const u32 var70059a94[] = {0xbf586174}; -const u32 var70059a98[] = {0xbf92d5e9}; -const u32 var70059a9c[] = {0xbfb504f7}; -const u32 var70059aa0[] = {0xbfd1b3f2}; -const u32 var70059aa4[] = {0xbfe803cd}; -const u32 var70059aa8[] = {0xbff746ed}; -const u32 var70059aac[] = {0xbfff069a}; -const u32 var70059ab0[] = {0x3e327e95}; -const u32 var70059ab4[] = {0x3f0483ed}; -const u32 var70059ab8[] = {0x3f586174}; -const u32 var70059abc[] = {0x3f92d5e9}; -const u32 var70059ac0[] = {0x3fb504f7}; -const u32 var70059ac4[] = {0x3fd1b3f2}; -const u32 var70059ac8[] = {0x3fe803cd}; -const u32 var70059acc[] = {0x3ff746ed}; -const u32 var70059ad0[] = {0x3fff069a}; - -extern struct mp3decfourbytes *var8009c650[]; -extern f32 *var8009c6d8; -extern f32 *var8009c6dc; - -bool mp3decInit(void) -{ - s32 i; - s32 sp268; - s32 sp264; - s32 sp260 = 1; - s32 sp25c; - u8 *sp258; - struct mp3decthing *sp254; - struct mp3decfourbytes *sp250; - const u8 sp248[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 }; - s32 sp244; - u8 sp243; - s32 sp23c; - s32 sp238; - s32 sp234; - s32 sp230; - s32 sp22c; - s32 sp228; - s16 sp28[256]; - s32 sp24; - - sp234 = 0; - - for (i = 0; i < 36; i++) { - sine_block[0][i] = sinf((i + 0.5f) * 0.087266460061073f); - } - - for (i = 0; i < 18; i++) { - sine_block[1][i] = sinf((i + 0.5f) * 0.087266460061073f); - } - - for (i = 18; i < 24; i++) { - sine_block[1][i] = 1.0f; - } - - for (i = 24; i < 30; i++) { - sine_block[1][i] = sinf((i + 0.5f - 18.0f) * 0.26179939508438f); - } - - for (i = 30; i < 36; i++) { - sine_block[1][i] = 0.0f; - } - - for (i = 0; i < 6; i++) { - sine_block[3][i] = 0.0f; - } - - for (i = 6; i < 12; i++) { - sine_block[3][i] = sinf((i + 0.5f - 6.0f) * 0.26179939508438f); - } - - for (i = 12; i < 18; i++) { - sine_block[3][i] = 1.0f; - } - - for (i = 18; i < 36; i++) { - sine_block[3][i] = sinf((i + 0.5f) * 0.087266460061073f); - } - - if (var8009c640 == NULL) { - return false; - } - - bzero(var8009c640, 10500 * sizeof(struct mp3decfourbytes)); - - for (sp264 = 0; sp264 < 34; sp264++) { - sp254 = var8005f670[sp264]; - - if (sp254 == NULL) { - var8009c650[sp264] = NULL; - continue; - } - - var8009c650[sp264] = &var8009c640[sp234]; - - sp250 = var8009c650[sp264]; - - for (sp268 = 0; sp268 < 10500; sp268++) { - sp250[sp268].unk02 = -1; - sp250[sp268].unk03 = -1; - } - - sp230 = 1; - sp228 = 1; - bzero(sp28, sizeof(sp28)); - sp260 = 1; - - while (sp228) { - sp228 = 0; - - for (sp22c = 0, sp254 = var8005f670[sp264]; sp254->unk00 != 100; sp254++, sp22c++) { - sp25c = sp28[sp22c]; - - if (sp230 <= sp254->unk02) { - sp258 = &sp250[sp25c].bytes[sp254->unk04 & 1 << (sp230 - 1) ? 1 : 0]; - - if (*sp258) { - sp25c = sp28[sp22c] + *sp258; - } else { - *sp258 = sp260 - sp25c; - sp25c = sp260++; - } - - if (sp254->unk02 == sp230) { - sp250[sp25c].unk02 = sp254->unk00; - sp250[sp25c].unk03 = sp254->unk01; - } else { - sp228++; - } - - sp28[sp22c] = sp25c; - } - } - - sp230++; - } - - sp234 += sp260; - - for (sp254 = var8005f670[sp264]; sp254->unk00 != 100; sp254++) { - sp244 = sp254->unk02 < 8 ? sp254->unk02 : 8; - sp243 = 0; - - for (i = 0; i < sp244; i++) { - if (sp254->unk04 & (1 << i)) { - sp243 |= sp248[i]; - } - } - - if (sp254->unk02 >= 9) { - var8005f6fc[sp264 * 256 + sp243] = 0; - continue; - } - - sp23c = 256 >> sp244; - sp238 = (sp254->unk01 * 16) | sp254->unk00; - - for (i = 0; i < sp23c; i++) { - sp24 = sp243 | i; - var8005f6f8[((sp264 * 256) + (sp243 | i))] = sp238; - var8005f6fc[((sp264 * 256) + (sp243 | i))] = sp244; - } - } - } - - var8009c648 = var8009c644; - - if (var8009c648 == NULL) { - return false; - } - - for (i = 0; i < 8192; i++) { - var8009c648[i] = func00045ed0(i, 1.3333333730698f); - } - - for (i = 0; i < 256; i++) { - var8009c6d8[i] = func00045ed0(2.0f, i * -0.5f); - var8009c6dc[i] = func00045ed0(2.0f, i * -2.0f); - } - - return true; -} - -bool mp3dec00040164(struct asistream *stream, u32 gr, u32 ch) -{ - s32 sp1bc; - s32 sp1b8; - s32 sp1b4; - s32 sp1b0; - - const s32 sp158[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0, - }; - - f32 sp100[22]; - f32 sp64[3][13]; - f32 sp60; - s32 sfb; - s32 sp58; - s32 scale; - s32 sp50; - s32 sp4c; - s32 sp48; - s32 sp44; - f32 *sp40; - s16 *sp3c; - u8 *sp38; - s32 sp34; - s32 sp30; - s32 window_switching; - s32 sp28; - f32 *sp24; - - sp1bc = stream->samplerateindex + stream->version * 3; - - if (stream->window_switching[gr][ch] && stream->block_type[gr][ch] == 2) { - if (stream->mixed_block_flag[gr][ch]) { - sp1b8 = var700579b8[sp1bc].unk00[1]; - } else { - sp1b8 = var700579b8[sp1bc].unk2e[1] * 3; - sp1b0 = var700579b8[sp1bc].unk2e[1]; - sp1b4 = 0; - } - } else { - sp1b8 = var700579b8[sp1bc].unk00[1]; - } - - sp60 = func00045ed0(2, (stream->global_gain[gr][ch] - 210.0f) * 0.25f); - scale = stream->scalefac_scale[gr][ch]; - - for (sfb = 0; sfb < 22; sfb++) { - sp4c = (stream->scalefac[gr][ch].l[sfb] + stream->preflag[gr][ch] * sp158[sfb]) * (scale + 1); - sp100[sfb] = var8009c6d8[sp4c] * sp60; - } - - for (sp58 = 0; sp58 < 3; sp58++) { - for (sfb = 0; sfb < 13; sfb++) { - sp50 = stream->subblock_gain[gr][ch][sp58]; - sp4c = stream->scalefac[gr][ch].s[sp58][sfb] * (scale + 1); - sp64[sp58][sfb] = sp60 * var8009c6dc[sp50] * var8009c6d8[sp4c]; - } - } - - sfb = 0; - sp48 = 0; - sp44 = stream->unk465c[ch]; - sp40 = stream->unk4664[ch][0].unk00; - sp3c = stream->unk3f94[ch]; - sp38 = stream->unk4418[ch]; - sp34 = stream->block_type[gr][ch] == 2 && stream->mixed_block_flag[gr][ch] == 0; - sp30 = stream->block_type[gr][ch] == 2 && stream->mixed_block_flag[gr][ch] != 0; - window_switching = stream->window_switching[gr][ch]; - - while (sp48 < sp44) { - if (sp1b8 > sp44) { - sp1b8 = sp44; - } - - if (window_switching) { - if (sp34 || (sp30 && sp48 >= 36)) { - sp58 = (sp48 - sp1b4) / sp1b0; - sp28 = sp1b4 + sp1b0; - } - } - - while (sp48 < sp1b8) { - if (window_switching && (sp34 || (sp30 && sp48 >= 36))) { - if (sp48 >= sp28) { - sp28 += sp1b0; - sp58++; - } - - sp24 = sp64[sp58]; - - if (*sp38++) { - *sp40++ = -(var8009c648[*sp3c++] * sp24[sfb]); - } else { - *sp40++ = var8009c648[*sp3c++] * sp24[sfb]; - } - } else { - if (*sp38++) { - *sp40++ = -(var8009c648[*sp3c++] * sp100[sfb]); - } else { - *sp40++ = var8009c648[*sp3c++] * sp100[sfb]; - } - } - - sp48++; - } - - if (stream->window_switching[gr][ch] && stream->block_type[gr][ch] == 2) { - if (stream->mixed_block_flag[gr][ch]) { - if (var700579b8[sp1bc].unk00[8] == sp48) { - sp1b8 = var700579b8[sp1bc].unk2e[4] * 3; - sfb = 3; - sp1b0 = var700579b8[sp1bc].unk2e[sfb + 1] - var700579b8[sp1bc].unk2e[sfb]; - sp1b4 = var700579b8[sp1bc].unk2e[sfb] * 3; - } else if (sp48 < var700579b8[sp1bc].unk00[8]) { - sp1b8 = var700579b8[sp1bc].unk00[++sfb + 1]; - } else { - sp1b8 = var700579b8[sp1bc].unk2e[++sfb + 1] * 3; - sp1b0 = var700579b8[sp1bc].unk2e[sfb + 1] - var700579b8[sp1bc].unk2e[sfb]; - sp1b4 = var700579b8[sp1bc].unk2e[sfb] * 3; - } - } else { - sp1b8 = var700579b8[sp1bc].unk2e[++sfb + 1] * 3; - sp1b0 = var700579b8[sp1bc].unk2e[sfb + 1] - var700579b8[sp1bc].unk2e[sfb]; - sp1b4 = var700579b8[sp1bc].unk2e[sfb] * 3; - } - } else { - sp1b8 = var700579b8[sp1bc].unk00[++sfb + 1]; - } - } - - if (sp48 < 576) { - bzero(sp40, stream->unk4660[ch] * 4); - return true; - } - - return true; -} - -bool mp3decUnpackScaleFac(struct asistream *stream, u32 gr, u32 ch) -{ - s32 i; - s32 sfb; - s32 window; - - if (stream->window_switching[gr][ch] != 0 && stream->block_type[gr][ch] == 2) { - if (stream->mixed_block_flag[gr][ch] != 0) { - for (sfb = 0; sfb < 8; sfb++) { - stream->scalefac[gr][ch].l[sfb] = - var70057b7c[0][stream->scalefac_compress[gr][ch]] - ? mp3utilGetBits(stream->unk1c, &stream->unk2020, var70057b7c[0][stream->scalefac_compress[gr][ch]]) - : 0; - } - - for (sfb = 3; sfb < 6; sfb++) { - for (window = 0; window < 3; window++) { - stream->scalefac[gr][ch].s[window][sfb] = - var70057b7c[0][stream->scalefac_compress[gr][ch]] - ? mp3utilGetBits(stream->unk1c, &stream->unk2020, var70057b7c[0][stream->scalefac_compress[gr][ch]]) - : 0; - } - } - - for (sfb = 6; sfb < 12; sfb++) { - for (window = 0; window < 3; window++) { - stream->scalefac[gr][ch].s[window][sfb] = - var70057b7c[1][stream->scalefac_compress[gr][ch]] - ? mp3utilGetBits(stream->unk1c, &stream->unk2020, var70057b7c[1][stream->scalefac_compress[gr][ch]]) - : 0; - } - } - } else { - for (i = 0; i < 2; i++) { - for (sfb = var70057b74[5 + i]; sfb < var70057b74[6 + i]; sfb++) { - for (window = 0; window < 3; window++) { - stream->scalefac[gr][ch].s[window][sfb] = - var70057b7c[i][stream->scalefac_compress[gr][ch]] - ? mp3utilGetBits(stream->unk1c, &stream->unk2020, var70057b7c[i][stream->scalefac_compress[gr][ch]]) - : 0; - } - } - } - } - - for (window = 0; window < 3; window++) { - stream->scalefac[gr][ch].s[window][12] = 0; - } - } else { - for (i = 0; i < 4; i++) { - if (stream->scfsi[ch][i] == 0 || gr == 0) { - for (sfb = var70057b74[i]; sfb < var70057b74[i + 1]; sfb++) { - stream->scalefac[gr][ch].l[sfb] = - var70057b7c[i < 2 ? 0 : 1][stream->scalefac_compress[gr][ch]] - ? mp3utilGetBits(stream->unk1c, &stream->unk2020, var70057b7c[i < 2 ? 0 : 1][stream->scalefac_compress[gr][ch]]) - : 0; - } - } else { - for (sfb = var70057b74[i]; sfb < var70057b74[1 + i]; sfb++) { - stream->scalefac[1][ch].l[sfb] = stream->scalefac[0][ch].l[sfb]; - } - } - } - - stream->scalefac[gr][ch].unk3d60 = 0; - } - - return true; -} - -bool mp3dec00041600(struct asistream *stream, u32 gr, u32 ch) -{ - const s32 sp70[2][3][3][4] = { - { - { { 6, 5, 5, 5 }, { 9, 9, 9, 9 }, { 6, 9, 9, 9 } }, - { { 6, 5, 7, 3 }, { 9, 9, 12, 6 }, { 6, 9, 12, 6 } }, - { { 11, 10, 0, 0 }, { 18, 18, 0, 0 }, { 15, 18, 0, 0 } }, - }, { - { { 7, 7, 7, 0 }, { 12, 12, 12, 0 }, { 6, 15, 12, 0 } }, - { { 6, 6, 6, 3 }, { 12, 9, 9, 6 }, { 6, 12, 9, 6 } }, - { { 8, 8, 5, 0 }, { 15, 12, 9, 0 }, { 6, 18, 9, 0 } }, - }, - }; - - s32 sp60[4]; - s32 compress; - u32 *preflag; - s32 mixed; - s32 block_type; - s32 window_switching; - s32 sp48; - s32 sp44; - s32 i; - s32 j; - s32 sp38; - s32 sp28[4]; - s32 sfb; - s32 sp20; - s32 sp1c; - - compress = stream->scalefac_compress[0][ch]; - preflag = &stream->preflag[0][ch]; - mixed = stream->mixed_block_flag[0][ch]; - block_type = stream->block_type[0][ch]; - window_switching = stream->window_switching[0][ch]; - - if ((stream->unk3bc4 != 1 && stream->unk3bc4 != 3) || ch != 1) { - sp48 = 0; - - if (compress < 400) { - sp60[0] = (compress >> 4) / 5; - sp60[1] = (compress >> 4) % 5; - sp60[2] = (compress % 16) >> 2; - sp60[3] = compress % 4; - *preflag = 0; - sp44 = 0; - } else if (compress >= 400 && compress < 500) { - sp60[0] = ((compress - 400) >> 2) / 5; - sp60[1] = ((compress - 400) >> 2) % 5; - sp60[2] = (compress - 400) % 4; - sp60[3] = 0; - *preflag = 0; - sp44 = 1; - } else if (compress >= 500 && compress < 512) { - sp60[0] = (compress - 500) / 3; - sp60[1] = (compress - 500) % 3; - sp60[2] = 0; - sp60[3] = 0; - *preflag = 1; - sp44 = 2; - } - } - - if (stream->unk3bc4 == 1 || stream->unk3bc4 == 3) { - if (ch == 1) { - stream->unk3ef8 = compress % 2; - sp38 = compress >> 1; - sp48 = 1; - - if (sp38 < 180) { - sp60[0] = sp38 / 36; - sp60[1] = (sp38 % 36) / 6; - sp60[2] = (sp38 % 36) % 6; - sp60[3] = 0; - *preflag = 0; - sp44 = 0; - } else if (sp38 >= 180 && sp38 < 244) { - sp60[0] = ((sp38 - 180) % 64) >> 4; - sp60[1] = ((sp38 - 180) % 16) >> 2; - sp60[2] = (sp38 - 180) % 4; - sp60[3] = 0; - *preflag = 0; - sp44 = 1; - } else if (sp38 >= 244 && sp38 < 255) { - sp60[0] = (sp38 - 244) / 3; - sp60[1] = (sp38 - 244) % 3; - sp60[2] = 0; - sp60[3] = 0; - *preflag = 0; - sp44 = 2; - } - } - } - - if (window_switching && block_type == 2) { - bcopy(sp70[sp48][sp44][mixed + 1], sp28, 0x10); - } else { - bcopy(sp70[sp48][sp44][0], sp28, 0x10); - } - - sfb = 0; - - if (!window_switching || (window_switching && block_type != 2)) { - for (i = 0; i < 4; i++) { - sp20 = sp60[i]; - sp1c = (1 << sp20) - 1; - - for (j = 0; j < sp28[i]; j++) { - stream->scalefac[0][ch].l[sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; - - if (ch != 0) { - stream->unk3efc[sfb] = sp1c; - } - - sfb++; - } - } - } else if (block_type == 2) { - if (mixed == 0) { - for (i = 0; i < 4; i++) { - sp20 = sp60[i]; - sp1c = (1 << sp20) - 1; - - for (j = 0; j < sp28[i]; j += 3) { - stream->scalefac[0][ch].s[0][sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; - stream->scalefac[0][ch].s[1][sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; - stream->scalefac[0][ch].s[2][sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; - - if (ch != 0) { - stream->unk3f14[sfb] = sp1c; - } - - sfb++; - } - } - } else { - sp20 = sp60[0]; - sp1c = (1 << sp20) - 1; - - for (j = 0; j < 6; j++) { - stream->scalefac[0][ch].l[sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; - - if (ch != 0) { - stream->unk3efc[sfb] = sp1c; - } - - sfb++; - } - - sp28[0] -= 6; - sfb = 3; - - for (i = 0; i < 4; i++) { - sp20 = sp60[i]; - sp1c = (1 << sp20) - 1; - - for (j = 0; j < sp28[i]; j += 3) { - stream->scalefac[0][ch].s[0][sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; - stream->scalefac[0][ch].s[1][sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; - stream->scalefac[0][ch].s[2][sfb] = sp20 ? mp3utilGetBits(stream->unk1c, &stream->unk2020, sp20) : 0; - - if (ch != 0) { - stream->unk3f14[sfb] = sp1c; - } - - sfb++; - } - } - } - } - - return true; -} - -bool mp3dec00042238(struct asistream *stream, u32 gr, u32 ch) -{ - s32 sp64 = stream->unk2020; - s32 sp60; - s32 sp54[3]; - const s16 *sp50; - const u8 *sp4c; - s32 sp48; - s16 *sp44; - u8 *sp40; - s32 i; - u32 sp38; - s32 sp34; - s32 sp30; - s32 sp2c; - s32 sp28; - - if (stream->version != VERSION_2) { - mp3decUnpackScaleFac(stream, gr, ch); - } else { - mp3dec00041600(stream, gr, ch); - } - - sp60 = stream->big_value[gr][ch] * 2; - sp50 = var70057860[stream->version][stream->samplerateindex]; - sp4c = var70057968[stream->version][stream->samplerateindex]; - - if (stream->window_switching[gr][ch] == 0 && stream->block_type[gr][ch] == 0) { - sp54[0] = sp50[stream->region0_count[gr][ch]] + 1; - - if (sp54[0] > sp60) { - sp54[0] = sp54[1] = sp60; - } else { - sp54[1] = sp50[stream->region0_count[gr][ch] + stream->region1_count[gr][ch] + 1] + 1; - - if (sp54[1] > sp60) { - sp54[1] = sp60; - } - } - } else { - if (stream->block_type[gr][ch] == 2 && stream->mixed_block_flag[gr][ch] == 0) { - sp54[0] = sp4c[2] * 3 + 3; - } else { - sp54[0] = sp50[7] + 1; - } - - if (sp54[0] > sp60) { - sp54[0] = sp60; - } - - sp54[1] = sp60; - } - - sp54[2] = sp60; - sp48 = 0; - sp44 = stream->unk3f94[ch]; - sp40 = stream->unk4418[ch]; - - for (i = 0; i < 3; i++) { - sp38 = stream->table_select[gr][ch][i]; - sp34 = var700577d8[sp38]; - sp30 = sp54[i]; - - if (var8009c650[sp38] == NULL) { - sp2c = sp30 - sp48; - - bzero(sp44, sp2c * 2); - - sp44 += sp2c; - sp40 += sp2c; - sp48 = sp30; - } else { - sp48 = mp3util000462f8(stream->unk1c, &stream->unk2020, sp38, sp48, sp34, sp30, &sp44, &sp40); - } - } - - sp38 = stream->count1table_select[gr][ch] + 32; - sp28 = stream->part2_3_length[gr][ch] + sp64; - sp48 = mp3util000464a8(stream->unk1c, &stream->unk2020, sp38, sp48, sp28, &sp44, &sp40); - stream->unk2020 = sp28; - - if (sp48 > 576) { - stream->unk465c[ch] = 576; - } else { - stream->unk465c[ch] = sp48; - } - - if (sp48 < 576) { - stream->unk4660[ch] = 576 - sp48; - bzero(sp44, stream->unk4660[ch] * 2); - } else { - stream->unk4660[ch] = 0; - } - - return true; -} - -bool mp3dec000427d8(struct asistream *stream, u32 gr) -{ - const s16 *sp14 = var70057b9c[stream->version][stream->samplerateindex]; - f32 *sp10 = stream->unk4f64[0][0].unk00; - f32 *sp0c = stream->unk4664[0][0].unk00; - s32 i = 0; - - if (stream->window_switching[gr][0] && stream->window_switching[gr][2] == 2) { - if (stream->window_switching[gr][4]) { - while (i++ < 36) { - *(sp10++) = *(sp0c++); - } - } - - while (i < 576) { - sp10[sp14[i++]] = *(sp0c++); - } - } else { - while (i++ < 576) { - *(sp10++) = *(sp0c++); - } - } - - return true; -} - -bool mp3decReduceAliases(struct asistream *stream, u32 gr, u32 ch) -{ - s32 i; - - if (stream->window_switching[gr][ch] && stream->block_type[gr][ch] == 2) { - return true; - } - - for (i = 1; i < 32; i++) { - struct asistream_4f64 *sp08 = &stream->unk4f64[ch][i]; - f32 sp04; - f32 sp00; - - sp04 = sp08->unk00[0]; - sp00 = sp08->unk00[-1]; - sp08->unk00[-1] = sp00 * var700596bc[0] - var7005969c[0] * sp04; - sp08->unk00[0] = sp04 * var700596bc[0] + var7005969c[0] * sp00; - - sp04 = sp08->unk00[1]; - sp00 = sp08->unk00[-2]; - sp08->unk00[-2] = sp00 * var700596bc[1] - var7005969c[1] * sp04; - sp08->unk00[1] = sp04 * var700596bc[1] + var7005969c[1] * sp00; - - sp04 = sp08->unk00[2]; - sp00 = sp08->unk00[-3]; - sp08->unk00[-3] = sp00 * var700596bc[2] - var7005969c[2] * sp04; - sp08->unk00[2] = sp04 * var700596bc[2] + var7005969c[2] * sp00; - - sp04 = sp08->unk00[3]; - sp00 = sp08->unk00[-4]; - sp08->unk00[-4] = sp00 * var700596bc[3] - var7005969c[3] * sp04; - sp08->unk00[3] = sp04 * var700596bc[3] + var7005969c[3] * sp00; - - sp04 = sp08->unk00[4]; - sp00 = sp08->unk00[-5]; - sp08->unk00[-5] = sp00 * var700596bc[4] - var7005969c[4] * sp04; - sp08->unk00[4] = sp04 * var700596bc[4] + var7005969c[4] * sp00; - - sp04 = sp08->unk00[5]; - sp00 = sp08->unk00[-6]; - sp08->unk00[-6] = sp00 * var700596bc[5] - var7005969c[5] * sp04; - sp08->unk00[5] = sp04 * var700596bc[5] + var7005969c[5] * sp00; - - sp04 = sp08->unk00[6]; - sp00 = sp08->unk00[-7]; - sp08->unk00[-7] = sp00 * var700596bc[6] - var7005969c[6] * sp04; - sp08->unk00[6] = sp04 * var700596bc[6] + var7005969c[6] * sp00; - - sp04 = sp08->unk00[7]; - sp00 = sp08->unk00[-8]; - sp08->unk00[-8] = sp00 * var700596bc[7] - var7005969c[7] * sp04; - sp08->unk00[7] = sp04 * var700596bc[7] + var7005969c[7] * sp00; - } - - return true; -} - -bool mp3decSetSideInfo(struct asistream *stream) -{ - s32 sp34; - s32 ch; - s32 scfsi_band; - s32 sp28; - s32 gr; - s32 region; - s32 window; - - if (stream->version != VERSION_2) { - stream->unk206c = stream->channelmode == CHANNELMODE_SINGLEMONO ? 17 : 32; - } else { - stream->unk206c = stream->channelmode == CHANNELMODE_SINGLEMONO ? 9 : 17; - } - - sp34 = stream->unk04(stream->unk00, &stream->buffer[stream->unk2068], stream->unk206c, -1); - - if (stream->unk206c != sp34) { - return false; - } - - stream->unk18 += stream->unk206c; - - stream->numchannels = stream->channelmode == CHANNELMODE_SINGLEMONO ? 1 : 2; - stream->numgranules = stream->version != VERSION_2 ? 2 : 1; - - if (stream->version != VERSION_2) { - stream->main_data_begin = mp3utilGetBits(stream->buffer, &stream->count, 9); - - // skip private bits - stream->numchannels == 1 - ? mp3utilGetBits(stream->buffer, &stream->count, 5) - : mp3utilGetBits(stream->buffer, &stream->count, 3); - } else { - stream->main_data_begin = mp3utilGetBits(stream->buffer, &stream->count, 8); - - stream->numchannels == 1 - ? mp3utilGetBits(stream->buffer, &stream->count, 1) - : mp3utilGetBits(stream->buffer, &stream->count, 2); - } - - if (stream->version != VERSION_2) { - for (ch = 0; ch < stream->numchannels; ch++) { - for (scfsi_band = 0; scfsi_band < 4; scfsi_band++) { - stream->scfsi[ch][scfsi_band] = mp3utilGetBits(stream->buffer, &stream->count, 1); - } - } - } - - if (stream->version != VERSION_2) { - sp28 = 4; - } else { - sp28 = 9; - } - - for (gr = 0; gr < stream->numgranules; gr++) { - for (ch = 0; ch < stream->numchannels; ch++) { - stream->part2_3_length[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 12); - stream->big_value[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 9); - stream->global_gain[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 8); - stream->scalefac_compress[gr][ch] = sp28 ? mp3utilGetBits(stream->buffer, &stream->count, sp28) : 0; - stream->window_switching[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 1); - - if (stream->window_switching[gr][ch]) { - stream->block_type[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 2); - stream->mixed_block_flag[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 1); - - for (region = 0; region < 2; region++) { - stream->table_select[gr][ch][region] = mp3utilGetBits(stream->buffer, &stream->count, 5); - } - - stream->table_select[gr][ch][2] = 0; - - for (window = 0; window < 3; window++) { - stream->subblock_gain[gr][ch][window] = mp3utilGetBits(stream->buffer, &stream->count, 3); - } - } else { - stream->block_type[gr][ch] = 0; - stream->mixed_block_flag[gr][ch] = false; - - for (region = 0; region < 3; region++) { - stream->table_select[gr][ch][region] = mp3utilGetBits(stream->buffer, &stream->count, 5); - } - - stream->region0_count[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 4); - stream->region1_count[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 3); - } - - if (stream->version != VERSION_2) { - stream->preflag[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 1); - } - - stream->scalefac_scale[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 1); - stream->count1table_select[gr][ch] = mp3utilGetBits(stream->buffer, &stream->count, 1); - } - } - - stream->unk3f7c = var700596dc[stream->version][stream->bitrateindex]; - stream->unk3f80 = var70059754[stream->version][stream->samplerateindex]; - - if (stream->version != VERSION_2) { - stream->unk3f84 = stream->unk3f7c * 144 / stream->unk3f80; - } else { - stream->unk3f84 = stream->unk3f7c * 72 / stream->unk3f80; - } - - stream->unk3f88 = (stream->unk3f84 + stream->haspadding) - (stream->unk2068 + stream->unk206c); - - return true; -} - -bool mp3decDecodeFrame(struct asistream *stream) -{ - s32 sp954; - s32 gr = 0; - s32 ch; - s32 sp948; - s32 sp944; - s32 sp940; - s32 i; - s32 j; - u16 *sp934; - struct asistream_4f64 sp34[32]; - f32 sp30; - f32 sp2c; - f32 sp28; - s32 sp24; - s32 sp20; - - sp934 = stream->unk2070[stream->unk3ba0].unk00; - sp954 = mp3main00043dd0(stream); - - if (sp954 == -1) { - return false; - } - - stream->unk2020 = (sp954 - stream->main_data_begin) * 8; - - if (stream->unk2020 < 0) { - return true; - } - - for (ch = 0; ch < stream->numchannels; ch++) { - mp3dec00042238(stream, gr, ch); - mp3dec00040164(stream, gr, ch); - } - - mp3dec000427d8(stream, gr); - - if (stream->window_switching[gr][0] != 0 && stream->block_type[gr][0] == 2) { - sp948 = 32; - } else { - sp944 = (stream->unk465c[0] - 1) / 18 + 1; - sp948 = sp944; - } - - for (ch = 0; ch < stream->numchannels; ch++) { - mp3decReduceAliases(stream, gr, ch); - - if (stream->window_switching[gr][ch] != 0 - && stream->block_type[gr][ch] == 2 - && stream->mixed_block_flag[gr][ch] != 0) { - sp940 = 0; - } else if (stream->window_switching[gr][ch] == 0) { - sp940 = 0; - } else { - sp940 = stream->block_type[gr][ch]; - } - - if (sp940 == 2) { - for (i = 0; i < 2; i++) { - func00047550(&stream->unk4f64[ch][i], i, &sp34[i], &stream->unk6a64[ch][i]); - } - } else { - for (i = 0; i < 2; i++) { - func00046650(&stream->unk4f64[ch][i], i, &sp34[i], &stream->unk6a64[ch][i], sine_block[sp940]); - } - } - - if (stream->window_switching[gr][ch] - && stream->block_type[gr][ch] == 2 - && stream->mixed_block_flag[gr][ch]) { - sp940 = 2; - } - - if (sp940 == 2) { - for (i = 2; i < sp948; i++) { - func00047550(&stream->unk4f64[ch][i], i, &sp34[i], &stream->unk6a64[ch][i]); - } - } else { - for (i = 2; i < sp948; i++) { - func00046650(&stream->unk4f64[ch][i], i, &sp34[i], &stream->unk6a64[ch][i], sine_block[sp940]); - } - } - - while (i < 32) { - bcopy(&stream->unk6a64[ch][i], &sp34[i], sizeof(struct asistream_4f64)); - bzero(&stream->unk6a64[ch][i], sizeof(struct asistream_4f64)); - i++; - } - - sp30 = 65536; - sp28 = 1; - sp20 = sp30 * sp28 * 16; - *sp934 = sp20 >> 16; - sp934++; - - *sp934 = sp20 & 0xffff; - sp934++; - - sp20 = -sp20; - *sp934 = sp20 >> 16; - sp934++; - - *sp934 = sp20 & 0xffff; - sp934++; - - sp2c = 2048 / sp28; - - for (j = 0; j < 18; j++) { - for (i = 0; i < 32; i++) { - sp24 = sp34[i].unk00[j] * sp2c; - *sp934 = sp24; - sp934++; - } - } - } - - return true; -} diff --git a/src/lib/mp3/internal.h b/src/lib/mp3/internal.h deleted file mode 100644 index 7a2d87be1..000000000 --- a/src/lib/mp3/internal.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef _IN_LIB_MP3_INTERNAL_H -#define _IN_LIB_MP3_INTERNAL_H -#include -#include "mp3.h" - -bool mp3decInit(void); -bool mp3decSetSideInfo(struct asistream *stream); -bool mp3decDecodeFrame(struct asistream *stream); - -s32 mp3main00043dd0(struct asistream *stream); - -f32 func00045ed0(f32 arg0, f32 arg1); - -s32 mp3utilGetBits(u8 *buffer, s32 *count, s32 numbits); -s32 mp3util000462f8(u8 *arg0, s32 *arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s16 **arg6, u8 **arg7); -s32 mp3util000464a8(u8 *arg0, s32 *arg1, s32 arg2, s32 arg3, s32 arg4, s16 **arg5, u8 **arg6); - -void func00046650(struct asistream_4f64 *arg0, s32 arg1, struct asistream_4f64 *arg2, struct asistream_4f64 *arg3, void *arg4); - -void func00047550(struct asistream_4f64 *arg0, s32 arg1, struct asistream_4f64 *arg2, struct asistream_4f64 *arg3); - -f32 func00047d20(f32 arg0); - -f32 func00047ef0(f32 arg0); - -#endif diff --git a/src/lib/mp3/lib_45ed0.c b/src/lib/mp3/lib_45ed0.c deleted file mode 100644 index 43f4d35cd..000000000 --- a/src/lib/mp3/lib_45ed0.c +++ /dev/null @@ -1,42 +0,0 @@ -#include -#include "internal.h" - -f32 func00045ed0(f32 arg0, f32 arg1) -{ - s32 arg1int = arg1; - f32 sp30; - register bool s0; - - if (arg0 != 0 && arg1 == 0) { - return 1; - } - - if (arg0 == 0) { - return 0; - } - - if ((arg0 == 0 && arg1 == 0) || (arg0 < 0 && arg1int != arg1)) { - return 0; - } - - if (arg1int != arg1) { - arg0 = func00047d20(func00047ef0(arg0) * arg1); - } else if (arg1 > 0) { - arg1--; - sp30 = arg0; - - for (s0 = (arg1-- != 0); s0; s0 = (arg1-- != 0)) { - arg0 *= sp30; - } - } else { - sp30 = 1; - - for (s0 = (arg1++ != 0); s0; s0 = (arg1++ != 0)) { - sp30 /= arg0; - } - - arg0 = sp30; - } - - return arg0; -} diff --git a/src/lib/mp3/lib_46650.s b/src/lib/mp3/lib_46650.s deleted file mode 100644 index cfeffdb9c..000000000 --- a/src/lib/mp3/lib_46650.s +++ /dev/null @@ -1,1159 +0,0 @@ -#include "asm_helper.h" -#include "macros.inc" -.set noat -.set noreorder - -.rdata - -glabel var70059c90 -.float 1.8793852329254 -glabel var70059c94 -.float 1.5320888757706 -glabel var70059c98 -.float 0.34729635715485 -glabel var70059c9c -.float -0.34729635715485 -glabel var70059ca0 -.float -1.8793852329254 -glabel var70059ca4 -.float 1.5320888757706 -glabel var70059ca8 -.float -1.5320888757706 -glabel var70059cac -.float 0.34729635715485 -glabel var70059cb0 -.float -1.8793852329254 -glabel var70059cb4 -.float 1.7320507764816 -glabel var70059cb8 -.float 1.9696154594421 -glabel var70059cbc -.float 1.2855752706528 -glabel var70059cc0 -.float 0.68404030799866 -glabel var70059cc4 -.float 1.2855752706528 -glabel var70059cc8 -.float -0.68404030799866 -glabel var70059ccc -.float 1.9696154594421 -glabel var70059cd0 -.float 0.68404030799866 -glabel var70059cd4 -.float 1.9696154594421 -glabel var70059cd8 -.float -1.2855752706528 -glabel var70059cdc -.float 1.7320507764816 -glabel var70059ce0 -.float 1.8793852329254 -glabel var70059ce4 -.float 1.5320888757706 -glabel var70059ce8 -.float 0.34729635715485 -glabel var70059cec -.float -0.34729635715485 -glabel var70059cf0 -.float -1.8793852329254 -glabel var70059cf4 -.float 1.5320888757706 -glabel var70059cf8 -.float -1.5320888757706 -glabel var70059cfc -.float 0.34729635715485 -glabel var70059d00 -.float -1.8793852329254 -glabel var70059d04 -.float 1.7320507764816 -glabel var70059d08 -.float 1.9696154594421 -glabel var70059d0c -.float 1.2855752706528 -glabel var70059d10 -.float 0.68404030799866 -glabel var70059d14 -.float 1.2855752706528 -glabel var70059d18 -.float -0.68404030799866 -glabel var70059d1c -.float 1.9696154594421 -glabel var70059d20 -.float 0.68404030799866 -glabel var70059d24 -.float 1.9696154594421 -glabel var70059d28 -.float -1.2855752706528 -glabel var70059d2c -.float 1.7320507764816 -glabel var70059d30 -.float 0.50190991163254 -glabel var70059d34 -.float -0.25023818016052 -glabel var70059d38 -.float -5.7313961982727 -glabel var70059d3c -.float 0.51763808727264 -glabel var70059d40 -.float -0.25215724110603 -glabel var70059d44 -.float -1.9153244495392 -glabel var70059d48 -.float 0.55168896913528 -glabel var70059d4c -.float -0.25606986880302 -glabel var70059d50 -.float -1.1550565958023 -glabel var70059d54 -.float 0.61038726568222 -glabel var70059d58 -.float -0.26213228702545 -glabel var70059d5c -.float -0.83137738704681 -glabel var70059d60 -.float 0.87172341346741 -glabel var70059d64 -.float -0.28184548020363 -glabel var70059d68 -.float -0.54142016172409 -glabel var70059d6c -.float 1.1831008195877 -glabel var70059d70 -.float -0.29642227292061 -glabel var70059d74 -.float -0.46528974175453 -glabel var70059d78 -.float 1.9318516254425 -glabel var70059d7c -.float -0.31511810421944 -glabel var70059d80 -.float -0.41066989302635 -glabel var70059d84 -.float 5.7368564605713 -glabel var70059d88 -.float -0.33908542990685 -glabel var70059d8c -.float -0.37004679441452 -glabel var70059d90 -.float 0.70710676908493 -glabel var70059d94 -.float -0.54119610786438 -glabel var70059d98 -.float -1.3065630197525 - -# These values are used in the following file -glabel var70059d9c -.float 0.86602538824081 -glabel var70059da0 -.float 0.86602538824081 -glabel var70059da4 -.float 1.9318516254425 -glabel var70059da8 -.float 0.70710676908493 -glabel var70059dac -.float 0.51763808727264 -glabel var70059db0 -.float 0.50431448221207 -glabel var70059db4 -.float 0.54119610786438 -glabel var70059db8 -.float 0.63023620843887 -glabel var70059dbc -.float 0.8213397860527 -glabel var70059dc0 -.float 1.3065630197525 -glabel var70059dc4 -.float 3.8306488990784 -glabel var70059dc8 -.float -0.79335331916809 -glabel var70059dcc -.float -0.60876142978668 -glabel var70059dd0 -.float -0.9238795042038 -glabel var70059dd4 -.float -0.38268342614174 -glabel var70059dd8 -.float -0.99144488573074 -glabel var70059ddc -.float -0.13052618503571 -glabel var70059de0 -.float 0.38268342614174 -glabel var70059de4 -.float 0.60876142978668 -glabel var70059de8 -.float -0.79335331916809 -glabel var70059dec -.float -0.9238795042038 -glabel var70059df0 -.float -0.99144488573074 -glabel var70059df4 -.float 0.13052618503571 - -.text - -/** - * Determined to be ASM because of the following: - * - copy of $sp to temp register - * - heavy reuse of float registers - * - every mul is followed by a nop - */ -glabel func00046650 - addiu $sp, $sp, -0x90 - or $t0, $sp, $zero - addiu $t1, $t0, 0x48 - lwc1 $f4, 0x3c($a0) - lwc1 $f6, 0x40($a0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x44($a0) - add.s $f6, $f6, $f8 - swc1 $f4, 0x40($a0) - swc1 $f6, 0x44($a0) - lwc1 $f4, 0x34($a0) - lwc1 $f6, 0x38($a0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x3c($a0) - add.s $f6, $f6, $f8 - swc1 $f4, 0x38($a0) - swc1 $f6, 0x3c($a0) - lwc1 $f4, 0x2c($a0) - lwc1 $f6, 0x30($a0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x34($a0) - add.s $f6, $f6, $f8 - swc1 $f4, 0x30($a0) - swc1 $f6, 0x34($a0) - lwc1 $f4, 0x24($a0) - lwc1 $f6, 0x28($a0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x2c($a0) - add.s $f6, $f6, $f8 - swc1 $f4, 0x28($a0) - swc1 $f6, 0x2c($a0) - lwc1 $f4, 0x1c($a0) - lwc1 $f6, 0x20($a0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x24($a0) - add.s $f6, $f6, $f8 - swc1 $f4, 0x20($a0) - swc1 $f6, 0x24($a0) - lwc1 $f4, 0x14($a0) - lwc1 $f6, 0x18($a0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x1c($a0) - add.s $f6, $f6, $f8 - swc1 $f4, 0x18($a0) - swc1 $f6, 0x1c($a0) - lwc1 $f4, 0xc($a0) - lwc1 $f6, 0x10($a0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x14($a0) - add.s $f6, $f6, $f8 - swc1 $f4, 0x10($a0) - swc1 $f6, 0x14($a0) - lwc1 $f4, 0x4($a0) - lwc1 $f6, 0x8($a0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0xc($a0) - add.s $f6, $f6, $f8 - swc1 $f4, 0x8($a0) - swc1 $f6, 0xc($a0) - lwc1 $f4, 0x0($a0) - lwc1 $f6, 0x4($a0) - add.s $f4, $f4, $f6 - swc1 $f4, 0x4($a0) - lwc1 $f4, 0x34($a0) - lwc1 $f6, 0x3c($a0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x44($a0) - add.s $f6, $f6, $f8 - swc1 $f4, 0x3c($a0) - swc1 $f6, 0x44($a0) - lwc1 $f4, 0x24($a0) - lwc1 $f6, 0x2c($a0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x34($a0) - add.s $f6, $f6, $f8 - swc1 $f4, 0x2c($a0) - swc1 $f6, 0x34($a0) - lwc1 $f4, 0x14($a0) - lwc1 $f6, 0x1c($a0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x24($a0) - add.s $f6, $f6, $f8 - swc1 $f4, 0x1c($a0) - swc1 $f6, 0x24($a0) - lwc1 $f4, 0x4($a0) - lwc1 $f6, 0xc($a0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x14($a0) - add.s $f6, $f6, $f8 - swc1 $f4, 0xc($a0) - swc1 $f6, 0x14($a0) - lwc1 $f4, 0x0($a0) - lwc1 $f6, 0x30($a0) - add.s $f2, $f4, $f4 - add.s $f0, $f2, $f6 - lwc1 $f4, 0x10($a0) - lui $at, %hi(var70059c90) - lwc1 $f6, %lo(var70059c90)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x20($a0) - lui $at, %hi(var70059c94) - lwc1 $f10, %lo(var70059c94)($at) - lwc1 $f16, 0x40($a0) - mul.s $f8, $f8, $f10 - nop - lui $at, %hi(var70059c98) - lwc1 $f6, %lo(var70059c98)($at) - mul.s $f16, $f16, $f6 - nop - add.s $f4, $f4, $f8 - add.s $f4, $f4, $f16 - add.s $f4, $f4, $f0 - swc1 $f4, 0x0($t0) - lwc1 $f4, 0x10($a0) - lui $at, %hi(var70059c9c) - lwc1 $f6, %lo(var70059c9c)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x20($a0) - lui $at, %hi(var70059ca0) - lwc1 $f10, %lo(var70059ca0)($at) - lwc1 $f16, 0x40($a0) - mul.s $f8, $f8, $f10 - nop - lui $at, %hi(var70059ca4) - lwc1 $f6, %lo(var70059ca4)($at) - mul.s $f16, $f16, $f6 - nop - add.s $f4, $f4, $f8 - add.s $f4, $f4, $f16 - add.s $f4, $f4, $f0 - swc1 $f4, 0x8($t0) - lwc1 $f4, 0x10($a0) - lui $at, %hi(var70059ca8) - lwc1 $f6, %lo(var70059ca8)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x20($a0) - lui $at, %hi(var70059cac) - lwc1 $f10, %lo(var70059cac)($at) - lwc1 $f16, 0x40($a0) - mul.s $f8, $f8, $f10 - nop - lui $at, %hi(var70059cb0) - lwc1 $f6, %lo(var70059cb0)($at) - mul.s $f16, $f16, $f6 - nop - add.s $f4, $f4, $f8 - add.s $f4, $f4, $f16 - add.s $f4, $f4, $f0 - swc1 $f4, 0xc($t0) - lwc1 $f4, 0x10($a0) - add.s $f2, $f2, $f4 - lwc1 $f6, 0x20($a0) - lwc1 $f8, 0x30($a0) - lwc1 $f10, 0x40($a0) - sub.s $f2, $f2, $f6 - lwc1 $f16, 0x0($a0) - sub.s $f2, $f2, $f8 - sub.s $f2, $f2, $f8 - sub.s $f2, $f2, $f10 - swc1 $f2, 0x4($t0) - sub.s $f2, $f16, $f4 - add.s $f2, $f2, $f6 - sub.s $f2, $f2, $f8 - add.s $f2, $f2, $f10 - swc1 $f2, 0x10($t0) - lwc1 $f0, 0x18($a0) - lui $at, %hi(var70059cb4) - lwc1 $f4, %lo(var70059cb4)($at) - mul.s $f0, $f0, $f4 - nop - lwc1 $f4, 0x8($a0) - lui $at, %hi(var70059cb8) - lwc1 $f6, %lo(var70059cb8)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x28($a0) - lui $at, %hi(var70059cbc) - lwc1 $f10, %lo(var70059cbc)($at) - lwc1 $f16, 0x38($a0) - mul.s $f8, $f8, $f10 - nop - lui $at, %hi(var70059cc0) - lwc1 $f6, %lo(var70059cc0)($at) - mul.s $f16, $f16, $f6 - nop - add.s $f4, $f4, $f8 - add.s $f4, $f4, $f16 - add.s $f4, $f4, $f0 - swc1 $f4, 0x14($t0) - neg.s $f0, $f0 - lwc1 $f4, 0x8($a0) - lui $at, %hi(var70059cc4) - lwc1 $f6, %lo(var70059cc4)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x28($a0) - lui $at, %hi(var70059cc8) - lwc1 $f10, %lo(var70059cc8)($at) - lwc1 $f16, 0x38($a0) - mul.s $f8, $f8, $f10 - nop - lui $at, %hi(var70059ccc) - lwc1 $f6, %lo(var70059ccc)($at) - mul.s $f16, $f16, $f6 - nop - add.s $f4, $f4, $f8 - add.s $f4, $f4, $f16 - add.s $f4, $f4, $f0 - swc1 $f4, 0x18($t0) - lwc1 $f4, 0x8($a0) - lui $at, %hi(var70059cd0) - lwc1 $f6, %lo(var70059cd0)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x28($a0) - lui $at, %hi(var70059cd4) - lwc1 $f10, %lo(var70059cd4)($at) - lwc1 $f16, 0x38($a0) - mul.s $f8, $f8, $f10 - nop - lui $at, %hi(var70059cd8) - lwc1 $f6, %lo(var70059cd8)($at) - mul.s $f16, $f16, $f6 - nop - add.s $f4, $f4, $f8 - add.s $f4, $f4, $f16 - add.s $f4, $f4, $f0 - swc1 $f4, 0x1c($t0) - lwc1 $f4, 0x8($a0) - lwc1 $f6, 0x28($a0) - sub.s $f4, $f4, $f6 - lwc1 $f8, 0x38($a0) - lui $at, %hi(var70059cdc) - lwc1 $f10, %lo(var70059cdc)($at) - sub.s $f4, $f4, $f8 - mul.s $f4, $f4, $f10 - nop - swc1 $f4, 0x20($t0) - lwc1 $f4, 0x4($a0) - lwc1 $f6, 0x34($a0) - add.s $f2, $f4, $f4 - add.s $f0, $f2, $f6 - lwc1 $f4, 0x14($a0) - lui $at, %hi(var70059ce0) - lwc1 $f6, %lo(var70059ce0)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x24($a0) - lui $at, %hi(var70059ce4) - lwc1 $f10, %lo(var70059ce4)($at) - lwc1 $f16, 0x44($a0) - mul.s $f8, $f8, $f10 - nop - lui $at, %hi(var70059ce8) - lwc1 $f6, %lo(var70059ce8)($at) - mul.s $f16, $f16, $f6 - nop - add.s $f4, $f4, $f8 - add.s $f4, $f4, $f16 - add.s $f4, $f4, $f0 - swc1 $f4, 0x24($t0) - lwc1 $f4, 0x14($a0) - lui $at, %hi(var70059cec) - lwc1 $f6, %lo(var70059cec)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x24($a0) - lui $at, %hi(var70059cf0) - lwc1 $f10, %lo(var70059cf0)($at) - lwc1 $f16, 0x44($a0) - mul.s $f8, $f8, $f10 - nop - lui $at, %hi(var70059cf4) - lwc1 $f6, %lo(var70059cf4)($at) - mul.s $f16, $f16, $f6 - nop - add.s $f4, $f4, $f8 - add.s $f4, $f4, $f16 - add.s $f4, $f4, $f0 - swc1 $f4, 0x2c($t0) - lwc1 $f4, 0x14($a0) - lui $at, %hi(var70059cf8) - lwc1 $f6, %lo(var70059cf8)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x24($a0) - lui $at, %hi(var70059cfc) - lwc1 $f10, %lo(var70059cfc)($at) - lwc1 $f16, 0x44($a0) - mul.s $f8, $f8, $f10 - nop - lui $at, %hi(var70059d00) - lwc1 $f6, %lo(var70059d00)($at) - mul.s $f16, $f16, $f6 - nop - add.s $f4, $f4, $f8 - add.s $f4, $f4, $f16 - add.s $f4, $f4, $f0 - swc1 $f4, 0x30($t0) - lwc1 $f4, 0x14($a0) - add.s $f2, $f2, $f4 - lwc1 $f6, 0x24($a0) - lwc1 $f8, 0x34($a0) - lwc1 $f10, 0x44($a0) - sub.s $f2, $f2, $f6 - lwc1 $f16, 0x4($a0) - sub.s $f2, $f2, $f8 - sub.s $f2, $f2, $f8 - sub.s $f2, $f2, $f10 - swc1 $f2, 0x28($t0) - sub.s $f2, $f16, $f4 - add.s $f2, $f2, $f6 - sub.s $f2, $f2, $f8 - add.s $f2, $f2, $f10 - swc1 $f2, 0x34($t0) - lwc1 $f0, 0x1c($a0) - lui $at, %hi(var70059d04) - lwc1 $f4, %lo(var70059d04)($at) - mul.s $f0, $f0, $f4 - nop - lwc1 $f4, 0xc($a0) - lui $at, %hi(var70059d08) - lwc1 $f6, %lo(var70059d08)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x2c($a0) - lui $at, %hi(var70059d0c) - lwc1 $f10, %lo(var70059d0c)($at) - lwc1 $f16, 0x3c($a0) - mul.s $f8, $f8, $f10 - nop - lui $at, %hi(var70059d10) - lwc1 $f6, %lo(var70059d10)($at) - mul.s $f16, $f16, $f6 - nop - add.s $f4, $f4, $f8 - add.s $f4, $f4, $f16 - add.s $f4, $f4, $f0 - swc1 $f4, 0x38($t0) - neg.s $f0, $f0 - lwc1 $f4, 0xc($a0) - lui $at, %hi(var70059d14) - lwc1 $f6, %lo(var70059d14)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x2c($a0) - lui $at, %hi(var70059d18) - lwc1 $f10, %lo(var70059d18)($at) - lwc1 $f16, 0x3c($a0) - mul.s $f8, $f8, $f10 - nop - lui $at, %hi(var70059d1c) - lwc1 $f6, %lo(var70059d1c)($at) - mul.s $f16, $f16, $f6 - nop - add.s $f4, $f4, $f8 - add.s $f4, $f4, $f16 - add.s $f4, $f4, $f0 - swc1 $f4, 0x3c($t0) - lwc1 $f4, 0xc($a0) - lui $at, %hi(var70059d20) - lwc1 $f6, %lo(var70059d20)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x2c($a0) - lui $at, %hi(var70059d24) - lwc1 $f10, %lo(var70059d24)($at) - lwc1 $f16, 0x3c($a0) - mul.s $f8, $f8, $f10 - nop - lui $at, %hi(var70059d28) - lwc1 $f6, %lo(var70059d28)($at) - mul.s $f16, $f16, $f6 - nop - add.s $f4, $f4, $f8 - add.s $f4, $f4, $f16 - add.s $f4, $f4, $f0 - swc1 $f4, 0x40($t0) - lwc1 $f4, 0xc($a0) - lwc1 $f6, 0x2c($a0) - sub.s $f4, $f4, $f6 - lwc1 $f8, 0x3c($a0) - lui $at, %hi(var70059d2c) - lwc1 $f10, %lo(var70059d2c)($at) - sub.s $f4, $f4, $f8 - mul.s $f4, $f4, $f10 - nop - swc1 $f4, 0x44($t0) - lwc1 $f4, 0x0($t0) - lwc1 $f6, 0x14($t0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x24($t0) - lwc1 $f10, 0x38($t0) - lui $at, %hi(var70059d30) - lwc1 $f16, %lo(var70059d30)($at) - add.s $f8, $f8, $f10 - mul.s $f8, $f8, $f16 - nop - lui $at, %hi(var70059d34) - lwc1 $f6, %lo(var70059d34)($at) - add.s $f10, $f4, $f8 - mul.s $f10, $f10, $f6 - nop - lui $at, %hi(var70059d38) - lwc1 $f16, %lo(var70059d38)($at) - sub.s $f4, $f4, $f8 - mul.s $f4, $f4, $f16 - nop - swc1 $f10, 0x0($t1) - swc1 $f4, 0x44($t1) - lwc1 $f4, 0x4($t0) - lwc1 $f6, 0x20($t0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x28($t0) - lwc1 $f10, 0x44($t0) - lui $at, %hi(var70059d3c) - lwc1 $f16, %lo(var70059d3c)($at) - add.s $f8, $f8, $f10 - mul.s $f8, $f8, $f16 - nop - lui $at, %hi(var70059d40) - lwc1 $f6, %lo(var70059d40)($at) - add.s $f10, $f4, $f8 - mul.s $f10, $f10, $f6 - nop - lui $at, %hi(var70059d44) - lwc1 $f16, %lo(var70059d44)($at) - sub.s $f4, $f4, $f8 - mul.s $f4, $f4, $f16 - nop - swc1 $f10, 0x4($t1) - swc1 $f4, 0x40($t1) - lwc1 $f4, 0x8($t0) - lwc1 $f6, 0x18($t0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x2c($t0) - lwc1 $f10, 0x3c($t0) - lui $at, %hi(var70059d48) - lwc1 $f16, %lo(var70059d48)($at) - add.s $f8, $f8, $f10 - mul.s $f8, $f8, $f16 - nop - lui $at, %hi(var70059d4c) - lwc1 $f6, %lo(var70059d4c)($at) - add.s $f10, $f4, $f8 - mul.s $f10, $f10, $f6 - nop - lui $at, %hi(var70059d50) - lwc1 $f16, %lo(var70059d50)($at) - sub.s $f4, $f4, $f8 - mul.s $f4, $f4, $f16 - nop - swc1 $f10, 0x8($t1) - swc1 $f4, 0x3c($t1) - lwc1 $f4, 0xc($t0) - lwc1 $f6, 0x1c($t0) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x30($t0) - lwc1 $f10, 0x40($t0) - lui $at, %hi(var70059d54) - lwc1 $f16, %lo(var70059d54)($at) - add.s $f8, $f8, $f10 - mul.s $f8, $f8, $f16 - nop - lui $at, %hi(var70059d58) - lwc1 $f6, %lo(var70059d58)($at) - add.s $f10, $f4, $f8 - mul.s $f10, $f10, $f6 - nop - lui $at, %hi(var70059d5c) - lwc1 $f16, %lo(var70059d5c)($at) - sub.s $f4, $f4, $f8 - mul.s $f4, $f4, $f16 - nop - swc1 $f10, 0xc($t1) - swc1 $f4, 0x38($t1) - lwc1 $f4, 0xc($t0) - lwc1 $f6, 0x1c($t0) - sub.s $f4, $f4, $f6 - lwc1 $f8, 0x30($t0) - lwc1 $f10, 0x40($t0) - lui $at, %hi(var70059d60) - lwc1 $f16, %lo(var70059d60)($at) - sub.s $f8, $f8, $f10 - mul.s $f8, $f8, $f16 - nop - lui $at, %hi(var70059d64) - lwc1 $f6, %lo(var70059d64)($at) - add.s $f10, $f4, $f8 - mul.s $f10, $f10, $f6 - nop - lui $at, %hi(var70059d68) - lwc1 $f16, %lo(var70059d68)($at) - sub.s $f4, $f4, $f8 - mul.s $f4, $f4, $f16 - nop - swc1 $f10, 0x14($t1) - swc1 $f4, 0x30($t1) - lwc1 $f4, 0x8($t0) - lwc1 $f6, 0x18($t0) - sub.s $f4, $f4, $f6 - lwc1 $f8, 0x2c($t0) - lwc1 $f10, 0x3c($t0) - lui $at, %hi(var70059d6c) - lwc1 $f16, %lo(var70059d6c)($at) - sub.s $f8, $f8, $f10 - mul.s $f8, $f8, $f16 - nop - lui $at, %hi(var70059d70) - lwc1 $f6, %lo(var70059d70)($at) - add.s $f10, $f4, $f8 - mul.s $f10, $f10, $f6 - nop - lui $at, %hi(var70059d74) - lwc1 $f16, %lo(var70059d74)($at) - sub.s $f4, $f4, $f8 - mul.s $f4, $f4, $f16 - nop - swc1 $f10, 0x18($t1) - swc1 $f4, 0x2c($t1) - lwc1 $f4, 0x4($t0) - lwc1 $f6, 0x20($t0) - sub.s $f4, $f4, $f6 - lwc1 $f8, 0x28($t0) - lwc1 $f10, 0x44($t0) - lui $at, %hi(var70059d78) - lwc1 $f16, %lo(var70059d78)($at) - sub.s $f8, $f8, $f10 - mul.s $f8, $f8, $f16 - nop - lui $at, %hi(var70059d7c) - lwc1 $f6, %lo(var70059d7c)($at) - add.s $f10, $f4, $f8 - mul.s $f10, $f10, $f6 - nop - lui $at, %hi(var70059d80) - lwc1 $f16, %lo(var70059d80)($at) - sub.s $f4, $f4, $f8 - mul.s $f4, $f4, $f16 - nop - swc1 $f10, 0x1c($t1) - swc1 $f4, 0x28($t1) - lwc1 $f4, 0x0($t0) - lwc1 $f6, 0x14($t0) - sub.s $f4, $f4, $f6 - lwc1 $f8, 0x24($t0) - lwc1 $f10, 0x38($t0) - lui $at, %hi(var70059d84) - lwc1 $f16, %lo(var70059d84)($at) - sub.s $f8, $f8, $f10 - mul.s $f8, $f8, $f16 - nop - lui $at, %hi(var70059d88) - lwc1 $f6, %lo(var70059d88)($at) - add.s $f10, $f4, $f8 - mul.s $f10, $f10, $f6 - nop - lui $at, %hi(var70059d8c) - lwc1 $f16, %lo(var70059d8c)($at) - sub.s $f4, $f4, $f8 - mul.s $f4, $f4, $f16 - nop - swc1 $f10, 0x20($t1) - swc1 $f4, 0x24($t1) - lwc1 $f4, 0x34($t0) - lui $at, %hi(var70059d90) - lwc1 $f6, %lo(var70059d90)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x10($t0) - lui $at, %hi(var70059d94) - lwc1 $f10, %lo(var70059d94)($at) - lui $at, %hi(var70059d98) - lwc1 $f16, %lo(var70059d98)($at) - add.s $f6, $f8, $f4 - mul.s $f6, $f6, $f10 - nop - sub.s $f4, $f8, $f4 - mul.s $f4, $f4, $f16 - nop - swc1 $f6, 0x10($t1) - swc1 $f4, 0x34($t1) - or $t0, $t1, $zero - lw $t1, 0xa0($sp) - or $t2, $a2, $zero - or $t3, $a3, $zero - andi $a1, $a1, 0x1 - beqz $a1, .L000471b8 - nop - lwc1 $f4, 0x24($t0) - neg.s $f4, $f4 - lwc1 $f6, 0x0($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x0($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x0($t2) - lwc1 $f6, 0x28($t0) - lwc1 $f8, 0x4($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x4($t3) - sub.s $f10, $f8, $f10 - swc1 $f10, 0x4($t2) - lwc1 $f4, 0x2c($t0) - neg.s $f4, $f4 - lwc1 $f6, 0x8($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x8($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x8($t2) - lwc1 $f6, 0x30($t0) - lwc1 $f8, 0xc($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0xc($t3) - sub.s $f10, $f8, $f10 - swc1 $f10, 0xc($t2) - lwc1 $f4, 0x34($t0) - neg.s $f4, $f4 - lwc1 $f6, 0x10($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x10($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x10($t2) - lwc1 $f6, 0x38($t0) - lwc1 $f8, 0x14($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x14($t3) - sub.s $f10, $f8, $f10 - swc1 $f10, 0x14($t2) - lwc1 $f4, 0x3c($t0) - neg.s $f4, $f4 - lwc1 $f6, 0x18($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x18($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x18($t2) - lwc1 $f6, 0x40($t0) - lwc1 $f8, 0x1c($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x1c($t3) - sub.s $f10, $f8, $f10 - swc1 $f10, 0x1c($t2) - lwc1 $f4, 0x44($t0) - neg.s $f4, $f4 - lwc1 $f6, 0x20($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x20($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x20($t2) - lwc1 $f6, 0x44($t0) - neg.s $f6, $f6 - lwc1 $f8, 0x24($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x24($t3) - sub.s $f10, $f8, $f10 - swc1 $f10, 0x24($t2) - lwc1 $f4, 0x40($t0) - lwc1 $f6, 0x28($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x28($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x28($t2) - lwc1 $f6, 0x3c($t0) - neg.s $f6, $f6 - lwc1 $f8, 0x2c($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x2c($t3) - sub.s $f10, $f8, $f10 - swc1 $f10, 0x2c($t2) - lwc1 $f4, 0x38($t0) - lwc1 $f6, 0x30($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x30($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x30($t2) - lwc1 $f6, 0x34($t0) - neg.s $f6, $f6 - lwc1 $f8, 0x34($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x34($t3) - sub.s $f10, $f8, $f10 - swc1 $f10, 0x34($t2) - lwc1 $f4, 0x30($t0) - lwc1 $f6, 0x38($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x38($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x38($t2) - lwc1 $f6, 0x2c($t0) - neg.s $f6, $f6 - lwc1 $f8, 0x3c($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x3c($t3) - sub.s $f10, $f8, $f10 - swc1 $f10, 0x3c($t2) - lwc1 $f4, 0x28($t0) - lwc1 $f6, 0x40($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x40($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x40($t2) - lwc1 $f6, 0x24($t0) - neg.s $f6, $f6 - lwc1 $f8, 0x44($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x44($t3) - sub.s $f10, $f8, $f10 - swc1 $f10, 0x44($t2) - b .L000473d4 - nop -.L000471b8: - lwc1 $f4, 0x24($t0) - neg.s $f4, $f4 - lwc1 $f6, 0x0($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x0($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x0($t2) - lwc1 $f6, 0x28($t0) - neg.s $f6, $f6 - lwc1 $f8, 0x4($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x4($t3) - add.s $f10, $f8, $f10 - swc1 $f10, 0x4($t2) - lwc1 $f4, 0x2c($t0) - neg.s $f4, $f4 - lwc1 $f6, 0x8($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x8($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x8($t2) - lwc1 $f6, 0x30($t0) - neg.s $f6, $f6 - lwc1 $f8, 0xc($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0xc($t3) - add.s $f10, $f8, $f10 - swc1 $f10, 0xc($t2) - lwc1 $f4, 0x34($t0) - neg.s $f4, $f4 - lwc1 $f6, 0x10($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x10($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x10($t2) - lwc1 $f6, 0x38($t0) - neg.s $f6, $f6 - lwc1 $f8, 0x14($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x14($t3) - add.s $f10, $f8, $f10 - swc1 $f10, 0x14($t2) - lwc1 $f4, 0x3c($t0) - neg.s $f4, $f4 - lwc1 $f6, 0x18($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x18($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x18($t2) - lwc1 $f6, 0x40($t0) - neg.s $f6, $f6 - lwc1 $f8, 0x1c($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x1c($t3) - add.s $f10, $f8, $f10 - swc1 $f10, 0x1c($t2) - lwc1 $f4, 0x44($t0) - neg.s $f4, $f4 - lwc1 $f6, 0x20($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x20($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x20($t2) - lwc1 $f6, 0x44($t0) - lwc1 $f8, 0x24($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x24($t3) - add.s $f10, $f8, $f10 - swc1 $f10, 0x24($t2) - lwc1 $f4, 0x40($t0) - lwc1 $f6, 0x28($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x28($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x28($t2) - lwc1 $f6, 0x3c($t0) - lwc1 $f8, 0x2c($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x2c($t3) - add.s $f10, $f8, $f10 - swc1 $f10, 0x2c($t2) - lwc1 $f4, 0x38($t0) - lwc1 $f6, 0x30($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x30($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x30($t2) - lwc1 $f6, 0x34($t0) - lwc1 $f8, 0x34($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x34($t3) - add.s $f10, $f8, $f10 - swc1 $f10, 0x34($t2) - lwc1 $f4, 0x30($t0) - lwc1 $f6, 0x38($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x38($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x38($t2) - lwc1 $f6, 0x2c($t0) - lwc1 $f8, 0x3c($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x3c($t3) - add.s $f10, $f8, $f10 - swc1 $f10, 0x3c($t2) - lwc1 $f4, 0x28($t0) - lwc1 $f6, 0x40($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x40($t3) - add.s $f4, $f4, $f8 - swc1 $f4, 0x40($t2) - lwc1 $f6, 0x24($t0) - lwc1 $f8, 0x44($t1) - mul.s $f8, $f6, $f8 - nop - lwc1 $f10, 0x44($t3) - add.s $f10, $f8, $f10 - swc1 $f10, 0x44($t2) -.L000473d4: - lwc1 $f4, 0x20($t0) - lwc1 $f6, 0x48($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x1c($t0) - lwc1 $f10, 0x4c($t1) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x0($t3) - swc1 $f8, 0x4($t3) - lwc1 $f4, 0x18($t0) - lwc1 $f6, 0x50($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x14($t0) - lwc1 $f10, 0x54($t1) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x8($t3) - swc1 $f8, 0xc($t3) - lwc1 $f4, 0x10($t0) - lwc1 $f6, 0x58($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0xc($t0) - lwc1 $f10, 0x5c($t1) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x10($t3) - swc1 $f8, 0x14($t3) - lwc1 $f4, 0x8($t0) - lwc1 $f6, 0x60($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x4($t0) - lwc1 $f10, 0x64($t1) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x18($t3) - swc1 $f8, 0x1c($t3) - lwc1 $f4, 0x0($t0) - lwc1 $f6, 0x68($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x0($t0) - lwc1 $f10, 0x6c($t1) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x20($t3) - swc1 $f8, 0x24($t3) - lwc1 $f4, 0x4($t0) - lwc1 $f6, 0x70($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x8($t0) - lwc1 $f10, 0x74($t1) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x28($t3) - swc1 $f8, 0x2c($t3) - lwc1 $f4, 0xc($t0) - lwc1 $f6, 0x78($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x10($t0) - lwc1 $f10, 0x7c($t1) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x30($t3) - swc1 $f8, 0x34($t3) - lwc1 $f4, 0x14($t0) - lwc1 $f6, 0x80($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x18($t0) - lwc1 $f10, 0x84($t1) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x38($t3) - swc1 $f8, 0x3c($t3) - lwc1 $f4, 0x1c($t0) - lwc1 $f6, 0x88($t1) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x20($t0) - lwc1 $f10, 0x8c($t1) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x40($t3) - swc1 $f8, 0x44($t3) - addiu $sp, $sp, 0x90 - jr $ra - nop diff --git a/src/lib/mp3/lib_47550.s b/src/lib/mp3/lib_47550.s deleted file mode 100644 index c3e7b1c74..000000000 --- a/src/lib/mp3/lib_47550.s +++ /dev/null @@ -1,348 +0,0 @@ -#include "asm_helper.h" -#include "macros.inc" -.set noat -.set noreorder - -.text - -glabel func00047550 - addiu $sp, $sp, -0xd0 - or $t0, $sp, $zero - addiu $t1, $t0, 0xd0 -.L0004755c: - sw $zero, 0x0($t0) - sw $zero, 0x4($t0) - sw $zero, 0x8($t0) - sw $zero, 0xc($t0) - addiu $t0, $t0, 0x10 - bne $t0, $t1, .L0004755c - nop - or $t2, $a0, $zero - or $t3, $sp, $zero - addiu $t4, $t3, 0x40 - or $t6, $t4, $zero - addiu $t5, $zero, 0x3 -.L0004758c: - lwc1 $f4, 0x14($t2) - lwc1 $f6, 0x10($t2) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x10($t2) - lwc1 $f10, 0xc($t2) - add.s $f8, $f8, $f10 - swc1 $f4, 0x14($t2) - swc1 $f8, 0x10($t2) - lwc1 $f4, 0xc($t2) - lwc1 $f6, 0x8($t2) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x8($t2) - lwc1 $f10, 0x4($t2) - add.s $f8, $f8, $f10 - swc1 $f4, 0xc($t2) - swc1 $f8, 0x8($t2) - lwc1 $f4, 0x4($t2) - lwc1 $f6, 0x0($t2) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x14($t2) - lwc1 $f10, 0xc($t2) - add.s $f8, $f8, $f10 - swc1 $f4, 0x4($t2) - swc1 $f8, 0x14($t2) - lwc1 $f4, 0xc($t2) - lwc1 $f6, 0x4($t2) - add.s $f4, $f4, $f6 - swc1 $f4, 0xc($t2) - lwc1 $f4, 0x8($t2) - lui $at, %hi(var70059d9c) - lwc1 $f6, %lo(var70059d9c)($at) - mul.s $f6, $f4, $f6 - nop - lwc1 $f8, 0x10($t2) - lui $at, 0x3f00 - mtc1 $at, $f10 - nop - lwc1 $f16, 0x0($t2) - mul.s $f10, $f8, $f10 - nop - add.s $f18, $f16, $f10 - sub.s $f0, $f16, $f8 - swc1 $f0, 0x4($t3) - add.s $f0, $f18, $f6 - swc1 $f0, 0x0($t3) - sub.s $f0, $f18, $f6 - swc1 $f0, 0x8($t3) - lwc1 $f4, 0xc($t2) - lui $at, %hi(var70059da0) - lwc1 $f6, %lo(var70059da0)($at) - mul.s $f6, $f4, $f6 - nop - lwc1 $f8, 0x14($t2) - lui $at, 0x3f00 - mtc1 $at, $f10 - nop - lwc1 $f16, 0x4($t2) - mul.s $f10, $f8, $f10 - nop - add.s $f18, $f16, $f10 - sub.s $f0, $f16, $f8 - swc1 $f0, 0x10($t3) - add.s $f0, $f18, $f6 - swc1 $f0, 0x14($t3) - sub.s $f0, $f18, $f6 - swc1 $f0, 0xc($t3) - lwc1 $f4, 0xc($t3) - lui $at, %hi(var70059da4) - lwc1 $f6, %lo(var70059da4)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x10($t3) - lui $at, %hi(var70059da8) - lwc1 $f10, %lo(var70059da8)($at) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0xc($t3) - swc1 $f8, 0x10($t3) - lwc1 $f4, 0x14($t3) - lui $at, %hi(var70059dac) - lwc1 $f6, %lo(var70059dac)($at) - mul.s $f4, $f4, $f6 - nop - swc1 $f4, 0x14($t3) - lwc1 $f4, 0x0($t3) - lwc1 $f6, 0x14($t3) - add.s $f8, $f4, $f6 - swc1 $f8, 0x0($t3) - sub.s $f10, $f4, $f6 - swc1 $f10, 0x14($t3) - lwc1 $f4, 0x4($t3) - lwc1 $f6, 0x10($t3) - add.s $f8, $f4, $f6 - swc1 $f8, 0x4($t3) - sub.s $f8, $f4, $f6 - swc1 $f8, 0x10($t3) - lwc1 $f4, 0x8($t3) - lwc1 $f6, 0xc($t3) - add.s $f8, $f4, $f6 - swc1 $f8, 0x8($t3) - sub.s $f8, $f4, $f6 - swc1 $f8, 0xc($t3) - lwc1 $f4, 0x0($t3) - lui $at, %hi(var70059db0) - lwc1 $f6, %lo(var70059db0)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x4($t3) - lui $at, %hi(var70059db4) - lwc1 $f10, %lo(var70059db4)($at) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x0($t3) - swc1 $f8, 0x4($t3) - lwc1 $f4, 0x8($t3) - lui $at, %hi(var70059db8) - lwc1 $f6, %lo(var70059db8)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0xc($t3) - lui $at, %hi(var70059dbc) - lwc1 $f10, %lo(var70059dbc)($at) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x8($t3) - swc1 $f8, 0xc($t3) - lwc1 $f4, 0x10($t3) - lui $at, %hi(var70059dc0) - lwc1 $f6, %lo(var70059dc0)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x14($t3) - lui $at, %hi(var70059dc4) - lwc1 $f10, %lo(var70059dc4)($at) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x10($t3) - swc1 $f8, 0x14($t3) - lwc1 $f4, 0x0($t3) - lui $at, %hi(var70059dc8) - lwc1 $f6, %lo(var70059dc8)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x0($t3) - lui $at, %hi(var70059dcc) - lwc1 $f10, %lo(var70059dcc)($at) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x20($t3) - swc1 $f8, 0x24($t3) - lwc1 $f4, 0x4($t3) - lui $at, %hi(var70059dd0) - lwc1 $f6, %lo(var70059dd0)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x4($t3) - lui $at, %hi(var70059dd4) - lwc1 $f10, %lo(var70059dd4)($at) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x1c($t3) - swc1 $f8, 0x28($t3) - lwc1 $f4, 0x8($t3) - lui $at, %hi(var70059dd8) - lwc1 $f6, %lo(var70059dd8)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x8($t3) - lui $at, %hi(var70059ddc) - lwc1 $f10, %lo(var70059ddc)($at) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x18($t3) - swc1 $f8, 0x2c($t3) - lwc1 $f4, 0xc($t3) - lui $at, 0x3f80 - mtc1 $at, $f6 - nop - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x10($t3) - lui $at, %hi(var70059de0) - lwc1 $f10, %lo(var70059de0)($at) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x0($t3) - swc1 $f8, 0x4($t3) - lwc1 $f4, 0x14($t3) - lui $at, %hi(var70059de4) - lwc1 $f6, %lo(var70059de4)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x14($t3) - lui $at, %hi(var70059de8) - lwc1 $f10, %lo(var70059de8)($at) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x8($t3) - swc1 $f8, 0xc($t3) - lwc1 $f4, 0x10($t3) - lui $at, %hi(var70059dec) - lwc1 $f6, %lo(var70059dec)($at) - mul.s $f4, $f4, $f6 - nop - lwc1 $f8, 0x0($t3) - lui $at, %hi(var70059df0) - lwc1 $f10, %lo(var70059df0)($at) - mul.s $f8, $f8, $f10 - nop - swc1 $f4, 0x10($t3) - swc1 $f8, 0x14($t3) - lwc1 $f4, 0x0($t3) - lui $at, %hi(var70059df4) - lwc1 $f6, %lo(var70059df4)($at) - mul.s $f4, $f4, $f6 - nop - swc1 $f4, 0x0($t3) - lwc1 $f4, 0x18($t4) - lwc1 $f6, 0x0($t3) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x1c($t4) - lwc1 $f10, 0x4($t3) - add.s $f8, $f8, $f10 - swc1 $f4, 0x18($t4) - swc1 $f8, 0x1c($t4) - lwc1 $f4, 0x20($t4) - lwc1 $f6, 0x8($t3) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x24($t4) - lwc1 $f10, 0xc($t3) - add.s $f8, $f8, $f10 - swc1 $f4, 0x20($t4) - swc1 $f8, 0x24($t4) - lwc1 $f4, 0x28($t4) - lwc1 $f6, 0x10($t3) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x2c($t4) - lwc1 $f10, 0x14($t3) - add.s $f8, $f8, $f10 - swc1 $f4, 0x28($t4) - swc1 $f8, 0x2c($t4) - lwc1 $f4, 0x30($t4) - lwc1 $f6, 0x18($t3) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x34($t4) - lwc1 $f10, 0x1c($t3) - add.s $f8, $f8, $f10 - swc1 $f4, 0x30($t4) - swc1 $f8, 0x34($t4) - lwc1 $f4, 0x38($t4) - lwc1 $f6, 0x20($t3) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x3c($t4) - lwc1 $f10, 0x24($t3) - add.s $f8, $f8, $f10 - swc1 $f4, 0x38($t4) - swc1 $f8, 0x3c($t4) - lwc1 $f4, 0x40($t4) - lwc1 $f6, 0x28($t3) - add.s $f4, $f4, $f6 - lwc1 $f8, 0x44($t4) - lwc1 $f10, 0x2c($t3) - add.s $f8, $f8, $f10 - swc1 $f4, 0x40($t4) - swc1 $f8, 0x44($t4) - addi $t2, $t2, 0x18 - addi $t4, $t4, 0x18 - addi $t5, $t5, -1 - bnez $t5, .L0004758c - nop - or $t0, $a2, $zero - or $t1, $a3, $zero - or $t4, $t6, $zero - andi $a1, $a1, 0x1 - beqz $a1, .L00047a24 - nop - addiu $t5, $zero, 0x9 -.L000479e0: - lwc1 $f4, 0x0($t4) - lwc1 $f6, 0x0($t1) - add.s $f6, $f4, $f6 - lwc1 $f8, 0x4($t4) - neg.s $f8, $f8 - lwc1 $f10, 0x4($t1) - sub.s $f10, $f8, $f10 - swc1 $f6, 0x0($t0) - swc1 $f10, 0x4($t0) - addi $t0, $t0, 0x8 - addi $t1, $t1, 0x8 - addi $t4, $t4, 0x8 - addi $t5, $t5, -1 - bnez $t5, .L000479e0 - nop - b .L00047a50 - nop -.L00047a24: - addiu $t5, $zero, 0x12 -.L00047a28: - lwc1 $f4, 0x0($t4) - lwc1 $f6, 0x0($t1) - add.s $f4, $f4, $f6 - swc1 $f4, 0x0($t0) - addi $t0, $t0, 0x4 - addi $t1, $t1, 0x4 - addi $t4, $t4, 0x4 - addi $t5, $t5, -1 - bnez $t5, .L00047a28 - nop -.L00047a50: - or $t1, $a3, $zero - addi $t4, $t6, 0x48 - addiu $t5, $zero, 0x12 -.L00047a5c: - lwc1 $f4, 0x0($t4) - swc1 $f4, 0x0($t1) - addi $t1, $t1, 0x4 - addi $t4, $t4, 0x4 - addi $t5, $t5, -1 - bnez $t5, .L00047a5c - nop - addiu $sp, $sp, 0xd0 - jr $ra - nop diff --git a/src/lib/mp3/lib_47d20.c b/src/lib/mp3/lib_47d20.c deleted file mode 100644 index 818e87c2c..000000000 --- a/src/lib/mp3/lib_47d20.c +++ /dev/null @@ -1,60 +0,0 @@ -#include -#include "internal.h" - -f32 fabsf(f32 value); - -#ifdef __sgi -#pragma intrinsic (fabsf) -#else -#define fabsf(f) __builtin_fabsf((f32)(f)) -#endif - -f32 func00047d20(f32 arg0) -{ - f32 sp1c; - f32 sp18; - f32 sp14; - f32 sp10; - f32 sp0c; - s32 sp08; - s32 sp04; - - sp0c = fabsf(arg0); - - if (sp0c < 0.00000011920929f) { - return 1; - } - - sp04 = (s32) (sp0c / 0.6931471824646f); - - if (sp04 > 1024) { - if (arg0 >= 0) { - return MAXFLOAT; - } else { - return 0; - } - } - - sp10 = sp0c - sp04 * 0.6931471824646f; - sp08 = 1; - sp1c = 1; - sp18 = 1; - - do { - sp14 = sp1c; - sp18 *= sp10 / sp08; - sp1c += sp18; - sp08++; - } while (sp1c != sp14); - - while (sp04) { - sp1c *= 2; - sp04--; - } - - if (arg0 >= 0) { - return sp1c; - } else { - return 1 / sp1c; - } -} diff --git a/src/lib/mp3/lib_47ef0.c b/src/lib/mp3/lib_47ef0.c deleted file mode 100644 index 4b5749c19..000000000 --- a/src/lib/mp3/lib_47ef0.c +++ /dev/null @@ -1,45 +0,0 @@ -#include -#include "internal.h" - -f32 func00047ef0(f32 arg0) -{ - s32 sp14; - f32 sp10; - f32 sp0c; - f32 sp08; - f32 sp04; - - if (arg0 < 0) { - return 0; - } - - if (arg0 == 0) { - return 0; - } - - sp08 = 0; - - while (arg0 >= 2) { - arg0 /= 2; - sp08 += 0.6931471824646f; - } - - while (arg0 < 1) { - arg0 *= 2; - sp08 -= 0.6931471824646f; - } - - sp14 = 1; - sp10 = (arg0 - 1) / (arg0 + 1); - sp0c = 2 * sp10; - sp10 *= sp10; - - do { - sp04 = sp08; - sp08 += sp0c / sp14; - sp0c *= sp10; - sp14 += 2; - } while (sp08 != sp04); - - return sp08; -} diff --git a/src/lib/mp3/main.c b/src/lib/mp3/main.c deleted file mode 100644 index 479087509..000000000 --- a/src/lib/mp3/main.c +++ /dev/null @@ -1,228 +0,0 @@ -#include -#include "internal.h" -#include "mp3.h" - -#define LAYER_3 1 -#define LAYER_2 2 -#define LAYER_1 3 - -#define CRC_PROTECTED 0 -#define CRC_UNPROTECTED 1 - -extern struct mp3vars g_Mp3Vars; -extern struct asistream *g_AsiStream; - -struct mp3decfourbytes var8009c650[34]; -f32 *var8009c6d8; -f32 *var8009c6dc; - -u32 var8005f700 = 0; -u32 var8005f704 = 0; - -s32 mp3main00043dd0(struct asistream *stream) -{ - s32 sp1c = 0x1000; - s32 sp18; - - if (stream->unk201c + stream->unk3f88 > 0x1ffb) { - bcopy(&stream->unk1c[sp1c], &stream->unk1c, sp1c); - stream->unk201c -= sp1c; - stream->unk2020 -= sp1c * 8; - } - - sp18 = stream->unk04(stream->unk00, &stream->unk1c[stream->unk201c], stream->unk3f88, -1); - - if (sp18 < stream->unk3f88) { - bzero(&stream->unk1c[sp18], stream->unk3f88 - sp18); - } - - stream->unk18 += stream->unk3f88; - stream->unk201c += stream->unk3f88; - - return stream->unk201c - stream->unk3f88; -} - -bool mp3main00043ef8(struct asistream *stream, s32 arg1) -{ - s32 sp24; - s32 sp20; - s32 sp1c; - u8 mask; - - if (arg1 != -1) { - stream->unk18 = arg1; - } - - sp24 = arg1; - sp20 = 0; - mask = 0xff; - - while (true) { - sp1c = stream->unk04(stream->unk00, &stream->buffer[sp20], 1, sp24); - - if (sp1c <= 0) { - return false; - } - - sp24 = -1; - stream->unk18++; - - if ((stream->buffer[sp20] & mask) != mask) { - mask = 0xff; - sp20 = 0; - continue; - } - - sp20++; - - if (mask == 0xf0) { - break; - } - - mask = 0xf0; - } - - sp1c = stream->unk04(stream->unk00, &stream->buffer[2], 2, -1); - - if (sp1c <= 0) { - return false; - } - - stream->unk18 += 2; - stream->count = 12; - - stream->version = mp3utilGetBits(stream->buffer, &stream->count, 1); - stream->layer = mp3utilGetBits(stream->buffer, &stream->count, 2); - stream->crctype = mp3utilGetBits(stream->buffer, &stream->count, 1); - stream->bitrateindex = mp3utilGetBits(stream->buffer, &stream->count, 4); - stream->samplerateindex = mp3utilGetBits(stream->buffer, &stream->count, 2); - stream->haspadding = mp3utilGetBits(stream->buffer, &stream->count, 1); - stream->privatebit = mp3utilGetBits(stream->buffer, &stream->count, 1); - stream->channelmode = mp3utilGetBits(stream->buffer, &stream->count, 2); - - stream->unk3bc4 = mp3utilGetBits(stream->buffer, &stream->count, 2); - stream->unk3bc8 = mp3utilGetBits(stream->buffer, &stream->count, 1); - stream->unk3bcc = mp3utilGetBits(stream->buffer, &stream->count, 1); - stream->unk3bd0 = mp3utilGetBits(stream->buffer, &stream->count, 2); - - if (stream->bitrateindex == 15 || stream->samplerateindex == 3) { - return mp3main00043ef8(stream, -1); - } - - if (!stream->doneinitial) { - stream->doneinitial = true; - - stream->initialversion = stream->version; - stream->initiallayer = stream->layer; - stream->initialcrctype = stream->crctype; - stream->initialsamplerateindex = stream->samplerateindex; - stream->initialchannelmode = stream->channelmode; - stream->unk3bec = stream->unk3bc8; - stream->unk3bf0 = stream->unk3bcc; - } else if (stream->version != stream->initialversion - || stream->layer != stream->initiallayer - || stream->crctype != stream->initialcrctype - || stream->samplerateindex != stream->initialsamplerateindex - || stream->channelmode != stream->initialchannelmode - || stream->unk3bcc != stream->unk3bf0) { - return mp3main00043ef8(stream, -1); - } - - stream->unk2068 = 4; - - if (stream->crctype == CRC_PROTECTED) { - sp1c = stream->unk04(stream->unk00, &stream->buffer[4], 2, -1); - - if (sp1c <= 0) { - return false; - } - - stream->unk18 += 2; - stream->count += 16; - stream->unk2068 = 6; - } - - if (stream->layer == LAYER_3) { - stream->unk8478 = mp3decDecodeFrame; - stream->unk847c = mp3decSetSideInfo; - } else if (stream->layer == LAYER_2) { - return false; - } else if (stream->layer == LAYER_1) { - return false; - } - - if (stream->unk847c(stream) == 0) { - return false; - } - - return true; -} - -u32 mp3mainInit(void) -{ - if (var8005f704++) { - return 2; - } - - mp3decInit(); - return 0; -} - -struct asistream *mp3main00044460(s32 arg0, void *arg1, s32 arg2) -{ - struct asistream *stream = g_AsiStream; - - if (stream == NULL) { - return NULL; - } - - stream->unk0c = -1; - stream->unk10 = -1; - stream->unk14 = -1; - - stream->unk00 = arg0; - stream->unk04 = arg1; - stream->unk08 = arg2; - - stream->unk201c = 0; - stream->unk2020 = 0; - stream->unk3ba0 = 0; - - mp3main00043ef8(stream, 0); - - stream->unk8474 = 0; - - bzero(&stream->unk6a64, sizeof(stream->unk6a64[0])); - - return stream; -} - -s32 mp3main0004453c(struct asistream *streamptr, struct mp3thing **arg1, s32 *arg2) -{ - struct asistream *stream = streamptr; - s32 result; - - stream->unk3ba0++; - - if (stream->unk3ba0 > 5) { - stream->unk3ba0 = 0; - } - - if (!mp3main00043ef8(stream, stream->unk8474)) { - g_Mp3Vars.var8009c3e0 = 3; - return 0; - } - - stream->unk8474 = -1; - - result = stream->unk8478(stream); - - if (!result) { - // empty - } else { - *arg1 = &stream->unk2070[stream->unk3ba0]; - *arg2 = stream->numchannels; - } - - return result; -} diff --git a/src/lib/mp3/mp3.h b/src/lib/mp3/mp3.h deleted file mode 100644 index 14ac2c6f6..000000000 --- a/src/lib/mp3/mp3.h +++ /dev/null @@ -1,103 +0,0 @@ -#ifndef _IN_LIB_MP3_MP3_H -#define _IN_LIB_MP3_MP3_H -#include -#include "types.h" - -struct mp3decfourbytes { - u8 bytes[2]; - s8 unk02; - s8 unk03; -}; - -struct asistream_scalefac { - /*0x3d08*/ u32 l[22]; - /*0x3d60*/ u32 unk3d60; - /*0x3d64*/ u32 s[3][13]; -}; - -struct asistream_4f64 { - f32 unk00[18]; -}; - -struct asistream { - /*0x0000*/ s32 unk00; - /*0x0004*/ s32 (*unk04)(s32 arg0, void *arg1, s32 arg2, s32 arg3); - /*0x0008*/ s32 unk08; - /*0x000c*/ s32 unk0c; - /*0x0010*/ s32 unk10; - /*0x0014*/ s32 unk14; - /*0x0018*/ s32 unk18; - /*0x2000*/ u8 unk1c[0x2000]; - /*0x201c*/ s32 unk201c; - /*0x2020*/ s32 unk2020; - /*0x2024*/ u8 buffer[0x40]; - /*0x2064*/ s32 count; - /*0x2068*/ u32 unk2068; - /*0x206c*/ u32 unk206c; - /*0x2070*/ struct mp3thing unk2070[6]; - /*0x3ba0*/ s32 unk3ba0; - /*0x3ba4*/ u32 version; - /*0x3ba8*/ u32 layer; - /*0x3bac*/ u32 crctype; - /*0x3bb0*/ u32 bitrateindex; - /*0x3bb4*/ u32 samplerateindex; - /*0x3bb8*/ u32 haspadding; - /*0x3bbc*/ u32 privatebit; - /*0x3bc0*/ u32 channelmode; - /*0x3bc4*/ u32 unk3bc4; - /*0x3bc8*/ u32 unk3bc8; - /*0x3bcc*/ u32 unk3bcc; - /*0x3bd0*/ u32 unk3bd0; - /*0x3bd4*/ bool doneinitial; - /*0x3bd8*/ u32 initialversion; - /*0x3bdc*/ u32 initiallayer; - /*0x3be0*/ u32 initialcrctype; - /*0x3be4*/ u32 initialsamplerateindex; - /*0x3be8*/ u32 initialchannelmode; - /*0x3bec*/ u32 unk3bec; - /*0x3bf0*/ u32 unk3bf0; - /*0x3bf4*/ u32 main_data_begin; - /*0x3bf8*/ u32 scfsi[1][32]; - /*0x3c78*/ u32 part2_3_length[2][1]; - /*0x3c80*/ u32 big_value[2][1]; - /*0x3c88*/ s32 global_gain[2][1]; - /*0x3c90*/ u32 scalefac_compress[2][1]; - /*0x3c98*/ u32 window_switching[2][1]; - /*0x3ca0*/ u32 block_type[2][1]; - /*0x3ca8*/ u32 mixed_block_flag[2][1]; - /*0x3cb0*/ u32 table_select[2][1][3]; - /*0x3cc8*/ u32 subblock_gain[2][1][3]; - /*0x3ce0*/ u32 region0_count[2][1]; - /*0x3ce8*/ u32 region1_count[2][1]; - /*0x3cf0*/ u32 preflag[2][1]; - /*0x3cf8*/ u32 scalefac_scale[2][1]; - /*0x3d00*/ u32 count1table_select[2][1]; - struct asistream_scalefac scalefac[2][1]; - /*0x3ef8*/ u32 unk3ef8; - /*0x3efc*/ u32 unk3efc[6]; - /*0x3f14*/ u32 unk3f14[26]; - /*0x3f7c*/ s32 unk3f7c; - /*0x3f80*/ s32 unk3f80; - /*0x3f84*/ s32 unk3f84; - /*0x3f88*/ s32 unk3f88; - /*0x3f8c*/ s32 numchannels; - /*0x3f90*/ s32 numgranules; - /*0x3f94*/ s16 unk3f94[1][578]; - /*0x4418*/ u8 unk4418[1][578]; - /*0x465c*/ s32 unk465c[1]; - /*0x4660*/ s32 unk4660[1]; - /*0x4664*/ struct asistream_4f64 unk4664[1][32]; - /*0x4f64*/ struct asistream_4f64 unk4f64[2][32]; - /*0x6164*/ u8 unk6164[0x900]; - /*0x6a64*/ struct asistream_4f64 unk6a64[2][32]; - /*0x7c64*/ u8 unk7c64[0x810]; - /*0x8474*/ s32 unk8474; - /*0x8478*/ bool (*unk8478)(struct asistream *stream); - /*0x847c*/ bool (*unk847c)(struct asistream *stream); -}; - -u32 mp3mainInit(void); -struct asistream *mp3main00044460(s32 arg0, void *arg1, s32 arg2); -s32 mp3main0004453c(struct asistream *stream, struct mp3thing **arg1, s32 *arg2); - -#endif diff --git a/src/lib/mp3/util.s b/src/lib/mp3/util.s deleted file mode 100644 index eebaaf773..000000000 --- a/src/lib/mp3/util.s +++ /dev/null @@ -1,321 +0,0 @@ -#include "macros.inc" -.set noat -.set noreorder - -.text - -glabel mp3util000461c0 - andi $t4, $t0, 0x7 - addiu $t3, $zero, 0x8 - lbu $t5, 0x0($a0) - lbu $t2, 0x1($a0) - sll $t1, $t5, 0x8 - or $t1, $t1, $t2 - sub $t3, $t3, $t4 - srlv $t1, $t1, $t3 - andi $t1, $t1, 0xff - sll $t3, $a2, 0x8 - add $t3, $t3, $t1 - lui $t2, %hi(var8005f6fc) - addiu $t2, $t2, %lo(var8005f6fc) - lw $t2, 0x0($t2) - add $t2, $t3, $t2 - lbu $t2, 0x0($t2) - beqz $t2, .L00046238 - nop - add $t0, $t0, $t2 - add $t4, $t4, $t2 - srl $t4, $t4, 0x3 - add $a0, $a0, $t4 - lui $t2, %hi(var8005f6f8) - addiu $t2, $t2, %lo(var8005f6f8) - lw $t2, 0x0($t2) - add $t2, $t3, $t2 - lbu $t2, 0x0($t2) - srl $t1, $t2, 0x4 - jr $ra - andi $v0, $t2, 0xf -.L00046238: - add $t7, $zero, $s0 - andi $t1, $t0, 0x7 - addiu $t2, $zero, 0x80 - srlv $t2, $t2, $t1 - addiu $t6, $zero, -1 -.L0004624c: - and $t4, $t5, $t2 - beqzl $t4, .L0004625c - lbu $t4, 0x0($t7) - lbu $t4, 0x1($t7) -.L0004625c: - srl $t2, $t2, 0x1 - sll $t4, $t4, 0x2 - bnez $t2, .L00046278 - add $t7, $t7, $t4 - addiu $t2, $zero, 0x80 - addi $a0, $a0, 0x1 - lbu $t5, 0x0($a0) -.L00046278: - lb $t1, 0x2($t7) - beq $t1, $t6, .L0004624c - addi $t0, $t0, 0x1 - add $v0, $zero, $t1 - jr $ra - lb $t1, 0x3($t7) - -glabel mp3util00046290 - lwl $t1, 0x0($a0) - lwr $t1, 0x3($a0) - andi $t2, $t0, 0x7 - add $t2, $t2, $s1 - srl $t2, $t2, 0x3 - add $a0, $a0, $t2 - andi $t2, $t0, 0x7 - sllv $t1, $t1, $t2 - addiu $t2, $zero, 0x20 - sub $t2, $t2, $s1 - srlv $v0, $t1, $t2 - jr $ra - add $t0, $t0, $s1 - -glabel mp3utilGetBits - lw $t0, 0x0($a1) - srl $t1, $t0, 0x3 - add $a0, $a0, $t1 - lwl $t1, 0x0($a0) - lwr $t1, 0x3($a0) - andi $t2, $t0, 0x7 - sllv $t1, $t1, $t2 - addiu $t2, $zero, 0x20 - sub $t2, $t2, $a2 - srlv $v0, $t1, $t2 - add $t0, $t0, $a2 - jr $ra - sw $t0, 0x0($a1) - -glabel mp3util000462f8 - addiu $sp, $sp, -48 - sw $ra, 0x0($sp) - sw $s0, 0x4($sp) - sw $s1, 0x8($sp) - sw $s2, 0xc($sp) - sw $s3, 0x10($sp) - sw $s4, 0x14($sp) - sw $s5, 0x18($sp) - sw $s6, 0x1c($sp) - sw $s7, 0x20($sp) - sw $s8, 0x24($sp) - sw $gp, 0x28($sp) - sw $ra, 0x2c($sp) - lw $t0, 0x0($a1) - sll $s0, $a2, 0x2 - lui $t1, %hi(var8009c650) - addiu $t1, $t1, %lo(var8009c650) - add $s0, $s0, $t1 - lw $s0, 0x0($s0) - lw $s1, 0x40($sp) - lw $s2, 0x44($sp) - lw $s3, 0x48($sp) - lw $s4, 0x4c($sp) - lw $s3, 0x0($s3) - lw $s4, 0x0($s4) - srl $t1, $t0, 0x3 - add $a0, $a0, $t1 - sub $t1, $s2, $a3 - blez $t1, .L00046458 - nop -.L00046370: - jal mp3util000461c0 - nop - beqz $s1, .L00046398 - add $s6, $zero, $t1 - addiu $t2, $zero, 0xf - bne $v0, $t2, .L00046398 - nop - jal mp3util00046290 - nop - addi $v0, $v0, 0xf -.L00046398: - beqzl $v0, .L000463d8 - sb $zero, 0x0($s4) - lb $t1, 0x0($a0) - addiu $t3, $zero, 0x7 - andi $t2, $t0, 0x7 - addi $t4, $t2, 0x1 - srl $t4, $t4, 0x3 - add $a0, $a0, $t4 - sub $t2, $t3, $t2 - srlv $t1, $t1, $t2 - andi $t1, $t1, 0x1 - addi $t0, $t0, 0x1 - addiu $t2, $zero, 0x1 - beqzl $t1, .L000463d8 - sb $zero, 0x0($s4) - sb $t2, 0x0($s4) -.L000463d8: - beqz $s1, .L000463fc - add $s7, $zero, $v0 - addiu $t2, $zero, 0xf - bne $s6, $t2, .L000463fc - nop - jal mp3util00046290 - nop - addi $s6, $v0, 0xf - add $v0, $zero, $s7 -.L000463fc: - sh $v0, 0x0($s3) - sh $s6, 0x2($s3) - addi $s3, $s3, 0x4 - beqzl $s6, .L00046448 - sb $zero, 0x1($s4) - lb $t1, 0x0($a0) - addiu $t3, $zero, 0x7 - andi $t2, $t0, 0x7 - addi $t4, $t2, 0x1 - srl $t4, $t4, 0x3 - add $a0, $a0, $t4 - sub $t2, $t3, $t2 - srlv $t1, $t1, $t2 - andi $t1, $t1, 0x1 - addi $t0, $t0, 0x1 - addiu $t2, $zero, 0x1 - beqzl $t1, .L00046448 - sb $zero, 0x1($s4) - sb $t2, 0x1($s4) -.L00046448: - addi $a3, $a3, 0x2 - sub $t1, $s2, $a3 - bgtz $t1, .L00046370 - addi $s4, $s4, 0x2 -.L00046458: - sw $t0, 0x0($a1) - lw $t0, 0x48($sp) - lw $t1, 0x4c($sp) - sw $s3, 0x0($t0) - sw $s4, 0x0($t1) - lw $ra, 0x0($sp) - lw $s0, 0x4($sp) - lw $s1, 0x8($sp) - lw $s2, 0xc($sp) - lw $s3, 0x10($sp) - lw $s4, 0x14($sp) - lw $s5, 0x18($sp) - lw $s6, 0x1c($sp) - lw $s7, 0x20($sp) - lw $s8, 0x24($sp) - lw $gp, 0x28($sp) - lw $ra, 0x2c($sp) - addiu $sp, $sp, 0x30 - jr $ra - add $v0, $zero, $a3 - -glabel mp3util000464a8 - addiu $sp, $sp, -48 - sw $ra, 0x0($sp) - sw $s0, 0x4($sp) - sw $s1, 0x8($sp) - sw $s2, 0xc($sp) - sw $s3, 0x10($sp) - sw $s4, 0x14($sp) - sw $s5, 0x18($sp) - sw $s6, 0x1c($sp) - sw $s7, 0x20($sp) - sw $s8, 0x24($sp) - sw $gp, 0x28($sp) - sw $ra, 0x2c($sp) - lw $t0, 0x0($a1) - sll $s0, $a2, 0x2 - lui $t1, %hi(var8009c650) - addiu $t1, $t1, %lo(var8009c650) - add $s0, $s0, $t1 - lw $s0, 0x0($s0) - lw $s2, 0x40($sp) - lw $s3, 0x44($sp) - lw $s4, 0x48($sp) - lw $s3, 0x0($s3) - lw $s4, 0x0($s4) - srl $t1, $t0, 0x3 - add $a0, $a0, $t1 - sub $t1, $s2, $t0 - blez $t1, .L000465f4 - nop - addi $t1, $a3, -576 - bgez $t1, .L000465f4 - nop -.L00046528: - jal mp3util000461c0 - nop - srl $t3, $v0, 0x3 - andi $t3, $t3, 0x1 - srl $t4, $v0, 0x2 - andi $t4, $t4, 0x1 - srl $t5, $v0, 0x1 - andi $t5, $t5, 0x1 - andi $t6, $v0, 0x1 - sh $t3, 0x0($s3) - sh $t4, 0x2($s3) - sh $t5, 0x4($s3) - sh $t6, 0x6($s3) - jal mp3util00046290 - addiu $s1, $zero, 0x4 - addiu $s1, $zero, 0x3 - sb $v0, 0x0($s4) - beqz $t3, .L0004657c - srlv $t1, $v0, $s1 - and $t3, $t3, $t1 - addi $s1, $s1, -1 -.L0004657c: - beqz $t4, .L00046590 - sb $t3, 0x0($s4) - srlv $t1, $v0, $s1 - and $t4, $t4, $t1 - addi $s1, $s1, -1 -.L00046590: - beqz $t5, .L000465a4 - sb $t4, 0x1($s4) - srlv $t1, $v0, $s1 - and $t5, $t5, $t1 - addi $s1, $s1, -1 -.L000465a4: - beqz $t6, .L000465b8 - sb $t5, 0x2($s4) - srlv $t1, $v0, $s1 - and $t6, $t6, $t1 - addi $s1, $s1, -1 -.L000465b8: - sb $t6, 0x3($s4) - addi $s1, $s1, 0x1 - andi $t1, $t0, 0x7 - sub $t1, $t1, $s1 - bgez $t1, .L000465d4 - sub $t0, $t0, $s1 - addi $a0, $a0, -1 -.L000465d4: - addi $s3, $s3, 0x8 - addi $s4, $s4, 0x4 - addi $a3, $a3, 0x4 - addi $t1, $a3, -576 - bgez $t1, .L000465f4 - sub $t1, $s2, $t0 - bgtz $t1, .L00046528 - nop -.L000465f4: - sw $t0, 0x0($a1) - lw $t0, 0x44($sp) - lw $t1, 0x48($sp) - sw $s3, 0x0($t0) - sw $s4, 0x0($t1) - lw $ra, 0x0($sp) - lw $s0, 0x4($sp) - lw $s1, 0x8($sp) - lw $s2, 0xc($sp) - lw $s3, 0x10($sp) - lw $s4, 0x14($sp) - lw $s5, 0x18($sp) - lw $s6, 0x1c($sp) - lw $s7, 0x20($sp) - lw $s8, 0x24($sp) - lw $gp, 0x28($sp) - lw $ra, 0x2c($sp) - addiu $sp, $sp, 0x30 - jr $ra - add $v0, $zero, $a3 diff --git a/src/lib/naudio/n_csplayer.c b/src/lib/naudio/n_csplayer.c index 9eaf4c694..144bfd0ad 100644 --- a/src/lib/naudio/n_csplayer.c +++ b/src/lib/naudio/n_csplayer.c @@ -489,7 +489,6 @@ void func00034fb8(N_ALCSPlayer *seqp, u8 channel) } } -void sndStartMp3ByFilenum(u8 arg0); f32 _depth2Cents(u8 arg0); void __n_CSPHandleMIDIMsg(N_ALCSPlayer *seqp, N_ALEvent *event) @@ -969,9 +968,6 @@ void __n_CSPHandleMIDIMsg(N_ALCSPlayer *seqp, N_ALEvent *event) seqp->chanState[chan].unk0b = byte2; } break; - case (AL_MIDI_FX_CTRL_6): - sndStartMp3ByFilenum(byte2); - break; case (0x20): seqp->chanState[chan].unk32 = byte2; break; diff --git a/src/lib/naudio/n_mainbus.c b/src/lib/naudio/n_mainbus.c index bba347bbe..6b34fb79d 100644 --- a/src/lib/naudio/n_mainbus.c +++ b/src/lib/naudio/n_mainbus.c @@ -1,7 +1,6 @@ #include #include "n_synthInternals.h" -s32 func00037fc0(s32 arg0, Acmd **cmd); void func0003ba64(struct fx *fx, f32 outputrate); Acmd *n_alMainBusPull(s32 sampleOffset, Acmd *p) @@ -9,9 +8,9 @@ Acmd *n_alMainBusPull(s32 sampleOffset, Acmd *p) Acmd *ptr = p; s32 i; - if (!func00037fc0(FIXED_SAMPLE, &ptr)) { + //if (!func00037fc0(FIXED_SAMPLE, &ptr)) { aClearBuffer(ptr++, N_AL_MAIN_L_OUT, N_AL_DIVIDED << 1); - } + //} for (i = 0; i < n_syn->maxAuxBusses; i++) { ptr = (n_syn->mainBus->filter.handler)(sampleOffset, ptr, i); diff --git a/src/lib/snd.c b/src/lib/snd.c index c5b80cc5f..dcd0f5367 100644 --- a/src/lib/snd.c +++ b/src/lib/snd.c @@ -15,30 +15,15 @@ #include "lib/str.h" #include "lib/lib_2fc60.h" #include "lib/lib_317f0.h" -#include "lib/mp3.h" #include "lib/lib_39c80.h" #include "lib/speaker.h" #include "data.h" #include "types.h" -struct curmp3 { - union soundnumhack sfxref; - u32 playing; - u32 unk08; - s32 responsetimer240; - s32 prevwhisper; - s32 prevacknowledge; - s32 prevgreeting; - u32 romaddr; - u32 romsize; - s32 responsetype; -}; - s32 g_NumSounds; u32 *g_ALSoundRomOffsets; s32 g_SndMaxFxBusses; u32 var80094eac; -struct curmp3 g_SndCurMp3; struct seqinstance g_SeqInstances[3]; ALHeap g_SndHeap; u32 var80095200; @@ -66,7 +51,6 @@ struct sndstate *g_SndUfoHandle = NULL; u16 g_SfxVolume = 32767; s32 g_SoundMode = (VERSION >= VERSION_NTSC_1_0 ? SOUNDMODE_STEREO : SOUNDMODE_SURROUND); -bool g_SndMp3Enabled = false; #if VERSION >= VERSION_NTSC_1_0 s32 var8005ddd4 = 0; @@ -848,11 +832,6 @@ extern u8 _seqctlSegmentRomEnd; extern u8 _seqtblSegmentRomStart; extern u8 _sequencesSegmentRomStart; -bool sndIsPlayingMp3(void) -{ - return g_SndCurMp3.playing; -} - u16 snd0000e9dc(void) { #if VERSION >= VERSION_NTSC_1_0 @@ -902,20 +881,6 @@ void snd0000ea80(u16 volume) } } -void sndResetCurMp3(void) -{ - g_SndCurMp3.sfxref.id = 0; - g_SndCurMp3.sfxref.mp3priority = 0; - g_SndCurMp3.sfxref.unk02 = 0; - g_SndCurMp3.sfxref.hasconfig = false; - g_SndCurMp3.playing = false; - g_SndCurMp3.unk08 = 0; - g_SndCurMp3.responsetimer240 = -1; - g_SndCurMp3.prevwhisper = -1; - g_SndCurMp3.prevacknowledge = -1; - g_SndCurMp3.prevgreeting = -1; -} - void sndLoadSfxCtl(void) { s32 i; @@ -1300,10 +1265,6 @@ ALSound *sndLoadSound(s16 soundnum) tmp.packed = soundnum; sfxnum = tmp.id; - if (sndIsMp3(tmp.packed)) { - return NULL; - } - // If this sound doesn't exist in the cache cacheindex = g_SndCache.indexes[sfxnum]; @@ -1437,15 +1398,8 @@ void sndInit(void) heaplen -= 1024 * 137; heaplen -= 1024 * 12; heaplen -= 1024 * 23; - - g_SndMp3Enabled = false; } else { - g_SndMp3Enabled = true; g_SndMaxFxBusses = 2; - - if (argFindByPrefix(1, "-nomp3")) { - g_SndMp3Enabled = false; - } } if (!g_SndDisabled) { @@ -1525,16 +1479,6 @@ void sndInit(void) amgrCreate(&synconfig); #endif - if (g_SndMp3Enabled) { - osSyncPrintf("RWI : Initialising the new and improved MP3 player\n"); - - mp3Init(&g_SndHeap); - func00037f08(0x7fff, 1); - func00037f5c(0, true); - - osSyncPrintf("RWI : MP3 player Initialising Done\n"); - } - for (i = 0; i < 3; i++) { seqInit(&g_SeqInstances[i]); } @@ -1554,27 +1498,8 @@ void sndInit(void) } } -bool sndIsMp3(s16 soundnum) -{ - union soundnumhack tmp; - tmp.packed = soundnum; - - return tmp.mp3priority != 0; -} - bool snd0000fbc4(s16 arg0) { - if (!g_SndDisabled && g_SndMp3Enabled) { - if (func00037ea4() && g_SndCurMp3.unk08 != 0) { - return false; - } - - func00037e1c(); - - g_SndCurMp3.playing = false; - g_SndCurMp3.responsetimer240 = -1; - } - return true; } @@ -1794,20 +1719,6 @@ void snd0000fe18(void) // empty } -void snd0000fe20(void) -{ - if (g_SndMp3Enabled) { - func00037e38(); - } -} - -void snd0000fe50(void) -{ - if (g_SndMp3Enabled) { - func00037e68(); - } -} - void snd0000fe80(void) { // empty @@ -1871,105 +1782,6 @@ void sndTick(void) var8005edec = var8005ddd8; } #endif - - if (!g_SndDisabled && g_SndMp3Enabled) { - if (g_Vars.stagenum == STAGE_AIRFORCEONE) { - sndTickNosedive(); - } else if (g_Vars.stagenum == STAGE_ESCAPE) { - sndTickUfo(); - } - - if (g_Vars.tickmode == TICKMODE_CUTSCENE) { - s0 = musicGetVolume() > g_SfxVolume ? musicGetVolume() : g_SfxVolume; - - if (s0 != snd0000e9dc()) { - snd0000ea80(s0); - } - } else { - if (g_SfxVolume != snd0000e9dc()) { - snd0000ea80(g_SfxVolume); - } - } - - if (g_SndGuardStringPtr != NULL) { - if (strcmp(g_SndGuardStringPtr, g_SndGuardString) != 0) { -#if VERSION < VERSION_NTSC_1_0 - crashSetMessage("Snd Heap Check FAILED"); - CRASH(); -#endif - } - } - - if (func00037ea4() == 0 && g_SndCurMp3.playing) { - if (g_SndCurMp3.unk08) { - mp3PlayFile(g_SndCurMp3.romaddr, g_SndCurMp3.romsize); - return; - } - - switch (g_SndCurMp3.responsetype) { - case MP3RESPONSETYPE_ACKNOWLEDGE: - case MP3RESPONSETYPE_WHISPER: - g_SndCurMp3.responsetimer240 = TICKS(60); - break; - case MP3RESPONSETYPE_GREETING: - g_SndCurMp3.responsetimer240 = 1; - break; - } - - g_SndCurMp3.playing = false; - return; - } - - if (g_SndCurMp3.responsetimer240 > 0) { - g_SndCurMp3.responsetimer240 -= g_Vars.lvupdate240; - - if (g_SndCurMp3.responsetimer240 <= 0) { - if (g_SndCurMp3.responsetype == MP3RESPONSETYPE_WHISPER) { - do { - index = random() % 4; - } while (index == g_SndCurMp3.prevwhisper); - - g_SndCurMp3.prevwhisper = index; - - switch (index) { - case 0: sp50.packed = MP3_JO_WHISPER_RECEIVED; break; - case 1: sp50.packed = MP3_JO_WHISPER_UNDERSTOOD; break; - case 2: sp50.packed = MP3_JO_WHISPER_AFFIRMATIVE; break; - case 3: sp50.packed = MP3_JO_WHISPER_CONFIRMED; break; - } - } else if (g_SndCurMp3.responsetype == MP3RESPONSETYPE_ACKNOWLEDGE) { - do { - index = random() % 4; - } while (index == g_SndCurMp3.prevacknowledge); - - g_SndCurMp3.prevacknowledge = index; - - switch (index) { - case 0: sp50.packed = MP3_JO_ACKNOWLEDGE_CONFIRMED; break; - case 1: sp50.packed = MP3_JO_ACKNOWLEDGE_UNDERSTOOD; break; - case 2: sp50.packed = MP3_JO_ACKNOWLEDGE_AFFIRMATIVE; break; - case 3: sp50.packed = MP3_JO_ACKNOWLEDGE_RECEIVED; break; - } - } else if (g_SndCurMp3.responsetype == MP3RESPONSETYPE_GREETING) { - do { - index = random() % 4; - } while (index == g_SndCurMp3.prevgreeting); - - g_SndCurMp3.prevgreeting = index; - - switch (index) { - case 0: sp50.packed = MP3_JO_GREETING_HELLO; break; - case 1: sp50.packed = MP3_JO_GREETING_HI; break; - case 2: sp50.packed = MP3_JO_GREETING_HEY; break; - case 3: sp50.packed = MP3_JO_GREETING_HIYA; break; - } - } - - g_SndCurMp3.responsetimer240 = -1; - sndStart(0, sp50.packed, 0, -1, -1, -1.0f, -1, -1); - } - } - } } s16 snd0001034c(s16 sfxnum) @@ -1989,20 +1801,6 @@ bool sndIsDisabled(void) return g_SndDisabled; } -void sndStartMp3ByFilenum(u32 filenum) -{ - union soundnumhack sfxref; - - if (!g_SndDisabled && g_SndMp3Enabled) { - sfxref.packed = 0; - sfxref.unk02 = 0; - sfxref.mp3priority = 1; // high priority - sfxref.id = filenum; - - sndStart(0, sfxref.packed, NULL, -1, -1, -1, -1, -1); - } -} - /** * Return true if the player has the language filter enabled * and the given audio ID is one that should be filtered out. @@ -2092,11 +1890,6 @@ void sndAdjust(struct sndstate **handle, s32 arg1, s32 arg2, s32 pan, s32 soundn if (arg1 != 0) { if (arg2 != -1) { arg2 = arg2 * snd0000e9dc() / 32767; - func00037f08(arg2, true); - } - - if (pan != -1) { - func00037f5c(pan, true); } } @@ -2212,16 +2005,6 @@ struct sndstate *sndStart(s32 arg0, s16 sound, struct sndstate **handle, s32 arg return NULL; } - if (sndIsMp3(sp40.packed)) { - sndStartMp3(sp40.packed, sp3a, sp3d, 0); - - if (handle != NULL) { - *handle = NULL; - } - - return NULL; - } - #if VERSION >= VERSION_NTSC_1_0 if (sp40.id < (u32)g_NumSounds) { return func00033820(arg0, sp40.id, sp3a, sp3d & 0x7f, sp34, sp3f, IS4MB() ? 0 : sp3e, handle); @@ -2232,245 +2015,3 @@ struct sndstate *sndStart(s32 arg0, s16 sound, struct sndstate **handle, s32 arg return func00033820(arg0, sp40.id, sp3a, sp3d & 0x7f, sp34, sp3f, IS4MB() ? 0 : sp3e, handle); #endif } - -const char var70053be0[] = "Snd_Play_Universal : Overriding -> Link = %d\n"; - -#if VERSION < VERSION_NTSC_1_0 -const char var700552f0nb[] = "Snd_Play_Mpeg : sndId=%d, vol=%d, pan=%d\n"; -#endif - -const char var70053c10[] = "Snd_Play_Mpeg : SYSTEM IS DISABLED\n"; -const char var70053c34[] = "Snd_Play_Mpeg : Lib called -> Adr=%x\n"; -const char var70053c5c[] = "Snd_Play_Mpeg : Chunk size -> Adr=%x\n"; - -void sndStartMp3(s16 soundnum, s32 arg1, s32 arg2, s32 arg3) -{ - union soundnumhack sp24; - union soundnumhack sp20; - - sp24.packed = soundnum; - - if (!g_SndDisabled) { - if (sp24.hasconfig) { - sp20.packed = g_AudioRussMappings[sp24.confignum].soundnum; - sp20.hasconfig = false; - } else { - sp20.packed = soundnum; - } - - if (!g_SndCurMp3.playing - || ((sp20.mp3priority != 1 || g_SndCurMp3.sfxref.mp3priority != 1) - && sp20.mp3priority <= g_SndCurMp3.sfxref.mp3priority)) { - if (sp24.hasconfig) { - if (g_AudioConfigs[sp24.confignum].unk10 != -1) { - arg1 = g_AudioConfigs[sp24.confignum].unk10 * 32767 / 100; - } - - if (g_AudioConfigs[sp24.confignum].unk14 != -1) { - arg2 = g_AudioConfigs[sp24.confignum].unk14; - } - - // This is the same thing again - if (g_AudioConfigs[sp24.confignum].unk14 != -1) { - arg2 = g_AudioConfigs[sp24.confignum].unk14; - } - - if (g_Vars.langfilteron && (g_AudioConfigs[sp24.confignum].flags & AUDIOCONFIGFLAG_OFFENSIVE)) { - arg1 = 0; - } - } - - arg1 = arg1 * snd0000e9dc() / 0x7fff; - - g_SndCurMp3.romaddr = fileGetRomAddress(sp20.id); - g_SndCurMp3.romsize = fileGetRomSize(sp20.id); - - func00037f08(arg1, true); - func00037f5c(arg2, true); - - mp3PlayFile(g_SndCurMp3.romaddr, g_SndCurMp3.romsize); - - func00037f08(arg1, true); - func00037f5c(arg2, true); - - g_SndCurMp3.sfxref.packed = sp20.packed; - g_SndCurMp3.playing = true; - g_SndCurMp3.responsetimer240 = -1; - g_SndCurMp3.responsetype = MP3RESPONSETYPE_NONE; - - if (g_SndCurMp3.sfxref.unk02 == 2) { - g_SndCurMp3.responsetype = MP3RESPONSETYPE_ACKNOWLEDGE; - } else if (g_SndCurMp3.sfxref.unk02 == 1) { - g_SndCurMp3.responsetype = MP3RESPONSETYPE_WHISPER; - } - - if ((sp24.hasconfig && (g_AudioConfigs[sp24.confignum].flags & AUDIOCONFIGFLAG_04)) || (arg3 & 1)) { - g_SndCurMp3.responsetype = MP3RESPONSETYPE_GREETING; - } - } - } -} - -void sndPlayNosedive(s32 seconds) -{ - g_SndNosediveDuration240 = seconds * TICKS(240); - g_SndNosediveAge240 = 0; - g_SndNosediveVolume = 0; - g_SndNosediveHandle = NULL; -} - -void sndStopNosedive(void) -{ - if (g_SndNosediveAge240 != -1) { - g_SndNosediveAge240 = g_SndNosediveDuration240 + 1; - } -} - -void sndTickNosedive(void) -{ - f32 percentage; - - if (g_SndNosediveAge240 != -1) { - g_SndNosediveAge240 += g_Vars.lvupdate240; - - percentage = (f32)g_SndNosediveAge240 / (f32)g_SndNosediveDuration240; - - if (percentage < 1.0f) { // less than 100% complete - percentage += 0.44f; - - if (lvIsPaused()) { - // Fade out volume during pause instead of stopping abruptly - if (g_SndNosediveVolume > 0) { - g_SndNosediveVolume -= g_Vars.diffframe240 * PALUP(80); - - if (g_SndNosediveVolume < 0) { - g_SndNosediveVolume = 0; - } - } - - if (g_SndNosediveVolume) { - sndAdjust(&g_SndNosediveHandle, 0, g_SndNosediveVolume, 64, -1, percentage, 0, -1, 1); - } else if (g_SndNosediveHandle != NULL) { - audioStop(g_SndNosediveHandle); - g_SndNosediveHandle = NULL; - } - } else { - // Not paused - if (g_SndNosediveHandle == NULL) { - sndStart(var80095200, SFX_NOSEDIVE, &g_SndNosediveHandle, -1, -1, -1, -1, -1); - } - - // Fade in over about 2 seconds - if (g_SndNosediveVolume < 20000) { - g_SndNosediveVolume += g_Vars.diffframe240 * PALUP(40); - - if (g_SndNosediveVolume > 20000) { - g_SndNosediveVolume = 20000; - } - } - - sndAdjust(&g_SndNosediveHandle, 0, g_SndNosediveVolume, 64, -1, percentage, 0, -1, 1); - } - } else { - // Reached the configured fade out point - if (g_SndNosediveVolume > 0) { - g_SndNosediveVolume -= g_Vars.diffframe240 * PALUP(80); - - if (g_SndNosediveVolume < 0) { - g_SndNosediveVolume = 0; - } - } - - if (g_SndNosediveVolume) { - sndAdjust(&g_SndNosediveHandle, 0, g_SndNosediveVolume, 64, -1, -1, 0, -1, 1); - } else if (g_SndNosediveHandle != NULL) { - audioStop(g_SndNosediveHandle); - g_SndNosediveHandle = NULL; - } - } - } -} - -void sndPlayUfo(s32 seconds) -{ - g_SndUfoDuration240 = seconds * TICKS(240); - g_SndUfoAge240 = 0; - g_SndUfoVolume = 0; - g_SndUfoHandle = NULL; -} - -void sndStopUfo(void) -{ - if (g_SndUfoAge240 != -1) { - g_SndUfoAge240 = g_SndUfoDuration240 + 1; - } -} - -void sndTickUfo(void) -{ - f32 percentage; - - if (g_SndUfoAge240 != -1) { - g_SndUfoAge240 += g_Vars.lvupdate240; - - percentage = (f32)g_SndUfoAge240 / (f32)g_SndUfoDuration240; - - if (percentage < 1.0f) { // less than 100% complete - if (percentage < 0.65f) { - percentage = percentage / 0.65f * 0.3f + 0.7f; - } else { - percentage = (percentage - 0.65f) / 0.35f * 0.8f + 1.0f; - } - - if (lvIsPaused()) { - // Fade out volume during pause instead of stopping abruptly - if (g_SndUfoVolume > 0) { - g_SndUfoVolume -= g_Vars.diffframe240 * PALUP(120); - - if (g_SndUfoVolume < 0) { - g_SndUfoVolume = 0; - } - } - - if (g_SndUfoVolume) { - sndAdjust(&g_SndUfoHandle, 0, g_SndUfoVolume, 64, -1, percentage, 0, -1, 1); - } else if (g_SndUfoHandle != NULL) { - audioStop(g_SndUfoHandle); - g_SndUfoHandle = NULL; - } - } else { - // Not paused - if (g_SndUfoHandle == NULL) { - sndStart(var80095200, SFX_UFOHUM, &g_SndUfoHandle, -1, -1, -1, -1, -1); - } - - // Fade in over about 2.4 seconds - if (g_SndUfoVolume < 32767) { - g_SndUfoVolume += g_Vars.diffframe240 * PALUP(40); - - if (g_SndUfoVolume > 32767) { - g_SndUfoVolume = 32767; - } - } - - sndAdjust(&g_SndUfoHandle, 0, g_SndUfoVolume, 64, -1, percentage, 0, -1, 1); - } - } else { - // Reached the configured fade out point - if (g_SndUfoVolume > 0) { - g_SndUfoVolume -= g_Vars.diffframe240 * PALUP(120); - - if (g_SndUfoVolume < 0) { - g_SndUfoVolume = 0; - } - } - - if (g_SndUfoVolume) { - sndAdjust(&g_SndUfoHandle, 0, g_SndUfoVolume, 64, -1, -1, 0, -1, 1); - } else if (g_SndUfoHandle != NULL) { - audioStop(g_SndUfoHandle); - g_SndUfoHandle = NULL; - } - } - } -}