My #DecemberAdventure Log
A personal record of early experiments and discoveries during the challenge.
A log of experiments exploring 3D graphics on the Atari, from curve stitching to cubes and floating-point math.
A personal record of early experiments and discoveries during the challenge.
Started with something simple today: creating curve stitching in Atari Basic.
My first attempt at a cube using fixed-point arithmetic in CC65, without a floating-point package.
I’m taking on the task of implementing a basic IEEE 754 float library in cc65.
Nothing. (Depeche Mode concert)
Keeping up with the cube and float-point work, getting better. Some weird vertex drawing is appearing.
This is probably the slowest rotating cube in history. I wrote a BASIC implementation to debug the rotation; some shearing is happening.
I realized I didn’t know how to multiply matrices, so I fixed the formula in the original C code.
Implemented a nice little routine to clear the screen. now use the wam routines to speed up the drawing
Implemented fast pixel routines. for some reason multiplying by 40 is not working
Implemented putpixel and line in c, as base to troubleshoot. not too much difference in performance.
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.
Implemented a fast line routine. I have a set pixel directly to video memory.
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
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.
Gap issue fixed and double buffer working, still had to move around some memory align manually.