* Introduce some Platform calls for managing dynamic libraries
* Add Platform::WriteFATSectors
* Introduce some Platform calls for managing dynamic libraries
* Add Platform::WriteFATSectors
* Change includes of "../types.h" to "types.h"
- Makes it easier to directly include these headers in downstream projects
* Change an include of "../Wifi.h" to "Wifi.h"
* Allow CommonFuncs.cpp to compile on Android
* Tidy up some logging calls
- Use Platform::Log in LAN_Socket.cpp
- Soften some warnings to Debug logs (since they don't necessarily represent problems)
* Add Platform::EnterGBAMode
- Gracefully stop the emulator if trying to enter GBA mode
* Soften some logs that most players won't care about
* Soften some more logs
* Introduce Platform wrappers for file operations
* Fix pointer spacing
* Fix more style nits
* Log the errno when ftruncate fails
* Fix FileSeek offset argument
- With an s32 offset, we couldn't access files larger than 2GB
* Revise Platform::StopEmu to address feedback
- Remove Platform::EnterGBAMode in favor of adding a reason to Platform::StopEmu
- Also rename Platform::StopEmu to Platform::SignalStop
- Add an optional argument to NDS::Stop
- Use the new argument everywhere that the console stops itself
* Rename FileGetString to FileReadLine
- It conveys the meaning better
* Rename FileSeekOrigin::Set to Start
- It conveys the meaning better
* Change definition of FileGetString to FileReadLine
- Oops, almost forgot it
* Rename FlushFile to FileFlush
- To remain consistent with the other File functions
* Add a FileType usage
* Fix line break in FileSeekOrigin
* Document Platform::DeInit
* Clarify that StopReason::Unknown doesn't always mean an error
* Move and document FileType::HostFile
* Remove Platform::OpenDataFile
- Nothing currently uses it
* Refactor Platform::OpenFile and Platform::OpenLocalFile to accept a FileMode enum instead of a string
- The enum is converted to fopen flags under the hood
- The file type is used to decide whether to add the "b" flag
- Some helper functions are exposed for the benefit of consistent behavior among frontends
- Equivalent behavior is maintained
* Fix a tab that should be spaces
* Use Windows' 64-bit implementations of fseek/ftell
* Move Platform::IsBinaryFile to Platform.cpp
- It could vary by frontend
* Remove an unused FileType
* Rename an enum constant
* Document various Platform items
* Use Platform::DynamicLibrary to load libandroid
- And clean it up at the end
* Fix a typo
* Pass the correct filetype to FATStorage
- Since it can be used for DSI NAND images or for SD cards
* Remove Platform::FileType
* DSi: add option to boot the full boot ROMs
added a config option for this so that this can be enabled or disabled
also added IO regs for DSi GPIO, but those don't do anything yet.
* reset GPIO regs on reset
* Split ROMList into a .cpp file
- Its definition in ROMList.h was causing multiple-definition linker errors
- Introduce ROMListSize, since you can't take a sizeof() of an extern declaration
- Mark ROMList and ROMListSize as const
* Update ReadROMParams to accommodate ROMList changes
* Split parsing and loading of NDS ROMs
- Introduce an NDSCartData class for parsing a ROM file
- Introduce InsertROM for loading a NDS cart
- Refactor LoadROM to use NDSCartData and InsertROM under the hood
* Reset cart state and initialize save memory in the NDSCartData constructor
- Otherwise there's no way to know about SRAM-specific attributes before inserting the game
* Add a comment to NDSCartData
* First crack at splitting parsing and loading for GBACart
* Add some logging calls for encrypting the secure area
* Log the XXH64 hash of the inserted NDS ROM
* Log the XXH64 hash of the secure area after decryption
* Add some logging to Key1_LoadKeyBuf
* Re-encrypt the secure area when inserting the cart, not when parsing it
- This way, constructing a NDSCart doesn't imply a read from the filesystem (as is done in Key1_KeyBuf)
* Load Key1_KeyBuf from memory, not from the file system
- Now that the cart's secure area isn't re-encrypted until insertion, we can expect that the BIOS will be ready at this point
* Add some helper query methods to NDSHeader
* Query the DSi region directly from the header instead of checking the ROM again
* Introduce a CartType enum
- So CartCommon::Type doesn't have to return magic numbers
* Reset the cart in NDSCart::InsertROM instead of the NDSCartData constructor
- That way the constructor doesn't rely on the config or on file I/O when loading homebrew
- This keeps the use of global state closer to one place
* Add non-const getters for the carts
* Add InsertROM overloads that accept unique_ptrs
* Fix a comment
* Rename member functions on NDSCartData and GBACartData to adhere to the convention
* Rename members on NDSCartData and GBACartData to adhere to the convention
* Fix build errors on some platforms
* Add NDSHeader::IsDSiWare
* Add a ROMListEntry parameter to the cart constructors
- To allow for looking up details of SRAM or expected ROM size
* Add some new getters to CartCommon
* Use the Header/Banner members instead of globals
* Make CartCommon abstract
- It's not supposed to be instantiated anyway
* Change the signature of CartCommon::Checksum
- It's neither overridden nor mutating
* Add some clarifying comments to NDSHeader
* Delete CartCommon::ROM in its destructor
- ParseROM copies its input and gives that copy to the cart object, so it's okay
* Add some getters to CartCommon
* Refactor NDSCart
- Get rid of NDSCartData
- Get rid of cart-specific global state within NDSCart (so registers are untouched)
- Refactor uses of removed global variables to use the Cart pointer instead
- Refactor ROMInfoDialog's icon functions to accept const arguments
* Return the cart pointer
- So *that's* why it was crashing. Whoops
- Why is this even allowed?
* Refactor GBACart
- Delete CartGame::ROM in the destructor
- Get rid of GBACartData
- Remove some global state
* Mark NDSCart::CartCommon::Type as const
* Slightly refactor GBACart::CartCommon
- Mark Type as const
- Use enum constants
- Make CartCommon itself abstract
* Mark CRC32's data parameter as const
* Mark GBACart::CartCommon::Checksum as const
* Use assert.h instead of cassert
- As demanded by the style guide
* Fix some includes to adhere to the style guide
* Get the ARM9 entry address directly from the header object
* Use more Header fields directly
* Rename some parameters to match the style guide
* Remove some unused includes
* Slightly change NDS_Header::IsHomebrew for clarity
* 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
also including:
* getting rid of shitty strings
* all new, cleaner ROM handling code
* base for DSi savestates
* GBA slot addons (for now, memory cart)
* 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.
* Fix for https://github.com/Arisotura/melonDS/issues/1169
LoadNAND was storing the stage 2 bootloader, while NWRAM access was disabled by Bit25 of SCFG_EXT putting the stage 2 into old shared WRAM, while executing it later with the bit enabled and fetching from an empty NWRAM.
* Fixed bug, where access to the NWRAM Bank A used the wrong page mask for write access
* Remove spaces before comma
Co-authored-by: Tim Seidel <t.seidel@kts-systeme.de>
Co-authored-by: RSDuck <RSDuck@users.noreply.github.com>
* SCFG_BIOS now selects between NDS and DSi BIOS
Allowing experimental direct boot.
* - making NWRAM Priorities work as in the HW
- fixed loading DSi stage2 Bootloader when in direct boot (should not be loaded) and might interfere with the image loaded into the (N)WRAM previously
* NWRAM and SCFG Registers are now write-guarded by the corresponding SCFG_EXT7/9 Bits
* removed debugging remainder
* Moved NDSHeader dependent SCFG initialization into the new DSi::SetupDirectBoot function called from NDS::SetupDirectBoot when ConsoleType is DSi
* removed redundant SCFG_BIOS bit checks
* Set of changes from RSDuck's review
* removed a forgotten comment
* - removed the guarded debug outputs for NWRAM
- NWRAM writes to bank and window registers now apply their write masks.
- added comment on an existing TODO within the code describing, why this is OK
- fixed initial NWRAM bank reset just accessing set A
* NWRAM not mapped to 03... range if bit25 in SCFG_EXT is cleared
* removed NWRAM write block on cleared bit25 in SCFG_EXT
* changed type of iterator for MapNWRAM_x functions from s8 to int
* - reduced calculations/comparisons on NWRAM write operations
- changed u8 to unsigned int for an iterator MapNWRAM_x
Co-authored-by: Tim Seidel <t.seidel@kts-systeme.de>
* - added fallback to DSi footer copy at 000FF800h if reading footer at end of file failed. See https://problemkaputt.de/gbatek.htm#dsisdmmcimages
- changed output of ConsoleID to use PRIx64 to be consistent with all other tools working with the consoleID (readability/cosmetic improvement)
* Remove extra space
Co-authored-by: Tim Seidel <t.seidel@kts-systeme.de>
Co-authored-by: RSDuck <RSDuck@users.noreply.github.com>
* Add PoroCYon's DSP code.
* Remove some teakra iles that we dont need.
* make some requested changes.
* move DataMemoryOffset into namespace.
* use deault param.
* ad the switch change
* <Generic> forget about the default parameter