Investigate PRK shipped-asset graphics and music compatibility
Investigate differences between the downloaded native-client assets and the normal PRK installation, rather than assuming they ship identical generations. Observed installation: /home/mathias/Downloads/linux-x64 (1)/client. Graphics: Setupf/gfxtweak.bin is absent and effects disable globally. Music: anarchy.sws SHA256 1217ecaaa3e3749be740487775c4ab81c91080b8399c5c3a9e349dc9c22aa90d has 62 layers/838 samples and omits lvol; the existing parser requires lvol. Modern comparison archive SHA256 3cf90c2ff722eaf6fdc622eb2e27128c29dad9e2fb28b7d7cbb77dab36a7e9f1 has 91 layers/1257 samples. Separate follow-up to ENV PR #2626 and music investigation tsk_jsv48x84cf, not a replacement for its playback/performance/platform scope. Outcome and acceptance: reproduce refusals against shipped assets; census complete old/new SWS schemas and asset/reference coverage; determine whether graphics catalogue absence is packaging omission or an alternate legacy format/source; corroborate defaults/legacy behavior from matching original binaries where available. Preserve modern-format validation and distinguish absent legacy fields from malformed present fields. Reuse existing RDBLib2 readers and client audio/effects pipelines; do not replace shipped game data with modern assets, add guessed defaults, or introduce parallel parsers. End the investigation with evidence-backed compatibility recommendations and verifiable implementation acceptance criteria. No game assets committed or installation changes without request. Branch: fix/client-legacy-asset-compatibility, based on ENV/market fixes a671a0cfe (PR #2626 dependency until merged). Working tree remains clean; no implementation or installed assets changed. Initial verified findings - Native --music-catalog against the shipped installation aborts with exit 134: MusicCatalog supplies the filename, but AudioDiagnostics.CheckMusicCatalog does not handle InvalidDataException. Normal ClientAudio startup catches it and disables music. Diagnostic error handling belongs in the compatibility fix. - Complete framed census: shipped SWS has 20,626 records (1 project, 26 pause tracks, 838 samples, 3,604 transitions, 16,092 fades, 65 chords). All reference edges are in range; every record is reachable from the root. All 838 case-insensitive authored music paths resolve. Modern comparison has 27,144 records and 20 unresolved music paths. - Across all six classes, the only member/type-schema differences are absent CProject.lvol and CSampleExtras.vol in shipped SWS. The available 15.3.3/15.5.6 archives already contain these fields, so they are not exact matches for the shipped generation. - Original binary evidence: /mnt/games/PRK/PRK/SIMPlayer.dll SHA256 b7aaf416975acaba6a0998e8908caf2b42fd35d797b0721a04f64a19d493259d. Imported with dependencies before Ghidra MCP. CProject archive constructor 0x10004697 initializes each layer volume to 1.0 before FindFloat(lvol); disassembly 0x100047d6 fld1 corroborates. CSample archive constructor 0x10007246 initializes sample gain to 1.0 before FindFloat(vol); disassembly 0x100073fd fld1 corroborates. Later original players therefore deliberately retain unity when these fields are absent. 15.3.3 pr.dll SHA256 1215ace9de0f6fd16cb95153a986be3e9bd8d34ec5bf2521705aa5c51243cf5a also initializes layer volume to 0x3f800000 in constructor 0x10003790. - Graphics: the downloaded native client has no Setupf directory. User-designated normal shipped client /mnt/games/PRK/PRK does contain Setupf/gfxtweak.bin: SHA256 362a7cd2c5e7ad8ce39d93edd0b79959d5c72e324b0c63c3194041c37727f71d, 2,687 records, byte-identical to the modern AO comparison catalogue. Its SWS likewise matches the modern comparison (3cf90c2f...), not the downloaded native client's older archive (1217ecaa...). The omission/old-generation selection is specific to the native client's asset baseline or assembly path; it is not established as a deficiency of normal PRK distribution. Available modern gfxtweak.bin has 2,687 records; 15.3.3 and 15.5.6 have 2,149 each. All frame completely under the current count/id/type/parameter layout, with unique IDs. Their bytes differ; do not substitute one for the shipped generation without verifying resource/reference compatibility. Launcher source was provided at /home/mathias/Projects/PRK.Launcher. Its main branch is the legacy AO channel; origin/spiritech is the native release channel and uses /spiritech/patches/patches.map with RID-specific ZIPs. Next verification is a clean reconstruction from the live Spiritech chain in a separate local directory, leaving existing installations untouched. Patch-channel reconstruction and final recommendation Main-channel reconstruction used the actual launcher CLI built from main commit 8c77ee7, starting empty and applying all 36 transitions from 0.0.0 through 0.6.1 to 0.7.2, including RDB patches/deletion manifests. Sync exit 0; final patch.version 0.7.2; SQLite has 56 tables. Reconstructed Setupf/gfxtweak.bin (2,687 records, SHA256 362a7cd2...) and anarchy.sws (91 layers/1,257 samples, SHA256 3cf90c2f...) are byte-identical to /mnt/games/PRK/PRK. Six focused graphics/music installed tests pass. Native music-catalog parses completely and reports the existing 20 unresolved Adonis paths without crashing. Spiritech reconstruction separately applied 0.0.8 -> 0.0.9 -> 0.0.10. The self-contained 0.0.8 ZIP already omits Setupf/gfxtweak.bin and carries the older 1217ecaa... SWS; later patches do not change either. This proves a bad Spiritech asset baseline rather than a mismatch in the normal PRK distribution or a partial user install. Local evidence: .dev-data/patch-server-reconstruction/{main-20261010,native-20261010}/ contains reconstructed clients, patch maps, sync/reconstruction logs and comparison metadata. Existing installations and both source repositories remain unchanged. User decision: replace the bad native baseline using the correctly patched main-channel asset set. Local Linux baseline build is tracked separately in tsk_z3qyyfddae; no legacy parser relaxation is needed to correct the release. Optional legacy-schema support remains evidence-backed (absent lvol/vol default unity, present values remain strictly validated), but is not the current fix. Graceful music-diagnostic failure and the 20 Adonis mapping gaps remain separate follow-ups. New baseline validation must cover gfx/music schema, current patched RDB, character camera/preference assets, complete shader variants, clean install and overlay upgrade.
Checklist
3 of 3 complete- Establish graphics catalogue provenance and legacy defaults using matching original-client evidence.
- Record evidence-backed compatibility recommendations and implementation acceptance criteria.
- Reproduce failures and census old/new music schema, authored references and asset coverage.
- Area
- Project Rubi-Ka
- Project
- engines
- Kind
- Research
- Task ID
tsk_ct4q3ccsm3- Updated