aboutsummaryrefslogtreecommitdiff
path: root/src/DMA.cpp
Commit message (Collapse)AuthorAge
* Refactor `NDS` and `DSi` to be objects (#1893)Jesse Talavera-Greenberg2023-11-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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`
* Move all core types into namespaces (#1886)Jesse Talavera-Greenberg2023-11-25
| | | | | | | | * Reorganize namespaces - Most types are now moved into the `melonDS` namespace - Only good chance to do this for a while, since a big refactor is next * Fix the build
* Refactor the GPU to be object-oriented (#1873)Jesse Talavera-Greenberg2023-11-09
| | | | | | | | | | | | | | | | | * Refactor GPU3D to be an object - Who has two thumbs and is the sworn enemy of global state? This guy! * Refactor GPU itself to be an object - Wow, it's used in a lot of places - Also introduce a new `Melon` namespace for a few classes - I expect other classes will be moved into `Melon` over time * Change signature of Renderer3D::SetRenderSettings - Make it noexcept, and its argument const * Remove some stray whitespace
* update copyright yearsArisotura2023-11-04
|
* Slight polish to DMA (#1856)Jesse Talavera-Greenberg2023-10-24
| | | | | | | | | | | | | | | | | | | | | | | | * 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)
* fix some UBRSDuck2023-08-01
|
* Introduce `Platform::Log` (#1640)Jesse Talavera-Greenberg2023-03-23
| | | | | | | | | | | | | * Add Platform::Log and Platform::LogLevel * Replace most printf calls with Platform::Log calls * Move a brace down * Move some log entries to one Log call - Some implementations of Log may assume a full line * Log the MAC address as LogLevel::Info
* update copyright headersArisotura2022-01-09
|
* DMA timing renovation (#1207)Arisotura2021-08-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * make timers usable for measurement shito without being assfuckingly unreliable * bürp * Arisotura can you ever clean up your goddamn code also regroup the timer code instead of having it split weirdly * make the set-timing functions a tad less hacky * congrats Arisotura you made an ass-enum * add timing region tables, and separate timings for ARM9 DMA (exempt of 3c penalty) * temp work on DMA timings, not finished also, did you know? 'increment/reload' is also a thing for the source address * begin work * add some of the GBA slot/wifi timings * complete it, I guess * make some progress * getting somewhere * sdsdfs * see, Arisotura, was it that hard? blarg.
* update copyright year and add missing GPL headersRSDuck2021-03-12
|
* remove some debug crapArisotura2020-12-10
|
* harmless DMA micro optimisationRSDuck2020-11-16
|
* remove some UBRSDuck2020-09-04
| | | | | | | - savestates used to read a four bytes from a single byte value - a few unassigned variables - some other things - also make the ROR macro an inline function
* make it able to switch between DS and DSi modesArisotura2020-06-01
|
* Merge commit '4b57416552ec2fa95216e2b044559f215723bf70' into melonDSiArisotura2020-05-30
|\
| * update copyright yearsArisotura2020-02-14
| |
* | tremble upon the NDMA implementationArisotura2019-06-18
| | | | | | | | that doesn't do much beyond getting stuck
* | prevent old DMA from being a shitshow.Arisotura2019-06-18
|/
* also, update copyright nameArisotura2019-01-22
|
* redesign main emu loop to use timestamps instead of being a trainwreckStapleButter2019-01-05
| | | | | | | | * cleaner code * faster in some cases * more accurate (on-demand compensation for timers and GPU) * less prone to desyncs * overall betterer
* finish the work on the main loop. finally fix all cases of desync I could ↵StapleButter2018-12-11
| | | | find. also add #ifdef'd debug code to check for desyncs.
* temp commitStapleButter2018-12-11
| | | | almost done killing ARM9/ARM7 desync, f
* make it fastererStapleButter2018-12-09
|
* take it somewhere.StapleButter2018-12-09
| | | | still need to speed it up a tad.
* start devolving things.StapleButter2018-12-08
| | | | | | also implement proper DMA timings. will not build. don't try.
* make this other branch where we're going to actually make it usableStapleButter2018-12-08
| | | | but it'll be a gross hack
* begin work on general timing renovation. way shitty because it behaves as if ↵StapleButter2018-12-04
| | | | caches were off, so everything will be slow as shit.
* add proper support for GXFIFO stalls.StapleButter2018-11-23
| | | | | | | | bad games that blast the GXFIFO and overflow it: * Super Mario 64 DS * Rayman RR2 latter seems to get its music streaming crapoed.
* make the ARM clock shift configurable. nothing fancy there, just paving the ↵StapleButter2018-11-07
| | | | way for DSi support later.
* hax, finally making savestates usableStapleButter2018-10-18
| | | | | | | | F1 to save, F2 to load. filename hardcoded for now. shits itself: * when the 3D engine is used * when a debugger is used (heh)
* savestate shito: fix compile errors.StapleButter2018-10-18
| | | | still far from being finished, so avoid using unless you want to spawn blackholes or some pretty bad shit.
* zlargStapleButter2018-09-15
|
* moar progress on itStapleButter2018-09-15
|
* fixor copyright years.StapleButter2018-09-15
|
* proper display FIFO emulationStapleButter2017-06-26
|
* oh wellStapleButter2017-04-23
|
* a few attempts at optimizationStapleButter2017-04-23
|
* make ROM command handling accurate, remove gross DMA hack.StapleButter2017-04-11
|
* * implement missing graphics (affine BG, rotscaled bitmap sprite)StapleButter2017-03-24
| | | | | | * fix potential crash upon exit * more work on the input config UI * misc fixes
* fix bug that happened when HDMA got interrupted (or any repeating DMA, for ↵StapleButter2017-03-21
| | | | that matter)
* implement some obscure DMA typesStapleButter2017-03-20
|
* make timers not suck. fixes issues (Worms2 intro FMV plays at the right ↵StapleButter2017-03-20
| | | | speed, aging cart tests get further...)
* reorganize repo, move shit aroundStapleButter2017-03-16