I've been working on getting a objdiff workflow going in one of my PS2 decomps, replacing the use of asm-differ.
I've set up an auto-generated config file which correctly matches up in-progress TUs with their original counterparts. The truncated config looks like:
{
"$schema": "https://raw.githubusercontent.com/encounter/objdiff/main/config.schema.json",
"custom_make": "ninja",
"custom_args": [],
"build_target": true,
"build_base": true,
"watch_patterns": [],
"units": [
{
"name": "tmb/file",
"target_path": "build/asm/tmb/file.s.o",
"base_path": "build/src/tmb/file.cpp.o",
"metadata": {
"progress_categories": [
"tmb"
],
"complete": true,
"source_path": "src/tmb/file.cpp"
}
}
],
"progress_categories": [
{
"id": "data",
"name": "data"
},
{
"id": "sdk",
"name": "sdk"
},
{
"id": "tmb",
"name": "tmb"
},
{
"id": "newlib",
"name": "newlib"
},
{
"id": "gcc",
"name": "gcc"
}
]
}
Running the latest objdiff-cli in non-interactive mode with --format json-pretty, I can see that objdiff is definitely reading/parsing the objects, and report generate's output also matches up with my previous progress reports from mapfile_parser.
However, when I run a diff using interactive mode (invocation example: ./tools/objdiff/objdiff-cli-linux-x86_64 diff -u tmb/file fileReadf__FPcPv), I get a blank display. Menus also appear to generate with blank text:
This happens regardless of which terminal I use (gnome-terminal in the screenshot, but VSCode's integrated terminal produces the same results). My best guess is that this is some system-level incompatibility issue with the TUI libraries objdiff-cli is using.
Some info that will hopefully help:
- Headless
Debian 11 (bullseye) server
Linux [redacted] 5.10.0-46-amd64 #1 SMP Debian 5.10.262-1 (2026-07-31) x86_64 GNU/Linux
- Tested with latest
objdiff-cli-linux-x86_64 (v3.8.1)
- Sanity checked
v3.6.0, it also produed the same result.
I'm not sure how to get log output out of objdiff-cli; non-interactive paths seem to ignore my --log-level entirely, while the interactive mode can't output the logs to stdout properly.
I've been working on getting a
objdiffworkflow going in one of my PS2 decomps, replacing the use ofasm-differ.I've set up an auto-generated config file which correctly matches up in-progress TUs with their original counterparts. The truncated config looks like:
Running the latest
objdiff-cliin non-interactive mode with--format json-pretty, I can see that objdiff is definitely reading/parsing the objects, andreport generate's output also matches up with my previous progress reports frommapfile_parser.However, when I run a diff using interactive mode (invocation example:
./tools/objdiff/objdiff-cli-linux-x86_64 diff -u tmb/file fileReadf__FPcPv), I get a blank display. Menus also appear to generate with blank text:This happens regardless of which terminal I use (
gnome-terminalin the screenshot, but VSCode's integrated terminal produces the same results). My best guess is that this is some system-level incompatibility issue with the TUI librariesobjdiff-cliis using.Some info that will hopefully help:
Debian 11 (bullseye)serverLinux [redacted] 5.10.0-46-amd64 #1 SMP Debian 5.10.262-1 (2026-07-31) x86_64 GNU/Linuxobjdiff-cli-linux-x86_64(v3.8.1)v3.6.0, it also produed the same result.I'm not sure how to get log output out of
objdiff-cli; non-interactive paths seem to ignore my--log-levelentirely, while the interactive mode can't output the logs to stdout properly.