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 C64úCARTRIDGEúúú
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 ú”c”ÃÂÍ80úúúúúúú
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
ÿ