2 个稳定版本
1.1.0 | 2023 年 10 月 7 日 |
---|---|
1.0.0 | 2023 年 3 月 29 日 |
0.12.0 |
|
0.11.0 |
|
0.9.0 |
|
#210 在 命令行工具
75KB
2K SLoC
RetroArch N64 保存转换器
一个简单的转换器,用于将 Retroarch 的 Mupen64Plus 内核保存文件从 eep, mpk*, sra 或 fla 转换为 srm(或反之)。
当 SRM 文件被分割成其内容时,只有包含数据的那些内容会被创建。
这是一个控制台应用程序。图形界面版本请查看 ramp64-convert-gui,基于网页的版本请查看 ramp64-convert-web。
使用说明 TL;DR
按文件名分组(默认)
$ ra_mp64_srm_convert A.srm B.mpk B.eep C.fla C.srm D.srm D.fla F.mpk1 F.mpk3
输出
- A.eep, A.sra 或 A.fla,以及/或 A.mpk1, A.mpk2, A.mpk3, A.mpk4(所有新文件)
- B.srm(新文件)
- C.srm(如果存在且设置了
--overwrite
,则更新) - D.eep(如果设置了
--overwrite
,则覆盖),D.sra 和/或 D.fla;D.mpk1 D.mpk2 D.mpk3 D.mpk4(所有新文件) - F.srm(新文件)
注意:此程序只有在给定 --overwrite
时才会覆盖现有文件。
创建 SRM
示例 1
$ ra_mp64_srm_convert -c B.mpk B.eep C.fla F.mpk3
输出
- B.srm
示例 2
$ ra_mp64_srm_convert -c B.mpk B.eep C.fla F.mpk3 C.srm
输出
- C.srm
分割 SRM
示例 1
$ ra_mp64_srm_convert -s A.srm
输出
- A.eep A.sra A.fla A.mpk1 A.mpk2 A.mpk3 A.mpk4
示例 2
$ ra_mp64_srm_convert -s B.mpk B.eep C.fla F.mpk3 A.srm
输出
- A.eep A.sra A.fla A.mpk1 A.mpk2 A.mpk3 A.mpk4
使用方法
给定一组输入文件,程序将
- 根据文件名分组
- 如果没有
-c
或-s
标志:根据组中的第一个文件进行转换
- 如果文件是 SRM 保存文件,则其包含的保存将被导出
- 将创建新文件;只有当存在文件时,且设置了
--overwrite
,才会覆盖现有文件
- 将创建新文件;只有当存在文件时,且设置了
- 如果文件不是 RA Mupen64Plus 保存文件,则将创建一个新的 RA Mupen64Plus 保存文件
- 内容将来自第一个文件和组中的所有其他文件
- 创建新文件。
- 如果存在现有文件,且未设置
--overwrite
,则分组将在该点失败
自动模式
如果没有参数,程序将根据文件名(相同名称)将所有文件分组,然后根据组中第一个文件的类型创建SRM或拆分。
例如
$ ra_mp64_srm_convert A.srm B.mpk B.eep C.fla C.srm D.srm D.sra F.mpk1 F.mpk3
将输出以下内容
- A.srm -> A.eep, A.mpk1, A.mpk2, A.mpk3, A.mpk4, A.sra, A.fla(前提是每个保存中都有实际数据)
- B.mpk, B.eep -> B.srm(创建了srm)
- C.fla, C.srm -> C.srm(创建/更新了C.fla的srm)(需要--overwrite来更新C.srm)
- D.srm, D.sra -> D.sra(创建/更新了D.srm的sra)(需要--overwrite来更新D.sra)
- F.mpk1 F.mpk2 -> F.srm(创建了srm)
*.mpk文件将始终分配给第一个玩家控制器包。
强制模式
如果传递了参数-c
或-s
,则程序将强制进行创建或拆分。它将考虑所有文件,无论其名称如何,根据其保存类型作为输入或输出。
这将仅针对单个SRM文件操作。
创建
使用-c
或--create-srm
输入:*.eep, *.fla, *.sra和/或*.mpk(1-4)
输出:*.srm
例如
$ ra_mp64_srm_convert -c A.srm B.mpk B.eep C.fla C.srm D.srm D.fla F.mpk1 F.mpk3
将使用B.eep,D.fla,F.mpk1,F.mpk3在D.srm中创建SRM
拆分
使用-s
或--split-srm
输入:*.srm
输出:*.eep, *.fla, *.sra和/或*.mpk(1-4)
例如
$ ra_mp64_srm_convert -s A.srm B.mpk B.eep C.fla C.srm D.srm D.fla F.mpk1 F.mpk3
将D.srm拆分为D.sra,B.eep,D.fla,F.mpk1,D.mpk2,F.mpk3和/或D.mpk4
文件保存类型检测
- 如果文件存在,则其大小必须是可能的保存大小之一。
- Mempack保存将被读取并检查其内部校验和。如果失败,程序将假设该文件是SRAM保存。
- 如果设置了标志
--merge-mempacks
并且校验和失败,则程序将假设该文件是SRM保存。
- 如果文件不存在,则程序将检查其扩展名。
类型扩展大小表
保存类型 | 扩展名(s) | 大小(s) |
---|---|---|
N64 - EEPROM | *.eep | 512 B, 2 KiB |
N64 - SRAM | *.sra | 32 KiB |
N64 - FlashRAM | *.fla | 128 KiB |
N64 - Mempack | *.mpk, *.mpk(1,2,3,4) | 32 KiB |
RA - SRM | *.srm | 290 KiB |
帮助
A simple converter for Retroarch's Mupen64Plus core save files
Usage: ra_mp64_srm_convert.exe [OPTIONS] [FILE]...
Arguments:
[FILE]... The input file(s)
Options:
-v, --verbosity <VERBOSITY> Sets the output verbosity [default: normal] [possible values: quiet, normal, debug]
-c, --create-srm Forces the creation of a SRM file from all the given files
-s, --split-srm Forces the split of an existing SRM to all the given files
-m, --merge-mempacks When splitting a SRM, merge all controller packs in one file
--overwrite If set, any existing file will be overwritten
-o, --output-dir <OUTPUT_DIR> Sets the output directory
--change-endianness If set, EEP and FlashRAM bytes will be swapped
-i, --input-dir <INPUT_DIR> Use this flag to convert files from directory
-h, --help Print help
-V, --version Print version
构建
要求
- rust >= 1.68
只需使用cargo
来构建
$ cargo build --release
许可证
MIT
依赖项
~2–11MB
~99K SLoC