#保存文件 #保存 #retro-arch #输入文件 #工具 #模拟

app ra_mp64_srm_convert

一个简单的应用程序,用于将 Retroarch Mupen64 保存文件进行转换

2 个稳定版本

1.1.0 2023 年 10 月 7 日
1.0.0 2023 年 3 月 29 日
0.12.0 2023 年 1 月 26 日
0.11.0 2023 年 1 月 16 日
0.9.0 2021 年 9 月 20 日

#210命令行工具

MIT 许可证

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

使用方法

给定一组输入文件,程序将

  1. 根据文件名分组
  2. 如果没有 -c-s 标志:根据组中的第一个文件进行转换
  • 如果文件是 SRM 保存文件,则其包含的保存将被导出
    • 将创建新文件;只有当存在文件时,且设置了 --overwrite,才会覆盖现有文件
  • 如果文件不是 RA Mupen64Plus 保存文件,则将创建一个新的 RA Mupen64Plus 保存文件
    • 内容将来自第一个文件和组中的所有其他文件
  1. 创建新文件。
  • 如果存在现有文件,且未设置 --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

文件保存类型检测

  1. 如果文件存在,则其大小必须是可能的保存大小之一。
    • Mempack保存将被读取并检查其内部校验和。如果失败,程序将假设该文件是SRAM保存。
    • 如果设置了标志--merge-mempacks并且校验和失败,则程序将假设该文件是SRM保存。
  2. 如果文件不存在,则程序将检查其扩展名。

类型扩展大小表

保存类型 扩展名(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

N64保存类型大小来源

帮助

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