diff options
author | StapleButter <thetotalworm@gmail.com> | 2017-04-06 22:38:46 +0200 |
---|---|---|
committer | StapleButter <thetotalworm@gmail.com> | 2017-04-06 22:38:46 +0200 |
commit | 76c4e576086c59a96020676bb4eb497111349f2a (patch) | |
tree | 57ed10494d15992c046b0d6d0e3fbac68ff58fea /src/SPU.h | |
parent | 8d66beba6bc49f8d1f6cb443745bfd1ffe4008a3 (diff) |
preliminary audio. only supports PSG (and handles all channels as such). drops out every once in a while.
Diffstat (limited to 'src/SPU.h')
-rw-r--r-- | src/SPU.h | 20 |
1 files changed, 19 insertions, 1 deletions
@@ -44,21 +44,39 @@ public: ~Channel(); void Reset(); + u32 Num; + u32 Cnt; u32 SrcAddr; u16 TimerReload; u32 LoopPos; u32 Length; + u32 Timer; + u32 Pos; + s16 CurSample; + void SetCnt(u32 val) { + if ((val & (1<<31)) && !(Cnt & (1<<31))) + { + Start(); + } + Cnt = val & 0xFF7F837F; + //if(Num==8)printf("chan %d volume: %d\n", Num, val&0x7F); } void SetSrcAddr(u32 val) { SrcAddr = val & 0x07FFFFFF; } - void SetTimerReload(u32 val) { TimerReload = val & 0xFFFF; } + void SetTimerReload(u32 val) { TimerReload = val & 0xFFFF;if(Num==8) printf("chan8 timer %04X\n", TimerReload);} void SetLoopPos(u32 val) { LoopPos = (val & 0xFFFF) << 2; } void SetLength(u32 val) { Length = (val & 0x001FFFFF) << 2; } + + void Start(); + + void NextSample_PSG(); + + void Run(s32* buf, u32 samples); }; } |