Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

N64: Disabled Expansion Pak doesn't seem to be emulated accurately #1690

Open
flagrama opened this issue Oct 1, 2019 · 6 comments
Open

N64: Disabled Expansion Pak doesn't seem to be emulated accurately #1690

flagrama opened this issue Oct 1, 2019 · 6 comments
Labels
Core: Mupen64Plus Nintendo 64 (N64) core Repro: Fixed/added in upstream stable Repro: Patch pending Potentially fixed in dev build, see readme for download

Comments

@flagrama
Copy link

flagrama commented Oct 1, 2019

This seems to be a regression in mupen64plus-core.

Running a game that requires the Expansion Pak without one doesn't seem to "work" properly. Where working would mean either a black screen, or an error screen. This is confirmed to be an issue with Ocarina of Time Randomizer, and Majora's Mask.

image

We only realized this because Ocarina of Time Randomizer should not boot without the expansion slot, and yet only new code that stores music in the Expansion Pak RAM has started to cause issues. If you load a save state with these new code changes the game will crash when it tries to play the music.

Standalone mupen64plus-core (2.5.9) properly shows an error screen for Majora's Mask and a black screen for Ocarina of Time Randomizer when "DisableExtraMem" is enabled.

@YoshiRulz YoshiRulz added the Core: Mupen64Plus Nintendo 64 (N64) core label Oct 2, 2019
@YoshiRulz
Copy link
Member

YoshiRulz commented Oct 2, 2019

Regression from which version? I'd like to bisect.

@Nicholas-Steel
Copy link

Nicholas-Steel commented Oct 2, 2019

So loading the games works fine, no issues at all but loading a Save State causes issues. As far as my untrained eye can tell it seems like the Expansion Pak is enabled when loading the ROM (despite the setting being disabled) and the Load State is honouring the Expansion Pak setting (which is disabled), this means the Load State function is loading a state with Expansion pak data in to an environment without an Expansion Pak, resulting in the crashes.

@darkangel93x
Copy link

i assume you mean the BizHawk version usually 2.3.0 or higher.

@flagrama
Copy link
Author

flagrama commented Oct 4, 2019

I did some limited testing and from what I see BizHawk and mupen64plus-core 2.5 both behave the same. It's the new 2.5.9 pre-release I've been using that emulates the lack of expansion pak correctly. So not a regression, just more accurate emulation upstream that hasn't been added yet.

@CasualPokePlayer
Copy link
Member

CasualPokePlayer commented Sep 17, 2022

Games which require the expansion pak (according to gamedb) are forced to have the expansion pak regardless of settings here:

// Override the user's expansion slot setting if it is mentioned in the gamedb (it is mentioned but the game MUST have this setting or else not work
if (game.OptionValue("expansionpak") != null && game.OptionValue("expansionpak") == "1")
{
_disableExpansionSlot = false;
IsOverridingUserExpansionSlotSetting = true;
}

Randos wouldn't be identified via gamedb so that casues another issue: all disabling the expansion pak actually does in mupen is simply tell the game the expansion pak is not available. Not all games actually abide by this and some will detect the expansion pak present (as it is internally present and nothing blocks read/writes to it). Savestate issues with this should be "fixed" with 5e34dc6

@Nicholas-Steel
Copy link

I re-worded my last comment as it was extremely badly written.

@YoshiRulz YoshiRulz added the Repro: Patch pending Potentially fixed in dev build, see readme for download label Sep 18, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Core: Mupen64Plus Nintendo 64 (N64) core Repro: Fixed/added in upstream stable Repro: Patch pending Potentially fixed in dev build, see readme for download
Projects
None yet
Development

No branches or pull requests

5 participants