OSDN Git Service

[VM][UPD7810] Fix FTBFS.
[csp-qt/common_source_project-fm7.git] / source / src / vm / upd71071.h
index 481ee8b..b3f308d 100644 (file)
@@ -41,12 +41,19 @@ private:
 
        bool _SINGLE_MODE_DMA;
 public:
-       UPD71071(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+       UPD71071(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
        {
+               // TIP: if((DEVICE::prev_device == NULL) || (DEVICE::this_device_id == 0)) DEVICE must be DUMMY.
+               // And, at this device, should not be FIRST DEVICE. 20170613 Ohta.
+               DEVICE *__dev = this;
+               while((__dev->prev_device != NULL) && (__dev->this_device_id > 0)) {
+                       __dev = __dev->prev_device;
+               }
                for(int i = 0; i < 4; i++) {
                        //dma[i].dev = vm->dummy;
-                       dma[i].dev = NULL;
+                       dma[i].dev = __dev;
                }
+               d_mem = __dev;
 //#ifdef SINGLE_MODE_DMA
                d_dma = NULL;
 //#endif
@@ -63,8 +70,7 @@ public:
        uint32_t read_io8(uint32_t addr);
        void write_signal(int id, uint32_t data, uint32_t mask);
        void do_dma();
-       void save_state(FILEIO* state_fio);
-       bool load_state(FILEIO* state_fio);
+       bool process_state(FILEIO* state_fio, bool loading);
        // unique functions
        void set_context_memory(DEVICE* device)
        {