* Add random
* Add GBA random example
* switch macro_export to pub(crate)
* rename u32_to_u32 macro
* remove useless pub use
* Comment out extra u32 to u16 macro
* Comment random_color example
* formatting
* More commenting
* Add/fix some docs
* Fix some doc links
* Remove use of u64
- Halve bit widths where u64 was used
* Add Gen32::next_color()
* .
* more updates, much more to do soon.
* hello world works again.
* fix key interrupts.
* remove the old book
* don't forget timers.
* we can just use search, duh.
* cleanup
* more bios
* finished most mmio, finished bios.
* dump some old macros that shouldn't have been pub to begin with.
* Update README.md
* for now, just make this a u16
* timers
* fix hello_world
* timer fix
* docs on timers
* block resetting work ram for now.
* put preserves_flags on bios calls as appropriate
* add a code page 437 tile sheet.
* docs.
* sound :( it's all bad but we'll fix it in 0.5
* move most backup files back into the lib.
* CI might work now?
* fix up non-serial examples.
* oops, gotta check out the repo.
* readme.
* 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.
Make a few improvements to the SioSerial struct:
- Have init() return Self. It's more ergonomic to create and initialize
the empty struct in one call.
- Enable FIFO. The GBA has a 4-byte UART FIFO. This makes it less
likely to lose received bytes.
- Derive Clone on SioSerial so it can be split and shared with an
interrupt.
- Derive Debug on SioError so results can be unwrapped.
* Add Serial and GPIO registers and implement embedded_hal traits
Use VolAddress and phantom_fields to populate the SIOCNT, RCNT, and
SIODATA8 registers. Implement embedded_hal serial traits around an empty
SioSerial struct.
Hide serial read and write traits behind a "serial" feature flag
to make embedded-hal and nb dependencies optional.
* UART echo example
Enable the serial feature for this example. Provide a pinout
diagram to assist people with wiring up a USB to UART adapter.
The hello_magic example does not depend on the gba crate, but the crt0
now assumes that the symbol for the interrupt handler which is defined
in it will be present, as interrupts ought to be handled in some
manner. If neither the symbol or the crate are added then the linker
will give an error, but if anything in the gba crate is used also then
the symbol will be brought in, so defining it manually also would
cause a duplicate definition error. In the future something like
cortex-m-rt's `exception!` macro could be used to better document how
to define this symbol (all their examples depend on at least one
symbol from their runtime library, so they don't have this problem).