X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=source%2Fsrc%2Fvm%2Fpc100%2Fpc100.cpp;h=ed4352fdd51bc62b951cf6dbcf52b40142d1fa55;hb=75c44472a1250625fba8d2835934e592cabb5a14;hp=afe9f86ccd0109266ec1c2b0050e9e2a13ba2263;hpb=0ee1e889921ea0aa5e6d0429e35c360b7aaad0d8;p=csp-qt%2Fcommon_source_project-fm7.git diff --git a/source/src/vm/pc100/pc100.cpp b/source/src/vm/pc100/pc100.cpp index afe9f86cc..ed4352fdd 100644 --- a/source/src/vm/pc100/pc100.cpp +++ b/source/src/vm/pc100/pc100.cpp @@ -38,7 +38,7 @@ // initialize // ---------------------------------------------------------------------------- -VM::VM(EMU* parent_emu) : emu(parent_emu) +VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu) { // create devices first_device = last_device = NULL; @@ -154,6 +154,7 @@ VM::VM(EMU* parent_emu) : emu(parent_emu) for(DEVICE* device = first_device; device; device = device->next_device) { device->initialize(); } + decl_state(); } VM::~VM() @@ -335,19 +336,43 @@ void VM::update_config() #define STATE_VERSION 3 +#include "../../statesub.h" +#include "../../qt/gui/csp_logger.h" +extern CSP_Logger DLL_PREFIX_I *csp_logger; + +void VM::decl_state(void) +{ + state_entry = new csp_state_utils(STATE_VERSION, 0, (_TCHAR *)(_T("CSP::PC_100_HEAD")), csp_logger); + DECL_STATE_ENTRY_1D_ARRAY(ram, sizeof(ram)); + for(DEVICE* device = first_device; device; device = device->next_device) { + device->decl_state(); + } +} + void VM::save_state(FILEIO* state_fio) { - state_fio->FputUint32(STATE_VERSION); + //state_fio->FputUint32(STATE_VERSION); + if(state_entry != NULL) { + state_entry->save_state(state_fio); + } for(DEVICE* device = first_device; device; device = device->next_device) { device->save_state(state_fio); } - state_fio->Fwrite(ram, sizeof(ram), 1); + //state_fio->Fwrite(ram, sizeof(ram), 1); } bool VM::load_state(FILEIO* state_fio) { - if(state_fio->FgetUint32() != STATE_VERSION) { + //if(state_fio->FgetUint32() != STATE_VERSION) { + // return false; + //} + bool mb = false; + if(state_entry != NULL) { + mb = state_entry->load_state(state_fio); + } + if(!mb) { + emu->out_debug_log("INFO: HEADER DATA ERROR"); return false; } for(DEVICE* device = first_device; device; device = device->next_device) {