OSDN Git Service

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