mirror of https://github.com/snes9xgit/snes9x.git
Update win32-dev branch to 1.52fix4
This commit is contained in:
parent
d1666860e0
commit
dec64a5d80
33
getset.h
33
getset.h
|
@ -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
2
port.h
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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];
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 ();
|
||||||
|
|
Loading…
Reference in New Issue