Tool-assisted game movies
When human skills are just not enough

Submission #6731: KiwiCracker's GB The Bouncing Ball in 09:50.73

Console: Game Boy
Game name: The Bouncing Ball
Game version: unknown
Emulator: BizHawk 2.4
Movie length: 09:50.73
FrameCount: 35284
Re-record count: 21033
Author's real name: Christoph Koloska
Author's nickname: KiwiCracker
Submitter: KiwiCracker
Submitted at: 2020-04-24 03:22:19
Text last edited at: 2020-04-26 00:28:28
Text last edited by: KiwiCracker
Download: Download (8163 bytes)
Status: decision: cancelled
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:
The Bouncing Ball is a homebrew Gameboy game made by HuCABBAGE for the 4th annual GBJam (2015).

In this neat little platformer with no music, thus only sound effects, you are in control of a little ball, which is constantly bouncing around.
Your goal is to bounce through all the 50 unique levels by collecting every heart you can find on your way.

(Link to video)

Note: Thanks to brunovalads, I was able to improve the submited movie by 105 frames. I uploaded it in the userfiles. You can find the faster movie here.

About the game:

The Bouncing Ball is a homebrew Gameboy game made by HuCABBAGE for the 4th annual GBJam (2015). In this game you play as a small little ball and your goal is to collect all hearts throughout the 50 different levels featured in the game.

Game objectives:

  • Emulator used: BizHawk 2.4
  • Unofficial game
  • Aims for fastest completion (real time)
  • Genre: Platform

Making of the TAS:

I only recently found out about this game while searching for new Gameboy titles for me to play. I had a lot of fun playing it and eventually decided to make a TAS for it. Although this was the my first time creating a TAS, I got used to it very quickly. Due to finding many new tricks and glitches rather late in the process, I had to redo and reroute a lot of the levels I previously had already finished. After checking every level multiple times, this is what I could come up with.

Game mechanics:

  • Controlling the ball
    • D-pad left: move left
    • D-pad right: move right
  • Platforms
    • Unbreakable blocks
    • Breakable blocks
    • Moving platforms
    • Arrow blocks
      • Up-arrow: boosts your bounce
      • Sideway-arrow: shoots your ball in the arrows direction. You can stop your flight by either pressing a button (any button will do) or by flying into something else.
  • Spikes: If the ball touches them, the level restarts
  • Hearts: If the ball touches a heart, the heart is collected. If all hearts are collected, you proceed to the next level. (After collecting a heart, the balls momentum is being preserved)
  • Pause: You can pause the game by pressing Start


After one levels last heart is collected, the ball flies upwards until it reaches the top of the screen. Only after that you can transition to the next level. So, when going for fastest completion in real time, the strategy is not necessarily to collect all hearts as fast as possible, but to transition the fastest. What this essentially means, is that the ball should have as much upwards momentum as possible, when collecting the last heart.

Tricks and glitches:

  • When it comes to moving platforms, the ball is actually able to bounce off of their bottom part as well, which is a few frames faster than a regular bounce (usually 1-2).
  • Corner bounce: When doing a corner bounce, the ball kind of falls one pixel further before it then suddenly clips up onto the block again. Therefore, the corner bounce is usually 2 frames slower than a regular bounce (two frames, because of the one more frame of free fall and the one frame needed to clip up). Usually the ball then proceeds to bounce off with a high horizontal speed. There are some more things that can happen depending on the platform the corner bounce is used on.
    • Breakable blocks: Instead of destroying the block itself, it turns whatever is underneath the block into a breakable block, which then is destroyed.
    • Arrow blocks:
      • Up-arrow: Can destroy the arrow block (not always the case).
      • Sideway-arrow: Corner bounce doesn’t work on sideway-arrow-blocks (which makes sense, since the ball simply can’t bounce off those)
    • Solid blocks and moving platforms: Nothing special. It’s just slower than a usual bounce (which sometimes actually comes in handy).
  • Clipping through blocks: When the ball bounces towards a block in a way, that it barley misses to get on top of that block (this is a matter of subpixels), the ball would normally just fall down. But when pressing in the opposite direction of where the block is relatively to the ball at just the right frames, the ball clips into the block and teleports right below it. In case there is another block, the ball will clip through it as well etc. After successfully clipping out of the last block, the ball is left with zero vertical speed. This means, until the ball starts falling again, you will have to wait for roughly 7 frames. So clipping is only faster, when clipping through many blocks at once (when clipping through only one block, it’s actually around 10 frames slower). Because the ball can still move horizontally during clipping, it can sometimes clip out of walls midways (hard to control, doesn’t always work), or even move to an adjacent block and continue clipping through it. As with the corner bounce, some special things happen, when clipping through different blocks:
    • Breakable blocks: The block underneath can get destroyed (not always the case)
    • Arrow blocks:
      • Up-Arrow: Destroys the arrow-block
      • Sideway-arrow: Doesn’t work
    • Unbreakable block: Just clips through it
    • Movable platforms: Doesn’t work
  • Clip bounce: When coming from beneath, the ball can kind of clip upwards to instantly bounce off the platform. On different platforms:
    • Breakable blocks: Either the block itself or the block underneath gets destroyed
    • Arrow blocks:
      • Up-Arrow: Can destroy the arrow block (not always the case)
      • Sideway-arrow: Doesn’t work
    • Unbreakable block: Just a simple clip bounce, nothing special happens
    • Movable platforms: Doesn’t work
  • Sometimes you are able to stop the balls vertical speed just like in the corner clip, but without the clip (it looks like the ball kind of slides down the wall) (this doesn’t always work). Obviously this technique is much slower than the corner clipping, but, as with all tricks and glitches, given the right circumstances it can be advantageous.
  • Thanks to brunowalads, we know about another trick. Quote: the top x speed to the right is 8 pixels/frame, but to the left it's 9 pixels/frame, and when you hit a wall your speed value is negated, combining these 2 properties, you negate the left top speed into the right speed by simply hitting a wall to the left and immediately holding right.

Possible improvements?

(I tried these so many times, but it would never work. I'm not even sure if they are possible at all)
  • Level 9: If you find a way to clip out of the wall directly into the heart, you’ll probably save 20-25 frames
  • Level 10: You’d save around 30 frames if you found a way to clip through the wall.
  • Level 17: If it’s possible to clip through the blocks instead of having to slide down, and then still be able to collect the heart in the same go, it would save 10-15 frames.
  • Level 23: If you clip into the box, collect the heart and then find a way to clip out again, there would be no need to destroy all boxes as well as no need to fly all the way to the other side. All in all, a timesave of probably 200-300 frames.
  • Level 45: I wonder if it’s possible to collect the last heart without the need of an extra bounce at the end (it’s certainly very close!). Would save around 35 frames.
  • Level 47: If possible, lag reduction
  • (Level 50: I did the real time strat in this level, because my goal was to reach the end screen as fast as possible. However, if your goal is to make the movie file as short as possible, your last input can end 2 frames earlier if you keep holding right at the end without shortly releasing it.)

Screenshot suggestion:

Frame 22459
Frame 22124 from the improved movie.


Feel free to ask me anything about this movie! I’ll try to answer your question as good as I can.

Similar submissions (by title and categories where applicable):