Skip to content
FoxCouncilPublic

About

Open, edit, save, convert all disc image file formats!

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

108 Commits

Folders and files

Repository files navigation

FoxImg

Build Release Download Patreon

FoxImg is a disc image tool for Windows. It opens, edits, converts, and writes disc images through an explorer-style window. It is written in x86 assembly (MASM) against the Win32 API. The program is one small executable with no runtime dependencies.

Features

  • Browse an image as a folder tree with a file list, preview pane, and status bar.
  • Add, rename, move, and delete files and folders inside an image.
  • Drag and drop in both directions: from Explorer into the image, and from the image to Explorer.
  • Save or convert any open image to ISO 9660 + Joliet + UDF 1.02, to BIN/CUE (2048 or raw), to cdrdao TOC, CloneCD, Nero, Alcohol 120% or ECM with the sector EDC and ECC generated, to a gzip- or zip-compressed ISO, or to CSO, ZSO, CHD, ISZ, DAX, JSO, GCZ, UIF, DAA or DMG.
  • Keep El Torito boot records through a save. BIOS and UEFI entries survive, and isolinux/GRUB boot info tables are patched for the new layout.
  • Open images of any size. A sliding 64 MB mapping window keeps memory use flat.
  • Long operations run on a worker thread with a progress bar and a Cancel button.
  • Dark mode follows the Windows setting. The window scales per monitor (PerMonitorV2).
  • Preview pane shows text files and every frame of an .ico file.
  • CD audio tracks appear as TrackNN.wav files: extract them as real WAVs, or double-click one to play it. Audio-only discs open too (CUE, MDS, CHD).

Screenshots

Main window

The Debian 11 netinst ISO: folder tree, file list, and a text preview of README.txt.

Save As format list

Save As lists 42 output formats. The first 30 are shown.

Convert in progress

A convert to bzip2 runs on a worker thread. The status bar shows progress and a Cancel button.

Audio CD

An audio CD in a CHD. Each track appears as a WAV file.

Command line

FoxImg image.iso                  open an image
FoxImg image.iso out.isz          convert without a window; the format follows the extension
FoxImg image.iso out.cue /raw     BIN/CUE with MODE1/2352 raw sectors
FoxImg image.iso out.iso /xiso    an Xbox XISO instead of ISO 9660
FoxImg image.iso out.iso /cdi     ISO 9660 under a CD-i (Green Book) label
FoxImg image.imd outdir /extract  every file and folder of the image into outdir

The convert returns exit code 0 on success and prints one line to the console it was started from.

Format support

Format Extensions Read Write Notes
ISO 9660 + Joliet .iso .img Yes Yes Level 1 names with ~N de-duplication on write
UDF 1.02 - 2.60 .iso Yes Yes Writes a 1.02 bridge volume; reads metadata, virtual, and sparable partitions
El Torito boot - Yes Yes BIOS and UEFI entries; boot info table patching; FAT size detection for UEFI images
Raw sectors .bin .img Yes Yes Reads MODE1/2352, MODE2/2352, MODE2/2336, detected by sync sniff; writes MODE1/2352 with the EDC and ECC generated
BIN/CUE .cue .bin Yes Yes Writes MODE1/2048, or MODE1/2352 raw with the EDC and ECC generated; cue sheet included
Files over 4 GB - Yes Yes Stored in the UDF half only, as Windows install media does
Nero .nrg Yes Yes Reads v1 and v2, DAO and TAO chunk lists; writes v2 DAO with one raw track
Alcohol 120% .mds .mdf Yes Yes Reads the first data track of the first session; writes one raw track
Alcohol MDX .mdx Yes No Single-file v2 descriptor; encrypted and compressed declined
CloneCD .ccd .img Yes Yes Raw image beside the sheet; writes one MODE1 track with its TOC entries
DiscJuggler .cdi Yes No Found by signature scan
Dreamcast .gdi Yes No Data track with its 45000 block base
cdrdao .toc Yes Yes DATAFILE with track mode; writes MODE1_RAW
ECM .ecm Yes Yes Decoded once to a temporary raw image with the parity restored; writes MODE1 records
Xbox / Xbox 360 .iso (XDVDFS) Yes Yes Reads XISO and all redump partition offsets; writes XISO (the "Xbox XISO" save type, .xiso, or /xiso)
3DO .iso .cue .3do (Opera) Yes Yes Reads the label, directory chains and copies; writes one copy of everything as .3do
CD-i .iso .bin Yes Yes Reads Green Book descriptors beside CD001; writes the ISO 9660 layout under a CD-I label (the "CD-i disc" save type, .cd-i, or /cdi), 2048-byte sectors, no XA attributes
gzip .iso.gz .gz Yes Yes Any image inside; Save As writes a gzip ISO
bzip2 .iso.bz2 .bz2 Yes Yes Any image inside; Save As writes a bzip2 ISO
zip .zip Yes Yes Reads the largest stored or deflated entry, CRC verified; Save As writes one deflated entry, zip64 past 4 GB
CSO / CISO .cso .ciso Yes Yes Reads v0/v1/v2, deflate and LZ4 blocks (PSP, Dreamcast tooling); Save As writes v1 with 2 KB deflate blocks
ZSO .zso Yes Yes CISO layout with LZ4 blocks
DAX .dax Yes Yes PSP: zlib frames and raw NC areas; writes 8 KB zlib frames
JSO .jso Yes Yes PSP: reads deflate and LZO methods; writes deflate, 2 KB blocks
PBP .pbp Yes No PS1 Classics EBOOT (PSISOIMG); multi-disc takes disc 1; encrypted PSP UMD declined
CHD .chd Yes Yes Reads v5: zlib, LZMA, FLAC, all CD codecs, stored and self hunks; parented CHDs declined. Writes v5 CD images as chdman createcd does: one MODE1 track, cdzl hunks, the compressed map and both SHA-1s
GCZ .gcz Yes Yes Dolphin: zlib and stored blocks with the Adler-32 block hashes Dolphin checks
RVZ .rvz Yes Yes Dolphin, GameCube discs: reads Zstandard or stored groups and packed junk, Wii (encrypted partitions) and WIA declined; writes a GameCube disc as stored groups, untested in Dolphin
WBFS .wbfs Planned No Wii backup file system
GCM .gcm .iso Yes Yes Reads the big-endian FST; the system files show under sys. Writes a disc back with them, or a browse-only one without
NKit .nkit.iso Planned No Wii / GameCube
ISZ .isz Yes Yes UltraISO: reads zlib, bzip2, raw and zero chunks, AES declined; writes zlib, raw and zero
DAA .daa Yes Yes PowerISO v0x100 deflate; v0x110, LZMA and encrypted declined
UIF .uif Yes Yes MagicISO: zlib, raw and zero blocks; passworded declined
BlindWrite 5/6 .b5t .b6t Yes No Descriptor beside the .b5i/.b6i data file
C2D .c2d Yes No WinOnCD / Roxio; compressed C2D declined
PDI .pdi Planned No Instant CD/DVD
DMG .dmg Yes Yes Apple UDIF: reads zlib, bzip2, raw and zero chunks, ADC and lzfse declined; writes zlib and zero
FAT12 / FAT16 / FAT32 .img .ima Yes Yes Reads floppy and disk images, plain or behind an MBR partition table: BIOS parameter block, long names, fragmented files. Writes the smallest standard floppy that fits, else a FAT16 disk image, with long names
VHD .vhd Yes Yes Reads Virtual PC / Hyper-V fixed and dynamic disks; differencing disks declined. Writes a fixed disk around a FAT image
ImageDisk .imd Yes Yes Reads track records with sector maps, stored, filled and absent sectors; flattened, then opened as FAT. Writes a FAT floppy as track records with filled sectors compressed
HFS (classic Macintosh) .toast .img .hfs Yes Yes Reads the master directory block, catalog and extents overflow B-trees, MacRoman names, Apple Partition Map; resource forks appear as name.rsrc. Writes an 800K or 1440K floppy or a sized disk with a proper catalog B-tree; name.rsrc siblings become resource forks
HFS+ / HFSX .hfs .hfs+ .img .dmg Yes Yes Reads the volume header, catalog and overflow B-trees with 32-bit extents, UTF-16 names, files over 4 GB, plain or inside an HFS wrapper; resource forks as name.rsrc. Writes a sized HFS+ volume (.hfs+) with 4 KB blocks and a proper catalog tree; name.rsrc siblings become resource forks
Disk Copy 4.2 .image .dc42 Yes Yes The 84-byte header and sector data; opened as HFS. Written around an 800K HFS volume with the data checksum
WinImage IMZ .imz Yes Yes A zip holding one floppy image; the zip reader unpacks it, then FAT. Written as a FAT floppy in a zip
Atari ST .st .msa Yes Yes Raw ST disks are FAT12 behind a 68000 boot jump; MSA unpacks the track records, stored or run-length. Writes MSA with run-length tracks
Amiga ADF .adf Yes Yes Reads OFS and FFS: root and directory hash chains, file headers with extension blocks, Latin-1 names. Writes FFS, 880K or 1760K as the tree needs, with hash chains, extension blocks, bitmap and boot checksum
Commodore D64 .d64 Yes Yes Reads 35 and 40 track 1541 images, with or without error bytes: directory and file sector chains, PETSCII names with the type as extension. Writes a 35-track disk: folders flattened, names to PETSCII, types from .prg/.seq/.usr/.rel, 1541-style sector interleave
HxC HFE .hfe Yes No Raw MFM bitstreams from the floppy emulator: IBM sectors (syncs, address marks, CRCs) flattened by cylinder, head and number; Amiga sectors (odd/even longs, checksums) laid out as an ADF; FM declined
Commodore G64 .g64 Yes No GCR track dumps decoded at bit level: sync marks, header and data blocks with their checksums; laid out as a D64 and opened as one
Commodore T64 .t64 Yes Yes Reads the tape archive directory: each program as a .prg with its load address; wrong in-use counts and end addresses tolerated. Writes one entry per file
Apple II DOS 3.3 .dsk .do .po Yes Yes Reads VTOC, catalog and track/sector lists in either sector order; binary, BASIC and text files cut to their real length, typed extensions. Writes a DOS-order disk (.do) with types from the extensions
Apple II ProDOS .dsk .do .po Yes Yes Reads volume and subdirectories, seedling, sapling and tree files with sparse blocks; 140K in either order, 800K and hard drive images as plain blocks. Writes a 140K, 800K or sized .po with sparse blocks left unallocated
Amstrad CPC / Spectrum +3 DSK .dsk Yes No Plain and extended DSK: track records flattened with sectors in id order, then CP/M
CP/M (CPC, +3, PCW) .dsk Yes Yes Reads 180K, 360K and 720K layouts; the reserved track count found by scoring the directory; extents joined, 8 and 16-bit block numbers, user areas as folders. Writes a CPC data-format disk in an extended DSK
TeleDisk .td0 Yes Yes Reads plain and advanced-compression (LZSS with adaptive Huffman) images; stored, pattern and run-length sector blocks; flattened in sector order, then opened as FAT or CP/M. Writes plain TD0 with CRCs and pattern blocks
Unknown containers any Yes No Signature scan finds an ISO 9660 volume at any offset

Read-only formats convert on save: open the image, then save it in any writable format.

CD audio tracks (from cue sheets, Alcohol images and CHDs) show up as TrackNN.wav pseudo-files: extraction writes real WAV files, and a double-click plays the track.

Compression

The exe carries its own DEFLATE (RFC 1951) codec - an inflate decoder and a compressor - because the built-in Windows compression APIs only speak their own framings (MSZIP, XPRESS, LZMS), not the raw deflate streams these files hold. CRC-32 comes from ntdll, so no table lives in the image. Compressed images expand once to %TEMP%\FoxImg\ and then open like any other image, the same way ECM does.

The other codecs share that same input and output path, so a container can mix them chunk by chunk - an ISZ may hold zlib and bzip2 blocks in one image.

Codec Status Used by
DEFLATE (inflate) Yes .gz, .zip, .cso, .gcz, .dax, .jso, .isz, .pbp (raw and zlib framing, auto-detected)
DEFLATE (compress) Yes Save As gzip ISO: lazy matching over a 32 KB window; per block the cheaper of dynamic Huffman, fixed, or stored
LZMA Yes CHD hunks; DAA v0x110 and LZMA-compressed RVZ later
bzip2 Yes .bz2, ISZ and DMG chunks; bzip2-compressed RVZ later
bzip2 (compress) Yes Save As bzip2 ISO: 900 KB blocks, Burrows-Wheeler by prefix doubling, one Huffman table
Zstandard Yes RVZ groups and tables
LZ4 Yes ZSO, CISO v2; Save As ZSO encodes 2 KB blocks
FLAC Yes CHD cdfl and flac hunks (16-bit stereo)
LZO1X Yes JSO method 0
CD-ROM EDC/ECC (generate) Yes Raw BIN/CUE, TOC, CCD and ECM writers; the ECM and CHD readers restore the parity those formats strip

Download

Get the latest build from the Releases page, or fetch the executable directly:

https://github.com/FoxCouncil/FoxImg/releases/latest/download/FoxImg.exe

There is nothing to install.

Build

Requirements: Visual Studio Build Tools (MASM, the linker, and the Windows SDK).

build.cmd          release build to build\FoxImg.exe
build.cmd debug    build with debug information

CI builds every push and pull request. A tag that starts with v publishes a release with the executable and a zip attached.

Requirements

  • Windows 10 version 1607 or later, x86 or x64.
  • No runtime libraries. The executable imports only Windows system DLLs.

Support

FoxImg is free. If it helps you, support us on Patreon. Product page: foxcouncil.com/software/foximg.html.

License

See LICENSE.

About

Open, edit, save, convert all disc image file formats!

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages