win32-when being run from a subdirectory of %temp%, store user files in local appdata, in effort to shut up remaining pokemon gamers running desmume from zipfiles.
This commit is contained in:
parent
fa5d62b740
commit
2bd54afffb
|
@ -144,6 +144,12 @@ public:
|
||||||
p = pathToModule + lstrlen(pathToModule);
|
p = pathToModule + lstrlen(pathToModule);
|
||||||
while (p >= pathToModule && *p != DIRECTORY_DELIMITER_CHAR) p--;
|
while (p >= pathToModule && *p != DIRECTORY_DELIMITER_CHAR) p--;
|
||||||
if (++p >= pathToModule) *p = 0;
|
if (++p >= pathToModule) *p = 0;
|
||||||
|
|
||||||
|
extern char* _hack_alternateModulePath;
|
||||||
|
if(_hack_alternateModulePath)
|
||||||
|
{
|
||||||
|
strcpy(pathToModule,_hack_alternateModulePath);
|
||||||
|
}
|
||||||
#elif defined(DESMUME_COCOA)
|
#elif defined(DESMUME_COCOA)
|
||||||
std::string pathStr = Path::GetFileDirectoryPath(path);
|
std::string pathStr = Path::GetFileDirectoryPath(path);
|
||||||
|
|
||||||
|
@ -383,25 +389,15 @@ public:
|
||||||
|
|
||||||
enum R4Format
|
enum R4Format
|
||||||
{
|
{
|
||||||
#if defined(_WINDOWS) && !defined(WXPORT)
|
R4_CHEAT_DAT = 0,
|
||||||
R4_CHEAT_DAT = IDC_R4TYPE1,
|
R4_USRCHEAT_DAT = 1
|
||||||
R4_USRCHEAT_DAT = IDC_R4TYPE2
|
|
||||||
#else
|
|
||||||
R4_CHEAT_DAT,
|
|
||||||
R4_USRCHEAT_DAT
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
R4Format r4Format;
|
R4Format r4Format;
|
||||||
|
|
||||||
enum ImageFormat
|
enum ImageFormat
|
||||||
{
|
{
|
||||||
#if defined(_WINDOWS) && !defined(WXPORT)
|
PNG = 0,
|
||||||
PNG = IDC_PNG,
|
BMP = 1
|
||||||
BMP = IDC_BMP
|
|
||||||
#else
|
|
||||||
PNG,
|
|
||||||
BMP
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ImageFormat currentimageformat;
|
ImageFormat currentimageformat;
|
||||||
|
|
|
@ -147,8 +147,10 @@ BOOL PathSettings_OnInitDialog(HWND hDlg, HWND hwndFocus, LPARAM lParam)
|
||||||
CheckDlgButton(hDlg, IDC_USELASTVISIT, (path.savelastromvisit) ? BST_CHECKED : BST_UNCHECKED);
|
CheckDlgButton(hDlg, IDC_USELASTVISIT, (path.savelastromvisit) ? BST_CHECKED : BST_UNCHECKED);
|
||||||
CheckDlgButton(hDlg, IDC_ASSOCIATE, (associate) ? BST_CHECKED : BST_UNCHECKED);
|
CheckDlgButton(hDlg, IDC_ASSOCIATE, (associate) ? BST_CHECKED : BST_UNCHECKED);
|
||||||
CheckDlgButton(hDlg, IDC_AUTOLOADLUA, (autoLoadLua) ? BST_CHECKED : BST_UNCHECKED);
|
CheckDlgButton(hDlg, IDC_AUTOLOADLUA, (autoLoadLua) ? BST_CHECKED : BST_UNCHECKED);
|
||||||
CheckRadioButton(hDlg, IDC_PNG, IDC_BMP, (int)path.imageformat());
|
static const int imageFormatMap[] = { IDC_PNG, IDC_BMP };
|
||||||
CheckRadioButton(hDlg, IDC_R4TYPE1, IDC_R4TYPE2, (int)path.r4Format);
|
static const int r4TypeMap[] = { IDC_R4TYPE1, IDC_R4TYPE2 };
|
||||||
|
CheckRadioButton(hDlg, IDC_PNG, IDC_BMP, imageFormatMap[(int)path.imageformat()]);
|
||||||
|
CheckRadioButton(hDlg, IDC_R4TYPE1, IDC_R4TYPE2, r4TypeMap[(int)path.r4Format]);
|
||||||
|
|
||||||
// IDC_FORMATEDIT setup
|
// IDC_FORMATEDIT setup
|
||||||
SetDlgItemText(hDlg, IDC_FORMATEDIT, path.screenshotFormat);
|
SetDlgItemText(hDlg, IDC_FORMATEDIT, path.screenshotFormat);
|
||||||
|
|
|
@ -15,21 +15,59 @@
|
||||||
along with the this software. If not, see <http://www.gnu.org/licenses/>.
|
along with the this software. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
#include "path.h"
|
||||||
#include "winutil.h"
|
#include "winutil.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <windef.h>
|
#include <windef.h>
|
||||||
|
#include <ShlObj.h>
|
||||||
|
|
||||||
|
|
||||||
char IniName[MAX_PATH];
|
char IniName[MAX_PATH];
|
||||||
|
|
||||||
|
char* _hack_alternateModulePath;
|
||||||
|
|
||||||
|
|
||||||
|
static char vPath[MAX_PATH*2], *szPath;
|
||||||
|
|
||||||
void GetINIPath()
|
void GetINIPath()
|
||||||
{
|
{
|
||||||
char vPath[MAX_PATH], *szPath;
|
|
||||||
/*if (*vPath)
|
bool useModulePath = true;
|
||||||
|
|
||||||
|
//check if desmume is running from the temp directory.
|
||||||
|
{
|
||||||
|
//DebugBreak();
|
||||||
|
wchar_t tempPath[MAX_PATH];
|
||||||
|
GetTempPathW(MAX_PATH,tempPath);
|
||||||
|
wchar_t modulePath[MAX_PATH];
|
||||||
|
GetModuleFileNameW(NULL, modulePath, MAX_PATH);
|
||||||
|
if(!_wcsnicmp(tempPath,modulePath,wcslen(tempPath)))
|
||||||
|
{
|
||||||
|
//running from temp dir
|
||||||
|
|
||||||
|
//decided not to warn user
|
||||||
|
//GetPrivateProfileBool("General","Temp Directory Warning", false, IniName))
|
||||||
|
//MessageBox(NULL,"You are running DeSmuME from your temp directory, probably by running straight from an archive instead of dearchiving to your disk manually......
|
||||||
|
|
||||||
|
//use an alternate path
|
||||||
|
useModulePath = false;
|
||||||
|
static char userpath[MAX_PATH];
|
||||||
|
SHGetFolderPath(NULL,CSIDL_LOCAL_APPDATA,NULL,0,userpath);
|
||||||
|
_snprintf(vPath,MAX_PATH,"%s\\%s",userpath,"DeSmuME");
|
||||||
szPath = vPath;
|
szPath = vPath;
|
||||||
else
|
_hack_alternateModulePath = szPath;
|
||||||
{*/
|
|
||||||
|
//not so sure about this.. but lets go for it.
|
||||||
|
SetCurrentDirectory(userpath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(useModulePath)
|
||||||
|
{
|
||||||
char *p;
|
char *p;
|
||||||
ZeroMemory(vPath, sizeof(vPath));
|
ZeroMemory(vPath, sizeof(vPath));
|
||||||
GetModuleFileName(NULL, vPath, sizeof(vPath));
|
GetModuleFileName(NULL, vPath, sizeof(vPath));
|
||||||
|
@ -37,7 +75,7 @@ void GetINIPath()
|
||||||
while (p >= vPath && *p != '\\') p--;
|
while (p >= vPath && *p != '\\') p--;
|
||||||
if (++p >= vPath) *p = 0;
|
if (++p >= vPath) *p = 0;
|
||||||
szPath = vPath;
|
szPath = vPath;
|
||||||
//}
|
}
|
||||||
if (strlen(szPath) + strlen("\\desmume.ini") < MAX_PATH)
|
if (strlen(szPath) + strlen("\\desmume.ini") < MAX_PATH)
|
||||||
{
|
{
|
||||||
sprintf(IniName, "%s\\desmume.ini",szPath);
|
sprintf(IniName, "%s\\desmume.ini",szPath);
|
||||||
|
@ -47,6 +85,8 @@ void GetINIPath()
|
||||||
{
|
{
|
||||||
memset(IniName,0,MAX_PATH) ;
|
memset(IniName,0,MAX_PATH) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FCEUD_MakePathDirs(IniName);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PreventScreensaver()
|
void PreventScreensaver()
|
||||||
|
|
Loading…
Reference in New Issue