As Kerm suggested I am cross posting this from Omnimaga.



I have managed to create a 4 level grayscale, polygon 3d star fox. I've only been working on it about a week. But it is still awesome.

A few days ago, I searched polygon 3d graphics on google, once I got the general idea for how they are stored in memory, I made a wire frame program. I realized how easy it actually was because I had a 3d cube on my calculator in about two hours, so then I thought, star fox? To make this work, it had to be grayscale because without it, you couldn't see anything. To accommodate this, I changed the screen to 48 by 48. Then after a long while of creating an arbitrary triangle and a quadrilateral drawer. I had 3d graphics.

Every thing in the game is super easy to change, I can add new objects, change the level, and make the enemies better.

Here are some general specs on the game:
48x48 screen
60 hz 4 level grayscale
The rest of the screen is updated at 7.5 hz.
Gameplay is held at 15 fps for now.
Each "tile" is 48x48
The tilemap is 9*12. (deeper than wide)

This is the most recent addition to the game was the barrel roll as you can kind of tell from the screenshot.
That looks like tons of fun! I can only assume that that's written in Axe, or is it straight z80 ASM? If it's the latter, then I'm even more impressed. Smile
Hey, you added the barrel roll and transmissions! Nice!
penguin writes only in pure asm Exclamation
i love the barrel rolls!
shmibs wrote:
penguin writes only in pure asm Exclamation
i love the barrel rolls!
Then many excellent props to him for this. Penguin, have you done any benchmarking in terms of how many shaded grayscale polygons/second it can pull off? I also am very pleased with the inclusion of the classic "do a barrel roll" meme. Smile
I haven't done any true limit testing, but I feel like about 8 tiles of 4 polygons each at 15 fps would be where it starts to lag.

shmibs wrote:
penguin writes only in pure asm Exclamation
i love the barrel rolls!


Yep. I write a few things in basic too. But those are mostly either when I'm not by a computer, or when I need to make a look up table for assembly.
thepenguin77 wrote:
I haven't done any true limit testing, but I feel like about 8 tiles of 4 polygons each at 15 fps would be where it starts to lag.
That's solid and quite respectable. I can only assume that your grayscale is something custom, and of course interrupt-driven? This requires a 15MHz calculator, correct?

thepenguin77 wrote:
shmibs wrote:
penguin writes only in pure asm Exclamation
i love the barrel rolls!


Yep. I write a few things in basic too. But those are mostly either when I'm not by a computer, or when I need to make a look up table for assembly.
Excellent, you get plenty of respect from me for that. I'll definitely be following the progress of this closely; hope you'll keep us up-to-date. What follows from your current progress, more map work or more core rendering work? It looks to me like your rendering is already quite polished.
Yeah, in the Omni forum he said 15mhz only. I believe it was something along the lines of "if I could do this in 6 mhz, I would be a z80 god."

Now, to do the same on the nspire....I wish I knew more C!
willrandship wrote:
Yeah, in the Omni forum he said 15mhz only. I believe it was something along the lines of "if I could do this in 6 mhz, I would be a z80 god."
He would indeed, at that. Very Happy 15MHz is still respectable and excellent, just not deity territory. Wink

willrandship wrote:
Now, to do the same on the nspire....I wish I knew more C!
Get to it then! C is a very powerful, very straightforward, and very useful language to pick up.
KermMartian wrote:
That's solid and quite respectable. I can only assume that your grayscale is something custom, and of course interrupt-driven? This requires a 15MHz calculator, correct?

I write all my own stuff. That's partially why I haven't gotten into axe. I use crystal timers to do my interrupts and I will have a frequency adjustment so that the grayscale can be made near perfect. It's really cool if you find the adjustment for your specific calc.

As far as 15MHz goes. Again, almost everything I write is in 15MHz. There is only 1 83+ at my school that I know of. So it doesn't seem logical for me to limit myself. Plus, if I never used 15Mhz, there would be no star fox.
thepenguin77 wrote:
KermMartian wrote:
That's solid and quite respectable. I can only assume that your grayscale is something custom, and of course interrupt-driven? This requires a 15MHz calculator, correct?

I write all my own stuff. That's partially why I haven't gotten into axe. I use crystal timers to do my interrupts and I will have a frequency adjustment so that the grayscale can be made near perfect. It's really cool if you find the adjustment for your specific calc.

As far as 15MHz goes. Again, almost everything I write is in 15MHz. There is only 1 83+ at my school that I know of. So it doesn't seem logical for me to limit myself. Plus, if I never used 15Mhz, there would be no star fox.
Interesting, my experiences are quite the opposite. I've worked almost entirely on 6MHz calculators during my programming career, so things like my display routines and linking routines always strive to work on 6MHz calculators. Still, I think the lack of compatibility with 6MHz calculators is well-worth such an excellent-looking game!


====================UPDATE!!!=========================
Ok, so I've done so much I hope I remember it all.
-Ship sprites were managed better to free up 1.5kb of program space and 8kb of memory.
-Talking sprites
-Keys are fully remappable, y= for now, there'll be a menu later
-Boosting and braking are a go

At least in google chrome, all of the screen shots so far have run a little fast. Just so you know.

Here is the current version.

Edit:
Knew I'd forget something.
-You turn faster/slower depending on which way you are banking.
Well done, Penguin, I'm glad you added the animated sprites and talking. Smile What did you do to the ship sprites to save 1.5K, that's a pretty substantial chunk of memory?
It's pretty easy to see how you can lose memory really fast when rolling requires 24 sprites and there are 25 general purpose sprites each at 21*21 4 level grayscale with a masking layer.

I cut the white space off each picture, I also removed the duplicates from each set. The reason that I cut so much more off in memory than in program space is because I was smart enough to rotate 18 of the 24 rolls and mirror 8 of the 25 normals.
thepenguin77 wrote:
It's pretty easy to see how you can lose memory really fast when rolling requires 24 sprites and there are 25 general purpose sprites each at 21*21 4 level grayscale with a masking layer.

I cut the white space off each picture, I also removed the duplicates from each set. The reason that I cut so much more off in memory than in program space is because I was smart enough to rotate 18 of the 24 rolls and mirror 8 of the 25 normals.
Ah, I didn't realize there were 24 of them. Smile I didn't get to test this out yet, but does the ship sprite shift slightly in rotation around the vertical axis through the center of the ship when you steer left or right?
I forgot you haven't looked at the omni thread. All ship sprites are by Magic Banana. They are all perfect as he is an amazing spriter. And most if not all of the character sprites are by tloz.
thepenguin77 wrote:
I forgot you haven't looked at the omni thread. All ship sprites are by Magic Banana. They are all perfect as he is an amazing spriter. And most if not all of the character sprites are by tloz.
Ah, cheers to them, it looks like they did a very nice job. You still didn't answer my question, though. Wink
Oh sorry, missed the point of the question. I though you said does the ship barrel roll around its center axis.

Yes, it appears that it rolls along it's z axis and also rotates on it's y axis when you turn. That's why there are 25 normal sprites.
thepenguin77 wrote:
Oh sorry, missed the point of the question. I though you said does the ship barrel roll around its center axis.

Yes, it appears that it rolls along it's z axis and also rotates on it's y axis when you turn. That's why there are 25 normal sprites.
Oh, you meant normal as in regular, not normal as in orthogonal. That makes a lot more sense. Smile

Edit: Penguin, it keep freezing on entry for me under my latest DCS beta. It's spinning in a cpir / cp $18 loop between $B2C2 and $B2C7. What's that all about? Is that something on my end or yours?
My end, thank you for finding that though. What os version?

I cheated when it comes to displaying text. Instead of keeping all the text in my program, I just went looking for it in the OS. Currently it goes to the page that _sFont_len is on and starts looking for the font. I guess I'll either have to add a failsafe where if it doesn't find it, it searches the whole os, or include my own set.

Edit:
I display my own text since vPutS disables interrupts.
  
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 2
» 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