9 users online: anonimzwx, CarlMitchell60, Fryinb, GrenCarret, gripi_90, HarvettFox96, SuperMarioDs64, Twxaxreal, UTF - Guests: 86 - Bots: 113
Users: 57,124 (2,266 active)
Latest user: Albani81

Title screen editing


Again, I'm sorry if this has been explained before, but I thought it'd be good to still have a comprehensive guide on how to edit the title screen.
Not only is my goal to have a guide on how to do that, but also to cover all three de facto operating systems. All of this can be done for free on Windows, Linux and Intel Mac OS X, which I'll be using.

What you need:

ycompress and for Mac/Linux users, WINE.
—A headered, verified good dump 1.0 (U) ROM of Yoshi's Island
A Tile Editor
There are numerous tile editors, but I strongly suggest Tile Molester
—A graphics editor of choice.
One might suggest Adobe Photoshop, but for this, MS Paint is an equally powerful tool.
—A Hex Editor.
There are several, but the best one for Linux is Bless, for Mac OS X it's 0xED.
Windows users can debate on quite a few, but the most popular ones seem to be Translhextion, XVI32 and GoldFinger

Begin by opening the image below in your graphics editor. If you have the chance, set up a grid of 8×8 pixels.

The green zones mean that the area can be mapped in its entirety with the tiles available in the graphics bank.
The purple zone means practically the same, but it's where the HDMA effect takes place, so plan around that. Regardless of what you put there will get the wavy effect like the original 'Yoshi's Island' text.
The darker parts in both color zones are just overlays of the original title screen's tiles (see this for reference).

Once you have a substantial plan, start drawing your title screen. This is mine:

As you can see, I've kept and edited original graphics, but also done brand-new ones.
Bear also in mind that the title screen is 2bpp graphics, which means that we can not work with more than 3 colors + transparency. If you look at this image, you'll notice that no tile breaks this 3-color rule.
I have also worked only with the colors used in the original title. We can edit those colors, but more on that later.

The way we'll get this physical image into the game itself is by a workflow of the following:
-Decompress graphics
-Overwrite/edit appropriate graphics
-Recompress graphics
-Set up the tilemap array to correspond your graphics and palettes

First off, decompress the graphics.
To ease things off, download decompress.bat, a simple batch command file that can be used to decompress the graphics. To use this, you must have your ROM in the same folder as ycompress.exe. The ROM must also be named YOSHI.smc.
Windows users: Open the BAT file.
Mac users: Open the BAT file in WINE with an appropriate bottle. I used .winxp, and it works perfectly.
Linux users: I have never used a Linux distribution, so I do not know how to really work with them, but I am certain that you can run the file somehow with WINE. If anyone with Linux can give more info on this, I'd be glad to update this post.

Once you have your AllGFX.bin ready, do not open it in Tile Molester, but instead create a new Tile Molester document and set the size of the document to big enough, I used 64000. Be sure to set the codec to 16bpp RGB (565).
I apologize for some of the screenshots displaying false information. I accidentally used the 8bpp linear codec, but just imagine that it says "16bpp RGB (565)".
Then import your image into Tile Molester (Edit > Paste From...) and set the canvas to the appropriate size.

Once you're done, open your AllGFX.bin to Tile Molester as well.
After that, select "Palette > Import From > Another file..." and choose this palette file. If you're not using Tile Molester, ensure your Tile Editor reads ZST files, at least.
Finally, head over to 0x6A400 and arrange the windows to a horizontal tile as shown in the image below.

Now begins a process where we remove most of the original tiles in the AllGFX file. What we WON'T remove are the things that we didn't remove while designing the new title either. These are the 'Super Mario World 2'-text and the (C)-symbol. Everything else goes. Well, almost. I will keep the special star graphics because they have a valid function. Eventually we'll get to this:

So now we're at a point where we've removed everything but the necessities. A thing you must also keep in mind is tile 22, which I've emphasized as a orange tile (Don't do this. Just keep it transparent). This tile must be left blank, as it serves as a transparent tile. Leave it as is; transparent.

So what we're going to do now is simple cut/pasting from the left window to the right one while keeping the correct palettes.
The trick here is to not have any duplicate tiles or mirrors of already-existing tiles. It might seem confusing but it will be worth it in the long run. We have so much to bring over, but so little room in the graphics page.
I'll start with the black/white/orange tiles. Setting the grid on might help some to concentrate.
This is how far I got:

Then I ran out of space. I had to sacrifice the "A ... -HACK" and the green stripe from the background. But that's what you get when you get too excited. We only have 128 tiles to work with. What a drag.
Regardless, save the AllGFX.bin.

Now to recompress the graphics back to the ROM.
Place this file into the same folder with everything else. Running this will recompress the AllGFX file back to the ROM. Do it and check out the changes.
You should be left with a "What the hell man"-feeling. But fear not, this is how it should look!

You see, whereas we've already inserted the graphics, the tilemaps must still be defined.
And thus begins the last step in this frustrating journey.

Open your Hex editor and head over to 0x7FE80 and set your row width to $40. You should see something on the lines of this.
This might look confusing, but all in all it's a series of two-byte combos, each defining one tile.
Essentially what's being repeated is "tile to use, and property of it. tile to use, and property of it." over and over.

In the very beginning, you see only 22 27. I mentioned earlier that 22 is the tile that must be left untouched, and for this very reason. This is the 'empty' space tile. 27 however is 0010 0111 in binary, and that brings us to the property byte.
The property byte must be broken to bits to comprehend. The bits stand for the following:
vhll pppb
If a bit is set, the property holds true:
v = vertical flip
h = horizontal flip
l = layer property(?)
p = palette bit
b = bank to use

For example, from 0x7FF08 starts a byte array of the following: 00 2B 01 2F 02 23 03 23 04 23 05 2B 06 2F 07 2F 08 23 09 2B 0A 2F, and it defines the upper part of the 'Super Mario World 2' text's tiles and palettes.
If you read every other byte, you'll notice it really says 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 0A. Exactly the tiles used by that part of the title.
But what about the properties? Break them all to binary and observe:
0010 1011 / 0010 1111 / 0010 0011 / 0010 0011 / 0010 0011 / 0010 1011 / 0010 1111 / 0010 1111 / 0010 0011 / 0010 1011 / 0010 1111.
For each unique palette is an unique bit combo on the ppp field. Maybe the image below will help you visualize.

But what we're really after here is replacing the title screen (new graphics, old tilemap) with ours (fixing the tilemap).
Carefully begin defining your tiles onto the field.
Tile 28 is the upper left corner of the "Y" in "Yoshi's", so that's where I'll begin. By comparing the byte array to the original sketch I made in Photoshop, I know where to put it.
Now, here I've defined a few of the new tiles, extended the "(C) 2010 Naulahauta" and kept the "Super Mario World 2"-text as is:

What I've done through these images is looked at the hex editor's byte array, compared it to the new title in Photoshop, looked at Tile Molester's AllGFX and typed back in to the Hex editor the tiles to use. Through trial and error, I got it done.

Not much of palette defining was needed, but I did need to flip some tiles vertically and/or horizontally.

Nonetheless, the final product is here.

I understand that this guide may not help some, as it indeed is kind of confusing, but if anyone has ANY questions, please ask. I'd be happy to help. :)
Even if there are known information about where the original tiles are stored and how to edit the Tilemaps of the game logo, we haven't had such a comprehensive guide before and I'm sure it will help people when they want to make their own logos (Especially the logo with the orange font can be quite tedious to make and it can also be a big disappointment, when people realize that there is not enough GFX space in this area to have a logo of the size they want. Anyways, there have also been tips I was unaware about. I might edit the graphics as well.

On another note, I must say, that this custom logo's style is quite nice. (I think I've noticed a small cutoffness in the "Yoshi's" "i". There seems to be a missing tile on the bottom of this letter.)
Thanks for the input.
And yeah, one of the losses was the green stripe, and with it went the tile with the rightmost border of the letter 'i'.

And while this may seem like a tedious task for some, I'm sure that we, as a community can collaborate and create a graphic, user-friendly editor for this task.

I can't code at all, but I have worked before with a coder, to which I explained thoroughly how the program would work.
Eventually we had created a perfect tool.
I'm sure we could do it. I've already got some plans and compression techniques in my mind. :)
I unfortunately am unable to code, too.
But I could think of a concept like the following:
You select an area of the title screen you want to edit. Either the top row, the HDMA row or the bottom row. Depending on the position you want to edit, the editable space is the corresponding size. When you're done drawing, then, the program looks for mirrored/flipped tiles and removes them upon inserting them back to the graphics. In case you are still using too many tiles, the program asks you to remove some of them.
It would be really good to have a more user-friendly method for that, since the method you have to use at the moment is quite tedious and takes a lot of time.
That's an awesome concept!
If we find the HDMA tables as well, we could push the line even further, as the wavy area wouldn't be so limited.
Great tutorial there! I had no idea how you edited YI's title screen, other than with a tile-editor program...Free counters!
And for the HDMA tables...
I don't know how they are built. So I can't say whether we could expand the range of the HDMA effect or only change the lines it works in. (Of course the title screen editor program should also automatically correct the tilemaps upon re-inserting the graphics. After removing the tiles, which can't be re-inserted, you got the graphics, which are still there. After re-inserting, the program would modify the tilemaps. For the palettes you would open an additional window showing your graphics in a grid. The program auto-displays the colors corresponding to each palette directly from the ROM. Upon selecting one of the palettes you can then click a square of the grid and then the palette is applied to that tile.)
This... seems very useful. From what I know about tilemaps, you seem to have explained it very effectively. I've added a link to the FAQ.

By the way, could you change this wide image into a link? It's annoying to have to scroll left and right to read the text when viewing this thread...

Anyway... I'm guessing the stars will still appear in their original locations when you obtain 100% on a world? It might be a good idea to make a note about that (so people don't end up with an unexpectedly cut-off logo). (That is, unless it's known how to change their locations... I'd personally like to spread the stars out (like in the GBA version) if that's possible.)

Advynia: a Yoshi's Island editor - Alyssa's Unlikely Trap demo 3
After messing around with Geiger's SNES9X debugger, I found out that changing 0x6375 from 04 to 00 will disable both, the wavy effect and the flowing color gradient. This leaves us with no limitations, but also removes the already-existing HDMA effect.

I also found out that at 0x6BD4 begins a $200 byte array that to my knowledge 'tells' what the HDMA effect is. As if it'd determine the action of each given scanline.. or.. something. I don't know too much about this whole HDMA thing.

Maybe someone who is more familiar with HDMA stuff could shed a light on the situation?
No, I'm not familiar with HDMA. I just wanted to say: Great finds!
Perhaps this is a HUGE bump, but the screenshots don't work anymore.