Ancient Legends

A Commodore 64 Seven Day Roguelike

In the mists of time there was a legend of a system like none other. With 64 kilobytes of RAM and 16 beautiful colours. This is the tale of a roguelike on the Commodore 64.


Started work on graphics. First tests and palette confusion. Commodore 64 is hard and annoying.

Hires characters are 8x8, but they are only single colour. Multicolour characters are 4x8 because they combine two bits to make one two-bit pixel for four colours.

Normally in character mode, each 8x8 character could have a unique foreground colour chosen from all 16, but in multicolour mode the high bit is repurposed to determine whether the character data is interpreted as hires or multicolour character allowing you to mix both, but cutting the possible colours to only the first 8!

For multicolour characters additionally the two other colours available are shared between every character on screen, just like the background colour. So selecting the shared colours wisely is imperative. And very hard. Doesn't help that emulators don't agree on the colours, since they were never defined in RGB, but by resistors and colour signal phase offsets on the VIC-II chip. I think I'm finally kind of happy with them.


I had originally planned to make this in Basic, but when I decided to enter the 7DRL I decided to switch to C code, so spent some time setting up a C compiler.


Made a custom font. I'm not planning to have that much text in the game, so I decided to go with a strongly styled font. Not that good for paragraphs, but should be suitably atmospheric. Mostly it'll be limited to stats, inventory, attack messages and such.

Only one case, although I definitely would have enough room in the charset to make lower case, but I don't think I can be bothered. If I add more text, then I'll consider it.

One letter, 'A', has an initial and inside word variant. I need to remember to use that when writing text.

(Text: At the Mountains of Madness)

Also did a whole bunch more RTFM'ing on the C compiler and its C64 libraries.

Finished the day with some more items that I'll need.


Behind the scenes work, getting all the basics up and running.

Also, map generation!

The generator first makes a bunch of rooms, then it assigns a zone number to each room and checks if any two rooms are touching, if so the zones are merged. After that it starts drawing corridors from inside one room to inside another room in random increments, possibly changing direction after each increment until the corridor reaches end point. Each corridor possibly combines two zones and this continuse until all zones are unified and the map is complete and fully connected. This takes about 1 second at Commodore 64 speed.