Submission Text Full Submission Page
Temporary notice: This is a C64 game that was completed in ~1:37 but it is currently misidentified because the site does not yet recognize Commodore 64 submissions (...this is sort of not the first time I've caused this problem either, but I digress).
C64anabalt is an official conversion of Canabalt for the Commodore 64 (in cartridge form). Canabalt is the game that defined the endless runner genre and has an awesome soundtrack that was extremely faithfully ported to the C64's SID sound chip. The game controls consist of a single jump button to alter the height of the player's suit-clad character (who runs right for great justice from an unseen terror at an ever increasing pace).
In this TAS, I run right while avoiding any obstacles that might slow the character down until the speed increases to the point that the game hits a killscreen. If I had hit even a single obstacle the speed would have slowed down substantially, but as Aqfaq pointed out the player hit an average running speed of 111 mp/h (180 km/h). The speed increases to a point that high jumps have to be predicted because the landing point isn't even visible on screen. Toward the end I had to specifically manipulate building layouts that were simpler than earlier sections in order to avoid having to slow down. Eventually, the speed increases to the point that strange things start happening such as conspicuously missing chunks of buildings before the game finally hits an impassable killscreen. (Input could be stopped a few frames earlier by not demonstrating various effects on the player after reaching the killscreen such as zipping around the screen and becoming embedded in walls but I think it's better this way; stopping input as soon as you land on the final platform would end input earlier but the player just stops forever and you don't get to see the game over screen.)
Note: The Commodore 64 core of BizHawk is unfinished and is currently not suitable for any purpose, express or implied. Specifically, any attempt to save or load a state will crash or cause a desync, as will stopping the movie, reloading it, and continuing recording. However, if you save a movie with no savestates and then replay it, it will replay perfectly every time. I went to great lengths (including hex editing and even compiling BizHawk from source) to try to find a way to fix the savestate problems to TAS this game correctly, but to no avail. I finally resorted to the same trick ais523 employed when he used the rerecording framework I created in his NetHack "Fastest Death" run - I put the emulator in a virtual machine and used the VM's savestates instead. It worked, although I wouldn't recommend it; I would have greatly preferred figuring out a way to fix the emulator as this solution felt dirty and wasn't particularly efficient. As a consequence the rerecord count of 1 is technically accurate, but the actual attempts on this through my various testing are probably in the low thousands.
But don't let those challenges stop you - go grab the freely-available ROM and give this faithful port of a great game a shot! With any hope, the added exposure of this submission will spur the Commodore 64 core developers for BizHawk into action. :) I hope you enjoy this run.

Noxxa: Added YouTube module.
Noxxa: Claiming for judgment.
Noxxa: Let's start off by saying that this is a nice and well-executed run of a nice game. However, there are a number of issues with it.
First off, the emulator for the system (C64Hawk) is incomplete in multiple ways. Emulation itself is quite incomplete - the game itself is emulated well enough, but the BIOS emulation has a few issues, at least in that it displays just a blue screen, instead of blue text on a darker blue background. It works, but it still obviously would need some work.
As a TASing platform, it also has some big problems, not the least of which being that savestates do not work in the emulator. That is really significant, as savestates are one of the core features of any TAS-capable rerecording emulators. The way dwangoAC made this run using a virtual machine was a creative solution, and it can work as a workaround, but it is still not really a good solution, as was admitted in the submission text. It's a dubious case, but I don't think we are ready yet to approve it as an emulator, considering its current inability to properly create TASes with it.
Next, the run has another issue, which in my opinion is an even bigger factor: its goal choice. The glitch showcased in this run is referred to as a "kill screen" in that it unavoidably turns the game unwinnable. I disagree with this definition however, as unlike most kill screens, there is no preset criteria where it is triggered; this is unlike e.g. Pac-Man's kill screen on the 256th level, Duck Hunt's kill screen on the 100th level, and Donkey Kong's kill screen on whichever level causes its death timer to overflow. In fact, due to the way the glitch is triggered in this game - through running at maximum speed combined with some randomness - it actually is possible to avoid the kill screen entirely through slowing down, which, in my mind, defeats the point of a kill screen. Instead, I'd opt to call this a "crash", as it more unpredictably puts an end to the game. However, "fastest crash" - while it has been done for multiple April Fools' or joke submissions - is not an acceptable category, as it does not constitute finishing the game. It only really shows off how the buildings can glitch out and impede further progress.
I'm rejecting this run for the above reasons.
As to what would make an acceptable category for an endless game like this - I'd be more inclined to think of a "maximum score" run to be the best way to run it, in the same vein as other endless games like Tetris. While the game's distance counter technically does not stop, it does have a maximum distance accounted for by the game, at 99999m. It would take much longer than this short run, so one would have to see if entertainment can be kept up over the course of the run. If it does, it would be great.


Post subject: Re: Kill screen ending choice
Skilled player (1743)
Joined: 9/17/2009
Posts: 4986
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
So you mean you could slow down every now and then to make it go forever? I wonder if there's a limit. Although even if there were, not sure how publishable would that be... Also you're saying even if you made the jump, you would just end up freezing in place? lol?
Joined: 9/1/2014
Posts: 58
This was fun to watch, my eyes began aching a bit trying to keep up with stuff near the end so I definitely wouldn't have been able to play for that long. Funny to see a killscreen for going too fast on a game designed for going fast.
Enjoys speedruns but hasn't actually tried making any yet.
Post subject: Re: Kill screen ending choice
Moderator, Senior Ambassador, Experienced player (907)
Joined: 9/14/2008
Posts: 1014
jlun2 wrote:
So you mean you could slow down every now and then to make it go forever? I wonder if there's a limit.[/size]
The whole point of an endless runner is that there is no limit, but perhaps they made a mistake in the way the number of meters traveled is recorded so it eventually loops or does something else unexpected. I don't think I want to try to find out. :) Yes, it would be possible to play the game for a longer duration without it hitting this kill screen by running into obstacles, but then the only logical outcome would be to play forever, which is possible with BizHawk but isn't something I'm going to try myself.
jlun2 wrote:
Also you're saying even if you made the jump, you would just end up freezing in place? How is that triggered? It it because of character speed?
To phrase differently, assuming you never hit any obstacles and thus your speed continues to increase, the kill screen happens at the exact same time (although you can slightly alter its appearance by changing when you jump). The kill screen you see in my run is literally a box - there is a ceiling above, solid floor below, and a solid wall in front. If you hit a wall while standing on the floor the game glitches out and you see the zipping effect demonstrated at the end. There is literally no way to get past that screen that I was able to find, but keep in mind that my ability to restore states and try different outcomes was compromised by the environment I was TASing in so it's always possible some other creative input can allow the game to go further.
I was laid off in May 2023 and became too ill to work this year and could use support via Patreon or onetime donations as work on TASBot Re: and TASBot HD is stalled. I'm dwangoAC, TASVideos Senior Ambassador and BDFL of the TASBot community; when healthy, I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
Joined: 3/9/2009
Posts: 530
Doesn't this fall under the same category as things like rhythm games? There's no strategy, next to no RNG manipulation is needed, and aside from the apparent problems with emulation (which don't seem like it'd work in the run's favor), it's pretty damn close to trivial to do with the most basic TASing techniques. It shows a glitch and... is that it?
Moderator, Senior Ambassador, Experienced player (907)
Joined: 9/14/2008
Posts: 1014
Tangent wrote:
Doesn't this fall under the same category as things like rhythm games? There's no strategy, next to no RNG manipulation is needed, and aside from the apparent problems with emulation (which don't seem like it'd work in the run's favor), it's pretty damn close to trivial to do with the most basic TASing techniques. It shows a glitch and... is that it?
I'll certainly agree that this is not the most complicated game in the wold (there's only one button! :) but I definitely wouldn't put this in the same category as a rhythm game. The landscape is dynamic - every move you make changes what happens, which is completely different than the rote memorization of a rhythm game. There's also a surprising amount of strategy considering how plain this game looks - as the speed increases you have to decide how you want to time your jumps to avoid causing your next jump to fail, but again as you pointed out this is trivial with savestates (regardless of how they are implemented). For me, what distinguishes this run as worthwhile is that it's something that is impossible to do in realtime. But, I'm biased. :)
I was laid off in May 2023 and became too ill to work this year and could use support via Patreon or onetime donations as work on TASBot Re: and TASBot HD is stalled. I'm dwangoAC, TASVideos Senior Ambassador and BDFL of the TASBot community; when healthy, I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
Skilled player (1459)
Joined: 11/26/2011
Posts: 656
Location: RU
It was entertaining! +1 Yes vote. Only a bit sad that Kill Screen happening so fast. Imho "Kill Screen at 9999m" can be even more entertaining than "Fastest Kill Screen".
I show you how deep the rabbit hole goes. Current projects: NES: Tetris "fastest 999999" (improvement, with r57shell) Genesis: Adventures of Batman & Robin (with Truncated); Pocahontas; Comix Zone (improvement); Mickey Mania (improvement); RoboCop versus The Terminator (improvement); Gargoyles (with feos)
Player (146)
Joined: 7/16/2009
Posts: 686
It's fun in a gimmicky way ("Ooh hey, a modern flash game ported to the C64, which isn't supposed to be TASable but it's done anyway."), but I don't see anything that makes it worth publishing. First of all, the C64 core isn't released for a reason. This could easily desync on a correct version. This also implies that the kill screen may just be an emulator bug, rather than in the game itself. In my opinion, this alone is enough to disqualify the run from publishing. Second of all, causing the game to crash where this could be prevented (by slowing down) means it's just a crash, not a kill screen. As such, the game isn't completed in any meaningful way, making the game, at the very least, ineligible for the vault. Third, although the game itself is neat, the run itself isn't really that entertaining. It's trivial to make with TASing tools, doesn't display anything inhuman and hardly manages to do anything unusual (sure, it goes fast, but not in a way that regular gameplay doesn't). Although highly subjective, this means it can't go to moons either. Don't get me wrong; I like what you did here. And if it manages to draw more attention (and with that, work) to the C64 core, then I'd consider it a success. I just don't feel this belongs on the site as a published movie.
Joined: 4/3/2005
Posts: 575
Location: Spain
This is not a crash, it's a kill screen that can only be reached by moving at superhuman speeds, faster than the game can generate new buildings. Kill screens are accepted as finishing a game in otherwise infinite games such as early arcades. Not only this game feels like Matrix, it also breaks Matrix in the same way it does in one of the Animatrix short movies, by breaking a world record speed that wasn't believed to be achievable. Also, while you say it's a trivial TAS to do, it still requires planning and backtrack because jumping at the wrong point or length may make the next jump impossible; plus, the faster you move, the less control you have on your jump.
No.
fsvgm777
She/Her
Senior Publisher, Player (226)
Joined: 5/28/2009
Posts: 1217
Location: Luxembourg
For what it's worth, the "kill screen" occurs in VICE 2.4 (both regular and x64sc) as well (tested with them running at 20% speed and save stating occasionally). So it seems more like it's a bug in the game rather than an emulator bug.
Steam Community page - Bluesky profile Oh, I'm just a concerned observer.
Joined: 3/9/2009
Posts: 530
I feel like I should add that there are hundreds, maybe thousands of endless runner games. What makes this one special? That top speed is uncapped? That it has a glitch?
Joined: 4/3/2005
Posts: 575
Location: Spain
If you don't know what makes this game special, learn more about canabalt.
No.
Joined: 3/9/2009
Posts: 530
DrJones wrote:
If you don't know what makes this game special, learn more about canabalt.
So by this, I assume you'd be defending a Flappy Bird TAS too.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4045
A Flappy Bird TAS isn't interesting because its difficulty is static. In Canabalt, the uncapped max speed means its difficulty rises until it is completely impossible non-TAS without getting stupidly lucky. (And then this happens, so we have an actual 'end', too!) That's the difference.
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Joined: 3/9/2009
Posts: 530
Patashu wrote:
A Flappy Bird TAS isn't interesting because its difficulty is static. In Canabalt, the uncapped max speed means its difficulty rises until it is completely impossible non-TAS without getting stupidly lucky. (And then this happens, so we have an actual 'end', too!) That's the difference.
So the answer is indeed: "The top speed is uncapped" and because of that "It has a glitch."
Joined: 4/3/2005
Posts: 575
Location: Spain
1. Canabalt is a notable game. Among other things, because depending on interpretation it either was the inventor of the genre, or the game that popularized it. 2. Unlike games like "Flappy bird", there are clear differences between what's shown on this TAS, and the experience you get with a normal playthrough or speedrun of this game. 3. The C64 port features a "killer screen" reached by running too fast that you get out of bounds; "killer screens" count as an acceptable end for otherwise infinite games. Note that the killer screen in Pacman is created by integer overflow, which is likely what is happening on this case.
No.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4045
Here's another way to think about it: If Canabalt is an irrelevant, unnotable game, why does it have a C64 fan made port?
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Joined: 3/9/2009
Posts: 530
Patashu wrote:
Here's another way to think about it: If Canabalt is an irrelevant, unnotable game, why does it have a C64 fan made port?
I never argued that it wasn't mentionable. I'm pretty sure I acknowledged the opposite by noting it inspired a billion clones. I argued that it's a moot point because there are plenty of other notable one button endless runner games, such as Flappy Bird, that I'm sure nobody wants to see. Which is why I asked why this run? "It has a glitch." The April 1st submissions are rife with "fastest to a glitch" rejected submissions of far more complex-to-TAS games than this.
Joined: 1/8/2014
Posts: 55
Aqfaq wrote:
You ran 4481 metres in 90 seconds.
Assuming constant acceleration and a starting speed of 3m/s, this results in a final speed of 96.48m/s, or 347.33 km/h (215.82 mph). That's 9.241 times the fastest human running speed ever recorded.
LOAD TO SUNRISE
Joined: 9/7/2014
Posts: 3
Hi there, My name is Paul Koller, and I wrote C64anabalt. Really interesting what you did there! I'd like to share some insights on what I think is happening... C64anabalt is a conversion of the Flash version of Canabalt by Adam Saltsman. It uses a similar building generation algorithm as the original and the same acceleration profile. I.e. if you are not being slowed down by the obstacles, the speed accelerates till you reach 16 pixels/frame, which is about 800 pixels/second on a PAL system. I.e. there IS a speed-cap! The game dynamically determines the height and width of the next building based on your current speed. I.e. the faster you go, the wider the buildings will get (to make it a bit more fair). However, there is always a random factor involved. The original Flash version determines the next building's height and width at the moment it scrolls on the screen. However, because of the limited CPU power of the C64 (remember this is only a 1MHz machine!) this was not possible, since the building also needs to be built up. So what I did is that the next building is actually already being constructed in memory when the previous building is shown. Now we get to the point where I think the glitching comes from... When a new building should scroll onto the screen, the code assumes that the construction of it in memory has already been finished. However, for very high speeds, and a building width which is at the smaller side of the (random) spectrum, it can occur that it already wants to scroll on the new building when it's not finished yet. This probably leads to the weird glitching behavior... Another interesting item is that I think I coded the distance meter for 5 digits only. I.e. not sure what happens after 99999m... But I can imagine that there is no volunteer to try to find out :) Btw, I also coded C64 ports of SuperCrateBox (SuperBreadBox) and SuperHexagon (MicroHexagon) which have a similar endless gameloop... Regards, Paul Koller twitter.com/paulko64
mklip2001
He/Him
Editor
Joined: 6/23/2009
Posts: 2227
Location: Georgia, USA
Wow, this is probably the first time we've had the creator of a game comment on the very behavior of that game! (At least, this is the first time it's been done on the forums... I think Pixel had some comments about the Cave Story TAS on YouTube, and Sivak Drac had comments to Randil about his Battle Kid TAS.) It's interesting to see that the bug isn't just an integer overflow error. Does this mean that, if randomness is manipulated differently, it would be possible to reach this "kill screen" even sooner?
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.
Moderator, Senior Ambassador, Experienced player (907)
Joined: 9/14/2008
Posts: 1014
paulko64 wrote:
My name is Paul Koller, and I wrote C64anabalt.
Hi Paul, and welcome to TASVideos! Thank you for your extremely well-done work.
paulko64 wrote:
C64anabalt is a conversion of the Flash version of Canabalt by Adam Saltsman. It uses a similar building generation algorithm as the original and the same acceleration profile. I.e. if you are not being slowed down by the obstacles, the speed accelerates till you reach 16 pixels/frame, which is about 800 pixels/second on a PAL system. I.e. there IS a speed-cap!
I've tried using BizHawk's memory search tools to find a value in memory that increases as the game gets faster and decreases after hitting an obstacle. I haven't had much luck yet as the value doesn't appear to be changing linearly that I can find but it's a rather large address space to search so it's very likely I missed something. If you happen to know where the speed value is located in memory, please let me know, otherwise we'll just reverse-engineer it (that's what we do here. :)
paulko64 wrote:
However, for very high speeds, and a building width which is at the smaller side of the (random) spectrum, it can occur that it already wants to scroll on the new building when it's not finished yet. This probably leads to the weird glitching behavior...
That makes a lot of sense - in the TAS there are a couple of small buildings prior to the first glitched building.
paulko64 wrote:
Another interesting item is that I think I coded the distance meter for 5 digits only. I.e. not sure what happens after 99999m... But I can imagine that there is no volunteer to try to find out :) Btw, I also coded C64 ports of SuperCrateBox (SuperBreadBox) and SuperHexagon (MicroHexagon) which have a similar endless gameloop...
Well, I definitely wouldn't try it just yet until we can get a Commodore 64 emulator developer to help finish off the core in BizHawk so rerecording works properly but I'm sure someone will eventually try this. :) As a test, if you happen to know the memory address that the distance is recorded in let us know and we'll modify that memory value and see what happens. Paul, thanks again for stopping in - it's rare that a game developer stops by and I'm thrilled that you found this interesting. I still have my original Commodore 64 (although I need to sort out why it throws memory errors when I turn it on) and I'm tempted to buy the C64anabalt cartridge so I can hook up [http://tasvideos.org/ConsoleVerificationGuide.html|TASBot] and replay this TAS on real hardware. If it works, I'll be sure to have @MrTASBot let you know! :)
I was laid off in May 2023 and became too ill to work this year and could use support via Patreon or onetime donations as work on TASBot Re: and TASBot HD is stalled. I'm dwangoAC, TASVideos Senior Ambassador and BDFL of the TASBot community; when healthy, I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.
Noxxa
They/Them
Moderator, Expert player (4128)
Joined: 8/14/2009
Posts: 4090
Location: The Netherlands
paulko64 wrote:
Another interesting item is that I think I coded the distance meter for 5 digits only. I.e. not sure what happens after 99999m... But I can imagine that there is no volunteer to try to find out :)
That's what the game over screen looks like when passing 99999m (once). The score on the top-right part of the screen while running appears with an m in the front, like e.g. "m00017m", though I didn't manage to screenshot that. That said, I suppose we can consider 99999m the maximum score as intended by the game.
http://www.youtube.com/Noxxa <dwangoAC> This is a TAS (...). Not suitable for all audiences. May cause undesirable side-effects. May contain emulator abuse. Emulator may be abusive. This product contains glitches known to the state of California to cause egg defects. <Masterjun> I'm just a guy arranging bits in a sequence which could potentially amuse other people looking at these bits <adelikat> In Oregon Trail, I sacrificed my own family to save time. In Star trek, I killed helpless comrades in escape pods to save time. Here, I kill my allies to save time. I think I need help.
TASVideosGrue
They/Them
Joined: 10/1/2008
Posts: 2792
Location: The dark corners of the TASVideos server
om, nom, nom... om, nom, nom... nom nom
ars4326
He/Him
Experienced player (778)
Joined: 12/8/2012
Posts: 706
Location: Missouri, USA
Aw man, this one got grued? What happened?
"But as it is written, Eye hath not seen, nor ear heard, neither have entered into the heart of man, the things which God hath prepared for them that love him." - 1 Corinthians 2:9
Moderator, Senior Ambassador, Experienced player (907)
Joined: 9/14/2008
Posts: 1014
ars4326 wrote:
Aw man, this one got grued? What happened?
See the original submission text with Mothrayas's comments at the bottom. For the record, I support his decision to reject this based on emulation support but I object to the suggestion that the kill screen is merely a crash - when keeping the objective of not hitting obstacles, the kill screen is absolutely fatal 100% of the time in my testing. The only way to avoid death is to slow down, but I have no interest in a 99,999 score run (even after the emulator support is improved). If someone is crazy enough to attempt it, be my guest! :)
I was laid off in May 2023 and became too ill to work this year and could use support via Patreon or onetime donations as work on TASBot Re: and TASBot HD is stalled. I'm dwangoAC, TASVideos Senior Ambassador and BDFL of the TASBot community; when healthy, I post TAS content on YouTube.com/dwangoAC based on livestreams from Twitch.tv/dwangoAC.