Commit Graph

62 Commits

Author SHA1 Message Date
1c07932b40 implement block linking + some refactoring
currently only supported for x64
2020-06-16 11:59:06 +02:00
baed0ac0d5 remove debug leftovers 2020-06-16 11:57:50 +02:00
ec965c6014 improve nop handling and proper behaviour for LDM^
fixes dslinux
2020-06-16 11:57:49 +02:00
1cfbbcbb2a make savestates 100% compatible again 2020-06-16 11:57:48 +02:00
441869a105 integrate changes from ARM64 backend and more
- better handle LDM/STM in reg alloc
- unify Halted and IRQ in anticipation for branch inlining
- literal optimisations can be disabled in gui
- jit blocks follow simple returns
- fix idle loop detection
- break jit blocks on IRQ (fixes saving in Pokemon White)
2020-06-16 11:57:45 +02:00
40b88ab05a new block cache and much more...
- more reliable code invalidation detection
- blocks aren't stopped at any branch, but are being followed
if possible to get larger blocks
- idle loop recognition
- optimised literal loads, load/store cycle counting
 and loads/stores from constant addresses
2020-06-16 11:56:36 +02:00
316378092a abandon pipelining on jit
fixes Golden Sun Dawn
this makes the cpu state incompatible between interpreter and JIT. That's why switching cpu mode requires a restart(not requiring is stupid anyway) and the pipeline is manually filled when making a save state.
2020-06-16 11:55:24 +02:00
00cd9af033 fix uninitialised memory mapping 2020-06-16 11:54:47 +02:00
4deecc7d65 jit: decrease blockcache AddrMapping size for ARM9 2020-06-16 11:54:05 +02:00
86f2be7260 jit: add compile option 2020-06-16 11:54:03 +02:00
d13d625f73 jit: make everything configurable 2020-06-16 11:53:21 +02:00
f22521a43d jit: LDM/STM finally(!) working + MUL, MLA and CLZ 2020-06-16 11:53:10 +02:00
83bd863361 jit: branch instructions 2020-06-16 11:53:09 +02:00
10e386fe50 JIT: most mem instructions working
+ branching
2020-06-16 11:53:08 +02:00
2f6b46fd4f JIT: implemented most ALU instructions 2020-06-16 11:53:06 +02:00
c692287eba JIT: base
all instructions are interpreted
2020-06-16 11:53:05 +02:00
43e045357f make it able to switch between DS and DSi modes 2020-06-01 20:36:30 +02:00
2327de2423 Merge commit '4b57416552ec2fa95216e2b044559f215723bf70' into melonDSi 2020-05-30 03:12:42 +02:00
5f99a68151 detect whether we are running the game 2020-02-24 18:31:44 +01:00
85a6a5bb38 * add support for a bunch of codes (all of them minus the loop shit, really)
* hook it betterer so it doesn't asplode
2020-02-14 23:34:26 +01:00
83f8e11bc1 update copyright years 2020-02-14 20:18:08 +01:00
81dde71eba add AES, fix a bunch of bugs
we're getting an error screen! wee
2019-06-19 14:24:49 +02:00
606a40e6b8 y'know, actually running the DMA units might yield better results. 2019-06-18 22:57:37 +02:00
78c41736c3 fix fucking ass-stupid bug with new-WRAM handling 2019-06-16 14:26:54 +02:00
4d3f346edc get it to do more interesting things 2019-06-15 18:30:12 +02:00
58e3ff61ac add I2C shito 2019-06-15 16:58:02 +02:00
09cfdc6e76 pft 2019-06-10 18:24:38 +02:00
434a3007e2 fasterer BG/OBJ VRAM reads 2019-06-09 16:06:01 +02:00
00a5576492 fasterer IRQ check. clean up code. 2019-06-08 22:16:51 +02:00
75f8cbf953 draft API for OpenGL shito in libui 2019-03-31 21:15:45 +02:00
4de4631c15 move platform specific config to platform specif ffile ayyyyyyyyyyygfghj;,gnxbf 2019-03-15 00:58:29 +01:00
93d51b0cbc start work on non-direct mode. reply to DHCP discover frame. 2019-02-23 13:41:51 +01:00
b0efde8bf7 also, update copyright name 2019-01-22 15:58:29 +01:00
669247e8c8 redesign main emu loop to use timestamps instead of being a trainwreck
* cleaner code
* faster in some cases
* more accurate (on-demand compensation for timers and GPU)
* less prone to desyncs
* overall betterer
2019-01-05 05:28:58 +01:00
90f2c0834e add PoC ARM9 instruction cache logic. not actually in use, but it's there as a reference (and if we ever need it). 2019-01-04 21:47:06 +01:00
3101bd595f add missing shit to savestates. bump the version up. 2018-12-11 21:50:28 +01:00
4aafdee14d more sensible cache timings
(still a big fat hack)
2018-12-11 17:59:52 +01:00
91b2f64596 add back faster prefetch for ARM9 2018-12-11 16:41:18 +01:00
3dd8c7b152 finish the work on the main loop. finally fix all cases of desync I could find. also add #ifdef'd debug code to check for desyncs. 2018-12-11 15:56:34 +01:00
78d384a754 temp commit
almost done killing ARM9/ARM7 desync, f
2018-12-11 03:08:46 +01:00
aba4610d45 fix bugs
still kinda shitty tho. like, we lost enough timer accuracy to have visible effects (aging cart tests that fail, FMVs that play too slow, etc)
2018-12-09 01:46:10 +01:00
b569c03884 make it fasterer 2018-12-09 01:26:51 +01:00
29bca33bc6 take it somewhere.
still need to speed it up a tad.
2018-12-09 01:17:05 +01:00
86dae1a25c make this other branch where we're going to actually make it usable
but it'll be a gross hack
2018-12-08 20:27:00 +01:00
172fb4876a begin work on general timing renovation. way shitty because it behaves as if caches were off, so everything will be slow as shit. 2018-12-04 17:54:10 +01:00
a9e7f8bc5b add proper support for GXFIFO stalls.
bad games that blast the GXFIFO and overflow it:
* Super Mario 64 DS
* Rayman RR2

latter seems to get its music streaming crapoed.
2018-11-23 22:21:41 +01:00
7ba32ea076 make the ARM clock shift configurable. nothing fancy there, just paving the way for DSi support later. 2018-11-07 18:38:54 +01:00
b4165cc0a9 3D: keep the rasterizer from accidentally going out of bounds when given very flat X-major edge slopes.
this, by a fucking shitshow of butterfly effect, ends up fixing #234. technically, the rasterizer was going out of bounds, which, under certain circumstances, caused interpolation to shit itself and generate Z values that were out of range (but still ended up in the zbuffer). sometimes those values ended up negative, which caused these glitches when polygons had to be drawn over those.

about fucking time.
2018-11-04 23:21:58 +01:00
de91eabf71 savestate shito: fix compile errors.
still far from being finished, so avoid using unless you want to spawn blackholes or some pretty bad shit.
2018-10-18 00:27:55 +02:00
0bfd019dc0 start implementing actual shito
(also looks like the test bench in libui_sdl/main.cpp snuck in with the copyright update. shit)
2018-09-15 02:47:34 +02:00