OSDN Git Service

e5b59c7556a43cfe8fde7087bd2d147c8d48dc33
[csp-qt/common_source_project-fm7.git] / source / src / vm / pc9801 / display.h
1 /*\r
2         NEC PC-9801 Emulator 'ePC-9801'\r
3         NEC PC-9801E/F/M Emulator 'ePC-9801E'\r
4         NEC PC-98DO Emulator 'ePC-98DO'\r
5 \r
6         Author : Takeda.Toshiya\r
7         Date   : 2010.09.16-\r
8 \r
9         [ display ]\r
10 */\r
11 \r
12 #ifndef _DISPLAY_H_\r
13 #define _DISPLAY_H_\r
14 \r
15 #include "../vm.h"\r
16 #include "../../emu.h"\r
17 #include "../device.h"\r
18 \r
19 class UPD7220;\r
20 \r
21 class DISPLAY : public DEVICE\r
22 {\r
23 private:\r
24         DEVICE *d_pic;\r
25         UPD7220 *d_gdc_chr, *d_gdc_gfx;\r
26         uint8 *ra_chr;\r
27         uint8 *ra_gfx, *cs_gfx;\r
28         \r
29         uint8 tvram[0x4000];\r
30 #if defined(SUPPORT_2ND_VRAM)\r
31         uint8 vram[0x40000];\r
32 #else\r
33         uint8 vram[0x20000];\r
34 #endif\r
35         uint8 *vram_disp_b;\r
36         uint8 *vram_disp_r;\r
37         uint8 *vram_disp_g;\r
38 #if defined(SUPPORT_16_COLORS)\r
39         uint8 *vram_disp_e;\r
40 #endif\r
41         uint8 *vram_draw;\r
42         \r
43         scrntype palette_chr[8];\r
44         scrntype palette_gfx8[8];\r
45         uint8 digipal[4];\r
46 #if defined(SUPPORT_16_COLORS)\r
47         scrntype palette_gfx16[8];\r
48         uint8 anapal[16][3], anapal_sel;\r
49 #endif\r
50         \r
51         uint8 crtv;\r
52         uint8 scroll[6];\r
53         uint8 modereg1[8];\r
54 #if defined(SUPPORT_16_COLORS)\r
55         uint8 modereg2[128];\r
56         uint8 grcg_mode, grcg_tile_ptr, grcg_tile[4];\r
57 #endif\r
58         \r
59         uint8 font[0x84000];\r
60         uint16 font_code;\r
61         uint8 font_line;\r
62         uint16 font_lr;\r
63         \r
64         uint8 screen_chr[400][641];\r
65         uint8 screen_gfx[400][640];\r
66         uint32 gdc_addr[480][80];\r
67         \r
68         void kanji_copy(uint8 *dst, uint8 *src, int from, int to);\r
69 #if defined(SUPPORT_16_COLORS)\r
70         void write_grcg(uint32 addr, uint32 data);\r
71         uint32 read_grcg(uint32 addr);\r
72 #endif\r
73         void draw_chr_screen();\r
74         void draw_gfx_screen();\r
75         \r
76 public:\r
77         DISPLAY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {}\r
78         ~DISPLAY() {}\r
79         \r
80         // common functions\r
81         void initialize();\r
82         void reset();\r
83         void event_frame();\r
84         void write_io8(uint32 addr, uint32 data);\r
85         uint32 read_io8(uint32 addr);\r
86         void write_memory_mapped_io8(uint32 addr, uint32 data);\r
87         uint32 read_memory_mapped_io8(uint32 addr);\r
88         void save_state(FILEIO* state_fio);\r
89         bool load_state(FILEIO* state_fio);\r
90         \r
91         // unique functions\r
92         void set_context_pic(DEVICE *device)\r
93         {\r
94                 d_pic = device;\r
95         }\r
96         void set_context_gdc_chr(UPD7220 *device, uint8 *ra)\r
97         {\r
98                 d_gdc_chr = device;\r
99                 ra_chr = ra;\r
100         }\r
101         void set_context_gdc_gfx(UPD7220 *device, uint8 *ra, uint8 *cs)\r
102         {\r
103                 d_gdc_gfx = device;\r
104                 ra_gfx = ra; cs_gfx = cs;\r
105         }\r
106         void draw_screen();\r
107         \r
108         bool sound_bios_ok;\r
109 };\r
110 \r
111 #endif\r
112 \r