View Page Source

Revision (current)
Last Updated by Unknown on 1/1/2022 6:13 PM
Back to Page

The purpose of this page is to document all the known tricks of the SNES Super Mario World 2: Yoshi's Island. There is [Forum/Topics/282|discussion thread] of this game (almost as old as the website itself!).

%%TOC%%

%%TAB Movies%%

To see these tricks used, you can watch the currently published movies:

* [1898M]%%%
* [2320M]%%%
* [2751M]%%%

%%TAB TODO%%

Add:

* Way more info
* Some simple .bk2/.smv demonstrations of these tricks
* Diagrams, gifs

%%TAB_END%%

!! Various mechanics

For the sake of clarity, let < and > denote left and right directional input, respectively. Let _ denote no directional input.

! Floating
Release B button 3 (try 4 in some instances) frames before 'descent' sprite begins and wait 1 (try 2 or 3 in some instances) frames before holding the B button again.

To reach higher ledges by use of floating just once, try releasing the B button at the right time (see above) rather than holding it down until Yoshi begins to float, as maximum height can only be reached in this manner.

In between floats, the optimal acceleration input is

< > > < > > > < > > > < > > _ > ...

where the first < is pressed 8 frames before Yoshi comes out of the 'fluttering' animation. After > _ >, right should be held until Yoshi's speed is oscillating at its max again. 

To reach maximum height from a float boost, release B button 8 frames before float sprite appears for 1 frame, then hold.

! Enemy boost + platform trick
After jumping on an enemy and doing a perfectly timed jump off of certain platforms (with no float/landing sprites in between) will not cancel the float boost; moving platforms always work; anything will work as long as there aren't any float/landing sprites.

! Left + right glitch warping
The warp glitch takes 3 different forms, all of which are performed at the world map.

* Left+Right - determined by the # of coins you collected
* Right, then Left+Right - determined by the # of red coins you collected
* Right, then Left, then Left+Right - inconclusive, but surmised to be determined by the last pipe you entered.

This is caused by the game falling of a list of the unlocked levels due to reading too fast and skipping the terminating entries resulting in incorrectly using junk after the list, which just so happens to be the coin counts.

! Hitting potted plants with eggs
Hitting potted plants with eggs moves them twice as fast as pushing, but only with a direct hit. Ricocheted eggs don't nearly have as much effect.

Weird glitch: Ricochet an egg off of the top of an egg block with a horizontal throw onto a pot and it breaks when it falls back down, without having to push it off of a ledge(?). Or hit it off screen at the very top edge (at the flowers) with a perfectly horizontal throw(?). Something to do with launching it high enough off the ground to register it as broken when it lands(?). 

Keys hidden inside vases will move in the direction Yoshi is facing once the vase is broken. Abuse this by facing left when approaching a vase from the left to make the key fly at you (e.g. 1-4).

! Spitting out/making eggs
Release left/right direction so that Yoshi's speed freezes on the average. If no directional input is held, Yoshi can use his tongue/handle enemies without slowing down at all, as long as he is not touching the floor.

Use of Memory Watch of speed when making eggs will yield the least amount of slowdown. It should be noted that when making eggs/holding out the tongue, your speed freezes when you release forwards, and you can sometimes use this to your advantage (but not at the scale of the Jump trick in Super Mario World). ''[TODO]: Write a more descriptive explanation.''

! Enemy jump boost
Press B button 3 frames before landing on an enemy (ie.collision 'explosion') for maximum height.

! Taking a hit
Yoshi can take a hit without stalling (save for grabbing back Baby Mario) if perfectly timed jumps are done in between.

Baby Mario will fly away in the opposite direction to which Yoshi is facing.

! Egg blocks
When hitting egg blocks on the fly, use the upward tongue to grab the egg rather than backwards jumping and grabbing from behind.

Additionally, you can press a combo of left and right, then release to freeze your speed on a good oscillation. You then press A, which locks you in the egg aiming animation, while facing backwards. You then time the jump so that you cancel the egg and jump on the next frame without losing your good oscillation. This results in a backwards facing jump with a speed of 767. From there, you can use Yoshi's tongue to grab at sprites behind you, but only do so when you absolutely need to.

! Points
Getting at least one red coin will lose you ~30 frames at the goal tally-up; getting a flower will be another ~30. Each extra item will cost one frame each.

! The Goal Ring
Touch the lowest 6 pixels of the of the goal ring activation line (it checks Yoshi's y center position) as you pass through it to make Baby Mario not travel as high and get caught by the following Yoshi frames faster (check a diagram [https://imgur.com/0ELYxL2|here]).

! Skipping level intros
Alternating between A and B turbo (rather than just a single turboed button) exits level intro titles much faster. It's also easier and saves rerecords on the world map when choosing a level; wherever input is accepted by both A and B it's very useful. Pressing down can also get through dialogue, so turbo down with A.

! Egg swapping
Switch between different eggs in Yoshi's egg stock by simply cancelling the targeting with 'Y'.

! Using monkeys or shells as portable jumping platforms
Try ricocheting koopa shells off of a wall after getting a jump boost from an enemy and jumping on the shell for another jump boost. The monkey or shell must be spit upwards.

Note: Monkeys only work in some circumstances and may not need to be used at all.

After ricocheting a shell off of a wall, swallow it immediately before jumping on it and you will gain a boost with the shell in your mouth! Repeat for as much needed! Shell must be jumped on at the very edge; otherwise simultaneous swallowing and jumping won't be possible. Infinite jump boosts will only work with shells, not monkeys.

! Jumping
Press B button 4 frames before Yoshi lands (i.e. landing sprite) for a perfectly timed jump. When jumping off of slopes, this is important to prevent speed decrements. If a jump off of a slope cannot be done 4 frames before landing (and sometimes must be done 3 frames before) Yoshi will lose speed; try to modify the previous jump to easily fix it.

Note: There is an interesting mini boost when jumping up an uphill slope at max speed, if you do a little variation of the acceleration trick (on the frame when you're about to touch the ground, press left one frame). It's unknown yet if this saves any time, but for 2 frames you'll be above max speed and then 1 frame below it, then go back to normal oscillating max speed.

Sometimes, if you jump on certain frames, your speed is reduced to an average of 752, so it should always be tested with every jump. Generally, if you want to jump again straight away after landing on a flat surface, it is optimal to jump on the third frame possible. Each jump should be tested.

! Long jumping
Sometimes Yoshi can jump through narrow passages/entrances and 'squeeze' through enemies and other obstacles by holding down the B button no longer than necessary (so Yoshi will not get hit or run into the side of the ledge), releasing it for as long as needed until the B button can be held again without any collisions to stay off ground for a little longer (without any floating); this can only be done if Yoshi is not falling, and is still increasing height. Can't really jump any further, just at a shorter 'arch'.

! Pipe animation Cancelling
If you jump and press down to do a downward pound when attempting to go down pipes, Yoshi will jump up, and the pressing down will make Yoshi activate the pipe, but will have jumped first. The result is that Yoshi jumps, doesn't do the pound animation, and the screen fades black, loading to the next room that Yoshi would enter from the pipe. This saves time from going into the pipe normally.

! Acceleration
Get a faster acceleration when Yoshi is at a complete stop (also with jumping arrows) by pressing Left once, then Right 4 times, then Left, then Right 3 times, then Left, then Right 3 times, then Left, then Right 3 times, then Left, then Right 2 times, then Left, then Right for the remainder. This can be done either on the ground or when jumping.

The following acceleration method is slightly faster, but will not work if Yoshi is on the floor:

< > > > > < > > > < > > > < > > > < > > > < > > _ > ...

After the > _ >, right should be held until Yoshi's speed is at its max.

! Slope-Oscillation
When you jump on a slope, jump off it on the 2nd frame possible. This will change your average speed (and the low and high respectively). Normal average speed from initial acceleration is 760, but with the slope trick, the max becomes 767. Different positions on the slope must be tested, and sometimes it's not possible to reach 767. But, speeds above 760 can still be reached, such as 765.

Once you perform the slope trick, you must constantly watch memory to make sure the average speed does not decrease down to 752. 

! Speed Oscillation Freeze
Yoshi's speed oscillates; this speed however is frozen when you jump and let go of right/left (which is essential for keeping speed while making eggs.) If Yoshi's speed is above average when you let go if left/right, it will reduce down to the average (thus no Super Mario World Hop Glitch) but letting go can allow slight sub pixel advantage by freezing your speed on a good oscillation. It also allows for turning left, and hopping backwards without losing significant speed; however, you need to accelerate so you end up with the same speed again, and prepare an egg shot which faces you in the opposite direction. 


! Halting
Directly before landing (4 frames) press down three times to come to a complete stop; hold the new direction for 6 frames then begin the acceleration trick.

The fastest way to turn around is to lick a wall and hold the opposite the direction; near-instantly, Yoshi's speed falls to 0.

! Enemies
Boos give 2 stars when killed; throw an egg through one and turn Yoshi's back to it for a couple of frames and the egg should ricochet off of a wall and hit the ghost when it is vulnerable.
Green piranha plants can be passed through very briefly if they are stunned with an egg.

Puffer fish in the 3-3 submarine area can be passed through right after being stunned with an egg.

Crabs can be destroyed with three eggs.

The 3-8 boss, Naval Piranha, can be skipped if you shot an egg at it before the transformation sequence.

00:7A94  RAM address for total damage done to Prince Froggy (when overflow, battle over). Do at least #$2AAA damage each hit for 6-hit kill.

! Try to avoid running through "cloaked walls" as much as possible
Obvious instances include those in the 'Bandit Room' of 2-8 and the beginning of the last area of 4-7.

! Middle-rings
For the unavoidable middle-rings, try to gather as many stars as possible beforehand to shorten the middle-ring star counter.

! Star cloud glitch
Sometimes star clouds will not produce 5 stars; this is most often seen with invisible clouds which are hit immediately after appearing. They usually produce fewer than 5 stars when the glitch is in effect, but can sometimes produce 6 stars.

! Moving arrows
Swallow + jump trick can only be used on the right side of the arrow. Same application as the shell/monkey trick to go up without ledges, except no wall needed.

! Turning around
On the ground, hold down for 3 frames to come to a halting stop, then use the acceleration trick to move in the opposite direction.
When falling off of ledges, 7 frames before the fall (ie.when the falling sprite shows) release all buttons for 1 frame, hold down for 2 frames, hold down + (left or right, whichever direction Yoshi is turning) for 1 frame, then hold the new direction.

! Go through walls
When standing on a pinwheel that rotates on a dotted line, have Yoshi stand on top, and tap right when being pushed against a wall. It could be that any effect that pushes Yoshi right can work, and you just tap the same direction; more testing needed.

! Going through walls as Baby Mario:
When running up a vertical wall, you let go for three frames and then press the direction you were running again. Baby Mario will be inside the wall briefly, and from here you can do some weird jumping to get inside a wall like this: http://dehacked.2y.net/microstorage.php/info/1808235845/baby%20mario.smv
More research needs to be done, but the theory is proven!

! Slope boost as Baby Mario
Baby Mario behaves different from Yoshi on slopes. If you are running down a slope, jump and you will get a significant speed boost.

! Clip past corners
If you are falling past a corner, when moving horizontally, running off the edge or clipping it for one frame when falling makes Yoshi fall slightly quicker than just jumping right down, because he gets a speed boost for 1 frame.

! Off screen trick
Some sprites, such as middle rings, don't exist when they are off screen, so you can pass through them. If you continuously jump the first frame you land, you can make the screen not scroll up to where you are, thus keeping Yoshi off screen.

! 6-7 Pinwheel zip
In the 6-7 level, there is a pinwheel. If you walk along it as it rolls, near the end you'll get zipped up to the very top of the level, thus skipping the need to ride the platforms up to the top, which takes a long time. This is confirmed to work using the (E) ROM, but so far unsuccessful with the (U) ROM.

! Free minigames
You can play the thief minigames directly from the map screen if you enter a code (hold select and press x,x,y,b and a in order). This grants easy inventory items and is faster than finding each minigame hut and its corresponding key.

----

!! Memory addresses

! WRAM

Holds addresses for general purpose (game mode, frame counter, stack, etc), level tile data, level header, boss info, DMA/HDMA tables, mirrors of various registers, etc. The full WRAM map (in progress) can be found [https://github.com/Raidenthequick/yoshisisland-disassembly/wiki/WRAM-Map|here] and [https://www.smwcentral.net/?p=memorymap&game=yi&region=ram|here]. These are the most useful addresses:

||Address||Size||Description
|[https://smwc.me/m/yi/ram/7E0030|$7E0030]|2 bytes|Frame counter
|[https://smwc.me/m/yi/ram/7E0039|$7E0039]|2 bytes|Camera X position
|[https://smwc.me/m/yi/ram/7E003B|$7E003B]|2 bytes|Camera Y position
|[https://smwc.me/m/yi/ram/7E0118|$7E0118]|2 bytes|Game mode. You can find the list of valid values [https://github.com/Raidenthequick/yoshisisland-disassembly/wiki/Game-Modes|here].
|[https://smwc.me/m/yi/ram/7E093C|$7E093C]|2 bytes|Controller 1 data, format BYsSUDLRAXlr0123

 
! Super FX RAM

Spans from $700000 to $701FFF, and it's mirrored by $006000-$007FFF in the 65816 CPU. Bank $70 is read as bank $00 by the SFX CPU. It holds addresses for player info, sprite info, ambient sprite info, RNG, timers, OAM, save files, etc. The full SRAM map (in progress) can be found [https://github.com/Raidenthequick/yoshisisland-disassembly/wiki/SRAM-Map|here] and [https://www.smwcentral.net/?p=memorymap&game=yi&region=sram|here]. These are the most useful addresses:

Note: Sprite tables are 96 bytes long, 4 bytes for each sprite slot (24 slots). Ambient sprite tables are 64 bytes long, 4 bytes for each ambient sprite slot (16 slots).

||Address||Size||Description
|[https://smwc.me/m/yi/sram/70008A|$70008A]|1 byte|X subposition
|[https://smwc.me/m/yi/sram/70008C|$70008C]|2 bytes|X position
|[https://smwc.me/m/yi/sram/70008A|$70008E]|1 byte|Y subposition
|[https://smwc.me/m/yi/sram/70008C|$700090]|2 bytes|Y position
|[https://smwc.me/m/yi/sram/7000B4|$7000B4]|2 bytes|X speed
|[https://smwc.me/m/yi/sram/7000AA|$7000AA]|2 bytes|Y speed
|[https://smwc.me/m/yi/sram/7000AC|$7000AC]|2 bytes|Yoshi state
|[https://smwc.me/m/yi/sram/7000C4|$7000C4]|2 bytes|Yoshi facing direction (#$0000 = right, #$0002 = left)
|[https://smwc.me/m/yi/sram/7000E4|$7000E4]|2 bytes|Egg cursor X position
|[https://smwc.me/m/yi/sram/7000E6|$7000E6]|2 bytes|Egg cursor Y position
|[https://smwc.me/m/yi/sram/7000EE|$7000EE]|2 bytes|Egg cursor angle, ranges from #$0000 = lowest to #$2E00 = highest
|[https://smwc.me/m/yi/sram/7000FC|$7000FC]|2 bytes|Player collision flags with terrain
|[https://smwc.me/m/yi/sram/70011C|$70011C]|2 bytes|X centered position
|[https://smwc.me/m/yi/sram/70011E|$70011E]|2 bytes|Y centered position
|[https://smwc.me/m/yi/sram/700120|$700120]|2 bytes|Yoshi's hitbox half width, relative to its center
|[https://smwc.me/m/yi/sram/700122|$700122]|2 bytes|Yoshi's hitbox half height, relative to its center
|[https://smwc.me/m/yi/sram/700152|$700152]|2 bytes|X extension of tongue
|[https://smwc.me/m/yi/sram/700154|$700154]|2 bytes|Y extension of tongue
|[https://smwc.me/m/yi/sram/7001D6|$7001D6]|2 bytes|Invincibility timer, starts at #$00A0 on hit
|[https://smwc.me/m/yi/sram/7001EE|$7001EE]|2 bytes|Timer for sprite in Yoshi's mouth to be automatically swallowed. Starts off at #$04B0 upon sprite entering mouth
|[https://smwc.me/m/yi/sram/7001F4|$7001F4]|2 bytes|Transformation timer
|[https://smwc.me/m/yi/sram/700F00|$700F00]|96 bytes|Sprite table: word 1 = sprite state
|[https://smwc.me/m/yi/sram/7010E0|$7010E0]|96 bytes|Sprite table: word 2 = sprite X position
|[https://smwc.me/m/yi/sram/701180|$701180]|96 bytes|Sprite table: word 2 = sprite Y position
|[https://smwc.me/m/yi/sram/701360|$701360]|96 bytes|Sprite table: word 1 = sprite ID (valid values [https://github.com/Raidenthequick/yoshisisland-disassembly/wiki/Sprite-IDs|here])
|[https://smwc.me/m/yi/sram/701970|$701970]|2 bytes|Random number generator (RNG)
|[https://smwc.me/m/yi/sram/701BB6|$701BB6]|96 bytes|Sprite table: word 1 = sprite hitbox half width, word 2 = hitbox half height (both relative to its center)
|[https://smwc.me/m/yi/sram/701CD6|$701CD6]|96 bytes|Sprite table: word 1 = sprite hitbox X centered position, word 2 = hitbox Y centered position

 
! ROM

There's a [https://github.com/Raidenthequick/yoshisisland-disassembly|disassembly of this game made by Raidenthequick], which contains a lot of technical information. Also, it's currently [https://www.smwcentral.net/?p=nmap&m=yirom|50% mapped at SMWCentral].


! Lua scripts

There is a utility script currently being developed for [https://github.com/brunovalads/yoshis-island/tree/master/BizHawk|BizHawk] for TASing and research. The script displays info about the __player__ (position, speed, hitboxes, eggs, etc), __sprites__ (position, speed, hitboxes, exclusive AI, spawning areas, etc), __level__ (sprite data, tile data, map, etc), __overworld__ (Left+Right glitch aid, etc) and some __general info__. Also, it provides some cheats that can help during the TAS development or other researches, such as: free movement, invincibility, sprite dragging and spawning, level/room warping, force level beating, etc.
There's a version for [https://github.com/brunovalads/yoshis-island/blob/master/Yoshis-Island-Utilities.lua|Snes9x-rr] as well, but it lacks some features due the limitations of the emu screen and its Lua API.
 
! Cheat codes

||Cheat code||Description
|83A85C00|Yoshi destroys all enemies in his way
|83A86E80|Monsters have no effect
|83A8D700|Baby Mario stays on saddle even if Yoshi hit
|86CFB480|Baby Mario stays on saddle even if Yoshi hit
|8ADA2A01|Infinite egg ricochets
|83B106BD|Eggs can ricochet through enemies
|8ADA35FF|Eggs do not leave when over-ricocheted
|8BE0B3xx|Jump height/speed. #$FB = normal, less than #$FB = higher jumps
|8BCE1C00|Moon jump