mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
Loads a single module standalone - no game, no boot - and writes a report: module header and segments, the export and import tables with NIDs resolved to names through the HLE tables, one annotated disassembly file per function, and a call graph as JSON. Reuses the emulator's own loader rather than parsing PRXes a second time, so decryption, decompression, relocation and import resolution can't drift from what actually runs. Only enough of the system is brought up to load a module: memory map, timing, HLE tables and the kernel allocators. Nothing executes. Two things beyond a plain disassembly, both aimed at the questions that come up when reading unfamiliar MIPS: - lui/addiu (and lui/load) pairs are folded and reported as the address they form, which is how every global and constant table gets reached. - Per function, a register evidence block instead of a guessed signature. A MIPS function that takes two arguments and passes the second one down often never reads it, so 'never read but live across a call' is reported as forwarded rather than quietly dropped from the signature. SetForceRealModuleLoads() is needed because modules like sceAudiocodec_Driver have no DisableHLEFlags bit and so can't be turned off the normal way - they'd fake-load and there would be nothing to look at. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
61 lines
2.1 KiB
XML
61 lines
2.1 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<ItemGroup>
|
|
<ClCompile Include="Headless.cpp" />
|
|
<ClCompile Include="Compare.cpp" />
|
|
<ClCompile Include="ReverseEngineer.cpp" />
|
|
<ClCompile Include="..\ext\glew\glew.c" />
|
|
<ClCompile Include="..\Windows\GPU\WindowsGLContext.cpp">
|
|
<Filter>Windows</Filter>
|
|
</ClCompile>
|
|
<ClCompile Include="WindowsHeadlessHost.cpp">
|
|
<Filter>Windows</Filter>
|
|
</ClCompile>
|
|
<ClCompile Include="..\Windows\W32Util\Misc.cpp">
|
|
<Filter>Windows</Filter>
|
|
</ClCompile>
|
|
<ClCompile Include="..\Windows\GPU\D3D11Context.cpp">
|
|
<Filter>Windows</Filter>
|
|
</ClCompile>
|
|
<ClCompile Include="SDLHeadlessGLGraphicsContext.cpp">
|
|
<Filter>Other Platforms</Filter>
|
|
</ClCompile>
|
|
<ClCompile Include="..\Windows\CaptureDevice.cpp">
|
|
<Filter>Windows</Filter>
|
|
</ClCompile>
|
|
<ClCompile Include="..\Common\GPU\Vulkan\VulkanGraphicsContext.cpp">
|
|
<Filter>Windows</Filter>
|
|
</ClCompile>
|
|
<ClCompile Include="..\SDL\SDLUtil.cpp">
|
|
<Filter>Other Platforms</Filter>
|
|
</ClCompile>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<None Include="..\test.py" />
|
|
<None Include="README.md" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<ClInclude Include="Compare.h" />
|
|
<ClInclude Include="ReverseEngineer.h" />
|
|
<ClInclude Include="WindowsHeadlessHost.h">
|
|
<Filter>Windows</Filter>
|
|
</ClInclude>
|
|
<ClInclude Include="SDLHeadlessGLGraphicsContext.h">
|
|
<Filter>Other Platforms</Filter>
|
|
</ClInclude>
|
|
<ClInclude Include="..\Common\GPU\Vulkan\VulkanGraphicsContext.h">
|
|
<Filter>Windows</Filter>
|
|
</ClInclude>
|
|
<ClInclude Include="..\SDL\SDLUtil.h">
|
|
<Filter>Other Platforms</Filter>
|
|
</ClInclude>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Filter Include="Windows">
|
|
<UniqueIdentifier>{28215e85-3e11-4a8a-8b4d-3e355b85a542}</UniqueIdentifier>
|
|
</Filter>
|
|
<Filter Include="Other Platforms">
|
|
<UniqueIdentifier>{d34ba935-dcca-4f21-a869-5d0b3bba7478}</UniqueIdentifier>
|
|
</Filter>
|
|
</ItemGroup>
|
|
</Project> |