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), SFARRAY(CHRRegs, 8), SFVAR(Mirroring), SFARRAY32(vcount, 3), SFARRAY32(dcount, 3), SFVAR(IRQa), SFVAR(IRQCount), SFARRAY(WRAM, 8192), SFEND }; int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAPR"); if(load) { SyncCHR(); SyncPRG(); SyncMirroring(); } return(ret); }
int PS_CPU::StateAction(StateMem *sm, int load, int data_only) { SFORMAT StateRegs[] = { SFARRAY32(GPR, 32), SFVAR(LO), SFVAR(HI), SFVAR(BACKED_PC), SFVAR(BACKED_new_PC), SFVAR(BACKED_new_PC_mask), SFVAR(IPCache), SFVAR(Halted), SFVAR(BACKED_LDWhich), SFVAR(BACKED_LDValue), SFVAR(next_event_ts), SFVAR(gte_ts_done), SFARRAY32(CP0.Regs, 32), SFEND }; int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "CPU"); ret &= GTE_StateAction(sm, load, data_only); if(load) { } 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); }
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); }