summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/spc700
diff options
context:
space:
mode:
author Fabio Priuli <etabeta78@users.noreply.github.com>2010-03-17 09:33:15 +0000
committer Fabio Priuli <etabeta78@users.noreply.github.com>2010-03-17 09:33:15 +0000
commit47a1fe17f80cca82ded17a3c7b5302a7a14886bf (patch)
tree3b9bad98bae170ac6f0736e950c848149ca35f7c /src/emu/cpu/spc700
parent9aa86db4c88346dce7000ca72692dd5210caecc7 (diff)
spc700.c: Added save states [Fabio Priuli]
snes.c: Updated the snes sound device to use device handlers, to store its internals in a struct, and to save them [Fabio Priuli]
Diffstat (limited to 'src/emu/cpu/spc700')
-rw-r--r--src/emu/cpu/spc700/spc700.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/emu/cpu/spc700/spc700.c b/src/emu/cpu/spc700/spc700.c
index cb679dd1021..993fe43ee5f 100644
--- a/src/emu/cpu/spc700/spc700.c
+++ b/src/emu/cpu/spc700/spc700.c
@@ -1247,10 +1247,45 @@ INLINE void SET_FLAG_I(spc700i_cpu *cpustate, uint value)
/* ================================= API ================================== */
/* ======================================================================== */
+static void state_register( running_device *device )
+{
+ spc700i_cpu *cpustate = get_safe_token(device);
+
+ state_save_register_device_item(device, 0, cpustate->a);
+ state_save_register_device_item(device, 0, cpustate->x);
+ state_save_register_device_item(device, 0, cpustate->y);
+ state_save_register_device_item(device, 0, cpustate->s);
+ state_save_register_device_item(device, 0, cpustate->pc);
+ state_save_register_device_item(device, 0, cpustate->ppc);
+ state_save_register_device_item(device, 0, cpustate->flag_n);
+ state_save_register_device_item(device, 0, cpustate->flag_z);
+ state_save_register_device_item(device, 0, cpustate->flag_v);
+ state_save_register_device_item(device, 0, cpustate->flag_p);
+ state_save_register_device_item(device, 0, cpustate->flag_b);
+ state_save_register_device_item(device, 0, cpustate->flag_h);
+ state_save_register_device_item(device, 0, cpustate->flag_i);
+ state_save_register_device_item(device, 0, cpustate->flag_c);
+ state_save_register_device_item(device, 0, cpustate->line_irq);
+ state_save_register_device_item(device, 0, cpustate->line_nmi);
+ state_save_register_device_item(device, 0, cpustate->line_rst);
+ state_save_register_device_item(device, 0, cpustate->ir);
+ state_save_register_device_item(device, 0, cpustate->stopped);
+ state_save_register_device_item(device, 0, cpustate->ICount);
+ state_save_register_device_item(device, 0, cpustate->source);
+ state_save_register_device_item(device, 0, cpustate->destination);
+ state_save_register_device_item(device, 0, cpustate->temp1);
+ state_save_register_device_item(device, 0, cpustate->temp2);
+ state_save_register_device_item(device, 0, cpustate->temp3);
+ state_save_register_device_item(device, 0, cpustate->spc_int16);
+ state_save_register_device_item(device, 0, cpustate->spc_int32);
+}
+
static CPU_INIT( spc700 )
{
spc700i_cpu *cpustate = get_safe_token(device);
+ state_register(device);
+
INT_ACK = irqcallback;
cpustate->device = device;
cpustate->program = device->space(AS_PROGRAM);