OSDN Git Service

[VM][STATE] Use namespace {VMNAME} to separate per VMs.
[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 namespace QC10 {
22
23 class DISPLAY : public DEVICE
24 {
25 private:
26         UPD7220 *d_gdc;
27         
28 #ifdef _COLOR_MONITOR
29         uint8_t vram_r[VRAM_SIZE];
30         uint8_t vram_g[VRAM_SIZE];
31         uint8_t vram_b[VRAM_SIZE];
32         scrntype_t palette_pc[8];
33 #else
34         uint8_t vram[VRAM_SIZE];
35         uint8_t font[0x10000];  // 16bytes * 256chars
36         scrntype_t palette_pc[16];      // normal, intensify
37 #endif
38         uint8_t screen[400][640];
39         scrntype_t tmp[640];
40         
41         uint8_t *sync, *zoom, *ra, *cs;
42         int* ead;
43         uint8_t bank;
44         int blink;
45         
46 public:
47         DISPLAY(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
48         {
49                 set_device_name(_T("Display"));
50         }
51         ~DISPLAY() {}
52         
53         // common functions
54         void initialize();
55         void reset();
56         void write_io8(uint32_t addr, uint32_t data);
57         uint32_t read_io8(uint32_t addr);
58         void event_frame();
59         bool process_state(FILEIO* state_fio, bool loading);
60         
61         // unique functions
62         void set_context_gdc(UPD7220* device)
63         {
64                 d_gdc = device;
65         }
66         uint8_t* get_vram()
67         {
68 #ifdef _COLOR_MONITOR
69                 return vram_b;
70 #else
71                 return vram;
72 #endif
73         }
74         void set_sync_ptr(uint8_t* ptr)
75         {
76                 sync = ptr;
77         }
78         void set_zoom_ptr(uint8_t* ptr)
79         {
80                 zoom = ptr;
81         }
82         void set_ra_ptr(uint8_t* ptr)
83         {
84                 ra = ptr;
85         }
86         void set_cs_ptr(uint8_t* ptr)
87         {
88                 cs = ptr;
89         }
90         void set_ead_ptr(int* ptr)
91         {
92                 ead = ptr;
93         }
94         void draw_screen();
95 };
96
97 }
98 #endif
99