OSDN Git Service

[BUILD] Set SOVERSION and GIT hash automatically.
[csp-qt/common_source_project-fm7.git] / source / src / vm / hc80 / memory.cpp
index 970a4c2..00d6b5a 100644 (file)
@@ -34,11 +34,11 @@ void MEMORY::initialize()
        
        // load backuped ram / rom images
        FILEIO* fio = new FILEIO();
-       if(fio->Fopen(emu->bios_path(_T("DRAM.BIN")), FILEIO_READ_BINARY)) {
+       if(fio->Fopen(create_local_path(_T("DRAM.BIN")), FILEIO_READ_BINARY)) {
                fio->Fread(ram, sizeof(ram), 1);
                fio->Fclose();
        }
-       if(fio->Fopen(emu->bios_path(_T("SYS.ROM")), FILEIO_READ_BINARY)) {
+       if(fio->Fopen(create_local_path(_T("SYS.ROM")), FILEIO_READ_BINARY)) {
                fio->Fread(sys, sizeof(sys), 1);
                fio->Fclose();
        }
@@ -49,7 +49,7 @@ void MEMORY::release()
 {
        // save battery backuped ram
        FILEIO* fio = new FILEIO();
-       if(fio->Fopen(emu->bios_path(_T("DRAM.BIN")), FILEIO_WRITE_BINARY)) {
+       if(fio->Fopen(create_local_path(_T("DRAM.BIN")), FILEIO_WRITE_BINARY)) {
                fio->Fwrite(ram, sizeof(ram), 1);
                fio->Fclose();
        }
@@ -61,24 +61,24 @@ void MEMORY::reset()
        set_bank(0);
 }
 
-void MEMORY::write_data8(uint32 addr, uint32 data)
+void MEMORY::write_data8(uint32_t addr, uint32_t data)
 {
        addr &= 0xffff;
        wbank[(addr >> 13) & 7][addr & 0x1fff] = data;
 }
 
-uint32 MEMORY::read_data8(uint32 addr)
+uint32_t MEMORY::read_data8(uint32_t addr)
 {
        addr &= 0xffff;
        return rbank[(addr >> 13) & 7][addr & 0x1fff];
 }
 
-void MEMORY::write_signal(int id, uint32 data, uint32 mask)
+void MEMORY::write_signal(int id, uint32_t data, uint32_t mask)
 {
        set_bank(data);
 }
 
-void MEMORY::set_bank(uint32 val)
+void MEMORY::set_bank(uint32_t val)
 {
        if(val & 1) {
                SET_BANK(0x0000, 0xffff, ram, ram);
@@ -91,25 +91,47 @@ void MEMORY::set_bank(uint32 val)
 
 #define STATE_VERSION  1
 
+#include "../../statesub.h"
+
+void MEMORY::decl_state()
+{
+       enter_decl_state(STATE_VERSION);
+       
+       DECL_STATE_ENTRY_1D_ARRAY(ram, sizeof(ram));
+       DECL_STATE_ENTRY_UINT8(bank);
+       
+       leave_decl_state();
+}
+
 void MEMORY::save_state(FILEIO* state_fio)
 {
-       state_fio->FputUint32(STATE_VERSION);
-       state_fio->FputInt32(this_device_id);
+       if(state_entry != NULL) {
+               state_entry->save_state(state_fio);
+       }
+//     state_fio->FputUint32(STATE_VERSION);
+//     state_fio->FputInt32(this_device_id);
        
-       state_fio->Fwrite(ram, sizeof(ram), 1);
-       state_fio->FputUint8(bank);
+//     state_fio->Fwrite(ram, sizeof(ram), 1);
+//     state_fio->FputUint8(bank);
 }
 
 bool MEMORY::load_state(FILEIO* state_fio)
 {
-       if(state_fio->FgetUint32() != STATE_VERSION) {
-               return false;
+       bool mb = false;
+       if(state_entry != NULL) {
+               mb = state_entry->load_state(state_fio);
        }
-       if(state_fio->FgetInt32() != this_device_id) {
+       if(!mb) {
                return false;
        }
-       state_fio->Fread(ram, sizeof(ram), 1);
-       bank = state_fio->FgetUint8();
+//     if(state_fio->FgetUint32() != STATE_VERSION) {
+//             return false;
+//     }
+//     if(state_fio->FgetInt32() != this_device_id) {
+//             return false;
+//     }
+//     state_fio->Fread(ram, sizeof(ram), 1);
+//     bank = state_fio->FgetUint8();
        
        // post process
        set_bank(bank);