diff --git a/Source/Core/Common/Src/CommonPaths.h b/Source/Core/Common/Src/CommonPaths.h index 4441cfb8d7..decf2aef97 100644 --- a/Source/Core/Common/Src/CommonPaths.h +++ b/Source/Core/Common/Src/CommonPaths.h @@ -106,6 +106,7 @@ // Files in the directory returned by GetUserPath(D_DUMP_IDX) #define RAM_DUMP "ram.raw" #define ARAM_DUMP "aram.raw" +#define FAKEVMEM_DUMP "fakevmem.raw" // Sys files #define TOTALDB "totaldb.dsy" diff --git a/Source/Core/Common/Src/FileUtil.cpp b/Source/Core/Common/Src/FileUtil.cpp index 6dd800b723..4650c6e1ba 100644 --- a/Source/Core/Common/Src/FileUtil.cpp +++ b/Source/Core/Common/Src/FileUtil.cpp @@ -682,6 +682,7 @@ std::string &GetUserPath(const unsigned int DirIDX, const std::string &newPath) paths[F_WIISYSCONF_IDX] = paths[D_WIISYSCONF_IDX] + WII_SYSCONF; paths[F_RAMDUMP_IDX] = paths[D_DUMP_IDX] + RAM_DUMP; paths[F_ARAMDUMP_IDX] = paths[D_DUMP_IDX] + ARAM_DUMP; + paths[F_FAKEVMEMDUMP_IDX] = paths[D_DUMP_IDX] + FAKEVMEM_DUMP; paths[F_GCSRAM_IDX] = paths[D_GCUSER_IDX] + GC_SRAM; } diff --git a/Source/Core/Common/Src/FileUtil.h b/Source/Core/Common/Src/FileUtil.h index 5c8ba2186e..9134bcf44e 100644 --- a/Source/Core/Common/Src/FileUtil.h +++ b/Source/Core/Common/Src/FileUtil.h @@ -58,6 +58,7 @@ enum { F_WIISYSCONF_IDX, F_RAMDUMP_IDX, F_ARAMDUMP_IDX, + F_FAKEVMEMDUMP_IDX, F_GCSRAM_IDX, NUM_PATH_INDICES }; diff --git a/Source/Core/Core/Src/HW/Memmap.h b/Source/Core/Core/Src/HW/Memmap.h index 60e038545d..42ceb737ca 100644 --- a/Source/Core/Core/Src/HW/Memmap.h +++ b/Source/Core/Core/Src/HW/Memmap.h @@ -55,6 +55,7 @@ extern u8 *base; extern u8 *m_pRAM; extern u8 *m_pEXRAM; extern u8 *m_pL1Cache; +extern u8 *m_pVirtualFakeVMEM; enum { diff --git a/Source/Core/DolphinWX/Src/Debugger/MemoryWindow.cpp b/Source/Core/DolphinWX/Src/Debugger/MemoryWindow.cpp index 160066b1b5..5673d7b7c1 100644 --- a/Source/Core/DolphinWX/Src/Debugger/MemoryWindow.cpp +++ b/Source/Core/DolphinWX/Src/Debugger/MemoryWindow.cpp @@ -45,6 +45,7 @@ enum IDM_SETVALBUTTON, IDM_DUMP_MEMORY, IDM_DUMP_MEM2, + IDM_DUMP_FAKEVMEM, IDM_VALBOX, IDM_U8, IDM_U16, @@ -61,6 +62,7 @@ BEGIN_EVENT_TABLE(CMemoryWindow, wxPanel) EVT_BUTTON(IDM_SETVALBUTTON, CMemoryWindow::SetMemoryValue) EVT_BUTTON(IDM_DUMP_MEMORY, CMemoryWindow::OnDumpMemory) EVT_BUTTON(IDM_DUMP_MEM2, CMemoryWindow::OnDumpMem2) + EVT_BUTTON(IDM_DUMP_FAKEVMEM, CMemoryWindow::OnDumpFakeVMEM) EVT_CHECKBOX(IDM_U8, CMemoryWindow::U8) EVT_CHECKBOX(IDM_U16, CMemoryWindow::U16) EVT_CHECKBOX(IDM_U32, CMemoryWindow::U32) @@ -96,6 +98,9 @@ CMemoryWindow::CMemoryWindow(wxWindow* parent, wxWindowID id, sizerRight->Add(new wxButton(this, IDM_DUMP_MEMORY, _("&Dump MRAM"))); sizerRight->Add(new wxButton(this, IDM_DUMP_MEM2, _("&Dump EXRAM"))); + if (SConfig::GetInstance().m_LocalCoreStartupParameter.iTLBHack == 1) + sizerRight->Add(new wxButton(this, IDM_DUMP_FAKEVMEM, _("&Dump FakeVMEM"))); + wxStaticBoxSizer* sizerSearchType = new wxStaticBoxSizer(wxVERTICAL, this, _("Search")); sizerSearchType->Add(btnSearch = new wxButton(this, IDM_SEARCH, _("Search"))); @@ -256,6 +261,12 @@ void CMemoryWindow::OnDumpMem2( wxCommandEvent& event ) } } +// Write fake vmem to file +void CMemoryWindow::OnDumpFakeVMEM( wxCommandEvent& event ) +{ + DumpArray(File::GetUserPath(F_FAKEVMEMDUMP_IDX), Memory::m_pVirtualFakeVMEM, Memory::FAKEVMEM_SIZE); +} + void CMemoryWindow::U8(wxCommandEvent& event) { chk16->SetValue(0); diff --git a/Source/Core/DolphinWX/Src/Debugger/MemoryWindow.h b/Source/Core/DolphinWX/Src/Debugger/MemoryWindow.h index 838879ee9f..f4237f2ca0 100644 --- a/Source/Core/DolphinWX/Src/Debugger/MemoryWindow.h +++ b/Source/Core/DolphinWX/Src/Debugger/MemoryWindow.h @@ -79,6 +79,7 @@ class CMemoryWindow void SetMemoryValue(wxCommandEvent& event); void OnDumpMemory(wxCommandEvent& event); void OnDumpMem2(wxCommandEvent& event); + void OnDumpFakeVMEM(wxCommandEvent& event); }; #endif /*MEMORYWINDOW_*/