OSDN Git Service

[VM][STATE] Use namespace {VMNAME} to separate per VMs.
[csp-qt/common_source_project-fm7.git] / source / src / vm / n5200 / memory.cpp
index 8c9ba0c..be8b8ef 100644 (file)
-/*\r
-       NEC N5200 Emulator 'eN5200'\r
-\r
-       Author : Takeda.Toshiya\r
-       Date   : 2009.06.03-\r
-\r
-       [ memory ]\r
-*/\r
-\r
-#include "memory.h"\r
-#include "../../fileio.h"\r
-\r
-#define SET_BANK(s, e, w, r) { \\r
-       int sb = (s) >> 11, eb = (e) >> 11; \\r
-       for(int i = sb; i <= eb; i++) { \\r
-               if((w) == wdmy) { \\r
-                       wbank[i] = wdmy; \\r
-               } else { \\r
-                       wbank[i] = (w) + 0x800 * (i - sb); \\r
-               } \\r
-               if((r) == rdmy) { \\r
-                       rbank[i] = rdmy; \\r
-               } else { \\r
-                       rbank[i] = (r) + 0x800 * (i - sb); \\r
-               } \\r
-       } \\r
-}\r
-\r
-void MEMORY::initialize()\r
-{\r
-       // init memory\r
-       memset(ram, 0, sizeof(ram));\r
-       memset(exram, 0, sizeof(exram));\r
-       memset(vram, 0, sizeof(vram));\r
-       memset(tvram, 0, sizeof(tvram));\r
-       memset(backup, 0, sizeof(backup));\r
-       memset(ipl, 0xff, sizeof(ipl));\r
-       memset(rdmy, 0xff, sizeof(rdmy));\r
-       \r
-       // load rom image\r
-       FILEIO* fio = new FILEIO();\r
-       if(fio->Fopen(emu->bios_path(_T("IPL.ROM")), FILEIO_READ_BINARY)) {\r
-               fio->Fread(ipl, sizeof(ipl), 1);\r
-               fio->Fclose();\r
-               for(int i = 0xa8e; i < 0xafc; i++) {\r
-                       ipl[i] = 0x90;\r
-               }\r
-       }\r
-       delete fio;\r
-}\r
-\r
-void MEMORY::release()\r
-{\r
-       // save ram image\r
-       FILEIO* fio = new FILEIO();\r
-       if(fio->Fopen(emu->bios_path(_T("TVRAM.BIN")), FILEIO_WRITE_BINARY)) {\r
-               fio->Fwrite(tvram, sizeof(tvram), 1);\r
-               fio->Fclose();\r
-       }\r
-       delete fio;\r
-}\r
-\r
-void MEMORY::reset()\r
-{\r
-       SET_BANK(0x000000, 0xffffff, wdmy, rdmy);\r
-       SET_BANK(0x000000, 0x0bffff, ram, ram);\r
-       SET_BANK(0x0c0000, 0x0dffff, vram, vram);       // ???\r
-       SET_BANK(0x0e0000, 0x0e77ff, tvram, tvram);\r
-       SET_BANK(0x0e7800, 0x0effff, backup, backup);\r
-       SET_BANK(0x0f0000, 0x0fffff, wdmy, ipl);\r
-       SET_BANK(0x100000, 0x1fffff, exram, exram);\r
-       SET_BANK(0xff0000, 0xffffff, wdmy, ipl);\r
-       \r
-       protect = true;\r
-}\r
-\r
-void MEMORY::write_data8(uint32 addr, uint32 data)\r
-{\r
-       addr &= 0xffffff;\r
-       if(0xe7800 <= addr && addr < 0xf0000 && protect) {\r
-               return;\r
-       }\r
-       wbank[addr >> 11][addr & 0x7ff] = data;\r
-}\r
-\r
-uint32 MEMORY::read_data8(uint32 addr)\r
-{\r
-       addr &= 0xffffff;\r
-       return rbank[addr >> 11][addr & 0x7ff];\r
-}\r
-\r
-void MEMORY::write_io8(uint32 addr, uint32 data)\r
-{\r
-       switch(addr) {\r
-       case 0x74:\r
-               protect = ((data & 1) != 0);\r
-               break;\r
-       }\r
-}\r
-\r
-uint32 MEMORY::read_io8(uint32 addr)\r
-{\r
-       return 0xff;\r
-}\r
-\r
+/*
+       NEC N5200 Emulator 'eN5200'
+
+       Author : Takeda.Toshiya
+       Date   : 2009.06.03-
+
+       [ memory ]
+*/
+
+#include "./memory.h"
+
+namespace N5200 {
+
+#define SET_BANK(s, e, w, r) { \
+       int sb = (s) >> 11, eb = (e) >> 11; \
+       for(int i = sb; i <= eb; i++) { \
+               if((w) == wdmy) { \
+                       wbank[i] = wdmy; \
+               } else { \
+                       wbank[i] = (w) + 0x800 * (i - sb); \
+               } \
+               if((r) == rdmy) { \
+                       rbank[i] = rdmy; \
+               } else { \
+                       rbank[i] = (r) + 0x800 * (i - sb); \
+               } \
+       } \
+}
+
+void MEMORY::initialize()
+{
+       // init memory
+       memset(ram, 0, sizeof(ram));
+       memset(exram, 0, sizeof(exram));
+       memset(vram, 0, sizeof(vram));
+       memset(tvram, 0, sizeof(tvram));
+       memset(backup, 0, sizeof(backup));
+       memset(ipl, 0xff, sizeof(ipl));
+       memset(rdmy, 0xff, sizeof(rdmy));
+       
+       // load rom image
+       FILEIO* fio = new FILEIO();
+       if(fio->Fopen(create_local_path(_T("IPL.ROM")), FILEIO_READ_BINARY)) {
+               fio->Fread(ipl, sizeof(ipl), 1);
+               fio->Fclose();
+               for(int i = 0xa8e; i < 0xafc; i++) {
+                       ipl[i] = 0x90;
+               }
+       }
+       delete fio;
+}
+
+void MEMORY::release()
+{
+       // save ram image
+       FILEIO* fio = new FILEIO();
+       if(fio->Fopen(create_local_path(_T("TVRAM.BIN")), FILEIO_WRITE_BINARY)) {
+               fio->Fwrite(tvram, sizeof(tvram), 1);
+               fio->Fclose();
+       }
+       delete fio;
+}
+
+void MEMORY::reset()
+{
+       SET_BANK(0x000000, 0xffffff, wdmy, rdmy);
+       SET_BANK(0x000000, 0x0bffff, ram, ram);
+       SET_BANK(0x0c0000, 0x0dffff, vram, vram);       // ???
+       SET_BANK(0x0e0000, 0x0e77ff, tvram, tvram);
+       SET_BANK(0x0e7800, 0x0effff, backup, backup);
+       SET_BANK(0x0f0000, 0x0fffff, wdmy, ipl);
+       SET_BANK(0x100000, 0x1fffff, exram, exram);
+       SET_BANK(0xff0000, 0xffffff, wdmy, ipl);
+       
+       protect = true;
+}
+
+void MEMORY::write_data8(uint32_t addr, uint32_t data)
+{
+       addr &= 0xffffff;
+       if(0xe7800 <= addr && addr < 0xf0000 && protect) {
+               return;
+       }
+       wbank[addr >> 11][addr & 0x7ff] = data;
+}
+
+uint32_t MEMORY::read_data8(uint32_t addr)
+{
+       addr &= 0xffffff;
+       return rbank[addr >> 11][addr & 0x7ff];
+}
+
+void MEMORY::write_io8(uint32_t addr, uint32_t data)
+{
+       switch(addr) {
+       case 0x74:
+               protect = ((data & 1) != 0);
+               break;
+       }
+}
+
+uint32_t MEMORY::read_io8(uint32_t addr)
+{
+       return 0xff;
+}
+
+}