82: Remove dependency on gbafix r=Lokathor a=ketsuban
As per #80 this is the minimum you have to do to remove gbafix from the toolchain. I ended up doing this myself so that I could load the ELF binary directly into no$gba and use its excellent debugger.
There's no reason for the "main unit code" to ever change (the `0x96` byte before it is a fixed value) but changing the game title, game code, maker code, device type or software version will necessitate recalculating the complement check, and I didn't feel like working out if I could get the assembler to do that for me.
Co-authored-by: Thomas Winwood <twwinwood@gmail.com>
81: Two small tweaks to crt0.s r=Lokathor a=ketsuban
* The use of r3 in the block which copies the .data section into IWRAM is unnecessary.
* The return label in the IRQ handler doesn't need to be global.
Co-authored-by: Thomas Winwood <twwinwood@gmail.com>
* The use of r3 in the block which copies the .data section into IWRAM is unnecessary.
* The return label in the IRQ handler doesn't need to be global.
74: Update IME to be `u16` sized, avoid newtype_enum r=Lokathor a=Lokathor
newtype_enum makes an enum, but an enum can be UB if it's no a valid bit pattern. We should avoid having registers mapped to enum types.
Co-authored-by: Lokathor <zefria@gmail.com>
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).
* mGBA output wasn't resetting its length used
* admonish people to stay updated
* IWRAM fix
* version bump
* fix to work with latest nightly.
* don't know what this is or why we have it
* Delete the builtins module
The `__clzsi2` function is now part of the compiler-builtins crate, so it's part of all of Rust.
* ??
* mgba 0.7 came out!