Commit graph

596 commits

Author SHA1 Message Date
Michel Heily 554edd62b0 core: Properly set SharedInterruptFlags pointer for all interrupt generating devices when restoring state.
Serde doesn't like Rc that much :(

Fixes #142


Former-commit-id: e1e8a96b4867e351d103fb7d92d71b0434e8fc31
Former-commit-id: 28366bbb36b3e93b574f397b103a483844fd8131
2020-09-27 15:44:17 +03:00
Tibor Nagy 4050dcdf2f core: Add error handling to cartridge header parsing
Former-commit-id: 4e65ccd597bc082f259788f0870287254e852a2f
Former-commit-id: ebb62516936dc0f27dc9761aeb6bb6faa8ec58b5
2020-05-30 15:35:12 +03:00
Michel Heily 1b1b855702 core/gpu: Impl bitmap mode 5 and properly handle wraparound for bitmap modes.
resolves #90


Former-commit-id: 633580870e2d44d95a8b53b6311232f0fad48bd9
Former-commit-id: aa2ba32116900f635f12f9dcc9d29344367711eb
2020-05-30 14:32:03 +03:00
Michel Heily 90e492d81a core/sysbus: Get rid of memory_map! macro
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
2020-05-30 13:44:37 +03:00
Michel Heily 24f6ad61c1 Add DebugRead trait
Former-commit-id: 4c9339dc0f2057152dcb6faccd78f058bc58676f
Former-commit-id: 7bf052ace6b5b12eca3c74f64f4d61d4ae6ac18e
2020-05-30 13:44:27 +03:00
Michel Heily b888fc0c95 Move BoxedMemory to core::util
Former-commit-id: 99a04859982f39f0062c781d9f61b2a55f8e5c10
Former-commit-id: 1ae7808c64116347410b52770edf132f3beec817
2020-05-30 13:44:00 +03:00
Michel Heily 6e39780b43 util: Add WeakPointer helper for passing around raw pointers
Former-commit-id: eaab1057cf7bf8132ba7b59f6c5315e873064c30
Former-commit-id: 94f947733463b528dd3775d2bc6f55adebc36a2d
2020-05-30 13:43:49 +03:00
Michel Heily 879374a9b0 Refactor dir rustboyadvance-core -> core
Former-commit-id: 5af970f6d56d321472f2b91885e41ca113390986
Former-commit-id: 748e222a36362eb5ac8909068c32f2d3f98ca536
2020-05-30 13:43:37 +03:00
Michel Heily f65e22cc41 core/gpu: Fix bitmap mode displaying invalid sprites
fixes #107


Former-commit-id: 4b307c80f0519a5034dad1188d285cb44a2c8eeb
Former-commit-id: 8879aababad1aef0690adb0a88cdeb36368c024a
2020-05-30 13:41:10 +03:00
Michel Heily dc59d7f71f core/gpu: Optimize VRAM accesses all over the place
Former-commit-id: a14fc75968c5ce6016acc88fe2cc24eaac8b305b
Former-commit-id: 41f3142ea586c981cd5ccc7eb5a69f49bdcc591d
2020-05-30 13:13:25 +03:00
Michel Heily 71074c9c87 core/gpu: Implement forced blanking
fixes #102


Former-commit-id: 8d0557a63121eab20f7299d75c4c7e577d5f5612
Former-commit-id: 668c728b5ebd6103bf9d15115cb3912ea8c6f4b6
2020-05-26 18:06:02 +03:00
Michel Heily 441f5ad906 Refactor IRQ signaling
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
2020-05-26 01:49:25 +03:00
Michel Heily 63cbf9bccf chore: Update Cargo.lock
Former-commit-id: 4cf345e1f2ea09577889552a6644cb53b5900e25
Former-commit-id: b460b1f567643cc85fef0bfe815abb842c2dc0f0
2020-05-26 01:49:16 +03:00
Michel Heily c131e73ce1 Support controll remove/add events for SDL2 frontend
Former-commit-id: b0e97f9c9b3f0b32140f1425159088270be6a433
Former-commit-id: b158c5c4ac491561f33f71d2bcd5cf069d55b343
2020-05-23 11:45:25 +03:00
Michel Heily 91515b6b10 core/gpu: Ignore top bit when reading colors from the palette
According to CowBite, the top bit is supposed to be ignored.

fixes #99


Former-commit-id: 28a43311726f9ce5ef26c77687fedecc33b286e0
Former-commit-id: df0b025ed6d51e36bcffd4c91250858167b42f40
2020-05-23 01:55:40 +03:00
Michel Heily f84e425d24 core: Make gpio optional
Former-commit-id: 2efe3a5486d76b2be0fc99abbe2e1ea14b21d180
Former-commit-id: b2ce408e12913a050354258b3e6f3c5e0714183d
2020-05-21 23:18:20 +03:00
Michel Heily 3839b8eb02 core: Finish up RTC!
Pokemon Emerald no longer has the "Battery ran dry" message, and RTC
functions work.


Former-commit-id: b05115af9797b9d754e20d98b1dbd5dac5389518
Former-commit-id: b10a70ec02d0b8775e1e39e9d64b41860d3b1274
2020-05-21 23:18:20 +03:00
Michel Heily 58c9d10360 debugger: Fix/Improve Continue command
Former-commit-id: 8f64618a51c1805ccf5db0da9a2d0a2335928588
Former-commit-id: 180721c6aa6b7fe32a3afb23c01c048bcd9aa878
2020-05-21 23:18:20 +03:00
Michel Heily bccb31c142 Remove 'reqwest' dependency from sdl2 frontend
It was useless and lengthened the build time


Former-commit-id: 44b9c836d9b75142ef4bdb3602ede3f87b03f08f
Former-commit-id: 4c737704103654673366a7a83bf9b7614df40416
2020-05-21 23:18:20 +03:00
Michel Heily e1ec96f9e4 Use elf-support feature in sdl2 frontend
Former-commit-id: 70d1718ae5a18b8ffe7d03fd2a251479224a41ac
Former-commit-id: 54ec2c969dca62644b28bd936e2a03b3786efc52
2020-05-21 23:18:20 +03:00
Michel Heily a99a1499fd Add game specific overrides file (like vba-over.ini)
Former-commit-id: c5084bd191fcc91d9caa5f2c0f89a9803706d0b2
Former-commit-id: a80f747b6199679c74a25505a7893afe4b3b05e1
2020-05-21 23:18:20 +03:00
Michel Heily 8e1ba1117c core: More RTC work
Former-commit-id: be2955b08d65c547d206d637ae499dbad892a87a
Former-commit-id: 19f0e4e6f9c598c35fb8172d93a1519f921eb27f
2020-05-21 23:18:20 +03:00
Michel Heily 304ac31c02 core: Start working on RTC
Former-commit-id: cb23bbade323883509347fce26f78f2cf43d8788
Former-commit-id: d01bef5267429a7d76a50dbc7c185f0513af00ec
2020-05-21 23:18:20 +03:00
Michel Heily d2f4b55f21 core/gpu: Remove irrelevant comment
Former-commit-id: d1c8efd0aefe18dbb71dc8417e09d65019f3d3c2
Former-commit-id: a9b97120e5ae524d1b9fdc9c6296477ff014f938
2020-05-20 22:38:25 +03:00
Michel Heily 9607b16e4f core/gpu: Add a test for the gpu state machine.
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
2020-05-20 22:35:53 +03:00
Michel Heily b60ad3114c core: Decouple SysBus from Gpu and re-implement Gpu::update
Former-commit-id: 6ca6989192f0925f4d2eb0e5029a2bcf66869ee9
Former-commit-id: 562d89f627a9e3a9153a7a0db6830fd9b5875967
2020-05-20 21:23:44 +03:00
Michel Heily 96b1e0d844 core/gpu: Remove panic when ObjMode is "Forbidden"
Former-commit-id: 90380761357fa7df0769cb487980a405ae2e8265
Former-commit-id: 1cddcb9030b03f3da35a98d56c7a21a6b8eb7530
2020-05-20 21:23:43 +03:00
Michel Heily f6d7b9ff4d chore: Run cargo-update
Former-commit-id: 2bd04b90ec8001e227b08c9ed23aa0d75263d4f3
Former-commit-id: bd54ccd9373ef1346bb8f18ab923ecfc10365e24
2020-05-20 20:04:47 +03:00
Michel Heily 564f1dcb39 bugfix: Properly handle VCOUNT interrupt edge case for line 227.
fixes #97


Former-commit-id: 6e1cd347e82edfd6eca2b89e6e2a86e68e39d580
Former-commit-id: e9aeb8cc4dd503cfb3da4552e5618de5e982039b
2020-05-20 19:54:27 +03:00
Michel Heily 948bac03a2 Fix copy-paste bug from previous commit
Former-commit-id: 849acd1852bbe3126a6dde0f21c9754b364e24cb
Former-commit-id: 31e837d620cb0858aec4ddf3c133c254bbc1f1b7
2020-05-19 19:30:35 +03:00
Michel Heily 309ae2f795 core: Handle 8bit writes to video memory
fixes #96


Former-commit-id: efdb6c0af0ef6ee2a74042b8725306103703fcfe
Former-commit-id: 1f0e7f7135649ab13c4adcb72bc5e9b432a4905f
2020-05-18 21:11:49 +03:00
Michel Heily 63bf7d6dbb core: Remove unused strust
Former-commit-id: 5ac298c8f300062b91f3321d7b125b4c2132530a
Former-commit-id: 7d1cc81d56a9d8d8d04097c43e48f3fb6e6f8d86
2020-05-18 21:11:20 +03:00
Tibor Nagy db3be711ae core: Clamp BLDY to 0..16
As per the GBATEK docs. Fixes the fadeout animations in Ice Age.

Former-commit-id: 0bc54ab594ba19347a4b6d1b681ccf37da4d7910
Former-commit-id: 33b732e7f990c312bf92bcc21797df35b3d2ce56
2020-05-18 11:26:14 +03:00
Michel Heily 9bb39fe135 Fix gba-suite arm test #530
Fixes edge-case in STMDA with empty rlist


Former-commit-id: 5f43fa19e0faad7d27d022480d856ab0c52f1d56
Former-commit-id: 8e2392e1dd34fb161aa1b2c3445272f06f432316
2020-05-15 16:25:27 +03:00
Michel Heily 4e6735bb5c Fix gba-suite arm test #207
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
2020-05-15 16:25:27 +03:00
Tibor Nagy fe9feb3498 core: Handle lsr 32 correctly
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
2020-05-15 16:25:27 +03:00
Tibor Nagy 6161892237 sdl2: Only import things under Windows in build.rs
To suppress unused import warnings under Linux.

Former-commit-id: 8730aa1d753861e5179f85ee9c95c66ad0dd62bd
Former-commit-id: 505dc43254fa109cd96feee8de5f6d8e2d30abf3
2020-05-15 16:25:27 +03:00
Tibor Nagy 90360fddd2 core: Fix ARM/Thumb test ROM paths
One step closer for having green Travis checkmarks

Former-commit-id: eac65389e20e5c76804f6c086cae7078c1b51b8c
Former-commit-id: c891c75058dd47f6d59c674f1aeb8fc57436cab0
2020-05-15 16:25:27 +03:00
Michel Heily be36345849 Add experimental RetroArch Core
Former-commit-id: 5d6bd10c6e9214f5980eddf86ed92d35c0e9ea93
Former-commit-id: 2ad4828ecbb3de7924f6103b106c7ec06c7822cc
2020-05-15 13:25:12 +03:00
Tibor Nagy 7646c2d6de sdl2: Clear Sdl2Video canvas before drawing onto it
Resizing the window could leave artifacts from the previous frame on
the canvas that is not overwritten by the self.canvas.copy(...) call.


Former-commit-id: c5479c3e9346a25f2d5e7a7f7b8198a71d16e16a
Former-commit-id: a2cc07de426ed1eca5437e30f4a15278065d856c
2020-05-13 22:17:44 +03:00
Tibor Nagy b980c7aa7d sdl2: Add window icon
Former-commit-id: 920d73c22836099234db2c1fe096f2d4268174e0
Former-commit-id: e2d6902830e3887255e0d816c056f199f1dc453b
2020-05-13 22:17:44 +03:00
Tibor Nagy bdf99282da sdl2: Window needs to be redrawn when restoring it from the taskbar
Fixes regression introduced by d0c525d80c3a09680cb9dfa056030db3ac6b7ce3 [formerly fc575f9f12e3782aa08f13aebdadbac50e98b2c5] [formerly fe172bedc6bf70b1022f419986585981bc9f3642]


Former-commit-id: 0f4c3ef3c12f794429ca9f498ca7314835375cc4
Former-commit-id: 9a8e5eb676e3e307af8cd5982d4d50204418c34d
2020-05-13 22:17:44 +03:00
Michel Heily 13c3e74973 sdl2: Allow toggling frame limiter with right stick
Former-commit-id: 1207b84dbd6162986e5ce790e13e1e2c0b125ebf
Former-commit-id: c7fe6ef3e5ec66fc63e5193e294bfb9d7f469afe
2020-05-12 08:09:33 +03:00
Tibor Nagy 0ae9ef14c3 Fix busy waiting in wait_for_rom() by using a blocking event iterator
Also move the redraw code into a closure to be able to call it from
two places. By the result of this waiting for ROMs no longer consumes
100% of a CPU core.


Former-commit-id: bc86ade197221eb8d357af91a3b59f4eb165adc5
Former-commit-id: 521f361872964d77b88097d7baa6a4b6b713224e
2020-05-12 08:07:13 +03:00
Michel Heily 8879d40262 Fix SDL2 build in CI
The repository was not checked out with submodules


Former-commit-id: fe10ba720aa617cf44ae0769c0ced2997ee4289c
Former-commit-id: bb38b3870022d3cecfc9f1b8fe0512aba6dacc18
2020-05-12 07:51:20 +03:00
Michel Heily 10bed1087a Add analogue stick support for controllers in SDL2
Former-commit-id: b3ccff53ded59930a0fe997f1bbbf83fd5e356d8
Former-commit-id: c3c286d1fccf6d9fc5478cd9f6b13d6a7d670b4b
2020-05-11 20:26:26 +03:00
Tibor Nagy 59111ee062 Implement controller support for the SDL2 frontend
Former-commit-id: 60c49c399631cda7ff069e47718544ffdc93f9b8
Former-commit-id: abe52243473054ba8042a5874cefcdcfa504974a
2020-05-11 20:26:11 +03:00
Michel Heily b745e07fa3 Fix affine backgrounds
Writing to reference point BGnX and BGnY should update the internal PPU
registers also inside VBLANK period.

fixes #79


Former-commit-id: a5237319ccab1aab023bb05878c81a198310fb21
Former-commit-id: 0c9ce4476111eea46e7372b48af77c862c0d2f6a
2020-05-09 18:55:37 +03:00
Michel Heily 84cb8c1808 Update gba-suite [still failing it]
Former-commit-id: db47195b32501bb946533d5f69d28d6ad591cd34
Former-commit-id: 0739eeaf35e993a931ea4d1155d48e85c3a23aa8
2020-05-09 18:55:24 +03:00
Tibor Nagy b2928de614 Use positional keyboard mapping instead of symbolic in the SDL2 frontend
Former-commit-id: 778b79f4afd5d290399e518f9b1a45470c5ad3a9
Former-commit-id: 58b2e0dd75acbe01fe0f4e73c0fa73af8caa88c2
2020-05-04 21:23:33 +03:00