25 个版本 (破坏性)
0.19.0 | 2024年7月3日 |
---|---|
0.18.0 | 2024年3月12日 |
0.17.0 | 2023年11月2日 |
0.16.0 | 2023年6月13日 |
0.3.0 | 2020年7月11日 |
在 命令行实用程序 中排名第 68
每月下载量 138
1MB
34K SLoC
oxyROMon 0.19.0
Rusty ROM 组织者
oxyROMon 是一个基于 Rust 的跨平台 CLI ROM 组织工具。像大多数 ROM 管理器一样,它会将 ROM 文件与已知良好数据库进行核对。它设计时考虑了归档,因此只支持原始和无损 ROM 格式。然而,它可以导出为各种流行的有损格式,而保留无损 ROM 文件不受影响。排序可以在区域模式下进行,在所谓的 1G1R 模式下进行,或者两者都可以。支持使用 Logiqx DAT 文件进行控制台、计算机和街机(WIP)系统。前两者需要 No-Intro 或 Redump DAT 文件,而后者使用 MAME 或 FBNeo DAT 文件。
快速开始
要创建和管理一个新的系统,您需要一个 Logiqx DAT 文件。基于卡带的控制台和旧计算机可以从 Dat-o-Matic 下载。基于 CD 的可以从 Redump 下载。或者可以使用 download-dats
子命令为您下载并导入 Redump DAT,因为它们提供了直接链接。MAME DAT 可以在 Progetto-Snaps 上找到。FBNeo DAT 比较难找,libretro 有一些。
然后使用 import-dats
子命令手动导入 DAT。一旦创建了一个系统,您就可以开始使用 import-roms
子命令导入 ROM。检查通过的导入 ROM 将放置在其相应系统的主文件夹中。然后您可以使用 sort-roms
子命令根据您的配置进行排序。请先在 REGIONS_ALL
或 REGIONS_ONE
列表中添加至少一个区域。请参阅以下所有配置选项。
您还可以使用convert-roms
子命令在各种格式之间转换ROM,使用check-roms
子命令稍后检查它们,或者使用purge-roms
子命令清除它们以清空垃圾箱
文件夹或检测并忘记手动删除的ROM。
安装
您可以从发布页面获取适用于Lnux、Mac和Windows的预编译二进制文件。
在Docker Hub上也有可用的Docker镜像。
如果您使用的是Arch Linux,官方仓库中有一个软件包。
您还可以使用cargo install oxyromon
从crates.io安装。
最后,如果您喜欢冒险,您也可以从源代码构建,下面有说明。
编译
CLI没有特定的要求,您可以直接
cargo build --release
对于Web UI,您还需要yarn
cargo build --release --features server
构建默认使用rustls,但您也可以选择openssl
cargo build --no-default-features --features use-native-tls
功能
功能 | 描述 | 默认 |
---|---|---|
服务器 | 构建服务器子命令 | |
启用-asm | 启用MD5和SHA1散列的ASM变体 | x |
使用原生TLS | 使用系统OpenSSL库 | |
使用-rustls | 使用rustls | x |
配置
配置是通过命令行完成的,设置存储在SQLite数据库中。该数据库本身存储在由dirs crate定义的${data_dir}/oxyromon
中,可以通过OXYROMON_DATA_DIR
环境变量覆盖。
可用设置
ROM_DIRECTORY
:您的ROM目录的完整路径,默认为dirs crate中定义的${home_dir}/Emulation
TMP_DIRECTORY
:文件提取的临时目录的完整路径,默认为temp_dirPREFER_PARENTS
:在1G1R选举过程中优先考虑父级,默认为true
PREFER_REGIONS
:在1G1R选举过程中优先考虑更多或更少的ROM地区,默认为none
,有效选项:none
、broad
、narrow
PREFER_VERSIONS
:在1G1R选举过程中优先考虑较新或较旧的ROM版本,默认为new
,有效选项:none
、new
、old
PREFER_FLAGS
:1G1R选举过程中优先考虑的ROM标志列表(例如:Rumble Version
)DISCARD_FLAGS
:要丢弃的ROM标志列表(例如:Virtual Console
)DISCARD_RELEASES
:要丢弃的ROM发布列表(例如:Beta
)LANGUAGES
:您想要保留的语言列表,仅适用于指定了它们的ROM(例如:En,Ja
)REGIONS_ALL
:需要保留所有ROM文件的区域列表(例如:US,EU,JP
)REGIONS_ONE
:需要保留单个ROM文件的区域列表(例如:US,EU
)REGIONS_ALL_SUBFOLDERS
:按子文件夹排序ROM,默认为none
,有效选项:none
,alpha
REGIONS_ONE_SUBFOLDERS
:按子文件夹排序1G1R ROM,默认为none
,有效选项:none
,alpha
REGIONS_ONE_STRICT
:true
将选择所有ROM,无论其是否可用,false
仅选择可用的ROM,默认为false
GROUP_SUBSYSTEMS
:将所有系统变体分组到单个目录中,默认为true
CHD_CD_HUNK_SIZE
:CD的CHD块大小(字节),默认为自动,有效范围:16-1048576
CHD_CD_COMPRESSION_ALGORITHMS
:CD的CHD压缩算法,最多可以指定4个,默认为自动,有效选项:none
,cdfl
,cdlz
,cdzl
,cdzs
CHD_DVD_HUNK_SIZE
:DVD的CHD块大小(字节),默认为自动,有效范围:16-1048576
CHD_DVD_COMPRESSION_ALGORITHMS
:DVD的CHD压缩算法,最多可以指定4个,默认为自动,有效选项:none
,flac
,huff
,lzma
,zlib
,zstd
CHD_PARENTS
:启用CHD父级功能,需要已生成播放列表,默认为false
RVZ_BLOCK_SIZE
:RVZ块大小(KiB),默认为128
,有效范围:32-2048
RVZ_COMPRESSION_ALGORITHM
:RVZ压缩算法,默认为zstd
,有效选项:none
,zstd
,bzip
,lzma
,lzma2
RVZ_COMPRESSION_LEVEL
:RVZ压缩级别,默认为5
,对于zstd的有效范围:1-22
,对于其他算法的有效范围:1-9
RVZ_SCRUB
:启用RVZ清理,仅适用于export-roms
,默认为false
SEVENZIP_COMPRESSION_LEVEL
:7Z压缩级别,默认为9
,有效范围:1-9
SEVENZIP_SOLID_COMPRESSION
:切换7Z固态压缩,默认为false
ZIP_COMPRESSION_LEVEL
:ZIP压缩级别,默认为9
,有效范围:1-9
注意:TMP_DIRECTORY
应有至少8GB的空闲空间以提取那些大DVD。
示例配置
oxyromon config -l
DISCARD_FLAGS = Aftermarket,Debug
DISCARD_RELEASES = Beta,Proto,Sample,Demo,Hack,Bootleg,Homebrew
GROUP_SUBSYSTEMS = true
HASH_ALGORITHM = crc
PREFER_FLAGS =
PREFER_PARENTS = true
PREFER_REGIONS = none
PREFER_VERSIONS = new
REGIONS_ALL = US,EU,JP
REGIONS_ALL_SUBFOLDERS = none
REGIONS_ONE = US,EU
REGIONS_ONE_STRICT = false
REGIONS_ONE_SUBFOLDERS = none
ROM_DIRECTORY = /home/alucryd/Emulation
RVZ_COMPRESSION_ALGORITHM = zstd
RVZ_COMPRESSION_LEVEL = 5
SEVENZIP_COMPRESSION_LEVEL = 9
SEVENZIP_SOLID_COMPRESSION = false
TMP_DIRECTORY = /tmp
ZIP_COMPRESSION_LEVEL = 9
目录布局
${ROM_DIRECTORY}
...
⮡ ${SYSTEM_NAME} # Base directory for each system, allowed regions will be stored here
⮡ 1G1R # Sub directory for 1G1R games
⮡ Trash # Sub directory for trashed games
...
${SYSTEM_NAME}
受GROUP_SUBSYSTEMS
设置影响
外部程序
这些应该放在您的${PATH}
中以获得额外功能。
- 7z:支持7Z和ZIP
- bchunk:支持CUE/BIN到ISO
- chdman:支持CHD
- ctrtool:支持CIA
- dolphin-tool:支持RVZ
- isoinfo:支持IRD
- maxcso:支持CSO/ZSO
- nsz:支持NSZ
- wit:支持WBFS
待办事项
- 向Web UI添加操作
- 找到一种自动下载No-Intro DAT文件的方法
- 支持街机系统的合并集
- 为街机系统编写一些单元测试
- 为NSZ编写一些单元测试
- 为IRD和PS3编写一些单元测试
- 如果可能且被请求,支持使用IRD文件重建PS3 ISO
- 添加一个retroarch格式的元数据抓取器
oxyromon
Usage: oxyromon [COMMAND]
Commands:
config Query and modify the oxyromon settings
info Print system information
import-dats Parse and import Logiqx DAT files into oxyromon
download-dats Download No-Intro and Redump DAT files and import them into oxyromon
import-roms Validate and import ROM files or directories into oxyromon
sort-roms Sort ROM files according to region and version preferences
convert-roms Convert ROM files between common formats
export-roms Export ROM files to common formats
rebuild-roms Rebuild arcade ROM sets according to the selected strategy
check-roms Check ROM files integrity
purge-roms Purge trashed, missing and orphan ROM files
purge-systems Purge systems
generate-playlists Generate M3U playlists for multi-disc games
import-irds Parse and import PlayStation 3 IRD files into oxyromon
benchmark Benchmark oxyromon
server Launch the backend server
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help information
-V, --version Print version information
oxyromon-config
查询和修改oxyromon设置
可以从命令行查询、修改和删除设置。
Usage: oxyromon config [OPTIONS]
Options:
-l, --list Print the whole configuration
-g, --get <KEY> Print a single setting
-s, --set <KEY> <VALUE> Set a single setting
-u, --unset <KEY> Unset a single setting
-a, --add <KEY> <VALUE> Add an entry to a list
-r, --remove <KEY> <VALUE> Remove an entry from a list
-h, --help Print help information
oxyromon-info
打印系统信息
打印程序版本、已安装依赖及其版本(如果可能),以及一些基本系统统计信息。
Usage: oxyromon info
Options:
-h, --help Print help
oxyromon-import-dats
解析并导入Logiqx DAT文件到oxyromon
支持标准Logiqx XML格式,包括父克隆DAT文件。可以直接导入ZIP文件,如No-Intro Love Pack,无需先提取。
支持的控制台DAT提供者
- No-Intro
- Redump
支持的街机DAT提供者
- MAME
- FBNeo
注意:一些系统需要在DAT文件旁边放置标题定义。如果没有提供,oxyromon将使用其自己的回退标题定义。
Usage: oxyromon import-dats [OPTIONS] <DATS>...
Arguments:
<DATS>... Set the DAT files to import
Options:
-i, --info Show the DAT information and exit
-s, --skip-header Skip parsing the header even if the system has one
-f, --force Force import of outdated DAT files
-a, --arcade Enable arcade mode
-h, --help Print help information
oxyromon-download-dats
下载No-Intro和Redump DAT文件并将它们导入oxyromon
Redump提供直接下载,但没有摘要,而No-Intro提供摘要但没有直接下载。目前,No-intro的对应版本只会告诉你是否有更新可用,但Redump版本能够下载全新的DAT并更新您已导入的DAT。
支持的DAT提供者
-
Redump(下载和更新)
-
No-Intro(仅更新检查)
Usage: oxyromon download-dats [OPTIONS] Options: -n, --nointro Download No-Intro DAT files -r, --redump Download Redump DAT files -u, --update Check for system updates -a, --all Import all systems -f, --force Force import of outdated DAT files -h, --help Print help information
oxyromon-import-irds
解析并导入PlayStation 3 IRD文件到oxyromon
IRD文件允许验证提取的PS3 ISO,即JB文件夹。从oxyromon的角度来看,即使没有PS3_CONTENT、PS3_EXTRA和PS3_UPDATE
目录,游戏也将被认为是完整的。
注意:目前仅支持IRD版本9。由于是最新版本,应涵盖大多数在线资源。
Usage: oxyromon import-irds [OPTIONS] <IRDS>...
Arguments:
<IRDS>... Set the IRD files to import
Options:
-i, --info Show the IRD information and exit
-f, --force Force import of already imported IRD files
-h, --help Print help information
oxyromon-import-roms
验证并导入ROM文件或目录到oxyromon
与数据库匹配的ROM文件将被放置在其所属系统的基本目录中。在大多数情况下,系统会自动检测,但在导入JB文件夹时,您仍然需要选择所需的系统。您还可以通过名称强制指定特定系统以缩小搜索范围。名称不需要是全名,且不区分大小写。使用头部定义的系统需要将-s
标志传递给匹配包含头部的ROM文件。这目前影响任天堂娱乐系统(无头部)、红白机光盘系统、雅达利7800和雅达利 Lynx。大多数文件保持原样移动,但包含多个游戏的归档将被提取。
支持的家用游戏机ROM格式
- 所有No-Intro和Redump支持的格式
- 7Z和ZIP归档
- CHD(压缩数据块)
- CIA(可安装3DS标题)
- CSO(压缩ISO)
- NSZ(压缩NSP)
- RVZ(现代Dolphin格式)
- ZSO(LZ4压缩ISO)
- JB文件夹(提取的PS3 ISO)
支持的街机ROM格式
- ZIP归档
- 未压缩的文件夹
注意:导入包含多个分区的CHD需要来自Redump的匹配CUE文件。
Usage: oxyromon import-roms [OPTIONS] <ROMS>...
Arguments:
<ROMS>... Set the ROM files or directories to import
Options:
-s, --system <SYSTEM> Select systems by name
-t, --trash Trash invalid ROM files
-f, --force Force import of existing ROM files
-a, --hash <HASH> Set the hash algorithm [possible values: crc, md5, sha1]
-u, --unattended Skip ROM files that require human intervention
-h, --help Print help
oxyromon-sort-roms
根据地区和版本偏好排序ROM文件
排序可以使用几种策略。您还可以选择丢弃某些类型的游戏。您可以打印出可能缺少的游戏列表,您这个收藏家。
支持的家用游戏机模式
- 地区模式
- 1G1R模式
- 混合模式
支持的街机模式
- 无(目前?)
在地区模式下,属于至少一个指定地区的游戏将被放置在系统的基本目录中。地区通过REGIONS_ALL
设置设置,可以通过CLI -g
标志覆盖。
在1G1R模式下,父克隆游戏组的游戏只放置在1G1R子目录中,按优先级顺序。地区通过REGIONS_ONE
设置,可以通过CLI -r
标志覆盖。
在混合模式下,应用1G1R规则,加上所选地区剩余的所有游戏将放置在基本目录中。
1G1R和混合模式有一个额外的旋钮,您可以通过REGIONS_ONE_STRICT
来旋转。将其设置为false将选择您拥有的第一个符合地区偏好的ROM。将其设置为true将在不考虑您是否实际拥有ROM的情况下选择符合地区偏好的ROM。
在每种模式下,丢弃的游戏都放置在Trash
子目录中。
即使没有父克隆DAT文件,1G1R和混合模式仍然很有用,它允许您区分您会实际玩的游戏,同时保留原始日文游戏以进行翻译修补和其他修改。
地区格式使用2个字母的代码,根据TOSEC的命名约定。由ZZ
表示的Unknown
地区,在混合模式的REGIONS_ALL
中用作通用地区。
Usage: oxyromon sort-roms [OPTIONS]
Options:
-r, --regions <REGIONS_ALL>...
Set the regions to keep (unordered)
--subfolders <REGIONS_ALL_SUBFOLDERS>
Set the subfolders scheme for games [possible values: NONE, ALPHA]
-o, --1g1r <REGIONS_ONE>...
Set the 1G1R regions to keep (ordered)
--1g1r-subfolders <REGIONS_ONE_SUBFOLDERS>
Set the subfolders scheme for 1G1R games [possible values: NONE, ALPHA]
-w, --wanted
Show wanted games
-a, --all
Sort all systems
-y, --yes
Automatically say yes to prompts
-h, --help
Print help information
oxyromon-rebuild-roms
根据所选策略重建街机ROM集
可以使用流行的合并策略重建ROM集。
支持的合并策略
-
分割(每个父和克隆集只包含其自己的ROM文件)
-
非合并(每个父和克隆集包含其ROM文件及其父的文件)
-
完全未合并(每个父类和克隆集都包含其ROM文件、其父类的文件和所需的BIOS文件)
-
合并(父类和克隆一起存储,与所需的BIOS文件一起)Usage: oxyromon rebuild-roms [OPTIONS] Options: -m, --merging <MERGING> Set the arcade merging strategy [possible values: SPLIT, NON_MERGED, FULL_NON_MERGED] -a, --all Rebuild all arcade systems -y, --yes Automatically say yes to prompts -h, --help Print help information
oxyromon-convert-roms
在常见格式之间转换ROM文件
ROM文件可以在可逆格式和原始格式之间相互转换。调用此命令将转换某些或所有系统的所有符合条件的rom。您可以可选地按名称过滤游戏,匹配字符串不区分大小写,可以使用SQL通配符。也可以以相同的方式选择系统,以避免提示它们。系统和游戏标志可以多次传递。
支持的ROM格式
- 所有No-Intro和Redump支持的格式 <-> 7Z和ZIP存档
- CUE/BIN <-> CHD(压缩数据块)
- ISO <-> CHD(压缩数据块)
- ISO <-> CSO(压缩ISO)
- ISO <-> ZSO(LZ4压缩ISO)
- ISO <-> RVZ(现代Dolphin格式)
注意:如有适用,CHD将提取到其原始分割的CUE/BIN。
警告:Dreamcast的CHD至少需要chdman 0.264
Usage: oxyromon convert-roms [OPTIONS]
Options:
-f, --format <FORMAT> Set the destination format [possible values: ORIGINAL, 7Z, ZIP, CHD, CSO, RVZ, ZSO]
-g, --game <GAME> Select games by name
-s, --system <SYSTEM> Select systems by name
-a, --all Convert all systems/games
-r, --recompress Force conversion even if already in the selected format
-d, --diff Print size differences
-c, --check Check ROM files after conversion
-p, --parents Prompt for CHD parents
-h, --help Print help information
oxyromon-export-roms
将ROM文件导出为常见格式
类似于convert-roms
,但这个不会更改您的原始ROM文件,因此可以使用有损格式。它旨在导出所有或部分ROM文件,用于与外部系统(如原始控制台通过EverDrive或ODE)一起使用。
注意:ISO是专门为PlayStation 2的OPL设计的ORIGINAL变体,它允许使用bchunk将CUE/BIN CD游戏转换为ISO。
Usage: oxyromon export-roms [OPTIONS] --directory <DIRECTORY>
Options:
-f, --format <FORMAT> Set the destination format [possible values: ORIGINAL, 7Z, ZIP, ISO, CHD, CSO, NSZ, RVZ, WBFS, ZSO]
-g, --game <Game> Select games by name
-s, --system <SYSTEM> Select systems by name
-d, --directory <DIRECTORY> Set the output directory
-o, --1g1r Export 1G1R games only
-h, --help Print help
oxyromon-check-roms
检查ROM文件完整性
这将扫描每个指定系统中的每个ROM文件,并将损坏的文件移动到各自的垃圾桶目录。还可以重新计算文件大小,这对于v0.8.1或以下版本导入的ROM文件很有用。
Usage: oxyromon check-roms [OPTIONS]
Options:
-a, --all Check all systems
-g, --game <GAME> Select games by name
-s, --size Recalculate ROM file sizes
-h, --help Print help information
oxyromon-purge-roms
清除垃圾桶、丢失的和孤立的ROM文件
这将可选地从每个丢失的或目前未与ROM关联的ROM文件中清除数据库,以及物理删除垃圾桶
子目录中的所有文件。
Usage: oxyromon purge-roms [OPTIONS]
Options:
-m, --missing Delete missing ROM files from the database
-o, --orphan Delete ROM files without an associated ROM from the database
-t, --trash Physically delete ROM files from the trash directories
-f, --foreign Physically delete ROM files unknown to the database
-y, --yes Automatically say yes to prompts
-h, --help Print help
oxyromon-purge-systems
清除系统
这将从数据库中擦除系统和其所有ROM。所有ROM都将放置在垃圾桶
文件夹中,之后是否物理删除取决于您。
Usage: oxyromon purge-systems
Options:
-h, --help Print help information
oxyromon-generate-playlists
为多盘游戏生成M3U播放列表
这将生成可以在RetroArch内部切换光盘的播放列表。仅限于Redump。播放列表信息还用于确定父类,如果您启用了CHD父类功能。
注意:sort-roms
会相应地移动它们,但如果您使用convert-roms
,您目前需要再次运行此命令。
Usage: oxyromon generate-playlists [OPTIONS]
Options:
-a, --all Generate playlists for all systems
-h, --help Print help information
oxyromon-import-irds
解析并导入PlayStation 3 IRD文件到oxyromon
PlayStation 3游戏最常见的备份方式是作为JB文件夹,IRD文件用于描述和验证这些文件夹的内容,这与DAT文件的作用类似。
注意:您仍然需要从Redump或其他地方事先导入PS3 DAT文件。如果您不使用Redump,请确保其名称中包含PlayStation 3
。
Usage: oxyromon import-irds [OPTIONS] <IRDS>...
Arguments:
<IRDS>... Set the IRD files to import
Options:
-i, --info Show the IRD information and exit
-f, --force Force import of already imported IRD files
-h, --help Print help information
oxyromon-server
启动后端服务器
服务器在/graphql
处公开GraphQL API端点。相关的Svelte.js Web UI也在/
处公开。
Usage: oxyromon server [OPTIONS]
Options:
-a, --address <ADDRESS> Specify the server address [default: 127.0.0.1]
-p, --port <PORT> Specify the server port [default: 8000]
-h, --help Print help information
oxyromon-benchmark
基准测试oxyromon
给出了一些关于ROM和TMP目录各种读写性能的想法。它还将排名校验和算法,通常CRC应该是最快的,其次是SHA1,然后是MD5。您的里程数可能会根据您的体系结构而有所不同。
Usage: oxyromon benchmark [OPTIONS]
Options:
-c, --chunk-size <CHUNK_SIZE> Set the chunk size in KB for read and writes (Default: 256) [default: 256]
-h, --help Print help information
依赖项
~52–70MB
~1M SLoC