Submission #5982: scrimpeh's NES Super Bat Puncher in 09:53.34

Nintendo Entertainment System
baseline
(Submitted: Super Bat Puncher Demo.nes Demo)
BizHawk 2.1.0
35659
60.0988138974405
139698
Unknown
Submitted by scrimpeh on 6/3/2018 3:12 PM
Submission Comments
Super Bat Puncher is a homebrew game for the NES by Morphcat, with music composed by Dave Harris. This TAS aims to complete two loops of the demo, using a bonus item that can only be obtained after the game has been completed once.

Game objectives

  • Emulator used: BizHawk 2.1.0, NEShawk core
  • Completes two loops
  • Genre: Platformer
  • Punches a bat

About the Game

Super Bat Puncher is an excellent NES homebrew game by Julius Riecke. This is the Demo ROM, released all the way back in 2011. It contains two stages, along with a bonus level and a few easter eggs. Since then however, very little has been heard from the game. The developers have since moved to other projects, and there's little indication that the full version of Super Bat Puncher will ever be released. With nothing else to go on, I think that the Demo can be considered the proper release of the game for the purposes of the site.

About the Goal Choice

The demo contains two levels. On defeating the second boss, a credits sequence plays, after which you are booted back to the hub room. A bonus stage is unlocked which you can complete to obtain the Developer's Jetpack. At this point, the game starts back from the beginning, but with the jetpack in your inventory. You can then complete it as normal to get a slightly different credits screen.
I wanted to include the bonus stage and the second runthrough of the game into the run, as they are quite different in terms of gameplay and feature some entertaining tricks and strategies. It significantly increases the overall length of the movie, but since it's a short game overall, I believe showing off as much as possible is a decent choice. In addition, after the second boss, the credits change to a "To be Continued" screen. At this point, no input will be able to resume the game. Compared to all other potential stopping points I've considered, this is the single most clear and unambiguous moment where the game is over. If only the first loop of the game is desired, the movie can be trivially cut down by ending input after frame 18876! The final completion time then is 05:14.08.
I chose to label the submission as "2 loops" because I believe it most accurately reflects the actual contents of the run. 100% might be somewhat more quickly understood by the viewer, but its definition within the game is vague, as for example not all coins are collected. Additionally, "2 loops" makes it clear why there's a credits sequence in the middle of the movie. Nethertheless, I'm open for better suggestions for the label if you have any.

Comments

This is Super Bat Puncher. You take control of Captain Roast of the Bat Excommunication and Eradication Force (or BEEF), who travels to Planet BAT to punch some bats. You get a boxing glove for that which can also be used to boost yourself off of walls, inviting various speed tricks. You also get a little bird companion called Sir Loin who can be controlled by the second player. He's used occasionally in order to manipulate bats or kill out of the way enemies. Further details are outlined in the Tricks below.

Tricks

General Movement Optimization

Captain Roast's base movement speed while moving on the ground is 2.1875 px/frame, and 2.0 px/frame in midair. If you accelerate above that, your speed is reset to the cap on the next frame. By letting go of Right when your speed is above the cap however, you can preserve your momentum and keep it above the speed cap for a few more frames. By pushing Right in the correct rhythm, it is possible to sustain a higher average speed than you would go normally. The top speeds then become 2.25 px/frame on the ground and 2.14375 px/frame in the air. This only works going to the right.

Wallboosting

Using the boxing glove, Roast can push himself off a wall at a top speed of 4 px/frame. It is important to let the speed decay naturally to ride out the boost, as pushing left or right destroys the speed (see above). It is often possible to boost twice from the same wall, which generally saves a few frames over a single boost. Throughout the game, you get powerups which significantly increase the boxing glove's ability.

Fast Vine Climbing

By pushing up and jumping off a vine, your climbing speed is added to your jumping speed, allowing you to go higher. Alternating between Up+A and nothing pressed every frame, vines can be climbed very fast.

Screen Transition Pausing

By pausing on the exact frame Roast enters a door or a screen transition, the fadeout starts while the game is paused. For some reason, this can save between no and 12 frames each time it's done. Roast also spawns a few pixels in the air, which may or may not be helpful.
It is also worth noting that the game has subpixel carryover for basically everything. Because of this, every screen transition needs to be carefully approached to maximize subpixels.

Lag Management

The game can become quite laggy when there's multiple enemies on the screen. Boosting off walls produces sparks, which can significantly increase lag. Most lag can generally be avoided with only minimal impact on speed, with a few exceptions. Scrolling, enemies, the player's actions and the music and sound all have an influence on lag.

Stage by stage comments

Beginning

I start off by jumping to set up the optimal movement speed cycle. Roast also accelerates faster in the air.
I've tried everything possible to make the jump from the Sir Loin cage to the red button, to no avail. Even with absolutely optimal positioning, Roast falls barely short. Because of this, we get to be subjected to a whole bunch of annoying textboxes. I jump into Sir Loin's textbox triggers at top speed to get as far as possible before the dialogue starts.
I also only later realized that you could double boost from walls to save some frames, so I had to hex a whole bunch of this stage back in.

Stage I

I can just barely make the platform cycle with all the tricks that I know... Or knew, as double boosting probably would've made the cycle trivial. I didn't bother hexing this though, as the platform cycle is fixed from when you enter the screen anyway. I use Sir Loin to kill a bat while running to the platform. This wakes up another bat, which sets me up for a damage boost later on. It is needed to clear the the gap up to the next platform.
In the next screen, there's a big sequence break. By using the extra height from a vine jump and a boost, it is possible to clear the ledge to the door early. This saves a few seconds.
Fun fact: It is theoretically possible to skip the Wall Boost by using a damage boost from a bat, but it takes way too long to set up. You can just go on as normal, there's nothing in the stage that really requires the Wall Boost.
Sir Loin makes very short work of the boss.

Stage II

I use a damage boost from one of the spikes to get into the bubble at a higher position. Setting up the timing and positioning while avoiding lag was very tough. You can get wildly different heights in damage boosts, depending on what your Y speed's subpixel component is on the frame you take damage.
The bubble ride itself is awful. Way too slow, and nothing I can do to increase entertainment. Using the boxing glove breaks the bubble.
The final screen is quite involved. To begin with, I use Sir Loin to collect a couple of coins that would otherwise create lag later. I jump into the bubble from a higher ledge to save some time. I tried using a damage boost from the spiky guys here as well, but couldn't actually get it to save time.
What follows next is the most awful platform cycle in the game. I've tried everything possible to make it, including damage boosting up a ledge, but to no avail. The platform spwans a bit above where the three slimes are, so the only thing I really can do is to spawn it as early as possible by jumping on the middle slime. After that's done, the boss is again dispatched efficiently, and the credits begin.

Stage I and Bonus Stage

The Bowling Ball makes optimization a fair bit simpler in the approach to the bonus stage. In the bonus stage, I needed to carefully plan out damage. In the end, going through the spikes at the beginning is the best choice. Some other shortcuts also save time.
After that, there's the only real notable instance of lag. All the bats are simply too much for the game to handle. By keeping to the left while dropping down, I can avoid some of the lag, but there's more unavoidable lag later.
The next screen forces you to wait for a platform for a while. It would theoretically be possible to skip that platform using damage boosts, but the setup would take way too long, and you need the HP later. By spawning in Sir Loin at the right time, it is possible to prevent one of the bunny guys from spawning, which saves lag.
Fun fact: You can use the platform to go out of bounds and get below the level. It is useless for the TAS though.
After that, you come across a spike tunnel in which you're supposed to take damage three times to clear it. The spikes are an instant kill normally, but by using the damage invulnerability from enemies, you can briefly walk in them. With enough speed, I can avoid one of the forced damages and clear the section with only 2 HP. I didn't expect to have enough room to start the roll animation, but I just barely do, which makes me happy.
After this, I pick up the secret item and the game starts anew.

Loop 2 Beginning

The jetpack allows me to avoid all of those annoying Sir Loin sequences. It also enables me to get much closer to more walls allowing for more damage boosts, making optimization a whole lot trickier. The jetpack itself has a lot of inertia to it, which can make controlling it tricky. Other than that, it mostly goes like before.
Vertical speed with the jetpack is quite straightforward: When you push A for a frame, your Y speed increases by 40 subpixels, when you let go, it decreases by 40 subpixels. When Roast's Y speed increases above 4 px/frame however, it is reduced by 1 px/frame. Therefore, the most optimal strategy for rising is to bring Roast's Y speed as high as possible and then pressing A on alternating frames to keep the speed from rolling over.
The jetpack generates a spark sprite every four frames. The spark can be avoided by letting go of A on that specific frame. This is needed a couple of times to avoid lag.

Loop 2 Stage II

The jetpack significantly speeds up all the climbing sections and the slow bubble rising sections. Getting the Bowling Ball is still required though.
The slimes can be used to get a minor vertical boost, which saves a frame total. Care needs to be taken in the final section to avoid lag.
Finally, I enter the boss room for the second time. With the jetpack, Roast can reach all flunkies instantly, making Sir Loin unnecessary for this fight. Another text box, and the game is finally over.

Other comments

Well, here's a project that unexpectedly ballooned in complexity. I wasn't intending to do the second loop originally, so between this and no longer having the free time to TAS I once used to, this run took significantly longer to complete than I anticipated.
I'd like to thank Morphcat for making this incredible game. It really inspired me to get my feet wet with NESDev myself back in the day. I wanted to make a TAS of this game ever since I first saw it, and I'm glad to finally having gotten around to do it. I'd also like to thank RaijinXBlade, who made a testrun of the game way back then, showing me what the game could be like in a TAS setting. Special thanks also go to FerretWarlord for being a bro on IRC.
The run is not perfect. By using double boosting in a few more places, it would be possible to save a few more frames. I had an attempt that saved 4 extra frames in Stage 1, but it would desync later on in the run. I am also not entirely sure if the damage boosts are actually worth it, due the forced health refill after every stage.
The run was mostly done with standard input, but TAStudio was used occasionally for multitracking Sir Loin. It was a new experience for me trying out a completely new tool, and while I couldn't completely use it to do the whole run, it certainly proved its worth to me.
Ultimately, I hope that you enjoy watching the movie as much as I enjoyed making it. I hope to be back with another TAS at some point in the future, but currently I don't really have any other game lined up. If you have any questions about the run, be sure to ask them and I'll be happy to answer.
-scrimpeh

ThunderAxe31: Judging.
ThunderAxe31: We have additional rules for movies made with homebrew games. The game used for this submission in particular, has to pass through these requirements:
  • The game must be of high quality and have good notability.
  • The version of the game must be a finished release version, except in case the author has officially abandoned the development.
There are no doubts that this game represent a good example of NES homebrew, even though it's relatively short, and while the game is a demo version, it must be noted that the author has officially dropped the development (more details in this post).
For what concerns the goal of this run, it meets standard game completion, since the game itself requires the player to beat the game a second time after getting the in-game item Developer's Jetpack, after which the game shows the "real" credits roll and prevents further play, unless the player reboots the console.
The run itself is very optimized and entertaining, and the audience reception was good. Accepting for Moons.
feos: Pub.
feos: Moved "Demo" to game version.
Last Edited by adelikat on 10/25/2023 11:55 PM
Page History Latest diff List referrers