@rom-weaver/cli 0.12.3 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -270
- package/docs/completions/_rom-weaver +126 -15
- package/docs/completions/rom-weaver.bash +116 -34
- package/docs/completions/rom-weaver.elv +101 -4
- package/docs/completions/rom-weaver.fish +185 -33
- package/docs/completions/rom-weaver.ps1 +103 -4
- package/docs/man/rom-weaver-bundle-create.1 +75 -3
- package/docs/man/rom-weaver-bundle-parse.1 +4 -1
- package/docs/man/rom-weaver-bundle-schema.1 +4 -1
- package/docs/man/rom-weaver-bundle.1 +4 -1
- package/docs/man/rom-weaver-checksum.1 +28 -3
- package/docs/man/rom-weaver-completions.1 +4 -1
- package/docs/man/rom-weaver-compress.1 +58 -1
- package/docs/man/rom-weaver-extract.1 +49 -2
- package/docs/man/rom-weaver-formats.1 +66 -0
- package/docs/man/rom-weaver-patch-apply.1 +126 -66
- package/docs/man/rom-weaver-patch-create.1 +7 -1
- package/docs/man/rom-weaver-patch-validate.1 +4 -1
- package/docs/man/rom-weaver-patch.1 +4 -1
- package/docs/man/rom-weaver-probe.1 +4 -1
- package/docs/man/rom-weaver-tools-ppf-undo.1 +4 -1
- package/docs/man/rom-weaver-tools.1 +4 -1
- package/docs/man/rom-weaver-trim.1 +20 -1
- package/docs/man/rom-weaver-weave.1 +126 -66
- package/docs/man/rom-weaver.1 +9 -6
- package/package.json +11 -11
- package/docs/man/rom-weaver-ingest.1 +0 -98
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
.SH NAME
|
|
5
5
|
rom\-weaver\-patch \- Apply, create, or check ROM patches
|
|
6
6
|
.SH SYNOPSIS
|
|
7
|
-
\fBrom\-weaver patch\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
|
|
7
|
+
\fBrom\-weaver patch\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-y\fR|\fB\-\-yes\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
|
|
8
8
|
.SH DESCRIPTION
|
|
9
9
|
Apply, create, or check ROM patches
|
|
10
10
|
.SH OPTIONS
|
|
@@ -57,6 +57,9 @@ Keep colors even when output is piped
|
|
|
57
57
|
.TP
|
|
58
58
|
\fB\-\-no\-color\fR
|
|
59
59
|
Turn colors off
|
|
60
|
+
.TP
|
|
61
|
+
\fB\-y\fR, \fB\-\-yes\fR
|
|
62
|
+
Answer yes to every confirmation instead of asking. Does not choose between candidates
|
|
60
63
|
.SH SUBCOMMANDS
|
|
61
64
|
.TP
|
|
62
65
|
rom\-weaver\-patch\-apply(1)
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
.SH NAME
|
|
5
5
|
rom\-weaver\-probe \- Identify a file: its format, its platform, and any header it carries
|
|
6
6
|
.SH SYNOPSIS
|
|
7
|
-
\fBrom\-weaver probe\fR
|
|
7
|
+
\fBrom\-weaver probe\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-s\fR|\fB\-\-select\fR] [\fB\-\-filter\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-\-no\-extract\fR] [\fB\-\-no\-ignore\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-y\fR|\fB\-\-yes\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fB\-i\fR|\fB\-\-input\fR>
|
|
8
8
|
.SH DESCRIPTION
|
|
9
9
|
Identify a file. Reports what format it is, which console it is for, whether it
|
|
10
10
|
carries a copier header, and what is inside it if it is an archive.
|
|
@@ -91,3 +91,6 @@ Keep colors even when output is piped
|
|
|
91
91
|
.TP
|
|
92
92
|
\fB\-\-no\-color\fR
|
|
93
93
|
Turn colors off
|
|
94
|
+
.TP
|
|
95
|
+
\fB\-y\fR, \fB\-\-yes\fR
|
|
96
|
+
Answer yes to every confirmation instead of asking. Does not choose between candidates
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
.SH NAME
|
|
5
5
|
rom\-weaver\-tools\-ppf\-undo \- Undo a PPF3 patch, using the undo data stored inside it
|
|
6
6
|
.SH SYNOPSIS
|
|
7
|
-
\fBrom\-weaver tools ppf\-undo\fR
|
|
7
|
+
\fBrom\-weaver tools ppf\-undo\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-y\fR|\fB\-\-yes\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fB\-i\fR|\fB\-\-input\fR> <\fB\-\-patch\fR> <\fB\-o\fR|\fB\-\-output\fR>
|
|
8
8
|
.SH DESCRIPTION
|
|
9
9
|
Undo a PPF3 patch, turning a patched ROM back into the original.
|
|
10
10
|
.PP
|
|
@@ -69,3 +69,6 @@ Keep colors even when output is piped
|
|
|
69
69
|
.TP
|
|
70
70
|
\fB\-\-no\-color\fR
|
|
71
71
|
Turn colors off
|
|
72
|
+
.TP
|
|
73
|
+
\fB\-y\fR, \fB\-\-yes\fR
|
|
74
|
+
Answer yes to every confirmation instead of asking. Does not choose between candidates
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
.SH NAME
|
|
5
5
|
rom\-weaver\-tools \- One\-off recovery tools
|
|
6
6
|
.SH SYNOPSIS
|
|
7
|
-
\fBrom\-weaver tools\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
|
|
7
|
+
\fBrom\-weaver tools\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-y\fR|\fB\-\-yes\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
|
|
8
8
|
.SH DESCRIPTION
|
|
9
9
|
One\-off recovery tools
|
|
10
10
|
.SH OPTIONS
|
|
@@ -57,6 +57,9 @@ Keep colors even when output is piped
|
|
|
57
57
|
.TP
|
|
58
58
|
\fB\-\-no\-color\fR
|
|
59
59
|
Turn colors off
|
|
60
|
+
.TP
|
|
61
|
+
\fB\-y\fR, \fB\-\-yes\fR
|
|
62
|
+
Answer yes to every confirmation instead of asking. Does not choose between candidates
|
|
60
63
|
.SH SUBCOMMANDS
|
|
61
64
|
.TP
|
|
62
65
|
rom\-weaver\-tools\-ppf\-undo(1)
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
.SH NAME
|
|
5
5
|
rom\-weaver\-trim \- Cut the padding off a ROM, or put it back
|
|
6
6
|
.SH SYNOPSIS
|
|
7
|
-
\fBrom\-weaver trim\fR
|
|
7
|
+
\fBrom\-weaver trim\fR [\fB\-\-json\fR] [\fB\-o\fR|\fB\-\-output\fR] [\fB\-\-progress\fR] [\fB\-e\fR|\fB\-\-extension\fR] [\fB\-\-no\-progress\fR] [\fB\-\-in\-place\fR] [\fB\-\-log\-level\fR] [\fB\-n\fR|\fB\-\-dry\-run\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-revert\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-no\-recursive\fR] [\fB\-\-color\fR] [\fB\-\-filter\fR] [\fB\-\-no\-color\fR] [\fB\-\-no\-filter\fR] [\fB\-\-no\-extract\fR] [\fB\-y\fR|\fB\-\-yes\fR] [\fB\-\-revert\-marker\fR] [\fB\-j\fR|\fB\-\-threads\fR] [\fB\-\-force\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fB\-i\fR|\fB\-\-input\fR>
|
|
8
8
|
.SH DESCRIPTION
|
|
9
9
|
Cut the unused padding off the end of a ROM, making the file smaller without
|
|
10
10
|
changing what a console or emulator reads from it.
|
|
@@ -49,6 +49,19 @@ XISO and RVZ scrub cannot be reverted.
|
|
|
49
49
|
\fB\-\-no\-recursive\fR
|
|
50
50
|
When an input is a folder, look only at its top level
|
|
51
51
|
.TP
|
|
52
|
+
\fB\-\-filter\fR \fI<FILTER>\fR [default: rom]
|
|
53
|
+
Consider only files that look like a rom or a patch, judged by extension (repeatable, comma\-separable)
|
|
54
|
+
.br
|
|
55
|
+
|
|
56
|
+
.br
|
|
57
|
+
\fIPossible values:\fR
|
|
58
|
+
.RS 14
|
|
59
|
+
.IP \(bu 2
|
|
60
|
+
rom
|
|
61
|
+
.IP \(bu 2
|
|
62
|
+
patch
|
|
63
|
+
.RE
|
|
64
|
+
.TP
|
|
52
65
|
\fB\-\-no\-filter\fR
|
|
53
66
|
Consider every file inside an archive, not just the ones that look like ROMs
|
|
54
67
|
.TP
|
|
@@ -61,6 +74,9 @@ Add a small footer recording what was cut, so \-\-revert can restore the origina
|
|
|
61
74
|
\fB\-j\fR, \fB\-\-threads\fR \fI<auto|N>\fR [default: auto]
|
|
62
75
|
How many threads to use at most. auto uses every core; a format may still use fewer
|
|
63
76
|
.TP
|
|
77
|
+
\fB\-\-force\fR
|
|
78
|
+
Overwrite the output if it already exists (without this, the command stops instead)
|
|
79
|
+
.TP
|
|
64
80
|
\fB\-h\fR, \fB\-\-help\fR
|
|
65
81
|
Print help (see a summary with \*(Aq\-h\*(Aq)
|
|
66
82
|
.SH "GLOBAL OPTIONS"
|
|
@@ -109,3 +125,6 @@ Keep colors even when output is piped
|
|
|
109
125
|
.TP
|
|
110
126
|
\fB\-\-no\-color\fR
|
|
111
127
|
Turn colors off
|
|
128
|
+
.TP
|
|
129
|
+
\fB\-y\fR, \fB\-\-yes\fR
|
|
130
|
+
Answer yes to every confirmation instead of asking. Does not choose between candidates
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
.SH NAME
|
|
5
5
|
rom\-weaver\-weave \- Apply one or more patches to a ROM, in order (same as `patch apply`)
|
|
6
6
|
.SH SYNOPSIS
|
|
7
|
-
\fBrom\-weaver weave\fR
|
|
7
|
+
\fBrom\-weaver weave\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-s\fR|\fB\-\-select\fR] [\fB\-\-no\-progress\fR] [\fB\-\-target\fR] [\fB\-\-filter\fR] [\fB\-\-log\-level\fR] [\fB\-\-no\-extract\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-\-no\-ignore\fR] [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-patch\fR] [\fB\-\-color\fR] [\fB\-o\fR|\fB\-\-output\fR] [\fB\-\-bundle\fR] [\fB\-\-no\-color\fR] [\fB\-\-with\fR] [\fB\-y\fR|\fB\-\-yes\fR] [\fB\-\-without\fR] [\fB\-\-no\-compress\fR] [\fB\-\-compress\-format\fR] [\fB\-\-compress\-codec\fR] [\fB\-\-compress\-level\fR] [\fB\-\-assume\-in\fR] [\fB\-\-expect\-in\fR] [\fB\-\-patch\-header\fR] [\fB\-\-patch\-basis\fR] [\fB\-\-output\-header\fR] [\fB\-\-repair\-checksum\fR] [\fB\-\-n64\-byte\-order\fR] [\fB\-\-ignore\-checksum\-validation\fR] [\fB\-\-expect\-out\fR] [\fB\-\-code\fR] [\fB\-\-code\-system\fR] [\fB\-\-code\-kind\fR] [\fB\-\-emit\-bundle\fR] [\fB\-\-tui\fR] [\fB\-j\fR|\fB\-\-threads\fR] [\fB\-\-force\fR] [\fB\-n\fR|\fB\-\-dry\-run\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fB\-i\fR|\fB\-\-input\fR>
|
|
8
8
|
.SH DESCRIPTION
|
|
9
9
|
Apply one or more patches to a ROM, in order.
|
|
10
10
|
.PP
|
|
@@ -17,8 +17,12 @@ compressed format (the ROM inside is found for you), or a
|
|
|
17
17
|
rom\-weaver\-bundle.json that already names the ROM, the patches, and the
|
|
18
18
|
output.
|
|
19
19
|
.PP
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
When \-\-output names the selected ROM leaf\*(Aqs extension, rom\-weaver writes a
|
|
21
|
+
plain ROM. A registered container extension such as .zip compresses the result.
|
|
22
|
+
Pass \-\-no\-compress (or \-\-raw) to force a plain ROM, or use \-\-compress\-format,
|
|
23
|
+
\-\-compress\-codec, and \-\-compress\-level (also accepted as \-\-format, \-\-codec,
|
|
24
|
+
and \-\-level) to force compression. Without \-\-output, an ordinary file apply
|
|
25
|
+
writes a collision\-safe sibling named <stem>\-patched.<ext>.
|
|
22
26
|
.PP
|
|
23
27
|
Patch formats: IPS, IPS32, SOLID, BPS, UPS, VCDIFF, xdelta, GDIFF,
|
|
24
28
|
HDiffPatch/HPatchZ, APS (N64), APSGBA, RUP, PPF, PAT/FFP, EBP, BDF/BSDIFF40,
|
|
@@ -31,33 +35,18 @@ DCP needs a Dreamcast .cue or .gdi input. It rebuilds the whole disc, so it
|
|
|
31
35
|
cannot be combined with other patches or with the header and checksum options.
|
|
32
36
|
.SH OPTIONS
|
|
33
37
|
.TP
|
|
34
|
-
\fB
|
|
35
|
-
|
|
36
|
-
.TP
|
|
37
|
-
\fB\-s\fR, \fB\-\-select\fR \fI<SELECT>\fR
|
|
38
|
-
Pick which file to use when the ROM or a patch is inside an archive, by exact name, prefix, or glob (repeatable)
|
|
38
|
+
\fB\-\-force\fR
|
|
39
|
+
Overwrite the output if it already exists (without this, the command stops instead)
|
|
39
40
|
.TP
|
|
40
|
-
\fB
|
|
41
|
-
|
|
41
|
+
\fB\-n\fR, \fB\-\-dry\-run\fR
|
|
42
|
+
Print the plan (inputs, patches, output, format, codec, level, threads) and stop without writing
|
|
42
43
|
.TP
|
|
43
|
-
\fB
|
|
44
|
-
|
|
45
|
-
.
|
|
46
|
-
|
|
47
|
-
.br
|
|
48
|
-
\fIPossible values:\fR
|
|
49
|
-
.RS 14
|
|
50
|
-
.IP \(bu 2
|
|
51
|
-
rom
|
|
52
|
-
.IP \(bu 2
|
|
53
|
-
patch
|
|
54
|
-
.RE
|
|
55
|
-
.TP
|
|
56
|
-
\fB\-\-no\-extract\fR
|
|
57
|
-
Do not look inside archives; treat the input and every patch as raw files
|
|
44
|
+
\fB\-h\fR, \fB\-\-help\fR
|
|
45
|
+
Print help (see a summary with \*(Aq\-h\*(Aq)
|
|
46
|
+
.SH BASIC
|
|
58
47
|
.TP
|
|
59
|
-
\fB
|
|
60
|
-
|
|
48
|
+
\fB\-i\fR, \fB\-\-input\fR \fI<PATH>\fR
|
|
49
|
+
ROM to patch. May be an archive, a disc sheet (.cue/.gdi), or a bundle
|
|
61
50
|
.TP
|
|
62
51
|
\fB\-\-patch\fR \fI<PATCHES>\fR
|
|
63
52
|
Patch to apply. Repeat once per patch; they run in the order given, each on the
|
|
@@ -69,20 +58,6 @@ the ROM inside the input archive.
|
|
|
69
58
|
\fB\-o\fR, \fB\-\-output\fR \fI<OUTPUT>\fR
|
|
70
59
|
Where to write the patched ROM. Optional when a bundle already names the output
|
|
71
60
|
.TP
|
|
72
|
-
\fB\-\-bundle\fR \fI<BUNDLE>\fR
|
|
73
|
-
Follow a rom\-weaver\-bundle.json recipe, which lists the patches, their order,
|
|
74
|
-
and the expected checksums. Takes a file path or an http(s) URL.
|
|
75
|
-
|
|
76
|
-
You can usually skip this flag. A bundle is picked up automatically when
|
|
77
|
-
\-\-input is a rom\-weaver\-bundle.json (optionally .gz, .bz2, .xz, or .zst), or an
|
|
78
|
-
archive with one at its root, and you passed no \-\-patch of your own.
|
|
79
|
-
.TP
|
|
80
|
-
\fB\-\-with\fR \fI<GLOB>\fR
|
|
81
|
-
Turn on a bundle patch the bundle leaves off by default, matched by name or file name (repeatable)
|
|
82
|
-
.TP
|
|
83
|
-
\fB\-\-without\fR \fI<GLOB>\fR
|
|
84
|
-
Turn off a bundle patch, matched by name or file name (repeatable)
|
|
85
|
-
.TP
|
|
86
61
|
\fB\-\-no\-compress\fR
|
|
87
62
|
Write a plain ROM instead of compressing the result
|
|
88
63
|
.TP
|
|
@@ -93,6 +68,22 @@ Normally you do not need this: the format comes from the \-\-output extension.
|
|
|
93
68
|
Pass it when the output name has no usable extension. If it disagrees with the
|
|
94
69
|
extension, this flag wins and a warning is printed. Use \-\-no\-compress to write
|
|
95
70
|
a plain ROM instead.
|
|
71
|
+
.br
|
|
72
|
+
|
|
73
|
+
.br
|
|
74
|
+
\fIPossible values:\fR
|
|
75
|
+
.RS 14
|
|
76
|
+
.IP \(bu 2
|
|
77
|
+
zip
|
|
78
|
+
.IP \(bu 2
|
|
79
|
+
7z
|
|
80
|
+
.IP \(bu 2
|
|
81
|
+
chd
|
|
82
|
+
.IP \(bu 2
|
|
83
|
+
rvz
|
|
84
|
+
.IP \(bu 2
|
|
85
|
+
z3ds
|
|
86
|
+
.RE
|
|
96
87
|
.TP
|
|
97
88
|
\fB\-\-compress\-codec\fR \fI<COMPRESS_CODEC>\fR
|
|
98
89
|
Compression method for the patched ROM, written as codec or codec:level.
|
|
@@ -103,6 +94,38 @@ this is only for overriding that choice. CHD takes a list, tried in order:
|
|
|
103
94
|
\-\-compress\-codec cdzs:19,cdzl,cdfl
|
|
104
95
|
|
|
105
96
|
Without :level, a codec follows the \-\-compress\-level profile.
|
|
97
|
+
.br
|
|
98
|
+
|
|
99
|
+
.br
|
|
100
|
+
\fIPossible values:\fR
|
|
101
|
+
.RS 14
|
|
102
|
+
.IP \(bu 2
|
|
103
|
+
store
|
|
104
|
+
.IP \(bu 2
|
|
105
|
+
deflate
|
|
106
|
+
.IP \(bu 2
|
|
107
|
+
zstd
|
|
108
|
+
.IP \(bu 2
|
|
109
|
+
lzma
|
|
110
|
+
.IP \(bu 2
|
|
111
|
+
lzma2
|
|
112
|
+
.IP \(bu 2
|
|
113
|
+
zlib
|
|
114
|
+
.IP \(bu 2
|
|
115
|
+
huff
|
|
116
|
+
.IP \(bu 2
|
|
117
|
+
flac
|
|
118
|
+
.IP \(bu 2
|
|
119
|
+
cdzs
|
|
120
|
+
.IP \(bu 2
|
|
121
|
+
cdlz
|
|
122
|
+
.IP \(bu 2
|
|
123
|
+
cdzl
|
|
124
|
+
.IP \(bu 2
|
|
125
|
+
cdfl
|
|
126
|
+
.IP \(bu 2
|
|
127
|
+
avhuff
|
|
128
|
+
.RE
|
|
106
129
|
.TP
|
|
107
130
|
\fB\-\-compress\-level\fR \fI<COMPRESS_LEVEL>\fR
|
|
108
131
|
How hard to compress: min, very\-low, low, medium, high, very\-high, or max [default: max]
|
|
@@ -126,6 +149,47 @@ very\-high
|
|
|
126
149
|
.IP \(bu 2
|
|
127
150
|
max
|
|
128
151
|
.RE
|
|
152
|
+
.SH ARCHIVE/BUNDLE
|
|
153
|
+
.TP
|
|
154
|
+
\fB\-s\fR, \fB\-\-select\fR \fI<SELECT>\fR
|
|
155
|
+
Pick which file to use when the ROM or a patch is inside an archive, by exact name, prefix, or glob (repeatable)
|
|
156
|
+
.TP
|
|
157
|
+
\fB\-\-target\fR \fI<TARGET>\fR
|
|
158
|
+
For a .cue or .gdi input, which track gets the patch. Matched like \-\-select and must hit exactly one track
|
|
159
|
+
.TP
|
|
160
|
+
\fB\-\-filter\fR \fI<FILTER>\fR
|
|
161
|
+
Consider only files that look like a rom or a patch, judged by extension (repeatable, comma\-separable)
|
|
162
|
+
.br
|
|
163
|
+
|
|
164
|
+
.br
|
|
165
|
+
\fIPossible values:\fR
|
|
166
|
+
.RS 14
|
|
167
|
+
.IP \(bu 2
|
|
168
|
+
rom
|
|
169
|
+
.IP \(bu 2
|
|
170
|
+
patch
|
|
171
|
+
.RE
|
|
172
|
+
.TP
|
|
173
|
+
\fB\-\-no\-extract\fR
|
|
174
|
+
Do not look inside archives; treat the input and every patch as raw files
|
|
175
|
+
.TP
|
|
176
|
+
\fB\-\-no\-ignore\fR
|
|
177
|
+
Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store
|
|
178
|
+
.TP
|
|
179
|
+
\fB\-\-bundle\fR \fI<BUNDLE>\fR
|
|
180
|
+
Follow a rom\-weaver\-bundle.json recipe, which lists the patches, their order,
|
|
181
|
+
and the expected checksums. Takes a file path or an http(s) URL.
|
|
182
|
+
|
|
183
|
+
You can usually skip this flag. A bundle is picked up automatically when
|
|
184
|
+
\-\-input is a rom\-weaver\-bundle.json (optionally .gz, .bz2, .xz, or .zst), or an
|
|
185
|
+
archive with one at its root, and you passed no \-\-patch of your own.
|
|
186
|
+
.TP
|
|
187
|
+
\fB\-\-with\fR \fI<GLOB>\fR
|
|
188
|
+
Turn on a bundle patch the bundle leaves off by default, matched by name or file name (repeatable)
|
|
189
|
+
.TP
|
|
190
|
+
\fB\-\-without\fR \fI<GLOB>\fR
|
|
191
|
+
Turn off a bundle patch, matched by name or file name (repeatable)
|
|
192
|
+
.SH COMPATIBILITY
|
|
129
193
|
.TP
|
|
130
194
|
\fB\-\-assume\-in\fR \fI<ALGO=HEX>\fR
|
|
131
195
|
Take this checksum on trust instead of reading the ROM to compute it, as in
|
|
@@ -150,9 +214,12 @@ Some ROMs carry a small header added by old copier hardware, and a patch may
|
|
|
150
214
|
have been made either with it or without it. Getting this wrong makes the patch
|
|
151
215
|
fail or produce a broken ROM.
|
|
152
216
|
|
|
153
|
-
auto Work it out per patch (the default).
|
|
154
|
-
|
|
155
|
-
|
|
217
|
+
auto Work it out per patch (the default). A patch carrying its own source
|
|
218
|
+
checksum (BPS, UPS, RUP) settles it outright. A patch without one
|
|
219
|
+
(IPS) is judged on where its records land, and if that is still
|
|
220
|
+
unclear by applying it both ways and keeping the result the console
|
|
221
|
+
still recognises as its own ROM. Any remaining doubt leaves the
|
|
222
|
+
bytes alone.
|
|
156
223
|
keep Apply to the bytes as they are.
|
|
157
224
|
strip Remove the header first.
|
|
158
225
|
|
|
@@ -189,8 +256,11 @@ checksums describe.
|
|
|
189
256
|
previous The output of the patch before it.
|
|
190
257
|
|
|
191
258
|
Reach for this when several patches in a chain were each written against the
|
|
192
|
-
unmodified ROM rather than against each other.
|
|
193
|
-
|
|
259
|
+
unmodified ROM rather than against each other.
|
|
260
|
+
|
|
261
|
+
This flag must follow the \-\-patch it describes; it binds to the most recent
|
|
262
|
+
\-\-patch and carries forward until the next occurrence. An occurrence before any
|
|
263
|
+
\-\-patch applies to every patch.
|
|
194
264
|
.br
|
|
195
265
|
|
|
196
266
|
.br
|
|
@@ -241,7 +311,9 @@ N64 dumps circulate in three interleavings (.z64 big\-endian, .v64 byte\-swapped
|
|
|
241
311
|
\&.n64 little\-endian) and a patch only matches one of them.
|
|
242
312
|
|
|
243
313
|
auto Match whichever order the patch\*(Aqs source CRC32 names. The
|
|
244
|
-
default, and almost always right.
|
|
314
|
+
default, and almost always right. For the first patch, one
|
|
315
|
+
that carries no checksum (IPS) falls back to the shape of its
|
|
316
|
+
changes; an order settled that way is named in the report.
|
|
245
317
|
keep Leave the ROM as it is.
|
|
246
318
|
big\-endian Rewrite to .z64 order.
|
|
247
319
|
little\-endian Rewrite to .n64 order.
|
|
@@ -268,6 +340,7 @@ byte\-swapped
|
|
|
268
340
|
.TP
|
|
269
341
|
\fB\-\-ignore\-checksum\-validation\fR
|
|
270
342
|
Apply the patch even when its own checksums do not match. Can produce a broken ROM
|
|
343
|
+
.SH DIAGNOSTICS/AUTHORING
|
|
271
344
|
.TP
|
|
272
345
|
\fB\-\-expect\-out\fR \fI<ALGO=HEX>\fR
|
|
273
346
|
Fail unless the patched ROM has this checksum, as in sha1=abc... (repeatable, comma\-separable)
|
|
@@ -286,12 +359,10 @@ Also write a rom\-weaver\-bundle.json recording this run, so someone else can re
|
|
|
286
359
|
.TP
|
|
287
360
|
\fB\-\-tui\fR
|
|
288
361
|
Ask for each patch\*(Aqs name, version, and author, then apply and write a bundle. Needs a terminal
|
|
362
|
+
.SH PERFORMANCE
|
|
289
363
|
.TP
|
|
290
364
|
\fB\-j\fR, \fB\-\-threads\fR \fI<auto|N>\fR [default: auto]
|
|
291
365
|
How many threads to use at most. auto uses every core; a format may still use fewer
|
|
292
|
-
.TP
|
|
293
|
-
\fB\-h\fR, \fB\-\-help\fR
|
|
294
|
-
Print help (see a summary with \*(Aq\-h\*(Aq)
|
|
295
366
|
.SH "GLOBAL OPTIONS"
|
|
296
367
|
.TP
|
|
297
368
|
\fB\-\-json\fR
|
|
@@ -338,20 +409,9 @@ Keep colors even when output is piped
|
|
|
338
409
|
.TP
|
|
339
410
|
\fB\-\-no\-color\fR
|
|
340
411
|
Turn colors off
|
|
412
|
+
.TP
|
|
413
|
+
\fB\-y\fR, \fB\-\-yes\fR
|
|
414
|
+
Answer yes to every confirmation instead of asking. Does not choose between candidates
|
|
341
415
|
.SH EXTRA
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
rom\-weaver patch apply \-\-input game.sfc \-\-patch hack.bps \\
|
|
345
|
-
\-\-output hacked.sfc \-\-no\-compress
|
|
346
|
-
|
|
347
|
-
# Two patches in order, straight out of and back into a zip
|
|
348
|
-
rom\-weaver patch apply \-\-input game.zip \\
|
|
349
|
-
\-\-patch translation.bps \-\-patch fixes.ips \-\-output hacked.zip
|
|
350
|
-
|
|
351
|
-
# Replay someone else\*(Aqs published recipe
|
|
352
|
-
rom\-weaver patch apply \-\-bundle rom\-weaver\-bundle.json \-\-input game.sfc
|
|
353
|
-
|
|
354
|
-
# Check the result against a checksum the patch author published
|
|
355
|
-
rom\-weaver patch apply \-\-input game.sfc \-\-patch hack.bps \\
|
|
356
|
-
\-\-output hacked.sfc \-\-no\-compress \\
|
|
357
|
-
\-\-expect\-out sha1=0123456789abcdef0123456789abcdef01234567
|
|
416
|
+
Example:
|
|
417
|
+
rom\-weaver patch apply \-i game.sfc \-\-patch hack.bps \-o hacked.sfc
|
package/docs/man/rom-weaver.1
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH rom-weaver 1 "rom-weaver 0.
|
|
3
|
+
.TH rom-weaver 1 "rom-weaver 0.13.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
rom\-weaver \- Inspect, extract, checksum, compress, trim, and patch ROMs and disc images
|
|
6
6
|
.SH SYNOPSIS
|
|
7
|
-
\fBrom\-weaver\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fIsubcommands\fR>
|
|
7
|
+
\fBrom\-weaver\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-y\fR|\fB\-\-yes\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fIsubcommands\fR>
|
|
8
8
|
.SH DESCRIPTION
|
|
9
9
|
Inspect, extract, checksum, compress, trim, and patch ROMs and disc images.
|
|
10
10
|
.PP
|
|
@@ -66,6 +66,9 @@ Keep colors even when output is piped
|
|
|
66
66
|
.TP
|
|
67
67
|
\fB\-\-no\-color\fR
|
|
68
68
|
Turn colors off
|
|
69
|
+
.TP
|
|
70
|
+
\fB\-y\fR, \fB\-\-yes\fR
|
|
71
|
+
Answer yes to every confirmation instead of asking. Does not choose between candidates
|
|
69
72
|
.SH SUBCOMMANDS
|
|
70
73
|
.TP
|
|
71
74
|
rom\-weaver\-probe(1)
|
|
@@ -77,9 +80,6 @@ Unpack an archive or single\-payload compressed format
|
|
|
77
80
|
rom\-weaver\-checksum(1)
|
|
78
81
|
Compute checksums for a file, or for a ROM inside an archive
|
|
79
82
|
.TP
|
|
80
|
-
rom\-weaver\-ingest(1)
|
|
81
|
-
Sort a file into ROMs and patches, unpacking and hashing along the way
|
|
82
|
-
.TP
|
|
83
83
|
rom\-weaver\-compress(1)
|
|
84
84
|
Pack files into an archive, disc image, or ROM\-specific compressed format
|
|
85
85
|
.TP
|
|
@@ -100,6 +100,9 @@ Apply one or more patches to a ROM, in order (same as `patch apply`)
|
|
|
100
100
|
.TP
|
|
101
101
|
rom\-weaver\-completions(1)
|
|
102
102
|
Print a tab\-completion script for your shell
|
|
103
|
+
.TP
|
|
104
|
+
rom\-weaver\-formats(1)
|
|
105
|
+
List the formats, codecs, and checksum algorithms this build supports
|
|
103
106
|
.SH EXTRA
|
|
104
107
|
Examples:
|
|
105
108
|
# What is this file?
|
|
@@ -121,4 +124,4 @@ Examples:
|
|
|
121
124
|
|
|
122
125
|
Full guide: https://rom\-weaver.com/docs/cli
|
|
123
126
|
.SH VERSION
|
|
124
|
-
v0.
|
|
127
|
+
v0.13.0
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rom-weaver/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"author": "Brandon Casey",
|
|
5
5
|
"license": "AGPL-3.0-or-later",
|
|
6
6
|
"description": "Local-first toolkit for ROMs and disc images: inspect, extract, compress, and apply, create, or bundle patches. Offline via a browser service-worker PWA or CLI.",
|
|
@@ -64,15 +64,15 @@
|
|
|
64
64
|
"node": ">=22"
|
|
65
65
|
},
|
|
66
66
|
"optionalDependencies": {
|
|
67
|
-
"@rom-weaver/darwin-arm64": "0.
|
|
68
|
-
"@rom-weaver/darwin-x64": "0.
|
|
69
|
-
"@rom-weaver/linux-arm64-musl": "0.
|
|
70
|
-
"@rom-weaver/linux-ia32-musl": "0.
|
|
71
|
-
"@rom-weaver/linux-x64-gnu": "0.
|
|
72
|
-
"@rom-weaver/linux-x64-musl": "0.
|
|
73
|
-
"@rom-weaver/win32-arm64-msvc": "0.
|
|
74
|
-
"@rom-weaver/win32-ia32-msvc": "0.
|
|
75
|
-
"@rom-weaver/win32-x64-msvc": "0.
|
|
67
|
+
"@rom-weaver/darwin-arm64": "0.13.0",
|
|
68
|
+
"@rom-weaver/darwin-x64": "0.13.0",
|
|
69
|
+
"@rom-weaver/linux-arm64-musl": "0.13.0",
|
|
70
|
+
"@rom-weaver/linux-ia32-musl": "0.13.0",
|
|
71
|
+
"@rom-weaver/linux-x64-gnu": "0.13.0",
|
|
72
|
+
"@rom-weaver/linux-x64-musl": "0.13.0",
|
|
73
|
+
"@rom-weaver/win32-arm64-msvc": "0.13.0",
|
|
74
|
+
"@rom-weaver/win32-ia32-msvc": "0.13.0",
|
|
75
|
+
"@rom-weaver/win32-x64-msvc": "0.13.0"
|
|
76
76
|
},
|
|
77
77
|
"scripts": {
|
|
78
78
|
"docs:lint": "markdownlint-cli2",
|
|
@@ -97,6 +97,6 @@
|
|
|
97
97
|
"doctoc": "2.5.0",
|
|
98
98
|
"lefthook": "2.1.10",
|
|
99
99
|
"markdownlint-cli2": "0.23.2",
|
|
100
|
-
"oxlint": "1.
|
|
100
|
+
"oxlint": "1.77.0"
|
|
101
101
|
}
|
|
102
102
|
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
.ie \n(.g .ds Aq \(aq
|
|
2
|
-
.el .ds Aq '
|
|
3
|
-
.TH rom-weaver-ingest 1 "rom-weaver-ingest "
|
|
4
|
-
.SH NAME
|
|
5
|
-
rom\-weaver\-ingest \- Sort a file into ROMs and patches, unpacking and hashing along the way
|
|
6
|
-
.SH SYNOPSIS
|
|
7
|
-
\fBrom\-weaver ingest\fR <\fB\-i\fR|\fB\-\-input\fR> [\fB\-\-json\fR] <\fB\-o\fR|\fB\-\-output\fR> [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-s\fR|\fB\-\-select\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-\-no\-ignore\fR] [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-no\-nested\-extract\fR] [\fB\-\-color\fR] [\fB\-\-split\-bin\fR] [\fB\-\-checksum\fR] [\fB\-\-no\-color\fR] [\fB\-j\fR|\fB\-\-threads\fR] [\fB\-h\fR|\fB\-\-help\fR]
|
|
8
|
-
.SH DESCRIPTION
|
|
9
|
-
Sort a file into ROMs and patches, unpacking archives and hashing the ROMs as
|
|
10
|
-
it goes.
|
|
11
|
-
.PP
|
|
12
|
-
This is what the webapp runs when you drop a file on it, and it is the command
|
|
13
|
-
to reach for when you do not know what you have. For a description without the
|
|
14
|
-
unpacking, use `probe`.
|
|
15
|
-
.SH OPTIONS
|
|
16
|
-
.TP
|
|
17
|
-
\fB\-i\fR, \fB\-\-input\fR \fI<INPUT>\fR
|
|
18
|
-
File to sort into ROMs and patches
|
|
19
|
-
.TP
|
|
20
|
-
\fB\-o\fR, \fB\-\-output\fR \fI<DIR>\fR
|
|
21
|
-
Directory to write anything unpacked along the way into
|
|
22
|
-
.TP
|
|
23
|
-
\fB\-s\fR, \fB\-\-select\fR \fI<SELECT>\fR
|
|
24
|
-
Pick which ROM to use when the archive holds more than one, by exact name, prefix, or glob (repeatable)
|
|
25
|
-
.TP
|
|
26
|
-
\fB\-\-no\-ignore\fR
|
|
27
|
-
Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store
|
|
28
|
-
.TP
|
|
29
|
-
\fB\-\-no\-nested\-extract\fR
|
|
30
|
-
Stop after one layer; leave any archive found inside the input packed
|
|
31
|
-
.TP
|
|
32
|
-
\fB\-\-split\-bin\fR [\fI<SPLIT_BIN>\fR]
|
|
33
|
-
For a multi\-track CD\-format CHD, write one BIN per track (\-\-split\-bin) or one merged BIN (\-\-split\-bin false). Omit to be asked
|
|
34
|
-
.br
|
|
35
|
-
|
|
36
|
-
.br
|
|
37
|
-
\fIPossible values:\fR
|
|
38
|
-
.RS 14
|
|
39
|
-
.IP \(bu 2
|
|
40
|
-
true
|
|
41
|
-
.IP \(bu 2
|
|
42
|
-
false
|
|
43
|
-
.RE
|
|
44
|
-
.TP
|
|
45
|
-
\fB\-\-checksum\fR \fI<ALGO>\fR
|
|
46
|
-
Which checksums to compute for each ROM found (repeatable, comma\-separable) [default: crc32,md5,sha1]
|
|
47
|
-
.TP
|
|
48
|
-
\fB\-j\fR, \fB\-\-threads\fR \fI<auto|N>\fR [default: auto]
|
|
49
|
-
How many threads to use at most. auto uses every core; a format may still use fewer
|
|
50
|
-
.TP
|
|
51
|
-
\fB\-h\fR, \fB\-\-help\fR
|
|
52
|
-
Print help (see a summary with \*(Aq\-h\*(Aq)
|
|
53
|
-
.SH "GLOBAL OPTIONS"
|
|
54
|
-
.TP
|
|
55
|
-
\fB\-\-json\fR
|
|
56
|
-
Print one JSON object per line instead of human\-readable output
|
|
57
|
-
.TP
|
|
58
|
-
\fB\-\-progress\fR
|
|
59
|
-
Show progress even when output is piped to a file or another program
|
|
60
|
-
.TP
|
|
61
|
-
\fB\-\-no\-progress\fR
|
|
62
|
-
Hide progress
|
|
63
|
-
.TP
|
|
64
|
-
\fB\-\-log\-level\fR \fI<LOG_LEVEL>\fR
|
|
65
|
-
How much rom\-weaver logs to stderr. Separate from the normal output [default: off]
|
|
66
|
-
.br
|
|
67
|
-
|
|
68
|
-
.br
|
|
69
|
-
\fIPossible values:\fR
|
|
70
|
-
.RS 14
|
|
71
|
-
.IP \(bu 2
|
|
72
|
-
off
|
|
73
|
-
.IP \(bu 2
|
|
74
|
-
error
|
|
75
|
-
.IP \(bu 2
|
|
76
|
-
warn
|
|
77
|
-
.IP \(bu 2
|
|
78
|
-
info
|
|
79
|
-
.IP \(bu 2
|
|
80
|
-
debug
|
|
81
|
-
.IP \(bu 2
|
|
82
|
-
trace
|
|
83
|
-
.RE
|
|
84
|
-
.TP
|
|
85
|
-
\fB\-v\fR, \fB\-\-verbose\fR
|
|
86
|
-
Log more: \-v for info, \-vv for debug, \-vvv for trace
|
|
87
|
-
.TP
|
|
88
|
-
\fB\-q\fR, \fB\-\-quiet\fR
|
|
89
|
-
Log errors only
|
|
90
|
-
.TP
|
|
91
|
-
\fB\-\-dep\-trace\fR
|
|
92
|
-
Also log trace output from bundled libraries (for bug reports)
|
|
93
|
-
.TP
|
|
94
|
-
\fB\-\-color\fR
|
|
95
|
-
Keep colors even when output is piped
|
|
96
|
-
.TP
|
|
97
|
-
\fB\-\-no\-color\fR
|
|
98
|
-
Turn colors off
|