Update win32-dev branch to 1.52fix4

This commit is contained in:
OV2 2010-09-25 17:52:32 +02:00
parent d1666860e0
commit dec64a5d80
17 changed files with 141 additions and 162 deletions

View File

@ -266,6 +266,7 @@ inline uint8 S9xGetByte (uint32 Address)
inline uint16 S9xGetWord (uint32 Address, enum s9xwrap_t w = WRAP_NONE) inline uint16 S9xGetWord (uint32 Address, enum s9xwrap_t w = WRAP_NONE)
{ {
uint16 ret;
uint32 mask = MEMMAP_MASK & (w == WRAP_PAGE ? 0xff : (w == WRAP_BANK ? 0xffff : 0xffffff)); uint32 mask = MEMMAP_MASK & (w == WRAP_PAGE ? 0xff : (w == WRAP_BANK ? 0xffff : 0xffffff));
if ((Address & mask) == mask) if ((Address & mask) == mask)
{ {
@ -309,7 +310,8 @@ inline uint16 S9xGetWord (uint32 Address, enum s9xwrap_t w = WRAP_NONE)
switch ((pint) GetAddress) switch ((pint) GetAddress)
{ {
case CMemory::MAP_CPU: case CMemory::MAP_CPU:
return (S9xGetCPU(Address & 0xffff) | (S9xGetCPU((Address + 1) & 0xffff) << 8)); ret = S9xGetCPU(Address & 0xffff);
return (ret | (S9xGetCPU((Address + 1) & 0xffff) << 8));
case CMemory::MAP_PPU: case CMemory::MAP_PPU:
if (CPU.InDMAorHDMA) if (CPU.InDMAorHDMA)
@ -317,8 +319,9 @@ inline uint16 S9xGetWord (uint32 Address, enum s9xwrap_t w = WRAP_NONE)
OpenBus = S9xGetByte(Address); OpenBus = S9xGetByte(Address);
return (OpenBus | (S9xGetByte(Address + 1) << 8)); return (OpenBus | (S9xGetByte(Address + 1) << 8));
} }
return (S9xGetPPU(Address & 0xffff) | (S9xGetPPU((Address + 1) & 0xffff) << 8)); ret = S9xGetPPU(Address & 0xffff);
return (ret | (S9xGetPPU((Address + 1) & 0xffff) << 8));
case CMemory::MAP_LOROM_SRAM: case CMemory::MAP_LOROM_SRAM:
case CMemory::MAP_SA1RAM: case CMemory::MAP_SA1RAM:
@ -347,28 +350,36 @@ inline uint16 S9xGetWord (uint32 Address, enum s9xwrap_t w = WRAP_NONE)
return (READ_WORD(Memory.BWRAM + ((Address & 0x7fff) - 0x6000))); return (READ_WORD(Memory.BWRAM + ((Address & 0x7fff) - 0x6000)));
case CMemory::MAP_DSP: case CMemory::MAP_DSP:
return (S9xGetDSP(Address & 0xffff) | (S9xGetDSP((Address + 1) & 0xffff) << 8)); ret = S9xGetDSP(Address & 0xffff);
return (ret | (S9xGetDSP((Address + 1) & 0xffff) << 8));
case CMemory::MAP_SPC7110_ROM: case CMemory::MAP_SPC7110_ROM:
return (S9xGetSPC7110Byte(Address) | (S9xGetSPC7110Byte(Address + 1) << 8)); ret = S9xGetSPC7110Byte(Address);
return (ret | (S9xGetSPC7110Byte(Address + 1) << 8));
case CMemory::MAP_SPC7110_DRAM: case CMemory::MAP_SPC7110_DRAM:
return (S9xGetSPC7110(0x4800) | (S9xGetSPC7110(0x4800) << 8)); ret = S9xGetSPC7110(0x4800);
return (ret | (S9xGetSPC7110(0x4800) << 8));
case CMemory::MAP_C4: case CMemory::MAP_C4:
return (S9xGetC4(Address & 0xffff) | (S9xGetC4((Address + 1) & 0xffff) << 8)); ret = S9xGetC4(Address & 0xffff);
return (ret | (S9xGetC4((Address + 1) & 0xffff) << 8));
case CMemory::MAP_OBC_RAM: case CMemory::MAP_OBC_RAM:
return (S9xGetOBC1(Address & 0xffff) | (S9xGetOBC1((Address + 1) & 0xffff) << 8)); ret = S9xGetOBC1(Address & 0xffff);
return (ret | (S9xGetOBC1((Address + 1) & 0xffff) << 8));
case CMemory::MAP_SETA_DSP: case CMemory::MAP_SETA_DSP:
return (S9xGetSetaDSP(Address) | (S9xGetSetaDSP(Address + 1) << 8)); ret = S9xGetSetaDSP(Address);
return (ret | (S9xGetSetaDSP(Address + 1) << 8));
case CMemory::MAP_SETA_RISC: case CMemory::MAP_SETA_RISC:
return (S9xGetST018(Address) | (S9xGetST018(Address + 1) << 8)); ret = S9xGetST018(Address);
return (ret | (S9xGetST018(Address + 1) << 8));
case CMemory::MAP_BSX: case CMemory::MAP_BSX:
return (S9xGetBSX(Address) | (S9xGetBSX(Address + 1) << 8)); ret = S9xGetBSX(Address);
return (ret | (S9xGetBSX(Address + 1) << 8));
case CMemory::MAP_NONE: case CMemory::MAP_NONE:
default: default:

2
port.h
View File

@ -300,6 +300,8 @@ void _makepath (char *, const char *, const char *, const char *, const char *);
#define strncasecmp strnicmp #define strncasecmp strnicmp
void WinDisplayStringFromBottom(const char *string, int linesFromBottom, int pixelsFromLeft, bool allowWrap); void WinDisplayStringFromBottom(const char *string, int linesFromBottom, int pixelsFromLeft, bool allowWrap);
#define S9xDisplayString WinDisplayStringFromBottom #define S9xDisplayString WinDisplayStringFromBottom
void SetInfoDlgColor(unsigned char, unsigned char, unsigned char);
#define SET_UI_COLOR(r,g,b) SetInfoDlgColor(r,g,b)
#endif #endif
#ifdef __DJGPP #ifdef __DJGPP

View File

@ -191,8 +191,6 @@
#include "../filter/hq2x.h" #include "../filter/hq2x.h"
#include "../filter/2xsai.h" #include "../filter/2xsai.h"
#define RenderMethod ((Src.Height > SNES_HEIGHT_EXTENDED || Src.Width == 512) ? RenderMethodHiRes : RenderMethod)
#ifndef max #ifndef max
#define max(a, b) (((a) > (b)) ? (a) : (b)) #define max(a, b) (((a) > (b)) ? (a) : (b))
#endif #endif
@ -345,7 +343,7 @@ void CDirect3D::Render(SSurface Src)
ResetDevice(); ResetDevice();
return; return;
default: default:
DXTRACE_ERR( TEXT("Internal driver error"), hr); DXTRACE_ERR_MSGBOX( TEXT("Internal driver error"), hr);
return; return;
} }
} }
@ -362,8 +360,8 @@ void CDirect3D::Render(SSurface Src)
RenderMethod (Src, Dst, &dstRect); RenderMethod (Src, Dst, &dstRect);
if(!Settings.AutoDisplayMessages) { if(!Settings.AutoDisplayMessages) {
WinSetCustomDisplaySurface((void *)Dst.Surface, Dst.Pitch/2, dstRect.right-dstRect.left, dstRect.bottom-dstRect.top, GetFilterScale(GUI.Scale)); WinSetCustomDisplaySurface((void *)Dst.Surface, Dst.Pitch/2, dstRect.right-dstRect.left, dstRect.bottom-dstRect.top, GetFilterScale(CurrentScale));
S9xDisplayMessages ((uint16*)Dst.Surface, Dst.Pitch/2, dstRect.right-dstRect.left, dstRect.bottom-dstRect.top, GetFilterScale(GUI.Scale)); S9xDisplayMessages ((uint16*)Dst.Surface, Dst.Pitch/2, dstRect.right-dstRect.left, dstRect.bottom-dstRect.top, GetFilterScale(CurrentScale));
} }
drawSurface->UnlockRect(0); drawSurface->UnlockRect(0);

View File

@ -561,11 +561,11 @@ void CDirectDraw::Render(SSurface Src)
if (!GUI.DepthConverted) if (!GUI.DepthConverted)
{ {
SSurface tmp; SSurface tmp;
static BYTE buf [256 * 239 * 4*3*3]; static BYTE buf[SNES_WIDTH * sizeof(uint16) * SNES_HEIGHT_EXTENDED * sizeof(uint16) *4*4];
tmp.Surface = buf; tmp.Surface = buf;
if(GUI.Scale == FILTER_NONE) { if(CurrentScale == FILTER_NONE) {
tmp.Pitch = Src.Pitch; tmp.Pitch = Src.Pitch;
tmp.Width = Src.Width; tmp.Width = Src.Width;
tmp.Height = Src.Height; tmp.Height = Src.Height;
@ -583,8 +583,8 @@ void CDirectDraw::Render(SSurface Src)
} }
if(!Settings.AutoDisplayMessages) { if(!Settings.AutoDisplayMessages) {
WinSetCustomDisplaySurface((void *)Dst.Surface, (Dst.Pitch*8/GUI.ScreenDepth), srcRect.right-srcRect.left, srcRect.bottom-srcRect.top, GetFilterScale(GUI.Scale)); WinSetCustomDisplaySurface((void *)Dst.Surface, (Dst.Pitch*8/GUI.ScreenDepth), srcRect.right-srcRect.left, srcRect.bottom-srcRect.top, GetFilterScale(CurrentScale));
S9xDisplayMessages ((uint16*)Dst.Surface, Dst.Pitch/2, srcRect.right-srcRect.left, srcRect.bottom-srcRect.top, GetFilterScale(GUI.Scale)); S9xDisplayMessages ((uint16*)Dst.Surface, Dst.Pitch/2, srcRect.right-srcRect.left, srcRect.bottom-srcRect.top, GetFilterScale(CurrentScale));
} }
RECT lastRect = SizeHistory [GUI.FlipCounter % GUI.NumFlipFrames]; RECT lastRect = SizeHistory [GUI.FlipCounter % GUI.NumFlipFrames];

View File

@ -202,7 +202,6 @@ CDirectSound::CDirectSound()
bufferSize = 0; bufferSize = 0;
blockSamples = 0; blockSamples = 0;
hTimer = NULL; hTimer = NULL;
hTimerQueue = NULL;
} }
CDirectSound::~CDirectSound() CDirectSound::~CDirectSound()
@ -268,12 +267,6 @@ opened DirectSound in exclusive mode."),
} }
} }
hTimerQueue = CreateTimerQueue();
if(!hTimerQueue) {
DeInitDirectSound();
return false;
}
return (initDone); return (initDone);
} }
@ -292,10 +285,6 @@ void CDirectSound::DeInitDirectSound()
lpDS->Release (); lpDS->Release ();
lpDS = NULL; lpDS = NULL;
} }
if(hTimerQueue) {
DeleteTimerQueueEx(hTimer,NULL);
hTimerQueue = NULL;
}
} }
/* CDirectSound::InitSoundBuffer /* CDirectSound::InitSoundBuffer
@ -371,8 +360,7 @@ deinitializes the DirectSound/temp buffers and stops the mixing timer
void CDirectSound::DeInitSoundBuffer() void CDirectSound::DeInitSoundBuffer()
{ {
if(hTimer) { if(hTimer) {
if(!DeleteTimerQueueTimer(hTimerQueue,hTimer,INVALID_HANDLE_VALUE)) timeKillEvent(hTimer);
DeleteTimerQueueTimer(hTimerQueue,hTimer,INVALID_HANDLE_VALUE);
hTimer = NULL; hTimer = NULL;
} }
if( lpDSB != NULL) if( lpDSB != NULL)
@ -428,8 +416,8 @@ bool CDirectSound::SetupSound()
last_block = blockCount - 1; last_block = blockCount - 1;
hTimer = timeSetEvent (blockTime/2, blockTime/2, SoundTimerCallback, (DWORD_PTR)this, TIME_PERIODIC);
if(!CreateTimerQueueTimer(&hTimer,hTimerQueue,SoundTimerCallback,(void *)this,blockTime/2,blockTime/2,WT_EXECUTEINIOTHREAD)) { if(!hTimer) {
DeInitSoundBuffer(); DeInitSoundBuffer();
return false; return false;
} }
@ -460,6 +448,8 @@ void CDirectSound::MixSound()
HRESULT hResult; HRESULT hResult;
DWORD curr_block; DWORD curr_block;
if(!initDone)
return;
lpDSB->GetCurrentPosition (&play_pos, NULL); lpDSB->GetCurrentPosition (&play_pos, NULL);
@ -509,8 +499,9 @@ void CDirectSound::MixSound()
/* CDirectSound::SoundTimerCallback /* CDirectSound::SoundTimerCallback
Timer callback that tries to mix a new block. Called twice each block. Timer callback that tries to mix a new block. Called twice each block.
*/ */
VOID CALLBACK CDirectSound::SoundTimerCallback(PVOID lpParameter,BOOLEAN TimerOrWaitFired) {
CDirectSound *S9xDirectSound = (CDirectSound *)lpParameter; VOID CALLBACK CDirectSound::SoundTimerCallback(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2) {
CDirectSound *S9xDirectSound = (CDirectSound *)dwUser;
S9xDirectSound->MixSound(); S9xDirectSound->MixSound();
} }

View File

@ -206,10 +206,7 @@ private:
DWORD last_block; // the last block that was mixed DWORD last_block; // the last block that was mixed
bool initDone; // has init been called successfully? bool initDone; // has init been called successfully?
HANDLE hTimerQueue; // handle to the mixing thread DWORD hTimer; // mixing timer
HANDLE hTimer;
volatile bool threadExit; // mixing thread exit signal
bool InitDirectSound (); bool InitDirectSound ();
void DeInitDirectSound(); void DeInitDirectSound();
@ -217,7 +214,7 @@ private:
bool InitSoundBuffer(); bool InitSoundBuffer();
void DeInitSoundBuffer(); void DeInitSoundBuffer();
static VOID CALLBACK CDirectSound::SoundTimerCallback(PVOID lpParameter,BOOLEAN TimerOrWaitFired); static VOID CALLBACK SoundTimerCallback(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2);
void ProcessSound(); void ProcessSound();
void MixSound(); void MixSound();

View File

@ -373,6 +373,7 @@ inline static bool GetFilter32BitSupport(RenderFilter filterID)
case FILTER_SCANLINES: case FILTER_SCANLINES:
case FILTER_TVMODE3X: case FILTER_TVMODE3X:
case FILTER_DOTMATRIX3X: case FILTER_DOTMATRIX3X:
case FILTER_SIMPLE4X:
return true; return true;
default: default:

View File

@ -145,6 +145,7 @@
#define IDC_CLEAR_CHEATS 1126 #define IDC_CLEAR_CHEATS 1126
#define IDC_JPTOGGLE 1126 #define IDC_JPTOGGLE 1126
#define IDC_LOCALVIDMEM 1126 #define IDC_LOCALVIDMEM 1126
#define IDC_VSYNC 1126
#define IDC_CHEAT_DESCRIPTION 1127 #define IDC_CHEAT_DESCRIPTION 1127
#define IDC_KEYBOARD 1127 #define IDC_KEYBOARD 1127
#define IDC_ALLOWLEFTRIGHT 1127 #define IDC_ALLOWLEFTRIGHT 1127

View File

@ -199,7 +199,7 @@ BEGIN
COMBOBOX IDC_FILTERBOX2,217,33,122,90,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_FILTERBOX2,217,33,122,90,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "Resolution",IDC_CURRMODE,187,71,41,8 LTEXT "Resolution",IDC_CURRMODE,187,71,41,8
COMBOBOX IDC_RESOLUTION,234,69,105,95,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_RESOLUTION,234,69,105,95,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Enable Triple Buffering",IDC_DBLBUFFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,85,87,10 CONTROL "Enable Triple Buffering",IDC_DBLBUFFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,86,87,10
CONTROL "Transparency Effects",IDC_TRANS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,113,153,10 CONTROL "Transparency Effects",IDC_TRANS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,113,153,10
CONTROL "Hi Resolution Support",IDC_HIRES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,124,85,10 CONTROL "Hi Resolution Support",IDC_HIRES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,124,85,10
CONTROL "Extend Height of SNES Image",IDC_HEIGHT_EXTEND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,135,111,10 CONTROL "Extend Height of SNES Image",IDC_HEIGHT_EXTEND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,135,111,10
@ -214,6 +214,7 @@ BEGIN
LTEXT "Max skipped frames:",IDC_STATIC,62,126,67,8 LTEXT "Max skipped frames:",IDC_STATIC,62,126,67,8
LTEXT "Amount skipped:",IDC_STATIC,62,144,67,8 LTEXT "Amount skipped:",IDC_STATIC,62,144,67,8
LTEXT "Output Method",IDC_STATIC,10,19,51,11 LTEXT "Output Method",IDC_STATIC,10,19,51,11
CONTROL "VSync",IDC_VSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,300,86,37,10
END END
IDD_CHEATER DIALOGEX 0, 0, 262, 218 IDD_CHEATER DIALOGEX 0, 0, 262, 218

View File

@ -147,10 +147,13 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="3" Optimization="3"
InlineFunctionExpansion="0" InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1" FavorSizeOrSpeed="1"
OmitFramePointers="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories="$(ProjectDir),$(ProjectDir)..\,$(ProjectDir)..\..\,$(ProjectDir)..\..\zLib,$(ProjectDir)..\unzip,$(ProjectDir)..\..\FMOD\api\inc,$(ProjectDir)..\..\libPNG\src,$(ProjectDir)..\snes9x" AdditionalIncludeDirectories="$(ProjectDir),$(ProjectDir)..\,$(ProjectDir)..\..\,$(ProjectDir)..\..\zLib,$(ProjectDir)..\unzip,$(ProjectDir)..\..\FMOD\api\inc,$(ProjectDir)..\..\libPNG\src,$(ProjectDir)..\snes9x"
PreprocessorDefinitions="NDEBUG;HAVE_LIBPNG;SPC700_C;JMA_SUPPORT;SDD1_DECOMP;CORRECT_VRAM_READS;SPC700_SHUTDOWN;CPU_SHUTDOWN;ZLIB;VAR_CYCLES;UNZIP_SUPPORT;EXECUTE_SUPERFX_PER_LINE;__WIN32__;__MSC__;FMODEX_SUPPORT;NEW_COLOUR_BLENDING;USE_OPENGL;NETPLAY_SUPPORT" PreprocessorDefinitions="NDEBUG;HAVE_LIBPNG;SPC700_C;JMA_SUPPORT;SDD1_DECOMP;CORRECT_VRAM_READS;SPC700_SHUTDOWN;CPU_SHUTDOWN;ZLIB;VAR_CYCLES;UNZIP_SUPPORT;EXECUTE_SUPERFX_PER_LINE;__WIN32__;__MSC__;FMODEX_SUPPORT;NEW_COLOUR_BLENDING;NETPLAY_SUPPORT"
StringPooling="true" StringPooling="true"
RuntimeLibrary="0" RuntimeLibrary="0"
StructMemberAlignment="3" StructMemberAlignment="3"

View File

@ -237,18 +237,18 @@ void WinSetDefaultValues ()
GUI.ValidControllerOptions = 0xFFFF; GUI.ValidControllerOptions = 0xFFFF;
GUI.IgnoreNextMouseMove = false; GUI.IgnoreNextMouseMove = false;
GUI.HideMenu = false; //GUI.HideMenu = false;
GUI.window_size.left = 0; /*GUI.window_size.left = 0;
GUI.window_size.right = 524; GUI.window_size.right = 524;
GUI.window_size.top = 0; GUI.window_size.top = 0;
GUI.window_size.bottom = 524; GUI.window_size.bottom = 524;*/
GUI.FullscreenMode.width = 640; /*GUI.FullscreenMode.width = 640;
GUI.FullscreenMode.height = 480; GUI.FullscreenMode.height = 480;
GUI.FullscreenMode.depth = 16; GUI.FullscreenMode.depth = 16;
GUI.Scale = FILTER_NONE; GUI.Scale = FILTER_NONE;
GUI.NextScale = FILTER_NONE; GUI.NextScale = FILTER_NONE;
GUI.ScaleHiRes = FILTER_NONE; GUI.ScaleHiRes = FILTER_NONE;
GUI.NextScaleHiRes = FILTER_NONE; GUI.NextScaleHiRes = FILTER_NONE;*/
GUI.DoubleBuffered = false; GUI.DoubleBuffered = false;
GUI.FullScreen = false; GUI.FullScreen = false;
GUI.Stretch = false; GUI.Stretch = false;
@ -262,29 +262,29 @@ void WinSetDefaultValues ()
WinDeleteRecentGamesList (); WinDeleteRecentGamesList ();
// ROM Options // ROM Options
memset (&Settings, 0, sizeof (Settings)); //memset (&Settings, 0, sizeof (Settings));
Settings.ForceLoROM = false; //Settings.ForceLoROM = false;
Settings.ForceInterleaved = false; //Settings.ForceInterleaved = false;
Settings.ForceNotInterleaved = false; //Settings.ForceNotInterleaved = false;
Settings.ForceInterleaved = false; //Settings.ForceInterleaved = false;
Settings.ForceInterleaved2 = false; //Settings.ForceInterleaved2 = false;
Settings.ForcePAL = false; //Settings.ForcePAL = false;
Settings.ForceNTSC = false; //Settings.ForceNTSC = false;
Settings.ForceHeader = false; //Settings.ForceHeader = false;
Settings.ForceNoHeader = false; //Settings.ForceNoHeader = false;
// Sound options // Sound options
Settings.SoundSync = FALSE; //Settings.SoundSync = FALSE;
Settings.Mute = FALSE; //Settings.Mute = FALSE;
Settings.SoundPlaybackRate = 32000; //Settings.SoundPlaybackRate = 32000;
Settings.SixteenBitSound = TRUE; //Settings.SixteenBitSound = TRUE;
Settings.Stereo = TRUE; //Settings.Stereo = TRUE;
Settings.ReverseStereo = FALSE; //Settings.ReverseStereo = FALSE;
GUI.SoundChannelEnable=255; GUI.SoundChannelEnable=255;
GUI.FAMute = FALSE; //GUI.FAMute = FALSE;
// Tracing options // Tracing options
Settings.TraceDMA = false; Settings.TraceDMA = false;
@ -300,41 +300,41 @@ void WinSetDefaultValues ()
Settings.FrameTime = 16667; Settings.FrameTime = 16667;
// CPU options // CPU options
Settings.HDMATimingHack = 100; //Settings.HDMATimingHack = 100;
Settings.Shutdown = false; //Settings.Shutdown = false;
Settings.ShutdownMaster = false; //Settings.ShutdownMaster = false;
Settings.BlockInvalidVRAMAccess = true; //Settings.BlockInvalidVRAMAccess = true;
Settings.DisableIRQ = false; //Settings.DisableIRQ = false;
Settings.Paused = false; Settings.Paused = false;
Timings.H_Max = SNES_CYCLES_PER_SCANLINE; //Timings.H_Max = SNES_CYCLES_PER_SCANLINE;
Timings.HBlankStart = (256 * Timings.H_Max) / SNES_HCOUNTER_MAX; //Timings.HBlankStart = (256 * Timings.H_Max) / SNES_HCOUNTER_MAX;
Settings.SkipFrames = AUTO_FRAMERATE; //Settings.SkipFrames = AUTO_FRAMERATE;
// ROM image and peripheral options // ROM image and peripheral options
Settings.MultiPlayer5Master = false; Settings.MultiPlayer5Master = false;
Settings.SuperScopeMaster = false; Settings.SuperScopeMaster = false;
Settings.MouseMaster = false; Settings.MouseMaster = false;
Settings.SuperFX = false; //Settings.SuperFX = false;
// SNES graphics options // SNES graphics options
Settings.DisableGraphicWindows = false; //Settings.DisableGraphicWindows = false;
Settings.DisableHDMA = false; //Settings.DisableHDMA = false;
GUI.HeightExtend = false; //GUI.HeightExtend = false;
Settings.DisplayFrameRate = false; //Settings.DisplayFrameRate = false;
// Settings.SixteenBit = true; // Settings.SixteenBit = true;
Settings.Transparency = true; //Settings.Transparency = true;
Settings.SupportHiRes = true; //Settings.SupportHiRes = true;
Settings.AutoDisplayMessages = false; // this port supports text display on post-rendered surface //Settings.AutoDisplayMessages = false; // this port supports text display on post-rendered surface
Settings.DisplayPressedKeys = 0; //Settings.DisplayPressedKeys = 0;
GUI.CurrentSaveSlot = 0; //GUI.CurrentSaveSlot = 0;
Settings.AutoSaveDelay = 15; //Settings.AutoSaveDelay = 15;
Settings.ApplyCheats = true; //Settings.ApplyCheats = true;
Settings.TurboMode = false; //Settings.TurboMode = false;
Settings.TurboSkipFrames = 15; //Settings.TurboSkipFrames = 15;
GUI.TurboModeToggle = true; //GUI.TurboModeToggle = true;
Settings.AutoMaxSkipFrames = 1; //Settings.AutoMaxSkipFrames = 1;
#ifdef NETPLAY_SUPPORT #ifdef NETPLAY_SUPPORT
Settings.Port = 1996; Settings.Port = 1996;
@ -344,11 +344,9 @@ void WinSetDefaultValues ()
NPServer.SendROMImageOnConnect = false; NPServer.SendROMImageOnConnect = false;
#endif #endif
GUI.FreezeFileDir [0] = 0; //GUI.FreezeFileDir [0] = 0;
Settings.TakeScreenshot=false; Settings.TakeScreenshot=false;
Settings.StretchScreenshots=1; //Settings.StretchScreenshots=1;
GUI.EmulatedFullscreen = false;
GUI.Language=0; GUI.Language=0;
} }
@ -892,7 +890,6 @@ void WinPostSave(ConfigFile& conf)
void WinPostLoad(ConfigFile& conf) void WinPostLoad(ConfigFile& conf)
{ {
int i; int i;
GUI.NextScale = GUI.Scale;
if(Settings.DisplayPressedKeys) Settings.DisplayPressedKeys = 2; if(Settings.DisplayPressedKeys) Settings.DisplayPressedKeys = 2;
for(i=0;i<8;i++) Joypad[i+8].Enabled = Joypad[i].Enabled; for(i=0;i<8;i++) Joypad[i+8].Enabled = Joypad[i].Enabled;
if(GUI.MaxRecentGames < 1) GUI.MaxRecentGames = 1; if(GUI.MaxRecentGames < 1) GUI.MaxRecentGames = 1;
@ -975,7 +972,7 @@ void WinRegisterConfigItems()
AddBoolC("Stretch:MaintainAspectRatio", GUI.AspectRatio, true, "prevents stretching from changing the aspect ratio"); AddBoolC("Stretch:MaintainAspectRatio", GUI.AspectRatio, true, "prevents stretching from changing the aspect ratio");
AddUIntC("Stretch:AspectRatioBaseWidth", GUI.AspectWidth, 256, "base width for aspect ratio calculation (AR=AspectRatioBaseWidth/224), default is 256 - set to 299 for 4:3 aspect ratio"); AddUIntC("Stretch:AspectRatioBaseWidth", GUI.AspectWidth, 256, "base width for aspect ratio calculation (AR=AspectRatioBaseWidth/224), default is 256 - set to 299 for 4:3 aspect ratio");
AddBoolC("Stretch:BilinearFilter", GUI.BilinearFilter, true, "allows bilinear filtering of stretching. Depending on your video card and the window size, this may result in a lower framerate."); AddBoolC("Stretch:BilinearFilter", GUI.BilinearFilter, true, "allows bilinear filtering of stretching. Depending on your video card and the window size, this may result in a lower framerate.");
AddBoolC("Stretch:LocalVidMem", GUI.LocalVidMem, true, "determines the location of video memory, if UseVideoMemory = true. May increase or decrease rendering performance, depending on your setup and which filter and stretching options are active."); AddBoolC("Stretch:LocalVidMem", GUI.LocalVidMem, true, "determines the location of video memory in DirectDraw mode. May increase or decrease rendering performance, depending on your setup and which filter and stretching options are active.");
AddBool("Fullscreen:Enabled", GUI.FullScreen, false); AddBool("Fullscreen:Enabled", GUI.FullScreen, false);
AddUInt("Fullscreen:Width", GUI.FullscreenMode.width, 640); AddUInt("Fullscreen:Width", GUI.FullscreenMode.width, 640);
AddUInt("Fullscreen:Height", GUI.FullscreenMode.height, 480); AddUInt("Fullscreen:Height", GUI.FullscreenMode.height, 480);
@ -984,11 +981,11 @@ void WinRegisterConfigItems()
AddBool("Fullscreen:DoubleBuffered", GUI.DoubleBuffered, false); AddBool("Fullscreen:DoubleBuffered", GUI.DoubleBuffered, false);
AddBoolC("Fullscreen:EmulateFullscreen", GUI.EmulateFullscreen, true,"true makes snes9x create a window that spans the entire screen when going fullscreen"); AddBoolC("Fullscreen:EmulateFullscreen", GUI.EmulateFullscreen, true,"true makes snes9x create a window that spans the entire screen when going fullscreen");
AddBoolC("HideMenu", GUI.HideMenu, false, "true to auto-hide the menu bar on startup."); AddBoolC("HideMenu", GUI.HideMenu, false, "true to auto-hide the menu bar on startup.");
AddBoolC("Vsync", GUI.Vsync, false, "true to enable Vsync, only available with Direct3D"); AddBoolC("Vsync", GUI.Vsync, false, "true to enable Vsync");
#undef CATEGORY #undef CATEGORY
#define CATEGORY "Settings" #define CATEGORY "Settings"
AddUIntC("FrameSkip", Settings.SkipFrames, AUTO_FRAMERATE, "200=automatic, 0=none, 1=skip every other, ..."); AddUIntC("FrameSkip", Settings.SkipFrames, AUTO_FRAMERATE, "200=automatic (limits at 50/60 fps), 0=none, 1=skip every other, ...");
AddUIntC("AutoMaxSkipFramesAtOnce", Settings.AutoMaxSkipFrames, 0, "most frames to skip at once to maintain speed, don't set to more than 1 or 2 frames because the skipping algorithm isn't very smart"); AddUIntC("AutoMaxSkipFramesAtOnce", Settings.AutoMaxSkipFrames, 0, "most frames to skip at once to maintain speed in automatic mode, don't set to more than 1 or 2 frames because the skipping algorithm isn't very smart");
AddUIntC("TurboFrameSkip", Settings.TurboSkipFrames, 15, "how many frames to skip when in fast-forward mode"); AddUIntC("TurboFrameSkip", Settings.TurboSkipFrames, 15, "how many frames to skip when in fast-forward mode");
AddUInt("AutoSaveDelay", Settings.AutoSaveDelay, 30); AddUInt("AutoSaveDelay", Settings.AutoSaveDelay, 30);
AddBool2C("SpeedHacks", Settings.ShutdownMaster, false, "on to skip emulating the CPU when it is not being used ... recommended OFF"); AddBool2C("SpeedHacks", Settings.ShutdownMaster, false, "on to skip emulating the CPU when it is not being used ... recommended OFF");
@ -1029,29 +1026,21 @@ void WinRegisterConfigItems()
ADD(25); ADD(26); ADD(27); ADD(28); ADD(29); ADD(30); ADD(31); ADD(32); ADD(25); ADD(26); ADD(27); ADD(28); ADD(29); ADD(30); ADD(31); ADD(32);
assert(MAX_RECENT_GAMES_LIST_SIZE == 32); assert(MAX_RECENT_GAMES_LIST_SIZE == 32);
#undef ADD #undef ADD
AddString("Pack:StarOcean", GUI.StarOceanPack, _MAX_PATH, "");
AddString("Pack:FarEast", GUI.FEOEZPack, _MAX_PATH, "");
AddString("Pack:SFA2NTSC", GUI.SFA2NTSCPack, _MAX_PATH, "");
AddString("Pack:SFA2PAL", GUI.SFA2PALPack, _MAX_PATH, "");
AddString("Pack:Momotarou", GUI.MDHPack, _MAX_PATH, "");
AddString("Pack:SFZ2", GUI.SFZ2Pack, _MAX_PATH, "");
AddString("Pack:ShounenJump", GUI.SJNSPack, _MAX_PATH, "");
AddString("Pack:SPL4", GUI.SPL4Pack, _MAX_PATH, "");
AddString("Rom:MultiCartA", multiRomA, _MAX_PATH, ""); AddString("Rom:MultiCartA", multiRomA, _MAX_PATH, "");
AddString("Rom:MultiCartB", multiRomB, _MAX_PATH, ""); AddString("Rom:MultiCartB", multiRomB, _MAX_PATH, "");
#undef CATEGORY #undef CATEGORY
#define CATEGORY "Sound" #define CATEGORY "Sound"
AddIntC("Sync", Settings.SoundSync, 1, "1 to enable sound sync to CPU, 0 to disable. Necessary for some sounds to be accurate. Not supported unless SoundDriver=0. May cause sound problems on certain setups."); AddIntC("Sync", Settings.SoundSync, 1, "1 to sync emulation to sound output, 0 to disable.");
AddBool2("Stereo", Settings.Stereo, true); AddBool2("Stereo", Settings.Stereo, true);
AddBool("SixteenBitSound", Settings.SixteenBitSound, true); AddBool("SixteenBitSound", Settings.SixteenBitSound, true);
AddUIntC("Rate", Settings.SoundPlaybackRate, 32000, "sound playback quality, in Hz: 1=8000, 2=11025, 3=16000, 4=22050, 5=30000, 6=32000, 7=35000, 8=44100, 9=48000"); AddUIntC("Rate", Settings.SoundPlaybackRate, 32000, "sound playback quality, in Hz");
AddUIntC("InputRate", Settings.SoundInputRate, 31900, ""); AddUIntC("InputRate", Settings.SoundInputRate, 31900, "for each 'Input rate' samples generated by the SNES, 'Playback rate' samples will produced. If you experience crackling you can try to lower this setting.");
AddBoolC("ReverseStereo", Settings.ReverseStereo, false, "true to swap speaker outputs"); AddBoolC("ReverseStereo", Settings.ReverseStereo, false, "true to swap speaker outputs");
AddBoolC("Mute", GUI.Mute, false, "true to mute sound output (does not disable the sound CPU)"); AddBoolC("Mute", GUI.Mute, false, "true to mute sound output (does not disable the sound CPU)");
#undef CATEGORY #undef CATEGORY
#define CATEGORY "Sound\\Win" #define CATEGORY "Sound\\Win"
AddUIntC("SoundDriver", GUI.SoundDriver, 4, "0=Snes9xDirectSound (recommended), 1=fmodDirectSound, 2=fmodWaveSound, 3=fmodA3DSound, 4=XAudio2"); AddUIntC("SoundDriver", GUI.SoundDriver, 4, "0=Snes9xDirectSound, 4=XAudio2 (recommended), 5=FMOD Default, 6=FMOD ASIO, 7=FMOD OpenAL");
AddUIntC("BufferSize", GUI.SoundBufferSize, 64, "sound buffer size - the mixing interval is multiplied by this (and an additional *4 in case of DirectSound) "); AddUIntC("BufferSize", GUI.SoundBufferSize, 64, "sound buffer size in ms - determines the internal and output sound buffer sizes. actual mixing is done every SoundBufferSize/4 samples");
AddBoolC("MuteFrameAdvance", GUI.FAMute, false, "true to prevent Snes9x from outputting sound when the Frame Advance command is in use"); AddBoolC("MuteFrameAdvance", GUI.FAMute, false, "true to prevent Snes9x from outputting sound when the Frame Advance command is in use");
#undef CATEGORY #undef CATEGORY
#define CATEGORY "Controls" #define CATEGORY "Controls"
@ -1059,7 +1048,7 @@ void WinRegisterConfigItems()
#undef CATEGORY #undef CATEGORY
#define CATEGORY "ROM" #define CATEGORY "ROM"
AddBoolC("Cheat", Settings.ApplyCheats, true, "true to allow enabled cheats to be applied"); AddBoolC("Cheat", Settings.ApplyCheats, true, "true to allow enabled cheats to be applied");
AddInvBoolC("Patch", Settings.NoPatch, true, "true to allow IPS patches to be applied (\"soft patching\")"); AddInvBoolC("Patch", Settings.NoPatch, true, "true to allow IPS/UPS patches to be applied (\"soft patching\")");
AddBoolC("BS", Settings.BS, false, "Broadcast Satellaview emulation"); AddBoolC("BS", Settings.BS, false, "Broadcast Satellaview emulation");
AddStringC("Filename", rom_filename, MAX_PATH, "", "filename of ROM to run when Snes9x opens"); AddStringC("Filename", rom_filename, MAX_PATH, "", "filename of ROM to run when Snes9x opens");
#undef CATEGORY #undef CATEGORY

View File

@ -1354,7 +1354,7 @@ void DoAVIClose(int reason)
void DoAVIVideoFrame(SSurface* source_surface, int Width, int Height/*, bool8 sixteen_bit*/) void DoAVIVideoFrame(SSurface* source_surface, int Width, int Height/*, bool8 sixteen_bit*/)
{ {
static uint32 lastFrameCount=0; static uint32 lastFrameCount=0;
if(!GUI.AVIOut || (IPPU.FrameCount==lastFrameCount)) if(!GUI.AVIOut || !avi_buffer || (IPPU.FrameCount==lastFrameCount))
{ {
return; return;
} }

View File

@ -266,8 +266,6 @@ bool8 S9xInitUpdate (void)
return (TRUE); return (TRUE);
} }
#define RenderMethod ((Src.Height > SNES_HEIGHT_EXTENDED || Src.Width == 512) ? RenderMethodHiRes : RenderMethod)
// only necessary for avi recording // only necessary for avi recording
// TODO: check if this can be removed // TODO: check if this can be removed
bool8 S9xContinueUpdate(int Width, int Height) bool8 S9xContinueUpdate(int Width, int Height)
@ -687,6 +685,8 @@ void ConvertDepth (SSurface *src, SSurface *dst, RECT *srect)
void WinDisplayStringFromBottom (const char *string, int linesFromBottom, int pixelsFromLeft, bool allowWrap) void WinDisplayStringFromBottom (const char *string, int linesFromBottom, int pixelsFromLeft, bool allowWrap)
{ {
if(Settings.StopEmulation)
return;
if(Settings.AutoDisplayMessages) { if(Settings.AutoDisplayMessages) {
WinSetCustomDisplaySurface((void *)GFX.Screen, GFX.RealPPL, IPPU.RenderedScreenWidth, IPPU.RenderedScreenHeight, 1); WinSetCustomDisplaySurface((void *)GFX.Screen, GFX.RealPPL, IPPU.RenderedScreenWidth, IPPU.RenderedScreenHeight, 1);
WinDisplayStringInBuffer<uint16>(string, linesFromBottom, pixelsFromLeft, allowWrap); WinDisplayStringInBuffer<uint16>(string, linesFromBottom, pixelsFromLeft, allowWrap);

View File

@ -182,6 +182,10 @@
#include "render.h" #include "render.h"
#include <vector> #include <vector>
#define IsHiRes(x) ((x.Height > SNES_HEIGHT_EXTENDED || x.Width == 512))
#define RenderMethod (IsHiRes(Src) ? RenderMethodHiRes : RenderMethod)
#define CurrentScale (IsHiRes(Src) ? GUI.ScaleHiRes : GUI.Scale)
void WinRefreshDisplay(void); void WinRefreshDisplay(void);
void S9xSetWinPixelFormat (); void S9xSetWinPixelFormat ();
void SwitchToGDI(); void SwitchToGDI();

View File

@ -325,7 +325,7 @@
#define GAMEDEVICE_NUMPADPREFIX "Numpad-%c" #define GAMEDEVICE_NUMPADPREFIX "Numpad-%c"
#define GAMEDEVICE_VK_TAB "Tab" #define GAMEDEVICE_VK_TAB "Tab"
#define GAMEDEVICE_VK_BACK "Backspace" #define GAMEDEVICE_VK_BACK "Backspace"
#define GAMEDEVICE_VK_CLEAR "Delete" #define GAMEDEVICE_VK_CLEAR "Clear"
#define GAMEDEVICE_VK_RETURN "Enter" #define GAMEDEVICE_VK_RETURN "Enter"
#define GAMEDEVICE_VK_LSHIFT "LShift" #define GAMEDEVICE_VK_LSHIFT "LShift"
#define GAMEDEVICE_VK_RSHIFT "RShift" #define GAMEDEVICE_VK_RSHIFT "RShift"

View File

@ -1707,8 +1707,6 @@ LRESULT CALLBACK WinProc(
//end turbo //end turbo
case ID_OPTIONS_DISPLAY: case ID_OPTIONS_DISPLAY:
{ {
int old_scale = GUI.NextScale;
RestoreGUIDisplay (); RestoreGUIDisplay ();
if(GUI.FullScreen) if(GUI.FullScreen)
@ -1717,11 +1715,6 @@ LRESULT CALLBACK WinProc(
SwitchToGDI(); SwitchToGDI();
if (GUI.NextScale != old_scale)
{
UpdateScale((RenderFilter &)old_scale, GUI.NextScale);
}
GUI.ScaleHiRes = GUI.NextScaleHiRes;
RestoreSNESDisplay (); RestoreSNESDisplay ();
S9xGraphicsDeinit(); S9xGraphicsDeinit();
@ -2324,7 +2317,7 @@ LRESULT CALLBACK WinProc(
case WM_EXITMENULOOP: case WM_EXITMENULOOP:
UpdateWindow(GUI.hWnd); UpdateWindow(GUI.hWnd);
//UpdateBackBuffer(); DrawMenuBar(GUI.hWnd);
S9xClearPause (PAUSE_MENU); S9xClearPause (PAUSE_MENU);
break; break;
@ -2333,7 +2326,7 @@ LRESULT CALLBACK WinProc(
CheckMenuStates (); CheckMenuStates ();
SwitchToGDI(); SwitchToGDI();
DrawMenuBar( GUI.hWnd); DrawMenuBar(GUI.hWnd);
break; break;
case WM_CLOSE: { case WM_CLOSE: {
@ -2351,14 +2344,8 @@ LRESULT CALLBACK WinProc(
return (0); return (0);
case WM_PAINT: case WM_PAINT:
{ {
PAINTSTRUCT paint;
BeginPaint (GUI.hWnd, &paint);
// refresh screen // refresh screen
WinRefreshDisplay(); WinRefreshDisplay();
EndPaint (GUI.hWnd, &paint);
break; break;
} }
case WM_SYSCOMMAND: case WM_SYSCOMMAND:
@ -3446,7 +3433,7 @@ int WINAPI WinMain(
DispatchMessage (&msg); DispatchMessage (&msg);
} }
S9xSetSoundMute(Settings.ForcedPause || (Settings.Paused && (!Settings.FrameAdvance || GUI.FAMute))); S9xSetSoundMute(GUI.Mute || Settings.ForcedPause || (Settings.Paused && (!Settings.FrameAdvance || GUI.FAMute)));
} }
#ifdef NETPLAY_SUPPORT #ifdef NETPLAY_SUPPORT
@ -3765,6 +3752,7 @@ static void CheckMenuStates ()
SetMenuItemInfo (GUI.hMenu, ID_FILE_RESET, FALSE, &mii); SetMenuItemInfo (GUI.hMenu, ID_FILE_RESET, FALSE, &mii);
SetMenuItemInfo (GUI.hMenu, ID_CHEAT_ENTER, FALSE, &mii); SetMenuItemInfo (GUI.hMenu, ID_CHEAT_ENTER, FALSE, &mii);
SetMenuItemInfo (GUI.hMenu, ID_CHEAT_SEARCH_MODAL, FALSE, &mii); SetMenuItemInfo (GUI.hMenu, ID_CHEAT_SEARCH_MODAL, FALSE, &mii);
SetMenuItemInfo (GUI.hMenu, IDM_ROM_INFO, FALSE, &mii);
if (GUI.FullScreen) if (GUI.FullScreen)
mii.fState |= MFS_DISABLED; mii.fState |= MFS_DISABLED;
@ -4834,25 +4822,19 @@ int CALLBACK DlgInfoProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
default:strcat(romtext, "Unknown region 15");break; default:strcat(romtext, "Unknown region 15");break;
} }
SendDlgItemMessage(hDlg, IDC_ROM_DATA, WM_SETTEXT, 0, (LPARAM)romtext); SendDlgItemMessage(hDlg, IDC_ROM_DATA, WM_SETTEXT, 0, (LPARAM)romtext);
return true;
break; break;
} }
case WM_CTLCOLORSTATIC: case WM_CTLCOLORSTATIC:
if(GUI.InfoColor!=WIN32_WHITE) if(GetDlgCtrlID((HWND)lParam)==IDC_ROM_DATA && GUI.InfoColor!=WIN32_WHITE)
{ {
SetTextColor((HDC)wParam, GUI.InfoColor); SetTextColor((HDC)wParam, GUI.InfoColor);
SetBkColor((HDC)wParam, RGB(0,0,0)); SetBkColor((HDC)wParam, RGB(0,0,0));
return (BOOL)GetStockObject( BLACK_BRUSH );
} }
return true;break; break;
case WM_PAINT: case WM_PAINT:
{ break;
PAINTSTRUCT ps;
BeginPaint (hDlg, &ps);
EndPaint (hDlg, &ps);
}
return true;
case WM_COMMAND: case WM_COMMAND:
{ {
@ -4863,11 +4845,13 @@ int CALLBACK DlgInfoProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
EndDialog(hDlg, 0); EndDialog(hDlg, 0);
return true; return true;
break; break;
default: return false; break; default: break;
} }
} }
default:return false; default:
break;
} }
return DefWindowProc (hDlg, msg, wParam, lParam);
} }
int CALLBACK DlgAboutProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) int CALLBACK DlgAboutProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
@ -6939,6 +6923,8 @@ int CALLBACK DlgFunky(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
if(GUI.DoubleBuffered) if(GUI.DoubleBuffered)
SendDlgItemMessage(hDlg, IDC_DBLBUFFER, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); SendDlgItemMessage(hDlg, IDC_DBLBUFFER, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
if(GUI.Vsync)
SendDlgItemMessage(hDlg, IDC_VSYNC, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
SendDlgItemMessage(hDlg,IDC_FRAMERATESKIPSLIDER,TBM_SETRANGE,(WPARAM)true,(LPARAM)MAKELONG(0,9)); SendDlgItemMessage(hDlg,IDC_FRAMERATESKIPSLIDER,TBM_SETRANGE,(WPARAM)true,(LPARAM)MAKELONG(0,9));
if(Settings.SkipFrames!=AUTO_FRAMERATE) if(Settings.SkipFrames!=AUTO_FRAMERATE)
SendDlgItemMessage(hDlg,IDC_FRAMERATESKIPSLIDER,TBM_SETPOS,(WPARAM)true,(LPARAM)Settings.SkipFrames); SendDlgItemMessage(hDlg,IDC_FRAMERATESKIPSLIDER,TBM_SETPOS,(WPARAM)true,(LPARAM)Settings.SkipFrames);
@ -7020,7 +7006,7 @@ int CALLBACK DlgFunky(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
} }
} }
SendDlgItemMessage(hDlg,IDC_FILTERBOX,CB_SETCURSEL,(WPARAM)GUI.NextScale,0); SendDlgItemMessage(hDlg,IDC_FILTERBOX,CB_SETCURSEL,(WPARAM)GUI.Scale,0);
UpdateModeComboBox(GetDlgItem(hDlg,IDC_RESOLUTION)); UpdateModeComboBox(GetDlgItem(hDlg,IDC_RESOLUTION));
@ -7248,6 +7234,9 @@ updateFilterBox2:
GUI.HeightExtend = IsDlgButtonChecked(hDlg, IDC_HEIGHT_EXTEND)!=0; GUI.HeightExtend = IsDlgButtonChecked(hDlg, IDC_HEIGHT_EXTEND)!=0;
Settings.AutoDisplayMessages = IsDlgButtonChecked(hDlg, IDC_MESSAGES_IN_IMAGE); Settings.AutoDisplayMessages = IsDlgButtonChecked(hDlg, IDC_MESSAGES_IN_IMAGE);
GUI.DoubleBuffered = (bool)(IsDlgButtonChecked(hDlg, IDC_DBLBUFFER)==BST_CHECKED); GUI.DoubleBuffered = (bool)(IsDlgButtonChecked(hDlg, IDC_DBLBUFFER)==BST_CHECKED);
GUI.Vsync = (bool)(IsDlgButtonChecked(hDlg, IDC_VSYNC
)==BST_CHECKED);
if(IsDlgButtonChecked(hDlg, IDC_AUTOFRAME)) if(IsDlgButtonChecked(hDlg, IDC_AUTOFRAME))
{ {
Settings.SkipFrames=AUTO_FRAMERATE; Settings.SkipFrames=AUTO_FRAMERATE;
@ -7278,15 +7267,11 @@ updateFilterBox2:
WinSaveConfigFile(); WinSaveConfigFile();
if(!GUI.FullScreen || (GUI.FullscreenMode.width >= 512 && GUI.FullscreenMode.height >= 478)) if(GUI.FullScreen && (GUI.FullscreenMode.width < 512 || GUI.FullscreenMode.height < 478))
GUI.NextScale = (RenderFilter)SendDlgItemMessage(hDlg,IDC_FILTERBOX,CB_GETCURSEL,0,0); GUI.Scale = FILTER_NONE;
else
GUI.NextScale = FILTER_NONE;
if(!GUI.FullScreen || (GUI.FullscreenMode.width >= 512 && GUI.FullscreenMode.height >= 478)) if(GUI.FullScreen && (GUI.FullscreenMode.width < 512 || GUI.FullscreenMode.height < 478))
GUI.NextScaleHiRes = GUI.ScaleHiRes; GUI.ScaleHiRes = FILTER_SIMPLE1X;
else
GUI.NextScaleHiRes = FILTER_SIMPLE1X;
EndDialog(hDlg,0); EndDialog(hDlg,0);
WinDisplayApplyChanges(); WinDisplayApplyChanges();
@ -7313,8 +7298,8 @@ updateFilterBox2:
{ {
//UpdateScale(GUI.Scale, prevScale); //UpdateScale(GUI.Scale, prevScale);
GUI.Scale = GUI.NextScale = (RenderFilter)prevScale; GUI.Scale = (RenderFilter)prevScale;
GUI.ScaleHiRes = GUI.NextScaleHiRes = (RenderFilter)prevScaleHiRes; GUI.ScaleHiRes = (RenderFilter)prevScaleHiRes;
GFX.RealPPL = prevPPL; GFX.RealPPL = prevPPL;
GUI.Stretch = prevStretch; GUI.Stretch = prevStretch;
Settings.AutoDisplayMessages = prevAutoDisplayMessages; Settings.AutoDisplayMessages = prevAutoDisplayMessages;

View File

@ -294,9 +294,7 @@ struct sGUI {
int RefreshRate;*/ int RefreshRate;*/
dMode FullscreenMode; dMode FullscreenMode;
RenderFilter Scale; RenderFilter Scale;
RenderFilter NextScale;
RenderFilter ScaleHiRes; RenderFilter ScaleHiRes;
RenderFilter NextScaleHiRes;
bool DoubleBuffered; bool DoubleBuffered;
bool FullScreen; bool FullScreen;
bool Stretch; bool Stretch;
@ -559,8 +557,6 @@ enum
#define WIN32_WHITE RGB(255,255,255) #define WIN32_WHITE RGB(255,255,255)
#define SET_UI_COLOR(r,g,b) SetInfoDlgColor(r,g,b)
/*****************************************************************************/ /*****************************************************************************/
void S9xSetWinPixelFormat (); void S9xSetWinPixelFormat ();