Henrik Rydgård and Claude Opus 5
386ff2fc3d
headless: add --re-module, a static reverse-engineering dump for one PRX
...
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) <noreply@anthropic.com >
2026-09-08 15:32:14 -06:00
..
2026-08-20 00:40:41 +02:00
2026-06-12 12:19:31 +02:00
2025-07-22 17:48:20 +02:00
2026-09-07 12:17:16 -06:00
2025-07-22 17:48:20 +02:00
2026-08-12 14:06:16 +02:00
2025-07-22 17:48:20 +02:00
2026-01-08 22:02:08 +01:00
2026-08-12 14:06:16 +02:00
2026-09-08 15:32:14 -06:00
2026-09-08 15:32:14 -06:00
2026-08-16 16:59:52 +02:00
2026-08-16 16:59:52 +02:00
2026-08-24 12:15:31 +02:00
2026-08-11 10:28:36 +02:00
2026-09-05 10:09:46 +03:00
2026-09-04 18:10:10 -06:00
2025-03-31 11:17:50 +02:00
2025-07-02 00:02:33 +03:00
2025-07-02 01:30:21 +03:00
2026-08-10 10:04:21 +02:00
2025-08-06 17:44:54 +02:00
2026-05-02 11:07:34 +02:00
2025-06-13 23:29:49 +02:00
2026-09-06 14:11:18 +02:00
2026-09-04 13:10:54 -06:00
2026-01-18 23:40:13 +02:00
2025-03-31 10:24:03 +02:00
2026-08-16 16:59:52 +02:00
2026-02-17 09:40:27 +01:00
2026-08-11 09:08:52 +02:00
2025-07-20 19:30:35 +02:00
2025-03-31 11:17:50 +02:00
2026-08-12 14:06:16 +02:00
2025-06-25 11:34:07 +02:00
2026-09-04 18:12:31 -06:00
2026-09-04 18:12:31 -06:00
2026-09-07 12:20:18 -06:00
2026-09-07 12:20:18 -06:00
2025-03-31 11:17:50 +02:00
2025-03-31 11:17:50 +02:00
2026-08-24 17:37:39 +02:00
2026-08-21 10:56:06 +02:00
2026-08-12 14:06:16 +02:00
2025-06-05 22:46:24 +02:00
2026-08-24 10:58:34 +02:00
2026-08-24 10:58:34 +02:00
2026-08-12 14:06:16 +02:00
2026-08-18 13:42:13 +02:00
2026-08-18 13:42:13 +02:00
2026-08-16 16:59:52 +02:00
2026-09-05 09:36:26 -06:00
2025-03-31 11:17:50 +02:00
2025-04-03 22:39:14 +02:00
2026-08-12 14:06:16 +02:00
2026-02-09 14:35:32 +01:00
2026-08-11 20:12:10 +02:00
2026-08-24 10:58:35 +02:00
2026-08-19 18:38:03 +02:00
2026-08-12 14:06:16 +02:00
2025-08-06 00:16:34 +02:00
2026-08-24 17:37:39 +02:00
2026-08-19 18:38:03 +02:00
2026-09-08 14:42:18 -06:00
2026-04-28 16:27:12 +02:00
2026-08-12 14:06:16 +02:00
2026-08-24 17:37:39 +02:00
2026-08-24 10:58:34 +02:00
2026-09-04 18:10:10 -06:00
2026-09-04 18:10:10 -06:00
2026-08-17 16:01:23 +02:00
2026-09-04 18:10:10 -06:00
2026-09-04 18:10:10 -06:00
2026-09-04 18:10:10 -06:00
2026-09-04 18:10:10 -06:00
2026-07-25 14:53:02 +02:00
2026-09-08 15:31:29 -06:00
2026-09-08 11:43:49 -06:00
2026-09-04 18:10:10 -06:00
2026-08-17 16:01:23 +02:00
2026-09-04 18:10:10 -06:00
2026-08-17 16:01:23 +02:00
2026-09-04 18:10:10 -06:00
2026-09-08 11:15:15 -06:00
2026-09-07 12:48:22 -06:00
2026-08-19 18:38:03 +02:00
2026-08-12 14:06:16 +02:00
2026-08-11 22:27:44 +02:00
2026-08-12 14:06:16 +02:00
2026-09-07 09:18:02 -06:00
2025-07-20 19:32:05 +02:00
2025-03-31 11:17:50 +02:00
2025-02-14 09:50:55 -06:00
2026-08-12 14:06:16 +02:00
2026-06-08 23:00:36 +08:00
2026-08-12 14:06:16 +02:00
2026-08-12 14:06:16 +02:00
2025-02-12 16:49:43 +03:00
2026-09-07 14:51:47 -04:00
2025-08-06 00:16:34 +02:00
2026-08-12 14:06:16 +02:00
2026-04-23 11:12:58 +02:00
2026-08-12 14:06:16 +02:00
2025-07-01 19:56:09 +03:00
2025-01-21 12:22:32 +01:00
2025-01-21 12:22:32 +01:00
2026-08-12 14:06:16 +02:00
2025-01-21 12:22:32 +01:00
2026-08-11 20:14:01 +02:00
2025-04-07 22:16:32 +02:00
2026-08-12 14:06:16 +02:00
2025-01-09 09:06:23 +01:00
2026-08-12 14:06:16 +02:00
2025-01-21 17:41:53 +01:00
2025-03-31 11:17:50 +02:00
2026-08-11 10:28:36 +02:00
2026-08-11 10:28:47 +02:00
2025-08-15 16:35:25 +02:00
2025-01-05 19:14:15 +01:00
2026-08-11 10:28:47 +02:00
2026-08-24 17:37:39 +02:00
2026-08-19 18:38:03 +02:00
2026-08-24 09:30:44 +02:00
2025-04-14 22:38:22 +02:00
2026-09-08 11:15:15 -06:00
2026-09-08 11:15:15 -06:00
2026-08-12 14:06:16 +02:00
2025-04-03 14:13:50 +02:00
2026-08-24 12:15:31 +02:00
2026-08-24 11:12:59 +02:00
2026-08-21 10:56:06 +02:00
2026-08-19 18:38:03 +02:00
2026-08-12 09:43:23 +02:00
2025-04-12 11:35:55 +02:00
2025-03-31 11:17:50 +02:00
2025-03-31 11:17:50 +02:00
2025-03-31 11:17:50 +02:00
2026-08-11 20:14:01 +02:00
2026-08-12 14:02:19 +02:00
2025-02-04 11:53:22 -06:00
2026-09-04 18:10:10 -06:00
2025-03-31 11:17:50 +02:00
2026-08-08 18:18:28 +02:00
2025-03-31 11:17:50 +02:00
2026-08-21 10:32:21 +02:00
2024-10-15 15:30:37 +02:00
2026-09-08 11:43:49 -06:00
2025-11-04 11:48:47 +01:00
2026-09-04 18:12:31 -06:00
2026-08-24 10:58:34 +02:00
2026-08-24 10:58:34 +02:00
2025-01-22 10:12:56 +01:00
2025-01-22 10:12:56 +01:00
2024-09-17 11:34:42 +02:00