mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-22 22:01:06 -06:00
Assortment of fixes related to libnds v2/calico (#2197)
* Support 8-bit writes to REG_IPCSYNC * Support CP15 Trace Process ID register * NWifi: expose correct manfid information in CIS0/CIS1 area * NWifi: basic support for WMI_SET_PROBED_SSID # Conflicts: # src/DSi_NWifi.cpp * DSi_NAND: fix incorrect CTR IV calculation code
This commit is contained in:
28
src/NDS.cpp
28
src/NDS.cpp
@ -2729,6 +2729,9 @@ u8 NDS::ARM9IORead8(u32 addr)
|
||||
case 0x04000132: return KeyCnt[0] & 0xFF;
|
||||
case 0x04000133: return KeyCnt[0] >> 8;
|
||||
|
||||
case 0x04000180: return IPCSync9 & 0xFF;
|
||||
case 0x04000181: return IPCSync9 >> 8;
|
||||
|
||||
case 0x040001A0:
|
||||
if (!(ExMemCnt[0] & (1<<11)))
|
||||
return NDSCartSlot.GetSPICnt() & 0xFF;
|
||||
@ -3168,6 +3171,17 @@ void NDS::ARM9IOWrite8(u32 addr, u8 val)
|
||||
KeyCnt[0] = (KeyCnt[0] & 0x00FF) | (val << 8);
|
||||
return;
|
||||
|
||||
case 0x04000181:
|
||||
IPCSync7 &= 0xFFF0;
|
||||
IPCSync7 |= (val & 0x0F);
|
||||
IPCSync9 &= 0xB0FF;
|
||||
IPCSync9 |= ((val & 0x4F) << 8);
|
||||
if ((val & 0x20) && (IPCSync7 & 0x4000))
|
||||
{
|
||||
SetIRQ(1, IRQ_IPCSync);
|
||||
}
|
||||
return;
|
||||
|
||||
case 0x04000188:
|
||||
NDS::ARM9IOWrite32(addr, val | (val << 8) | (val << 16) | (val << 24));
|
||||
return;
|
||||
@ -3659,6 +3673,9 @@ u8 NDS::ARM7IORead8(u32 addr)
|
||||
|
||||
case 0x04000138: return RTC.Read() & 0xFF;
|
||||
|
||||
case 0x04000180: return IPCSync7 & 0xFF;
|
||||
case 0x04000181: return IPCSync7 >> 8;
|
||||
|
||||
case 0x040001A0:
|
||||
if (ExMemCnt[0] & (1<<11))
|
||||
return NDSCartSlot.GetSPICnt() & 0xFF;
|
||||
@ -3967,6 +3984,17 @@ void NDS::ARM7IOWrite8(u32 addr, u8 val)
|
||||
|
||||
case 0x04000138: RTC.Write(val, true); return;
|
||||
|
||||
case 0x04000181:
|
||||
IPCSync9 &= 0xFFF0;
|
||||
IPCSync9 |= (val & 0x0F);
|
||||
IPCSync7 &= 0xB0FF;
|
||||
IPCSync7 |= ((val & 0x4F) << 8);
|
||||
if ((val & 0x20) && (IPCSync9 & 0x4000))
|
||||
{
|
||||
SetIRQ(0, IRQ_IPCSync);
|
||||
}
|
||||
return;
|
||||
|
||||
case 0x04000188:
|
||||
NDS::ARM7IOWrite32(addr, val | (val << 8) | (val << 16) | (val << 24));
|
||||
return;
|
||||
|
Reference in New Issue
Block a user