2 Skelton for retropc emulator
4 Author : Takeda.Toshiya
17 class HD46505 : public DEVICE
21 outputs_t outputs_disp;
22 outputs_t outputs_vblank;
23 outputs_t outputs_vsync;
24 outputs_t outputs_hsync;
27 bool regs_written[18];
32 #if defined(HD46505_CHAR_CLOCK)
33 double char_clock, next_char_clock;
34 #elif defined(HD46505_HORIZ_FREQ)
35 double horiz_freq, next_horiz_freq;
37 double frames_per_sec;
39 int hz_total, hz_disp;
42 int vt_total, vt_disp;
46 int hs_start_clock, hs_end_clock;
48 bool display, vblank, vsync, hsync;
50 void set_display(bool val);
51 void set_vblank(bool val);
52 void set_vsync(bool val);
53 void set_hsync(bool val);
56 HD46505(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
58 initialize_output_signals(&outputs_disp);
59 initialize_output_signals(&outputs_vblank);
60 initialize_output_signals(&outputs_vsync);
61 initialize_output_signals(&outputs_hsync);
62 set_device_name(_T("HD46505 CRTC"));
69 void write_io8(uint32_t addr, uint32_t data);
70 uint32_t read_io8(uint32_t addr);
71 void event_pre_frame();
73 void event_vline(int v, int clock);
74 void event_callback(int event_id, int err);
75 void update_timing(int new_clocks, double new_frames_per_sec, int new_lines_per_frame);
76 void save_state(FILEIO* state_fio);
77 bool load_state(FILEIO* state_fio);
80 void set_context_disp(DEVICE* device, int id, uint32_t mask)
82 register_output_signal(&outputs_disp, device, id, mask);
84 void set_context_vblank(DEVICE* device, int id, uint32_t mask)
86 register_output_signal(&outputs_vblank, device, id, mask);
88 void set_context_vsync(DEVICE* device, int id, uint32_t mask)
90 register_output_signal(&outputs_vsync, device, id, mask);
92 void set_context_hsync(DEVICE* device, int id, uint32_t mask)
94 register_output_signal(&outputs_hsync, device, id, mask);
96 #if defined(HD46505_CHAR_CLOCK)
97 void set_char_clock(double clock)
99 next_char_clock = clock;
101 #elif defined(HD46505_HORIZ_FREQ)
102 void set_horiz_freq(double freq)
104 next_horiz_freq = freq;