static int StateAction(StateMem *sm, int load, int data_only) { SFORMAT StateRegs[] = { SFVAR(SoftResetCount), SFVAR(sms.cycle_counter), SFARRAYN(sms.wram, 0x2000, "RAM"), SFVAR(sms.paused), SFVAR(input.pad[0]), SFVAR(input.pad[1]), SFVAR(input.analog[0]), SFVAR(input.analog[1]), SFVAR(input.system), SFVAR(sms.fm_detect), SFVAR(sms.memctrl), //SFVAR(z80_runtime), //SFARRAY(CPUExRAM, 16384), //SFVAR(FlashStatusEnable), SFEND }; int ret = 1; ret &= MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAIN"); ret &= z80_state_action(sm, load, data_only, "Z80"); ret &= SMS_CartStateAction(sm, load, data_only); ret &= SMS_PIOStateAction(sm, load, data_only); ret &= SMS_SoundStateAction(sm, load, data_only); ret &= SMS_VDPStateAction(sm, load, data_only); if(load) { if(sms.cycle_counter > 1000) { sms.cycle_counter = 1000; puts("sms.cycle_counter sanity failed"); } } return(ret); }
int MDFNNGPCZ80_StateAction(StateMem *sm, int load, int data_only) { SFORMAT StateRegs[] = { SFVAR(CommByte), SFVAR(Z80Enabled), SFEND }; if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "Z80X")) { return(0); } if(!z80_state_action(sm, load, data_only, "Z80")) return(0); return(1); }
static int StateAction(StateMem *sm, int load, int data_only) { int ret = 1; unsigned int c68k_state_len = C68k_Get_State_Max_Len(); uint8 c68k_state[c68k_state_len]; C68k_Save_State(&Main68K, c68k_state); SFORMAT StateRegs[] = { SFARRAY(work_ram, 65536), SFARRAY(zram, 8192), SFVAR(zbusreq), SFVAR(zreset), SFVAR(zbusack), SFVAR(zirq), SFVAR(zbank), SFVAR(md_timestamp), SFVAR(suspend68k), SFVAR(z80_cycle_counter), SFARRAY(c68k_state, c68k_state_len), SFEND }; ret &= MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAIN"); ret &= z80_state_action(sm, load, data_only, "Z80"); ret &= MDINPUT_StateAction(sm, load, data_only); ret &= MainVDP.StateAction(sm, load, data_only); ret &= MDSound_StateAction(sm, load, data_only); ret &= MDCart_StateAction(sm, load, data_only); if(load) { C68k_Load_State(&Main68K, c68k_state); z80_set_interrupt(zirq); } return(ret); }