Fields
After the header the file is a series of packets, one for each chip or bank. Each has a 16-byte header and then the chip's data. The numbers are big-endian. The tag, the length checks and the chip type names
match the text of VICE 3.8's cartconv program (“CHIP tag not found”, “data size exceeds chunk length”, “chunk length exceeds data size, skipping”, and the chip types ROM, RAM, FLASH and EEPROM).
| Offset | Size | Field | Meaning |
|---|---|---|---|
| 0 | 4 | Signature | the letters CHIP. Where it is missing the packets stop: the explorer shows the rest as bytes after the last packet. |
| 4 | 4 | Packet length | the length of the whole packet, this header and the data. It should be 16 plus the data size. A smaller number is reported, and the data is still read to its own size; a larger one means the extra bytes are skipped. |
| 8 | 2 | Chip type | 0 ROM; 1 RAM, with no data in the packet; 2 Flash ROM (can be written to); 3 EEPROM. |
| 10 | 2 | Bank | the bank number, as the cartridge's hardware counts its banks. A cartridge without bank switching has bank 0. Many cartridges have two chips for each number, one at $8000 (ROML) and one at $A000 or $E000 (ROMH). |
| 12 | 2 | Load address | where the chip appears in the C64's memory: $8000 for the ROML window, $A000 for ROMH in the 16 KiB mode, $E000 for ROMH in Ultimax mode. Others are seen on cartridges with their own mapping (EasyFlash puts its RAM at $DF00). |
| 14 | 2 | Data size | the number of bytes of the chip: usually $2000 (8 KiB) or $4000 (16 KiB). A RAM packet gives the RAM's size and has no bytes. |
| 16 | size | Data | the chip's contents, to be seen at the load address. The explorer shows each as a node and can open it as bytes. |
Not described
Unknown
- Reference: how real tools fill the packet length of a RAM packet (the explorer treats it as the header alone when the type says RAM, whatever the length says).