Commit graph

1883 commits

Author SHA1 Message Date
Richard Goedeken
40aed8af09
Merge pull request #606 from Gillou68310/new_dynarec_fixes
new_dynarec fixes
2019-01-26 09:44:34 -08:00
Richard Goedeken
532e2ee8fb issue #613: we dont need to call StateChanged() from main_state_set_slot(), because it will be called inside of savestates_select_slot() if necessary 2019-01-26 09:23:58 -08:00
Richard Goedeken
383964744a we dont really need to check for valid parameter type in ConfigGetParameter because the ConfigGetParamX functions can convert from any type 2019-01-26 08:21:41 -08:00
Gillou68310
26cc980cf9 new_dynarec: Fix regression caused by 9525ed42ce 2019-01-26 15:08:20 +01:00
Gillou68310
b70b95790f new_dynarec: Refactor block invalidation 2019-01-25 09:46:54 +01:00
Corey Hickey
5e0487fef7 Allow valid interpretations of strings as non-strings
The various ConfigGetParamX() functions can handle string inputs
already, but ConfigGetParameter() rejects such inputs beforehand.

Modify ConfigGetParameter() to validate that a string represents a
numeric value. If so, then ConfigGetParamX() can handle the input.
Factor the checks into a new function to keep them from getting too
long.

Use case:
Values read from the ui-console command line are always strings, by
necessity. When the config file is empty (or somehow lacking the
specified parameter), then ui-console cannot know the desired type, so
it defaults to storing the parameter as a string. Without this patch,
this can result in plugin code ignoring a validly-specified
command-line parameter.

Use case:
Without this patch, if a user unknowingly specifies a float or integer
value in the config file within double-quotes, this can result in plugin
code ignoring the parameter.
2019-01-24 22:32:10 -08:00
Corey Hickey
be83a1dc31 Fix ConfigGetParamX comments (copy/paste omissions) 2019-01-24 20:02:43 -08:00
Gillou68310
178c5f5a72 new_dynarec: Refactor hash_table 2019-01-21 15:25:37 +01:00
Gillou68310
6a4acbb5dd new_dynarec: Do not jump to jump_vaddr_x18 on arm64 2019-01-21 15:25:36 +01:00
Gillou68310
be39dfe390 new_dynarec: Fix crash in Paper Mario on 64bits platform 2019-01-21 15:25:36 +01:00
Gillou68310
c960620eff new_dynarec: get_addr* refactoring 2019-01-21 15:25:36 +01:00
Gillou68310
4a667edb48 new_dynarec: Allow disabling links between recompiled blocks 2019-01-21 15:25:35 +01:00
Gillou68310
b36f209e5a new_dynarec: Fallback to literal pools when needed
Data is outside the +/-4GB range from program counter
Data is not in the 32 bits address space
2019-01-21 15:25:35 +01:00
Gillou68310
0db19722d1 new_dynarec: No need to use pc relative address to access fcr31 2019-01-21 15:25:35 +01:00
Gillou68310
ec34b4522a new_dynarec: Implement double cache address for arm64 2019-01-21 15:25:34 +01:00
Gillou68310
963537bf7a new_dynarec: Fix crash when reached end of the cache 2019-01-21 15:25:34 +01:00
Gillou68310
f09342a9fd new_dynarec: Fix non rip relative access to g_dev in linkage_x64.asm 2019-01-21 15:25:33 +01:00
Richard Goedeken
c3e3f17e0f
Merge pull request #607 from helviojr/joystick_event_initialize_fix
Fix joy_max for initialize loop
2019-01-16 19:45:27 -08:00
Richard Goedeken
a325c9d0da
Merge pull request #605 from bugfood/fix-nosaveoptions
Preserve floating-point configuration values.
2019-01-16 19:34:21 -08:00
Hjunior
29e67258b4 Fix joy_max for initialize loop
During SDL joystick initialization needed for core events hotkeys, the loop of all controllers, in case of a J* hotkey should stop on the last found controller (ex.: for four controllers, should go from J0 to J3, instead of J4).
2019-01-14 23:51:50 -02:00
Corey Hickey
77c629a9f0 Preserve floating-point configuration values.
Currently, if a floating-point configuration value is equal to an
integer, it gets rewritten as an integer.

Example:
The Video-Rice PolygonOffsetFactor parameter is registered in the source
as a float, default 0.0f. When configuration is not initially present
(the first run of the program), the internal type is M64TYPE_FLOAT, so
the core writes the value to the config file as '0.000000' (default
6-digit precision of fprintf). On the next run, the core reads the value
and translates it to M64TYPE_INT and then writes it to the config file
as '0'.

This patch changes the parsing so that floats are preserved as floats
even when they happen to have an integral value. This way, a user
reading the config file has a visual indication of which values may be
set to floating-point values.
2019-01-13 17:54:45 -08:00
Logan McNaughton
af14deb652 Fix mingw build 2019-01-13 10:15:06 -07:00
Gillou68310
c4c63a1242 new_dynarec: Initial x64 and arm64 support 2019-01-09 16:03:35 +01:00
Gillou68310
df125cbed6 new_dynarec: Get rid of last_count 2018-12-20 16:42:29 +01:00
Gillou68310
da131e562d new_dynarec: Refactoring multdiv_assemble_x86 and jump_syscall 2018-12-18 13:39:57 +01:00
Gillou68310
434a0cacf6 new_dynarec: Don't save registers which are overwritten 2018-12-18 12:40:15 +01:00
Gillou68310
b7feff2a2b new_dynarec: Assign fake_pc once and for all 2018-12-14 10:41:20 +01:00
Gillou68310
5ff85aac1d new_dynarec: Refactor dirty stub parsing 2018-12-14 10:41:19 +01:00
Gillou68310
04b1b4ac3f new_dynarec: Allocate temporary register for load instructions address generation
Previously address generation was done in rt breaking register writeback in case of exception
2018-12-14 10:41:19 +01:00
Gillou68310
5892351b13 new_dynarec: Add interpreted load/store instructions 2018-12-14 10:41:18 +01:00
Gillou68310
1bfb960876 new_dynarec: Use wasconst instead of isconst in load_all_consts and wb_consts 2018-12-14 10:41:18 +01:00
Gillou68310
5a4c192e44 new_dynarec: Refactor register pre-allocation 2018-12-14 10:41:18 +01:00
Gillou68310
de6e876fed new_dynarec: Add consistency check in register allocator 2018-12-14 10:41:17 +01:00
Gillou68310
01206aa75d new_dynarec: Fix wb_dirtys 2018-12-14 10:41:17 +01:00
Gillou68310
8df3b4380d new_dynarec: Fix for 64bit platform 2018-12-14 10:41:16 +01:00
Gillou68310
21c24f9759 new_dynarec: Refactor ldl_merge/ldr_merge 2018-12-14 10:41:16 +01:00
Gillou68310
9525ed42ce new_dynarec: refactor storelr 2018-12-14 10:41:16 +01:00
Gillou68310
07f3b315ce new_dynarec: refactor load/store hword 2018-12-14 10:41:15 +01:00
Gillou68310
71da1fd038 new_dynarec: Remove specific x86 rounding modes array 2018-12-14 10:41:15 +01:00
Gillou68310
e12a9b6504 new_dynarec: refactor cop0_assemble 2018-12-14 10:41:15 +01:00
Gillou68310
c2a444541f new_dynarec: add recompiler debugger 2018-12-14 10:41:14 +01:00
Gillou68310
eb9c589cd8 new_dynarec: Initial 64bits support
# Conflicts:
#	src/device/r4300/new_dynarec/new_dynarec.c

# Conflicts:
#	src/device/r4300/new_dynarec/new_dynarec.c
2018-12-14 10:41:14 +01:00
Gillou68310
6d390e5423 new_dynarec: Use the same memory layout for both x86 and ARM 2018-12-14 10:41:13 +01:00
Gillou68310
e74c4e04c2 Revert "{init,free}_blocks and profiling is only needed for hacktarux dynarec."
This reverts commit d562015870.

# Conflicts:
#	src/device/r4300/r4300_core.c
2018-12-14 10:41:13 +01:00
Logan McNaughton
df8b2693fd Fix errors introduced in #444 2018-11-13 08:21:58 -07:00
Richard Goedeken
22c949b3ee
Merge pull request #597 from bsmiles32/avoid_nameless_union
Avoid nameless union in r4300_core.h (this is a non standard extension)
2018-11-11 21:55:18 -08:00
Bobby Smiles
49806920d8 Avoid nameless union in r4300_core.h (this is a non standard extension) 2018-11-11 12:01:02 +01:00
Bobby Smiles
269ba846f8 Fix access to DD_ROM memory pointer.
I must have missed this when doing commit
9e4a3fb335.
2018-11-11 11:52:47 +01:00
Richard Goedeken
9894f867d0 don't enable debugger when starting the core if the debugger callbacks were not all set 2018-11-06 08:00:49 -08:00
Richard Goedeken
95f054cc35 fix the r4300 instruction format structs with bitfields in the debugger so that they will work on big-endian as well as little-endian machines 2018-11-05 20:22:20 -08:00