Map ARAM to MEM2 on Wii the way I think it works. If this breaks stuff or is wrong, please tell me or revert.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1116 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
hrydgard 2008-11-10 21:54:11 +00:00
parent 6fe351bef9
commit 48bce5a05a
1 changed files with 13 additions and 3 deletions

View File

@ -176,7 +176,8 @@ u16 g_AR_MODE = 0x43; // 0x23 -> Zelda standard mode (standard ARAM access ??)
void DoState(PointerWrap &p) void DoState(PointerWrap &p)
{ {
p.DoArray(g_ARAM, ARAM_SIZE); if (!Core::GetStartupParameter().bWii)
p.DoArray(g_ARAM, ARAM_SIZE);
p.Do(g_dspState); p.Do(g_dspState);
p.Do(g_audioDMA); p.Do(g_audioDMA);
p.Do(g_arDMA); p.Do(g_arDMA);
@ -200,7 +201,15 @@ void GenerateDSPInterrupt_Wrapper(u64 userdata, int cyclesLate)
void Init() void Init()
{ {
g_ARAM = (u8 *)AllocateMemoryPages(ARAM_SIZE); if (Core::GetStartupParameter().bWii)
{
// On the Wii, ARAM is simply mapped to EXRAM.
g_ARAM = Memory::GetPointer(0x10000000);
}
else
{
g_ARAM = (u8 *)AllocateMemoryPages(ARAM_SIZE);
}
g_dspState.DSPControl.Hex = 0; g_dspState.DSPControl.Hex = 0;
g_dspState.DSPControl.DSPHalt = 1; g_dspState.DSPControl.DSPHalt = 1;
et_GenerateDSPInterrupt = CoreTiming::RegisterEvent("DSPint", GenerateDSPInterrupt_Wrapper); et_GenerateDSPInterrupt = CoreTiming::RegisterEvent("DSPint", GenerateDSPInterrupt_Wrapper);
@ -208,7 +217,8 @@ void Init()
void Shutdown() void Shutdown()
{ {
FreeMemoryPages(g_ARAM, ARAM_SIZE); if (!Core::GetStartupParameter().bWii)
FreeMemoryPages(g_ARAM, ARAM_SIZE);
g_ARAM = NULL; g_ARAM = NULL;
} }