Language…
16 users online:  Ahrion, CroNo, Dennsen86, Golden Yoshi, Green Jerry, Hammerer,  Lazy, MellyMellouange, Metal-Yoshi94, mtheordinarygamer, Nayfal, Neuromancer, OrangeRock57, signature_steve, slopcore, Tulip Time Scholarship Games - Guests: 332 - Bots: 377
Users: 64,795 (2,370 active)
Latest user: mathew

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

Link Thread Closed
Originally posted by iZackefx
How do I disable the Intro? Thanks! :)


Assuming with "Intro" you mean the Story Cinema Sequence, which is played right after the "Nintendo Presents", that would be 0x7BECB to [00 00 00] and 0x7C0D2 to [00]. Addresses go for headered ROM and are in PC format.

*Edit*
Forget all of that stuff. I've made a few GFX and palette edits and it's done (was more work than I thought, but eh). There are no major side-effects from it. The sprite-palette is only changed by one color, but the object-palette has suffered a little more. I had to move it away from its brownish feel and moved it towards orange a little more. Thus the destructible castle blocks, death spikes and sticky slime are looking a little... unfamiliar now. Are there more than these three things, which use the yellow palette (aside from coins, of course)?
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
I was wondering...
anyone here know how to fixthis patch(chomp rock+W6), every time I insert it corrupts some part of the game.
(for example:Extra levels leads to random areas?)

It doesn't even works in a clean ROM...





Anyone, help?
I made a thread for C3 where I was experimenting new tileset and things in Golden Egg. I tried to use some of these in my game. Should I make a video or something? I don't know if this is helpful or if it has been mentioned before somewhere.

Well, here are some things I found out:


- You can put logs in water, but when you jump on them, you will start to move really fast sometimes.
- You can throw eggs through water and lava, and they will move slower while in the water or lava, and then they will come out through the other side and move regular again.

- I found a stone tileset w/ clear water, and if you go up into a submarine area in the same level, I think the clear water will rise.

- I think a lot of people know you can use Salvo the Slime and Giant Tap-Taps in regular levels, but I didn't know you could also use Giant Mildes. Are there any other bosses you can use in regular levels or they won't work right?

-Does anyone know if you can hit a POW switch w/an egg or do you have to hit the POW switch from below?

- Poochey can float in lava, but the rock will sink to the bottom so if you want to put it in lava, you have to put cement blocks.

- This also happened to me by accident once. I got a star, and I went on the yellow spikes, but then there was water, and when Baby Mario jumped in it, the game just got frozen all of a sudden so I don't think there is a way to use Baby Mario in water unless someone knows a way to get past it or is that just how the game was programmed?
Also, if Yoshi tries to swim in water, he will just float to the top. Does anyone know if there is a way to make Yoshi swim correctly? I assume there isn't w/out knowing ASM or something.

-Also, this is strange, but if you get a star and jump in lava, the game will still work, but you won't swim in the lava. You will just jump through it.
Originally posted by Lespna1

- Poochey can float in lava, but the rock will sink to the bottom so if you want to put it in lava, you have to put cement blocks.
Does anyone know if there is a way to make Yoshi swim correctly? I assume there isn't w/out knowing ASM or something.

-Also, this is strange, but if you get a star and jump in lava, the game will still work, but you won't swim in the lava. You will just jump through it.

Misspelled Poochy. And We know about the first one, It was in the original Extra 1.

I knew about the second one, and Yoshi's Fan even used it in his hack. The Lava is insta-kill so it doesn't affect sprite buoyancy. As you can see, enemies jump through it, and bouncing podobos just bounce of what's below. I think only Yoshi and frog-pirates are actually programmed to float.
Your layout has been removed.
Has anyone posted the offsets of the solid BG colours and HDMA gradients? I'll need to edit one of the solid colours for my hack. I've looked around this forum, but I can't see the required offsets anywhere.Free counters!
As for the HDMA gradients, one of Romi's posts is quite helpful:

Originally posted by Romi
0xD773
| 5F 00 4C D6 | 5F 00 7C D6 | 5F 00 AC D6 | 5F 00 DC D6 |
| 5F 00 0C D7 | 5F 00 3C D7 | 5F 00 6C D7 | 5F 00 9C D7 |
| 5F 00 CC D7 | 5F 00 FC D7 | 5F 00 2C D8 | 5F 00 5C D8 |
| 5F 00 8C D8 | 5F 00 BC D8 | 5F 00 EC D8 | 5F 00 1C D9 |

The pointers to the table of gradient BG colors. 4 bytes each. First 2 bytes are the destination bank number, next 2 bytes are the destination address.
(I'm going to explain on condition that you have a little knowledge of SNES ASM)
The valid header value of BG color must be higher than 0x10 to use this HDMA effect. So, to calculate the pointer you're looking for, use this formula.

x = 0xD773 + (header[BGcolor]-0x10) * 4;

The length of the color table designated by the pointer is 0x30 bytes.
The example to find the table of BG color 0x10 (in the original, it's used at 6-8)
x = 0xD773 + (0x10 - 0x10) * 4;
x = 0xD773;

The 4 bytes at 0xD773 are 5F 00 4C D6. Converting it to the PC address, the result is 0x1FD64C+(0x200)

At 0x1FD84C, there's the color table for BG color 0x10
0x18 palettes in SNES palette format are here and the direction is "upward" instead of "downward". (So, modifying the former bytes of the table will change the lower part in the game.)
It only has kind of less palettes, but the distance between ones are actually 0x10 lines and palettes between ones are automatically calculated to make the cange of palettes look natural. This could make the table length shorter.


In case with "solid BG" you mean the Layer 1 Palettes, a post of me is helpful:

Code
42 COLORS/PALETTE

PAL	OFFSET

#	0x				#	0x
00	1FA87E-1FA8D0		10	1FADBE-1FAE10
01	1FA8D2-1FA924		11	1FAE12-1FAE64
02	1FA926-1FA978		12	1FAE66-1FAEB8
03	1FA97A-1FA9CC		13	1FAEBA-1FAF0C
04	1FA9CE-1FAA20		14	1FAF0E-1FAF60
05	1FAA22-1FAA74		15	1FAF62-1FAFB4
06	1FAA76-1FAAC8		16	1FAFB6-1FB008
07	1FAACA-1FAB1C		17	1FB00A-1FB05C
08	1FAB1E-1FAB70		18	1FB05E-1FB0B0
09	1FAB72-1FABC4		19	1FB0B2-1FB104
0A	1FABC6-1FAC18		1A	1FB106-1FB158
0B	1FAC1A-1FAC6C		1B	1FB15A-1FB1AC
0C	1FAC6E-1FACC0		1C	1FB1AE-1FB200
0D	1FACC2-1FAD14		1D	1FB202-1FB254
0E	1FAD16-1FAD68		1E	1FB256-1FB2A8	(Unused)
0F	1FAD6A-1FADBC		1F	1FB2AA-1FB2FC	(Unused)

NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Actually, by "solid BG" I meant the single-colour background colours, like the one from 2-8's jungle room and 4-8's boss room. I imagine that editing these just requires editing one colour.Free counters!
I see. So it's just the BG color. Actually, this can be done easily, as long as the used color isn't used somewhere else and doesn't exist too often in the ROM. In order to find them by colors, a program like GIMP and SNESPalette Editor are fully sufficient (as said in case the color doesn't appear too often).
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Ah, that's good. Seeing as I'm not planning to use any of the solid colours in my hack (aside from 0, 1 and maybe a lighter blue), I'll find one of the more rarely used ones and edit it. Can I use Paint to find the colour I want to edit?Free counters!
Whatever program, which spits out the RGB color-values.
You gotta divide each of them by 8, use the values in SNESPal, byte-flip it and then look for the two bytes using Translhextion or another Hex-Editor.
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
I see. Well, I've found the solid BG colours in the ROM. They start at $1FA330 and finish at $1FA34E.Free counters!
The chomp rock+W6 patch issue has been solved by myself.

And... other question approaches!
Originally posted by Mattrizzle

Level Data
BF5E7-BF670 pointers to each level's starting point data(added to BF671)
BF671-BF750 level starting point data
BF751-BF7DA pointers to each level's midway point data(added to BF7DB)
BF7DB-BF9C2 level midway point data


Now, how the hell I calculate the pointers to level starting ponters?, all I see is "0C00 1000 1400 1800" etc. -no idea how it works.

is there a formula for this "pointer"?
#w{xD}
Sorry, but I really can't believe it!
It says "pointers to each level's starting point data(added to BF671)" and it says "pointers to each level's midway point data(added to BF7DB)", sooooooo?
In order to calculate the exact data, you need the level index for each level. For example, level 2-1 is index 0xC. Then, calculate:
LevelIndex * 2 + 0xBF5E7. There are two bytes; little-endian.
So, byte-swap them and add the value to 0xBF671, then you get the data. For the Entrances, it's 4 bytes/level: Level, X, Y (Yoshi's head), Level-Index to unlock.
As for the Midrings, the calculus is the same, but you need to add the value to 0xBF7DB, as it says. The Midrings are somewhat more tricky. There are up to 4 Midrings per level, so a maximum of 0x10 (16) bytes per level, but the game rarely uses them all, so there are many crossovers. Format is: Level, X, Y (Yoshi's head), Entrance Type.

Hope this clears things up
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
The pointers are little-endian (bytes in reverse order) like nearly every multi-byte number in the YI ROM. This means that 0C00 is actually 000C, 1400 is actually 0014, 0001 is actually 0100 and so on. Add this to the other offset to calculate where the entrance/midway data is.

So if a midway pointer is 1401, reverse the bytes to get 0114, and add it to BF7DB; the corresponding midway entrances start at BF8EF.

No need to change the pointers to the level entrance data, though, unless you're adding secret levels like SMW2+2 and NEW!YI did. Since each level has only one entrance, you can just change the level entrances themselves.

(Ninja-edit: it seems Yoshis Fan and I decided to answer this at the same time. I'll post this anyway just in case my explanation still helps.)

–=–=–=–=–=–=–
Advynia: a Yoshi's Island editor - Alyssa's Unlikely Trap demo 3
I want the priority of skinny platforms and poundable logs in Tileset 0xC to be less than Yoshi's. I've already found all of the Tilemaps necessary to make it.
I don't know about the ASM code of object 0x0C; the easiest thing would be, if every Tileset had Tilemaps assigned to it.
For the Log-Tilemaps, the best thing would be to change Tilemaps 0xC8B02 and 0xC6C0A, which only count for Tileset 0xC and make use of the (hopefully) unused Tilemaps. As for the Tilemaps of the pounded log, any Tilemaps for Tilesets 1/9, 0/8 or 7/F can be used.
The Skinny Platform-tilemaps simply must be re-assigned from the TS 4/C tilemaps to the various tilemaps.
The main problem for me is, that I don't know about the ID of each Tilemap...
I've found some values, which could stand for the IDs I'm looking for, but these don't seem to reappear in any code in the ROM.

Skinny Platform:

Tile ID #3818 left part (priority)
Tile ID #3819 middle part (priority)
Tile ID #381A right part (priority)
Tile ID #3824 left part (priority)
Tile ID #3825 middle part
Tile ID #3826 right part

Poundable Log:

Tile ID #3854 top part
Tile ID #3855 middle part
Tile ID #3856 bottom part
Tile ID #3894 top part (priority)
Tile ID #3895 middle part (priority)
Tile ID #3896 bottom part (priority)

As for the format of the Tilemaps themselves:

TTTTTTTT XYPCCCTT

T = Tile
X = X-Flip
Y = Y-Flip
P = Priority
C = Palette

The two LSB of the second byte are the MSB of the tile ID.

4 tiles/tilemap = 8 bytes/tilemap:
Top-Left -> Top-Right -> Bottom-Left -> Bottom-Right

Poundable Log

0xC6A9A Tiles for pounded log (TS 1/9)
0xC6B12 Tiles for pounded log (TS 0/8)
0xC6C02 Tiles for pounded log (TS 7/F)
0xC8C32 Tiles for unpounded log; 4 tilemaps (TS 5)
0xCC892 Tiles for pounded log (TS 5)

0xC6B8A Tiles for pounded log (TS 4/C)

0xC8BF2 Top part of log (TS 4/C)
0xC8BFA Middle part of log (TS 4/C)
0xC8B02 Bottom segment (TS C)
0xC8C0A Top & Bottom (TS C)

0xCD442 Top part of log (unused?)
0xCD44A Middle part of log (unused?)
0xCD452 Bottom segment (TS 4)
0xCD45A Top & Bottom (TS 4)

Skinny Platform

0xC722A Tiles for left end (TS 4/C)
0xC7232 Tiles for middle part (TS 4/C)
0xC723A Tiles for right end (TS 4/C)

0xC728A Tiles for left end (various)
0xC7292 Tiles for middle part (various)
0xC729A Tiles for right end (various)


*Edit*
Also, I'm sure like 100% of you haven't ever noticed it, but look at this:

The tile of the back of the Goonie's head is duplicated where the right leg of the Goonie should be. This can be fixed easily by replacing the byte at 0xD4B8B with 0x05.

NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Originally posted by Yoshi Fan
the easiest thing would be, if every Tileset had Tilemaps assigned to it.
For several objects, the values of the metatiles/Map16 tiles they are made up of are not constant, but are accessed from RAM addresses $19DA-$1DFF, which have different contents depending on the Layer 1 tileset value. It's just as you hoped it would be!

The routine at 81457 in the ROM (SNES $10:9257) is responsible for storing several chunks of tile values to memory. The values are pulled from a large table at CD81A-CE2A0 (SNES $4C:D61A-$4C:E0A0). Each chunk has a 0x23-byte long entry in the table.

That means there are: (CE2A0-CD81A = #$A87) / #$23 = #$4D, or 77 in decimal, chunks of tile values total.

Here is the breakdown of a single chunk's entry:

Code
	00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22
06D81A: 04 DA 19 00 02 00 02 00 02 00 02 08 02 00 02 10 02 0C 02 04 02 00 02 10 02 00 02 08 02 00 02 10 02 0C 02
	#  ADDR  TS00  TS01  TS02  TS03  TS04  TS05  TS06  TS07  TS08  TS09  TS0A  TS0B  TS0C  TS0D  TS0E  TS0F

Byte 0x00 (#): Number of Map16 tile values in the chunk (in the example above, the first chunk contains 4 tiles)
Bytes 0x01-0x02 (ADDR): RAM address to start loading the chunk at (e.g. the first chunk starts at $19DA)
Bytes 0x03-0x22 (TS00-TS0F): Table of starting Map16 values for the chunk, indexed by RAM address $0136 x 2 (Layer 1 tileset value)
     (e.g. L1 Tileset #$00 uses #$0200 as the starting value of the chunk, tileset #$04 uses #$0208 as the starting value, #$07 uses #$020C, etc.)

Here are the locations of the chunk entries that are of interest to you:
CDC7A: Skinny platform
CE1AC: Top of spike-topped stake/log
CE27E: Poundable stake/log with Red coin inside

...and here are some others:
CDC57: Top of grass/bottoms of ski lift poles/pounded stake/bottom of Incoming Chomp signpost
CDC9D: Solid flat normal ground

For the poundable stakes, the groups starting at #$A300, #$A304, and #$A30C all have matching tilemap data, so it's safe to change two of these if you do some repointing.

For the skinny platforms, the groups starting at #$3830 and #$383C are completely unused, so you can repoint tileset #$0C to use one of these.
Woah, thank you very much for the info!
However, for some reason, some changes don't seem to work.

The Skinny Platform stuff is working perfectly, but there are problems with the logs.

When I change 0xCE1C7 to [00 6C] and 0xCE299 to [00 A3], this happens:

As you can see, only half of the tiles are affected for some reaon...
Also, where do I find tiles 0xA300 to 0xA30C (since I want to make use of one of the unused tiles via repointing)?


*Edit*
Oh, wait, I think this problem occurrs because of object Xtended 0x16, the red coin in a log. Yeah, that must be the case...

*Edit2*
The stuff at 0xCE189 seems to be for the non-coin stakes.
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Actually, I made a mistake. Map16 page A3 has the poundable stake sections with red coins inside. Page 6B has the normal poundable stake pieces. For these, the chunk entry is at 0xCE189.

Here is how to find where the tilemaps for a particular Map16 page begin:
  1. Multiply the Map16 page value by 2, and add it to 0xC34A4. This will lead you to the relative pointer to the page's tilemap.
  2. Add the value at the location you reached in step 1 to 0xC35F2. This is the starting location of the tilemap.

So, to find where page 6B's tilemaps begin:
  1. #$6B * 2 = #$D6
    0xC34A4 + #$D6 = 0xC357A
  2. 0xC357A contains the value #$55C0.
    0xC35F2 + #$55C0 = 0xC8BB2, which means I was also wrong about one of the things I said in my reply to your PM.

I guess it's this time again...
Time for me being unable to thank you enough #w{=3}
It works perfectly now just as intended!
Thank you very much for telling me how to make it!
I've simply altered the 0x0C, 0x0D, 0x0E and 0x0F tilemaps of the corresponding pages and repointed the Tilesets using them before to the tilemaps 0x00, 0x01, 0x02 and 0x03 of the pages.




*Edit*
On another note, I've noticed another wrong tilemap:



The corresponding tile value for this one can be found at 0xD9816, which is [2F]. Actually, the tile itself is okay, but it isn't freely editable... Some values won't change the tile at all and others cause weird animations.
Nearby are some other tiles with a tile value of [2F], but editing them doesn't change anything afaik.

Copying the tilemaps from other ROMs doesn't help either, they're all the same. There seems to be a problem with the Sprite's code, I guess?
NEW! SMW2 Yoshi's Island is done!
Last update: 2012-12-31
Originally posted by Mattrizzle
Actually, I made a mistake. Map16 page A3 has the poundable stake sections with red coins inside. Page 6B has the normal poundable stake pieces. For these, the chunk entry is at 0xCE189.

Here is how to find where the tilemaps for a particular Map16 page begin:
  1. Multiply the Map16 page value by 2, and add it to 0xC34A4. This will lead you to the relative pointer to the page's tilemap.
  2. Add the value at the location you reached in step 1 to 0xC35F2. This is the starting location of the tilemap.

So, to find where page 6B's tilemaps begin:
  1. #$6B * 2 = #$D6
    0xC34A4 + #$D6 = 0xC357A
  2. 0xC357A contains the value #$55C0.
    0xC35F2 + #$55C0 = 0xC8BB2, which means I was also wrong about one of the things I said in my reply to your PM.



That's interesting. Just curious, but is that in Hex? B/c why is there a pound sign and a dollar sign in the values at the end?
Link Thread Closed