Hey guys,
Back in December/early January, I was screwing around with
XVI32, trying to get more hacks working. One of the issues I encountered was with the "Additional music settings and sequences", but I think I've sort of managed to identify what part caused the problem.
My test subject was the Year of the Plumber C3 Demo.
When you run the pre-patched hack on console, this is what you get:
https://www.youtube.com/watch?v=rLjxKzkMB5c
I put together a fairly lengthy xsc script (to use with XVI32) which did a few things:
1 - Fixes MIO0 data (replicates what Kyle describes
here, which itself follows
Vertrex's notes)
2 - Skip the CRC Check (as described
here)
3 - Fixes the VI (as I describe
here, last post)
If you take the pre-patched YotP demo, apply this script to it, then save it out as a new file and run it on console, this is what you get:
https://www.youtube.com/watch?v=ud7FNIbYLk4
This is, I'm pretty sure, what queueRAM was describing here:
QuoteDoes it run?
No. Title screen shows, but the audio sounds very wrong. After pressing 'start' to try to get to the main menu, screen glitches and system locks up. Can't even reset, need to power cycle. As I find time, I'll individually apply some of these changes to help narrow down which is the problem one, but they are mostly dependent on each other. If anyone has better ideas, please help me here.
Back in December/January, I basically went through the same process as queueRAM, and also identified the "Additional music settings and sequences" modification as causing issues. Then I compared a ROM at stage 4 (Music volume bug fix) which worked, and a ROM at stage 5 (Additional music settings and sequences) which didn't work, and I noted the differences.
When comparing the differences, it
looks like there's huge amount of changes, but it really all broke down into a few "blocks" of varying sizes:
1 - 3 small clusters at $D4716, $D476A and $D4786
2 - A little bit at $D48B4
3 - About 20 lines of code at $7F0000
4 - About 100 lines starting at $7F1000
5 - Several thousand lines, starting at $3E00000
A bit of trial and error later, it seemed that only blocks 1 and 2 needed to be changed back in order for the ROM at stage 5 to run. Reversing these two blocks in the YotP Demo also allowed it to run. Here's the script:
Code
REM /////////////////////////////////////////////////////////////////////////////////////////
REM Undo the Music Changes
REM Fixes 3 sets of 2. 000D 4710, 000D 4760, 000D 4780
ADR $D4716
OVERWRITE 02 F0
ADR $D476A
OVERWRITE 02 F0
ADR $D4786
OVERWRITE 02 F0
REM ^^ Just a black screen when booting, if this is missing
REM Fixes 7 pairs on line 000D 48B0
ADR $D48B4
OVERWRITE 0C 0C 5C 10 24 05 01
REM Ah ha, this is the culprit! ^^
Now, when you run the YotP Demo after running
both scripts (I've only posted the second one here, the first is rather lengthy), this is the result:
https://www.youtube.com/watch?v=kuVpaYIgwAg
The game more or less works now, though there's still the usual missing texture issues in one stage. The audio "works", but most of the instruments are wrong (also note how chain chomp sounds like a monkey, and vice versa).
As you can probably tell, I'm pretty much in over my head here, and I don't have an understanding of
why these changes allow the hack to run, only that they
do.
I hope what I've posted here will be helpful to you, or will at least narrow things down a bit.