Repository navigation
STAR WARS: Dark Forces Remaster (PPSA19728) on Windows: first mission completed with local startup fixes #4310
PrintOrb
started this conversation in
Game bring-up
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Result
STAR WARS: Dark Forces Remaster (PPSA19728, content version 02.000.000) reaches gameplay on Windows with two local startup fixes. I completed the first mission using keyboard and mouse.
This is a patched-build result, not a claim that stock main is playable or that the whole game works.
Build
Base: upstream main
e013f8c9c565e4a28be16268c93ec36c64baa34b, Release. The runtime libraries and relinker were built from source.Conversion:
--windows --windows-diagnostics --registry. The title's suppliedlibc.prxandlibSceNpCppWebApi.prxwere converted as guest modules, with original modules and assets retained in app0.Startup fixes used
NGS2 voice-index errors. Main terminates with
sceNgs2RackGetVoiceHandle: invalid argument. GDB confirms the title creates a reverb rack (0x2001) withmax_voices = 1, obtains voice 0, then requests voice 1. The local change returns0x804A8305for an index at or beyond the voice count, leaving the output untouched. The game logs the failed requests and continues. The value follows prosper's native-module analysis, which cites the native export at0xfbd0and bounds error at0xfc73. We did not independently probe a PS5. Other validation paths are unchanged.Concurrent SDL audio initialization. After the first change, GDB captures two threads entering
SDL_AudioInit_REALthroughsceAudioOut2ContextCreateandsceAudioOutOpen, followed by a call to address 0 inSDL_AudioQuit_REAL. The local change routes the AudioOut and AudioOut2 initialization calls through one mutex-protectedSDL_InitSubSystem(SDL_INIT_AUDIO)helper. With both changes, intro video, menus, mission selection and gameplay work. Audio was not disabled to bypass startup.These are separate local commits (
a2c15ed91andc43834d05), not published PRs yet. The audio change still needs a dedicated automated concurrency regression before submission.Checks
ngs2_voiceindexregression aborts against main and passes with the bounds-error change. It covers sampler, submixer, reverb and mastering racks, boundary/larger/UINT32_MAX indices, unchanged outputs and subsequent valid lookups.ngs2_voiceindex,ngs2_render,ngs2_stream: 3/3 pass.audio_out_ex,audio_out2_latency,audio_out2_port_buffers: 3/3 pass.Remaining problems
The first mission was completed despite these issues. The Tab/PDA causes remain unconfirmed; they are follow-up investigations rather than part of the startup fixes.
AI-assisted: yes (Codex), with manual gameplay testing by PrintOrb.
All reactions