void FCEUI_Emulate(uint8 **pXBuf, int32 **SoundBuf, int32 *SoundBufSize, int skip) { int r,ssize; FCEU_UpdateInput(); if(geniestage!=1) FCEU_ApplyPeriodicCheats(); r=FCEUPPU_Loop(skip); ssize=FlushEmulateSound(); timestampbase += timestamp; timestamp = 0; *pXBuf=skip?0:XBuf; *SoundBuf=WaveFinal; *SoundBufSize=ssize; }
void FCEUI_Emulate(uint8 **pXBuf, int32 **SoundBuf, int32 *SoundBufSize) { int ssize; FCEU_UpdateInput(); if(geniestage!=1) FCEU_ApplyPeriodicCheats(); FCEUPPU_Loop(); if(timestamp) ssize = FlushEmulateSound(); else ssize = 0; timestampbase += timestamp; timestamp = 0; *pXBuf= XBuf; *SoundBuf=WaveFinal; *SoundBufSize=ssize; }
static void Emulate(EmulateSpecStruct *espec) { int ssize; #if 0 static bool firstcat = true; MDFN_PixelFormat tmp_pf; tmp_pf.Rshift = 0; tmp_pf.Gshift = 0; tmp_pf.Bshift = 0; tmp_pf.Ashift = 8; tmp_pf.Rprec = 6; tmp_pf.Gprec = 6; tmp_pf.Bprec = 6; tmp_pf.Aprec = 0; tmp_pf.bpp = 8; tmp_pf.colorspace = MDFN_COLORSPACE_RGB; espec->surface->SetFormat(tmp_pf, false); espec->VideoFormatChanged = firstcat; firstcat = false; #endif if(espec->VideoFormatChanged) { MDFN_InitPalette(NESIsVSUni ? MDFN_VSUniGetPaletteNum() : (bool)PAL, espec->CustomPalette, espec->CustomPaletteNumEntries); MDFNNES_SetPixelFormat(espec->surface->format); } if(espec->SoundFormatChanged) MDFNNES_SetSoundRate(espec->SoundRate); NESPPU_GetDisplayRect(&espec->DisplayRect); MDFN_UpdateInput(); if(!Genie_BIOSInstalled()) MDFNMP_ApplyPeriodicCheats(); MDFNPPU_Loop(espec); ssize = FlushEmulateSound(espec->NeedSoundReverse, espec->SoundBuf, espec->SoundBufMaxSize); espec->NeedSoundReverse = 0; timestampbase += timestamp; espec->MasterCycles = timestamp; timestamp = 0; if(MDFNGameInfo->GameType == GMT_PLAYER) MDFNNES_DrawNSF(espec->surface, &espec->DisplayRect, espec->SoundBuf, ssize); espec->SoundBufSize = ssize; if(MDFNGameInfo->GameType != GMT_PLAYER) { if(NESIsVSUni) MDFN_VSUniDraw(espec->surface); } }