- 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.)
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  byte enables Items and a  disables them. Other values won't add effects: From  to [7F] it disables Items,  and values from  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.
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?)
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 IslandBoss Rush Other projects on hold.
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.
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 -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.
Yep, it works perfectly!
Location: Washington, DC
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.
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
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
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
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
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
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
Location: Washington, DC
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.
Location: Washington, DC
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 )
As far as I can tell the Control Setting stuff is not used at all, as he replaced something from there.
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.
Location: Washington, DC
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.
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.
Location: Washington, DC
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.)
Very good Sprites you made there, tehaxor69! All the Sprites work as intended. Great job! Thank you very much!
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.)