Lag Counter implementation

This commit is contained in:
adelikat 2008-07-07 00:18:55 +00:00
parent d1981c8950
commit 1ebff1d250
3 changed files with 33 additions and 3 deletions

View File

@ -57,7 +57,11 @@
#include "drivers/sdl/sdl.h" #include "drivers/sdl/sdl.h"
#endif #endif
int AFon, AFoff, AutoFireOffset = 0; int AFon, AFoff, AutoFireOffset = 0; //For keeping track of autofire settings
unsigned int LagCounter = 0; //This will increment everytime input is not polled by the game
bool lagCounterDisplay = true;
bool lagFlag = true;
static void CloseGame(void) static void CloseGame(void)
{ {
@ -498,6 +502,7 @@ void UpdateAutosave(void);
///Skip may be passed in, if FRAMESKIP is #defined, to cause this to emulate more than one frame ///Skip may be passed in, if FRAMESKIP is #defined, to cause this to emulate more than one frame
void FCEUI_Emulate(uint8 **pXBuf, int32 **SoundBuf, int32 *SoundBufSize, int skip) void FCEUI_Emulate(uint8 **pXBuf, int32 **SoundBuf, int32 *SoundBufSize, int skip)
{ {
lagFlag = true;
int r,ssize; int r,ssize;
JustFrameAdvanced = false; JustFrameAdvanced = false;
@ -567,6 +572,8 @@ void FCEUI_Emulate(uint8 **pXBuf, int32 **SoundBuf, int32 *SoundBufSize, int ski
} }
currMovieData.TryDumpIncremental(); currMovieData.TryDumpIncremental();
if (lagFlag) LagCounter++;
if (lagCounterDisplay)FCEU_DispMessage("%d",LagCounter) ;
} }
void FCEUI_CloseGame(void) void FCEUI_CloseGame(void)

View File

@ -66,6 +66,9 @@ extern INPUTCFC *FCEU_InitTopRider(void);
extern INPUTCFC *FCEU_InitBarcodeWorld(void); extern INPUTCFC *FCEU_InitBarcodeWorld(void);
//--------------- //---------------
extern unsigned int LagCounter;
extern bool lagCounterDisplay;
extern bool lagFlag;
static uint8 joy_readbit[2]; static uint8 joy_readbit[2];
uint8 joy[4]={0,0,0,0}; //HACK - should be static but movie needs it uint8 joy[4]={0,0,0,0}; //HACK - should be static but movie needs it
static uint8 LastStrobe; static uint8 LastStrobe;
@ -91,6 +94,7 @@ FCPORT portFC;
static DECLFR(JPRead) static DECLFR(JPRead)
{ {
lagFlag = false;
uint8 ret=0; uint8 ret=0;
ret|=joyports[A&1].driver->Read(A&1); ret|=joyports[A&1].driver->Read(A&1);
@ -344,6 +348,7 @@ void FCEU_UpdateInput(void)
static DECLFR(VSUNIRead0) static DECLFR(VSUNIRead0)
{ {
lagFlag = false;
uint8 ret=0; uint8 ret=0;
ret|=(joyports[0].driver->Read(0))&1; ret|=(joyports[0].driver->Read(0))&1;
@ -356,6 +361,7 @@ static DECLFR(VSUNIRead0)
static DECLFR(VSUNIRead1) static DECLFR(VSUNIRead1)
{ {
lagFlag = false;
uint8 ret=0; uint8 ret=0;
ret|=(joyports[1].driver->Read(1))&1; ret|=(joyports[1].driver->Read(1))&1;
@ -618,6 +624,8 @@ static void CommandSoundAdjust(void);
static void CommandUsePreset(void); static void CommandUsePreset(void);
static void BackgroundDisplayToggle(void); static void BackgroundDisplayToggle(void);
static void ObjectDisplayToggle(void); static void ObjectDisplayToggle(void);
static void LagCounterReset(void);
static void LagCounterToggle(void);
static void ViewSlots(void); static void ViewSlots(void);
struct EMUCMDTABLE FCEUI_CommandTable[]= struct EMUCMDTABLE FCEUI_CommandTable[]=
@ -747,6 +755,9 @@ struct EMUCMDTABLE FCEUI_CommandTable[]=
{ EMUCMD_MISC_USE_INPUT_PRESET_3, EMUCMDTYPE_MISC, CommandUsePreset, 0, 0, "Use Input Preset 3", 0 }, { EMUCMD_MISC_USE_INPUT_PRESET_3, EMUCMDTYPE_MISC, CommandUsePreset, 0, 0, "Use Input Preset 3", 0 },
{ EMUCMD_MISC_DISPLAY_BG_TOGGLE, EMUCMDTYPE_MISC, BackgroundDisplayToggle, 0, 0, "Toggle Background Display", 0 }, { EMUCMD_MISC_DISPLAY_BG_TOGGLE, EMUCMDTYPE_MISC, BackgroundDisplayToggle, 0, 0, "Toggle Background Display", 0 },
{ EMUCMD_MISC_DISPLAY_OBJ_TOGGLE, EMUCMDTYPE_MISC, ObjectDisplayToggle, 0, 0, "Toggle Object Display", 0 }, { EMUCMD_MISC_DISPLAY_OBJ_TOGGLE, EMUCMDTYPE_MISC, ObjectDisplayToggle, 0, 0, "Toggle Object Display", 0 },
{ EMUCMD_MISC_DISPLAY_LAGCOUNTER_TOGGLE, EMUCMDTYPE_MISC, LagCounterToggle, 0, 0, "Lag Counter Toggle", 0 },
{ EMUCMD_MISC_LAGCOUNTER_RESET, EMUCMDTYPE_MISC, LagCounterReset, 0, 0, "Lag Counter Reset", 0}
//memory watch, cheat search, debugger, ppu, hex editor, trace logger, code/data logger,
}; };
#define NUM_EMU_CMDS (sizeof(FCEUI_CommandTable)/sizeof(FCEUI_CommandTable[0])) #define NUM_EMU_CMDS (sizeof(FCEUI_CommandTable)/sizeof(FCEUI_CommandTable[0]))
@ -878,3 +889,13 @@ static void ObjectDisplayToggle(void)
spr = !spr; spr = !spr;
FCEUI_SetRenderPlanes(spr,bg); FCEUI_SetRenderPlanes(spr,bg);
} }
static void LagCounterReset(void)
{
LagCounter = 0;
}
static void LagCounterToggle(void)
{
lagCounterDisplay ^= 1;
}

View File

@ -228,6 +228,8 @@ enum EMUCMD
EMUCMD_MISC_USE_INPUT_PRESET_3, EMUCMD_MISC_USE_INPUT_PRESET_3,
EMUCMD_MISC_DISPLAY_BG_TOGGLE, EMUCMD_MISC_DISPLAY_BG_TOGGLE,
EMUCMD_MISC_DISPLAY_OBJ_TOGGLE, EMUCMD_MISC_DISPLAY_OBJ_TOGGLE,
EMUCMD_MISC_DISPLAY_LAGCOUNTER_TOGGLE,
EMUCMD_MISC_LAGCOUNTER_RESET,
EMUCMD_MAX EMUCMD_MAX
}; };