Commit Graph

53 Commits

Author SHA1 Message Date
Flyinghead f13b366e8d Set the value for NaN according to the SH4 specs
The SH4 sets the signaling bit to 0 for qNaN: 7fbfffff instead of the
usual 7fffffff. Same games seem to rely on this.
Fixes Fur Fighters freeze and missing geometry in game.
2018-07-13 18:57:51 +02:00
Flyinghead ea35eeb728 Fix FTRC op in both interpreter and dynarec with respect to Inf and NaN
The -ffast-math gcc option implies the -ffinite-math-only option, which
produces wrong results with Inf and NaN. Use integer math to detect the
sign of float numbers in FTRC to avoid these issues.
Also the upper cut off value for conversion was apparently wrong.
Also fixed the x86 dynarec but not tested.
Fixes wrong car color in Tokyo Xtreme Racer car selection screen.
2018-07-13 12:02:32 +02:00
Flyinghead 648988e622 don't log div32 matching and some GDRom ops 2018-07-10 14:36:28 +02:00
Flyinghead 0df91770d2 Increase dynarec code cache size to 10 MB
Fixes frequent code cache invalidation due to lack of space, which kills
performance (Extreme Sports)
2018-07-06 17:19:37 +02:00
Flyinghead 315205caa9 Add setting to disable div32 matching (Pro Pinball Trilogy)
div32 matching doesn't handle division by zero and edge cases, which
causes crashes with some games.
Setting enabled by default for Pro Pinball Trilogy.
2018-07-06 09:49:39 +02:00
Nicolas HOUDELOT 5c343a219c fix typo 2018-03-05 01:57:00 +01:00
Stefanos Kornilios Mitsis Poiitidis 7c5e49a6d2 dyna: Fix f2i canonical + x86 to saturate 2016-05-14 04:15:16 +03:00
Jan Holthuis 4267d51f90 stdclass: Make path getter function names more verbose 2015-09-02 15:49:00 +02:00
Jan Holthuis b6d0cddcaa stdclass: Add support for separate config/data dirs and system wide dirs
This adds support for separate config and data dirs.

On Linux, these will be compliant XDG Basedir Specification, i.e.
XDG_CONFIG_HOME and XDG_CONFIG_DIRS (or XDG_DATA_HOME and XDG_DATA_DIRS
respectively). On all other platforms, there currently just set to the
homedir path (so no previous behaviour has been changed).

If reicast wants to read and write a data file, it just calls
get_data_path("/samplefile.txt"). If it does not need to write to
that file, it just uses get_data_path("/samplefile.txt", false). That
way, we can also use system-wide dirs (like /usr/share/reicast on
linux), that the user usually doesn't have write access to.

The same applies for config file, where you use get_config_path(args)
respectively.
2015-09-02 15:48:53 +02:00
TwistedUmbrella a4028154f9 Fix to prevent EXC_BAD_ACCESS on iPhone
This is inelegant and should only be temporary but resolves the issue
of CodeCache and ICache “getting lost” during initialization.
2015-08-19 15:33:18 -04:00
TwistedUmbrella bf75c95ae8 Update project for #755 and fix warnings 2015-08-17 07:59:39 -04:00
Jan Holthuis 5ab3d7b59b core/hw/sh4/dyna/shil.cpp: Fix '&&' within '||' warning
Here's the original compiler warning:
../../core/hw/sh4/dyna/shil.cpp:700:24: warning: '&&' within '||'
      [-Wlogical-op-parentheses]
  ...if (op->rd.is_reg() && op->rd._reg==reg_sr_T ||  op->op==shop_ifb)
         ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ ~~
../../core/hw/sh4/dyna/shil.cpp:700:24: note: place parentheses around the '&&'
      expression to silence this warning
  ...if (op->rd.is_reg() && op->rd._reg==reg_sr_T ||  op->op==shop_ifb)
                         ^
         (                                       )
../../core/hw/sh4/dyna/shil.cpp:843:25: warning: '&&' within '||'
      [-Wlogical-op-parentheses]
                        if (op->rs1.is_reg() && op->rs1._reg==reg_sr_T
                            ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
../../core/hw/sh4/dyna/shil.cpp:843:25: note: place parentheses around the '&&'
      expression to silence this warning
                        if (op->rs1.is_reg() && op->rs1._reg==reg_sr_T
                                             ^
                            (                                         )
../../core/hw/sh4/dyna/shil.cpp:844:25: warning: '&&' within '||'
      [-Wlogical-op-parentheses]
                                || op->rs2.is_reg() &&
op->rs2._reg==reg_sr_T
                                ~~ ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
../../core/hw/sh4/dyna/shil.cpp:844:25: note: place parentheses around the '&&'
      expression to silence this warning
                                || op->rs2.is_reg() && op->rs2._reg==reg_sr_T
                                                    ^
                                   (                                         )
../../core/hw/sh4/dyna/shil.cpp:845:25: warning: '&&' within '||'
      [-Wlogical-op-parentheses]
                                || op->rs3.is_reg() && op->rs3._reg==reg_sr_T
                                ~~ ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
../../core/hw/sh4/dyna/shil.cpp:845:25: note: place parentheses around the '&&'
      expression to silence this warning
                                || op->rs3.is_reg() && op->rs3._reg==reg_sr_T
                                                    ^
                                   (                                         )
2015-08-15 18:15:50 +02:00
Jan Holthuis 1d0ef81a43 core/hw/sh5/dyna/decoder.cpp: place parentheses around && expression
This compiler warning has been fixed:
../../core/hw/sh4/dyna/decoder.cpp:1181:66: warning: '&&' within '||'
      [-Wlogical-op-parentheses]
  ...|| blk->BlockType==BET_Cond_1 && blk->BranchBlock<=blk->addr)
     ~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../core/hw/sh4/dyna/decoder.cpp:1181:66: note: place parentheses around the
      '&&' expression to silence this warning
  ...|| blk->BlockType==BET_Cond_1 && blk->BranchBlock<=blk->addr)
                                   ^
        (                                                        )
2015-08-15 18:15:50 +02:00
Stefanos Kornilios Mitsis Poiitidis 67ecd6d9f9 vmem: Automatic fallback to slowpath if alloc fails
This consolidates some of the work done for TARGET_NO_NVMEM and
feat/no-direct-memmap. If nvmem is disabled at compile time or alloc
fails _nvmem_enabled() will return false. Various other fixes
and cleanups all around.
2015-08-12 03:09:44 +02:00
Stefanos Kornilios Mitsis Poiitidis ca83428fa5 naomi: Fix linux builds 2015-08-11 19:13:12 +02:00
Stefanos Kornilios Mitsis Poiitidis 9bc0a8ff0f shrec/bm: BM lookup table size follows RAM_SIZE 2015-08-11 19:13:11 +02:00
Stefanos Kornilios Mitsis Poiitidis c3c2c68f21 Merge pull request #729 from reicast/wip/softrend
Basic and buggy software renderer
2015-08-11 17:43:47 +02:00
Stefanos Kornilios Mitsis Poiitidis 26cfcd79e9 OSX: Fiddling to get the rec-cpp/noexcept path running 2015-08-11 07:57:22 -04:00
Stefanos Kornilios Mitsis Poiitidis e3845465f0 win64/jit: Generate unwind table for the jit code cache
This required moving the SH4_TCB outside the exe, as new tables that belong on the executable are ignored.
This isn't perfect, but there's a large area to scan for available address space so it shouldn't be a problem
2015-08-11 00:26:02 -04:00
Stefanos Kornilios Mitsis Poiitidis 0343feffa6 Merge pull request #714 from reicast/wip/nacl-and-emscripten
NaCL & Emscripten targets

- CPU_GENERIC
- TARGET_NO_THREADS
- TARGET_NO_NIXPROF
- TARGET_NO_EXCEPTIONS
- TARGET_NO_NVMEM
- TARGET_BOUNDED_EXECUTION
- TARGET_NO_COREIO_HTTP
2015-08-03 11:28:29 +02:00
Stefanos Kornilios Mitsis Poiitidis 61394d7a44 shil: Disable external assembly implementations
Using external function pointers is broken after the rec-cpp structural changes,
and relatively low priority so disabled for now.

Fixes builds on arm, non-android (see #720)
2015-08-03 10:41:34 +02:00
Stefanos Kornilios Mitsis Poiitidis ac6bdddae3 Merge pull request #694 from randomstuff/cleanup
Minor Cleanup
2015-08-03 00:09:11 +02:00
Gabriel Corona 8c68f4a06b Fix a 'permissive' warning 2015-07-31 20:37:39 +02:00
Stefanos Kornilios Mitsis Poiitidis d8ccc9d2e7 emscripten: More rec-cpp progress
It almost builds now, except emscripten randomly gives up and crashes. No one likes my code these days...
2015-07-29 06:45:02 +02:00
Stefanos Kornilios Mitsis Poiitidis 17a4af378c nacl: Post-merge cleanups 2015-07-29 04:58:41 +02:00
Stefanos Kornilios Mitsis Poiitidis b9bbb5c0c8 nacl: Work towards rec-cpp 2015-07-29 04:26:50 +02:00
Stefanos Kornilios Mitsis Poiitidis a82f9704d6 shrec: Limit max blocksize to 511 shops 2015-07-29 02:29:16 +02:00
~skmp 5b67e3f090 rec-cpp: SH4_TCB doesn't need to be in .text if not executable 2015-07-29 02:28:39 +02:00
Stefanos Kornilios Mitsis Poiitidis fb55e7f6f8 sh4/canonical: Provide impls for sync_sr and sync_fpscr
This shouldn't be a requirement as directly using shil_cf_ext should work,
but for some reason if I don't msvc optimizes the functions out.
2015-07-25 20:36:06 +02:00
Stefanos Kornilios Mitsis Poiitidis b1f7015a98 rec/cpp: Mostly fully direct specialized dispatchers
- Nest shil implementations to shilop_##name::form::impl for easier template matching
- Add more direct handlers
- Add prints if a direct handler isn't found
- Remove multiple indirect handlers, leave them for fallback
2015-07-25 14:36:04 +02:00
Stefanos Kornilios Mitsis Poiitidis 39e369411c shil/canonical: Fix decls, comment 2015-07-25 14:23:45 +02:00
Stefanos Kornilios Mitsis Poiitidis 9cf9bacd13 build: Refactor HOST_NO_REC everywhere 2015-07-25 13:19:26 +02:00
Stefanos Kornilios Mitsis Poiitidis 67a8ceabdd shil/param: add imm_value() 2015-07-23 02:08:25 +02:00
Stefanos Kornilios Mitsis Poiitidis e50cfe3010 x64 tinyjit: linux support 2015-07-14 03:35:34 +02:00
Stefanos Kornilios Mitsis Poiitidis 3852cf9ac8 Minimal x64 jit: Desync'd, but runs 2015-07-13 23:56:42 +02:00
Stefanos Kornilios Mitsis Poiitidis b385575d6f Get x64 building 2015-07-13 21:13:51 +02:00
Stefanos Kornilios Mitsis Poiitidis 65ca1382d8 Merge remote-tracking branch 'remotes/origin/skmp/ios-wip' into feat/segfault-context-consolidation
Android/windows builds fine again. Android not tested yet, iOS/OSX not compiled yet
2015-05-16 07:12:19 +02:00
Stefanos Kornilios Mitsis Poiitidis 5b609a6be4 linux: Sh4 dynarec works 2015-05-08 18:59:20 +02:00
Stefanos Kornilios Mitsis Poiitidis 5d3c71bee7 Merge master 2015-05-08 17:29:06 +02:00
Stefanos Kornilios Mitsis Poiitidis 3b1c38ad55 sh4/driver: don't log on div32 missmatch 2015-03-22 01:26:43 +01:00
Stefanos Kornilios Mitsis Poiitidis ae8ce5ad23 sh4/rdv_CompilePC: Fix boot time automatic cache flushes
The bios boots from 0xA... addresses, not 0x8... so the flushes were never triggered
2015-02-25 19:30:08 +01:00
Stefanos Kornilios Mitsis Poiitidis f2c07917c7 Partially working dyna for iOS. Very few games working atm.
This works, but is extremelly hacky. Must be started without attached debugger, lldb doesn't want to let go of EXC_BAD_ADDRESS, but reicast really depends on it getting delivered as SIGSEGV/SIGBUS. Also xcode has a really bad day upon seeing the jit code. Oh well.

There's some dynarec bug that causes color corruption on bios logo/boot triagles, TA crash on ikaruga and infinitive loop on crazy taxi. I'd guess some fp-memory-write thingy, abi, or smth. Too bad.

- Force code to compile in arm mode (arm jit -> thumb mem functions is complicated)
- SIGILL, SIGBUS. Works w/o Mach exceptions and EXC_BAD_ADDRESS
- Code buffers move to __TEXT, munmapped && memmapped to actually work
- Primitive input. Button + start, or left (works to get out of bios date screen)
- Fixup emitter for thumb2/interworking (didn't work though, reverted to arm cc)
- Block Manager: Disable mem saving / page fault alloc-on-demand logic
- Move cycle counter to r11, r9 is not clean on iOS. Remove r11 from reg alloc list
- Cache flushes for iOS
- log to log.txt
- load game.chd
2015-01-18 23:52:12 -08:00
Stefanos Kornilios Mitsis Poiitidis 56ebda10a9 ios interpreter works, bios runs w/ 3d visulals
THIS IS A MESS. Sorry @angelXwind :p. We'll have to clean up and merge for r8, but most of the nasty work is there.

What works:
- full init, memalloc, mprotects, etc
- boot
- gles2

What doesn't:
- Exceptions for page faults
  - Breaks texture cache
  - Breaks dynarec because of fastpath
  - segfaults don't work, needs special mach exc_server magic that still eludes me after 5 hours
- Dynarecs. RWX issues, and broken buffer mappings. Also some minnor linking stuff (most of it is taken care of)
- Audio. I just killed it off.
- All of the ui. Was getting in the way of me not knowing how to edit story boards...
- Input

Also, merged branch 'skmp/mac86-hackport' into skmp/ios-wip

Have fun~
2014-12-17 10:19:44 -08:00
Stefanos Kornilios Mitsis Poiitidis 86e2408ace wip to get ios compiling 2014-12-17 03:10:18 -08:00
Stefanos Kornilios Mitsis Poiitidis 2f171e3596 Support HOST_NO_REC for windows 2014-12-11 13:59:31 +01:00
MrPsyMan 7916cd63f3 Removed commit ed8c25ef7c as it causes compatibility problems. 2014-06-05 04:34:25 +03:00
TwistedUmbrella c3b1e1087e Add explicit casting for iOS, Import iOS EGL headers
EGL headers imported from https://github.com/alco/EGL_mac_ios for use
in iOS specialty directory
2014-05-20 23:45:38 -04:00
Stefanos Kornilios Mitsis Poiitidis ad054f1b96 Working on linux x86 dyna 2014-03-25 00:12:30 +02:00
Stefanos Kornilios Mitsis Poiitidis ee6d3eadde begone you silly typos 2014-01-21 01:04:58 +02:00
Stefanos Kornilios Mitsis Poiitidis e512b95445 Force block (header) checks by default.
- Unstable opts disables them (and only lets hard-coded places)
- This fixes shenmue (and possibly many other dynarec crashes)
2014-01-20 23:10:00 +02:00