Repository navigation
Releases: vyanhursky/DefJamFFNY-recomp
Release list
Def Jam: Fight for NY — Recompiled v0.9.1
v0.9.1 — Reuse freed memory across matches
This bugfix release enables heap reclamation by default to prevent the guest
contiguous-memory arena from filling up during long sessions. The exhausted
arena was observed alongside upside-down menu icons, incorrect fight callouts
and persistent white UI rectangles in issue #26.
Changes
- Set
RECOMP_HEAP_RECLAIM=1as a runtime default on Windows, Linux/Steam Deck
and macOS, allowing freed guest-memory blocks to be reused across matches. - Add
[CONTIG] high-water N MiB of 64 (reclaim on|off)diagnostics in 4 MiB
steps to make arena growth visible in gameplay logs. - The scene-purge proposal from PR #27 is excluded; the fix is
PR #28.
Validation and monitoring
The Windows reporter's experimental-build log confirms reclamation enabled,
with zero arena-exhaustion messages during roughly 52 minutes of logged
rendering and at least 20 match starts. The highest reported watermark is
52 MiB, with no 56 MiB threshold reached in the 64 MiB arena. Earlier affected
logs contained 1,469 exhaustion messages across three sessions, beginning after
7–8 match starts. The reporter reports no errors so far; the owner also reports
a successful Steam Deck play-test with the change. All 25 PR CI checks passed.
The Windows comparison spans an earlier version and a reinstall, so it is not
a controlled same-version A/B. No new native macOS gameplay test or controlled
performance benchmark was performed for this fix. We will continue monitoring
issue #26 for recurring corruption or new regressions.
Updating
Run the setup for your platform and update the existing installation. The
setup builds the game locally from your own dump and preserves player data.
For diagnosis, RECOMP_NO_HEAP_RECLAIM=1 suppresses the new default. Also remove
any explicitly supplied RECOMP_HEAP_RECLAIM value for this comparison: the
runtime enables reclamation whenever that variable exists, even if it is 0.
RECOMP_NO_DEFAULTS=1 continues to skip all runtime defaults.
Def Jam: Fight for NY — Recompiled v0.9.0
v0.9.0 — Widescreen (beta)
The game can now be played in widescreen. Pick a widescreen Picture shape on the launcher's
Display page and the 3D view gets wider (more of the arena and crowd at the sides, the same
vertical view), while menus, the fight HUD and movies keep their shape. It is off by default and
marked beta: this release is for play-testing it, on Windows first and now on Linux, the Steam
Deck and macOS.
How to try it
- Start the game; on the launcher's Display page set Picture shape to
widescreen (auto)(your screen's shape: 16:9 or 16:10), or16:9/16:10.21:9and
32:9are there too, marked experimental. - Under it, optionally: Fight HUD position (screen edges, or a centred 16:9 box on very wide
screens), Story cutscenes (authoredkeeps the game's own 16:9 framing,fillalways fills
the screen), Beside 4:3 pictures (blurorblack) and Widest field of view. - Press Play. Widescreen starts with the game: changing it later in the F1 overlay needs a
restart.4:3andstretchwork as before.
What changes in widescreen
- 3D (fights, Free For All, Story hub, shops, cutscenes): Hor+, a wider horizontal view at the
same vertical view. The fight camera behaves as before; it just sees more at the sides. - Story cutscenes: the game already framed them for 16:9 (a 640x360 letterbox at 4:3); in
widescreen they fill a 16:9 screen with that framing, and get thin bars at 16:10. - Menus, loading posters and movies: centred at their 4:3 shape, clipped to their box.
On Windows, movies, posters and 2D-only menus get a soft blurred extension at the sides
(blackturns it off); on Linux and macOS the sides are black for now. - Fight HUD: health bars, names and scores move to the screen corners (all four in a
three- or four-fighter match); the timer and centred text stay in the middle. - 3D inside menus (the sketch artist's head and body, a created fighter's portrait on the
versus poster, character previews) sits inside its panel.
How it works
The game's own 3D view is widened in game code (src/patches/widescreen.c: all 3D aspect comes
from one function, and the game's field of view is horizontal). The renderer draws into a wider
canvas, places each 2D batch (centred, anchored to an edge during fights, or stretched for
full-screen fades and tints), and fills the sides beside centred pictures (toolkit fork branch
defjam/widescreen). The research, the design and the full work-package list are in
docs/widescreen.
Validation and limits
- Windows (D3D11): the owner's play-test at 16:9 (fights, Story mode with a created fighter,
cutscenes, crib, shops, menus) and fixes from it: blurred sides over 3D scenes, torn tutorial
prompts,autotaking the window's shape, the widescreen choices missing from the launcher, the
sketch artist's model and the created fighter's poster portrait. Scripted checks at 16:9 and
16:10 (one-on-one, Free For All, Story intro and cutscenes, crib, gym, Unlock Fighters, the
character creator, a Story fight with a created fighter); boot soak 10/10 at 16:9. With
widescreen off the quick regression is unchanged (golden frames identical). - Steam Deck (Linux, Vulkan): scripted runs on a Steam Deck (2026-10-12, on main with v0.7.3's
performance fixes and the HD packs with a 2 GiB cache): a one-on-one fight, a four-fighter Free For All
and a four-minute Terrordome match at 16:10, the Story intro at 16:9 and 16:10, and a fight with the
launcher settingwidescreen (auto)in full screen (it resolves to 16:10, swap chain 1280x800). No
crashes, saves restored, a median of 60 frames per second (120 presents per 2 s) everywhere, GPU time
about 3 ms of the 16.7 ms frame. With widescreen off the loading-screen, title and main-menu golden
frames match. Not covered: pause and popups, shops, the Story hub and the rest of the hand
play-test list. macOS (Vulkan/MoltenVK): see the Mac validation below. The blurred side fill is
Windows-only so far (black sides on Vulkan). - Known: a one-pixel sliver of a slide-in element can show at the edge of the 4:3 box on two
menus; 21:9 and 32:9 have not had a venue sweep (some arenas may show unfinished edges); Story
cutscenes on screens wider than 16:9 widen instead of sitting in a 16:9 box; the pause menu and
in-fight popups were not reached by the scripted checks. - Not in this release: AI-extended movie sides (a to-do after the trial, see
08-fmv-ai-pipeline.md); changing the shape without a
restart.
macOS validation
Installed the exact CI setup on Apple M1 Pro using only its bundled build
dependencies, then built the Mac correction with those same dependencies.
Scripted checks cover original/HD textures at 4:3 and 16:9, a 16:10 replay,
four-fighter HUD placement, Story intros at 16:9 and 16:10, and HD crib/gym
previews. All five capture variants match the 80-record Windows gameplay golden.
widescreen (auto) now accounts for a Mac screen's notch safe area, so a
notched 16:10 screen selects the fullscreen content shape. Explicit picture
shapes retain their behavior. The complete source suite passes 352 tests;
the full regression covers fights, combat/results, replay, Story intro/gym and
three successful soak boots. Corrected automatic fullscreen reaches combat at
16:10, and the launcher/F1 overlay render and close correctly. The raw full
regression retains known diagnostics; see the report below.
The strict audio underrun check also fails in the accepted pre-widescreen
Mac build (existing issue #11). The historical stream callback diagnostic appeared during an HD capture
and one off-mode crib boot; the symptom predates widescreen, and a subsequent
16:10 replay was clean. The crib was reached despite the diagnostic; its strict
failure is retained. Raw failures are retained. See the
Mac validation report for identities,
measurements, coverage and limits. The existing v0.8.0 setup-updater release
remains unchanged.
Def Jam: Fight for NY — Recompiled v0.8.0
v0.8.0 — Setup release selection and recoverable updates
The Windows, macOS and Steam Deck setup wizards can fetch stable GitHub releases,
select a compatible platform setup, and run that release's own installer engine.
Changes
- Install, repair, clean-update and clean-rebuild from setup. Clean operations
compile a fresh candidate from the verified installed dump without requiring
the original disc image. - Preserve saves, profiles, settings, caches, mods and HD texture packs.
- Verify downloaded setup checksums, provenance and payload inventory before
handing off to the selected release's bundled Python and engine. - Recover interrupted activation through an owned journal covering the stable
launcher, receipts and changed settings. Optional shortcuts reconcile after
the core installation commits. - v0.8.0 is the first updater-capable release (U0), protocol/data schema 1.
Downgrade is supported only between compatible updater-capable releases;
v0.7.3 and earlier cannot be downgrade targets. Historical remote setups are
available for fresh installation only; use their original setup for repair.
Validation and scope
Vlad confirmed testing complete and authorized merge/release on 2026-10-12.
PR #18's pre-release head passed all 25 hosted CI jobs, including the three
platform setup packages. Recorded Mac checks include 339 passing unit tests,
ten native synthetic installer/handoff/recovery cases, interactive wizard paths,
and a disposable owner-dump install and clean update preserving 120 files.
The detailed test ledger retains the limits of
that evidence and historical failures. Linux updater acceptance scope is Steam
Deck/SteamOS. macOS setup remains unsigned.
The release contains game-free setups, checksums and provenance. Players supply
and compile their own dump locally. No game executable or game data is shipped.
Def Jam: Fight for NY — Recompiled v0.7.3
v0.7.3 — Texture streaming and Steam Deck input
Smoother HD textures: the packs no longer stall the render thread when they load, and the
fight frame rate with the packs on is back near the packs-off rate on Windows. The Steam Deck
no longer sees each menu press twice.
Changes
- HD textures stream in the background. Replacement PNGs are decoded and mipped on up to
three low-priority worker threads, on Windows, Linux and macOS. The render thread only creates
the texture and copies the finished mip chain in; until a replacement is ready the original
texture is drawn.RECOMP_TEXTURE_SYNC=1restores the old synchronous path. On the Steam Deck
this cut the render-thread texture time from title to main menu from 4.9 s to 0.56 s, and the
slowest single upload from 348 ms to 24 ms (scripted, packs on). - Texture identity on Windows. The game identifies each bound texture by a SHA-256 of its
bytes. Windows read the clock in 15.6 ms steps, so the 8 ms re-check window expired on nearly
every bind and each texture was re-read every frame. The clock is now monotonic and
sub-millisecond, and each texture's re-check backs off: 8 ms while its bytes move, up to 64 ms
once stable. A texture whose bytes change on three checks in a row is drawn with its original
texture for up to 500 ms between checks. - Texture cache 2 GiB on every platform (was 512 MiB off Linux), so a four-fighter match keeps
its replacements resident. Set[textures] cache_mbto change it. - Presentation pacing and colour upload on Linux and macOS: the frame pacer sleeps to within
0.3 ms of the deadline instead of spinning, and linear A8R8G8B8 textures convert straight into
the upload buffer. - Steam Deck double input (D100). Under Steam Input the physical Valve pad and Steam's
virtual gamepad both reported each press. A physical Valve pad is ignored while a Steam virtual
pad exists, at start-up and on hot-plug. A Steam pad moves up to the lowest free player when
its player leaves; other controllers keep the player they were given. - Logging.
RECOMP_TEXTURE_TRACE=1logs[TEXPACK]every two seconds: replacements uploaded,
source revalidations and full hashes.[VKPERF]lines show frame cost on the Vulkan renderer (Linux and
macOS), and[XA2]lines show when the sound device runs dry.
Measured
Windows, Release build, faithful-hd pack, one scripted fight (regress.py --only fight),
presents per 2 seconds (floor 110):
| Build | Traced | Untraced |
|---|---|---|
| Before this release (per-bind identity check) | 94 (failed) | 98 (failed) |
| v0.7.3 | 120, minimum 95 | 120, minimum 106 |
Packs off, the quick regression (unit tests, three golden frames, one fight) passes 5 of 5.
The Steam Deck figures are scripted measurements on the Deck, recorded in PR #20 (not a play-test).
Known limits
- The Story tutorial fight on the Steam Deck averaged about 45 fps and was not reproduced by
script; FFA holds 58 to 60 fps. The new[TEXPACK]and[VKPERF]lines are there to show where
those frames go. - Audio gaps were not verified by ear.
- The Windows numbers above are from the scripted harness; no owner play-test on Windows has been
recorded for this release. - The Steam move-up for a Steam pad was not run on a Steam Deck with Steam Input; the automated
input fixture covers the other controllers. - The identity cache still costs a SHA-256 for each texture whose bytes change. The next step
would be write-tracking on guest memory, which is not in this release.
Def Jam: Fight for NY — Recompiled v0.7.2
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.
Def Jam: Fight for NY — Recompiled v0.7.1
v0.7.1 — Icons and Steam artwork
Every executable, app bundle, launcher and shortcut now carries the shield from the game's own
menus, and the Linux setup gives the game's Steam shortcut library artwork on the Steam Deck.
No gameplay or runtime code changes. This release follows the Linux release (v0.7.0): it builds
on the Linux setup and its Steam shortcut.
Changes
- Icons everywhere. The shield, rendered from the in-game texture at eight times its size
with its edge re-sharpened, on a dark plate with the glow of the title screen's skyline:- Windows:
DefJamSetup.exe,DefJamLauncher.exeand the game, each with file properties
(description, version, product), the Start-menu and desktop shortcuts, and the icons of the
wizard, launcher and game windows. - macOS:
Def Jam Setup.app,Def Jam Recompiled.app(and the Desktop alias and
~/Applicationscopy of it), and the Dock icon while the game runs. - Linux: the application-menu and desktop entries, the setup wizard window, and the game's
window and taskbar icon.
- Windows:
- Steam artwork for the Linux setup. With Add to Steam (or
--steam-shortcut), setup
reads the shortcut's id back from Steam and places a portrait capsule (the official cover with
the wordmark redrawn crisply on it), a wide capsule, a hero and a logo in the shortcut's
gridfolder. The title carries a FAN RECOMP tag so the port reads as a fan project; the
plain, tag-less set stays inbranding/for future editing. It never replaces artwork you chose, uninstalling removes only what it placed,
and--steam-artplaces it later for a shortcut you added by hand. Restart Steam or switch to
Gaming Mode to see it. branding/. All of it, plus a GitHub social preview image (plain and FAN RECOMP), is in the repository with
scripts/make-branding.py, which rebuilds the set from its masters. CI pins every file by
checksum (D98); seebranding/README.md.
The artwork
The artwork is the game's own: the shield, the title wordmark and the title-screen scene are
rendered from its textures, and the portrait starts from the official cover (a scan without its
logo, from a community upload on SteamGridDB). It remains the property of its rights holders;
the MIT licence does not cover it. The owner approved committing exactly these files.
Validation and limits
- Windows: the setup was built from this tree and its asset check passed (the payload
carriesbranding/); a full silent install from an XISO compiled the game, and the game exe,
the installed launcher and the setup exe each carry the shield and their file properties
(read back through the shell's icon and version calls); a running game window has its class
icon registered; a copy of the shortcut script, pointed at a temporary folder, made shortcuts
whose icon is the launcher's. The install check ran on a setup built before the version number moved
to 0.7.1 and before the FAN RECOMP files were added (neither touches the game); the final 0.7.1 setup was
then built from the pushed tree and passed the game-free asset check with all ofbranding/in its payload. - Linux logic: 22 unit tests pass on Ubuntu (WSL), including the binary shortcut-file
reader, the artwork placement (appid naming, the player's own art kept, uninstall) and the
desktop entry's icon. - Not checked: macOS (the bundle icon keys and the
.icnsare written but no Mac has run
them); a Steam Deck and Steam itself (the grid file names and the
appid read fromshortcuts.vdffollow Steam's documented layout but were not seen working);
the icon in the Dock and on Wayland taskbars; Windows icon caches may show an old icon until
they refresh. - The sources are 640x480-era art. The renders are as sharp as that allows; the backdrop is
graded, not invented, and the hero extends the skyline past the scene. - The setup scripts and the Linux launcher have no icon of their own (a shell script cannot
carry one); the setup tarball'sDefJamSetup.shshows a generic icon in a file manager.
Def Jam: Fight for NY — Recompiled v0.7.0
v0.7.0 — Linux and the Steam Deck
This release makes x86-64 Linux, and the Steam Deck in particular, a native platform alongside
Windows and macOS, with a setup that builds and installs the game for you. It runs natively, not
through Proton: Vulkan on the Deck's GPU, PipeWire sound and the Deck's own controls as a pad. The
launcher and F1 overlay of v0.6.2 are there too. Windows and macOS behave as in v0.6.2. No precompiled
game, dump or generated guest code is distributed: setup compiles the game on your computer from your
own supported USA Xbox dump.
Changes
- Linux setup.
DefJamSetup-0.7.0-linux-x64.tar.gz: unpack it and openDefJamSetup.sh(on the
Steam Deck, in Desktop Mode, double-click it and choose Execute). Same steps as the Windows and macOS
wizards (your ISO, XISO or extracted dump, an install and a data folder, shortcuts), plus Add to
Steam so the game starts from Gaming Mode. It brings its own Python and needs nothing else of yours.
On a computer without a compiler, such as the Deck, it builds in a container pinned to SteamOS 3.8's
library versions. The container is fetched once, about 1 GB, so the first install needs an internet
connection, and it then builds offline. The game runs on the system's own SDL3, Vulkan and shaderc. A
first install on the Deck takes about five minutes; an update about two.--silent,--uninstall
and the exit codes are as on the other platforms (guide). - Native Linux. Fixes found by the first Linux runs, in the toolkit (fork branch
defjam/linux-v0.6.1,
24724b5): the guest's 4 GB address window is reserved whole; the MMIO decoder handles the ALU forms
the USB interrupt handler uses; guest paths match files whatever their case, as on the console;
the audio and timer clocks no longer wrap every 18 seconds, and the audio deadline no longer runs
ahead after a pause; textures are converted in ordinary memory instead of write-combined staging memory
(movies went from 10 to 30 frames a second, and boot soaks from 0 of 10 to 10 of 10). In the game:
dladdrbuilds, and test runs without a window can be stopped with Ctrl+C. - Vsync only at multiples of 60 Hz, as on Windows. The Deck OLED's 90 Hz panel and a 144 Hz monitor
held the title to about 40 frames a second with vsync on; the game now paces itself there. The log's
[HOST] display refreshline says what was found. - Building by hand on the Deck. The guide builds in a podman image pinned to SteamOS's libraries:
a current Arch Linux container links Dear ImGui's maths against glibc 2.43, which SteamOS 3.8 does not
have (guide). - CI builds and checks the Linux setup on every change, and the release attaches it with its SHA-256
and provenance, like the other two setups (D96).
Try it
Windows and macOS: update through your setup as for any release. Linux and Steam Deck: download the
tarball from this release and follow Linux setup. The setups are
unsigned.
Validation and limits
- Steam Deck OLED, SteamOS 3.8: install, update, repair and uninstall through the setup; the installed
game played by Vlad ("looks good"). The regression run on the Deck:--quick5 of 5, launcher and
overlay checks 2 of 2, boot soak 3 of 3, and 12 of the 14 checks of the full run (combat and versus fail
only on a few audio-queue underruns). - Vlad's full regressions on Windows and macOS of this release's code found no regressions.
- A little audio clipping or distortion on the Deck (#11).
- On displays that are not at a multiple of 60 Hz (75, 90, 100, 144 Hz) the picture can tear, since the
game paces itself without vsync. - HD textures are not offered by the Linux setup yet.
- Not tried: a desktop Linux distribution with its own compiler (
--toolchain host), the wizard
driven by hand from start to finish, the Steam shortcut started from
Gaming Mode, Proton.
Def Jam: Fight for NY — Recompiled v0.6.2
v0.6.2 — the launcher and in-game overlay on macOS
This release brings the start-up launcher and the F1 settings overlay, which Windows has had since
v0.4.0, to macOS on Apple Silicon. It is the same screen on both: display, texture, controller,
pad-button and keyboard settings, saved as you change them. The Windows game is unchanged. No
precompiled game, dump or generated guest code is distributed: setup compiles the game on your Mac
from your own supported USA Xbox dump.
Changes
- The launcher. A window appears every time the game starts, before the game's own window, with
the settings and Play and Quit buttons. Settings that are read only at start-up (render scale,
who plays, how many controllers, the pad backend) apply to that very launch. Tick Skip the launcher
at start to go straight in; hold Shift while openingDef Jam Recompiled.appto see it again, or
open "Def Jam Recompiled.app" --args --launcher(--no-launcherskips it for one start).
Closing it with the red button or Cmd+Q quits without starting the game. It is drawn through Metal by
SDL's renderer and is sharp on a Retina display. - The overlay. F1 (or the pad's guide button, or both stick clicks held for half a second) opens the
settings over the picture while the game keeps running with every input held at rest; Esc, the pad's B
or the same key closes it. The pointer shows while it is open, also in full screen. On a Mac keyboard
F1 is often the brightness key, so use fn+F1 or choose another key in the General page.
It is drawn by the toolkit's Vulkan present step, after the picture has been scaled into the window,
so it is never in a test capture. - Every page works with mouse, keyboard and pad. Learning a key or a pad button for a binding, the live
view of each pad, the rumble test, and Show settings.ini in Finder are all there. - Setup. The macOS setup now carries the Dear ImGui source (pinned by hash) and builds it offline with
the game.Def Jam Recompiled.apphands the two launcher options on to the game and nothing else. - Toolkit.
d3d8_vk_set_overlayin the Vulkan backend (defjam/macos-launcheron the fork): a render pass
on the window's image after the blit, opened only on frames where the host asks for it. A host that sets
no overlay is unchanged.
Try it
Update through the macOS setup as for any release (the setup is unsigned: macOS blocks it the first
time; choose Done, then System Settings → Privacy & Security → Open Anyway). Start the game as usual.
Validation and limits
- Checked on arm64 macOS 26 by scripted runs, not by a person at the keyboard (the Mac's screen was locked
during development): the launcher's rendered frame read back and looked at, tabs and checkboxes
clicked, a changed setting found insettings.ini, Play continuing into the game and Quit leaving,
--launcherand--no-launcher; the overlay opened by F1 through the real SDL event path, a tab clicked,
an overlay key learned and saved, and opened and closed by a virtual gamepad; the window's picture
read back with the overlay on it. The regression results are in the release record
(PROGRESS.md, work log 2026-10-09). - Not run: a full session by hand with a real keyboard, trackpad and DualSense; Shift held at start through
the app bundle; macOS before 26; Intel Macs; the setup packaged and installed from the dmg with this
change (the packaging change is covered by the unit tests and the asset check only). The Linux build compiles
from the same sources and has not been run. - Windows was not re-run for this release. The Windows launcher and overlay are expected to behave as
in v0.6.1: their code (pc_ui.cpp) is shared and was only given platform guards around the Windows-specific
calls (the lock, the clock, the fonts, the window type), and the Windows-only files are untouched. Windows CI
does not build the game. A Windows build and a click through the launcher follow separately. - Changing the window width or height in the overlay resizes the window at once, as on Windows (a first test by hand found
that the settings changed but the window did not; fixed before release). - Text boxes take typed characters, not input-method composition. Smooth (trackpad) scrolling in the overlay
is not tuned.
Def Jam: Fight for NY — Recompiled v0.6.1
v0.6.1 — macOS setup and HD textures on macOS
This release adds a setup installer for Macs with Apple Silicon and draws the optional
HD texture packs through Vulkan on macOS. The Windows game is unchanged. No precompiled
game, dump or generated guest code is distributed: setup compiles the game on your Mac from
your own supported USA Xbox dump.
Changes
- macOS setup (Apple Silicon).
DefJamSetup-0.6.1-macos-arm64.dmgholds a native
wizard with the Windows wizard's steps: your ISO/XISO or extracted dump, separate install
and data folders, an unchecked HD texture option, a desktop-shortcut choice, Install /
Repair, logs, Play and Cancel, plus silent mode (--silent,--uninstall,--hd-textures)
with the same exit codes. It needs no Terminal, Homebrew, CMake or Python of your own and
no internet connection. See the installer guide. - Command Line Tools. Apple's compiler cannot be bundled. If the Xcode Command Line
Tools are missing, setup stops with exit 3 and links Apple's instructions. - A launcher app made on your Mac.
Def Jam Recompiled.apptakes the play lock, supplies
the data folder, keeps the ten newest play logs in~/Library/Logs/DefJamRecompiledand
becomes the game; setup adds copies in~/Applicationsand on the Desktop and removes
exactly those on uninstall. - HD textures on macOS. The Vulkan renderer now keeps mip chains, honours the mip filter
and uploads each level, and the pack loader runs on macOS and Linux (stb PNG decoding,
the system SHA-256). Packs are the same files as on Windows. Without a launcher or overlay
on macOS yet, turn them on or off with[textures]insettings.ini. - Bundled, pinned runtime. Python, CMake, Ninja, SDL3, shaderc and MoltenVK (linked
directly, no Vulkan loader) ship in the payload, each pinned by SHA-256 or commit; the
game build ignores/opt/homebrewand/usr/local. The toolkit no longer links OpenSSL
(it never called it) or needs pkg-config. - HD generation fix. Parallel workers could write the same texture through one temporary
file name and stop the run; each now writes through a name of its own.
Try it
Open the disk image and open Def Jam Setup. The setup is unsigned, so macOS blocks it
the first time: choose Done, then System Settings → Privacy & Security → scroll to
Security → Open Anyway, and confirm. You do this once.
Validation and limits
- Checked on arm64 macOS 26 with
/opt/homebrewand/usr/localmade unreadable: a full
silent install from an XISO (extract, analyze, lift, compile), the launcher starting the
game with the receipt's data folder, a repair while the game runs refused (exit 5),
shortcuts created and removed, and the installed build passing the title, menu and
fight checks. - HD: the full 18,971-image pack (6,212,168,677 bytes, identical to the Windows build's)
generates in about two and a half minutes, loads with 12-level mip chains, and the title,
menu and a fight match the goldens with packs on, the fight holding a median of 120
presents per two seconds. Frames were compared with packs on and off by eye. - Windows was not re-run for this release. The Windows setup and game are expected to
behave as in v0.6.0, but this release changes shared code (the setup engine and packager,
the asset checker, the HD corpus writer and the pack loader, whose Windows code was moved
behind a small host-services block, not rewritten). Windows CI covers the unit tests, the
setup build and the pack fixture; a real Windows setup run follows separately. - Not yet validated: a Mac with nothing installed (a clean user or virtual machine),
macOS versions before 26, Gatekeeper's first-open prompt on a downloaded copy, a full
setup run with the HD option from the wizard itself, and the first-time hitch when a
texture is first shown on slower Macs. - Still to come on macOS: the launcher and overlay (v0.6.2). Linux has no installer.
- Generated pack folders are named after the setup's HD scripts, so a setup that changes them
makes new packs and leaves the old ones (about 6 GB each) in your data folder; delete the
ones you no longer use frommods. - The Windows setup and game are as in v0.6.0 apart from the HD generation fix above.
Def Jam: Fight for NY — Recompiled v0.6.0
v0.6.0 — Optional faithful HD textures
This release adds Windows Direct3D 11 HD texture support and optional
Lanczos 4x generation in Setup. The textures are generated locally from your own
supported USA Xbox dump. The downloadable installer contains maintained source
and tools; it contains no game artwork, generated game code or game executable.
Install and play with HD textures
- Run
DefJamSetup-0.6.0-windows-x64.exeand choose your dump, installation folder
and separate data folder. Existing installations should use the same folders. - Select Apply HD texture upscale during install (increases install time).
This option starts unchecked; installation also works with original textures. - Allow the local game build and CPU texture processing to finish. Select Play,
use your shortcut, or openDefJamLauncher.exein the installation folder. - To return to original textures, open Textures in the launcher or F1 overlay,
disable Use HD texture packs, and restart the game.
HD PNGs occupy 6.21 GB (5.79 GiB) for 18,971 unique static images. Reusable
previews, originals and metadata add about 0.65 GB. Setup checks for 15 GiB
additional working space when HD is selected, beyond its normal build and dump
requirements. Upscaling took approximately four minutes on the development PC;
your CPU, storage and local compilation time determine installation duration.
Silent mode adds --hd-textures to the normal Setup arguments. Leaving this flag
off during an update preserves existing HD settings. Close the game before
repair/update. Older generated packs and caches remain in the data folder.
Changes
- Content-addressed PNG and classic BC1/BC2/BC3 DDS replacement packs. Original
texture dimensions, atlas coordinates, filtering and addressing remain intact. - Bounded cache with fallback to original textures and restart-based pack selection.
PNG mips support opacity-aware or independent channel filtering. - Faithful Lanczos processing keeps colour and alpha separate, pads edges and
spreads UI colour into transparent pixels where appropriate. No neural model
or GPU dependency is required for Setup generation. - Local inventory, category/search gallery, RGB/alpha comparison, review flags
and reproducible processing tools for later artwork passes. - Setup progress, resumable generation, verified pack assembly and final activation
with preservation of unrelated settings and custom pack selections.
Scope and validation
Validation is recorded in the release validation record:
Release and Debug full game regressions (14 of 14 each), a packaged Setup run with
HD textures selected from a real dump (exit 0; the installed game loaded the
18,971-image packs), and hosted CI (Windows, macOS, Linux). Not exercised against a
real dump: Setup update, repair and cancel with HD, the unchecked-HD packaged run,
and cold/warm performance of the full pack.
HD replacement currently targets Windows Direct3D 11. macOS/Linux/Vulkan keep
their existing original-texture paths. Font outlines, HD movies and widescreen
remain follow-ups. One unsupported static encoding retains its original texture;
runtime transformations and unsupported/dynamic resources also fall back.
The owner accepted the full static Lanczos gallery; another customization/fighter
artwork pass can be revisited later.
See HD texture usage, Setup guide and
processing/review workflow. GitHub source archives omit
the toolkit submodule; manual builds require a recursive clone of v0.6.0.