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
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
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