Download encode here
You play as a submarine that is entirely unrelated to the UEO seaQuest DSV 4600
. In normal gameplay, you get 10 * (1 + currentLevel) points for destroying a fish or an enemy sub, 50 * currentLevel points for each diver you rescue, and 10 * (1 + currentLevel) * your remaining oxygen when you rescue the divers. After reaching level 8, using the No-Despawn glitch, I collide with a sub for 3 minutes until I reach the maximum score of 999999.
This submission is in response to the feedback for #4291: morningpee's A2600 Seaquest "maximum score" in 00:06.02
. Credit goes to VELHO
for discovering the glitch.
- Emulator used: BizHawk 1.6.1
- Fastest time to 999999
- Manipulates luck
- Ends input early
- Uses a glitch
The game uses a 217-index LCG
to generate random numbers at address (02h). By paying attention to these values, you can control which side of the screen the diver comes from and avoid RNG values that result in no divers.
If divers are on-screen when you finish a level, the same number of divers will spawn immediately at the beginning of the next level, and at the same depths. you can wait a certain number of frames (unaffected by (02h) ) to control which side of the screen these divers spawn from.
By waiting, you can also control which sides of the screen fish will spawn from. This is also unaffected by the RNG at (02h).
Limitations on spawning divers
There are 4 separate depths that divers swim at. Generally, you must collect divers from all 4 depths before being able to spawn divers from the first depth again. For example, if you collect a diver at depth #2, you must collect divers from the three other depths before spawning a diver at depth #2 again. This detail limits the efficiency with which you can collect divers, and significantly impacts the routes I take.
Normally, when you collide with a fish or enemy sub, the enemy despawns immediately, and your sub despawns 35 frames later. However, by colliding with an enemy in a special way, you are able to prevent the enemy from despawning, which keeps your sub's despawn timer from completing.
In this case, you get 10 + 10 * currentLevel points for every frame you are in contact with the enemy, for currentLevel <= 8. For example, if you perform the glitch on level 4, you receive 50 points for each such frame.
Optimizing the No-Despawn Glitch
There are two types of enemies: Fish and subs. Because each fish bobs up and down, there is no way to perform NDG (no-despawn glitch) on a fish so that you are in contact with it the entire time until 999999 points. It is possible with an enemy sub, however, as only its rudder moves.
The most significant problem is to decide which level to perform the glitch on. Consider these details:
- Using a preliminary run as a basis, the average, optimized, luck-manipulated stage will take 747.5 frames to complete.
- The first stage begins at frame 129.
- Once you have performed NDG, you gain 10 + 10 * currentLevel points per frame until you reach 999999 points, for currentLevel <= 8. After level 8, you still get only 90 points per frame.
We can use an equation to model the number of frames it would take from each level to reach 999999, if x is the current level and y is the frame estimate. Note that we only need the integer part of x:
y = 130 + 747.5 * floor(x) + 999999 / (10 + 10 * floor(x) ), x <= 8
Minimum frames is at level 8. Note that the actual minimum of the function would be at x = 10 if it were not bounded, but that level 10 offers no advantage over level 8.
Using this method, it takes 4 minutes and 39 seconds to reach the maximum score of 999999. At this point, the enemy swims away (without ever despawning), and the kill screen is shown. In the kill screen, the "Activision" text at the bottom is replaced with "Copyright 1983", though you never actually die. This is the same behavior as when you reach 999999 by means of normal gameplay.
For comparison, see this
savestate, where 999999 is reached by normal means. After a few seconds, the seaQuest will collide with a fish, "Copyright 1983" will be shown, and your sub does not despawn.
These levels are completed as quickly as possible, using careful luck manipulation and route planning. At the beginning of level 5, a diver spawns at depth #1, so I don't need to kill the fish for diver #1 in level 4 for the carryover. In level 8, I don't need to collect any divers, so I don't kill any extra in level 7.
The barge that floats at the top of screen limits how many extra divers I have time to collect in level 5. I only had time for 1. It also limited how far left I could be at the end of level 7.
In this level, my goal is to hit the correct point at the back of a right-to-left sub quickly. By returning to the surface with only 1 diver, I can cause the fish to swim faster, which will let me trigger NDG sooner. Frame 5870 is the soonest I can surface, or else the enemy sub that I use for NDG will spawn from the left side of the screen instead of the right, which I do not want. This is why the fish turn green before leaving the screen on level 8.
RAM addresses are here
To summarize, this max score TAS of Seaquest is comparable to Tetris
because I am reaching 999999 as quickly as possible. It is also different from Virtual Pinball
because there is a clear ending point here.
Rejecting and publishing
Accepting to Vault and publishing...