Submission #5521: PPLToast & Atroz5's GB Popeye 2 in 10:51.04

(Link to video)
Game Boy
baseline
BizHawk 1.12.0
38885
59.7275005696058
54082
Unknown
PPLToast
(Additionally: Atroz5)
Popeye 2 (USA).gb
Submitted by PPLToast on 5/27/2017 11:46:25 PM
Submission Comments

General

  • Emulator used: BizHawk 1.12.0 (syncs on 12.2)
  • Aims for fastest completion
  • Takes damage to save time

Comments

This is an improvement of around 35+ seconds over the previous run by NitroGenesis, not accounting for VBA's possible inaccurate timing and lag. All the improvements come from tighter optimization of movement and a bit of routing changes.

Author comments

  • PPLToast: Making this TAS has been a real adventure. I got introduced to the game from the Tiny10 marathon and just started grinding it with Atroz to take the time down as far as we could (in reality he just wants the record for himself ). The current record stands at 11:44 minutes and while running the game, the idea of making a TAS came. This is our first ever attempt at making one and I'd say we did a pretty damn good job with it. While this game was unforgiving as hell, I did enjoy the overall experience in the end, so I might make more later on with Atroz or by myself.
  • Atroz5: This game had a lot of sync issues, we didn't get to use the god pixel on the 3-3 boss, we didn't get to use the barrel boost in 3-3, and we didn't get to push Bluto into the wall after he died. This game is ass, but it was fun TASing it with PPLToast.
Our plan with starting the TAS was that I would do the stages in order and Atroz would start from Round 3 and work his way up and then send inputs my way. We were quite naive about syncing issues back then but it didn't turn out too bad. In the end I did all of Round 1 and Round 2 and improved Round 3 and Round 4 along with syncing the inputs up a dozen times. Atroz did R3 and R4 and improved various other parts such as R2. While it may seem like I did most of the work, Atroz was still a huge help in suggesting strats and especially motivation. We took about a 4 month hiatus due to the syncing issues but eventually came back.
This run is done on the US version, but from what I could see, the only difference between them is the amount of text on the copyright screen. As a curiosity I tried playing back the TAS on them. The European version syncs up to the middle of 1-3 but then desyncs on stairs and the Japanese version can't even get past the title screen. Delaying the Start press gets Japanese to sync to the beginning of 1-2 but dies there. Interesting stuff but that's about it...

Game info

Popeye 2 is up there with the laggiest games for the Game Boy. Most problems arise from improving previous stages and having important things later on be desynced. This is complicated further by something we dubbed the "frame cycle". Basically during stages the game runs around 30 FPS, with every second frame being lag and the other one allowing inputs. For whatever reason these lag frames aren't detected by BizHawk though it does detect actual lag frames in stages like 3-1 and 3-3.
Now these frame cycles aren't consistent. Assume we need a jump on frame 4 to do something optimally. Depending on whether every even or uneven frame is lag, this can make the jump be impossible on frames 2 and 4, but possible on 1 and 3. We tried our best to work around this, but we never did figure out how the game determines the frame cycle for a stage. I did note that delaying inputs for the round transition screens did not seem to work, so you'd have to either gain or lose time in a previous stage itself to manipulate it somehow.
The stages affected by the frame cycle vary, but because this game is evil, of course the ones it affects are also the most painful ones to TAS. From the bit of testing done, it seems at least 1-3, 2-1, 3-3 and 4-2 are affected along with the boss of 3-3 and the final fight with Brutus. Aside from desyncing inputs, the most painful thing from the cycles were their effects on the barrel boost in 3-3 and the aforementioned bosses.
With the awful lag explanations out of the way, I'll explain more of the mechanics of the game.
There are a total of 4 rounds to complete, each with 3 stages, a boss and a bonus stage (Round 4's bonus instead being the fight with Brutus). Each stage also has its own bonus room somewhere, which are all avoided. This gives a total of about 15 stages.
Popeye starts off with 3 health and when he has 5 or more, his hand grows up, improving the range of his attacks greatly. This is really useful for breaking brick walls, as you can break two walls at the same time rather than one at a time. Losing the hand is something you never want to happen. With the max health of 7, Popeye can also shoot spinach cans from his hand which can come in handy, though they can cause more lag. As mentioned by Nitro the spinach can and Popeye's punch are the same strength, though this only really affects bosses, as all other things die in a single hit.
Spinach cans on bosses are quite interesting in that the invincibility frames are longer if they get hit by a can. The iframe duration is different depending on the boss, but the window where you can hit a boss with a can again is around 10 frames slower than punching. So rather than trying to snipe bosses from really far away, you're better off rushing right next to them while shooting cans.
Popeye 2 also contains two power ups which many don't know about. The first one is a stopwatch that... stops time. It lasts for 10 seconds, but lag can make it last much longer in real time, up to even 17 seconds. They can be found by breaking certain bricks in stages. The stopwatch is utilized a few times to reduce lag, but one downside (aside from the annoying ticking sound) is that the timer countdown at the end takes longer, though this is pretty minor. The second item is a spinach can, which fully restores Popeye's health to full, which is quite handy. The can item is obtained after every boss in the game, oddly including 4-3 right before the fight with Brutus. The special items are used by holding Up or Down for the wanted item and then pressing Select.

Technigues

  • Damage Boost: A classic, this is done a few times, notably in 2-1 to skip a small section in the end, but also a few more spots for further time save.
  • Barrel Boost: While this is technically still a normal damage boost, I find it special enough to be mentioned alone. In 3-3 there are pirates around that throw extremely laggy barrels at you. It turns out that if you reach the middle of a rope just as you get hit by a barrel, you'll get boosted by a varying amount diagonally. We couldn't figure out what distance you get aside from that it was reliant on the frame cycle and lag. Punching right as you get hit makes the boost instead be vertical, which is really handy for skipping the rope climb, assuming the necessary height is attained.
  • Crouch Cancel: Normally when jumping and crouching, Popeye is stuck in the crouch position until landing. This negates all of his speed which is really bad when moving forward. We found out quite late while making the TAS that letting go of the direction you're heading to for a frame makes Popeye uncrouch. It is also possible to uncrouch by punching in the air, but it is usually slower. Uncrouching in the air also puts Popeye in his standing position. This sadly doesn't let you jump in the air, but is useful for when you land on stairs for example, as the jump input can be done 2 frames sooner than normally. Crouches themselves are also worth a mention, as they can be used to avoid bonking into ceilings in various places.
  • Stair Climbing: Not necessarily a trick in itself, but optimizing vertical climbing is actually quite difficult to do optimally and evolved a few times. There's quite a bit that goes into this, but would probably be better fit for a resource page instead. What I explain above about crouching should give a general idea about what goes on.
  • Moon Walk: If you hold Left, then press Right, you can make Popeye moon walk. This came in handy especially with bosses, because I have to avoid their attacks while still facing towards them to punch.
  • Rope Jump: I guess Nitro might have found this, though I came across it by accident when TASing. Basically right as you are about to grab a rope, you can put a down input to make Popeye exit the rope in a standing position which allows a midair jump to be done. This is usually faster than waiting for Popeye to slowly inch to the middle of the rope by himself.

Stage comments

I'm not sure how I would best compare times to Nitro's TAS, but I decided to go by the in-game timer here which is better than nothing. It would be nice to get a more accurate reading but I really don't know how to go around doing that.

Round 1

1-1

The first stage of the game. The start is nothing special but you'll notice that unlike Nitro, I'm grabbing spinach cans early on to get the big hand. A sick reverse punch is done to grab the third can without slowing down as much. This third can is for the crab boost done at the brown brick wall section. Without it, this would place us back into 4 health, losing the big hand for 1-2 and thus losing time. With the third can grabbed, the boost saves around 1.5 seconds. It's worth to be mentioned that not grabbing the first two cans for big hand like Nitro is slower even without the crab boost in place. Breaking the wall without big hand loses about 2 seconds, due to the range of the hand being smaller.
IGT (New vs Old): 150 - 146 = ~4 seconds saved

1-2

Oh boy 1-2. When we started off the TAS, I redid this stage a million times along with 1-3 because I was never happy with it. I ended up redoing it again even after we initially reached Brutus, just to shave off more time. I decided to give each redo its own version number and I believe this is the 5th one. I'm pretty happy with how this turned out. If you watch this stage side by side to Nitro's TAS, I think you'll see what I mean. Aside from the crazy amounts of optimization, the bat dodge near the end and the door itself are worthy of mention. The former is really annoying to do and actually requires turning in midair which seemingly alters Popeye's hitbox to barely avoid the bat. I've no idea how I managed to do it the first time, but it gave me a real hard time on my final redo.
The exit door at the end here, or really doors in general are annoying, as Popeye can sometimes not enter them from the side, but instead clips inside and can walk right in the middle before it registering. For this particular door, it's possible to hit it slightly more from above but I just couldn't pull it off. Hilariously Atroz's first TAS through this stage as a test actually got the best door entering. Ah well...
IGT (New vs Old): 197 - 191 = ~6 seconds saved

1-3

1-3 is more caves, but horizontal this time. This is also the stage where we learned about stage desyncing. As with 1-2, I redid this stage numerous times and improved our initial time gradually from 153, which back then we thought was near optimized, all the way to 156. Crouching in the air to avoid bonking into ceilings is done a few times here which was actually a quite late thought while TASing. At the end of the stage comes what I dubbed the "Mario Land Stairs" which I wish we had some way to go under, but alas.
IGT (New vs Old): 156 - 152 = ~4 seconds saved

1-3 Boss

If I had to pick one confusing thing about this game, I'd definitely say the boss designs. I've no clue what they have to do with Popeye at all or what kind of crack they were on, but anyway...
The first boss is this penguin... snowman thing? He has 10 HP, but some moon walking later and he's down. No timer is present for bosses, so I can't tell the difference between the old and new TAS.
Aside from that, you may also notice in the old TAS that there's these glitchy lines above bosses and the HUD above is missing the bottom row. I believe this is a bug with VBA. Shout outs to accurate emulation :)

1-4

The first and also the shortest of the bonus stages. A simple, yet smooth crouch maneuver is done to reach the door.
IGT (New vs Old): 48 - 47 = ~0.5 seconds saved

Round 2

2-1

2-1 is where I took a hiatus from TASing as I had burned myself out from my constant redo's of Round 1. In the end I still had to redo Round 1 again but my skills had definitely improved by then. A quite annoying stage to TAS due to how tight the level is. At the end a small damage boost is taken to skip a small tunnel saving a bit of time. This boost is a bit awkward, as it is possible to turn around to have it boost me towards the rope. Popeye's jumping skills really degrade after taking a hit, so a bit of time has to be waited before jumping to the rope, as I am much closer to it than normally.
IGT (New vs Old): 196 - 192 = ~3 seconds saved

2-2

An underwater level, yay...
The controls are pretty ass, the biggest issue being that this stage likes to lag a ton, eating jump inputs for breakfast. There's a quite nasty bonk to a ceiling near the middle, but we just couldn't avoid it. The use of the stopwatch here was something I discovered on accident on my attempts to get a 11:4X real time run. It greatly reduces the lag in the last quarter of the stage, saving around 2-3 seconds. As the stopwatch is used, our clock is frozen and thus can't be used for direct comparison. I timed the difference manually from entering the door and we save 7.5 seconds over the old TAS. Another stage I'd suggest watching side by side (if not the whole TAS).

2-3

This stage takes place on a spooky ghost ship, not sure how we got here from underwater but alright.
Nitro opts take a scenery route for this stage, which I had no clue why until I reached the same spot. This set of brick walls and ceiling are actually really tight to get past and just barely possible with a jump + punch combo. It doesn't seem to save much if any time at all, but I feel VBA is not emulating lag here properly.
IGT (New vs Old): 153 - 153 = ???

2-3 Boss

I have no idea what the hell this abomination is, but it's going down.
As mentioned above, hitting bosses via spinach cans from far away is actually much slower. This boss has 6 HP and from manual timing, the new TAS is about a second faster over the old one, which matches with the 10 frame estimate.
At the end you see me do some "entertainment" by jumping off the ship. I'm far above the death plane here, but had I gone for a frame longer, the game would have killed off Popeye during the fade out without it even being visible. This would have removed big hand, so sadly I couldn't do it.

2-4

Another bonus stage, this one takes place in brick heaven.
Nitro opts for a bizarre route here, costing him a second.

Round 3

3-1

This was a stage Atroz did and I forgot to initially check out but decided to see if there was anything to really improve. I gained about 15 frames with improved knowledge on the initial stair jump and a bit of lag reduction. Thankfully the rest of the TAS wasn't too much of a pain to sync, but sadly it caused the bosses to be on an unfortunate frame cycle, which I explain more about below. According to Atroz, the tight jump in the middle from the brick wall desynced the few times he did the stage, but thankfully it never seemed to occur when we synced inputs.
IGT (New vs Old): 175 - 173 = ~1.5 seconds saved

3-2

This stage is for all the rope fetishists as it's all the stage contains. Aside from evil clouds.
IGT (New vs Old): 128 - 128 = ~0.5 seconds saved

3-3

Arguably the worst stage in the lag department, this stage also contains the infamous barrel boost and worst boss next to Brutus. A stopwatch is used here for the second time not only to greatly reduce lag, but to also get the rope in the middle of the stage to be in a more favorable position. It was with the stopwatch that we also ran into an awkward issue, as we need to hit Up and Select to use the clock, but we're also in the middle of a rope that we have to avoid by crouching, which requires holding Down. This would have used both the stopwatch and spinach can at the same time. Nothing a bit of input trickery couldn't avoid but I found it pretty funny.
And then the barrel boost comes. This thing happened to me completely by accident when syncing inputs back and it's by far the craziest thing we've seen in this game. As I mentioned previously, the distance gained is heavily dependent on the frame cycle and lag and thus far we never managed to get as huge of a boost as my initial one. Attached is also a gif of a later barrel boost by Atroz on a different frame cycle which turned out to be faster than my initial one but could never recreate either. He's quite sad that this "god boost" didn't make the TAS, which I still apologize about. http://i.imgur.com/ANbsoox.gifv
The boost in this TAS is the best one I could get from hours of trying, but it is still about 15 frames slower.
Again, due to the stopwatch, an IGT comparison isn't possible, but from manual timing, the new TAS saved about 6 seconds over the old one.

3-3 Boss

This fire breathing dinosaur thing is up there with the worst things in this game, as along with Brutus, he depends on a frame cycle to be killed quickly. The last hit where I get hit costs me 4 frames at best, but 16 frames on a bad frame cycle which I have here. One noteworthy thing to mention is that there's a "god pixel" when Popeye is exactly at X position 41 where the Dino can't hit him at all. No matter what we tried, we couldn't find a way to get to this pixel quicker than it was to take a hit which is quite unfortunate.
I'd also like to mention that on any synced TAS that we got a good barrel boost at, the Dino was always on the bad slow cycle. I have no clue if it would be possible to "change" it entering the boss, but it would be really nice. This same goes for Brutus, literally any run that had a boost also had both bosses be on a bad cycle and vice versa.

3-4

The final bonus stage is a bit special as it's much longer than the rest and is also the only other stage to be underwater. Nothing much to say, though Atroz did manage to make the 1up appear from the block without actually breaking it, though this is slower and thus not done.

Round 4

4-1

Similar to 1-1, this is another beach stage. Cloud jumps were a huge surprise to me when I first saw Nitro's TAS as I had no clue they were even a thing in this game. They are extremely picky to do in real time so I'm not sure what the programmer was thinking. Aside from that, this stage just has cleaner movement, but sadly at the end, a bit of a backwards turn has to be done to not clip the door which would've cost more time.
IGT (New vs Old): 133 - 132 = ~0.5 seconds saved

4-2

1-2's brother, the second vertical cave hell. I tried my best to optimize this stage the best I could, especially by jumping corners to build more speed on the way down among other things. Along with 1-2, I'm pretty pleased with this stage.
IGT (New vs Old): 170 - 164 = ~5 seconds saved

4-3

The final stage. Plants, ropes, lizards, lava, lag... This stage has it all. A stopwatch is used here too, so a manual timing suggests about 5 seconds of savings from better lag reduction and movement.

4-3 Boss

A... pharaoh? What the?
This boss has 12 HP and my strategy is basically that of the 1-3 Boss and what Nitro does in his TAS along with spinach can jump shots.

4-4

Olive Oyl is rescued and rather than a bonus stage, we get the final fight against Brutus himself. Or is it Bluto...
This is another fight that depends on the frame cycle and costs 12 frames with a bad one. This comes from the very second punch, if the cycle is good, Brutus can be hit without him being able to damage Popeye. If the cycle is bad, there just isn't a way around taking the hit as nasty as it looks. I feel really mad about it, but maybe some day it can be improved...
Not related to the TAS really, but it looks like for this fight, they actually repurpose the 2 Player mode where the other player can play as Brutus. I found that a pretty neat programming trick. This also means Brutus has a max of 7 HP like Popeye can normally have.
A small trick can be done in this fight where if Brutus's killing blow is dealt on the very left side of the screen, the game considers him out of bounds and triggers the fade out 1-2 seconds faster. This is only really faster for real time and we couldn't get it in the TAS without wasting frames, so sadly it had to be left out.
Our first go at beating Brutus ended on a 11:01, but Atroz insisted we improve it to sub 11. He found improvements in 2-2 which caused desyncs again. I then decided to redo 1-2 and 1-3 along with 2-1 and synced the rest up which got us this final time of 10:51. Quite ironic.

Other comments

That's about it for Popeye 2, I spent longer that I expected writing this mess of a wall up. Wish my school essays could be even 10% as long.

Possible improvements

I'd say a sub 10:50 is definitely possible, but would require basically redoing all of the TAS, which I've burned out on. If the science behind frame cycles is figured out, that could theoretically provide a god barrel boost in 3-3 along with good cycles on the bosses. I'd guess this would in total save around 20-30 frames. I guess some stages also can have some time to save as we're only human after all. But yeah there isn't really anything that really strikes to my eye as bad, that we could have easily done something about. Overall quite happy with how everything turned out.
I wouldn't be surprised if there was some super precise TAS tech in this game that we didn't find. Would suck hard if so but oh well.

Thanks

  • Atroz for sticking around with the TAS and speedruns
  • John Carls for submitting the game to Tiny10 and thus me finding out about it
  • BizHawk devs for BizHawk
  • Hetfield90 for his "tasTudorial"
  • NitroGenesis for his old TAS
  • Junahu for his old 12:43 speedrun
  • Copya System for this evil game
I couldn't decide on a submission image, so here's an album of 8 candidates to choose from. https://imgur.com/a/6Ytfk

Masterjun: Judging.
Masterjun: Great improvements in a hard-to-optimize game! The game is also fun to watch, especially the heavily optimized vertical parts. Accepting to Moons as an improvement to the previous run.
fsvgm777: Processing.
Last Edited by adelikat on 10/22/2023 10:19 PM
Page History Latest diff List referrers