Michel Heily
414c1b0557
optimize/gpu: Optimize read_pixel_index calls inside render loops.
...
Former-commit-id: 763b24a151ddd3dcb69afacabcb214b26ad03052
2020-03-28 16:14:59 +03:00
Michel Heily
699b2decd2
core/gpu/bugfix: Support firing HBlank IRQs during VBlank
...
This commit fixes #43
Former-commit-id: 6a4367282c673a35316643e16413f9a602094d9d
2020-03-13 16:29:12 +02:00
Michel Heily
7f34e8bd08
core/gpu/bugfix: Use correct bitmask when writing to DISPSTAT
...
Accidently used 5 (0b0101) instead of 7 (0b0111)
Former-commit-id: f690dd3f591bef10c5dd280d46be22cd339498a2
2020-03-13 16:29:12 +02:00
Michel Heily
aa0f708302
chore: Update Cargo.lock
...
Former-commit-id: 4f4fae3b12ab027a34cc5080dd041d5e09ce3e64
2020-02-28 15:11:02 +02:00
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