2 Skelton for retropc emulator
4 Author : Takeda.Toshiya
17 class HD46505 : public DEVICE
22 outputs_t outputs_disp;
23 outputs_t outputs_vblank;
24 outputs_t outputs_vsync;
25 outputs_t outputs_hsync;
28 bool regs_written[18];
33 #if defined(HD46505_CHAR_CLOCK)
34 double char_clock, next_char_clock;
35 #elif defined(HD46505_HORIZ_FREQ)
36 double horiz_freq, next_horiz_freq;
38 double frames_per_sec;
40 int hz_total, hz_disp;
43 int vt_total, vt_disp;
47 int hs_start_clock, hs_end_clock;
49 bool display, vblank, vsync, hsync;
51 void set_display(bool val);
52 void set_vblank(bool val);
53 void set_vsync(bool val);
54 void set_hsync(bool val);
57 HD46505(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
59 initialize_output_signals(&outputs_disp);
60 initialize_output_signals(&outputs_vblank);
61 initialize_output_signals(&outputs_vsync);
62 initialize_output_signals(&outputs_hsync);
63 set_device_name(_T("HD46505 CRTC"));
70 void write_io8(uint32_t addr, uint32_t data);
71 uint32_t read_io8(uint32_t addr);
72 void event_pre_frame();
74 void event_vline(int v, int clock);
75 void event_callback(int event_id, int err);
76 void update_timing(int new_clocks, double new_frames_per_sec, int new_lines_per_frame);
77 void save_state(FILEIO* state_fio);
78 bool load_state(FILEIO* state_fio);
81 void set_context_disp(DEVICE* device, int id, uint32_t mask)
83 register_output_signal(&outputs_disp, device, id, mask);
85 void set_context_vblank(DEVICE* device, int id, uint32_t mask)
87 register_output_signal(&outputs_vblank, device, id, mask);
89 void set_context_vsync(DEVICE* device, int id, uint32_t mask)
91 register_output_signal(&outputs_vsync, device, id, mask);
93 void set_context_hsync(DEVICE* device, int id, uint32_t mask)
95 register_output_signal(&outputs_hsync, device, id, mask);
97 #if defined(HD46505_CHAR_CLOCK)
98 void set_char_clock(double clock)
100 next_char_clock = clock;
102 #elif defined(HD46505_HORIZ_FREQ)
103 void set_horiz_freq(double freq)
105 next_horiz_freq = freq;