Skip to content

Copier Headers

Matt Nadareski edited this page Sep 19, 2025 · 5 revisions

Copier Headers

Copier headers are extra pieces of information that are included in some dumped ROM images, usually at the beginning. Sometimes, these are used to determine what hardware or program dumped them, but in other cases, they can be shorthand ways of determing original media information that isn't normally stored in the data. Header skippers are XML files that include information on how to detect these headers and other data transformations so that managers can compare only against the actual data. Below is a brief description of each supported skipper as well as the XML implementation included in the repository.

Atari 7800

a7800 or a7800.xml

Description

Atari 7800 copier headers take up 0x80 bytes at the start of the file.

<?xml version="1.0"?>

<detector>

  <name>Atari 7800</name>
  <author>Roman Scherzer</author>
  <version>1.0</version>

  <rule start_offset="80" end_offset="EOF" operation="none">
    <data offset="1" value="415441524937383030" result="true"/>
  </rule>

  <rule start_offset="80" end_offset="EOF" operation="none">
    <data offset="64" value="41435455414C20434152542044415441205354415254532048455245" result="true"/>
  </rule>

</detector>

Atari Lynx

lynx or lynx.xml

Description

Atari Lynx copier headers take up up 0x40 bytes at the start of the file.

<?xml version="1.0"?>

<detector>

  <name>Atari Lynx</name>
  <author>Roman Scherzer</author>
  <version>1.0</version>

  <rule start_offset="40" end_offset="EOF" operation="none">
    <data offset="0" value="4C594E58" result="true"/>
  </rule>

  <rule start_offset="40" end_offset="EOF" operation="none">
    <data offset="6" value="425339" result="true"/>
  </rule>

</detector>

Commodore PSID Music

psid or psid.xml

Description

Commodore PSID music headers take up a variable amount of byte at the start of the file, either 0x76 or 0x7c bytes.

<?xml version="1.0"?>

<detector>

  <name>psid</name>
  <author>Yori Yoshizuki</author>
  <version>1.2</version>

  <rule start_offset="76" end_offset="EOF" operation="none">
    <data offset="0" value="5053494400010076" result="true"/>
  </rule>

  <rule start_offset="76" end_offset="EOF" operation="none">
    <data offset="0" value="505349440003007c" result="true"/>
  </rule>

  <rule start_offset="7c" end_offset="EOF" operation="none">
    <data offset="0" value="505349440002007c" result="true"/>
  </rule>

   <rule start_offset="7c" end_offset="EOF" operation="none">
    <data offset="0" value="505349440001007c" result="true"/>
  </rule>

   <rule start_offset="7c" end_offset="EOF" operation="none">
    <data offset="0" value="525349440002007c" result="true"/>
  </rule>

</detector>

NEC PC-Engine / TurboGrafx 16

pce or pce.xml

Description

NEC PC-Engine / TurboGrafx 16 headers take up 0x200 bytes at the start of the file.

<?xml version="1.0"?>

<detector>

    <name>NEC TurboGrafx-16/PC-Engine</name>
    <author>Matt Nadareski (darksabre76)</author>
    <version>1.0</version>

    <rule start_offset="200">
        <data offset="0" value="4000000000000000AABB02"/>
    </rule>

</detector>

Nintendo 64

n64 or n64.xml

Description

Nintendo 64 does not have copier headers, rather the byte order is what can be different between files.

<?xml version="1.0"?>

<detector>

  <name>Nintendo 64 - ABCD</name>
  <author>CUE</author>
  <version>1.1</version>

  <!-- V64 format -->
  <rule start_offset="0" end_offset="EOF" operation="none">
    <data offset="0" value="80371240" result="true"/>
  </rule>

  <!-- Z64 format -->
  <rule start_offset="0" end_offset="EOF" operation="byteswap">
    <data offset="0" value="37804012" result="true"/>
  </rule>

  <!-- N64 format? -->
  <rule start_offset="0" end_offset="EOF" operation="wordswap">
    <data offset="0" value="40123780" result="true"/>
  </rule>

</detector>

Nintendo Famicom / Nintendo Entertainment System

nes or nes.xml

Description

Nintendo Famicom / Nintendo Entertainment System headers (commonly referred to as "iNES" headers due to the program that popularized them) take up 0x10 bytes at the start of the file.

<?xml version="1.0"?>

<detector>

  <name>Nintendo Famicon/NES</name>
  <author>Roman Scherzer</author>
  <version>1.1</version>

  <rule start_offset="10" end_offset="EOF" operation="none">
    <data offset="0" value="4E45531A" result="true"/>
  </rule>

</detector>

Nintendo Famicom Disk System

fds or fds.xml

Description

Nintendo Famicom Disk System headers take up 0x10 bytes at the start of the file.

<?xml version="1.0"?>

<detector>

  <name>fds</name>
  <author>Yori Yoshizuki</author>
  <version>1.0</version>

  <rule start_offset="10">
    <data offset="0" value="4644531A010000000000000000000000"/>
  </rule>

  <rule start_offset="10">
    <data offset="0" value="4644531A020000000000000000000000"/>
  </rule>

  <rule start_offset="10">
    <data offset="0" value="4644531A030000000000000000000000"/>
  </rule>

  <rule start_offset="10">
    <data offset="0" value="4644531A040000000000000000000000"/>
  </rule>

</detector>

Nintendo Super Famicom / Super Nintendo Entertainment System

snes or snes.xml

Description

Nintendo Super Famicom / Super Nintendo Entertainment System headers take up 0x200 bytes at the start of the file.

<?xml version="1.0"?>

<detector>

  <name>Nintendo Super Famicom/SNES</name>
  <author>Matt Nadareski (darksabre76)</author>
  <version>1.0</version>
  
  <!-- fig header -->
  <rule start_offset="200">
    <data offset="16" value="0000000000000000"/>
  </rule>
  
  <!-- smc header -->
  <rule start_offset="200">
    <data offset="16" value="AABB040000000000"/>
  </rule>
  
  <!-- ufo header -->
  <rule start_offset="200">
    <data offset="16" value="535550455255464F"/>
  </rule>

</detector>

Nintendo Super Famicom / Super Nintendo Entertainment System SPC Music

spc or spc.xml

Description

Nintendo Super Famicom / Super Nintendo Entertainment System SPC Music headers take up 0x100 bytes at the start of the file.

<?xml version="1.0"?>

<detector>

  <name>Nintendo Super Famicon SPC</name>
  <author>Yori Yoshizuki</author>
  <version>1.0</version>

  <rule start_offset="00100" end_offset="EOF" operation="none">
    <data offset="0" value="534E45532D535043" result="true"/>
  </rule>

</detector>

Clone this wiki locally