// Private oscillators used by T6W28_Apu // T6W28_Snd_Emu #ifndef SMS_OSCS_H #define SMS_OSCS_H #include "sound/Blip_Buffer.h" namespace MDFN_IEN_NGP { struct T6W28_Osc { Blip_Buffer* outputs [4]; // NULL, right, left, center Blip_Buffer* output; int output_select; int delay; int last_amp_left; int last_amp_right; int volume_left; int volume_right; T6W28_Osc(); void reset(); }; struct T6W28_Square : T6W28_Osc { int period; int phase; typedef Blip_Synth Synth; const Synth* synth; void reset(); void run( sms_time_t, sms_time_t ); }; struct T6W28_Noise : T6W28_Osc { const int* period; int period_extra; unsigned shifter; unsigned tap; typedef Blip_Synth Synth; Synth synth; void reset(); void run( sms_time_t, sms_time_t ); }; } #endif