Submission #6407: Lobsterzelda's A2600 Pitfall! in 18:11.20

(Link to video)
Atari 2600
baseline
BizHawk 2.3.1
65388
59.9227510135505
27243
Unknown
Pitfall!.bin
Submitted by Lobsterzelda on 5/29/2019 5:15:59 AM
Submission Comments

Game Description:

Pitfall Harry just can't seem to stop exploring... In fact, he doesn't seem to be able to stop moving at all! When he's not busy running through jungles and leaping over man-eating scorpions, his hobbies include running back and forth in place and leaping over fires and snakes in order to get a good workout. Pitfall Harry is so impatient, that if he sees an obstacle that would require him to wait too long before moving again, he may decide that he'd rather die than wait. Fortunately, Pitfall Harry has 3 lives, meaning that he can waste 2 of them in order to avoid the agony of having to wait a few seconds for a vine to swing towards him.

Real Game Description:

Now, onto a real description of the game. Pitfall! was a game released for the Atari 2600. In it, you play as an explorer named Pitfall Harry. As you travel through the jungle, your goal is to collect all 32 treasures hidden throughout the world within the time limit the game gives you (which is 20 minutes). You also have only 3 lives while exploring the game, and touching an enemy or falling into a tarpit or water will cost you a life. If you die three times, it's gameover for Pitfall Harry, and the game offers no continues. If you travel underground, going to the next screen is the equivalent of traveling above ground for 3 screens. However, most of the underground passage ways are dead ends, so you have to know which ones to take if you want to be able to use them to save time.
The game is formatted as a circular maze, where heading to the right long enough will lead you back to where you started. Additionally, all treasures are in the same place in each play-through of the game, and Pitfall Harry starts on the same screen at the beginning of each game.

TASing Process:

In Pitfall! everything moves on a global timer. Thus, even if you move fast through 6 rooms, if the next room requires waiting 3 seconds for a vine to jump on, then you'll have been no faster getting to the vine then somebody who was 2 seconds slower than you through those 6 rooms. This makes it very hard to save time, as you are effectively battling the timer cycles throughout the entire run.
When I first submitted a TAS of this game, my goal was to beat the game as fast as possible, ignoring any point losses I may have incurred. That TAS finished with 1:42 left on the in-game timer (which counts down from 20:00 to 0:00 during the 20 minutes of gameplay). After submitting my TAS, it was pointed out to me that FractalFusion had finished the game with 1:46 left on the in-game timer by dying twice throughout his run. This worked because when you die, you re-spawn on the left-side of the screen. Thus, if you pick a good point to die on while moving left on a screen that would normally require a long wait, you can save some time, as you skip waiting and can try to get ahead of the game's global timer. In real-time, his run was a few frames slower than mine, though they finished with practically the same final real-time, despite his run having a faster in-game time (this is partially due to the fact that when you die, the timer is paused for a few seconds before you respawn).
On top of all of this, I was also shown that climbing onto the tops of ladders and dismounting from them immediately was faster than jumping over ladders (since climbing off a ladder pushed you forwards quickly). With all this in mind, I re-did my TAS. However, despite dying in 2 spots, my run was still no faster than 1:42. The game's pesky global timer thwarted my efforts to save time, and caused me to actually finish with a slower time than my original run. After this, I cancelled my submission and decided to build a program to calculate the best two places to die in the game to save time.
I was able to figure out how to simulate most components of the game, but two factors prevented me from being able to complete this program. The first was the logs that roll on the floor, since these can make it so that you have to jump off the end of the vines at a different time than usual, which is hard to calculate using my idea for the program (which was to assign a time value for how much time it would take to get through each room based on the global timer). Additionally, I couldn't figure out what the physics were behind the speed that the vine moves at or which frames the vine boosts you forwards vs backwards. Because of this, I was forced to abandon my ambitious plan, and had to go back to the drawing board for making an optimal Pitfall! TAS.
I decided to make a deathless run that would use the new fast movement strategies, so that it would be easier to see what choices I had for where I could die. After this, I made a spread sheet, and wrote down each room that I spent 470 or more frames in as a candidate for a good spot to die to save time. In my spread sheet, I recorded the frame I entered the room, the adjusted time for how long I was in the room, and whether or not there was a fire or cobra at the beginning of the room. At this point you may be wondering "What does adjusted time mean?" In rooms that have snakes or fire in them, you can die by touching them much quicker than you can die by falling into the water/tar pits (which are farther into the room). I calculated that you could move 64 frames faster by dying in a room with a cobra in it compared to dying in a room with just a tar pit in it. Thus, to reflect this difference, I added 64 frames to the adjusted time for any room that contained a cobra or fire, in order to factor in this added time bonus.
From this point, I could see that there were a total of 20 possible rooms that I could die in to save time. I decided that I would test out what times I could get using the last few death points to start with (since these were towards the end of the game, and would require less effort to TAS). I soon began to realize that Pitfall! was such a cycle based game that each point I died at would eventually "sync" up with other points that I died at if I couldn't gain enough time to get a cycle ahead. Thus, by recognizing sync points (defined as rooms that I needed to use vines to cross that I entered on the same frame and left on the same frame), I was able to make it so that I only had one or two unique combinations of deaths on average that I had to test for each point. This made the task of brute-forcing through the death combinations much more viable, and I got to work with making lots of mini-TASes of the game.
After weeks of effort, I was finally rewarded one fateful day with the fast route through the game that I had been looking for. It came at point 13-3 in my search through the death combinations (with 13 meaning the 13th possible spot to die for the first time in the run, and the 3 meaning 3 possible death spots after spot 13 was where the second death occurred). I believe that the reason why this spot worked to save a cycle when no other spots did can be seen by looking at 16:54 in the encode I provided. After jumping off the vine here, I am just far enough ahead of the rolling logs to be able to make it to the next screen without being hit by them (which would freeze me in place until they passed through me). In no other route through the game did I reach this room with the vine in a position that I could jump off ahead of the log. All the other routes involved waiting for the log to roll past, then falling right behind it (since I couldn't go fast enough to get ahead of it). This timesave enabled me to make it to the next room much faster, which let me make it over the pit without having to wait for the pit to appear and disappear again, which is also a timesave that I never got through any other route. Only by beating the global timer by this small amount was I able to finally gain a decisive advantage in time. As a result, I finished the run with 1:55 left on the in-game clock, and I finished about 7-8 seconds faster in real-time compared to my earlier run or FractalFusion's WIP.
After I found this route, I also realized that I had enough spare time waiting for vines that I could climb down ladders instead of falling down them without losing any time, even though falling down is a half second faster than climbing down. As a result of this, I was able to finish this run with both a 1:55 final in-game time and a perfect score of 114,000 points.
One thing that amazed me about this game is how difficult the cycles are to break. It seems like no matter where you die, you are always too slow to make it over the next vine, and always end up losing any time save you've got within a few rooms. For this reason, I don't think it's possible to beat Pitfall! with a better in-game time than 1:55. Part of the reason why I also think this is that I finished only about 3 frames away from getting a 1:54, meaning that at least 57 more frames would need to be saved to get a faster in-game time. Of course, if somebody finds either a different route to collect the treasures or a different placement of deaths that is faster than this, then all bets are off as to how fast the game can be beaten! As far as RTA human players go, however, I would wager that 1:46 is the best that a human could do with deaths, since getting the next cycle saved would probably require precise movement for so long that it wouldn't be feasible for a human. If nothing else, if a person could save that cycle, they still probably would finish with a 1:54 instead of a 1:55, since finishing with a 1:55 would require finishing within 3 frames of this TAS, meaning it would require essentially 18 minutes of perfect gameplay.
I tried to make this TAS more entertaining to watch by having Pitfall Harry run around in place or move far away from the vines before running back to them whenever a waiting section occurred. FractalFusion's TAS helped give me ideas for things I could do while waiting to be more entertaining. I was initially thinking of going back and forth between 2 screens every other frame 100 times, but then I watched this back and saw that it was extremely disorienting, so I decided to spare you all the seizures you would have gotten from watching that :P
I know this game has been on the Atari 2600 Wishlist for some time now, so I am hoping that this run is now perfected enough that the game can finally be accepted onto the site's vault. I hope you enjoy watching this TAS!

feos: This game is crazy. At first FractalFusion was ahead by 1.5 rooms, then this run used death and broke ahead, and in the comparison video all the 3 movies grab the final item at almost the same time, only this run being significantly faster at that. Because it depends on global timer so heavily, comparing room-wise times doesn't make sense, and even watching them side-by-side doesn't help to assess optimization. Instead, routing plays the key role here, and can only be proven by the final time, which this run is now the best by. Huge props to FractalFusion for the comparison encode, it made it clear how unpredictable the improvement can be. And nice submission notes, Lobsterzelda!
There's nothing in this game to compete with usual Moons movies in viewer excitement, accepting to Vault.
fsvgm777: Processing.
Last Edited by adelikat on 10/31/2023 5:48 PM
Page History Latest diff List referrers