TASEmulators / BizHawk

BizHawk is a multi-system emulator written in C#. BizHawk provides nice features for casual gamers such as full screen, and joypad support in addition to full rerecording and debugging tools for all system cores.
http://tasvideos.org/BizHawk.html
Other
2.14k stars 380 forks source link

B3313 (SM64 ROM Hack) - Game Crashes after File Select Screen (Official v1.0) #3698

Open noddy360 opened 1 year ago

noddy360 commented 1 year ago

Summary

The newest version of the Super Mario 64 ROM Hack, B3313, crashes upon choosing a file in the file select screen. B3313 just recieved it's newest update recently in the form of the "abandoned v1.0" release, otherwise known as v0.9. The previous version, v0.7 is fully playable in BizHawk, but this new version is just not working for whatever reason... Is it because the ROM file size it's too big and Mupen can't just handle it? It is a 98 MB ROM after all. This is a problem I've been having with the Mupen64Plus core, and it doesn't matter which plugin I use, not even Angrylion is safe. (and no I can't test on Ares64, the core just doesn't work on my really old computer.) I don't have this issue when using Project64 though, as the game plays just fine. Game is also playable on Parallel Launcher.

Also want to point out that the current, official v1.0 update still doesn't run here.

Repro

  1. Open BizHawk and load a ROM
  2. Load the B3313 ROM (for me it is called b3313_abandoned.z64)
  3. After the ROM is loaded, skip Mario's face screen and pick any file in the file select screen.

    Output

    It should throw you this screen:

b3313 abandoned 2023-06-20 20 46 13

Host env.

YoshiRulz commented 1 year ago

It will probably take a core update to fix this. Can you check on the standalone Mupen64Plus?

Also, is this new revision console-compatible?

noddy360 commented 1 year ago

I did tried using standalone Mupen and even the latest Mupen-rr, and it has the same issue, but with a black screen instead.

Also I'm not sure if this is console compatible either, I can't really test that personally.

getCursorsExe commented 1 year ago

This issue appears to also occur on Ares64.

act17 commented 6 months ago

FIXED

The problem is that the memory limit for ROMs provided to Mupen only allows up to 64MB, B3313.z64 is 96MB.

This problem can be fixed (Currently only on the Windows 64-bit Release) by way of using a hex editor to change mupen64plus.dll. Only one octet needs to be changed, 0x4BC0 - the value being changed from ffffff03 to ffffff0f. (Solution sourced from https://youtube.com/watch?v=vCP-rqroZvo)

This change does work, and the current release of Mupen for Windows platforms works with Wine - at least version wine-6.0.3 (Ubuntu 6.0.3~repack-1).

It can be performed on most GNU/Linux machines with xxd using the following steps to edit the line:

getCursorsExe commented 4 months ago

FIXED

The problem is that the memory limit for ROMs provided to Mupen only allows up to 64MB, B3313.z64 is 96MB.

This problem can be fixed (Currently only on the Windows 32-bit Release) by way of using a hex editor to change mupen64plus.dll. Only one line needs to be changed, 0x4BC0 - the value being changed from `ffffff03`to`ffffff0f. (Solution sourced from https://youtube.com/watch?v=vCP-rqroZvo)

This change does work, and the current release of Mupen for Windows platforms works with Wine - at least version wine-6.0.3 (Ubuntu 6.0.3~repack-1).

It can be performed on most GNU/Linux machines with xxd using the following steps to edit the line:

  • Step One: use the following command in the mupen64plus Window's root folder to extract the binary file to an editable dump file: xxd mupen64plus.dll > mupen64plus.dump
  • Step Two: Use a Text Editor of your choice to access line 1213; listed in the dump file as: 00004BC0
  • Step Three: Edit the data in this line from ffff ff03 to ffff ff0f. This increases the maximum file size of ROMs used by Mupen from 64MB to 256MB, the maximum available.
  • Step Four: Use the following command to patch the binary/.dll file with our changes merged in: xxd -r mupen64plus.dump > mupen64plus.dll

For whatever reaseon, BizHawk's Ares64 core suffers from the same problem. Somehow, the 64MB limit from Mupen64Plus was carried into Ares64 core. Upstream Ares works just fine though.