Two general causes of FINAL FANTASY RESONANCE's missing fires, smoke and muzzle flashes, found and first fixed by b1tdr3amer24 (GitHub issue #168). - Translator (vendored BindlessElimination.cs, TryTableHandle): a texture read whose handle phi mixes c2 handle words with values that are not handles (undefined, or float values the compiler kept in the register on paths where the predicated read does not run) was removed and its result set to 0: 58,122 reads in FINAL FANTASY RESONANCE, mostly Niagara particle vertex factories, whose meshes collapsed to a point. The read now takes the c2 handle among the inputs, or reads each candidate and picks by the phi's run- time value; candidates read elsewhere as another texture shape are left out (a second sweep, ResourceManager.GetTextureTypes). Only phis that GenerateBindlessAccess refuses come here, so tex_dyn_slots arrays keep their path: the other 69,449 shaders' SPIR-V is unchanged. Several candidates are never used for an image store or atomic. dmsh_xlate's Log now reaches the notes as "translator: ..." and the build summary counts those apart. - Host (nvn_mtl.m, tbuf_shadow): a texture buffer view at an offset that is not 16-byte aligned reads from the boundary below on an M4 Pro (t_tbuf_align: 56 of 56 views wrong; the M6 measurement in the old comment does not hold). Such views are read through a per-submission aligned copy; aligned views are untouched. A workaround for the Metal limit, its gaps (GPU writes in the same submission, CPU_NO_ACCESS pools, image writes) recorded as open. Translator rebuilt; lock and chain header updated. Checked: all FFR shaders translated before and after; FFR on the Mac (fires and smoke column render, steady; with the copy off they flicker); gfx, chain and docs tests. Co-authored-by: b1tdr3amer24 <240231594+b1tdr3amer24@users.noreply.github.com>
Subsystem references
How the host meets each part of a Switch game, and every failure met so far, one entry per mechanism: symptom, cause, fix (file and function), the games it was found on (linked to their notes in dm/games/<id>/README.md). Start from the symptom index when you have a log line or a visible result; the workflows that lead here are in docs/agents.
| File | Covers |
|---|---|
| packing.md | NSP script, compressed inputs and build artifacts |
| rewriter.md | The NSO rewriter patch_nso.py: jump tables, exclusive windows, patch area reach, cuts and observation gates, functions without unwind entries, stack and system registers, relocations |
| memory.md | Guest layout, heap and application pool, virtual address memory and the alias region (the SDK's node area), engine allocators, mapping SVCs, running out of memory |
| threads.md | Thread creation and cores, address arbitration, yields and spin waits, events |
| services.md | SDK calls and system services: sm connections, names that changed between SDKs, file system and saves, add-on content, input, keyboard and applets, display and operation mode, accounts and network, settings and fonts, C library and time, modules |
| movies.md | The SDK's movie library: decoder lifecycle, output slots, native-texture output, demuxers and codecs, game movie players |
| audio.md | The audio renderer and its command lists by SDK, AudioOut and devices, codecs, timing |
| frame-rate.md | The host's frame step, engine frame limiters, present intervals and display rates, CPU cost |
| nvn-objects.md | NVN object sizes, memory pools, command memory, queues and syncs, CPU-written textures, NVN entry points |
| rendering.md | The replay on Metal: textures, passes and clears, blend / depth / stencil, vertex input, uniforms and ordering, conditional rendering; the Vulkan and OpenGL layers |
| shaders.md | Shader containers by engine, control sections and code, translation, bindings and handles, shaders compiled at run time, pipelines and caches |
| game-state.md | Saves, scripted state, and game behaviour that looks like a host bug but is not |
A new general finding goes into the file and section it belongs to, in the same form, with a line in the symptom index; a fact about one game goes into that game's note.