I have just released an initial preview version of a raycasting based 3D game for the TI-84 Plus CE: https://www.ocf.berkeley.edu/~pad/files/cellar-ti84ce.zip / https://www.cemetech.net/programs/index.php?mode=file&id=1588

For now this has only one small level with minimal gameplay (the goal being to escape the cellar before the radioactive waster kills you), but at least it works -- or so I hope! This game is part in C and part in assembly language. Right now it is running about 10 frames per second but optimizations should speed it up -- along with feature additions that slow it down.
holy- what?!? This looks amazing!!!

Please teach us your ways. Very Happy
Though seriously, could you explain how you did all this?
Is this using an engine?
if so, will it allow others to more easily create their own 3D games?
How'd you get the hit-blocks to work so well?
Wow. That looks cool!!! You should make something for the game Doom. That would be cool.
This is incredible work, PatrickD. Did you write the raycasting engine from scratch, or work from something extant? Which parts are written in C, and which in ASM?

Edit: I just tried this out on Geekboy's Lightning Blue TI-84+CE, and found it to be sufficiently fast, and fun. Good work!
Great work! I see quite a number of possible optimizations in the C source file that I might suggest over time. Out of curiosity, is there any functionality you might like to see added to convpng? I notice you use your own python script for building the C image headers Smile

A new C toolchain update has been released, perhaps more speed can be gained from it as well Smile
Looks amazing and shows the power of working in C + asm.

The speed is good for a start and some optimising can only make things better!

Looking at the screenshots, is this in 16 colour mode?
KermMartian wrote:
This is incredible work, PatrickD. Did you write the raycasting engine from scratch, or work from something extant? Which parts are written in C, and which in ASM?

Edit: I just tried this out on Geekboy's Lightning Blue TI-84+CE, and found it to be sufficiently fast, and fun. Good work!


It is more or less from scratch -- though I did use something I had written a long time ago as a template for the raycasting routines. It is currently mostly in C -- ASM is only used for the column texture rendering routine, the square root routine, and also for the raycasting for some directions (didn't rewrite the others in ASM yet).
MateoConLechuga wrote:
Great work! I see quite a number of possible optimizations in the C source file that I might suggest over time. Out of curiosity, is there any functionality you might like to see added to convpng? I notice you use your own python script for building the C image headers Smile

A new C toolchain update has been released, perhaps more speed can be gained from it as well Smile


Optimizations would be nice Smile What were you thinking of -- just improving the algorithm generally, or special ways to convince ZDS to be more sensible? I have come up with a bit of the former (mainly keeping a running pointer instead of re-indexing the map repeatedly) and also would want to rewrite the rest of the raycasting in ASM eventually.

My script obviously isn't fancy -- but one feature that (I don't think) convpng directly has encoding in the 2x1 pixel hack 16-color mode ... that is using a palette of 16 colors but writing out a full byte for each pixel with the same color in both the high and low 4 bits so that you can draw two pixels at once with each byte written.
I've now updated this. The new version improves performance by about 18% -- it is now running at 12 frames per second Smile This speedup was done by optimizing the code, converting more of the ray casting loops to assembly, and switching to compiling with LLVM. The new version also improves the rendering precision to make it look less ragged when you are close to a wall.
So you are using half horizontal res in 4bpp? I do that with some of my projects too Smile.

Great to see the speed improved so drastically as well, nice work!
This is amazing! I've never written anything like this. I'd be interested to know how you... Changed the sprite aspect ratio? or something like that? I've never tried my hand at this recasting stuff.
Could you make a level editer? Smile
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement