aboutsummaryrefslogtreecommitdiff
path: root/src/SPU.h
diff options
context:
space:
mode:
authorArisotura <thetotalworm@gmail.com>2020-12-04 18:28:15 +0100
committerArisotura <thetotalworm@gmail.com>2020-12-04 18:28:15 +0100
commit129018a6626cbec915ef73484c51c9d07af8e8b9 (patch)
tree8e5712bd241319731f7b6ade3363cefe845e3a5e /src/SPU.h
parent6aad429383015a0ac135b081931ae9c5876a7ad0 (diff)
parent42e083960e52cce31589714dcc7fab8e173efb81 (diff)
Merge remote-tracking branch 'remotes/origin/master' into dsi_camera
Diffstat (limited to 'src/SPU.h')
-rw-r--r--src/SPU.h25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/SPU.h b/src/SPU.h
index 964841d..c6b1c7f 100644
--- a/src/SPU.h
+++ b/src/SPU.h
@@ -33,7 +33,7 @@ void DoSavestate(Savestate* file);
void SetBias(u16 bias);
-void Mix(u32 samples);
+void Mix(u32 dummy);
void TrimOutput();
void DrainOutput();
@@ -41,6 +41,7 @@ void InitOutput();
int GetOutputSize();
void Sync(bool wait);
int ReadOutput(s16* data, int samples);
+void TransferOutput();
u8 Read8(u32 addr);
u16 Read16(u32 addr);
@@ -123,26 +124,24 @@ public:
void NextSample_PSG();
void NextSample_Noise();
- template<u32 type> void Run(s32* buf, u32 samples);
+ template<u32 type> s32 Run();
- void DoRun(s32* buf, u32 samples)
+ s32 DoRun()
{
- for (u32 s = 0; s < samples; s++)
- buf[s] = 0;
-
switch ((Cnt >> 29) & 0x3)
{
- case 0: Run<0>(buf, samples); break;
- case 1: Run<1>(buf, samples); break;
- case 2: Run<2>(buf, samples); break;
+ case 0: return Run<0>(); break;
+ case 1: return Run<1>(); break;
+ case 2: return Run<2>(); break;
case 3:
- if (Num >= 14) Run<4>(buf, samples);
- else if (Num >= 8) Run<3>(buf, samples);
- break;
+ if (Num >= 14) return Run<4>();
+ else if (Num >= 8) return Run<3>();
+ default:
+ return 0;
}
}
- void PanOutput(s32* inbuf, u32 samples, s32* leftbuf, s32* rightbuf);
+ void PanOutput(s32 in, s32& left, s32& right);
private:
u32 (*BusRead32)(u32 addr);