This is an improvement to NES Excitebike; faster times are obtained for all six tracks with a combined savings of 1.38s. Time is saved by taking ramps at higher speeds and by a technique discovered by XKeeper which paradoxically gains time by going slower.

Game objectives

  • Emulator used: FCEUX 2.1.1
  • As fast as possible by in-game timer

The Times

TrackOld TimeNew TimeImprovement
036.5436.190.35
138.2437.840.40
238.8638.670.19
341.9841.960.02
441.0241.000.02
531.7431.340.40
Cumulative in-game savings: 1.38s

Comments

First, some quotes from the forums:
"Excitebike is a fun game to play, but it's quite easy to play it nearly perfectly by regular means." --Bisqwit, 2004
"Pretty bad idea doing a timettack I dont think it can be faster than someone at Twin Galaxies. Very easy game." --Phil, 2004
Well, five years and five submissions later, I think we're getting close...;)
This submission really uses just 3 new techniques to save time:

Taking ramps faster

Not much to say here. Excitebike is simple in that the only way to boost speed above 3.25px/frame is to hit the triangle ramps. Speed can then be maintained indefinitely.
A couple minor discoveries allowed me to lose less speed taking the ramps in the 1st 3 tracks. First, it's better to push up (switching lanes upward) at the last possible frame to take the shortest possible jump. Second, the game seems to detect ramp collisions only every other frame. This can lead to cases where one drops right through the ramp at a certain speed, but by dropping a frame somewhere, one can hit the ramp instead.

Avoid getting too far ahead of the screen

This trick, discovered by XKeeper, makes use of the way the game tracks the bike's advancement on the track and saves time on tracks 0, 1 and 5.
Basically, a value ($64) is tracked, from 0 to 8, indicating how many pixels the bike must advance before showing more of the track. At a speed of 1, it would take 8 frames to get from 8 down to 0; at speed 4, it would only take 2 frames. Each frame, the bike's speed is subtracted and the value is checked. If it's <0, the track advances and the value is increased by 8. If >0, the track doesn't advance, and the value is left as is.
However, when speed is greater than 8, the value can actually wrap below 0 (255, 254, etc). If speed is kept >8 long enough, the value hits <128, and several frames must elapse before advancing again.
Why does this happen? My suspicion is the game logic just checks the highest bit in determining whether to advance. For values 128-255, this bit is 1. At 127, though, the high bit is 0, so the game interprets it as the bike needing to travel 127 pixels before advancing.
One further note is that one can finish a track a handful of frames earlier if the value is 128<value<0 when crossing the finish line. So, there is no "optimal speed" per se; the best time is achieved by exceeding a speed of 8 for a brief time, then keeping speed at/near 8 so as to finish with the value < 0.
I abuse this behavior in various ways to do some fun stuff. When the value is <0, the game will advance on every frame as long as the speed is at least one. So, I actually slow down substantially at the end of tracks 1 and 4 without losing any time.

Optimizing the timer

Finally, there's a global counter which determines when, at the beginning of a track, the bike can start accelerating. However, this timing is not fixed in relation to when time starts! The optimum situation is when the bike starts 2 frames before the timer does; the worst case is the timer starting 1 frame before the bike. I drop a frame in track 2 to manipulate this effect to save a couple frames in track 3. For tracks 3 and 4, the 0.02 savings is entirely due to this behavior. Unfortunately, for track 5, dropping frames in the prior track did not alter the (worst possible) behavior, probably due to a frame rule. So track 5's lap time is 3 frames slower than in the published run due to this effect, despite having a faster overall time.

Further Improvements

I can't say this run is perfect, but I can say I have no ideas for improving it further, despite trying many, many things. Good luck to all who try!

Style

I did the best I could with style in this game. I decided to try for a certain "theme" for each track to try to spice things up...I added subtitles to the run to make the viewer aware, but here they are:
  • Track 0: Taking big, long jumps
  • Track 1: Lots of wheelies!
  • Track 2: Make other bikes crash
  • Track 3: Minimalist (don't hit other bikes, no bounces, few turns)
  • Track 4: Wrap-around the screen whenever possible
  • Track 5: Bouncing ball!
I did other things, like intentionally overheating on track 4 to make it interesting. Not sure if I did JXQ's run justice in this respect, but I tried...enjoy!

Thanks

Thanks to JXQ, Luke G, and FODA for the very enjoyable prior runs. Thanks to XKeeper for a very impressive technical discovery, and to Randil for helping me figure out the game's timer behavior.
mmbossman: Going slower to go faster, huh? Interesting. Accepting as an improvement.

Raiscan: Processing slowly to go faster.


Joined: 12/16/2005
Posts: 69
Good watch :) Cookie to Raiscan for making me chuckle.
Joined: 7/7/2007
Posts: 161
Was this ever seeded? I've been at 8.5% since Friday, and so has every other peer that's connected to me.
Lex
Joined: 6/25/2007
Posts: 732
Location: Vancouver, British Columbia, Canada
Whelkman wrote:
Was this ever seeded? I've been at 8.5% since Friday, and so has every other peer that's connected to me.
I'm in the same boat. Can someone start seeding this? I promise to seed for at least a few days after I download it.
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
If someone can completely download this movie, can I please ask of you to upload the movie to archive.org? Uploading it there will prevent disasters like this happening.
Joined: 7/7/2007
Posts: 161
I don't think this movie was seeded even once beyond the original uploader. I've been trying to download it since a few hours after its publication. I think your options are to track down the movie's creator or encode it a third time.
Joined: 7/2/2007
Posts: 3960
I was going to seed, but the only encode I have is the preview that Alden made before the movie actually got published. Still, any encode is better than no encode, so you can download it here for now. Fortunately the movie's only 14MB, so you should be able to get it without too much delay.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
I have the published movie, and am now seeding. I can also upload it if needed. EDIT: Uploaded, last I checked there are 6 seeds for this.
It's hard to look this good. My TAS projects
Lex
Joined: 6/25/2007
Posts: 732
Location: Vancouver, British Columbia, Canada
Thanks a lot. I'm seeding this movie for a while too.
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
Archived. See, this is why I keep archiving all the new publications, because I know this situation will happen.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
I currently have every current publication, and I try to stay up to date. So if one is ever missing, let me know.
It's hard to look this good. My TAS projects
Joined: 11/4/2007
Posts: 1772
Location: Australia, Victoria
Who needs Archive when you have a HD encode on YouTube! Click here or this related area. I basically chose a random movie that I hadn't encoded in HD yet to encode (Such the bench was completed) and ended up with this one.
NESAtlas
He/Him
Player (57)
Joined: 7/4/2010
Posts: 115
Location: Gales Ferry, CT
NES Atlas + Insane Edition = This Link to video
mklip2001
He/Him
Editor
Joined: 6/23/2009
Posts: 2227
Location: Georgia, USA
Nice job with making an Atlas video of this game! However, the "Insane Edition" thing isn't really that interesting with this one. The problem is that the looping video part doesn't have any of the small triangle ramps, so the biker's not getting "insane" speeds that this run is more known for.
Used to be a frequent submissions commenter. My new computer has had some issues running emulators, so I've been here more sporadically. Still haven't gotten around to actually TASing yet... I was going to improve Kid Dracula for GB. It seems I was beaten to it, though, with a recent awesome run by Hetfield90 and StarvinStruthers. (http://tasvideos.org/2928M.html.) Thanks to goofydylan8 for running Gargoyle's Quest 2 because I mentioned the game! (http://tasvideos.org/2001M.html) Thanks to feos and MESHUGGAH for taking up runs of Duck Tales 2 because of my old signature! Thanks also to Samsara for finishing a Treasure Master run. From the submission comments:
Shoutouts and thanks to mklip2001 for arguably being the nicest and most supportive person on the forums.
NESAtlas
He/Him
Player (57)
Joined: 7/4/2010
Posts: 115
Location: Gales Ferry, CT
mklip2001 wrote:
Nice job with making an Atlas video of this game! However, the "Insane Edition" thing isn't really that interesting with this one. The problem is that the looping video part doesn't have any of the small triangle ramps, so the biker's not getting "insane" speeds that this run is more known for.
Ahh yes, my main goal was to get the actual looping transition to be as subtle as possible (my preferred style of "Insane Edition") and not necessarily to show off the TAS. With that said, I suppose I should have kept this posted under the atlas thread rather than bumping this one.