formats index
	*** CRT - CaRTridge Files (from the CCS64 emulator)

** Document revision 1.0

  Cartridge files were introduced in the CCS64  emulator,  written  by  Per
Hakan Sundell, and use the ".CRT" file extension. This format  was  created
to handle the non-standard ROM cartridges that exist, such as Action Replay
and the Power cartridge.

  Typically, normal game cartridges loaded into one of two specified memory
ranges ($8000 or $E000), but newer utility cartridges were less  intrusive,
hiding themselves until called upon. Because of this "stealthing" method, a
special cartridge format was necessary,  to  let  the  emulator  where  the
cartridge should reside, as well as any special hardware features it uses.

  Here is a dump of a cartridge  supplied  with  the  CCS  emulator,  which
contains the CCS Machine Language Monitor...

      00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F        ASCII
      -----------------------------------------------   ----------------
0000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20   C64CARTRIDGE
0010: 00 00 00 20 01 00 00 00 00 01 00 00 00 00 00 00   
0020: 43 43 53 4D 4F 4E 00 00 00 00 00 00 00 00 00 00   CCSMON
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
0040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00   CHIP

  Bytes:$0000-000F - 16-byte cartridge signature "C64 CARTRIDGE   "
         0010-0013 - File header  length  ($00000020,  in  high/low  format
                     starting at offset $0000
         0014-0015 - Cartridge version (high/low, presently $0100)
         0016-0017 - Cartridge hardware type ($0000)
                       0 - Normal cartridge
                       1 - Action Replay
                       2 - KCS Power Cartridge
              0018 - Cartridge port EXROM line active
                      0 - inactive
                      1 - active
              0019 - Cartridge port GAME line active
                      0 - inactive
                      1 - active
         001A-001F - Reserved for future use
         0020-003F - 32-byte cartridge name "CCSMON" (null terminated)
         0040-xxxx - Cartridge contents (called CHIP PACKETS, as there  can
                     be more than one per CRT file)

  Folling is the contents of the above HEX dump, from  position  $0040  on.
Note I have re-adjusted the starting address to be $0000, since we are  now
looking at a file contained in the .CRT file, and all size  references  are
from where it starts.

      00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F        ASCII
      -----------------------------------------------   ----------------
0000: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00   CHIP
0010: 00 94 63 94 C3 C2 CD 38 30 00 01 02 03 04 11 06   c80
0020: 07 08 09 0C 0D 0E 0F 12 13 14 15 17 18 23 24 2A   #$*
0030: 3B 3A 25 27 2D 2B 2C 05 00 10 FF FF 10 8B B6 91   ;:%'-+,
0040: B2 87 DE 8B A5 93 DC 82 64 83 2E 91 82 85 B8 88   ދ܂d.

  Bytes:$0000-0003 - Contained ROM image signature "CHIP" (note  there  can
                     be more than one image in a .CRT file)
         0004-0007 - Total packet length ($00002010,  ROM  image  size  and
                     header combined)
         0008-0009 - Chip type
                      0 - ROM
                      1 - RAM, no ROM data
         000A-000B - Bank location (0 - normal cartridge)
         000C-000D - Load address range (high/low format)
         000E-000F - ROM image size (high/low format)
         0010-xxxx - ROM data