一个面向 MiSTer 的 FPGA 核心,支持七款 Midway Wolf-unit 街机游戏,以门电路而非模拟方式构建,修复了 NHL Open Ice 中长期存在的渲染漏洞(“黑冰”),并通过从真实 ROM 数据中提取测试用例实现了极高的 blitter 覆盖率。

Stars

10

7 天增长

暂无数据

Fork 数

4

开放 Issue

4

开源协议

暂无数据

最近更新

2026-07-28

AI 仓库情报摘要
FR-AI / ANALYSIS

为什么值得关注

它通过严谨的逆向工程和针对真实硬件捕获的交叉比对,解决了长期未解的 FPGA 渲染问题,同时在不使用模拟的情况下实现了高性能、时序闭合的设计。

适合谁使用

  • FPGA 爱好者和 MiSTer 用户
  • 街机游戏收藏者和保护者
  • 复古游戏开发者和硬件逆向工程师
  • 所列七款游戏的竞赛玩家

典型使用场景

  • 在 FPGA 硬件上运行 NHL Open Ice、真人快打 3、NBA Hangtime 等七款 90 年代中期街机游戏
  • 研究复杂街机系统的 blitter 和 DMA 行为
  • 利用真实捕获数据验证 FPGA blitter 的准确性
  • 修复街机核心中历史上难以发现的硬件漏洞

项目优势

  • 203/203 个 blitter 用例与独立模型交叉比对,包括 50 个真实捕获的 UMK3 blit
  • blit 覆盖量从 8.2% 提升至 94.3%,通过从实际 ROM 执行中提取测试用例实现
  • 时序在全部四个 PVT 角点上首次拟合即闭合,未放宽任何约束
  • 单个 RBF 支持七款游戏,并为 Rampage 提供专用时钟节奏

使用前须知

  • DCS 启动去咔嗒声修复未加门控,可能产生咔嗒声而非预期的短脉冲,可能无法解决目标问题
  • 交叉比对为双重转录,无法捕捉对参考源的共同误读
  • 七款游戏中有六款未在此基线版本上经过实机柜测试,真实硬件验证不完整

README 快速开始

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.

profilecabinetromset
00NHL Open Ice — 2 on 2 Challengeopenice.zip
01WWF WrestleManiawwfmania.zip
02Mortal Kombat 3mk3.zip
03Ultimate Mortal Kombat 3umk3.zip
04NBA Hangtimenbahangt.zip
05NBA Maximum Hangtimenbamht.zip
06Rampage World Tourrmpgwt.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. 🧊


项目描述

Midway Wolf unit arcade core for MiSTer - one core, seven cabinets

相关仓库与替代方案

根据分类、Topic 和编程语言匹配的相似项目。

fatemekhasraji
fatemekhasraji GitHub avatar

FashionMnist_LeNet5

An open-source SystemVerilog implementation of a LeNet-5 CNN accelerator for Fashion-MNIST inference, built around a 5×5 2D torus systolic array with Q8.8 fixed-point arithmetic.

AI 与机器学习
3