*** CRT - CaRTridge Images (from the CCS64 emulator) *** Document revision: 1.15 *** Last updated: Dec 10, 2009 *** Compiler/Editor: Peter Schepers *** Contributors/sources: Per Hakan Sundell, Markus Brenner Marco Van Den Heuvel Thomas Giesel 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 various ROM cartridges that exist, such as Action Replay, the Power cartridge, and the Final Cartridge. Normal game cartridges can load into several different memory ranges ($8000-9FFF, $A000-BFFF or $E000-FFFF). Newer utility and freezer cartridges were less intrusive, hiding themselves until called upon, and still others used bank-switching techniques to allow much larger ROM's than normal. Because of these "stealthing" and bank-switching methods, a special cartridge format was necessary, to let the emulator know where the cartridge should reside, the control line states to enable it and any special hardware features it uses. Here is a dump of a sample 8K normal cartridge, "Attack Of The Mutant Camels"... 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 40 01 00 00 00 00 01 00 00 00 00 00 00 @ 0020: 41 54 54 41 43 4B 20 4F 46 20 54 48 45 20 4D 55 ATTACKOFTHEMU 0030: 54 41 4E 54 20 43 41 4D 45 4C 53 00 00 00 00 00 TANTCAMELS 0040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP 0050: D3 9B BC FE C3 C2 CD 38 30 EA EA EA A9 01 85 13 ӛ80 0060: 4C B3 9B A9 08 85 5A 88 D0 FD C6 5A D0 F9 60 D0 LZZ` Bytes:$0000-000F - 16-byte cartridge signature "C64 CARTRIDGE" (padded with space characters) 0010-0013 - File header length ($00000040, in high/low format, calculated from offset $0000). The default and minimum value is $40. Some faulty cartridge images exist which show an incorrect value of $00000020. 0014-0015 - Cartridge version (high/low, presently 01.00) 0016-0017 - Cartridge hardware type ($0000, high/low) 0 - Normal cartridge 1 - Action Replay 2 - KCS Power Cartridge 3 - Final Cartridge III 4 - Simons Basic 5 - Ocean type 1 (*note) 6 - Expert Cartridge 7 - Fun Play, Power Play 8 - Super Games 9 - Atomic Power 10 - Epyx Fastload 11 - Westermann Learning 12 - Rex Utility 13 - Final Cartridge I 14 - Magic Formel 15 - C64 Game System, System 3 16 - WarpSpeed 17 - Dinamic (**note) 18 - Zaxxon, Super Zaxxon (SEGA) 19 - Magic Desk, Domark, HES Australia 20 - Super Snapshot 5 21 - Comal-80 22 - Structured Basic 23 - Ross 24 - Dela EP64 25 - Dela EP7x8 26 - Dela EP256 27 - Rex EP256 28 - Mikro Assembler 29 - reserved 30 - Action Replay 4 31 - StarDOS 32 - EasyFlash 0018 - Cartridge port /EXROM line status 0 - active (low) 1 - inactive (high) 0019 - Cartridge port /GAME line status 0 - active (low) 1 - inactive (high) 001A-001F - Reserved for future use 0020-003F - 32-byte cartridge name "CCSMON" (uppercase, padded with null characters) 0040-xxxx - Cartridge contents (called CHIP PACKETS, as there can be more than one per CRT file). See below for a breakdown of the CHIP format. The /EXROM and /GAME lines are active low lines, so a 0 means active or selected and a 1 means disabled or not selected. (*Note: Ocean type 1 includes Navy Seals, Robocop 2 & 3, Shadow of the Beast, Toki, Terminator 2 and more) (**Note: Dinamic includes Narco Police and more) --------------------------------------------------------------------------- CHIP Contents ------------- The following is the contents of the CHIP packet, from position $0040 on in the CRT file. 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: D3 9B BC FE C3 C2 CD 38 30 EA EA EA A9 01 85 13 ӛ80 0020: 4C B3 9B A9 08 85 5A 88 D0 FD C6 5A D0 F9 60 D0 LZZ` 0030: F2 60 A9 04 85 49 A9 00 85 48 A2 00 A5 48 9D 40 `IHH@ 0040: 03 A5 49 9D 60 03 A5 48 18 69 28 85 48 A5 49 69 I`Hi(HIi 0050: 00 85 49 E8 E0 18 D0 E4 60 A6 03 A4 02 BD 40 03 I`@ Bytes:$0000-0003 - Contained ROM signature "CHIP" (note there can be many modules in a .CRT file) 0004-0007 - Total packet length ($00002010, ROM image size and header combined) (high/low format) 0008-0009 - Chip type 0 - ROM 1 - RAM, no ROM data 2 - Flash ROM 000A-000B - Bank number ($0000 - normal cartridge) 000C-000D - Starting load address (high/low format) 000E-000F - ROM image size in bytes (high/low format, typically $2000 or $4000) 0010-xxxx - ROM data --------------------------------------------------------------------------- The following is a chart taken from the "Commodore Programmers Reference Guide". It details the state of various areas of memory depending on the state of the control lines. Legend: L - ROML (low) H - ROMH (high) G - /GAME (active low) E - /EXROM (active low) Addr LHGE LHGE LHGE LHGE LHGE LHGE LHGE LHGE LHGE Range 1111 101X 1000 011X 001X 1110 0100 1100 XX01 default 00X0 Ultimax ------------------------------------------------------------------------- E000-FFFF Kernal RAM RAM Kernal RAM Kernal Kernal Kernal ROMH(*) D000-DFFF IO/CHR IO/CHR IO/RAM IO/CHR RAM IO/CHR IO/CHR IO/CHR I/O C000-CFFF RAM RAM RAM RAM RAM RAM RAM RAM - A000-BFFF BASIC RAM RAM RAM RAM BASIC ROMH ROMH - 8000-9FFF RAM RAM RAM RAM RAM ROML RAM ROML ROML(*) 4000-7FFF RAM RAM RAM RAM RAM RAM RAM RAM - 1000-3FFF RAM RAM RAM RAM RAM RAM RAM RAM - 0000-0FFF RAM RAM RAM RAM RAM RAM RAM RAM RAM (*) Internal memory does not respond to write accesses in these areas From the above chart, the following table can be built. It shows standard cartridges, either 8K or 16K in size, and the memory ranges they load into. Type Size /GAME /EXROM Low Bank High Bank in K Line Line (ROML) (ROMH) ----------------------------------------------------- Normal 8k hi lo $8000-9FFF ---- Normal 16k lo lo $8000-9FFF $A000-BFFF Ultimax 8k lo hi $E000-FFFF ---- Ultimax 16k lo hi $8000-9FFF $E000-FFFF The ROMH and ROML lines are CPU-controlled status lines, used to bank in/out RAM, ROM or I/O, depending on what is needed at the time. The /GAME and /EXROM lines are active-low lines. Ultimax cartridges typically are situated in the $E000-FFFF (8K) ROM address range. There are some cartridges which only use 4K of the 8K allocation. If the cartridge is 16K in size, then it will reside in both $8000-9FFF and $E000-FFFF. Ultimax mode is very different from most other cartridges. When enabled, there is 4Kb of RAM at $0000-$0FFF, 8Kb of cartridge ROM at $8000-$9FFF, 4Kb of I/O registers at $D000-$DFFF and 8Kb of cartridge rom at $E000-$FFFF. All other addresses are unusable. --------------------------------------------------------------------------- Cartridge Specifics ------------------- 0 - Normal cartridge Size : 8Kb Addr Range: $8000-9FFF /EXROM : active (0) /GAME : inactive (1) 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 40 01 00 00 00 00 01 00 00 00 00 00 00 @ 0020: 41 54 54 41 43 4B 20 4F 46 20 54 48 45 20 4D 55 ATTACKOFTHEMU 0030: 54 41 4E 54 20 43 41 4D 45 4C 53 00 00 00 00 00 TANTCAMELS 0040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP 0050: D3 9B BC FE C3 C2 CD 38 30 EA EA EA A9 01 85 13 ӛ80 The second sample below is a dump of "Music Machine", a 4Kb ULTIMAX mode cartridge. It is still identified as a "standard cartridge" according to the ID. Size : 4Kb (ULTIMAX mode) Addr range: $F000-F7FF /EXROM : inactive (1) /GAME : active (0) 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 40 01 00 00 00 01 00 00 00 00 00 00 00 @ 0020: 4D 55 53 49 43 20 4D 41 43 48 49 4E 45 00 00 00 MUSICMACHINE 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0040: 43 48 49 50 00 00 10 10 00 00 00 00 F0 00 10 00 CHIP 0050: 3C 66 C3 C3 66 3C FF FF 18 3C 66 7E 66 66 66 00 Bank 0 $08 -> Bank 1 $10 -> Bank 2 $18 -> Bank 3 $20 -> Bank 4 $28 -> Bank 5 $30 -> Bank 6 $38 -> Bank 7 $01 -> Bank 8 $09 -> Bank 9 $11 -> Bank 10 $19 -> Bank 11 $21 -> Bank 12 $29 -> Bank 13 $31 -> Bank 14 $39 -> Bank 15 The bank field in the chip headers is set according to the value written to $DE00. The following bits are used for bank decoding in $DE00 (0 being the LSB, 3 being the MSB). Bit# 76543210 xx210xx3 After copying memory from the ROM banks, the selection program writes a value of $86 to $DE00. This seems either to reset or disable the cartridge ROM. =========================================================================== 8 - Super Games Size : 64Kb (4 banks of 16Kb each) Addr range: $8000-BFFF (all modules) /EXROM : active (0) /GAME : active (0) 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 40 01 00 00 08 00 00 00 00 00 00 00 00 @ 0020: 53 55 50 45 52 20 47 41 4D 45 53 00 00 00 00 00 SUPERGAMES 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP@@ 0050: 0A 80 0A 80 C3 C2 CD 38 30 00 A9 80 A0 00 85 FB 80 .... 4050: 43 48 49 50 00 00 40 10 00 00 00 01 80 00 40 00 CHIP@@ 4060: 27 80 A8 80 C3 C2 CD 38 30 00 40 C0 40 C0 40 C0 '80@@@ .... 8060: 43 48 49 50 00 00 40 10 00 00 00 02 80 00 40 00 CHIP@@ 8070: 00 00 00 49 4D C7 64 47 46 45 F3 48 DC 08 7E 0B IMdGFEH~ .... C070: 43 48 49 50 00 00 40 10 00 00 00 03 80 00 40 00 CHIP@@ C080: D5 F9 F0 C1 D5 F7 F0 BD E8 B5 02 F0 FB C9 05 30 0 The SUPER GAMES cartridge uses 4 16Kb banks ($8000-$BFFF) of ROM memory. Bank selecting is done by writing to $DF00. Values for $DF00: $00 -> Bank 0 $01 -> Bank 1 (also value $09 used) $02 -> Bank 2 $03 -> Bank 3 Bit #2: 0 = ROM $8000-$BFFF 1 = ROM $8000-$9FFF Bit #3: 0 = ? 1 = if bit #2 AND #3 are on (1) then the module is off =========================================================================== 9 - Atomic Power Size : 32Kb (4 banks of 8Kb modules) Addr range: $8000-9FFF (all modules) /EXROM : active (0) /GAME : active (0) 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 40 01 00 00 09 00 00 00 00 00 00 00 00 @ 0020: 41 74 6F 6D 69 63 20 50 6F 77 65 72 00 00 00 00 AtomicPower 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 0050: 09 80 0C 80 C3 C2 CD 38 30 4C 41 80 4C 1E 80 4C 80LALL .... 2050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP 2060: 09 80 0C 80 C3 C2 CD 38 30 4C 3F 80 4C 91 80 4C 80L?LL .... 4060: 43 48 49 50 00 00 20 10 00 00 00 02 80 00 20 00 CHIP 4070: EF FC 09 80 C3 C2 CD 38 30 4C 27 80 4C DB 81 4C 80L'LہL .... 6070: 43 48 49 50 00 00 20 10 00 00 00 03 80 00 20 00 CHIP 6080: 09 80 0C 80 C3 C2 CD 38 30 4C 73 86 4C 30 80 4C 80LsL0L =========================================================================== 10 - Epyx Fastload Size : 8Kb Addr range: $8000-9FFF /EXROM : inactive (1) /GAME : inactive (1) 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 40 01 00 00 0A 01 01 00 00 00 00 00 00 @ 0020: 45 50 59 58 20 46 41 53 54 4C 4F 41 44 00 00 00 EPYXFASTLOAD 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 0050: 30 80 5E FE C3 C2 CD 38 30 20 04 90 4C 38 DF AB 0^80L8߫ =========================================================================== 11 - Westermann Learning Size : 16Kb Addr Range: $8000-BFFF /EXROM : active (0) /GAME : active (0) 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 40 01 00 00 0B 00 00 00 00 00 00 00 00 @ 0020: 57 45 53 54 45 52 4D 41 4E 4E 00 00 00 00 00 00 WESTERMANN 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 40 00 CHIP@ 0050: 09 80 9C 80 C3 C2 CD 38 30 A2 00 8E 16 D0 20 84 80 =========================================================================== 12 - Rex Utility Size : 8K Addr range: $8000-9FFF /EXROM : active (0) /GAME : inactive (1) 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 40 01 00 00 0C 00 01 00 00 00 00 00 00 @ 0020: 52 45 58 00 00 00 00 00 00 00 00 00 00 00 00 00 REX 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 0050: 08 80 C1 FE C3 C2 CD 38 30 6C 95 E3 20 A3 FD 20 80l =========================================================================== 13 - Final Cartridge I Size : 16Kb Addr range: $8000-BFFF /EXROM : inactive (1) /GAME : inactive (1) 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 40 01 00 00 0D 01 01 00 00 00 00 00 00 @ 0020: 54 68 65 20 46 69 6E 61 6C 20 43 61 72 74 72 69 TheFinalCartri 0030: 64 67 65 20 49 00 00 00 00 00 00 00 00 00 00 00 dgeI 0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP@@ 0050: 80 BA 5E FE C3 C2 CD 38 30 00 A0 A0 20 2D FE 58 ^80-X =========================================================================== 14 - Magic Formel Size : 64Kb (8 banks of 8Kb) Addr range: $E000-FFFF /EXROM : inactive (1) /GAME : inactive (1) 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 40 01 00 00 0E 01 01 00 00 00 00 00 00 @ 0020: 4D 61 67 69 63 20 46 6F 72 6D 65 6C 00 00 00 00 MagicFormel 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 E0 00 20 00 CHIP 0050: 4D 46 30 8D 00 DF 60 8D 01 DF 60 8D 02 DF 60 8D MF0``` ... 2050: 43 48 49 50 00 00 20 10 00 00 00 01 E0 00 20 00 CHIP 2060: 4C 5F E4 8D 00 DF 60 8D 01 DF 60 8D 02 DF 60 8D L_``` ... 4060: 43 48 49 50 00 00 20 10 00 00 00 02 E0 00 20 00 CHIP 4070: 4D 46 32 8D 00 DF 60 8D 01 DF 60 8D 02 DF 60 8D MF2``` ... 6070: 43 48 49 50 00 00 20 10 00 00 00 03 E0 00 20 00 CHIP 6080: 4D 46 33 8D 00 DF 60 8D 01 DF 60 8D 02 DF 60 8D MF3``` ... 8080: 43 48 49 50 00 00 20 10 00 00 00 04 E0 00 20 00 CHIP 8090: 4D 46 34 8D 00 DF 60 8D 01 DF 60 8D 02 DF 60 8D MF4``` ... A090: 43 48 49 50 00 00 20 10 00 00 00 05 E0 00 20 00 CHIP A0A0: 4D 46 35 8D 00 DF 60 8D 01 DF 60 8D 02 DF 60 8D MF5``` ... C0A0: 43 48 49 50 00 00 20 10 00 00 00 06 E0 00 20 00 CHIP C0B0: 4D 46 36 8D 00 DF 60 8D 01 DF 60 8D 02 DF 60 8D MF6``` .. E0B0: 43 48 49 50 00 00 20 10 00 00 00 07 E0 00 20 00 CHIP E0C0: 4D 46 37 8D 00 DF 60 8D 01 DF 60 8D 02 DF 60 8D MF7``` =========================================================================== 15 - C64 Game System, System 3 Size : 512Kb (64 banks of 8Kb each) Addr range: $8000-9FFF (all modules) /EXROM : active (0) /GAME : inactive (1) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII ----------------------------------------------- ---------------- 000000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64CARTRIDGE 000010: 00 00 00 40 01 00 00 0F 00 01 00 00 00 00 00 00 @ 000020: 43 36 34 47 53 20 43 61 72 74 72 69 64 67 65 00 C64GSCartridge 000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP 000050: 6D 80 C5 80 C3 C2 CD 38 30 4C CB 80 4C 36 84 4C mŀ80LˀL6L .... 002050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP 002060: 18 D0 A9 FF 8D 15 D0 8D 1D D0 8D 17 D0 A2 07 A9 ЩЍЍТ .... 004060: 43 48 49 50 00 00 20 10 00 00 00 02 80 00 20 00 CHIP 004070: E0 08 19 21 77 84 52 98 9F 80 A5 21 31 01 31 89 !wR!11 .... 006070: 43 48 49 50 00 00 20 10 00 00 00 03 80 00 20 00 CHIP 006080: C0 08 1C 1D A0 92 03 03 D8 AA 04 C0 B8 01 40 EA ت@ .... 07E430: 43 48 49 50 00 00 20 10 00 00 00 3F 80 00 20 00 CHIP? 07E440: 45 20 41 20 42 49 47 20 58 FE 4F 4E 20 54 48 49 EABIGXONTHI Here is a list of the known cartridges: C64GS 4-in-1 (Commodore) (512 kB) Last Ninja Remix (System 3) (512 kB) Myth (System 3) (512 kB) ROM memory is organized in 8Kb ($2000) banks located at $8000-$9FFF. Bank switching is done by writing to address $DE00+X, where X is the bank number (STA $DE00,X). For instance, to read from bank 3, address $DE03 is accessed. The CRT file contains a string of CHIP blocks, each block with a start address of $8000, length $2000 and the bank number in the bank field. In the cartridge header, /EXROM ($18) is set to 0, /GAME ($19) is set to 1 to enable the 8Kb ROM configuration. =========================================================================== 16 - WarpSpeed Size : 16Kb Addr range: $8000-BFFF /EXROM : inactive (1) /GAME : inactive (1) 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 40 01 00 00 10 01 01 00 00 00 00 00 00 @ 0020: 57 61 72 70 73 70 65 65 64 00 00 00 00 00 00 00 Warpspeed 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP@@ 0050: 4C 22 80 4C 22 80 FF 43 42 4D 20 53 E4 20 18 E5 L"L"CBMS After RESET or POWER ON, 16kB of Cartridge ROM are visible at $8000-$BFFF. Additionally, ROM normally located at $9E00-$9FFF is mirrored into IO1 and IO2 at $DE00-$DFFF. ROM at $8000-$BFFF is disabled by writing into the IO2 area (typically $DF00) and may be re-enabled by writing into IO1 ($DE00). However, the $DE00-$DFFF (IO1/IO2) area itself always remains mapped to cartridge ROM. =========================================================================== 17 - Dinamic Size : 128Kb (16 banks of 8Kb each) Addr range: $8000-9FFF (all modules) /EXROM : active (0) /GAME : inactive (1) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII ----------------------------------------------- ---------------- 000000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64CARTRIDGE 000010: 00 00 00 40 01 00 00 11 00 01 00 00 00 00 00 00 @ 000020: 4E 61 72 63 6F 20 50 6F 6C 69 63 65 00 00 00 00 NarcoPolice 000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000040: 43 48 49 50 00 00 20 10 00 00 00 00 80 00 20 00 CHIP 000050: 0B 80 0B 80 C3 C2 CD 38 30 00 00 78 A2 FF 9A D8 80x .. 002050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP 002060: 1C 8C 1B 8C 16 16 8F 16 16 88 1C 1C 86 1C 1C 89 .. 004060: 43 48 49 50 00 00 20 10 00 00 00 02 80 00 20 00 CHIP 004070: B6 02 07 08 07 07 00 0A 0A B6 00 05 0A 00 07 07 .. 01E130: 43 48 49 50 00 00 20 10 00 00 00 0F 80 00 20 00 CHIP 01E140: 00 D5 70 03 F5 70 0F 5F 70 0F F7 70 35 FD F0 37 pp_pp57 Here is a list of the known DINAMIC cartridges: Narco Police (128 kB) Satan (128 kB) ROM memory is organized in 8Kb ($2000) banks located at $8000-$9FFF. Bank switching is done by reading from address $DE00+X, where X is the bank number (LDA $DE00,X). For instance, to read from bank 3, address $DE03 is accessed. The CRT file contains a string of CHIP blocks, each block with a start address of $8000, length $2000 and the bank number in the bank field. In the cartridge header, /EXROM ($18) is set to 0 & /GAME ($19) is set to 1 to enable the 8Kb ROM configuration. =========================================================================== 18 - Zaxxon, Super Zaxxon (SEGA) Size : 20Kb (3 banks of different sizes) Addr range: $8000-8FFF (mirrored in $9000-9FFF, module 0, chip U1) $A000-BFFF (banked modules 1 and 2, chip U2) /EXROM : active (0) /GAME : active (0) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII ----------------------------------------------- ---------------- 000000: 43 36 34 20 43 41 52 54 52 49 44 47 45 20 20 20 C64CARTRIDGE 000010: 00 00 00 40 01 00 00 12 00 00 00 00 00 00 00 00 @ 000020: 5A 61 78 78 6F 6E 00 00 00 00 00 00 00 00 00 00 Zaxxon 000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000040: 43 48 49 50 00 00 10 10 00 00 00 00 80 00 10 00 CHIP 000050: 0D 80 29 80 C3 C2 CD 38 30 78 4C 09 80 78 A9 00 )80xLx .. 001050: 43 48 49 50 00 00 20 10 00 00 00 00 A0 00 20 00 CHIP 001060: A2 0F BD 00 20 D0 04 CA 10 F8 60 BD 70 20 F0 0D `p .. 003060: 43 48 49 50 00 00 20 10 00 00 00 01 A0 00 20 00 CHIP 003070: 65 A2 36 A3 E7 A3 CB A4 94 A5 86 A6 5E A7 35 A8 e6ˤ^5 The (Super) Zaxxon carts use a 4Kb ($1000) ROM at $8000-$8FFF (mirrored in $9000-$9FFF) along with two 8Kb ($2000) cartridge banks located at $A000-$BFFF. One of the two banks is selected by doing a read access to either the $8000-$8FFF area (bank 0 is selected) or to $9000-$9FFF area (bank 1 is selected). /EXROM ($18 = $00) and /GAME ($19 = $00) lines are always pulled to GND to select the 16 kB ROM configuration. The CRT file includes three CHIP blocks: a) bank = 0, load address = $8000, size = $1000 b) bank = 0, load address = $A000, size = $2000 c) bank = 1, load address = $A000, size = $2000 =========================================================================== 19. Magic Desk, Domark, HES Australia Size : 32Kb, 64Kb or 128Kb sizes (4 to 16 banks of 8Kb each) Addr range: $8000-9FFF (all banks) /EXROM : active (0) /GAME : inactive (1) 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 40 01 00 00 13 00 01 00 00 00 00 00 00 @ 0020: 4D 61 67 69 63 20 44 65 73 6B 00 00 00 00 00 00 MagicDesk 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 0050: 09 80 C6 CA C3 C2 CD 38 30 8E 16 D0 20 A3 FD 20 80 .. 2050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP 2060: 00 3F 0A 01 00 86 4E 24 28 31 30 29 3A 4A 4F 59 ?N$(10):JOY .. 4060: 43 48 49 50 00 00 20 10 00 00 00 02 80 00 20 00 CHIP 4070: 00 8B C9 28 4E 24 2C 31 29 B3 B1 22 FF 22 A7 32 (N$,1)""2 .. 6070: 43 48 49 50 00 00 20 10 00 00 00 03 80 00 20 00 CHIP 6080: AE 01 83 33 2C 37 2C 22 32 29 20 44 45 4C 20 4B 3,7,"2)DELK This cartridge type is very similar to the OCEAN cart type: ROM memory is organized in 8Kb ($2000) banks located at $8000-$9FFF. Bank switching is done by writing the bank number to $DE00. Different from the Ocean type, bit 8 is cleared for selecting one of the ROM banks. If bit 8 is set ($DE00 = $80), the /GAME & /EXROM lines are disabled, turning on RAM at $8000-$9FFF instead of ROM. In the cartridge header, /EXROM ($18) is set to 0, /GAME ($19) is set to 1 to indicate the RESET/power-up configuration of 8 kB ROM. Here is a list of the known cartridges: Ghosbusters (HES Australia) (32 kB) Magic Desk (Commodore) (32 kB) Badlands (Domark) (64 kB) Vindicators (Domark) (64 kB) Wonderboy (HES Australia) (64 kB) Cyberball (Domark) (128 kB) =========================================================================== 20. Super Snapshot 5 Size : 64Kb (4 banks of 16Kb each) Addr range: $8000-BFFF /EXROM : inactive (1) /GAME : inactive (1) 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 40 01 00 00 14 01 01 00 00 00 00 00 00 @ 0020: 53 75 70 65 72 20 53 6E 61 70 73 68 6F 74 20 35 SuperSnapshot5 0030: 20 4E 54 53 43 00 00 00 00 00 00 00 00 00 00 00 NTSC 0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP@@ 0050: 09 80 59 80 C3 C2 CD 38 30 20 03 9F 00 FA F4 20 Y80 ... 4050: 43 48 49 50 00 00 40 10 00 00 00 01 80 00 40 00 CHIP@@ 4060: 79 DE BC FE C3 C2 CD 38 30 A9 05 8D 20 D0 8D 21 y޼80Ѝ! ... 8060: 43 48 49 50 00 00 40 10 00 00 00 02 80 00 40 00 CHIP@@ 8070: 50 DE BC FE C3 C2 CD 38 30 A9 0A 85 6A A9 0D 85 P޼80j ... C070: 43 48 49 50 00 00 40 10 00 00 00 03 80 00 40 00 CHIP@@ C080: 50 DE BC FE C3 C2 CD 38 30 85 07 20 1A AD A5 76 P޼80v =========================================================================== 21. Comal-80 Size : 64Kb (4 banks of 16Kb each) Addr range: $8000-BFFF /EXROM : inactive (1) /GAME : inactive (1) 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 40 01 00 00 15 01 01 00 00 00 00 00 00 @ 0020: 43 6F 6D 61 6C 20 38 30 00 00 00 00 00 00 00 00 Comal80 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP@@ 0050: 87 87 70 CF C3 C2 CD 38 30 4C AA CF 4C 70 CF 4C p80LLpL ... 4050: 43 48 49 50 00 00 40 10 00 00 00 01 80 00 40 00 CHIP@@ 4060: AA CF 70 CF C3 C2 CD 38 30 01 29 01 28 01 2C 04 p80)(, ... 8060: 43 48 49 50 00 00 40 10 00 00 00 02 80 00 40 00 CHIP@@ 8070: AA CF 70 CF C3 C2 CD 38 30 91 92 92 92 92 92 92 p80 ... C070: 43 48 49 50 00 00 40 10 00 00 00 03 80 00 40 00 CHIP@@ C080: 7B C8 7E C8 C3 C2 CD 38 30 43 4F 4D 41 4C 80 93 {~80COMAL The Comal-80 Cartridge uses $DE00 for bank selection, and uses 16Kb banks ($4000) at $8000-$BFFF. There are 4 banks of ROM memory and are referenced by the following values: $80 -> Bank 0 $81 -> Bank 1 $82 -> Bank 2 $83 -> Bank 3 =========================================================================== 22. Structured Basic Size : 16Kb (2 banks of 8Kb each) Addr range: $8000-9FFF /EXROM : active (0) /GAME : inactive (1) No sample data/file available. Any read/write access to $DE00 or $DE01 will switch in bank 0. Any read/write access to $DE02 will switch in bank 1. Any read/write access to $DE03 will switch off /EXROM. =========================================================================== 23. Ross Size : 16Kb or 32Kb sizes (1 or 2 banks of 16Kb each) Addr range: $8000-BFFF /EXROM : active (0) /GAME : active (0) 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 40 01 00 00 17 00 00 00 00 00 00 00 00 @ 0020: 52 6F 73 73 20 31 34 00 00 00 00 00 00 00 00 00 Ross14 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0040: 43 48 49 50 00 00 40 10 00 00 00 00 80 00 40 00 CHIP@@ 0050: 09 80 09 80 C3 C2 CD 38 30 A2 00 BD 20 80 4D 0E 80M ... 4050: 43 48 49 50 00 00 40 10 00 00 00 01 80 00 40 00 CHIP@@ 4060: 3F 5A 4D 4D 50 4D 8D 25 3F 1A 1F 77 3F CD E0 3F ?ZMMPM%?w?? Any read access to $DE00 will switch in bank 1 (if cart is 32Kb). Any read access to $DF00 will switch off /EXROM and /GAME. =========================================================================== 24. Dela EP64 Size : 8Kb to 72kb sizes (1 to 9 banks of 8Kb each, or 1 bank of 8Kb and 1 or 2 banks of 32Kb each) Addr range: $8000-9FFF /EXROM : active (0) /GAME : inactive (1) 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 40 01 00 00 18 00 01 00 00 00 00 00 00 @ 0020: 44 45 4C 41 20 45 50 36 34 00 00 00 00 00 00 00 DELAEP64 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 0050: 00 85 5E FE C3 C2 CD 38 30 FF FF FF FF FF FF FF ^80 ... 2050: 43 48 49 50 00 00 80 10 00 00 00 01 80 00 80 00 CHIP 2060: 54 45 53 54 0D 2A 0D 54 45 20 36 34 0D 00 00 00 TEST*TE64 This is an eprom cartridge. It has 1 2764 (8Kb) which holds the base eprom with the base menu, and 2 27256 eproms of which 8Kb parts are banked into the $8000-9FFF area. The bank selecting is done by writing to $DE00. The following bits are used for bank decoding in $DE00 (0 being the LSB, 3 being the MSB). Bit# 76543210 xx10xx32 Any bank value below 4 or above 11 switches in the base bank (bank 0). The bit values for each eprom bank are : eprom bank 1 : xx00xx01 eprom bank 2 : xx01xx01 eprom bank 3 : xx10xx01 eprom bank 4 : xx11xx01 eprom bank 5 : xx00xx10 eprom bank 6 : xx01xx10 eprom bank 7 : xx10xx10 eprom bank 8 : xx11xx10 Setting bit 7 high will disablef /EXROM (set to high) =========================================================================== 25. Dela EP7x8 Size : 8Kb to 64kb sizes (1 to 8 banks of 8Kb each) Addr range: $8000-9FFF /EXROM : active (0) /GAME : inactive (1) 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 40 01 00 00 19 00 01 00 00 00 00 00 00 @ 0020: 44 45 4C 41 20 45 50 37 78 38 00 00 00 00 00 00 DELAEP7x8 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 0050: 09 80 5E FE C3 C2 CD 38 30 78 A2 FF 9A D8 8E 16 ^80x؎ ... 2050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP 2060: 94 83 A0 83 C3 C2 CD 38 30 02 BB 5A 30 5F EE 3D 80Z0_= This is an eprom cartridge. It has 8 8Kb banks of which the first holds the base menu, the other eproms can be banked into the $8000-9FFF area. The bank selecting is done by writing to $DE00. Each low bit is used to bank in the respective eprom. If all bits are high then the /EXROM is disabled (set to high). The bit values for each eprom bank is: eprom bank 1 : 11111110 ($FE) (base eprom) eprom bank 2 : 11111101 ($FD) eprom bank 3 : 11111011 ($FB) eprom bank 4 : 11110111 ($F7) eprom bank 5 : 11101111 ($EF) eprom bank 6 : 11011111 ($DF) eprom bank 7 : 10111111 ($BF) eprom bank 8 : 01111111 ($7F) /EXROM off : 11111111 ($FF) =========================================================================== 26. Dela EP256 Size : 8Kb to 262kb sizes (1 to 33 banks of 8Kb each) Addr range: $8000-9FFF /EXROM : active (0) /GAME : inactive (1) 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 40 01 00 00 1A 00 01 00 00 00 00 00 00 @ 0020: 44 45 4C 41 20 45 50 32 35 36 00 00 00 00 00 00 DELAEP256 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 0050: 00 85 5E FE C3 C2 CD 38 30 93 0D 2B 2B 2B 20 45 ^80+++E ... 2050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP 2060: 09 80 28 80 C3 C2 CD 38 30 78 A2 05 8E 16 D0 20 (80x ... 4060: 43 48 49 50 00 00 20 10 00 00 00 02 80 00 20 00 CHIP 4070: 0B 80 BC FE C3 C2 CD 38 30 DC 10 8E 16 D0 20 87 80 ... 6070: 43 48 49 50 00 00 20 10 00 00 00 03 80 00 20 00 CHIP 6080: 09 80 F6 8E C3 C2 CD 38 30 A2 C8 8E 16 D0 20 .. 80Ȏ. ... 8080: 43 48 49 50 00 00 20 10 00 00 00 04 80 00 20 00 CHIP 8090: 94 83 A0 83 C3 C2 CD 38 30 02 BB 5A 30 5F EE 3D 80Z0_= This is an eprom cartridge. It has 33 8Kb banks of which the first holds the base menu, the other eproms can be banked into the $8000-9FFF area. The bank selecting is done by writing to $DE00. The values for the (extra) eprom banks are: eprom banks 1- 8 : $38-3F eprom banks 9-16 : $28-2F eprom banks 17-24 : $18-1F eprom banks 25-32 : $08-0F Setting bit 7 high will disable /EXROM (set to high) =========================================================================== 27. Rex EP256 Size : 8Kb to 262kb sizes (1 bank of 8Kb and 1 to 8 banks of either 8Kb, 16Kb or 32Kb) Addr range: $8000-9FFF /EXROM : active (0) /GAME : inactive (1) 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 40 01 00 00 1B 00 01 00 00 00 00 00 00 @ 0020: 52 45 58 20 45 50 32 35 36 00 00 00 00 00 00 00 REXEP256 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 0050: 09 80 C1 FE C3 C2 CD 38 30 20 A3 FD 20 50 FD 20 80P ... 2050: 43 48 49 50 00 00 20 10 00 00 00 01 80 00 20 00 CHIP 2060: 09 80 F2 8F C3 C2 CD 38 30 A2 C8 8E 16 D0 20 A3 80Ȏ ... 4060: 43 48 49 50 00 00 40 10 00 00 00 02 80 00 40 00 CHIP@@ 4070: 09 80 09 80 C3 C2 CD 38 30 58 D8 20 84 FF 20 8A 80X This is an eprom cartridge. It has 9 eprom sockets, of which the first holds the base eprom with the base menu which is an 8Kb eprom, the other eprom sockets can handle 8Kb, 16Kb or 32Kb eproms, of which 8kb can be banked into the $8000-9FFF area. The bank selecting is done by writing to $DFA0. Bits 2, 1 and 0 determine which socket is used and bits 5 and 4 are used to select an 8Kb piece of the eprom. The possible values for bits 5 and 4 for the (extra) eprom banks are: 8Kb : 3, 2, 1, 0 16Kb bank 0 : 2, 0 16Kb bank 1 : 3, 1 32Kb bank 0 : 0 32Kb bank 1 : 1 32Kb bank 2 : 2 32Kb bank 3 : 3 Reading from $DFC0 disables /EXROM (set to 1) Reading from $DFE0 enabled /EXROM (set to 0) =========================================================================== 28. Mikro Assembler Size : Addr range: /EXROM : /GAME : No information yet. =========================================================================== 29. Reserved =========================================================================== 30. Action Replay 4 (AR4) Size : Addr range: /EXROM : /GAME : No information yet. =========================================================================== 31. StarDOS Size : Addr range: /EXROM : /GAME : No information yet. =========================================================================== 32. EasyFlash Size : Addr range: /EXROM : /GAME : No information yet.