diff options
author | 2010-03-17 09:33:15 +0000 | |
---|---|---|
committer | 2010-03-17 09:33:15 +0000 | |
commit | 47a1fe17f80cca82ded17a3c7b5302a7a14886bf (patch) | |
tree | 3b9bad98bae170ac6f0736e950c848149ca35f7c /src/emu/cpu/spc700 | |
parent | 9aa86db4c88346dce7000ca72692dd5210caecc7 (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.c | 35 |
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); |