* added NES->Emulation Speed->Set Custom Speed
* added NES->Emulation Speed->Set FrameAdvance Delay * added NES->Emulation Speed->Set custom speed for FrameAdvance * Debugger: fixed mouse wheel scrolling
This commit is contained in:
parent
880c9deb62
commit
b8c1d1e29b
|
@ -1,10 +1,14 @@
|
||||||
|
13-Dec-2012 - AnS - win32: added Emulation Speed->Set custom speed for FrameAdvance
|
||||||
|
13-Dec-2012 - AnS - win32: added NES->Emulation Speed->Set FrameAdvance Delay
|
||||||
|
13-Dec-2012 - AnS - win32: added NES->Emulation Speed->Set Custom Speed
|
||||||
|
12-Dec-2012 - CaH4e3 - finish with mapper to boards conversion
|
||||||
|
07-Dec-2012 - CaH4e3 - Tracer: fixed RAM-located code logging when CDLogger options are enabled
|
||||||
05-Dec-2012 - AnS - fixed zapper and mouse positioning in fullscreen and bestfit mode
|
05-Dec-2012 - AnS - fixed zapper and mouse positioning in fullscreen and bestfit mode
|
||||||
04-Dec-2012 - AnS - speed up HUD text drawing
|
04-Dec-2012 - AnS - speed up HUD text drawing
|
||||||
04-Dec-2012 - AnS - Taseditor: speed up consecutive Recordings (when combining)
|
04-Dec-2012 - AnS - Taseditor: speed up consecutive Recordings (when combining)
|
||||||
03-Dec-2012 - AnS - Taseditor: fixed accelerators when editing Notes
|
03-Dec-2012 - AnS - Taseditor: fixed accelerators when editing Notes
|
||||||
03-Dec-2012 - AnS - fixed "X" button in the "Enter New Input" dialog (Hotkey Mapping); changed "Cancel" button to "OK"
|
03-Dec-2012 - AnS - fixed "X" button in the "Enter New Input" dialog (Hotkey Mapping); changed "Cancel" button to "OK"
|
||||||
03-Dec-2012 - CaH4e3 - fixed mapper 99
|
03-Dec-2012 - CaH4e3 - fixed mapper 99
|
||||||
30-Nov-2012 - CaH4e3 - more mappers to boards conversion
|
|
||||||
29-Nov-2012 - zeromus - fix "you ling xing dong" by assigning to mapper 192
|
29-Nov-2012 - zeromus - fix "you ling xing dong" by assigning to mapper 192
|
||||||
|
|
||||||
---r2768 - FCEUX 2.2.0 Released---
|
---r2768 - FCEUX 2.2.0 Released---
|
||||||
|
|
|
@ -492,7 +492,7 @@ void BreakHit(int bp_num, bool force = false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FCEUI_SetEmulationPaused(1); //mbg merge 7/19/06 changed to use EmulationPaused()
|
FCEUI_SetEmulationPaused(EMULATIONPAUSED_PAUSED); //mbg merge 7/19/06 changed to use EmulationPaused()
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
FCEUD_DebugBreakpoint(bp_num);
|
FCEUD_DebugBreakpoint(bp_num);
|
||||||
|
|
|
@ -98,7 +98,7 @@ void IncreaseEmulationSpeed(void)
|
||||||
|
|
||||||
RefreshThrottleFPS();
|
RefreshThrottleFPS();
|
||||||
|
|
||||||
FCEU_DispMessage("emulation speed %.1f%%",0, g_fpsScale*100.0);
|
FCEU_DispMessage("Emulation speed %.1f%%",0, g_fpsScale*100.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -112,7 +112,7 @@ void DecreaseEmulationSpeed(void)
|
||||||
|
|
||||||
RefreshThrottleFPS();
|
RefreshThrottleFPS();
|
||||||
|
|
||||||
FCEU_DispMessage("emulation speed %.1f%%",0, g_fpsScale*100.0);
|
FCEU_DispMessage("Emulation speed %.1f%%",0, g_fpsScale*100.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -146,5 +146,5 @@ FCEUD_SetEmulationSpeed(int cmd)
|
||||||
|
|
||||||
RefreshThrottleFPS();
|
RefreshThrottleFPS();
|
||||||
|
|
||||||
FCEU_DispMessage("emulation speed %.1f%%",0, g_fpsScale*100.0);
|
FCEU_DispMessage("Emulation speed %.1f%%",0, g_fpsScale*100.0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,6 +46,7 @@ extern CFGSTRUCT NetplayConfig[];
|
||||||
extern CFGSTRUCT InputConfig[];
|
extern CFGSTRUCT InputConfig[];
|
||||||
extern CFGSTRUCT HotkeyConfig[];
|
extern CFGSTRUCT HotkeyConfig[];
|
||||||
extern int autoHoldKey, autoHoldClearKey;
|
extern int autoHoldKey, autoHoldClearKey;
|
||||||
|
extern int frameAdvance_Delay;
|
||||||
extern int EnableAutosave, AutosaveQty, AutosaveFrequency;
|
extern int EnableAutosave, AutosaveQty, AutosaveFrequency;
|
||||||
extern int AFon, AFoff, AutoFireOffset;
|
extern int AFon, AFoff, AutoFireOffset;
|
||||||
extern int DesynchAutoFire;
|
extern int DesynchAutoFire;
|
||||||
|
@ -71,6 +72,7 @@ extern bool Show_FPS;
|
||||||
extern bool oldInputDisplay;
|
extern bool oldInputDisplay;
|
||||||
extern bool fullSaveStateLoads;
|
extern bool fullSaveStateLoads;
|
||||||
extern int frameSkipAmt;
|
extern int frameSkipAmt;
|
||||||
|
extern int32 fps_scale_frameadvance;
|
||||||
|
|
||||||
extern TASEDITOR_CONFIG taseditor_config;
|
extern TASEDITOR_CONFIG taseditor_config;
|
||||||
extern char* recent_projects[];
|
extern char* recent_projects[];
|
||||||
|
@ -251,6 +253,7 @@ static CFGSTRUCT fceuconfig[] = {
|
||||||
AC(MemWatchLoadFileOnStart),
|
AC(MemWatchLoadFileOnStart),
|
||||||
AC(MemWCollapsed),
|
AC(MemWCollapsed),
|
||||||
AC(BindToMain),
|
AC(BindToMain),
|
||||||
|
AC(frameAdvance_Delay),
|
||||||
AC(EnableAutosave),
|
AC(EnableAutosave),
|
||||||
AC(AutosaveQty),
|
AC(AutosaveQty),
|
||||||
AC(AutosaveFrequency),
|
AC(AutosaveFrequency),
|
||||||
|
@ -261,6 +264,7 @@ static CFGSTRUCT fceuconfig[] = {
|
||||||
AC(debuggerDisplayROMoffsets),
|
AC(debuggerDisplayROMoffsets),
|
||||||
AC(fullSaveStateLoads),
|
AC(fullSaveStateLoads),
|
||||||
AC(frameSkipAmt),
|
AC(frameSkipAmt),
|
||||||
|
AC(fps_scale_frameadvance),
|
||||||
|
|
||||||
//window positions
|
//window positions
|
||||||
AC(ChtPosX),
|
AC(ChtPosX),
|
||||||
|
|
|
@ -1350,6 +1350,11 @@ BOOL CALLBACK IDC_DEBUGGER_DISASSEMBLY_WndProc(HWND hwndDlg, UINT uMsg, WPARAM w
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case WM_MOUSEWHEEL:
|
||||||
|
{
|
||||||
|
SendMessage(GetDlgItem(hDebug,IDC_DEBUGGER_DISASSEMBLY_VSCR), uMsg, wParam, lParam);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return CallWindowProc(IDC_DEBUGGER_DISASSEMBLY_oldWndProc, hwndDlg, uMsg, wParam, lParam);
|
return CallWindowProc(IDC_DEBUGGER_DISASSEMBLY_oldWndProc, hwndDlg, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
|
|
|
@ -896,13 +896,13 @@ void win_debuggerLoop()
|
||||||
_updateWindow();
|
_updateWindow();
|
||||||
// HACK: break when Frame Advance is pressed
|
// HACK: break when Frame Advance is pressed
|
||||||
extern bool frameAdvanceRequested;
|
extern bool frameAdvanceRequested;
|
||||||
extern int frameAdvanceDelay;
|
extern int frameAdvance_Delay_count, frameAdvance_Delay;
|
||||||
if (frameAdvanceRequested)
|
if (frameAdvanceRequested)
|
||||||
{
|
{
|
||||||
if (frameAdvanceDelay==0 || frameAdvanceDelay >= 10)
|
if (frameAdvance_Delay_count == 0 || frameAdvance_Delay_count >= frameAdvance_Delay)
|
||||||
FCEUI_SetEmulationPaused(2);
|
FCEUI_SetEmulationPaused(EMULATIONPAUSED_FA);
|
||||||
if (frameAdvanceDelay < 10)
|
if (frameAdvance_Delay_count < frameAdvance_Delay)
|
||||||
frameAdvanceDelay++;
|
frameAdvance_Delay_count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int zzz=9;
|
int zzz=9;
|
||||||
|
|
|
@ -103,6 +103,10 @@ BEGIN
|
||||||
MENUITEM "&Slowest Speed", ID_NES_SLOWESTSPEED
|
MENUITEM "&Slowest Speed", ID_NES_SLOWESTSPEED
|
||||||
MENUITEM "&Normal Speed", ID_NES_NORMALSPEED
|
MENUITEM "&Normal Speed", ID_NES_NORMALSPEED
|
||||||
MENUITEM "&Turbo", ID_NES_TURBO
|
MENUITEM "&Turbo", ID_NES_TURBO
|
||||||
|
MENUITEM "Set &Custom Speed", ID_EMULATIONSPEED_CUSTOMSPEED
|
||||||
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "Set FrameAdvance Delay", ID_EMULATIONSPEED_SETFRAMEADVANCEDELAY
|
||||||
|
MENUITEM "Set custom speed for FrameAdvance", ID_EMULATIONSPEED_SETCUSTOMSPEEDFORFRAMEADVANCE
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
POPUP "&Config"
|
POPUP "&Config"
|
||||||
|
|
|
@ -240,7 +240,6 @@
|
||||||
#define IDC_NTVIEW_REFRESH_TRACKBAR 201
|
#define IDC_NTVIEW_REFRESH_TRACKBAR 201
|
||||||
#define IDC_ASSEMBLER_APPLY 201
|
#define IDC_ASSEMBLER_APPLY 201
|
||||||
#define IDI_ICON4 201
|
#define IDI_ICON4 201
|
||||||
#define BTN_CLEAR2 201
|
|
||||||
#define BTN_OK 201
|
#define BTN_OK 201
|
||||||
#define MENU_EJECT_DISK 202
|
#define MENU_EJECT_DISK 202
|
||||||
#define TXT_FAM 202
|
#define TXT_FAM 202
|
||||||
|
@ -1146,6 +1145,10 @@
|
||||||
#define ID_SELECTED_UNGREENZONE 40571
|
#define ID_SELECTED_UNGREENZONE 40571
|
||||||
#define ID_SELECTED_F 40572
|
#define ID_SELECTED_F 40572
|
||||||
#define ID_CONFIG_ENABLEGREENZONING 40573
|
#define ID_CONFIG_ENABLEGREENZONING 40573
|
||||||
|
#define ID_EMULATIONSPEED_SETFRAMEADVANCEDELAY 40574
|
||||||
|
#define ID_Menu40575 40575
|
||||||
|
#define ID_EMULATIONSPEED_SETCUSTOMSPEEDFORFRAMEADVANCE 40576
|
||||||
|
#define ID_EMULATIONSPEED_CUSTOMSPEED 40577
|
||||||
#define IDC_DEBUGGER_ICONTRAY 55535
|
#define IDC_DEBUGGER_ICONTRAY 55535
|
||||||
#define MW_ValueLabel2 65423
|
#define MW_ValueLabel2 65423
|
||||||
#define MW_ValueLabel1 65426
|
#define MW_ValueLabel1 65426
|
||||||
|
@ -1156,7 +1159,7 @@
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 289
|
#define _APS_NEXT_RESOURCE_VALUE 289
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40574
|
#define _APS_NEXT_COMMAND_VALUE 40578
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1282
|
#define _APS_NEXT_CONTROL_VALUE 1282
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -22,6 +22,7 @@ Playback - Player of emulation states
|
||||||
|
|
||||||
#include "taseditor_project.h"
|
#include "taseditor_project.h"
|
||||||
#include "../taseditor.h"
|
#include "../taseditor.h"
|
||||||
|
#include "../../../fceu.h"
|
||||||
|
|
||||||
#ifdef _S9XLUA_H
|
#ifdef _S9XLUA_H
|
||||||
extern void ForceExecuteLuaFrameFunctions();
|
extern void ForceExecuteLuaFrameFunctions();
|
||||||
|
@ -266,7 +267,7 @@ void PLAYBACK::ToggleEmulationPause()
|
||||||
}
|
}
|
||||||
void PLAYBACK::PauseEmulation()
|
void PLAYBACK::PauseEmulation()
|
||||||
{
|
{
|
||||||
FCEUI_SetEmulationPaused(1);
|
FCEUI_SetEmulationPaused(EMULATIONPAUSED_PAUSED);
|
||||||
}
|
}
|
||||||
void PLAYBACK::UnpauseEmulation()
|
void PLAYBACK::UnpauseEmulation()
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,10 +25,12 @@
|
||||||
|
|
||||||
static uint64 tmethod,tfreq;
|
static uint64 tmethod,tfreq;
|
||||||
static uint64 desiredfps;
|
static uint64 desiredfps;
|
||||||
|
|
||||||
static int32 fps_scale_table[]=
|
|
||||||
{ 3, 3, 4, 8, 16, 32, 64, 128, 192, 256, 384, 512, 768, 1024, 2048, 4096, 8192, 16384, 16384};
|
|
||||||
int32 fps_scale = 256;
|
int32 fps_scale = 256;
|
||||||
|
int32 fps_scale_unpaused = 256;
|
||||||
|
int32 fps_scale_frameadvance = 0;
|
||||||
|
|
||||||
|
static int32 fps_scale_table[] = { 3, 3, 4, 8, 16, 32, 64, 128, 192, 256, 384, 512, 768, 1024, 2048, 4096, 8192, 16384, 16384};
|
||||||
|
#define fps_table_size (sizeof(fps_scale_table) / sizeof(fps_scale_table[0]))
|
||||||
|
|
||||||
void RefreshThrottleFPS(void)
|
void RefreshThrottleFPS(void)
|
||||||
{
|
{
|
||||||
|
@ -118,35 +120,32 @@ uint64 FCEUD_GetTimeFreq(void)
|
||||||
static void IncreaseEmulationSpeed(void)
|
static void IncreaseEmulationSpeed(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for(i=1; fps_scale_table[i]<fps_scale; i++)
|
for(i = 1; fps_scale_table[i] < fps_scale_unpaused; i++)
|
||||||
;
|
;
|
||||||
fps_scale = fps_scale_table[i+1];
|
fps_scale = fps_scale_unpaused = fps_scale_table[i+1];
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DecreaseEmulationSpeed(void)
|
static void DecreaseEmulationSpeed(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for(i=1; fps_scale_table[i]<fps_scale; i++)
|
for(i = 1; fps_scale_table[i] < fps_scale_unpaused; i++)
|
||||||
;
|
;
|
||||||
fps_scale = fps_scale_table[i-1];
|
fps_scale = fps_scale_unpaused = fps_scale_table[i-1];
|
||||||
}
|
}
|
||||||
|
|
||||||
#define fps_table_size (sizeof(fps_scale_table)/sizeof(fps_scale_table[0]))
|
|
||||||
|
|
||||||
void FCEUD_SetEmulationSpeed(int cmd)
|
void FCEUD_SetEmulationSpeed(int cmd)
|
||||||
{
|
{
|
||||||
switch(cmd)
|
switch(cmd)
|
||||||
{
|
{
|
||||||
case EMUSPEED_SLOWEST: fps_scale=fps_scale_table[0]; break;
|
case EMUSPEED_SLOWEST: fps_scale = fps_scale_unpaused = fps_scale_table[0]; break;
|
||||||
case EMUSPEED_SLOWER: DecreaseEmulationSpeed(); break;
|
case EMUSPEED_SLOWER: DecreaseEmulationSpeed(); break;
|
||||||
case EMUSPEED_NORMAL: fps_scale=256; break;
|
case EMUSPEED_NORMAL: fps_scale = fps_scale_unpaused = 256; break;
|
||||||
case EMUSPEED_FASTER: IncreaseEmulationSpeed(); break;
|
case EMUSPEED_FASTER: IncreaseEmulationSpeed(); break;
|
||||||
case EMUSPEED_FASTEST: fps_scale=fps_scale_table[fps_table_size-1]; break;
|
case EMUSPEED_FASTEST: fps_scale = fps_scale_unpaused = fps_scale_table[fps_table_size - 1]; break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
RefreshThrottleFPS();
|
RefreshThrottleFPS();
|
||||||
|
FCEU_DispMessage("Emulation speed %d%%", 0, (fps_scale_unpaused * 100) >> 8);
|
||||||
FCEU_DispMessage("emulation speed %d%%",0,(fps_scale*100)>>8);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,6 +80,9 @@
|
||||||
extern TASEDITOR_WINDOW taseditor_window;
|
extern TASEDITOR_WINDOW taseditor_window;
|
||||||
extern PLAYBACK playback;
|
extern PLAYBACK playback;
|
||||||
|
|
||||||
|
#include "Win32InputBox.h"
|
||||||
|
extern int32 fps_scale_unpaused;
|
||||||
|
|
||||||
//extern void ToggleFullscreen();
|
//extern void ToggleFullscreen();
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
@ -1793,7 +1796,54 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
|
||||||
case ID_NES_NORMALSPEED:
|
case ID_NES_NORMALSPEED:
|
||||||
FCEUD_SetEmulationSpeed(2);
|
FCEUD_SetEmulationSpeed(2);
|
||||||
break;
|
break;
|
||||||
|
case ID_EMULATIONSPEED_CUSTOMSPEED:
|
||||||
|
{
|
||||||
|
int new_value = fps_scale / 2.56;
|
||||||
|
if ((CWin32InputBox::GetInteger("Emulation Speed", "Enter a number of percents from 1 to 1000.", new_value, hWnd) == IDOK))
|
||||||
|
{
|
||||||
|
fps_scale_unpaused = new_value * 2.56 + 1;
|
||||||
|
if (fps_scale_unpaused / 2.56 > 1000 || fps_scale_unpaused <= 0)
|
||||||
|
fps_scale_unpaused = 256;
|
||||||
|
fps_scale = fps_scale_unpaused;
|
||||||
|
RefreshThrottleFPS();
|
||||||
|
FCEU_DispMessage("Emulation speed %d%%", 0, (fps_scale_unpaused * 100) >> 8);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ID_EMULATIONSPEED_SETFRAMEADVANCEDELAY:
|
||||||
|
{
|
||||||
|
extern int frameAdvance_Delay;
|
||||||
|
int new_value = frameAdvance_Delay;
|
||||||
|
if((CWin32InputBox::GetInteger("FrameAdvance Delay", "How much time should elapse before\nholding the Frame Advance\nunpauses emulation?", new_value, hWnd) == IDOK))
|
||||||
|
{
|
||||||
|
if (new_value < 0)
|
||||||
|
new_value = FRAMEADVANCE_DELAY_DEFAULT;
|
||||||
|
frameAdvance_Delay = new_value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ID_EMULATIONSPEED_SETCUSTOMSPEEDFORFRAMEADVANCE:
|
||||||
|
{
|
||||||
|
extern int32 fps_scale_frameadvance;
|
||||||
|
int new_value = fps_scale_frameadvance / 2.56;
|
||||||
|
if ((CWin32InputBox::GetInteger("FrameAdvance Custom Speed", "Enter 0 to use the current emulation speed when\nthe Frame Advance is held. Or enter the number\nof percents (1-1000) to use different speed.", new_value, hWnd) == IDOK))
|
||||||
|
{
|
||||||
|
if (new_value > 1000)
|
||||||
|
new_value = 1000;
|
||||||
|
if (new_value > 0)
|
||||||
|
{
|
||||||
|
fps_scale_frameadvance = new_value * 2.56 + 1;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
fps_scale_frameadvance = 0;
|
||||||
|
fps_scale = fps_scale_unpaused;
|
||||||
|
RefreshThrottleFPS();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
//Config Menu-----------------------------------------------------------
|
//Config Menu-----------------------------------------------------------
|
||||||
case FCEUX_CONTEXT_UNHIDEMENU:
|
case FCEUX_CONTEXT_UNHIDEMENU:
|
||||||
case MENU_HIDE_MENU:
|
case MENU_HIDE_MENU:
|
||||||
|
|
94
src/fceu.cpp
94
src/fceu.cpp
|
@ -57,6 +57,11 @@ extern void ResetDebugStatisticsCounters();
|
||||||
extern void SetMainWindowText();
|
extern void SetMainWindowText();
|
||||||
|
|
||||||
extern bool TaseditorIsRecording();
|
extern bool TaseditorIsRecording();
|
||||||
|
|
||||||
|
extern int32 fps_scale;
|
||||||
|
extern int32 fps_scale_unpaused;
|
||||||
|
extern int32 fps_scale_frameadvance;
|
||||||
|
extern void RefreshThrottleFPS();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
@ -200,8 +205,9 @@ static int RWWrap = 0;
|
||||||
//bit0 indicates whether emulation is paused
|
//bit0 indicates whether emulation is paused
|
||||||
//bit1 indicates whether emulation is in frame step mode
|
//bit1 indicates whether emulation is in frame step mode
|
||||||
int EmulationPaused = 0;
|
int EmulationPaused = 0;
|
||||||
bool frameAdvanceRequested = false;
|
bool frameAdvanceRequested=false;
|
||||||
int frameAdvanceDelay;
|
int frameAdvance_Delay_count = 0;
|
||||||
|
int frameAdvance_Delay = FRAMEADVANCE_DELAY_DEFAULT;
|
||||||
|
|
||||||
//indicates that the emulation core just frame advanced (consumed the frame advance state and paused)
|
//indicates that the emulation core just frame advanced (consumed the frame advance state and paused)
|
||||||
bool JustFrameAdvanced = false;
|
bool JustFrameAdvanced = false;
|
||||||
|
@ -578,23 +584,47 @@ void FCEUI_Emulate(uint8 **pXBuf, int32 **SoundBuf, int32 *SoundBufSize, int ski
|
||||||
|
|
||||||
JustFrameAdvanced = false;
|
JustFrameAdvanced = false;
|
||||||
|
|
||||||
if (frameAdvanceRequested) {
|
if (frameAdvanceRequested)
|
||||||
if (frameAdvanceDelay == 0 || frameAdvanceDelay >= 10)
|
{
|
||||||
EmulationPaused = 3;
|
if (frameAdvance_Delay_count == 0 || frameAdvance_Delay_count >= frameAdvance_Delay)
|
||||||
if (frameAdvanceDelay == 0 || frameAdvanceDelay < 10)
|
EmulationPaused = EMULATIONPAUSED_FA;
|
||||||
frameAdvanceDelay++;
|
if (frameAdvance_Delay_count < frameAdvance_Delay)
|
||||||
|
frameAdvance_Delay_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EmulationPaused & 2)
|
if (EmulationPaused & EMULATIONPAUSED_FA)
|
||||||
EmulationPaused &= ~1; // clear paused flag temporarily (frame advance)
|
{
|
||||||
else if ((EmulationPaused & 1)) {
|
// the user is holding Frame Advance key
|
||||||
memcpy(XBuf, XBackBuf, 256 * 256);
|
// clear paused flag temporarily
|
||||||
FCEU_PutImage();
|
EmulationPaused &= ~EMULATIONPAUSED_PAUSED;
|
||||||
*pXBuf = XBuf;
|
#ifdef WIN32
|
||||||
*SoundBuf = WaveFinal;
|
// different emulation speed when holding Frame Advance
|
||||||
*SoundBufSize = 0;
|
if (fps_scale_frameadvance > 0)
|
||||||
|
{
|
||||||
return;
|
fps_scale = fps_scale_frameadvance;
|
||||||
|
RefreshThrottleFPS();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
#ifdef WIN32
|
||||||
|
if (fps_scale_frameadvance > 0)
|
||||||
|
{
|
||||||
|
// restore emulation speed when Frame Advance is not held
|
||||||
|
fps_scale = fps_scale_unpaused;
|
||||||
|
RefreshThrottleFPS();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (EmulationPaused & EMULATIONPAUSED_PAUSED)
|
||||||
|
{
|
||||||
|
// emulator is paused
|
||||||
|
memcpy(XBuf, XBackBuf, 256*256);
|
||||||
|
FCEU_PutImage();
|
||||||
|
*pXBuf = XBuf;
|
||||||
|
*SoundBuf = WaveFinal;
|
||||||
|
*SoundBufSize = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AutoFire();
|
AutoFire();
|
||||||
|
@ -644,9 +674,11 @@ void FCEUI_Emulate(uint8 **pXBuf, int32 **SoundBuf, int32 *SoundBufSize, int ski
|
||||||
*SoundBufSize = ssize;
|
*SoundBufSize = ssize;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EmulationPaused & 2 && (!frameAdvanceLagSkip || !lagFlag)) {
|
if ((EmulationPaused & EMULATIONPAUSED_FA) && (!frameAdvanceLagSkip || !lagFlag))
|
||||||
//Lots of conditions here. EmulationPaused&2 must be true. In addition frameAdvanceLagSkip or lagFlag must be false
|
//Lots of conditions here. EmulationPaused & EMULATIONPAUSED_FA must be true. In addition frameAdvanceLagSkip or lagFlag must be false
|
||||||
EmulationPaused = 1; // restore paused flag
|
// When Frame Advance is held, emulator is automatically paused after emulating one frame (or several lag frames)
|
||||||
|
{
|
||||||
|
EmulationPaused = EMULATIONPAUSED_PAUSED; // restore EMULATIONPAUSED_PAUSED flag and clear EMULATIONPAUSED_FA flag
|
||||||
JustFrameAdvanced = true;
|
JustFrameAdvanced = true;
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
if (soundoptions & SO_MUTEFA) //mute the frame advance if the user requested it
|
if (soundoptions & SO_MUTEFA) //mute the frame advance if the user requested it
|
||||||
|
@ -854,16 +886,19 @@ int32 FCEUI_GetDesiredFPS(void) {
|
||||||
return(1008307711); // ~60.1
|
return(1008307711); // ~60.1
|
||||||
}
|
}
|
||||||
|
|
||||||
int FCEUI_EmulationPaused(void) {
|
int FCEUI_EmulationPaused(void)
|
||||||
return(EmulationPaused & 1);
|
{
|
||||||
|
return (EmulationPaused & EMULATIONPAUSED_PAUSED);
|
||||||
}
|
}
|
||||||
|
|
||||||
int FCEUI_EmulationFrameStepped() {
|
int FCEUI_EmulationFrameStepped()
|
||||||
return(EmulationPaused & 2);
|
{
|
||||||
|
return (EmulationPaused & EMULATIONPAUSED_FA);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FCEUI_ClearEmulationFrameStepped() {
|
void FCEUI_ClearEmulationFrameStepped()
|
||||||
EmulationPaused &= ~2;
|
{
|
||||||
|
EmulationPaused &= ~EMULATIONPAUSED_FA;
|
||||||
}
|
}
|
||||||
|
|
||||||
//mbg merge 7/18/06 added
|
//mbg merge 7/18/06 added
|
||||||
|
@ -872,8 +907,9 @@ void FCEUI_SetEmulationPaused(int val) {
|
||||||
EmulationPaused = val;
|
EmulationPaused = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FCEUI_ToggleEmulationPause(void) {
|
void FCEUI_ToggleEmulationPause(void)
|
||||||
EmulationPaused = (EmulationPaused & 1) ^ 1;
|
{
|
||||||
|
EmulationPaused = (EmulationPaused & EMULATIONPAUSED_PAUSED) ^ EMULATIONPAUSED_PAUSED;
|
||||||
DebuggerWasUpdated = false;
|
DebuggerWasUpdated = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -883,7 +919,7 @@ void FCEUI_FrameAdvanceEnd(void) {
|
||||||
|
|
||||||
void FCEUI_FrameAdvance(void) {
|
void FCEUI_FrameAdvance(void) {
|
||||||
frameAdvanceRequested = true;
|
frameAdvanceRequested = true;
|
||||||
frameAdvanceDelay = 0;
|
frameAdvance_Delay_count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int AutosaveCounter = 0;
|
static int AutosaveCounter = 0;
|
||||||
|
|
|
@ -141,3 +141,8 @@ extern uint8 vsdip;
|
||||||
|
|
||||||
#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
|
#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
|
||||||
|
|
||||||
|
#define EMULATIONPAUSED_PAUSED 1
|
||||||
|
#define EMULATIONPAUSED_FA 2
|
||||||
|
|
||||||
|
#define FRAMEADVANCE_DELAY_DEFAULT 10
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue