Gonna dump the knowledge I've gained about this game. TASing this game seems more complicated than I originally thought, so I probably won't do it.
What would be the quickest way to "beat" the game and reach the credits? Beat Grand Prix mode on Easy difficulty (2 laps per track) and skip 5/6 out of 16 tracks, while still getting enough points to finish 1st. This would be the Any% run.
Game Modes:
1. Tournament - has 4 Leagues, each with 4 tracks. Beating each League unlocks a new rider.
2. Grand Prix - has 16 tracks. The same tracks as in League mode. On hard mode, you can safely skip 3 tracks and still win. It's possible to win in hard mode by skipping 4 tracks too, but I don't know how to manipulate the AI standings so they don't get too many points. On easy mode, you can safely skip 5 tracks. With favorable AI standings, you can skip 6 tracks. Maybe 7 too?
The 5 slowest tracks, in order of slowest to least slow: Malaysia, Dutch, Japan, Czech, Italy. Dunno what the 6th slowest would be.
Hard mode has 4 laps, Medium has 3 laps, Easy has 2 laps.
Beating GP in each difficulty unlocks a different rider. If you want to unlock all riders, you'll have to beat GP on all 3 difficulties.
Riders:
First off, all riders have identical normal acceleration and wheelie acceleration, despite the game telling you otherwise in the rider selection screen.
In the beginning you have 3 riders: Roberts, Nakano, Capirossi. They have identical handling, with the only differences being top speed and braking. Braking is the least important stat, since we can use the off-road on the insides of corners to lose speed quickly anyway. So the best choice out of those 3 riders is Capirossi, since he has the highest top speed of 306.
Beating 1st League unlocks McCoy. He has 295 top speed, a little better handling than all previous riders. Still, slower than Capirossi on most tracks.
Beating 2nd League unlocks Criville. He has 300 top speed, a little better handling than all previous riders. Debatable if he's worth using over Capirossi, you'll have to try them out.
Beating 3rd League unlocks Abe. He has 306 top speed, better handling than all previous riders. Best rider to use for the final League.
Beating 4th League unlocks Rossi. He's the best rider in all stats. Top speed of 318.
Beating Grand Prix on Easy unlocks Jacque. He has 306 top speed, and handling identical to Criville. He's a worse version of Abe because of turning.
Beating Grand Prix on Medium unlocks Barros. He has 312 top speed, and handling identical to McCoy.
Beating Grand Prix on Hard unlocks Biaggi. He has 312 top speed and handling identical to Rossi. He's a worse version of Rossi because of top speed.
Which Rider to use?
Any% (Grand Prix Easy): Capirossi
Tournament: 1st/2nd League: Capirossi, 3rd League: Capirossi/Criville (unsure), 4th League: Abe.
New Game+ (using a password R999D5998J to unlock every rider): Rossi
How the game works:
1. Lap progress (0x2020 4byte unsigned) - increases by the value of your speed every frame. Nothing else affects it, which means your racing lines don't matter - you can swing left and right on straights and it doesn't make a difference.
2. Horizontal position (0x20C0 4byte signed) - shows where your bike is in the horizontal axis. Goes from -58880 to 58880. Off-road sections in corners can be around the 30000 mark.
When you steer, your horizontal position changes. The power of steering depends on your speed.
During corners, the game will push you in the opposite direction depending on the change in track's angle, your speed, and your horizontal position.
3. Steering power - how much your horizontal position changes every frame.
Turning power depends on your speed:
Roberts Nakano Capirossi McCoy Criville Abe Rossi
0-20 154 154 154 184 219 250 280
21-40 237 237 237 280 330 373 426
41-60 414 414 414 493 574 658 744
61-90 444 444 444 531 621 708 793
91-115 414 414 414 493 574 658 744
116-120 426-438 426-438 426-438 507-525 586-609 670-688 751-769
121-140 379-463 379-463 379-463 451-531 525-603 592-676 664-744
141-160 312-361 312-361 312-361 355-408 408-457 451-501 501-550
161-max 237-487 237-493 237-507 268-519 300-556 330-603 361-652
We can see that slowing down to 160 can greatly increase steering power for those very sharp corners.
4. Acceleration - every rider has the same acceleration, despite the game saying otherwise in the rider selection screen.
You get different acceleration on each Gear. You get higher acceleration when Wheeling (press Down button).
Acceleration (how much your speed changes per frame on average):
Every rider Every rider (wheelie)
1st-2nd gear (0-130) 0.3823529412 0.9558823529
2nd-3rd gear (130-154) 0.1176470588 0.2962962963
3rd-4th gear (154-177) 0.1277777778 0.3150684932
4th-5th gear (177-237) 0.3260869565 0.8219178082
5th-6th gear (237-261) 0.1105990783 0.275862069
6th gear (261-max) 0.1581395349 0.3953488372
5. Leaning (0x2028 1byte unsigned) - how much your rider is leaning. Higher lean values result in better steering:
Left 1 (weakest) if value between 57 and 60
Left 2 if value between 52 and 56
Left 3 if value between 44 and 51
Left 4 if value between 36 and 43
Left 5 if value between 28 and 35
Left 6 (strongest) if value between 0 and 27
No steering if value between 61 and 67
Right 1 (weakest) if value between 68 and 71
Right 2 if value between 72 and 76
Right 3 if value between 77 and 84
Right 4 if value between 85 and 92
Right 5 if value between 93 and 100
Right 6 (strongest) if value between 101 and 128
At high speeds, your rider will lean forwards, which means your leaning value can't go below 34 or above 94, and you will keep oscillating between 34-38 or 90-94. To fix this, you'll need to release acceleration for 6 frames, which will lose you some speed. Only do it when it's necessary.
6. Strong Lean Timer (0x1CF0 1byte unsigned):
If it's equal to 0, you can lean all the way. If it's higher than 0, your leaning will be restricted. It will max out at 6 when you're driving at high speeds. It goes down by 1 every frame you're not holding the acceleration button.
7. Wheelie Meter (0x1C2B 1byte unsigned):
When it's full (equal to 24), you can perform a wheelie which gives you increased acceleration and slightly higher top speed.
During wheelie, the value decreases by 1 every 4 frames.
It increases by 1 every 16 frames if you're not wheeling.
Wheelie TAS trick: if you wheelie for 3 frames, then alternate between (wheelie off for 1 frame, wheelie on for 1 frame), you will gain a large portion of wheelie's acceleration bonus without depleting your wheelie meter.
8. Gear (0x1BE6 1byte unsigned) - every bike has 6 gears. Every bike reaches the same top speed in the first 5 gears, with only the final gear having a different top speed.
9. Revs (0x5E9C 4byte unsigned) - probably not important.
10. Speed (0x1CE0 2byte unsigned) - goes up to 319 normally. Colliding with an opponent can increase this for 1 frame to higher values, such as 397.
Ignore the in-game speed value you see on your speedometer, it's less precise than what you can read from RAM.
11. Steering Penalty Timer (0x5F08 1byte unsigned):
When you hold a direction, this timer will go up. If you let go of the direction, it will go down.
If it's below 50, you get no steering penalty.
If it's above 50, you get a strong steering penalty.
If it reaches 150, you crash.
You want to keep it below 50 at all times by letting go of a direction.
12. Track Angle Change (0x1E04 1byte signed):
Shows how strongly the track curves. The stronger it curves, the stronger your horizontal position will change. If you drive fast, you can pass through multiple points where the track angle changes, and those changes will add up - resulting in a stronger change to your horizontal position.
13. Track Angle (0x2048 2byte unsigned):
Shows the current track angle. Goes between 0 and 511. Every track changes its angle at specific Lap Progress values. If you drive fast, you can pass through multiple points where the track angle changes, and those changes will add up - resulting in a stronger change to your horizontal position.
14. Horizontal Displacement during turns:
When the track curves, you will get pushed in the opposite direction, resulting in a change to your horizontal position.
This change depends on your speed, on track angle change, and on your horizontal position.
The general formula is:
Horizontal Displacement = (angle_change) x (speed) x (modifier)
When you drive fast and pass through multiple points where the track curves, this will make angle_change value bigger.
Value of (modifier) depends on player's horizontal position. Player's horizontal position goes from -58880 to 58880.
When the track curves to the right, (modifier) is equal to:
4 is player's horizontal position was in the range (9400, 58880)
7 is player's horizontal position was in the range (8200, 9399)
3 is player's horizontal position was in the range (-7299, 8199)
5.125 is player's horizontal position was in the range (-8199, -7300)
2.125 is player's horizontal position was in the range (-58880, -8200)
Those ranges are assuming constant speed of 300. They differ slightly depending on your speed (unsure why).
For left turns, just flip the signs around.
The (modifier) value changes are pretty weird.
When you begin the turn, you will get pushed outside with the force of 4.
Then, within a small width of the track, the force goes up to 7.
Then, when you transition from one half of the track to the other, the force goes down to 3.
Then, within a small width of the track, the force goes up to 5.125.
Then, when you are near the outside portion of the track, the force is the weakest at 2.125.
15. Collision boosting:
When you drive in front of an AI, you can gain a lot of speed. The amount of speed is different every time. It probably depends on AI's speed and the difference between your Progress Value and the opponent's Progress Value. This can be used to accelerate more quickly, and you can reach higher top speed for 1 frame when you collide with AI. The opponents could also be used to decelerate instantly during a corner, if they happen to be in the right spot.