Any new info about "4 4's true cry"?
Posted by: RST 38
Date: 2019-03-24 11:04:58
[size=10pt]First: Why do we hear this in the first place?[/size]
Well, as TheZZAZZGlitch already showed in his video (https://www.youtube.com/watch?v=Op0jFsZP5Q8), jumping to 0150 makes the game play this PCM noise. What exactly is at that address? The PlayPikachuPCM subroutine. It's obvious that calling it with invalid parameters won't sound nice.
[size=10pt]So, I can hear something similar, but it doesn't sound the same.[/size]
Thats where 4 4 comes into play. When it's sprite is viewed, it spreads data thin(maybe not that thin) across the entire address space… 2 times…. This scrambles the original pikachu PCM into an earrape mess(along with your party, name, and just the memory in general)
[size=10pt]Exactly how it does that?[/size]
This is the most important question, I don't think much is known about that. But, there are basically two stages that can go catastrophically wrong.
[li]Number one - Decompression, that I haven't yet looked into, but it definitely can go wrong[/li]
[li]Number two - The AlignSpriteDataCentered sub.[/li]
The problem with both of these things is that they operate on variable-length data. And both of them treat 44's sprite size of 0x0 as 256x256. Yeah, it makes AlignSpriteDataCentered go through the entire address space. Even worse, that sub is called two times!
But, it's not as random as decompression can be. Actually, I looked at where the C0EF and C0F0 (sound banks) addresses take their values from, it turns out, they are from ROM bank 0, from addresses 3217-3218. So it seems as if the current sound bank and saved sound bank values should be the same every time! At least if something else doesn't corrupt them…
So, yeah, thats all I could gather today, maybe tomorrow I will look into the decompression. Post any new discoveries in this thread, everybody on this site will like to hear it!
Or, well, at least me :p