Cleaned up some code.

This commit is contained in:
rheiny 2007-02-11 10:10:16 +00:00
parent 1644cb0762
commit 35704e5aa4
6 changed files with 382 additions and 304 deletions

View File

@ -28,7 +28,7 @@ FCEUX\n\
\n\ \n\
"__TIME__" "__DATE__"\n"; "__TIME__" "__DATE__"\n";
char *compilerString = FCEUD_GetCompilerString(); const char *compilerString = FCEUD_GetCompilerString();
//allocate the string and concatenate the template with the compiler string //allocate the string and concatenate the template with the compiler string
if(aboutString) free(aboutString); if(aboutString) free(aboutString);

View File

@ -10,7 +10,7 @@ FILE *FCEUD_UTF8fopen(const char *fn, const char *mode);
//mbg 7/23/06 //mbg 7/23/06
char *FCEUD_GetCompilerString(); const char *FCEUD_GetCompilerString();
/* This makes me feel dirty for some reason. */ /* This makes me feel dirty for some reason. */
void FCEU_printf(char *format, ...); void FCEU_printf(char *format, ...);
@ -21,7 +21,7 @@ void FCEUD_SetPalette(uint8 index, uint8 r, uint8 g, uint8 b);
void FCEUD_GetPalette(uint8 i,uint8 *r, uint8 *g, uint8 *b); void FCEUD_GetPalette(uint8 i,uint8 *r, uint8 *g, uint8 *b);
/* Displays an error. Can block or not. */ /* Displays an error. Can block or not. */
void FCEUD_PrintError(char *s); void FCEUD_PrintError(const char *s);
void FCEUD_Message(const char *s); void FCEUD_Message(const char *s);
/* Network interface */ /* Network interface */

View File

@ -126,7 +126,8 @@ void SaveParse(const CFGSTRUCT *cfgst, FILE *fp)
if(*(char **)cfgst[x].ptr) if(*(char **)cfgst[x].ptr)
{ {
// Only save it if there IS a string. // Only save it if there IS a string.
SetValueR(fp,cfgst[x].name,*(char **)cfgst[x].ptr, strlen(*(char **)cfgst[x].ptr)+1); unsigned int len = strlen(*(char **)cfgst[x].ptr);
SetValueR(fp,cfgst[x].name,*(char **)cfgst[x].ptr, len + 1);
} }
} }

View File

@ -70,7 +70,6 @@ static CFGSTRUCT fceuconfig[] = {
NACS("odstates",directory_names[3]), NACS("odstates",directory_names[3]),
NACS("odsnaps",directory_names[4]), NACS("odsnaps",directory_names[4]),
NACS("odbase",directory_names[5]), NACS("odbase",directory_names[5]),
NACS("odbase",directory_names[6]),
AC(winspecial), AC(winspecial),
AC(winsizemulx), AC(winsizemulx),

View File

@ -28,7 +28,6 @@
#undef LPCWAVEFORMATEX #undef LPCWAVEFORMATEX
#include "dsound.h" #include "dsound.h"
#include "dinput.h" #include "dinput.h"
//#include <dir.h> //mbg merge 7/17/06 removed
#include <commctrl.h> #include <commctrl.h>
#include <shlobj.h> // For directories configuration dialog. #include <shlobj.h> // For directories configuration dialog.
#undef uint8 #undef uint8
@ -51,14 +50,44 @@
#include "tracer.h" #include "tracer.h"
#include "cdlogger.h" #include "cdlogger.h"
//#include "memwatch.h" //mbg merge 7/19/06 removed-memwatch is gone
#include "basicbot.h" #include "basicbot.h"
// #defines
#define VNSCLIP ((eoptions&EO_CLIPSIDES)?8:0) #define VNSCLIP ((eoptions&EO_CLIPSIDES)?8:0)
#define VNSWID ((eoptions&EO_CLIPSIDES)?240:256) #define VNSWID ((eoptions&EO_CLIPSIDES)?240:256)
uint8 *xbsave=NULL; #define SO_FORCE8BIT 1
int eoptions=EO_BGRUN | EO_FORCEISCALE; #define SO_SECONDARY 2
#define SO_GFOCUS 4
#define SO_D16VOL 8
#define SO_MUTEFA 16
#define SO_OLDUP 32
#define GOO_DISABLESS 1 /* Disable screen saver when game is loaded. */
#define GOO_CONFIRMEXIT 2 /* Confirmation before exiting. */
#define GOO_POWERRESET 4 /* Confirm on power/reset. */
//---------------------------
//mbg merge 6/29/06 - new aboutbox
#ifdef _M_X64
#define _MSVC_ARCH "x64"
#else
#define _MSVC_ARCH "x86"
#endif
#ifdef _DEBUG
#define _MSVC_BUILD "debug"
#else
#define _MSVC_BUILD "release"
#endif
#define __COMPILER__STRING__ "msvc " _Py_STRINGIZE(_MSC_VER) " " _MSVC_ARCH " " _MSVC_BUILD
#define _Py_STRINGIZE(X) _Py_STRINGIZE1((X))
#define _Py_STRINGIZE1(X) _Py_STRINGIZE2 ## X
#define _Py_STRINGIZE2(X) #X
//re: http://72.14.203.104/search?q=cache:HG-okth5NGkJ:mail.python.org/pipermail/python-checkins/2002-November/030704.html+_msc_ver+compiler+version+string&hl=en&gl=us&ct=clnk&cd=5
// External functions
void ResetVideo(void); void ResetVideo(void);
void ShowCursorAbs(int w); void ShowCursorAbs(int w);
@ -67,6 +96,13 @@ void FixWXY(int pref);
void SetMainWindowStuff(void); void SetMainWindowStuff(void);
int GetClientAbsRect(LPRECT lpRect); int GetClientAbsRect(LPRECT lpRect);
void UpdateFCEUWindow(void); void UpdateFCEUWindow(void);
void FCEUD_Update(uint8 *XBuf, int32 *Buffer, int Count);
void ApplyDefaultCommandMapping(void);
// Internal variables
uint8 *xbsave = NULL;
int eoptions=EO_BGRUN | EO_FORCEISCALE;
/** /**
* Handle of the main window. * Handle of the main window.
@ -92,6 +128,7 @@ static char *directory_names[6] = {0, 0, 0, 0, 0, 0};
static const char *default_directory_names[5] = {"cheats", "sav", "fcs", "snaps", "movie"}; static const char *default_directory_names[5] = {"cheats", "sav", "fcs", "snaps", "movie"};
#define NUMBER_OF_DIRECTORIES sizeof(directory_names) / sizeof(*directory_names) #define NUMBER_OF_DIRECTORIES sizeof(directory_names) / sizeof(*directory_names)
#define NUMBER_OF_DEFAULT_DIRECTORIES sizeof(default_directory_names) / sizeof(*default_directory_names)
static char TempArray[2048]; static char TempArray[2048];
@ -100,7 +137,71 @@ static char TempArray[2048];
**/ **/
static char BaseDirectory[2048]; static char BaseDirectory[2048];
void SetDirs(void) static int exiting = 0;
static volatile int moocow = 0;
/* Some timing-related variables (now ignored). */
static int maxconbskip = 32; /* Maximum consecutive blit skips. */
static int ffbskip = 32; /* Blit skips per blit when FF-ing */
static int moviereadonly = 1;
static int fullscreen = 0;
static int soundflush = 0;
// Flag that indicates whether Game Genie is enabled or not.
static int genie = 0;
// Flag that indicates whether PAL Emulation is enabled or not.
static int pal_emulation = 0;
static int status_icon = 1;
static int windowedfailed;
static double saspectw = 1, saspecth = 1;
static double winsizemulx = 1, winsizemuly = 1;
static int winwidth, winheight;
static int ismaximized = 0;
static volatile int nofocus = 0;
static volatile int _userpause = 0; //mbg merge 7/18/06 changed tasbuild was using this only in a couple of places
static uint32 goptions = GOO_DISABLESS;
static int soundrate = 44100;
static int soundbuftime = 50;
/*static*/ int soundoptions = SO_SECONDARY | SO_GFOCUS;
static int soundvolume = 100;
static int soundquality = 0;
extern int autoHoldKey, autoHoldClearKey;
extern int frame_display, input_display;
//mbg merge 7/17/06 did these have to be unsigned?
static int srendline, erendline;
static int srendlinen = 8;
static int erendlinen = 231;
static int srendlinep = 0;
static int erendlinep = 239;
static int totallines;
static uint8 cpalette[192];
static int vmod = 0;
int soundo = 1;
static int ntsccol = 0, ntsctint, ntschue;
//mbg 6/30/06 - indicates that the main loop should close the game as soon as it can
int closeGame = 0;
static int changerecursive=0;
// qfox 09/17/06: moved the skipcount outside because it was completely pointless
// in there.
/**
* Counts the number of frames that have not been displayed
* Used for the bot, to skip frames (and save time).
**/
int skipcount = 0;
// Internal functions
void SetDirs()
{ {
int x; int x;
@ -128,17 +229,56 @@ void SetDirs(void)
FCEUI_SetBaseDirectory(BaseDirectory); FCEUI_SetBaseDirectory(BaseDirectory);
} }
} }
/* Remove empty, unused directories. */
void RemoveDirs(void)
{
int x;
for(x=0;x<5;x++) /**
if(!directory_names[x]) * Creates a directory.
{ *
sprintf(TempArray,"%s\\%s",directory_names[5]?directory_names[5]:BaseDirectory,default_directory_names[x]); * @param dirname Name of the directory to create.
RemoveDirectory(TempArray); **/
} void DirectoryCreator(const char* dirname)
{
CreateDirectory(dirname, 0);
}
/**
* Removes a directory.
*
* @param dirname Name of the directory to remove.
**/
void DirectoryRemover(const char* dirname)
{
RemoveDirectory(dirname);
}
/**
* Used to walk over the default directories array.
*
* @param callback Callback function that's called for every default directory name.
**/
void DefaultDirectoryWalker(void (*callback)(const char*))
{
unsigned int curr_dir;
for(curr_dir = 0; curr_dir < NUMBER_OF_DEFAULT_DIRECTORIES; curr_dir++)
{
if(!directory_names[curr_dir])
{
sprintf(
TempArray,
"%s\\%s",
directory_names[NUMBER_OF_DEFAULT_DIRECTORIES] ? directory_names[NUMBER_OF_DEFAULT_DIRECTORIES] : BaseDirectory,
default_directory_names[curr_dir]
);
callback(TempArray);
}
}
}
/* Remove empty, unused directories. */
void RemoveDirs()
{
DefaultDirectoryWalker(DirectoryRemover);
} }
/** /**
@ -146,16 +286,7 @@ void RemoveDirs(void)
**/ **/
void CreateDirs(void) void CreateDirs(void)
{ {
int x; DefaultDirectoryWalker(DirectoryCreator);
for(x = 0; x < sizeof(default_directory_names) / sizeof(*default_directory_names); x++)
{
if(!directory_names[x])
{
sprintf(TempArray, "%s\\%s", directory_names[5] ? directory_names[5] : BaseDirectory, default_directory_names[x]);
CreateDirectory(TempArray,0);
}
}
} }
static char *gfsdir=0; static char *gfsdir=0;
@ -181,123 +312,66 @@ void GetBaseDirectory(void)
} }
} }
static int exiting=0;
static volatile int moocow = 0;
int BlockingCheck(void) int BlockingCheck(void)
{ {
MSG msg; MSG msg;
moocow = 1; moocow = 1;
while( PeekMessage( &msg, 0, 0, 0, PM_NOREMOVE ) ) {
if( GetMessage( &msg, 0, 0, 0)>0 ) while( PeekMessage( &msg, 0, 0, 0, PM_NOREMOVE ) )
{ {
TranslateMessage(&msg); if( GetMessage( &msg, 0, 0, 0)>0 )
DispatchMessage(&msg); {
} TranslateMessage(&msg);
} DispatchMessage(&msg);
moocow = 0; }
if(exiting) return(0); }
return(1);
moocow = 0;
return exiting ? 0 : 1;
} }
/* Some timing-related variables (now ignored). */
static int maxconbskip = 32; /* Maximum consecutive blit skips. */
static int ffbskip = 32; /* Blit skips per blit when FF-ing */
static int moviereadonly=1;
static int fullscreen=0;
static int soundflush=0;
// Flag that indicates whether Game Genie is enabled or not.
static int genie = 0;
// Flag that indicates whether PAL Emulation is enabled or not.
static int pal_emulation = 0;
static int status_icon=1;
static int windowedfailed;
static double saspectw=1, saspecth=1;
static double winsizemulx=1, winsizemuly=1;
static int winwidth,winheight;
static int ismaximized = 0;
static volatile int nofocus=0;
//static volatile int userpause=0; //mbg merge 7/18/06 removed. this has been replaced with FCEU_EmulationPaused stuff
static volatile int _userpause=0; //mbg merge 7/18/06 changed tasbuild was using this only in a couple of places
#define SO_FORCE8BIT 1
#define SO_SECONDARY 2
#define SO_GFOCUS 4
#define SO_D16VOL 8
#define SO_MUTEFA 16
#define SO_OLDUP 32
#define GOO_DISABLESS 1 /* Disable screen saver when game is loaded. */
#define GOO_CONFIRMEXIT 2 /* Confirmation before exiting. */
#define GOO_POWERRESET 4 /* Confirm on power/reset. */
static uint32 goptions = GOO_DISABLESS;
static int soundrate=44100;
static int soundbuftime=50;
/*static*/ int soundoptions=SO_SECONDARY|SO_GFOCUS;
static int soundvolume=100;
static int soundquality=0;
extern int autoHoldKey, autoHoldClearKey;
extern int frame_display, input_display;
//mbg merge 7/17/06 did these have to be unsigned?
static int srendline,erendline;
static int srendlinen=8;
static int erendlinen=231;
static int srendlinep=0;
static int erendlinep=239;
static int totallines;
static void FixFL(void) static void FixFL(void)
{ {
FCEUI_GetCurrentVidSystem(&srendline,&erendline); FCEUI_GetCurrentVidSystem(&srendline, &erendline);
totallines=erendline-srendline+1; totallines = erendline - srendline + 1;
} }
static void UpdateRendBounds(void) static void UpdateRendBounds(void)
{ {
FCEUI_SetRenderedLines(srendlinen,erendlinen,srendlinep,erendlinep); FCEUI_SetRenderedLines(srendlinen, erendlinen, srendlinep, erendlinep);
FixFL(); FixFL();
} }
static uint8 cpalette[192]; /**
static int vmod = 0; * Shows an error message in a message box.
int soundo=1; *
static int ntsccol=0,ntsctint,ntschue; * @param errormsg Text of the error message.
**/
void FCEUD_PrintError(char *s) void FCEUD_PrintError(const char *errormsg)
{ {
AddLogText(s,1); AddLogText(errormsg, 1);
if(fullscreen) ShowCursorAbs(1);
MessageBox(0,s,"FCE Ultra Error",MB_ICONERROR|MB_OK|MB_SETFOREGROUND|MB_TOPMOST); if(fullscreen)
if(fullscreen)ShowCursorAbs(0); {
ShowCursorAbs(1);
}
MessageBox(0, errormsg, "FCE Ultra Error", MB_ICONERROR | MB_OK | MB_SETFOREGROUND | MB_TOPMOST);
if(fullscreen)
{
ShowCursorAbs(0);
}
} }
/**
//--------------------------- * Generates a compiler identification string.
//mbg merge 6/29/06 - new aboutbox *
* @return Compiler identification string
#ifdef _M_X64 **/
#define _MSVC_ARCH "x64" const char *FCEUD_GetCompilerString()
#else {
#define _MSVC_ARCH "x86"
#endif
#ifdef _DEBUG
#define _MSVC_BUILD "debug"
#else
#define _MSVC_BUILD "release"
#endif
#define __COMPILER__STRING__ "msvc " _Py_STRINGIZE(_MSC_VER) " " _MSVC_ARCH " " _MSVC_BUILD
#define _Py_STRINGIZE(X) _Py_STRINGIZE1((X))
#define _Py_STRINGIZE1(X) _Py_STRINGIZE2 ## X
#define _Py_STRINGIZE2(X) #X
//re: http://72.14.203.104/search?q=cache:HG-okth5NGkJ:mail.python.org/pipermail/python-checkins/2002-November/030704.html+_msc_ver+compiler+version+string&hl=en&gl=us&ct=clnk&cd=5
char *FCEUD_GetCompilerString() {
return __COMPILER__STRING__; return __COMPILER__STRING__;
} }
@ -309,9 +383,6 @@ void ShowAboutBox(void)
MessageBox(hAppWnd, FCEUI_GetAboutString(), FCEU_NAME, MB_OK); MessageBox(hAppWnd, FCEUI_GetAboutString(), FCEU_NAME, MB_OK);
} }
//mbg 6/30/06 - indicates that the main loop should close the game as soon as it can
int closeGame = 0;
/** /**
* Exits FCE Ultra * Exits FCE Ultra
**/ **/
@ -344,75 +415,68 @@ void DoFCEUExit()
closeGame = 1;//mbg 6/30/06 - for housekeeping purposes we need to exit after the emulation cycle finishes closeGame = 1;//mbg 6/30/06 - for housekeeping purposes we need to exit after the emulation cycle finishes
} }
/**
* Changes the thread priority of the main thread.
**/
void DoPriority(void) void DoPriority(void)
{ {
if(eoptions&EO_HIGHPRIO) if(eoptions & EO_HIGHPRIO)
{ {
if(!SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_HIGHEST)) if(!SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST))
{ {
AddLogText("Error setting thread priority to THREAD_PRIORITY_HIGHEST.",1); AddLogText("Error setting thread priority to THREAD_PRIORITY_HIGHEST.", 1);
} }
} }
else else
if(!SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_NORMAL)) {
{ if(!SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_NORMAL))
AddLogText("Error setting thread priority to THREAD_PRIORITY_NORMAL.",1); {
} AddLogText("Error setting thread priority to THREAD_PRIORITY_NORMAL.", 1);
}
}
} }
static int changerecursive=0; // TODO: HORRIBLE
#include "sound.cpp" #include "sound.cpp"
#include "video.cpp" #include "video.cpp"
//extern int winspecial;
//extern vmdef vmodes[11];
//extern int disvaccel;
//extern int fssync;
//extern int winsync;
//int SetVideoMode(int fs);
//void DoVideoConfigFix(void);
//void FCEUD_BlitScreen(uint8 *XBuf);
#include "window.cpp" #include "window.cpp"
//extern char *rfiles[10];
//extern char *rdirs[10];
//extern int EnableBackgroundInput;
//void ByebyeWindow(void);
//void DoTimingConfigFix();
//void CreateMainWindow();
//void UpdateMenu();
//void ALoad(char *nameo);
//void LoadNewGamey(HWND hParent, char *initialdir);
//void UpdateMenu();
#include "config.cpp" #include "config.cpp"
#include "args.cpp" #include "args.cpp"
int DriverInitialize(void) int DriverInitialize()
{ {
if(soundo) if(soundo)
soundo=InitSound(); {
soundo = InitSound();
}
SetVideoMode(fullscreen); SetVideoMode(fullscreen);
InitInputStuff(); /* Initialize DInput interfaces. */ InitInputStuff(); /* Initialize DInput interfaces. */
return 1;
return 1;
} }
static void DriverKill(void) static void DriverKill(void)
{ {
sprintf(TempArray,"%s/fceu98.cfg",BaseDirectory); // Save config file
sprintf(TempArray, "%s/fceu98.cfg", BaseDirectory);
SaveConfig(TempArray); SaveConfig(TempArray);
DestroyInput(); DestroyInput();
ResetVideo(); ResetVideo();
if(soundo) TrashSound();
if(soundo)
{
TrashSound();
}
CloseWave(); CloseWave();
ByebyeWindow(); ByebyeWindow();
} }
void FCEUD_Update(uint8 *XBuf, int32 *Buffer, int Count);
void ApplyDefaultCommandMapping(void);
//mbg merge 7/18/06 - the function that contains the code that used to just be UpdateMemWatch() //mbg merge 7/18/06 - the function that contains the code that used to just be UpdateMemWatch()
void _updateMemWatch() { void _updateMemWatch() {
//UpdateMemWatch() //UpdateMemWatch()
@ -427,13 +491,13 @@ uint32 *BotInput;
void win_AllocBuffers(uint8 **GameMemBlock, uint8 **RAM) void win_AllocBuffers(uint8 **GameMemBlock, uint8 **RAM)
{ {
mapGameMemBlock = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE, 0, 131072,"fceu.GameMemBlock"); mapGameMemBlock = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE, 0, 131072,"fceu.GameMemBlock");
if(mapGameMemBlock == NULL || GetLastError() == ERROR_ALREADY_EXISTS) if(mapGameMemBlock == NULL || GetLastError() == ERROR_ALREADY_EXISTS)
{ {
//mbg 7/28/06 - is this the proper error handling? //mbg 7/28/06 - is this the proper error handling?
//do we need to indicate to user somehow that this failed in this emu instance? //do we need to indicate to user somehow that this failed in this emu instance?
CloseHandle(mapGameMemBlock); CloseHandle(mapGameMemBlock);
mapGameMemBlock = NULL; mapGameMemBlock = NULL;
*GameMemBlock = (uint8 *) malloc(131072); *GameMemBlock = (uint8 *) malloc(131072);
*RAM = (uint8 *) malloc(2048); *RAM = (uint8 *) malloc(2048);
@ -461,7 +525,8 @@ void win_AllocBuffers(uint8 **GameMemBlock, uint8 **RAM)
BotInput[0] = 0; BotInput[0] = 0;
} }
void win_FreeBuffers(uint8 *GameMemBlock, uint8 *RAM) { void win_FreeBuffers(uint8 *GameMemBlock, uint8 *RAM)
{
//clean up shared memory //clean up shared memory
if(mapRAM) if(mapRAM)
{ {
@ -674,7 +739,8 @@ doloopy:
//mbg merge 7/19/06 - the function that contains the code that used to just be UpdateFCEUWindow() and FCEUD_UpdateInput() //mbg merge 7/19/06 - the function that contains the code that used to just be UpdateFCEUWindow() and FCEUD_UpdateInput()
void _updateWindow() { void _updateWindow()
{
UpdateFCEUWindow(); UpdateFCEUWindow();
FCEUD_UpdateInput(); FCEUD_UpdateInput();
PPUViewDoBlit(); PPUViewDoBlit();
@ -886,13 +952,6 @@ void _updateWindow() {
// } // end of !(old sound code) block // } // end of !(old sound code) block
//} //}
// qfox 09/17/06: moved the skipcount outside because it was completely pointless
// in there.
/**
* Counts the number of frames that have not been displayed
* Used for the bot, to skip frames (and save time).
**/
int skipcount = 0;
/** /**
* Update the game and gamewindow with a new frame * Update the game and gamewindow with a new frame
**/ **/
@ -1067,26 +1126,45 @@ void FCEUD_Update(uint8 *XBuf, int32 *Buffer, int Count)
static void FCEUD_MakePathDirs(const char *fname) static void FCEUD_MakePathDirs(const char *fname)
{ {
char path[MAX_PATH]; char path[MAX_PATH];
const char* div=fname; const char* div = fname;
do {
const char* fptr=strchr(div,'\\'); do
if(!fptr) fptr=strchr(div,'/'); {
if(!fptr) break; const char* fptr = strchr(div, '\\');
int off=fptr-fname;
strncpy(path,fname,off); if(!fptr)
path[off]='\0'; {
fptr = strchr(div, '/');
}
if(!fptr)
{
break;
}
int off = fptr - fname;
strncpy(path, fname, off);
path[off] = '\0';
mkdir(path); mkdir(path);
div=fptr+1;
while(div[0]=='\\'||div[0]=='/') div++; div = fptr + 1;
while(div[0] == '\\' || div[0] == '/')
{
div++;
}
} while(1); } while(1);
} }
FILE *FCEUD_UTF8fopen(const char *n, const char *m) FILE *FCEUD_UTF8fopen(const char *n, const char *m)
{ {
if(strchr(m,'w')||strchr(m,'+')) if(strchr(m, 'w') || strchr(m, '+'))
FCEUD_MakePathDirs(n); {
FCEUD_MakePathDirs(n);
}
return(fopen(n,m)); return(fopen(n, m));
} }
int FCEUD_ShowStatusIcon(void) int FCEUD_ShowStatusIcon(void)
@ -1096,6 +1174,6 @@ int FCEUD_ShowStatusIcon(void)
void FCEUD_ToggleStatusIcon(void) void FCEUD_ToggleStatusIcon(void)
{ {
status_icon=!status_icon; status_icon = !status_icon;
UpdateCheckedMenuItems(); UpdateCheckedMenuItems();
} }

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="8.00" Version="8,00"
Name="fceux" Name="fceux"
ProjectGUID="{6893EF44-FEA3-46DF-B236-C4C200F54294}" ProjectGUID="{6893EF44-FEA3-46DF-B236-C4C200F54294}"
RootNamespace="fceux" RootNamespace="fceux"
@ -99,88 +99,6 @@
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../zlib"
PreprocessorDefinitions="WIN32;_DEBUG;MSVC;_CRT_SECURE_NO_DEPRECATE;_WIN32_WINDOWS=0x0410;WINVER=0x0410;NETWORK;LSB_FIRST"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DisableLanguageExtensions="false"
ForceConformanceInForLoopScope="false"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
CompileAs="1"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="dxguid.lib winmm.lib dinput.lib ws2_32.lib ddraw.lib dsound.lib"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
EntryPointSymbol="mainCRTStartup"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration <Configuration
Name="Release|Win32" Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)" OutputDirectory="$(SolutionDir)$(ConfigurationName)"
@ -264,6 +182,88 @@
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../zlib"
PreprocessorDefinitions="WIN32;_DEBUG;MSVC;_CRT_SECURE_NO_DEPRECATE;_WIN32_WINDOWS=0x0410;WINVER=0x0410;NETWORK;LSB_FIRST"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DisableLanguageExtensions="false"
ForceConformanceInForLoopScope="false"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
CompileAs="1"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="dxguid.lib winmm.lib dinput.lib ws2_32.lib ddraw.lib dsound.lib"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
EntryPointSymbol="mainCRTStartup"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration <Configuration
Name="Release|x64" Name="Release|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
@ -595,7 +595,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Release|Win32"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -604,7 +604,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Debug|x64"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -727,7 +727,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Release|Win32"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -736,7 +736,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Debug|x64"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -791,7 +791,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Release|Win32"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -800,7 +800,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Debug|x64"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -883,7 +883,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Release|Win32"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -892,7 +892,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Debug|x64"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -1568,7 +1568,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Release|Win32"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -1577,7 +1577,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Debug|x64"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -1733,7 +1733,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Release|Win32"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -1742,7 +1742,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Debug|x64"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -1801,7 +1801,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Release|Win32"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -1810,7 +1810,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Debug|x64"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -1918,7 +1918,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Debug|x64" Name="Release|Win32"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
@ -1927,7 +1927,7 @@
/> />
</FileConfiguration> </FileConfiguration>
<FileConfiguration <FileConfiguration
Name="Release|Win32" Name="Debug|x64"
> >
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"