mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-15 19:28:29 +12:00
Add all the files
This commit is contained in:
parent
e3db07a16a
commit
d60742f52b
1445 changed files with 430238 additions and 0 deletions
68
src/Cafe/HW/ACR/ACR.cpp
Normal file
68
src/Cafe/HW/ACR/ACR.cpp
Normal file
|
@ -0,0 +1,68 @@
|
|||
#include "Cafe/HW/MMU/MMU.h"
|
||||
#include "Cafe/HW/Common/HwReg.h"
|
||||
|
||||
namespace HW_ACR
|
||||
{
|
||||
|
||||
struct
|
||||
{
|
||||
HWREG::ACR_VI_ADDR viAddr;
|
||||
HWREG::ACR_VI_CTRL viCtrl;
|
||||
}g_acr;
|
||||
|
||||
/*
|
||||
Is this some kind of VI emulation interface?
|
||||
Pattern seen in Twilight Princess HD:
|
||||
- If Hollywood hardware then read/write old 16bit GC VI register directly
|
||||
- Otherwise these steps are performed:
|
||||
VICONTROL |= 1
|
||||
VIADDR = registerIndex
|
||||
VIDATA = data
|
||||
VICONTROL &= ~1
|
||||
All the register accesses here are 32bit
|
||||
*/
|
||||
|
||||
/* 0x0D00021C | Accesses VI register currently selected by VIADDR */
|
||||
HWREG::ACR_VI_DATA ACR_VIDATA_R32(PAddr addr)
|
||||
{
|
||||
forceLogDebug_printf("ACR_VIDATA read with selected reg %08x", g_acr.viAddr.get_ADDR());
|
||||
return HWREG::ACR_VI_DATA();
|
||||
}
|
||||
|
||||
void ACR_VIDATA_W32(PAddr addr, HWREG::ACR_VI_DATA newValue)
|
||||
{
|
||||
forceLogDebug_printf("ACR_VIDATA write %08x with selected reg %08x", newValue.get_DATA(), g_acr.viAddr.get_ADDR());
|
||||
}
|
||||
|
||||
/* 0x0D000224 | Controls the selected VI register? */
|
||||
HWREG::ACR_VI_ADDR ACR_VIADDR_R32(PAddr addr)
|
||||
{
|
||||
return g_acr.viAddr;
|
||||
}
|
||||
|
||||
void ACR_VIADDR_W32(PAddr addr, HWREG::ACR_VI_ADDR newValue)
|
||||
{
|
||||
g_acr.viAddr = newValue;
|
||||
}
|
||||
|
||||
/* 0x0D000228 | Some kind of VI interface control? */
|
||||
HWREG::ACR_VI_CTRL ACR_VICONTROL_R32(PAddr addr)
|
||||
{
|
||||
return g_acr.viCtrl;
|
||||
}
|
||||
|
||||
void ACR_VICONTROL_W32(PAddr addr, HWREG::ACR_VI_CTRL newValue)
|
||||
{
|
||||
g_acr.viCtrl = newValue;
|
||||
}
|
||||
|
||||
RunAtCemuBoot _initACR([]()
|
||||
{
|
||||
MMU::RegisterMMIO_32<HWREG::ACR_VI_DATA, ACR_VIDATA_R32, ACR_VIDATA_W32>(MMU::MMIOInterface::INTERFACE_0D000000, 0x21C);
|
||||
MMU::RegisterMMIO_32<HWREG::ACR_VI_ADDR, ACR_VIADDR_R32, ACR_VIADDR_W32>(MMU::MMIOInterface::INTERFACE_0D000000, 0x224);
|
||||
MMU::RegisterMMIO_32<HWREG::ACR_VI_CTRL, ACR_VICONTROL_R32, ACR_VICONTROL_W32>(MMU::MMIOInterface::INTERFACE_0D000000, 0x228);
|
||||
|
||||
// init
|
||||
});
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue