Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 137

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 259

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 1149

Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 1034

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/ncorlett/neillcorlett.com/wiki/wikka.php:137) in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 1136

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/ncorlett/neillcorlett.com/wiki/wikka.php:137) in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 1136
<br /> <b>Deprecated</b>: Function ereg() is deprecated in <b>/home/ncorlett/neillcorlett.com/wiki/wikka.php</b> on line <b>439</b><br /> Command-Line Pack<br /> <b>Deprecated</b>: Function ereg() is deprecated in <b>/home/ncorlett/neillcorlett.com/wiki/wikka.php</b> on line <b>439</b><br /> - Neill Corlett's Home Page


Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 439
Command-Line Pack


Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/actions/header.php on line 55


Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 41

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 46

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 61

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 62

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 70

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 72

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 79

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 80

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 85

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 630

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 632

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 632

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 635

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 632

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 635

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 632

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 635

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 632

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 632

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 630

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 632

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 632

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 632

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 635

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 632

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 632

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 632
This is a collection of command-line tools I've written over the years that I decided to clean up and repackage. All of the tools are released under the terms of the GNU General Public License version 3.

Source code:

Command-Line Pack v1.03 source code

Pre-compiled binaries:

DOS (16-bit, 8086)
DOS (32-bit, i386)
Windows (32-bit, i386)
Windows (32-bit, Alpha AXP)
Windows (32-bit, MIPS)
Windows (64-bit, x86_64)
Mac OS X (32-bit, PPC)
Mac OS X (32-bit, i386)
Mac OS X (64-bit, x86_64)
Human68k

Contents



bin2iso - Convert CD .BIN to .ISO


Converts CD-ROM .BIN images (including full 2352-byte sectors) into .ISO format (2048-byte sectors). Automatically detects mode 1 or 2. Will warn if there are any form 2 sectors, which are not convertible.

Usage: bin2iso [-f] input_file output_file
 -f: Force conversion and bypass checks


bincomp - Compare binary files


Similar to the old DOS "FC /B" command. The default output is a side-by-side table showing 16 bytes per line. The "-l" flag will show one byte per line.

Usage: bincomp file1 file2 [-l]
  -l   Use long format


brrrip - Rip SNES BRR sound samples


Automatically detects and rips sound samples from SNES ROMs. Works great with uncompressed .SPC files too.

Usage: brrrip romfile [samplerate [minblocks]]


"samplerate" should be given in Hz. Samples will only be detected if they are at least "minblocks" long (default=50). The output files will be named (hex address).wav.

byteshuf - Shuffle or unshuffle bytes in a file


Divides a file into its interleaved even/odd bytes, or recombines them. Can also divide every 3rd, 4th, etc. byte, depending on how many subfiles you specify. Useful for dealing with certain types of ROM images.

Usage:
  To unshuffle: byteshuf [-o] -u source      [subfiles...]
  To shuffle:   byteshuf [-o] -s destination [subfiles...]

Options:
  -o       Force overwrite


For example, "byteshuf -u abc def0 def1" will split all the even bytes from "abc" into "def0", and the odd bytes into "def1".

byteswap - Swap byte order of files


Swaps the byte order of each record in a file, in place. If the record size is 2, this means every even and odd byte is swapped, but the record size can also be larger than 2. Useful for dealing with certain types of ROM images.

Usage: byteswap [-q] [-s recordsize] files...
 -q: Quiet
 -s: Size, in bytes, of each record to swap (default: 2)


cdpatch - CD-XA image insert/extract utility


Inserts or extracts files in-place into CD-ROM images in either .BIN or .ISO format. Properly handles CD-XA streams from Mode 2 CDs (Video CDs, PlayStation movie files, etc.) and patches ECC/EDC data as appropriate.

Usage:
  To insert:  cdpatch -i bin_or_iso [options] [files...]
  To extract: cdpatch -x bin_or_iso [options] [files...]

Options:
  -be       Favor big-endian values in ISO9660 metadata
  -boot     Insert or extract boot area
  -d dir    Set the base directory for inserted or extracted files
	        (defaults to .)
  -f        Skip filesystem consistency checks
  -le       Favor little-endian values in ISO9660 metadata
  -o        Force overwrite when extracting files
  -r        Recurse into subdirectories
  -v        Verbose


By default, cdpatch will attempt to insert or extract every file in the CD image, the same as if you'd specified "-r ." The "-boot" option will insert or extract the 32KiB boot sector area to a file named "boot".

Some CD images may have conflicting sets big- and little-endian metadata as a platform-specific quirk or copy protection scheme; the "-be" and "-le" options can be used to override this.

Specifying both -f and -v will list all filesystem errors, while still ignoring them for extraction purposes.

When extracting files via -x, cdpatch preserves file modification times when possible.

ecm - Encoder/decoder for Error Code Modeler format


ECM is a compression format for CD images which removes ECC/EDC data where it's possible to do so losslessly. Compressing a CD image with ECM first, then compressing the ECM file with a general-purpose compressor such as 7z or RAR, can result in better compression than 7z or RAR alone. See the ECM page for more details.

Usage:

To encode:
	ecm cdimagefile
	ecm cdimagefile ecmfile
	ecm e cdimagefile ecmfile

To decode:
	unecm ecmfile
	unecm ecmfile cdimagefile
	ecm d ecmfile cdimagefile


fakecrc - Fake the CRC32 of a file


Modifies a file to force it to have a particular CRC32 checksum, by patching 4 consecutive bytes anywhere in the file. Can also obtain the CRC32 checksum of a file.

Usage:
To obtain the CRC32 of a file:
	fakecrc file
To modify the CRC32 of a file:
	fakecrc file desired_crc [offset]


The 4 bytes at "offset" will be modified. If no offset is given, the last 4 bytes of the file are used.

hax65816 - Simple 65816 disassembler


A simple 65c816 disassembler with basic flag following. This is the disassembler I used for the Seiken Densetsu 3 project, among others.

Usage: hax65816 imagefile start address [length] [options]
Output is written to stdout. All values must be given in hex.
If no length is given, disassembly will stop at the end of the bank.
Options:
  -m0         Assume M flag = 0
  -m1         Assume M flag = 1 (default)
  -x0         Assume X flag = 0 (default)
  -x1         Assume X flag = 1
  -noreturn   Disable flag reset after RTS/RTL/RTI
  -noguess    Disable flag guess on BRK/COP/WDM/STP
  -nofollow   Disable REP/SEP following (not recommended)


id3point - Pointless ID3v1 Tagger


A basic ID3v1 tagger for MP3 files. Probably superseded by newer tools, but included here nonetheless.

Usage: id3point [options] mp3file(s)

Options:
  -t title     Set ID3 title       -t-   Clear ID3 title
  -a artist    Set ID3 artist      -a-   Clear ID3 artist
  -m album     Set ID3 album       -m-   Clear ID3 album
  -y year      Set ID3 year        -y-   Clear ID3 year
  -c comment   Set ID3 comment     -c-   Clear ID3 comment
  -k track#    Set ID3 track #     -k-   Clear ID3 track #
  -g genre#    Set ID3 genre #     -g-   Clear ID3 genre #
  -tf          Set ID3 title based on the filename

Notes:
  - Only ID3v1 tags are supported.
  - The track number increments automatically for each additional file.
  - The -tf option will turn "Artist - Title.mp3" into "Title", but
	be sure to check the titles by hand in case it gets confused.


pecompat - Maximize compatibility of a Win32 PE file


Patches a Windows 32-bit PE executable file to maximize its compatibility with older versions of Windows.
  • Clears the linker timestamp
  • Sets the required OS version and subsystem version to "4.00"
  • Recalculates the PE file checksum
  • Warns if any Unicode import functions are used
Usage: pecompat pe_exe_file(s)


rels - Relative Searcher


Searches for a string in a group of files by comparing the relative difference between each letter. This allows finding strings in non-ASCII character sets. Also attempts double values (e.g. 00=A, 02=B, 04=C) and wide values (every other byte, as in UCS-2). A staple ROM hacking tool.

Usage: rels string files


Search strings may include '.' characters as wildcards, but must include at least two non-wildcard characters.

screamf - .AMF to .S3M converter


Converts AMF music files to S3M. AMF was a format used exclusively by Otto Chrons' DOS Sound and Music Interface (DSMI) library and Dual Module Player. Various DOS games and demos in the 1990s used this format. AMF files were the result of running MOD2AMF on an existing S3M or other module; screamf does the opposite. It's round-trippable for the most part.

Usage: screamf inputfile.amf outputfile.s3m


subfile - Extract a portion of a file


Extracts a portion of a file, given a starting offset and length, in bytes. Offset and length may be specified in C style "0x123" or "0123" notation for hexadecimal or octal.

Usage: subfile infile offset length outfile


uips - Universal IPS patch create/apply utility


UIPS is a command-line utility for creating and applying IPS patches. IPS is an old patch format for binary files, limited to 16 MiB in size, and not to be confused with the newer UPS format. Multiple source files and IPS v2 truncation are supported.

Usage:
To create an IPS patch:
  uips c patch_file source_file(s) target_file
To apply an IPS patch:
  uips a patch_file target_file


For example, "uips c patch.ips file1 file2 file3 file4" will create a patch file capable of transforming any of file1, file2, or file3 to file4.

usfv - Universal SFV create/verify utility


USFV is a utility for creating and verifying SFV (Simple File Verification) files, such as those created by Win-SFV32. A SFV file contains a list of filenames and their corresponding CRC32 checksums.

Caveat: CRC32 is not a cryptographic hash and cannot be used to ensure that a file was not maliciously modified (see fakecrc, above).

Usage:
To create a SFV file: usfv c sfvfile filenames
To verify a SFV file: usfv v sfvfile


vb2rip - VB2 sound format ripping utility


Rips music in .VB2 and various similar formats found in PlayStation and PlayStation 2 games. See the VB2rip page for more details.

Usage: vb2rip [options] inputfile(s)

Options:
  -fmt format     Specify the input file format
  -o path         Specify the output filename (if one input file is given)
	                or specify the output directory (if several are given)
  -mono           Treat input file as monaural
  -stereo         Treat input file as stereo
  -rate n         Specify the sample rate
  -interleave n   Specify the block interleave size
  -skip n         Skip this many bytes after each block
  -offset n       Start at the given offset in the input file
  -endflag        Stop decoding when the sample end flag is reached
  -noendflag      Ignore the sample end flag
  -maxbytes n     Set the maximum number of input bytes to decode

Supported input formats:
  Format   Description
  ------------------------------------------------------------
  raw      Raw data (for experimentation)
  vb2      Konami multi-song .BIN/.VB2 file (Dance Dance Revolution, etc.)
  8        .8 file (Suikoden)
  msa      .MSA file (Psyvariar, possibly other PS2 games)
  xa2      .XA2 file (Extreme-G 3, possibly other PS2 games)


wordadd - Addition word puzzle solver


Finds solutions to letter/digit substitution puzzles of the "WORD + WORD = OTHER" variety. Supports multiple addends and digits mixed in with letters.

Usage: wordadd words... sum
Examples:
	wordadd BEEF BACON MEATS


zerofill - Create a large, empty file


Creates a file filled with bytes of value zero. Similar to "dd if=/dev/zero", except not all platforms have dd, and there's a progress indicator.

Inside a virtual machine, zerofill can be used to create a large dummy file in order to zero out all the unused sectors before compressing the drive image. (zerofill is also useful for creating drive images in the first place.)

Usage: zerofill [-f] [-q] size filename
 -f: Force overwrite
 -q: Quiet


"size" may be specified in C style "0x123" or "0123" notation for hexadecimal or octal.

Version history

  • v1.03:
    • pecompat: New app
    • uips: Fixed a bug that caused bytes near the end of the file to be unnecessarily included in the .ips patch
    • cdpatch: Combining -f and -v now lists all errors, while still ignoring them
    • cdpatch: -x option now preserves modification time when possible
  • v1.02a:
    • Rebuilt binaries for Win32 i386 due to a virus scanner false positive
  • v1.02:
    • New platforms: Human68k, Win32 Alpha AXP
    • Windows versions now warn if they're not being executed from the command line
  • v1.01:
    • Re-added single-argument form to ecm and unecm, allowing drag and drop to work again
  • v1.00:
    • Initial release





Wiki

contact Neill Corlett