From e2343a800b337c0ef0721a87cac04d0004022a23 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 9 Dec 2019 17:26:43 +0100 Subject: various devices: try the new (and some not so new) save state possibilities (nw) --- src/devices/bus/cpc/magicsound.cpp | 5 +--- src/devices/bus/hp_dio/hp98620.cpp | 41 +++++++++++---------------------- src/devices/bus/snes/sdd1.cpp | 7 ++---- src/devices/bus/vcs/dpc.cpp | 17 ++++++-------- src/devices/cpu/avr8/avr8.cpp | 28 ++++------------------ src/devices/cpu/dspp/dspp.cpp | 29 +++++++++++------------ src/devices/cpu/hphybrid/hphybrid.cpp | 12 ++-------- src/devices/cpu/i386/i386.cpp | 35 ++++------------------------ src/devices/cpu/i8089/i8089_channel.cpp | 7 ++---- 9 files changed, 49 insertions(+), 132 deletions(-) diff --git a/src/devices/bus/cpc/magicsound.cpp b/src/devices/bus/cpc/magicsound.cpp index a9c06b3f123..090a7ef732e 100644 --- a/src/devices/bus/cpc/magicsound.cpp +++ b/src/devices/bus/cpc/magicsound.cpp @@ -96,10 +96,7 @@ void al_magicsound_device::device_start() m_ramptr = machine().device(":" RAM_TAG); - for(int x=0;x<4;x++) - { - save_item(NAME(m_output[x]),x); - } + save_item(NAME(m_output)); } //------------------------------------------------- diff --git a/src/devices/bus/hp_dio/hp98620.cpp b/src/devices/bus/hp_dio/hp98620.cpp index 8988ef56266..4244fa2898f 100644 --- a/src/devices/bus/hp_dio/hp98620.cpp +++ b/src/devices/bus/hp_dio/hp98620.cpp @@ -34,34 +34,19 @@ void dio16_98620_device::device_start() { m_installed_io = false; - save_item(NAME(m_regs[0].address)); - save_item(NAME(m_regs[0].tc)); - save_item(NAME(m_regs[0].control)); - save_item(NAME(m_regs[0].irq_level)); - save_item(NAME(m_regs[0].tsz)); - save_item(NAME(m_regs[0].subcount)); - save_item(NAME(m_regs[0].irq)); - save_item(NAME(m_regs[0].ie)); - save_item(NAME(m_regs[0].armed)); - save_item(NAME(m_regs[0].dma_out)); - save_item(NAME(m_regs[0].dma_pri)); - save_item(NAME(m_regs[0].lword)); - save_item(NAME(m_regs[0].word)); - - - save_item(NAME(m_regs[1].address)); - save_item(NAME(m_regs[1].tc)); - save_item(NAME(m_regs[1].control)); - save_item(NAME(m_regs[1].irq_level)); - save_item(NAME(m_regs[1].tsz)); - save_item(NAME(m_regs[1].subcount)); - save_item(NAME(m_regs[1].irq)); - save_item(NAME(m_regs[1].ie)); - save_item(NAME(m_regs[1].armed)); - save_item(NAME(m_regs[1].dma_out)); - save_item(NAME(m_regs[1].dma_pri)); - save_item(NAME(m_regs[1].lword)); - save_item(NAME(m_regs[1].word)); + save_item(STRUCT_MEMBER(m_regs, address)); + save_item(STRUCT_MEMBER(m_regs, tc)); + save_item(STRUCT_MEMBER(m_regs, control)); + save_item(STRUCT_MEMBER(m_regs, irq_level)); + save_item(STRUCT_MEMBER(m_regs, tsz)); + save_item(STRUCT_MEMBER(m_regs, subcount)); + save_item(STRUCT_MEMBER(m_regs, irq)); + save_item(STRUCT_MEMBER(m_regs, ie)); + save_item(STRUCT_MEMBER(m_regs, armed)); + save_item(STRUCT_MEMBER(m_regs, dma_out)); + save_item(STRUCT_MEMBER(m_regs, dma_pri)); + save_item(STRUCT_MEMBER(m_regs, lword)); + save_item(STRUCT_MEMBER(m_regs, word)); save_item(NAME(m_installed_io)); save_item(NAME(m_control)); diff --git a/src/devices/bus/snes/sdd1.cpp b/src/devices/bus/snes/sdd1.cpp index 94374d07681..3b60be87609 100644 --- a/src/devices/bus/snes/sdd1.cpp +++ b/src/devices/bus/snes/sdd1.cpp @@ -435,11 +435,8 @@ void sns_rom_sdd1_device::device_start() save_item(NAME(m_xfer_enable)); save_item(NAME(m_mmc)); - for (int i = 0; i < 8; i++) - { - save_item(NAME(m_dma[i].addr), i); - save_item(NAME(m_dma[i].size), i); - } + save_item(STRUCT_MEMBER(m_dma, addr)); + save_item(STRUCT_MEMBER(m_dma, size)); save_pointer(NAME(m_buffer.data), 0x10000); save_item(NAME(m_buffer.offset)); diff --git a/src/devices/bus/vcs/dpc.cpp b/src/devices/bus/vcs/dpc.cpp index 525f9e77085..795e16461eb 100644 --- a/src/devices/bus/vcs/dpc.cpp +++ b/src/devices/bus/vcs/dpc.cpp @@ -35,16 +35,13 @@ void dpc_device::device_start() m_oscillator = timer_alloc(TIMER_OSC); m_oscillator->reset(); - for (int i = 0; i < 8; i++) - { - save_item(NAME(m_df[i].top), i); - save_item(NAME(m_df[i].bottom), i); - save_item(NAME(m_df[i].low), i); - save_item(NAME(m_df[i].high), i); - save_item(NAME(m_df[i].flag), i); - save_item(NAME(m_df[i].music_mode), i); - save_item(NAME(m_df[i].osc_clk), i); - } + save_item(STRUCT_MEMBER(m_df, top)); + save_item(STRUCT_MEMBER(m_df, bottom)); + save_item(STRUCT_MEMBER(m_df, low)); + save_item(STRUCT_MEMBER(m_df, high)); + save_item(STRUCT_MEMBER(m_df, flag)); + save_item(STRUCT_MEMBER(m_df, music_mode)); + save_item(STRUCT_MEMBER(m_df, osc_clk)); save_item(NAME(m_movamt)); save_item(NAME(m_latch_62)); diff --git a/src/devices/cpu/avr8/avr8.cpp b/src/devices/cpu/avr8/avr8.cpp index 62460f94f8f..fbde839982e 100644 --- a/src/devices/cpu/avr8/avr8.cpp +++ b/src/devices/cpu/avr8/avr8.cpp @@ -795,30 +795,10 @@ void avr8_device::device_start() // register our state for saving save_item(NAME(m_pc)); save_item(NAME(m_r)); - save_item(NAME(m_timer_top[0])); - save_item(NAME(m_timer_increment[0])); - save_item(NAME(m_timer_prescale[0])); - save_item(NAME(m_timer_prescale_count[0])); - save_item(NAME(m_timer_top[1])); - save_item(NAME(m_timer_increment[1])); - save_item(NAME(m_timer_prescale[1])); - save_item(NAME(m_timer_prescale_count[1])); - save_item(NAME(m_timer_top[2])); - save_item(NAME(m_timer_increment[2])); - save_item(NAME(m_timer_prescale[2])); - save_item(NAME(m_timer_prescale_count[2])); - save_item(NAME(m_timer_top[3])); - save_item(NAME(m_timer_increment[3])); - save_item(NAME(m_timer_prescale[3])); - save_item(NAME(m_timer_prescale_count[3])); - save_item(NAME(m_timer_top[4])); - save_item(NAME(m_timer_increment[4])); - save_item(NAME(m_timer_prescale[4])); - save_item(NAME(m_timer_prescale_count[4])); - save_item(NAME(m_timer_top[5])); - save_item(NAME(m_timer_increment[5])); - save_item(NAME(m_timer_prescale[5])); - save_item(NAME(m_timer_prescale_count[5])); + save_item(NAME(m_timer_top)); + save_item(NAME(m_timer_increment)); + save_item(NAME(m_timer_prescale)); + save_item(NAME(m_timer_prescale_count)); save_item(NAME(m_addr_mask)); save_item(NAME(m_interrupt_pending)); save_item(NAME(m_elapsed_cycles)); diff --git a/src/devices/cpu/dspp/dspp.cpp b/src/devices/cpu/dspp/dspp.cpp index 587df951f45..44ced48c56c 100644 --- a/src/devices/cpu/dspp/dspp.cpp +++ b/src/devices/cpu/dspp/dspp.cpp @@ -201,22 +201,19 @@ void dspp_device::device_start() save_item(NAME(m_output_fifo_start)); save_item(NAME(m_output_fifo_count)); - for (uint32_t i = 0; i < NUM_DMA_CHANNELS; ++i) - { - save_item(NAME(m_fifo_dma[i].m_current_addr), i); - save_item(NAME(m_fifo_dma[i].m_current_count), i); - save_item(NAME(m_fifo_dma[i].m_next_addr), i); - save_item(NAME(m_fifo_dma[i].m_next_count), i); - save_item(NAME(m_fifo_dma[i].m_prev_value), i); - save_item(NAME(m_fifo_dma[i].m_prev_current), i); - save_item(NAME(m_fifo_dma[i].m_go_forever), i); - save_item(NAME(m_fifo_dma[i].m_next_valid), i); - save_item(NAME(m_fifo_dma[i].m_reserved), i); - save_item(NAME(m_fifo_dma[i].m_fifo), i); - save_item(NAME(m_fifo_dma[i].m_dma_ptr), i); - save_item(NAME(m_fifo_dma[i].m_dspi_ptr), i); - save_item(NAME(m_fifo_dma[i].m_depth), i); - } + save_item(STRUCT_MEMBER(m_fifo_dma, m_current_addr)); + save_item(STRUCT_MEMBER(m_fifo_dma, m_current_count)); + save_item(STRUCT_MEMBER(m_fifo_dma, m_next_addr)); + save_item(STRUCT_MEMBER(m_fifo_dma, m_next_count)); + save_item(STRUCT_MEMBER(m_fifo_dma, m_prev_value)); + save_item(STRUCT_MEMBER(m_fifo_dma, m_prev_current)); + save_item(STRUCT_MEMBER(m_fifo_dma, m_go_forever)); + save_item(STRUCT_MEMBER(m_fifo_dma, m_next_valid)); + save_item(STRUCT_MEMBER(m_fifo_dma, m_reserved)); + save_item(STRUCT_MEMBER(m_fifo_dma, m_fifo)); + save_item(STRUCT_MEMBER(m_fifo_dma, m_dma_ptr)); + save_item(STRUCT_MEMBER(m_fifo_dma, m_dspi_ptr)); + save_item(STRUCT_MEMBER(m_fifo_dma, m_depth)); save_item(NAME(m_last_frame_clock)); save_item(NAME(m_last_osc_count)); diff --git a/src/devices/cpu/hphybrid/hphybrid.cpp b/src/devices/cpu/hphybrid/hphybrid.cpp index ccd76079081..d68cc8f9ea4 100644 --- a/src/devices/cpu/hphybrid/hphybrid.cpp +++ b/src/devices/cpu/hphybrid/hphybrid.cpp @@ -716,10 +716,7 @@ void hp_hybrid_cpu_device::emc_start() state_add(HPHYBRID_R26, "R26" , m_reg_r26).noshow(); state_add(HPHYBRID_R27, "R27" , m_reg_r27).noshow(); - save_item(NAME(m_reg_ar2[ 0 ])); - save_item(NAME(m_reg_ar2[ 1 ])); - save_item(NAME(m_reg_ar2[ 2 ])); - save_item(NAME(m_reg_ar2[ 3 ])); + save_item(NAME(m_reg_ar2)); save_item(NAME(m_reg_se)); save_item(NAME(m_reg_r25)); save_item(NAME(m_reg_r26)); @@ -1749,12 +1746,7 @@ void hp_5061_3001_cpu_device::device_start() state_add(HPHYBRID_R35, "R35" , m_reg_aec[ 3 ]); state_add(HPHYBRID_R36, "R36" , m_reg_aec[ 4 ]); state_add(HPHYBRID_R37, "R37" , m_reg_aec[ 5 ]); - save_item(NAME(m_reg_aec[ 0 ])); - save_item(NAME(m_reg_aec[ 1 ])); - save_item(NAME(m_reg_aec[ 2 ])); - save_item(NAME(m_reg_aec[ 3 ])); - save_item(NAME(m_reg_aec[ 4 ])); - save_item(NAME(m_reg_aec[ 5 ])); + save_item(NAME(m_reg_aec)); } void hp_5061_3001_cpu_device::device_reset() diff --git a/src/devices/cpu/i386/i386.cpp b/src/devices/cpu/i386/i386.cpp index 9f6eaafc83c..29bfff89bb5 100644 --- a/src/devices/cpu/i386/i386.cpp +++ b/src/devices/cpu/i386/i386.cpp @@ -1949,36 +1949,11 @@ void i386_device::i386_common_init() zero_state(); save_item(NAME(m_reg.d)); - save_item(NAME(m_sreg[ES].selector)); - save_item(NAME(m_sreg[ES].base)); - save_item(NAME(m_sreg[ES].limit)); - save_item(NAME(m_sreg[ES].flags)); - save_item(NAME(m_sreg[ES].d)); - save_item(NAME(m_sreg[CS].selector)); - save_item(NAME(m_sreg[CS].base)); - save_item(NAME(m_sreg[CS].limit)); - save_item(NAME(m_sreg[CS].flags)); - save_item(NAME(m_sreg[CS].d)); - save_item(NAME(m_sreg[SS].selector)); - save_item(NAME(m_sreg[SS].base)); - save_item(NAME(m_sreg[SS].limit)); - save_item(NAME(m_sreg[SS].flags)); - save_item(NAME(m_sreg[SS].d)); - save_item(NAME(m_sreg[DS].selector)); - save_item(NAME(m_sreg[DS].base)); - save_item(NAME(m_sreg[DS].limit)); - save_item(NAME(m_sreg[DS].flags)); - save_item(NAME(m_sreg[DS].d)); - save_item(NAME(m_sreg[FS].selector)); - save_item(NAME(m_sreg[FS].base)); - save_item(NAME(m_sreg[FS].limit)); - save_item(NAME(m_sreg[FS].flags)); - save_item(NAME(m_sreg[FS].d)); - save_item(NAME(m_sreg[GS].selector)); - save_item(NAME(m_sreg[GS].base)); - save_item(NAME(m_sreg[GS].limit)); - save_item(NAME(m_sreg[GS].flags)); - save_item(NAME(m_sreg[GS].d)); + save_item(STRUCT_MEMBER(m_sreg, selector)); + save_item(STRUCT_MEMBER(m_sreg, base)); + save_item(STRUCT_MEMBER(m_sreg, limit)); + save_item(STRUCT_MEMBER(m_sreg, flags)); + save_item(STRUCT_MEMBER(m_sreg, d)); save_item(NAME(m_eip)); save_item(NAME(m_prev_eip)); diff --git a/src/devices/cpu/i8089/i8089_channel.cpp b/src/devices/cpu/i8089/i8089_channel.cpp index 02bb12daa8c..2da1ac9d076 100644 --- a/src/devices/cpu/i8089/i8089_channel.cpp +++ b/src/devices/cpu/i8089/i8089_channel.cpp @@ -83,11 +83,8 @@ void i8089_channel_device::device_start() save_item(NAME(m_drq)); save_item(NAME(m_prio)); - for (int i = 0; i < ARRAY_LENGTH(m_r); i++) - { - save_item(NAME(m_r[i].w), i); - save_item(NAME(m_r[i].t), i); - } + save_item(STRUCT_MEMBER(m_r, w)); + save_item(STRUCT_MEMBER(m_r, t)); } //------------------------------------------------- -- cgit v1.2.3