Commit graph

527 commits

Author SHA1 Message Date
Michel Heily 6344744414 feat/jni: More work on JNI bindings
Former-commit-id: 125f764bd17ee9add3221cd6b64cde6edb592255
2020-02-28 15:11:02 +02:00
Michel Heily 84db854a06 chore: Make GameBoyAdvance the the bios argument as boxed slice rather then a Vec
On windows, the Vec may sit on the stack..


Former-commit-id: b8aa77858291c1b7ee6bfbfbec92646f18e819de
2020-02-28 15:11:02 +02:00
Michel Heily c4e8c71d1f sysbus: Make BoxedMemory a transparent struct
Former-commit-id: fc07876e9f73928eb2aaa6fcd4cba081a35745b9
2020-02-28 15:11:02 +02:00
Michel Heily c5b9c68d5e feat/jni: Cleanup & Improve jni bindings
- Wrap static globals with a mutex.
- Implement InputInterface

Testing this on a standalone Java Console Application (without
rendering) shows sufficiant performanse for now (AVG fps of 180 in the bios)


Former-commit-id: cfbb9abb7e91b04258c41fc20e8a22c16d797386
2020-02-28 15:11:02 +02:00
Michel Heily c68b9502fe bugfix: Fix bad write impl of DISPSTAT again.
I should really pay more attention to the docs..
The previous fix (bb843ea5) was not enough as it caused vblank,hblank
and vcount-match flags to be overwritten when they really should have
just been ignored.

This caused Dragon Ball - Advance Adevnture to fail booting


Former-commit-id: 1810e32692a0abd79f2df385c7c822debf186c79
2020-02-28 15:05:06 +02:00
Michel Heily d938767430 feat/jni: Add rustboyadvance-jni crate to export some simple JNI bindings
Former-commit-id: d4e7a622a97215a8c1b7b50bb7f08d18cb9c5716
2020-02-23 00:30:38 +02:00
Michel Heily 778274b5ae refactor: split "plat" binaries into separate crates
Former-commit-id: 73554b0128e036279f7ac895acb57d8f89cb1c96
2020-02-23 00:30:38 +02:00
Michel Heily c50ab1ecd8 feat: Add basic gdbserver feature
Initially I began implementing the gdb protocol on my own, but I then found a
nice work-in-progress crate on https://github.com/daniel5151/gdbstub
that suited my needs.


Former-commit-id: f77557cbbd8652c2ed05ac439efc1956d8e99729
2020-02-21 22:12:58 +02:00
Michel Heily 96cacb5f4c chore: Update .travis.yml
Former-commit-id: c529a4740c8d81e09a7a65648d9d2d77905e1146
2020-02-21 22:07:06 +02:00
Michel Heily b333ae7f65 rustfmt
Former-commit-id: a73535e556d1fb44e30927f0ab1f6238a8df8739
2020-02-21 14:08:08 +02:00
Michel Heily 0476342278 bugfix: Fix a bug where sprites were not rendered in bitmap modes.
I misunderstood the docs ^^


Former-commit-id: 157ae0dec037be3718b7a28314ba3b2eeb85cca0
2020-02-19 01:39:47 +02:00
Michel Heily a585753dc2 fix: Allow writes to DirectSound FIFOs in 8bit granularity
This fixes audio in games that directly write to sound FIFO using STRB instructions.


Former-commit-id: 3efb686b28146c414d5fad289f958346a9a5db6e
2020-02-18 22:29:54 +02:00
MishMish 1a382b4cee Update README.md
Former-commit-id: e1ff263d66abf91ebedc7863148b9203466f424d
2020-02-17 23:57:51 +02:00
Michel Heily c96fa38a2d bugfix: Fix improper write to DISPSTAT register
For some reason, probably typing mistkae, I `or`ed the value being written to DISPSTAT,
causing bits to never actually turn off, affectivly making HBLANK/VBLANK
interrupts linger forever.

This probably has caused some nasty glitches that I don't even know of, but two confirm issues solved
by this are Mariokart and Pacman.

This commit fixes #14 and #13


Former-commit-id: 72ad6efcb9e8f6b582d9279c5daab2603d5a408e
2020-02-16 01:46:51 +02:00
Michel Heily 392ad1bd71 gpu: Refactor Gpu::bg to Gpu::background
Former-commit-id: 78aa4ad525ba9df0a4944dfac0c5723e35633390
2020-02-16 01:40:59 +02:00
Michel Heily aeab3a82a3 Return to rust stable, get rid of nightly features for now
Former-commit-id: 1550bc0f70218c8a012f0631502eabbdf835d0ab
2020-02-14 14:33:22 +02:00
Michel Heily 11fb9d7eda Fix panic when fs::create_dir fails for LOG_DIR when it already exists
Former-commit-id: a332a8aadc8322650beaf9ff7eead4ac162c6eec
2020-02-14 14:26:45 +02:00
Michel Heily b03fe3567e Fix all warnings during build
Ran cargo-fix to automatically fix most of the build warnings,
Cleaned up dead code, and fix the rest manually


Former-commit-id: f35faba46b40eaf9c047efb8ab1e77ffa24d41b6
2020-02-14 14:21:45 +02:00
Michel Heily 0c2da2ae46 refactor: Refactor instruction decoding to panic instead of returning a Result
flamegraph shows too much time is being spent 'unwraping' decoded
instructions


Former-commit-id: e89072e6cf648e83f87d8c01891f50474246a36b
2020-02-14 13:05:14 +02:00
Michel Heily 69aadb9d92 Fix broken tests due to recent arm7tdmi changes
Former-commit-id: e1a5ec4ce3cb4c61bf6f511babfa8da8efd7321f
2020-02-14 13:02:56 +02:00
Michel Heily 84004ddb5c windows: Add file icon to build targets
Former-commit-id: 2dae2e7818d86ddf9470afafd0404f0e7e021718
2020-02-12 22:18:58 +02:00
Michel Heily 32a20d2cbb ptimize: CPU Pipeline optimization part 3
Move reload_pipeline calls inside instructions.
This commit yeilds yet another 5% performance improvment.

The next step is to move `advance_pc` into the instructions themselves
and save the `match result` per executed instruction


Former-commit-id: 42193ffc48fda9943665e6a74e873186627a0b4a
2020-02-11 02:26:17 +02:00
Michel Heily 6beec306c2 optimize: CPU Pipeline optimization part 2
Optimize redundent pipeline stages
About 5% performance gain.

Also rustfmt..


Former-commit-id: 2f5fc95798e97eb963fea976866bbeaf637084b0
2020-02-11 02:26:17 +02:00
Michel Heily 1f79205f51 optimize: CPU Pipeline optimization part 1
In preperation for later optimization in the CPU pipeline
implementation, this commit refactors the arm/thumb exec functions to return a
CpuAction (Whether to advance the program counter or to flush the
pipeline)

Currently, a lot of host cycles are wasted in the arm7tdmi pipeline
Refill1 & Refill2 states. Optimizing these steps out would make the CPU
a bit faster.


Former-commit-id: 9be7966eaad22cceeb443fcc5823bbd945284027
2020-02-11 02:26:17 +02:00
Michel Heily 7736154b50 fix: Use flush_pipeline16 when branch exchange changes CPU to thumb mode
Former-commit-id: 6f9c01c6f7ad7be2889a18ca66f7d310fcaa7c35
2020-02-11 02:26:17 +02:00
Michel Heily c7a484fda5 Move creation of arm7tdmi core into the GameBoyAdvance
Former-commit-id: d4a43df2ea3d737cc8284b84cea0285c8818ef32
2020-02-11 02:26:17 +02:00
Michel Heily 1a46bec3f9 feat: Fix & improve debugger, Add commands to save/load the state
Former-commit-id: cfbead1ad64c8b029bf7265f7fd975014744b287
2020-02-11 02:26:17 +02:00
Michel Heily ae7bf63d3f arm7tdmi/optimize: Optimize and cleanup CPU, roughly about 10% fps improvement.
This commit removes the error handling (CpuResult<>) in order to reduce
overhead in the cpu implementation.
Also, some cleanup of warning messages.

Notice: this commit breaks '--feature debugger' for now

Former-commit-id: d4484047c3f5d509eff89cef7090aa88b07a8d17
2020-02-09 20:17:46 +02:00
Michel Heily 48eb2a4104 Bump gba-suite git submodule
Notice: This change breaks master due to failing the added tests

Former-commit-id: e3fde1c37e85a5e1e88e9fa82b1152ef1bce4493
2020-02-07 17:36:32 +02:00
Michel Heily 984cb2f0c4 chore: rust-fmt
Former-commit-id: 8bb31056864e64bcad6877f3c2c1000464cce82e
2020-02-07 17:16:52 +02:00
Michel Heily 374c429d16 optimization: Avoid bound checking twice in Cartridge::read_8
Former-commit-id: fb9db936f7d7a89b467c3c3dfd290c43b5324da6
2020-02-07 17:13:05 +02:00
dependabot-preview[bot] 3a488e4487 build(deps): bump ansi_term from 0.11.0 to 0.12.1
Bumps [ansi_term](https://github.com/ogham/rust-ansi-term) from 0.11.0 to 0.12.1.
- [Release notes](https://github.com/ogham/rust-ansi-term/releases)
- [Commits](https://github.com/ogham/rust-ansi-term/compare/v0.11.0...v0.12.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Former-commit-id: 702534f36b62f34f48c13c64e0db1d195206c215
2020-02-07 17:10:21 +02:00
dependabot-preview[bot] 66d7f0f7f2 build(deps): bump zip from 0.5.3 to 0.5.4
Bumps [zip](https://github.com/mvdnes/zip-rs) from 0.5.3 to 0.5.4.
- [Release notes](https://github.com/mvdnes/zip-rs/releases)
- [Commits](https://github.com/mvdnes/zip-rs/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Former-commit-id: 2c546f001f0e53ab6936f382ba9a9a40698337dd
2020-02-07 17:10:14 +02:00
dependabot-preview[bot] 9b06928e2e build(deps): bump flexi_logger from 0.14.6 to 0.14.8
Bumps [flexi_logger](https://github.com/emabee/flexi_logger) from 0.14.6 to 0.14.8.
- [Release notes](https://github.com/emabee/flexi_logger/releases)
- [Changelog](https://github.com/emabee/flexi_logger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/emabee/flexi_logger/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Former-commit-id: 638bc4021e6feabbb9f944aabb731175486609b6
2020-02-07 17:05:20 +02:00
dependabot-preview[bot] 6c879136f1 build(deps): bump colored from 1.8.0 to 1.9.2
Bumps [colored](https://github.com/mackwic/colored) from 1.8.0 to 1.9.2.
- [Release notes](https://github.com/mackwic/colored/releases)
- [Changelog](https://github.com/mackwic/colored/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mackwic/colored/compare/v1.8.0...v1.9.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Former-commit-id: 1b24d07dd253bedd15df2eba727118cbb01ef44b
2020-02-07 17:05:13 +02:00
dependabot-preview[bot] afa22aaa38 build(deps): bump byteorder from 1.3.2 to 1.3.4
Bumps [byteorder](https://github.com/BurntSushi/byteorder) from 1.3.2 to 1.3.4.
- [Release notes](https://github.com/BurntSushi/byteorder/releases)
- [Changelog](https://github.com/BurntSushi/byteorder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/BurntSushi/byteorder/compare/1.3.2...1.3.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Former-commit-id: 28acac0def9bbb220bae601d2c397ff26ee04f28
2020-02-07 17:05:00 +02:00
dependabot-preview[bot] 194b9a0b2a build(deps): bump time from 0.1.42 to 0.2.6
Bumps [time](https://github.com/time-rs/time) from 0.1.42 to 0.2.6.
- [Release notes](https://github.com/time-rs/time/releases)
- [Commits](https://github.com/time-rs/time/commits/v0.2.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Former-commit-id: 9a9533684df743a5441be6ed0d0cd40633189c6b
2020-02-07 17:02:24 +02:00
dependabot-preview[bot] 9d383fa2c5 build(deps): bump num from 0.2.0 to 0.2.1
Bumps [num](https://github.com/rust-num/num) from 0.2.0 to 0.2.1.
- [Release notes](https://github.com/rust-num/num/releases)
- [Changelog](https://github.com/rust-num/num/blob/master/RELEASES.md)
- [Commits](https://github.com/rust-num/num/compare/num-0.2.0...num-0.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Former-commit-id: ba192b84e744980c2edb3969f94b25fc0974a1bb
2020-02-07 17:01:55 +02:00
dependabot-preview[bot] 26f016182b build(deps): bump bitflags from 1.1.0 to 1.2.1
Bumps [bitflags](https://github.com/bitflags/bitflags) from 1.1.0 to 1.2.1.
- [Release notes](https://github.com/bitflags/bitflags/releases)
- [Changelog](https://github.com/bitflags/bitflags/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bitflags/bitflags/compare/1.1.0...1.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Former-commit-id: 741a46a69dddb03d423776d760c933dab4076426
2020-02-07 17:01:35 +02:00
dependabot-preview[bot] 2a9f2270da build(deps): bump rustyline from 5.0.6 to 6.0.0
Bumps [rustyline](https://github.com/kkawakam/rustyline) from 5.0.6 to 6.0.0.
- [Release notes](https://github.com/kkawakam/rustyline/releases)
- [Commits](https://github.com/kkawakam/rustyline/compare/v5.0.6...v6.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Former-commit-id: 138a28066ed7d421ac4d6cf54b5710f45bc02c4b
2020-02-07 16:59:55 +02:00
dependabot-preview[bot] 23e0d1dfa7 build(deps): bump num-traits from 0.2.8 to 0.2.11
Bumps [num-traits](https://github.com/rust-num/num-traits) from 0.2.8 to 0.2.11.
- [Release notes](https://github.com/rust-num/num-traits/releases)
- [Changelog](https://github.com/rust-num/num-traits/blob/master/RELEASES.md)
- [Commits](https://github.com/rust-num/num-traits/compare/num-traits-0.2.8...num-traits-0.2.11)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Former-commit-id: de2d638031688498136038e7776edc34cd60169e
2020-02-07 16:59:39 +02:00
dependabot-preview[bot] 70eaedcc77 build(deps): bump sdl2 from 0.32.2 to 0.33.0
Bumps [sdl2](https://github.com/Rust-SDL2/rust-sdl2) from 0.32.2 to 0.33.0.
- [Release notes](https://github.com/Rust-SDL2/rust-sdl2/releases)
- [Changelog](https://github.com/Rust-SDL2/rust-sdl2/blob/master/changelog.md)
- [Commits](https://github.com/Rust-SDL2/rust-sdl2/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Former-commit-id: 3a2416ac596acb7f59ac94ff375fd02c9c60b1b4
2020-02-07 16:57:39 +02:00
Michel Heily 17560eeb0c fix: Completly refactor GPU scanline composition code.
This change fixes #9 and emulates:
- Correct layer ordering
- Correct emulation of blending sfx
- Correct emulation of the object window (BIOS boot animation is now fixed)


Former-commit-id: caf46fe4b62cc54e6f2c02a8001da552f8e6b54a
2020-02-07 16:11:16 +02:00
Michel Heily 71cccf7504 Fix panic panic when loading eeprom ROMs while save file does not exist
Former-commit-id: 42bc08b6008169062c9d814a4e48e13eacb44a91
2020-02-07 16:11:16 +02:00
Michel Heily 7848cb609b fix: Make debugger step functions only step the arm7tdmi core
Former-commit-id: bc544ff5dda9db694405126b3cab963f91526a7d
2020-02-01 12:22:44 +02:00
Michel Heily 99cf07c391 chore: Replace trace exception with trace!
Former-commit-id: 0b6f2126a6861b8f31f5231b5e0cfda3df30d5d5
2020-02-01 12:21:42 +02:00
Michel Heily 15f20e88fe chore: Update launch.json
Former-commit-id: 950fba30f8e517d8e6a1bce90bcd4762b1fb7bc2
2020-02-01 11:28:56 +02:00
Michel Heily 7625feee6b chore: Cleanup eeprom.
Removed unused code and added meaningful log message to indicate eeprom size assumption due to save file size


Former-commit-id: 12fa73c197cc2c9c695ed209114b803f2255e95d
2020-02-01 11:26:56 +02:00
Michel Heily 13037f334c feat(eeprom): Implement eeprom size runtime autodetection
The Minish cap works :)


Former-commit-id: 4c04d7907bd44edaac47a9110c98fb0869d01ace
2020-01-31 18:26:16 +02:00
Michel Heily bb111f0d0b feat(save_override): Add option to override save type via commandline
Former-commit-id: c4a00744ba20baf5f68072d6b9583616f61417e8
2020-01-31 16:15:29 +02:00