Zelda: A Link to the Past SNES vs. Wii U Virtual Console differences

Started by Tomato, November 04, 2016, 01:43:27 PM

Previous topic - Next topic

Tomato

I've been interested in looking for changes to Nintendo's Virtual Console games and finding things like this, for example:



Today I did a file comparison between A Link to the Past and its Wii U counterpart. The file differences are here: legendsoflocalization.com/media/misc/lttp snes vs wii u vc diffs.txt

Most (if not all) VC games have their music disabled and come included with external audio packs that play instead, so I'm guessing that the majority of the changes there are related to that. But I'm particularly interested in the changes here:

0003A50D: 03 18
0003A50E: 03 18

00067E6F: 1F 05

00075805: 0E 02
00075818: C0 40
00075819: 01 00
0007582C: 38 08

000DE03C: 72 70
000DE03E: 9C 95
000DE040: FF 57


These don't appear to be text-related, and the LttP hacking documents that I've found don't cover these address ranges. Any idea what these could be? I know the main text starts at E0000, so those last few ones seem especially interesting.

KingMike

I already told Tomato, but I think literally the only other difference in BoF2 is the Token ("Tolen") game tutorial dialogue basically had one line removed to remove mentioning Othello.
"My watch says 30 chickens" Google, 2018

MathOnNapkins


0003A50D: 03 18
0003A50E: 03 18


Adjusts two consecutive entries in a data table. Those extend the last two states in the Ether Medallion animation to make them last 8 times longer.


00067E6F: 1F 05


Modifies the immediate operand of a LDA instruction. This lowers the intensity of the flashing colors that tint the title screen as the sword is dropping into place. Instead of cycling between tints of full intensity red, green, and blue, it's now cycling between dull red, green and blue.


00075805: 0E 02
00075818: C0 40
00075819: 01 00
0007582C: 38 08


Modifies immediate operands to ADC instructions in a routine that adjusts colors to gradually tint more towards white. IIRC this is used when the seal on Ganon's Tower is being broken by the Crystal Maidens. The tweaks put in place cause the flashing process to take about 7 times longer.


000DE03C: 72 70
000DE03E: 9C 95
000DE040: FF 57


These modify the lower bytes of entries in a large table full of palettes. The first two reduce the red component, and the last change reduces the red and green components of a color. Which palettes? It would take more effort I'd rather not do at the moment to figure that out. Best I can say at the moment is that they are palettes meant for BG tiles in indoor parts of the game. Specifically, my notes mark them as "DungeonMain BG palettes (6 in each group)"

I already basically investigated these several months ago b/c someone in a Zelda IRC channel asked me about them. I figured they would have put that information up somewhere, guess not?

I am curious to know how this music pack mechanism thing works though. The emulator program would have to monitor something to know when to load the right track and sound effects. And I would also assume that they'd have to emulate the SPC-700 to at least some degree to not break anything as there are infinite loops where the S-CPU awaits responses back from it.

Edit: It does appear that all of the other changes were to data that gets fed to the S-APU, and it is a massive quantity of changes. Maybe that's how they accomplished this trickery? Presumably the "APU" in the Wii U is just a fake and the program being uploaded is for a simpler virtual device that plays the appropriate sounds / music when fed the right numbers? I don't have that rom so it would be hard to deduce whether it's real SPC-700 code and data, but I am leaning towards probably not based on what you've said.

ShadowOne333

Quote from: MathOnNapkins on November 04, 2016, 02:37:44 PM


00067E6F: 1F 05


Modifies the immediate operand of a LDA instruction. This lowers the intensity of the flashing colors that tint the title screen as the sword is dropping into place. Instead of cycling between tints of full intensity red, green, and blue, it's now cycling between dull red, green and blue.
I modified that address with 1F 05 instead of the 1F 15 which is the one by default and I get all red flashes instead of dull red/green/blue ones.

MathOnNapkins

Quote from: ShadowOne333 on November 04, 2016, 03:26:43 PM
I modified that address with 1F 05 instead of the 1F 15 which is the one by default and I get all red flashes instead of dull red/green/blue ones.

So did you change one or two bytes? As long as you just change the byte at 0x067E6F (unheadered) and keep the value there in the interval 0x00 to 0x1F, you should see a spectrum of intensities. 0x00 would be no tinting of any color, 0x01 being hardly noticeable, with the effect becoming markedly less subtle with increasing values.

ShadowOne333

Quote from: MathOnNapkins on November 04, 2016, 04:28:46 PM
So did you change one or two bytes? As long as you just change the byte at 0x067E6F (unheadered) and keep the value there in the interval 0x00 to 0x1F, you should see a spectrum of intensities. 0x00 would be no tinting of any color, 0x01 being hardly noticeable, with the effect becoming markedly less subtle with increasing values.

Oh I got confused.
At 0x067E6F I saw the value "1F 15", and since Tomato posted "1F 05" I thought those two were the values which should be replaced in both 0x067E6F and 0x067E70.
So it's only changing the 1F at 0x067E6F to a value between 00 and 1F to make the flashes vary in intensity.

Got it working, sorry for the confusion :P

Tomato

Holy moly, thanks for the detailed rundown, MathOnNapkins! You really know your stuff  :thumbsup:

KingMike

So those differences are as I was suspecting: stuff related to flashing, which Nintendo has a history of changing on VC.
"My watch says 30 chickens" Google, 2018

VicVergil

If you wanted something interesting checked on the Wii VC / Wii U VC, you have Super Mario RPG and Romancing Saga 2 changing much more than just seizure stuff, replaced Sony sound chip emulation, and hexed out text. Or the various Megaman Battle Network releases. They haven't been as extensively disassembled as Zelda 3 was though.

By the way, what happened to the hexagram in the Japanese Virtual Console version of Alttp? They replaced it in the GBA version for all versions with a completely new symbol, yet they reverted to the NoA symbol for the NA/PAL VC version.

Asaki

Quote from: Tomato on November 04, 2016, 01:43:27 PM
Most (if not all) VC games have their music disabled and come included with external audio packs that play instead...

What??? @_@

All VC games, or just SNES?

KingMike

SNES, from what I hear. Does Nintendo have trouble emulating the APU of their own console?

I've heard their N64 emulation is also kind of patchy.
Though fan emulators for that system is also kind of, not as well-developed. :)
(I hear the just-released F-Zero X for Wii U has rather broken control. :P )
"My watch says 30 chickens" Google, 2018

Chronosplit

I remember hearing the excuse was the Wii/Wii U wasn't quite capable enough for at least the N64 hardware-wise.

One wonders if the Switch will be enough.

hking0036

Quote from: Asaki on November 06, 2016, 06:23:58 AM
What??? @_@

All VC games, or just SNES?
I've done a number of GBA dumps and about 20 or so SNES dumps, no GBA games seem to rely on these but most SNES do, only a few of the ones I dumped came out with fully functional sound. Patches of VC dumps I've made for SNES are available here.

That said, I'm very interested in these differences too and I've been trying to get the GBA dumps out to look at, so if anyone is interested you can track the dumps I've found and their patches here (sans the roms that have identical hashes to known dumps):
https://docs.google.com/spreadsheets/d/14kuiSrAL3GGvux93lYf3TRv4i309qeZFDt0weMh34o8/edit#gid=0

My question for Tomato is: have you been dumping these wii u vc with TCPGecko or with a pc .rpx extractor tool? I'm assuming the former, because typically when I tried to pull roms with the .rpx extractor tool it gave me an identical dump, but the tcpgecko dumps tend to get the messed up audio, unfortunately the wii u seems to do SNES patching on the fly, where I've never seen anything of the sort with the GBA roms (though I verify with the ram dumps anyways).

ShadowOne333

Quote from: hking0036 on November 06, 2016, 03:51:44 PM
I've done a number of GBA dumps and about 20 or so SNES dumps, no GBA games seem to rely on these but most SNES do, only a few of the ones I dumped came out with fully functional sound. Patches of VC dumps I've made for SNES are available here.

That said, I'm very interested in these differences too and I've been trying to get the GBA dumps out to look at, so if anyone is interested you can track the dumps I've found and their patches here (sans the roms that have identical hashes to known dumps):
https://docs.google.com/spreadsheets/d/14kuiSrAL3GGvux93lYf3TRv4i309qeZFDt0weMh34o8/edit#gid=0

My question for Tomato is: have you been dumping these wii u vc with TCPGecko or with a pc .rpx extractor tool? I'm assuming the former, because typically when I tried to pull roms with the .rpx extractor tool it gave me an identical dump, but the tcpgecko dumps tend to get the messed up audio, unfortunately the wii u seems to do SNES patching on the fly, where I've never seen anything of the sort with the GBA roms (though I verify with the ram dumps anyways).
I helped Mato with instructions for dumping Mother 2 I believe, and from what I discovered alongside Mato and Jeffman was that they have to be RAM dumps or else you'll get a different ROM.
The games are included inside the RPX file, but so is the emulator itself along with some patches which do not enter into play until you boot up the RPX entirely.

If you dump the game from RAM, you obtain a fully patched ROM with the changes Nintendo made to the games for the new VC releases.

The same logic applies to 3DS ROM dumps too, they have to be dumped from RAM or else you'll get a generic ROM. (Not patched)

hking0036

Quote from: ShadowOne333 on November 06, 2016, 11:57:01 PM
I helped Mato with instructions for dumping Mother 2 I believe, and from what I discovered alongside Mato and Jeffman was that they have to be RAM dumps or else you'll get a different ROM.
The games are included inside the RPX file, but so is the emulator itself along with some patches which do not enter into play until you boot up the RPX entirely.

If you dump the game from RAM, you obtain a fully patched ROM with the changes Nintendo made to the games for the new VC releases.

The same logic applies to 3DS ROM dumps too, they have to be dumped from RAM or else you'll get a generic ROM. (Not patched)
Cool. All the GBA dumps I do come out of alldata.bin the same way they come out of ram (but I do do both ways to check), but SNES I knew had on-the-fly stuff so I wanted to throw it out there. GBA stuff is stored in /content/alldata.bin though, instead of RPX, I think they just do that for smaller stuff (DS does it differently as well, I've never looked at N64).

ShadowOne333

Quote from: hking0036 on November 07, 2016, 12:44:11 AM
Cool. All the GBA dumps I do come out of alldata.bin the same way they come out of ram (but I do do both ways to check), but SNES I knew had on-the-fly stuff so I wanted to throw it out there. GBA stuff is stored in /content/alldata.bin though, instead of RPX, I think they just do that for smaller stuff (DS does it differently as well, I've never looked at N64).
NES also does patching on the fly, the game is also stored on the RPX and the ROM dumped from RAM differs from the one from the RPX dump too, so both NES and SNES use the same kind of format, or a very similar one.

The rest of the VC consoles (GBA, N64, DS) they all have the ROM as a file on its own, separate from the RPX, but I believe some of them might also have patching on the fly.
The GBA one might do it, another user from Starmen made a comparison and also got a slightly different ROM from the Mother 3 Japanese release on the VC than that of the 2006 ROM, I believe it was Mato, lorenzooone and Jeffman who did the comparison:
http://earthboundcentral.com/2016/07/mother-3-japanese-gba-vs-japanese-wii-u-differences/

Myria

I apologize for the thread necromancy, but I have an answer to the mystery here about the SPC700.

I believe that the SPC700 changes are changing the format of the sound samples to make decoding them faster for the emulator: on the New 3DS, some games' emulation lags if you use the original SPC700 samples.