Jump to content
littaum

Atari 2600 Homebrew - ElectroBall (WIP/Beta 3)

Recommended Posts

Posted (edited)

ElectroBallTitle.thumb.png.66542ae488e1e8b2550ceb485080411b.png

 

ElectroBall is the socially distant way to play!  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 tie game sudden death) 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.  

 

I have a new version available which I am calling "WIP Beta 3".  I don't believe there's any gameplay bugs (players and ball shouldn't stick to the walls, players scoring a goal shouldn't have it scored for the other player, the game should never be so busy in game logic that it causes the screen to scroll, display should be stable), but I've always found others are good at finding the corner cases that the developer might have missed.  If you find anything strange, please let me know!   If anyone would find a bug I suspect it would have to do with the screen scrolling/skipping in certain conditions particularly when AI controls both players.  I got most of those by both playing on a live 2600 and advancing games frame by frame in Stella to see when I exceed the frame count, and hopefully I got ride of the screen scrolling/skipping .. of course, when I initially posted the ROMs and tried it in Javatari the options screen started jumping, so I did a quick fix for that.

 

I also made a PAL50 version.  My own 7800 & 2600 (and 2600 Jr) and TV set are NTSC, so for PAL50 testing I could only try them on emulators.  If you have a native PAL setup, I'm curious to see how the PAL50 version works.

You can download the Beta 3 ROMs (NTSC & PAL50 formats) for use on emulators or Harmony-type carts here:

 

ElectroBall_Beta_3[NTSC].bin

ElectroBall_Beta_3[PAL50].bin

 

 

 

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

ElectroBall Beta 3 NTSC Version

ElectroBall Beta 3 PAL50 Version

 

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

ElectroBall Beta 3 Documentation.pdf

 

What has changed from WIP Beta 1 to WIP Beta2?

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

 

What has changed from WIP Beta 2 to WIP Beta3?

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

 

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

 

The AI code is somewhat simple, and I coded it so that it would keep the player engaged and entertained, not necessarily an attempt to crush them into oblivion - at least that was my intention.  When the AI plays against each other, Easy vs Easy scores an average of 3.2 goals in 3 minutes across all game season variations, Medium vs Medium scores an average of 4.9 goals in 3 minutes across all game season variations, and Hard vs Hard scores an average of 8.0 goals in 3 minutes across all game variations.   When Hard plays Easy it's not uncommon for the Hard AI to score double digit goals to Easy's single digits.

 

 

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 WIP Beta 3
  • Like 15
  • Thanks 1

Share this post


Link to post
Share on other sites
Posted (edited)

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

Share this post


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

Share this post


Link to post
Share on other sites

I finally played this and it is great fun. It is a neat take on an old genre. I love the quick game play and the sounds are wonderful. 

Share this post


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

Share this post


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

Share this post


Link to post
Share on other sites

I did find the AI challenging. I sucked, but then again I was playing on my phone. I had found it a good back and forth. 

Share this post


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

Share this post


Link to post
Share on other sites

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 3

Share this post


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

Share this post


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

 

Share this post


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

Share this post


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

 

 

 

Share this post


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

Share this post


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

Share this post


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

Share this post


Link to post
Share on other sites

Finally got time to play some 2600, new job has me working a lot and after a long day I'd rather sleep lol

Love the game, plays great and really challenging.

Sent from my SM-G996U using Tapatalk

Share this post


Link to post
Share on other sites

Awesome game, thank you very much!

 

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

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.

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