TASVideos

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

Game Resources / SNES / Yoshis Island

The purpose of this page is to document all the known tricks of the SNES Super Mario World 2: Yoshi's Island.

Table of contents [expand all] [collapse all]

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 objects 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 very bottom of the goal ring as you pass through it to make Baby Mario not travel as high and get caught by the following Yoshi 5 frames faster.

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-4 mid boss, Narval 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. 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 objects, 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.

RAM

Notation: For arrays of addresses, the syntax (vx:2,vy:2)*24 means that the array consists of 24 records, each with two 2-byte entries, vx and vy.

There are 24 object slots in the game, used for as diverse things as Yoshi, eggs, enemies, red coins and flowers, but not normal coins. Many of the addresses below refer to these objects.

Address Description
7E011D scroll x
7E011F scroll y
7E1062 Baby Bowser's current damage. End battle if = 3
7E1076 Big Bowser's current damage. End battle if = 7
7E1078 Salvo's current health. End battle if less than 4C00
7E107C Hookbill's current damage (increments by 2). End battle if = 6
7E1084 Salvo's defense mode. If = #01 defense is down

Super FX RAM

700000-701FFF is mirrored by 006000-007FFF in the 65816 CPU. Bank 70 is read as bank 00 by the SFX CPU.

Only 20 objects are allowed on screen at once.

Address Description
700070 Joypad register
70008C X position (2 bytes) (left side)
700090 Y position (2 bytes) (left side)
7000A8 X speed (2 bytes)
7000AA Y speed (2 bytes)
7000B4 Momentum / next X speed (2 bytes)
7000BE Yoshi's current pose
7000C4 Direction Yoshi is facing (00=right 02=left)
7000D0 Jump mode
7000E4 X position of Egg target
7000E6 Y position of Egg target
7000EE Radial position of Egg target
70011C X position (centered)
70011E Y position (centered)
700152 Y extension of tongue
700154 X extension of tongue
7001B2 Baby Mario status (bit 7=safe in saddle)
7001EE Time left before Yoshi automatically swallows what's in his mouth (2 bytes)
700F00-700F9F Object slot data(?)
700F00 Baby Mario status (0A=safe on saddle 10=lost in bubble)
7010E0-70117F Object x-position (?:1,subx:1,x:2)*24
701180-70121F Object y-position (?:1,subx:1,y:2)*24
701220-70127F Object velocity (vx:2,vy:2)*24
701360-7013BF Object kind (id:2,?:2)*24
701400-70149F Direction objects face (byte 3)
701814 Baseball Catcher's damage
701900 Burt's pants
701902 Burt's current health. End battle when health = 0
70194A+4E Crab's health (from 0-3)
70195C Raphael's current health. End battle when hit if = 1
701964 Big Boo's current face width
701974 Level Timer (2 bytes)
701976-7019CE Object rotation data(?). Upper bits affect angle of object, lower bits are the current sequence (ie.walking, idle, looking back and forth, etc.)
7019BA Total damage to Big Boo (2 bytes). End battle when >= 01C1
701A33 Raphael's current mode (00=normal 01=angry 02=furious)
701A36-701A9E Object size data(?)
701A7A Big Boo's current body size
701A94 Total damage to Prince Froggy (2 bytes). End battle if => FFFF.
701DF6 Total number of eggs in stock (x2)
701DF8-701E03 6 egg slots (2 bytes each)
701E14 Y position (subpixel)
701E10 X position (subpixel)

Cheat codes

Cheat code Description
83A85C00 Yoshi destroys all enemies in his way
83A86E80 Monsters have no effect
83A8D700 Mario stays on saddle even if Yoshi hit
86CFB480 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

ROM

CHECK BABY BOWSER'S DAMAGE

  $0D/CB0D AC 62 10    LDY $1062  [$0D:1062]   A:0056 X:0040 Y:0040 P:envmXdizC
  $0D/CB10 C0 03       CPY #$03                A:0056 X:0040 Y:0003 P:envmXdizC	check if=3
  $0D/CB12 30 08       BMI $08    [$CB1C]      A:0056 X:0040 Y:0003 P:envmXdiZC	if=3 then end battle
  $0D/F12F AC 62 10    LDY $1062  [$0D:1062]   A:008A X:0034 Y:0040 P:envmXdizc
  $0D/F132 C0 02       CPY #$02                A:008A X:0034 Y:0002 P:envmXdizc	check if=2
  $0D/F134 30 03       BMI $03    [$F139]      A:008A X:0034 Y:0002 P:envmXdiZC	if=2 then run last hit sequence
CHECK BURT'S HEALTH

  $06/A860 BC 36 7D    LDY $7D36,x[$06:7D76]   A:0000 X:0040 Y:001E P:envmXdizc
  $06/A863 88          DEY                     A:0000 X:0040 Y:005D P:envmXdizc
  $06/A864 30 61       BMI $61    [$A8C7]      A:0000 X:0040 Y:005C P:envmXdizc	doesn't branch if Burt is hit
  $06/A866 F0 5F       BEQ $5F    [$A8C7]      A:0000 X:0040 Y:005C P:envmXdizc
  $06/A868 B9 00 6F    LDA $6F00,y[$06:6F5C]   A:0000 X:0040 Y:005C P:envmXdizc
  $06/A86B C9 10 00    CMP #$0010              A:0010 X:0040 Y:005C P:envmXdizc
  $06/A86E D0 57       BNE $57    [$A8C7]      A:0010 X:0040 Y:005C P:envmXdiZC
  $06/A870 B9 38 7D    LDA $7D38,y[$06:7D94]   A:0010 X:0040 Y:005C P:envmXdiZC
  $06/A873 F0 52       BEQ $52    [$A8C7]      A:0014 X:0040 Y:005C P:envmXdizC
  $06/A875 BD E2 70    LDA $70E2,x[$06:7122]   A:0014 X:0040 Y:005C P:envmXdizC
  $06/A878 38          SEC                     A:0094 X:0040 Y:005C P:envmXdizC
  $06/A879 F9 D6 7C    SBC $7CD6,y[$06:7D32]   A:0094 X:0040 Y:005C P:envmXdizC
  $06/A87C 85 00       STA $00    [$00:7960]   A:0017 X:0040 Y:005C P:envmXdizC
  $06/A87E 49 FF FF    EOR #$FFFF              A:0017 X:0040 Y:005C P:envmXdizC
  $06/A881 1A          INC A                   A:FFE8 X:0040 Y:005C P:eNvmXdizC
  $06/A882 99 76 7C    STA $7C76,y[$06:7CD2]   A:FFE9 X:0040 Y:005C P:eNvmXdizC
  $06/A885 DA          PHX                     A:FFE9 X:0040 Y:005C P:eNvmXdizC
  $06/A886 BB          TYX                     A:FFE9 X:0040 Y:005C P:eNvmXdizC
  $06/A887 22 4B B2 03 JSL $03B24B[$03:B24B]   A:FFE9 X:005C Y:005C P:envmXdizC
SUBTRACT/COMPARE HEALTH OF BURT

  $06/A157 A9 05       LDA #$05                A:2E1D X:0040 Y:0000 P:envMXdizC
  $06/A159 9D A2 74    STA $74A2,x[$06:74E2]   A:2E05 X:0040 Y:0000 P:envMXdizC
  $06/A15C DE 02 79    DEC $7902,x[$06:7942]   A:2E05 X:0040 Y:0000 P:envMXdizC	decrement health by two
  $06/A15F DE 02 79    DEC $7902,x[$06:7942]   A:2E05 X:0040 Y:0000 P:envMXdizC
  $06/A162 30 10       BMI $10    [$A174]      A:2E05 X:0040 Y:0000 P:envMXdizC	check if health less than 0
  $06/A164 A9 1A       LDA #$1A                A:2E05 X:0040 Y:0000 P:envMXdizC
  $06/A166 9D 36 7A    STA $7A36,x[$06:7A76]   A:2E1A X:0040 Y:0000 P:envMXdizC
  $06/A169 C2 20       REP #$20                A:2E1A X:0040 Y:0000 P:envMXdizC
  $06/A16B A9 F8 FF    LDA #$FFF8              A:2E1A X:0040 Y:0000 P:envmXdizC
  $06/A16E 9D 38 7A    STA $7A38,x[$06:7A78]   A:FFF8 X:0040 Y:0000 P:eNvmXdizC
  $06/A171 C2 20       REP #$20                A:FFF8 X:0040 Y:0000 P:eNvmXdizC
  $06/A173 6B          RTL                     A:FFF8 X:0040 Y:0000 P:eNvmXdizC
ADD/COMPARE DAMAGE TO BIG BOO

  $04/B8A9 B5 16       LDA $16,x  [$00:79BA]   A:7018 X:0044 Y:0001 P:envmXdizc
  $04/B8AB 18          CLC                     A:00C8 X:0044 Y:0001 P:envmXdizc
  $04/B8AC 69 18 00    ADC #$0018              A:00C8 X:0044 Y:0001 P:envmXdizc
  $04/B8AF 8D 5E 10    STA $105E  [$04:105E]   A:00E0 X:0044 Y:0001 P:envmXdizc
  $04/B8B2 18          CLC                     A:00E0 X:0044 Y:0001 P:envmXdizc
  $04/B8B3 69 30 00    ADC #$0030              A:00E0 X:0044 Y:0001 P:envmXdizc	add damage
  $04/B8B6 C9 C1 01    CMP #$01C1              A:0110 X:0044 Y:0001 P:envmXdizc	check if damage is maxed out
  $04/B8B9 30 24       BMI $24    [$B8DF]      A:0110 X:0044 Y:0001 P:eNvmXdizc
  $04/B8DF 95 16       STA $16,x  [$00:79BA]   A:0110 X:0044 Y:0001 P:eNvmXdizc
  $04/B8E1 F6 78       INC $78,x  [$00:7A1C]   A:0110 X:0044 Y:0001 P:eNvmXdizc
  $04/B8E3 60          RTS                     A:0110 X:0044 Y:0001 P:envmXdizc
  $06/97B5 A9 40       LDA #$40                A:0004 X:0058 Y:0000 P:envMXdizc	set Burt's pants Y coord
  $06/97B7 9D 00 79    STA $7900,x[$06:7958]   A:0040 X:0058 Y:0000 P:envMXdizc
  $06/97BA A9 0A       LDA #$0A                A:0040 X:0058 Y:0000 P:envMXdizc	set Burt's health
  $06/97BC 9D 02 79    STA $7902,x[$06:795A]   A:000A X:0058 Y:0000 P:envMXdizc
CHECK SALVO SIZE/HEALTH

  $06/866E AC 79 10    LDY $1079  [$06:1079]   A:0000 X:0058 Y:00FF P:envmXdiZc
  $06/8671 C0 4C       CPY #$4C                A:0000 X:0058 Y:004B P:envmXdizc
  $06/8673 B0 4B       BCS $4B    [$86C0]      A:0000 X:0058 Y:004B P:eNvmXdizc	set as dead if health less than #4C
SET INITIAL SALVO SIZE/HEALTH

  $06/831E A9 00 B0    LDA #$B000              A:0100 X:0058 Y:000C P:envmXdizc
  $06/8321 8D 78 10    STA $1078  [$06:1078]   A:B000 X:0058 Y:000C P:eNvmXdizc
INCREASE SALVO SIZE/HEALTH UNTIL IT REACHES #FFFF

  $06/8B94 BB          TYX                     A:000E X:000E Y:0058 P:envmXdizc
  $06/8B95 BD 96 7A    LDA $7A96,x[$06:7AEE]   A:000E X:0058 Y:0058 P:envmXdizc
  $06/8B98 D0 12       BNE $12    [$8BAC]      A:0000 X:0058 Y:0058 P:envmXdiZc
  $06/8B9A AD 78 10    LDA $1078  [$06:1078]   A:0000 X:0058 Y:0058 P:envmXdiZc
  $06/8B9D 18          CLC                     A:B000 X:0058 Y:0058 P:eNvmXdizc
  $06/8B9E 69 40 02    ADC #$0240              A:B000 X:0058 Y:0058 P:eNvmXdizc
  $06/8BA1 30 03       BMI $03    [$8BA6]      A:B240 X:0058 Y:0058 P:eNvmXdizc
  $06/8BA6 8D 78 10    STA $1078  [$06:1078]   A:B240 X:0058 Y:0058 P:eNvmXdizc
CHECK IF EGG STOCK MAXED OUT

  $03/BEC4 AD F6 7D    LDA $7DF6  [$03:7DF6]   A:0003 X:0058 Y:0000 P:envmXdizc
  $03/BEC7 1A          INC A                   A:000A X:0058 Y:0000 P:envmXdizc	increment current egg stock
  $03/BEC8 1A          INC A                   A:000B X:0058 Y:0000 P:envmXdizc
  $03/BEC9 C9 0E 00    CMP #$000E              A:000C X:0058 Y:0000 P:envmXdizc	check if maxed out
  $03/BECC 90 47       BCC $47    [$BF15]      A:000C X:0058 Y:0000 P:eNvmXdizc	branch if not maxed out
  0b:c720 f0 04 1e lm r0,($1e04)   r0=$0000 SRAM=00:1E04 ALT1=0	change to 1e06 to allow 7 eggs (add 2 for any extra egg stocks)
  0b:c723 e0       dec r0          r0=$ffff S=1
CHECK IF EGG AT LAST RICOCHET

  0a:da24 40       ldw (r0)        r0=$0003 SRAM=00:159A
  0a:da25 15       to r5
  0a:da26 3e       alt2            ALT2=1
  0a:da27 63       sub #3          r5=$0000 Z=1 CY=1 ALT2=0	#3 is maximum number of ricochets (change to 64 for 4 max ricochets)
  0a:da28 0c 36    bcc $da60
WHEN EGG HAS REACHED LAST RICOCHET, DISABLE IT
  0a:da2a d0       inc r0          r0=$0005
  0a:da2b f0 9e 00 iwt r0,#$009e   r0=$009e
  0a:da2e 3e       alt2            ALT2=1
  0a:da2f a0 3d    sms ($007a),r0  SRAM=00:007A ALT2=0
  0a:da31 a5 0e    ibt r5,#$0e     r5=$000e
  0a:da33 f0 c0 0e iwt r0,#$0ec0   r0=$0ec0
  0a:da36 51       add r1          r0=$0f4c CY=0
  0a:da37 b5       from r5
  0a:da38 30       stw (r0)        SRAM=00:0F4C
70159A egg slot address for ricochet counter

SET INITIAL SPEED FOR YOSHI'S JUMP

  0b:e0b1 f0 60 fb iwt r0,#$fb60   r0=$fb60
  0b:e0b4 3e       alt2            ALT2=1
  0b:e0b5 a0 55    sms ($00aa),r0  SRAM=00:00AA ALT2=0
LOAD OBJECT SEQUENCE

  $03/9A90 BD 60 73    LDA $7360,x[$03:73BC]   A:9A8F X:005C Y:0010 P:eNvmXdizc	load object byte
  $03/9A93 0A          ASL A                   A:00AD X:005C Y:0010 P:envmXdizc
  $03/9A94 7D 60 73    ADC $7360,x[$03:73BC]   A:015A X:005C Y:0010 P:envmXdizc
  $03/9A97 C2 10       REP #$10                A:0207 X:005C Y:0010 P:envmXdizc
  $03/9A99 DA          PHX                     A:0207 X:005C Y:0010 P:envmxdizc
  $03/9A9A AA          TAX                     A:0207 X:005C Y:0010 P:envmxdizc
  $03/9A9B BF 2E 85 03 LDA $03852E,x[$03:8735] A:0207 X:0207 Y:0010 P:envmxdizc
  $03/9A9F 85 00       STA $00    [$00:7960]   A:DAC3 X:0207 Y:0010 P:eNvmxdizc
  $03/9AA1 BF 30 85 03 LDA $038530,x[$03:8737] A:DAC3 X:0207 Y:0010 P:eNvmxdizc
  $03/9AA5 85 02       STA $02    [$00:7962]   A:1405 X:0207 Y:0010 P:envmxdizc
  $03/9AA7 FA          PLX                     A:1405 X:0207 Y:0010 P:envmxdizc
  $03/9AA8 E2 10       SEP #$10                A:1405 X:005C Y:0010 P:envmxdizc
  $03/9AAA A8          TAY                     A:1405 X:005C Y:0010 P:envmXdizc
  $03/9AAB 5A          PHY                     A:1405 X:005C Y:0005 P:envmXdizc
  $03/9AAC AB          PLB                     A:1405 X:005C Y:0005 P:envmXdizc
  $03/9AAD DC 60 79    JML [$7960][$05:DAC3]   A:1405 X:005C Y:0005 P:envmXdizc	jump to object sequence code
  $05/DAC3 22 52 AA 03 JSL $03AA52[$03:AA52]   A:1405 X:005C Y:0005 P:envmXdizc
STORE NUMBER OF STARS TO SPAWN FROM A ? CLOUD

  $03/C7F5 A9 05 00    LDA #$0005              A:0182 X:0182 Y:0028 P:envmxdizc
  $03/C7F8 4C 6F C7    JMP $C76F  [$03:C76F]   A:0005 X:0182 Y:0028 P:envmxdizc
  $03/C76F 85 08       STA $08    [$00:7968]   A:0005 X:0182 Y:0028 P:envmxdizc
STORE NUMBER OF STARS TO SPAWN FROM A RED EGG

  $03/B42A A9 01 00    LDA #$0001              A:0002 X:0002 Y:0034 P:envmXdizc	numbers of stars equals this + 1
  $03/B42D 80 03       BRA $03    [$B432]      A:0001 X:0002 Y:0034 P:envmXdizc
  $03/B432 85 08       STA $08    [$00:7968]   A:0001 X:0002 Y:0034 P:envmXdizc
  $03/B434 AD B6 03    LDA $03B6  [$03:03B6]   A:0001 X:0002 Y:0034 P:envmXdizc
  $03/B437 C9 2C 01    CMP #$012C              A:006D X:0002 Y:0034 P:envmXdizc
  $03/B43A A9 A2 01    LDA #$01A2              A:006D X:0002 Y:0034 P:eNvmXdizc
  $03/B43D 90 03       BCC $03    [$B442]      A:01A2 X:0002 Y:0034 P:envmXdizc
  $03/B442 22 77 A3 03 JSL $03A377[$03:A377]   A:01A2 X:0002 Y:0034 P:envmXdizc
MAXIMUM NUMBER OF EGGS GENERATED FROM EGG BLOCK

  $05/FEE9 A6 12       LDX $12    [$00:7972]   A:0020 X:0009 Y:0000 P:envmXdiZC
  $05/FEEB AD 0C 30    LDA $300C  [$05:300C]   A:0020 X:0058 Y:0000 P:envmXdizC
  $05/FEEE C9 06 00    CMP #$0006              A:0000 X:0058 Y:0000 P:envmXdiZC	check if 6 eggs on screen
  $05/FEF1 B0 3A       BCS $3A    [$FF2D]      A:0000 X:0058 Y:0000 P:eNvmXdizc
  $05/FEF3 A9 25 00    LDA #$0025              A:0000 X:0058 Y:0000 P:eNvmXdizc	set green egg object
  $05/FEF6 22 4C A3 03 JSL $03A34C[$03:A34C]   A:0025 X:0058 Y:0000 P:envmXdizc
OBJECT EDIBLITY

  09:8321 47       ldw (r7)        r0=$68a2 SRAM=00:0FFC
  09:8322 95       sex             r0=$ffa2 S=1
  09:8323 0a 11    bpl $8336      			branch if not a painful object
  09:8325 60       sub r0          r0=$0000 Z=1 S=0
  09:8326 d0       inc r0          r0=$0001 Z=0
  09:8327 3e       alt2            ALT2=1
  09:8328 a0 af    sms ($015e),r0  SRAM=00:015E ALT2=0
  09:832a a0 14    ibt r0,#$14     r0=$0014		object causes pain to tongue
  09:832c 3e       alt2            ALT2=1
  09:832d a0 b0    sms ($0160),r0  SRAM=00:0160 ALT2=0
CHECK IF CRAB HAS BEEN HIT

  $05/86C8 BC 36 7D    LDY $7D36,x[$05:7D82]   A:05D5 X:004C Y:0000 P:envmXdizC
  $05/86CB 88          DEY                     A:05D5 X:004C Y:0055 P:envmXdizC
  $05/86CC 30 42       BMI $42    [$8710]      A:05D5 X:004C Y:0054 P:envmXdizC	branch if crab hasn't been hit
  $05/86CE B9 00 6F    LDA $6F00,y[$05:6F54]   A:05D5 X:004C Y:0054 P:envmXdizC
  $05/86D1 C9 10 00    CMP #$0010              A:0010 X:004C Y:0054 P:envmXdizC
  $05/86D4 D0 3A       BNE $3A    [$8710]      A:0010 X:004C Y:0054 P:envmXdiZC
  $05/86D6 B9 38 7D    LDA $7D38,y[$05:7D8C]   A:0010 X:004C Y:0054 P:envmXdiZC
  $05/86D9 F0 35       BEQ $35    [$8710]      A:0018 X:004C Y:0054 P:envmXdizC
  $05/86DB BB          TYX                     A:0018 X:004C Y:0054 P:envmXdizC
  $05/86DC 22 5B B2 03 JSL $03B25B[$03:B25B]   A:0018 X:0054 Y:0054 P:envmXdizC
MOVE EGG TARGET
  0b:e404 a0 77    lms r0,($00ee)  r0=$0400 SRAM=00:00EE ALT1=0
  0b:e406 1e       to r14
  0b:e407 67       sub r7          r14=$de00 Z=0 S=1
  0b:e408 09 07    beq $e411
  0b:e40a 01       nop
  0b:e40b f6 c0 00 iwt r6,#$00c0   r6=$00c0		speed of target
  0b:e40e 0b 04    bmi $e414       r15=$e414
  0b:e413 01       nop
  0b:e414 3e       alt2            ALT2=1
  0b:e415 a6 78    sms ($00f0),r6  SRAM=00:00F0 ALT2=0
  0b:e417 56       add r6          r0=$04c0 S=0
  0b:e418 20       with r0         B=1
  0b:e419 1e       move r14,r0     r14=$04c0 B=0
  0b:e41a 67       sub r7          r0=$dec0 S=1
  0b:e41b 3d       alt1            ALT1=1
  0b:e41c c6       xor r6          r0=$de00 ALT1=0
  0b:e41d 2e       with r14        B=1
  0b:e41e 10       move r0,r14     r0=$04c0 B=0
  0b:e41f 0b 03    bmi $e424       r15=$e424
  0b:e423 01       nop
  0b:e424 05 1f    bra $e445       r15=$e445
  0b:e444 01       nop
  0b:e445 3e       alt2            ALT2=1
  0b:e446 a0 77    sms ($00ee),r0  SRAM=00:00EE ALT2=0
SET INITIAL POSITION OF EGG TARGET
  0b:e5ec f7 00 04 iwt r7,#$0400   r7=$0400		position
  0b:e5ef 3d       alt1            ALT1=1
  0b:e5f0 f0 71 00 lm r0,($0071)   r0=$8000 SRAM=00:0071 ALT1=0
  0b:e5f3 3e       alt2            ALT2=1
  0b:e5f4 78       and #8          r0=$0000 ALT2=0
  0b:e5f5 09 04    beq $e5fb       r15=$e5fb
  0b:e5fa 01       nop
  0b:e5fb 60       sub r0
  0b:e5fc 3e       alt2            ALT2=1
  0b:e5fd a0 70    sms ($00e0),r0  SRAM=00:00E0 ALT2=0
  0b:e5ff 3e       alt2            ALT2=1
  0b:e600 a7 77    sms ($00ee),r7  SRAM=00:00EE ALT2=0
CHECK IF EGG TARGET AT MAX DEGREE

  0b:e434 f7 00 2e iwt r7,#$2e00
  0b:e437 67       sub r7          r0=$0000
  0b:e438 0c 0b    bcc $e445
COMPARE CURRENT HORIZ. SPEED TO MAX

  0b:e250 ef       getbh           r8=$0300 ROM=0A:EC2C ALT1=0
  0b:e251 3d       alt1            ALT1=1
  0b:e252 a0 5a    lms r0,($00b4)  r0=$02f0 SRAM=00:00B4 ALT1=0
LOAD MAX HORIZ. JUMPING SPEED

  0b:e0d0 f4 00 03 iwt r4,#$0300   r4=$0300
LOAD SPEED DECREMENT VALUE FOR VERT. JUMPING

  0b:ce1b a7 28    ibt r7,#$28     r7=$0028
SET MAXIMUM FALLING SPEED

  0b:ce2c f0 00 04 iwt r0,#$0400   r0=$0400
  0b:ce2f 62       sub r2          r0=$ff60 S=1
  0b:ce30 0d 03    bcs $ce35
SET OBJECT FOR HOOKBILL TO SPIT OUT

  $01/9047 A6 12       LDX $12    [$00:7972]   A:0020 X:0009 Y:0000 P:envmXdiZC
  $01/9049 AC 0C 30    LDY $300C  [$01:300C]   A:0020 X:0044 Y:0000 P:envmXdizC
  $01/904C C0 06       CPY #$06                A:0020 X:0044 Y:0000 P:envmXdiZC	check if six eggs on screen
  $01/904E 30 27       BMI $27    [$9077]      A:0020 X:0044 Y:0000 P:eNvmXdizc
  $01/9077 A9 25 00    LDA #$0025              A:0020 X:0044 Y:0000 P:eNvmXdizc	set green egg
  $01/907A 22 64 A3 03 JSL $03A364[$03:A364]   A:0025 X:0044 Y:0000 P:envmXdizc
CHECK DAMAGE TO HOOKBILL

  $01/8F03 EE 7C 10    INC $107C  [$01:107C]   A:0029 X:0044 Y:0000 P:envmXdizC
  $01/8F06 EE 7C 10    INC $107C  [$01:107C]   A:0029 X:0044 Y:0000 P:envmXdizC
  $01/8F09 AC 7C 10    LDY $107C  [$01:107C]   A:0029 X:0044 Y:0000 P:envmXdizC
  $01/8F0C C0 06       CPY #$06                A:0029 X:0044 Y:0002 P:envmXdizC
  $01/8F0E D0 0A       BNE $0A    [$8F1A]      A:0029 X:0044 Y:0002 P:eNvmXdizc
CHECK BASEBALL CATCHER/STRIKER DAMAGE

  $07/A589 BC C0 77    LDY $77C0,x[$07:7814]   A:8001 X:0054 Y:00FF P:eNvmXdizC
  $07/A58C C0 02       CPY #$02                A:8001 X:0054 Y:0000 P:envmXdiZC
  $07/A58E B0 3A       BCS $3A    [$A5CA]      A:8001 X:0054 Y:0000 P:eNvmXdizc
COINS POP FROM BASEBALL CATCHER/STRIKER

  $07/A5EF DA          PHX                     A:0004 X:0054 Y:00FF P:envmXdizC
  $07/A5F0 A6 00       LDX $00    [$00:7960]   A:0004 X:0054 Y:00FF P:envmXdizC
  $07/A5F2 BD E3 A5    LDA $A5E3,x[$07:A5E7]   A:0004 X:0004 Y:00FF P:envmXdizC
  $07/A5F5 85 02       STA $02    [$00:7962]   A:FF00 X:0004 Y:00FF P:eNvmXdizC
  $07/A5F7 BD E9 A5    LDA $A5E9,x[$07:A5ED]   A:FF00 X:0004 Y:00FF P:eNvmXdizC
  $07/A5FA 85 04       STA $04    [$00:7964]   A:FE00 X:0004 Y:00FF P:eNvmXdizC
  $07/A5FC FA          PLX                     A:FE00 X:0004 Y:00FF P:eNvmXdizC
  $07/A5FD A9 15 01    LDA #$0115              A:FE00 X:0054 Y:00FF P:envmXdizC
  $07/A600 22 4C A3 03 JSL $03A34C[$03:A34C]   A:0115 X:0054 Y:00FF P:envmXdizC
SET MAXIMUM NUMBER OF SEEDS/ICE/FIRE FOR A SUPER MELON

  $01/DB5C A9 03 00    LDA #$0003              A:000E X:000E Y:0000 P:envmXdizc
  $01/DB5F 8D 6A 61    STA $616A  [$01:616A]   A:0003 X:000E Y:0000 P:envmXdizc
  $01/DB62 EE 62 61    INC $6162  [$01:6162]   A:0003 X:000E Y:0000 P:envmXdizc
  $01/DB65 EE 68 61    INC $6168  [$01:6168]   A:0003 X:000E Y:0000 P:envmXdizc
  $01/DB68 A9 5A 00    LDA #$005A              A:0003 X:000E Y:0000 P:envmXdizc	number
  $01/DB6B 8D 70 61    STA $6170  [$01:6170]   A:005A X:000E Y:0000 P:envmXdizc
  $01/DB6E A9 14 00    LDA #$0014              A:005A X:000E Y:0000 P:envmXdizc
  $01/DB71 22 D2 85 00 JSL $0085D2[$00:85D2]   A:0014 X:000E Y:0000 P:envmXdizc
SET MAXIMUM NUMBER OF SEEDS FOR A MELON

  $03/9BA3 A9 0A 00    LDA #$000A              A:001E X:0050 Y:0001 P:envmXdizC
  $03/9BA6 8D 70 61    STA $6170  [$03:6170]   A:000A X:0050 Y:0001 P:envmXdizC
SET MAXIMUM NUMBER OF ICE/FIRE FOR A MELON

  $03/9B9B A9 1E 00    LDA #$001E              A:0009 X:0058 Y:0001 P:envmXdiZC
  $03/9B9E BC 02 74    LDY $7402,x[$03:745A]   A:001E X:0058 Y:0001 P:envmXdizC
  $03/9BA1 F0 03       BEQ $03    [$9BA6]      A:001E X:0058 Y:0000 P:envmXdiZC
  $03/9BA6 8D 70 61    STA $6170  [$03:6170]   A:001E X:0058 Y:0000 P:envmXdiZC
DECREMENT ICE/FIRE

  0b:e8c8 a0 b8    lms r0,($0170)  r0=$0050 SRAM=00:0170 ALT1=0
  0b:e8ca 3e       alt2            ALT2=1
  0b:e8cb 6a       sub #10         r0=$0046 CY=1 ALT2=0
  0b:e8cc 90       sbk
SET STOMPING SPEED

  0b:c930 f0 00 08 iwt r0,#$0800   r0=$0800
  0b:c933 3e       alt2            ALT2=1
  0b:c934 a0 55    sms ($00aa),r0  SRAM=00:00AA ALT2=0
SET EGG TOSSING SPEED

  $03/BCAA A9 F0 07    LDA #$07F0              A:05A1 X:0058 Y:0034 P:envmXdizc
  $03/BCAD 8D 0C 30    STA $300C  [$03:300C]   A:07F0 X:0058 Y:0034 P:envmXdizc
SET ACCELERATION FOR SHYGUYS WALKING

  $04/8DF2 A9 05 00    LDA #$0005              A:059D X:0058 Y:0002 P:envmXdizc
  $04/8DF5 9D 40 75    STA $7540,x[$04:7598]   A:0005 X:0058 Y:0002 P:envmXdizc
SET SPEED OF SHY GUY

  $04/8DD4 B9 9C 8D    LDA $8D9C,y[$04:8D9C]   A:0000 X:0058 Y:0000 P:envmXdiZC
  $04/8DD7 9D E0 75    STA $75E0,x[$04:7638]   A:FFA7 X:0058 Y:0000 P:eNvmXdizC

ROM addresses

These are all in lo-ROM format.

Address Description
03852E-038B2A Object field functions (3 bytes each)
These functions set the following parameters:
1. What to happen when Yoshi touches the object.
2. Movement/animation sequence.
3. What to happen when hit by an egg
4. Various properties such as what to generate when touched or hit.
048D9C Speed of Shy Guy moving left (2 bytes)
048D9E Speed of Shy Guy moving right (2 bytes)
0585A3 Jumping power of a large arrow (2 bytes)
05DABB Stretchy animation values for message box (2 values, 2 bytes each)
08AC98-08AD17 Yellow Bullet Bill speeds (0-90 deg)
08AE18 Acceleration value for running
0A9220-0A931F Edibility bits 12-8 (8 bytes each)
0A9320-0A971D Object edibility (2 bytes each). Bit 15: hurts tongue. Bit 14: does nothing
0A971E-0A9B1B What object does when it touches a wall
0A9B1C Object size(?)
0AEC2B Maximum speed for running right (2 bytes)
0AEC2D Maximum speed for running left (2 bytes)
0AF0B3 Speed 1
0AF35D Maximum tongue extension (right)
0AF361 Maximum tongue extension (left)
0AF36D Maximum tongue extension (upward)
098358 Time limit for keeping something in mouth (2 bytes: 1200 frames / 20 seconds)


See also



Combined RSS Feed
GameResources/SNES/YoshisIsland last edited by henke37 on 2013-03-06 14:20:28
Page info and history | Latest diff | List referrers | View Source