-/*\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;
+}