@xxxzzz1:
I don't quite understand whether you've set the item memory header setting correctly or not... Have you already looked at this section of the FAQ?
Originally posted by YI hacking FAQ v2- I didn't place any items directly above/below each other, so why do my items still vanish?
Each level contains an item memory/Midring header setting.
If two or more levels share the same setting, collecting items in one may cause items in another to vanish.
It is highly recommended that you make every sublevel in your level use a different item memory setting (as in, if 4-4 contains levels 1E, 55, AA, and C1, set their item memory indexes to 0, 1, 2, and 3, in any order).
(If your level contains 5 or more sublevels... you'll just have to test repeatedly, collecting every single item and watching closely for any that vanish. Therefore, I recommend that you try to limit your levels to 4 or fewer sublevels (not counting boss battles) when possible.)
And yes, the Salvo mini-boss affects item memory, so don't place it directly above/below another collectable item.
@Jeorge535:
Here's a summary of how to find a level's location in the ROM (note: all calculations are in hexadecimal):
- As Yoshis Fan said, to find the pointers, calculate (level number * 6 + BF9C3). For example, if you're looking for the pointers to level 39, you'd calculate 0x39 * 6 (=0x156), + 0xBF9C3 = 0xBFB19.
- The pointers are three bytes each-- first object data, then sprite data. Continuing with my example, at offset xBFB19 in a clean YI v1.0 (U) headered ROM, the next six bytes are [42 80 16 60 85 16].
- However, each pointer is in reverse byte order (little-endian). Reversing these pointers gives you [16 80 42] and [16 85 60].
- These pointers (to write them the way they're normally written, $16:8042 and $16:8560, though symbols are unnecessary in Lunar Address) are SNES addresses, not PC addresses. Copy each one into the SNES LoROM box on Lunar Address, and you'll receive the corresponding PC address on the left side (e.g. $16:8042 is B0242). (If Lunar Address adds symbols to the PC address, ignore them-- the convention is to use $ for SNES addresses and x or 0x for PC addresses.)
- Note: If the highest byte of the pointer (third byte as it's written in the ROM, first byte after you reverse it) is $40 or greater, don't use Lunar Address. Instead, subtract 0x3FFE00 (or, if you prefer, subtract 0x400000 and add 0x200) to find the PC address.
- Now you can go to that offset in Translhextion... don't forget to add the "x" at the start though (xB0242, not B0242).
As for determining where the data ends... I'm not sure exactly how to do it with Golden Egg (that is, whether or not Golden Egg's byte count includes the header or the FF bytes the mark the end of the level). (I know how to find where a level ends using Eggvine's byte count though...)
Edit:
Now that I think about it, why do you need to port your hack to a new ROM, anyway? Is there some kind of game-breaking error? If not, why not just create a copy of your existing ROM and overwrite the levels you don't like?
–=–=–=–=–=–=–
Advynia: a Yoshi's Island editor - Alyssa's Unlikely Trap demo 3