D127 - obSCEne's display targets the previous generation's video-out interface. That is why it draws nothing on a current-generation loader
Status: derived - from a NID comparison against a loader that implements the current interface.
PS5PCEM runs the suite to completion and shows no picture. obSCEne says why in its own report, and the answer was in the first ten records:
OBS|display|opening|the display is being opened
OBS|display|absent|the display symbols are not present
src/display.c requires seven symbols before it will
open. Five resolve under PS5PCEM - the direct-memory calls all pass,
sceVideoOutOpen returns a handle. Two do not, and the NIDs
say exactly why:
| what the display calls | NID | what PS5PCEM implements | NID |
|---|---|---|---|
sceVideoOutSubmitFlip |
U46NwOiJpys |
sceVideoOutSubmitFlip |
U46NwOiJpys |
sceVideoOutRegisterBuffers |
w3BY+tAEiQY |
sceVideoOutRegisterBuffers2 |
rKBUtgRrtbk |
sceVideoOutSetBufferAttribute |
i6-sR91Wt-4 |
sceVideoOutSetBufferAttribute2 |
PjS5uASwcV8 |
The current generation replaced two of the three with
2-suffixed entry points and kept the third. obSCEne
knows nothing about either variant, and shadPS4 does not
implement them either - which is consistent, because shadPS4 emulates
the previous generation and that is the interface obSCEne has been
written against.
So the display works on the one loader whose generation matches the code, and the project's stated target is the other one.
What this says about the rest of the suite
The census already censuses 87 current-generation graphics symbols,
and 005-generation exists to decide which generation a
platform is. Neither helped here, because the display is not a check -
it runs before the sections, its symbols are in platform.h
rather than the census, and nothing compares them against a
generation.
The fix is to import both variants weakly and prefer the
2 form when it resolves, which is what a title targeting
both would do. Worth doing carefully: the argument shapes may differ,
and D008 applies - a wrong layout here writes into a framebuffer
descriptor.
This is obSCEne's gap and not the loader's, and it was found by a loader being more current than the probe rather than less.