} \\r
}\r
\r
+#define ENABLE_CART() { \\r
+ if(ctype == 3) { \\r
+ SET_BANK(0x0000, 0x3fff, wdmy, ipl); \\r
+ SET_BANK(0x4000, 0xbfff, wdmy, cart); \\r
+ } else { \\r
+ SET_BANK(0x0000, 0x7fff, wdmy, ipl); \\r
+ SET_BANK(0x8000, 0xbfff, wdmy, cart); \\r
+ } \\r
+ cart_enabled = true; \\r
+}\r
+\r
+#define DISABLE_CART() { \\r
+ SET_BANK(0x0000, 0x7fff, wdmy, ipl); \\r
+ SET_BANK(0x8000, 0xbfff, wdmy, basic); \\r
+ cart_enabled = false; \\r
+}\r
+\r
void MEMORY::initialize()\r
{\r
memset(ipl, 0xff, sizeof(ipl));\r
delete fio;\r
\r
// set memory map\r
- SET_BANK(0x0000, 0x7fff, wdmy, ipl);\r
- SET_BANK(0x8000, 0xbfff, wdmy, basic);\r
+ DISABLE_CART();\r
SET_BANK(0xc000, 0xffff, wdmy, rdmy);\r
\r
// get keyboard and joystick buffers\r
cmt_signal = cmt_remote = false;\r
}\r
\r
-#define ENABLE_CART() { \\r
- if(ctype == 3) { \\r
- SET_BANK(0x0000, 0x3fff, wdmy, ipl); \\r
- SET_BANK(0x4000, 0xbfff, wdmy, cart); \\r
- } else { \\r
- SET_BANK(0x0000, 0x7fff, wdmy, ipl); \\r
- SET_BANK(0x8000, 0xbfff, wdmy, cart); \\r
- } \\r
-}\r
-\r
-#define DISABLE_CART() { \\r
- SET_BANK(0x0000, 0x7fff, wdmy, ipl); \\r
- SET_BANK(0x8000, 0xbfff, wdmy, basic); \\r
-}\r
-\r
void MEMORY::write_data8(uint32 addr, uint32 data)\r
{\r
addr &= 0xffff;\r
DISABLE_CART();\r
}\r
\r
+#define STATE_VERSION 1\r
+\r
+void MEMORY::save_state(FILEIO* state_fio)\r
+{\r
+ state_fio->FputUint32(STATE_VERSION);\r
+ state_fio->FputInt32(this_device_id);\r
+ \r
+ state_fio->FputBool(cmt_signal);\r
+ state_fio->FputBool(cmt_remote);\r
+ state_fio->FputBool(has_extrom);\r
+ state_fio->FputBool(cart_enabled);\r
+ state_fio->FputInt32(ctype);\r
+}\r
+\r
+bool MEMORY::load_state(FILEIO* state_fio)\r
+{\r
+ if(state_fio->FgetUint32() != STATE_VERSION) {\r
+ return false;\r
+ }\r
+ if(state_fio->FgetInt32() != this_device_id) {\r
+ return false;\r
+ }\r
+ cmt_signal = state_fio->FgetBool();\r
+ cmt_remote = state_fio->FgetBool();\r
+ has_extrom = state_fio->FgetBool();\r
+ cart_enabled = state_fio->FgetBool();\r
+ ctype = state_fio->FgetInt32();\r
+ \r
+ if(cart_enabled) {\r
+ ENABLE_CART();\r
+ } else {\r
+ DISABLE_CART();\r
+ }\r
+ return true;\r
+}\r
+\r