OSDN Git Service

[VM][STATE] Apply new framework to some VMs.
[csp-qt/common_source_project-fm7.git] / source / src / vm / pc100 / kanji.cpp
index 82c6b03..2139a11 100644 (file)
@@ -1,58 +1,71 @@
-/*\r
-       NEC PC-100 Emulator 'ePC-100'\r
-\r
-       Author : Takeda.Toshiya\r
-       Date   : 2008.07.14 -\r
-\r
-       [ kanji rom ]\r
-*/\r
-\r
-#include "kanji.h"\r
-#include "../../fileio.h"\r
-\r
-void KANJI::initialize()\r
-{\r
-       // init image\r
-       memset(kanji, 0xff, sizeof(kanji));\r
-       \r
-       // load kanji image\r
-       FILEIO* fio = new FILEIO();\r
-       if(fio->Fopen(emu->bios_path(_T("KANJI.ROM")), FILEIO_READ_BINARY)) {\r
-               fio->Fread(kanji, sizeof(kanji), 1);\r
-               fio->Fclose();\r
-       }\r
-       delete fio;\r
-       \r
-       ptr = 0;\r
-       strobe = false;\r
-}\r
-\r
-void KANJI::write_io8(uint32 addr, uint32 data)\r
-{\r
-       switch(addr & 0xff) {\r
-       case 0x80:\r
-               ptr = (ptr & 0xff00) | data;\r
-               break;\r
-       case 0x81:\r
-               ptr = (ptr & 0x00ff) | (data << 8);\r
-               break;\r
-       case 0x84:\r
-               strobe = true;\r
-               break;\r
-       case 0x86:\r
-               strobe = false;\r
-               break;\r
-       }\r
-}\r
-\r
-uint32 KANJI::read_io8(uint32 addr)\r
-{\r
-       switch(addr & 0xff) {\r
-       case 0x80:\r
-               return kanji[(ptr << 1) | 0];\r
-       case 0x81:\r
-               return kanji[(ptr << 1) | 1];\r
-       }\r
-       return 0xff;\r
-}\r
-\r
+/*
+       NEC PC-100 Emulator 'ePC-100'
+
+       Author : Takeda.Toshiya
+       Date   : 2008.07.14 -
+
+       [ kanji rom ]
+*/
+
+#include "kanji.h"
+
+void KANJI::initialize()
+{
+       // init image
+       memset(kanji, 0xff, sizeof(kanji));
+       
+       // load kanji image
+       FILEIO* fio = new FILEIO();
+       if(fio->Fopen(create_local_path(_T("KANJI.ROM")), FILEIO_READ_BINARY)) {
+               fio->Fread(kanji, sizeof(kanji), 1);
+               fio->Fclose();
+       }
+       delete fio;
+       
+       ptr = 0;
+       strobe = false;
+}
+
+void KANJI::write_io8(uint32_t addr, uint32_t data)
+{
+       switch(addr & 0xff) {
+       case 0x80:
+               ptr = (ptr & 0xff00) | data;
+               break;
+       case 0x81:
+               ptr = (ptr & 0x00ff) | (data << 8);
+               break;
+       case 0x84:
+               strobe = true;
+               break;
+       case 0x86:
+               strobe = false;
+               break;
+       }
+}
+
+uint32_t KANJI::read_io8(uint32_t addr)
+{
+       switch(addr & 0xff) {
+       case 0x80:
+               return kanji[(ptr << 1) | 0];
+       case 0x81:
+               return kanji[(ptr << 1) | 1];
+       }
+       return 0xff;
+}
+
+#define STATE_VERSION  1
+
+bool KANJI::process_state(FILEIO* state_fio, bool loading)
+{
+       if(!state_fio->StateCheckUint32(STATE_VERSION)) {
+               return false;
+       }
+       if(!state_fio->StateCheckInt32(this_device_id)) {
+               return false;
+       }
+       state_fio->StateUint16(ptr);
+       state_fio->StateBool(strobe);
+       return true;
+}