Discussion

Status Update - Coming Soon

3

nathanielbabiak 2021-12-20 11:44 (Edited)

I had mentioned on my racing upload here that I wasn't proud of the 3D polygon code. It uses my sprite expansion library to display the polys, and the frame update code is just so ugly and slow! (It's really tough to clear polys at stale locations.) So, a few polys are shown in one of the preview screen shots, but I never actually uploaded the code itself.

Anyway, as I woke up this morning, I realized there's a much better way to structure the sprite expansion library. The array used within the raster subprogram can be replaced with a RAM buffer. It's not a huge change to the library, but it'll run a few pct faster for drawing instructions, and a bunch faster for the instruction that clears the screen.

The important benefit of the change isn't as easy to describe, but it allows for double triple buffering! (Edit 2021-12-21: I should mention page-flipping works too - that's why I was so excited - it's finally possible.)

With the super-chip-8 stuff finished, I had planned to return to the racing upload and polish it off... However, with actual double triple buffering, I finally have enough libraries developed for:

... wait for it ...

...

...

full 3D.

The 3D racing upload here requires any 3D object to be aligned at a right-angle to the camera, and requires the camera to be aligned parallel to the road directly beneath it. The 3D maze uploads here and here require any 3D object to be aligned at a right-angle to the floor, and require the camera to be aligned parallel to the floor.

These early uploads were 2.5D, not truly 3D. It's a bit faster for retro hardware, and discussed here if anybody wants to read about it.

The next upload I'm planning is truly 3D, meaning six-axis degree-of-freedom. There's enough speed in the system for eight 24 colors of polygons, a planar (flat) ground with checkerboard pattern fading out into the horizon, and even a skybox!

It'll be here around February. More to come!


McPepic 2021-12-20 19:08

Super exciting! I’m always blown away by the programs you make and am confident that this new one is no exception. Keep up the good work!


nathanielbabiak 2021-12-22 02:19 (Edited)

Thanks!

Also, as I work through the details of the double-buffer triple-buffer page-flip implementation, I realized two MAJOR things:

With these two things figured-out, my CPU budget calculations indicate it's possible to update 10 polygons at once, at 20 to 30 fps (it's great they'll be drawn to a buffer, so the user won't see partially updated screen data). I finally have a real poly-count!!! I don't have a proof-of-concept .nx file I can upload yet, just some math in Excel. It's going to take the better part of a month to work out the structure and syntax, but the math says it'll work.

More to come!


nathanielbabiak 2021-12-28 13:31 (Edited)

Proof of concept is done! It's here


Log in to reply.