OSDN Git Service

[VM][STATE] Use namespace {VMNAME} to separate per VMs.
[csp-qt/common_source_project-fm7.git] / source / src / vm / mz5500 / display.h
1 /*
2         SHARP MZ-5500 Emulator 'EmuZ-5500'
3
4         Author : Takeda.Toshiya
5         Date   : 2008.04.10 -
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 MZ5500 {
22
23 class DISPLAY : public DEVICE
24 {
25 private:
26         uint8_t screen[400][640];
27         uint16_t tmp[640];
28         scrntype_t palette_pc_base[8];
29         scrntype_t palette_pc[8];
30         
31         uint8_t *vram_b, *vram_r, *vram_g, *mapram;
32         uint8_t *sync, *ra, *cs;
33         int* ead;
34         
35         uint8_t palette[8];
36         uint8_t back[5], reverse[5];
37         uint8_t rno, wregs[16];
38         int pri[16];
39         int vma[5];
40         uint8_t vds[5];
41         uint8_t mode_r, mode_c, mode_p;
42         
43         void draw_640dot_screen(int ymax);
44         void draw_320dot_screen(int ymax);
45         void update_palette();
46         
47 public:
48         DISPLAY(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
49         {
50                 set_device_name(_T("Display"));
51         }
52         ~DISPLAY() {}
53         
54         // common functions
55         void initialize();
56         void write_io8(uint32_t addr, uint32_t data);
57         uint32_t read_io8(uint32_t addr);
58         bool process_state(FILEIO* state_fio, bool loading);
59         
60         // unique functions
61         void set_vram_ptr(uint8_t* ptr)
62         {
63                 vram_b = ptr + 0x00000;
64                 vram_r = ptr + 0x10000;
65                 vram_g = ptr + 0x20000;
66                 mapram = ptr + 0x60000;
67         }
68         void set_sync_ptr(uint8_t* ptr)
69         {
70                 sync = ptr;
71         }
72         void set_ra_ptr(uint8_t* ptr)
73         {
74                 ra = ptr;
75         }
76         void set_cs_ptr(uint8_t* ptr)
77         {
78                 cs = ptr;
79         }
80         void set_ead_ptr(int* ptr)
81         {
82                 ead = ptr;
83         }
84         void draw_screen();
85 };
86
87 }
88 #endif
89