(Link to video)

Game Description

Deep in the Arizona Desert, a hungry coyote plods along looking for a meal. Suddenly, he sees his eternal foe in the distance: the Road Runner. Thus, with all of his technology and speed, Wile E. Coyote runs to catch the Road Runner. If the Road Runner wants to escape from Wile E.'s clutches, he'll have to be quick. Landmines, trucks and boulders can all hurt him, but they can also hurt Wile E. as well. If the Road Runner can lure Wile E. into one of his own traps, then he may just yet be able to escape to safety! Moreover, by eating bird seed on the road, the Road Runner can destroy Wile E.'s roller skates, and slow his pace to a crawl. He must be careful if he chooses to do this, however, since Wile E. has also placed steel shot throughout the road so that he can use a strong magnet to catch the road runner. In this chase, intelligence is as important as speed!

Game History

Road Runner was released for the Atari 2600 in 1989, making it one of the last games officially released by Atari for the Atari 2600. The game was a port of an arcade game of the same name, which was also ported to several other consoles like the Commodore 64. Despite being a very late release, the game had a lot of care and effort put into its design, and critics considered the game to be one of the best of the Atari 2600 library. Road Runner has very simple gameplay: you play as the Road Runner, and you spend each level running to the left trying to dodge obstacles and avoid Wile E. Coyote. The road is littered with landmines and speeding trucks, which will kill the road runner on contact. They can also kill Wile E., but he respawns again after a few seconds. Wile. E. also has guns set up at certain portions of the road, roller skates, and a rocket ship which he can use to try to grab the road runner. Collecting the bird seed scattered throughout the levels is critical, as this is the only way to stop Wile E.'s roller skating without getting him hit by a stage hazard. If Wile E. is on roller skates and you cannot stop him before he catches up to you, then he will catch you. The only way you could avoid him besides this would be to run around him in a circle when he gets close, but obviously, this wastes a lot of time, so I don't do that anywhere in this TAS.
I originally submitted a TAS of this game which just beat the first 8 levels of the game. However, I was informed that the game's difficulty increases after the 8th level (the game loops every 8 levels), so I would have to TAS 16 levels of the game to have fully completed the game. Thus, I set out to make this TAS. The first half of this TAS is just the original submission I made for the game. The second half of the TAS is slightly different than the first half, but is almost the same. The only real differences (besides the random spawning of bird seed, trucks and landmines) are the fact that level 1 in the second loop (which is level 9 overall) is replaced by level 5 from the first loop, and that I got a different rock pattern on level 6 of the second loop of the game, which caused me to finish the level with a different time than I finished level 6 in the first loop.
With that out of the way, here is a summary of each of the 16 levels:

Levels:

Level 1: This level is a tutorial level, where if you run left constantly and don't stop, Wile E. will never catch you or put on roller skates. Nevertheless, I aim to collect all the bird seeds I can in this level, and to kill Wile E. several times with the trucks for entertainment reasons. As long as you move up or down only a few frames at a time, you won't slow down. However, if you hold up or down for many frames in a row (such as 30), then the Road Runner will slow down slightly. I make sure to not let this happen anywhere in the TAS.
Level 2: In this level, I do some jumps that get over both a landmine and a pit that follows it, which is frame perfect. I also do some jumps where I land past a landmine at the edge of a cliff and immediately jump again so quickly that it looks like the road runner is doing one long jump. Beyond that, this level is still pretty simple. If you keep running left, Wile E. will never catch you.
Level 3: Now the game starts getting tricky. If Wile E. gets scrolled off screen, he will charge towards you with roller skates. I deal with this by collecting bird seed to stop him, and by moving slowly up and down, which doesn't waste any time (as explained above) but does make Wile E. stay closer to you, which keeps him on screen in his slow no-roller-skates state. In these types of sections of the game, I likely save time compared to an RTA runner, since an RTA runner would generally stop repeatedly to keep Wile E. on screen to prevent him from putting on roller skates (since the bird seed spawning is random, and they wouldn't know when a pile of birdseed is near).
Level 4: This level has a different format than the other 3. Here, you have to dodge the bullets shot by Wile E.'s guns, avoid landmines, and avoid getting grabbed by Wile E. when he comes by in his rocket ship. The main challenge in this level is how narrow the road is. Once you get used to that, the level as a whole isn't very hard.
Level 5: This level is a slightly different version of level 3, but it's basically the same thing.
Level 6: This is where all of the run's RNG comes into play. Where and when the falling boulders spawn is random, and is likely controlled by some sort of global timer, making the rock pattern different depending on what frame you start the level. I jump over each of the rocks as early as possible, and try to slip under any falling boulders that I can to avoid having to wait. At one point, I also let Wile E. grab me while a falling rock is right in front of me. Wile E. slides forward when he catches you, and is still vulnerable to taking damage for 2 or 3 frames before you get carried offscreen by him (After this point, Wile E. is immune to stage hazards). As such, Wile E. gets crushed by the boulder when he slides forward, allowing me to make a hasty escape without losing any time to having to avoid him (since I had to wait for the boulder to fall anyways to continue).
Level 7: This is basically the same as level 5.
Level 8: Level 8 is very similar to level 4.
After this, the game starts looping through earlier levels.
Level 9: Level 9 is a clone of level 5, which from here on out replaces level 1 every time you complete a loop of 8 levels (since level 1 was basically a tutorial level). Unfortunately, level 5 is a little longer than level 1, so I lose 15 frames after this level compared to the time it took for me to finish the first level of the first loop.
Level 10: A clone of level 2.
Level 11: A clone of level 3.
Level 12: A clone of level 4.
Level 13: A clone of level 5.
Level 14: A clone of level 6. Because the frame that I entered this level is different than the frame that I entered level 6, I get a different pattern for the falling rocks. This allows me to finish the level 42 frames faster than I finished level 6.
Level 15: A clone of level 7.
Level 16: This is a clone of level 8. The only thing I do differently in this level compared to level 8 is that I jump at the end of the level so that I can have a faster end time (since you move in a predefined block once you start jumping).
Every level besides Levels 9 and 16 took the same amount of time as the level did when it appeared in the first loop. As such, I finished the second loop 27 frames faster than I finished the first loop.

End

Road Runner is a fun game where it's easy to see what everything in the game represents (unlike many Atari 2600 games). As such, I hope you enjoy watching this TAS!

slamo: As was already discussed in the rejected submission, it was determined that new content and difficulty stops after the second loop. I couldn't get the input from the second loop to sync in the third loop, but this was due to the RNG being different, and as I mentioned in the previous judgement, we do not consider different RNG configurations to be new content.
There was barely any feedback for this version of the movie, but I think the feedback from the rejected submission is still relevant due to the similarities. The gameplay is fairly repetitive, and the primitive graphics and sounds don't help its entertainment value. Accepting to Vault.
feos: Pub.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14776
Location: 127.0.0.1
This topic is for the purpose of discussing #6424: Lobsterzelda's A2600 Road Runner in 13:30.84
Lobsterzelda
He/Him
Skilled player (1218)
Joined: 3/17/2019
Posts: 280
So I have a quick update Re figuring out if Wile E. becomes more aggressive in the third loop or not. Based on experimenting with RAM Search and the hex editor, it seems that the Coyote has a position variable stored in RAM, but doesn't have a speed variable stored in RAM. The game probably calculates how far the Coyote should move from whatever it's coordinates were on the last frame based on what level you are in, what state the coyote is in, and if the coyote is about to take damage before the next frame. Here are the relevant addresses in hexadecimal Address 34: Coyote respawn timer (initialized when the Coyote is killed, and starts counting down to 0. The coyote respawns when it hits 0, and the timer stays at 0 until the next time the coyote is killed). Address 3E = Coyote State (0 is normal state, in the other states, this variable counts down to 0, at which point the coyote goes back to normal. This count down is used for the rocket ship and the roller skates). Address 50: Distance of Road Runner from left edge of the screen Address 51: Distance of Wile E. Coyote from the left edge of the screen From here, what I would need to do to determine if the Coyote is becoming harder on later levels is to make a graph of Coyote speed over the course of the TAS, with the Coyote state of each segment of the graph also marked. Ideally, I would do this using Lua. However, I don't know how to do Lua scripting at the moment, so I was hoping that somebody could help me figure out how to do this in Lua or how to extract the RAM data from BizHawk so that I could write a program in a different programming language to make the graph for me (I would also make other graphs comparing Coyote speed relative to the road runner and coyote recovery time throughout the TAS).
Site Admin, Skilled player (1234)
Joined: 4/17/2010
Posts: 11251
Location: RU
Download check.lua
Language: lua

while true do a34 = memory.readbyte(0x34) a3E = memory.readbyte(0x3E) a50 = memory.readbyte(0x50) a51 = memory.readbyte(0x51) print(string.format("%X %X %X %X", a34, a3E, a50, a51)) end
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Lobsterzelda
He/Him
Skilled player (1218)
Joined: 3/17/2019
Posts: 280
So, I did some testing using a lua script to keep track of the Coyote's position/speed and his respawn timer throughout the run. Then, I exported the results of running a TAS of the first 17 levels of the game with the script running in the background to a text file. After that, I exported the text file to a Microsoft Excel document, and produced graphs of the relevant information from that. I measured the Coyote's speed in pixels per frame, and removed the one frame where the game transitions to the next level for each level (otherwise, the speed would seem to randomly jump to an extremely high value for 1 frame). I then made a graph of this, which is viewable here: https://imgur.com/a/ieNVNpn The Coyote usually moves at either 0 or 1 pixels per frame, except while on the roller skates or his rocket ship, when he can move at 2 pixels per frame. However, this graph doesn't give an average, and also doesn't show where the Coyote is moving at 0 pixels per frame. To rectify this problem, I made a second graph. This one shows the Coyote's average speed in terms of pixels per frame for the next 128 frames from a given point in time. The graph of this can be seen here: https://imgur.com/a/4FaWPAH As you can see, the Coyote's speed doesn't change too much after the first 2 or so levels, and it moves in a cyclical pattern as you repeat each loop. It appears to me that the cycles aren't changing with each repetition through the levels, so it appears that the Coyote's speed doesn't change overall as you progress past the second loop. Finally, the last thing I wanted to check was how long it takes the Coyote to respawn after getting killed. In order to determine this, I made a graph of the values of the Coyote Respawn Timer, which can be viewed here: https://imgur.com/a/rJLnfOw The Timer always seems to follow one of two patterns after the Coyote is killed: It either counts down from 159 to 90, at which point the Coyote respawns and the timer is set back to 0, or else it counts down from 85 to 0, at which point the Coyote respawns. Whenever the Coyote is not killed, the timer generally stays put at 0. Overall, both of these patterns occur throughout the run and throughout the graph, and don't appear to change much in frequency with each successive loop through the game. As such, the Coyote doesn't seem to be respawning faster in later loops. Thus, based on my analysis, I believe that the game's difficulty doesn't change after the second loop of the game. As such, I believe that this TAS (which plays through the first 2 loops of this game) should be considered to have fully beaten the game.
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14776
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. ---- [4002] A2600 Road Runner by Lobsterzelda in 13:30.84