Jump to content
IGNORED

Some of the demos I was developing 6 years ago


Propane13

Recommended Posts

So, while scrounging on my old Tower computer, I found some files that may be of interest to the community.

I was doing some 7800 programming back in the day. I'd like to share my journey from 2001 to 2003.

 

First, we have the "Hello World" demo. Honestly, I think this was someone else's code, just my verification that I can compile it. Maybe I added a word in it or something, but it's pretty lame. No credit for me on this one.

post-151-125761752964_thumb.gif

20010525_hello_world.a78

 

Next, we have a color demo. At the time, remember, emulator support was very, very low (MESS, which did not run well on my slow computer), and there were no cuttle carts. So, I did EPROM burning tests a lot. So, I made a "color cart" as a permanent addition to my cartridges. Here it is:

post-151-125761753507_thumb.gif

20010804_color01.a78

 

After that, I decided it was time to make a game.

I wanted to write a zelda-like game. Here it is:

post-151-125761754302_thumb.gif

post-151-125761755047_thumb.gif

20020623_zelda.a78

 

It was during this stage that "Mister Purple Pants" was born.

I liked the demo, but I ran out of graphics space. My general thought was that I wanted to see the limit of overlapping sprites. Apparently, it hit me too fast before I could do other interesting things, so I had to abandon that kernel in favor of another one.

 

So, this brings me to one of my more favorite demos.

post-151-125761755841_thumb.gif

20020721_falling_demo.a78

 

I thought I needed to learn about graphics compression techniques. So, I did.

I learned how Mega Man did its graphics, as well as Metroid. I put "Mister Purple Pants" in a one-room world where there was constant gravity. He can jump from item to item, so this is just a demo, but it seemed to be going in the right direction.

 

But, it was then that I wanted to try another project. I was thinking "What is the one game that the 7800 doesn't have that it really should?" The answer was Frogger.

post-151-12576175656_thumb.gif

20030101_frogger_nosound.a78

 

Writing this frogger demo got me excited (it could have gone somewhere), bit I also got really, really bored after writing this one screen. I thought it was a great demo, but I had so many things to worry about at this stage. Do I be arcade-perfect? If so, will that bore me, or would I rather do my own game? How will I deal with all of the collision detection? These questions haunted me for some time, and I decided to abandon the work done so far, and go back to Mister Purple Pants.

 

And, here is Mister Purple Pants in his last appearance.

post-151-125761757328_thumb.gif

post-151-125761758122_thumb.gif

20030728_purplepants.a78

This is what I ideally would have turned into a Mega Man style game. Scrolling is complete, and there's a few screens worth of world defined. I was quite happy with it. But, then, real life got in the way.

 

There wasn't a lot of knowledge or tools for the 7800 back then, so I typically found myself striving to get one demo done at a time. And, with this final demo, I gave up. Now, it's neat to see that the community has gotten through some of the major issues that were headaches for me back in the day.

 

I was really, really secretive about these in the past. I really wanted to drum up excitement about releasing a 7800 game, since none were created for a very long time. But, now that I look at it, these things are probably better shared with everyone. Maybe they'll be of interest.

 

Best regards,

-John

Link to comment
Share on other sites

Out of my own curiosity, I looked into the source code from the last demo a little bit.

It seems that the graphic generation / mapping code tables were really easy to tweak.

The internal logic though, is crazy. I can wrap my head around a little bit of it, but most of it is foreign to me.

 

Anyway, I added 5 screens more of length, just for fun.

20091102_scrolldemo.a78

 

Obviously, it's not that exciting. But, it kind of makes me remember just how dynamic this engine could be.

Oh, yeah, and apparently late in 2003 I changed the main sprite. The last compiling version had "this new guy" in it.

I think this was an early rendition of Steam Tunnel Bob, the sprite I tried using in a 2600 homebrew project that was put on hold when I worked on Mean Santa (2600).

 

If I can figure it out, maybe I'll see about making the main sprite animate and change direction. If I can't, well... hey, at least I was able to share some stuff of interest, which was the main goal.

 

-John

Link to comment
Share on other sites

New version today.

 

Honestly speaking, I'm actually surprised that I'm working on this project.

 

The code to this project is 6 years old and cryptic. And, I recall that my last update to this program 6 years ago involved a very late night crawl through code to get collision detection working. All I remembered when I started looking at the code again was that it was a rough night with a great sense of accomplishment. Though that was indeed true, I'm now realizing that I must have been drinking or something that night-- the code is definitely functional, but it's uncommented, structurally poor, and has Spanish comments (and, I can't really explain that part).

 

But all of that amusement aside, I figure-- I very much would like to do something with this code.

It's solid code that I think could be pretty useful stuff.

The current plan is just to add a few little features here and there, and maybe end up with something that has some gameplay value. That would be nice.

 

This version introduces the "spike" element familiar in Mega Man games.

Touch a spike, and you die. I only have the player have one life, so touch a spike, and blammo-- game over.

Once this happens you can either 1) hit reset or 2) hit select which will restore your one life back.

However, if you use select, note that you may have to use it a few times while you remove yourself from the spike.

 

Here is is:

20091118_spikesadded.a78

 

Comments always appreciated-- though it may not appear like much has changed, these are huge code overhauls. :)

 

Thanks!

-John

Edited by Propane13
Link to comment
Share on other sites

We now have ladder support, with a new 2-frame character animation for ladder climbing.

 

In addition, I've added support for holes that kill you.

And, the player can jump off the top of the screen without weird things happening (dying or getting stuck on invisible walls).

 

Also, the number of screens to scroll visibly has a set limit.

In this version, there are 12 screens total.

So, when you get to the "final" screen , it'll stop scrolling so that you know you have to go up the ladder to continue.

At the moment, the down-ladder at the beginning of the level and the up-ladder at the end are climbable, but they don't get you to another screen, although in the future, they could/would.

 

I've doubled the main character's speed, since the level's changed a little-- it's the only way to make it fair, and I think it's fun just to change things up.

 

Oh, if you die in a hole, hitting select really isn't of much use, since you can't get out of the pit once you're in. :)

If you fall in a hole, you'll need to hit reset for now.

 

Have fun!

 

post-151-125883237395_thumb.gif

 

20091121_ladders.a78

Link to comment
Share on other sites

We now have ladder support, with a new 2-frame character animation for ladder climbing.

 

 

Ladder support was going to be one of my next suggestions. Would it be possible to make the code a little more forgiving in where you have to be to climb up/down on a ladder? Meaning if you're at the top of the ladder but not standing perfectly above it, it would still let you jump onto the ladder by correcting your position a little for you.

 

For instance, standing where I am in this picture, I would expect the code to let me still jump onto the ladder by pressing down. Right now it demands I move just a liiiiittle bit more.

 

post-4460-125883407506_thumb.png

 

 

 

Also, the number of screens to scroll visibly has a set limit.

In this version, there are 12 screens total.

 

I suspect I have an idea of how you pull that off in the code, based on a few calculations I did when pondering scrolling engines for the 7800 a few months back.

 

What size are you using for DLLs? 8 or 16 lines? I'm sure I could guess by looking at the screenshots, but I'm too tired right now to go counting pixels, and I still need to find me an image that shows all the possible colors on the 7800. :D

Link to comment
Share on other sites

We now have ladder support, with a new 2-frame character animation for ladder climbing.

 

 

Ladder support was going to be one of my next suggestions. Would it be possible to make the code a little more forgiving in where you have to be to climb up/down on a ladder? Meaning if you're at the top of the ladder but not standing perfectly above it, it would still let you jump onto the ladder by correcting your position a little for you.

 

For instance, standing where I am in this picture, I would expect the code to let me still jump onto the ladder by pressing down. Right now it demands I move just a liiiiittle bit more.

 

Sure; I think I can manage something like this.

 

I had a similar dilemma in Steam Tunnel Bob.

 

One way to program it is to allow the user to just stand there nearby and press up/down, and it'll move the user and grab the ladder. Another solution is to allow for diagonal pushes (so, based on your screenshot, if you press down and right together, you grab the ladder. That's the solution currently implemented. Perhaps I need some combo of both, for the best user experience?

 

I think I need to play a few old-school NES games that had a good feel for these things, and maybe I can share my findings. I think Mega Man allowed the "nearby" as well as diagonal, but I think Goonies 2 was just a strict diagonal grab. I'll go see, and report back.

 

I'm definitely up for opinions of what works better (I'm thinking the combo of both is best).

 

Also, the number of screens to scroll visibly has a set limit.

In this version, there are 12 screens total.

 

I suspect I have an idea of how you pull that off in the code, based on a few calculations I did when pondering scrolling engines for the 7800 a few months back.

 

What size are you using for DLLs? 8 or 16 lines? I'm sure I could guess by looking at the screenshots, but I'm too tired right now to go counting pixels, and I still need to find me an image that shows all the possible colors on the 7800. :D

 

I have 12 16-line DLL's, which make for 192 scanlines.

 

For the image, is this what you're looking for? Surprisingly I found this yesterday:

http://www.atariage.com/forums/topic/143720-7800-ntsc-colour-bitmap/

 

-John

Link to comment
Share on other sites

One way to program it is to allow the user to just stand there nearby and press up/down, and it'll move the user and grab the ladder. Another solution is to allow for diagonal pushes (so, based on your screenshot, if you press down and right together, you grab the ladder. That's the solution currently implemented. Perhaps I need some combo of both, for the best user experience?

 

I think I need to play a few old-school NES games that had a good feel for these things, and maybe I can share my findings. I think Mega Man allowed the "nearby" as well as diagonal, but I think Goonies 2 was just a strict diagonal grab. I'll go see, and report back.

 

I'm definitely up for opinions of what works better (I'm thinking the combo of both is best).

 

 

Checking out Megaman 1 just then, it looks like the code probably keeps track of where the center of the sprite is with respect to the display. If the middle of the sprite is inside a ladder sprite, it'll do the auto-move and let you start climbing it. With that kind of checking, odds are diagonal checking might be wasted time since even going diagonal, you'll still eventually trigger the other method once you're close enough. Being able to just press down when close enough avoids the need to be going diagonal - and running the risk of overstepping it and dropping off an edge instead! ;)

 

You could try to implement both methods at the same time to see how it works, then try removing the diagonal to see there's a noticable difference. If not then you can just stick with the down-adjustment method and free up some cycles. :)

 

I have 12 16-line DLL's, which make for 192 scanlines.

 

For the image, is this what you're looking for? Surprisingly I found this yesterday:

http://www.atariage.com/forums/topic/143720-7800-ntsc-colour-bitmap/

 

 

That's exactly what I was looking for. :thumbsup:

Link to comment
Share on other sites

For the image, is this what you're looking for? Surprisingly I found this yesterday:

http://www.atariage.com/forums/topic/143720-7800-ntsc-colour-bitmap/

 

 

That's exactly what I was looking for. :thumbsup:

 

And here are some really old and not very good screen captures of basically the same thing.

http://www.atari7800.org/screenshots/Colorscreen.htm

 

Mitch

Link to comment
Share on other sites

Mord's suggested ladder improvement has been made.

 

Of note-- the way the engine is implemented, you cannot jump and grab a ladder.

BUT, you can "fall" and grab a ladder. What this means is-- if you're holding down the button, and pass a ladder, you won't grab onto it. Let go of the button, and hey! You grab the ladder just fine.

 

This may seem weird, but it's because I'm experimenting with some design elements.

Here's the 2 games I'm looking at for reference.

 

MegaMan = you can jump and grab ladders

Goonies 2 = you cannot jump and grab ladders (note that in Castlevania, you can't jump onto staircases).

 

I'm not sure which method I like better, so I created a combo for now (plus it masks a hard bug to fix) :).

 

Preferences/suggestions? I think something like this *could* work, and may promote interesting level design.

 

20091123_ladders2.a78

 

-John

Edited by Propane13
Link to comment
Share on other sites

Mord's suggested ladder improvement has been made.

 

Of note-- the way the engine is implemented, you cannot jump and grab a ladder.

BUT, you can "fall" and grab a ladder. What this means is-- if you're holding down the button, and pass a ladder, you won't grab onto it. Let go of the button, and hey! You grab the ladder just fine.

 

This may seem weird, but it's because I'm experimenting with some design elements.

Here's the 2 games I'm looking at for reference.

 

MegaMan = you can jump and grab ladders

Goonies 2 = you cannot jump and grab ladders (note that in Castlevania, you can't jump onto staircases).

 

I'm not sure which method I like better, so I created a combo for now (plus it masks a hard bug to fix) :).

 

Preferences/suggestions? I think something like this *could* work, and may promote interesting level design.

 

20091123_ladders2.a78

 

-John

 

 

Awesome! Are you able to run these at .a78 and .bin files? MacMess doesn't like the files, but I think my Cuttle Cart might.

Link to comment
Share on other sites

Awesome! Are you able to run these at .a78 and .bin files? MacMess doesn't like the files, but I think my Cuttle Cart might.

 

Its not been signed.

 

Holy crap! I guess that's what I get for using a 6-year old makefile system. :)

Thanks for pointing that out.

 

Here's a bin and an a78 file that are fixed.

 

20091123_ladders3.a78

 

20091123_ladders3.bin

 

I'd definitely be interested to hear if this works on real hardware.

 

Best regards!

-John

Link to comment
Share on other sites

I'd definitely be interested to hear if this works on real hardware.

 

Best regards!

-John

 

 

I was able to get it running on the CC2 with no problems using 7800QUICK and the 32K banking. It runs quite smoothly. Also tried out your Zelda engine, which was a rush! Like most 7800 games, I like to look of it better on real hardware vs. the emulator.

 

Great work

Edited by DracIsBack
  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

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...