summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2017-03-10 11:45:32 -0500
committer GitHub <noreply@github.com>2017-03-10 11:45:32 -0500
commit4c1b4196a97a84f64d8c4d414667790e6141ec28 (patch)
treeded379cd0d303b1c8d6baf3757f3b000bfa03099
parent5cabab001fbdf0a8430ace23c4fbfd5b13519f03 (diff)
parent284f66178d6ee00e509cd5a8af9b123d7acb6e3c (diff)
Merge pull request #2127 from moralrecordings/pcfix
pc_vga/cs4031: fix save state support
-rw-r--r--src/devices/machine/cs4031.cpp1
-rw-r--r--src/devices/video/pc_vga.cpp96
-rw-r--r--src/devices/video/pc_vga.h26
3 files changed, 107 insertions, 16 deletions
diff --git a/src/devices/machine/cs4031.cpp b/src/devices/machine/cs4031.cpp
index 669f301e9e4..40cbb94ddbb 100644
--- a/src/devices/machine/cs4031.cpp
+++ b/src/devices/machine/cs4031.cpp
@@ -250,6 +250,7 @@ void cs4031_device::device_start()
save_item(NAME(m_kbrst));
save_item(NAME(m_ext_gatea20));
save_item(NAME(m_fast_gatea20));
+ save_item(NAME(m_emu_gatea20));
save_item(NAME(m_address));
save_item(NAME(m_address_valid));
save_item(NAME(m_registers));
diff --git a/src/devices/video/pc_vga.cpp b/src/devices/video/pc_vga.cpp
index 1cf7849b409..5a0501f3cd5 100644
--- a/src/devices/video/pc_vga.cpp
+++ b/src/devices/video/pc_vga.cpp
@@ -258,9 +258,82 @@ void vga_device::device_start()
vga.memory.resize(vga.svga_intf.vram_size);
memset(&vga.memory[0], 0, vga.svga_intf.vram_size);
save_item(NAME(vga.memory));
- save_pointer(vga.crtc.data,"CRTC Registers",0x100);
- save_pointer(vga.sequencer.data,"Sequencer Registers",0x100);
- save_pointer(vga.attribute.data,"Attribute Registers", 0x15);
+
+ save_item(NAME(vga.sequencer.index));
+ save_item(NAME(vga.sequencer.data));
+ save_item(NAME(vga.sequencer.map_mask));
+ save_item(NAME(vga.sequencer.char_sel.A));
+ save_item(NAME(vga.sequencer.char_sel.B));
+
+ save_item(NAME(vga.crtc.index));
+ save_item(NAME(vga.crtc.data));
+ save_item(NAME(vga.crtc.horz_total));
+ save_item(NAME(vga.crtc.horz_disp_end));
+ save_item(NAME(vga.crtc.horz_blank_start));
+ save_item(NAME(vga.crtc.horz_retrace_start));
+ save_item(NAME(vga.crtc.horz_retrace_skew));
+ save_item(NAME(vga.crtc.horz_retrace_end));
+ save_item(NAME(vga.crtc.disp_enable_skew));
+ save_item(NAME(vga.crtc.evra));
+ save_item(NAME(vga.crtc.vert_total));
+ save_item(NAME(vga.crtc.vert_disp_end));
+ save_item(NAME(vga.crtc.vert_retrace_start));
+ save_item(NAME(vga.crtc.vert_retrace_end));
+ save_item(NAME(vga.crtc.vert_blank_start));
+ save_item(NAME(vga.crtc.line_compare));
+ save_item(NAME(vga.crtc.cursor_addr));
+ save_item(NAME(vga.crtc.byte_panning));
+ save_item(NAME(vga.crtc.preset_row_scan));
+ save_item(NAME(vga.crtc.scan_doubling));
+ save_item(NAME(vga.crtc.maximum_scan_line));
+ save_item(NAME(vga.crtc.cursor_enable));
+ save_item(NAME(vga.crtc.cursor_scan_start));
+ save_item(NAME(vga.crtc.cursor_skew));
+ save_item(NAME(vga.crtc.cursor_scan_end));
+ save_item(NAME(vga.crtc.start_addr));
+ save_item(NAME(vga.crtc.start_addr_latch));
+ save_item(NAME(vga.crtc.protect_enable));
+ save_item(NAME(vga.crtc.bandwidth));
+ save_item(NAME(vga.crtc.offset));
+ save_item(NAME(vga.crtc.word_mode));
+ save_item(NAME(vga.crtc.dw));
+ save_item(NAME(vga.crtc.div4));
+ save_item(NAME(vga.crtc.underline_loc));
+ save_item(NAME(vga.crtc.vert_blank_end));
+ save_item(NAME(vga.crtc.sync_en));
+ save_item(NAME(vga.crtc.aw));
+ save_item(NAME(vga.crtc.div2));
+ save_item(NAME(vga.crtc.sldiv));
+ save_item(NAME(vga.crtc.map14));
+ save_item(NAME(vga.crtc.map13));
+ save_item(NAME(vga.crtc.irq_clear));
+ save_item(NAME(vga.crtc.irq_disable));
+
+ save_item(NAME(vga.gc.index));
+ save_item(NAME(vga.gc.latch));
+ save_item(NAME(vga.gc.set_reset));
+ save_item(NAME(vga.gc.enable_set_reset));
+ save_item(NAME(vga.gc.color_compare));
+ save_item(NAME(vga.gc.logical_op));
+ save_item(NAME(vga.gc.rotate_count));
+ save_item(NAME(vga.gc.shift256));
+ save_item(NAME(vga.gc.shift_reg));
+ save_item(NAME(vga.gc.read_map_sel));
+ save_item(NAME(vga.gc.read_mode));
+ save_item(NAME(vga.gc.write_mode));
+ save_item(NAME(vga.gc.color_dont_care));
+ save_item(NAME(vga.gc.bit_mask));
+ save_item(NAME(vga.gc.alpha_dis));
+ save_item(NAME(vga.gc.memory_map_sel));
+ save_item(NAME(vga.gc.host_oe));
+ save_item(NAME(vga.gc.chain_oe));
+
+ save_item(NAME(vga.attribute.index));
+ save_item(NAME(vga.attribute.data));
+ save_item(NAME(vga.attribute.state));
+ save_item(NAME(vga.attribute.prot_bit));
+ save_item(NAME(vga.attribute.pel_shift));
+ save_item(NAME(vga.attribute.pel_shift_latch));
m_vblank_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(vga_device::vblank_timer_cb),this));
}
@@ -269,6 +342,14 @@ void svga_device::device_start()
{
vga_device::device_start();
memset(&svga, 0, sizeof(svga));
+
+ save_item(NAME(svga.bank_r));
+ save_item(NAME(svga.bank_w));
+ save_item(NAME(svga.rgb15_en));
+ save_item(NAME(svga.rgb16_en));
+ save_item(NAME(svga.rgb24_en));
+ save_item(NAME(svga.rgb32_en));
+ save_item(NAME(svga.id));
}
void ati_vga_device::device_start()
@@ -303,6 +384,15 @@ void tseng_vga_device::device_start()
{
svga_device::device_start();
memset(&et4k, 0, sizeof(et4k));
+
+ save_item(NAME(et4k.reg_3d8));
+ save_item(NAME(et4k.dac_ctrl));
+ save_item(NAME(et4k.dac_state));
+ save_item(NAME(et4k.horz_overflow));
+ save_item(NAME(et4k.aux_ctrl));
+ save_item(NAME(et4k.ext_reg_ena));
+ save_item(NAME(et4k.misc1));
+ save_item(NAME(et4k.misc2));
}
void ibm8514a_device::device_start()
diff --git a/src/devices/video/pc_vga.h b/src/devices/video/pc_vga.h
index b2955161fa5..ea6a26c7ff0 100644
--- a/src/devices/video/pc_vga.h
+++ b/src/devices/video/pc_vga.h
@@ -154,30 +154,30 @@ protected:
uint16_t vert_disp_end;
/**/ uint16_t vert_retrace_start;
/**/ uint8_t vert_retrace_end;
- /**/ uint16_t vert_blank_start;
+ uint16_t vert_blank_start;
uint16_t line_compare;
- /**/ uint32_t cursor_addr;
+ uint32_t cursor_addr;
/**/ uint8_t byte_panning;
- /**/ uint8_t preset_row_scan;
+ uint8_t preset_row_scan;
uint8_t scan_doubling;
- /**/ uint8_t maximum_scan_line;
- /**/ uint8_t cursor_enable;
- /**/ uint8_t cursor_scan_start;
+ uint8_t maximum_scan_line;
+ uint8_t cursor_enable;
+ uint8_t cursor_scan_start;
/**/ uint8_t cursor_skew;
- /**/ uint8_t cursor_scan_end;
+ uint8_t cursor_scan_end;
uint32_t start_addr;
uint32_t start_addr_latch;
- /**/ uint8_t protect_enable;
+ uint8_t protect_enable;
/**/ uint8_t bandwidth;
- /**/ uint16_t offset;
- /**/ uint8_t word_mode;
- /**/ uint8_t dw;
+ uint16_t offset;
+ uint8_t word_mode;
+ uint8_t dw;
/**/ uint8_t div4;
/**/ uint8_t underline_loc;
- /**/ uint16_t vert_blank_end;
+ uint16_t vert_blank_end;
uint8_t sync_en;
/**/ uint8_t aw;
- /**/ uint8_t div2;
+ uint8_t div2;
/**/ uint8_t sldiv;
/**/ uint8_t map14;
/**/ uint8_t map13;