NRG (file format)

From Wikipedia, the free encyclopedia

A .nrg file is a proprietary CD image file format used by Nero Burning ROM, a utility suite made by Nero AG, to create and burn ISO 9660 CD images.

Other than Nero Burning ROM, a variety of software titles can use these image files. For example, Alcohol 120% or Daemon Tools can mount NRG files onto virtual drives for reading.

Contrary to popular belief .nrg files are not ISO images with .nrg extension and a header attached. For technical details on the nrg format see below.

Contents

[edit] Converting nrg files

There are several tools available to convert a .nrg data file into an ISO 9660 CD image.

  • Open Source command line tools include:
    • nrg2iso is a well known tool for nrg conversions. Unfortunately it does not understand the nrg file format and is hardcoded to read all nrg files as disc at once (DAO) type causing it to fail on track at once (TAO) type images.
    • fusenrg converts nrg to iso on the fly. Also hardcoded to read all nrg files as disc at once (DAO)
    • nrg4iso is a fairly new utility that understands the nrg format and can convert both DAO and TAO images into ISO 9660 CD images.
  • Shareware tools include:
    • PowerISO converts from nrg to ISO as well as allows for browsing and extracting individual files from a nrg data file.
    • Freeware ISO burning software IMGBURN is very capable of managing the NRG images as well. http://www.imgburn.com/

[edit] File format

The file format specification below is unofficial and as such is lacking some data. There may also be errors.

The nrg file format uses a variation of the Interchange File Format (IFF) and stores data in a chain of "chunks". All integer values are stored unsigned in big endian byte order. Version 1 nrg format stores values as 32bit integers. Nero Burning ROM v5.5 introduced a new nrg file format, version 2, with support for 64bit integers.

[edit] Header

The nrg format does not store its data as a header at the beginning of a file. It is instead attached at the end of the file like a footer. Image information is stored as a serialized chain of IFF chunks. To get the offset of the first chunk one must read the nrg footer from the last 8 or 12 bytes of the file.

Nero footer (Version 1)
Size (bytes) Type Value / Purpose
4 Chunk ID "NERO"
4 32bit Offset of the first chunk data chain
Nero footer (Version 2)
Size (bytes) Type Value / Purpose
4 Chunk ID "NER5"
8 64bit Offset of the first chunk data chain

[edit] Chunks

[edit] (CUES) Cue Sheet

Available in all versions of nrg file format.

Cue sheet information. Not yet documented

Version 1
Size (bytes) Type Value / Purpose
4 Chunk ID "CUES"
4 32bit Chunk size (bytes)
Version 2
Size (bytes) Type Value / Purpose
4 Chunk ID "CUEX"
4 32bit Chunk size (bytes)

[edit] (DAOI) DAO Information

Available in all versions of nrg file format.

DAOI chunks store disc at once sessions specific information in two parts. The first part contains data that is specific for the session only. The second part repeats track specific information (grey) once for each track. Parse the SINF chunks to get the number of tracks for a specific session.

Version 1
Size (bytes) Type Value / Purpose
4 Chunk ID "DAOI"
4 32bit Chunk size (bytes) big endian
4 32bit Chunk size (bytes) little endian
12   Set to zero
4 32bit Toc type
1 8bit First track
1 8bit Last track
10   Set to zero
4 32bit Sector size
4 32bit Mode
4 32bit Index0 (Pre gap)
4 32bit Index1 (Start of track)
4 32bit Index2 (End of track + 1)
Version 2
Size (bytes) Type Value / Purpose
4 Chunk ID "DAOX"
4 32bit Chunk size (bytes) big endian
4 32bit Chunk size (bytes) little endian
12   Set to zero
4 32bit Toc type
1 8bit First track
1 8bit Last track
10   Set to zero
4 32bit Sector size
4 32bit Mode
8 64bit Index0 (Pre gap)
8 64bit Index1 (Start of track)
8 64bit Index2 (End of track + 1)

[edit] (CDTX) CD-text

Available in version 2 nrg file format.

CDTX chunks contain raw CD-text data.

Version 2
Size (bytes) Type Value / Purpose
4 Chunk ID "CDTX"
4 32bit Chunk size (bytes)
18 CD-text pack  

[edit] (ETNF) Extended Track Information

Available in all versions of nrg file format.

ETNF chunks are used to store track information for track at once sessions. The data is repeated once for each track. Parse the SINF chunks to get the number of tracks for a specific session.

Version 1
Size (bytes) Type Value / Purpose
4 Chunk ID "ETNF"
4 32bit Chunk size (bytes)
4 32bit Track offset in image
4 32bit Track length (bytes)
4 32bit Mode
4 32bit Start lba on disc
4    ?
Version 2
Size (bytes) Type Value / Purpose
4 Chunk ID "ETN2"
4 32bit Chunk size (bytes)
8 64bit Track offset in image
8 64bit Track length (bytes)
4 32bit Mode
4 32bit Start lba on disc
4    ?

[edit] (SINF) Session Information

Available in all versions of nrg file format.

Session information chunks should be used to quickly scan the image for session and track count. SINF chunks are always listed in sequential order corresponding to the sessions order. To get more details information about a specific session one must parse the corresponding DAOI or ETNF chunk.

Version 1 and 2
Size (bytes) Type Value / Purpose
4 Chunk ID "SINF"
4 32bit Chunk size (bytes)
4 32bit # tracks in session

[edit] (MTYP) Media Type?

Available in all versions of nrg file format.

This chunk and its use is unknown.

Version 1 and 2
Size (bytes) Type Value / Purpose
4 Chunk ID "MTYP"
4 32bit Chunk size (bytes)
4    ?

[edit] (END!) End of chain

Available in all versions of nrg file format.

End of chain chunk is signals that there are no more chunks to be read.

Version 1 and 2
Size (bytes) Type Value / Purpose
4 Chunk ID "END!"
4 32bit Always zero

[edit] See also

[edit] Emulating/editing software supporting NRG

[edit] External links

  • nrg4isoBSD licensed command line utility with full nrg format support (POSIX)
  • nrg2isoGPL licensed command line utility. Does not fully support nrg format. (Linux)
  • IATGPL licensed command line utility without support for CD-AUDIO
  • fusenrgGPL licensed command line utility. Converts NRG to ISO on the fly. Does not fully support nrg format. (Linux)
  • nrg2iso — Windows graphical utility. Does not fully support nrg format. (Windows)
  • nrg2iso — Mac OS X graphical utility. Based on nrg2iso command line tool. (Mac OS X)