Commit graph

13627 commits

Author SHA1 Message Date
Fiora
4f18f6078f JIT64: Fix fmul rounding issues
Thanks to magumagu's softfp experiments, we know a lot more about the Wii's
strange floating point unit than we used to. In particular, when doing a
single-precision floating point multiply (fmulsx), it rounds the right hand
side's mantissa so as to lose the low 28 bits (of the 53-bit mantissa).

Emulating this behavior in Dolphin fixes a bunch of issues with games that
require extremely precise emulation of floating point hardware, especially
game replays. Fortunately, we can do this with rather little CPU cost; just ~5
extra instructions per multiply, instead of the vast load of a pure-software
float implementation.

This doesn't make floating-point behavior at all perfect. I still suspect
fmadd rounding might not be quite right, since the Wii uses fused instructions
and Dolphin doesn't, and NaN/infinity/exception handling is probably off in
various ways... but it's definitely way better than before.

This appears to fix replays in Mario Kart Wii, Mario Kart Double Dash, and
Super Smash Brothers Brawl. I wouldn't be surprised if it fixes a bunch of
other stuff too.

The changes to instructions other than fmulsx may not be strictly necessary,
but I included them for completeness, since it feels wrong to fix some
instructions but not others, since some games we didn't test might rely on
them.
2014-08-24 10:28:52 -07: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
Lioncash
f200a03d97 UnitTests: Remove now non-existent UpdateStatusBar from StubHost. 2014-08-24 08:34:25 -04:00
Dolphin Bot
43f890322f Merge pull request #845 from ChuckRozhon/switch_to_cstdint
Changed unsigned ints and chars to cstdint counterparts
2014-08-23 21:18:18 +02:00
shuffle2
7725737872 Merge pull request #860 from shuffle2/remove-dsound
Remove dsound audio backend.
2014-08-23 11:35:24 -07:00
Shawn Hoffman
af2405eefd Remove dsound audio backend.
There isn't any reason to use dsound over xaudio.
2014-08-23 11:19:19 -07:00
shuffle2
8bb3fa561b Merge pull request #858 from shuffle2/dx-old
Add headers required by XAudio2_7 to externals.
2014-08-23 11:18:46 -07:00
Shawn Hoffman
1332805bb6 Add headers required by XAudio2_7 to externals.
This makes all builds' audio compatible with downlevel Windows and removes
the need for developers to install the June 2010 DirectX SDK.
2014-08-23 11:03:07 -07:00
shuffle2
f964a282e1 Merge pull request #857 from shuffle2/msvc-improvements
windows: remove now-extraneous NOMINMAX and WIN32_LEAN_AND_MEAN #defines
2014-08-23 11:02:48 -07:00
Shawn Hoffman
327d35377d windows: remove now-extraneous NOMINMAX and WIN32_LEAN_AND_MEAN #defines from dolphin code.
Wrap dinput.h in a header defining DIRECTINPUT_VERSION instead of repeating it multiple places.
2014-08-23 10:48:48 -07: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
Lioncash
6a74f5e8f6 Merge pull request #817 from archshift/disabledcolor
Fixed toolbar's disabled button color.
2014-08-23 05:08:26 -04:00
Lioncash
41577f044a Merge pull request #844 from lioncash/wx-hotkey
DolphinWX: Get rid of unnecessary hotkey code.
2014-08-22 19:52:18 -04:00
Lioncash
624972e37c Merge pull request #855 from magcius/fix-gamelist-title
Frame: Actually call UpdateTitle
2014-08-22 17:48:56 -04:00
Jasper St. Pierre
1e464d1a25 Frame: Actually call UpdateTitle
This was obviously what I meant to do, but due to a typo, called
SetTitle instead, causing the main game list title to be set instead.
2014-08-22 17:28:02 -04:00
Ryan Houdek
db039d1440 Merge pull request #850 from lioncash/unused-headers
Core: Removed blank headers Boot_ELF.h and Boot_WiiWAD.h
2014-08-22 02:07:10 -05:00
Lioncash
130f57df91 Core: Simplify Memory::GetString 2014-08-22 01:22:58 -04:00
Ryan Houdek
fc5a73d62e Merge pull request #849 from FioraAeterna/fixppcanalyzer
PPCAnalyzer: move num_instructions initialization to correct place
2014-08-22 00:14:11 -05:00
Lioncash
48f52b9662 Merge pull request #789 from archshift/linuxvideo
Fix for black screen on Linux upon starting a game
2014-08-21 15:55:29 -04:00
archshift
7e2534ee47 Fixed black screen on game start for X11 contexts. 2014-08-21 12:50:42 -07:00
Lioncash
de9edbeebf Core: Removed blank headers Boot_ELF.h and Boot_WiiWAD.h 2014-08-21 15:30:51 -04:00
Lioncash
25e29c323d Merge pull request #842 from lioncash/jit
Coding style clean up for the Jit, JitARM and JitIL
2014-08-21 15:25:43 -04:00
Fiora
5c0145f71b PPCAnalyzer: move num_instructions initialization to correct place
Much of the PPC Analyzer code (e.g. instruction reordering for merging
branches) wasn't actually being run.
2014-08-21 11:19:23 -07:00
Lioncash
f17dcd2019 Merge pull request #764 from magcius/new-nogui-2
Rewrite GLInterface
2014-08-21 14:14:54 -04:00
Matthew Parlane
cf82972961 Merge pull request #848 from shuffle2/msvc-improvements
msvc: skip copying Data dir and precompiled dlls to Binary dir if they are already there (unless the source files are newer).
2014-08-21 12:25:47 +12:00
Shawn Hoffman
9ac5d7ecd5 msvc: skip copying Data dir and precompiled dlls to Binary dir if they are already there (unless the source files are newer).
Also fix a bug which was preventing DolphinWX/AfterBuild target from being completely skipped.
2014-08-20 16:57:34 -07:00
Linktothepast
636dbc32d7 Gameini updates.
Updates gameinis for various us wiiware titles. How to Train Your Dragon
2 (wii), Opoona (wii), The Legend of Zelda: Collector's Edition (gc),
Super Mario Sunshine (gc), Super Monkey Ball 2  (gc) updated.
Fixes issues 7491, 7447 and 7581.
2014-08-21 01:42:23 +03:00
Charles Rozhon
965b1f1f2c Removed the typedefs for Elf32 word types 2014-08-20 15:21:41 -05:00
Charles Rozhon
d84b2f3be4 Changed unsigned ints and chars to cstdint counterparts 2014-08-20 14:52:01 -05:00
Lioncash
77ce389bb0 DolphinWX: Get rid of unnecessary hotkey code. 2014-08-20 14:43:08 -04:00
Lioncash
b5337ea1b5 Merge pull request #826 from lioncash/wx-events
DolphinWX: Use the typesafe equivalents for declaring wx event types
2014-08-20 14:34:17 -04:00
Lioncash
20f8ec9afa Core: Join a few if statements in IR.cpp 2014-08-20 14:26:16 -04:00
Lioncash
99ae79f7f9 Core: Better assert messages for stx op 2014-08-20 14:16:05 -04:00
Lioncash
d694637938 Core: Clean up brace/body placements for JitIL 2014-08-20 14:04:01 -04:00
Lioncash
b005ba2797 Core: Clean up body/brace placements in JitArm32 2014-08-20 14:03:46 -04:00
shuffle2
d29e333142 Merge pull request #833 from shuffle2/msvc-improvements
misc improvements for msvc build. -Werror for msvc!
2014-08-20 10:57:31 -07:00
Lioncash
6145ced5f7 Core: Change "unsigned result" to "u32 result" in rlwinmx for Jit64 2014-08-20 12:51:30 -04:00
Lioncash
e7f49692e8 Core: Clean up body/brace placements in Jit64 and JitCommon 2014-08-20 12:50:42 -04:00
Shawn Hoffman
a9c33075f2 msvc: enable compiler warnings as errors. 2014-08-19 22:33:49 -07:00
Shawn Hoffman
d9fcc855a7 msvc: resolve all warnings in DolphinWX.
Also, bring WiiSaveCrypted closer to modern dolphin coding style.
2014-08-19 22:33:48 -07:00
Shawn Hoffman
5471c71819 msvc: resolve all warnings in VideoBackends/OGL. 2014-08-19 22:33:47 -07:00
Shawn Hoffman
fd16065979 msvc: resolve all warnings in VideoBackends/Software. 2014-08-19 22:33:47 -07:00
Shawn Hoffman
4bf031c064 msvc: resolve all warnings in VideoCommon. 2014-08-19 22:33:46 -07:00
Shawn Hoffman
043ea31f14 msvc: resolve all warnings in Core.
Note: vs14 will support empty macro parameter as used by MMIO.
2014-08-19 22:33:46 -07:00
Shawn Hoffman
317e63e7ba msvc: disable compiler warnings when building all Externals (cl /W0), except for wxWidgets, where all warnings are fixed.
Note warnings may still be generated by code in Externals if it is included into warning-enabled code (this is the case for libusb).
Also, quiet an intellisense warning in wxWidgets caused by using __w64 for an inapplicable type.
2014-08-19 22:33:42 -07:00
Shawn Hoffman
9df2127865 msvc: enable strictStrings solution-wide for release.
strictStrings is not supported by debug libraries, and indeed breaks the build.
Drop wbemidl.h (incompatible with strictStrings) dependency by using SDL-style search for XInput GUIDs.
2014-08-19 20:33:24 -07:00
Tillmann Karras
80be585fef x64Emitter: remove redundant "Gen::" 2014-08-20 02:56:07 +02:00
Tillmann Karras
a363f4fa3e x64Emitter: make 'packed' parameter a bool 2014-08-20 02:54:30 +02:00