Atari 3D graphics

My #DecemberAdventure Log

1-Dec

2-Dec

My first attempt at a cube using fixed point arithmetic in CC65 (no floating point package)



I'm taking the task of implement a basic IEEE754 float library in cc65.

3-Dec

Nothing. (Depeche Mode concert)

4-Dec

Keeping up with cube and fp stuff, getting better. some weird  vertex drawing

5-Dec

This is probably the slowest rotating cube in history. Wrote a BASIC implementation to debug the rotation. Some shearing is happening

6-7 Dec

Realized I don't know how to multiply matrices, fixed the formula in the original c code.

8-Dec

Implemented a nice little routine to clear the screen. now use the wam routines to speed up the drawing


9-10 December.

Implementing fast pixel routines. for some reason multiplying by 40 is not working



11 -Dec

Implemented putpixel and line in c, as base to troubleshoot. not too much difference in performance.

11 -13  Dec

so much going on that I could not update. Adapting the putpixel routine to 2 bytes included a lot of debugging. I have a set pixel directly to video memory.

Dealing with the arithmetic was tricky. ended up rewriting the y*40 routine.

14-15 Dec

Next step was to write the line in assembler. found a couple of routines already made here:

https://forums.atariage.com/topic/231690-known-fast-line-algorithms/

tried to port and integrate dr Sid implementation (in thread). moving from mad assembler to cc65 was not too bad. but not sure about the macros.

So mostly works, however , resolution and x coordinates are off. Rightmost triamgle should be in the middle

And it worked !

Next step : double buffer.

 Compare with the BASIC implementation speed

16-17 Dec

Trying to make page flipping work with mode 8

it seems display list requires more work to cross a 4k border. So I have buffer and a half.

18-19 Dec

Gap issue fixed and double buffer working, still had to move around some memory align manually.