Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/wonderswan/sound.h
2 views
1
#ifndef __WSWAN_SOUND_H
2
#define __WSWAN_SOUND_H
3
4
#include "system.h"
5
#include <blip/Blip_Buffer.h>
6
7
namespace MDFN_IEN_WSWAN
8
{
9
10
class Sound
11
{
12
public:
13
Sound();
14
~Sound();
15
16
int32 Flush(int16 *SoundBuf, const int32 MaxSoundFrames);
17
18
void SetMultiplier(double multiplier);
19
bool SetRate(uint32 rate);
20
21
void Write(uint32, uint8);
22
uint8 Read(uint32);
23
void Reset();
24
void CheckRAMWrite(uint32 A);
25
26
private:
27
Blip_Synth<blip_good_quality, 256> WaveSynth;
28
Blip_Synth<blip_med_quality, 256> NoiseSynth;
29
Blip_Synth<blip_good_quality, 256 * 15> VoiceSynth;
30
31
Blip_Buffer *sbuf[2]; // = { NULL };
32
33
uint16 period[4];
34
uint8 volume[4]; // left volume in upper 4 bits, right in lower 4 bits
35
uint8 voice_volume;
36
37
uint8 sweep_step, sweep_value;
38
uint8 noise_control;
39
uint8 control;
40
uint8 output_control;
41
42
int32 sweep_8192_divider;
43
uint8 sweep_counter;
44
uint8 SampleRAMPos;
45
46
int32 sample_cache[4][2];
47
48
int32 last_v_val;
49
50
uint8 HyperVoice;
51
int32 last_hv_val;
52
53
int32 period_counter[4];
54
int32 last_val[4][2]; // Last outputted value, l&r
55
uint8 sample_pos[4];
56
uint16 nreg;
57
uint32 last_ts;
58
59
private:
60
void Update();
61
62
public:
63
System *sys;
64
template<bool isReader>void SyncState(NewState *ns);
65
66
};
67
68
}
69
70
#endif
71
72