Language…
17 users online:  Ahrion, CroNo, Dennsen86, Green Jerry, Hammerer,  Lazy, Metal-Yoshi94, Nayfal, Neuromancer, NewPointless, OrangeRock57, Rykon-V73, Serena, signature_steve, snoruntpyro, Sweetdude, Tulip Time Scholarship Games - Guests: 342 - Bots: 409
Users: 64,795 (2,371 active)
Latest user: mathew

SMW2 Yoshi's Island offsets and helpful info

Resource

Originally posted by Zeldara109
- How to change which music header settings disable items? (By default, music 3, 5, 7, 8, and 9 disable items, while the rest do not.)


@Zeldara:
Finding this out is easy as hell, the Item-Denial table is right beneath the Music Bank ID table. There you go:

SNES 0x851C, ROM 0x71C:
Item-Denial table for each track value:

[00 00 00 01 00 01 00 01 01 01 00 00 01 00 00 00]

It's very easy to understand:
Each of those bytes represent one of the tracks from #0 to #F in exactly that order.
A [00] byte enables Items and a [01] disables them. Other values won't add effects: From [01] to [7F] it disables Items, [00] and values from [80] to [FF] enable Items. As you can see by looking at the table, not only tracks #3, #5, #7, #8 and #9 got that, but #C also, because while fighting Big Bad Baby Bowser you can't use items either.
Weird, it would have saved a bit of free space, if they would easily have made it bit-wise, like this:
[15 C8] = [00010101 11001000]
Since tracks #E and #F are unused and ExMusic is not supported yet, you could easily use those two empty entries, to copy tracks, that allow items to create copies of them, that don't.

I guess there's one point you can remove from your request-list now.
Well... Three to go.

To disable the hardcoded music the tweak that plays that music must be deactivated, by replacing some code with [EA]-bytes, I think. Since the track loads some samples incorrectly, I guess other tracks would also lack some samples, if the track is easily replaced in that code. Romi's DisableEscape ASM-patch, which disables, that you can leave the Intro-Scene by Start/Select -ing works in bank $01. It seems likely, that this tweak is somewhere in bank $01, too.
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Thanks. Didn't realize you'd found that on your own (it was in your profile for quite a long time).

I probably could have found that myself if I had known it was 16 bytes, but I had assumed it would be bit-wise... And searching for 2 bytes isn't enough to ensure that I've found the correct data (also, since I forgot about music C, I would have been searching for the wrong 2 bytes anyway).

As for the welcome music loading samples incorrectly, isn't that a property of the track itself? (I thought Mattrizzle's patch that sets the welcome music to 14/E also fixes that, while a simple hex-edit would not?)

Anyway, how could I copy tracks? (I assume I'd need to edit the music bank IDs and default settings mentioned here? Where are they located in the ROM?)

–=–=–=–=–=–=–
Advynia: a Yoshi's Island editor - Alyssa's Unlikely Trap demo 3
@Yoshis Fan

Originally posted by Yoshis Fan
World Maps' Tilemaps
Where are the tilemaps of each world map stored? They consist of Layer 1 and Layer 2 tiles. For example in World 1 the Level Points, the paths, the chomp sharks, some hills, some clouds, the cave mushrooms, the white flowers and the 1-4 and 1-8 castle are Layer 1. Some clouds and hills, some tulips, small hills and rocks are Layer 2. I think they have got different tables for each world, one for Layer 1 objects and one for Layer 2 objects.



The map tile data uses the same compression as the sprites,
If you already decompressed the sprites using Ycompress, then all you need to do is open the ALLGFX.bin file in a hex editor.

World 1 compressed data starts at SNES 0x5B2BAB ROM 0x1B2DAB and decompressed data at ALLGFX 0x11DE00
World 2 compressed data starts at SNES 0x5B35C3 ROM 0x1B37C3 and decompressed data at ALLGFX 0x120E00
World 3 compressed data starts at SNES 0x5B3C69 ROM 0x1B3E69 and decompressed data at ALLGFX 0x122E00
World 4 compressed data starts at SNES 0x5B457B ROM 0x1B477B and decompressed data at ALLGFX 0x124E00
World 5 compressed data starts at SNES 0x5B4D88 ROM 0x1B4F88 and decompressed data at ALLGFX 0x126E00
World 6 compressed data starts at SNES 0x5B561D ROM 0x1B581D and decompressed data at ALLGFX 0x128E00



All data gets decompressed by the FX Chip, SNES 0x08A980 is the address of the decompressor.
Data gets decompressed to 0x705800, then a DMA copies from here to VRAM
Working on Super Mario World 2 - Yoshis Island Boss Rush
Other projects on hold.
@tehaxor69:
Very cool finds!
But editing them from the AllGFX seems to be very tedious. I mean, each World map consists of 4,096 tiles (Each is 2 bytes, right? 1st determines the tile, second determines the attributes) Where is the distinction between Layer 1 and Layer 2 tiles anyways? Are there 2,048 Layer 1 and 2,048 Layer 2 tiles? The World Maps look filled with stuff but looking at the Tilemaps only very few space is used.

@Zeldara:
You can copy tracks by changing only two bytes, as far as I know.
The music bank ID and the default track value.
There are 16 bytes from 0x72F to 0x73E (ROM) :
[0C 10 18 1C 14 1C 20 24 24 24 28 28 2C 1C 00 00]
The two [00]-bytes at the end are unused tracks. If you want to copy a track, easily copy the byte of the track from the bank ID table and paste it as byte 15 or 16.
For the default track value I'm kind of unsure, but that should be the 16 bytes from 0xB44B to 0xB45A.
[01 01 01 01 01 09 01 01 09 0C 01 02 00 01 00 00]
Same here. Make sure to copy the value of the song you like. That should work, I'll test that now.

*Edit*
Yep, it works perfectly!
World 1
BG1 ALLGFX 0x11DE00 BG2 ALLGFX 0x11EE00

World 2
BG1 ALLGFX 0x120E00 BG2 ALLGFX 0x121E00

World 3
BG1 ALLGFX 0x122E00 BG2 ALLGFX 0x123E00

World 4
BG1 ALLGFX 0x124E00 BG2 ALLGFX 0x125E00

World 5
BG1 ALLGFX 0x126E00 BG2 ALLGFX 0x127E00

World 6
BG1 ALLGFX 0x128E00 BG2 ALLGFX 0x129E00


If you want I can also find the all the Yoshi positions.

Edit:
Now a overworld editor needs to be created.
Working on Super Mario World 2 - Yoshis Island Boss Rush
Other projects on hold.
Thank you for the Offsets! As I expected 0x1000 bytes are used for one BG. They made it like this, so there won't be cutoff and it looks neater and costs less tiles to make a good-looking map background.

Originally posted by tehaxor69
Now a overworld editor needs to be created.


Having an editor with graphic support (means tile-support) seems to be the easiest way to edit the world maps properly. Basically it must only be able to do a few things; it must show, which area is actually used by the map and then let you click tiles to replace other tiles. Short keys for BG 1 and BG 2 enabling/disabling would also be nice, so you can see the whole map and also the single BGs. And of course a Map Selector, so you can switch between the maps. It could simply read the data out of the AllGFX and then display what that means for the tiles.
The positions of the Yoshis on the map are already found, so no need to worry about that.

I have found out, that the tilemaps got far more tiles in them than needed. Each BG Layer on one map is built of 2 columns. Each column has a height of 13 lines and a width of 32 tiles. One column is 832 bytes, one BG Layer is 1664 bytes and the a whole World map is 3328 bytes. I've made a list of the actually editable (means, they have an effect, if edited) Offsets.
I hope that information is helpful in case you are trying to make an editor for the maps.

World 1
0x11E180 to 0x11E4BF for column 1 for BG 1
0x11E980 to 0x11ECBF for column 2 for BG 1

0x11F180 to 0x11F4BF for column 1 for BG 2
0x11F980 to 0x11FCBF for column 2 for BG 2

World 2
0x121180 to 0x1214BF for column 1 for BG 1
0x121980 to 0x121CBF for column 2 for BG 1

0x122180 to 0x1224BF for column 1 for BG 2
0x122980 to 0x122CBF for column 2 for BG 2

World 3
0x123180 to 0x1234BF for column 1 for BG 1
0x123980 to 0x123CBF for column 2 for BG 1

0x124180 to 0x1244BF for column 1 for BG 2
0x124980 to 0x124CBF for column 2 for BG 2

World 4
0x125180 to 0x1254BF for column 1 for BG 1
0x125980 to 0x125CBF for column 2 for BG 1

0x126180 to 0x1264BF for column 1 for BG 2
0x126980 to 0x126CBF for column 2 for BG 2

World 5
0x127180 to 0x1274BF for column 1 for BG 1
0x127980 to 0x127CBF for column 2 for BG 2

0x128180 to 0x1284BF for column 1 for BG 2
0x128980 to 0x128CBF for column 2 for BG 2

World 6
0x129180 to 0x1294BF for column 1 for BG 1
0x129980 to 0x129CBF for column 2 for BG 1

0x12A180 to 0x12A4BF for column 1 for BG 2
0x12A980 t0 0x12ACBF for column 2 for BG 2
Here are all 1024 tiles and what they look like for all 6 worlds


palettes are not correct in image.

I was also thinking about adding tiles after the X-8 Castles for the extra and special levels.
Working on Super Mario World 2 - Yoshis Island Boss Rush
Other projects on hold.
Cool! Thank you for "filtering" the actual graphics. I see, the only world, that actually uses a different set of graphics is World 6. Theres one thing that confuses me, however. How do 1,024 tiles fit into one byte? Or doesn't the second byte have any X/Y flip? What I know for sure is, that the second byte determines the palette, but I though only the first byte would determine the tile.
I guess expanding the world maps themselves would be quite hard, I think it would be better to "compress" the world map in order to free some space for Extra and Secret levels. To do this, a few more things would have to be done:

-Two additional Yoshi positions for each World.
-Maybe a wooden sign with a star on it? (Like the other Yoshis have wooden signs with numbers)
-More inactive/active Yoshi Palettes/Tilemaps? for the world map, since some hackers (me and Jacob) use custom Yoshi colors for Extra and Secret levels and it would look odd to have two green Yoshis there when you actually play a black Yoshi, for example.
The first 2 bits of the second byte are used with the 8 from the first for 1024 tiles.

Byte 1 Byte 2
TTTTTTTT-VHLPPPTT

T = Tile, 1024
P = Palette, 8
L = Layer priority
H = Horizontal flip
V = Vertical flip

The icons differ in all worlds, there are two slots used for them shown in the image.
Working on Super Mario World 2 - Yoshis Island Boss Rush
Other projects on hold.
Oh, you're right I haven't seen them before.
NOW I also know how Mattrizzle was able to remove redundant data, when he tried to make a small patch for me, but still isn't done... (I wonder, if he's still working on that #w{=|})

As far as I can tell the Control Setting stuff is not used at all, as he replaced something from there.

*Edit*
In case you are making such a world map editor, you can leave out half(?) of the tiles to place at each map, because it is unlikely anyone ever wants to set non-map tiles in the map.
SRAM modification

Here is a xkas patch that allows YI to save the number/type of eggs, lives and coins you collect per file.
You only need to complete a level to save the values.

Code
header
lorom

ORG $01B6E7
	JSL	$10FFAF		
	NOP
	NOP

ORG $10814E
	JSL	$10FFA2		

ORG $10FFA2
LOAD_SRAM:
	JSL	$10FFBE		
	JSL	$10FFCB		
	SEP	#$20
	LDY	#$00
	RTL

SAVE_SRAM:
	SEP	#$10
	JSL	$10FFCF		
	REP	#$10
	LDX	#$03CE
	LDY	#$0000
	RTL

LOAD_FILE_NUMBER:
	LDA	$111D		
	ASL			
	ASL			
	ASL			
	ASL			
	ASL			
	CLC			
	TAX
	LDY	#$00		
	RTL			

LOAD:
	JML	$11FD86
SAVE:
	JML	$11FDBD


ORG $11FD86
	STA	$701FF0		
	PHX
LOAD_2:
	LDA	$707F80,X	
	PHX			
	TYX			
	STA	$7E5D98,X	
	PLX			
	INX			
	INX			
	INY			
	INY			
	CPY	#$10		
	BNE	LOAD_2		
	LDA	$707F7E,X
	STA	$7E0379
	LDA	$707F80,X
	STA	$7E037B
	LDA	#$0000		
	PLX
	LDY	#$0C
CLEAR_SRAM:
	STA	$707F80,X
	INX
	DEY
	BNE	CLEAR_SRAM	
	RTL			
	
	LDA	$701FF0
	TAX
	JSR	GET_ALL_EGGS
	LDY	#$00
SAVE_2:	
	PHX
	TYX
	LDA	$7E5D9A,X
	PLX
	STA	$707F82,X
	INX
	INX
	INY
	INY			
	CPY	#$0E		
	BNE	SAVE_2		
	LDA	$7E0379
	STA	$707F80,X
	LDA	$7E037B
	STA	$707F82,X
	LDA	$701FF0
	TAX
	LDA	$017DF6		
	STA	$707F80,X
	RTL			



GET_ALL_EGGS:
	PHX
	SEP	#$20
	LDA	#$00
	LDY	#$00
LP:
	STA	$7E5D9A,X
	INX
	INY
	CPY	#$0C
	BNE	LP
	LDX	#$3C
	LDY	#$00

READ_EGG_LOOP:
	LDA	$017380,X
	CMP	#$25
	BEQ	STORE_EGG
	CMP	#$24
	BEQ	STORE_EGG
	CMP	#$23
	BEQ	STORE_EGG

NEXT:
	DEX
	DEX
	DEX
	DEX
	CPX	#$00
	BNE	READ_EGG_LOOP
	REP	#$20
	PLX
	RTS

STORE_EGG:
	PHX
	TYX
	STA	$7E5D9A,X
	PLX
	INY
	INY
	BRA	NEXT


;HIJACK GIVE 3 LIVES ROUTINE
ORG $179932
	JSL	$17FCF7
	NOP

ORG $17FCF7
	REP	#$20
	LDA	$701FF0
	TAX
	LDA	$707F8E
	CMP	#$0000
	BNE	SKIP
	LDA	#$0003
SKIP:
	STA	$7E0379
	SEP	#$20
	RTL


I have tested it, haven't seen any side effects, it works well per file.

You can test the SRAM manually by changing values in the .sav file

File 1
0x7F80 <- [0C 00 25 00 25 00 24 00 24 00 23 00 23 00 E7 03 63 00]
File 2
0x7FA0 <- [0C 00 24 00 24 00 24 00 24 00 24 00 24 00 64 00 63 00]
File 3
0x7FC0 <- [0C 00 23 00 23 00 23 00 23 00 23 00 23 00 32 00 32 00]

File 1 should have 6 eggs, 2 green, 2 yellow, 2 red, 999 lives, 99 coins
File 2 should have 6 eggs, 6 yellow, 100 lives, 99 coins
File 3 should have 6 eggs, 6 red, 50 lives, 50 coins
Working on Super Mario World 2 - Yoshis Island Boss Rush
Other projects on hold.
Nice patch, tehaxor69, however, it got some issues:
- When clicking NEW to start a new game, the game freezes. Resetting it and trying it again will make everything back to normal.
- When starting a new game, Yoshi has an initial life count of 999 lives and the coin display in the pause menu is somewhat glitched
- If you load the file, Yoshi always has 999 lives.
- The High Score board, which shows when you finish a level is kind of glitched (means has some wrong tiles)
- The coin memory doesn't work correctly. It sometimes seems to make the lower digit to 9. For example if you got 53 coins, you have 59 afterwards.

I've seen those glitches with all three game files.

The good news:
- The egg memory works
Just wondering, but does anyone know if there is any way to make it so you are able to collect more eggs?

Lespna1
That is not a good idea, because of Sprite limitations. If you did this, some other Sprites could disappear. Some people, who do TASes always wonder why there are disappearing Sprites, when they carry an additional 7th egg all over the stage without taking it. Well, that's it. As said, no good idea.
If you want to do it anyways, then, sorry, I don't know the Offsets.
Here is the new SRAM patch

Code
header
lorom


ORG $01B761
	JSL	$10FFAF		
	NOP
	NOP

ORG $10814E
	JSL	$10FFA2		


ORG $10FFA2
LOAD_SRAM:
	JSL	$10FFBE		
	JSL	$10FFCB		
	SEP	#$20
	LDY	#$00
	RTL

SAVE_SRAM:
	SEP	#$10
	JSL	$10FFCF		
	REP	#$10
	LDY	#$1000
	LDX	#$1E00
	RTL

LOAD_FILE_NUMBER:
	LDA	$111D		
	ASL			
	ASL			
	ASL			
	ASL			
	ASL			
	CLC			
	TAX
	LDY	#$00		
	RTL			

LOAD:
	JML	$11FD86
	
SAVE:
	JML	$11FDFC



;WE NEED TO BAIL IF IT'S A NEW GAME
ORG $11FD86
	PHA
	STA	$701FF0
	SEP	#$20
	CMP	#$00
	BEQ	CHECK_IF_FILE_1_NEW
	CMP	#$20
	BEQ	CHECK_IF_FILE_2_NEW
	CMP	#$40
	BEQ	CHECK_IF_FILE_3_NEW
CHECK_IF_FILE_1_NEW:
	LDA	$707C02
	BMI	BAIL
	BRA	LOAD_1
CHECK_IF_FILE_2_NEW:
	LDA	$707C6A
	BMI	BAIL
	BRA	LOAD_1
CHECK_IF_FILE_3_NEW:
	LDA	$707CD2
	BMI	BAIL
	BRA	LOAD_1
BAIL:
	REP	#$20
	PLA
	TAX
	LDA	#$0003
	STA	$707F8E,X
	LDA	#$0000
	STA	$707F90,X
	RTL


LOAD_1:
	REP	#$20
	PLA
	STA	$701FF0		
	PHX
LOAD_2:
	LDA	$707F80,X	
	PHX			
	TYX			
	STA	$7E5D98,X	
	PLX			
	INX			
	INX			
	INY			
	INY			
	CPY	#$10		
	BNE	LOAD_2		

	LDA	$701FF0
	TAX
	LDA	$707F8E,X
	STA	$7E0379
	SEP	#$20
	LDA	$707F90,X
	STA	$7E037B
	REP	#$20

	LDA	#$0000		
	PLX
	LDY	#$0C
CLEAR_SRAM:
	STA	$707F80,X
	INX
	DEY
	BNE	CLEAR_SRAM	

	RTL			
	
	LDA	$701FF0
	TAX
	JSR	GET_ALL_EGGS
	LDY	#$00
SAVE_2:	
	PHX
	TYX
	LDA	$7E5D9A,X
	PLX
	STA	$707F82,X
	INX
	INX
	INY
	INY			
	CPY	#$0E		
	BNE	SAVE_2		

	LDA	$701FF0
	TAX
	LDA	$7E0379
	STA	$707F8E,X
	LDA	$7E037B
	STA	$707F90,X

	LDA	$017DF6		
	STA	$707F80,X

	RTL			



GET_ALL_EGGS:
	PHX
	SEP	#$20
	LDA	#$00
	LDY	#$00
	LDX	#$00
LP:
	STA	$7E5D9A,X
	INX
	INY
	CPY	#$0C
	BNE	LP

	LDX	#$3C
	LDY	#$00

READ_EGG_LOOP:
	LDA	$017380,X
	CMP	#$25
	BEQ	STORE_EGG
	CMP	#$24
	BEQ	STORE_EGG
	CMP	#$23
	BEQ	STORE_EGG

NEXT:
	DEX
	DEX
	DEX
	DEX
	CPX	#$00
	BNE	READ_EGG_LOOP
	REP	#$20
	PLX
	RTS

STORE_EGG:
	PHX
	TYX
	STA	$7E5D9A,X
	PLX
	INY
	INY
	BRA	NEXT



;HIJACK GIVE 3 LIVES ROUTINE
ORG $179932
	JSL	$17FCF7
	NOP

ORG $17FCF7
	REP	#$20
	LDA	$701FF0
	TAX
	LDA	$707F8E,X
	CMP	#$0000
	BNE	SKIP
	LDA	#$0003
SKIP:
	STA	$7E0379
	SEP	#$20
	RTL


Getting the eggs the right color and amount was the hardest part.
There was no check for a new file, now there is one.

The way to determine if a file is new or has a save is to check these
SRAM 0x7C02 File 1
SRAM 0x7C6A File 2
SRAM 0x7CD2 File 3
If the value is >= 0x80 the file is new other wise it has save data.


Edit:

@Zeldara109

Here is how to make the intro play music from the header
change:
SNES 0x01B0D7 ROM 0x00B2D7 from [8D 4E 01] to [EA EA EA]

Or you could change the hard-coded music:
Prologue -still works with 0x01B0D7 NOPed
SNES 0x10DB70 ROM 0x085D70
Level part
SNES 0x01B0D6 ROM 0x00B2D6



Here is a patch that will stop Kamek


For Kamek to stop attacking 2 conditions must be met:
1). You must be in the normal Yoshi form.
2). Kamek must pass sprite 0x1FF.


Code
header
lorom

;Hijack Kamek routine
ORG $03E3BC
	JSL	$BFFCE4
	NOP

ORG $03D4F9
DB $F0, $FE

ORG $03D56F
DB $F5, $FE


;New 0x1FF pointer 1
ORG $03FEF0
	JSL	$BFFCEF
	RTS

;New 0x1FF pointer 2
ORG $03FEF5
	JSL	$BFFD00
	RTS


;New Kamek code
ORG $BFFCE4
	TXA
	STA	$701FFF
	LDA	$70E2,X
	SEP	#$20
	RTL

ORG $BFFCEF
;NEW SP 0X1FF CODE
	LDA	$007960
	ASL
	ASL
	ASL
	ASL
	STA	$701FF0
	RTL

ORG $BFFD00
	PHY
	REP	#$20
	LDA	$701FFF
	TAX
	LDA	$70E2,X
	CMP	$701FF0
	BPL	KILL
	LDA	#$0000
	STA	$701FF2
DONE:
	PLY
	RTL
KILL:
	LDA	$7000AE
	CMP	#$0000
	BNE	DONE
	LDY	$16,X
	CPY	#$0000
	BNE	DONE
	LDA	#$FFFF
	STA	$7A96,X
	BRA	DONE

Working on Super Mario World 2 - Yoshis Island Boss Rush
Other projects on hold.
I haven't tested the save patch yet, but I do have a question-- what will happen if someone uses a glitch to carry something else (such as a flashing egg, a giant egg, or a key) to another level? I've heard it's possible for flashing/giant eggs, though I don't know the details.

I'm fine if your patch doesn't save those, since after all, you're not supposed to carry them to new levels... I'm just wondering if the patch has any kind of check when saving, or if it would crash (or go into an endless loop or something) if the eggs are not green, yellow, or red.

(By the way, for the offsets you posted earlier in this thread, I've noticed you've occasionally posted SNES addresses on their own... could you please either label them "SNES", or use the convention of labeling them "$" instead of "0x"? People scanning through the thread might be confused otherwise.)

–=–=–=–=–=–=–
Advynia: a Yoshi's Island editor - Alyssa's Unlikely Trap demo 3
@Zeldara109

The patch won't save anything other than the green, yellow, red eggs, nothing to worry about.

This code flushes the egg stock
Code
	LDA	#$00
	LDY	#$00
LP:
	STA	$7E5D9A,X
	INX
	INY
	CPY	#$0C
	BNE	LP


This code reads in the eggs you have
Code
	LDA	$017380,X
	CMP	#$25		;Green
	BEQ	STORE_EGG
	CMP	#$24		;Yellow
	BEQ	STORE_EGG
	CMP	#$23		;Red
	BEQ	STORE_EGG


@Yoshis Fan

Here are the other patches

Kamek blocker 2: SP 0x1FE
Once you get in range of this sprite, Kamek will never show again once he passes to the right or left of the screen.
Code
header
lorom

;Hijack Kamek routine, needs to be the same with all 3 codes
ORG $03E3BC
	JSL	$BFFCE4
	NOP


;Type SP 0x1FE

ORG $03D4F7
DB $FA, $FE

ORG $03D56D
DB $FF, $FE




;New 0x1FE pointer 1
ORG $03FEFA
	JSL	$BFFD1C
	RTS

;New 0x1FE pointer 2
ORG $03FEFF
	JSL	$BFFD29
	RTS


;This code here is compatible with all 3 codes
;New Kamek code
ORG $BFFCE4
	TXA
	STA	$701FFF
	LDA	$70E2,X
	SEP	#$20
	RTL

ORG $BFFD1C
;NEW SP 0X1FF CODE
	LDA	$007960
	ASL
	ASL
	ASL
	ASL
	STA	$701FF0
	RTL

ORG $BFFD29
	PHY
	LDA	$701FFF
	TAX
	LDY	$16,X
	CPY	#$0000
	BEQ	KILL
	CPY	#$0004
	BEQ	KILL

DONE:
	PLY
	RTL

KILL:
	LDA	#$FFFF
	STA	$7A96,X
	BRA	DONE



Kamek Y-offset: SP 0x1FD
This sprite increases the Y-offset of Kamek, should be placed anywhere after the Kamek sprite.
Code
header
lorom

;Hijack Kamek routine, needs to be the same with all 3 codes
ORG $03E3BC
	JSL	$BFFCE4
	NOP


ORG $03E841
	JSL	$BFFD50




;Type SP 0x1FD

ORG $03D4F5
DB $04, $FF

ORG $03D56B
DB $09, $FF




;New 0x1FD pointer 1
ORG $03FF04
	JSL	$BFFD45
	RTS

;New 0x1FD pointer 2
ORG $03FF09
	JSL	$BFFD45
	RTS


;This code here is compatible with all 3 codes
;New Kamek code
ORG $BFFCE4
	TXA
	STA	$701FFF
	LDA	$70E2,X
	SEP	#$20
	RTL

ORG $BFFD45
	LDA	#$0001
	STA	$701FF4
	RTL

ORG $BFFD50
	PHA
	LDA	$701FF4
	CMP	#$0000
	BEQ	NORMAL
	CMP	#$0001
	BEQ	OFFSET
	PLA
DONE:
	
	RTL

NORMAL:
	PLA
	CLC
	ADC	#$0010
	BRA	DONE
OFFSET:
	PLA
	CLC
	ADC	#$FFD8
	BRA	DONE


Working on Super Mario World 2 - Yoshis Island Boss Rush
Other projects on hold.
Very good Sprites you made there, tehaxor69! All the Sprites work as intended. Great job! Thank you very much!

*Edit*
High time to update the GBA to SNES porting questions, since the document I have there at the moment is really outdated...
I will upload another soon. (Means, probably now or tomorrow.)
*Edit*
Updated!
<I moved this to another thread that has to do with hacking the GBA version.>
I don't really understand what you're saying (do you know of any good GBA ASM tutorials?), but do you think you could re-post this in the SMA3 hacking thread (which I recently decided to sticky)?

This thread is generally seen as for SNES-version information only (in fact, I actually edited that into the first post a few days ago).

–=–=–=–=–=–=–
Advynia: a Yoshi's Island editor - Alyssa's Unlikely Trap demo 3

Resource