mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-24 14:49:53 -06:00
Slight polish to DMA (#1856)
* Slight polish to DMA - Default-initialize members explicitly - Mark some methods as const noexcept - Initialize DMA::MRAMBurstTable to DMATiming::MRAMDummy - Use the default destructor * Move DMA_Timings definitions to a source file - To ensure constant and unique addresses * Include some extra DMA members in the savestate * Simplify serializing the DMA table - Extend the dummy table to 256 bytes (same length as the real ones) * Revert the type change to DMA::DoSavestate * Keep the MRAMBurstTable inside the DMA class, instead of using a pointer - If we use a pointer to an external table, then we can't use it in savestates (else that external table gets overwritten)
This commit is contained in:

committed by
GitHub

parent
bf81b87a60
commit
8c4e5af737
16
src/DMA.cpp
16
src/DMA.cpp
@ -47,21 +47,16 @@ using Platform::LogLevel;
|
||||
// TODO: timings are nonseq when address is fixed/decrementing
|
||||
|
||||
|
||||
DMA::DMA(u32 cpu, u32 num)
|
||||
DMA::DMA(u32 cpu, u32 num) :
|
||||
CPU(cpu),
|
||||
Num(num)
|
||||
{
|
||||
CPU = cpu;
|
||||
Num = num;
|
||||
|
||||
if (cpu == 0)
|
||||
CountMask = 0x001FFFFF;
|
||||
else
|
||||
CountMask = (num==3 ? 0x0000FFFF : 0x00003FFF);
|
||||
}
|
||||
|
||||
DMA::~DMA()
|
||||
{
|
||||
}
|
||||
|
||||
void DMA::Reset()
|
||||
{
|
||||
SrcAddr = 0;
|
||||
@ -82,6 +77,7 @@ void DMA::Reset()
|
||||
Executing = false;
|
||||
InProgress = false;
|
||||
MRAMBurstCount = 0;
|
||||
MRAMBurstTable = DMATiming::MRAMDummy;
|
||||
}
|
||||
|
||||
void DMA::DoSavestate(Savestate* file)
|
||||
@ -106,6 +102,10 @@ void DMA::DoSavestate(Savestate* file)
|
||||
file->Bool32(&InProgress);
|
||||
file->Bool32(&IsGXFIFODMA);
|
||||
file->Var32(&MRAMBurstCount);
|
||||
file->Bool32(&Executing);
|
||||
file->Bool32(&Stall);
|
||||
|
||||
file->VarArray(MRAMBurstTable.data(), sizeof(MRAMBurstTable));
|
||||
}
|
||||
|
||||
void DMA::WriteCnt(u32 val)
|
||||
|
Reference in New Issue
Block a user