(Link to video)

Objectives

  • Plays on hardest difficulty
  • Takes damage to save time
  • Uses warps (glitch warp in Act 1)
  • Genre: Platform
  • Bizhawk 2.2 (Gambatte core)

About the run

While rewatching my run recently, I had an idea to improve Act 6 and in my quick test I managed to save 90 frames. So I started working on a new run on Bizhawk pretty much right away.
Because of timing differences between VBA-v23 and Bizhawk-Gambatte, this run ends up being 10 seconds slower than the previous run. VBA skipped most of the screen transition lag that I ran into on Bizhawk, and also, the old 08:28.18 time was timed at 60FPS, whereas this new 8:38.04 time is timed at ~59.7FPS.
This run aimed to improve the remaining in-game time per level and I saved 170 frames thanks to optimizations and new strategies. See the level comments below for details on the improvements.
I created a luascript to keep a look at velocity and positioning, which helped squeeze some frames. I converted the script to VBA and AVI-recorded the whole run with the display on top so I could always compare to any point of the previous run.
I noticed the previous run sometimes forgot that you could move 1 frame before the level fades in which guaranteed a time save in some of the later levels.
Sometimes I copy-pasted from the previous run. To do this, I dragged the .VBM on Bizhawk to create a new .BK2 and then I simply copied from the Input Log.txt. (I don't want to learn how to use TAStudio.)

Note about lag reduction

Due to switching from VBA to Bizhawk, the in-game time became the main priority. But throughout the run I would run into lag frames that would freeze the in-game timer. At the Dragon boss, I could have gone for a strategy that had the fastest in-game time but it would also have produced tons of lag. So I decided to keep lag to a minimum at the cost of a few in-game frames, in order to have a better looking run. In other places of the game it wasn't a problem, because I would only run into single lag frames that already existed in the VBA run and were unavoidable anyway. Add these tags as you see fit:
  • Aims for in-game time instead of real-time
  • Contains speed/entertainment tradeoffs
This is the set of priorities this run follows:
  1. Fastest realtime (in levels only)
  2. Fastest level time aka. in-game time
  3. Fastest realtime (whole run)
(Stars that you collect in the levels and are counted on the score tally screen count towards 1) for the sake of this ruleset.)

Level comments

LevelIngame frames savedComments
Menu 0 Same as previous run. But it was at this point that I quickly realized, the new run would fall behind the previous run a lot due to the difference in timing. So I decided to go for in-game time savings and ignore real-time.
Act 1 0 Re-TASed, but no time save.
Act 2 0 Copy-pasted from previous run.
Act 3 0 Re-TASed, but no time save.
Act 4 7 New strat: bounce off of fish at the middle of the level. The end of this level is the only place where RNG matters; depending on if I let the mosquito live, or kill it on a certain frame, I can manipulate the Snake's pattern. This time I didn't have to add any waiting time.
Snake 0 I couldn't save any time so I copy-pasted from previous run.
Act 5 0 I couldn't save any time so I copy-pasted from previous run.
Act 6 (part 1) 7 Some slight optimization.
Act 6 (part 2) 94 Major improvement in this run, and reason why I started this run. There was no need to wait for the bird to go all the way down and then up.
Act 7 2 Copy-pasted from previous run, and killed the one crow that I missed in previous run due to poor hex-editing (I'm talking about this.) Saved 2 frames mysteriously.. maybe previous run didn't go into the goal at the earliest moment?
Act 8 1 This was one of the most puzzling and annoying levels to TAS. Long story short: The VBA run could move 1 frame for free at the start, without the in-game timer depleting. I tried quite a few things but didn't manage to reproduce this situation in Bizhawk, so I went through this level 1 frame behind. I optimized jumping up the slopes as best as I could, having the exact coordinates and velocity value in front of my eyes this time. But I still ended up equal to the previous run (I guess I did a good job at trial-and-erroring through this level in 2011). I saved back two frames at the end, however, for a net gain of 1 frame. I also used a new trick at the beginning to fall through the ground, for style.
Act 9 6 New route through this level, which I already knew about back then. But this time, through optimization, it turned out slightly faster compared to the standard route.
Dragon 5 Some small optimizations. The first present throw has to make sure the dragon's fire doesn't touch a platform. The second present throw could be done like the subsequent throws, but the 1st fire doesn't despawn fast enough causing a ton of lag. So I had to move slightly closer and throw differently, costing a bit of in-game time but removing the lag.
Act 10 0 Re-TASed, but no time save.
Act 11 0 Re-TASed, but no time save. The vultures always come out at the same time throughout the level, so it's not possible to manipulate them. I take a raspberry because I need it in Act 12 part 2.
Act 12 (part 1) 3 Pretty much unchanged from the previous run, but I somehow squeezed 3 frames at the springboard jump.
Act 12 (part 2) 40 I found more shortcuts with the apples to save some time. Unlike VBA, Bizhawk creates some lag frames here but it doesn't slow down the game. It only prevents input from being polled. The in-game timer acknowledges those frames by skipping ahead two frames.
Gargamel 5 Optimized for faster key grab. Turns out you can grab it 2 frames earlier by jumping after crouching.
= 170 in-game frames saved

Dragon boss glitch

There is a glitch in the Dragon fight, when you pull many presents at once, after about 14 presents you can't pull any more and the Dragon's head is despawned. I ran into this first in 2010 or so, when playing on VBA v19-22. Due to VBA versions prior to VBA-24m causing many emulation glitches at the time, especially in Gameboy games, and because I couldn't reproduce the bug on my real console, I was quick to conclude that this Dragon glitch must be an emulation glitch, too.
Years passed, I made a Smurfs TAS or two. While working on this run on Bizhawk-Gambatte, during testing I stumbled upon the glitch again! I was dumbfounded how this old VBA bug slipped into the much more accurate Gambatte emulator. I even tested the bug on Gambatte at one point (somewhere in 2013~2015) and it didn't happen then.
It soon occurred to me that it could be a bug related to game version, and I was right. It only happens in v1.0 and doesn't on v1.1. VBA didn't do anything wrong. So I cleared things up, added that tidbit to TCRF and moved along.

Please fix an error

The (USA/Europe v1.0) tag must be changed to (Europe v1.0) on the previous movies.
Version 1.0 was only released in Europe. Version 1.1 was released in Europe & USA.

Possible improvements

You could save more in-game time if you ignore lag (during the Dragon fight) and possibly by ignoring post-level bonus effects, so you can move through Stars freely (each Star you collect costs 10 frames on the score tallying screen). But I would not recommend doing either of the two; it would make the run slower real-time wise.

Screenshot

I'd like to request Act 8, the beginning where I fall through the tracks and ride the cart on the rocks, to be the screenshot.

Closing words

This run is perfected in my eyes. I don't expect to come back to this game unless for some joke category. I'll be busy with life stuff, so it might take some time before I can make another run. There is still Kirby & The Amazing Mirror 100% and Mario & Luigi Superstar Saga any% that I absolutely must do, or I won't be happy.
I'm a little annoyed at the fact that VBA skips the LCD lag and every time I want to improve an old run, I have to accept the fact I'm going to be slower than the old run. This aspect kills my motivation to improve Super Mario Land, to name an example. Because putting in hours and hours of work to have a run that's 5 seconds slower is not worth it. Last time I checked, the autoscroller levels even lagged like crazy on Bizhawk. No thanks. However, I'll be the first to start working on it if someone finds a new technqiue...

feos: I compared each level from the first frame of movement to the last frame of movement (and sometimes to the first fade out frame), and improvement is indeed always there, it's just sometimes a bit different from the info in the table above. Quite a few times gameplay ends even sooner.
Accepting as an improvement over [1848] GB The Smurfs by MUGG in 08:28.18.
PS: The music in this game is so great!
fsvgm777: Processing.
PS: I agree.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14877
Location: 127.0.0.1
This topic is for the purpose of discussing #5699: MUGG's GB The Smurfs in 08:38.04
Player (72)
Joined: 8/29/2016
Posts: 14
Location: Toaster :0
Sweet find with that 1.0/1.1 dragon thing. I'm a sucker for all kinds of version differences despite the annoyances they can cause. Just wish there was some easier way to find them :(
I'm a little annoyed at the fact that VBA skips the LCD lag and every time I want to improve an old run, I have to accept the fact I'm going to be slower than the old run. This aspect kills my motivation to improve Super Mario Land, to name an example. Because putting in hours and hours of work to have a run that's 5 seconds slower is not worth it.
I can see how this could be annoying, what with the whole concept of pushing a time down as far as possible, but I'd personally be more satisfied knowing my inputs are more accurate to a real console rather than the awful mess that is VBA. Of course I've no clue how well Game Boy games can be console verified at this time, but I believe those really help show how much better it is to aim for accurate emulation. Of course there's the games like SM64 that don't care about lag and can play inputs back from bad emus like mupen, sigh... Nice improvements to an already optimized TAS still. Waitin' for Superstar Saga next
Editor, Player (120)
Joined: 8/3/2014
Posts: 204
Location: USA
Cute game, and awwwwh that ending is so adorable. Yes vote.
* http://tasvideos.org/ReadySteadyYeti.html - my user page on the TASVideos site * https://www.youtube.com/ReadySteadyYeti - my YouTube channel * My Discord username is "RSY#3799".
Editor, Expert player (2313)
Joined: 5/15/2007
Posts: 3855
Location: Germany
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14877
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [3556] GB The Smurfs by MUGG in 08:38.04
Editor, Expert player (2313)
Joined: 5/15/2007
Posts: 3855
Location: Germany
feos: I compared each level (...) it's just sometimes a bit different from the info in the table above. Quite a few times gameplay ends even sooner.
I'm late in responding to this but I'd just like to clarify (better late than never)... I took the times directly from memory so lag and framerate shenanigans were not taken into account.
Language: Lua

timerTen = memory.read_u8(0xF9CD) timerOne = memory.read_u8(0xF9CE) timerSub = "." .. string.format("%02d",memory.read_u8(0xF93E)) timer = string.format("%x%x",timerTen,timerOne) (...) text(18,109,"time " .. timer,0xFFFFFF00) text(54,109,timerSub,0xFFFFFF00)
The complete lua is linked in the submission text.