2 NEC PC-9801 Emulator 'ePC-9801'
3 NEC PC-9801E/F/M Emulator 'ePC-9801E'
4 NEC PC-9801U Emulator 'ePC-9801U'
5 NEC PC-9801VF Emulator 'ePC-9801VF'
6 NEC PC-9801VM Emulator 'ePC-9801VM'
7 NEC PC-9801VX Emulator 'ePC-9801VX'
8 NEC PC-98DO Emulator 'ePC-98DO'
10 Author : Takeda.Toshiya
20 #include "../../emu.h"
21 #include "../device.h"
25 class DISPLAY : public DEVICE
29 UPD7220 *d_gdc_chr, *d_gdc_gfx;
31 uint8_t *ra_gfx, *cs_gfx;
33 uint8_t tvram[0x4000];
34 #if !defined(SUPPORT_HIRESO)
35 #if defined(SUPPORT_2ND_VRAM)
36 uint8_t vram[0x40000];
38 uint8_t vram[0x20000];
41 uint8_t vram[0x80000];
44 #if defined(SUPPORT_2ND_VRAM) && !defined(SUPPORT_HIRESO)
45 uint8_t vram_disp_sel;
46 uint8_t vram_draw_sel;
51 #if defined(SUPPORT_16_COLORS)
56 scrntype_t palette_chr[8];
57 scrntype_t palette_gfx8[8];
59 #if defined(SUPPORT_16_COLORS)
60 scrntype_t palette_gfx16[16];
61 uint8_t anapal[16][3], anapal_sel;
67 #if defined(SUPPORT_16_COLORS)
68 uint8_t modereg2[128];
70 #if defined(SUPPORT_GRCG)
71 uint8_t grcg_mode, grcg_tile_ptr, grcg_tile[4];
73 #if defined(SUPPORT_EGC)
93 egcquad_t egc_lastvram;
103 egcword_t egc_srcmask;
106 uint8_t egc_sft8bitl;
107 uint8_t egc_sft8bitr;
108 uint8_t egc_buf[528]; /* 4096/8 + 4*4 */
109 egcquad_t egc_vram_src;
110 egcquad_t egc_vram_data;
113 uint8_t font[0x84000];
118 uint8_t screen_chr[400][641];
119 uint8_t screen_gfx[400][640];
120 uint32_t gdc_addr[480][80];
122 void kanji_copy(uint8_t *dst, uint8_t *src, int from, int to);
123 #if defined(SUPPORT_GRCG)
124 void grcg_writeb(uint32_t addr1, uint32_t data);
125 void grcg_writew(uint32_t addr1, uint32_t data);
126 uint32_t grcg_readb(uint32_t addr1);
127 uint32_t grcg_readw(uint32_t addr1);
129 #if defined(SUPPORT_EGC)
131 void egc_sftb_upn_sub(uint32_t ext);
132 void egc_sftb_dnn_sub(uint32_t ext);
133 void egc_sftb_upr_sub(uint32_t ext);
134 void egc_sftb_dnr_sub(uint32_t ext);
135 void egc_sftb_upl_sub(uint32_t ext);
136 void egc_sftb_dnl_sub(uint32_t ext);
137 void egc_sftb_upn0(uint32_t ext);
138 void egc_sftw_upn0();
139 void egc_sftb_dnn0(uint32_t ext);
140 void egc_sftw_dnn0();
141 void egc_sftb_upr0(uint32_t ext);
142 void egc_sftw_upr0();
143 void egc_sftb_dnr0(uint32_t ext);
144 void egc_sftw_dnr0();
145 void egc_sftb_upl0(uint32_t ext);
146 void egc_sftw_upl0();
147 void egc_sftb_dnl0(uint32_t ext);
148 void egc_sftw_dnl0();
149 void egc_sftb(int func, uint32_t ext);
150 void egc_sftw(int func);
151 void egc_shiftinput_byte(uint32_t ext);
152 void egc_shiftinput_incw();
153 void egc_shiftinput_decw();
154 uint64_t egc_ope_00(uint8_t ope, uint32_t addr);
155 uint64_t egc_ope_0f(uint8_t ope, uint32_t addr);
156 uint64_t egc_ope_c0(uint8_t ope, uint32_t addr);
157 uint64_t egc_ope_f0(uint8_t ope, uint32_t addr);
158 uint64_t egc_ope_fc(uint8_t ope, uint32_t addr);
159 uint64_t egc_ope_ff(uint8_t ope, uint32_t addr);
160 uint64_t egc_ope_nd(uint8_t ope, uint32_t addr);
161 uint64_t egc_ope_np(uint8_t ope, uint32_t addr);
162 uint64_t egc_ope_xx(uint8_t ope, uint32_t addr);
163 uint64_t egc_opefn(uint32_t func, uint8_t ope, uint32_t addr);
164 uint64_t egc_opeb(uint32_t addr, uint8_t value);
165 uint64_t egc_opew(uint32_t addr, uint16_t value);
166 uint32_t egc_readb(uint32_t addr1);
167 uint32_t egc_readw(uint32_t addr1);
168 void egc_writeb(uint32_t addr1, uint8_t value);
169 void egc_writew(uint32_t addr1, uint16_t value);
171 void draw_chr_screen();
172 void draw_gfx_screen();
175 DISPLAY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
177 set_device_name(_T("Display"));
185 void write_io8(uint32_t addr, uint32_t data);
186 uint32_t read_io8(uint32_t addr);
187 void write_memory_mapped_io8(uint32_t addr, uint32_t data);
188 void write_memory_mapped_io16(uint32_t addr, uint32_t data);
189 uint32_t read_memory_mapped_io8(uint32_t addr);
190 uint32_t read_memory_mapped_io16(uint32_t addr);
191 void write_dma_io8(uint32_t addr, uint32_t data);
192 void write_dma_io16(uint32_t addr, uint32_t data);
193 uint32_t read_dma_io8(uint32_t addr);
194 uint32_t read_dma_io16(uint32_t addr);
195 void save_state(FILEIO* state_fio);
196 bool load_state(FILEIO* state_fio);
199 void set_context_pic(DEVICE *device)
203 void set_context_gdc_chr(UPD7220 *device, uint8_t *ra)
208 void set_context_gdc_gfx(UPD7220 *device, uint8_t *ra, uint8_t *cs)
211 ra_gfx = ra; cs_gfx = cs;