mirror of
https://github.com/holub/mame
synced 2025-05-25 07:15:25 +03:00
03991: bigevglf : Reload of state cause audio corruption [Phil Bennett]
Added save-state support to the MSM5232 sound core [Phil Bennett]
This commit is contained in:
parent
a65aa6c30a
commit
f83f00dce8
@ -780,18 +780,62 @@ static STREAM_UPDATE( MSM5232_update_one )
|
|||||||
|
|
||||||
|
|
||||||
/* MAME Interface */
|
/* MAME Interface */
|
||||||
|
static STATE_POSTLOAD( msm5232_postload )
|
||||||
|
{
|
||||||
|
MSM5232 *chip = (MSM5232 *)param;
|
||||||
|
msm5232_init_tables(chip);
|
||||||
|
}
|
||||||
|
|
||||||
static DEVICE_START( msm5232 )
|
static DEVICE_START( msm5232 )
|
||||||
{
|
{
|
||||||
const msm5232_interface *intf = (const msm5232_interface *)device->baseconfig().static_config();
|
const msm5232_interface *intf = (const msm5232_interface *)device->baseconfig().static_config();
|
||||||
int rate = device->clock()/CLOCK_RATE_DIVIDER;
|
int rate = device->clock()/CLOCK_RATE_DIVIDER;
|
||||||
MSM5232 *chip = get_safe_token(device);
|
MSM5232 *chip = get_safe_token(device);
|
||||||
|
int voicenum;
|
||||||
|
|
||||||
chip->device = device;
|
chip->device = device;
|
||||||
|
|
||||||
msm5232_init(chip, intf, device->clock(), rate);
|
msm5232_init(chip, intf, device->clock(), rate);
|
||||||
|
|
||||||
chip->stream = stream_create(device, 0, 11, rate, chip, MSM5232_update_one);
|
chip->stream = stream_create(device, 0, 11, rate, chip, MSM5232_update_one);
|
||||||
|
|
||||||
|
/* register with the save state system */
|
||||||
|
state_save_register_postload(device->machine, msm5232_postload, chip);
|
||||||
|
state_save_register_device_item_array(device, 0, chip->EN_out16);
|
||||||
|
state_save_register_device_item_array(device, 0, chip->EN_out8);
|
||||||
|
state_save_register_device_item_array(device, 0, chip->EN_out4);
|
||||||
|
state_save_register_device_item_array(device, 0, chip->EN_out2);
|
||||||
|
state_save_register_device_item(device, 0, chip->noise_cnt);
|
||||||
|
state_save_register_device_item(device, 0, chip->noise_rng);
|
||||||
|
state_save_register_device_item(device, 0, chip->noise_clocks);
|
||||||
|
state_save_register_device_item(device, 0, chip->control1);
|
||||||
|
state_save_register_device_item(device, 0, chip->control2);
|
||||||
|
state_save_register_device_item(device, 0, chip->gate);
|
||||||
|
state_save_register_device_item(device, 0, chip->clock);
|
||||||
|
state_save_register_device_item(device, 0, chip->rate);
|
||||||
|
|
||||||
|
/* register voice-specific data for save states */
|
||||||
|
for (voicenum = 0; voicenum < 8; voicenum++)
|
||||||
|
{
|
||||||
|
VOICE *voice = &chip->voi[voicenum];
|
||||||
|
|
||||||
|
state_save_register_device_item(device, voicenum, voice->mode);
|
||||||
|
state_save_register_device_item(device, voicenum, voice->TG_count_period);
|
||||||
|
state_save_register_device_item(device, voicenum, voice->TG_cnt);
|
||||||
|
state_save_register_device_item(device, voicenum, voice->TG_out16);
|
||||||
|
state_save_register_device_item(device, voicenum, voice->TG_out8);
|
||||||
|
state_save_register_device_item(device, voicenum, voice->TG_out4);
|
||||||
|
state_save_register_device_item(device, voicenum, voice->TG_out2);
|
||||||
|
state_save_register_device_item(device, voicenum, voice->egvol);
|
||||||
|
state_save_register_device_item(device, voicenum, voice->eg_sect);
|
||||||
|
state_save_register_device_item(device, voicenum, voice->counter);
|
||||||
|
state_save_register_device_item(device, voicenum, voice->eg);
|
||||||
|
state_save_register_device_item(device, voicenum, voice->eg_arm);
|
||||||
|
state_save_register_device_item(device, voicenum, voice->ar_rate);
|
||||||
|
state_save_register_device_item(device, voicenum, voice->dr_rate);
|
||||||
|
state_save_register_device_item(device, voicenum, voice->pitch);
|
||||||
|
state_save_register_device_item(device, voicenum, voice->GF);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void msm5232_set_clock(running_device *device, int clock)
|
void msm5232_set_clock(running_device *device, int clock)
|
||||||
|
Loading…
Reference in New Issue
Block a user