3D On The ZX Spectrum 48K

There are times when a project becomes such a big part of a maker’s life that they find themselves revisiting it even years later. [Thanassis] combined this phenomena with his love for the ZX Spectrum when he ported one of his old 3D rendering projects to the ZX Spectrum 48K. The video below shows the result, and they speak for themselves.

The roots of this project go back around three years, when [Thanassis] posted a similar project for the ATMega328 which employed fixed point math tricks for achieving the graphics. The code needed to be even tighter to run on the Spectrum, eventually getting boiled down to just a handful of calculations. This got the proof of concept working with the z88dk compiler, but it wasn’t quite fast enough.

In the end, hand assembly optimizations nearly doubled the performance to a blistering 10 frames per second. There’s also a version that kicks it all the way up to 40 FPS, but only if you give it a few minutes to do the calculations ahead of time. With a few teaks and the right display, this project could produce some very cool retro visuals.

15 thoughts on “3D On The ZX Spectrum 48K

    1. Oh yes, i remember those… think one of the titles was Driller? you were all excited to get the latest game, loaded it up and then nothing happened on screen and controls didnt work. It always made me wonder why they released these unplayable games. they were basically tech demos

    2. Freescape games were pretty slow but looked pretty good on the 8-bitters. That’s why they were mainly puzzle-based games with no action. I imagine they run nicely on the Spectrum Next at 8x speed.

      For more action games, the programmers resorted to lines. And probably even more optimisation than this project. Starglider, 3d star strike, etc.

        1. The soft core Z80 was upgraded to run at 28MHz during the original development after the first Kickstarter (and many other bells and whistles were also added), it’s not been a static target for the spec at all :-)

  1. …have tried many a time to do this similiar concept on the VZ200 in Z88dk, but my knowledge is a bit limited. Can get 3 frames per second with ~50 pixels, but what we see here is my ultimate goal with hand opto’d asm.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.