Originally posted by WhiteYoshiEggWell, my reasoning is if 100% of hackers insert graphics with LM, and LM has a warning, and people still run into the issue, that warning must be worded wrong or appear at the wrong time.
Yes, because all humans are perfectly rational and logical beings who would never just blindly click past warnings about technical issues without heeding them.
Actually I'm sure the revised warning will help a fair bit, but you shouldn't expect it to be 100% effective for something like this. Changing YY-CHR to have a more sane default will have a far greater effect, as then you're preventing the problem from happening to begin with instead of warning that it has to be corrected after it already happened.
As for trying to explain to people how to fix it afterwards, if they have nothing past the 4KB mark they want to keep it may be easier to just tell them to apply the
GFX chop IPS patch to the graphics file in question.
Originally posted by imameliaHow do you tell Lunar Magic that a level has custom Layer 2/3 interaction?
By setting a level to either be a layer 2 level in the level properties dialog or to use tides.
Originally posted by imameliaJust setting bit 7 of $5B and $0BF5 in levelinit doesn't seem to be enough.
That would be for telling the game, not Lunar Magic...
If you're going to try setting that bit of $0BF5 directly, you'd have to hijack somewhere in LM's ASM because the same code routine that sets $0BF5 is also the one that reads it to set up the screen pointers.
Another possible approach might be to set the level to use low tides in LM and then just clear the RAM setting that the original game uses for turning on tides in your code someplace, before the original game code that sets the level tilemap for the tides has a chance to run. Not sure if that'll work with whatever you're doing though.
Note that I don't recommend changing the bit in the ROM level table that $0BF5 gets its value from, as LM has several checks in places to set that based on what the level settings actually are. Which means it'd just be reverted the next time you save the level in LM.
(BTW, your code in that other thread for dealing with the screen pointers was right the first time... you should be using $0C26/$0C86.)