Jump to content
IGNORED

Lunar Lander: Super kernel demo


supercat

Recommended Posts

Here's a demo of a new kernel I wrote for a "Lunar Lander" style game. Like the FB2, this one has 30Hz flicker **BUT** in exchange for that flicker you get a high-resolution background *AND* a nice-sized ship sprite (20+ pixels wide when pointed sideways at maximum thrust) *AND* some other really cool effects I don't think have ever been done on the 2600.

 

LL.bin

 

To use this demo, fire it up and notice the somewhat-vectory ship superimposed on the hires landscape (which is hopelessly out of scale of the ship--sorry about that; the landscape is drawn for the zoomed-out view and the ship is sized for the zoom-in view). The ship may be moved about the screen using the joystick.

 

The real coolness comes, though, when you push the RESET or SELECT buttons. I'm not going to spoil the surprise. And whatever you do, don't push FIRE. :)

 

At first glance, one might think the game looks like a Suicide Mission kernel. And in some ways the resemblance is very strong. It uses six sprites per line spaced wide, shifting by eight pixels on alternate frames to show a 96-pixel-wide bitmap. But there's a twist: the Suicide Mission kernel uses 1K or so of RAM to hold a bitmap. This binary doesn't use any extra RAM. So how does it work?

 

I don't want to spoil everything by giving away my secrets too easily, but this little demo should be fairly easily adaptable into a full-fledged game (though I expect having multiple zoom-in views like the arcade version does would require using a bankswitched cart).

 

I will reveal this much: what you are seeing with the space ship in this demo is "real". If I wanted to vary the size of the rocket flame in response to use controls, I could do so very easily. I have some tricky code in there which makes the impossible, possible, even on a dinky little 1.19MHz 6502.

Link to comment
Share on other sites

  • 3 months later...
Screw the kernel, what really impresses me is the real-time rotation (and exploding?) of the sprite data. Now that's something you don't see a 2600 do every day.

1017492[/snapback]

 

You pushed the button, didn't you. I thought I told you not to do that.

 

There's a lot of precalculated data for the rotations, but the program nontheless is doing a fair amount of "real work" each frame. One limitation with the method is that drawing things at a different scale would require a separate copy of some rather large data tables. Accommodating different space ships (or parts of space ships, like thruster or rotation-rocket flames) is fairly straightforward. Unfortunately, doing a smaller spaceship would probably require using a different set of scaling tables because certain errors are proportional to the scale involved. The math routines are about +/- 1 pixel which is fine for large scale, but at small scales getting closer to +/- 1/2 pixel (the best possible) would be much better.

 

Note, BTW, that in some ways the LL demo is the opposite of my texture-mapping demo (see my blog). That one needs about 2K of tables for every different logo that's used (which is why there's only one) but could easily accommodate different scales or motion effects without needing any new large tables.

Link to comment
Share on other sites

  • 2 months later...
Update?

 

The LL demo was a little something I cooked up while taking a break from Strat-O-Gems. I've not done anything with it since; I don't really know what my design objective should be. I think with a 32K "standard" cart I could probably achieve a smooth-scrolling background which would be something quite unprecedented on the 2600. I know I could do a really nice background on a 4A50 cart, but that would seem to be somewhat cheating. The biggest technical hurdle I've not had any really good ideas for is collision detection, though I'm sure I could solve that if I put my mind to it.

 

I guess the biggest "problem" with LL is that I don't really feel like using 4A50 for a game that could be done without it, but I don't really feel like producing a game without 4A50 that could be done better with. On something like Ruby Runner, I don't feel I'm cheating by using 4A50 because the game goes far beyond anything that could be achieved any other way.

Edited by supercat
Link to comment
Share on other sites

I guess the biggest "problem" with LL is that I don't really feel like using 4A50 for a game that could be done without it, but I don't really feel like producing a game without 4A50 that could be done better with. On something like Ruby Runner, I don't feel I'm cheating by using 4A50 because the game goes far beyond anything that could be achieved any other way.

 

 

Whatever the means be, It's cool no matter how you make it. I would love to be able to buy this game from you on a cart or at least have a BIN to make my own if the "copyright" gets in the way.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...