Impossible Mission is an adventure platformer originally released in 1984 for the Commodore 64 and ported to many systems including the Sega Master System in 1988. An evil scientist, Elvin Atombender, has set up an operation to tamper with national security computers. The player must search rooms in a building connected by an elevator system for 36 puzzle pieces and combine them to decrypt the password protecting the control room of Elvin’s operation.
Randomisation
To ensure that every playthrough is unique, many gameplay elements are randomized when the game starts including building layout, puzzle piece locations, and puzzle piece rotation & colour. Random numbers are also used to control robot movement, but this is calculated upon entering each room rather than when the game starts.
This run uses heavy luck manipulation to confine all 36 puzzle pieces to just 16 rooms, and to ensure optimal robot movement patterns inside those rooms.
Faster patterns exist, but so far we have not found one that would be faster than the pattern we chose when taking into account the extra time required to manipulate for it. We have developed a bot that searches for fast patterns which is available through the
ScriptHawk repository on GitHub.
Movement
Interestingly, the game only accepts movement inputs every 3 frames. In most situations it’s faster to jump rather than walk.
When walking off an edge it is possible to turn around in mid-air and narrowly miss the floor if the walking animation is at the correct position in the cycle. This allows the player to start moving in the direction that they need to much earlier.
Four frames after starting a search, it is possible to perform an extra movement input without cancelling the search or losing time. This technique was used with every search that benefitted from it. In at least one location it was faster not to perform this technique because of the walking animation cycle interfering with an edge turnaround slightly afterwards.
Puzzles
After the 36 puzzle pieces are collected, the player must fit them together to solve 9 puzzles in total, each consisting of 4 pieces. This involves flipping the pieces and changing the colour to match with other pieces that belong to the same set of 4. There are 4 spots to place pieces, so 4 puzzles can be solved simultaneously.
Our approach was to solve 4 puzzles at a time, then another 4 puzzles at a time, then the last puzzle by itself. This is to minimise scrolling through puzzle memory as solving the puzzles one by one would mean that we have to scroll through puzzle memory 9 times whereas this route scrolls through memory 3 times. The downside is that there is more lag when doing the final move of a puzzle if there are more pieces on the board, but the time saved on scrolling quickly makes up for that time loss.
When finishing one of the 9 puzzles, the scroller on the left returns to the start of puzzle memory and removes the 4 pieces you just used for the solution from memory. To finish a puzzle, the pieces must be in the correct orientation, so we delay solving any one of a set of 4 puzzles until we have all of the pieces for all 4 solutions in place.
Picking up and putting down pieces is used throughout the solve to move the cursor quicker. Usually when scrolling across a piece, the cursor must travel all the way across, but if you pick up the piece and put it back down the cursor snaps to the middle of the piece. This can be done on any piece in the solving area or in the list on the left. If the piece in the solving area is not selected, then it takes 3 presses to snap to the middle (one to select, one to pick up, and one to put down). 3 presses is still faster than scrolling across. Sometimes when all 4 slots are full, putting down pieces can cause some lag, so occasionally this technique is slower and hence not used.
Another technique that was attempted was using the undo button before solving the last of the 9 puzzles. This would put a piece on the board to help to scroll across quicker. Unfortunately this caused more frames of lag than it saved in movement, so it wasn’t used.
When scrolling through puzzle memory we minimise cursor movement where possible by performing an extra scroll if it will result in 2 pieces that we need being shown in memory at once. This is faster because scrolling once between every piece we place would require more cursor movement than scrolling twice before placing two pieces.
One last observation is that it is faster to place as many pieces as possible, then flip them/change their colour to the next piece in bulk rather than flipping/changing colour every time a piece is placed.
The first four puzzles solved are puzzles 3, 6, 1, and 2 (internal piece labelling). Because these are the first four groups in puzzle memory, this route requires the least scrolling. The next lot of four are 5, 8, 4, and 0. This is counterintuitive since four is the puzzle that requires the most scrolling through memory, but this is only one position further down in memory than the alternative set of four (5, 8, 7, and 0). The reason for this choice is to leave puzzle seven until last. The first and third pieces of puzzle seven match in orientation, as do the second and fourth pieces. By solving puzzle seven last, we can solve it in the order 1-3-2-4 rather than the usual 1-2-3-4. This drastically reduces the number of flips required, saving a lot of time in cursor movement and lag. The reason that we need to leave seven until last to do this is because usually there are many pieces in the list that come between the second and third pieces of puzzle seven, so scrolling down through all of these only to scroll back up again would be impractical.
Played on BizHawk 2.2 with
ScriptHawk and TAStudio. The game was released in Brazil, so the 60hz option was selected.
Noxxa: There's some decent front-flipping jumping action in there, and the objective of searching for puzzle pieces across the rooms adds a bit of diversity to the action. On the other hand, the lack of music, not so great audio quality and lack of significant diversity in environments makes the action drag on a bit over time. That said, viewer response was reasonably good for this run, so I'll follow the audience this time. Accepting for Moons.