void PCM1BIT::initialize()
{
+ DEVICE::initialize();
signal = false;
on = true;
mute = false;
if(id == SIG_PCM1BIT_SIGNAL) {
bool next = ((data & mask) != 0);
if(signal != next) {
+ touch_sound();
if(signal) {
positive_clocks += get_passed_clock(prev_clock);
} else {
#define STATE_VERSION 3
-void PCM1BIT::save_state(FILEIO* state_fio)
+bool PCM1BIT::process_state(FILEIO* state_fio, bool loading)
{
- state_fio->FputUint32(STATE_VERSION);
- state_fio->FputInt32(this_device_id);
-
- state_fio->FputBool(signal);
- state_fio->FputBool(on);
- state_fio->FputBool(mute);
- state_fio->FputBool(realtime);
- state_fio->FputInt32(changed);
- state_fio->FputUint32(prev_clock);
- state_fio->FputInt32(positive_clocks);
- state_fio->FputInt32(negative_clocks);
-}
-
-bool PCM1BIT::load_state(FILEIO* state_fio)
-{
- if(state_fio->FgetUint32() != STATE_VERSION) {
- return false;
- }
- if(state_fio->FgetInt32() != this_device_id) {
- return false;
+ if(!state_fio->StateCheckUint32(STATE_VERSION)) {
+ return false;
+ }
+ if(!state_fio->StateCheckInt32(this_device_id)) {
+ return false;
+ }
+ state_fio->StateValue(signal);
+ state_fio->StateValue(on);
+ state_fio->StateValue(mute);
+ state_fio->StateValue(realtime);
+ state_fio->StateValue(changed);
+ state_fio->StateValue(prev_clock);
+ state_fio->StateValue(positive_clocks);
+ state_fio->StateValue(negative_clocks);
+
+ // post process
+ if(loading) {
+ last_vol_l = last_vol_r = 0;
+ set_realtime_render(this, on & !mute);
+ //touch_sound();
}
- signal = state_fio->FgetBool();
- on = state_fio->FgetBool();
- mute = state_fio->FgetBool();
- realtime = state_fio->FgetBool();
- changed = state_fio->FgetInt32();
- prev_clock = state_fio->FgetUint32();
- positive_clocks = state_fio->FgetInt32();
- negative_clocks = state_fio->FgetInt32();
-
- // post process
- last_vol_l = last_vol_r = 0;
- //touch_sound();
- set_realtime_render(on & !mute);
- return true;
+ return true;
}
-