dist | ||
liblzg@182b56cb36 | ||
res.org | ||
scrot | ||
src | ||
util | ||
.gitignore | ||
.gitmodules | ||
LICENSE.md | ||
Makefile | ||
README.md |
snake6502
snake6502 is a snake-like game clone for Commodore home computers, written for fun because «I always wanted to code something for a computer of my retrocomputers collection – actually, this is the main reason I collect them: to write programs».
Download the binary .prg.
Current development status here.
Compile
You need the GNU compiler collection and the dasm macro assembler, then:
$ make
You can also define the following environment variables:
$ DEBUG=1 make
build with debugging artifacts
$ VERBOSE=1 make
output useful info during compilation
Developer docs
Package
The whole program is assembled into a snake.pack
binary blob with the following structure.
Absolute | Offset | Description |
---|---|---|
$1000 |
$0000 |
load address |
$2800 |
$1800 |
entry point (start address) |
Memory map
Address | PRG | Description |
---|---|---|
$0000 - $0001 |
no | hardware |
$0002 - $00FF |
no | zero page pointers |
$0100 - $01FF |
no | stack page |
$0200 - $07FF |
no | free ram |
$1000 - $1FFF |
yes | SID tune |
$2000 - $27FF |
yes | custom char |
$2800 - $xxxx |
yes | Program segment (only needed part used) |
$xxxx - $CCFF |
no | free ram |
$CD00 - $CDFF |
no | data segment (not-initialized vars) |
$CE00 - $CEFF |
no | list X |
$CF00 - $CFFF |
no | list Y |
$D000 - $DFFF |
no | I/O |
$E000 - $FFFF |
no | Kernal |
Compression
snake.pack
is compressed into snake.pack.lz
using liblzg, to save space in order to fit the game in a *PROM.
Decompression
cart.asm
is located at $8000
(standard org address for C64 cartridges), and contains the decompression routine and the snake.pack.lz
. It decompresses snake.pack.lz
back to $1000
, and jumps to its entry point at $2800
.
Miscellanea
Custom charset
Index | Description |
---|---|
$00 - $1F |
A-Z (space first) |
$20 - $3F |
A-Z, reversed (space first) |
$40 - $4F |
hex digits |
$50 - $5F |
hex digits, reversed |
$60 - |
game tiles |