New jit viewer is starting to work a bit.

This commit is contained in:
Henrik Rydgård committed 2025-10-08 16:59:25 -06:00
1 parent aba2813ea2
commit ff5dea821b
7 files changed
+346 -89

No files matched your search

+3
View File
@@ -461,6 +461,9 @@ JitBlockDebugInfo IRBlockCache::GetBlockDebugInfo(int blockNum) const {
uint32_t start, size;
ir.GetRange(&start, &size);
debugInfo.originalAddress = start; // TODO
if (!Memory::IsValid4AlignedAddress(start)) {
return debugInfo;
}
debugInfo.origDisasm.reserve(((start + size) - start) / 4);
for (u32 addr = start; addr < start + size; addr += 4) {
+1
View File
@@ -2850,6 +2850,7 @@ void ImConfig::SyncConfig(IniFile *ini, bool save) {
sync.Sync("watchOpen", &watchOpen, false);
sync.Sync("paramSFOOpen", &paramSFOOpen, false);
sync.Sync("atracToolOpen", &atracToolOpen, false);
sync.Sync("jitViewerOpen", &jitViewerOpen, false);
for (int i = 0; i < 4; i++) {
char name[64];
snprintf(name, sizeof(name), "memory%dOpen", i + 1);
+129 -29
View File
@@ -8,6 +8,15 @@
#include "Core/MIPS/JitCommon/JitCommon.h"
#include "Core/MIPS/JitCommon/JitState.h"
void ImJitViewerWindow::GoToBlockAtAddr(u32 addr) {
for (auto &block : blockList_) {
if (addr >= block.addr && addr < block.addr + (u32)block.sizeInBytes) {
curBlockNum_ = block.blockNum;
break;
}
}
}
void ImJitViewerWindow::Draw(ImConfig &cfg, ImControl &control) {
ImGui::SetNextWindowSize(ImVec2(500, 400), ImGuiCond_FirstUseEver);
if (!ImGui::Begin("JitViewer", &cfg.jitViewerOpen)) {
@@ -29,17 +38,17 @@ void ImJitViewerWindow::Draw(ImConfig &cfg, ImControl &control) {
ImGui::EndPopup();
}
#if PPSSPP_ARCH(X64)
#if PPSSPP_ARCH(AMD64)
const char *TARGET = "X86-64";
#elif PPSSPP_ARCH(X86)
const char *TARGET = "X86";
#elif PPSSPP_ARCH(ARM64)
const char *TARGET = "ARM64";
#elif PPSSPP_ARCH(ARM32)
#elif PPSSPP_ARCH(ARM)
const char *TARGET = "ARM32";
#else
cosnt char *TARGET = "TARGET";
const char *TARGET = "TARGET";
#endif
// Three or four columns: One table for blocks that can be sorted in various ways,
@@ -49,7 +58,75 @@ void ImJitViewerWindow::Draw(ImConfig &cfg, ImControl &control) {
numColumns = 4;
}
if (ImGui::BeginTable("columns", 3, ImGuiTableFlags_RowBg | ImGuiTableFlags_BordersH | ImGuiTableFlags_Resizable)) {
JitBlockCacheDebugInterface *blockCacheDebug = MIPSComp::jit->GetBlockCacheDebugInterface();
if (core_ != (int)core) {
// Core changed, need to refresh.
refresh_ = true;
core_ = (int)core;
}
if (sortSpecs_ && sortSpecs_->SpecsDirty) {
refresh_ = true;
sortSpecs_->SpecsDirty = false;
}
// If the CPU moved, and we're not currently running, update the cached blocklist.
const CoreState coreStateCached = coreState;
if (coreStateCached == CORE_STEPPING_CPU || coreStateCached == CORE_NEXTFRAME || refresh_) {
const int cpuStepCount = Core_GetSteppingCounter();
if (lastCpuStepCount_ != cpuStepCount || refresh_) {
refresh_ = false;
lastCpuStepCount_ = cpuStepCount;
blockList_.clear();
curBlockNum_ = -1;
const int blockCount = blockCacheDebug->GetNumBlocks();
blockList_.reserve(blockCount);
INFO_LOG(Log::Debugger, "Updating JIT block list... %d blocks", blockCacheDebug->GetNumBlocks());
for (int i = 0; i < blockCount; i++) {
if (!blockCacheDebug->IsValidBlock(i)) {
continue;
}
JitBlockMeta meta = blockCacheDebug->GetBlockMeta(i);
if (!meta.valid) {
continue;
}
CachedBlock cb;
cb.addr = meta.addr;
cb.sizeInBytes = meta.sizeInBytes;
cb.blockNum = i;
blockList_.push_back(cb);
}
std::sort(blockList_.begin(), blockList_.end(), [this](const CachedBlock &a, const CachedBlock &b) {
if (!sortSpecs_ || sortSpecs_->SpecsCount <= 0) {
return a.addr < b.addr;
}
const ImGuiTableColumnSortSpecs *spec = &sortSpecs_->Specs[0];
int delta = 0;
if (spec->ColumnUserID == 0) {
delta = (int)a.blockNum - (int)b.blockNum;
} else
if (spec->ColumnUserID == 1) {
delta = (int)a.addr - (int)b.addr;
} else if (spec->ColumnUserID == 2) {
delta = a.sizeInBytes - b.sizeInBytes;
}
if (delta == 0) {
return a.addr < b.addr;
}
if (spec->SortDirection == ImGuiSortDirection_Ascending) {
return delta < 0;
} else {
return delta > 0;
}
});
}
} else {
ImGui::Text("Pause to update block list");
}
if (ImGui::BeginTable("columns", numColumns, ImGuiTableFlags_RowBg | ImGuiTableFlags_BordersH | ImGuiTableFlags_Resizable)) {
ImGui::TableSetupColumn("Blocks");
ImGui::TableSetupColumn("MIPS");
if (core == CPUCore::JIT_IR || core == CPUCore::IR_INTERPRETER) {
@@ -64,45 +141,68 @@ void ImJitViewerWindow::Draw(ImConfig &cfg, ImControl &control) {
ImGui::TableNextRow();
ImGui::TableNextColumn();
ImGui::Text("Blocklist");
JitBlockCacheDebugInterface *blockCacheDebug = MIPSComp::jit->GetBlockCacheDebugInterface();
int64_t sumTotalNanos = 0;
int64_t sumExecutions = 0;
bool profiling = blockCacheDebug->SupportsProfiling();
for (int i = 0; i < blockCacheDebug->GetNumBlocks(); i++) {
if (!blockCacheDebug->IsValidBlock(i)) {
continue;
// For separate scrolling.
ImGui::BeginChild("LeftPane", ImVec2(0, 0), true, ImGuiWindowFlags_HorizontalScrollbar);
if (ImGui::BeginTable("blocks", 3, ImGuiTableFlags_Sortable | ImGuiTableFlags_Resizable)) {
ImGui::TableSetupColumn("Num", 0, 0, 0);
ImGui::TableSetupColumn("Addr", 0, 0, 1);
ImGui::TableSetupColumn("Size", 0, 0, 2);
ImGui::TableHeadersRow();
sortSpecs_ = ImGui::TableGetSortSpecs();
for (int i = 0; i < (int)blockList_.size(); i++) {
ImGui::TableNextRow();
ImGui::TableNextColumn();
char label[32];
snprintf(label, sizeof(label), "%d", blockList_[i].blockNum);
if (ImGui::Selectable(label, blockList_[i].blockNum == curBlockNum_, ImGuiSelectableFlags_SpanAllColumns)) {
curBlockNum_ = blockList_[i].blockNum;
if (curBlockNum_ >= 0 && curBlockNum_ < blockCacheDebug->GetNumBlocks()) {
debugInfo_ = blockCacheDebug->GetBlockDebugInfo(curBlockNum_);
}
}
ImGui::TableNextColumn();
ImGui::Text("%08x", blockList_[i].addr);
ImGui::TableNextColumn();
ImGui::Text("%d", blockList_[i].sizeInBytes);
}
JitBlockMeta meta = blockCacheDebug->GetBlockMeta(i);
ImGui::Text("%08x %d", meta.addr, meta.sizeInBytes);
ImGui::EndTable();
}
ImGui::EndChild();
ImGui::TableNextColumn();
ImGui::Text("MIPS");
ImGui::BeginChild("MIPSPane", ImVec2(0, 0), true, ImGuiWindowFlags_HorizontalScrollbar);
for (const auto &line : debugInfo_.origDisasm) {
ImGui::TextUnformatted(line.c_str());
}
ImGui::EndChild();
if (core == CPUCore::JIT_IR || core == CPUCore::IR_INTERPRETER) {
ImGui::TableNextColumn();
ImGui::Text("IR");
ImGui::BeginChild("IRPane", ImVec2(0, 0), true, ImGuiWindowFlags_HorizontalScrollbar);
// TODO : When we have both target and IR, need a third column.
for (const auto &line : debugInfo_.irDisasm) {
ImGui::TextUnformatted(line.c_str());
}
ImGui::EndChild();
}
if (core == CPUCore::JIT_IR || core == CPUCore::JIT) {
ImGui::TableNextColumn();
ImGui::Text("Target asm");
ImGui::BeginChild("TargetPane", ImVec2(0, 0), true, ImGuiWindowFlags_HorizontalScrollbar);
for (const auto &line : debugInfo_.targetDisasm) {
ImGui::TextUnformatted(line.c_str());
}
ImGui::EndChild();
}
/*
if (ImGui::BeginTable("blocks", 1, ImGuiTableFlags_RowBg | ImGuiTableFlags_BordersH | ImGuiTableFlags_ScrollY)) {
for (auto &block : blocks) {
char label[64];
snprintf(label, sizeof(label), "0x%08X", block.startAddress);
if (ImGui::Selectable(label, false, ImGuiSelectableFlags_SpanAllColumns)) {
", 3)
*/
ImGui::EndTable();
}
+21
View File
@@ -5,6 +5,7 @@
#include "ext/imgui/imgui.h"
#include "Core/Debugger/DebugInterface.h"
#include "Core/MIPS/JitCommon/JitBlockCache.h"
struct ImConfig;
struct ImControl;
@@ -15,4 +16,24 @@ public:
const char *Title() const {
return "JIT Viewer";
}
void GoToBlockAtAddr(u32 addr);
private:
struct CachedBlock {
u32 addr;
int sizeInBytes;
int blockNum;
};
std::vector<CachedBlock> blockList_;
int curBlockNum_ = -1;
int lastCpuStepCount_ = -1;
int blockSortColumn_ = 0;
bool refresh_ = false;
int core_ = -1;
ImGuiTableSortSpecs *sortSpecs_ = nullptr;
JitBlockDebugInfo debugInfo_;
};
+2
View File
@@ -107,6 +107,7 @@
<ClInclude Include="..\..\UI\ImDebugger\ImDebugger.h" />
<ClInclude Include="..\..\UI\ImDebugger\ImDisasmView.h" />
<ClInclude Include="..\..\UI\ImDebugger\ImGe.h" />
<ClInclude Include="..\..\UI\ImDebugger\ImJitViewer.h" />
<ClInclude Include="..\..\UI\ImDebugger\ImMemView.h" />
<ClInclude Include="..\..\UI\ImDebugger\ImStructViewer.h" />
<ClInclude Include="..\..\UI\InstallZipScreen.h" />
@@ -157,6 +158,7 @@
<ClCompile Include="..\..\UI\ImDebugger\ImDebugger.cpp" />
<ClCompile Include="..\..\UI\ImDebugger\ImDisasmView.cpp" />
<ClCompile Include="..\..\UI\ImDebugger\ImGe.cpp" />
<ClCompile Include="..\..\UI\ImDebugger\ImJitViewer.cpp" />
<ClCompile Include="..\..\UI\ImDebugger\ImMemView.cpp" />
<ClCompile Include="..\..\UI\ImDebugger\ImStructViewer.cpp" />
<ClCompile Include="..\..\UI\InstallZipScreen.cpp" />
+189 -60
View File
@@ -3,43 +3,15 @@
<ItemGroup>
<ClCompile Include="pch.cpp" />
<ClCompile Include="..\..\UI\BackgroundAudio.cpp" />
<ClCompile Include="..\..\UI\ControlMappingScreen.cpp" />
<ClCompile Include="..\..\UI\CwCheatScreen.cpp" />
<ClCompile Include="..\..\UI\DevScreens.cpp" />
<ClCompile Include="..\..\UI\DiscordIntegration.cpp" />
<ClCompile Include="..\..\UI\DisplayLayoutScreen.cpp" />
<ClCompile Include="..\..\UI\EmuScreen.cpp" />
<ClCompile Include="..\..\UI\GameInfoCache.cpp" />
<ClCompile Include="..\..\UI\GamepadEmu.cpp" />
<ClCompile Include="..\..\UI\GameScreen.cpp" />
<ClCompile Include="..\..\UI\GameSettingsScreen.cpp" />
<ClCompile Include="..\..\UI\GPUDriverTestScreen.cpp" />
<ClCompile Include="..\..\UI\InstallZipScreen.cpp" />
<ClCompile Include="..\..\UI\MainScreen.cpp" />
<ClCompile Include="..\..\UI\MemStickScreen.cpp" />
<ClCompile Include="..\..\UI\MiscScreens.cpp" />
<ClCompile Include="..\..\UI\IAPScreen.cpp" />
<ClCompile Include="..\..\UI\NativeApp.cpp" />
<ClCompile Include="..\..\UI\OnScreenDisplay.cpp" />
<ClCompile Include="..\..\UI\PauseScreen.cpp" />
<ClCompile Include="..\..\UI\ProfilerDraw.cpp" />
<ClCompile Include="..\..\UI\RemoteISOScreen.cpp" />
<ClCompile Include="..\..\UI\ReportScreen.cpp" />
<ClCompile Include="..\..\UI\SavedataScreen.cpp" />
<ClCompile Include="..\..\UI\Store.cpp" />
<ClCompile Include="..\..\UI\TiltAnalogSettingsScreen.cpp" />
<ClCompile Include="..\..\UI\TouchControlLayoutScreen.cpp" />
<ClCompile Include="..\..\UI\TouchControlVisibilityScreen.cpp" />
<ClCompile Include="..\..\UI\ChatScreen.cpp" />
<ClCompile Include="..\..\UI\Theme.cpp" />
<ClCompile Include="..\..\UI\JoystickHistoryView.cpp" />
<ClCompile Include="..\..\UI\AudioCommon.cpp" />
<ClCompile Include="..\..\UI\CustomButtonMappingScreen.cpp" />
<ClCompile Include="..\..\UI\TabbedDialogScreen.cpp" />
<ClCompile Include="..\..\UI\RetroAchievementScreens.cpp" />
<ClCompile Include="..\..\UI\DebugOverlay.cpp" />
<ClCompile Include="..\..\UI\DriverManagerScreen.cpp" />
<ClCompile Include="..\..\UI\JitCompareScreen.cpp" />
<ClCompile Include="..\..\UI\ImDebugger\ImDebugger.cpp">
<Filter>ImDebugger</Filter>
</ClCompile>
@@ -58,50 +30,113 @@
<ClCompile Include="..\..\UI\ImDebugger\ImConsole.cpp">
<Filter>ImDebugger</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\DeveloperToolsScreen.cpp" />
<ClCompile Include="..\..\UI\UIAtlas.cpp" />
<ClCompile Include="..\..\UI\SystemInfoScreen.cpp" />
<ClCompile Include="..\..\UI\ImDebugger\ImJitViewer.cpp">
<Filter>ImDebugger</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\ChatScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\ControlMappingScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\CustomButtonMappingScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\CwCheatScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\DeveloperToolsScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\DevScreens.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\DisplayLayoutScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\DriverManagerScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\EmuScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\GameScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\GameSettingsScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\GPUDriverTestScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\IAPScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\InstallZipScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\JitCompareScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\JoystickHistoryView.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\MainScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\MemStickScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\MiscScreens.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\PauseScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\RemoteISOScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\ReportScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\RetroAchievementScreens.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\SavedataScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\Store.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\SystemInfoScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\TabbedDialogScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\TiltAnalogSettingsScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\TouchControlLayoutScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
<ClCompile Include="..\..\UI\TouchControlVisibilityScreen.cpp">
<Filter>Screens</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="pch.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="..\..\UI\BackgroundAudio.h" />
<ClInclude Include="..\..\UI\ControlMappingScreen.h" />
<ClInclude Include="..\..\UI\CwCheatScreen.h" />
<ClInclude Include="..\..\UI\DevScreens.h" />
<ClInclude Include="..\..\UI\DiscordIntegration.h" />
<ClInclude Include="..\..\UI\DisplayLayoutScreen.h" />
<ClInclude Include="..\..\UI\EmuScreen.h" />
<ClInclude Include="..\..\UI\GameInfoCache.h" />
<ClInclude Include="..\..\UI\GamepadEmu.h" />
<ClInclude Include="..\..\UI\GameScreen.h" />
<ClInclude Include="..\..\UI\GameSettingsScreen.h" />
<ClInclude Include="..\..\UI\GPUDriverTestScreen.h" />
<ClInclude Include="..\..\UI\InstallZipScreen.h" />
<ClInclude Include="..\..\UI\MainScreen.h" />
<ClInclude Include="..\..\UI\MemStickScreen.h" />
<ClInclude Include="..\..\UI\MiscScreens.h" />
<ClInclude Include="..\..\UI\IAPScreen.h" />
<ClInclude Include="..\..\UI\OnScreenDisplay.h" />
<ClInclude Include="..\..\UI\PauseScreen.h" />
<ClInclude Include="..\..\UI\ProfilerDraw.h" />
<ClInclude Include="..\..\UI\RemoteISOScreen.h" />
<ClInclude Include="..\..\UI\ReportScreen.h" />
<ClInclude Include="..\..\UI\SavedataScreen.h" />
<ClInclude Include="..\..\UI\Store.h" />
<ClInclude Include="..\..\UI\TiltAnalogSettingsScreen.h" />
<ClInclude Include="..\..\UI\TouchControlLayoutScreen.h" />
<ClInclude Include="..\..\UI\TouchControlVisibilityScreen.h" />
<ClInclude Include="..\..\UI\ChatScreen.h" />
<ClInclude Include="..\..\UI\Theme.h" />
<ClInclude Include="..\..\UI\JoystickHistoryView.h" />
<ClInclude Include="..\..\UI\AudioCommon.h" />
<ClInclude Include="..\..\UI\CustomButtonMappingScreen.h" />
<ClInclude Include="..\..\UI\TabbedDialogScreen.h" />
<ClInclude Include="..\..\UI\RetroAchievementScreens.h" />
<ClInclude Include="..\..\UI\DebugOverlay.h" />
<ClInclude Include="..\..\UI\DriverManagerScreen.h" />
<ClInclude Include="..\..\UI\JitCompareScreen.h" />
<ClInclude Include="..\..\UI\ImDebugger\ImDebugger.h">
<Filter>ImDebugger</Filter>
</ClInclude>
@@ -120,13 +155,107 @@
<ClInclude Include="..\..\UI\ImDebugger\ImConsole.h">
<Filter>ImDebugger</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\DeveloperToolsScreen.h" />
<ClInclude Include="..\..\UI\UIAtlas.h" />
<ClInclude Include="..\..\UI\SystemInfoScreen.h" />
<ClInclude Include="..\..\UI\ImDebugger\ImJitViewer.h">
<Filter>ImDebugger</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\ChatScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\ControlMappingScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\CustomButtonMappingScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\CwCheatScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\DeveloperToolsScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\DevScreens.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\DisplayLayoutScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\DriverManagerScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\EmuScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\GameScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\GameSettingsScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\GPUDriverTestScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\IAPScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\InstallZipScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\JitCompareScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\JoystickHistoryView.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\MainScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\MemStickScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\MiscScreens.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\PauseScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\RemoteISOScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\ReportScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\RetroAchievementScreens.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\SavedataScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\Store.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\SystemInfoScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\TabbedDialogScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\TiltAnalogSettingsScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\TouchControlLayoutScreen.h">
<Filter>Screens</Filter>
</ClInclude>
<ClInclude Include="..\..\UI\TouchControlVisibilityScreen.h">
<Filter>Screens</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="ImDebugger">
<UniqueIdentifier>{4013cb89-6145-451c-9cb1-d63d01f66bd5}</UniqueIdentifier>
</Filter>
<Filter Include="Screens">
<UniqueIdentifier>{38b8413d-438d-4197-9db8-7bd123fc7431}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
+1
View File
@@ -895,6 +895,7 @@ LOCAL_SRC_FILES := \
$(SRC)/UI/ImDebugger/ImConsole.cpp \
$(SRC)/UI/ImDebugger/ImDisasmView.cpp \
$(SRC)/UI/ImDebugger/ImMemView.cpp \
$(SRC)/UI/ImDebugger/ImJitViewer.cpp \
$(SRC)/UI/ImDebugger/ImStructViewer.cpp \
$(SRC)/UI/AudioCommon.cpp \
$(SRC)/UI/BackgroundAudio.cpp \