OSDN Git Service

147e383e2e6bf3a8e55c493e7e7bab1e17f02747
[csp-qt/common_source_project-fm7.git] / source / src / vm / qc10 / display.h
1 /*\r
2         EPSON QC-10 Emulator 'eQC-10'\r
3 \r
4         Author : Takeda.Toshiya\r
5         Date   : 2008.02.16 -\r
6 \r
7         [ display ]\r
8 */\r
9 \r
10 #ifndef _DISPLAY_H_\r
11 #define _DISPLAY_H_\r
12 \r
13 #include "../vm.h"\r
14 #include "../../emu.h"\r
15 #include "../device.h"\r
16 \r
17 #define VRAM_SIZE       0x20000\r
18 \r
19 class UPD7220;\r
20 \r
21 class DISPLAY : public DEVICE\r
22 {\r
23 private:\r
24         UPD7220 *d_gdc;\r
25         \r
26 #ifdef _COLOR_MONITOR\r
27         uint8 vram_r[VRAM_SIZE];\r
28         uint8 vram_g[VRAM_SIZE];\r
29         uint8 vram_b[VRAM_SIZE];\r
30         scrntype palette_pc[8];\r
31 #else\r
32         uint8 vram[VRAM_SIZE];\r
33         uint8 font[0x10000];    // 16bytes * 256chars\r
34         scrntype palette_pc[16];        // normal, intensify\r
35 #endif\r
36         uint8 screen[400][640];\r
37         scrntype tmp[640];\r
38         \r
39         uint8 *sync, *zoom, *ra, *cs;\r
40         int* ead;\r
41         uint8 bank;\r
42         int blink;\r
43         \r
44 public:\r
45         DISPLAY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {}\r
46         ~DISPLAY() {}\r
47         \r
48         // common functions\r
49         void initialize();\r
50         void reset();\r
51         void write_io8(uint32 addr, uint32 data);\r
52         uint32 read_io8(uint32 addr);\r
53         void event_frame();\r
54         void save_state(FILEIO* state_fio);\r
55         bool load_state(FILEIO* state_fio);\r
56         \r
57         // unique functions\r
58         void set_context_gdc(UPD7220* device)\r
59         {\r
60                 d_gdc = device;\r
61         }\r
62         uint8* get_vram()\r
63         {\r
64 #ifdef _COLOR_MONITOR\r
65                 return vram_b;\r
66 #else\r
67                 return vram;\r
68 #endif\r
69         }\r
70         void set_sync_ptr(uint8* ptr)\r
71         {\r
72                 sync = ptr;\r
73         }\r
74         void set_zoom_ptr(uint8* ptr)\r
75         {\r
76                 zoom = ptr;\r
77         }\r
78         void set_ra_ptr(uint8* ptr)\r
79         {\r
80                 ra = ptr;\r
81         }\r
82         void set_cs_ptr(uint8* ptr)\r
83         {\r
84                 cs = ptr;\r
85         }\r
86         void set_ead_ptr(int* ptr)\r
87         {\r
88                 ead = ptr;\r
89         }\r
90         void draw_screen();\r
91 };\r
92 \r
93 #endif\r
94 \r