* Write some of the basic infrastructure for SRAM support.
* Implement battery-backed SRAM.
* Implement non-Atmel Flash chips.
* Implement support for Atmel Flash SRAM chips.
* Implement EEPROM support, various refactorings to SRAM system.
* Replace Save API with one based more cleanly on the flash chip API.
* Run rustfmt on new save media code.
* Improve test_savegame and fix remaining bugs caught by the changes.
* Proofreading on comments/documentation for save module.
* Fix addresses for read/verify routines in save::flash.
* Rebase save_api onto current master.
* Implement a debugging interface that allows the use of debugging on multiple emulators.
* Implement NO$GBA debugging interface.
* Run rustfmt on new debug code.
* Fix the debug module not compiling on non-ARM systems.
* Don't error (and just silently truncate) on messages that are too long.
* Add IntelliJ workspace files to the .gitignore.
* Add a simple make_example script for Linux.
* Create a `sync` module with many GBA-specific sync utilties.
* Fix overflow error in debug mode in the hello_world crate.
* Fixes to DMA.
* Code cleanup for the sync module.
* Run rustfmt on new sync code.
* Fix up some names and documentation in the sync module.
* Add a few changes suggested by thomcc for the locks.
* Added needed compiler fences to `InitOnce::try_get`.
* Change the error in `RawMutex::raw_unlock` to better reflect the cause.
* Add a proper issue link to the __sync_synchronize hack.
* Disable interrupts during `InitOnce::try_get`.
* Fix some bad wording in the comments for `InitOnce::try_get`
* Use the new target in `cfg` checks to see if we're on GBA.
* Change registers used for transfer_align4_arm for the different target.
* Cleanup on sync_api changes for the target change.
* Remove cargo-xbuild dev dependency
As of Rust nightly 2020-07-15, we can set the default build target
and build-std feature of cargo instead of relying on cargo-xbuild.
Since the thumbv4-non-agb target is the default for all cargo commands,
change the Rust snippets in Makefile.toml to cross-platform duckscript.
The only uglyness we're left with is running the unit tests. We want to
build and run the tests on the host archetecture. Create three platform
overrides for Mac, Windows, Linux and set flags to override the default
target triple and build-std option.
* remove uneeded attribute
From cargo: "the feature `cfg_target_vendor` has been stable since
1.33.0 and no longer requires an attribute to enable"
Some day we can split the software math into its own crate and do quickcheck there, until then the test code must be fully no_std because otherwise the examples won't build (sadly, dev-dependencies applies to both tests and examples)