Fixed crash when saving state of older DCS-based games.

Added save state support to the midvunit driver.
This commit is contained in:
Aaron Giles 2008-01-06 07:54:02 +00:00
parent dae5e71408
commit 943026c09b
3 changed files with 34 additions and 11 deletions

View File

@ -892,14 +892,15 @@ static void dcs_register_state(void)
state_save_register_global(transfer.sum);
state_save_register_global(transfer.fifo_entries);
state_save_register_global_pointer(dcs_sram, 0x8000*4 / sizeof(dcs_sram[0]));
if (dcs_sram != NULL)
state_save_register_global_pointer(dcs_sram, 0x8000*4 / sizeof(dcs_sram[0]));
}
void dcs_init(void)
{
dcs_register_state();
memset(&dcs, 0, sizeof(dcs));
dcs_sram = NULL;
/* find the DCS CPU and the sound ROMs */
dcs.cpunum = mame_find_cpu_index(Machine, "dcs");
@ -919,6 +920,9 @@ void dcs_init(void)
/* non-RAM based automatically acks */
dcs.auto_ack = TRUE;
/* register for save states */
dcs_register_state();
/* reset the system */
dcs_reset(Machine, NULL, 0);
}

View File

@ -56,6 +56,18 @@ static UINT32 *midvplus_misc;
*
*************************************/
static MACHINE_START( midvunit )
{
state_save_register_global(cmos_protected);
state_save_register_global(control_data);
state_save_register_global(adc_data);
state_save_register_global(adc_shift);
state_save_register_global(last_port0);
state_save_register_global(shifter_state);
state_save_register_global(timer_rate);
}
static MACHINE_RESET( midvunit )
{
dcs_reset_w(1);
@ -997,6 +1009,7 @@ static MACHINE_DRIVER_START( midvcommon )
MDRV_CPU_ADD_TAG("main", TMS32031, CPU_CLOCK)
MDRV_CPU_PROGRAM_MAP(midvunit_map,0)
MDRV_MACHINE_START(midvunit)
MDRV_MACHINE_RESET(midvunit)
MDRV_NVRAM_HANDLER(generic_1fill)
@ -1429,13 +1442,13 @@ static DRIVER_INIT( wargods )
*
*************************************/
GAME( 1994, crusnusa, 0, midvunit, crusnusa, crusnusa, ROT0, "Midway", "Cruis'n USA (rev L4.1)", 0 )
GAME( 1994, crusnu40, crusnusa, midvunit, crusnusa, crusnu40, ROT0, "Midway", "Cruis'n USA (rev L4.0)", 0 )
GAME( 1994, crusnu21, crusnusa, midvunit, crusnusa, crusnu21, ROT0, "Midway", "Cruis'n USA (rev L2.1)", 0 )
GAME( 1996, crusnwld, 0, midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L2.4)", 0 )
GAME( 1996, crusnw23, crusnwld, midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L2.3)", 0 )
GAME( 1996, crusnw20, crusnwld, midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L2.0)", 0 )
GAME( 1996, crusnw13, crusnwld, midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L1.3)", 0 )
GAME( 1997, offroadc, 0, midvunit, offroadc, offroadc, ROT0, "Midway", "Off Road Challenge", GAME_NOT_WORKING )
GAME( 1994, crusnusa, 0, midvunit, crusnusa, crusnusa, ROT0, "Midway", "Cruis'n USA (rev L4.1)", GAME_SUPPORTS_SAVE )
GAME( 1994, crusnu40, crusnusa, midvunit, crusnusa, crusnu40, ROT0, "Midway", "Cruis'n USA (rev L4.0)", GAME_SUPPORTS_SAVE )
GAME( 1994, crusnu21, crusnusa, midvunit, crusnusa, crusnu21, ROT0, "Midway", "Cruis'n USA (rev L2.1)", GAME_SUPPORTS_SAVE )
GAME( 1996, crusnwld, 0, midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L2.4)", GAME_SUPPORTS_SAVE )
GAME( 1996, crusnw23, crusnwld, midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L2.3)", GAME_SUPPORTS_SAVE )
GAME( 1996, crusnw20, crusnwld, midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L2.0)", GAME_SUPPORTS_SAVE )
GAME( 1996, crusnw13, crusnwld, midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L1.3)", GAME_SUPPORTS_SAVE )
GAME( 1997, offroadc, 0, midvunit, offroadc, offroadc, ROT0, "Midway", "Off Road Challenge", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
GAME( 1995, wargods, 0, midvplus, wargods, wargods, ROT0, "Midway", "War Gods", 0 )
GAME( 1995, wargods, 0, midvplus, wargods, wargods, ROT0, "Midway", "War Gods", GAME_SUPPORTS_SAVE )

View File

@ -79,6 +79,12 @@ VIDEO_START( midvunit )
scanline_timer = timer_alloc(scanline_timer_cb, NULL);
poly = poly_alloc(4000, sizeof(poly_extra_data), POLYFLAG_ALLOW_QUADS);
add_exit_callback(machine, midvunit_exit);
state_save_register_global_array(video_regs);
state_save_register_global_array(dma_data);
state_save_register_global(dma_data_index);
state_save_register_global(page_control);
state_save_register_global(video_changed);
}