Submission #3030: scrimpeh's MSX Contra in 10:21.37

Console MSX Home Computer System Emulator
Game Version JPN Frame Count 37234
ROM Filename Kontora - Contra (1989) (Konami) (J).rom Frame Rate 59.9227510135505
Branch Rerecord Count 16397
Unknown Authors scrimpeh
Game Contra
Submitted by scrimpeh on 3/5/2011 3:42:07 PM

Submission Comments
Among the many ports of the original Contra to various systems, this one, released for the MSX2 in 1989 (Kontora in Japan), can be found. The game differs in quite a few important ways from most of its twins: Most importantly, there are added stages and you've been given a life bar. This movie aims to complete the adventure of the musclebound dude with the magical color changing pants as fast as possible.

Game objectives

  • Emulator used: Multiple, though it should sync fine on openMSX 0.8.1 RC2. Get the latest builds here:
  • BIOS used: Panasonic FS-A1WSX
  • Takes damage to save time.
  • Manipulates luck
  • Genre: Platform


After having finished Vampire Killer, I looked around for a few other possible MSX games to TAS. At first, Contra seems simple enough, run right and shoot things. In addition, the completion time was considerably shorter than Vampire Killer, so, eventually, using a run of Vampier's as a base again, in the matter of a few weeks, I created a testrun at 12:56. With far better lag management, optimization and better knowledge of the game mechanics, I manage to improve 155 seconds over my testrun, with a final time of 10:21. Creating this run was far more work-intensive than Vampire Killer. Whereas I started and finished the final run of that game within a few days, Contra took me far longer. Typically, a single stage might very well take 2 - 3 hours to do. I also had school to deal with, so typically I'd do most of the work on the weekends. The game is also far harder to optimize due to more precise movement required and very random lag. To elaborate somewhat:


Your X Speed depends on the blimps you collect. In addition to making you more resistant to damage, they also boost your movement speed upwards to 4/3px a frame if you collect two of them. Walking, jumping and falling off ledges are equally fast, but later in the game, doing jumps makes you more susceptible to lag. While jumping up a shaft (Stages 4, 18), if you jump into the next screen from a higher ledge, you have more vertical momentum, which allows you to reach higher ledges without having to land on a lower one first. This influences my route choice in those levels, losing a few frames by jumping onto a higher ledge instead of straight into the next screen. Unlike the NES Contra, it is possible to adjust your jump height. Falling down shafts typically is more simple. If you press Down + Jump on the first frame you can, you won't lose any speed. As with many games, you land on the ground faster if you jump down a ledge instead of walk down it, though, after some time, you will enter your normal falling animation again.


If you pick up an additional weapon, you first go through a small menu, allowing you to pick one. The Standard Peashooter is my weapon of choice for this run, as the machine gun isn't needed thanks to frame precision, the rear and fire guns have no use and the laser is too slow. You can only have six bullets onscreen at a time, so often, you'll find me doing a jump, firing six bullets, and jumping again as early as possible. In underpass/maze stages, if you cover what you want to hit with your sprite, the bullets reach their target instantly as opposed to travelling there first. Typically, shooting creates lag, its severety depends on how busy the screen is. Later in the game, removing sprites by shooting them cuts enough lag in itself to make this viable.

Getting Hit

Getting hit typically boosts you in the opposite direction at an impressive speed. Getting hit while jumping will often send you upward in addition to back, and falling downward. However, you'll lie on the ground for a couple of frames, nullifying the gain. Two exceptions arise to this: In Stage 8 (Energy Zone), you typically have to wait for the fire wall to pass before being able to go through. By intentionally getting hit, I can skip the wait and just wait for the recovery time to run out. The second exception is in descent-stages (10, 16). Because the recovery time runs out before I can land again, I don't lose any time, able to instantly jump down the next platform I land on. Your control over the direction you're boosted in is limited and dependent on the direction you approach a hazard from. Your life isn't replenished at the end of a stage, so it can be treated as a finite recourse.


Oh, the lag. Part of what makes it so annoying to deal with is that it is very unpredictable and very unavoidable. Many different things can cause lag, such as the turrets turning, but typically, you want to have as few sprites on screen as possible and don't want to have any tiled background elements change their appearance. (Turrets turning, opening up) Due to its screen-based nature, it is possible to just try out the screen a couple of times to find the most lag-free route, but that eats up time, is annoying and it's very difficult to verify a given screen cannot be completed any faster. Boss fights are also made more difficult by lag, because the game often won't act the way you want it to. Often, input feels very sluggish and unresponsive, and almost even worse, if bullets are grouped too closely together, they can pass through the target if the game is laggy.

Enemy Rundown

Here you find a list of enemies in order of appearance and how I deal with them in the TAS. Bosses are explained in the level comments.

Standard Mook

The most common and elaborate enemy in the game. Many screens in the game have them spawning randomly at either 2, 3, 6 or 7x23 frames. Unless there isn't enough going on in the screen to make lag an issue, I manipulate them to spawn less frequently. If you are in their line of fire, they stop to take a shot at you, otherwise, they run back and forth. If they come to a ledge, they can either jump to the next ledge or turn around and keep running. This can be influenced by facing them or not. The exact best strategy to deal with them depends on the screen.


Probably the enemy that caused the most anguish during the making of this run, Their starting rotation can be manipulated during screen transitions. If you are in their line of fire, they can take up to three shots at you, otherwise, they rotate in your general direction. Since that rotating causes lag, it is best to avoid any unneccesary rotating. They are also near ubiquitous in the game, some screens feature up to three of them in one screen. A nightmare to manipulate and optimize! Interesting to note: Moving to the top of the screen makes the turrets face downwards, because your y position seems to overflow.


Rolling Bombs

Bomb Throwing Diver

I move far too fast for you to even see him. Too bad, no?


Pretty analogous to the Standard mook, only they do more damage.

Thrown Bomb

You can manipulate their position on the screen by jumping. Typically, however, it is best to just run past them.

Machine Gunner

They can also be very unpredictable when it comes to lag. Thankfully, you only can find them in two stages. Keep in mind their bodies are part of their hitbox, so at times, it is necessary to shoot one to get past him.

Fire Wall

Please note that their collision is hideously off, which is why I do such a large jump in the second Room of Stage 8. At one point, I avoid waiting for it to let me pass by just getting hit.

White... things

I'd give them a better name, but my imagination fails me. There isn't much to say about them, really.

Organ... things

They spawn from their hives at fixed intervals which can be manipulated like the mooks', after which they move up or down on the screen.


They are absolute lag machines wherever they appear. As with the Organ... things, their spawning is dependent on a timer. Often, shooting them cuts a bit of lag.


You find them only in descent-stages. As you pass them while falling, they start chasing you. If you're too close to them, you get hit, so typically, some distance to them is required, though they typically fly higher if you're facing away from them.

Upward Cannons

Magma Wall

They spawn at fixed places in the screen and their height depends on how busy the screen is at the moment.


Floating Mutants

Once again, their spawn timer can be manipulated. It is more efficient to shoot them, jumping over them is tricky, because they rise up and hit you.

Stage by stage comments

Stage 1 -Asphalt Forest-

Very straightforward stage, I get two blimps here to boost my speed. I've found the boss can be hit best by dropping down the ledge in the screen beforehand. Each Turret takes 8 hits, the gate 25.

Stage 2 -1st Underpass-

You always have to shoot a green glowing gate to continue, as turrets attempt to pelt you with their projectiles. Also get used to that big, hexagonal gate. You'll be seeing it in this game for quite a few times. Each gate takes 9 hits, the big gate takes 25.

Stage 3 -Homicide Censor #1-

I have to wait until the shields open. Most censor battles follow the same formula: Shoot every gate/turret, then a big thing appears that fires projectiles at you. As you'd expect, they can be manipulated in during the screen transition. I am very pleased with how the fight turned out. Each green gate takes 4 hits, each turret 9, and the censor himself 49.

Stage 4 -Hell Fall-

You can only damage the turret while its open, and, as with Stage 1, the gate after the turret is destroyed. The Turret takes 13 hits, the gate 25.

Stage 5 -2nd Underpass-

Not much to mention here.

Stage 6 -Homicide Censor #2-

Unlike the other Censors, you only have to shoot the green gates to make the censor himself appear. I kill the robots early on because they'd just get in the way otherwise. You have to kill the Censor himself fast, because otherwise, he'll be invincible for a long time, forcing you to wait. Thankfully, with tool assistance, that is no problem. Censor himself takes 17 shots.

Stage 7 -Tundra Area-

A very annoying stage, because it's very heavy on the bosses. The UFO, for some reason, makes the game lag quite badly, though it's pretty straightforward to deal with. Only thing to note, I can't pass the explosion on the floor any earlier. The tanks' hitbox is placed very low, so even if you hold the jump button for only one frame, at the peak of that jump, the bullets just fly over it. As usual, the collision for the tanks' projectiles is very off, allowing me to get inbetween the shots. It is impossible to pass the screen while the UFO or one of the Tanks is alive. I manipulated the Robot at the end not to move, because him moving causes lag. UFO takes 33 hits, both tanks 28 and the Robot takes 49 hits.

Stage 8 -Energy Zone-

The fire bars' collision is unbelievably off, which is why I do such a high jump in the second screen. I get hit because that is the fastest way past the fire bar. Normally, I'd be blown back, but by jumping a few frames before getting hit, I get boosted to the right instead. The robot fight is identical to that of Stage 7.

Stage 9 -Alien Zone-

A rather simple stage. Again, it is impossible to pass while the Alien Head is alive. At one point, shooting one of those organ things cuts a frame of lag. The heart boss is very annoying because it has a small hitbox and the game lags very badly. I had to delay some of my shots to avoid them simply passing through because of that. Both bosses take 17 hits.

Stage 10 -Cavern-

Getting hit saves about 14 frames. I tried to do it in other places, but it wasn't efficient anywhere. You can't drop down to get any closer to the gate. Also, it was very difficult manipulating the turrets at the boss to act favorably. Essentially, the rightmost turret is manipulated to face the bottom right the entire time and the two middle turrets can't shoot me due to their positioning.

Stage 11 -1st Under Maze-

This stage is indeed a maze. Taking a wrong turn can leave you running in circles. The ideal route through is demonstrated in this run.

Stage 12 -Homicide Censor #3-

A very peculiar boss. Destroying one of the gates kills the entire censor, the catch being you're not told which one. However, it can be manipulated, allowing me to choose the one that opens earliest. The gates take 17 shots, if they're vulnerable.

Stage 13 -Magma Area-

Pretty straightforward to look at again. If you see me behaving oddly, usually that was because it resulted in the least amount of lag.

Stage 14 -2nd Under Maze-

Pretty much the same as Stage 11.

Stage 15 -Homicide Censor #4-

A very difficult boss to deal with, because you got eight turrets to deal with. I managed to manipulate them however in a way they wouldn't close on me, allowing me to finish this fight without waiting for any turret to open. The timing window I had to do this was just a few frames. As such, this is one of my favorite moments in the run.

Stage 16 -Underground Fall-

The fastest way past the first upward cannon is to shoot it. I damage boost once again, to save about the same number of frames, after which I move to the right of the screen because that causes the least lag. The gate is very tricky to destroy because the spheres keep closing in on you. Because of the lag delaying my ability to shoot, I again only had a few frames to do this before getting hit.

Stage 17 -Magma Area-

Pretty much the same as Stage 13. The second to last screen was very tricky because between the turrets turning, firing and the magma walls rising, it is difficult to determine what causes the least lag.

Stage 18 -Underground Fortress-

I am very satisfied with this stage as well. Once again, lag was difficult to deal with, though I think I've managed well.

Stage 19 -Vicious Space-

By this point, the game truly becomes insane with the lag. It is difficult to predict, sometimes, shooting something cuts lag, other times it doesn't. I manipulated the organ things' and beetles' spawn timers as well as I could. At one point, I even turn around to shoot a beetle, which cuts ~2 frames of lag. The final boss is guarded by organ things and beetles, one of which I have to shoot so I don't get hit. In addition to this, it fires bullets at you. However, after 65 shots, the game is won, as you get treated to the epilogue.

Other comments

Useful Ram Adresses

  • 0xe32a - Y Position
  • 0xe32b - X Position
  • 0xe50e/0xe51e/0xe52e (and so on) - Spawn timer regulation for bad guys/Turrets' bullets on screen
  • 0xe50b/0xe51b/0xe52b (and so on) - Boss health. Keep in mind that it's counted by how many bullets have hit it.

Special Thanks

  • Vampier - Once again, he created a great (though incomplete) testrun, which showed that this game had TASing potential and was different enough from its NES twin to begin with.
  • Quibus - He gave me a lot of support when making the run, which also helped me to get through this
  • ferretfaucet - For having taken it upon himself to create an encode
  • Everyone else who commented my WIPs, especially in the IRC channel - You cool, yo!
  • Everyone else who I might've forgotten

Possible Improvements and Closing Comments

Due to the unpredicatbility of the lag, it's near impossible to tell whether some screens are as optimal as they could. I tried every screen until I was certain it couldn't be completed any faster, but of course, it's always possible. Also, going into the underpass/undermaze stages, originally I didn't understand covering a gate with your sprite makes you hit it instantly, so that's where you can also look for improvements. Overall, however, the run took a lot of effort, and I hope it reflects when watching the movie. By the end, creating the run felt more like a chore than anything, but I feel the end result is well worth it. I hope you enjoy watching this movie, and if you have any questions, once again, I'll be happy to answer.
~ scrimpy

Flygon: Added higher quality YouTube module.

Nach: This has got to be one of the most boring Contra games I've seen. But scrimpeh, wow, you really crushed this game, and did a wonderful job with what you had to work with, nice job! Accepting.

Last Edited by scrimpeh on 10/7/2018 4:09 PM
Page History Latest diff List Referrers