eightmouse/KiraPatch
GitHub: eightmouse/KiraPatch
针对宝可梦第三代 GBA 游戏的闪光几率修补器,通过规范化重掷机制生成真正合法的闪光宝可梦而非仅修改视觉效果。
Stars: 0 | Forks: 0




# KiraPatch
## 免责声明
KiraPatch 仅用于教育和归档目的。
请仅配合您合法拥有并自行转储的 ROM 使用。仅修补纯净的 ROM。
## 这是什么?
KiraPatch 是一个针对第三代 Pokemon GBA 游戏的修补程序,它在保持游戏正常数据写入路径的同时提高了闪光(shiny)几率。
支持的游戏:
- FireRed
- LeafGreen
- Ruby
- Sapphire
- Emerald
在修补之前,会通过 CRC32 检测支持的纯净美版/欧版修订版。如果 ROM 不是已知的纯净匹配项,修补将被拒绝。
## 适用人群及用途?
KiraPatch 适用于那些希望在正常游戏过程中获得更高闪光几率,且不希望将闪光变为仅视觉效果伪造结果的玩家。
它面向希望实现以下目标的人群:
- 闪光初始宝可梦
- 闪光野生遭遇
- 闪光固定或礼物遭遇
- 不会因写入损坏而产生坏蛋
- 不会因仅视觉阈值的修改而导致 PKHeX 合法性错误
## 它是如何工作的?
推荐的模式是 `auto`、`canonical` 和 `reroll`。
在这些模式下,KiraPatch 不仅仅改变闪光检查阈值。相反,它修补了 Pokemon 生成流程,让游戏不断重掷,直到获得真正的第三代闪光结果,然后让游戏通过其正常路径存储该 Pokemon。
这意味着:
- 它修补的是真实的闪光生成,而不仅仅是视觉效果
- 它保持正常的 `SetMonData` 写入路径,以避免校验和损坏和坏蛋
- 它在写入任何内容之前验证 ROM
- 它总是写入一个新的输出 ROM,并且不会覆盖输入 ROM
关于高几率的重要说明:
- `1/16` 可行,但由于规范化重掷开销较大,可能会导致明显的卡顿
- `1/128` 或 `1/256` 对于正常游玩来说要流畅得多
遗留模式:
- `native` 和 `legacy` 是较旧的阈值式修补模式
- 如果您看重合法性,它们不是推荐的选择
## 闪光是仅视觉效果的吗?
不是。在 `auto` 或 `canonical` 模式下,闪光是真实的闪光,而非仅视觉效果的闪光。
如果游戏显示 Pokemon 为闪光,那么 PKHeX 等存档编辑器也应将其视为闪光。
## 它们合法吗?
是的,这就是规范化模式的意义所在。
在 `auto`、`canonical` 或 `reroll` 模式下,KiraPatch 旨在通过使用规范化重掷而不是虚假的视觉阈值修补,来保持生成的 Pokemon 合法。在支持的 ROM 上,初始宝可梦、野生遭遇以及测试过的固定或礼物路径旨在保持 PKHeX 合法性。
如果合法性对您很重要,请使用:
- `auto`
- `canonical`
- `reroll`
不要使用:
- `native`
- `legacy`
## 如何修补 .rom?
### 独立 Windows EXE
使用 `build_standalone.bat` 构建并运行 `dist/KiraPatch.exe`,或者使用现成的 EXE 文件。
该 EXE 现在是主要的面向用户的启动器。它打开一个紧凑的 GUI,您可以在其中:
- 将一个或多个 `.gba` ROM 拖放到窗口中
- 使用文件选择器手动添加 ROM
- 选择您想要的闪光几率
- 在 `auto` 模式下进行修补
推荐设置:
- `odds=128` 或 `odds=256` 以获得更流畅的游戏体验
- `odds=16` 如果您想要激进测试并且不介意死机或暂停
EXE 的输出命名:
- `.shiny_1inN.gba`
- 如果该文件已存在,KiraPatch 会自动添加版本后缀
### CLI
```
python shiny_patcher.py "Pokemon Emerald.gba" --odds 256 --mode auto
```
### 引导模式
```
python shiny_patcher.py --guided
```
如果未提供 ROM 路径,引导模式将自动启动:
```
python shiny_patcher.py
```
### 主要参数
- `input_rom`:源 `.gba` ROM 路径
- `--odds N`:所需的闪光几率,格式为 `N 分之一`
- `--mode {auto,canonical,reroll,native,legacy}`
- `--output PATH`:可选的输出 ROM 路径
- `--overwrite-output`:允许替换现有的输出文件
- `--guided`:交互式向导
- `--folder PATH`:在引导模式下要扫描的文件夹
### 支持的纯净 ROM CRC32 值
- `0xF0815EE7` - Pokemon Ruby Version (USA, Europe) Rev 0
- `0x61641576` - Pokemon Ruby Version (USA, Europe) Rev 1
- `0xAEAC73E6` - Pokemon Ruby Version (USA, Europe) Rev 2
- `0x554DEDC4` - Pokemon Sapphire Version (USA, Europe) Rev 0
- `0xBAFEDAE5` - Pokemon Sapphire Version (Europe) Rev 1
- `0x9CC4410E` - Pokemon Sapphire Version (USA, Europe) Rev 2
- `0xDD88761C` - Pokemon FireRed Version (USA) Rev 0
- `0x84EE4776` - Pokemon FireRed Version (USA, Europe) Rev 1
- `0xD69C96CC` - Pokemon LeafGreen Version (USA) Rev 0
- `0xDAFFECEC` - Pokemon LeafGreen Version (USA, Europe) Rev 1
- `0x1F1C08FB` - Pokemon Emerald Version (USA, Europe) Rev 0
## 结束
KiraPatch 围绕一个目标构建:在第三代游戏中提高闪光几率,且不产生虚假闪光、校验和损坏或 PKHeX 合法性问题。
从纯净 ROM 上的 `auto` 模式开始,选择一个合理的几率值(如 `1/128` 或 `1/256`),然后修补一个新的副本。
## 许可证
根据 MIT 许可证分发。有关更多信息,请参阅 `LICENSE`。
标签:Emerald, FireRed, Game Boy Advance, GBA, Generation 3, LeafGreen, PKHeX, Python, ROM修改, Ruby, Sapphire, 云资产清单, 存档修改, 宝可梦, 数据校验, 文档结构分析, 无后门, 游戏修改器, 游戏存档, 知识库, 补丁工具, 逆向工具, 逆向工程, 闪亮几率