2 Skelton for retropc emulator
18 #define read_dword(address) *(uint32_t *)address
19 #define write_dword(address,data) *(uint32_t *)address=data
20 #define BACKDROP_COLOR ((vdp_mode == 4 ? 0x10 : 0x00) + (regs[0x07] & 0x0f))
21 #define ADDR_MASK (0x4000 - 1)
23 #define CYCLES_PER_LINE 228
28 class _315_5124 : public DEVICE
31 GAMEGEAR::KEYBOARD *d_key;
34 outputs_t outputs_irq;
43 int pn, ct, pg, sa, sg;
57 uint8_t screen[192][256];
58 uint8_t regs[0x10], status_reg, read_ahead, first_byte;
61 uint16_t color_table, pattern_table, name_table;
62 uint16_t sprite_pattern, sprite_attrib;
63 uint16_t color_mask, pattern_mask;
64 scrntype_t palette_pc[0x20];
65 void set_intstat(bool val);
72 void draw_modebogus();
77 uint8_t addrmode; /* Type of VDP action */
79 uint8_t vdp_mode; /* Current mode of the VDP: 0,1,2,3,4 */
80 uint8_t sms_cram_expand_table[4];
81 uint8_t gg_cram_expand_table[16];
82 uint8_t *linebuf; /* Pointer to output buffer */
83 uint8_t bg_name_dirty[0x200]; /* 1= This pattern is dirty */
84 uint16_t bg_name_list[0x200]; /* List of modified pattern indices */
85 uint16_t bg_list_index; /* # of modified patterns in list */
86 uint8_t bg_pattern_cache[0x20000];/* Cached and flipped patterns */
87 uint8_t lut[0x10000]; /* Pixel look-up table */
88 uint32_t bp_lut[0x10000]; /* Bitplane to packed pixel LUT */
95 bool __315_5124_LIMIT_SPRITES;
98 _315_5124(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
100 initialize_output_signals(&outputs_irq);
101 set_device_name(_T("315-5124"));
108 void __FASTCALL write_io8(uint32_t addr, uint32_t data);
109 uint32_t __FASTCALL read_io8(uint32_t addr);
110 void event_vline(int v, int clock);
112 void set_context_key(GAMEGEAR::KEYBOARD* device)
116 void set_context_psg(DEVICE* device)
120 void set_context_irq(DEVICE* device, int id, uint32_t mask)
122 initialize_output_signals(&outputs_irq);
123 register_output_signal(&outputs_irq, device, id, mask);
126 void palette_sync(int index, int force);
127 void render_bg(int line);
128 void render_obj(int line);
129 void update_bg_pattern_cache(void);
130 void viewport_check(void);
131 void vdp_reg_w(uint8_t r, uint8_t d);
132 void set_console(int gg)