1 // from "v99x8.h" of Zodiac
14 //#include "../misc/ut.h"
19 #define V99X8_NSTAT 10
23 V99X8_SCREEN_IGN = -1,
24 V99X8_SCREEN_0, V99X8_SCREEN_1, V99X8_SCREEN_2, V99X8_SCREEN_3,
25 V99X8_SCREEN_4, V99X8_SCREEN_5, V99X8_SCREEN_6, V99X8_SCREEN_7,
26 V99X8_SCREEN_8, V99X8_SCREEN_X, V99X8_SCREEN_A, V99X8_SCREEN_C
32 bool f_interleave; /* sc7/8
\82É
\82¨
\82¯
\82é
\93Á
\95Ê
\82È
\83}
\83b
\83s
\83\93\83O
\83\82\81[
\83h */
36 } v99x8_screen_mode_t;
40 uint8_t ctrl[V99X8_NREG], status[V99X8_NSTAT];
43 v99x8_screen_mode_t mode;
45 uint8_t col_fg, col_bg;
47 uint8_t *tbl_pg, *tbl_pn, *tbl_cl;
49 int pages; /* VRAM memory size */
54 int scanline, n_scanlines; /*
\8f\88\97\9d\92\86\82Ì scanline
\82Æ scanline
\90\94\81B
55 ???
\82à
\82Á
\82Æ
\82æ
\82¢
\83l
\81[
\83~
\83\93\83O
\81H */
66 extern void v99x8_init(void);
67 extern void v99x8_ctrl(int n, uint8_t m);
68 extern int v99x8_hsync(void);
70 extern uint8_t v99x8_in_0(void); /* VRAM read */
71 extern uint8_t v99x8_in_1(void); /* status in */
73 extern void v99x8_out_0(uint8_t n); /* VRAM write */
74 extern void v99x8_out_1(uint8_t n); /* ctrl out */
75 extern void v99x8_out_2(uint8_t n); /* palette out */
76 extern void v99x8_out_3(uint8_t n); /* ctrl out */
79 extern void v99x8_pallete_set(uint8_t n, uint8_t r, uint8_t g, uint8_t b);
80 extern void v99x8_refresh_init(void);
81 extern void v99x8_refresh_screen(void);
82 extern void v99x8_refresh_clear(void);
83 extern void v99x8_refresh_sc0(int y, int h);
84 extern void v99x8_refresh_sc1(int y, int h);
85 extern void v99x8_refresh_sc2(int y, int h);
86 extern void v99x8_refresh_sc3(int y, int h);
87 extern void v99x8_refresh_sc4(int y, int h);
88 extern void v99x8_refresh_sc5(int y, int h);
89 extern void v99x8_refresh_sc6(int y, int h);
90 extern void v99x8_refresh_sc7(int y, int h);
91 extern void v99x8_refresh_sc8(int y, int h);
92 extern void v99x8_refresh_sca(int y, int h);
93 extern void v99x8_refresh_scc(int y, int h);
94 extern void v99x8_refresh_scx(int y, int h);
96 extern uint8_t vram_read(int addr);
97 extern void vram_write(int addr, uint8_t n);
100 #define VRAM_ADDR(addr) (v99x8.f_interleave ? \
101 (addr >> 1) | ((addr & 1) << 16) : \
110 Skelton for retropc emulator
112 Origin : "tms9918a.h"
121 //#include "../emu.h"
125 class V99X8 : public DEVICE
129 outputs_t outputs_irq;
131 uint8_t vram[1024*128];
132 // scrntype_t screen[SCREEN_WIDTH*SCREEN_HEIGHT];
139 void __FASTCALL set_intstat(bool val);
141 int __FASTCALL hsync(int v/*void*/);
142 void __FASTCALL z80_intreq(int a);
143 int __FASTCALL md_video_pitch(void);
144 uint8_t __FASTCALL *md_video_lockline(int x, int y, int w, int h);
145 void __FASTCALL md_video_update(int n, /*md_video_rect_t*/void *rp);
146 void __FASTCALL md_video_fill(int x, int y, int w, int h, uint32_t c);
147 void __FASTCALL v99x8_refresh_screen(void);
148 void __FASTCALL v99x8_refresh_clear(void);
149 uint8_t __FASTCALL *v99x8_refresh_start(int x, int w, int h);
150 void __FASTCALL v99x8_refresh_sc0(int y, int h);
151 void __FASTCALL v99x8_refresh_sc1(int y, int h);
152 void __FASTCALL v99x8_refresh_sc2(int y, int h);
153 void __FASTCALL v99x8_refresh_sc3(int y, int h);
154 void __FASTCALL v99x8_refresh_sc4(int y, int h);
155 void __FASTCALL v99x8_refresh_sc5(int y, int h);
156 void __FASTCALL v99x8_refresh_sc6(int y, int h);
157 void __FASTCALL v99x8_refresh_sc7(int y, int h);
158 void __FASTCALL v99x8_refresh_sc8(int y, int h);
159 void __FASTCALL v99x8_refresh_sca(int y, int h);
160 void __FASTCALL v99x8_refresh_scc(int y, int h);
161 void __FASTCALL v99x8_refresh_scx(int y, int h);
164 V99X8(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
166 initialize_output_signals(&outputs_irq);
167 set_device_name(_T("V99x8 VDP"));
175 void __FASTCALL write_io8(uint32_t addr, uint32_t data);
176 uint32_t __FASTCALL read_io8(uint32_t addr);
177 void event_vline(int v, int clock);
178 bool process_state(FILEIO* state_fio, bool loading);
180 void set_context_irq(DEVICE* device, int id, uint32_t mask)
182 register_output_signal(&outputs_irq, device, id, mask);