kawaks 中文文档 下载 App

为什么 ROM 不能解压不能改名

两条绝对纪律

官方帮助中心反复强调两条不能违反的规则:

DO NOT UNZIP OR RENAME ANY ROM FILE!

翻译成中文:不要解压也不要重命名任何 ROM 文件!

这两条规则被标为 Important Notice(重要通知)放在多个页面上,因为新手最容易犯这两个错误。

为什么不能解压

模拟器直接读 ZIP 内部结构

WinKawaks 内部有一个 ZIP 解压器,当它扫描到 roms/ 目录下的一个 .zip 文件时,会不解压、直接读取 ZIP 内部的文件名列表和文件内容,然后根据内部文件名判断这个 ZIP 对应哪款游戏。

假设你有一个 ZIP:

kof97.zip
├── kof97_p1.bin      ← 这些内部文件名是固定的
├── kof97_p2.bin      ← 对应 Neo Geo 基板的 PRG 1/PRG 2 芯片
├── kof97_s1.bin      ← 对应 FIX 固定层芯片
├── kof97_v1.bin      ← 对应 V 芯片
└── kof97_m1.bin      ← 对应 M1 音频芯片

Kawaks 看到 kof97.zip 内部正好有这五个文件,就知道这是《拳皇 97》的正确 ROM 集,于是识别成功。

解压后模拟器找不到

如果你手动解压了 kof97.zip,变成了 kof97_p1.bin、kof97_p2.bin 等散文件放在 roms/ 里,Kawaks 扫描到这些 .bin 文件后无法识别——它只认 .zip 包的内部结构,不会把散文件拼成一个游戏。结果就是载入列表里找不到拳皇 97。

为什么不能改名

文件名只是外层,CRC 才是真正签名

ROM ZIP 的外层文件名(比如 kof97.zip)和内部文件名(比如 kof97_p1.bin)都有严格的命名规范,但更底层的识别依据是 CRC32 校验码。

每一颗 ROM 芯片的原始数据都有唯一的 CRC32 值。模拟器内部维护了一张「游戏名 → 所有 ROM 芯片 CRC 列表」的对照表,当它读完某个 ZIP 包后,会计算 ZIP 内每个文件的 CRC 值,然后和对照表比对。全部匹配 = 正确的 ROM。

如果你改了内部文件名:

如果你改了外层文件名(比如把 kof97.zip 改成 拳皇97.zip):

CRC 不匹配会怎样

当 ROM ZIP 内部的文件 CRC 和模拟器对照表里的值对不上时:

CRC 不匹配的常见原因:

正确做法

ROM ZIP 下载完成后,保持它的原样:

  1. 不改名:外层 ZIP 文件名保持原样
  2. 不解压:直接把 .zip 文件放进 roms/ 或 roms/cps1 / roms/cps2 / roms/neogeo/
  3. 不修改内部:不要用 7-Zip 或 WinRAR 打开 ZIP 包修改内部文件
  4. CRC 校验:如果模拟器不识别,用 RomCenter 或 CLRMamePro 校验一下 ROM 集完整性