OSDN Git Service

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