Open angelo-wf opened 1 year ago
Hi, your Pastebin link does not work. Can you please attach the file directly to your issue instead? You can attach the localstorage data as a text file, or you can download and attach the SOL file that the localstorage data represents using Ruffle's save manager (right-click => Open Save Manager).
I updated the issue with the SOL file attached (zipped). (Not sure what happened to the Pastebin link, the link stored in my browser history stopped working as well.)
Given how often Pastebin is abused by bad actors, I would bet that they check pastes to make sure they are not encoded binary files, and remove any that are. SOL is a binary format (AMF) and the localstorage data just stores that base64-encoded.
Anyway, thanks! One of our developers is already working on a fix for this issue, but your save file should be useful for testing/verification of the fix.
is there any way to fix this problem? Im dealing with the same problem
Not yet, sorry!
Is there a way to fix this issue on newgrounds I do not want to play all over again.
You can download your save file using Ruffle's save manager. Right-click the game and click "Open Save Manager", then search for an entry called "SuperMarioSunshine128SavedFile" and download it
After loading that save data, here is how you get to the point where the bug happens:
Follow this route: https://cdn.discordapp.com/attachments/704769195749146634/1131606685262303272/2023-07-20_17-19-48.mp4 And then keep platforming upwards until you reach a slingstar, where you can press X to fly into the final bossfight, which is where the glitch happens
Research so far. I know nothing about this game so I'm somewhat going in blind 😅
I edited the swf to take me straight to the boss fight when you enter the castle. Not 100% sure if you need the save file too but I'd use it just to be safe.
I'm guessing it's an issue in startChar
, it looks like it's supposed to teleport the character to the right place but doesn't?
_root.StartChar("8-16",0,-250,0,-350,100,_root.CurrentPlayer,_root.Fluddpow,"Fromwhite");
Maybe good to know is that in the practice hack for the game it skips the cutscene that normally plays before the fight. This makes it not softlock, but spawn Mario normally into the fight. This means the bug likely occurs at the end of the cutscene and not at the beginning of the fight
Here is a download link to the practice hack SWF: https://cdn.discordapp.com/attachments/614855396468719619/1131721275786662068/sm63prachack.swf
I don't think the logged console output has anything to do with the issue at hand, since a similar issue occurs in other rooms too. It happens when certain layers of the room don't exist, which is normal in SM63.
From Mike:
something to do with base_clip and targets etc. when the base clip is deleted IIRC. I think it was telling something to ActionGotoFrame which requires the base clip to be right, but it wasn't, so that's when it soft-locked. But I might be misremembering
Just wanted to say I have this issue as well. The game is so close to fully playable on Ruffle so I hope this gets fixed!!
Having the same issue here. I tried looking for a way to load my saved game to the flash exe where runouw published the source code, and where is also the flash file, but I don't see a way to load the game and try this on another version of the game. As hunter said, hope this gets fixed, because this games was a great part of my childhood
@ItsGamerBot47 I'd be happy to help you download your save file and load it into Flash Player, if you open a discussion or join our Discord server.
@Herschel shared some more details about this bug a few months ago, which I'm reposting here in case anyone wants to pick it up:
The issue is in this code: DefineSprite 10379 frame 12.
_root.onEnterFrame = function() { CharCode(); }; _root.gotoAndStop("Courseframe");
The gotoAndStop destroys that clip, and then the
CharCode()
call doesn't work anymore, editing it to_root.CharCode()
fixes it IIRC My ancient branch has scope.rs lines 150-161 commented out as a fix, so I believe that's involved -- thatif
is only falling back to root if it would resolve on self.locals(), but it should always do so My branch had changedActivation::get_variable
to handle this case:+ match self.resolve(path)? { + CallableValue::UnCallable(Value::Undefined) => { + let obj = self.target_clip_or_root().object().coerce_to_object(self); + if obj.has_property(self, path) { + obj.get(path, self).map(|v| CallableValue::Callable(obj, v)) + } else { + Ok(CallableValue::UnCallable(Value::Undefined)) + } + } + val => Ok(val), + }
Not sure this is 100% the correct fix (probably not, which is why I never made a PR!)
And he also shared a repro: deleted-clip-ef.zip
Also, changing the CharCode()
call to _root.CharCode()
indeed makes the game function as expected in Ruffle, as he thought.
Yeah I'm having the same problem. I do hope this gets fixed though, I really want to 100% the game and finish the final boss because this is a childhood game of mines.
Not sure this is 100% the correct fix (probably not, which is why I never made a PR!)
Can anyone confirm this?
Describe the bug
The final battle with Bowser hangs in Ruffle. It gets stuck right at the start of it like this:
It looks like Mario gets stuck at the top of the screen (behind the power meter). The game is still running (it does not freeze, the background is still moving and animations keep going), but no input does anything except pausing with
P
.The entire game seems to work fine up until this point (except for rendering issues, mainly with the text, but also some missing effect here and there like Metal Mario not showing up metallic at all).
I used the SWF File from runouw.com.
Here is the exported save data, which includes having unlocked a pipe to go straight to the final climb in Bowser's castle, 3 rooms away from the boss: SuperMarioSunshine128SavedFile.sol.zip.
Expected behavior
The final battle should work and not hang. Here is a video on Youtube showing the battle working.
Affected platform
Online demo
Operating system
macOS Ventura 13.3
Browser
Safari 16.4
Additional information
The following is logged to the console when the fight starts: