Tiny Toon Adventures is an awesome NES platformer, with varying levels that are short and can be challenging. As shown in the game intro, Montana Max has the power to talk through T.V's and, he notifies you that he stole Babs Bunny, whom you must rescue. This is my second completed TAS of this game, exactly 10 years later (2010->2020). This is a 120 frame (2 seconds) improvement over the previous TAS by myself. Time saved comes from increased optimization and understanding of game mechanics, and a new strategy to have the final input of the movie end earlier by getting stuck in the roof for a couple seconds. In general, this run has more lag on NEShawk than FCEUX old ppu, however in certain spots I still managed to save some lag.
- Emulator used: Bizhawk 2.5.2
- Aims for shortest completion time, with score as a secondary goal
- Abuses L+R on directional pad
I started this run after noticing an optimization in 1-3 where I was able to jump higher without dying from the screen not scrolling fast enough upwards. I was then curious if sub 11 was possible, and it really came down to the wire towards the end (entering the final boss I was on 11:00.04 pace until I found improvements in how to end input earlier). Most of the levels in this TAS were entirely redone due to desyncs/improvements, but a few were directly pasted due to the linearness of some levels.
Stage by Stage Comments
1-1 & 1-2
Saved 1 frame at game boot due to emulator difference. Direct copy paste otherwise, couldn't find any improvements in acceleration or positioning at the door at the end of these levels. Tried going slower because of weird frame rules on the 1-2 bonus level door to make it spawn faster, didn't work.
The first improvement in this TAS is at the start of this level, where I'm able to clear the first section much quicker due to jump optimizations. I saved 18 frames in the first room, despite losing 1 frame to lag. The rest of this level and the boss fight were tied with my previous TAS.
I redid this stage but still tied with previous TAS.
Saved 21 frames here overall due to general optimization, clipping corners to lose speed faster being a highlight. I didn't do that at the end because that enemy on the block is in the way. I lost 1 frame here due to lag. Sacrificing 2 frames at the end of the water level allowed me to get the fastest door spawn I could in the bonus room due to weird frame rules.
The first outside section of this level is tied with my previous TAS. The inside section was super tough to lag reduce compared to FCEUX old ppu, as I unfortunately lost 5 frames to lag here, gaining 1 through optimization for a net loss of 4 frames compared to the previous TAS. I spent a very long time trying to lag reduce this section and could not come up with any better result, thought I suspect with some sort of brute forcing script you could find better outcomes perhaps. The boss fight remains the same as the previous TAS as I couldn't improve it.
Pasted from previous TAS as couldn't find any improvements to this level.
Saved 2 frames in the first section here from optimizing the movement as well as the positioning at the end door fadeout. Unfortunately due to weird frame rules in these bonus stages, I lost 3 frames on the door spawning and couldn't find a way to make this not happen. Thus, I lose 1 frame overall in this stage.
In the first room, I gain 6 frames from better optimization, but I lose 1 frame to lag. In the second room, I gain 12 frames due to optimization and a different route through the end of the room. This route also allows me to save 1 lag frame in this room. In the third room due to better optimization I was able to save 5 frames of lag and 8 frames overall. I was then able to save 13 frames on the boss fight due to hitting him earlier in the air and manipulating him to spawn earlier. Overall in 3-3, I saved 37 frames, including 5 frames of lag less.
This stage was pasted from the previous TAS as improving the position at the door did not yield any frames.
The first part of this level was the same as 4-1, but in the bonus section I saved 6 frames due to the door spawning frame rules.
This level was very tough to optimize. At certain parts you are limited by the camera scrolling vertically because you will die if you go too high off the screen. If this wasn't the case I could have saved 2 more frames here. Despite this, overall on this stage I saved 8 frames, losing 4 frames to lag in the middle. This timesave was from optimization as well as skipping bouncing off an enemy and taking a slightly different path. The boss fight was tied with my previous TAS, just redone with different movements for fun.
World 5 (Wacky Land)
The first and second room in this world were tied with my previous TAS, but I got 1 extra lag frame on the loading transition to the second room. On the third room I was able to optimize the first big jump better, and maintain more speed at the right to left conversion at the end to save 7 frames in this room. Overall, on this level I saved 6 frames total, losing 1 to lag.
The first room here was pasted from my previous TAS, and I couldn't manage to save any frames on the doorway. The second room actually gains 1 frame, but ends up losing it in the third room due to X subpixel carry over making me need to jump 1 frame later. This is unfortunately unavoidable, however in the third room I still saved 14 frames overall due to better management of Y speed. Essentially in this room the goal is to get the moneybag rockets shooting out of the wall, specifically the ones that are in your way, to spawn as fast as possible by getting close enough vertically to them. The fourth room is tied to my previous TAS due to the simplicity of the room. In the fifth room I was able to save 1 frame due to navigating by using different platforms, and specifically standing on the moving bars longer because for some reason it causes the camera to scroll up faster. This is faster because you are limited by the camera in this room, similar to 4-3. In the final boss, the first 2 hits are tied with my current TAS. However, for the third hit, things get real interesting. To start with, everything that happens in this fight is RNG. The window max appears in each cycle, if the coins start going up left or up right, the frame the boxing gloves spawn, the side the boxing gloves spawn on, the length the boxing gloves extend. I additionally found that in certain situations, you will get stuck in the roof, and then after a second or two, you will fall back down and return onto the top of the screen. With all of this in mind, I was able to manipulate everything so I could do a super jump off a boxing glove that is as high as possible after hitting the boss for the 2nd time, and the remaining frames of inputs after this are to manipulate max to spawn on the left side, steer myself to the area where I will get stuck in the roof, and be able to end input on the first frame where I can press nothing and come down and land on Max's head to complete the game. I saved 20 frames using this method over the final boss, and overall saved 35 frames in this world.
System: Nintendo Entertainment System
|RAM||96||Byte||Unsigned||Little||X Subpixel Position|
|RAM||104||Byte||Unsigned||Little||Y Subpixel Position|
|RAM||105||Byte||Unsigned||Little||Y Pixel Position|
|RAM||193||Byte||Unsigned||Little||Final Boss Vuln Flag|
|RAM||1114||Byte||Unsigned||Little||Boss Spawn Flag|
|RAM||1168||Byte||Unsigned||Little||Enemy #10 X Position|
|RAM||1169||Byte||Unsigned||Little||Enemy #9 X Position|
|RAM||1170||Byte||Unsigned||Little||Enemy #8 X Position|
|RAM||1171||Byte||Unsigned||Little||Enemy #7 X Position|
|RAM||1172||Byte||Unsigned||Little||Enemy #6 X Position|
|RAM||1173||Byte||Unsigned||Little||Enemy #5 X Position|
|RAM||1174||Byte||Unsigned||Little||Enemy #4 X Position|
|RAM||1175||Byte||Unsigned||Little||Enemy #3 X Position|
|RAM||1176||Byte||Unsigned||Little||Enemy #2 X Position|
|RAM||1177||Byte||Unsigned||Little||Enemy #1 X Position|
|RAM||1178||Byte||Unsigned||Little||Boss X Position|
|RAM||1200||Byte||Unsigned||Little||Enemy #10 Y Position|
|RAM||1201||Byte||Unsigned||Little||Enemy #9 Y Position|
|RAM||1202||Byte||Unsigned||Little||Enemy #8 Y Position|
|RAM||1203||Byte||Unsigned||Little||Enemy #7 Y Position|
|RAM||1204||Byte||Unsigned||Little||Enemy #6 Y Position|
|RAM||1205||Byte||Unsigned||Little||Enemy #5 Y Position|
|RAM||1206||Byte||Unsigned||Little||Enemy #4 Y Position|
|RAM||1207||Byte||Unsigned||Little||Enemy #3 Y Position|
|RAM||1208||Byte||Unsigned||Little||Enemy #2 Y Position|
|RAM||1209||Byte||Unsigned||Little||Enemy #1 Y Position|
|RAM||1210||Byte||Unsigned||Little||Boss Y Position|
|RAM||1360||Byte||Unsigned||Little||Final Boss Health|
|RAM||1647||Byte||Unsigned||Little||In Air Timer|
The only possible improvements would be lag reduction (I spent thousands and thousands of rerecords unable to beat what I was getting but could be possible), finding another method to get stuck in the ceiling at the end earlier to be able to end input even earlier (tried a bunch and this was the best I could get), further understanding of the frame rules for the door spawn on the 1-2, 2-2, etc. bonus levels (I couldn't find anything faster based on a ton of testing), or a way to fully clip into any walls to walk through them (this is possible in 1-3 but is slower and only works because of the stairs causing the wall its touching to not have collision, I've come 1 pixel off getting a legit clip on a normal wall that pushes me horizontally through it, but I could not get that last pixel...this would save a ton of time, for example in 2-3, you could skip the entire room before the pirate boss, this would save like 12 seconds or something if it worked).
I would like to thank previous TASers of this game, Randil and Frenom, for their groundwork that I built upon.
8371, 18790, 21060, 28946
Samsara: Heck yeah, I love Small Animation Sagas. Judging.
Samsara: This is the perfect return run. It's fast, entertaining, very clean looking, and definitely optimized. Playarounds were nice and varied, there was never a dull moment, and it was clear that extra attention was paid to optimizing paths through each level using the various forms of speedy movement. Wonderful work, welcome back, have an acceptance that obsoletes the published run!