Releases: elliotttate/DKC2Recomp
Release list
DKC2Recomp v0.0.5 Refresh 2 - macOS + Windows
You must supply your own Donkey Kong Country 2 ROM (USA v1.0, 4 MiB,
SHA-256 35421a9a...). No ROM data is included or distributed here.
Full-game validation
The full game has been tested from start to finish and is working well across
all levels.
Refresh 2
- The Windows x64 app has been rebuilt from the current SDL2/OpenGL runtime and
now includes the portable audio improvements shipped in the refreshed Mac
build: a 1024-frame device buffer, queue priming, and dynamic audio rate
control. - The Apple-silicon Mac app includes display-linked frame pacing. On the tested
ProMotion MacBook Pro, every one of 1,259 measured gameplay frames was shown
for exactly one refresh; the previous free-running clock dropped or doubled
a frame about twice per second. - Both platforms include the 16:10 presentation mode and the experimental
Reconstruct upscaler with dither decoding. - The save unlock tool can clear every level, open the Lost World, and set
Kremkoins or quick-save Banana Coins.
Downloads
- Windows x64: extract the complete ZIP and run
DKC2Recomp.exe. Keep
SDL2.dlland theassetsdirectory beside it. - macOS arm64: open
DKC2Recomp.app. The app is ad-hoc signed but not
notarized; Control-click it and choose Open if Gatekeeper blocks the
first launch.
Validation
Windows: 60 application/runtime tests passed together, including the ROM,
SDL2/OpenGL, CRT, audio-rate, pacing, diagnostics, widescreen, and two-cycle
attract-mode checks. The packaging test also passed under its required dirty
fixture. The uploaded ZIP was extracted fresh and its packaged executable
completed a hidden 180-frame run at 16:10 with Reconstruct and dither decoding,
then exited cleanly.
macOS: the included archive is byte-identical to the refreshed, tested Mac
artifact built from commit 63ed6e4. That build passed 53 of 53 CTest checks,
including hidden app smoke runs, deep strict code-signature verification, and
the display-linked gameplay cadence measurement described above.
DKC2Recomp v0.0.5 - macOS + Windows
You must supply your own Donkey Kong Country 2 ROM (USA v1.0, 4 MiB,
SHA-256 35421a9a…). No ROM data is included or distributed here.
Full-game validation
The full game has been tested from start to finish and is working well across
all levels.
Native builds are included for:
- Windows x64 — extract the complete ZIP and run
DKC2Recomp.exe. This
uses the full SDL2/OpenGL display path, including 16:10 and the experimental
Reconstruct upscaler with dither decoding. - macOS arm64 — macOS 26, ad-hoc signed, and not notarized. Control-click
the app and choose Open if Gatekeeper blocks the first launch.
What changed since v0.0.4
Game logic
- Enemies whose behaviour script switches on touch damage no longer freeze at
that point. The sprite sub-state dispatcher indexes a 16-slot table with two
null slots after its first six handlers and a repeat of them for that flag;
the recompiler had cut the table to six, so such objects took an
out-of-bounds path and their scripts never stepped again. Seen as Screech's
Sprint's Kloak hanging idle instead of throwing its TNT barrel; every enemy
that uses the flag is affected.
Stages that now present in widescreen
- Arctic Abyss, Castle Crush, Toxic Tower, and the K. Rool Duel arena. Their
scroll handlers were not classified, so they fell back to a bounded 4:3
screen with black bars. - Level-name cards are presented as bounded screens between black margins.
Level-wall presentation
- Continued walls now show what the level map places beside them instead of a
copy of the wall's edge column, which repeated features such as a mine's
panel of red lamps once per margin column. - The glide slides the frame at a hold the level map reveals, not only at the
map's first page: where the player is pinned at the authored world's edge
with nothing beyond it (Screech's Sprint's start), the frame slides so the
void never shows, and the bias moves at most one pixel per frame so a hold
that comes and goes never jolts the picture. - A wall standing on a floor that continues past it is continued; a walled
void run beside a held wall is continued; the proving row of a wall must be
two metatiles thick.
Fixes in specific stages
- Toxic Tower: the backdrop no longer shows through the castle wall in
flickering patches (plane cells are judged by character transparency, and a
band whose rows hold a strip that stops short of the wrap repeats the ring),
and a one-frame flash of repeated ring columns while riding Rattly is gone
(the terrain phase follows the frame's dominant scroll when nothing is at
the camera phase). - Red-Hot Ride and Hot-Head Hop: foreground rocks and far spikes are presented
as static plane bands; steam columns no longer appear over solid rock beside
the view. - Bramble Blast, Bramble Scramble, Slime Climb, Barrel Bayou's intro, Haunted
Hall's Kackle, Parrot Chute Panic's lower half, the ship hold's water
surface, the vertical ship's mast, and the Gangplank Galleon rigging each
received a margin fix; objects no longer vanish from a margin while still on
screen, and sprites are no longer cut at the right edge near a level's left
wall.
Experimental
- A Reconstruct upscaler for high-density displays, off by default.
Diagnostics
- The headless runner can replay the desktop app's rewind and fast-forward,
reload a savestate at chosen frames, print the prefill's metatile fill map
with ids, dump every scanline band's scrolls and policies, and print an
object's record each frame; the trace reports the window and colour math
registers and a chained-continuation count.
Validation
macOS: 50 of 50 CTest checks including the hidden app smoke runs, a
44-state Quick Save corpus at 16:9 and 16:10 with every native center
pixel-exact and no failures, and deep strict signature verification of the
packaged app.
Windows: all 58 test cases passed under their required preconditions (57
application/runtime tests together, plus the packaging test with its expected
dirty-tree fixture). The uploaded ZIP was then extracted fresh and its packaged
executable completed a hidden 180-frame SDL2/OpenGL run at 16:10 with
Reconstruct and dither decoding before exiting cleanly.
macOS build refreshed on 2026-09-03
The Mac archive on this release was rebuilt from commit 63ed6e4. The Windows
archive is the original v0.0.5 build and does not include these changes.
Frame pacing
- The Mac app now paces each frame on the display's own refresh instead of a
free-running clock. The window's display link delivers refresh ticks at a
requested 60 Hz, so a ProMotion panel ticks at 60 rather than 120, and each
frame is presented right after its tick, on the same refresh phase every
time. Measured during scrolling gameplay on a ProMotion MacBook Pro, the
earlier clock dropped or doubled a frame about twice a second while the FPS
counter read 60; the display lock shows every frame for exactly one
refresh.DKC2_DISPLAY_LOCK=0keeps the old clock. - Audio keeps step with the display through dynamic rate control within half
a percent of unity, and the audio device buffer is 32 ms instead of 64. DKC2_PACING_LOG=<file>records the cadence and
scripts/analyze_pacing_log.pysummarises it.
Save tool
scripts/dkc2_unlock_levels.pymarks every level of a save file as
cleared, can open the Lost World (--lost-worldmarks Klubba's kiosks as
paid and the five Lost World levels as beaten, which opens Krocodile Kore),
sets Kremkoins (--kremkoins), and sets Banana Coins in a quick save
(--banana-coins; the game does not store them in the file). It backs each
file up beside itself and can repair a file the game shows as empty.
Validation of the refreshed Mac build: 53 of 53 CTest checks including
the hidden app smoke runs; the display-locked cadence was measured on a
loaded gameplay state with every frame shown for one refresh; the packaged
app passes deep strict signature verification and its extracted executable
hashes identically to the built one.
DKC2Recomp v0.0.4 (Alpha) - macOS
⚠️ This is an alpha / pre-release
Donkey Kong Country 2 is not finished. This build is published as an early
alpha so the current state is testable. Expect missing, wrong, or unstable
behaviour outside the tested paths, and treat the widescreen path as
experimental.
You must supply your own Donkey Kong Country 2 ROM (USA v1.0, 4 MiB,
SHA-256 35421a9a…). No ROM data is included or distributed here.
This release is the native macOS build (arm64, macOS 26, ad-hoc signed, not
notarized: Control-click the app and choose Open if Gatekeeper blocks the
first launch).
What changed since v0.0.3
Level-wall presentation
- The inward view bias at level walls froze the picture for the camera's
first 43 pixels away from a wall, then scrolled at catch-up speed while
every sprite, HUD included, slid across it. The new default, Glide,
keeps the wide frame inside the level so nothing past a wall is ever shown,
but releases the inward view one pixel per eight pixels of camera travel:
the background scrolls at seven eighths of the camera speed for 344 pixels
and is then centered and locked. - The pause menu's Settings page gains a Level edge choice, remembered in
launcher.cfg: Glide (default), Reflect terrain past the wall (view locked
to the game's camera, the nearest authored columns mirrored into the
unauthored strip), Black past the wall, and Shift view inward at the wall
(the previous behaviour).DKC2_WIDESCREEN_EDGE=reflect|bars|shift|glide
overrides it for one run.
Structural widescreen rules instead of per-scene fixes
- Widescreen policy is now derived from live PPU geometry each frame: bounded
backgrounds repeat their rendered scanline, a 64-column allocation whose
extension page is another enabled layer's map counts as bounded, a bounded
backdrop in a 64-column allocation continues each line at the period its
own pixels prove, rolling terrain layers are classified per HDMA scanline
band read from the cartridge's own tables, and a second physical terrain
layer reads the owner's world-keyed store through an alias view. This
removes the Mudhole, Topsail, Mainbrace, Krow's Nest, Parrot Chute,
ship-hold, split-scroll role-swap, west-reflection, and east-mask special
cases while reproducing their accepted output. - A new corpus tool replays every preserved Quick Save at 4:3, 16:9, and
16:10 and checks the native center, visible margins, old-boundary seams,
raw VRAM fallbacks, and runtime failures; the headless widescreen trace
reports the presentation bias, visible margins, and HDMA band count.
Validation
49 of 49 CTest checks including the hidden macOS app smoke runs, a 15-state
Quick Save corpus at 16:9 and 16:10 with every native center pixel-exact and
no failures, held-Right motion profiles from the wall states under every
policy, and deep strict signature verification of the packaged app.
DKC2Recomp v0.0.3 (Alpha)
This is the first native Apple-silicon Mac release from this fork. DKC2Recomp
is still an alpha project, so keep normal in-game saves and important save
states backed up.
Highlights:
- Native macOS
.appwith a Dock icon and AppKit Game/View menus. - 4:3, Mac-oriented 16:10, and 16:9 presentation modes.
- Pixel Sharp and Smooth fullscreen scaling.
- Escape returns fullscreen play to a window before opening the pause menu.
- Native Quick Save/Quick Load commands for Slot 1.
- Exact-rate 60.098811862 Hz Mac frame pacing.
- Widescreen terrain, rigging, rain, water, cabin-wall, and stationary-HDMA
fixes for the tested Pirate Panic, Topsail Trouble, Rattle Battle, Mainbrace
Mayhem, and Ship Hold/Lockjaw scenes.
This archive contains no ROM, SRAM, or save state. On first launch, select your
own legally obtained North American v1.0 ROM. The supported clean ROM is
verified by the app.
The app is arm64, targets macOS 26, and is ad-hoc signed but not notarized. If
Gatekeeper quarantines it, Control-click the app in Finder, choose Open, and
confirm once.
Validation:
- 48/48 configured macOS tests passed.
- The extracted release archive passes strict deep signature verification.
- Executable SHA-256:
ab49b7cf524a19b9c15e0be7ccc4c81a620d1c84b972dfedd34472c6f6067b4e - ZIP SHA-256:
9e232b389deb288f806acbda87e15646bb519ba3dd5699c3df59bbcf35a031c7
Known scope: this release includes exact-state and visible acceptance for the
reported scenes, but the full fresh-entry cross-layout matrix is not yet a
whole-game widescreen guarantee.