The module runs

obSCEne loads, resolves its imports, and executes guest code under shadPS4. It calls platform functions by NID and the emulator dispatches them. That is the thing this repository has been trying to do.

What it took, in order. Each of these was hiding the next, which is why the count matters more than any one of them:

# Symptom Cause
1 Unable to find library and module Every symbol encoded <nid>#A#A - a library id nothing declared. No import tables at all.
2 Attempting to add too many segments! Four PT_LOAD segments. Three is the limit (D029).
3 Fault in the loader, empty log Identity tags emitted before DT_SCE_STRTAB (D030).
4 Guest calls address zero Our own functions going through the PLT and being "resolved" by NID (D031).
5 Nothing readable Every output channel stubbed (D032).

Number 3 was the expensive one. It presents identically to every other malformed module: a fault inside the loader, before any guest instruction, with nothing logged. It was found by cutting the dynamic table down one entry at a time and running each truncation - an empty table ran, one entry did not, and that entry was the module's own name.

Where it stands. 774 imports resolve. The probe runs its checks, calling sceKernelWrite, scePadOpen, sceKernelGetProcessTime and the rest, and the emulator answers. It stops partway through on a bad call - a real defect, and now one that can be debugged, because everything before it works.

Nothing can be read yet. This emulator stubs sceKernelWrite, write and putchar alike, so all three channels return zero and the report is discarded. The channel selection is behaving correctly; the platform genuinely has no way out. That is itself a finding, and the reason the chosen channel is now in the end record.

Surprises

The reference module was not needed after all. Removing it looked like a loss. What replaced it - running truncations of our own module and reading which ones survive - found in one pass what comparing against a reference had not found in a day.

Two emulators disagree about -fno-plt, and the disagreement is load-bearing. With it, one runs the probe and the other refuses the module. Without it, exactly the reverse. Kept as it is because one of those is running.

The correct e_type was wrong. It was 0xFE10 on the reasoning that a reference module which runs is 0xFE10, which was true and untestable with a single emulator. A second loader refuses 0xFE10 outright and accepts 0xFE18, and the first does not care. One emulator could not have settled this.