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
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
Michel Heily
5fc38546ce
refactor(core/cartridge): Refactor cartridge module to make it easier to configure savetypes
...
Former-commit-id: 2e8dd8c3f60c7de8c55bd4c38eaa0630af73c1cc
2020-01-31 16:15:29 +02:00
Michel Heily
3fb75079a2
feat(eeprom): Fix eeprom emulation timeout problem, passing the nintendo eeprom tests
...
Former-commit-id: 5eea390de806d03eee8c043203ae4c57d7355caa
2020-01-31 16:15:29 +02:00
Michel Heily
451be2036f
feat(logger): Replace various println! with logs
...
Former-commit-id: c2f38f863d65c4564f4d2169e63714a2925a4d3f
2020-01-31 16:15:29 +02:00
Michel Heily
8f4e42d6d4
feat(logger): Add a logger to the project
...
Former-commit-id: aa0579884951857a136904b3147eaa553117e68e
2020-01-31 16:15:29 +02:00
Michel Heily
990ce40e35
feat(eeprom): Cleanup eeprom code. still not working
...
Former-commit-id: 5cc2b897796a35d3b3bc6c346cf275826e9f4b7c
2020-01-29 22:09:30 +02:00
Michel Heily
1f073199b3
feat(eeprom): Move cartridge into its own module
...
Former-commit-id: e7fd72db6e14770a0b099f4b5ce32da1fb6fa0f5
2020-01-29 21:48:38 +02:00
Michel Heily
51a79d68da
feat(eeprom): Start working on Eeprom emulation
...
Former-commit-id: b600daa044e1bdf85fb022017517585a9aca4082
2020-01-29 20:46:22 +02:00
Michel Heily
eda3d3e3e7
feat(flash): Implement Flash save type
...
Pokemon games now boot and save.
Fixes #7
Former-commit-id: c60cda3352cc5117c88d4aec272c4e9d2662d21d
2020-01-26 02:18:27 +02:00
Michel Heily
23a6bf1637
feat(sram): Implement SRAM save type
...
Tested to work on Kirby.
Fixes #8
Former-commit-id: 90aa60b901a4ef790592c34c2350a7349939d612
2020-01-26 02:06:44 +02:00
Michel Heily
70c19ea343
fix(sound): Fix amplitude and properly emulate sound bias level
...
Former-commit-id: 92dec2c186b9e6f34ae5ce0ee167d6f1fa7730c8
2020-01-21 01:20:28 +02:00
Michel Heily
ade03121ee
feat(sdl2): Support window resizing
...
Former-commit-id: f5e70c8a15b53eb7aded9f630e5c1fb1dce55fba
2020-01-21 01:20:23 +02:00
Michel Heily
6dbc3d5cf0
tests: Add test for the bug fixed in cca16c52fd838b34c759913a41ff28c4e04735d0 [formerly 453e7c03ab48f1bcf72cd9d4b1aae012eb08c697]
...
Updated gba-suite submodule
Former-commit-id: 97bccebd0a9bf60ed6da1cf3f853b98d114631af
2020-01-19 00:45:46 +02:00
Michel Heily
a47cb18cda
core/arm7tdmi/arm/: Fix wrong calculation of op1 in DATA_PROCESSING instruction when RN==R15
...
The docs state: "If a register is used to specify the shift amount the PC will be 12 bytes ahead"
I probably misread that when implementing DataProcessing instructions,
and because of that added 4 bytes to (op1+8) when shift amount was specified by a rotated immediate.
Fixes #6 (and probably tons of other bugs too!)
Former-commit-id: 129f0951a6381221314c23a468c3da8b31435a30
2020-01-18 23:46:47 +02:00
Michel Heily
c20ac9cdf8
core: cartridge: Try to detect and print the backup type
...
In preparation for backup impl
Former-commit-id: 75efbbaea82ba30899787b46b8eaca834622493c
2020-01-17 16:11:43 +02:00
Michel Heily
ec0e796536
core: arm7tdmi: thumb: Reduce branches in exec functions
...
Former-commit-id: 69493480eddee066bc4812c4c1abd6c520a00231
2020-01-17 16:11:43 +02:00
Michel Heily
40de6bf893
core: arm7tdmi: Align PC according to current ISA state
...
Former-commit-id: 049f01247f3fcc429f07e1761ceed25e749ce77e
2020-01-17 16:11:43 +02:00
Michel Heily
9cc293fb02
fix(tests): Fix all arm tests
...
Former-commit-id: a3138584636cc34115207dc6a7b52cf175da187a
2020-01-17 13:10:26 +02:00
Michel Heily
70c72bec2f
fix(tests): Fix thumb t230
...
THUMB 15: Base in rlist
Former-commit-id: 2516b67308e2605414f691009ce000adafda1f49
2020-01-17 13:07:26 +02:00
Michel Heily
5b90223717
fix(tests): Fix thumb t225
...
THUMB 14: Push / pop do not align base
Former-commit-id: e8f511387edf5bd2f3991558f7757f997d0289c7
2020-01-17 13:04:14 +02:00
Michel Heily
4cb7abee52
cartridge: Refactor to deal with out of bounds read
...
Former-commit-id: ab0a4368f7e5120cf7059fb34687a5a9c1ea21cd
2020-01-17 01:39:25 +02:00
Michel Heily
8755013ec6
tests: Wrap gba-suite by jsmolka
...
Former-commit-id: 511f08470520c712b3b5a5bd9e33ac590939c315
2020-01-17 01:33:21 +02:00
Michel Heily
1d7035b600
core: arm7tdmi: Comment out old tests for now
...
Former-commit-id: 01bfe52e513de9decb1a20e2e1d501b564f981b5
2020-01-17 01:15:51 +02:00
Michel Heily
dc1cd84225
feat/savestates: Implement savestates for plat/sdl2
...
Former-commit-id: e61193e0c9a937dd3b4b7e7e748d9a9b1e170e44
2020-01-16 20:18:32 +02:00
Michel Heily
f4460b2740
feat/savestates: Implement save/load state API for GameBoyAdvance
...
Using serde & bincode encoding
Former-commit-id: f5e4c599497f6bdf3096fa99f8b2d6ce89278ef7
2020-01-16 20:18:32 +02:00
Michel Heily
16142ee99d
core: gba: Move VideoInterface & AudioInterface to GameBoyAdvance
...
In preparation for savestates, this is needed to avoid (de)serializing Rc<RefCell>'s
Former-commit-id: c6dfe189d4f6104fc4b1b567529ec50714a2d74e
2020-01-16 19:56:05 +02:00
Michel Heily
236dd601a9
core: gpu: Use Vec<> instead of fix size arrays
...
Resorting to this since big arrays tend to overflow the stack on windows
Former-commit-id: e792a9c844d8f87075ee02323cf0a58d083e9f63
2020-01-16 19:53:09 +02:00
Michel Heily
87999122da
feat/savestates: Add write_bin_file
util function
...
Former-commit-id: 88e12df1d8a88ad97756e943b4b959f73bb99c35
2020-01-16 19:49:43 +02:00
Michel Heily
d887602266
feat/savestates: Add serde and bincode traits to the project
...
Former-commit-id: b4699586bba03b8fcfc718ea08363a7067d31e20
2020-01-16 19:49:13 +02:00
Michel Heily
0e0f1764e8
fix: Set BG2/3 affine parametersr to default on bios skip
...
Former-commit-id: e6e3016f85230af3aa495b120a3d3abb385ba463
2020-01-16 19:47:05 +02:00
Michel Heily
d97d07774f
core: gpu: Implement rotation/scale background rendering
...
Displaying sbb_aff.gba and rsbin demos correctly.
Problems in mode7:
* Incorrect first scanline in m7_demo.gba
* Mariokart scaling is off
Former-commit-id: 27655a7a3cde0e9cdabd727a6ec9c99270a99b35
2020-01-16 19:46:36 +02:00
Michel Heily
12ebcf44a2
refactor: Make debugger into a cargo feature
...
Former-commit-id: 50f28963d5f7c7b04a0ecd4be82ddd61bd59a39b
2020-01-13 01:11:58 +02:00
Michel Heily
f6142f2c5a
Update new icon
...
Preperation for renaming of the project..
Former-commit-id: c4466793633f3c37dbbad70bf6a012994e0fc750
2020-01-13 00:45:58 +02:00
Michel Heily
49a3bc6fd0
feat: Add temporary project icon
...
Former-commit-id: 05da47f328f076045f4b27f521c72e03648ede77
2020-01-12 01:30:35 +02:00
Michel Heily
1c63fcd9b3
feat: plat/sdl: Support file drag events to load new roms
...
Former-commit-id: daeb01577ec79c23c26e2f3f6c923e46cc09d4bc
2020-01-11 17:36:12 +02:00
Michel Heily
e50f82d496
plat: sdl2: optimization: Create texture ahead of time instead per frame
...
Former-commit-id: b3673b49f60713474af76efbe316a30133e12dec
2020-01-11 16:12:54 +02:00
Michel Heily
c6feb5d500
core: Optimizing GameBoyAdvance::frame
...
Profiling GameBoyAdvance::frame shows that it spends way too much time idleing
on SoundController::update & Gpu::step waiting for the cycle count to
reach to the next event, Consuming cpu time for the Arm7tdmi core.
This commit changes the implementation of the main loop functions so
that the CPU will run as many cycles as possible and the peripherals
will only be updated when needed.
The is a performance improvement of roughly 50% in fps in some games!
Former-commit-id: 937e097f958423934c70b7face6b6b02926b7a51
2020-01-11 16:12:54 +02:00
Michel Heily
36cf4e62ce
core: arm7tdmi: optimization: split flush_pipeline to arm and thumb
...
Reduces an if check
Former-commit-id: 4380c54f86238ef8818356f4593f59277f055fa6
2020-01-11 16:12:54 +02:00
Michel Heily
0872ff650a
sound: Comment out spamming printlns for now
...
TODO - replace when decent logging module is in place
Former-commit-id: bfcfe07a0506aa9b4f2fa4e33863afdb74f6783c
2020-01-11 16:12:54 +02:00
Michel Heily
05f1085410
core: sound: sound chip optimization
...
Compute sampling rate and cycles per cycles ahead of time
Former-commit-id: 2959cadd693ff08a69251d642583cc984c040fc2
2020-01-11 16:12:54 +02:00
Michel Heily
71a4837d25
core: Reduce overhead in Bus interface
...
Former-commit-id: 1b3b00825d0b6aec0223445a1f00408397efca56
2020-01-11 16:12:05 +02:00
Michel Heily
1de287713a
core: sysbus: Boxed memory optimization
...
Former-commit-id: d845ceadcef463b2d66f5fb3cee2b6fbc752c286
2020-01-03 00:58:35 +02:00
Michel Heily
1a5903c09c
plat: minifb: Remove junk code
...
Former-commit-id: ca265f5824a2b0014b81fc0d7ecd18f2bbdc18b0
2019-12-30 00:28:32 +02:00
Michel Heily
ab731679ef
core: gba: Get rid of usesless RcRefcells in main object
...
Former-commit-id: 55beb34c529a8c8f19d0dffcef33584fb4c97e7a
2019-12-29 23:44:34 +02:00