Based on the c64 grafix files specs list v0.03 by groepaz/hitmen, 14.06.2003.
Hires Bitmap + Screen RAM
| load address: $4000 - $63e7 | |
|---|---|
| $4000 - $5f3f | Bitmap |
| $6000 - $63e7 | Screen RAM |
| load address: $2000 - $43ff | |
|---|---|
| $2000 - $3f3f | Bitmap |
| $4000 - $43e7 | Screen RAM |
| load address: $5c00 - $7fff | |
|---|---|
| $5c00 - $5fe7 | Screen RAM |
| $7000 - $7f3f | Bitmap |
Doodle images might also load at $1c00-$3fff, and $5c00-$807f. (For more information on the Doodle format, see C= Hacking issue 11)
| load address: $2000 - $4327 | |
|---|---|
| $2000 - $3f3f | Bitmap |
| $3f40 - $4327 | Screen RAM |
| $4328 | Border color? |
| $4329 - $432e | ??? |
Some files are 9002 bytes, some are 9009 bytes - $4328 might be border color?
2 x Hires Bitmap, 2 x Screen RAM
| load address: $4000 - $bf3f | |
|---|---|
| $4000 - $5f3f | Bitmap 1 |
| $6000 - $63e7 | Screen RAM 1 |
| $8000 - $83e7 | Screen RAM 2 |
| $a000 - $bf3f | Bitmap 2 |
| load address: $4000 - $7f3f | |
|---|---|
| $2000 - $3f3f | Bitmap 1 |
| $4400 - $47e7 | Screen RAM 1 |
| $4800 - $4be7 | Screen RAM 2 |
| $6000 - $7f3f | Bitmap 2 |
Multicolor Bitmap, Screen RAM, Color RAM (ONE byte for whole color RAM only!)
| load address: $3F8E - $63FF | |
|---|---|
| $3FE8 - $3FFF | Display Routine |
| $4000 - $5F3F | Bitmap |
| $5F40 | Background |
| $5F43 | Color RAM Byte |
| $5F44 | Border |
| $6000 - $63E7 | Screen RAM |
Bitmap, Screen RAM, Color RAM
| load address: $6000 - $8710 | |
|---|---|
| $6000 - $7F3F | Bitmap |
| $7F40 - $8327 | Screen RAM |
| $8328 - $870F | Color RAM |
| $8710 | Background |
| load address: $6000 - $8710 | |
|---|---|
| $6000 - $7F3F | Bitmap |
| $7F40 - $8327 | Screen RAM |
| $8328 - $870F | Color RAM |
| $8710 | Background |
| load address: $2000 - $471f | |
|---|---|
| $2000 - $3F3F | Bitmap |
| $3F40 - $4327 | Screen RAM |
| $4329 | Background |
| $4338 - $471F | Color RAM |
| load address: $7800 - $9FE7 | |
|---|---|
| $7800 - $7BE7 | Screen RAM |
| $7BF0 | Background |
| $7C00 - $9B3F | Bitmap |
| $9C00 - $9FE7 | Color RAM |
| load address: $A000 - $C7FF | |
|---|---|
| $A000 - $BF3F | Bitmap |
| $BF80 | Background |
| $C000 - $C3E7 | Screen RAM |
| $C400 - $C7E7 | Color RAM |
| load address: $7EEF - $a711 | |
|---|---|
| $7fef - $7fff | Display routine |
| $8000 - $9f3f | Bitmap |
| $9f40 - $a328 | Screen RAM |
| $a328 - $a710 | Color RAM |
| $a710 | Background |
| load address: $4000 - $67ff | |
|---|---|
| $4000 - $5f3f | Bitmap |
| $6000 - $63e7 | Screen RAM |
| $6400 - $67e7 | Color RAM |
| $67ff | Background |
| load address: $5800 - $7f3f | |
|---|---|
| $5800 - $5be7 | Color RAM |
| $5c00 - $5fe7 | Screen RAM |
| $5fe8 | Background |
| $6000 - $7f3f | Bitmap |
| load address: $3C00 - $63e8 | |
|---|---|
| $3c00 - $3fe7 | Color RAM |
| $4000 - $5f3f | Bitmap |
| $5fff | Background |
| $6000 - $63e7 | Screen RAM |
Packed format: $C2 is the escape byte, $C2,COUNT,BYTE for RLE, $C2,$00 means EOF
| load address: $6000 | |
|---|---|
| $6000 - $7F3F | Bitmap |
| $7F40 - $8327 | Screen RAM |
| $8328 - $870F | Color RAM |
| $8710 | Background |
| $8711 - $8810 | Color rotation table |
Packed format: $03 is the escape byte, which comes *after* byte, length. Length 0 == 256.
| load address: $6000 | |
|---|---|
| $6000 - $7F3F | Bitmap |
| $7F40 - $8327 | Screen RAM |
| $8328 - $870F | Color RAM |
| $8710 | Background? |
2 x Multicolor Bitmap, shared Screen RAM and Color RAM
| load address: $5800 - $9f3f | |
|---|---|
| $5800 - $5be7 | Color RAM |
| $5c00 - $5fe7 | Screen RAM |
| $6000 - $7f3f | Bitmap 1 |
| $7f40 | Background |
| $7f42 | $d016 flag |
| $8000 - $9f3f | Bitmap 2 |
If packed the file starts with petscii header 'DRAZLACE! 1.0' followed by the escape byte. RLE sequences are ESCAPE,COUNT,BYTE.
The flag in $7f42 determines if $d016 is shifted, but which bit means what?
2 x Multicolor Bitmap, 2 x Screen RAM, shared Color RAM, $d016 shifting
| load address: $9C00 - $E7E7 | |
|---|---|
| $9C00 - $9FE7 | Screen RAM 1 |
| $9FE8 | Background |
| $A000 - $BF3F | Bitmap 1 |
| $C000 - $DF3F | Bitmap 2 |
| $E000 - $E3E7 | Screen RAM 2 |
| $E400 - $E7E7 | Color RAM |
Hires Bitmap, 8 x Screen RAM
| load address: $4000 - $7fff | |
|---|---|
| $4000 - $5f3f | Bitmap |
| $6000 - $7fe7 | Screen RAMs |
Unpacked format:
| load address: $4000 - $7ffe | |
|---|---|
| $4000 - $5f3f | Bitmap |
| $4001 | format marker, $ff = unpacked |
| $6000 - $7fe7 | Screen RAMs |
Packed format:
| load address: $4000 | |
|---|---|
| $4000 - $4001 | Pointer to end of packed data |
| $4002 - $4003 | Pointer to end of unpacked data + 1 ($7ff2) |
Data is packed backwards. $00 is the escape byte, RLE sequences are $00,COUNT,BYTE, and literal sequences are COUNT+1,DATA,DATA… Literal sequences are buggy and overlap with the next sequence.
Hires Manager images are only 192 lines tall, and the packed format only saves $4140 - $5f3f of the bitmap.
| load address: $4000 - $7fff | |
|---|---|
| $4000 - $5fe7 | Screen RAMs |
| $6000 - $7f3f | Bitmap |
Multicolor Bitmap, 8 x Screen RAM, Color RAM
| load address: $3c00 - $7ffe | |
|---|---|
| $3c00 - $3fe7 | Color RAM |
| $4000 - $5fe7 | Screen RAMs |
| $6000 - $7f3f | Bitmap |
| load address: $3ff0 - $83ee | |
|---|---|
| $3ff0 - $43d7 | Color RAM |
| $43f0 - $63d7 | Screen RAMs |
| $63f0 - $832f | Bitmap |
Multicolor Bitmap, 8 x Screen RAM, Color RAM, $d021 for each line
Unpacked format:
| load address: $3b00 - $7f3f | |
|---|---|
| $3b00- $3bc7 | $d021 colors |
| $3c00 - $3fe7 | Color RAM |
| $4000 - $5fe7 | Screen RAMs |
| $6000 - $7f3f | Bitmap |
Packed format:
| load address: $38f0 | |
|---|---|
| $38f0 | Escape byte |
| $38f1 - $38f2 | Packed end address |
| $38f3 - $38f4 | Unpacked end address ($7f3f) |
Images are packed backwards, and RLE sequences are ESCBYTE,COUNT,BYTE (though actually BYTE,COUNT,ESCBYTE in memory).
2 x Hires Bitmap, 2 x 8 x Screen RAM
| load address: $4000 - $bfff | |
|---|---|
| $4000 - $5f3f | Bitmap 1 |
| $6000 - $7fe7 | Screen RAMs 1 |
| $8000 - $9f3f | Bitmap 2 |
| $A000 - $bfe7 | Screen RAMs 2 |
2 x Multicolor Bitmap, 2 x 8 x Screen RAM, shared Color RAM, $d021 for each line, $d016 shifting
| load address: $3ff0 - $c38b | |
|---|---|
| $3ff0 - $3fff | 'FUNPAINT (MT) ' NB: space |
| $3ffe | Flag: packed if non-zero |
| $3fff | Escape byte for unpacking |
| $4000 - $5fe7 | Screen RAMs 1 |
| $6000 - $7f3f | Bitmap 1 |
| $7f48 - $7fab | 100 x $d021 color |
| $8000 - $83e7 | Color RAM |
| $83e8 - $a3e7 | Screen RAMs 2 |
| $a3e8 - $c327 | Bitmap 2 |
| $c328 - $c38b | 100 x $d021 color |
RLE sequences are ESCAPE,COUNT,BYTE.
Addresses might not be correct.
A lot of tools (e.g. Gunpaint) seem to use wrong locations for the $d021 colors, some ignore them completely (e.g. GoDot).
| load address: $4000 - $c340 | |
|---|---|
| $4000 - $5fe7 | Screen RAMs 1 |
| $43e8 - $43f7 | header db 'GUNPAINT (JZ) ' |
| $6000 - $7f3f | Bitmap 1 |
| $7f4f - $7fff | 177 x $d021 colors |
| $8000 - $83e7 | Color RAM |
| $8400 - $a3e7 | Screen RAMs 2 |
| $87e8 - $87fb | 20 x $d021 colors |
| $a400 - $c33f | Bitmap 2 |
| $c340 | ??? |
The $d021 display code is buggy - the last four lines have the same color
| loadaddress: $4000 - $ff3f | |
|---|---|
| $4000 - $5fe7 | Screen RAMs 1 |
| $6000 - $7f3f | Bitmap 1 |
| $8000 - $83e7 | Color RAM 1 |
| $8400 - $84c7 | $D021 colors 1 |
| $8800 - $8be7 | Color RAM 2 |
| $8c00 - $8cc7 | $D021 colors 2 |
| $c000 - $dfe7 | Screen RAMs 2 |
| $e000 - $ff3f | Bitmap 2 |
2 x Multicolor Bitmap, 2 x 8 x Video, 2 x Color RAM, no $d016 shifting
| load address: $284e - $bfe7 | |
|---|---|
| $284e - $3fff | speedcode sequences for interlacing color RAM |
| $4000 - $5f3f | Bitmap 1 |
| $5f40 - $5fff | message |
| $6000 - $7fe7 | Screen RAMs 1 |
| $8000 - $9f3f | Bitmap 2 |
| $9f40 - $9fff | message |
| $b000 - $bfe7 | Screen RAMs 2 |
Multicolor Bitmap, 8 x Screen RAM, Color RAM, Y-expanded sprite layer covering fli-bug
| load address: $3780 - $7f3f | |
|---|---|
| $3780 - $37be | Sprite data (⇒ $7000) |
| $37c0 - $37fe | Sprite data (⇒ $7040) |
| $38c0 - $38fe | Sprite data (⇒ $f000) |
| $3900 - $393e | Sprite data (⇒ $f040) |
| $3c00 - $3fe7 | Color RAM |
| $4000 - $5fe7 | Screen RAMs |
| $6000 - $7f3f | Bitmap |
Hires Bitmap, 4 x Screen RAM, X-expanded hires sprite-layer
| $1000 - $12c7 | Display Routine | ||
| $4000 - $4efe | 60 Sprites | ||
| $4f00 - $4f3e | 1 Sprite (Covers FLI Bug) | ||
| $4f40 - $4f7e | 1 blank sprite | ||
| $4ff0 | sprite-color | ||
| $4ff1 | border-color ($d020 and fli-bug) | ||
| $4ff8 - $4fff | Spritepointer Screen RAM 4 (all = $3D | ||
| $5000 - $53e7 | Screen RAM 1+2 | ||
| $5400 - $57e7 | Screen RAM 3+4 | ||
| $5800 - $5be7 | Screen RAM 5+6 | ||
| $5c00 - $5fe7 | Screen RAM 7+8 | ||
| $6000 - $7f3f | Bitmap | ||
Load address unknown.
Hires Bitmap, 8 x Screen RAM, 6×8 hires sprite layer
| load address: $4000 - $7f3f | |
|---|---|
| $4000 - $43e7 | Video 1 |
| $43f8 - $43ff | Sprite-Pointer 1 ef 80 84 85 89 8A 8E 00 |
| $4400 - $47e7 | Video 2 |
| $47f8 - $47ff | Sprite-Pointer 2 ef 8f 93 94 98 99 9d 00 |
| $4800 - $4be7 | Video 3 |
| $4bf8 - $4bff | Sprite-Pointer 3 ef 9e a2 a3 a7 a8 ac 00 |
| $4c00 - $4fe7 | Video 4 |
| $4ff8 - $4fff | Sprite-Pointer 4 ef ad b1 b2 b6 b7 bB 00 |
| $5000 - $53e7 | Video 5 |
| $53f8 - $53ff | Sprite-Pointer 5 ef bc c0 c1 c5 c6 ca 00 |
| $5400 - $57e7 | Video 6 |
| $57f8 - $57ff | Sprite-Pointer 6 ef cb cf d0 d4 d5 d9 00 |
| $5800 - $5be7 | Video 7 |
| $5bf8 - $5bff | Sprite-Pointer 7 ef da de df e3 e4 e8 00 |
| $5c00 - $5fe7 | Video 8 |
| $5ff8 - $5fff | Sprite-Pointer 8 ef e9 ea eb ec ed ee 00 |
| $6000 - $7f3f | Bitmap 1 |
How are the sprites stored?
Hires Bitmap, 8 x Screen RAM, hires sprite layer
| load address: $8000 - $bf3f | |
|---|---|
| $8000 - $83e7 | Video 1 |
| $83f8 - $83ff | Sprite-Pointer 1 07 08 09 0a 0b 0c 0d 0e |
| $8400 - $87e7 | Video 2 |
| $87f8 - $87ff | Sprite-Pointer 2 17 18 19 1a 1b 1c 1d 1e |
| $8800 - $8be7 | Video 3 |
| $8bf8 - $8bff | Sprite-Pointer 3 07 08 09 0a 0b 0c 0d 0e |
| $8c00 - $8fe7 | Video 4 |
| $8ff8 - $8fff | Sprite-Pointer 4 17 18 19 1a 1b 1c 1d 1e |
| $9000 - $93e7 | Video 5 |
| $93f8 - $93ff | Sprite-Pointer 5 07 08 09 0a 0b 0c 0d 0e |
| $9400 - $97e7 | Video 6 |
| $97f8 - $97ff | Sprite-Pointer 6 17 18 19 1a 1b 1c 1d 1e |
| $9800 - $9be7 | Video 7 |
| $9bf8 - $9bff | Sprite-Pointer 7 07 08 09 0a 0b 0c 0d 0e |
| $9c00 - $9fe7 | Video 8 |
| $9ff8 - $9fff | Sprite-Pointer 8 17 18 19 1a 1b 1c 1d 1e |
| $a000 - $bf3f | Bitmap 1 |
How are the sprites stored?
Hires Bitmap, 8 x Screen RAM, 2 x hires sprite layers
| $4000 - $43e7 | Video 1 |
| $43f8 - $43ff | Sprite-Pointer 1 80 84 85 89 8A 8E 8F 93 |
| $4400 - $47e7 | Video 2 |
| $47f8 - $47ff | Sprite-Pointer 2 94 98 99 9D 9E A2 A3 A7 |
| $4800 - $4be7 | Video 3 |
| $4bf8 - $4bff | Sprite-Pointer 3 A8 AC AD B1 B2 B6 B7 BB |
| $4c00 - $4fe7 | Video 4 |
| $4ff8 - $4fff | Sprite-Pointer 4 BC C0 C1 C5 C6 CA CB CF |
| $5000 - $53e7 | Video 5 |
| $53f8 - $53ff | Sprite-Pointer 5 D0 D4 D5 D9 DA DE DF E3 |
| $5400 - $57e7 | Video 6 |
| $57f8 - $57ff | Sprite-Pointer 6 E4 E8 E9 EA EB EC ED EE |
| $5800 - $5be7 | Video 7 |
| $5bf8 - $5bff | Sprite-Pointer 7 EF F0 F1 F2 F3 F4 F5 F6 |
| $5c00 - $5fe7 | Video 8 |
| $5ff8 - $5fff | Sprite-Pointer 8 F7 1E 2E 3E 4E 5E 6E 7E |
| $6000 - $7f3f | Bitmap 1 |
Packed format unknown.
How are the sprites stored?
2 x Hires Bitmap, 2 x 8 x Screen RAM, 2 x 2 x hires sprite layers
runable image file:
| load address: $0801-$855b | |
|---|---|
| $0801-$080c | Basic Run |
| $080d-$0860 | Init-Routine that copies gfx-data to its proper locations |
| $0861-$095b | Routine that sets I/O Registers and creates display-routine ($085F-$10FB) |
| $095c-$475b | Data pic 1. (gets moved to $4000) |
| $475c-$855b | Data pic 2. (gets moved to $C000) |
after moved to $4000/$c000 the layout is like this:
| $4000 - $43e7 | Video 1/1 |
| $43f8 - $43ff | Sprite-Pointer 1/1 80 84 85 89 8A 8E 8F 93 |
| $4400 - $47e7 | Video 2/1 |
| $47f8 - $47ff | Sprite-Pointer 2/1 94 98 99 9D 9E A2 A3 A7 |
| $4800 - $4be7 | Video 3/1 |
| $4bf8 - $4bff | Sprite-Pointer 3/1 A8 AC AD B1 B2 B6 B7 BB |
| $4c00 - $4fe7 | Video 4/1 |
| $4ff8 - $4fff | Sprite-Pointer 4/1 BC C0 C1 C5 C6 CA CB CF |
| $5000 - $53e7 | Video 5/1 |
| $53f8 - $53ff | Sprite-Pointer 5/1 D0 D4 D5 D9 DA DE DF E3 |
| $5400 - $57e7 | Video 6/1 |
| $57f8 - $57ff | Sprite-Pointer 6/1 E4 E8 E9 EA EB EC ED EE |
| $5800 - $5be7 | Video 7/1 |
| $5bf8 - $5bff | Sprite-Pointer 7/1 EF F0 F1 F2 F3 F4 F5 F6 |
| $5c00 - $5fe7 | Video 8/1 |
| $5ff8 - $5fff | Sprite-Pointer 8/1 F7 1E 2E 3E 4E 5E 6E 7E |
| $6000 - $7f3f | Bitmap 1 |
| $c000 - $c3e7 | Video 1/2 |
| $c3f8 - $c3ff | Sprite-Pointer 1/2 80 84 85 89 8A 8E 8F 93 |
| $c400 - $c7e7 | Video 2/2 |
| $c7f8 - $c7ff | Sprite-Pointer 2/2 94 98 99 9D 9E A2 A3 A7 |
| $c800 - $cbe7 | Video 3/2 |
| $cbf8 - $cbff | Sprite-Pointer 3/2 A8 AC AD B1 B2 B6 B7 BB |
| $cc00 - $cfe7 | Video 4/2 |
| $cff8 - $cfff | Sprite-Pointer 4/2 BC C0 C1 C5 C6 CA CB CF |
| $d000 - $d3e7 | Video 5/2 |
| $d3f8 - $d3ff | Sprite-Pointer 5/2 D0 D4 D5 D9 DA DE DF E3 |
| $d400 - $d7e7 | Video 6/2 |
| $d7f8 - $d7ff | Sprite-Pointer 6/2 E4 E8 E9 EA EB EC ED EE |
| $d800 - $dbe7 | Video 7/2 |
| $dbf8 - $dbff | Sprite-Pointer 7/2 EF F0 F1 F2 F3 F4 F5 F6 |
| $dc00 - $dfe7 | Video 8/2 |
| $dff8 - $dfff | Sprite-Pointer 8/2 F7 1E 2E 3E 4E 5E 6E 7E |
| $e000 - $ff3f | Bitmap 2 |
Packed format unknown.
How are the sprites stored?
2 x Hires Bitmap, 2 x 4 x Screen RAM, 2 x X-expanded hires sprite layer
| $1000 - $12c7 | Display Routine |
| $4000 - $43ff | Screen RAM 1+2 |
| $4400 - $47ff | Screen RAM 3+4 |
| $4800 - $4bff | Screen RAM 5+6 |
| $4c00 - $4fff | Screen RAM 7+8 |
| $5000 - $5eff | 60 Sprites |
| $5f00 - $5f3f | 1 Sprite (Covers FLI Bug) |
| $5f40 - $5f7f | 1 blank sprite |
| $5ff0 | sprite-color |
| $5ff1 | border-color ($d020 and fli-bug) |
| $5ff8 - $5fff | Spritepointer Screen RAM 4 (all = $3D) |
| $6000 - $7f37 | Bitmap |
| $c000 - $c3ff | Screen RAM 1+2 |
| $c400 - $c7ff | Screen RAM 3+4 |
| $c800 - $cbff | Screen RAM 5+6 |
| $cc00 - $cfff | Screen RAM 7+8 |
| $d000 - $deff | 60 Sprites |
| $df00 - $df3f | 1 Sprite (Covers FLI Bug) |
| $df40 - $df7f | 1 blank sprite |
| $dff0 | sprite-color |
| $dff1 | border-color ($d020 and fli-bug) |
| $dff8 - $dfff | Spritepointer Screen RAM 4 (all = $3D) |
| $e000 - $ff37 | Bitmap |
Load address unknown.