v0.7.2 — HD textures in the Linux setup
The Linux setup (the Steam Deck included) now offers Apply HD texture upscale during install,
as the Windows and macOS setups do, and the HD packs now run at full speed on Linux: on a Steam
Deck a fight with the packs went from 25 to 60 frames a second.
Changes
- Linux setup: the HD option. A checkbox in the wizard, unchecked by default (with the note
"Adds about 6.2 GB; needs extra working space. No GPU needed."), and--hd-texturesfor
DefJamSetup.sh --silent. After building the game, setup makes the Lanczos 4x packs on the CPU,
verifies them and turns them on for the first launch; turn them off or on later on the
launcher's or F1 overlay's Textures page. On a Steam Deck an install with the option takes
about 15 minutes. Setup asks for 15 GiB of extra free space while it works. Uninstalling keeps
the packs with the rest of your data. - Texture packs on Linux, faster (toolkit
defjam/linux-hd-sha, pinned at2992bd8). With
the packs, the game identifies each texture it binds by a SHA-256 of its bytes, refreshed every
8 ms. On Linux that used plain C rounds, and before each one parsed/proc/self/mapsto check
the bytes were readable; on a Deck that held a fight to 25 fps. Now:- the SHA-256 uses the CPU's SHA instructions where present (x86 Linux; Windows and macOS
already used their system's accelerated SHA-256); - the readability check reads one byte of each page through
process_vm_readv(the parse stays
as a fallback where the call is refused); - a cheap 64-bit check over the same bytes runs first, and the SHA-256 runs again only when it
changes. This part is shared code and also runs on Windows and macOS; the identity, pack
names and lookup are unchanged, and the toolkit fixture (run on Windows by CI) covers it.
- the SHA-256 uses the CPU's SHA instructions where present (x86 Linux; Windows and macOS
- The Linux payload carries the manylinux Pillow 12.3.0 and NumPy 2.5.2 wheels the upscaler
needs, pinned by SHA-256 insetup/dependencies-linux.json, and the asset check imports both and
runsbuild-hd-pack.py --helpfrom the bundled Python. - Linux setup: no second Steam shortcut. Running setup again with Add to Steam (a repair
or an update) asked Steam for another shortcut to the same launcher, so the library showed the game
twice, the second without artwork. Setup now looks for the launcher in Steam's shortcut file first
and only places the artwork when it is already there. scripts/hd-pack-digest.pyprints one digest of a set of packs' decoded pixels, so packs made
on different platforms can be compared when their PNG files differ only in compression.- Regression routes: fight, Free For All and versus press on the main menu once its music
starts, not at a fixed time after the screen's first call, which the menu's art loading could
outlast. - Docs: the Linux sections of the setup guide, the HD guide, the build guide and the Linux
"READ ME FIRST" (which also no longer says the launcher and overlay are missing on Linux).
Validation and limits
- Steam Deck OLED, SteamOS 3.8: the previous install was removed (setup's
--uninstall, the Steam
shortcut, the folders), then a fresh silent install from an XISO with--hd-textures --steam-shortcut
took 14 min 48 s, of which the upscale was about 9 min 40 s on the Deck's CPU (the development PC
takes about four minutes). It made the full set (18,971 images), enabled both packs insettings.ini,
added the Steam shortcut and placed its four artwork files. The wizard shows the new checkbox. - Frame rates on the Deck (
regress.py --only fight,ffa, median presents per 2 s; 120 is 60 fps):
packs off, fight 120 and Free For All 120. Packs on, before the toolkit change, fight 50 (25 fps);
after it, fight 120 and Free For All 113 (both pass). Profiles (perf) show no texture-pack code
near the top any more; a four-fighter match with 4x textures is the one case still a little under
60 fps, and what remains is the renderer's own work. - First load of a screen with packs on: the game decodes a screen's HD textures when they are
first drawn (the main menu's include 2048x2048 PNGs), so the main menu takes about 3 s to respond
on a Deck. A press during that time is lost. - The files differ in size from the Windows and macOS packs: 6,569,283,340 bytes against
6,212,168,677, the same 18,971 names. The recipe is the same (Pillow 12.3.0, PNG compression 3), and
the difference is expected from the zlib build bundled in Pillow's Linux wheel, which compresses
differently. The pixels have not yet been compared with a Windows or macOS pack: run
scripts/hd-pack-digest.pyon one; the Linux pixel digest is
14d09aa313ef713940f620abfc663ab078a181a0a5c750c70c4eaa6c85a9de7e. - Disk: about 6.6 GB of packs plus about 0.8 GB of reusable work files in the data folder; on a 64 GB
Deck, choose a data location with room (a microSD card works; on exFAT setup copies instead of
linking, which takes longer). - Windows: Vlad's Windows regressions of this release are all green (2026-10-11).
- macOS is untested in this release: the shared texture-pack change (the cheap re-check) has
not been run on a Mac; CI builds it and passes the texture-pack fixture on macOS, but no game
run or regression. Report anything odd with HD packs on a Mac. - Not checked: the HD option on a desktop Linux distribution with its own
toolchain; a person playing with the packs in handheld and docked mode.