flyinghead
c344903a23
new x86 dynarec. Enable for android
...
refactor common code between x64 and x86 dynarecs.
x86 rewrite based on the x64 one
some discarded dyna blocks weren't fully unlinked
2021-01-26 13:16:48 +01:00
Flyinghead
36451614d2
rec-x64: don't use vfmadd to avoid intel/amd variations
2021-01-08 21:40:13 +01:00
flyinghead
e5b3c5268b
wince: attempt immediate read/write when address isn't translated
2021-01-07 19:18:53 +01:00
Flyinghead
34d86500fa
compile warnings. debug log. minor changes
2020-12-16 15:12:32 +01:00
flyinghead
700994340b
cmake: add sdl to vstudio build. Fix WinCE crash
2020-07-23 18:50:55 +02:00
scribam
6ee4b6de85
Replace OS_DARWIN by __APPLE__
2020-04-26 14:19:21 +02:00
scribam
e99aac3575
Remove "using namespace std;"
2020-03-30 23:00:43 +02:00
scribam
4bf6802855
Cleanup include headers
2020-03-29 14:26:21 +02:00
scribam
fef96c125a
deps: Update xbyak to version 5.891
2020-03-29 13:47:20 +02:00
Flyinghead
0b6b6339ed
nvmem: generate console ID at startup. rec-x64: Call stack alignment
...
Generate console ID in dc_nvmem.bin if blank. Used by chuchu rocket
login.
Align stack to 16-byte
2020-03-10 14:47:45 +01:00
Flyinghead
12b9b7254a
reduce precision of FIPR and FTRV sh4 ops on x86 platforms
2019-12-17 20:23:58 +01:00
Flyinghead
530cdaa23f
use doubles to emulate FIPR on x86. avoid crash with per-game config
...
Don't store the renderer type in per-game config as this crashes.
Fixes Sonic Adventure falling off track
Other non-functional changes
2019-12-13 12:27:43 +01:00
Flyinghead
bad10bae20
dyna: only protect ram when needed. Use const ref to avoid copies
...
avoid extra op in x64 rec
2019-09-30 15:47:05 +02:00
Flyinghead
9d3ee3b57f
dyna: get rid of SmcCheckLevel options. Fix rec-cpp
...
Block check is now full or off depending on block protection
rec-cpp: Add missing opcode call classes and allow for immediate args
2019-09-29 18:18:46 +02:00
Flyinghead
704f90d78e
x64: set correct sign on result if float conv returns indefinite
2019-09-07 12:08:08 +02:00
scribam
269297be18
Use _WIN32 to handle Windows specific code
2019-08-28 20:37:53 +02:00
Flyinghead
be5aca66e1
cfg,dynarecs,reios: use new logging
2019-07-01 18:23:10 +02:00
Flyinghead
871260cfcf
naomi: better error handling when loading a gdrom
...
x64 and arm64 dynarecs: Support 64-bit immediate readm (ninjaslt)
2019-06-26 19:06:30 +02:00
Flyinghead
c27975fb37
ssa: don't propagate const over interpreter fallback, sync_sr and sync_fpscr
...
rec-x64: support immediate args for xtract
Set write rtt to vram for Super Speed Racing (a.k.a Flag to Flag)
2019-06-24 18:56:09 +02:00
Flyinghead
318852e261
dynarec: use mprotect to protect code areas
...
All ram pages containing code are write protected. In that case, no need
for block checks. Memory reads in the same block(s) can also be executed
at compile time and the results propagated as constants.
When a write is detected in a protected area, the corresponding blocks
are discarded and recompiled using traditional (slow) block checks.
Backported the blkmap code finding change from upstream.
Use smart pointers for block management to avoid reference issues.
Added WriteAfterWrite ssa pass
Fixed crash in ssa ConstProp pass when op list is modified
2019-06-19 11:01:33 +02:00
Flyinghead
3d8b0df789
rec-x64: setpeq native impl. Fix imm mem write for byte and short
...
Optimize fneg, fabs and sub
Fix cvt_f2i
Fix fsca with imm arg
2019-06-18 13:16:42 +02:00
Flyinghead
2c3b516341
x64: use eax instead of ecx for mem reads return value
2019-06-10 14:48:54 +02:00
Flyinghead
3dd16e80d2
arm64 and x64 recs use ssa regalloc
2019-06-10 13:57:10 +02:00
Flyinghead
b8a00b9c7d
rec-arm64/x64: only do regalloc on rewrite when needed
2019-05-28 20:03:08 +02:00
Flyinghead
714de0303e
rec-x64: don't save fp regs when calling mem access handlers
2019-05-28 19:43:56 +02:00
Flyinghead
5b2cef3fdd
dynarec: add negc and xtrct op codes
...
native implementation of negc and xtrct for x64 and arm64
rec-arm64: pass exception pc in w27 instead of sh4 context
inline mmu_intruction_translation() and clean up
2019-05-26 13:30:05 +02:00
Flyinghead
e3d95f2258
wince: unify _vmem and vmem32. Use 4GB virtual space on 64-bit arch
...
On 64-bit architectures, _vmem first tries to allocate 4GB then falls
back to 512 MB.
The same virtual space is now used by _vmem and vmem32 (mmu)
2019-05-23 11:40:33 +02:00
Flyinghead
c2c0215e1b
Merge remote-tracking branch 'origin/master' into fh/wince-dynarec
2019-05-22 14:13:00 +02:00
flyinghead
3ef363733d
wince: fix setjmp/longjmp on windows
2019-05-16 16:57:35 +02:00
David Guillen Fandos
3b760f9869
Add FEAT_NO_RWX_PAGES and implement it for x64 CPU (Win and Linux)
...
Tested: Both with and without the feature, works only for x64 CPUs for
now, but supported in both windows and linux (see vmem implementation
for it, using mem-mapped files).
2019-05-12 22:02:57 +02:00
flyinghead
7f2fcfde6f
wince: don't use setjmp/longjmp on windows
2019-05-10 22:31:59 +02:00
flyinghead
e6794743ad
wince: rec-x64 fix for win32
...
fix GDI on windows
2019-05-10 21:21:30 +02:00
Flyinghead
810b8a59da
wince: 32-bit virtual mem space
...
use fast mem read/write for x64 and arm64 dynarecs
2019-04-29 18:23:00 +02:00
Flyinghead
553f6054ce
NO_MMU build fixes
2019-04-19 11:56:11 +02:00
Flyinghead
9920880987
dynarec: reserve code cache space for frequently changing blocks
...
detect frequent SMC check failures and use a specific code cache area
for these blocks.
flush the temp area when full but keep the main code cache area
2019-04-19 11:45:05 +02:00
Flyinghead
0f34d776f6
wince: delete sr.FD hack, restore FD block check in x64 rec
...
use longjmp for interpreter fallback exceptions
2019-04-18 14:15:01 +02:00
Flyinghead
5d6e96463c
x64 and win32 build fixes
2019-04-15 18:31:15 +02:00
Flyinghead
dece3fc13e
wince: use setjmp/longjmp instead of try/catch for dynarecs
...
WinCE fast mmu implementation
WIP arm64 dynarec
2019-04-15 18:02:34 +02:00
David Miller
3d1b82854e
Merge branch 'master' into fh/win32-winresize
2019-04-12 13:03:30 -04:00
flyinghead
7f0489ff28
visual studio compatibility
...
no modem support
no zip or 7z support so no naomi for now
hacked a .asm file as vs doesn't support inline assembly -> code dup
2019-03-30 19:26:05 +01:00
Flyinghead
505c5b6c4d
dynarec: FullCheck was being ignored and FastCheck used instead
...
Fix crash on arm32
Fix infinite loop on x64
2019-03-30 10:06:19 +01:00
Stefanos Kornilios Mitsis Poiitidis
af6993a819
dynarec: Refactor smc-option a bit
2019-03-30 07:16:44 +01:00
Flyinghead
6438a402df
dynarec: add option to control smc code checks: none, fast, full
2019-03-29 19:23:37 +01:00
Flyinghead
ba00da2420
dynarec: don't throw exceptions if NO_MMU
2019-03-25 13:53:49 +01:00
Flyinghead
ef43883fb5
dynarec: WinCE support WIP
...
Only for the x64 dynarec atm
Bugs remaining
2019-03-25 11:53:13 +01:00
Flyinghead
91fb92264d
x64 dynarec: do not use RSQRTSS as it lacks precision
...
RSQRTSS error is:
|Relative Error| <= 1.5 ∗ 2^-12
whereas SH4's FSRRA abs error is <= 2^-21
Fixes loop issues is Sonic Adventure 1 and 2
Issue #1489
2019-02-04 10:48:22 +01:00
Flyinghead
91cfd4b2f7
Reserve and allocate maximum RAM/VRAM/ARAM in all cases
...
Reserve enough virtual memory space for DC and Naomi
Allocate dynarec entry point tables for max possible ram
Free mem and release vmem on exit
2019-01-24 09:48:58 +01:00
Flyinghead
eb37dacadb
x64: disable the use of AVX instructions because of rounding issues
2019-01-22 16:17:25 +01:00
Flyinghead
cd4e4cbdc9
x64 dynarec: check if extension is supported by cpu. seh on win32
...
Check if FMA/AVX/SSE3 is supported before using it
fully naked main loop in win32 with proper seh directives
win32: more xmm regs to allocate and no need to save them when calling
out
2019-01-18 17:02:50 +01:00
Flyinghead
f852480b88
OSX: build fix
2019-01-16 14:44:40 +01:00