Jump to content
IGNORED

Atari 2600 Homebrew - ElectroBall (Complete!)


littaum

Recommended Posts

ElectroBallTitle.thumb.png.66542ae488e1e8b2550ceb485080411b.png

 

Mount up in your Power Sphere on the field to compete against another person or "Daisy", an AI drone who makes up for lack of precision with enthusiasm.  With 5 different selectable A.I. skill levels,  you can even have two AI drones play against each other and cheer them on from the stands.  Whoever scores the most goals within the time limit (or sudden death playoff in case of tie) wins!  Play one of four seasonal variations (Spring, Summer, Fall, Winter) to find out who truly is the ElectroBall champion!

                                                                                                            

ElectroBall is a new 16K homebrew game written in assembly for your Atari 2600 or Atari 2600 compatible system.  This game in ROM form may be used for free for personal use or for online/offline public use as long as no fees are directly charged to play the game.  This game may not be directly sold or packaged with other items to sell in any form without prior permission from myself.  

 

The beta/WIP period is over and I have released the final "Version 1.0" binary to the public.  Enjoy!  I may look into a special "Publisher Branded" version of the cartridge for sale on physical media.  With emulators and flash carts the need for physical media is not as great these days and having good artwork and a polished manual is key.  But rest assured, the actual game itself would be identical to what is posted here.

 

My own 7800 & 2600 (and 2600 Jr) and TV set are NTSC, so for PAL50/PAL60 testing I could only try them on emulators or try my best using my Harmony Encore cart as well as depending on the kindness of others to test on their systems (special thanks to Atariage members Philsan and Bomberman94 for testing multiple iterations on their PAL system as I tweaked settings...)

 

You can download the final V1.0 ROMs (NTSC & PAL50/PAL60 formats) for use on emulators (I've tested on Stella, Javatari, and the Argon app for Android) or Harmony-type carts here:

ElectroBall_V1.0[NTSC].bin

ElectroBall_V1.0[PAL60].bin

ElectroBall_V1.0[PAL50].bin

 

Or play them directly in a web browser on javatari.org from these links:

ElectroBall V1.0 NTSC Version

ElectroBall V1.0 PAL60 Version

ElectroBall V1.0 PAL50 Version

 

I also have attached manual text to help explain the various options in the game.  It is available here:

ElectroBall V1.0 Documentation.pdf

 

 

Notes on development history of the many ROMs I posted:

*  WIP Beta 1 - Initial posting

*  WIP Beta 2

  • Many AI variations!  I've renamed the AI from Beta 1 to be "Hard", and have added a "Medium" and "Easy" mode.  I have also added a "Super Mario Kart" style "AI Adapt" mode where the AI will adjust its play level to be harder or easier depending on if it is behind or ahead.  There is also an "AI Random" mode which will change the AI behavior every time it gets the ball.
  • Ability to specify game length from 1 to 10 minutes in 1 minute increments.
  •  Ability to specify none, one or both players be human or AI, allowing for a "0 to 2 player" game.
  • An options screen to configure all of these combinations (1,000 different potential games!)
  • An ability to change options, re-start a game or go back to the options screen after a game using the joystick for a more "Couch Compliant" experience. 
  • An increase in ROM size from 8K to 16K.  I saved a few hundred bytes in optimization before adding the options screen, but the data heavy options screen plus coding in AI options for both players caused me to exceed the 8K limit.  Fortunately I could use the standard Atari 16K bank-switching scheme.  I'm currently at 10,850 bytes of game ROM used.

* WIP Beta 3

  • No change to gameplay or features.
  • Hopefully the title and options screen no longer shake on more "discerning" consoles.  My one test case on my 2600/7800 system (pressing and holding the fire button on the splash screen makes the title screen shake) is resolved with beta 3.
  • Fixed an issue where the "Atari 2600" text underneath the splash screen was not as centered as it could be.

*  WIP Beta 4

  • New PAL60 compiled version.
  • Reduced instances of AI controlled players intentionally running into walls when they have the ball.

*  WIP Beta 5/6

  • Beta 5 was tested with just a few individuals to improve stability and vertical centering on PAL systems
  • Beta 6 has better centering of the title/options screen.  In addition, the PAL50 version game screen should be better centered (and on Javatari it's no longer at the very tippy top of the screen). 
  • The player on the right side has had its color brightened by 1 when in Black/White so that it isn't quite so dark on actual systems.
  • I've made the AI on Hard mode be better (but not impossible) on goalie defense on spring/summer game variations.  I am able to beat it on hard mode, but I need a joystick with very precise control and I need total attention paid to the screen.  This also makes the game difficulty switches on spring/summer for AI Hard more apparent - if you set one goalie to fast and one goalie to slow, the slow goalie will give up more goals than the fast goalie.  If you then reverse it, you will watch the other goalie give up more goals.  The other side effect is that AI Hard really dominates AI Medium or AI Easy, but there should be enough variation in the AI for players of all skill levels to enjoy.

*  WIP Beta 7

  • Removed a superfluous VSYNC that caused some systems to display ghosting at the very top.  VSYNC/VBLANK between all screens is now consistent in where they are called in the scanline draw.  Cleared sound effect variables at beginning of game to prevent any sound effects from previous games from playing at the beginning of next game.

*  V1.0

  • Changed version number on title screen to V1.0

 

Misc wall of text, just my own thoughts on the game and various inspirations:

During the middle of the year last year as I was wasting some time browsing facebook, an ad for the Udemy course on programming for the Atari 2600 came up with a sale price of $10.  Being the middle of the pandemic, it seemed like a nice diversion.  Why not try to learn to program for the game system from my youth where a patient professor with a soothing voice leads me through assembly programming at a pace I choose?  I took the course, then read Andrew Davie's book, re-read "Racing the Beam" which I had purchased years earlier, read the randomterrain.com series on Darrell Spice, Jr's very excellent Collect game tutorial (which the Udemy course seemed to base a lot of its code on as well!), the Stella programmer's guide by Steve Wright, the Atari 2600 tutorials on 8bitworkshop.com, and the plethora of informative posts on programming right here at Atariage.com.  The amount of information publicly available on how to program for the Atari 2600 in the year 2021 is simply fantastic.

 

Even after reading all that, programming for the Atari 2600 to me is still somewhat .. formidable.  ElectroBall is actually my 4th game idea and 3rd attempted implementation for a game.  The others were a bit too ambitious for my current 6502/6507 skills.  For this game I mainly limited myself to what I could do with a single HMOVE during a given frame to see what I could do with 2 sprites, 2 missiles, a ball, background colors and the playfield.  That allowed me a more simplified runtime kernel (the familiar "2 line kernel" (2LK) with some embellishments) and let me learn 6502/6507 assembly and the various Atari 2600 options by focusing on code in the the overscan and vertical blank sections.  I also had a lot of fun coding in the various hardware switches (difficulty, select, reset, black and white) that the 2600 featured as well as the ROM-size soaking splash & title screens.   Implementing the "Atari bank switching for dummies" example from these forums and seeing code execute in different banks was also very cool to see in action. 

 

One of my favorite games from the 80's was Hat Trick - I played it on multiple 8-bit systems and the game play (Spring and Summer variations) of ElectroBall is heavily based on that.  I also thought that an overhead perspective of a Ballblazer type game would also translate well (and is the basis for the Fall and Winter game variations).  I also was enamored with the "momentum based" control of the homebrew R.C. Sumo Bots and wanted to do something similar - like the mention on ZeroPage Homebrew when R.C. Sumo Bots was played, there should be more games in the bumper car genre!  I tried to develop the game to feature what I think are the 2600's strengths - bright vivid colors, fast responsive gameplay, neat lower range beep boop sounds and rocket engine crowd noise.  

 

Nothing about my game is particularly groundbreaking (other than the splash/title screen to game code size ratio, which I believe I've set a new record - ha!), and some portions of my code is borrowed from elsewhere (the scoreboard is a modified version from Collect, as is the sound effects base engine and my runtime kernel is a fairly heavily modified version of the 2LK from Collect, the Atari jingle and "fire to exit splash screen" is borrowed from the AtariAge logo sample code recently posted, and the cycle through the colors of the Atari Fuji logo on the splash screen is based on the many color cycling background tutorials out there) and I used many of the utilities from the alienbill.com web site to add flourishes.  All inefficient subroutines are of my own design!

 

Having an AI was also useful for figuring out gameplay bugs and difficulty tuning.  The Winter variation used to be a lot tougher, but I made it easier after the AI couldn't even score a single goal in 3 minutes... AI Medium is about 50% more effective offensively than AI Easy.  AI Hard is about 50% more effective offensively than AI Medium but also better at defense on Spring/Summer variations.  

 

Particular places I learned 6502/6507 assembly:
https://www.udemy.com/course/programming-games-for-the-atari-2600/
http://www.lulu.com/shop/andrew-davie/atari-2600-programming-for-newbies-revised-edition/paperback/product-23644281.html
https://www.randomterrain.com/atari-2600-lets-make-a-game-spiceware-00.html
https://8bitworkshop.com/v3.5.2/?platform=vcs
Stella Programmer's Guide by Steve Wright 12/03/79
Countless topic posts on Atari 2600 programming on Atariage.com

 

Web sites I used to help design various components of my game:
https://alienbill.com/2600/playerpalnext.html - Playerpal 2600 for sprite design/animation
https://alienbill.com/2600/splash-o-matic - Splash-o-matic (now Atari-background-builder) for title screen
https://alienbill.com/2600/atari-riff-machine/ - Atari riff machine (to plan out sound effects and title jingle) 
https://www.masswerk.at/vcs-tools/TinyPlayfieldEditor/ - Tiny playfield editor (to draw out Fuji logo on splash screen)

 

Places I used to test out my game during development:
Stella (The developer interface in this emulator is fantastic!  The udemy course was worth it just for showing me the larger world present when you press the ~ key)
https://8bitworkshop.com/v3.5.2/?platform=vcs  (I could modify code in real time to see its effects!)
https://skilldrick.github.io/easy6502/  (For testing basic 6502 functions)
https://javatari.org/  (8bitworkshop uses this too but was also handy to test the ROMs on its own).

 

Oh - and a big nod to the Atari 2600 development package for Visual Studio Code.  A great modern development environment!

 

 

 

Edited by littaum
Update for Complete.
  • Like 23
  • Thanks 3
Link to comment
Share on other sites

ZeroPage Homebrew IS BACK FROM BREAK TOMORROW and playing ElectroBall on tomorrow's (Fri Jun 18, 2021) stream LIVE on Twitch at 12PM PT | 3PM ET | 7PM GMT! Hope everyone can watch!

 

Games:

(WATCH AT 1080P60 FOR FULL QUALITY!)

 

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

On 6/17/2021 at 4:25 PM, ZeroPage Homebrew said:

ZeroPage Homebrew IS BACK FROM BREAK TOMORROW and playing ElectroBall on tomorrow's (Fri Jun 18, 2021) stream LIVE on Twitch at 12PM PT | 3PM ET | 7PM GMT! Hope everyone can watch!

 

 

 

It was certainly an honor to see my game played on ZPH!  I always love the positivity, enthusiasm and fun you all have in your livestreams.  I usually catch the replay on youtube.

 

I'm glad no big bugs were found and that the game seem to have the right amount of "chaotic fun" to it - that was certainly my intention.

 

I have to admit I'm a little proud that the first iteration of the AI was considered a bit too hard. :) I actually spent a bit of time before uploading the beta 1 WIP rom making the AI a little bit harder because I thought it might have been too easy.  But for my next WIP update to the game I'll make the difficulty switches also control how good of a shot the AI is (perhaps A/A <--> A/B <--> B/B for 3 levels of ability).  I also wanted to go through my code and optimize it a little for space - it won't affect the gameplay but is good practice to do.    

 

It did look like most folks were a bit confused on what the orange timer bar was and what each side represented, that will certainly happen with a symbolic method of counting the clock.  The full blocks on the left represent 2 minutes each, and can get cut in half to represent 1 minute, with the large orange bar in the center/right being the seconds counter.  There is the ability to select a 3/6/10 minute game by using the select switch to toggle through (I think I might add a big table to the manual document to describe all of the various combinations one can play so it is more apparent).  Of course, having an options configuration screen at the start to do all this would be more clearer, but by golly I wanted to use all of the knobs and switches that the Atari 2600 had and claim 24 different games like in the old days. :)  

 

To answer nostalgic26's question about the "ball pickup" sound, the frequencies used is the same (0,0,0,1,1,1,2,2,2,3,3,3) as the ball pickup sound in Adventure (and the "collect" sound in Darrell Spice Jr's Collect tutorial) but I oscillate the channel values each frame to try and give it a more "Electro" sound to it.  

 

 

  • Like 4
Link to comment
Share on other sites

46 minutes ago, littaum said:

It was certainly an honor to see my game played on ZPH!  I always love the positivity, enthusiasm and fun you all have in your livestreams.  I usually catch the replay on youtube.

 

I'm glad no big bugs were found and that the game seem to have the right amount of "chaotic fun" to it - that was certainly my intention.

The honour was all ours! ElectroBall has so many great gameplay options and the movement of the players can definitely be described as chaotic but never frustrating. It's an extremely addictive game with MASSIVE amounts of replay value. It takes all the best qualities of the previous 1 on 1 hockey/soccer games for the 2600 and perfects them.

 

I'll be adding it to our MultiPlayer Marathon episode list!

 

- James

  • Like 1
Link to comment
Share on other sites

It is definitely a fun game, not only for two players. The AI is really good, a selectable AI is even better. How about a 4th option where the AI adjusts to the player's skill, depending on the goal difference? 

 

Besides that, I suppose the only thing missing is being able to start a new game with fire (James will love me for this :)).

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

11 hours ago, Thomas Jentzsch said:

Besides that, I suppose the only thing missing is being able to start a new game with fire (James will love me for this :)).

?????

 

Plus left/right to go through the game options. Getting up from the couch is extremely inconvenient! Hahah.

 

- James

Link to comment
Share on other sites

  • 4 weeks later...

Bump - I've completed WIP Beta 2.  Now with more AI options, more game length options, more options all around, and a joystick-controllable options screen to tie them all together!  Players can also re-start games or go to the options screen after a game using the joystick for a more "Couch Compliant" experience.

 

If you find anything weird (or if the AI on Easy mode is still too hard) let me know!

  • Like 4
Link to comment
Share on other sites

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

 

Games:

AFTER DARK

 (SET TO 1080P60 FOR FULL QUALITY!)

 

 

  • Like 1
Link to comment
Share on other sites

On 7/12/2021 at 4:22 PM, littaum said:

Bump - I've completed WIP Beta 2.  Now with more AI options, more game length options, more options all around, and a joystick-controllable options screen to tie them all together!  Players can also re-start games or go to the options screen after a game using the joystick for a more "Couch Compliant" experience.

 

If you find anything weird (or if the AI on Easy mode is still too hard) let me know!

Don't know if you saw the broadcast above yet but ElectroBall's menu and pre-menu on my light sixer were both vertically jittery, like there was a line count issue (but there isn't). I couldn't see any issues in Stella even with the developer mode set so I'm at a loss as to why it's happening. Let me know if you need me to do any testing, especially if nobody else experiences the same issue.

 

Also, thank you for the "Couch Compliant" experience! ? Your game is incredible!!

 

- James

 

Link to comment
Share on other sites

8 hours ago, ZeroPage Homebrew said:

Don't know if you saw the broadcast above yet but ElectroBall's menu and pre-menu on my light sixer were both vertically jittery, like there was a line count issue (but there isn't). I couldn't see any issues in Stella even with the developer mode set so I'm at a loss as to why it's happening. Let me know if you need me to do any testing, especially if nobody else experiences the same issue.

 

Also, thank you for the "Couch Compliant" experience! ? Your game is incredible!!

 

- James

 

 

Thanks for the compliments!  I did catch the replay on twitch, and while I was bummed that you saw the jitters on the title/options menu I was happy to see the "Easy" AI was more lenient. :)

 

The jitters in the title screen and menu were what I actually saw when I first posted the ROM and tried it in Javatari.  I did a last minute fix to the ROMs (after my initial edit of the first post but before I replied to this thread "bumping" my post) but it seems it is still there on some systems.  I re-downloaded the posted ROMs and tested it on my Atari 2600 & Atari 7800 using the Harmony Encore cart - I did not see the jitter like on the stream, but since my fix had to do with "overscan timing" combined with some logic depending on when the joystick is moved/fired/select/reset pressed during these screens I can work on that a little more to resolve it for all systems.  I was able to get the title screen to jitter if I press and hold down the joystick fire button during the Fuji splash screen and keep it held down while the title screen is displayed, so perhaps if I get that not jumping the rest will resolve itself.  Once I have an updated ROM I will be sure to post it here for verification.

 

And if anyone else sees the title/options page jumping as well on their systems, let me know.  The more test systems I have the better. :) 
 

To answer some of the other questions raised during the ZPH play through, the AI only knows of positioning information of all of the objects in the game but can't modify them itself.  It only has access to the joystick movement & fire button, just like a human player.  Of course, the AI has the advantage of being able to act upon this information within 1/60'th (or 1/50'th for PAL) of a second.  It is is possible for both players to get "faster" if they move in the same general direction for an "extended" period of time (but there is a maximum velocity, equal for both players).  The disadvantage to going fast being if you need to change directions you need to slow your momentum from your current direction.

 

  • Thanks 1
Link to comment
Share on other sites

4 hours ago, littaum said:

The jitters in the title screen and menu were what I actually saw when I first posted the ROM and tried it in Javatari.  I did a last minute fix to the ROMs (after my initial edit of the first post but before I replied to this thread "bumping" my post) but it seems it is still there on some systems.  I re-downloaded the posted ROMs and tested it on my Atari 2600 & Atari 7800 using the Harmony Encore cart - I did not see the jitter like on the stream, but since my fix had to do with "overscan timing" combined with some logic depending on when the joystick is moved/fired/select/reset pressed during these screens I can work on that a little more to resolve it for all systems.  I was able to get the title screen to jitter if I press and hold down the joystick fire button during the Fuji splash screen and keep it held down while the title screen is displayed, so perhaps if I get that not jumping the rest will resolve itself.  Once I have an updated ROM I will be sure to post it here for verification.

Just some additional information, I re-downloaded the binaries just in case I didn't get the updated ones but they had the same behaviour. I also tried out the binaries on my 7800 and there was no jitter.

 

Hopefully you're able to narrow down the issue with your button press test!

 

- James

 

 

 

Link to comment
Share on other sites

Bump for WIP Beta 3 -- hopefully this fixes the issue with the title screen and options screen shaking on some consoles.  On my test setup the one reproduceable issue I saw (holding down the fire button on splash screen caused the title screen to shake) has been resolved in WIP Beta 3.

 

Test_Setup.thumb.jpg.d735a2dcff0e9ebe64ad2f54cefcde68.jpg

 

@ZeroPage Homebrew would you be able to test this version out on your system to see if the title/options (and splash and game, though I don't expect them to) are solid in their display?  And, if holding the joystick at the end of the game still causes the screen to blank out (as opposed to returning to the options screen like it should)?

 

I used to think it strange for people to collect so many duplicates of the same hardware system -- now I realize that makes for a more robust testing situation. :)  

  • Like 1
Link to comment
Share on other sites

21 hours ago, littaum said:

@ZeroPage Homebrew would you be able to test this version out on your system to see if the title/options (and splash and game, though I don't expect them to) are solid in their display?  And, if holding the joystick at the end of the game still causes the screen to blank out (as opposed to returning to the options screen like it should)?

Just tested it and all the screens are rock solid, great job! I also pressed the joystick in a direction at the end of a game and it went back to the option screen, so it looks all good! ?

 

ElectroBall is amazing, so I've added it to the upcoming Multiplayer Marathon Event where we will have four people on the show competing for the top spot with a variety of 2/4 player games!

 

- James

  • Like 2
Link to comment
Share on other sites

17 hours ago, ZeroPage Homebrew said:

Just tested it and all the screens are rock solid, great job! I also pressed the joystick in a direction at the end of a game and it went back to the option screen, so it looks all good! ?

 

ElectroBall is amazing so, I've added it to the upcoming Multiplayer Marathon Event where we will have four people on the show competing for the top spot with a variety of 2/4 player games!

 

- James

Splendid!  I'll have to remember these timing settings for future use.  Looking forward to the livestream, whenever it happens!

  • Like 1
Link to comment
Share on other sites

On 7/24/2021 at 8:25 AM, Philsan said:

Awesome game, thank you very much!

 

Please make a PAL60 version (only colors need to be changed).

 

Your wish is my command!  I've updated the build in the OP to beta 4, adding in a PAL60 version and tweaked the AI ever so slightly to not bash itself into the wall sometimes when it has the ball.  Let me know if that version looks screen stable and if the colors look close (red/blue for players, light green/dark green for playfield in color mode).

  • Like 3
  • Thanks 1
Link to comment
Share on other sites

5 hours ago, littaum said:

 

Your wish is my command!  I've updated the build in the OP to beta 4, adding in a PAL60 version and tweaked the AI ever so slightly to not bash itself into the wall sometimes when it has the ball.  Let me know if that version looks screen stable and if the colors look close (red/blue for players, light green/dark green for playfield in color mode).

Thank you very much!

Colors seems OK.

Titlescreen sometimes turns black for a moment. On the upper right there's a strange pattern:

IMG_20210727_230033.thumb.jpg.a068197f54a07e380ab214de4390718f.jpg

Link to comment
Share on other sites

Thanks for checking it out!  I have a beta 5 that a few people on this thread list are testing privately (as I had a few iterations and didn't want to clutter up the forum with too many frequent postings).  What I'm finding is that even though I've been able to keep 262 scan lines NTSC/PAL60 or 312 scan lines PAL50, if you don't watch how many lines you are putting in each section (VSYNC/VBLANK/draw/overscan) it can result in some really strange behavior on some people's machines.

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