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