Hey everybody!



For the past several weeks, I have been working on a port of Elite (1984) for the calculator, written entirely in C. The minimum viable product in my mind includes all features of the original cassette release. Well-documented source code has made the project much easier than reverse-engineering the game, but significant portions of the code (and behavior) are still original, created by me to better suit the medium.

I'm posting this now because I've almost reached the beta phase of development! So far, almost all features of the original are included (or approximated), with the remaining gaps in the roadmap being ship AI (mostly for missiles), Thargoids' complete absence, actual attack values for lasers, and enemies' ability to attack.

Current features:

Full 3D wireframe graphics and flight



Economy simulation & trading



Thousands of star systems to explore



And more!

I have a Github repository for the project as well, if anybody is interested in looking at it.
Wow that looks amazing! You've done a great job with the wire frames. I'm really looking forward to seeing progress on this!
Extremely awesome work! Elite is a well suited game for calcs, great stuff!

I'll definitely check it out.
Wow, that looks great! Looks like it's running really smoothly too.

Looking forward to more updates!
That is indeed looking great, and a very accurate rendition of the original to boot! I look forward to giving it a try, and please feel free to upload a beta to our archives when you're ready.
Wow, looks great ^_^ great choice of game too; I'm a huge fan of space games. X3 is my most recent obsession lol
Wow, this is indeed quite cool. Best of luck working on this Very Happy
lilyhavok wrote:
Wow, looks great ^_^ great choice of game too; I'm a huge fan of space games. X3 is my most recent obsession 0x5


Yeah, I am too. I say I picked Elite because it was visually impressive and because it was well-documented how it worked, but to be honest, all the time I've put into its descendant Elite: Dangerous might have also had an impact.

epsilon5 wrote:
Wow, that looks great! Looks like it's running really smoothly too.


Surprisingly, yes! The very high speed of the eZ80 seems to be really working out for this project, as I actually haven't done the graphics the "right" way. The menus are all drawn only once on load, and then the cursor is undrawn and redrawn each frame with XOR logic, but the flight screens are actually all drawn each frame from scratch. I kept thinking that at some point I'd have to go back and implement the line heaps and such to be able to undraw/redraw like in the original, but at this point it seems not to be necessary. The slow memory on the calculator might also make it actually faster to just recalculate each frame? That doesn't seem right, though, considering all the memory used in the vector math.

Oh, right-- for this project, I also wrote an original graphics library and a linear algebra library, because as far as I could tell from the documentation, graphx.h doesn't have XOR functionality. The graphx library is used to draw the dashboard (as three sprites and a bunch of rectangles), but everything else is drawn with my own xorgfx.h. xorgfx does of course rely on graphx for the address of the screen, but in theory it would be quite easy to remove that dependency. Oh, and it draws circles as an approximation with a bunch of lines and trig LUTs. I could bundle and release xorgfx.h, linear.h, intmath.h, and trig.h as their own advanced game graphics library at some point if they could actually fill a niche in the community? Surely I'm not the first one to do linear algebra on a calculator, though.

Thanks for the support, everybody! I'll try to get a working (and documented) beta build up by the end of the month.
I've played Elite for the NES before, and I must say, this is an amazing port of the BBC Micro version. I do wish the docking computer came with the ship as in the NES port, but otherwise great. I can't seem to find the dodecagon station in the Diso system, though.
Are you playing the alpha from the GitHub repo? It should be possible to get the system to spawn just by jumping towards the planet a few times and then waiting to get close enough. The speeds and distances were a bit weird, but the compass should change and the S turn on eventually...
Man now I want to see that old wire frame star wars arcade on calc.
This project looks awesome. I always love when I see fast 3D stuff on a calculator.

Invalid_Jake wrote:
Man now I want to see that old wire frame star wars arcade on calc.
I actually played that game at a bar located about 30 minutes by foot from my home. I don't know if it's still working but I spent most of my time playing that cabinet since all arcades in the bar were unlocked (required no quarters) at the cost of a drink every hour or so. It was just amazing to see that particular rare arcade machine in action in person, especially considering how old it is.
euphory wrote:
Are you playing the alpha from the GitHub repo? It should be possible to get the system to spawn just by jumping towards the planet a few times and then waiting to get close enough. The speeds and distances were a bit weird, but the compass should change and the S turn on eventually...

Yes. I'll try that, thanks. And I also love Atari Vector cabinets Smile
This is incredible, truly some first-rate work for this platform. I appreciate your philosophy of making changes to the original to better suit this medium (a true adaptation!).

Do you have any more updates to share? I'd greatly enjoy playing around with this once it reaches a more completed state.
I've been stuck in a bit of a quagmire lately trying to get the AI to work. There are points at which ships behave correctly, but missiles don't, and points at which missiles behave correctly, but ships don't, and (many) points at which nothing works. I realized about two days ago that this was because I had actually been drawing and moving all the wireframes backwards, which inverted a lot of ship navigation logic, so now I've been going around and redoing almost all the wireframe-related stuff. With my finals in the next week, though, I should soon have more time to work on this project!
Nice! Please let us know when there's a new github release caus I don't check your page that much and good luck on the finals.
So excited to play this on my calculator Very Happy
euphory wrote:
xorgfx does of course rely on graphx for the address of the screen, but in theory it would be quite easy to remove that dependency.


If I'm not mistaken, and I understand what you actually mean, isn't the screen always located at address $D40000?
StephenM wrote:
euphory wrote:
xorgfx does of course rely on graphx for the address of the screen, but in theory it would be quite easy to remove that dependency.


If I'm not mistaken, and I understand what you actually mean, isn't the screen always located at address $D40000?


VRAM begins at $D40000, but graphx uses a double buffered 8bpp rendering. One of the buffers is located at the start of VRAM, and the other immediately follows it at $D52C00. By default, the first buffer is what gets DMA'd to the screen, but you can change the LCD base address to anywhere in VRAM. Whenever you call gfx_SwapDraw, it sets the LCD base address to the start of the opposite buffer, so that no pixel data actually needs to get copied in memory.
  
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