diff options
author | Jesse Talavera-Greenberg <jesse@jesse.tg> | 2023-11-28 17:16:41 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-28 23:16:41 +0100 |
commit | e973236203292637eb7bd009a4cfbd6fd785181f (patch) | |
tree | 4c348a9927bfa6f8f37cc943291174a1096434b3 /src/DSi_AES.cpp | |
parent | c84cb174628c5a2e8e6cc0179e16de3eab47864a (diff) |
Refactor `NDS` and `DSi` to be objects (#1893)
* First crack at refactoring NDS and DSi into objects
- Remove all global/`static` variables in `NDS` and related classes
- Rely more on virtual dispatch when we need to pick methods at runtime
- Pass `NDS&` or `DSi&` to its constituent components where necessary
- Introduce some headers or move some definitions to break `#include` cycles
* Refactor the frontend to accommodate the core's changes
* Move up `SchedList`'s declaration
- Move it to before the components are initialized so the `map`s inside are initialized
- Fields in C++ are initialized in the order they're declared
* Fix a crash when allocating memory
* Fix JIT-free builds
* Fix GDB-free builds
* Fix Linux builds
- Explicitly qualify some member types in NDS, since they share the same name as their classes
* Remove an unnecessary template argument
- This was causing the build to fail on macOS
* Fix ARM and Android builds
* Rename `Constants.h` to `MemConstants.h`
* Add `NDS::IsRunning()`
* Use an `#include` guard instead of `#pragma once`
Diffstat (limited to 'src/DSi_AES.cpp')
-rw-r--r-- | src/DSi_AES.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/DSi_AES.cpp b/src/DSi_AES.cpp index a29e43f..8e04586 100644 --- a/src/DSi_AES.cpp +++ b/src/DSi_AES.cpp @@ -36,7 +36,7 @@ using Platform::LogLevel; #define _printhex2R(str, size) { for (int z = 0; z < (size); z++) printf("%02X", (str)[((size)-1)-z]); } -DSi_AES::DSi_AES() +DSi_AES::DSi_AES(melonDS::DSi& dsi) : DSi(dsi) { const u8 zero[16] = {0}; AES_init_ctx_iv(&Ctx, zero, zero); @@ -78,7 +78,7 @@ void DSi_AES::Reset() OutputMACDue = false; // initialize keys - u64 consoleid = DSi::NANDImage->GetConsoleID(); + u64 consoleid = DSi.NANDImage->GetConsoleID(); // slot 0: modcrypt *(u32*)&KeyX[0][0] = 0x746E694E; @@ -313,7 +313,7 @@ void DSi_AES::WriteCnt(u32 val) AES_init_ctx_iv(&Ctx, key, iv); } - DSi::CheckNDMAs(1, 0x2A); + DSi.CheckNDMAs(1, 0x2A); } else { @@ -347,9 +347,9 @@ u32 DSi_AES::ReadOutputFIFO() else { if (OutputFIFO.Level() > 0) - DSi::CheckNDMAs(1, 0x2B); + DSi.CheckNDMAs(1, 0x2B); else - DSi::StopNDMAs(1, 0x2B); + DSi.StopNDMAs(1, 0x2B); if (OutputMACDue && OutputFIFO.Level() <= 12) { @@ -384,7 +384,7 @@ void DSi_AES::CheckInputDMA() if (InputFIFO.Level() <= InputDMASize) { // trigger input DMA - DSi::CheckNDMAs(1, 0x2A); + DSi.CheckNDMAs(1, 0x2A); } Update(); @@ -395,7 +395,7 @@ void DSi_AES::CheckOutputDMA() if (OutputFIFO.Level() >= OutputDMASize) { // trigger output DMA - DSi::CheckNDMAs(1, 0x2B); + DSi.CheckNDMAs(1, 0x2B); } } @@ -475,13 +475,13 @@ void DSi_AES::Update() } Cnt &= ~(1<<31); - if (Cnt & (1<<30)) NDS::SetIRQ2(NDS::IRQ2_DSi_AES); - DSi::StopNDMAs(1, 0x2A); + if (Cnt & (1<<30)) DSi.SetIRQ2(IRQ2_DSi_AES); + DSi.StopNDMAs(1, 0x2A); if (!OutputFIFO.IsEmpty()) - DSi::CheckNDMAs(1, 0x2B); + DSi.CheckNDMAs(1, 0x2B); else - DSi::StopNDMAs(1, 0x2B); + DSi.StopNDMAs(1, 0x2B); OutputFlush = false; } } |