int MDEC_StateAction(StateMem *sm, int load, int data_only) { SFORMAT StateRegs[] = { SFVAR(ClockCounter), SFVAR(MDRPhase), #define SFFIFO32(fifoobj) SFARRAY32(&fifoobj.data[0], fifoobj.data.size()), \ SFVAR(fifoobj.read_pos), \ SFVAR(fifoobj.write_pos), \ SFVAR(fifoobj.in_count) SFFIFO32(InFIFO), SFFIFO32(OutFIFO), #undef SFFIFO SFARRAY(&block_y[0][0], sizeof(block_y) / sizeof(block_y[0][0])), SFARRAY(&block_cb[0][0], sizeof(block_cb) / sizeof(block_cb[0][0])), SFARRAY(&block_cr[0][0], sizeof(block_cr) / sizeof(block_cr[0][0])), SFVAR(Control), SFVAR(Command), SFVAR(InCommand), SFARRAY(&QMatrix[0][0], sizeof(QMatrix) / sizeof(QMatrix[0][0])), SFVAR(QMIndex), SFARRAY16(&IDCTMatrix[0], sizeof(IDCTMatrix) / sizeof(IDCTMatrix[0])), SFVAR(IDCTMIndex), SFVAR(QScale), SFARRAY16(&Coeff[0], sizeof(Coeff) / sizeof(Coeff[0])), SFVAR(CoeffIndex), SFVAR(DecodeWB), SFARRAY32(&PixelBuffer.pix32[0], sizeof(PixelBuffer.pix32) / sizeof(PixelBuffer.pix32[0])), SFVAR(PixelBufferReadOffset), SFVAR(PixelBufferCount32), SFVAR(InCounter), SFVAR(RAMOffsetY), SFVAR(RAMOffsetCounter), SFVAR(RAMOffsetWWS), SFEND }; int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MDEC"); if(load) { InFIFO.SaveStatePostLoad(); OutFIFO.SaveStatePostLoad(); } return(ret); }
static void FDS_StateAction(StateMem *sm, const unsigned load, const bool data_only) { unsigned int x; SFORMAT StateRegs[] = { SFARRAY(diskdata[0], 65500), SFARRAY(diskdata[1], 65500), SFARRAY(diskdata[2], 65500), SFARRAY(diskdata[3], 65500), SFARRAY(diskdata[4], 65500), SFARRAY(diskdata[5], 65500), SFARRAY(diskdata[6], 65500), SFARRAY(diskdata[7], 65500), SFARRAY(FDSRAM, 32768), SFARRAY(CHRRAM, 8192), SFVAR(V4023), SFVAR(ExLatch), SFVAR(Control), SFVAR(IRQCounter), SFVAR(IRQReload), SFVAR(IRQControl), SFVAR(writeskip), SFVAR(DiskPtr), SFVAR(DiskSeekIRQ), SFVAR(DiskWritten), SFEND }; if(!load) { for(x=0;x<TotalSides;x++) { int b; for(b=0; b<65500; b++) diskdata[x][b] ^= diskdatao[x][b]; } } MDFNSS_StateAction(sm, load, data_only, StateRegs, "FDS"); if(load) { setmirror(((Control & 8)>>3)^1); for(x=0;x<TotalSides;x++) { int b; for(b=0; b<65500; b++) diskdata[x][b] ^= diskdatao[x][b]; } } else { for(x=0;x<TotalSides;x++)
static int StateAction(StateMem *sm, int load, int data_only) { SFORMAT StateRegs[] = { SFARRAY(PRGBanks, 3), SFARRAY(CHRBanks, 2), SFEND }; int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); if(load) Sync(); return(ret); }
void InputDevice_DualShock::StateAction(StateMem* sm, const unsigned load, const bool data_only, const char* sname_prefix) { SFORMAT StateRegs[] = { SFVAR(cur_ana_button_state), SFVAR(prev_ana_button_state), SFVAR(combo_anatoggle_counter), SFVAR(da_rumble_compat), SFVAR(analog_mode), SFVAR(analog_mode_locked), SFVAR(mad_munchkins), SFARRAY(rumble_magic, sizeof(rumble_magic)), SFARRAY(rumble_param, sizeof(rumble_param)), SFVAR(dtr), SFARRAY(buttons, sizeof(buttons)), SFARRAY(&axes[0][0], sizeof(axes)), SFVAR(command_phase), SFVAR(bitpos), SFVAR(receive_buffer), SFVAR(command), SFARRAY(transmit_buffer, sizeof(transmit_buffer)), SFVAR(transmit_pos), SFVAR(transmit_count), SFEND }; char section_name[32]; trio_snprintf(section_name, sizeof(section_name), "%s_DualShock", sname_prefix); if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, section_name, true) && load) Power(); else if(load) { if(((uint64)transmit_pos + transmit_count) > sizeof(transmit_buffer)) { transmit_pos = 0; transmit_count = 0; } } }
int InputDevice_DualShock::StateAction(StateMem* sm, int load, int data_only, const char* section_name) { SFORMAT StateRegs[] = { SFVAR(cur_ana_button_state), SFVAR(prev_ana_button_state), SFVAR(combo_anatoggle_counter), SFVAR(da_rumble_compat), SFVAR(analog_mode), SFVAR(analog_mode_locked), SFVAR(mad_munchkins), SFARRAY(rumble_magic, sizeof(rumble_magic)), SFARRAY(rumble_param, sizeof(rumble_param)), SFVAR(dtr), SFARRAY(buttons, sizeof(buttons)), SFARRAY(&axes[0][0], sizeof(axes)), SFVAR(command_phase), SFVAR(bitpos), SFVAR(receive_buffer), SFVAR(command), SFARRAY(transmit_buffer, sizeof(transmit_buffer)), SFVAR(transmit_pos), SFVAR(transmit_count), SFEND }; int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, section_name); if(load) { if((transmit_pos + transmit_count) > sizeof(transmit_buffer)) { transmit_pos = 0; transmit_count = 0; } } return(ret); }
static void StateAction(StateMem *sm, const unsigned load, const bool data_only) { SFORMAT StateRegs[] = { SFARRAY(BaseRAM, IsSGX? 32768 : 8192), SFVAR(PCEIODataBuffer), SFEND }; //for(int i = 8192; i < 32768; i++) // if(BaseRAM[i] != 0xFF) // printf("%d %02x\n", i, BaseRAM[i]); MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAIN"); HuC6280_StateAction(sm, load, data_only); VDC_StateAction(sm, load, data_only); psg->StateAction(sm, load, data_only); INPUT_StateAction(sm, load, data_only); HuC_StateAction(sm, load, data_only); if(load) { } }
static int StateAction(StateMem *sm, int load, int data_only) { SFORMAT StateRegs[] = { SFARRAY(BaseRAM, IsSGX? 32768 : 8192), SFVAR(PCEIODataBuffer), SFEND }; //for(int i = 8192; i < 32768; i++) // if(BaseRAM[i] != 0xFF) // printf("%d %02x\n", i, BaseRAM[i]); int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAIN"); ret &= HuC6280_StateAction(sm, load, data_only); ret &= VDC_StateAction(sm, load, data_only); ret &= psg->StateAction(sm, load, data_only); ret &= INPUT_StateAction(sm, load, data_only); ret &= HuC_StateAction(sm, load, data_only); if(load) { } return(ret); }
int StateAction(StateMem *sm, int load, int data_only, const char *sname) { SFORMAT StateRegs[] = { SFARRAY(mem, mem_size), SFVAR(prev_sda_in), SFVAR(prev_scl_in), SFVAR(phase), SFVAR(buf), SFVAR(bitpos), SFVAR(sda_out), SFVAR(slave_addr), SFVAR(rw_bit), SFVAR(mem_addr), SFEND }; int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, sname); if(load) { mem_addr &= (mem_size - 1); } return(ret); }
int InputDevice_Multitap::StateAction(StateMem* sm, int load, int data_only, const char* section_name) { SFORMAT StateRegs[] = { SFVAR(dtr), SFVAR(selected_device), SFVAR(full_mode_setting), SFVAR(full_mode), SFVAR(mc_mode), SFVAR(fm_dp), SFARRAY(&fm_buffer[0][0], sizeof(fm_buffer) / sizeof(fm_buffer[0][0])), SFVAR(fm_deferred_error_temp), SFVAR(fm_deferred_error), SFVAR(fm_command_error), SFVAR(command), SFVAR(receive_buffer), SFVAR(bit_counter), SFVAR(byte_counter), SFEND }; int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, section_name); if(load) { } return(ret); }
static int StateAction(StateMem *sm, int load, int data_only) { SFORMAT StateRegs[] = { SFVAR(z80_runtime), SFARRAY(CPUExRAM, 16384), SFVAR(FlashStatusEnable), SFEND }; SFORMAT TLCS_StateRegs[] = { SFVARN(pc, "PC"), SFVARN(sr, "SR"), SFVARN(f_dash, "F_DASH"), SFARRAY32N(gpr, 4, "GPR"), SFARRAY32N(gprBank[0], 4, "GPRB0"), SFARRAY32N(gprBank[1], 4, "GPRB1"), SFARRAY32N(gprBank[2], 4, "GPRB2"), SFARRAY32N(gprBank[3], 4, "GPRB3"), SFEND }; if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAIN")) return(0); if(!MDFNSS_StateAction(sm, load, data_only, TLCS_StateRegs, "TLCS")) return(0); if(!MDFNNGPCDMA_StateAction(sm, load, data_only)) return(0); if(!MDFNNGPCSOUND_StateAction(sm, load, data_only)) return(0); if(!NGPGfx->StateAction(sm, load, data_only)) return(0); if(!MDFNNGPCZ80_StateAction(sm, load, data_only)) return(0); if(!int_timer_StateAction(sm, load, data_only)) return(0); if(!BIOSHLE_StateAction(sm, load, data_only)) return(0); if(!FLASH_StateAction(sm, load, data_only)) return(0); if(load) { RecacheFRM(); changedSP(); } 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); }
static int StateAction(StateMem *sm, int load, int data_only) { SFORMAT StateRegs[] = { SFARRAY(WRAM, 2048), SFEND }; int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); return(ret); }
static int StateAction(StateMem *sm, int load, int data_only) { SFORMAT StateRegs[] = { SFVAR(RegSelect), SFVAR(Mirroring), SFARRAY(Regs, 8), SFARRAY(WRAM, 8192), SFEND }; int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "M112"); if(load) { Mirroring &= 1; SyncPRGCHR(); setmirror(Mirroring ^ 1); } return(ret); }
static void UNIF_StateAction(StateMem *sm, const unsigned load, const bool data_only) { SFORMAT StateRegs[] = { SFARRAY(exntar, 2048), SFARRAY(UNIFchrrama, CHRRAMSize), SFEND }; if(NESIsVSUni) { MDFNNES_VSUNIStateAction(sm,load, data_only); } if(exntar || UNIFchrrama) { MDFNSS_StateAction(sm, load, data_only, StateRegs, "UNIF"); } if(UNIFCart.StateAction) UNIFCart.StateAction(sm, load, data_only); }
void HuC_StateAction(StateMem *sm, int load, int data_only) { SFORMAT StateRegs[] = { SFARRAY(ROMSpace + 0x40 * 8192, IsPopulous ? 32768 : 0), SFARRAY(SaveRAM, IsPopulous ? 0 : 2048), SFARRAY(ROMSpace + 0x68 * 8192, PCE_IsCD ? 262144 : 0), SFVAR(HuCSF2Latch), SFEND }; MDFNSS_StateAction(sm, load, data_only, StateRegs, "HuC"); if(load) HuCSF2Latch &= 0x3; if(PCE_IsCD) { PCECD_StateAction(sm, load, data_only); if(arcade_card) arcade_card->StateAction(sm, load, data_only); } }
static int StateAction(StateMem *sm, int load, int data_only) { SFORMAT StateRegs[] = { SFVAR(latch), SFARRAY(CHRRAM, 8192), SFEND }; int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); if(load) Sync(); return(ret); }
int MDEC_StateAction(StateMem *sm, int load, int data_only) { SFORMAT StateRegs[] = { SFVAR(block_ready), SFARRAY32(&block_y[0][0][0][0], sizeof(block_y) / sizeof(block_y[0][0][0][0])), SFARRAY32(&block_cb[0][0], sizeof(block_cb) / sizeof(block_cb[0][0])), SFARRAY32(&block_cr[0][0], sizeof(block_cr) / sizeof(block_cr[0][0])), SFVAR(run_time), SFVAR(Command), SFARRAY(&QMatrix[0][0], sizeof(QMatrix) / sizeof(QMatrix[0][0])), SFVAR(QMIndex), SFARRAY16(&IDCTMatrix[0], sizeof(IDCTMatrix) / sizeof(IDCTMatrix[0])), SFVAR(IDCTMIndex), SFVAR(QScale), SFARRAY16(&Coeff[0][0], sizeof(Coeff) / sizeof(Coeff[0][0])), SFVAR(CoeffIndex), SFVAR(DecodeWB), #define SFFIFO16(fifoobj) SFARRAY16(&fifoobj.data[0], fifoobj.data.size()), \ SFVAR(fifoobj.read_pos), \ SFVAR(fifoobj.write_pos), \ SFVAR(fifoobj.in_count) SFFIFO16(InputBuffer), SFFIFO16(OutBuffer), #undef SFFIFO SFVAR(InCounter), SFVAR(BlockEnd), SFVAR(DecodeEnd), SFEND }; int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MDEC"); if(load) { } return(ret); }
virtual int StateAction(StateMem *sm, int load, int data_only, const char *sname) { SFORMAT StateRegs[] = { SFARRAY(&ram[0], ram.size()), SFVAR(bank_select), SFEND }; int ret = 1; ret &= MDFNSS_StateAction(sm, load, data_only, StateRegs, sname); return ret; }
int MD_Cart_Type_SRAM::StateAction(StateMem *sm, int load, int data_only, const char *section_name) { SFORMAT StateRegs[] = { SFVAR(sram_enabled), SFARRAY(sram, sram_size), SFEND }; int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, section_name); if(load) { } return(ret); }
int NGPGFX_CLASS::StateAction(StateMem *sm, int load, int data_only) { SFORMAT StateRegs[] = { SFVAR(raster_line), SFVAR(S1SO_H), SFVAR(S1SO_V), SFVAR(S2SO_H), SFVAR(S2SO_V), SFVAR(WBA_H), SFVAR(WBA_V), SFVAR(WSI_H), SFVAR(WSI_V), SFVAR(C_OVR), SFVAR(BLNK), SFVAR(PO_H), SFVAR(PO_V), SFVAR(P_F), SFVAR(BG_COL), SFVAR(CONTROL_2D), SFVAR(CONTROL_INT), SFVAR(SCREEN_PERIOD), SFVAR(K2GE_MODE), SFARRAY(SPPLT, 6), SFARRAY(SCRP1PLT, 6), SFARRAY(SCRP2PLT, 6), SFVAR(winx), SFVAR(winw), SFVAR(winy), SFVAR(winh), SFVAR(scroll1x), SFVAR(scroll1y), SFVAR(scroll2x), SFVAR(scroll2y), SFVAR(scrollsprx), SFVAR(scrollspry), SFVAR(planeSwap), SFVAR(bgc), SFVAR(oowc), SFVAR(negative), SFARRAY(ScrollVRAM, 4096), SFARRAY(CharacterRAM, 8192), SFARRAY(SpriteVRAM, 256), SFARRAY(SpriteVRAMColor, 0x40), SFARRAY(ColorPaletteRAM, 0x200), SFEND }; if(!MDFNSS_StateAction(sm, load, data_only, StateRegs, "GFX")) return(0); return(1); }
static void StateActionFC(StateMem *sm, const unsigned load, const bool data_only) { SFORMAT StateRegs[] = { SFARRAY(bufit, 0x61), SFVAR(ksmode), SFVAR(ksindex), SFEND }; MDFNSS_StateAction(sm, load, data_only, StateRegs, "INPF", true); if(load) { } }
int MDSound_StateAction(StateMem *sm, int load, int data_only) { Sms_ApuState sn_state; unsigned int fm_state_len = FMUnit.get_state_max_len(); uint8 fm_state[fm_state_len]; //if(!load) //{ apu.save_state(&sn_state); FMUnit.save_state(fm_state); //} SFORMAT StateRegs[] = { SFVAR(fm_last_timestamp), SFVAR(FMReset), SFVAR(fm_div), SFARRAY(fm_state, fm_state_len), SFARRAY32N(sn_state.volume, 4, "Volume"), SFARRAY32N(sn_state.sq_period, 3, "SQPeriod"), SFARRAY32N(sn_state.sq_phase, 3, "SQPhase"), SFVARN(sn_state.noise_period, "NPeriod"), SFVARN(sn_state.noise_shifter, "NShifter"), SFVARN(sn_state.noise_feedback, "NFeedback"), SFVARN(sn_state.latch, "Latch"), SFEND }; int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "SND"); if(load) { FMUnit.load_state(fm_state); apu.load_state(&sn_state); } return(ret); }
static void StateAction(StateMem *sm, const unsigned load, const bool data_only) { SFORMAT StateRegs[] = { SFVAR(z80_runtime), SFARRAY(CPUExRAM, 16384), SFVAR(FlashStatusEnable), SFEND }; SFORMAT TLCS_StateRegs[] = { SFVARN(pc, "PC"), SFVARN(sr, "SR"), SFVARN(f_dash, "F_DASH"), SFARRAY32N(gpr, 4, "GPR"), SFARRAY32N(gprBank[0], 4, "GPRB0"), SFARRAY32N(gprBank[1], 4, "GPRB1"), SFARRAY32N(gprBank[2], 4, "GPRB2"), SFARRAY32N(gprBank[3], 4, "GPRB3"), SFEND }; MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAIN"); MDFNSS_StateAction(sm, load, data_only, TLCS_StateRegs, "TLCS"); MDFNNGPCDMA_StateAction(sm, load, data_only); MDFNNGPCSOUND_StateAction(sm, load, data_only); NGPGfx->StateAction(sm, load, data_only); MDFNNGPCZ80_StateAction(sm, load, data_only); int_timer_StateAction(sm, load, data_only); BIOSHLE_StateAction(sm, load, data_only); FLASH_StateAction(sm, load, data_only); if(load) { RecacheFRM(); changedSP(); } }
int InputDevice_Mouse::StateAction(StateMem* sm, int load, int data_only, const char* section_name) { SFORMAT StateRegs[] = { SFVAR(clear_timeout), SFVAR(dtr), SFVAR(button), SFVAR(button_post_mask), SFVAR(accum_xdelta), SFVAR(accum_ydelta), SFVAR(command_phase), SFVAR(bitpos), SFVAR(receive_buffer), SFVAR(command), SFARRAY(transmit_buffer, sizeof(transmit_buffer)), SFVAR(transmit_pos), SFVAR(transmit_count), SFEND }; int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, section_name); if(load) { if((transmit_pos + transmit_count) > sizeof(transmit_buffer)) { transmit_pos = 0; transmit_count = 0; } } return(ret); }
static int StateAction(StateMem *sm, int load, int data_only) { SFORMAT StateRegs[] = { SFVARN(reg_select, "FM7S"), SFVARN(wram_control, "FM7W"), SFARRAYN(sr, 0x10, "FM7SR"), SFVARN(sr_index, "FM7I"), SFARRAY(PRGRegs, 3), SFVAR(Mirroring), SFARRAY32(vcount, 3), SFARRAY32(dcount, 3), SFEND }; int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); if(load) { SyncPRG(); SyncMirroring(); } return(ret); }