TASVideos

Tool-assisted game movies
When human skills are just not enough

Submission #6995: suqd's A2600 Heart Like a Wheel in 01:50.04

Console: Atari 2600
Game name: Heart Like a Wheel
Game version: unknown
ROM filename: Heart Like a Wheel.a26
Branch:
Emulator: Bizhawk 2.5.2
Movie length: 01:50.04
FrameCount: 6594
Re-record count: 4994
Author's real name:
Author's nickname: suqd
Submitter: suqd
Submitted at: 2021-01-10 22:47:25
Text last edited at: 2021-01-28 17:52:31
Text last edited by: feos
Download: Download (3787 bytes)
Status: published
Click to view the actual publication
Submission instructions
Discuss this submission (also rating / voting)
List all submissions by this submitter
List pages on this site that refer to this submission
View submission text history
Back to the submission list
Author's comments and explanations:

(Link to video)


**Game Info**

Heart Like a Wheel for Atari 2600 is an unreleased Prototype. It's nearly-finished and fully-playable. It was based on a 1983 movie of the same name.
The game was programmed in 1983, but never commercially released due to the movie's bad sales and 1980s game crash.

More info about the game:
http://www.atariprotos.com/2600/software/unknown3/unknown3.htm
http://www.atarimania.com/game-atari-2600-vcs-heart-like-a-wheel_17685.html

The game is a Dragster clone. It has 2 game modes: "2 Player" and "VS CPU". There are 2 Courses of varying length: City Course and Desert Course.
"VS CPU" mode was meant to be the career mode of the game, where the player races against 4 opponents in the City, then moves on to faster cars and races against 4 opponents in the Desert.
After beating the 8th race, the game will repeat the 8th race forever, so I consider the game "beaten" after I finish the 8th race.

To initialize a race, you press the Left button, then the Right button (but not on the same frame). Afterwards, you wait between 128 and 256 frames for the race to start.
There is no way to speed up the waiting time for the next race, as you have to wait for the Frame Counter to reach a certain value before the race starts.
There is also no way to initialize the next race faster, as you must wait for the opponent to fully stop before the game accepts the Left/Right button sequence to initialize the next race.

Controls:
- you increase the car's Revs by holding the Up button,
- you initiate Clutch by holding the Down button,
- you switch up Gears after releasing the Down button,
- you steer the car by pressing the Left button or the Right button,
- you release a parachute by pressing the B button.

If you switch into 1st Gear before the race begins, you'll commit a false-start and lose the race.
Your engine will blow if you Rev it too high.
You will lose speed if you don't keep your car near the middle of your driving lane. You’ll crash your car if you drive too far to either side.

To cross the finish line, your Distance value needs to get over 255. Reaching the Distance of 255 is not enough; you must overflow the Distance value in order to cross the finish line.
After crossing the finish line, you must press the B button to stop before hitting the wall, which is at the Distance of 80. The game displays the race time after you cross the finish line.
It doesn’t matter how quickly you stop the car after crossing the finish line, as the timer will have already stopped by then, and the race doesn't end until the CPU stops.
You must only make sure to stop the car without crashing it into the wall.


**TAS Info**

Game: Heart Like a Wheel
Platform: Atari 2600
Year: 1983
Played on: Bizhawk 2.5.2
Optimized for: In-Game Time
Rerecord count: 4994

The TAS plays the game on "VS CPU" mode and aims to beat all 8 races in a record time.
The player’s car is on the right side of the screen. The left car is controlled by the CPU.
Because each Course has to be done 4 times, I tried to make each run unique and entertaining while finishing them in the fastest time possible.

The TAS is optimized for In-Game-Time (IGT).
Optimizing the TAS for real-time makes very little sense, because next race can't be initialized until the opponent has fully stopped, and the opponent's time cannot be manipulated.
Timing this game in real-time would create such absurd situations like:
a) very slow in-game time having no impact on real-time, as long as the opponent was beaten,
b) on the 8th race, we’d stop all inputs halfway through the race and barely finish before the opponent.

Difficulty Switches are both set to B.
Left Difficulty Switch selects the track (B - City Course, A - Desert Course).
Right Difficulty Switch changes car’s behaviour (B - car gets dragged to the sides, A - car drives in a straight line).
Position of the Left Difficulty Switch doesn’t matter, because pressing the Select button puts you into the City Course anyway.

In-game variables such as Speed, Revs, Distance and car's Position all start at the value of 0 every race.
The game doesn’t accept inputs on even frames, with the exception of pressing the Left/Right buttons to initialize a new race.

CPU times are always constant:

           CPU     TAS
  Race 1: 11.38s  9.10s
  Race 2: 10.72s  9.10s
  Race 3: 10.60s  9.10s
  Race 4: 10.54s  9.10s
  Race 5:  5.98s  5.02s
  Race 6:  5.92s  5.02s
  Race 7:  5.86s  5.02s
  Race 8:  5.56s  5.02s
  Total:  66.56s 56.48s

Frame Counter

Frame Counter starts at 0 and increases by 1 every frame. After reaching 255, it naturally overflows to 0 and continues to increase by 1 every frame.

Almost everything in this game is ruled by the value of Frame Counter:
- each race starts when Frame Counter reaches 0 or 128 (the wait time between initializing a race and starting a race is never shorter than 128 frames, and never longer than 256 frames),
- Distance increases on specific Frame Counter values, different for each Gear,
- Revs change on specific Frame Counter values, different for each Gear,
- while Speed is above 110, the car's Position will change on specific Frame Counter values, every 8 frames,
- the game will drop all inputs when Frame Counter is even (except for Left/Right inputs to initialize a race).


Distance

Race ends when Distance value gets above 255 (it must overflow; reaching 255 won’t end the race).

Distance is affected by:
- Gear (higher Gear gives Distance more often),
- Revs (higher Revs give more Distance),
- Frame Counter (Distance will only increase on specific Frame Counter values, different for each Gear),
- Course (Desert Course gives more Distance),
- Speed (Distance is usually calculated based on your Revs, but if you're in Clutch then your Revs are lower/higher than usual; the game is prepared for that situation and it will use Speed to calculate Distance).

Both Courses:
On the 1st Gear, Distance increases every 32 frames (on Frame Counter 0, 32, 64, ...).
On the 2nd Gear, Distance increases every 16 frames (on Frame Counter 0, 16, 32, ...).
On the 3rd Gear, Distance increases every 8 frames (on Frame Counter 0, 8, 16, ...).
On the 4th Gear, Distance increases every 4 frames (on Frame Counter 0, 4, 8, ...).
Distance doesn't increase if Revs are equal to 0.
Switching into 1st Gear on the first possible frame gives us 1 extra Distance.

City Course:
Distance increases by 1 if Revs are between 1 and 15.
Distance increases by 2 if Revs are between 16 and 23.
Distance increases by 3 if Revs are between 24 and 31.

Desert Course:
On the 1st, 2nd and 4th Gear, Distance increases by 1 if Revs are between 1 and 7.
On the 1st, 2nd and 4th Gear, Distance increases by 2 if Revs are between 8 and 11.
On the 1st, 2nd and 4th Gear, Distance increases by 3 if Revs are between 12 and 15.
On the 1st, 2nd and 4th Gear, Distance increases by 4 if Revs are between 16 and 19.
On the 1st, 2nd and 4th Gear, Distance increases by 5 if Revs are between 20 and 23.
On the 1st, 2nd and 4th Gear, Distance increases by 6 if Revs are between 24 and 27.
On the 1st, 2nd and 4th Gear, Distance increases by 7 if Revs are between 28 and 31.
On the 3rd Gear, Distance increases by 1 if Revs are between 1 and 11.
On the 3rd Gear, Distance increases by 2 if Revs are between 12 and 15.
On the 3rd Gear, Distance increases by 3 if Revs are between 16 and 19.
On the 3rd Gear, Distance increases by 4 if Revs are between 20 and 23.
On the 3rd Gear, Distance increases by 5 if Revs are between 24 and 27.
On the 3rd Gear, Distance increases by 6 if Revs are between 28 and 31.


Speed

Speed value updates 2 frames after Revs value updates, but only if the car is on a Gear.
Speed value does not update while the car is in Neutral (N) or Clutch (C).

Speed is affected by:
- Revs (higher Revs means more Speed),
- Gear (higher Gear means more Speed).

Formula for Speed is:
Speed = Revs x 2^(Gear - 1)

On the 1st Gear, Speed will be equal to 1 times the Revs.
On the 2nd Gear, Speed will be equal to 2 times the Revs.
On the 3rd Gear, Speed will be equal to 4 times the Revs.
On the 4th Gear, Speed will be equal to 8 times the Revs.

Max Speed on the 1st Gear is 31.
Max Speed on the 2nd Gear is 62.
Max Speed on the 3rd Gear is 124.
Max Speed on the 4th Gear is 248.

Speed affects:
- Revs after switching to a higher Gear (higher Speed means more Revs after switching Gears),
- Distance (Distance is usually calculated based on your Revs, but if you're in Clutch then your Revs are lower/higher than usual; the game is prepared for that situation and it will use Speed to calculate Distance).

In all other scenarios, Speed does NOT affect Distance, however unintuitive that might sound.


Revs

Engine can Rev up to 31. The engine blows up if Revs reach 32 or more.

If you press Up+Down, your Revs will rise by 3 before switching into a higher Gear.
If you press Down only, your Revs will drop before switching into a higher Gear.
Switching Gears with Up+Down can sometimes give you 1 extra Revs after switching up, which is most useful when switching from 2nd Gear to 3rd Gear (City course only) and from 3rd Gear to 4th Gear (both courses).

Revs on current Gear are affected by:
- Frame Counter (Revs only increase on specific Frame Counter values),
- Gear (higher Gear means that Revs increase less often, and each Gear gives a different number of Revs),
- Course (Desert Course gives more Revs).

Revs after switching up Gears are affected by:
- Neutral Revs (only when switching from Neutral to 1st Gear),
- Speed (higher Speed gives more Revs after switching Gears),
- Gear (different Gears have different formulas for calculating Revs after switching up Gears),
- Frame Counter (it’s possible to get Revs increase on the same frame as Revs update after switching Gears),
- Revs (pressing Up+Down to switch up Gears and having at least 29 Revs before switching up Gears can sometimes give 1 bonus Revs after switching up, which is especially useful when switching from 2nd Gear to 3rd Gear (City course only) and from 3rd Gear to 4th Gear (both courses)).

Revs affect:
- Speed (Speed value updates 2 frames after Revs value updates, but only on a Gear),
- Distance (higher Revs give more Distance).


Revs in City Course

On Neutral/Clutch, Revs change by 3 every 2 frames (on Frame Counter 0, 2, 4, ...)
On the 1st Gear, Revs change by 2 every 4 frames (on Frame Counter 0, 4, 8, ...)
On the 2nd Gear, Revs change by 1 every 8 frames (on Frame Counter 0, 8, 16, ...)
On the 3rd Gear, Revs change by 1 every 16 frames (on Frame Counter 0, 16, 32, ...)
On the 4th Gear, Revs change by 2 every 64 frames (on Frame Counter 0, 64, 128, ...)

When switching from Neutral to 1st Gear, starting Revs on 1st Gear will be (max 7):
1st_Rev = 4 + int(Neutral_Rev / 20) + (2 if 1st_Rev updates on Frame Counter 0, 4, 8, ...)

When switching from 1st Gear to 2nd Gear, starting Revs on 2nd Gear will be (max 20):
2nd_Rev = 4 + int(Speed / 2) + (1 if 2nd_Rev value updates on Frame Counter 0, 8, 16, ...)

When switching from 2nd Gear to 3rd Gear, starting Revs on 3rd Gear will be (max 20):
3rd_Rev = 4 + int(Speed / 4) + (1 if you press Up+Down to switch up Gears and have 29/30/31 Revs before switching Gears; sometimes it doesn’t work) + (1 if 3rd_Rev value updates on Frame Counter 0, 16, 32, ...)

When switching from 3rd Gear to 4th Gear, starting Revs on 4th Gear will be (max 17):
4th_Rev = int(Speed / 8) + (1 if you press Up+Down to switch up Gears and have 29/30/31 Revs before switching Gears; sometimes it doesn’t work) + (2 if 4th_Rev value updates on Frame Counter 0, 64, 128, 192)


Revs in Desert Course

On Neutral/Clutch, Revs change by 3 every 2 frames (on Frame Counter 0, 2, 4, ...)
On the 1st Gear, Revs change by 3 every 4 frames (on Frame Counter 0, 4, 8, ...)
On the 2nd Gear, Revs change by 2 every 8 frames (on Frame Counter 0, 8, 16, ...)
On the 3rd Gear, Revs change by 1 every 8 frames (on Frame Counter 0, 8, 16, ...)
On the 4th Gear, Revs change by 1 every 32 frames (on Frame Counter 0, 32, 64, ...)

When switching from Neutral to 1st Gear, starting Revs on 1st Gear will be (max 8):
1st_Rev = 4 + int(Neutral_Rev / 20) + (3 if 1st_Rev updates on Frame Counter 0, 4, 8, ...)

When switching from 1st Gear to 2nd Gear, starting Revs on 2nd Gear will be (max 21):
2nd_Rev = 4 + int(Speed / 2) + (2 if 2nd_Rev value updates on Frame Counter 0, 8, 16, ...)

When switching from 2nd Gear to 3rd Gear, starting Revs on 3rd Gear will be (max 20):
3rd_Rev = 4 + int(Speed / 4) + (1 if 3rd_Rev value updates on Frame Counter 0, 8, 16, ...)

When switching from 3rd Gear to 4th Gear, starting Revs on 4th Gear will be (max 17):
4th_Rev = int(Speed / 8) + (1 if you press Up+Down to switch up Gears and have 29/30/31 Revs before switching Gears; sometimes it doesn’t work) + (1 if 4th_Rev value updates on Frame Counter 0, 32, 64, ...)


Steering

The car can steer to the left (Left button) or to the right (Right button) every 4 frames.
The car can't steer until you reach the 2nd Gear.
The game will only accept Left button or Right button inputs every 4 frames (on Frame Counter 3, 7, 11, ...).
Pressing the Left button and Right button at the same time has the same effect as pressing just the Right button.

The driving lane is split into:
- left side (car Position’s value is 255 or lower),
- right side (car Position’s value is 0 or higher).

While Speed is above 110, the car's Position will change every 8 frames (on Frame Counter 0, 8, 16, ...):
- the car's Position will decrease by 1 if the car is on the left side of the driving lane,
- the car's Position will increase by 1 if the car is on the right side of the driving lane.

The driving lane becomes more and more narrow when your Distance increases.
The car's Position starts at the value 0, which means that after some time it will steer to the right on its own.
The car will accelerate normally if it's near the middle of the lane.
The car will remain at a constant speed if it’s too far away from the middle of the lane.
The car will lose speed if it’s too close to the limits of the lane.
The car will crash if it reaches the limits of the lane.


City Course Strats

Priorities for optimizing the run:
1) 1st priority is to get 16 Revs on 4th Gear ASAP (the earliest possible is on Frame Counter 0, which is 256 frames after the race begins; it’s not possible to arrive at 16 Revs on 4th Gear on Frame Counter 192, or anywhere between Frame Counter 192 and 255).
2) 2nd priority is to get 16 Revs on 3rd Gear ASAP (the earliest possible is on Frame Counter 80, which is 80 frames after the race begins), because it’s impossible to get 16 Revs on 4th Gear on Frame Counter 0 if we don’t have 16 Revs on 3rd Gear on Frame Counter 80.
3) 3rd priority is all the other optimizations: getting maximum Distance when reaching 16 Revs on 3rd Gear (which is on Frame Counter 80), switching into 3rd Gear and into 4th Gear at an optimum timing to get some extra Distance, making sure we get 1 extra “bugged” Revs when switching from 2nd Gear to 3rd Gear and from 3rd Gear to 4th Gear (only possible thanks to being able to press Up+Down at the same time).
4) Staying near the middle of the driving lane to avoid losing Speed is trivial for a TAS. We try to zigzag or do other dangerous maneuvers just for fun, as long as it doesn’t lose time.

Steps taken to get optimal time of 9.10s:
+ We switch into 1st Gear on the first possible frame to get 1 extra Distance on Frame Counter 0.
+ We press Down on Frame Counter 51 to switch up into 2nd Gear. This gives us 19 Revs after switching up. This is necessary to reach 16 Revs on 3rd Gear on Frame Counter 80.
+ We press Up+Down on Frame Counter 65, 67 and 69 to switch up into 3rd Gear. This gives us: 1 extra Revs after switching up because the Revs before switching up were 30, 1 extra Distance on Frame Counter 72 because of 3rd Gear, 1 extra Distance on Frame Counter 64 because we weren’t in the middle of switching up. We get the benefits of 16 Revs on 3rd Gear on the earliest possible Frame Counter of 80.
+ We press Up+Down on Frame Counter 249 to switch up into 4th Gear. This gives us: 1 extra Revs after switching up because the Revs before switching were 29, 1 extra Distance on Frame Counter 252 because of 4th Gear. We get the benefits of 16 Revs on 4th Gear on the earliest possible Frame Counter of 0.

In order to get a theoretical time of 9.04s, we would need to get 3 extra Distance somewhere. Improving the run by just 1 or 2 Distance wouldn’t make it any faster, because we would still finish on the same frame.
I couldn’t even find 1 extra Distance, let alone 3.
I believe this track is fully optimized, unless there’s something I don’t know about.

Strats that don’t work:
- It doesn’t matter if initial Revs on 1st Gear are 4 or 5. It won’t affect the Revs after switching into 2nd Gear.
- We can’t get 1 extra Revs after switching from 1st Gear to 2nd Gear, even if we switch at 31 Revs (by holding Up+Down after getting 28 Revs on 1st Gear). Even though we can get this 1 Revs bonus when switching from 2nd Gear to 3rd Gear (if Revs are 29/30/31 before switching up) and from 3rd Gear to 4th Gear (if Revs are 29/30/31 before switching up), it just doesn’t work when switching from 1st Gear to 2nd Gear.
- If we switched from 1st Gear to 2nd Gear on Frame Counter 43/45/47, we’d get 2/1/1 extra Distance on Frame Counter 48, but we’d lose 1 Revs. We wouldn’t be able to reach 16 Revs on 3rd Gear on Frame Counter 80, and as a consequence we wouldn’t be able to reach 16 Revs on 4th Gear on Frame Counter 0. This would mean massive Distance loss overall.
- Similarly to above, switching from 1st Gear to 2nd Gear and from 2nd Gear to 3rd Gear earlier in order to grab more Distance bonuses would end up with only 15 Revs on 3rd Gear on Frame Counter 80.
- We can’t reach 16 Revs on 3rd Gear on Frame Counter 64 (or on Frame Counter anywhere between 64 and 79, as Revs on 3rd Gear only update every 16 frames). To do that, we’d need to switch from 2nd Gear to 3rd Gear after getting at least 40 Speed, have at least 29/30 Revs to get that 1 Revs bonus after switching up, and arrive at 3rd Gear exactly on Frame Counter 64. But there’s not enough time for all of that. If we fulfill the Speed requirement, we will only have 26 Revs when it’s time to switch up, and we’ll end up with 15 Revs on Frame Counter 64. If we fulfill the Revs requirement, we’ll only have 38 Speed, and we’ll end up with 15 Revs on Frame Counter 64.
- We can’t reach 16 Revs on 4th Gear on Frame Counter 192 (or on Frame Counter anywhere between 192 and 255, as Revs on 4th Gear only update every 64 frames). If we played to maximize Revs, we’d still only get 14 Revs on 4th Gear on Frame Counter 192.
- Clutching on the 4th Gear isn’t profitable. You get the same Distance if you’re Clutching on 4th Gear, and it doesn’t make you gain Revs any faster. Increased (or decreased) Revs while Clutching fall back to their previous value after releasing the Clutch.


Desert Course Strats

Priorities for optimizing the run:
1) 1st priority is to get 16 Revs on 4th Gear ASAP (the earliest possible is on Frame Counter 160; it’s not possible to arrive at 16 Revs on 4th Gear on Frame Counter 128, or anywhere between Frame Counter 128 and 159).
2) 2nd priority is all other optimizations: changing into 2nd and 3rd gear at max Revs to optimize Distance gain, changing into 4th Gear at an optimal timing to get extra 1 Revs and grab extra Distance before Frame Counter 160.
3) Staying near the middle of the driving lane to avoid losing Speed is trivial for a TAS. We try to zigzag or do other dangerous maneuvers just for fun, as long as it doesn’t lose time.

Steps taken to get optimal time of 5.02s:
+ We switch into 1st Gear on the first possible frame to get 1 extra Distance on Frame Counter 0. It’s important not to Rev too high before switching into 1st Gear, or we’ll lose either Distance or Revs when switching to 2nd Gear.
+ We press Down on Frame Counter 35 to switch up into 2nd Gear. This gives us 19 Revs after switching up. This is necessary to reach 16 Revs on 4th Gear on Frame Counter 160.
+ We press Down on Frame Counter 83 to switch up into 3rd Gear. This gives us 19 Revs after switching up. This is necessary to reach 16 Revs on 4th Gear on Frame Counter 160.
+ We press Up+Down on Frame Counter 155 to switch up into 4th Gear. This gives us 15 Revs after switching up and, more importantly, 16 Revs on 4th Gear on the earliest possible Frame Counter of 160. We also get bonus Distance on Frame Counter 156.

In order to get a theoretical time of 4.96s, we would need to get 2 extra Distance somewhere. Improving the run by just 1 Distance wouldn’t make it any faster, because we would still finish on the same frame.
Sadly, the thing that makes this not achievable is the fact that in the Desert Course, we can only get the 1 “bugged” extra Revs when switching from 3rd Gear to 4th Gear.
If we could get this 1 extra Rev when switching from 2nd Gear to 3rd Gear, we could get a 4.96s or possibly even 4.90s.
I believe this track is fully optimized, unless there’s something I don’t know about.

Strats that don’t work:
- It’s not worth to Rev above 20 before switching into 1st Gear. Getting 1 extra Revs after switching from Neutral into 1st Gear loses time because you’d lose 1 Revs after switching into 2nd Gear, which means you wouldn’t be able to get 16 Revs on 4th Gear on Frame Counter 160.
- We can’t get 1 extra Revs after switching from 1st Gear to 2nd Gear, and from 2nd Gear to 3rd Gear, even if we switch at 31 Revs (by holding Up+Down after getting 28 Revs). Even though in the City Course this bonus works when switching from 2nd Gear to 3rd Gear and when switching from 3rd Gear to 4th Gear, in the Desert Course you can only get this bonus when switching from 3rd Gear to 4th Gear.
- Switching into 3rd Gear before Frame Counter 72 will give you extra Distance on Frame Counter 72, but you’ll lose much more Distance later on.
- Similarly to above, switching into 2nd Gear before Frame Counter 16 will lose a lot of Distance overall.
- Switching into 4th Gear before Frame Counter 148 would give you early bonus Distance, but you’d lose much more Distance later on because of losing 1 Revs.
- Clutching on the 4th Gear isn’t profitable. You get the same Distance if you’re Clutching on 4th Gear, and it doesn’t make you gain Revs any faster. Increased (or decreased) Revs while Clutching fall back to their previous value after releasing the Clutch.


Final Notes

When making this TAS, I made this spreadsheet to help myself optimize the run. It shows the moments when Revs, Speed, Distance changes, the values that they change to, etc.
It might look confusing at first, but analyzing it for a minute or two will make it very understandable.
https://docs.google.com/spreadsheets/d/1haDCF8qZHVnFWXAeHWCDpd_KBcliO4_SKkSUAwfHbDY/edit?usp=sharing

Since this is my first submission, please let me know if I'm doing it right. I made this TAS in March 2020 but hesitated about submitting it. Well, here goes nothing.


Edit:
I've run a script that bruteforced all possible up/down button combinations when switching up gears for both courses, in hopes of finding some glitch that would result in higher Revs or Distance, leading to lower race time.
Idea behind this bot:
It would test holding the Clutch button from 1 input frames to 8 input frames (game accepts inputs every 2 frames), within a specified frame range.
For example, if the frame range was from 28 to 88 (26 input frames), it would generate 26 patterns for holding Clutch for 1 input frame, 25 patterns for holding Clutch for 2 input frames, ... , 19 patterns for holding Clutch for 8 inputs frames.
For each of those Clutch patterns, it would generate and test all possible Rev button combinations while holding the Clutch.
For example, when Clutch was held for 1 input frame, it would test 2 Rev combinations for each Clutch pattern. If the Clutch was held for 8 input frames, it would test 256 Rev combinations for each Clutch pattern.
This resulted in quite a lot of button combinations, but the bot finished doing its job for all gears and courses within one night.
For the non-Clutch frames, the bot would hold the Rev button to keep going as fast as possible. I've tested on one gear if not holding the Rev button could lead to some glitch, but it didn't and it always lost time.
After reaching a specific frame, the bot would write down what inputs it did for both Clutch and Rev buttons, then write down the Distance and Revs into a text file.
I imported each text file into spreadsheets, sorted them out by Distance or Revs, and singled out the more interesting scenarios.

The results of the bot:
Unfortunately, the bot didn't find any improvements.
It found many button combinations that resulted in the same Distance/Revs as in the submission. I've manually tested those button combinations, but none of them resulted in getting better time or more Distance at the finish line.
It found some button combinations that gave more Distance, but lower Revs. Unfortunately, the Distance lead quickly melted away because lower Revs gave us less Distance later on in the race, leading to much slower times.

Example: all button combinations when switching from 2nd to 3rd Gear that resulted in the same optimal time of 9.10s in the City course (the numbers represent Frame Counter values):

  Clutch button			Rev Button
  65 67 69			65 67 69
  67 69 71			67 69 71
  69 71 73			69 71 73
  71 73 75			71 73 75
  65 67 69 71 73		65 67 69 73
  65 67 69 71 73		65 67 71 73
  65 67 69 71 73		65 69 71 73
  65 67 69 71 73		67 69 71 73
  67 69 71 73 75		67 69 71 75
  67 69 71 73 75		67 69 73 75
  67 69 71 73 75		67 71 73 75
  67 69 71 73 75		69 71 73 75
  69 71 73 75 77		69 71 73 77
  69 71 73 75 77		69 71 75 77
  69 71 73 75 77		69 73 75 77
  69 71 73 75 77		71 73 75 77
  65 67 69 71 73 75 77		65 67 69 73 77
  65 67 69 71 73 75 77		65 67 71 73 77
  65 67 69 71 73 75 77		65 69 71 73 77
  65 67 69 71 73 75 77		67 69 71 73 77
  65 67 69 71 73 75 77		65 67 69 75 77
  65 67 69 71 73 75 77		65 67 71 75 77
  65 67 69 71 73 75 77		65 69 71 75 77
  65 67 69 71 73 75 77		67 69 71 75 77
  65 67 69 71 73 75 77		65 67 73 75 77
  65 67 69 71 73 75 77		65 69 73 75 77
  65 67 69 71 73 75 77		67 69 73 75 77
  65 67 69 71 73 75 77		65 71 73 75 77
  65 67 69 71 73 75 77		67 71 73 75 77
  65 67 69 71 73 75 77		69 71 73 75 77
After running this bot, I'm fairly confident this game is maxed out. The best possible times are 5.02s in the Desert Course, and 9.10s in the City Course.
Samsara: File replaced with a version with fixed re-record count. Input remains unchanged. Also, judging. I will wait for results on the bot, of course.

Samsara: With the bot's conclusion that the achieved times are maxed out, it's pretty safe to conclude that this is optimized, so I believe this can go the same way as Dragster due to the mediocre feedback. Accepting to Vault.

feos: Pub.

feos: Removed the branch label since all unique content is what we require for games without an ending.


Similar submissions (by title and categories where applicable):