Promoting late-gameplay BG3 composition contracts in the TD2 SDL port
<h1> Promoting late-gameplay BG3 composition contracts in the TD2 SDL port </h1> <p>This checkpoint moved one late-gameplay renderer hypothesis out of tooling and into the runtime.</p> <p>The late live-entry bundles at frames <code>3250</code>, <code>3400</code>, and <code>3550</code> already had a strong signal from the cutoff sweep: the missing horizon strip was not explained by missing assets, but by a narrow composition rule. The best candidates were consistent enough to promote:</p> <ul> <li>frame <code>3250</code>: enable <code>BG3</code> in the top <code>79</code> scanlines and keep <code>BG3 > BG2</code> there</li> <li>frame <code>3400</code>: same <code>79</code>-line window</li> <li>frame <code>3550</code>: same rule with a deeper <code>95</code>-line window</li> </ul> <p>The run
Promoting late-gameplay BG3 composition contracts in the TD2 SDL port
This checkpoint moved one late-gameplay renderer hypothesis out of tooling and into the runtime.
The late live-entry bundles at frames 3250, 3400, and 3550 already had a strong signal from the cutoff sweep: the missing horizon strip was not explained by missing assets, but by a narrow composition rule. The best candidates were consistent enough to promote:
-
frame 3250: enable BG3 in the top 79 scanlines and keep BG3 > BG2 there
-
frame 3400: same 79-line window
-
frame 3550: same rule with a deeper 95-line window
The runtime now loads those rules from a versioned contract file instead of a hardcoded late-gameplay lookup:
- rom_analysis/docs/gameplay_composition_contracts.jsonc
On the implementation side, td2_runtime resolves the matching profile for the loaded design pack, and td2_ppu now applies two concrete knobs in the native SDL render path:
-
bg3_enable_top_scanlines
-
bg3_above_bg2_top_scanlines
That means the late-gameplay top-band BG3 rule is now a first-class part of the native renderer rather than a design-only experiment.
Validation stayed bounded and explicit:
-
make -C port test
-
python3 tools/build_docs_wiki_report.py --manifest rom_analysis/docs/wiki_doc_index.json --output-dir tools/out/docs_wiki --markdown-bundle-dir tools/out/docs_wiki_markdown_bundle
The current smoke matrix passed with:
-
compare lane 3/3
-
scheduler smoke 335 checks
-
input mutation smoke 200 checks
-
live input smoke 21 checks
-
scanline / composition contract smoke 39 checks
For design review, I also regenerated runtime PNGs for the promoted late-entry anchors so the team can judge the native SDL output directly, not only the sweep candidates.
The practical result is modest but important: late gameplay is now narrowed past “maybe BG3 matters here” and into one explicit, versioned composition rule that the runtime consumes. The next question is whether that same family needs more measured state beyond this top-band rule, or whether extending the composition contract to more anchors still pays off.
DEV Community
https://dev.to/nivandosoares/promoting-late-gameplay-bg3-composition-contracts-in-the-td2-sdl-port-15gnSign in to highlight and annotate this article

Conversation starters
Daily AI Digest
Get the top 5 AI stories delivered to your inbox every morning.
More about
versionanalysisreport
Deepseek v4 will reportedly run entirely on Huawei chips in a major win for China s AI independence push
Deepseek v4 is expected to launch in the coming weeks and will run exclusively on Huawei chips. China's biggest tech companies have reportedly already ordered hundreds of thousands of units. Nvidia was shut out of early testing. The article Deepseek v4 will reportedly run entirely on Huawei chips in a major win for China s AI independence push appeared first on The Decoder .
Knowledge Map
Connected Articles — Knowledge Graph
This article is connected to other articles through shared AI topics and tags.
More in Analyst News

Lenovo Legion Go 2 suddenly costs $650 more as RAMageddon lays waste to gaming hardware
Remember when we thought the Legion Go 2 was expensive at $1,099 and up? Those were the days - Best Buy is now listing Lenovo's handheld for $1,499 with a Ryzen Z2 or $1,999 with a Z2 Extreme. The latter originally cost $1,349, so that's a $650 jump in just six months. And yes, that [ ]






Discussion
Sign in to join the discussion
No comments yet — be the first to share your thoughts!