Jump to content

Recommended Posts

Underwater Predator

By ThatDude (Declan Hoare)

 

EDIT: All updates will be posted with their own post to this topic. If you want the latest version, go to the last post in this topic by me.

 

I would appreciate it if you didn't take my name out of this game's credits or sell the game without my permission. Technically, the latter is legal, but I would obviously prefer that you didn't.

 

This is the first version of my first ever working Atari 2600 game, distributed under the GPL version 3. Please let me know what you think and give suggestions for improvements!

 

You are a shark (in the loosest sense of the word :P) flying around in SPAAAACE! underwater, surprisingly. You have to eat the "gold"fish (although because of the 2600's limited pallette, they're really light yellow) while avoiding black fish, which are rotten but somehow still alive and swimming (SHHH, don't question these things).

 

Every 20 points, the speed of the fish increases, and although the first speed is downright boring, it quickly gets more interesting. You use the stick to move and the button to eat.

 

Source code (warning: extremely messy): predator.bas

NTSC ROM: Underwater_Predator_V1.bin

I haven't made a PAL ROM at the time of this posting, but I definitely will at some point - I live in a PAL region, after all.

 

z26 and Stella both run this game fine, although I don't have a Harmony cart (or, for that matter, a 2600) so I can't be sure if it works on real hardware. Enjoy!

Edited by ThatDude
  • Like 1

Share this post


Link to post
Share on other sites

I wouldn't put game sprites and text in the same league, but if you say so: Underwater_Predator_V1.1.bin

 

Yellow looks nicer anyway, I'm sticking with it. Thanks!

 

Edit: Whoops, forgot to upload the source code. All I did was change the colour of Player 0 in SetupGame and playgame, but technically this version can't be considered GPL unless I release the source, so: predator.bas

Edited by ThatDude
  • Like 2

Share this post


Link to post
Share on other sites

I had some ideas for your game. Maybe you can find some of these useful. Feel free to do whatever you want, I was just with a little too much free time.

 

Have you thought in an energy bar? this way the game would stop if you don't eat yellow fish.

 

Also the black fishes could be deadly on touch and slowly approach the Y-coordinate (or row) of player (by example going up or down one pixel each eight frames or less per difficulty)

 

The fishes could be animated, moving the tail a little.

 

Using missile graphics you could create a kind of vertical barriers (seaweed?) that should be avoided.

 

Another idea for black fishes, using the two or three-times repeat feature in advanced levels. This way the screen could look more "complex"

Share this post


Link to post
Share on other sites

nanochess, thanks for playing my game.

Those all sound like good ideas. I'd like to stick with a 4K ROM so I don't know if they'd all fit, especially alongside some of my own plans (i.e. 2 player mode) but I'll give it a try.

 

(seaweed?)

That green stuff at the bottom is seaweed, although it's just decoration. Maybe I should make it deadly, but there's no reason to actually go down there at the moment (fish can't go down far enough).

Share this post


Link to post
Share on other sites

nanochess, thanks for playing my game.

Those all sound like good ideas. I'd like to stick with a 4K ROM so I don't know if they'd all fit, especially alongside some of my own plans (i.e. 2 player mode) but I'll give it a try.

That green stuff at the bottom is seaweed, although it's just decoration. Maybe I should make it deadly, but there's no reason to actually go down there at the moment (fish can't go down far enough).

 

There are opportunities for optimization

 

 

if d = 0 then if b = 12 then AUDV0 = 4
if d = 0 then if b = 12 then AUDC0 = 4
if d = 0 then if b = 12 then AUDF0 = 7
if d = 0 then if b = 12 then AUDV1 = 4
if d = 0 then if b = 12 then AUDC1 = 2
if d = 0 then if b = 12 then AUDF1 = 5
if d = 0 then if b = 14 then AUDV0 = 0
if d = 0 then if b = 14 then AUDC0 = 0
if d = 0 then if b = 14 then AUDF0 = 0
if d = 0 then if b = 14 then AUDV1 = 0
if d = 0 then if b = 14 then AUDC1 = 0
if d = 0 then if b = 14 then AUDF1 = 0

could be rewritten as

 

if d then skip
if b = 12 then AUDV0 = 4 : AUDC0 = 4 : AUDV1 = 4 : AUDF0 = 7 : AUDC1 = 2 : AUDF1 = 5
if b = 14 then AUDV0 = 0 : AUDC0 = 0 : AUDV1 = 0 : AUDF0 = 0 : AUDC1 = 0 : AUDF1 = 0

skip

many less if statements

if d is equvalent to if d <> 0 but takes less code

making assignments of the same value consecutively on the same line

uses less code.

 

 

When the score gets over ~80 best strategy (for me any way) is to

just sit in one spot and hope I can bite at the right time as the goldfish

swim past.

so you might want to make the gold fish dodge as an increase in difficulty.

(if you do I'll probably never get past 100 :P )

Share this post


Link to post
Share on other sites

Thanks for the code! If I run out of ROM space my plan is to rewrite the fading code so that it runs on a loop instead of being hardcoded.

 

 

so you might want to make the gold fish dodge as an increase in difficulty.
(if you do I'll probably never get past 100 :P )

 

 

An increase in difficulty is always a good idea in my book.

(And before anyone says anything, no, I'm not going to include every idea that gets thrown at me; but if it's good and I have enough ROM space to pull it off, I'll put it in the game.)

  • Like 1

Share this post


Link to post
Share on other sites

I managed to implement some of those ideas.

  • There is now an energy bar that depletes slowly and increases when you eat yellow fish. If it gets to zero, obviously you lose a life.
  • Black fish now home in on your player and kill you on touch.
  • Fish are now animated.
  • Yellow fish now dodge downwards if you're too close.

I also included a buggy bit of code for randomly choosing a NUSIZ value for the black fish in the source. Uncomment lines 410-420, compile the game, and get to 40 points to see it in action. It certainly works but the collision detection fails with most values so it's commented out for now.

predator.bas

Underwater_Predator_V1.5.bin

  • Like 2

Share this post


Link to post
Share on other sites

I managed to implement some of those ideas.

 

Nice! It now starts feeling like a true game :)

 

Keep up the good work!

 

BTW, somehow I was seeing your game like a scrolling one, but just I've seen it has the bottom part fixed. Anyway the missile barriers could run from right to left "carried" by the river.

Share this post


Link to post
Share on other sites

This is version 2.1 of Underwater Predator. (2.0 is unreleased, and it is going to stay unreleased. It's too buggy to play.)

 

Here are the changes from 1.5:

  • There is now a bit of background noise. The frequency and pitch change with every difficulty level.
  • I've added a plastic bag which gets sucked into your open mouth, so keep your mouth shut when you're not eating! Unfortunately, the sprite looks like, well, rubbish, but not in the way I want it to. :P
  • There are sound effects for eating yellow fish and dying.
  • The sound for eating only uses one channel.
  • Technically, the yellow fish are twice as common as everything else. In practice, it's barely noticeable. This is because of the limited random number functionality of the 2600.
  • The missile barriers that nanochess asked for are now in the game, and show up every 240 frames (or slightly more often depending on the difficulty level; you're unlikely to get far enough into the game to notice).

Here's my remaining TO-DO list:

  • Add some music - "Have you played Atari today?" jingle on the Atari logo screen, and, of course, the opening bars to "Firework" by Katy Perry whenever the plastic bag is onscreen :P
  • Make the black fish get bigger at 40 points (I just need to work out how to fix the collision detection)
  • Add the Titanic, which, inconveniently, just keeps sinking over the top of the Predator. This was suggested to me by a friend, although I can't figure out how the Titanic would sink more than once. It'd also be an incredibly underwhelming Titanic, a whole 8 pixels wide!
  • If possible, add another screen when the Predator reaches the top of the existing one, allowing him to jump out and eat a bird flying past.
  • Add 2-player turn-based mode.

Enjoy!

 

Underwater_Predator_V2.1.bin

predator.bas

  • Like 1

Share this post


Link to post
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...