Submission #9076: DrD2k9's A2600 Kaboom! "maximum score" in 2:45:51.21

(Link to video)
Atari 2600
maximum score
BizHawk 2.9.1
596304
59.9227510135505
166154
PowerOn
Kaboom! (1981) (Activision) [!].a26
Submitted by DrD2k9 on 5/18/2024 5:53 PM
Submission Comments

Kaboom!

The Mad Bomber is dropping bombs and it's up to you to put them out by catching them in buckets of water.

Game Basics

  • The Mad Bomber sweeps randomly left and right while dropping a series of bombs.
  • You play as the buckets of water at the bottom of the screen (starting with three).
  • This game uses the Atari Paddle Controller as opposed to the joystick.
    • Bucket position on the screen is tied to the analog value of the paddle controller.
  • Missing a bomb results in losing one of the three buckets (bottom first, then middle)
    • If all three buckets are lost, you lose.
    • Passing a 1000 point barrier (1000, 2000, 3000, etc.) adds a bucket to the stack if there are less than three.
  • There are 8 stages/groups of bombs
    • Once stage 8 is beaten, all subsequent stages are the same difficulty as stage 8.
    • At the end of each stage, the game pauses until the player pushes the button to continue into the next stage.
  • Both the number of bombs per stage and their point values for catching them increase as stages increase.
Stage# of BombsPoint Value/BombTotal Points for the stage
110110
220240
330390
4404160
5505250
6756450
71007700
815081200
  • The cumulative points through these first 8 stages is 2900. Each stage thereafter adds 1200 points.
  • At 10,000 points, the Mad Bomber's face changes from a scowl/frown to one of surprise due to him being impressed at your skill of play.
    • If a bomb is dropped and explodes, the Mad Bomber's face changes to a smile.
  • Once the score reaches 999,999 points, the game ends; the remaining bombs on the playfield stop and the buckets disappear.
    • Achieving the maximum score requires 838 complete rounds and a partial 839th round.

TAS Notes

  • The game offers two difficulties which are simply two different sized buckets. Easy has buckets that are twice as wide as the buckets in hard mode.
    • This run plays on hard mode using the narrow buckets.
  • The goal for this run was maxing out the score, not simply finishing the first 8 stages (which would be the minimum requirements for an any% run).

TAS Creation

Given that the control of this run is using a paddle/analog controller, manually entering all the values to catch each individual bomb would have been extremely tedious; so the run was almost exclusively made via bot.
I manually started the game and set the difficulty to hard mode in the first 2 frames. The rest of the input was created via bot. After realizing that the original submission was sub-optimal due to catching some bombs later than the earliest possible frame, I adjusted my approach and fixed this error.
Tracking the bombs was a bit of a challenge as they aren't sprites. Instead RAM was watched to see if a bomb was present in particular rows on the screen and then determined which horizontal position the bomb was at in order to move the bucket to the correct position. There are 256 possible horizontal positions that the bombs can be in, but they don't simply increase from left to right. Instead, the playfield is split into 8 vertical columns/regions. The RAM value of a bomb's horizontal position is divided by 8 and the value of the remainder determines which vertical region the bomb will be present. Within that region, the bomb position will vary depending on it's specific RAM value. Due to this indirect method of positioning the bombs, their horizontal values did not line up with the buckets' horizontal value (which do simply increase left to right); and thus, I couldn't just simply track the bombs 1-to-1 directly with the buckets.
I was able to create a bot that was able to track the bombs by first determining the region of the screen the bomb would be in, then determine if the bomb would be in the left or right half of that region; the narrow buckets only cover half a region. The wide buckets would likely be able to handle an entire region but I did not test this directly. Once the location was known, the bot then wrote the correct analog value into the input sequence in TAStudio.
While a few tweaks were needed in timing and movement to prevent a missed bomb, this was the basic bot approach for the whole run.
In the fixed run, I ultimately did have the bot track the bombs 1-to-1 with the buckets.
Once I believed I had the bot working, I set it to start running before going to bed. Thankfully upon waking, I found a completed run with no errors. With the redo of the run, I actually used 2 very similar bots that dealt with stage speeds differently. The first bot was used for stages 1-7 and the second bot was used for the remaining stages.
Rewriting the bot allowed for me to watch a different aspect of RAM in order to position the buckets earlier in preparation for a bomb. This allowed for catching all bombs at the highest point which saved time. I believe the first 7 stages are optimal from everything I have assessed. Stages 8 onward are all exactly 712 frames each (until the final stage, which is only partial; so it's shorter). The bot monitored the starting frame of all these stages to ensure they landed on a specific frame. If a round started too late, the bot would pause and alert me. Thankfully, the final way the bot was written allowed for no manual tweaks necessary from stages 8 - 839, and the bot ran continuously through this entire aspect of the run. On stage 839, I did manually tweak the last bucket movement to intentionally overshoot the bomb position and catch the bomb on the return to the center of the screen; this allowed for saving a few extra frames right at the end of the run.
Total time saved over the original submission is about 1 minute: The last input of the Old version was on frame 600,018. The new final input is frame 596,303.

Human Comparison

I was able to find one video of a human actually reaching the 999,999 score (albeit with the wide buckets instead of narrow). https://www.youtube.com/watch?v=aeKiml6aL1w The player does miss bombs, and it takes about 30 minutes longer than this submission to achieve the maximum score.

nymx: Claiming for judging.
nymx: Well, this has been one heck of an adventure. At first, I was going to do this TAS...due to creating Kablam! for the C64. Then DrD2k9 showed interest. Well, I'm glad that I got to see this because he really out did himself. To start off, there is no way that I would ever...EVER, do a TAS this long with manual effort. One of the most insane things is having to adjust the paddle for every bomb dropped. That means writing in a number for every frame. DUDE! Well, now we see why BOTers accomplish TASes that we have never seen before. BUT WAIT! GJTASer2018 found an existing, and unpublished TAS. This exposed some things in DrD2k9's BOT. So because of a rule we have, "Must beat all known records", this needed to be corrected. When I analyzed his work, I saw that the bomb for most "Last" catches, was "embed" within the paddle....meaning that it was caught lower and just enough to add up to be slower over this TAS posted in the thread. Additional time was spent and finally corrected the submission.
Well, the wait is over and DrD2k9 has prevailed. I'm impressed with his skill as a BOTer, as 125,113 bombs were caught in record time. I congratulate him on a job well done. His final version has beat the aforementioned TAS by about 24 seconds!
Accepting!

despoa: Processing...
Last Edited by despoa 1 day ago
Page History Latest diff List referrers