mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-29 07:10:32 -04:00
chore(phase-1): install RE stack + headless import (PsyQ 4.0.0, MCP live)
- WSL RE stack installed: JDK 21.0.11, Ghidra 12.1 PUBLIC, GhidrAssistMCP
v2.8.0, ghidra_psx_ldr 2026.06.04 (extensions extracted into
Ghidra/Extensions/ at version=12.1; exact-12.1 pin held, no version-lock)
- headless import of extracted/SLUS_007.26: PSX loader auto-selected
(PSX:LE:32:default), PsyQ Version = 4.0.0 recorded, 1726 functions,
saved to ghidra/bfm.{gpr,rep} (gitignored)
- GhidrAssistMCP headless server verified on 127.0.0.1:8080 (41 tools);
get_code(0x80018730) returns the LZSS streaming decompressor
(milestone substance, also confirmed via headless decompiler)
- tools/ghidra_scripts: DumpProgramInfo.java, DecompileAt.java (helpers)
- docs/SETUP.md: confirm PsyQ 4.0.0; 41 tools + async get_code/SSE notes;
headless -loader rejected -> use auto-detect; extension-install path;
ledger #1 moot, #12 resolved
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
// DumpProgramInfo.java — headless postScript that prints the authoritative
|
||||
// program metadata after import+analysis: language/compiler spec, image base,
|
||||
// function count, and every Program-Information property (incl. the
|
||||
// ghidra_psx_ldr "PsyQ Version" that Phase 1's milestone requires recorded).
|
||||
// Plain Java GhidraScript (compiled at runtime by Ghidra; no Jython needed).
|
||||
import ghidra.app.script.GhidraScript;
|
||||
import ghidra.framework.options.Options;
|
||||
import ghidra.program.model.listing.Program;
|
||||
|
||||
public class DumpProgramInfo extends GhidraScript {
|
||||
@Override
|
||||
public void run() throws Exception {
|
||||
Program p = currentProgram;
|
||||
println("=== BFM PROGRAM INFO ===");
|
||||
println("Name: " + p.getName());
|
||||
println("LanguageID: " + p.getLanguageID());
|
||||
println("CompilerSpecID: " + p.getCompilerSpec().getCompilerSpecID());
|
||||
println("ImageBase: " + p.getImageBase());
|
||||
println("ExecutableFormat: " + p.getExecutableFormat());
|
||||
println("FunctionCount: " + p.getFunctionManager().getFunctionCount());
|
||||
println("DefinedDataCount: " + p.getListing().getDefinedData(true).hasNext());
|
||||
Options opts = p.getOptions(Program.PROGRAM_INFO);
|
||||
println("--- Program Information properties ---");
|
||||
for (String n : opts.getOptionNames()) {
|
||||
println("PROP " + n + " = " + opts.getValueAsString(n));
|
||||
}
|
||||
println("=== END BFM PROGRAM INFO ===");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user