Jump to content
IGNORED

Squareraid (2600)


Ben_Larson

Recommended Posts

Hi everyone and happy 'almost the weekend'.

 

It's been some time since my last Atari 2600 homebrew.  Well last year I started tinkering again, and sure enough one thing has led to another, and now it appears I'm roped back in. :)

 

This latest effort is an attempt at a port of a Javascript game I wrote some time ago for a 1K Javascript competition.  The game is called 'Squareraid', and is what might be described as a 'gravity game'.  You control a ship like you would in lunar lander, except you're not actually landing.  Instead ...you are dropping bombs and getting shot at. :)  It starts off rather slow-paced, but gradually enemies begin to spawn faster and it ramps up.  The goal is simple: survive as long as you can and get the highest score possible by destroying enemy squares.

 

If I'm being honest, the main reason I started this in the first place was because I wondered: how many bullets and bombs I can I get on the screen at the same time?  The answer seems to be about 20, and that's running at 30 FPS and using Superchip RAM.

 

The difficulty settings control the enemy bullet speeds and are:

 

Left: Easy, Right: Easy - Slow

Left: Hard, Right: Easy - Normal

Left: Easy, Right: Hard - Fast

 

Let me know what you think so far.

 

P.S. Here is the original 1k Javascript game for comparison.  In this, the controls are W/A/S/D and B to drop a bomb: http://www.blarworld.net/squareraid.html

 

SquareraidScreenshot.thumb.png.5cb512aa210020d7606d025cab9a5202.png

squareraid.bin

Edited by Ben_Larson
  • Like 13
Link to comment
Share on other sites

Wow, the bullets that fill the sky in this are gorgeous and the movement of your ship is so smooth! Looking forward to featuring this on ZPH next Tuesday!

 

Would you be able to add a way to restart the game with the firebutton? (after a short pause of course so you can see your score without accidentally restarting)

 

- James

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

2 hours ago, ZeroPage Homebrew said:

Would you be able to add a way to restart the game with the firebutton? (after a short pause of course so you can see your score without accidentally restarting)

 

It's part of his new RealWorld(TM) physics engine. You die... and you're dead.

"That's it, mate... that's all you get"

 

Great work @Ben_Larson!

  • Haha 3
Link to comment
Share on other sites

9 hours ago, Prizrak said:

Game freezes when I play on my L6 and some others are mentioning the same thing on FB. Love the progress so far.

Sent from my SM-N960U using Tapatalk
 

I just commented on the Facebook Atari homebrew thread about this.  The freezing when you die is the expected behavior right now and a carryover from the original Javascript game.  Just haven't gotten around to changing it (assuming that's what you're referring to).

 

That being said, there is also a pause functionality controlled the color/B&W switch, so if you're experiencing something other than what I just mentioned, it could be related to this...

Link to comment
Share on other sites

This is beautiful, and unusual for a 2600 game in that it keeps track of that many shots. At first I didn't realize I could drop that many bombs at once, and I did much better once I realized that. I would personally like to see different colors for your bombs vs the shots coming up to you, and perhaps a more solid-looking ship, but it's also good as it is now.

Link to comment
Share on other sites

1 hour ago, Karl G said:

This is beautiful, and unusual for a 2600 game in that it keeps track of that many shots. At first I didn't realize I could drop that many bombs at once, and I did much better once I realized that. I would personally like to see different colors for your bombs vs the shots coming up to you, and perhaps a more solid-looking ship, but it's also good as it is now.

Yea - the maximum is actually 6 bombs and 14 bullets on screen all at once.

 

I thought at first that maybe I could go even higher, but I determined after staring at the code for a while that it probably wasn't gonna happen without going down to 24 or 20Hz (even if I could find the RAM space).  There just isn't enough CPU time.

  • Like 1
Link to comment
Share on other sites

ZeroPage Homebrew is playing Squareraid on tomorrow's (Tue Apr 13, 2021) stream LIVE on Twitch at 6PM PT | 9PM ET | 1AM GMT! Hope everyone can watch!

 

Games:

 

 

(SET VIDEO TO 1080P60 FOR FULL QUALITY)

 

Edited by ZeroPage Homebrew
Link to comment
Share on other sites

Okay, new ROM.  The changes since the last one are:

 

* Fix for bankswitching bug that was causing it to crash in Stella

* Added a basic 'player hit' animation so it doesn't look like the system just froze when you die

* Support for using the joystick button to start a new game after you die (so you don't have to get up and press reset).  This causes screen roll right now but that will eventually be addressed.

 

Let me know if you guys see any issues...

squareraid.bin

  • Like 6
Link to comment
Share on other sites

  • 1 month later...

Another update. Changes since the last update:

 

* Added title screen with difficulty selection (pictured below) - so no more difficulty switches for adjusting the difficulty level

* Fixed screen roll after game ending

* Adjusted some colors

 

There's still a few minor bugs that remain to be fixed...

 

Ben

 

squareraid.bin

 

 

 

SquareRaidTitleScreen.png

Edited by Ben_Larson
  • Like 5
Link to comment
Share on other sites

  • 2 weeks later...

Still doing some code reorganization and a few fixes but getting close I think.

 

One of the issues I've battled this whole time is actually fitting everything in the timing constraints to ensure there's no screen rolls ...and I'm still doing some more reorganization along those lines.

 

I've actually had to resort to checking the overscan/vertical blank timer in some key places and skipping or deferring non-essential game logic when the time until the next screen redraw is too short - for example: checking the joystick button or adding enemy squares can be skipped in certain situations if there just isn't enough time left.

 

It's kind of an interesting technical subject in it's own right - sort of a "poor-mans CPU scheduling".  I was thinking I might do some kind of blog post about it when I'm all done...

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

New update. Changes since last one:

 

* Added one more difficulty level called 'impossible' because ...why not. :)  (each difficulty level has bullets that are 33% faster than the previous one btw)

* Tweaked title screen colors because dark blue text on black is basically illegible on my CRT television

* Code reorganization/optimization

 

I'm gonna call this V1.0 beta 1 I guess.

Squareraid_1.0Beta1.bin

  • Like 3
Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...
  • 3 weeks later...
On 9/14/2021 at 3:39 PM, Philsan said:

Very nice and thanks for PAL60 version.

 

Would it be possible to add high score?

Like at the top of the screen?  I don't think that would be possible changing the screen layout (or resorting to flickering).

 

If you notice, the score occupies the same horizontal area as the actual gameplay (i.e. it kind of floats in the foreground).  So because of that it's not really possible to add anything else up at the top.

Link to comment
Share on other sites

  • 3 months 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...