The purpose of this page is to document all of the known tricks
of the NES Teenage Mutant Ninja Turtles game so far.
Because of the nature of this site, we concentrate here on tricks
that are extremely difficult to execute in real play, but are useful
in the making of tool-assisted speedruns. For most of the tricks,
a frame advance
feature in an emulator is a definite must-have.
This only works ceilings with an opening (or ladder) adjacent to a 2 block long ceiling. Also the turtle must be able to jump to the top of this opening. If the turtle attacks at the correct frame he will get stuck in the ceiling which will immediately scroll the screen down. This can be used for radical shortcuts.
Floating Weapon Glitch
Pressing U+D and pressing L or R and then attacking glitches the game. The characters sprite changes and then they have a "weapon" floating around on the screen. For Donatello this comes in the form of Leo's sword that floats at the top of the screen ahead of him (in whichever direction he is facing). This weapon has a lot of advantages with killing enemies quickly.
The example shows the most striking application of this glitch. It is used to completely demolish the Technodrome while Donatello just stands there watching the mayhem.
Raphael Item Grab Glitch
Using the "Floating Weapon Glitch" with Raphael allows him to make contact with items just above his head. This is used to grab items from under the floor.
Getting inside the lip of a floor
When falling (or swimming from a ledge) the turtle can push against against the wall at the right time and get a few pixels into it. This positions the turtle a bit closer to its destination in the next area.
Landing on High Ledges
It is possible to land onto high ledges if the they are only 1 block thick. It requires jumping and positioning the turtle a few pixels inside the wall and holding the to the direction of the ledge. If done correctly, the turtle will land on the ledge. Note: This trick can be done in real time.
This can also be done in a similar fashion with a short jump (where the turtle does not get into spinning motion). This can be used to avoid doing a full jump and having to wait for the turtle to land.
Mouse Boss Always Vulnerable Glitch
Normally the Level 4 Boss (Mouser) will periodically close its mouth making it invulnerable to damage for a period of time. If you pause and unpause the game just before it closes, it will remain vulnerable.
Skipping Technodrome Post Boss-completion Scene
This glitch is not a time saver for a TAS but is an interesting glitch. The purple parts of the Technodrome give damage even when they are destroyed. If a turtle destroys the Technodrome and lands is position correctly, he will receive damage during the uncontrollable cut-scene. If this kills the turtle it bypasses the rest of the cut-scene and goes to the next level.
Another side effect is that in the next level, the turtle is not dead but has 0 health.
Thanks to lmphk for allowing embedding of his video.
Floating shuriken glitch
This can only be done with Michaelangelo. It is also not currently useful as a time-saver. It is possible to throw a shuriken at a ledge and have it get stuck next to the ledge. To get it stuck, it must be thrown from the right height while moving towards the ledge.
Note: This can be used in a TAS to lower input time of the video considerably. However, it would delay the actual game completion time.
Thanks to dave_dwfm for discovery of this trick and the YouTube video embedded here.
Taking damage can allow a turtle to make it across a pit that is normally can't be jumped across.
Keeping conveyor belt momentum
If you run in the same direction as the arrows of a conveyor built you get a nice speed boost. However, if you jump in that direction and let go of the arrow keys after only 2 frames, you will retain that fast speed throughout the jump. You must hold the direction on the first two frames of the jump to get the turtle to jump in that direction, but if you let go immediately after he won't lose the extra speed boost.
TODO: GIF demonstration
Low Health Weapon Boost
If a turtles health is under 50% then they can do more damage against enemies.
Here is a complete list of possible weapons and damage amounts.
Item Drop Manipulation
Random encounters depend on address 0x03D8. This is an enemy kills counter. When this value gets to 24, the next enemy kill has a chance for a random drop. This drop can be a boomerang, shuriken, triple shuriken, or nothing at all. Drops only happen when this counter is 24.
Enemy type manipulation
: When I was researching this game I found that RAM addresses 0x0604 determined which types of enemies would appear on the screen. This would usually change before a screen. Many screens are random as to which enemy types will appear, this address is the key to manipulating them. Basically it has to do with how many enemies are loaded on the screen, after a certain number the set changes. I no longer recall any more details than that however.
This consideration is extremely important for making a TAS!
The technodrome location in Stage 5 must be manipulated to be in the closest sewer. Its location is determined by address 0x0055. This value is determined just before the BEGINNING OF STAGE 1. If one were to wait until stage 5 to worry about the technodrome location, the entire TAS would have to be redone.
All properties of the turtle, enemies, and weapons of the game are in Page 4 of the game's RAM (04xx). The properties are laid out vertically and the objects are horizontal. This means that 0400 is the sprite ID of the turtle, and 0401 is the sprite ID of the first weapon slot. All properties of the turtle will be 04x0. All sprite IDs will be 040x.
The game has 1 player "slot" meaning that only 1 player can be loaded into memory. It has 3 weapon slots (because of the triple shuriken weapon). It has 8 enemy slots, meaning 8 enemies can be loaded on the screen at once.
Here is a snapshot of the entire Page 4:
|Y pix speed||04bx||00||00||00||00||00||00||00||00||00||00||00||00||00||00||00||00|
|Y subpix speed||04cx||00||00||00||00||00||00||00||00||00||00||00||00||00||00||00||00|
|X pix speed||04ex||00||00||00||00||00||01||01||FE||FE||00||00||00||00||00||00||00|
|X subpix speed||04fx||00||00||00||00||00||60||60||A0||A0||00||00||00||00||00||00||00|
- P = Player (the turtle)
- W = Weapon
- E = Enemy
- X = Not used
- Sprite ID
- A unique value that tells the game what sprite belongs to object currently. For instance, as the turtle walks, he alternates between 08, 09, 0A, 09 which are the different walking poses.
- ID counter
- This controls what sprites are put in Sprite ID. For instance, as the turtle walks it counts 0, 1, 2, 3. 3 signifies that it is the 4th pose in the turtles walking animation.
- Timer sprite
- This is the sprite timer. It controls how long the sprite will be loaded before the next one appears.
- Hit animation
- Y position
- The vertical on-screen position of the object
- Y sub-pixel
- The subpixel value of vertical on-screen position. Sub-pixel is where remainders from division are stored.
- X position
- The horizontal on screen position of the object
- X subpixel
- The subpixel value of horizontal on-screen position. Sub-pixel is where remainders from division are stored.
- Not used
- The game does not seem to use this row
- Y pix speed
- Vertical pixel speed. The number of pixels the character will move next frame.
- Y subpix speed
- The amount of subpixel change that will occur on the next frame.
- X pix speed
- Horizontal pixel speed. The number of pixels the character will move next frame.
- X subpix speed
- The amount of subpixel change that will occur on the next frame.
Other RAM Addresses
- 00FD - Camera x position
- 0050 - Camera x 2nd byte
- 007D - # of bombs diffused
- 0077-007A - Turtles' health
- 0565-0569 - Enemy Health
- 0505-0509 - Enemy invulnerability counter - Counts 24 to 2 every 2 frames (48 frame invulnerability
- 0604 - Enemy Set (which types of random enemies are on screen)
- 03D8 - Enemy Kills counter - Counts 0 - 24. On 24 a random drop can occur.
An extensive RAM Map was done by adelikat
and can be found here