Hello everyone, I'm Marionumber1, one of the members of a SMG2 hack called Super Mario Galaxy 2.5. We were interested in the possibility of adding the Ice Flower to the game, and looked for a way to do so. When opening main.dol in a hex editor, we found that there were references to the Ice Flower in the game. I also saw brkirch's video.
Later, I also found something interesting. When taking brkirch's spin to fly code (043EE754 38600007) and changing it to 043EE754 38600003, I was able to give Mario the effects of the Ice Flower. Unfortunately, he freezes when touching water and can walk on lava but doesn't generate the ice platforms. I believe this is because the SMG2 ISO is missing some files.
My main question (aimed mainly towards brkirch) is which files you patched into the game in order to get Ice Mario working. Thanks in advance and I apologize if this is the wrong board.
I can't really answer for him, but I think the problem wasn't so much that assets were not on the disc, but that the assets weren't loaded into memory. This affected other SMG2 powers, such as the cloud, in that if there was no cloud in the level normally, you couldn't use that transformation power.
Yeah, I kind of discovered this when I played with the spin to fly code in SMG1 to make it give you Ice Mario and found that it only works in levels with Ice Flowers. Do you have any idea how to make the Ice Flower load in an SMG2 level? It crashes the level or goes to a white screen when I add one.
Thanks for the reply.
This is just a rough outline, you'll need a USB Gecko. But I would start by looking for the assets on disc for a file name that looks like it's associated with the Ice Flower. Then search memory for that file name, and use some read breakpoints to see what causes it to be loaded. Play around from there and maybe you'll figure out a way to load it.
Alternately I wonder if you could just tell it "load everything". That might be easiest, but may have other ramifications if there was a particular reason they didn't want to load everything ahead of time.
Okay, thanks.
How would you imagine "force specific file to be loaded" to be achieved, dcx2?
I never really messed with the Drive Interface (DI) functions too much. Perhaps one of the ARM/IOS hackers might have a better idea on how to force a file to be loaded.
I would hook their DVD_Open(), Read() functions.
probably better to do it in their basic loading part though so that it's in the resources memory. otherwise it still wouldn't be used when requested. they probably have higher level API to do it for them. use proper ABI and hook their level/world loading code to load everything you'd need