Commit Graph
100 Commits
Author SHA1 Message Date
Pierre Bourdon eea9be6dc1 Merge pull request #1049 from rohit-n/extra-semicolon
Remove extra semicolons at the ends of some lines.
2014-09-10 19:10:55 +02:00
Pierre Bourdon d75bb614e7 Merge pull request #998 from waddlesplash/wx-fixup
Migrate PNGs from DolphinWX to the Data/Resources directory.
2014-09-06 18:07:20 +02:00
Pierre Bourdon 06bdc49957 Merge pull request #999 from lioncash/copy-assign
AudioCommon: Make WaveFileWriter inherit NonCopyable
2014-09-06 17:52:11 +02:00
Pierre Bourdon 2333532aab Merge pull request #1000 from lioncash/preproc
Common: Remove HAVE_CXX11_SYNTAX define from Common.h
2014-09-06 17:50:15 +02:00
Pierre Bourdon bb60cafd40 Merge pull request #982 from FioraAeterna/removedebug
Remove debug printf from earlier commit
2014-09-05 19:36:14 +02:00
Pierre Bourdon 58c669aa02 Merge pull request #981 from FioraAeterna/revert-852-optimizeca
Revert "JIT64: optimize CA calculations"
2014-09-05 19:27:41 +02:00
Pierre Bourdon f9650c52f8 Merge pull request #484 from kayru/render_target_pool
Render: Implemented simple render target pool
2014-09-04 22:58:01 +02:00
Pierre Bourdon 7d39936b49 Merge pull request #966 from RachelBryk/template-set
Change IniFile::Section::Set() with default value to use a template.
2014-09-04 10:54:14 +02:00
Pierre Bourdon cee71afce5 x64EmitterTest: Fake support for all CPU extensions 2014-09-03 02:26:11 +02:00
Pierre Bourdon ddb2aefedf Merge pull request #904 from FioraAeterna/dcbz
JIT64: try enabling dcbz again
2014-09-02 15:41:40 +02:00
Pierre Bourdon 5b4f1fe92c UnitTests: Add tests for the x64Emitter 2014-09-02 10:17:32 +02:00
Pierre Bourdon e72146d19c x64Emitter: Do not assert-fail on redundant MOVs, instead show an error log 2014-09-02 10:17:32 +02:00
Pierre Bourdon a79ced2fc2 x64Emitter: Make it clear for both SSE to int conv that X64 regs are expected 2014-09-02 09:55:47 +02:00
Pierre Bourdon c428c5999f x64Emitter: UNPCKLPS/HPS are now tested 2014-09-02 09:53:00 +02:00
Pierre Bourdon cc0b048c0b x64Emitter: Support FLD/FSTP with 80 bits operands 2014-09-02 09:52:59 +02:00
Pierre Bourdon f99f302c91 x64Emitter: assert instead of crashing when generating MOVZX with a wrong size 2014-09-02 09:52:04 +02:00
Pierre Bourdon b1738b60fc x64Emitter: Fix MUL with AH/BH/CH/DH registers. 2014-09-02 09:52:04 +02:00
Pierre Bourdon f0e8b1fda8 x64Emitter: Error out on 8 bits CMOV, and emit 16 bits CMOV properly 2014-09-02 09:52:04 +02:00
Pierre Bourdon d4ec9737bd x64Emitter: Assert when using an invalid POP instead of generating an INT3 2014-09-02 09:52:04 +02:00
Pierre Bourdon 9c4daac3a4 x64Emitter: RDTSC now without a typo'd name 2014-09-02 09:52:04 +02:00
Pierre Bourdon 88af225070 x64Emitter: Remove a declared function that is never implemented 2014-09-02 09:52:04 +02:00
Pierre Bourdon 5941653d47 Merge pull request #920 from shuffle2/msvc-gtest
Provide a way to build and run unittests on Windows
2014-09-02 07:40:49 +02:00
Pierre Bourdon 9b10d36a85 Merge pull request #938 from lioncash/statics
Common: Make the LUTs in ColorUtil static
2014-09-02 07:36:17 +02:00
Pierre Bourdon 15e19e98cb Merge pull request #937 from lioncash/namespaces
Common: Remove unnecessary "using namespace Gen;" from x64emitter
2014-09-02 07:35:26 +02:00
Pierre Bourdon 8913c71dc1 Merge pull request #936 from lioncash/printf
DolphinWX: Change a wx Printf call to a Format call
2014-09-02 07:34:28 +02:00
Pierre Bourdon 7fb8572765 Merge pull request #935 from lioncash/snprintf
DolphinWX: Get rid of an snprintf call in ISOProperties
2014-09-02 07:33:56 +02:00
Pierre Bourdon b026217984 Merge pull request #933 from lioncash/prefix
DiscIO: Prefix class member variables with "m_"
2014-09-01 22:45:12 +02:00
Pierre Bourdon 5cc0bda3d5 Merge pull request #932 from lioncash/ptr
DolphinWX: Use normal instantiation of wxTimer in HotkeyDlg
2014-09-01 20:12:13 +02:00
Pierre Bourdon d9950d8cab Merge pull request #921 from lioncash/unique
DiscIO: Move some raw pointers over to unique_ptr
2014-09-01 20:11:18 +02:00
Pierre Bourdon 24b5ce2ddc Merge pull request #917 from lioncash/input
InputCommon: Rename class InputPlugin to InputConfig
2014-09-01 16:36:52 +02:00
Pierre Bourdon a0bb18872f Merge pull request #931 from shuffle2/fix-ftz-test
unittests: correct some integers which should have been floating point types
2014-09-01 15:09:23 +02:00
Pierre Bourdon 494a60e41b VertexLoader: Change VtxDesc to use u64 instead of u32
This is required to make packing consistent between compilers: with u32, MSVC
would not allocate a bitfield that spans two u32s (it would leave a "hole").
2014-09-01 11:18:02 +02:00
Pierre Bourdon ea7eee1f58 Merge pull request #913 from lioncash/movie-func
Core: Break movie header validity checking into a function
2014-08-31 06:55:04 +02:00
Pierre Bourdon ee880ea73c Merge pull request #914 from lioncash/potential-uninitialized
Core: Fix potential uninitialized variable warnings in Wii_IPC_HLE_Devices_es.cpp
2014-08-31 06:46:45 +02:00
Pierre Bourdon 7d05ebbc9b Merge pull request #888 from FioraAeterna/fmulinterp
Fix another absent-minded typo in the fmul interpreter patch
2014-08-27 10:57:09 +02:00
Pierre Bourdon 81048f38f8 Merge pull request #875 from lioncash/statics
DiscIO: Make the unordered set in IsSoundFile static
2014-08-26 09:35:46 +02:00
Pierre Bourdon 25bd734578 Merge pull request #838 from Tilka/unused
CommandProcessor: mark some functions as static
2014-08-25 21:24:15 +02:00
Pierre Bourdon c9f3fd356b Merge pull request #872 from dolphin-emu/revert-828-pp-shader-catch-broken-config
Revert "Catch broken configurations inside of the Post Processing shader...
2014-08-25 14:34:04 +02:00
Pierre Bourdon bf93920c05 Revert "Catch broken configurations inside of the Post Processing shaders." 2014-08-25 14:33:41 +02:00
Pierre Bourdon 9ff7125786 Merge pull request #810 from lioncash/controller-interface
InputCommon: Don't base default radius of analog sticks off of their name
2014-08-24 19:58:25 +02:00
Pierre Bourdon ebf1b98106 Merge pull request #834 from FioraAeterna/fixfmulrounding
JIT64: Fix fmul rounding issues
2014-08-24 19:49:56 +02:00
Pierre Bourdon aaff5a0afb Merge pull request #856 from FioraAeterna/ppcfpopt
JIT: faster PPC_FP code
2014-08-24 19:25:56 +02:00
Pierre Bourdon b749a74d33 Merge pull request #863 from lioncash/remhost
UnitTests: Remove now non-existent UpdateStatusBar from StubHost.
2014-08-24 14:41:13 +02:00
Pierre Bourdon 6a5188c9bc Merge pull request #839 from Tilka/emitter
x64Emitter: small source-level fixes
2014-08-23 19:37:24 +02:00
Pierre Bourdon 4ec848736d Merge pull request #847 from Linktothepast/gameinis
Gameini updates.
2014-08-23 19:20:05 +02:00
Pierre Bourdon f7102faae7 Merge pull request #853 from lioncash/memmap
Core: Simplify Memory::GetString
2014-08-23 19:19:09 +02:00
Pierre Bourdon 5bfc3ad342 Merge pull request #827 from Sonicadvance1/fix-pp-config
Fixes PP-shaders on !Mesa targets.
2014-08-18 05:02:17 +02:00
Pierre Bourdon 9e2fbaf405 Merge pull request #823 from KScorp/depthmatrixshaders
Fixed depth matrix shaders in OpenGL and Direct3D to be more precise.
2014-08-17 22:08:42 +02:00
Pierre Bourdon b9404f9aee Merge pull request #809 from degasus/master
VertexLoader: cache NativeVertexFormat
2014-08-16 13:38:38 +02:00
Pierre Bourdon 7b6b9b0945 Merge pull request #735 from Armada651/d3dfullscreen_fixes
Fix hotkeys in Linux and Mac OS X (properly this time).
2014-08-14 15:27:21 +02:00
Pierre Bourdon e5ca4f604c Merge pull request #793 from kamiyo/fixframetools
Update frametools.cpp to fix crashing when changing themes.
2014-08-13 10:25:19 -07:00
Pierre Bourdon e4e44909d5 Merge pull request #762 from booto/dma-audio-3
DSP: DMA behaviour adjustments to fix regressions
2014-08-12 18:18:51 -07:00
Pierre Bourdon b38022df43 Merge pull request #750 from lioncash/leak
Core: Fix a leak on OSX that could occur in IOdarwin.mm
2014-08-07 09:56:36 -07:00
Pierre Bourdon 16f180524c VertexLoader: do not prepare for vertices if we need to skip them 2014-08-04 20:47:02 -07:00
Pierre Bourdon b7d4481081 Merge pull request #736 from FioraAeterna/fixdirt
JIT: Don't assume the reserved bits in GQRs are zero
2014-08-04 20:32:08 -07:00
Pierre Bourdon b6dac8f0b1 Merge pull request #731 from FioraAeterna/fixquanttable
Fix quant/dequant table bug
2014-08-04 20:29:54 -07:00
Pierre Bourdon 6befa34b60 Merge pull request #647 from lioncash/disasm
Common: Introduce the new Gekko disassembler to Common.
2014-08-03 21:52:08 -07:00
Pierre Bourdon 05a9f5b07a Merge pull request #730 from dolphin-emu/revert-727-flags-opt
Revert "Jit64: Fix immediates being zero-extended to cr_val instead of s...
2014-08-03 21:50:45 -07:00
Pierre Bourdon 7ba400bea2 Revert "Jit64: Fix immediates being zero-extended to cr_val instead of sign-extended." 2014-08-03 21:50:12 -07:00
Pierre Bourdon b1553b42ce Merge pull request #542 from Parlane/weird_buffering
Remove weird buffering from WII_IPC_HLE_Device_sdio_slot0.cpp
2014-08-03 21:30:35 -07:00
Pierre Bourdon 497de04c52 Merge pull request #671 from lioncash/non-panic
DolphinWX: Use a regular wxMessageBox instead of a PanicAlert for non-panic errors.
2014-08-03 21:27:27 -07:00
Pierre Bourdon 95a8c24841 Merge pull request #723 from lioncash/warnings
Core: Fix two sets of warnings when compiling on Linux.
2014-08-03 21:25:44 -07:00
Pierre Bourdon 87e7c1ee46 Merge pull request #724 from lioncash/mem_fn
AudioCommon: Get rid of some unnecessary mem_fn calls
2014-08-03 21:25:24 -07:00
Pierre Bourdon 15920d0f10 Merge pull request #394 from degasus/d3d_lighting_fix
VideoCommon: normalize light direction
2014-08-03 21:21:23 -07:00
Pierre Bourdon 4c42b38de1 Merge pull request #428 from Sonicadvance1/x86_32-removal
Remove x86_32 support from Dolphin.
2014-08-03 21:17:28 -07:00
Pierre Bourdon e15ec56bf0 Merge pull request #716 from delroth/vertex-loader
Make vertex loader testable
2014-08-03 21:14:59 -07:00
Pierre Bourdon 89adfba67b Merge pull request #729 from lioncash/host-func
Core: Get rid of Host_GetInstance()
2014-08-03 21:04:34 -07:00
Pierre Bourdon 1fcf07f9cc Merge pull request #5 from lioncash/vertex-loader
Isolate D3D and Software Renderer from wxWidgets code
2014-08-03 17:32:32 -07:00
Pierre Bourdon ae27d36961 Jit64: Fix immediates being zero-extended to cr_val instead of sign-extended. Thanks to konpie for finding this issue. 2014-08-03 16:00:41 -07:00
Pierre Bourdon 9f8e1e2a0d Merge pull request #720 from booto/dma-audio-fix2
DSP: copy audio dma samples as early as possible
2014-08-02 15:13:26 -07:00
Pierre Bourdon 35654513c1 VertexLoader: Add more tests, including a few small benchmarks 2014-08-02 14:02:38 -07:00
Pierre Bourdon 1bb7c2791a Merge pull request #719 from lioncash/warnings
Core: Fix warnings on Linux related to the JIT
2014-08-02 13:21:20 -07:00
Pierre Bourdon 46ce810b45 Merge pull request #718 from lioncash/unused-var
DolphinWX: Remove an unused variable from ISOProperties
2014-08-02 12:56:55 -07:00
Pierre Bourdon da2833c0e6 Merge pull request #679 from lioncash/ucode-update-params
Core: Remove the unused cycle parameter from DSPHLE update calls
2014-08-02 10:37:19 -07:00
Pierre Bourdon 8f768e5a54 Merge pull request #714 from lioncash/gen
Core: Remove using namespace statements from the Jit and Interpreter headers
2014-08-02 10:36:31 -07:00
Pierre Bourdon c39ef56db5 VertexLoader: Add very basic unit testing to get started 2014-08-02 09:34:39 -07:00
Pierre Bourdon 6f715a1fbe VertexLoader: Remove more global state dependencies (this time IndexGenerator and VertexManager) 2014-08-02 09:34:39 -07:00
Pierre Bourdon 8b26d7bf1e UnitTests: make it possible to build tests for code that has global dependencies 2014-08-02 09:34:39 -07:00
Pierre Bourdon 226a9c2392 Move GLInterface around to remove VideoBackends dependency on DolphinWX 2014-08-02 09:34:39 -07:00
Pierre Bourdon 1aab63bef7 Merge pull request #712 from lioncash/cast
Core: Fix cast warnings in DSPJitRegCache
2014-08-01 17:49:46 -07:00
Pierre Bourdon e0b6f8c9c4 Merge pull request #711 from lioncash/cast
Core: Get rid of a cast in JitRegCache
2014-08-01 17:29:35 -07:00
Pierre Bourdon 0380bb61fa Merge pull request #708 from lioncash/drum-axis
Core: Fix Y-data not being assigned in Drums.cpp
2014-07-31 22:20:40 -07:00
Pierre Bourdon f6995d1eff Merge pull request #704 from lioncash/pjhack-removal
DolphinWX: Remove the Projection Hack UI
2014-07-31 20:20:02 -07:00
Pierre Bourdon 5506e57ab8 CR: Replace some magic values with constants. 2014-07-30 21:41:17 -07:00
Pierre Bourdon 0ff1481494 Optimize PPC CR emulation by using magic 64 bit values
PowerPC has a 32 bit CR register, which is used to store flags for results of
computations. Most instructions have an optional bit that tells the CPU whether
the flags should be updated. This 32 bit register actually contains 8 sets of 4
flags: Summary Overflow (SO), Equals (EQ), Greater Than (GT), Less Than (LT).
These 8 sets are usually called CR0-CR7 and accessed independently. In the most
common operations, the flags are computed from the result of the operation in
the following fashion:
  * EQ is set iff result == 0
  * LT is set iff result < 0
  * GT is set iff result > 0
  * (Dolphin does not emulate SO)

While X86 architectures have a similar concept of flags, it is very difficult
to access the FLAGS register directly to translate its value to an equivalent
PowerPC value. With the current Dolphin implementation, updating a PPC CR
register requires CPU branching, which has a few performance issues: it uses
space in the BTB, and in the worst case (!GT, !LT, EQ) requires 2 branches not
taken.

After some brainstorming on IRC about how this could be improved, calc84maniac
figured out a neat trick that makes common CR operations way more efficient to
JIT on 64 bit X86 architectures. It relies on emulating each CRn bitfield with
a 64 bit register internally, whose value is the result of the operation from
which flags are updated, sign extended to 64 bits. Then, checking if a CR bit
is set can be done in the following way:
  * EQ is set iff LOWER_32_BITS(cr_64b_val) == 0
  * GT is set iff (s64)cr_64b_val > 0
  * LT is set iff bit 62 of cr_64b_val is set

To take a few examples, if the result of an operation is:
  * -1 (0xFFFFFFFFFFFFFFFF) -> lower 32 bits not 0       => !EQ
                            -> (s64)val (-1) is not > 0  => !GT
                            -> bit 62 is set             =>  LT
            !EQ, !GT, LT

  *  0 (0x0000000000000000) -> lower 32 bits are 0       =>  EQ
                            -> (s64)val (0) is not > 0   => !GT
                            -> bit 62 is not set         => !LT
            EQ, !GT, !LT

  *  1 (0x0000000000000001) -> lower 32 bits not 0       => !EQ
                            -> (s64)val (1) is > 0       =>  GT
                            -> bit 62 is not set         => !LT
            !EQ, GT, !LT

Sometimes we need to convert PPC CR values to these 64 bit values. The
following convention is used in this case:
  * Bit 0 (LSB) is set iff !EQ
  * Bit 62 is set iff LT
  * Bit 63 is set iff !GT
  * Bit 32 always set to disambiguize between EQ and GT

Some more examples:
  * !EQ, GT, LT -> 0x4000000100000001 (!B63, B62, B32, B0)
                -> lower 32 bits not 0          => !EQ
                -> (s64)val is > 0              =>  GT
                -> bit 62 is set                =>  LT
  * EQ, GT, !LT -> 0x0000000100000000
                -> lower 32 bits are 0          =>  EQ
                -> (s64)val is > 0 (note: B32)  =>  GT
                -> bit 62 is not set            => !LT
2014-07-30 21:41:17 -07:00
Pierre Bourdon 83838a645f Merge pull request #690 from Armada651/d3dfullscreen_fixes
Exclusive fullscreen fixes
2014-07-30 16:28:56 -07:00
Pierre Bourdon 9b9817f927 x64Emitter: Fix REX encoding for SETcc
Previously using the new "lower 8 bits" registers (SIL, SPL, ...) caused SETcc
to write to other registers (for example, SETcc SIL would generate SETcc DH).
2014-07-30 06:41:29 -07:00
Pierre Bourdon 4b66c6c65a Merge pull request #698 from lioncash/missed-workaround
Really get rid of the MSVC 2005 workaround completely
2014-07-29 18:23:04 -07:00
Pierre Bourdon c0e8d9879a Merge pull request #678 from lioncash/overflow
Fix a possible overflow in EXI_DeviceIPL.
2014-07-29 16:42:58 -07:00
Pierre Bourdon f6fe299c31 Merge pull request #694 from lioncash/interp-defines
Core: Remove defines used to work around an MSVC 2005 bug
2014-07-29 16:39:05 -07:00
Pierre Bourdon 8ff3cf1838 Merge pull request #684 from lioncash/forward-decls
Core: Turn some includes into forward declarations.
2014-07-28 20:50:27 -07:00
Pierre Bourdon 062bce8b7e Merge pull request #659 from Parlane/classic_controller_fix2
Classic controller fix
2014-07-28 20:34:00 -07:00
Pierre Bourdon 9f86d3efcf Merge pull request #689 from Shadoxfix/master
Update framelimit tooltip text because the Audio option has been removed...
2014-07-28 10:28:23 -07:00
Pierre Bourdon 96cfbd1bb0 Merge pull request #677 from Armada651/use_fullscreen
Frame: Only prevent exclusive fullscreen switches when the emulator is paused
2014-07-27 00:14:56 +02:00
Pierre Bourdon 957a39942e Merge pull request #675 from lioncash/movie-params
Core: Use param padState instead of a global in SetInputDisplayString
2014-07-26 23:30:26 +02:00
Pierre Bourdon 6bd5fb3a67 Merge pull request #666 from booto/audio-dma-sampling
AudioCommon/Mixer: Allow input sample rate changes
2014-07-26 19:22:37 +02:00
Pierre Bourdon 8e865f3848 Merge pull request #506 from Armada651/d3dfullscreen
D3D: Add exclusive fullscreen support.
2014-07-26 13:22:11 +02:00
Pierre Bourdon 906b05cb1c Merge pull request #672 from delroth/vertex-loader
Vertex loader: reduce dependency on global state
2014-07-26 02:03:03 +02:00
Pierre Bourdon 73f9a22e2e VertexLoader: Remove global state dependency on g_nativeVertexFmt 2014-07-26 01:35:09 +02:00
Pierre Bourdon 87b3975f7c Merge pull request #669 from lioncash/source-header
Core: Fix the license headers for Memmap.h and SystemTimers.h/.cpp
2014-07-25 02:26:14 +02:00