TASVideos

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

Submission #2903: Randil's GBC Mission Impossible in 10:34.62

Console: Game Boy Color
Game name: Mission Impossible
Game version: Europe
ROM filename: Mission Impossible.gbc
Branch:
Emulator: (unknown)
Movie length: 10:34.62
FrameCount: 38077
Re-record count: 7128
Author's real name: Johan Södling
Author's nickname: Randil
Submitter: Randil
Submitted at: 2010-11-06 10:40:29
Text last edited at: 2010-11-10 07:01:19
Text last edited by: Flygon
Download: Download (1876 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)
This is a 986 frames, 16.43 sec, improvement over the published run. The improvements come from optimizing movements and a few minor shortcuts. Read more below for details.

Game information:

There are 10 levels in this game. The goal on each level is to perform a list of instruction, in the order that they are presented. After having completed all your instructions, you end the level by getting to the exit. You have a fixed set of items on each level that you can use. You always have a gun (which isn't used in this TAS), and you can always kick down enemies.

TASing this game

This game is pretty easy to TAS. Although it looks like there is some route planning involved, there really isn't - you have to do the instructions in the order they are presented, and the route from instruction i to i+1 is usually very trivial. I take a few minor shortcuts that saves some time, but most of the time, the route I take is identical to the published run.

Miscellaneous information:

  • This game runs at 30 FPS, and therefore only accepts input (and your position coordinates change) every 2 frames.
  • Item switching is done automatically when you get near a place where you can use one of your items.
  • Avoiding getting noticed or killed by guards is somewhat tricky. A guard's view is only in the direction he is facing, which often allows you to run past guards unnoticed. You can almost always avoid getting killed by a guard by testing different movement patterns while approaching him, without losing any time. You will often see me pass through guards unharmed, courtesy of the game's weird hit detection.
  • When inside a building, moving left or right will make you jump (see the published run). Jumping is slower than running (moving at 2p/2f), so I avoid moving directly to the left or right inside buildings. Instead, I always move diagonally.
  • Kicking while moving does not slow you down.
  • Bullets move really slow in this game, and you can easily outrun them.
  • Stun grenades are used on level 7, and make enemies freeze. This isn't very useful, but just like in the published run, I use it because I think it looks a little funny.
  • Around frame 16000 I have to wait for the guard to move a bit farther before I make the jump. The reason why the published run doesn't have to do this is because I reach this section faster, meaning that the guard below me hasn't walked as far.

Useful RAM addresses.

I used these addresses when TASing this game, all of them were very useful:
  • xC20C, 2 bytes: X position
  • xC20E, 2 bytes: Y position
  • xCE3D, 1 byte: During text messages, press A as soon as this address turns 6 or 249. This RAM address helped out a lot during text message sections.
  • xDB18, 1 byte: Current HP. Enemt bullets drain only 1 HP (other attacks will instantly kill you), so you can sometimes take a few bullets before dying.

Movement physics

Almost all the time saved comes from optimizing movements. When holding down A and running, you move 3 pixels per 2 frames in the direction you are running. If you're running in a diagonal direction, you move 3 pixels per 2 frame in both the X and Y direction, so running diagonally is preferred when possible. If running diagonally while pushing against a wall, you will move in the direction you are pushing as soon as the wall ends. Example: Between frames 8215 and 8250, I hold down A+down+right. While I have the wall next to me, I only move down, but as soon as the wall ends, I start moving down+right.

There are no subpixels or anything of the sort in this game.

When not holding down A, you move at 2 pixels per 2 frames. This is used sometimes when I need to turn around after using something, saving a pixel or two.

Anyway, because of how simple the game's physics are, it's very easy to frame optimize movements. Watching the RAM addresses for my X and Y position helped a lot too, of course. This is the reason for the quite low rerecord count.

Lag

There is almost no lag in this game (if you don't count the 30 FPS speed). The only place where I've noticed that the game can lag is the place around frame 15100. This means you don't have to worry much about lag, but I still kept a look out for it. The fact that the game runs at 30 FPS probably helps the game avoid lag.

Suggested screenshot (feel free to pick another one):


Flygon: Added YouTube module, and dibs on publication.

klmz: It is acceptable using the E version, as the published run was. Accepted as an improvement to the published run.

Flygon: Yes sir! Ilari sir!


Similar submissions (by title and categories where applicable):