OSDN Git Service

[VM][General][WIP] Start to merge upstream 2018-10-14.Open branch upstream_20181014 .
[csp-qt/common_source_project-fm7.git] / source / src / vm / pasopia7 / kanjipac2.cpp
1 /*
2         TOSHIBA PASOPIA Emulator 'EmuPIA'
3         TOSHIBA PASOPIA 7 Emulator 'EmuPIA7'
4
5         Author : Takeda.Toshiya
6         Date   : 2006.09.20 -
7
8         [ kanji rom pac 2 ]
9 */
10
11 #include "kanjipac2.h"
12
13 namespace PASOPIA7 {
14
15 void KANJIPAC2::initialize(int id)
16 {
17         FILEIO* fio = new FILEIO();
18         if(fio->Fopen(create_local_path(_T("KANJI.ROM")), FILEIO_READ_BINARY)) {
19                 fio->Fread(rom, sizeof(rom), 1);
20                 fio->Fclose();
21         }
22         delete fio;
23 }
24
25 void KANJIPAC2::reset()
26 {
27         ptr = 0;
28 }
29
30 void KANJIPAC2::write_io8(uint32_t addr, uint32_t data)
31 {
32         switch(addr & 0xff) {
33         case 0x18:
34                 ptr = (ptr & 0x1ff00) | data;
35                 break;
36         case 0x19:
37                 ptr = (ptr & 0x100ff) | (data << 8);
38                 break;
39         case 0x1a:
40                 ptr = (ptr & 0x0ffff) | ((data & 0x01) << 16);
41                 break;
42         }
43 }
44
45 uint32_t KANJIPAC2::read_io8(uint32_t addr)
46 {
47         return rom[ptr & 0x1ffff];
48 }
49
50 #define STATE_VERSION   1
51
52 bool KANJIPAC2::process_state(FILEIO* state_fio, bool loading)
53 {
54         if(!state_fio->StateCheckUint32(STATE_VERSION)) {
55                 return false;
56         }
57         state_fio->StateValue(ptr);
58         return true;
59 }
60
61 }