DIMAR only ignores bits 0-4, not the upper bits
Based on a hardware test on a Wii. The alignment code was originally added in 743641965a
.
This commit is contained in:
parent
c564d64104
commit
d3aad1d6d5
|
@ -594,7 +594,7 @@ void RegisterMMIO(MMIO::Mapping* mmio, u32 base)
|
||||||
// handle things like address alignment) and complex write on the DMA
|
// handle things like address alignment) and complex write on the DMA
|
||||||
// control register that will trigger the DMA.
|
// control register that will trigger the DMA.
|
||||||
mmio->Register(base | DI_DMA_ADDRESS_REGISTER, MMIO::DirectRead<u32>(&s_DIMAR),
|
mmio->Register(base | DI_DMA_ADDRESS_REGISTER, MMIO::DirectRead<u32>(&s_DIMAR),
|
||||||
MMIO::DirectWrite<u32>(&s_DIMAR, ~0xFC00001F));
|
MMIO::DirectWrite<u32>(&s_DIMAR, ~0x1F));
|
||||||
mmio->Register(base | DI_DMA_LENGTH_REGISTER, MMIO::DirectRead<u32>(&s_DILENGTH),
|
mmio->Register(base | DI_DMA_LENGTH_REGISTER, MMIO::DirectRead<u32>(&s_DILENGTH),
|
||||||
MMIO::DirectWrite<u32>(&s_DILENGTH, ~0x1F));
|
MMIO::DirectWrite<u32>(&s_DILENGTH, ~0x1F));
|
||||||
mmio->Register(base | DI_DMA_CONTROL_REGISTER, MMIO::DirectRead<u32>(&s_DICR.Hex),
|
mmio->Register(base | DI_DMA_CONTROL_REGISTER, MMIO::DirectRead<u32>(&s_DICR.Hex),
|
||||||
|
|
Loading…
Reference in New Issue