diff --git a/Source/Plugins/Plugin_VideoDX9/Plugin_VideoDX9.vcproj b/Source/Plugins/Plugin_VideoDX9/Plugin_VideoDX9.vcproj
index f68a37f956..71b1686904 100644
--- a/Source/Plugins/Plugin_VideoDX9/Plugin_VideoDX9.vcproj
+++ b/Source/Plugins/Plugin_VideoDX9/Plugin_VideoDX9.vcproj
@@ -1296,6 +1296,10 @@
RelativePath=".\Src\Config.h"
>
+
+
diff --git a/Source/Plugins/Plugin_VideoDX9/Src/Config.cpp b/Source/Plugins/Plugin_VideoDX9/Src/Config.cpp
index 0bce470edd..ae474b5a93 100644
--- a/Source/Plugins/Plugin_VideoDX9/Src/Config.cpp
+++ b/Source/Plugins/Plugin_VideoDX9/Src/Config.cpp
@@ -17,6 +17,7 @@
#include "Config.h"
#include "IniFile.h"
+#include "../../../Core/Core/Src/ConfigManager.h" // FIXME
Config g_Config;
diff --git a/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp b/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp
index ca5eeef243..44b7f90915 100644
--- a/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp
+++ b/Source/Plugins/Plugin_VideoDX9/Src/DlgSettings.cpp
@@ -130,19 +130,19 @@ struct TabAdvanced : public W32Util::Tab
Button_SetCheck(GetDlgItem(hDlg,IDC_TEXFMT_CENTER), g_Config.bTexFmtOverlayCenter);
Button_GetCheck(GetDlgItem(hDlg,IDC_TEXFMT_OVERLAY)) ? Button_Enable(GetDlgItem(hDlg,IDC_TEXFMT_CENTER), true) : Button_Enable(GetDlgItem(hDlg,IDC_TEXFMT_CENTER), false);
- SetWindowText(GetDlgItem(hDlg,IDC_TEXDUMPPATH),g_Config.texDumpPath.c_str());
- Edit_LimitText(GetDlgItem(hDlg,IDC_TEXDUMPPATH),255);
+ //SetWindowText(GetDlgItem(hDlg,IDC_TEXDUMPPATH),g_Config.texDumpPath.c_str()); <-- Old method
+ //Edit_LimitText(GetDlgItem(hDlg,IDC_TEXDUMPPATH),255); <-- Old method
}
void Command(HWND hDlg,WPARAM wParam)
{
switch (LOWORD(wParam))
{
- case IDC_BROWSETEXDUMPPATH:
- {
- std::string path = W32Util::BrowseForFolder(hDlg,"Choose texture dump path:");
- SetWindowText(GetDlgItem(hDlg,IDC_TEXDUMPPATH),path.c_str());
- }
- break;
+ // case IDC_BROWSETEXDUMPPATH: <-- Old method
+ // {
+ // std::string path = W32Util::BrowseForFolder(hDlg,"Choose texture dump path:");
+ // SetWindowText(GetDlgItem(hDlg,IDC_TEXDUMPPATH),path.c_str());
+ // }
+ // break;
case IDC_TEXFMT_OVERLAY:
{
Button_GetCheck(GetDlgItem(hDlg,IDC_TEXFMT_OVERLAY)) ? Button_Enable(GetDlgItem(hDlg,IDC_TEXFMT_CENTER), true) : Button_Enable(GetDlgItem(hDlg,IDC_TEXFMT_CENTER), false);
@@ -163,9 +163,9 @@ struct TabAdvanced : public W32Util::Tab
g_Config.bDumpTextures = Button_GetCheck(GetDlgItem(hDlg,IDC_TEXDUMP)) ? true : false;
g_Config.bDumpFrames = Button_GetCheck(GetDlgItem(hDlg,IDC_DUMPFRAMES)) ? true : false;
g_Config.bShowShaderErrors = Button_GetCheck(GetDlgItem(hDlg,IDC_SHOWSHADERERRORS)) ? true : false;
- char temp[MAX_PATH];
- GetWindowText(GetDlgItem(hDlg,IDC_TEXDUMPPATH), temp, MAX_PATH);
- g_Config.texDumpPath = temp;
+ //char temp[MAX_PATH];
+ //GetWindowText(GetDlgItem(hDlg,IDC_TEXDUMPPATH), temp, MAX_PATH); <-- Old method
+ //g_Config.texDumpPath = temp;
}
};
diff --git a/Source/Plugins/Plugin_VideoDX9/Src/Globals.h b/Source/Plugins/Plugin_VideoDX9/Src/Globals.h
new file mode 100644
index 0000000000..43c3030bf2
--- /dev/null
+++ b/Source/Plugins/Plugin_VideoDX9/Src/Globals.h
@@ -0,0 +1,31 @@
+// Copyright (C) 2003 Dolphin Project.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 2.0.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License 2.0 for more details.
+
+// A copy of the GPL 2.0 should have been included with the program.
+// If not, see http://www.gnu.org/licenses/
+
+// Official SVN repository and contact information can be found at
+// http://code.google.com/p/dolphin-emu/
+
+#ifndef _GLOBALS_H_
+#define _GLOBALS_H_
+
+#include "Common.h"
+#include "Config.h"
+#include "main.h"
+
+#include "VideoCommon.h"
+#include "pluginspecs_video.h"
+
+// A global plugin specification
+extern PLUGIN_GLOBALS* globals;
+
+#endif // _GLOBALS_H_
\ No newline at end of file
diff --git a/Source/Plugins/Plugin_VideoDX9/Src/TextureCache.cpp b/Source/Plugins/Plugin_VideoDX9/Src/TextureCache.cpp
index 6f8b79a64f..6497295a88 100644
--- a/Source/Plugins/Plugin_VideoDX9/Src/TextureCache.cpp
+++ b/Source/Plugins/Plugin_VideoDX9/Src/TextureCache.cpp
@@ -17,9 +17,13 @@
#include
-#include "Common.h"
+#include "Globals.h"
#include "Statistics.h"
#include "MemoryUtil.h"
+#include "Hash.h"
+
+#include "CommonPaths.h"
+#include "FileUtil.h"
#include "D3DBase.h"
#include "D3DTexture.h"
@@ -29,8 +33,7 @@
#include "TextureDecoder.h"
#include "TextureCache.h"
-#include "Config.h"
-#include "main.h"
+#include "../../../Core/Core/Src/ConfigManager.h" // FIXME
u8 *TextureCache::temp = NULL;
TextureCache::TexCache TextureCache::textures;
@@ -102,6 +105,7 @@ void TextureCache::Cleanup()
TextureCache::TCacheEntry *TextureCache::Load(int stage, u32 address, int width, int height, int format, int tlutaddr, int tlutfmt)
{
+
if (address == 0)
return NULL;
TexCache::iterator iter = textures.find(address);
@@ -218,11 +222,21 @@ TextureCache::TCacheEntry *TextureCache::Load(int stage, u32 address, int width,
if (g_Config.bDumpTextures)
{ // dump texture to file
- static int counter = 0;
char szTemp[MAX_PATH];
- sprintf(szTemp, "%s\\txt_%04i_%i.png", g_Config.texDumpPath.c_str(), counter++, format);
-
- D3DXSaveTextureToFile(szTemp,D3DXIFF_BMP,entry.texture,0);
+ char szDir[MAX_PATH];
+ bool bCheckedDumpDir = false;
+ sprintf(szDir,"%s/%s",FULL_DUMP_TEXTURES_DIR,((struct SConfig *)globals->config)->m_LocalCoreStartupParameter.GetUniqueID().c_str());
+ if(!bCheckedDumpDir)
+ {
+ if (!File::Exists(szDir) || !File::IsDirectory(szDir))
+ File::CreateDir(szDir);
+
+ bCheckedDumpDir = true;
+ }
+ sprintf(szTemp, "%s/%s_%08x_%i.png",szDir, ((struct SConfig *)globals->config)->m_LocalCoreStartupParameter.GetUniqueID().c_str(), hash_value, format);
+ //sprintf(szTemp, "%s\\txt_%04i_%i.png", g_Config.texDumpPath.c_str(), counter++, format); <-- Old method
+ if (!File::Exists(szTemp))
+ D3DXSaveTextureToFile(szTemp,D3DXIFF_BMP,entry.texture,0);
}
INCSTAT(stats.numTexturesCreated);
diff --git a/Source/Plugins/Plugin_VideoDX9/Src/resource.rc b/Source/Plugins/Plugin_VideoDX9/Src/resource.rc
index 5a05e6291e..cc1a45d493 100644
--- a/Source/Plugins/Plugin_VideoDX9/Src/resource.rc
+++ b/Source/Plugins/Plugin_VideoDX9/Src/resource.rc
@@ -60,14 +60,14 @@ BEGIN
CONTROL "Overlay &Projection Statistics",IDC_OVERLAYPROJSTATS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,42,118,9
CONTROL "Show s&hader compilation errors",IDC_SHOWSHADERERRORS,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,53,127,9
- GROUPBOX "&Data dumping",IDC_STATIC,7,91,192,58
- CONTROL "Dump &textures to:",IDC_TEXDUMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,104,70,9
- EDITTEXT IDC_TEXDUMPPATH,25,116,148,12,ES_AUTOHSCROLL
- PUSHBUTTON "...",IDC_BROWSETEXDUMPPATH,176,116,14,13
- CONTROL "Dump Frames to User/Dump/Frames",IDC_DUMPFRAMES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,132,138,9
- GROUPBOX "Texture Format Overlay",IDC_STATIC,7,156,192,30
- CONTROL "Enable Overlay",IDC_TEXFMT_OVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,168,74,10
- CONTROL "Centered",IDC_TEXFMT_CENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,168,82,10
+ GROUPBOX "&Data dumping",IDC_STATIC,7,91,192,42
+ CONTROL "Dump &textures",IDC_TEXDUMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,104,70,9
+ // EDITTEXT IDC_TEXDUMPPATH,25,116,148,12,ES_AUTOHSCROLL
+ // PUSHBUTTON "...",IDC_BROWSETEXDUMPPATH,176,116,14,13
+ CONTROL "Dump Frames to User/Dump/Frames",IDC_DUMPFRAMES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,116,138,9
+ GROUPBOX "Texture Format Overlay",IDC_STATIC,7,136,192,30
+ CONTROL "Enable Overlay",IDC_TEXFMT_OVERLAY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,148,74,10
+ CONTROL "Centered",IDC_TEXFMT_CENTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,110,148,82,10
END
IDD_ENHANCEMENTS DIALOGEX 0, 0, 207, 175