X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=source%2Fsrc%2Fvm%2Fhc80%2Fmemory.cpp;h=00d6b5aefb37aa51e66bf807d90037af5e55e243;hb=90a1d498c79c26d69c78435600856b152aa07291;hp=970a4c2e708f6453ead5f2932f15cee806f82876;hpb=bc43b8173603462328ae517d0930c299e79c64b7;p=csp-qt%2Fcommon_source_project-fm7.git diff --git a/source/src/vm/hc80/memory.cpp b/source/src/vm/hc80/memory.cpp index 970a4c2e7..00d6b5aef 100644 --- a/source/src/vm/hc80/memory.cpp +++ b/source/src/vm/hc80/memory.cpp @@ -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);