From 1b386426cc1a75ff19e73584fcc70d445217f31c Mon Sep 17 00:00:00 2001 From: Angelo Salese Date: Sun, 11 Sep 2011 17:28:41 +0000 Subject: [PATCH] Implemented save support to HC11 core [Angelo Salese] --- src/emu/cpu/mc68hc11/mc68hc11.c | 32 +++++++++++++++++++++++++++++++- src/mame/drivers/30test.c | 8 +++++--- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/emu/cpu/mc68hc11/mc68hc11.c b/src/emu/cpu/mc68hc11/mc68hc11.c index e379bed7b3a..629fb58247a 100644 --- a/src/emu/cpu/mc68hc11/mc68hc11.c +++ b/src/emu/cpu/mc68hc11/mc68hc11.c @@ -5,6 +5,7 @@ TODO: - Interrupts handling is really bare-bones, just to make Hit Poker happy; +- Timers are really sketchy as per now, only TOC1 is emulated so far; - Complete opcodes hook-up; - Emulate the MC68HC12 (same as HC11 with a bunch of new opcodes); @@ -449,6 +450,34 @@ static CPU_INIT( hc11 ) cpustate->program = device->space(AS_PROGRAM); cpustate->direct = &cpustate->program->direct(); cpustate->io = device->space(AS_IO); + + device->save_item(NAME(cpustate->pc)); + device->save_item(NAME(cpustate->ix)); + device->save_item(NAME(cpustate->iy)); + device->save_item(NAME(cpustate->sp)); + device->save_item(NAME(cpustate->ppc)); + device->save_item(NAME(cpustate->ccr)); + device->save_item(NAME(cpustate->d.d8.a)); + device->save_item(NAME(cpustate->d.d8.b)); + device->save_item(NAME(cpustate->adctl)); + device->save_item(NAME(cpustate->ad_channel)); + device->save_item(NAME(cpustate->ram_position)); + device->save_item(NAME(cpustate->reg_position)); + device->save_item(NAME(cpustate->irq_state)); + device->save_item(NAME(cpustate->icount)); + device->save_item(NAME(cpustate->has_extended_io)); + device->save_item(NAME(cpustate->internal_ram_size)); + device->save_item(NAME(cpustate->init_value)); + device->save_pointer(NAME(cpustate->internal_ram),cpustate->internal_ram_size); + device->save_item(NAME(cpustate->wait_state)); + device->save_item(NAME(cpustate->stop_state)); + device->save_item(NAME(cpustate->tflg1)); + device->save_item(NAME(cpustate->tmsk1)); + device->save_item(NAME(cpustate->toc1)); + device->save_item(NAME(cpustate->tcnt)); +// device->save_item(NAME(cpustate->por)); + device->save_item(NAME(cpustate->pr)); + device->save_item(NAME(cpustate->frc_base)); } static CPU_RESET( hc11 ) @@ -631,7 +660,7 @@ CPU_GET_INFO( mc68hc11 ) case CPUINFO_INT_MIN_CYCLES: info->i = 1; break; case CPUINFO_INT_MAX_CYCLES: info->i = 41; break; - case DEVINFO_INT_DATABUS_WIDTH + AS_PROGRAM: info->i = 8; break; + case DEVINFO_INT_DATABUS_WIDTH + AS_PROGRAM: info->i = 8; break; case DEVINFO_INT_ADDRBUS_WIDTH + AS_PROGRAM: info->i = 16; break; case DEVINFO_INT_ADDRBUS_SHIFT + AS_PROGRAM: info->i = 0; break; case DEVINFO_INT_DATABUS_WIDTH + AS_DATA: info->i = 0; break; @@ -642,6 +671,7 @@ CPU_GET_INFO( mc68hc11 ) case DEVINFO_INT_ADDRBUS_SHIFT + AS_IO: info->i = 0; break; case CPUINFO_INT_INPUT_STATE + MC68HC11_IRQ_LINE: info->i = cpustate->irq_state[MC68HC11_IRQ_LINE]; break; + case CPUINFO_INT_INPUT_STATE + MC68HC11_TOC1_LINE: info->i = cpustate->irq_state[MC68HC11_TOC1_LINE]; break; case CPUINFO_INT_PREVIOUSPC: /* not implemented */ break; diff --git a/src/mame/drivers/30test.c b/src/mame/drivers/30test.c index b65509f2dfb..65766cda340 100644 --- a/src/mame/drivers/30test.c +++ b/src/mame/drivers/30test.c @@ -230,7 +230,10 @@ INPUT_PORTS_END static MACHINE_START( 30test ) { + namco_30test_state *state = machine.driver_data(); + state->save_item(NAME(state->m_mux_data)); + state->save_item(NAME(state->m_oki_bank)); } static MACHINE_RESET( 30test ) @@ -253,7 +256,6 @@ static MACHINE_CONFIG_START( 30test, namco_30test_state ) MCFG_CPU_PROGRAM_MAP(namco_30test_map) MCFG_CPU_IO_MAP(namco_30test_io) MCFG_CPU_CONFIG(namco_30test_config) -// MCFG_CPU_PERIODIC_INT(irq0_line_hold,4*60) // unknown timing MCFG_MACHINE_START(30test) MCFG_MACHINE_RESET(30test) @@ -269,7 +271,7 @@ static MACHINE_CONFIG_START( 30test, namco_30test_state ) MCFG_SCREEN_UPDATE(30test) // MCFG_PALETTE_INIT(30test) - MCFG_PALETTE_LENGTH(8) + MCFG_PALETTE_LENGTH(2) MCFG_VIDEO_START(30test) @@ -294,4 +296,4 @@ ROM_START( 30test ) ROM_LOAD( "tt1-voi0.7p", 0x0000, 0x80000, CRC(b4fc5921) SHA1(92a88d5adb50dae48715847f12e88a35e37ef78c) ) ROM_END -GAMEL( 1997, 30test, 0, 30test, 30test, 0, ROT0, "Namco", "30 Test (Remake)", 0, layout_30test ) +GAMEL( 1997, 30test, 0, 30test, 30test, 0, ROT0, "Namco", "30 Test (Remake)", GAME_SUPPORTS_SAVE, layout_30test )