Jump to content
IGNORED

ooze V1 Fully playable game


potatohead

Recommended Posts

Well, I got it done this weekend. The game is complete and all the elements are there and working. There will probably be minor bugs, but you can expect a decent play experience, with score and goal.

 

My oldest son just got done playing this and scored 44,000. Not too shabby. He says it's addictive which tells me I'm on the right path. (On easy, slow ship)

 

Joystick0 left and right move your ship

joystick0 fire launches your bullet. (You can hold down the fire button if you want to.)

 

right difficulty sets the ship speed (default fast)

 

left difficulty sets the ooze drop rate (default easy)

 

You get three lives. They are shown graphically on the left side of the screen

 

You start the game with a ration of fuel. This is displayed on the right side of the screen.

 

As the game progresses, you will consume the fuel. The rate of consumption varies a small amount just to keep the cycle from being routine.

 

When your ship gets low on fuel, it will turn bright white. You have a few seconds before game over at this point.

 

When your fuel reaches a designated level, the fuel target will appear amidst the ooze. Hit it for a fresh tank of fuel + some smaller random amount of fuel.

 

If your ship contacts the ooze, all the ooze gets knocked back a bit and you lose a ship. Your next ship starts with a generous allocation of fuel to get you started again.

 

If you run out of fuel, the game ends no matter how many ships you may have remaining.

 

Every 4th time you hit the fuel target, you level up and the ooze is knocked back a lot farther than it is when you lose a ship, giving you a brief rest.

 

When the game ends, the background is changed and game action is frozen so you can note your score. Holding the trigger down for 1/2 second or so will restart the game.

 

At this point, the game consumes all but 340 bytes of the 4K ROM space, giving a good idea of what is possible in Batari Basic at the moment. I've actually got a byte or two variable space left!

 

Moving your joystick during the title screen reveals a blob thing I simply thought was cool and left it in the game.

EDIT: Kirk's bug fixed & comments added. Download links updated.

 

V1.1 Added this evening. Moving target, extra ship after 15 target hits, reset bug really fixed, title screen toy removed.

 

Latest version sits in thread "Ooze V0.5 released". Was going to use whole rev numbers, then changed my mind. Sorry...

 

ooze.game.1.1.zipooze.bas.1.1.zip

post-4836-1122883306_thumb.pngpost-4836-1122883333_thumb.pngpost-4836-1122883351_thumb.png

Edited by potatohead
Link to comment
Share on other sites

Small bug report I think: at one point I got hit by the ooze just after the Fuel icon appeared, and then I couldn't hit the fuel icon for a long time. I think finally I could, because I hit it and that was the 4th time and the ooze kind of reset, but I'm positive I saw bullets pass right through it the 2 or 3 times I tried to hit it.

 

Nice commented code...though I wish you would tell the reader what the ASM section is doing...

 

At some point soon there will be a gallery here at AA, an extension of the few entries I started on http://alienbill.com/2600/basic/ in a format mch like what the hacks have now. Can't wait to put this on it!

Edited by kisrael
Link to comment
Share on other sites

Small bug report I think: at one point I got hit by the ooze just after the Fuel icon appeared, and then I couldn't hit the fuel icon for a long time. I think finally I could, because I hit it and that was the 4th time and the ooze kind of reset, but I'm positive I saw bullets pass right through it the 2 or 3 times I tried to hit it.

 

Nice commented code...though I wish you would tell the reader what the ASM section is doing...

 

At some point soon there will be a gallery here at AA, an extension of the few entries I started on http://alienbill.com/2600/basic/ in a format mch like what the hacks have now. Can't wait to put this on it!

902318[/snapback]

 

Sweet! Put it up there!

 

I'll add the assembly comments. Eventually, I would like to get this on a cart with game listing and more detailed explanation of how the game works, along with some information about Batari Basic. I've always wanted to do something and get a cart for my own. Perhaps the package will motivate others and we will see more interesting gameplay scenarios that way.

 

The comments could use some additional cleanup, but as always the docs are the last thing to get done. :ponder:

 

Yep, that's a bug. When you get hit by the ooze, your new ship comes with enough fuel to disable the target, but does not actually turn the target off. I forgot to set the right flags.

Link to comment
Share on other sites

Great game, and surprisingly addictive! Have you thought about adding powerups (similar to the fuel, but which only appear for a limited time) to give you things like double shot, fast movement, reverse ooze, etc? I will be interested to see how this develops.

 

Chris

Link to comment
Share on other sites

Nice commented code...though I wish you would tell the reader what the ASM section is doing...

 

902318[/snapback]

 

Done. + some extra comments that explain how the flags work too.

 

(That will save my own arse when I go to work on this later on.)

 

The link in the above post has been updated.

Link to comment
Share on other sites

And that blob thing is pretty cool...what were you planning to use it for?

902732[/snapback]

 

Actually I was thinking about some sort of background for the title screen. The idea didn't pan out and I was left with that blob. Figured it might as well stay until there was no more room for it.

Link to comment
Share on other sites

Possible bug: When you press RESET it flashes the playing screen before going to the title screen.  This is most obvious when you hold down RESET.

903130[/snapback]

 

Yep, I forgot to clean up the reset logic when I worked through using the brk opcode to start things fresh. Changes made --thanks.

 

How it works now is that holding down reset will freeze whatever is on screen, releasing it will go to title screen. The joystick trigger will then start a new game.

Link to comment
Share on other sites

Actually earlier I didn't realize you were still open to ideas for polishing/tweaking.

 

One idea....maybe you could get a nice "drip" effect for the title screen. Like, have "OOZE" there all the time, but there's a single drip drip drip off of the O or someting into a puddle below. You'd have to play with it to get it just right...I'm thinking of something that evokes the nice dripping slime pipes from NES "Bionic Commando"...

Link to comment
Share on other sites

Actually earlier I didn't realize you were still open to ideas for polishing/tweaking.

 

One idea....maybe you could get a nice "drip" effect for the title screen.  Like,  have "OOZE" there all the time, but there's a single drip drip drip off of the O or someting into a puddle below. You'd have to play with it to get it just right...I'm thinking of something that evokes the nice dripping slime pipes from NES "Bionic Commando"...

903379[/snapback]

 

 

--not a bad idea. There is a funky graphics thing in the title that consumes some room right now. The dripping would be a good exchange. Player shapes might just consume too much rom space though... I can start using inline assembler to save bytes however. I'm beginning to get a real feel for the tradeoffs on the 2600. There seems to always be a way to do things, but there are also pros and cons. Batari Basic leaves one at a disadvantage where address space is concerned, but does currently give flexibility in the ram playfield, for example...

 

Added today: Moving target --will post new code this evening.

 

Also I want to have some sort of music running in the background. There is time for it to happen and I think I can share the ooze growth sound channel with the music and have things work out ok. The bullet sound channel is pretty much consumed with the many bullets. It can hold a hit target sound as well.

 

There is playtuning to be done as well. The easy mode is pretty decent. It probably can stand where it is and be ok. The hard mode is too hard.

 

What I want to do is allow a paddle option as well. That way, the play can get totally freaky because it won't be limited to the joystick movement. Easy mode can be for the joystick, hard can be paddle!

 

That's going to take some assembly hacking, which I'm not up to just yet.

Link to comment
Share on other sites

What is the objective of this game exactly? Is it just kill as much of the ooze as possible?

 

I really think it would be better if you could clear the ooze in a level and then it would go on to the next level with more ooze/faster growing ooze/etc. Did you consider doing something like this?

 

I get this hopeless feeling when I play it now... You know what I mean?

Link to comment
Share on other sites

What is the objective of this game exactly? Is it just kill as much of the ooze as possible?

 

I really think it would be better if you could clear the ooze in a level and then it would go on to the next level with more ooze/faster growing ooze/etc. Did you consider doing something like this?

 

I get this hopeless feeling when I play it now... You know what I mean?

905162[/snapback]

 

That's good input. I totally understand what you mean. Right now, I'm pretty limited because I've run out of room for more code. Everybody wants the levels and some sense of accomplishment. I thought knocking back the ooze after a few targets would do that. Clearly is does not.

 

How about a pause after a given amount of ooze, combined with a color change like in missile command? The ooze difficulty could ramp up each time as well. The pause seems to work in games like Kaboom! Maybe it makes sense in ooze.

 

The other option would be to make the target multi-functional. Instead of giving the player just enough fuel to get to the next target, make it 3x the fuel and let the next coupla targets be interesting powerups? Making the bullet speed faster or slower (hehe), or changing the ooze rate are all options I can make doable.

 

All of that can happen once I go over the code, tighten things up and free some room.

 

A coupla folks suggested moving obstacles. If I can get a byte or two of variable storage free, I could have falling things that must be avoided or shot. With all the rapid fire, that might not work too well though. They will almost always get shot. Another moving option could be a wall that cannot be shot though, that moves. This would prevent the user from knocking back the ooze in that area of the screen, adding some difficulty and variance to the overall game play. (maybe make that a bad powerup to offset good ones?)

 

At this point, I'm not sure this last option can happen just yet. This next rewrite will probably tell me for sure. I think I can carve out room for the code necessary, but might not have enough variable storage to hold the game state. Making full use of every last bit is proving to be very, very important. (Nothing is easy on this machine it seems!)

 

Score not working? I'll check it out. Maybe it's something I'm doing. Can you tell me more? Like is the score on screen, but not changing? I'm interested in knowing if this works on a real machine because I want a personal cart when it's all done as a minimum. Care to test a coupla versions? I'll post 'em here and gladly wait for your feedback when you have time. Let me know.

 

I'll be whacking on this over the weekend to try some of this stuff out. Thanks everyone for playing and your suggestions. Keep it up and I'll do the same. This game might just get there yet!

 

On a random note, can a programmer use the 6507 interrupt flag for storage? Since the machine cannot service interrupts, turning it on should have no effect right? I might need that bit actually. (serious)

Link to comment
Share on other sites

Actually earlier I didn't realize you were still open to ideas for polishing/tweaking.

 

One idea....maybe you could get a nice "drip" effect for the title screen.  Like,  have "OOZE" there all the time, but there's a single drip drip drip off of the O or someting into a puddle below. You'd have to play with it to get it just right...I'm thinking of something that evokes the nice dripping slime pipes from NES "Bionic Commando"...

903379[/snapback]

 

 

---I like this idea, but it's going to have to be shelved. The input I'm getting is all gameplay related. Given the tight storage constraints, I don't think I can afford to put anymore title screen goodies in the game at this point. When it's all tuned --I'll give this another look. I've already tossed the title thingy that moved.

Edited by potatohead
Link to comment
Share on other sites

Score not working?  I'll check it out.  Maybe it's something I'm doing.  Can you tell me more?  Like is the score on screen, but not changing?  I'm interested in knowing if this works on a real machine because I want a personal cart when it's all done as a minimum.  Care to test a coupla versions?  I'll post 'em here and gladly wait for your feedback when you have time.  Let me know.

 

 

When I run the game through the CC2, I can shoot and move and knock the ooze back, but the score does not change. It remains at zeros.

Link to comment
Share on other sites

Score not working?  I'll check it out.  Maybe it's something I'm doing.  Can you tell me more?  Like is the score on screen, but not changing?  I'm interested in knowing if this works on a real machine because I want a personal cart when it's all done as a minimum.  Care to test a coupla versions?  I'll post 'em here and gladly wait for your feedback when you have time.  Let me know.

 

 

When I run the game through the CC2, I can shoot and move and knock the ooze back, but the score does not change. It remains at zeros.

905187[/snapback]

 

--thanks. I'll double check what I posted this evening and post new code here this weekend.

Link to comment
Share on other sites

On a random note, can a programmer use the 6507 interrupt flag for storage?  Since the machine cannot service interrupts, turning it on should have no effect right?  I might need that bit actually.  (serious)

905180[/snapback]

I think the only way that the interrup flag can be modified is by sei, cli, and brk (EDIT: and rti?). I think there was some discussion recently (within the last two weeks) about brk behavior; you might check the archives and read up. :)

 

Ok, I went back and dug it up myself.

 

Linky: http://www.biglist.com/lists/stella/archiv...7/msg00172.html and associated messages.

Relevant quote, from Eckhard S:

The B flag is wired directly to the interrupt input pin on the

6502. In the 6507 this pin is internally set high, so on the VCS

the B flag should always be set.

 

The BRK instruction sets the I flag after pushing the status byte

to the stack though, as you mentioned below.

Edited by vdub_bobby
Link to comment
Share on other sites

[how about a pause after a given amount of ooze, combined with a color change like in missile command? The ooze difficulty could ramp up each time as well. The pause seems to work in games like Kaboom! Maybe it makes sense in ooze.

 

Yes, I think that would work well.

 

A level could just be X amount of ooze, moving in at a rate of Y, with Z seconds between waves. A simple background color change would be a nice indicator of a new level. This reminds me of how that PSP game Lumines works.

 

I think that would be a lot of fun.

Link to comment
Share on other sites

On a random note, can a programmer use the 6507 interrupt flag for storage?  Since the machine cannot service interrupts, turning it on should have no effect right?  I might need that bit actually.  (serious)

905180[/snapback]

I think the only way that the interrup flag can be modified is by sei, cli, and brk (EDIT: and rti?). I think there was some discussion recently (within the last two weeks) about brk behavior; you might check the archives and read up. :)

 

Ok, I went back and dug it up myself.

 

Linky: http://www.biglist.com/lists/stella/archiv...7/msg00172.html and associated messages.

Relevant quote, from Eckhard S:

The B flag is wired directly to the interrupt input pin on the

6502. In the 6507 this pin is internally set high, so on the VCS

the B flag should always be set.

 

The BRK instruction sets the I flag after pushing the status byte

to the stack though, as you mentioned below.

905212[/snapback]

 

My thought was to put it on the stack, pull it into the accumulator, store that into a basic variable and test the bit.

 

Did that and sure enough, it's always a 1.

Link to comment
Share on other sites

This game doesn't boot up in Stella. I tried it with both attached files and the first time I got an error: Illegal instruction 62

 

The second file just wouldn't boot at all. No clue what I may be doing wrong.

908386[/snapback]

 

 

Have you tried other games? The bin files posted are known good.

Link to comment
Share on other sites

Other versions of Ooze you mean?

 

All I know is that Stella wouldn't open the files you posted and the screen came out all scrambled/bunched up when it did boot once.

 

However, Stella works fine otherwise.

908398[/snapback]

 

 

Interesting. I'm fairly sure it's not the game code posted here. Just to confirm, are you able to run other atari bin files besides the two for this game?

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