wolf-unit
A MiSTer FPGA core for seven Midway Wolf-unit arcade games, built from gates rather than emulation, that fixes a notoriously elusive NHL Open Ice rendering bug (the 'black ice') and achieves high blitter coverage through real ROM data harvesting.
10
No data
3
3
No data
2026-07-28
Why it is worth attention
It resolves a long-standing FPGA rendering bug (black ice) through disciplined reverse-engineering and empirical cross-diff against real hardware captures, while delivering a high-performance, timing-closed design without emulation.
Who it is for
- FPGA enthusiasts and MiSTer users
- Arcade game collectors and preservationists
- Retro game developers and hardware reverse-engineers
- Competitive players of the seven listed titles
Use cases
- Playing NHL Open Ice, Mortal Kombat 3, NBA Hangtime, and four other Mid-90s arcade titles on FPGA hardware
- Studying the blitter and DMA behaviour of a complex arcade system
- Validating FPGA blitter accuracy against real captured data
- Debugging and fixing historically difficult hardware bugs in arcade cores
Strengths
- 203/203 blitter cases cross-diffed against an independent model, including 50 real captured UMK3 blits
- 94.3% of real blit volume now covered, up from 8.2%, by harvesting test cases from actual ROM execution
- Timing closed at all four PVT corners on first fit with no relaxed constraints
- Seven titles supported from a single RBF, with a dedicated clock cadence for Rampage
Considerations
- The DCS startup de-click fix is not gated and may produce a click instead of the expected blip; it might not address the intended artifact
- The cross-diff is a dual transcription that cannot catch a shared misreading of the reference
- Six of the seven titles have not been cabinet-tested at this baseline, so real-hardware validation is incomplete
README quick start
WOLF UNIT
One core. Seven cabinets. Zero sleep cycles.
Attention, cathode-ray casuals and dial-up remnants. Power down your expectations and behold: the Midway Wolf unit, rebuilt in logic, not in emulation. No interpreter. No approximation. No "close enough." Gates. Wires. Silicon obeying orders.
You think you remember these machines? Cute. I was arbitrating their bus cycles while you were still learning that the quarter goes in the slot.
🔮 THE MANIFEST
One RBF. Seven titles. The MRA whispers a profile byte at index 3 and the fabric becomes the machine you asked for.
| profile | cabinet | romset |
|---|---|---|
00 | NHL Open Ice — 2 on 2 Challenge | openice.zip |
01 | WWF WrestleMania | wwfmania.zip |
02 | Mortal Kombat 3 | mk3.zip |
03 | Ultimate Mortal Kombat 3 | umk3.zip |
04 | NBA Hangtime | nbahangt.zip |
05 | NBA Maximum Hangtime | nbamht.zip |
06 | Rampage World Tour | rmpgwt.zip |
Rampage gets its own clock cadence because Rampage demanded it. The others fell in line.
❄️ THE BLACK ICE — SLAIN, WITNESSED, CLOSED
For as long as anyone has tried, NHL Open Ice on FPGA has drawn a rink of absolute void. Players skated on nothing. The puck crossed an abyss. Every build. Every attempt. Black ice.
Not anymore. And here is the corpse, laid out for inspection:
The blitter's 8-bit-per-pixel source look-ahead was carrying a fetch address across a row boundary. The hardware reloads that pointer from the row base on every single row. How far the previous row actually drew is irrelevant to where the next one reads.
It only bites when a row ends early. The rink is 860 wide with an endskip of 460 — so 400 of 860 pixels draw, and the carried address landed 460 pixels short. Every row after the first read the wrong source data.
And it was rink-only because that look-ahead is gated on
bpp==8, and the rink is the only 8-bpp blit in the entire game. One object class dies. Everything else renders flawlessly. That is why it hid for so long.
Diagnosed from the game's own DMA register writes. Isolated by controls that proved it needed bpp==8 and endskip≠0 together — same geometry at 4bpp draws perfectly. Root-caused by experiment before a single line of fix was written.
Confirmed on a real cabinet. The ice draws. 🧊
Description
Midway Wolf unit arcade core for MiSTer - one core, seven cabinets