OSDN Git Service

[VM][STATE][HC20][HC40][HC80][M5][MSX] Apply new state framerork to some VMs.
[csp-qt/common_source_project-fm7.git] / source / src / vm / jr100 / memory.h
1 /*
2         National JR-100 Emulator 'eJR-100'
3
4         Author : Takeda.Toshiya
5         Date   : 2015.08.27-
6
7         [ memory bus ]
8 */
9
10 #ifndef _MEMORY_H_
11 #define _MEMORY_H_
12
13 #include "../vm.h"
14 #include "../../emu.h"
15 #include "../device.h"
16
17 #define SIG_MEMORY_VIA_PORT_A   0
18 #define SIG_MEMORY_VIA_PORT_B   1
19
20 class MEMORY : public DEVICE
21 {
22 private:
23         // contexts
24         DEVICE *d_via;
25         const uint8_t* key_stat;
26         const uint32_t* joy_stat;
27         
28         // memory
29         uint8_t ram[0x8000];
30         uint8_t vram[0x400];
31         uint8_t rom[0x2000];
32         
33         uint8_t wdmy[0x2000];
34         uint8_t rdmy[0x2000];
35         uint8_t* wbank[8];
36         uint8_t* rbank[8];
37         
38         int key_column;
39         bool cmode;
40         scrntype_t palette_pc[2];
41         
42 public:
43         MEMORY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
44         {
45                 set_device_name(_T("Memory Bus"));
46         }
47         ~MEMORY() {}
48         
49         // common functions
50         void initialize();
51         void write_data8(uint32_t addr, uint32_t data);
52         uint32_t read_data8(uint32_t addr);
53         void write_signal(int id, uint32_t data, uint32_t mask);
54         void event_frame();
55         void decl_state();
56         void save_state(FILEIO* state_fio);
57         bool load_state(FILEIO* state_fio);
58         
59         // unique functions
60         void set_context_via(DEVICE* device)
61         {
62                 d_via = device;
63         }
64         void draw_screen();
65 };
66
67 #endif
68