OSDN Git Service

[VM] TRY:Use namespace {VMNAME} to separate around VMs. This feature still apply...
[csp-qt/common_source_project-fm7.git] / source / src / vm / pyuta / memory.h
1 /*
2         TOMY PyuTa Emulator 'ePyuTa'
3
4         Author : Takeda.Toshiya
5         Date   : 2007.07.15 -
6
7         [ memory ]
8 */
9
10 #ifndef _PYUTA_MEMORY_H_
11 #define _PYUTA_MEMORY_H_
12
13 #include "../vm.h"
14 #include "../../emu.h"
15 #include "../device.h"
16
17 namespace PYUTA {
18
19 class MEMORY : public DEVICE
20 {
21 private:
22         DEVICE *d_cmt, *d_cpu, *d_psg, *d_vdp;
23         
24         uint8_t ipl[0x8000];    // ipl rom (32k)
25         uint8_t basic[0x4000];  // basic rom (16k)
26         uint8_t cart[0x8000];   // cartridge (32k)
27         
28         uint8_t wdmy[0x1000];
29         uint8_t rdmy[0x1000];
30         uint8_t* wbank[16];
31         uint8_t* rbank[16];
32         
33         bool cmt_signal, cmt_remote;
34         bool has_extrom, cart_enabled;
35         int ctype;
36         
37         const uint8_t *key;
38         const uint32_t *joy;
39         
40 public:
41         MEMORY(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
42         {
43                 set_device_name(_T("Memory Bus"));
44         }
45         ~MEMORY() {}
46         
47         // common functions
48         void initialize();
49         void reset();
50         void write_data8(uint32_t addr, uint32_t data);
51         uint32_t read_data8(uint32_t addr);
52         void write_io8(uint32_t addr, uint32_t data);
53         uint32_t read_io8(uint32_t addr);
54         void write_signal(int id, uint32_t data, uint32_t mask);
55         bool process_state(FILEIO* state_fio, bool loading);
56         
57         // unique functions
58         void set_context_cmt(DEVICE* device)
59         {
60                 d_cmt = device;
61         }
62         void set_context_cpu(DEVICE* device)
63         {
64                 d_cpu = device;
65         }
66         void set_context_psg(DEVICE* device)
67         {
68                 d_psg = device;
69         }
70         void set_context_vdp(DEVICE* device)
71         {
72                 d_vdp = device;
73         }
74         void open_cart(const _TCHAR* file_path);
75         void close_cart();
76         bool is_cart_inserted()
77         {
78                 return (ctype != 0);
79         }
80 };
81 }
82 #endif
83