Repository navigation
Read short ARC directories and control-first MT Framework shaders - #967
Open
thehobbit85 wants to merge 1 commit into
Open
thehobbit85 wants to merge 1 commit into
thehobbit85 wants to merge 1 commit into
Conversation
thehobbit85
force-pushed
the
codex/mt-framework-shader-layouts
branch
from
November 2, 2026 15:48
9025b4b to
b4b9f57
Compare
PikaMan80 documented the two layouts in seedds#960. Match member bounds and graphics headers in the package rather than a game ID, retaining the existing code-first shader pairs.
thehobbit85
force-pushed
the
codex/mt-framework-shader-layouts
branch
from
November 2, 2026 17:42
b4b9f57 to
2ae9ca3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #960 (the shader extraction part). PikaMan80’s report and attached patch identify two differences in Ultra Street Fighter II: ARC v7 has 64-byte member paths, and its SPK shader controls precede their code. The splitter expected the 128-byte paths and code-first shaders used by The Great Ace Attorney Chronicles. On a synthetic short archive, main read past the directory; on a wide archive with a control-first package, it rejected the first shader.
The reader checks member offsets and lengths before selecting a directory width. Padding after the last member and empty files do not determine the width. In an SPK it uses the first control’s declared code length and the graphics header to establish the order, then checks contiguous pairs through EOF. It does not switch orders halfway through a damaged package: doing that could associate a vertex shader’s control with the next pixel shader’s code. Both existing formats are inferred from the bytes, without a profile setting.
Revision
2ae9ca3fef489d17e93ab7259c921650f2bc2f03includes main65501fbbaf8526f7aab0a1edd028135888590f8e. Main’s MT Framework extractor still assumes wide ARC member paths and code-first shader packages.Validation on
2ae9ca3fef48.DM_GAME=010015100B514000 python3 -m unittest dm.tools.tests.test_docs dm.gfx.tests.test_mt_framework dm.tools.tests.test_split_unreadable— 22 tests passed.GitHub checks for this revision
Author validation before this rebase
make -C dm/gfx/tests GAME=010036E00FB20000 run) also passed, with six optional external reflection samples missing. The documentation now distinguishes the layouts.scripts/regress.py check --games 010036E00FB20000exited 2 because no regression root or game directories are configured. Neither game's archives or gameplay were tested. This change does not modify the shader translator or its chain version.PR #966 handles the separate movie-buffer ABI. This PR does not address the rewriter, audio renderer, or full game bring-up.