(MESS) PlayStation: Improved save state behavior, but still needs work. (nw)

This commit is contained in:
R. Belmont 2013-05-12 03:53:01 +00:00
parent bd4fc60963
commit 6cbc4ae6de
4 changed files with 65 additions and 40 deletions

View File

@ -463,6 +463,7 @@ struct spu_device::voiceinfo
class stream_buffer
{
public:
struct stream_marker
{
public:
@ -482,7 +483,6 @@ class stream_buffer
stream_marker *marker_head,
*marker_tail;
public:
stream_buffer(const unsigned int _sector_size,
const unsigned int _num_sectors)
: head(0),
@ -986,42 +986,32 @@ void spu_device::device_start()
memset(cache,0,(spu_ram_size>>4)*sizeof(sample_cache *));
// register save state stuff
// per-voice variables
for (int v = 0; v < 24; v++)
{
save_item(NAME(spureg.voice[v].vol_l), v);
save_item(NAME(spureg.voice[v].vol_r), v);
save_item(NAME(spureg.voice[v].pitch), v);
save_item(NAME(spureg.voice[v].addr), v);
save_item(NAME(spureg.voice[v].adsl), v);
save_item(NAME(spureg.voice[v].srrr), v);
save_item(NAME(spureg.voice[v].curvol), v);
save_item(NAME(spureg.voice[v].repaddr), v);
}
// SPU globals
save_item(NAME(spureg.mvol_l));
save_item(NAME(spureg.mvol_r));
save_item(NAME(spureg.rvol_l));
save_item(NAME(spureg.rvol_r));
save_item(NAME(spureg.keyon));
save_item(NAME(spureg.keyoff));
save_item(NAME(spureg.fm));
save_item(NAME(spureg.noise));
save_item(NAME(spureg.reverb));
save_item(NAME(spureg.chon));
save_item(NAME(spureg._unknown));
save_item(NAME(spureg.reverb_addr));
save_item(NAME(spureg.irq_addr));
save_item(NAME(spureg.trans_addr));
save_item(NAME(spureg.data));
save_item(NAME(spureg.ctrl));
save_item(NAME(spureg.status));
save_item(NAME(spureg.cdvol_l));
save_item(NAME(spureg.cdvol_r));
save_item(NAME(spureg.exvol_l));
save_item(NAME(spureg.exvol_r));
save_item(NAME(reg)); // this covers all spureg.* plus the reverb parameter block
save_item(NAME(xa_cnt));
save_item(NAME(cdda_cnt));
save_item(NAME(xa_freq));
save_item(NAME(cdda_freq));
save_item(NAME(xa_channels));
save_item(NAME(xa_spf));
save_item(NAME(cur_frame_sample));
save_item(NAME(cur_generate_sample));
save_pointer(NAME(spu_ram), spu_ram_size);
save_item(NAME(xa_buffer->head));
save_item(NAME(xa_buffer->tail));
save_item(NAME(xa_buffer->in));
save_item(NAME(xa_buffer->sector_size));
save_item(NAME(xa_buffer->num_sectors));
save_item(NAME(xa_buffer->buffer_size));
save_pointer(NAME(xa_buffer->buffer), xa_sector_size*xa_buffer_sectors);
save_item(NAME(cdda_buffer->head));
save_item(NAME(cdda_buffer->tail));
save_item(NAME(cdda_buffer->in));
save_item(NAME(cdda_buffer->sector_size));
save_item(NAME(cdda_buffer->num_sectors));
save_item(NAME(cdda_buffer->buffer_size));
save_pointer(NAME(cdda_buffer->buffer), cdda_sector_size*cdda_buffer_sectors);
}
void spu_device::device_reset()

View File

@ -54,13 +54,18 @@ void psxcard_device::device_start()
m_disabled = false;
// save state registrations
/* save_item(NAME(pkt));
save_item(NAME(pkt));
save_item(NAME(pkt_ptr));
save_item(NAME(pkt_sz));
save_item(NAME(pkt));
save_item(NAME(cache));
save_item(NAME(cmd));
save_item(NAME(addr));
save_item(NAME(state));*/
save_item(NAME(state));
save_item(NAME(m_disabled));
save_item(NAME(m_odata));
save_item(NAME(m_idata));
save_item(NAME(m_bit));
save_item(NAME(m_count));
save_item(NAME(m_pad));
}
void psxcard_device::device_reset()

View File

@ -121,6 +121,28 @@ void psxcd_device::device_start()
m_timers[i] = timer_alloc(i);
m_timerinuse[i] = false;
}
save_item(NAME(cmdbuf));
save_item(NAME(mode));
save_item(NAME(secbuf));
save_item(NAME(filter_file));
save_item(NAME(filter_channel));
save_item(NAME(lastsechdr));
save_item(NAME(status));
save_item(NAME(rdp));
save_item(NAME(m_cursec));
save_item(NAME(sectail));
save_item(NAME(m_transcurr));
save_item(NAME(m_transbuf));
save_item(NAME(loc.w));
save_item(NAME(curpos.w));
save_item(NAME(open));
save_item(NAME(m_mute));
save_item(NAME(m_dmaload));
save_item(NAME(next_read_event));
save_item(NAME(next_sector_t));
save_item(NAME(autopause_sector));
save_item(NAME(m_param_count));
}
void psxcd_device::device_reset()
@ -1197,3 +1219,4 @@ int psxcd_device::add_system_event(int type, UINT64 t, void *ptr)
fatalerror("psxcd: out of timers\n");
return 0;
}

View File

@ -33,6 +33,13 @@ void psx_multitap_device::device_start()
m_portc->setup_ack_cb(psx_controller_port_device::void_cb(FUNC(psx_multitap_device::ack), this));
m_portd->setup_ack_cb(psx_controller_port_device::void_cb(FUNC(psx_multitap_device::ack), this));
m_nextmode = false;
save_item(NAME(m_activeport));
save_item(NAME(m_cack));
save_item(NAME(m_singlemode));
save_item(NAME(m_nextmode));
save_item(NAME(m_tapmc));
save_item(NAME(m_data));
}
void psx_multitap_device::interface_pre_reset()