OSDN Git Service

[VM][General] Merge upstream 2016-03-01. (Pahse 1).
[csp-qt/common_source_project-fm7.git] / source / src / vm / pasopia / 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 void KANJIPAC2::initialize(int id)
14 {
15         FILEIO* fio = new FILEIO();
16         if(fio->Fopen(create_local_path(_T("KANJI.ROM")), FILEIO_READ_BINARY)) {
17                 fio->Fread(rom, sizeof(rom), 1);
18                 fio->Fclose();
19         }
20         delete fio;
21         
22         ptr = 0;
23 }
24
25 void KANJIPAC2::write_io8(uint32_t addr, uint32_t data)
26 {
27         switch(addr & 0xff) {
28         case 0x18:
29                 ptr = (ptr & 0x1ff00) | data;
30                 break;
31         case 0x19:
32                 ptr = (ptr & 0x100ff) | (data << 8);
33                 break;
34         case 0x1a:
35                 ptr = (ptr & 0x0ffff) | ((data & 0x01) << 16);
36                 break;
37         }
38 }
39
40 uint32_t KANJIPAC2::read_io8(uint32_t addr)
41 {
42         return rom[ptr & 0x1ffff];
43 }
44
45 #define STATE_VERSION   1
46
47 void KANJIPAC2::save_state(FILEIO* state_fio)
48 {
49         state_fio->FputUint32(STATE_VERSION);
50         
51         state_fio->FputUint32(ptr);
52 }
53
54 bool KANJIPAC2::load_state(FILEIO* state_fio)
55 {
56         if(state_fio->FgetUint32() != STATE_VERSION) {
57                 return false;
58         }
59         ptr = state_fio->FgetUint32();
60         return true;
61 }
62