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
GameCube Zelda HLE in Wii mode #12089
GameCube Zelda HLE in Wii mode #12089
Conversation
Can you provide some context as to where this is useful? |
Running GameCube games in Wii mode can be useful for modding simply because of the additional hardware. To get audio to work on console and with LLE, the simplest approach is to patch |
f48555c
to
6923f28
Compare
|
Do you have an example of patching any GC dol? I would want to test this on a few different GC. |
I don't have other GameCube games on hand, but here is a minimal template. This will likely not work on a real console or with out of region games, but should work on Dolphin with the right fallback region. |
I'm guessing when we boot games from the Wii System Menu, Dolphin is cheating and just swapping to GameCube mode, hence this PR? I've definitely booted Wind Waker from the Wii System Menu before. |
Yes, dolphin cheats by immediately loading MIOS when BC is loaded: dolphin/Source/Core/Core/IOS/ES/ES.cpp Lines 351 to 365 in 44c90aa
and also has MIOS switch stuff into GameCube mode: dolphin/Source/Core/Core/IOS/MIOS.cpp Lines 33 to 55 in 44c90aa
That said, the way dolphin cheats is close to what happens on real hardware, just skipping lots of low level IOS emulation stuff; when running a GameCube game on a Wii, the Wii is in GameCube mode and most additional hardware is disabled. My understanding is that this PR is to make running GameCube games modified to run in Wii mode work on Dolphin with DSP HLE the same way it would work when loading such modified games on a real Wii (or on Dolphin with DSP LLE). It doesn't do anything that would apply when running unmodified GameCube games, even when booting them via the Wii Menu. |
Indeed. |
Is anyone blocking this? I don't see a reason to block it if it won't affect anything outside of some mods that use it. |
@@ -158,7 +158,7 @@ class ZeldaAudioRenderer | |||
// the Wii, this points to some MRAM location since there is no ARAM to be | |||
// used. If zero, use the top of ARAM. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This comment probably should be rewritten, since m_aram_base_addr = 0
no longer behaves differently (and SetARAMBaseAddr
would never be called because command 0xE doesn't exist in GameCube uCode). I'm not 100% sure what it should say though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Came up with something, hopefully the wording is clear enough.
6923f28
to
cc403c1
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me.
I don't think AX needs a similar change, as it doesn't use GetARAMPtr
, but I'm not super familiar with the details of it.
{ | ||
if (m_aram_base_addr) | ||
return HLEMemory_Get_Pointer(m_aram_base_addr); | ||
if (SConfig::GetInstance().bWii) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not worth blocking over IMO, but I've heard mention of deferring SConfig to instead use the new config
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bWii
isn't something that would make sense to move to the new config system since it's not an actual setting, more of a global variable. It probably doesn't make sense to have it in SConfig
, but moving it somewhere else would be part of a larger refactor (which is definitely out of scope for this PR).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed. Adding new settings to SConfig would be rejected, but it's fine to keep using whatever is in there for the time being.
No description provided.