mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
(MESS) PlayStation: Improved save state behavior, but still needs work. (nw)
This commit is contained in:
parent
bd4fc60963
commit
6cbc4ae6de
@ -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()
|
||||
|
@ -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()
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user