OSDN Git Service

[INITIAL] Import 20141226 version of http://homepage3.nifty.com/takeda-toshiya/common...
[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 \r
38 #include "../../common.h"\r
39 \r
40 class EMU;\r
41 class DEVICE;\r
42 class EVENT;\r
43 \r
44 class IO;\r
45 class MEMORY;\r
46 class SN76489AN;\r
47 class TMS9918A;\r
48 class Z80;\r
49 \r
50 class CMT;\r
51 class KEYBOARD;\r
52 class PRINTER;\r
53 \r
54 class VM\r
55 {\r
56 protected:\r
57         EMU* emu;\r
58         \r
59         // devices\r
60         EVENT* event;\r
61         \r
62         IO* io;\r
63         MEMORY* memory;\r
64         SN76489AN* psg;\r
65         TMS9918A* vdp;\r
66         Z80* cpu;\r
67         \r
68         CMT* cmt;\r
69         KEYBOARD* key;\r
70         PRINTER* prt;\r
71         \r
72         // memory\r
73         uint8 ipl[0x4000];      // ipl (16k)\r
74         uint8 ram[0x1000];      // ram (4k)\r
75         uint8 ext[0x4000];      // ext ram/rom (16k)\r
76         uint8 cart[0x4000];     // cartridge (16k)\r
77         bool inserted;\r
78         \r
79 public:\r
80         // ----------------------------------------\r
81         // initialize\r
82         // ----------------------------------------\r
83         \r
84         VM(EMU* parent_emu);\r
85         ~VM();\r
86         \r
87         // ----------------------------------------\r
88         // for emulation class\r
89         // ----------------------------------------\r
90         \r
91         // drive virtual machine\r
92         void reset();\r
93         void run();\r
94         \r
95 #ifdef USE_DEBUGGER\r
96         // debugger\r
97         DEVICE *get_cpu(int index);\r
98 #endif\r
99         \r
100         // draw screen\r
101         void draw_screen();\r
102         \r
103         // sound generation\r
104         void initialize_sound(int rate, int samples);\r
105         uint16* create_sound(int* extra_frames);\r
106         int sound_buffer_ptr();\r
107         \r
108         // notify key\r
109         void key_down(int code, bool repeat);\r
110         void key_up(int code);\r
111         \r
112         // user interface\r
113         void open_cart(int drv, _TCHAR* file_path);\r
114         void close_cart(int drv);\r
115         bool cart_inserted(int drv);\r
116         void play_tape(_TCHAR* file_path);\r
117         void rec_tape(_TCHAR* file_path);\r
118         void close_tape();\r
119         bool tape_inserted();\r
120         bool now_skip();\r
121         \r
122         void update_config();\r
123         \r
124         // ----------------------------------------\r
125         // for each device\r
126         // ----------------------------------------\r
127         \r
128         // devices\r
129         DEVICE* get_device(int id);\r
130         DEVICE* dummy;\r
131         DEVICE* first_device;\r
132         DEVICE* last_device;\r
133 };\r
134 \r
135 #endif\r