mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-14 16:29:21 +01:00
Corrected the physical memory access to MEM2 via the MMU. Fixes Toy Story 3.
This commit is contained in:
parent
9551650c42
commit
69a2d0cb96
@ -150,12 +150,20 @@ inline void ReadFromHardware(T &_var, const u32 em_address, const u32 effective_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (m_pEXRAM && (tlb_addr & 0xF0000000) == 0x10000000)
|
||||||
|
{
|
||||||
|
_var <<= 8;
|
||||||
|
_var = m_pEXRAM[tlb_addr & EXRAM_MASK];
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
_var <<= 8;
|
_var <<= 8;
|
||||||
_var |= m_pRAM[tlb_addr & RAM_MASK];
|
_var |= m_pRAM[tlb_addr & RAM_MASK];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
u32 tlb_addr = TranslateAddress(em_address, flag);
|
u32 tlb_addr = TranslateAddress(em_address, flag);
|
||||||
@ -167,12 +175,19 @@ inline void ReadFromHardware(T &_var, const u32 em_address, const u32 effective_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (m_pEXRAM && (tlb_addr & 0xF0000000) == 0x10000000)
|
||||||
|
{
|
||||||
|
_var = bswap((*(const T*)&m_pEXRAM[tlb_addr & EXRAM_MASK]));
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
_var = bswap((*(const T*)&m_pRAM[tlb_addr & RAM_MASK]));
|
_var = bswap((*(const T*)&m_pRAM[tlb_addr & RAM_MASK]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
@ -262,12 +277,20 @@ inline void WriteToHardware(u32 em_address, const T data, u32 effective_address,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (m_pEXRAM && (tlb_addr & 0xF0000000) == 0x10000000)
|
||||||
|
{
|
||||||
|
m_pEXRAM[tlb_addr & EXRAM_MASK] = (u8)val;
|
||||||
|
val >>= 8;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
m_pRAM[tlb_addr & RAM_MASK] = (u8)val;
|
m_pRAM[tlb_addr & RAM_MASK] = (u8)val;
|
||||||
val >>= 8;
|
val >>= 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
u32 tlb_addr = TranslateAddress(em_address, flag);
|
u32 tlb_addr = TranslateAddress(em_address, flag);
|
||||||
@ -279,12 +302,19 @@ inline void WriteToHardware(u32 em_address, const T data, u32 effective_address,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (m_pEXRAM && (tlb_addr & 0xF0000000) == 0x10000000)
|
||||||
|
{
|
||||||
|
*(T*)&m_pEXRAM[tlb_addr & EXRAM_MASK] = bswap(data);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
*(T*)&m_pRAM[tlb_addr & RAM_MASK] = bswap(data);
|
*(T*)&m_pRAM[tlb_addr & RAM_MASK] = bswap(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// =====================
|
// =====================
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user