scribam
d6545b253b
Misc cleanup
2021-06-06 11:15:06 +02:00
Flyinghead
3a1ae0db00
mmu: fix macos crash. only flush user mem in address lut
...
force rtt2vram for JSR (custom graffiti)
clean up vmem32 remains
missing host_context.h change
gh action: build sdl from source on macos
2021-05-18 12:53:14 +02:00
Flyinghead
373dffc65a
wince: ditch vmem32. use address LUT in dynarec. finer grained flush
2021-05-17 11:59:34 +02:00
Flyinghead
da40297810
fix msvc build
2021-05-16 20:18:49 +02:00
Flyinghead
025b447a9c
arm32: replace old arm emitter with vixl
2021-05-15 11:41:00 +02:00
Flyinghead
92abf760de
unneeded address/value masking. clean up
2021-05-14 21:47:47 +02:00
Flyinghead
1464c02903
mmu: add address cache to mem slow path. better fastmmu hashtable.
...
mmu: add address cache to Read/WriteMemNoEx
fastmmu: ignore 1k pages. optimize hashtable
get rid of NO_MMU
2021-05-14 19:03:57 +02:00
Flyinghead
b3de6a166d
area 7 access to sh4 mm registers only through mmu translation
...
on-chip ram area isn't translated in both user and supervisor modes
vmem: return 0 for non-mapped region reads
Fixes dolphin blue crash/freeze. Issue #62
Fixes Resident Evil - Code Veronica X (Chris) floor 1F crash
2021-04-01 13:30:37 +02:00
Flyinghead
4d815570d0
sh4: define SCI module registers
2021-03-31 19:01:31 +02:00
flyinghead
a8929170f3
up sh4 context pad to 64k to keep windows happy
2021-03-29 21:12:43 +02:00
Flyinghead
904bed862e
arm32: store queue dynarec optim. ditch Unstable Optimizations
...
shrink Sh4Context.pad size except on arm32
reset sh4 before mem to unlock ram
2021-03-29 14:26:55 +02:00
Flyinghead
569c23ca95
pvr: use pvr_read32p/pvr_write32p to access 32b vram
2021-03-28 20:08:02 +02:00
Flyinghead
6b11674949
use aligned struct for sqbuffers and sh4 context
...
serialize YUV_index
remove bogus arm32 TAWriteSQ implementation
2021-03-23 16:07:53 +01:00
Flyinghead
0f6dda9cb1
gdb server agent
...
allow stepping and soft breakpoints
clean up interpreter opcodes
2021-03-23 14:49:19 +01:00
Flyinghead
0b6420d90a
arm32: sh4 dynarec infiniloop on reset. aica rec: fix icache flush
...
Fixes hang when exiting awave service menu
Issue #208
2021-03-20 15:06:16 +01:00
flyinghead
bceed97817
Merge pull request #205 from scribam/clang-tidy
...
clang-tidy: fix more checks
2021-03-15 20:17:56 +01:00
scribam
67435c71e8
clang-tidy: run readability-non-const-parameter
2021-03-15 19:52:54 +01:00
scribam
092ee6d8a5
clang-tidy: run readability-container-size-empty
2021-03-15 19:52:54 +01:00
scribam
913fbef952
clang-tidy: run readability-inconsistent-declaration-parameter-name and improve parameter names
2021-03-15 19:52:54 +01:00
scribam
26ebcdf9f5
clang-tidy: run modernize-use-equals-default
2021-03-14 21:52:42 +01:00
Flyinghead
5e619a70d4
arm64: fix crash with HLE bios. Set nav bar to tranparent (android 10)
...
arm64 dynarec main loop and handlers were generated twice
Fix nav bar background leftover on android 10
2021-03-14 17:54:57 +01:00
scribam
fe17d79e8d
clang-tidy: run performance-unnecessary-value-param
2021-03-13 17:28:33 +01:00
scribam
ae47ff9875
clang-tidy: run modernize-deprecated-headers
2021-03-13 17:28:32 +01:00
scribam
28d7227ba5
clang-tidy: run modernize-use-bool-literals
2021-03-13 17:28:32 +01:00
scribam
1cc3490f51
Remove HOST_OS references
2021-03-13 11:38:34 +01:00
Flyinghead
5227259048
No more fast-math on x86/x64. Yet another FTRC fix
...
Don't compile with -ffast-math
Fix FTRC to return 0x80000000 for NaN
-> fixes Arcade Racing Legend sound problems and disappearing cars
Remove unsupported GCW0 platform
Remove unused android makefiles
2021-03-11 12:27:00 +01:00
Flyinghead
31e0b3ab51
x64/x86 dynarecs: fast-math fcmp/eq implementation
...
Fixes Shin Nihon Pro Wrestling - Toukon Retsuden 4
Fixes Project Justice (Issue #38 )
2021-03-07 16:59:17 +01:00
Flyinghead
641da3a771
build fix
2021-03-02 20:36:19 +01:00
Flyinghead
424736961b
arm64: get rid of inline assembler
2021-03-02 20:35:59 +01:00
Flyinghead
0c8815549c
Merge branch 'fh/x64-arm-jit'
...
# Conflicts:
# core/hw/aica/aica.cpp
# core/nullDC.cpp
2021-03-02 19:42:15 +01:00
Flyinghead
c3a95594f9
New option system
...
Fix per-game settings (Issue #115 )
Automatic load/save state (Issue #173 )
Reload Naomi/AW BIOS after per-game settings are loaded to allow
per-game BIOS region. (Issue #96 )
Restrict Soul Reaver widescreen cheat to the EU version (Issue #188 )
Disable UI elements for overridden settings
Clean up/simplify legacy Naomi ROM loading
2021-03-01 10:13:40 +01:00
Flyinghead
2d8bc6d6ee
dynarec: skip single branch targets
2021-02-14 18:49:40 +01:00
Flyinghead
89fe36b881
arm7 rec: lr wasn't updated in conditional bl
...
missing changes for previous arm64rec commit
more aica arm tests
wince vmem handler now uses direct ram access
2021-01-31 12:02:20 +01:00
Flyinghead
80782475da
x64 rec: get rid of setjmp. standardize ngen_Rewrite/HandleException
...
move rewrite code from exception handlers to x86/x64 dynarecs
use same host context info on linux/win
x64: stack alignment issue in mem handlers
2021-01-30 16:14:44 +01:00
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
a23c895668
sh4: restore rounding/denormal mode after pausing the game
...
fixes Sword of the Berserk glitch when pausing/restarting
2021-01-19 18:28:21 +01:00
flyinghead
16dec49e08
windows: use utf8 internally. Support latin2, cyrillic, etc. pathnames
...
upgrade libzip to 1.7
imgui: use all glyphs from font including latin2, cyrillic, greek, etc.
2021-01-19 11:11:01 +01:00
flyinghead
287836803d
interp: don't touch the sh4 cache in normal mode
2021-01-15 10:21:05 +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
632731bede
vmem: map area 4 access to vram
...
pass DDT0101 diag test
fix vmem handler bug with >= 8 handlers
ch2-DMA: use SB_LMMODE1 for upper mirror
dmac: update SAR and DAR according to CHCR.SM and CHCR.DM
use function templates for vram 32b handlers
clean up
2020-12-20 17:25:28 +01:00
Flyinghead
0d81c9fb0b
sh4: clean dmac module, correct address/len mask, add missing mirror
...
fix infinite loop
2020-12-18 13:58:36 +01:00
Flyinghead
a39199d379
clean up
2020-12-07 22:16:51 +01:00
Flyinghead
6154cc08db
serial: fix maxspeed hang at boot reading from console
2020-12-02 14:44:16 +01:00
Flyinghead
8f77a5482a
config/data folders improvements
...
linux: look for legacy ~/.reicast and ~/.reicast/data
else look for ~/.config/flycast and ~/.local/share/flycast
and ~/.config/reicast and ~/.local/share/reicast
(defaults to flycast)
look for bios files in home folder and data folders (android, windows
,macos), then in game folder.
on linux, search in /usr/share/flycast and /usr/local/share/flycast and
legacy locations
2020-11-26 16:45:57 +01:00
Flyinghead
276b59b24e
fix compile warnings. non-functional changes
2020-11-25 10:17:08 +01:00
Flyinghead
cffb272abd
sh4: non-functional changes
2020-11-24 21:29:04 +01:00
Flyinghead
eb2c762214
rec: avoid div32 crash when dividing by 0
...
Fixes Sakura Taisen 2 floating point exception crash
2020-11-21 20:46:40 +01:00
Flyinghead
525c2dc88c
sh4: promote opcode 0 as regular NOP
2020-11-21 20:06:59 +01:00
Flyinghead
fee28194fb
savestate: save sq_remap, save aw cart state, fix lr aw format
...
save AW cart state
save sq_remap used for mini-mmu with store queues
allow loading lr aw savestate. upgrade to v11
aica: saturate EG register
savestate: save current TA data
texcache: fix race condition when deleting a texture
handle 1x1 YUV tex as 565
2020-07-06 16:28:53 +02:00
Flyinghead
74aae115ee
sh4: implement C and WT MMU bits in cache. Use mem handlers everywhere
...
o/icache use C and WT bits from mmu to override cache and copy back
settings (fixes Windows CE)
move mem handlers setup out of mmu into sh4_mem. Call in dc_resume and
detect transitions interp -> dynarec to flush caches.
fix ssa tlb miss exception wih slow mmu
2020-06-24 15:23:47 +02:00
Flyinghead
5cfed1e482
div32: get rid of edge cases. simplify
2020-06-15 16:56:09 +02:00
Flyinghead
22dcb1ec99
sh4 ocache implementation. IC and OC address/data read/write in P4
...
ignore SR.RB in user mode instead of forcing it 0
add STRICT_MODE to enable ocache in interpreter
don't flush mmu table when enabling it
fix fixNan64()
2020-06-12 17:35:14 +02:00
Flyinghead
333df13fce
sh4 icache implementation. move aica out of sh4/interp.
...
revert to original div1 impl
serialize rtc clock value
cmake fixes: asan and logging options, -no-pie on x64/linux
2020-06-09 12:02:01 +02:00
Flyinghead
8740f22c0a
fix all known div32 issues
...
support libretro naomi and aw savestates
2020-06-06 18:53:47 +02:00
scribam
6ee4b6de85
Replace OS_DARWIN by __APPLE__
2020-04-26 14:19:21 +02:00
Flyinghead
2c54dfd132
arm64: check CpuRunning at end of each timeslice. clean up
...
fixes hang when exiting service menu in kofnw
2020-04-24 19:56:38 +02:00
scribam
a155282fd0
Cleanup compiler warnings (mostly sign-compare)
2020-03-30 23:00:43 +02:00
scribam
e99aac3575
Remove "using namespace std;"
2020-03-30 23:00:43 +02:00
scribam
c1b37b56bc
Remove "sh4_if.h" and "stdclass.h" from "types.h"
2020-03-30 23:00:43 +02:00
scribam
9a420b0093
Remove macros EMUERROR
2020-03-30 22:18:44 +02:00
scribam
4bf6802855
Cleanup include headers
2020-03-29 14:26:21 +02:00
scribam
427b428718
deps: Update xxHash to version 0.7.3
2020-03-29 13:47:20 +02:00
scribam
53bde38035
Replace DECL_ALIGN macros by alignas
2020-02-27 22:17:33 +01:00
Flyinghead
333b21fac4
Fix .elf support. Init aica irq mask/level during HLE boot
...
BSC PCTRA is 32-bit wide
2020-02-05 18:02:44 +01:00
Flyinghead
b79c074444
axe wchar
2020-01-31 23:51:12 +01:00
scribam
4161ca9b07
msvc build fixes
2020-01-28 19:08:22 +01:00
Flyinghead
0d9214df40
replace Array with std::array
2020-01-25 11:00:34 +01:00
Flyinghead
31651c2ac6
more build fixes
2020-01-20 13:49:29 +01:00
Flyinghead
3e6bef3cc0
option to pipe the dc serial port to a pty on linux
...
allow the use of dcload-serial
2020-01-20 13:22:36 +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
56dfeb6722
mmu: missing template instances in the slow mmu
2019-11-03 21:27:06 +01:00
Flyinghead
0e12da4395
DMAC: Add LMMODE1 for ch2-dma, add basic DMAC based dma support
...
backport from upstream
clean up
2019-11-03 21:22:46 +01:00
Flyinghead
a7926a2357
serial: backport from upstream. Clean-up
2019-11-03 18:12:16 +01:00
Flyinghead
8eac844825
OSX build fix
2019-09-30 20:14:46 +03: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
0595bae85b
dyna: use xxhash instead of sha1 to hash code blocks
2019-09-29 23:14:38 +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
scribam
4dd6ccea8d
msvc/sh4: Compilation fix for cvt_f2i_t
2019-09-15 13:37:11 +02:00
Flyinghead
1174bce64a
dynarec: set correct sign on result if float conv returns indefinite
...
canonical implementation, x86/x64 only
2019-09-12 15:06:21 +02:00
Flyinghead
8b949e1dca
Get rid of time_sync timer. Clean-up
2019-09-11 15:09:23 +02:00
Flyinghead
a19c73de7b
Fix some sh4 regs hard reset
2019-09-11 15:00:08 +02:00
scribam
49b7e0682b
Cleanup
2019-09-07 20:36:13 +02:00
Flyinghead
b4d33a6c70
Merge remote-tracking branch 'origin/master' into fh/hle-bios
2019-09-03 19:14:39 +02:00
Flyinghead
ee1ee56824
proper hard reset of sh4 mm registers
...
more clean up
2019-09-01 23:10:04 +02:00
Flyinghead
aadc9c3bfc
Detect game region/vga support and set options accordingly
...
Better IP.BIN parsing (wince, vga)
Use wince flag and boot filename for wince detection
Switch to TV composite if vga unsupported
Switch to supported BIOS region if current is unsupported or default
2019-09-01 16:35:12 +02:00
Flyinghead
61f4cd4ecd
Merge remote-tracking branch 'origin/master' into fh/hle-bios
2019-08-31 22:10:09 +02:00
Flyinghead
5ca6cacf25
reios: fix wince exception due to unaligned pio xfer
2019-08-31 20:53:42 +02:00
Flyinghead
936cd6781b
clean up
2019-08-31 17:36:34 +02:00
scribam
d826d8123a
msvc: Fix DYNACALL/__fastcall usage
2019-08-31 14:46:30 +02:00
Flyinghead
2015d9a696
rename and clean up
2019-08-30 23:35:10 +02:00
Flyinghead
79231d8961
missing change
2019-08-30 14:39:33 +02:00
Flyinghead
bae43c236e
dynarec: use paddr to check for bios blocks + more
2019-08-30 14:11:15 +02:00
Flyinghead
e173b83574
New option to force WinCE mode
2019-08-28 20:47:47 +02:00
scribam
269297be18
Use _WIN32 to handle Windows specific code
2019-08-28 20:37:53 +02:00
scribam
51d181a46c
Use _MSC_VER to handle specific Visual Studio code
2019-08-28 20:37:53 +02:00
scribam
61382316c9
Use __ANDROID__ to handle specific Android code
2019-08-28 20:37:53 +02:00
flyinghead
02b450ff19
Fix vram and code block protection in 32-bit mode
2019-08-28 14:08:13 +02:00
scribam
148033625c
wince: Add missing preprocessor TRACE_WINCE_SYSCALLS
...
unresolved_ascii_string and unresolved_unicode_string only exist if
TRACE_WINCE_SYSCALLS is defined
2019-08-22 20:22:56 +02:00
Flyinghead
3e1956b949
reios: hle bios option now forces hle use
...
fallback to hle bios happens if no bios file found regardless of option
2019-08-13 17:12:29 +02:00
Flyinghead
8bd2450608
comments/logs clean up
2019-08-08 08:20:15 +02:00
Flyinghead
6059831ec7
reios fixes
2019-07-30 19:04:51 +02:00
Flyinghead
1fffbad9fc
Fix build warnings. config.h for flac
2019-07-28 18:49:59 +02:00
Flyinghead
9791ebebce
wince: fix wince page lookup
2019-07-28 18:28:22 +02:00
Flyinghead
1333d6f776
Remove TARGET_BOUNDED_EXECUTION. Build warnings and clean up
2019-07-28 17:37:04 +02:00
Flyinghead
9932d9bf43
OSX: fix bios files path (now in /data/)
2019-07-24 18:24:58 +02:00
Flyinghead
326bc580ec
Merge branch 'fh/unified' into fh/wince-dynarec
2019-07-13 12:50:19 +02:00
Flyinghead
bbc11a30aa
Naomi rename vars and clean up. Logging changes.
2019-07-13 12:44:10 +02:00
Flyinghead
4f8e18215b
Fixed savestates: restore compatibility with lr and master
...
Add new maple devices from lr
Clean up shil.cpp
2019-07-12 17:20:43 +02:00
Flyinghead
58cb50f587
fix reset hang on naomi
2019-07-10 17:25:11 +02:00
Flyinghead
f3a91de1af
Unify dreamcast, naomi and atomiswave builds WIP
2019-07-09 23:52:19 +02:00
Flyinghead
10e6b296c5
fix cue issue. better logging
2019-07-08 00:03:44 +02:00
flyinghead
b540b437ee
win32: unprotect ram regions individually in blockmanager
...
fixes abort when starting game in windows
2019-07-04 09:36:22 +02:00
Flyinghead
35cd1fcf14
sh4: use new logging
2019-07-01 15:22:04 +02:00
Flyinghead
feb1b79353
sh4/dyna: use new logging
2019-07-01 12:17:51 +02:00
Flyinghead
c60e2d29e8
modem: add termination function to stop pico thread
...
use new logging
log: set max verbosity to warning for release builds
2019-07-01 10:28:31 +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
49b49c5207
don't write-protect BIOS and IP.BIN blocks
...
Fixes Grandia II crash at start on arm.
Fix bug in bm_GetBlock()
2019-06-21 16:18:34 +02:00
Flyinghead
70ea7c4d76
ssa: use canonical implementations to compute const ops
2019-06-20 19:27:21 +02:00
Flyinghead
6ed098a929
wince: enable code block protection
2019-06-19 22:55:47 +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
8d8e694e23
swap setpeq args in ssa if first is imm
2019-06-18 13:25:43 +02:00
Flyinghead
7120512205
wince: use exceptions in dyna/decoder.cpp and catch them in driver.cpp
2019-06-13 18:36:08 +02:00
Flyinghead
e0949fb9aa
Fix div matching: support 64-bit div and correct handling of negative
...
Some games do 64-bit / 32-bit division (Pro Pinball Trilogy)
DIV0s/1 use and output 1's complement numbers
The final reminder fixup wasn't correct for negative dividend
2019-06-13 18:27:21 +02:00
Flyinghead
c49694599c
rec-arm: use ssa regalloc
...
add `subc a,a` expression to simplify
2019-06-12 17:31:37 +02:00
Flyinghead
e537d92bcc
ssa: don't simplify FPU ops because of Inf of NaN
2019-06-12 08:52:42 +02:00
Flyinghead
ff745ee4fe
fix xtrct canonical implementation
2019-06-10 19:17:24 +02:00
Flyinghead
3dd16e80d2
arm64 and x64 recs use ssa regalloc
2019-06-10 13:57:10 +02:00
Flyinghead
623d70d710
ssa register allocator and more ssa stuff
2019-06-09 19:41:42 +02:00
Flyinghead
bd30752b86
Use auto& to avoid copy when iterating. Inline mmu_Read/WriteMemNoEx
2019-06-08 13:04:35 +02:00
Flyinghead
0890150dda
dynarec: ssa missing changes
2019-06-04 21:27:45 +02:00
Flyinghead
692556ca5d
dynarec: ssa initial commit
2019-06-04 21:20:34 +02:00
Flyinghead
4540acc22e
mmu: optimize mmu_full_SQ()
2019-05-28 19:41:21 +02:00
Flyinghead
8cb86de026
Make SMCCheck=Fast work on arm64
...
The issue is that flushing the dynarec cache makes rewriting fail for
the currently executing block. So this avoids flushing the cache too
often but the problem remains.
2019-05-28 19:40:30 +02:00
Flyinghead
51cf6cf271
regalloc: handle mem ops differently in wince mode
...
Flush all current writeback spans before the op
Flush instead of killing spans in case the mem access throws an
exception
Some optimizations
2019-05-28 19:37:24 +02:00
Flyinghead
c6e92028f2
regalloc: cleanup. no functional change
2019-05-27 22:44:51 +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
2c91ca96fc
rec-arm64: fix transitions to/from mmu
...
exit mainloop() before regenerating it
make sure dynarec cache is cleared between runs
when deserializing, clear dynarec cache after setting mmu state
2019-05-25 18:03:18 +02:00
Flyinghead
e7e387b443
wince: enable/disable vmem32 based on mmu state
2019-05-24 18:19:33 +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
5b7d07315b
wince: clean up unused stuff
2019-05-22 15:15:53 +02:00
Flyinghead
c2c0215e1b
Merge remote-tracking branch 'origin/master' into fh/wince-dynarec
2019-05-22 14:13:00 +02:00
Flyinghead
fb76efb08d
Standard functions for virtual mem alloc/protect/map/...
2019-05-22 11:41:12 +02:00
flyinghead
66cbc0acf6
wince: dynarec boost 1.2 -> 1.5
2019-05-15 15:26:08 +02:00
Flyinghead
2434d0183e
wince: better sh4 instr cycle counting. Don't hash blocks if mmu on
...
Use actual instr latency cycles, including fp instr
Decrease the WinCE boost ratio to 1.2
Don't hash blocks when mmu on
2019-05-14 12:38:56 +02:00
David Guillen Fandos
65e2218792
Fix ARM64 rewrites with NO_RWX_PAGES
...
Tested on nvidia jetson and Android, so far works great.
2019-05-13 00:23:18 +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
David Guillen Fandos
1a2b1c8672
Remove traces of memory manager from Jit driver.
...
Still stuff to be removed in the Naomi file handler and the ARM
AREC, which need to get ported to the new vmem interface.
2019-05-12 19:47:11 +02:00
David Guillen Fandos
b74db6ef53
Moving vmem to separate files with a proper interface.
...
Works so far for Linux and Android, need to do some testing on Windows.
2019-05-11 22:09:52 +02:00
David Guillen Fandos
be1ecbaa8b
Fix TARGET_NO_NVMEM and deprecate TARGET_NO_EXCEPTIONS
...
Linked them both toghether since you can't really define one and
not the other (plus Linux honors one windows the other in some
cases).
More refactoring on this area to follow.
2019-05-10 18:57:28 +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
6b78e1f879
fix dynarec regression
2019-04-28 20:41:39 +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
76348b13ce
wince: use cpu ratio of 2 in dynarec
2019-04-19 09:58:25 +02:00
Flyinghead
d82e5e2017
don't use mmu for dma
2019-04-18 22:48:37 +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
d68da6bdd4
wince: let fp disable exception run before compiling a block
2019-04-18 13:55:10 +02:00
Flyinghead
a25918839b
save fpu regs when sr.FD is set, and restore them when unset
2019-04-15 19:02:10 +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
cc9d5ec55b
CMake/Master working, tested on windows with Clang && MSC (x86,x64)
2019-04-12 16:59:39 -04:00
David Miller
3d1b82854e
Merge branch 'master' into fh/win32-winresize
2019-04-12 13:03:30 -04:00
Flyinghead
1b04ef4cb1
Get rid of RTC in settings
2019-04-08 22:09:22 +02: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
c809c6c56f
Merge branch 'fh/mymaster' into fh/master-merge
2019-03-25 16:47:47 +01:00
Flyinghead
ba00da2420
dynarec: don't throw exceptions if NO_MMU
2019-03-25 13:53:49 +01:00
Flyinghead
cb6acab40f
missing file from previous commit
2019-03-25 11:56:41 +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
8564f497d4
sh4 interp: add IsFloatingPoint() to op desc. Add delay slot 0 hack
...
Add UsesFPU flag to floating point ops. Use flag instead of specific
test cases in op handlers.
Adjust thrown exception in delay slot (slot illegal exception and slot
fpu disable)
Re-add delay slot 0 hack (Looney Tunes Space Race)
2019-03-20 13:45:35 +01:00
Flyinghead
d0f65b19d3
mmu: templatize mmu_full_lookup
2019-03-20 10:58:59 +01:00
Flyinghead
a21eedc88a
implement fpu disable exception and other interp and mmu fixes
...
implement sh4 fpu disable exception
implement assistance/PTEA MMU registers
fix some sh4 ops with side effect in interpreter
account for delay slot op cycles
avoid any side effect when using wince tracer
extract SH4_TIMESLICE to single header file (still not used by arm and
x86 recs)
2019-03-19 21:35:55 +01:00
Flyinghead
9e2938dff4
mmu: state change wasn't detected. WinCE syscalls tracing
2019-03-17 23:46:39 +01:00
Flyinghead
73d50486d5
mmu: dynamic switching with read/write mem function pointers
2019-03-17 22:59:18 +01:00
Flyinghead
e5b18cd8a0
wince: implement pref SQ to YUV converter and 32bit vram
...
implement incremental YUV conversion with pref SQ
implement access to 32bit VRAM with pref SQ
init YUV converter when TA_YUV_TEX_CTRL is set
set FIFO available space to 256 through SB_TFREM reg
fake FIFO status through SB_FFST reg
2019-03-14 21:35:33 +01:00
Flyinghead
89c2fd54a9
fix function name typo
2019-03-13 20:04:14 +01:00
Flyinghead
f4568ace3c
backport disassembler missing piece from nulldc
2019-03-13 17:48:21 +01:00
Flyinghead
e6d67baf02
sh4 sched: avoid error when jitter is high and delta becomes negative
2019-03-13 17:21:52 +01:00
Flyinghead
6305df9dab
ignore fldi0/fldi1 in double precision instead of dying
2019-03-13 17:19:41 +01:00
Flyinghead
6d6492ddc1
mmu: flush tables when MMUCR.TI is written
2019-03-13 17:17:08 +01:00
Flyinghead
0d0fd212ff
Implement Ch2 DMA to 32-bit VRAM
...
Fixes Giana's Return
2019-03-08 13:23:51 +01:00
Flyinghead
492e771272
Content browser (WIP)
...
Get rid of the renderer thread. It is now the main/UI thread on all
platforms. The emulator runs in a separate thread.
Content browser displayed at startup.
2019-02-25 17:52:53 +01:00
Flyinghead
35bb81b195
fix some printf format strings
2019-02-16 14:16:50 +01:00
flyinghead
3cdd39170d
win32: call os_DoEvents on the emu/main thread and other fixes
2019-02-07 19:20:10 +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
0cce6cc5a5
Clean up and comments. No functional change
2019-01-24 09:40:14 +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
ed3f866835
win32 build fix
2019-01-16 17:42:36 +01:00
Flyinghead
f852480b88
OSX: build fix
2019-01-16 14:44:40 +01:00
Flyinghead
cb8e81d473
arm64: direct memory access and jit rewrite
...
generates direct vmem read & write accesses
trap sigsegv and rewrite using slow path
add w29 to allocatable registers
get rid of literals and use pc-rel branching
minor optimizations and cleanup
2019-01-16 13:04:16 +01:00
Flyinghead
c2a048e8d8
arm64: use explode_spans to allocate regs for V2 and F64 params
2019-01-15 08:47:07 +01:00
Flyinghead
e241613b8f
x64 dynarec: implemented swaplb, fipr, ftrv, frswap and other fixes
...
native implementations for swaplb, fipr, ftrv and frswap
use explode_spans to map 2V and F64 to registers
save xmm registers when calling subroutine
2019-01-14 21:15:36 +01:00
Flyinghead
b465f744ba
dynarec: flush fpu regs before FTRV
...
fixes issue with tokyo xtreme racer (x64)
might need to flush before other ops
2019-01-13 23:21:58 +01:00
Flyinghead
fc05727538
dynarecs clean-up
...
move GetRegPtr and ngen_FailedToFindBlock to sh4/dyna
2019-01-11 23:52:20 +01:00
Flyinghead
0f026552c9
fix comments
2019-01-11 15:54:03 +01:00
Flyinghead
a9a2aad8f6
arm64: use register spans allocation. Implement some opcodes natively
2019-01-09 16:35:23 +01:00