OSDN Git Service

[General] Tracking to upstream, rev 2015-01-14.
[csp-qt/common_source_project-fm7.git] / source / src / vm / pv2000 / pv2000.h
1 /*\r
2         CASIO PV-2000 Emulator 'EmuGaki'\r
3 \r
4         Author : Takeda.Toshiya\r
5         Date   : 2006.08.18 -\r
6 \r
7         [ virtual machine ]\r
8 */\r
9 \r
10 #ifndef _PV2000_H_\r
11 #define _PV2000_H_\r
12 \r
13 #define DEVICE_NAME             "CASIO PV-2000"\r
14 #define CONFIG_NAME             "pv2000"\r
15 \r
16 // device informations for virtual machine\r
17 #define FRAMES_PER_SEC          60\r
18 #define LINES_PER_FRAME         262\r
19 #define CPU_CLOCKS              3579545\r
20 #define SCREEN_WIDTH            256\r
21 #define SCREEN_HEIGHT           192\r
22 #define TMS9918A_VRAM_SIZE      0x4000\r
23 //#define TMS9918A_LIMIT_SPRITES\r
24 #define MEMORY_ADDR_MAX         0x10000\r
25 #define MEMORY_BANK_SIZE        0x1000\r
26 \r
27 // device informations for win32\r
28 #define USE_CART1\r
29 #define USE_TAPE\r
30 #define TAPE_BINARY_ONLY\r
31 #define NOTIFY_KEY_DOWN\r
32 #define USE_ALT_F10_KEY\r
33 #define USE_AUTO_KEY            5\r
34 #define USE_AUTO_KEY_RELEASE    6\r
35 #define USE_AUTO_KEY_CAPS\r
36 #define USE_DEBUGGER\r
37 #define USE_STATE\r
38 \r
39 #include "../../common.h"\r
40 \r
41 class EMU;\r
42 class DEVICE;\r
43 class EVENT;\r
44 \r
45 class IO;\r
46 class MEMORY;\r
47 class SN76489AN;\r
48 class TMS9918A;\r
49 class Z80;\r
50 \r
51 class CMT;\r
52 class KEYBOARD;\r
53 class PRINTER;\r
54 \r
55 class FILEIO;\r
56 \r
57 class VM\r
58 {\r
59 protected:\r
60         EMU* emu;\r
61         \r
62         // devices\r
63         EVENT* event;\r
64         \r
65         IO* io;\r
66         MEMORY* memory;\r
67         SN76489AN* psg;\r
68         TMS9918A* vdp;\r
69         Z80* cpu;\r
70         \r
71         CMT* cmt;\r
72         KEYBOARD* key;\r
73         PRINTER* prt;\r
74         \r
75         // memory\r
76         uint8 ipl[0x4000];      // ipl (16k)\r
77         uint8 ram[0x1000];      // ram (4k)\r
78         uint8 ext[0x4000];      // ext ram/rom (16k)\r
79         uint8 cart[0x4000];     // cartridge (16k)\r
80         bool inserted;\r
81         \r
82 public:\r
83         // ----------------------------------------\r
84         // initialize\r
85         // ----------------------------------------\r
86         \r
87         VM(EMU* parent_emu);\r
88         ~VM();\r
89         \r
90         // ----------------------------------------\r
91         // for emulation class\r
92         // ----------------------------------------\r
93         \r
94         // drive virtual machine\r
95         void reset();\r
96         void run();\r
97         \r
98 #ifdef USE_DEBUGGER\r
99         // debugger\r
100         DEVICE *get_cpu(int index);\r
101 #endif\r
102         \r
103         // draw screen\r
104         void draw_screen();\r
105         \r
106         // sound generation\r
107         void initialize_sound(int rate, int samples);\r
108         uint16* create_sound(int* extra_frames);\r
109         int sound_buffer_ptr();\r
110         \r
111         // notify key\r
112         void key_down(int code, bool repeat);\r
113         void key_up(int code);\r
114         \r
115         // user interface\r
116         void open_cart(int drv, _TCHAR* file_path);\r
117         void close_cart(int drv);\r
118         bool cart_inserted(int drv);\r
119         void play_tape(_TCHAR* file_path);\r
120         void rec_tape(_TCHAR* file_path);\r
121         void close_tape();\r
122         bool tape_inserted();\r
123         bool now_skip();\r
124         \r
125         void update_config();\r
126         void save_state(FILEIO* state_fio);\r
127         bool load_state(FILEIO* state_fio);\r
128         \r
129         // ----------------------------------------\r
130         // for each device\r
131         // ----------------------------------------\r
132         \r
133         // devices\r
134         DEVICE* get_device(int id);\r
135         DEVICE* dummy;\r
136         DEVICE* first_device;\r
137         DEVICE* last_device;\r
138 };\r
139 \r
140 #endif\r