Merged in two snes9x-rr GUI changes

drag&drop support for ROMs (no movies atm)
unified avi recording menu item
removed a few legacy leftovers
disabling the strech option no longer disables bilinear filtering
This commit is contained in:
OV2 2010-09-29 13:48:26 +02:00
parent d0b9becaab
commit 8c665e6299
10 changed files with 108 additions and 234 deletions

View File

@ -527,7 +527,6 @@ static bool LockSurface2 (LPDIRECTDRAWSURFACE2 lpDDSurface, SSurface *lpSurface)
return (false); return (false);
hResult = lpDDSurface->Restore(); hResult = lpDDSurface->Restore();
GUI.ScreenCleared = true;
if (hResult != DD_OK) if (hResult != DD_OK)
return (false); return (false);

View File

@ -389,11 +389,9 @@ void SelectRenderMethod()
RenderMethod = FilterToMethod(GUI.Scale); RenderMethod = FilterToMethod(GUI.Scale);
RenderMethodHiRes = FilterToMethod(GUI.ScaleHiRes); RenderMethodHiRes = FilterToMethod(GUI.ScaleHiRes);
if (GUI.ScreenCleared || OldRenderMethod != RenderMethod || OldRenderMethodHiRes != RenderMethodHiRes) if (OldRenderMethod != RenderMethod || OldRenderMethodHiRes != RenderMethodHiRes)
snes9x_clear_change_log = GUI.NumFlipFrames; snes9x_clear_change_log = GUI.NumFlipFrames;
GUI.ScreenCleared = false;
GUI.DepthConverted = !GUI.NeedDepthConvert; GUI.DepthConverted = !GUI.NeedDepthConvert;
if(GUI.ScreenDepth == 32 && if(GUI.ScreenDepth == 32 &&
((GetFilter32BitSupport(GUI.Scale) && (IPPU.RenderedScreenHeight <= SNES_HEIGHT_EXTENDED && IPPU.RenderedScreenWidth < 512)) || ((GetFilter32BitSupport(GUI.Scale) && (IPPU.RenderedScreenHeight <= SNES_HEIGHT_EXTENDED && IPPU.RenderedScreenWidth < 512)) ||

View File

@ -55,7 +55,6 @@
#define IDC_MUTE 1016 #define IDC_MUTE 1016
#define IDC_SKIP_TYPE 1017 #define IDC_SKIP_TYPE 1017
#define IDC_SCROLLBAR1 1018 #define IDC_SCROLLBAR1 1018
#define IDC_FMUT 1018
#define IDC_VRAM_DISPLAY 1019 #define IDC_VRAM_DISPLAY 1019
#define IDC_WIP1 1019 #define IDC_WIP1 1019
#define IDC_ADDRESS 1020 #define IDC_ADDRESS 1020
@ -357,6 +356,7 @@
#define ID_LANGUAGE_ENGLISH 40002 #define ID_LANGUAGE_ENGLISH 40002
#define ID_LANGUAGE_NEDERLANDS 40003 #define ID_LANGUAGE_NEDERLANDS 40003
#define ID_WINDOW_HIDEMENUBAR 40004 #define ID_WINDOW_HIDEMENUBAR 40004
#define ID_FILE_AVI_RECORDING 40005
#define ID_SOUND_NOSOUND 40021 #define ID_SOUND_NOSOUND 40021
#define ID_OPTIONS_JOYPAD 40022 #define ID_OPTIONS_JOYPAD 40022
#define ID_WINDOW_SHOWFPS 40023 #define ID_WINDOW_SHOWFPS 40023
@ -432,7 +432,6 @@
#define IDM_ENABLE_MULTITAP 40104 #define IDM_ENABLE_MULTITAP 40104
#define IDM_MOUSE_TOGGLE 40105 #define IDM_MOUSE_TOGGLE 40105
#define IDM_SCOPE_TOGGLE 40106 #define IDM_SCOPE_TOGGLE 40106
#define IDM_CATCH_UP_SOUND 40107
#define IDM_GFX_PACKS 40108 #define IDM_GFX_PACKS 40108
#define IDM_JUSTIFIER 40109 #define IDM_JUSTIFIER 40109
#define ID_SCREENSHOT 40110 #define ID_SCREENSHOT 40110

View File

@ -865,8 +865,7 @@ BEGIN
MENUITEM "Movie Record...", ID_FILE_MOVIE_RECORD, GRAYED MENUITEM "Movie Record...", ID_FILE_MOVIE_RECORD, GRAYED
MENUITEM "Movie Stop", ID_FILE_MOVIE_STOP, GRAYED MENUITEM "Movie Stop", ID_FILE_MOVIE_STOP, GRAYED
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "Record AVI...", ID_FILE_WRITE_AVI, GRAYED MENUITEM "AVI Recording", ID_FILE_AVI_RECORDING, GRAYED
MENUITEM "Stop AVI Recording", ID_FILE_STOP_AVI, GRAYED
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "&Reset Game", ID_FILE_RESET, GRAYED MENUITEM "&Reset Game", ID_FILE_RESET, GRAYED
MENUITEM "&Pause", ID_FILE_PAUSE, GRAYED MENUITEM "&Pause", ID_FILE_PAUSE, GRAYED

View File

@ -243,7 +243,6 @@ void WinSetDefaultValues ()
GUI.FlipCounter = 0; GUI.FlipCounter = 0;
GUI.NumFlipFrames = 1; GUI.NumFlipFrames = 1;
GUI.BilinearFilter = false; GUI.BilinearFilter = false;
GUI.ScreenCleared = true;
GUI.LockDirectories = false; GUI.LockDirectories = false;
GUI.window_maximized = false; GUI.window_maximized = false;

View File

@ -1116,83 +1116,6 @@ bool JustifierOffscreen()
// } // }
//} //}
#ifdef MK_APU_RESAMPLE
void ResampleTo16000HzM16(uint16* input, uint16*output,int output_samples)
{
int i=0;
for(i=0;i<output_samples;i++)
{
output[i]=(input[i*2]+input[(2*i)+1])>>1;
}
}
void ResampleTo16000HzS16(uint16* input, uint16*output,int output_samples)
{
int i=0;
for(i=0;i<output_samples;i+=2)
{
output[i]=(input[i*2]+input[(2*(i+1))])>>1;
output[i+1]=(input[(i*2)+1]+input[(2*(i+1))+1])>>1;
}
}
void ResampleTo8000HzM16(uint16* input, uint16*output,int output_samples)
{
int i=0;
for(i=0;i<output_samples;i++)
{
output[i]=(input[i*4]+input[(4*i)+1]+input[(4*i)+2]+input[(4*i)+3])>>2;
}
}
void ResampleTo8000HzS16(uint16* input, uint16*output,int output_samples)
{
int i=0;
for(i=0;i<output_samples;i+=2)
{
output[i]=(input[i*4]+input[(4*i)+2]+input[(4*(i+1))]+input[(4*(i+1))+2])>>2;
output[i+1]=(input[(i*4)+1]+input[(4*i)+3]+input[(4*(i+1))+1]+input[(4*(i+1))+3])>>2;
}
}
void ResampleTo16000HzM8(uint8* input, uint8*output,int output_samples)
{
int i=0;
for(i=0;i<output_samples;i++)
{
output[i]=(input[i*2]+input[(2*i)+1])>>1;
}
}
void ResampleTo16000HzS8(uint8* input, uint8*output,int output_samples)
{
int i=0;
for(i=0;i<output_samples;i+=2)
{
output[i]=(input[i*2]+input[(2*(i+1))])>>1;
output[i+1]=(input[(i*2)+1]+input[(2*(i+1))+1])>>1;
}
}
void ResampleTo8000HzM8(uint8* input, uint8*output,int output_samples)
{
int i=0;
for(i=0;i<output_samples;i++)
{
output[i]=(input[i*4]+input[(4*i)+1]+input[(4*i)+2]+input[(4*i)+3])>>2;
}
}
void ResampleTo8000HzS8(uint8* input, uint8*output,int output_samples)
{
int i=0;
for(i=0;i<output_samples;i+=2)
{
output[i]=(input[i*4]+input[(4*i)+2]+input[(4*(i+1))]+input[(4*(i+1))+2])>>2;
output[i+1]=(input[(i*4)+1]+input[(4*i)+3]+input[(4*(i+1))+1]+input[(4*(i+1))+3])>>2;
}
}
#endif
void DoAVIOpen(const TCHAR* filename) void DoAVIOpen(const TCHAR* filename)
{ {
// close current instance // close current instance

View File

@ -373,8 +373,6 @@ bool8 S9xDeinitUpdate (int Width, int Height)
// avi writing // avi writing
DoAVIVideoFrame(&Src, Width, Height); DoAVIVideoFrame(&Src, Width, Height);
GUI.ScreenCleared = true;
SelectRenderMethod (); SelectRenderMethod ();
// Clear some of the old SNES rendered image // Clear some of the old SNES rendered image
@ -456,7 +454,6 @@ static void ClearSurface (LPDIRECTDRAWSURFACE2 lpDDSurface)
void UpdateBackBuffer() void UpdateBackBuffer()
{ {
GUI.ScreenCleared = true;
if (GUI.outputMethod==DIRECTDRAW && GUI.FullScreen) if (GUI.outputMethod==DIRECTDRAW && GUI.FullScreen)
{ {

View File

@ -300,6 +300,7 @@ HANDLE SoundEvent;
ExtList* valid_ext=NULL; ExtList* valid_ext=NULL;
void MakeExtFile(void); void MakeExtFile(void);
void LoadExts(void); void LoadExts(void);
static bool ExtensionIsValid(const TCHAR *filename);
extern FILE *trace_fs; extern FILE *trace_fs;
extern SCheatData Cheat; extern SCheatData Cheat;
@ -616,8 +617,8 @@ void FreezeUnfreeze (int slot, bool8 freeze);
void CheckDirectoryIsWritable (const char *filename); void CheckDirectoryIsWritable (const char *filename);
static void CheckMenuStates (); static void CheckMenuStates ();
static void ResetFrameTimer (); static void ResetFrameTimer ();
bool8 LoadROM (const TCHAR *filename); static bool LoadROM (const TCHAR *filename);
bool8 LoadMultiROM (const TCHAR *filename, const TCHAR *filename2); static bool LoadMultiROM (const TCHAR *filename, const TCHAR *filename2);
bool8 S9xLoadROMImage (const TCHAR *string); bool8 S9xLoadROMImage (const TCHAR *string);
#ifdef NETPLAY_SUPPORT #ifdef NETPLAY_SUPPORT
static void EnableServer (bool8 enable); static void EnableServer (bool8 enable);
@ -1411,7 +1412,6 @@ static bool DoOpenRomDialog(TCHAR filename [_MAX_PATH], bool noCustomDlg = false
} }
} }
TCHAR multiRomA [MAX_PATH] = {0}; // lazy, should put in sGUI and add init to {0} somewhere TCHAR multiRomA [MAX_PATH] = {0}; // lazy, should put in sGUI and add init to {0} somewhere
TCHAR multiRomB [MAX_PATH] = {0}; TCHAR multiRomB [MAX_PATH] = {0};
@ -1438,9 +1438,7 @@ LRESULT CALLBACK WinProc(
{ {
case WM_CREATE: case WM_CREATE:
g_hInst = ((LPCREATESTRUCT)lParam)->hInstance; g_hInst = ((LPCREATESTRUCT)lParam)->hInstance;
#ifndef MK_APU DragAcceptFiles(hWnd, TRUE);
DeleteMenu(GUI.hMenu,IDM_CATCH_UP_SOUND,MF_BYCOMMAND);
#endif
return 0; return 0;
case WM_KEYDOWN: case WM_KEYDOWN:
if(GUI.BackgroundKeyHotkeys) if(GUI.BackgroundKeyHotkeys)
@ -1477,9 +1475,36 @@ LRESULT CALLBACK WinProc(
} }
} }
break; break;
case WM_DROPFILES:
HDROP hDrop;
UINT fileCount;
TCHAR droppedFile[PATH_MAX];
hDrop = (HDROP)wParam;
fileCount = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0);
if (fileCount == 1) {
DragQueryFile(hDrop, 0, droppedFile, PATH_MAX);
if (ExtensionIsValid(droppedFile)) {
LoadROM(droppedFile);
} else {
S9xMessage(S9X_ERROR, S9X_ROM_INFO, "Unknown file extension.");
}
}
DragFinish(hDrop);
return 0;
case WM_COMMAND: case WM_COMMAND:
switch (wParam & 0xffff) switch (wParam & 0xffff)
{ {
case ID_FILE_AVI_RECORDING:
if (!GUI.AVIOut)
PostMessage(GUI.hWnd, WM_COMMAND, ID_FILE_WRITE_AVI, NULL);
else
PostMessage(GUI.hWnd, WM_COMMAND, ID_FILE_STOP_AVI, NULL);
break;
case ID_FILE_WRITE_AVI: case ID_FILE_WRITE_AVI:
{ {
RestoreGUIDisplay (); //exit DirectX RestoreGUIDisplay (); //exit DirectX
@ -1791,7 +1816,6 @@ LRESULT CALLBACK WinProc(
} }
RestoreSNESDisplay (); RestoreSNESDisplay ();
GUI.ScreenCleared = true;
} }
break; break;
@ -1799,53 +1823,13 @@ LRESULT CALLBACK WinProc(
{ {
TCHAR filename [_MAX_PATH]; TCHAR filename [_MAX_PATH];
#ifdef NETPLAY_SUPPORT
if (Settings.NetPlay && !Settings.NetPlayServer)
{
S9xMessage (S9X_INFO, S9X_NETPLAY_NOT_SERVER,
WINPROC_DISCONNECT);
break;
}
#endif
RestoreGUIDisplay (); RestoreGUIDisplay ();
if(DoOpenRomDialog(filename)) if(DoOpenRomDialog(filename)) {
{ LoadROM(filename);
if (!Settings.StopEmulation)
{
Memory.SaveSRAM (S9xGetFilename (".srm", SRAM_DIR));
S9xSaveCheatFile (S9xGetFilename (".cht", CHEAT_DIR));
}
Settings.StopEmulation = !LoadROM (filename);
if (!Settings.StopEmulation)
{
bool8 loadedSRAM = Memory.LoadSRAM (S9xGetFilename (".srm", SRAM_DIR));
if(!loadedSRAM) // help migration from earlier Snes9x versions by checking ROM directory for savestates
Memory.LoadSRAM (S9xGetFilename (".srm", ROMFILENAME_DIR));
S9xLoadCheatFile (S9xGetFilename (".cht", CHEAT_DIR));
S9xAddToRecentGames (filename);
CheckDirectoryIsWritable (S9xGetFilename (".---", SNAPSHOT_DIR));
CheckMenuStates ();
#ifdef NETPLAY_SUPPORT
if (NPServer.SendROMImageOnConnect)
S9xNPServerQueueSendingROMImage ();
else
S9xNPServerQueueSendingLoadROMRequest (Memory.ROMName);
#endif
}
if(GUI.ControllerOption == SNES_SUPERSCOPE)
SetCursor (GUI.GunSight);
else
{
SetCursor (GUI.Arrow);
GUI.CursorTimer = 60;
}
Settings.Paused = false;
} }
RestoreSNESDisplay (); RestoreSNESDisplay ();
GUI.ScreenCleared = true;
} }
break; break;
@ -1859,7 +1843,6 @@ LRESULT CALLBACK WinProc(
SetMenu( GUI.hWnd, GUI.hMenu); SetMenu( GUI.hWnd, GUI.hMenu);
else else
SetMenu( GUI.hWnd, NULL); SetMenu( GUI.hWnd, NULL);
GUI.ScreenCleared = true;
break; break;
case ID_LANGUAGE_ENGLISH: case ID_LANGUAGE_ENGLISH:
@ -2273,39 +2256,8 @@ LRESULT CALLBACK WinProc(
j++; j++;
if (i == j) if (i == j)
{ {
#ifdef NETPLAY_SUPPORT
if (Settings.NetPlay && !Settings.NetPlayServer) if (!LoadROM(GUI.RecentGames [i])) {
{
S9xMessage (S9X_INFO, S9X_NETPLAY_NOT_SERVER,
WINPROC_DISCONNECT);
break;
}
#endif
if (!Settings.StopEmulation)
{
Memory.SaveSRAM (S9xGetFilename (".srm", SRAM_DIR));
S9xSaveCheatFile (S9xGetFilename (".cht", CHEAT_DIR));
}
Settings.StopEmulation = !LoadROM (GUI.RecentGames [i]);
if (!Settings.StopEmulation)
{
bool8 loadedSRAM = Memory.LoadSRAM (S9xGetFilename (".srm", SRAM_DIR));
if(!loadedSRAM) // help migration from earlier Snes9x versions by checking ROM directory for savestates
Memory.LoadSRAM (S9xGetFilename (".srm", ROMFILENAME_DIR));
S9xLoadCheatFile (S9xGetFilename (".cht", CHEAT_DIR));
S9xAddToRecentGames (GUI.RecentGames [i]);
CheckDirectoryIsWritable (S9xGetFilename (".---", SNAPSHOT_DIR));
CheckMenuStates ();
#ifdef NETPLAY_SUPPORT
if (NPServer.SendROMImageOnConnect)
S9xNPServerQueueSendingROMImage ();
else
S9xNPServerQueueSendingLoadROMRequest (Memory.ROMName);
#endif
Settings.Paused = false;
}
else
{
sprintf (String, ERR_ROM_NOT_FOUND, _tToChar(GUI.RecentGames [i])); sprintf (String, ERR_ROM_NOT_FOUND, _tToChar(GUI.RecentGames [i]));
S9xMessage (S9X_ERROR, S9X_ROM_NOT_FOUND, String); S9xMessage (S9X_ERROR, S9X_ROM_NOT_FOUND, String);
S9xRemoveFromRecentGames(i); S9xRemoveFromRecentGames(i);
@ -3335,28 +3287,7 @@ int WINAPI WinMain(
MessageBox( GUI.hWnd, Languages[ GUI.Language].errFrameTimer, TEXT("Snes9X - Frame Timer"), MB_OK | MB_ICONINFORMATION); MessageBox( GUI.hWnd, Languages[ GUI.Language].errFrameTimer, TEXT("Snes9X - Frame Timer"), MB_OK | MB_ICONINFORMATION);
} }
Settings.StopEmulation = !LoadROM (_tFromChar(rom_filename)); LoadROM(_tFromChar(rom_filename));
if (!Settings.StopEmulation)
{
bool8 loaded = Memory.LoadSRAM (S9xGetFilename (".srm", SRAM_DIR));
if(!loaded) // help migration from earlier Snes9x versions by checking ROM directory for savestates
Memory.LoadSRAM (S9xGetFilename (".srm", ROMFILENAME_DIR));
S9xLoadCheatFile (S9xGetFilename (".cht", CHEAT_DIR));
CheckDirectoryIsWritable (S9xGetFilename (".---", SNAPSHOT_DIR));
CheckMenuStates ();
}
if (!Settings.StopEmulation)
{
if (GUI.ControllerOption == SNES_SUPERSCOPE)
SetCursor (GUI.GunSight);
else
{
SetCursor (GUI.Arrow);
GUI.CursorTimer = 60;
}
}
S9xUnmapAllControls(); S9xUnmapAllControls();
S9xSetupDefaultKeymap(); S9xSetupDefaultKeymap();
@ -3846,12 +3777,6 @@ static void CheckMenuStates ()
mii.fState = (S9xMovieActive () && !Settings.StopEmulation) ? MFS_ENABLED : MFS_DISABLED; mii.fState = (S9xMovieActive () && !Settings.StopEmulation) ? MFS_ENABLED : MFS_DISABLED;
SetMenuItemInfo (GUI.hMenu, ID_FILE_MOVIE_STOP, FALSE, &mii); SetMenuItemInfo (GUI.hMenu, ID_FILE_MOVIE_STOP, FALSE, &mii);
mii.fState = (!Settings.StopEmulation) ? MFS_ENABLED : MFS_DISABLED;
SetMenuItemInfo (GUI.hMenu, ID_FILE_WRITE_AVI, FALSE, &mii);
mii.fState = (!Settings.StopEmulation && (GUI.AVIOut)) ? MFS_ENABLED : MFS_DISABLED;
SetMenuItemInfo (GUI.hMenu, ID_FILE_STOP_AVI, FALSE, &mii);
mii.fState = (GUI.SoundChannelEnable & (1 << 0)) ? MFS_CHECKED : MFS_UNCHECKED; mii.fState = (GUI.SoundChannelEnable & (1 << 0)) ? MFS_CHECKED : MFS_UNCHECKED;
SetMenuItemInfo (GUI.hMenu, ID_CHANNELS_CHANNEL1, FALSE, &mii); SetMenuItemInfo (GUI.hMenu, ID_CHANNELS_CHANNEL1, FALSE, &mii);
mii.fState = (GUI.SoundChannelEnable & (1 << 1)) ? MFS_CHECKED : MFS_UNCHECKED; mii.fState = (GUI.SoundChannelEnable & (1 << 1)) ? MFS_CHECKED : MFS_UNCHECKED;
@ -3906,6 +3831,16 @@ static void CheckMenuStates ()
validFlag = (((1<<SNES_JUSTIFIER_2) & GUI.ValidControllerOptions) && (!S9xMovieActive() || !S9xMovieGetFrameCounter())) ? MFS_ENABLED : MFS_DISABLED; validFlag = (((1<<SNES_JUSTIFIER_2) & GUI.ValidControllerOptions) && (!S9xMovieActive() || !S9xMovieGetFrameCounter())) ? MFS_ENABLED : MFS_DISABLED;
mii.fState = validFlag|((controller[0] == CTL_JOYPAD && controller[1] == CTL_JUSTIFIER && ids[0]) ? MFS_CHECKED : MFS_UNCHECKED); mii.fState = validFlag|((controller[0] == CTL_JOYPAD && controller[1] == CTL_JUSTIFIER && ids[0]) ? MFS_CHECKED : MFS_UNCHECKED);
SetMenuItemInfo (GUI.hMenu, IDM_JUSTIFIERS, FALSE, &mii); SetMenuItemInfo (GUI.hMenu, IDM_JUSTIFIERS, FALSE, &mii);
mii.fState = !Settings.StopEmulation ? MFS_ENABLED : MFS_DISABLED;
SetMenuItemInfo (GUI.hMenu, ID_FILE_AVI_RECORDING, FALSE, &mii);
ZeroMemory(&mii, sizeof(mii));
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_STRING;
mii.dwTypeData = !GUI.AVIOut ? TEXT("Start AVI Recording...") : TEXT("Stop AVI Recording");
SetMenuItemInfo (GUI.hMenu, ID_FILE_AVI_RECORDING, FALSE, &mii);
} }
static void ResetFrameTimer () static void ResetFrameTimer ()
@ -3923,7 +3858,7 @@ static void ResetFrameTimer ()
GUI.hFrameTimer = timeSetEvent ((Settings.FrameTime+500)/1000, 0, (LPTIMECALLBACK)FrameTimer, 0, TIME_PERIODIC); GUI.hFrameTimer = timeSetEvent ((Settings.FrameTime+500)/1000, 0, (LPTIMECALLBACK)FrameTimer, 0, TIME_PERIODIC);
} }
bool8 LoadROM (const TCHAR *filename) static bool LoadROMPlain(const TCHAR *filename)
{ {
if (!filename || !*filename) if (!filename || !*filename)
return (FALSE); return (FALSE);
@ -3938,7 +3873,51 @@ bool8 LoadROM (const TCHAR *filename)
return (FALSE); return (FALSE);
} }
bool8 LoadMultiROM (const TCHAR *filename, const TCHAR *filename2) static bool LoadROM(const TCHAR *filename) {
#ifdef NETPLAY_SUPPORT
if (Settings.NetPlay && !Settings.NetPlayServer)
{
S9xMessage (S9X_INFO, S9X_NETPLAY_NOT_SERVER,
WINPROC_DISCONNECT);
return false;
}
#endif
if (!Settings.StopEmulation) {
Memory.SaveSRAM (S9xGetFilename (".srm", SRAM_DIR));
S9xSaveCheatFile (S9xGetFilename (".cht", CHEAT_DIR));
}
Settings.StopEmulation = !LoadROMPlain(filename);
if (!Settings.StopEmulation) {
bool8 loadedSRAM = Memory.LoadSRAM (S9xGetFilename (".srm", SRAM_DIR));
if(!loadedSRAM) // help migration from earlier Snes9x versions by checking ROM directory for savestates
Memory.LoadSRAM (S9xGetFilename (".srm", ROMFILENAME_DIR));
S9xAddToRecentGames (filename);
CheckDirectoryIsWritable (S9xGetFilename (".---", SNAPSHOT_DIR));
#ifdef NETPLAY_SUPPORT
if (NPServer.SendROMImageOnConnect)
S9xNPServerQueueSendingROMImage ();
else
S9xNPServerQueueSendingLoadROMRequest (Memory.ROMName);
#endif
}
if(GUI.ControllerOption == SNES_SUPERSCOPE)
SetCursor (GUI.GunSight);
else {
SetCursor (GUI.Arrow);
GUI.CursorTimer = 60;
}
Settings.Paused = false;
return !Settings.StopEmulation;
}
static bool LoadMultiROM (const TCHAR *filename, const TCHAR *filename2)
{ {
SetCurrentDirectory(S9xGetDirectoryT(ROM_DIR)); SetCurrentDirectory(S9xGetDirectoryT(ROM_DIR));
if (Memory.LoadMultiCart (_tToChar(filename), _tToChar(filename2))) if (Memory.LoadMultiCart (_tToChar(filename), _tToChar(filename2)))
@ -3966,25 +3945,8 @@ bool8 S9xLoadROMImage (const TCHAR *string)
TCHAR FileName [_MAX_PATH]; TCHAR FileName [_MAX_PATH];
if(DoOpenRomDialog(FileName)) if(DoOpenRomDialog(FileName)) {
{ return LoadROM(FileName);
if (!Settings.StopEmulation)
{
Memory.SaveSRAM (S9xGetFilename (".srm", SRAM_DIR));
S9xSaveCheatFile (S9xGetFilename (".cht", CHEAT_DIR));
}
Settings.StopEmulation = !LoadROM (FileName);
if (!Settings.StopEmulation)
{
bool8 loaded = Memory.LoadSRAM (S9xGetFilename (".srm", SRAM_DIR));
if(!loaded) // help migration from earlier Snes9x versions by checking ROM directory for savestates
Memory.LoadSRAM (S9xGetFilename (".srm", ROMFILENAME_DIR));
S9xLoadCheatFile (S9xGetFilename (".cht", CHEAT_DIR));
CheckDirectoryIsWritable (S9xGetFilename (".---", SNAPSHOT_DIR));
CheckMenuStates ();
}
else
return (FALSE);
} }
else else
return (FALSE); return (FALSE);
@ -4980,7 +4942,7 @@ INT_PTR CALLBACK DlgEmulatorProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lPar
#define SKIP_FLOPPY #define SKIP_FLOPPY
bool ExtensionIsValid(const TCHAR * filename) static bool ExtensionIsValid(const TCHAR * filename)
{ {
ExtList* curr=valid_ext; ExtList* curr=valid_ext;
while(curr!=NULL) while(curr!=NULL)
@ -7016,11 +6978,8 @@ INT_PTR CALLBACK DlgFunky(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
WinDisplayApplyChanges(); WinDisplayApplyChanges();
WinRefreshDisplay(); WinRefreshDisplay();
break;
// make video memory option match stretching option, but allow it to be changed via the other checkbox
CheckDlgButton(hDlg,IDC_BILINEAR,GUI.Stretch);
/* fall through */
case IDC_BILINEAR: case IDC_BILINEAR:
GUI.BilinearFilter = (bool)(IsDlgButtonChecked(hDlg,IDC_BILINEAR)==BST_CHECKED); GUI.BilinearFilter = (bool)(IsDlgButtonChecked(hDlg,IDC_BILINEAR)==BST_CHECKED);
@ -10092,7 +10051,6 @@ static void set_movieinfo(const TCHAR* path, HWND hDlg)
// if(m.SyncFlags & MOVIE_SYNC_DATA_EXISTS) // if(m.SyncFlags & MOVIE_SYNC_DATA_EXISTS)
{ {
SendDlgItemMessage(hDlg,IDC_ALLOWLEFTRIGHT,BM_SETCHECK, (m.SyncFlags & MOVIE_SYNC_LEFTRIGHT)!=0 ? (WPARAM)BST_CHECKED : (WPARAM)BST_UNCHECKED, 0); SendDlgItemMessage(hDlg,IDC_ALLOWLEFTRIGHT,BM_SETCHECK, (m.SyncFlags & MOVIE_SYNC_LEFTRIGHT)!=0 ? (WPARAM)BST_CHECKED : (WPARAM)BST_UNCHECKED, 0);
SendDlgItemMessage(hDlg,IDC_FMUT,BM_SETCHECK, (m.SyncFlags & MOVIE_SYNC_FAKEMUTE)!=0 ? (WPARAM)BST_CHECKED : (WPARAM)BST_UNCHECKED, 0);
SendDlgItemMessage(hDlg,IDC_SYNC_TO_SOUND_CPU,BM_SETCHECK, (m.SyncFlags & MOVIE_SYNC_SYNCSOUND)!=0 ? (WPARAM)BST_CHECKED : (WPARAM)BST_UNCHECKED, 0); SendDlgItemMessage(hDlg,IDC_SYNC_TO_SOUND_CPU,BM_SETCHECK, (m.SyncFlags & MOVIE_SYNC_SYNCSOUND)!=0 ? (WPARAM)BST_CHECKED : (WPARAM)BST_UNCHECKED, 0);
// SetWindowText(GetDlgItem(hDlg, IDC_LOADEDFROMMOVIE), _T(MOVIE_LABEL_SYNC_DATA_FROM_MOVIE)); // SetWindowText(GetDlgItem(hDlg, IDC_LOADEDFROMMOVIE), _T(MOVIE_LABEL_SYNC_DATA_FROM_MOVIE));
} }
@ -10224,10 +10182,6 @@ INT_PTR CALLBACK DlgOpenMovie(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
SendDlgItemMessage(hDlg,IDC_READONLY,BM_SETCHECK,GUI.MovieReadOnly ? BST_CHECKED : BST_UNCHECKED,0); SendDlgItemMessage(hDlg,IDC_READONLY,BM_SETCHECK,GUI.MovieReadOnly ? BST_CHECKED : BST_UNCHECKED,0);
//EnableWindow(GetDlgItem(hDlg, IDC_SYNC_TO_SOUND_CPU), Settings.SoundDriver<1||Settings.SoundDriver>3); // can't sync sound to CPU unless using "Snes9x DirectSound" driver
EnableWindow(GetDlgItem(hDlg, IDC_FMUT), FALSE);
SetDlgItemText(hDlg,IDC_LABEL_STARTSETTINGS, MOVIE_LABEL_STARTSETTINGS); SetDlgItemText(hDlg,IDC_LABEL_STARTSETTINGS, MOVIE_LABEL_STARTSETTINGS);
SetDlgItemText(hDlg,IDC_LABEL_CONTROLLERSETTINGS, MOVIE_LABEL_CONTSETTINGS); SetDlgItemText(hDlg,IDC_LABEL_CONTROLLERSETTINGS, MOVIE_LABEL_CONTSETTINGS);
SetDlgItemText(hDlg,IDC_LABEL_SYNCSETTINGS, MOVIE_LABEL_SYNCSETTINGS); SetDlgItemText(hDlg,IDC_LABEL_SYNCSETTINGS, MOVIE_LABEL_SYNCSETTINGS);
@ -10239,7 +10193,6 @@ INT_PTR CALLBACK DlgOpenMovie(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
switch(LOWORD(wParam)) switch(LOWORD(wParam))
{ {
case IDC_ALLOWLEFTRIGHT: case IDC_ALLOWLEFTRIGHT:
case IDC_FMUT:
case IDC_SYNC_TO_SOUND_CPU: case IDC_SYNC_TO_SOUND_CPU:
SetWindowText(GetDlgItem(hDlg, IDC_LOADEDFROMMOVIE), TEXT("")); SetWindowText(GetDlgItem(hDlg, IDC_LOADEDFROMMOVIE), TEXT(""));
break; break;

View File

@ -318,7 +318,6 @@ struct sGUI {
TCHAR GLSLvertexShaderFileName[MAX_PATH]; TCHAR GLSLvertexShaderFileName[MAX_PATH];
TCHAR GLSLfragmentShaderFileName[MAX_PATH]; TCHAR GLSLfragmentShaderFileName[MAX_PATH];
bool ScreenCleared;
bool IgnoreNextMouseMove; bool IgnoreNextMouseMove;
RECT window_size; RECT window_size;
bool window_maximized; bool window_maximized;

View File

@ -49,6 +49,7 @@
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(OutDir)\zlibdmt.pdb"
WarningLevel="3" WarningLevel="3"
DebugInformationFormat="4" DebugInformationFormat="4"
ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h" ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h"
@ -114,6 +115,7 @@
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(OutDir)\zlibdmtx64.pdb"
WarningLevel="3" WarningLevel="3"
DebugInformationFormat="3" DebugInformationFormat="3"
ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h" ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h"
@ -179,6 +181,7 @@
RuntimeLibrary="0" RuntimeLibrary="0"
EnableFunctionLevelLinking="true" EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(OutDir)\zlibmt.pdb"
WarningLevel="3" WarningLevel="3"
DebugInformationFormat="3" DebugInformationFormat="3"
ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h" ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h"
@ -244,6 +247,7 @@
RuntimeLibrary="0" RuntimeLibrary="0"
EnableFunctionLevelLinking="true" EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(OutDir)\zlibmtx64.pdb"
WarningLevel="3" WarningLevel="3"
DebugInformationFormat="3" DebugInformationFormat="3"
ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h" ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h"
@ -259,7 +263,7 @@
/> />
<Tool <Tool
Name="VCLibrarianTool" Name="VCLibrarianTool"
OutputFile="$(OutDir)\zlibmt.lib" OutputFile="$(OutDir)\zlibmtx64.lib"
/> />
<Tool <Tool
Name="VCALinkTool" Name="VCALinkTool"
@ -307,6 +311,7 @@
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(OutDir)\zlibdmtu.pdb"
WarningLevel="3" WarningLevel="3"
DebugInformationFormat="4" DebugInformationFormat="4"
ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h" ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h"
@ -372,6 +377,7 @@
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(OutDir)\zlibdmtux64.pdb"
WarningLevel="3" WarningLevel="3"
DebugInformationFormat="3" DebugInformationFormat="3"
ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h" ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h"
@ -437,6 +443,7 @@
RuntimeLibrary="0" RuntimeLibrary="0"
EnableFunctionLevelLinking="true" EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(OutDir)\zlibmtu.pdb"
WarningLevel="3" WarningLevel="3"
DebugInformationFormat="3" DebugInformationFormat="3"
ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h" ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h"
@ -502,6 +509,7 @@
RuntimeLibrary="0" RuntimeLibrary="0"
EnableFunctionLevelLinking="true" EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0" UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(OutDir)\zlibmtux64.pdb"
WarningLevel="3" WarningLevel="3"
DebugInformationFormat="3" DebugInformationFormat="3"
ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h" ForcedIncludeFiles="$(SolutionDir)..\_tfwopen.h"