OSDN Git Service

[VM] Add PC-8001/mk2/8801/mk2.
[csp-qt/common_source_project-fm7.git] / source / src / vm / pcm1bit.cpp
index 084dccc..645aa34 100644 (file)
@@ -11,6 +11,7 @@
 
 void PCM1BIT::initialize()
 {
+       DEVICE::initialize();
        signal = false;
        on = true;
        mute = false;
@@ -32,6 +33,7 @@ void PCM1BIT::write_signal(int id, uint32_t data, uint32_t mask)
        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 {
@@ -113,42 +115,28 @@ void PCM1BIT::initialize_sound(int rate, int volume)
 
 #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;
 }
-