Avoid passing ArmInstruction struct to handlers, as accesses to its fields can result in memory operations.
Former-commit-id: 6ea1719e36a0fefa1b30bdae4d6e8ab4dbf3af1a
Former-commit-id: e5855b8258f98d3f4c0819f3aec2fd0f47fef545
The `if let Some(gpio) = &self.gpio` causes a memory read of `self.gpio` for every Bus::read/write_16.
It is better to reverse the order since `is_gpio_access` does not generate and memory reads and thus less costly.
Former-commit-id: bcce7d9c3a2b159a7f6b291d7b08ccf9c4d0db14
Former-commit-id: 69c12db503c9e612faa7cd8a57f6d862694c8370
Also some typos and reformatting parts of the code
Former-commit-id: 0f1de44fab44a09c49d08421a3c2032123d3023b
Former-commit-id: 810b6b1bce1f7feeee7c33bec5ff16915367db17
Mainly convert mainloop and audio thread into native code for
performance increase. (Calling into JNI every frame was costy)
The code was cleaned up quite a bit, but I may have introduced new bugs
in this process :<
Former-commit-id: fdbc21b5ab39f3d2e36647fd1177dc9a84a16980
Former-commit-id: ac765dbee8c994e1b69cc694846511837c2685b9
Serde doesn't like Rc that much :(
Fixes#142
Former-commit-id: e1e8a96b4867e351d103fb7d92d71b0434e8fc31
Former-commit-id: 28366bbb36b3e93b574f397b103a483844fd8131
While saving code re-use, it won't allow flexibility for special casing
specific size bus accesses which are much needed in order to emulate
open-bus and bios reads
Former-commit-id: 952a30a130612d61b3f5047b1f1c3cbda9bd58a8
Former-commit-id: ad3a25c012853399591d79f4f1a4423ea9e6645e
Use Rc<Cell> instead of passing `&mut irqs` all around.
The runtime impact is two additional size_t's per each holder of the
shared pointer.
Former-commit-id: afd3188c31608ebcf062256a7ad51575dbc90d8b
Former-commit-id: 22e0e01953968cee592b5408677e557059669c31
According to CowBite, the top bit is supposed to be ignored.
fixes#99
Former-commit-id: 28a43311726f9ce5ef26c77687fedecc33b286e0
Former-commit-id: df0b025ed6d51e36bcffd4c91250858167b42f40
Pokemon Emerald no longer has the "Battery ran dry" message, and RTC
functions work.
Former-commit-id: b05115af9797b9d754e20d98b1dbd5dac5389518
Former-commit-id: b10a70ec02d0b8775e1e39e9d64b41860d3b1274
It was useless and lengthened the build time
Former-commit-id: 44b9c836d9b75142ef4bdb3602ede3f87b03f08f
Former-commit-id: 4c737704103654673366a7a83bf9b7614df40416
This test also caught a bug where hblank flag from the last
vblank-hblank would linger on the next HDraw.
Former-commit-id: b8916badc4bd874d9493229299150f6b2f00f5ed
Former-commit-id: 8ada7ccf3e65e7272d9bb828101520f1589cb4c4
As per the GBATEK docs. Fixes the fadeout animations in Ice Age.
Former-commit-id: 0bc54ab594ba19347a4b6d1b681ccf37da4d7910
Former-commit-id: 33b732e7f990c312bf92bcc21797df35b3d2ce56
Arm Data-Processing instruction was not initializign
`self.bs_carry_out` before activating the barrel-shifter.
Current ARM7 is too much spaghetti for me to handle anymore, maybe time
for some refactoring.
Former-commit-id: b21fe75496ccd89611fc56f5f00e885532c5ff20
Former-commit-id: 5b11f640d306ebc2afb95d76a3dd3e1530a87c36
Shifter tests from the mGBA test suite now pass with a 140/140 score.
Also fixes gba::tests::test_arm7tdmi_thumb_eggvance.
Former-commit-id: 4cd4faa3b33f04969b38480c5eed8bf352be025a
Former-commit-id: d1427d8c9b407be1505c0153cce1ecdadd646664