Language…
14 users online: DanMario24YT, Darolac, DasFueller, Dennsen86, Doopu, Everest, Gamet2004, JezJitzu, Mike777, MorrieTheMagpie, RicardoDeMelo, romw314, Rykon-V73, twicepipes - Guests: 257 - Bots: 257
Users: 64,795 (2,375 active)
Latest user: mathew

YI hacking FAQ v2 (updated for 2018) - Ask questions here!

Link Thread Closed
Big Baby Bowser's walk to table, Current health is the index, the Z axis will decrease until it is <= to the value
ROM 0x06DC07 SNES 0x0DDA07
0x0700
0x0680
0x0600
0x0400
0x0300
0x0200
0x0000

Walk Speed Value
ROM 0x06DC9B SNES 0x0DDA9B [20 00]

//Walk animation speed
ROM 0x06DC6F SNES 0x0DDA6F [04 00]

//Use with walk animation speed
ROM 0x06DC74 SNES 0x0DDA74 [04 00]
Working on Super Mario World 2 - Yoshis Island Boss Rush
Other projects on hold.
Great, great, great!!! #w{=3}
Thank you very much for all these Offsets, tehaxor69!
With this info at hand it's possible to make Bowser hard enough to be worthy as the final boss, so not necessary to find any more things for him.
Now only Hookbill and Raphael are missing.

*Edit*
How difficult would it be to make a custom locked door, actually?
It would work exactly as each other locked door (Sprite 0x131), with the difference, that, when it's unlocked, it loads a value into an unused RAM address instead of item memory flag, so all Sprites, which are the same are unlocked at the same time, since it checks that address and if the value is set, it's unlocked.
The code must be copied to another place and slightly altered, plus tilemap stuff and table-related Sprite Settings...

*Edit2*
Upon changing PC 0x182E7 to [D4 A0 02] (PC 0x122D4) and PC 0x18815 to [30 A3 02] (PC 0x12530), Sprite 0x4D turns into an almost identic copy of Sprite 0x131. That is, the behaviour and ASM code pointers of Sprite 0x4D are changed to point to 0x131's code. The only thing this lacks is the tilemaps; at the moment the locked status of the door consists of two closed doors and hovers above the ground. It also sets the item memory flag, which makes Sprite 0x93 spawn instead of 0x131 in its default state, if set.
So, the only changes necessary are the minor code change plus tilemap change. I could try to isolate Sprite 0x131's code, but I got no clue about the tilemaps, so, help please, anybody?

Everytime you press upwards while you are before a locked door in locked status (since while unlocked, it's a different Sprite), the game checks whether there's a key in the "egg slots" of Yoshi. If yes, the game sets the flag and activates the screen exit + door animation. If not, the game just plays a sound effect. So, RAM addresses must be compared to the "key" value in an egg slot and then branch; this way it shouldn't be too hard to find that part of the code. Finding the item memory check shouldn't be too hard, too, since there should be a LDA #$0093 somewhere, which actually loads a normal door instead of a locked door in case the flag is set (should be a branch, too).

*Edit3*
As I thought!
PC 0x122DF is [A9 93 00], so it's [LDA #$0093]. Changing the value to another Sprite will create that other Sprite. In case it's one of the door Sprites, however, it will act like a normal door. In case it's some other Sprite, it will be displayed glitchy.
0x122D4 is [JSL $03D3F8] and after that there is [BNE #$05], which directly branches towards the [LDA #$0093] code, so I assume the item memory check is at PC 0x1D5F8. Changing the [BNE #$05] to [BRA #$05] will always unlock the door, even if the flag is not set, so chances are super high I found the check.
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Hookbill the Koopa timing offsets

Walk in scene animation
ROM 0x009EE7 SNES 0x019CE7 [05 00]

Transform (4 cycles)
ROM 0x00A0CC SNES 0x019ECC [04 00]

Get out of hiding delay
ROM 0x00A188 SNES 0x019F88 [80 00]

Crawl delay
ROM 0x009DDD SNES 0x019BDD [40 00]

Stand delay (2 Cycles)
ROM 0x0095A5 SNES 0x0193A5 [08 00]

Stand delay3
ROM 0x00955D SNES 0x01935D [40 00]

Walk delay
ROM 0x009714 SNES 0x019514 [08 00]

Dive delay
ROM 0x009730 SNES 0x019530 [40 00]

Get up delay after diving
ROM 0x0099B2 SNES 0x0197B2 [08 00]

Time hurt
ROM 0x009E1C SNES 0x019C1C [20 00]

Time before jumping after hurt
ROM 0x009E98 SNES 0x019C98 [20 00]

Time before flipping
ROM 0x009C3C SNES 0x019A3C [08 00]

Jump timer1
ROM 0x009CD2 SNES 0x019AD2 [20 00]

Jump timer2
ROM 0x009D07 SNES 0x019B07 [04 00]

Timer to wait after jumping
ROM 0x009D53 SNES 0x019B53 [80 00]


Edit
Raphael the Raven timings

Idle timer 1
ROM 0x07B77C SNES 0x0FB57C [14]
Idle timer 2
ROM 0x07B6E1 SNES 0x0FB4E1 [14]
Wait look around
ROM 0x07B737 SNES 0x0FB537 [40]

The value at ROM 0x07B737 SNES 0x0FB537 is added to 0x20, so change these for a smaller value.
ROM 0x07B736 SNES 0x0FB536 [69 40] to [A9 02]
ROM 0x07B76D SNES 0x0FB56D [D0 08] to [EA EA]

Spark X offsets
ROM 0x07AE59 SNES 0x0FAC59
Medium Left [F8 FF]
Medium Right [08 00]
Small Left [F0 FF]
Small Right [10 00]

Change them to this for a wider range
[E0 FF 20 00 C0 FF 40 00]
Working on Super Mario World 2 - Yoshis Island Boss Rush
Other projects on hold.
Yay!
Seriously, I can't thank you enough!!
Thanks a lot for the info once again. Also, I was working on the Sprite 0x131 clone and I thought it's possible to implement the feature into the normal Sprite 0x131 code, so I don't need another Sprite ID to do that.

Here's the changes:

Code
lorom
header

!FreeRAM = $703FFE

ORG $02A0D4
	JSL ADDITIONAL

ORG $03FF60
ADDITIONAL:
	LDA $701FFE	;Loads level number
	CMP #$00C0	;Checks whether it's the Castle Maze
	BEQ nextcheck
	CMP #$0009	;Checks whether it's the bonus room
	BEQ nextcheck
imcheck:
	JSL $03D3F8	;Item Memory Check
	RTL
nextcheck:
	LDA $7027D0	;Loads X-coordinate of Sprite
	CMP #$009E	;Checks X-coordinate of Sprite
	BEQ imcheck
	LDA !FreeRAM
	CMP #$0000	;Compares to Custom RAM flag
	RTL


So now I just need the part of the door's code, which sets the Item Memory flag and it should be easy enough to modify it so it sets a Custom RAM flag instead of Item Memory flag under certain conditions.

I can't quite make the part out, which sets the flag, but I assume it also jumps to some sub-code there in order to get it set, just like it did when it checks the flag.
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
I was thinking about those doors, you could still make a custom sprite point to 0x131's code,
and use this ASM code in there
Code
	LDA	$7360,X		BD 60 73	//Read current ID
	CMP	#$004D		C9 4D 00	//Check sprite ID
	DO CONDITIONAL BRACH HERE

This code will determine the ID of what sprite is currently being processed,
RegX contains the pointer in the sprite table at the start of a sprites subroutine.



You could hijack the code here to add in the ID check
Code
$02/A0DA FE 36 7A    INC $7A36,x[$02:7A8A]   A:0000 X:0054 Y:0000 P:envmXdiZc	//Show door locked
$02/A0DD 80 55       BRA $55    [$A134]      A:0000 X:0054 Y:0000 P:envmXdizc


This code here could be hijacked to set the Flag, since it only happens when doors open
Code
$02/A388 BB          TYX                     A:0025 X:0058 Y:005C P:eNvmXdizc	//Open door
$02/A389 22 87 BF 03 JSL $03BF87[$03:BF87]   A:0025 X:005C Y:005C P:envmXdizc



Also, To change what item in stock opens the locked doors (Use sprite list as reference, 0x22-0x2B is valid)
ROM 0x01257D SNES 0x02A37D [27 00]


To change what button to press to unlocks doors

Defines button group; 0x0037 = Group1, 0x0038 = Group2
ROM 0x01255A SNES 0x02A35A [38 00]

Button/s to press
ROM 0x01255D SNES 0x02A35D [08 00]

Group 1
0x10 = R
0x20 = L
0x40 = X
0x80 = A

Group 2
0x01 = RIGHT
0x02 = LEFT
0x04 = DOWN
0x08 = UP
0x10 = Start (Won't work most of the time)
0x20 = Select
0x40 = Y
0x80 = B

Personally I hate the fact that the UP button opens doors,
there were many times on the SNES console where I would attempt to run past a door, but no,
the door had to interrupt the game play, open up, suck me through,
just so I could go back through it again.
I switched to the X button.
Working on Super Mario World 2 - Yoshis Island Boss Rush
Other projects on hold.
Thank you for the info!
I've found what I needed to complete the patch!
Also, interesting idea with the door-button. Since the X-button is actually never used throughout the game (except for Minigame) it would actually be good as a door-opener. I might implement that.
However, I must first see about the graphics, since the control diagram doesn't show any function for the X-button and it's also not in bright colors, so I hope this is changeable.

Here's the patch that works with Sprite 0x131 used for everything.
I just f****** hope the RAM address assigned really is free RAM.
I haven't fully tested it concerning other doors and possible side effects and stuff, but I will do that tomorrow.

Code
lorom
header

!FreeSpace = $03FF60	;<--- Must be 0x4A (74) bytes or larger
!FreeRAM = $701FFC

ORG $02A0D4
	JSL ADDITIONAL

ORG $02A39A
	JSL SETFLAG


ORG !FreeSpace
ADDITIONAL:
	LDA $701FFE	;Loads level number
	CMP #$00C0	;Checks whether it's the Castle Maze
	BEQ nextcheck
	CMP #$0009	;Checks whether it's the bonus room
	BEQ nextcheck
imcheck:
	JSL $03D3F8	;Item Memory Check
	RTL
nextcheck:
	LDA $7027D0	;Loads X-coordinate of Sprite
	CMP #$009E	;Checks X-coordinate of Sprite
	BEQ imcheck
	LDA !FreeRAM
	CMP #$0000	;Compares to Custom RAM flag
	RTL

SETFLAG:
	LDA $701FFE	;Loads level number
	CMP #$00C0	;Checks whether it's the Castle Maze
	BEQ nextcheck2
	CMP #$0009	;Checks whether it's the bonus room
	BEQ nextcheck2
imset:
	JSL $03D3EB	;Item Memory Flag Set
	RTL
nextcheck2:	
	LDA $7027D0	;Loads X-coordinate of Sprite
	CMP #$009E	;Checks X-coordinate of Sprite
	BEQ imset
	LDA #$0001
	STA !FreeRAM	;Stores Custom flag in RAM
	RTL

;;*Edit* The LDX $12 must stay in place, or else the game freezes.


*Edit*
As you can see, it works. The door is freshly unlocked (I've manipulated the Screen Exit so it would just take me back to the same door I just went through) and the coin is still there. Using the patch I can remove those ridiculous pipe paths which don't make any sense for players.


NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
I've personally never had trouble with accidentally entering doors with the up arrow while trying to run past them, at least on the GBA/DS control pad (actually, it's more likely that I'd run past a door I was trying to enter but fail to activate it, which seems to have led to a habit of reversing direction right as I pass a door I'm trying to enter). Is the SNES control pad more sensitive or something?

(It has happened occasionally where I've tried to scroll the screen upward or throw an egg upward but happen to be standing in front of a door (or scroll the screen downward or duck while standing on an enterable pipe), but that's different.)

As for the LDX $12, I can see one difference between placing it where the NOPs are and placing it where it is now: Currently, it will not run LDX $12 unless it runs imset (meaning if it branches to nextcheck2 but not to imset, X will contain whatever it did previously instead of the value of $12).

Edit: By the way, that "I was unsure about the LDX $12" comment is a table stretch on my monitor.

–=–=–=–=–=–=–
Advynia: a Yoshi's Island editor - Alyssa's Unlikely Trap demo 3
Originally posted by Zeldara109
As for the LDX $12, I can see one difference between placing it where the NOPs are and placing it where it is now: Currently, it will not run LDX $12 unless it runs imset (meaning if it branches to nextcheck2 but not to imset, X will contain whatever it did previously instead of the value of $12).


Okay, it's cleared up, I must leave the LDX $12 in place, it's essential, or else the game will freeze upon opening the door (weird, that it didn't happen when I tested it first...).

Okay, here's what the patch does:
If there's a door in rooms 0xC0 or 0x09 and its X-coordinate is ≠ 0x9E, it checks the Custom Flag instead of Item Memory Flag when creating the door itself and also sets the Custom Flag instead of Item Memory Flag when unlocking the door.
Now I must test, whether it always does what it's intended to do, but I'm almost sure, there won't be any side effects.

*Edit*
The patch has a very bad flaw:
As soon as the door in room 0x09 at X-coordinate 0xBC is opened (no matter whether it's locked or unlocked), both locked doors in room 0xC0 are unlocked. Actually, the door in room 0xC0 at X-coordinate 0x4C should be opened only. The problem does not occurr, when the door in room 0xC0 at X-coordinate 0x4C is opened first.
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Shouldn't
Code
LDA $7027D0 ;Loads X-coordinate of Sprite

Be this?
Code
LDA $7027D0,X ;Loads X-coordinate of Sprite


I recommend that you use the 0x0070E2 X-cord table(index X) for main subroutines and the address 0x007960 for inint subroutines,
as it uses one less byte and it works for spawned sprites as well.
Working on Super Mario World 2 - Yoshis Island Boss Rush
Other projects on hold.
Originally posted by tehaxor69
I recommend that you use the 0x0070E2 X-cord table(index X) for main subroutines and the address 0x007960 for inint subroutines,
as it uses one less byte and it works for spawned sprites as well.


I didn't know I was able to use the LDA X, too.
Also, the problem is not the command, it seems to be an issue with level 0x09, since it works for level 0xC0, but once the door in 0x09 is opened, both doors in 0xC0 are unlocked. I really have no idea why this happens...
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Could you provide an IPS without the XKAS applied?
Working on Super Mario World 2 - Yoshis Island Boss Rush
Other projects on hold.
Here you go. Also, when I made the last test, both doors were unlocked even if I went through the door in room 0xC0. I simply don't look through it anymore.

*Edit*
I've sent you an unchanged ROM with the patch applied. If you want the current hack with the patch applied, please PM me, since I don't want to release it, yet.

*Edit2*
I've tested the Offsets for Hookbill and Raphael the Raven and they work very well. However, there are still two questions, one for each boss:

1st is for Hookbill, and that's still the Mode 7 thing.

2nd is for Raphael, and that's the Y-Offsets of the Sparks, so they can hit Yoshi, even while he is standing on a log.
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Not really a question or much of anything suited to the thread, but I have nowhere else to show this off: My custom YI Boss order for the hack I plan(Whenever I'll get to doing that).

1-4 Boss: Boon the Boo (Boon the Boo's Fort)
1-8 Boss: Sheldon the Slime (Sheldon the Slime's Lair)
2-4 Boss: Big Burt (Big Burt's Fort)
2-8 Boss: Potted Ghost (A Night in a Haunted Castle)
3-4 Boss: Froggy (Froggy's Palace)
3-8 Boss: Naval Piranha (Yoshi's Pipe Dream)
4-4 Boss: Taylor the Tap-Tap (Taylor the Tap-Tap's Fort)
4-8 Boss: Melvin the Unshaven (Melvin the Unshaven's Castle)
5-4 Boss: Raine the Raven (Raine the Raven's Tower)
5-8 Boss: Norman the Koopa (Norman the Koopa's Castle)
6-4 Boss: Mr. Milde (Mr. Milde's Fort)
6-8 Boss: Baby Bowser (Koopa's Kingdom Mark II)

Any thoughts?

EDIT: Swapped 3-4 and 5-4.
Your layout has been removed.
Other than "Keeping the difficulty curve is quite hard with this order"?
For example, how are you supposed to make Froggy suitable as 5-4 boss? It's nothing but standing in the middle and shooting eggs upwards. Also, I hope you know, that Milde can't be edited (at the moment), since each part of him is an independent Sprite. So you can't increase his HP, since he doesn't use HP and it's unlikely, that it's possible to give him more splits. So the only way to increase the difficulty are adjustments to the room you fight him in. (The only things you could do are setting an Enemy Generator or using the yellow death spikes.)
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Your order is very unique, CrystalJadeStrike! You've chosen good names for the bosses. I like it. Custom boss orders are always a big plus in YI hacks. #w{=)}Free counters!
Originally posted by Yoshis Fan
Other than "Keeping the difficulty curve is quite hard with this order"?
For example, how are you supposed to make Froggy suitable as 5-4 boss? It's nothing but standing in the middle and shooting eggs upwards. Also, I hope you know, that Milde can't be edited (at the moment), since each part of him is an independent Sprite. So you can't increase his HP, since he doesn't use HP and it's unlikely, that it's possible to give him more splits. So the only way to increase the difficulty are adjustments to the room you fight him in. (The only things you could do are setting an Enemy Generator or using the yellow death spikes.)

Well, what was there in the original game to make Raphael suitable for 5-8 boss? In my opinion, he was probably going to be too easy for 5-4. Besides, his theme fits better for my world 3. (A tower in a watery jungle)
I could change the way the acid generates in Froggy's battle. Also, my Milde Room is going to consist of a large upward inclined platform over a large bed of spikes on one side of the room, and a comparatively smaller section of floor without them on the right. The smaller forms will only be able to be killed on that platform, as the incline will go above their heads. It may add tedium, but it should make for world 6 difficulty.

I think I could make a nice, unique difficulty curve with this, if done right.
Your layout has been removed.
That reminds me, I have a question-- does anyone know how to remove the key scene from a boss that was originally an x-8 boss, or add a key scene to a boss that was originally an x-4 boss?

–=–=–=–=–=–=–
Advynia: a Yoshi's Island editor - Alyssa's Unlikely Trap demo 3
Originally posted by Zeldara109
That reminds me, I have a question-- does anyone know how to remove the key scene from a boss that was originally an x-8 boss, or add a key scene to a boss that was originally an x-4 boss?

Are you working on Kamek's Revenge (2.0) some more? Or ATC?
I think it may be easier to add than remove. Are there specific sprites or code headings or something else?
Where's tehaxor when you need the guy?

(Wow, almost all of the sentences in here are questions?)
Your layout has been removed.
@Zeldara109

Changing the scene at the end of a boss battle is a little more difficult
because all of the bosses are hard coded to preform the transition events.


To enable keys for all bosses, change:
ROM 0x016264 SNES 0x02E064 from [F0 27] to [EA EA]
The X-4 scene is shorter than the X-8, it will cut off after the wipe out effect.

You could get the complete key scene with burt by changing
ROM 0x0324BA SNES 0x06A2BA to [A9 2D 00 9D 60 73 A9 0B 00 95 76 6B]
Burt is still a little glitchy with this one, untransformed burt will jump in again because it reloads him.

Prince Froggy is not compatible with the key, but his SFX render area could be moved to fix it.



Edit:
To get Burt's scene fully functional change ROM 0x0324BA SNES 0x06A2BA to

BD E2 70 85 00 BD 82 71 38 E9 10 00 85 02 22 A3
E1 02 A9 C0 00 9D 96 7A
EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA EA
EA EA EA EA EA EA EA EA EA




All Boss Key Modifications:
To give Burt The Bashful a key, change:
ROM 0x0324E8 SNES 0x06A2E8 to 0xA3

To give Bigger Boo a key, change:
ROM 0x023D7C SNES 0x04BB7C to 0xA3

To give Prince Froggy A key, change:
ROM 0x077A10 SNES 0x0EF810 to 0xA3

To give Marching Milde A key, change:
ROM 0x032D59 SNES 0x06AB59 to 0xA3

To give Sluggy The Unshaven a key, change:
ROM 0x015970 SNES 0x02D770 to 0xA3

To give Tap-Tap The Red Nose a key, change:
ROM 0x07A7B6 SNES 0x0FA5B6 to 0xA3

To remove Salvo The Slimes's key, change:
ROM 0x030EB5 SNES 0x068CB5 to 0x9C

To remove Potted Ghost's key, change:
ROM 0x0107D4 SNES 0x0285D4 to 0x9C

To remove Naval Piranha's key, change:
ROM 0x0173F9 SNES 0x02F1F9 to 0x9C For Normal
ROM 0x0008D8 SNES 0x0086D8 to 0x9C For "OH, MY!!!" scene

To remove Hookbill The Koopa's key, change:
ROM 0x00A20B SNES 0x01A00B to 0x9C

To remove Raphael The Raven's key, change:
ROM 0x07B92D SNES 0x0FB72D to 0x9C
Working on Super Mario World 2 - Yoshis Island Boss Rush
Other projects on hold.
Cool, it can be done quite easily, actually, which allows for a much greater new boss order than before!

Also, tehaxor69, the uncertainty is killing me.
Are there any news concerning the door patch? What's the status?
Is it
- No, the room index has nothing to do with Item Memory (which I doubt)
- No, it works for me without problems
- Yes, it has to do with it, but I haven't found what to edit, yet
- Yes, I know what to do, but haven't said it, yet


Also, is there a way to change the Bonus Game, which is activated by clicking on the Bonus-Icon in each World?
W1 - Flip Cards
W2 - Scratch and Match
W3 - Drawing Lots
W4 - Match Cards
W5 - Roulette
W6 - Slot Machine
How can I change this order?
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Link Thread Closed