Commit Graph

6192 Commits

Author SHA1 Message Date
comex 2264e7b087 Use a fake exception to exit early in case of memory breakpoints.
Change TMemCheck::Action to return whether to break rather than calling
PPCDebugInterface::BreakNow, as this simplified the implementation; then
remove said method, as that was its only caller.  One "interface" method
down, many to go...
2015-04-24 22:37:54 -04:00
comex dd7ab4812b On x86, disabling fastmem isn't enough actually.
Without fastmem, the JIT code still does an inline check for RAM
addresses.  With watchpoints we have to disable that too.  (Hardware
watchpoints would avoid all the slow, but be complicated to implement
and limited in number - I doubt most people debugging games care much if
they run slower.)

With this change and watchpoints enabled, Melee runs at no more than 40%
speed, despite running at full speed without them.  Oh well.  Better
works slowly than doesn't bloody work.

Incidentally, I'm getting an unrelated crash in
PowerPC::HostIsRAMAddress when shutting down a game.  This code sucks.
2015-04-24 22:37:54 -04:00
comex b84f6a55ab Automatically disable fastmem and enable memcheck when there are any watchpoints.
- Move JitState::memcheck to JitOptions because it's an option.
- Add JitOptions::fastmem; switch JIT code to checking that rather than
  bFastmem directly.
- Add JitBase::UpdateMemoryOptions(), which sets both two JIT options
  (replacing the duplicate lines in Jit64 and JitIL that set memcheck
  from bMMU).
  - (!) The ARM JITs both had some lines that checked js.memcheck
    despite it being uninitialized in their cases.  I've added
    UpdateMemoryOptions to both.  There is a chance this could make
    something slower compared to the old behavior if the uninitialized
    value happened to be nonzero... hdkr should check this.
- UpdateMemoryOptions forces jo.fastmem and jo.memcheck off and on,
  respectively, if there are any watchpoints set.
- Also call that function from ClearCache.
- Have MemChecks call ClearCache when the {first,last} watchpoint is
  {added,removed}.

Enabling jo.memcheck (bah, confusing names) is currently pointless
because hitting a watchpoint does not interrupt the basic block.  That
will change in the next commit.
2015-04-24 22:37:53 -04:00
JosJuice fe9fdd3244 Fix emulated Wii Remote battery level being low when not configured
All the multiplying and dividing by 100 in controller configs is
messy... An attempted solution to the problem was to not multiply
default_value by 100 in ControllerEmu::ControlGroup::LoadConfig,
but that broke other things instead, so I went with this.
2015-04-24 19:36:08 +02:00
comex b3aaa46d42 Merge pull request #2088 from Sintendo/diecmp
Emit 'TEST reg, reg' for 'CMP reg, 0' automatically
2015-04-23 16:34:23 -04:00
JosJuice 235ecfbed7 Return GetNames languages, to avoid hardcoded language lists in callers
This makes the code cleaner and also leads to some user-visible changes:

The wx game properties will no longer let the user
select WAD languages that don't have any names.

The Qt game list will now display names using the languages
set in the configuration instead of always using
English for PAL GC games and Japanese for WADs.

If a WAD doesn't have a name in the user's preferred language,
English is now selected as a fallback before Japanese.
2015-04-23 08:14:39 +02:00
comex ad95454d04 Merge pull request #2223 from phire/imm
Cleanup OpArg, make immediates more explicit.
2015-04-23 01:53:18 -04:00
Lioncash 8fb36228e5 Merge pull request #2311 from JosJuice/fix-wad-crash
Fix WAD crash caused by VolumeHandler removal
2015-04-23 00:23:42 -04:00
JosJuice 0b44d7c18a Fix Wii software crashing at boot if no disc is inserted
Boot_BS2Emu was trying to read from the inserted disc even when
nothing was inserted, and this happened to not crash (but not
work either) before VolumeHandler was removed. This commit adds
a check that restores the old behavior, so there is no longer a
crash, but the game ID still doesn't get set for WADs. I don't
know if/how it should be set, so this felt like the safest option.
2015-04-22 09:14:41 +02:00
Lioncash 56df9b7508 GPFifo: Remove unused parameters from Write[x] functions 2015-04-21 23:01:25 -04:00
Matthew Parlane 571eee8648 Merge pull request #2225 from JosJuice/remove-volumehandler
Get rid of VolumeHandler
2015-04-21 11:18:57 +12:00
Matthew Parlane a86f2fe2e7 Merge pull request #2199 from skidau/remove-controls-lock
Cleaned up the controller locking mechanism
2015-04-21 11:13:30 +12:00
Matthew Parlane 82bbada352 Merge pull request #2257 from RachelBryk/battery
Add an option for wiimote battery.
2015-04-21 11:12:12 +12:00
Lioncash d799446faf Core: Don't display on-screen messages via DisplayMessage until emulation has begun 2015-04-20 18:31:40 -04:00
Lioncash 9eb608c9da Merge pull request #2301 from lioncash/const
General: Apply the const specifier where applicable
2015-04-16 23:13:39 -04:00
Lioncash b0613bb1c8 General: Apply the const specifier where applicable 2015-04-15 02:04:03 -04:00
comex ba664b3293 Join the emu thread in Core::Stop. Get rid of Core::Shutdown which did that before.
Core::Shutdown was only called on app exit, yet the emu thread exits
whenever emulation stops; if you launched a new game it would just join
via the destructor when s_emu_thread was set to a new thread.
(Incidentally, the destructor also makes explicitly joining on app exit
rather pointless.)

Because the GUI thread wasn't waiting for the CPU thread to fully shut
down, Core::IsRunning would remain true briefly after CFrame::DoStop
which, given Dolphin's penchant for accessing variables belonging to
other threads, can only mean trouble... In my case, because the previous
commit caused UpdateGUI, which is called at the end of DoStop, to call
PauseAndLock, which checks IsRunning, pressing stop at the right time
would cause strange behavior.
2015-04-13 02:17:38 -04:00
comex e000aaaf5d Have the UI thread do PauseAndLock before messing with GetUsbPointer.
Since its lifetime is managed on the CPU thread, this (or a refactoring)
is absolutely required.  One of the functions with a PauseAndLock call
added is CFrame::UpdateGUI; this is fine now, since it's called only
after important events happen, so just make sure not to call it every
frame or something :)
2015-04-13 01:49:24 -04:00
mathieui 4c2d25eeaf Fix a warning
HotkeyManagerEmu.enabled is unused, as everything now uses
HotkeyManagerEmu.s_enabled.
2015-04-11 19:47:39 +02:00
Stevoisiak 7c1ab2911a Move down Country_World
The countries are sorted alphabetically. This should have been changed
when the variable was renamed from Country_International to
Country_World
2015-04-08 18:55:16 -04:00
JosJuice 76d0cfa8ac Fix terrible Speed Up Disc Transfer Rate mistake
I apologize.
2015-04-08 08:59:49 +02:00
skidau f8a4d4702c Merge pull request #2252 from mathieui/traversal-timeout
NetPlay: Don’t wait forever in the traversal client
2015-04-08 11:56:57 +10:00
skidau 5638ddaf6c Merge pull request #2263 from JosJuice/sudtr-not-instant
Make Speed Up Disc Transfer Rate not instant
2015-04-08 11:54:44 +10:00
Lioncash 4796dc80bf Merge pull request #2254 from SizzlingCalamari/remove-DSPLLE-cycle-mutex
Made cycle count atomic to avoid using a mutex
2015-04-07 08:27:38 -04:00
Lioncash 54cedf77f9 Merge pull request #2265 from lioncash/warn
ConfigManager: Fix a sign mismatch warning
2015-04-06 09:34:23 -04:00
degasus d2c62b1744 Fifo: only sleep once within every ms of emulated time 2015-04-06 12:35:35 +02:00
degasus b020ae1c5d Fifo: rewrite sync on idle skipping hack
Now it's done without a busy loop
2015-04-06 12:35:35 +02:00
Scott Mansell 9fdc713c87 While I'm here, Add some comments. 2015-04-05 21:19:56 +12:00
Scott Mansell e9459fb30a JitIL: Fix a bug in floatpoint load/store instructions.
The regBuildMemAddress function already clears the address register.
Not only is clearing it again pointless, regBuildMemAddress uses the
bits in IInfo slightly diffrently and the second clear can clear
the wrong registers causing bugs if something else actually needs to
use those registers.
2015-04-05 20:17:50 +12:00
JosJuice 4cd00e366c Get rid of VolumeHandler
VolumeHandler is basically just a wrapper around a single IVolume object.
This change moves that object to DVDInterface, moves the Read32
function to IVolume, and gets rid of the rest of VolumeHandler.
2015-04-05 10:09:48 +02:00
Lioncash 2211aead7f DSPInterpreter: Remove unused volatile variable and related function 2015-04-03 22:46:30 -04:00
Lioncash 7848876f99 ConfigManager: Fix a sign mismatch warning 2015-04-02 14:30:38 -04:00
JosJuice ee3d36af92 Make Speed Up Disc Transfer Rate not instant
The instant speed broke some games. SUDTR will now emulate
the transfer from the disc drive buffer to the main memory,
but not the speed of the disc drive itself.
2015-04-02 11:46:19 +02:00
JosJuice 0deb9f5e39 Revert "Merge pull request #2256 from RachelBryk/Dolphin-Pro"
This reverts commit ae0a090701, reversing
changes made to 6b6b5ed37f.
2015-04-01 22:30:57 +02:00
Pierre Bourdon ae0a090701 Merge pull request #2256 from RachelBryk/Dolphin-Pro
Limit Wiimote battery usage for Dolphin-lite users.
2015-04-01 21:07:22 +02:00
Rachel Bryk ba93b91565 Add an option for wiimote battery. 2015-04-01 05:29:45 -04:00
Rachel Bryk d39d89594d Limit Wiimote battery usage for Dolphin-lite users.
Wiimote batteries drain over time. The user must upgrade to Dolphin Pro for $19.95 to recharge them.
2015-04-01 04:31:03 -04:00
Jordan Cristiano 4051da75e4 Made cycle count atomic to avoid using a mutex 2015-03-31 04:09:33 -04:00
skidau 6b6b5ed37f Merge pull request #2249 from SizzlingCalamari/DSPLLE-thread-fix
Fixed dsp lle thread never starting
2015-03-31 12:25:59 +11:00
skidau 008200db4d Merge pull request #2244 from lioncash/find
DolphinWX/Common: Change some find_first_of usages to find
2015-03-30 21:07:42 +11:00
skidau 8c47c68a4f Merge pull request #2232 from JosJuice/savestate-exact-version
When loading incompatible savestate, display exact Dolphin version
2015-03-30 18:07:14 +11:00
JosJuice 85073675a5 When loading incompatible savestate, display which version created it 2015-03-30 09:02:43 +02:00
mathieui b1eb87e495 NetPlay: Don’t wait forever in the traversal client
With some specific, STUN-hostile routers, the netplay client can get
stuck forever while trying to connect to the stun server. This adds a
5 seconds (much more than should be necessary if it works) timer until
a failure is registered and the attempt stops.
2015-03-28 20:15:34 +01:00
skidau 4f965da4f1 Revert the recent changes related to updating hwnd 2015-03-28 11:08:25 +11:00
Jordan Cristiano e2060525bc Fixed dsp lle thread never starting because of dspjit initialization happening after the dsp thread check 2015-03-27 19:00:53 -04:00
skidau affa5c2e0b Merge pull request #2228 from Stevoisiak/FixISOPaths
Check for GCMPathes if ISOPaths is not found
2015-03-26 09:48:33 +11:00
Stevoisiak 4f1d74b2e1 Check for GCMPathes if ISOPaths is not found
The name of the settings were changed in 4.0-4003 with PR #1264.
2015-03-25 11:13:13 -04:00
Lioncash eacf741051 DolphinWX/Common: Change some find_first_of usages to find
It's unnecessary to use find_first_of when all you're searching for is a single character.
2015-03-24 08:32:44 -04:00
Lioncash bc1d62036b Core: Fix warnings related to HotkeyManager
These need to be marked static since they aren't used outside of this translation unit.
2015-03-23 08:40:21 -04:00
skidau a0138e19cc Merge pull request #2239 from mickdermack/pr-usbshu
GCAdapter: Don't destroy the libusb context before freeing the device list.
2015-03-23 12:37:05 +11:00
skidau cba34fa6f7 Merge pull request #2193 from magumagu/wii-disable-fakevmem
Disable FakeVMem in Wii mode.
2015-03-23 12:36:24 +11:00
Ryan Houdek 5dbfebcd30 Merge pull request #2216 from Sonicadvance1/aarch64_dirty_dirty
[AArch64] Implement dirty register tracking.
2015-03-22 11:32:43 -05:00
Sintendo c19482c9a3 Add function to emit CMP, or TEST when possible
Also, a spelling mistake.
2015-03-22 17:22:27 +01:00
Sintendo b35c34186c More minor DSP JIT optimizations 2015-03-22 17:14:38 +01:00
skidau 482ef964cf Updated the hwnd for hotkeys. 2015-03-21 21:56:19 +11:00
Michael Ehrenreich 905a663a96 Don't destroy the libusb context before freeing the device list. 2015-03-21 03:12:42 +01:00
skidau 63c4bd665e Merge pull request #2230 from skidau/Mouse-In-Separate-Window
Updated the input plugins reference of hwnd on game start.
2015-03-21 12:46:37 +11:00
Lioncash 1fc1880ca5 Interpreter/Jit Tables: Merge table31 and table31_2 2015-03-20 20:39:51 -04:00
Lioncash 1052863bb9 Interpreter/JIT: Add missing overflow variants into the tables. 2015-03-20 19:20:38 -04:00
skidau c3344eaa88 Preliminary update to the GameCube to GBA link cable emulation. Fixes Zelda Wind Waker's Tingle Tuner connection, Pac-Man Vs, Final Fantasy: Crystal Chronicles multiplayer, and most other Gamecube to GBA link cable games.
* Changed the SI buffer processing so that transfers do not have to be completed instantly
* Added a second socket at port 49420 (0xc10c) which sends clock information to the GBA slaves
* Handled disconnections from the GBA and GC
* Made the transfers asynchronous
* Blocks the socket before the connection times out

Requires VBA-M SVN 1235 or later.
2015-03-20 12:43:55 +11:00
magumagu 337f89959b Merge pull request #2226 from magumagu/restore-wpar-mask
Restore masking to gather pipe address checks.
2015-03-19 11:02:45 -07:00
skidau 98dce11f8c Updated the input plugins reference of hwnd on game start. Fixes the emu wiimotes mouse IR when rendering the game to a separate window. 2015-03-19 21:31:05 +11:00
skidau 7d800b6180 Merge pull request #2224 from gerikkub/AutoFocus
Pause the emulator based on mouse focus
2015-03-19 12:48:03 +11:00
mathieui e0ef8fc03f NetPlay: Make the enet interrupts work
Otherwise, it would work but any async sending would be delayed by 4ms or
wait until the next packet was received.

Also increase the client timeout to 250ms, since enet_host_service is now
really interrupted.
2015-03-18 10:16:11 +01:00
mathieui 8ee402863d NetPlay: Remove RunOnThread and add SendAsync methods
Add std::unique_ptr<sf::Packet> objects to a queue instead of functions,
makes things easier to read, and avoids headaches while checking the
lifetime of the concerned objects.
2015-03-18 10:16:11 +01:00
mathieui 44d7207a1c NetPlay: add a Common/ENetUtil namespace
Move WakeupThread in it
2015-03-18 09:23:44 +01:00
mathieui 603fe25349 NetPlay: use a workaround from comex’s dc-netplay to interrupt enet 2015-03-18 09:23:44 +01:00
skidau 0ac8fd0214 Merge pull request #2183 from RachelBryk/netplay-time
Use system time for start time in netplay.
2015-03-18 13:52:17 +11:00
magumagu 627b77e982 Restore masking to gather pipe address checks.
Apparently it's necessary. Issue 8386.
2015-03-17 12:01:37 -07:00
Scott Mansell 858ff69c01 Make OpArg.offset and operandReg private.
Also cleaned up WriteRest function.
2015-03-17 18:49:30 +13:00
Scott Mansell 6262a9bcbe Make immediates more explicit
Instead of just casting OpArg::offset when needed, add some
accessor functions.

Also add some safety asserts to catch any mistakes.
2015-03-17 18:49:26 +13:00
Gerik Kubiak 341e7e9d8f Added the ability to pause the emulator by moving the mouse outside the window. 2015-03-16 20:28:17 -07:00
magumagu ff6ae8a677 Disable FakeVMem in Wii mode.
I'm assuming nobody thought of this when FakeVMem was turned on by
default; FakeVMem doesn't make any sense in Wii mode.
2015-03-16 17:52:56 -07:00
magumagu 629fb8fb49 Merge pull request #2222 from Tilka/fix_warnings
Fix warnings
2015-03-16 17:41:46 -07:00
skidau b103aa7122 Merge pull request #2189 from magumagu/paired-loadstore-cleanup
Fix paired loadstore to use correct load/store calls.
2015-03-17 11:26:01 +11:00
skidau b170173aca Merge pull request #2196 from magumagu/ipchle-gethostbyname
Fix IPCHLE for gethostbyname.
2015-03-17 11:19:51 +11:00
magumagu adb8bbed90 Merge pull request #2217 from shuffle2/quiet-warnings
quiet some warnings which appear on vs2015.
2015-03-16 11:50:42 -07:00
Tillmann Karras f82afd1b2f Fix warnings 2015-03-16 19:02:30 +01:00
magumagu fd15cad1ca Remove useless volatile from ProcessorInterface.
These values are only accessed/used from the CPU thread.
2015-03-15 20:33:41 -07:00
Shawn Hoffman ad64336137 quiet some warnings which appear on vs2015.
quieted warnings include shadowed variable names and integer extensions.
2015-03-15 19:28:47 -07:00
Ryan Houdek 3e946b1bf7 [AArch64] Implement dirty register tracking.
Using BindToRegister from the register caches causes the register bound to be marked dirty.
Using the regular R() function from the register caches loads the registers without being dirty.

When implementing new instructions make sure to BindToRegister registers that become dirty.
2015-03-15 20:09:30 -05:00
Ryan Houdek 5e0b9179db Merge pull request #2186 from Sonicadvance1/aarch64_optimize_paired_slowmem
[AArch64] Optimize slowmem paired stores.
2015-03-15 14:37:21 -05:00
Ryan Houdek bcc434095d Merge pull request #2212 from Sonicadvance1/fix_user_paths
Fix user directories at times doing stupid things.
2015-03-15 09:45:02 -05:00
Ryan Houdek aaf04aeaca Fix user directories at times doing stupid things.
With my previous changes Dolphin would fail to create the user directory if it didn't exist, and would dump all the configuration options in to the cwdir.
This was a bit more complicated to fix in a clean fashion, so I took to moving around code concerning user directories.
Instead of having GetUserPath serve a dual purpose of both getting and setting our user directories, break out to a new SetUserPath function.

GetUserPath will know only get the configured user path.
SetUserPath will set our user paths and setup the internal user path state.

This ending up being a lot cleaner overall, which is nice. Also less mind bending when attempting to read the code.

So now we won't dump all of our configuration in to the cwdir if ~/.dolphin-emu isn't found.

Fixes issue 8371.
2015-03-15 09:19:48 -05:00
Ryan Houdek 5e6d49d96b Merge pull request #2209 from magumagu/remove-hle-opcode
Remove remnants of old fake opcodes.
2015-03-15 07:13:07 -05:00
Rohit Nirmal 48ec42d4a0 Core: Change NULLs to nullptrs. 2015-03-14 20:20:41 -05:00
magumagu 87dcda5785 Remove remnants of old fake opcodes.
These are illegal opcodes, and should be treated as such.
2015-03-14 16:59:12 -07:00
Markus Wick ec8a074690 Merge pull request #2153 from degasus/enet
enet: Search for shared library
2015-03-14 17:23:27 +01:00
mathieui b9af0c4d12 GC Adapter: Do not abort if some libusb functions are not supported
Also remove a typo.
2015-03-13 18:05:09 +01:00
mathieui 88ab6352dd GC Adapter: do not proceed with the input read if the thread isn’t running
If the Init() call does not work in the fallback path, then abort.
2015-03-13 18:05:09 +01:00
mathieui 5a10be7fef GC Adapter: fix a crash on exit
s_detected is better for detecting that a thread is actually running.
Also make sure the claim_interface is always called when we detect an
adapter.
2015-03-13 18:05:09 +01:00
mathieui ebedc80545 GC Adapter: never call libusb_reset_device()
There should be no need to do this, and performing a reset breaks things
on any other software using the device (e.g. another dolphin instance).
2015-03-13 18:05:09 +01:00
mathieui ad49de7740 GC Adapter: don’t stop scanning after failing to claim an adapter
Only call Shutdown() after all devices have been tested.
2015-03-13 18:05:09 +01:00
mathieui 5f5cc963cf GC Adapter: stop searching adapters after one has been added 2015-03-13 18:05:09 +01:00
skidau 2c6eaf9c76 Cleaned up the controls lock that is not needed with 780eef68f6 2015-03-12 23:33:30 +11:00
Rachel Bryk e7d237f199 Use system time for start time in netplay. 2015-03-11 23:21:14 -04:00
skidau f3bb30f17f Merge pull request #2180 from RachelBryk/netplay-quit
Fix crash when server's client disconnects.
2015-03-12 13:28:38 +11:00
magumagu b523e7d3d3 Fix IPCHLE for gethostbyname.
It turns out that the offsets of the data in the return buffer matter: the
offset 0x340 is hardcoded into the code that uses the result.

With that fixed, get rid of the completely wrong 0x80000000 hack.
2015-03-11 17:08:15 -07:00
magumagu dda5e610eb Fix paired loadstore to use correct load/store calls.
psq_st performs one store, and psq_ld one load, from the perspective of the
MMU; getting this wrong leads to potentially incorrect behavior (incorrect page
faults, weirdness with the gather pipe, etc.).  Fix this, and stop masking
the address when checking for gather pipe writes.

Also a bunch of cleanup.
2015-03-11 17:06:18 -07:00
Dolphin Bot 647cd3c8e0 Merge pull request #2171 from JosJuice/nonmodal-regression
Fix 4.0-5689 regression (AR codes, patches)
2015-03-11 08:15:02 +01:00
skidau d7e54c36f1 Calibrated the GCPad even if the game does not explicitly do so. 2015-03-09 17:07:15 +11:00
skidau d92efc4a3e Merge pull request #2190 from skidau/wiimote-profiles
Fixed the wiimote profiles not taking effect.
2015-03-09 11:30:33 +11:00
magumagu a1dbe8e463 Merge pull request #2166 from MoochMcGee/master
Add various loads and stores to JitIL
2015-03-08 17:12:52 -07:00
magumagu 859c1123ba Fix typo in usage of IsOptimizableMMIOAccess. 2015-03-08 16:20:17 -07:00
skidau b200e83b02 Fixed the wiimote profiles not taking effect. 2015-03-09 08:32:14 +11:00
Ryan Houdek 7f50cc0873 [AArch64] Optimize slowmem paired stores.
This came up from the discussion we were having prior about dumping half of a kilobyte of VFP registers to the stack is insanity.
This was due to me basically copying exactly what I did on ARMv7's paired loadstores, where the impact is less since we only use the bottom 64bits of
the VFP registers.

So I decided to think about how to improve upon this since I got called out on my terrible code.
The solution I have come up with is instead of jumping to the common ASM routine and having that check if it needs to take the fastmem or slowmem
routes, just inline the check in to the JIT block and jump to either a fastmem or slowmem handler.
Fairly simple, and this allows us to only flush the registers that are required when doing so. Should give a reasonable increase in performance for
games that use the slowmem path quite a lot.
2015-03-08 16:12:49 -05:00
Ryan Houdek a9622c247b Merge pull request #2146 from Sonicadvance1/aarch64_optimize_fpr_push_pop
[AArch64] Optimize FPR pushing and popping.
2015-03-08 08:51:45 -05:00
skidau 3e12787cc8 Fixed a crash on launch which occurred if the hotkeys are not defined and the default hotkeys are loaded. 2015-03-08 20:27:14 +11:00
skidau 12ecc537e9 Renamed the Menu Accelerators to Key Shortcuts.
Cleared the default mapping of hotkeys as they were conflicting with the key shortcuts.
Removed the Open, Change Disc, Refresh List and Exit hotkeys as they work only when driven from the menu.
2015-03-08 20:27:13 +11:00
skidau 780eef68f6 Fixed the crash that would occur when the Refresh button was pressed in the controllers config.
- Simplified the locking mechanism when controllers were updated
- Reloaded the config of the controls instead of re-initialising the control plugins
- Fixed controls being unresponsive after the Refresh button was pressed
- Disables the hotkeys while the controller config is open
2015-03-08 20:27:13 +11:00
skidau a83d27b9c2 Increased the performance of the hotkey code by:
* Halving the number of hotkeys checked for (there were extra for future use)
* Gets the controller status once before parsing hotkeys
* Checks for the GUI lock once before parsing hotkeys
* Removed some redundant memsets
2015-03-08 20:27:12 +11:00
magumagu 9c045e2496 Merge pull request #2094 from lioncash/flags
Interpreter: Flag cleanups/fixes.
2015-03-07 17:38:00 -08:00
Rachel Bryk 3df51e553f Fix crash when server's client disconnects. 2015-03-07 04:40:24 -05:00
JosJuice 4a41ab1715 Fix 4.0-5689 regression (AR codes, patches)
CreateCodeTab, ARCodeAddEdit and PatchAddEdit
need to be able to modify arCodes/onFrame.
2015-03-06 12:26:40 +01:00
magumagu 92ba677371 Merge pull request #2174 from skidau/warning-fix-gc-adapter
Warning fix
2015-03-05 14:56:19 -08:00
skidau ef3fd68603 Warning fix 2015-03-06 09:34:38 +11:00
Tillmann Karras 45dbcf0ed2 Jit64: use MRegSum where appropriate 2015-03-05 21:58:28 +01:00
Tillmann Karras e27fae22d8 Jit64: drop a FIXME that has been fixed for years
See 6cdb40a194.
2015-03-05 21:58:28 +01:00
Lioncash b7514955e5 Merge pull request #2113 from Stevoisiak/VolumeCleanup
Basic volume code cleanup
2015-03-05 12:18:53 -05:00
skidau 203c64e66d Changed the GC Adapter rumble command to work like other controllers. 2015-03-05 23:57:18 +11:00
skidau 4cf4cee30e Removed the GC Adapter "Use Thread" option as it was not useful. 2015-03-05 23:30:43 +11:00
skidau e5277a5f49 Ignore invalid rumble data sent over Netplay to the GC Adapter 2015-03-05 23:11:48 +11:00
skidau dee6a04980 Moved the gcpad calibration from construction to runtime 2015-03-05 23:06:19 +11:00
Lioncash a11bbe6fea PPCTables: Remove FL_OUT_S.
This is unused, and since it had the same value as FL_OUT_D, it was unnecessarily setting the rS register as an output, even on instructions that only have FL_OUT_D set.
2015-03-03 16:23:28 -05:00
Lioncash 139dbcb8e2 Interpreter_Tables: Fix wrong flags and add missing ones 2015-03-03 16:23:21 -05:00
Darius Goad f4750804ab Add various loads and stores to JitIL 2015-03-03 11:17:25 -06:00
Ryan Houdek 81242dd4a7 [AArch64] Allow the other FPR push/pop routines to use a temporary register. 2015-03-02 21:38:09 -06:00
Tillmann Karras a5ea6c6e93 enet: fix Visual Studio files 2015-03-02 22:20:37 +01:00
Ryan Houdek f1a9db9bdc [AArch64] Stop violating the AAPCS64 so much. 2015-03-02 11:21:15 -06:00
skidau 939159cd71 Cleared the status of the GC Adapter before populating it with new data 2015-03-02 11:08:26 +11:00
Tillmann Karras 88264f5712 Fix -Wswitch warning 2015-03-01 16:17:32 +01:00
skidau 4dd0813dcf Merge pull request #2133 from randomstuff/hotkeys
Fix hotkeys for Linux
2015-02-28 10:59:18 +11:00
Markus Wick 4f9fcbaba9 Merge pull request #2120 from JosJuice/show-default-gameini
ISOProperties: Allow opening region-free INIs with "Show Defaults" button
2015-02-27 17:58:42 +01:00
skidau 2a41ac4072 Merge pull request #2123 from RachelBryk/nonmodal-isoprops
Make iso properties non modal.
2015-02-27 13:25:46 +11:00
skidau 85359d5169 Merge pull request #2124 from RachelBryk/framelimit-hotkeys
Fix order of some hotkeys
2015-02-27 13:24:32 +11:00
Stevoisiak 06cb85991e De-capitalized CountryCode 2015-02-26 16:57:31 -05:00
Ziek a629555e6b Added Gui elements in Netplay Setup Diag so a person can choose a traversal server
Fixed bug with UPnP so that it will grab the proper address and protocal
Fixed bug that caused dolphin to freeze when host codes were to large
2015-02-25 18:28:26 -08:00
Ziek 1dea3780a7 Fixed issue where players were not disconnecting correctly 2015-02-25 18:28:26 -08:00
Ziek 074d688884 Change netplay initial gctime to be determined by the hosts initial time 2015-02-25 18:28:26 -08:00
Ziek 4cdc307b87 Moved Traversal Client code over from old netplay
Moved over gui code for copying host code
added gui to netplay diag setup to switch between direct and traversal connection
2015-02-25 18:28:25 -08:00
Ziek 461a54338b Switched tcp over to enet 2015-02-25 18:17:50 -08:00
Gabriel Corona 1cae151c9c Avoid conflicts between hotkeys and global keybindings for Linux
Alt+foo are usually used as global keybindings.
2015-02-26 01:40:06 +01:00
Gabriel Corona 13d43c0cde Fix linux hotkeys
Backticks are necessary when the key is not /^[A-Za-Z]*$/.
2015-02-26 01:29:52 +01:00
Lioncash 7408de7e79 Merge pull request #2058 from Stevoisiak/Codemaid-Cleanup-Take2
Basic Formatting/Whitespace Cleanup
2015-02-25 18:07:56 -05:00
Stevoisiak 93b16a4a2d Formatting/Whitespace Cleanup
Various fixes to formatting and whitespace
2015-02-25 10:48:21 -05:00
Rachel Bryk 2c54ca0f84 Fix order of some hotkeys 2015-02-25 00:42:40 -05:00
skidau f4e42b394c Merge pull request #2106 from magumagu/elf-translation-registers
Correctly set up MSR and BAT registers for ELF loading.
2015-02-25 12:42:48 +11:00
Rachel Bryk 2df8190e1a Make iso properties non modal. 2015-02-24 19:11:03 -05:00
degasus 967eaad8df VideoCommon: rename efb2tex and efb2ram 2015-02-24 23:10:13 +01:00
degasus 1313d3461f VideoCommon: always enable efb copy 2015-02-24 23:01:01 +01:00
JosJuice a1f0f60a79 CoreParameter: Refactor game INI code 2015-02-24 20:01:11 +01:00
Ryan Houdek 28e55d29f2 Fix a crash with fastmem disabled.
When the core is busy shutting down only uninstall the exception handler if fastmem is actually enabled.
We only install when fastmem is enabled, so only uninstall when it is as well.

Fixes a crash I was getting on ARMv7.
2015-02-24 04:52:37 -06:00
skidau bd0d5c1a22 Merge pull request #2102 from magumagu/ipchle-net-regression
Fix crash in Wii games using IPCHLE networking.
2015-02-24 13:14:48 +11:00
skidau bf61abf22b Merge pull request #2093 from magumagu/gc-bios-hack
Hack around our terrible GC BIOS emulation.
2015-02-24 13:11:25 +11:00
Tillmann Karras f298f00e1b Clean up the intrinsics #ifdef mess 2015-02-24 01:02:36 +01:00
Ryan Houdek 7a61bd5519 Merge pull request #2107 from Sonicadvance1/aarch64_fix_lha
[AArch64] Fix fastmem lha/lhax.
2015-02-23 15:08:42 -06:00
magumagu b9157c5a36 Merge pull request #2090 from magumagu/jit-gatherpipe-address
Refactor gather-pipe address checking.
2015-02-23 12:46:04 -08:00
magumagu 0ff7e20829 Merge pull request #2109 from lioncash/cr
Interpreter: Fix Helper_UpdateCR1
2015-02-23 11:23:21 -08:00
Lioncash 6fe59d82e1 Interpreter: Fix Helper_UpdateCR1
This previously shifted off-by-one
2015-02-23 06:56:01 -05:00
Ryan Houdek 859eeb6d5b [AArch64] Fix fastmem lha/lhax.
When the fastmem loadstore would fail, we would disassemble a few instructions to determine if lhbrx or lhz*
This was failing since I was checking the REV16 instruction that appears after the LDRH. Fixed it to make sure it was checking the correct instruction
which is SXTH.

Fixes an issue where homebrew wouldn't load with fastmem enabled.
2015-02-22 22:58:10 -06:00
magumagu fca5e176b3 Correctly set up MSR and BAT registers for ELF loading. 2015-02-22 20:51:50 -08:00
skidau 793abccb5e Merge pull request #1942 from Buddybenj/No-Intro
Replace Country Names With No-Intro Names
2015-02-23 12:56:28 +11:00
Lioncash 1a913138d5 Interpreter: Uncomment code related to cmp and cmpl
This is actually correct. Also cmpli has this uncommented as well.
2015-02-22 19:07:09 -05:00
magumagu b5020b1675 Fix crash in Wii games using IPCHLE networking.
Address passed from IOS to PowerPC should be in the 0x90000000 range, not
0x10000000.

Issue 8264.
2015-02-22 14:07:05 -08:00
Dolphin Bot 03ffab4249 Merge pull request #2098 from Tilka/fix_warning
Fix -Wmissing-variable-declarations warning
2015-02-22 20:16:11 +01:00
Tillmann Karras 8d19f62b69 Fix -Wmissing-variable-declarations warning 2015-02-22 20:08:28 +01:00
magumagu 917a900ccb Refactor gather-pipe address checking.
The implementation of IsOptimizableGatherPipeWrite is extremely simple
now, but it will get a bit more complicated with dynamic-bat.
2015-02-22 11:01:42 -08:00
magumagu 18ada7a0f5 Merge pull request #2033 from magumagu/mmio-fix-addresses
Fix the addresses of MMIO registers.
2015-02-22 10:58:25 -08:00
Fiora c54a8c54fb Merge pull request #1994 from Tilka/vtune
JitRegister: fix VTune integration
2015-02-22 07:58:12 -08:00
Lioncash bfa5dcc891 Interpreter: Set the FPCC bits correctly for ordered/unordered FP compares
Setting the whole FPRF is slightly incorrect, this should only modify the FPCC bits; the class bit should be preserved.
2015-02-22 02:19:13 -05:00
magumagu 97b7f26d58 Hack around our terrible GC BIOS emulation.
Fixes a crash launching F-Zero GX.
2015-02-21 20:07:54 -08:00
Lioncash 09319a1e11 Interpreter: Rearrange ordered/unordered compares
Comparing floating point numbers with == can trigger warnings (and have static analysis tools complain). So we make it the else case.
This also more closely resembles the Gekko manual.
2015-02-21 22:26:23 -05:00
Lioncash 70e1121b29 Interpreter_Tables: srawix only uses rS, not rS and rB.
srawix's input/output is defined as rA, rS, SH, where SH is an immediate for the shift amount.
2015-02-21 21:20:43 -05:00
Lioncash 7c244766dc Interpreter: Use correct destination for psq_l, psq_lx, psq_lu, and psq_lux.
Gekko manual defines these as storing to rD, not rS.

Also removed FL_OUT_FLOAT_S, since nothing uses it now.
2015-02-21 21:20:41 -05:00
Lioncash 7bc2830520 Interpreter: Use Helper_Get_EA_X() for eciwx and ecowx
Cleans up the functions a little.
2015-02-21 21:20:40 -05:00
Lioncash dc6cc909e5 Interpreter: Use FL_IN_A0B for ecowx
ecowx uses the value zero if rA is zero.
2015-02-21 21:20:39 -05:00
Lioncash a8199a1070 Interpreter: Use correct destination for eciwx
Gekko manual defines the destination as rD. Also, if rA is zero, the
value zero is used, so FL_IN_AB is changed to FL_IN_A0B.
2015-02-21 21:20:38 -05:00
Pierre Bourdon 860c889454 Merge pull request #2076 from tanishalfelven/optimize-IsCPUThread
IsCPUThread() Speed Up
2015-02-22 00:54:55 +01:00
Tanis 568f0dca78 In hope of speeding up ```IsCPUThread()``` got rid of id checking and instead implemented a TLS boolean...
Made initialization of s_tls_is_cpu_key threadsafe
2015-02-21 17:52:49 -06:00
magumagu 9e29154b08 Merge pull request #1988 from magumagu/fast-checkgatherpipe
Use faster CheckGatherPipe from JIT.
2015-02-21 15:07:59 -08:00
Pierre Bourdon e8f37bc3fe Merge pull request #2091 from magumagu/lmw-saved-regs
Fix registersInUse in Jit64::lmw.
2015-02-21 18:42:17 +01:00
magumagu 018a7f1ec9 Fix registersInUse in Jit64::lmw.
Doesn't fix any known issue at the moment, but I ran into this bug with
dynamic-bat.
2015-02-21 09:31:20 -08:00
Markus Wick 95c48b2be7 Merge pull request #2018 from JosJuice/gameini-region-wildcard
Support game INIs that match all regions
2015-02-21 15:47:57 +01:00
magumagu 0360e01eaf Merge pull request #2040 from magumagu/gc-memmap
Try to fix our memory map to match the GameCube.
2015-02-19 15:44:36 -08:00
magumagu 314b241220 Try to fix our memory map to match the GameCube.
This basically just restores the RAM mirroring that existed before PR1856
(address translation).
2015-02-19 15:02:51 -08:00
Pierre Bourdon fbbbad98e9 Merge pull request #2079 from lioncash/tables
PowerPC: Minor cleanups.
2015-02-19 22:51:34 +01:00
magumagu d0c675af83 Merge pull request #2080 from lioncash/interp
Interpreter: Remove unnecessary prototypes and includes
2015-02-19 11:19:20 -08:00
Lioncash 8401b5a1f2 Interpreter: Remove unnecessary prototypes and includes 2015-02-19 13:20:24 -05:00
Lioncash a60d3306b1 PowerPC: Get rid of magic numbers related to interp/JIT initialization. 2015-02-19 12:16:53 -05:00
Lioncash d32359c915 PPCTables: Simplify UsesFPU
We can just retrieve the op info and check if the FPU flag is present
2015-02-19 12:16:44 -05:00
Pierre Bourdon 6a14300c9c Merge pull request #2078 from lioncash/fwd
PPCTables: Remove an unnecessary forward declaration
2015-02-19 15:51:15 +01:00
Lioncash e4df6026c4 PPCTables: Remove an unnecessary forward declaration
This class name isn't used anymore.
2015-02-19 09:08:00 -05:00
Lioncash 0fc3166b2f PPCTables: Correct some flag descriptions 2015-02-19 08:56:18 -05:00
Lioncash c8c61041ba Merge pull request #2007 from lioncash/si
Core: Move several files into the correct VS directory filter.
2015-02-18 21:33:39 -05:00
Ryan Houdek 19f8524304 Fix mulli's flags in the instruction tables.
It doesn't set RC, so this flag is incorrect.
2015-02-18 16:26:12 -06:00
Shawn Hoffman f91e8e9423 make libusb vcxproj use standard dolphin template and don't compile strerror.c. 2015-02-18 13:29:39 -08:00
Pierre Bourdon 8cc6e5cff9 Merge pull request #1854 from JosJuice/read-disc-after-delay
DVDInterface: Read disc after delay, not before
2015-02-18 20:35:07 +00:00
Pierre Bourdon 042fcbcbca Merge pull request #2067 from magumagu/cputhread-assert
Disable an IsCPUThread() assert in Release builds.
2015-02-18 16:22:23 +00:00
Ryan Houdek ef2fba2e85 Merge pull request #2070 from lioncash/unused
PowerPC: Remove unused enum values
2015-02-17 23:42:46 -06:00
Lioncash 78d917b0b3 PowerPC: Remove unused enum values 2015-02-18 00:37:32 -05:00
Lioncash 0b3a2ae4ca PowerPC: Document the instruction table flags
Should make it easier for newcomers to get up to speed.
2015-02-18 00:17:51 -05:00
Buddybenj 265a21a565 Replace Country Names With No-Intro Names 2015-02-17 18:50:10 -06:00
Ryan Houdek 127e742992 Merge pull request #2046 from Mullin/Fix-unsigned/signed-stores
[ARMv7] Fix unsigned/signed stores
2015-02-17 14:38:36 -06:00
Mullin 39aa2432a6 Fix signed/unsigned stores 2015-02-17 21:29:01 +01:00
Fiora 53bf21e15a Merge pull request #2066 from lpereira/regcache-with-variadic-tpl
Jit64: Use variadic templates for RegCache locking
2015-02-17 08:53:07 -08:00
Lioncash 39e121e551 Merge pull request #2064 from magcius/fix-tilt
WiimoteEmu: Add back the calibrated accel data to the EEPROM
2015-02-17 11:14:09 -05:00
JosJuice 3ac0977bc6 DVDInterface: Read disc after delay, not before 2015-02-17 14:57:36 +01:00
Leandro Pereira 1162c5344b Jit64: Use variadic templates for RegCache locking 2015-02-17 10:01:42 -02:00
Ryan Houdek 3aa605236d Merge pull request #2041 from Sonicadvance1/AArch64_vertex_loader
[AArch64] Vertex loader and things
2015-02-17 00:51:51 -06:00
magumagu 77a0bfdd8f Merge pull request #2055 from magumagu/fakevmem-code
Allow executing code out of FakeVMEM.
2015-02-16 19:13:14 -08:00
magumagu cce503c879 Disable an IsCPUThread() assert in Release builds.
IsCPUThread is extremely slow at the moment, and this code runs
frequently.
2015-02-16 19:07:42 -08:00
Jasper St. Pierre e53268be1b WiimoteEmu: Add back the calibrated accel data to the EEPROM
It seems that games actually read this to determine how to act, which
isn't particularly strange. I was imagining it was more for the
Wiimote's internal normalization, but I was wrong.
2015-02-16 15:16:23 -08:00
Ryan Houdek f54a0d3ff4 [AArch64] Minor floating point loadstore improvements.
These use the Vector x Element FMUL instruction to improve speeds slightly.
Should give ~3cycle improvement per quantized loadstore done.
2015-02-16 16:51:39 -06:00
magumagu f316265973 Fix the addresses of MMIO registers.
MMIO registers are located at 0x0C000000 and 0x0D000000, not 0xCC000000.
The 0xCC000000 addresses are just an artifact of address translation.
2015-02-15 18:29:37 -08:00
magumagu 5b6a947e8f Merge pull request #2035 from magumagu/remove-bat-option
Remove the BAT checkbox/setting/implementation.
2015-02-15 17:27:18 -08:00
Markus Wick f38b3ace38 Merge pull request #2038 from magumagu/disable-thread-safety-checks
Disable thread safety assertions added in PR1987.
2015-02-15 10:33:19 +01:00
skidau d601657c99 Merge pull request #2045 from greyrogue/master
Add Datel AGP save commands for SRAM/FRAM.  Improve EEPROM.
2015-02-15 12:57:58 +11:00
greyrogue 2d4aa2a195 Add save commands for SRAM/FRAM. Improve EEPROM.
Handle possible endian file read issues at file access time instead of
using Swap64 on every access.
Code comments and clean up.
2015-02-14 20:36:26 -05:00
skidau 72e8e78ec8 Merge pull request #2037 from magumagu/illegal-inst-handling
Improve illegal instruction handling.
2015-02-15 12:34:08 +11:00
skidau 32d8f887fe Merge pull request #2032 from mathieui/update-libusb-externals
Update the libusb in externals to 1.0.19 (latest)
2015-02-15 12:32:10 +11:00
Pierre Bourdon 3500740dd4 Windows AVIDump: support "silent" frame dumping
When enabled, the silent option will avoid popping up dialog boxes for
overwrite confirmation or codec selection. The codec selection defaults to
uncompressed RGB.

This is required for FifoCI on Windows which needs to drive Dolphin from the
command line exclusively.
2015-02-14 23:38:14 +01:00
magumagu 001bf9152e Allow executing code out of FakeVMEM.
Fixes regression from PR1856 (address translation).
2015-02-14 14:08:46 -08:00
Lioncash e3b9be6dbb Core: Move several files into the correct VS directory filter 2015-02-13 20:57:23 -05:00
Tillmann Karras a7cc36e711 Movie: reintroduce a local variable 2015-02-14 02:27:15 +01:00
Rachel Bryk b66df8424a Remove an unneeded global variable from Movie.cpp. 2015-02-13 20:11:44 -05:00
Ryan Houdek b989c2fd8f [AArch64] Fix another assert in the JIT register cache. 2015-02-13 12:16:06 -06:00
Tillmann Karras d33e760c55 Jit64: turn short jmp into near jmp
Fixes a regression from #1856's ac54c6a.
2015-02-13 07:51:34 +01:00
magumagu f9e8ad39fc Fix typos from PR1856 (address translation). 2015-02-12 12:11:33 -08:00
magumagu 98b809a05e Disable thread safety assertions added in PR1987.
We do a whole bunch of non-threadsafe stuff, especially in the UI, and I'm
probably not going to get around to implementing a threadsafe framework
for interaction between the UI and the CPU thread anytime soon.  See issue
8220.
2015-02-12 11:54:17 -08:00
magumagu 985087c7e2 Make all unknown opcodes behave consistently.
Consistently fall back to the interpreter for unknown instructions, and
make sure GetOpInfo() always returns a non-null pointer.
2015-02-11 22:18:33 -08:00
magumagu e640ef9d7b Improve illegal instruction handling.
This should more reliably show an error message for illegal
instructions.
2015-02-11 21:01:00 -08:00
magumagu aa40f750d4 Remove the BAT checkbox/setting/implementation.
The current version of the setting is useless, and the real implementation
(PR1882) will be always-on, and won't use any of the existing code.
2015-02-11 20:24:51 -08:00
magumagu 49f223a211 Remove setting "BlockMerging".
It isn't hooked up to anything anymore, and it isn't the sort of thing we
want users messing with anyway.
2015-02-11 19:52:48 -08:00
Tillmann Karras 0ec48e0ec9 JitRegister: fix VTune integration 2015-02-12 02:14:49 +01:00
magumagu 0e0a196a1c Merge pull request #1856 from magumagu/correct-translation-disable-2
Make address translation respect the CPU translation mode
2015-02-11 17:04:12 -08:00
Tillmann Karras 4fa38f0c02 Externals: update libusb to version 1.0.19 2015-02-12 01:04:43 +01:00
magumagu 4193350d22 Memmap: add an explanation of Dolphin's memory layout. 2015-02-11 15:22:21 -08:00
skidau 4ff5ec7117 Merge pull request #1984 from mathieui/GCAdapter-fixes
Fix issues with the GC adapter handling code
2015-02-12 09:54:53 +11:00
magumagu aaee23d1b4 Fix ARM64 build for address translation changes. 2015-02-11 13:56:38 -08:00
magumagu e136c8a066 PowerPC: misc cleanup. 2015-02-11 13:56:36 -08:00
magumagu ac54c6a4e2 Make address translation respect the CPU translation mode.
The PowerPC CPU has bits in MSR (DR and IR) which control whether
addresses are translated. We should respect these instead of mixing
physical addresses and translated addresses into the same address space.

This is mostly mass-renaming calls to memory accesses APIs from places
which expect address translation to use a different version from those
which do not expect address translation.

This does very little on its own, but it's the first step to a correct BAT
implementation.
2015-02-11 13:56:22 -08:00
JosJuice f9d6c17c08 Use CoreParameter's game INI functions in more places 2015-02-11 19:01:05 +01:00
JosJuice e186104960 Don't use revision-specific unique ID strings outside of CoreParameter 2015-02-11 19:01:04 +01:00
JosJuice 47e67f9696 CoreParameter: Support game INIs that match all regions 2015-02-11 19:01:03 +01:00
JosJuice 8670f2a627 CoreParameter: Unify LoadDefaultGameIni and LoadLocalGameIni
A side effect of this is that user INIs now can specify revisions.
I don't think anyone will use it, but there's no reason to not allow it.
2015-02-11 19:01:03 +01:00
JosJuice d73a6ea3b7 Move some BootManager game INI code to CoreParameter 2015-02-11 19:01:02 +01:00
magumagu d9988ee9b5 Merge pull request #1987 from magumagu/thread-safety
Cleanup usage of atomic/threadsafe functions
2015-02-10 13:48:12 -08:00
magumagu 0f96a0104e Merge pull request #1752 from Buddybenj/clean-up
Clean Up
2015-02-10 11:39:14 -08:00
Lioncash 07556b4849 WiimoteEmu: Change define into a variable and move it to where it's used. 2015-02-10 11:46:04 -05:00
Markus Wick 2aef84d80c Merge pull request #2025 from phire/be-neobrain
Remove VBeam Speed Hack.
2015-02-09 12:55:58 +01:00
Scott Mansell 4cb01673a0 Remove now useless NumFields Function which always returned 1. 2015-02-10 00:48:06 +13:00
Scott Mansell 8f416821ad Remove VBeam Speedhack. 2015-02-09 23:10:30 +13:00
mr.greywater a1f8c232b2 Fix warning message when loading german discs
Added COUNTRY_GERMANY as EUR_DIR so it will not show the warning message that the GCM/ISO is invalid. Also refactors the code to remove duplicate code.
2015-02-08 16:38:35 +01:00
Lioncash 537b9e507b Merge pull request #1998 from FL-dolphinemu/align_g_HKData_struct
Vertical aligned all members of g_HKData struct.
2015-02-07 21:31:45 -05:00
Fiora 73d65f3ad3 Merge pull request #1874 from magumagu/remove-unchecked-reads
JIT: cleanup instrction merging for idle loop and dcbst.
2015-02-07 13:48:22 -08:00
skidau 8f4bcf3ec3 Merge pull request #2012 from lioncash/memswitch
Memmap: Fix switch fallthroughs
2015-02-06 21:47:24 +11:00
skidau 66d80b75e2 Merge pull request #1939 from Sintendo/dspjit_ccnits
Minor DSP JIT optimizations
2015-02-06 13:53:09 +11:00
JosJuice 3414f818cd DVDInterface: Get rid of DVDCommandResult struct
It's only used in one place and is no longer necesssary.
2015-02-05 15:10:31 +01:00
JosJuice af4f872dfe DVDInterface: Schedule event in ExecuteCommand 2015-02-05 15:10:14 +01:00
mathieui 8e556603af Fix issues with the GC adapter handling code
If we successfully detach the kernel driver from the interface, we
should continue instead of aborting the setup.

And we should not use libusb_handle_events(), as the API says it is only
for backwards compatibility. Additionally, if the adapter thread is not
active, dolphin will take 60 seconds to close because the
libusb_handle_events() timeout is hardcoded to 60 seconds. Instead, use
libusb_handle_events_timeout_completed() with a timeout of 1 second.
Also, cancel the libusb transfers before the join(), to be able to close
the usb device without libusb screaming in the background (and
potentially crashing).

And finally, split the Init() and Shutdown() functions to avoid having
to init and exit libusb every time we neeed to detect the adapter.
2015-02-05 10:03:21 +01:00
Sintendo 46df8a5358 Correct clobber comments 2015-02-04 22:26:40 +01:00
Sintendo ca0790e9c9 Merge Update_SR_Register64_Carry functions 2015-02-04 22:26:40 +01:00
Sintendo 34afe08de9 Minor DSP JIT optimizations 2015-02-04 22:26:39 +01:00
degasus 68c70be960 HotKey: fix warnings 2015-02-04 20:19:16 +01:00
Lioncash e07679114b Use emplace_* functions where in-place construction is preferable 2015-02-04 11:39:08 -05:00
Lioncash d7c6a7522d Memmap: Fix switch fallthroughs
Fixes a bug where out of range MEM2 accesses would hit the locked cache.
2015-02-04 08:28:52 -05:00
skidau 3709a1ce3a Fixed the crash which occurred when opening Wiimote configuration before a game was started. 2015-02-04 18:48:19 +11:00
skidau b9fb6ad3e8 Initialised all controller interfaces together on CFrame construction to fix the crash that would occur if the controller config were opened before a game was started. 2015-02-04 18:05:22 +11:00
skidau 5e645732f2 Merge pull request #1949 from skidau/hotkey-input
Added the ability to map gamepad buttons to hotkeys.
2015-02-04 14:35:03 +11:00
skidau 4e7d2ab893 Merge pull request #1985 from CarlKenner/accelerometers
Fix accelerometer wiimote/nunchuk emulation.
2015-02-02 12:15:43 +11:00
FL.dolphinemu 4f65787888 Vertical aligned all members of g_HKData struct. 2015-02-01 10:07:22 +01:00
Ryan Houdek f9c2d73970 Remove an old comment about stfiwx.
This instruction does exactly what it is supposed to. No need for this comment.
2015-02-01 00:30:53 -06:00
magumagu 30d15b3a32 Clean up usage of PowerPCState::Exceptions.
Accessing any member of ppcState from a thread other than the CPU thread
is not allowed; don't pretend that there's any exception to that rule.
2015-01-31 12:02:45 -08:00
skidau 3b07fe01a2 Merge pull request #1982 from skidau/AGP-hash
Advance Game Port (AGP) fixes
2015-01-31 12:34:01 +11:00
magumagu 5a3f75f5cf Use faster CheckGatherPipe from JIT.
We don't need to profile explicit calls to CheckGatherPipe: we aleady know
where they are. Skip profiling, and explciitly insert an exception check.

While I'm here, get rid of unused code in JitIL.
2015-01-30 17:00:58 -08:00
magumagu 47be9d8e6b Clean up usage of ScheduleEvent_Threadsafe. 2015-01-30 14:48:23 -08:00
Ryan Houdek a277172b49 Merge pull request #1980 from Sonicadvance1/AArch64_more_optimizations
[AArch64] Minor optimizations
2015-01-30 08:33:19 -06:00
Ryan Houdek 7cd80200ed [AArch64] Remove an extraneous nop in 8bit fastmem stores. 2015-01-30 08:30:17 -06:00
Ryan Houdek 4ff2f105cc [AArch64] Implement MMIO Writes. 2015-01-30 08:30:11 -06:00
Lioncash b1547b9c8b Use unique_ptr for some IVolume instances 2015-01-29 21:33:19 -05:00
skidau ccc1e9aa65 Changed the hash array to a CRC8 function. 2015-01-30 13:33:17 +11:00
CarlKenner fb370110dc Fix horribly broken accelerometer emulation.
It now emulates the least significant bits.
And it no longer treats maximum acceleration in one direction as being in the opposite direction.
2015-01-30 12:38:21 +10:30
skidau 855ad6f1d3 Fixed an overflow bug in Jit64. 2015-01-30 13:00:23 +11:00
skidau a42fb80f6a Added a hash key finder.
Fixed the memcard and AGP path parsing in Windows (the code is expecting '/' to be used as the DIR_SEP).
2015-01-30 13:00:23 +11:00
skidau 83a9f1b850 Merge pull request #1972 from lioncash/ref
EXI_DeviceAGP: Pass string by reference
2015-01-30 12:58:26 +11:00
Ryan Houdek 9b4a896353 Remove an old outdated comment that makes no sense.
This comment was left over from a long time ago. It is no longer true.
2015-01-29 09:40:22 -06:00
Ryan Houdek 631c8a981e [AArch64] Minor performance improvements to paired stores.
We can combine these two ST1 calls in to a single ST1 call.
Saves a few cycles in paired stores
2015-01-29 06:07:00 -06:00
Ryan Houdek 235f6c2445 [AArch64] Don't flush VFP register to stack when not needed. 2015-01-29 06:07:00 -06:00
Ryan Houdek c8c062fa96 [AArch64] Add support for MMIO loads.
Should give a small performance benefit.
2015-01-29 06:06:54 -06:00
Markus Wick 109fa8c2c8 Merge pull request #1800 from randomstuff/jit-register
Add support of more JIT-compiled code for profiling
2015-01-28 13:23:32 +01:00
Gabriel Corona c3777bbd69 JitRegister: TrampolineCache 2015-01-28 10:41:45 +01:00
Gabriel Corona 329834f653 JitRegister: JitAsm 2015-01-28 10:41:03 +01:00
Gabriel Corona 3c14930a0a JitRegister: JitAsmCommon
Allows profiling/debugging tools to know about JITed code.
2015-01-28 10:40:05 +01:00
Gabriel Corona a957f93532 Use printf-like format in JitRegister::Register
The API is cleaner (no more magic default parameter) and more
extensible like this.
2015-01-28 09:47:08 +01:00
Tillmann Karras 257deb7886 CoreTiming: fix warning 2015-01-28 08:27:14 +01:00
Lioncash 7dc5bc622f EXI_DeviceAGP: Pass string by reference 2015-01-27 10:15:27 -05:00
JosJuice 443d371fa3 DVDInterface: Don't use return for ExecuteReadCommand result
There's a small timing change here. If no disc is inserted, the
ticks_until_completion passed to ExecuteReadCommand will be used.
2015-01-27 09:47:02 +01:00
JosJuice de86d539f2 DVDInterface: Move fast disc speed check to ExecuteReadCommand
This breaks the workaround used for Star Wars: Rouge Leader,
but that problem has gotten a more proper solution in 4.0-4889.
2015-01-27 09:46:58 +01:00
Markus Wick 43605f8716 Merge pull request #1948 from magumagu/remove-efb-cache
Remove EFB to RAM cache, and simplify code.
2015-01-27 09:42:15 +01:00
skidau c20ef8bb8c Merge pull request #1919 from skidau/AGP
Added support for AGP. Original patch by GreyRogue.
2015-01-27 13:25:14 +11:00
skidau 61c04de7ee Added the ability to map gamepad buttons to hotkeys. 2015-01-27 12:24:47 +11:00
Ryan Houdek 983c7f4f21 [Android] Select the AArch64 recompiler core by default if shown to support ARMv8. 2015-01-26 00:50:25 -06:00
Ryan Houdek 5ba1319abb Merge pull request #1953 from Sonicadvance1/AArch64_fix_paired_loadstores
[AArch64] Fix all of the paired store instructions.
2015-01-25 23:07:44 -06:00
Ryan Houdek c340a324bc Merge pull request #1947 from Sonicadvance1/AArch64_tu_tl_merge
[AArch64] Implement TU/TL merging.
2015-01-25 23:07:32 -06:00
Rohit Nirmal 51b27c5481 Fix building with PCH disabled. 2015-01-25 21:40:31 -06:00
Ryan Houdek 3274df7158 Merge pull request #1961 from Sonicadvance1/AArch64_game_fixes
[AArch64] Fix a load of games.
2015-01-25 18:26:42 -06:00
Ryan Houdek b1fc18cbaa Merge pull request #1958 from Sonicadvance1/Rearchitect_asmcommon
Rearchitect a bit of our AsmCommon routines.
2015-01-25 18:26:17 -06:00
Ryan Houdek d291148016 [AArch64] Implement TU/TL merging.
Basically stolen from the x86 recompiler. Works well on AArch64 as well!
2015-01-25 18:05:33 -06:00
Ryan Houdek f24c466e7e [AArch64] Fix AArch64 instruction encoding. 2015-01-25 17:26:18 -06:00
Rohit Nirmal d10b4d9b8b Fix building with PCH disabled. 2015-01-25 11:34:22 -06:00
Ryan Houdek e4e08b0596 [AArch64] Make sure to load the full destination register on float instructions.
With the float instructions that only affect the lower 64bits of the destination register, we need to make sure to load the full 128bit register.
This ensures that we aren't saving garbage in to the top 64bits.
2015-01-25 03:17:46 -06:00
Ryan Houdek 2483f7b359 [AArch64] Fix addcx. 2015-01-25 03:17:14 -06:00
Ryan Houdek 6791a808b6 [AArch64] Fix addzex. 2015-01-25 03:16:57 -06:00
Ryan Houdek 84b90ad1c6 [AArch64] Fix cmp 2015-01-25 03:16:29 -06:00
Ryan Houdek 12b9ada268 Rearchitect a bit of our AsmCommon routines.
JitCommon is becoming a cluster of x86 specific things and things that are common to multiple recompilers.
This overlap is beginning to cause us issues.

Begin by breaking out the common ASM arrays to have their own file and move the x86 specific routines to their own folder.
2015-01-24 20:06:15 -06:00
Benjamin Przybocki 4f324ad742 Clean Up 2015-01-24 17:10:21 -06:00
Tony Wasserka 43036af944 Merge pull request #1812 from phire/real_zfreeze
Add proper zfreeze support.
2015-01-24 13:29:57 +01:00
Ryan Houdek 93f3816eae [AArch64] Fix all of the paired store instructions.
These had some minor errors in them that I discovered with the hardware test and Viewtiful Joe.
All work as they should now.
2015-01-23 23:18:49 -06:00
Dolphin Bot 4e9497cdb8 Merge pull request #1057 from phire/IsMMIOAddress2
Further improvements to IsMMIOAddress (Includes tests!)
2015-01-24 05:55:35 +01:00
Scott Mansell fe28d1476a Make the IsMMIOAddress function easier to read, add tests.
This also makes IsMMIOAddress more restrictive.
2015-01-24 17:24:40 +13:00
Ryan Houdek 088b6b2ec3 Merge pull request #1081 from phire/jitil-float-mem-opts
JitIL Float load/store optimizations.
2015-01-23 21:47:03 -06:00
Scott Mansell 5c34766809 Propagate elf loading failure up.
Also fix mistake in error message.
2015-01-24 16:28:34 +13:00
Scott Mansell 3106b20fbe JITIL: Improve address calulation for float loads/stores.
For floating loads with a known address, this eliminates the pattern of:

   mov r12d, 80001014
   mov rdx, r12d
   mov rdx, dword ptr [rbp+rdx]

and generates a nice simple:

   mov rdx, dword ptr [rbp+00001014]
2015-01-24 16:08:50 +13:00
Scott Mansell b7d4ff679a IsWiiElf: Optimise inner loop.
Instead of swaping each word of the elf code section(s) looking
for a match to our pattern, we swap the pattern just once (at
compile  time) and test against our swapped pattern.
2015-01-24 15:41:32 +13:00
Scott Mansell 2bf052d8b9 ElfReader: Clean up elf loader code.
* Don't claim to support any features we don't, like relocation
 * Actually zero-out BSS sections, as memory might not be already
   zeroed.
 * Deleted commented out code.
 * Removed GetPointer, updated to more modern interface methods.
 * Updated pointer types style from "u32 *x" to "u32* x"
2015-01-24 15:41:32 +13:00
Scott Mansell 1e5762b163 BootUp: Clean up elf BootUp code.
* The file already exsists, otherwise we wouldn't have gotten
   this far in the boot.
 * We have already checked if it's a Wii or GameCube elf,
   besides, it's too late to change our minds now anyway.
 * On Wii - Don't call EmulatedBS2, it can never succeed as
   it knows nothing about booting elfs. Just call the
   SetupWiiMemory directly if needed.
 * On GameCube - We still call EmulatedBS2_GC, but we stop
   it from running Apploader, which might boot something
   unexpected from the default iso or DVD root folder.
2015-01-24 15:41:28 +13:00
Scott Mansell 2642c3f73b BootElf: Use unique_ptr<u8 []> instead of vectors. 2015-01-24 15:32:38 +13:00
skidau f1a4b98d36 Merge pull request #1879 from magumagu/idle-exception-check
For idle loops, perform an exception check before CoreTiming::Advance.
2015-01-24 12:28:44 +11:00
skidau 7dafad5a8b On DCBZ, mask the memory address to ensure that the address is within physical memory. The AGP disc DCBZ's against an out of bounds physical address. 2015-01-24 12:19:33 +11:00
skidau 8a561b57c3 Added EEPROM saving to file. 2015-01-24 12:15:48 +11:00
skidau a7299a7fff Added support for AGP. Original patch by GreyRogue. 2015-01-24 12:13:23 +11:00
skidau 18cee2dcc7 Added second parameter for the eject disc via StopMotor DI command. The AGP disc expects the disc to still be readable after sending an eject command. 2015-01-24 12:13:23 +11:00
magumagu 6659c15bed Remove EFB to RAM cache, and simplify code. 2015-01-23 10:48:15 -08:00
skidau 0b1d8fae1b Merge pull request #1926 from skidau/emu-wiimote-speaker-adpcm-sample-rate
Fixed the emulated wiimote speaker's ADPCM sample rate.  Patch by hk.konpie
2015-01-23 12:31:20 +11:00
Ryan Houdek db690a1862 Merge pull request #1936 from lioncash/kb
Minor keyboard-related cleanups.
2015-01-22 16:23:34 -06:00
Ryan Houdek bff230fe2e Merge pull request #1945 from skidau/GCPad-Init
Fixed the GCPad and GCKeyboard getting initialised four times each.
2015-01-22 10:41:43 -06:00
Scott Mansell e88c02dece Ensure that ZSlopes save/restore state correctly.
Had to re-do *ShaderManager so they saved their constant arrays
instead of completly rebuilding them on restore state.
2015-01-23 03:32:31 +13:00
skidau 6ad5d4681a Fixed the GCPad and GCKeyboard getting initialised four times each. 2015-01-23 00:06:54 +11:00
Ryan Houdek 85754c63ca [AArch64] Implement mfspr/mtspr XER routines.
These were fairly simple to implement.
2015-01-21 16:56:27 -06:00
Ryan Houdek e7f2a04699 Merge pull request #1938 from CarlKenner/paddedfunctions
Skip zeroes that sometimes pad function to 16 byte boundary (eg. Donkey Kong Country Returns).
2015-01-21 15:17:31 -06:00
Ryan Houdek 80e6367e46 Merge pull request #1869 from Stevoisiak/GeneralConsistency
Minor consistency changes
2015-01-21 13:46:53 -06:00
Ryan Houdek f9fc9d47c0 Merge pull request #1895 from JosJuice/isvolumewiidisc
Don't read from disk when checking volume type
2015-01-21 13:45:28 -06:00
Ryan Houdek 4c9fd63562 Merge pull request #1932 from Buddybenj/freelook
Fix Default Freelook Hotkey to Match Description (For Real This Time)
2015-01-21 13:41:29 -06:00
Ryan Houdek b8b537d96e Merge pull request #1934 from Buddybenj/change-order
Change Order of Some Hotkeys
2015-01-21 13:38:10 -06:00
Ryan Houdek 41dd0667ed Merge pull request #1930 from Sonicadvance1/AArch64_scalar_ops
[AArch64] Move the 64bit floating point instructions to scalar.
2015-01-21 13:28:53 -06:00
Ryan Houdek d86eaea393 Merge pull request #1935 from Sonicadvance1/AArch64_fix_fp_loadstore
[AArch64] Fix bugs in floating point loadstores.
2015-01-21 13:28:46 -06:00
CarlKenner 0ab1517134 Skip zeroes that sometimes pad function to 16 byte boundary (eg. Donkey Kong Country Returns).
This fixes function detection in the debugger, and prevents functions showing up as four bytes inside another function.
2015-01-22 02:00:35 +10:30
Lioncash 52e74a5070 GCKeyboardEmu: Use range-based for loops for iterating the key arrays 2015-01-20 21:28:40 -05:00
Lioncash b1c1a2cc6f Core: Add the GCKeyboard source files to the GCKeyboard VS filter
Was previously in the GCPad filter.
2015-01-20 21:19:51 -05:00
Lioncash 566a7a4829 SI_DeviceKeyboard: Remove superfluous virtual specifiers.
Removes an unnecessary memset as well.
2015-01-20 21:03:58 -05:00
skidau 5cd8a80553 Merge pull request #1893 from skidau/GCKeyboard
Added GameCube Keyboard support.
2015-01-21 12:43:49 +11:00
Ryan Houdek 32bfccce32 [AArch64] Fix bugs in floating point loadstores.
The Backpatching routines didn't correctly understand where to find the real VFP register from, so in most cases it was using D0.
Fixes bugs in the slowmem loadstore routines as well.
2015-01-20 19:11:04 -06:00
Benjamin Przybocki a25b07ec56 Change Order of Some Hotkeys 2015-01-20 18:16:36 -06:00
Ryan Houdek e3cff625cb Merge pull request #1906 from jefflongo/patch-1
Update NetPlayServer.cpp
2015-01-20 17:13:13 -06:00
Benjamin Przybocki 9291d61d98 Fix Default Freelook Hotkey to Match Description (For Real This Time) 2015-01-20 16:46:38 -06:00
Ryan Houdek 67f2ff2e18 [AArch64] Move the 64bit floating point instructions to scalar.
Instead of doing vector operations and throwing away the top 64bits of each operation, let's instead use scalar operations.
On Cortex-A57 this saves us three cycles per vector operation changed to scalar, so this saves 3-9cycles per instruction emulated.
Also puts one less micro-op in to the vector pipeline there.
On the Nvidia Denver I couldn't see any noticeable performance difference, but it's a quirky architecture so it may be noticing we are throwing away
the top bits anyway and optimizing it. The world may never know what's truly happening there.
2015-01-20 16:35:08 -06:00
Ryan Houdek 7f68a357ad Merge pull request #1914 from Sonicadvance1/AArch64_minor_improvements
[AArch64] Minor Improvements and bug fix.
2015-01-20 16:33:17 -06:00
Ryan Houdek cb967a6ff2 Merge pull request #1911 from Sonicadvance1/AArch64_paired_loadstores
[AArch64] Implements paired loadstores
2015-01-20 16:33:08 -06:00
Ryan Houdek 4262d2199a [AArch64] Implements paired loadstores. 2015-01-20 13:57:14 -06:00
skidau 84848b52e0 Fixed the emulated wiimote speaker's ADPCM sample rate. Patch by hk.konpie. 2015-01-21 00:11:54 +11:00
Tillmann Karras 873902b4a3 VertexLoader: remove non-JIT SSE code 2015-01-20 01:51:07 +01:00
Ryan Houdek 38cb9bbfae Merge pull request #1889 from magumagu/remove-hle-end
Remove HLE_HOOK_END.
2015-01-19 18:16:47 -06:00
jefflongo 6b64c309df Update NetPlayServer.cpp
Update NetPlayServer.cpp
2015-01-19 12:13:23 -08:00
Ryan Houdek 98d99a9eef [AArch64] Optimize loadstores address calculation.
For offsets that fit in the instruction encoding then we should just put it in the instruction encoding.
Saves an instruction in a large amount of loadstores.
2015-01-18 16:45:42 -06:00
Ryan Houdek cfd4348b7a [AArch64] Fully implement cmpl and cmpli. 2015-01-18 16:45:00 -06:00
Ryan Houdek 4547b64959 [AArch64] Fixe a bug in constant propagated ComputeRC.
Must not have been thinking, we do want to sign extend when the highest bit is set.
2015-01-18 16:44:33 -06:00
Ryan Houdek 44405e2ec2 Expose the JIT quantize and dequantize arrays to all the JITs.
Removes the ARMv7 arrays that were being used, and lets it use the common one instead.
2015-01-18 16:20:26 -06:00
Tillmann Karras e80b657cf4 Move MOVBE wrappers directly into XEmitter class 2015-01-18 13:29:34 +01:00
Tillmann Karras eb13aa43fe XEmitter: overload MOVBE() 2015-01-18 12:59:33 +01:00
skidau 37a770bb9f Merge pull request #1896 from johnwchadwick/asmcommon-larger-codespace
Increase AsmCommon code space to fix crashes on Linux systems.
2015-01-18 15:22:31 +11:00
skidau a2d98ced67 Merge pull request #1892 from magumagu/backpatch-padding
JIT: Fix the return pointer for backpatched operations.
2015-01-18 14:20:03 +11:00
JosJuice ace060748b Don't read from disk when checking volume type
Should be faster than relying on the OS to cache the magic words.
Also gets rid of the odd recursive call in VolumeDirectory.
2015-01-17 13:21:02 +01:00
John Chadwick 390ec6977c Increase AsmCommon code space to fix crashes on Linux systems.
Revision b058bbd was causing the AsmCommon routines to overrun the code
buffer allocated for it. According to Fiora, it happens only on Linux
because of the fact that Linux has more caller-save registers than other
platforms.
2015-01-17 01:36:45 -05:00
skidau 5dedf88922 Escaped the backslash character and relabelled the = key to EQUALS so that it gets saved in the ini profile. 2015-01-17 11:46:56 +11:00
skidau 5e8ab05cc0 Added GameCube Keyboard support. 2015-01-17 09:36:05 +11:00
magumagu c09e41d652 JIT: Fix the return pointer for backpatch trampolines.
The key change is that for stores less than 5 bytes, the correct
place for the trampoline to return is immediately after the backpatched jump,
not somewhere inside it.
2015-01-15 19:30:59 -08:00
magumagu e92e1e5873 Remove HLE_HOOK_END.
It isn't used, it isn't implemented in interpreter, and the implementation
in JIT is wrong.
2015-01-15 11:54:20 -08:00
Tillmann Karras 904a1c5558 Jit64: fix psq_l/st regression 2015-01-14 23:36:24 +01:00
Stevoisiak f31b688cf5 More minor consistency changes 2015-01-12 22:28:12 -05:00
Stevoisiak cb86db7b68 Minor consistency changes
Mostly small changes, like capitalization and spelling
2015-01-12 15:18:18 -05:00
Matthew Parlane cf8333abd2 Merge pull request #1876 from Parlane/is_dir_fileio_fix
Don't open a file handle for a directory in FileIO
2015-01-13 08:29:23 +13:00
magumagu 213eb730d0 For idle loops, don't explicitly call CoreTiming::Advance.
This is more consistent with the way Dolphin behaves with idle skipping off.
2015-01-11 20:42:08 -08:00
skidau 7105e5a8f0 Merge pull request #1863 from magumagu/dma-efb
Allow locked L1 DMA to write to the EFB
2015-01-12 12:03:46 +11:00
Matthew Parlane 729a827372 Don't open a file handle for a directory in FileIO 2015-01-12 13:25:39 +13:00
magumagu 90d0096653 JIT: cleanup instrction merging for idle loop and dcbst.
Use MergeAllowedNextInstructions where appropriate, and read from the
instruction buffer rather than poking directly into memory.
2015-01-11 12:53:23 -08:00
Fiora d5e342f229 JIT: fix regression in non-fastmem for psq_st 2015-01-11 11:20:58 -08:00
Fiora e8cfcd3aeb JIT: make instruction merging generic
Now it should be easier to merge more than 2-instruction-long sequences.
Also correct some minor inconsistencies in behavior between instruction
merging cases.
2015-01-11 09:11:18 -08:00
Ryan Houdek 074f246c69 Merge pull request #1868 from rohit-n/sign-compare
Fix -Wsign-compare warnings.
2015-01-11 07:08:55 -06:00
Ryan Houdek 83a415198d Merge pull request #1852 from Sonicadvance1/AArch64_Recompiler_Improvements
Implements a large portion of the recompiler for AArch64
2015-01-11 07:08:16 -06:00
Rohit Nirmal 577af09d1b Fix -Wsign-compare warnings. 2015-01-11 01:38:06 -06:00
Pierre Bourdon 394257f33b Merge pull request #1798 from FioraAeterna/overclock
Support overclocking and underclocking the Gamecube CPU
2015-01-11 06:12:27 +01:00
magumagu 9b0bf34d00 Allow locked L1 DMA to write to the EFB.
I wouldn't have guessed that anyone would do this, but apparently people
who write video codecs love doing weird stuff with the locked L1 cache.
2015-01-10 15:08:21 -08:00
Fiora 8237004448 JIT: optimize for the common case of unquantized psq_l/st
Optimistically assume used GQRs are 0 in blocks that only use one GQR, and
bail at the start of the block and recompile if that assumption fails.

Many games use almost entirely unquantized stores (e.g. Rebel Strike, Sonic
Colors), so this will likely be a big performance improvement across the board
for games with heavy use of paired singles.
2015-01-10 14:14:43 -08:00
Fiora c2c950108d Support overclocking and underclocking the Gamecube CPU
Won't work with all games, but provides a nice way to spend extra CPU to make
a variable framerate game faster (e.g. Spyro or The Last Story), or to make
a game use less CPU at the cost of a lower framerate (e.g. Rogue Leader).
2015-01-10 10:46:38 -08:00
comex e32d63c43d Merge pull request #1865 from magumagu/getpointer-break
Add missing "break" in Memory::GetPointer.
2015-01-10 02:46:42 -05:00
magumagu 5bd3123b2a Add missing "break" in Memory::GetPointer. 2015-01-09 22:47:45 -08:00
Ryan Hitchman 1bd01469c2 WiimoteReal/Linux: log connect failures at WARNING level 2015-01-09 22:45:03 -08:00
Ryan Hitchman 09f71b25b4 WiimoteReal: retry failed connections quickly
Retry a failed connection after a short delay -- hardware sometimes needs some
time to settle, or other Bluetooth programs are attempting to query the
device as well (e.g. blueman-manager).
2015-01-09 22:38:16 -08:00
Ryan Hitchman c1b391d08b WiimoteReal: fix Linux Bluetooth connectivity on Linux >= 3.5
An uninitialized struct member "l2_bdaddr_type" was making most connect calls
fail with "Invalid argument". The connection could succeed if the unitialized
memory happened to have a zero byte in the appropriate location.
2015-01-09 22:38:11 -08:00
skidau 27300d5d59 Merge pull request #1848 from skidau/si-devices-id
Fixed the GC Steering Wheel and Dance Mat identification.
2015-01-10 12:16:36 +11:00
skidau c1962ac9a6 Merge pull request #1842 from magumagu/hle-crash
OSREPORT: Fix out-of-bounds string access.
2015-01-10 12:15:57 +11:00
Fiora 55b509b739 Interpreter: fix slwx 2015-01-09 11:39:41 -08:00
Ryan Houdek 5a28883f9e [AArch64] Implements 15 floating loadstores. 2015-01-08 19:56:47 -06:00
Ryan Houdek 7370473eb3 [AArch64] Implement 19 floating point instructions 2015-01-08 19:56:47 -06:00
Ryan Houdek 6dff4421d3 [AArch64] Implement 24 paired instructions. 2015-01-08 19:56:47 -06:00
Ryan Houdek 602702fdcb [AArch64] Implement three system register instructions. 2015-01-08 19:56:47 -06:00
Ryan Houdek 0dd3804cf7 [AArch64] Implement 13 integer instructions. 2015-01-08 19:56:47 -06:00
Ryan Houdek be0d552d54 [AArch64] Enable the full range of integer loadstores. 2015-01-08 19:56:47 -06:00
Ryan Houdek b1169a9773 [AArch64] Flush FPRs if they won't be used be used the rest of the block. 2015-01-08 19:56:47 -06:00
Ryan Houdek 3fe0b5b969 [AArch64] Add floating point backpatching support. 2015-01-08 19:56:47 -06:00
Ryan Houdek f1443bec1e [AArch64] Add a memory dump routine.
Allows me to easily disassemble a block of code from the Nexus 9 by dumping it to logcat.
2015-01-08 19:56:47 -06:00
Ryan Houdek b3201be95f [AArch64] Add some static_asserts.
Makes sure we have a few PPCState values within range of STRB's range.
2015-01-08 19:56:47 -06:00
Ryan Houdek 74de345b51 [AArch64] Fix loads with update.
Update register wasn't being loaded in to the cache prior pushing the address in to it.
Adds float push and pop routines around the calls that need it as well.
2015-01-08 19:56:47 -06:00
Ryan Houdek 52a532370a [AArch64] Implement FPR Cache. 2015-01-08 19:56:47 -06:00
skidau 25c6f6e6a1 Merge pull request #1782 from FL-dolphinemu/master
Issue 7968: Added keybinds for increasing, decreasing, and muting audio.
2015-01-08 14:09:18 +11:00
Tillmann Karras 4d1face540 Fix indentation 2015-01-07 21:51:47 +01:00
skidau 99ca789b97 Fixed the GC Steering Wheel and Dance Mat identification. 2015-01-07 23:40:41 +11:00
skidau 0d952534c7 Corrects the origin in the case where a GC Controller has been set in the controller properties, but a controller has not been plugged into the adapter. 2015-01-07 17:12:30 +11:00
skidau ab87309917 Merge pull request #1838 from JosJuice/clearcoverinterrupt-timing
DVDInterface: Use default delay for DVDLowClearCoverInterrupt
2015-01-07 12:41:21 +11:00
skidau c0ff677674 Merge pull request #1763 from skidau/GC-Adapter-error-recovery
Added an error recovery mechanism for the GC Adapter.
2015-01-07 12:40:14 +11:00
magumagu f1420472c8 OSREPORT: Fix out-of-bounds string access. 2015-01-06 17:12:31 -08:00
Dolphin Bot 89b7f1057f Merge pull request #1804 from FioraAeterna/fastermmu2_master
MMU: various improvements, bugfixes, optimizations
2015-01-07 00:49:58 +01:00
Markus Wick a2ec4d5f51 Merge pull request #1836 from FioraAeterna/catchillegalinst
JIT: catch illegal instruction errors
2015-01-06 23:10:46 +01:00
JosJuice 5162ed4d5f DVDInterface: Use default delay for DVDLowClearCoverInterrupt
The old delay was probably a hack to make up for the incorrect
disc speeds. Using it with the new disc speeds made
Resident Evil Archives: Resident Evil Zero freeze when starting.
2015-01-06 21:25:17 +01:00
Markus Wick f63361ad26 Merge pull request #1810 from Stevoisiak/FreelookDefaultHotkeyFix
Changed default freelook hotkey to match description
2015-01-06 20:52:00 +01:00
Markus Wick 09a10622dd Merge pull request #1621 from FioraAeterna/pscleanup
JIT: cleanups/optimizations for ps loadstore
2015-01-06 20:12:50 +01:00
Fiora 8f7c799794 JIT: catch illegal instruction errors
Still crash, but at least give a message informing the world that it happened.
2015-01-06 11:06:49 -08:00
Markus Wick 25fac0282c Merge pull request #1764 from Armada651/safe-exclusive
D3D: Only try to apply exclusive mode when the renderer is in focus.
2015-01-06 11:00:47 +01:00
Markus Wick d8d4c94e07 Merge pull request #1819 from Tilka/cmake
CMake: simplify some expressions
2015-01-06 09:27:59 +01:00
Fiora e85f0ff179 MMU: fix problems with blocks that cross vmem page boundaries
In rare cases, this can result in a violation of the JIT block cache constraint
that blocks must end in the same place. This can cause instability, lockups,
due to blocks not properly being invalidated properly.
l Please enter the commit message for your changes. Lines starting
2015-01-05 10:46:04 -08:00
Fiora b058bbd223 JIT: move mfcr code to JitAsmCommon
It's like 80+ instructions, so inlining it on every use of mfcr is probably
not the best for the icache.
2015-01-05 10:46:03 -08:00
Fiora 821db9798c Memmap: clean up function argument names.
To be more consistent overall.
2015-01-05 10:46:02 -08:00
Fiora 3d2492627f Fastmem: increase the size of trampoline cache in MMU mode, check space
Fastmem in MMU mode generates way more trampolines than normal, so we need
a bunch more space too, lest we run out of room.
2015-01-05 10:46:01 -08:00
Fiora 1ee83e332e MMU: optimize PTE lookup code
Pull out calculation of PTE1 instead of comparing the separate parts.
2015-01-05 10:46:01 -08:00
Fiora 16e756cb39 MMU: fix TLB behavior on setting C bit
We shouldn't be updating the TLB when setting the C bit.

Bug reported by tueidj.
2015-01-05 10:45:59 -08:00
Fiora 8903df7300 MMU: simplify code to restore original data register after failed load
Instead of passing the value around constantly, just store it in the regcache,
note where it is, and restore it on the exception path.

This saves a whole bunch of pushing and popping and gives a ~5% speed boost
in Rebel Strike. It's a bit ugly, but it simplifies a lot of code and is
faster, too.
2015-01-05 10:45:59 -08:00
Fiora 53b44ccb3a x64ABI: enhance MOVTwo to take an offset
This lets us merge displacements into MOVTwo in trampolines.
2015-01-05 10:45:58 -08:00
Fiora 2a8936312e Fastmem: jump to trampolines instead of calling them
Should be slightly faster, and also lets us skip the nops on the way back.

Remove the trampoline cache, since it isn't really useful anymore with this.
2015-01-05 10:45:54 -08:00
Fiora 9923d705df JIT: simplify and optimize memcheck macros
Instead of jumping over update code and similar, just jump directly to the
handler.

This avoids redundant exception checks in the case where we can't do fastmem
memory operations (e.g. paired loadstore).
2015-01-05 10:34:59 -08:00
Fiora 6dc7cf29f3 JIT: implement crset special case
Rebel Strike seems to use this one.
2015-01-05 10:34:59 -08:00
Fiora 0ff6ad5734 MMU: handle exception checks in fastmem
Inspired by a patch by magumagu.
2015-01-05 10:34:58 -08:00
Fiora 190312e1a6 MMU: enable fastmem stores 2015-01-05 10:34:58 -08:00
Fiora 8e1c92f2e7 MMU: remove goto in MMU fast past check
Split into a separate patch to avoid rebasing conflicts and to split from
functional changes.
2015-01-05 10:34:57 -08:00
Fiora 6f028257d7 MMU: remove code that looks totally wrong
I don't think this affects any games (who puts PTEs in MEM2?) but it didn't
make any sense.
2015-01-05 10:34:57 -08:00
Fiora dde8b24d00 MMU: small simplification of TLB structure
We only need one "recent" per set, not NUM_WAYS recents. Slightly faster.
Breaks savestate compatibility.
2015-01-05 10:34:56 -08:00
Fiora a0e5c76a1f Memmapfunctions: more refactoring and optimizations
Try to clean up some redundant code, simplify a few checks, and simplify
page accesses.
2015-01-05 10:34:56 -08:00
Fiora c2ed29fe0d MemmapFunctions: various MMU optimizations
Small TLB lookup optimizations: this is the hot path for MMU code, so try to
make it better.

Template the TLB lookup functions based on the lookup type (opcode, data,
no exception).

Clean up the Read/Write functions and make them more consistent.

Add an early-exit path for MMU accesses to ReadFromHardware/WriteToHardware.
2015-01-05 10:34:55 -08:00
Fiora ea23ce2726 MMU: fix rollback in DSIs on page-crossing stores
I don't know if this affected anything, but it was subtly wrong.
Also reorganize the loads to match, for consistency.
2015-01-05 10:34:55 -08:00
skidau 519970c003 Added a callback option instead of using a thread to read the GC adapter. 2015-01-05 12:43:26 +11:00
skidau 8e9ff68352 Set the GC pad origin using the real hardware origin instead of the virtual hardware. 2015-01-05 12:27:36 +11:00
skidau cd4e0399ec Added an error recovery mechanism for the GC Adapter. 2015-01-05 12:27:36 +11:00
Tillmann Karras fffd890be3 SI_GCAdapter: properly clean up libusb 2015-01-05 01:31:54 +01:00
Stevoisiak 2f47faf016 Changed default freelook hotkey to match description 2015-01-04 17:07:43 -05:00
Jules Blok b7e056c74d Host: Add Host_RendererIsFullscreen(). 2015-01-04 17:09:56 +01:00
skidau b06a3fb144 Merge pull request #1809 from magumagu/simplify-isi
JIT: simplify ISI handling.
2015-01-04 20:31:16 +11:00
Fiora 33b03fab81 JIT: cleanups/optimizations for ps loadstore
I'm not quite sure why the float paired stores were written how they were,
but it should be more consistent now.

Also get rid of the use of a psTemp global that wasn't really needed.

Add some comments.
2015-01-03 10:30:13 -08:00
Tillmann Karras 6bcdb10eee CMake: simplify some expressions 2015-01-03 13:17:57 +01:00
Pierre Bourdon c3d52e0476 Merge pull request #1789 from Tilka/memleak
DSPHLE: fix an unimportant memory leak
2015-01-03 01:50:16 +01:00
skidau 3738d27b24 Merge pull request #1776 from JosJuice/cleanrip-wii-discs
Fix CleanRip reading Wii discs
2015-01-03 10:42:51 +11:00
skidau 598dc033f2 Merge pull request #1739 from JosJuice/wii-di-timing
Accurate loading times for Wii games
2015-01-03 10:41:18 +11:00
magumagu 1e370550c4 JIT: simplify ISI handling.
When we try to JIT from a block which doesn't exist, don't JIT any code;
just update the PPC state to indicate an ISI.  This is a little simpler,
and avoids abusing the JIT block cache.
2015-01-01 19:25:48 -08:00
Fiora 92a0716f65 Memory: forceinline read/write hardware functions, TLB/page functions
MSVC wasn't actually inlining these. Should give a nontrivial performance boost
in MMU-heavy games.
2014-12-30 18:04:21 -08:00
skidau 5d55bceeb3 Merge pull request #1773 from FioraAeterna/fixcarryearlyblockend
JIT: fix carry optimization on blocks that end early
2014-12-30 11:15:45 +11:00
Tillmann Karras a00ae4ad79 DSPHLE: fix an unimportant memory leak 2014-12-29 18:39:24 +01:00
Ryan Houdek a09d854636 Merge pull request #1760 from rohit-n/shadow
DSPLLE: Silence -Wshadow warning and conform more to style.
2014-12-28 16:43:08 -06:00
Markus Wick c5a0b6bf50 Merge pull request #1432 from randomstuff/linux-perf
Add Linux perf JIT support (/tmp/perf-$pid.map)
2014-12-28 23:12:52 +01:00
Ryan Houdek 15f074dd21 Merge pull request #1766 from Armada651/enable-stereo
Enable stereoscopy settings.
2014-12-28 15:14:53 -06:00
FL.dolphinemu 78f8bf7423 Issue 7968: Added keybinds for increasing, decreasing, and muting audio. 2014-12-28 22:03:21 +01:00
Rohit Nirmal fd0d19aa82 DSPLLE: Silence -Wshadow warning and conform more to style. 2014-12-28 09:52:31 -06:00
JosJuice bb93336ecf DiscIO: Replace "raw" functions with "decrypt" parameters
This is intended to make decryption look less implicit in the code.
2014-12-28 10:35:48 +01:00
Fiora 354e255827 JIT: fix carry optimization on blocks that end early
I don't know if this shows up currently, but e.g. if you force blocks to be
under a certain length, this problem (a crash) shows up.
2014-12-27 23:20:05 -08:00
JosJuice 72f8f243c7 Never decrypt data when using DI command 0xA8
CleanRip relies on this when ripping Wii discs.
2014-12-27 13:49:25 +01:00
Ryan Houdek 1dbd8c0b96 Merge pull request #1745 from degasus/remove_gpu_sync
VideoCommon: Make GPU syncing hack optional
2014-12-27 04:26:17 -06:00
Ryan Houdek 339383b8dd Merge pull request #1756 from JosJuice/eslaunch-regression
Fix 4.0-4724 ES_Launch and System Menu regressions
2014-12-26 08:02:39 -06:00
Pierre Bourdon b3bae9eef7 Merge pull request #1473 from phire/cleanHLE
Clean up debug string functions in OS_HLE.
2014-12-26 13:49:59 +01:00
Jules Blok 70b898e2c6 VideoConfig: Rename Separation to Depth and update descriptions.
More accurate since it's not a real IPD and Nvidia also calls it depth.
2014-12-24 23:28:23 +01:00
JosJuice 329af1aea3 Always read 0x20 bytes of disc ID 2014-12-23 13:25:04 +01:00
JosJuice 61da252858 Mark cover as open when no disc is inserted 2014-12-23 09:43:51 +01:00
skidau e396286361 Merge pull request #1751 from FenrisulfrX/master
AR: Fix Memory Copy Without Pointer Support
2014-12-23 12:39:48 +11:00
JosJuice 14ff0004b5 Check if there is a disc for all disc reads 2014-12-22 16:34:18 +01:00
JosJuice 867bd2eb34 Only use bounds check for DVDLowUnencryptedRead 2014-12-22 15:01:55 +01:00
Pierre Bourdon c5c10fe48b Merge pull request #1757 from JosJuice/gc-ipl-regression
Fix 4.0-4724 GC IPL regression
2014-12-22 13:03:08 +01:00
JosJuice c1ad4055a3 Fix 4.0-4724 GC IPL regression
Apparently the IPL actually writes to address 0.
2014-12-22 11:38:44 +01:00
FenrisulfrX e70baf43d4 AR: BugFix to Memory Copy Without Pointer
Using ReadUncheked to avoid changing the state of the emulation
2014-12-22 06:22:01 -02:00
skidau a00aa1a770 Merge pull request #1746 from skidau/dsp-thread-lock
Added lock guards around the DSP LLE cycle count updating.
2014-12-22 17:45:06 +11:00
skidau 4ede885702 Added lock guards around the DSP LLE cycle count updating.
Changed the isRunning flag to a Common::Flag.
2014-12-22 16:40:01 +11:00
Ryan Houdek 0d744cddf6 Merge pull request #1729 from Sonicadvance1/AArch64_compare_me
[AArch64] Add partial support for cmp* instructions.
2014-12-21 20:56:49 -06:00
Ryan Houdek d35f7231dc Merge pull request #1727 from Sonicadvance1/AArch64_conditional_continue
[AArch64] Adds support for conditional continue.
2014-12-21 20:56:36 -06:00
Ryan Houdek 47b67fe527 Merge pull request #1744 from Buddybenj/google-code
Update Outdated Google Code References
2014-12-21 20:55:56 -06:00
Ryan Houdek 02aea1b4c5 [AArch64] Adds support for conditional continue.
Requires PR #1723 prior to merging.
2014-12-21 20:48:40 -06:00
Ryan Houdek 1da6995d5b Merge pull request #1728 from Sonicadvance1/AArch64_BindToRegister
[AArch64] Adds support for BindToRegister to the integer instructions.
2014-12-21 20:48:24 -06:00
Ryan Houdek bd4fa951a9 Merge pull request #1726 from Sonicadvance1/AArch64_flush_if_not_needed
[AArch64] Flush registers from register cache if they won't be used again.
2014-12-21 20:46:38 -06:00
Ryan Houdek 4fad742da4 Merge pull request #1723 from Sonicadvance1/AArch64_loadstores
[AArch64] Implements loadstores with AArch64
2014-12-21 20:46:23 -06:00
Ryan Houdek 5cf79fd3b1 Merge pull request #1724 from Sonicadvance1/AArch64_dispatcher_optimization
[AArch64] Optimization in the dispatcher.
2014-12-21 20:08:40 -06:00
Ryan Houdek e423939c9f Merge pull request #1754 from FioraAeterna/mmulogspam
Eliminate some spammy log messages in MMU mode
2014-12-21 20:05:07 -06:00
Ryan Houdek 4247506c00 [AArch64] Implements loadstore instructions in the JIT recompiler.
These instructions are all implemented with fastmem support.
Currently loads with update are disabled due to an issue that I've yet to figure out.
I'm sure I'll figure that out later.
2014-12-21 19:43:59 -06:00
Ryan Houdek 17a4208fe5 [AArch64] Adds backpatching routines.
Currently supports only integer loadstores. Floating point loadstores will come later.

This system is semi based on the ARMv7 backpatching routine, where we need to initialize our backpatch routine sizes prior to actually using them so
we know we won't be overwriting any memory.
2014-12-21 19:40:29 -06:00
Fiora e7a49ae5f3 Eliminate some spammy log messages in MMU mode
dcbz: just don't use GetPointer, that can't be right anyways
ppcanalyst: don't print "instruction hex 0" messages in MMU mode, where ISIs
are expected.
2014-12-21 12:41:44 -08:00
Fiora 3b7d7da1ac JIT: Fix redundant MOVs in x86 trampolines
Fixes spammy log messages about redundant MOVs.
2014-12-21 12:06:07 -08:00
FenrisulfrX 46e74782a7 AR: Fix Memory Copy Without Pointer Support
Fix a bug when using AR codes with "Memory Copy Without Pointer Support"
code type which would write more data than it should.
2014-12-21 16:45:50 -02:00
degasus 7e12fec7c3 VideoCommon: Make GPU syncing hack optional
This hack is there for quite a long time, and lots of games crashes if it's disabled.
But it's still a hack, so it shouldn't be enabled hard coded. This commit create a new
ini option for this hack which is enabled by default.
Maybe some games does still run very fine without this hack.
2014-12-21 11:54:53 +01:00
Benjamin Przybocki fba3c48ec4 Update Outdated Google Code References 2014-12-20 21:17:51 -06:00
Ryan Houdek ab2b499fa6 [ARMv7] Minor integer fastmem optimization.
This is a one instruction optimization for integer loadstores.
Makes sure to enable nop padding in some cases where a fault can still happen and cause us to overwrite other instructions that aren't meant to be.
2014-12-20 19:41:33 -06:00
Ryan Houdek c22e750f74 [AArch64] Add partial support for cmp* instructions.
This support is as far as ARMv7's support for these instructions.
Requires PR #1728 prior to merging.
2014-12-20 19:41:04 -06:00
Ryan Houdek 6f0fbac68f [AArch64] Adds support for BindToRegister to the integer instructions.
This requires PR #1723 prior to merging.
2014-12-20 19:40:14 -06:00
Ryan Houdek 73542ce93e [AArch64] Flush registers from register cache if they won't be used again.
This requires PR #1705 and #1723 prior to merging.
2014-12-20 19:38:34 -06:00
Ryan Houdek 360cf761d2 [AArch64] Optimization in the dispatcher.
Align our dispatcher to a page so we can jump to it with a ADRP+BR pair instead of ADRP+ADD+BR.
Also make sure to save /all/ of our callee saved registers that we are supposed to save.
Requires PR #1705 prior to merging.
2014-12-20 19:37:45 -06:00
Ryan Houdek 13b70c2fbd [AArch64] Add an exception exit function with the exit location already in PC.
This will be used with idle skipping later.
2014-12-20 19:36:48 -06:00
Ryan Houdek 32eb0a9d68 [AArch64] Removes CODE_SIZE variable.
This is in a global location now which conflicts with this one.
2014-12-20 19:36:48 -06:00
Ryan Houdek edfbb6ab9a [ARM] Adds a ArmCommon folder.
Moves the backpatch flags and struct to a common location for ARM.
I'm sure there will be more things that use this common ARM location in the future.
2014-12-20 19:36:48 -06:00
Ryan Houdek eaf17b7d7b [AArch64] Register cache improvements.
Adds the ability to flush the cache and maintain state.
Adds the BindToRegister ability.
Sorts register usage as callee saved used first, reduces dumping pressure when jumping to external routines/interpreter.
Adds a function to store a register, for use when flushing a register that won't be used during the rest of a block.
2014-12-20 19:36:48 -06:00
JosJuice 34a37cc30d WII_IPC_HLE: Fix timing weirdness
The reply delay of a command shouldn't be ignored just because the
previous command isn't done yet. DI is way too fast without this change.
2014-12-20 22:07:30 +01:00
JosJuice be9789f2c6 WII_IPC_HLE_Device_DI: Use the new accurate timing 2014-12-20 22:07:28 +01:00
JosJuice a7296681ff WII_IPC_HLE: Return delay time instead of using GetCmdDelay 2014-12-20 22:07:15 +01:00
Pierre Bourdon cee4a85a12 Merge pull request #1633 from JosJuice/dvd-speed-tweak
DVDInterface: Tweak speeds
2014-12-20 16:46:22 +01:00
Pierre Bourdon 24a2ca4d28 Merge pull request #1703 from FioraAeterna/saveregs
JIT: free up a register by eliminating RCODE_POINTERS
2014-12-20 16:45:08 +01:00
Pierre Bourdon e7eb4c06e2 Merge pull request #1634 from JosJuice/disc-drive-unification-lite
Make WII_IPC_HLE_Device_DI call DVDInterface
2014-12-20 16:41:52 +01:00
JosJuice d1c8a8bd9f Make WII_IPC_HLE_Device_DI call DVDInterface 2014-12-20 13:02:04 +01:00
Matthew Parlane 6a785af280 Merge pull request #1704 from phire/wii_ssl_segfault
De-memsetify Wii_SSL and fix segfault.
2014-12-20 21:16:55 +13:00
skidau f913cb6ab6 Removed redundant code from the GC Adapter interface. 2014-12-20 09:44:35 +11:00
skidau 9eecfca71d Corrected the buffer that is used by the GCAdapter thread. 2014-12-20 09:44:35 +11:00
degasus 5f322cc9e8 Jit: move constants out of class
This fixes a linking issues on debug builds.
2014-12-17 23:42:10 +01:00
skidau 5313dd1b8c Merge pull request #1702 from CarlKenner/DebugSymbols
Fix many bugs with the Symbols menu (when run with -d argument).
2014-12-17 22:04:56 +11:00
CarlKenner 6e7eb52211 Rename menu items, stop using PanicAlertT, remove -d when running from visual studio.
I accidentally committed my addition of the -d option that I used for testing, now it's fixed.
2014-12-17 01:12:33 +10:30
CarlKenner 84ae817c18 Remove white space at ends of lines. 2014-12-17 01:12:08 +10:30
CarlKenner cd5d354acc Load 4 column map files like in American Mensa Academy.
Unfortunately the map files in American Mensa Academy don't correspond to the release version.
But at least now if other games use those map files we will be able to load them.
2014-12-17 01:12:03 +10:30
CarlKenner dfd915eb53 Merge bad map file loading into the original function. 2014-12-17 01:11:58 +10:30
CarlKenner e246aaf419 Add "Load bad map file" option for map files on disc that don't quite match.
Currently it is very simple and naive, but filters out most of the bad matches.
2014-12-17 01:11:41 +10:30
CarlKenner f54d9e33c2 Fix many bugs with the Symbols menu (when run with -d argument).
The Symbols menu is now fully useable.
2014-12-17 01:11:36 +10:30
skidau ce8b3d83a8 Merge pull request #1693 from magumagu/memcheck-fastmem
JIT: use fastmem loads in MMU mode.
2014-12-16 13:07:53 +11:00
Scott Mansell 950ca267bb De-memsetify Wii_SSL and fix segfault.
Fixes #7917
The first memset was clearing the delicate bits of the std::string
in the struct, causing segfaults.

I also removed the rest of the memsets because they were paranoid,
unneeded and waseful. We shouldn't be managing the ssl libraries
structs for it.
I checked and the ssl library's functions were already memsetting
those structs as needed.
2014-12-15 18:17:00 +13:00
Fiora 76ca42b758 JIT: free up a register by eliminating RCODE_POINTERS
Also use shorter code in the dispatcher if we can get away with it (e.g. on
Windows where the relevant memory is in the low 2GB).
2014-12-14 18:19:37 -08:00
skidau d02eb3ca59 Merge pull request #1640 from rohit-n/switch-default
Silence some -Wswitch-default warnings.
2014-12-13 19:47:06 +11:00
magumagu e479606b07 JIT: simplify code using MOVTwo. 2014-12-12 22:29:49 -08:00
magumagu 43d56febc4 JIT: use fastmem loads in MMU mode.
Even in games that require MMU mode, loads outside the area specified by
the BAT are rare, so fastmem is a substantial improvement.

All of the interesting changes are in the backpatch handler, to make it
generate DSI exceptions correctly.
2014-12-12 22:08:46 -08:00
skidau 6fb89e3b77 Fixed the Y button (typo) on the GC adapter. 2014-12-13 16:14:18 +11:00
skidau 1f41c3c2d5 Fixed the non-responsive d-pad on the GC Adapter.
Fixed -Wmissing-declarations and -Wshadow warning (thanks rohit-n).
2014-12-13 15:04:03 +11:00
Pierre Bourdon 4747cc7a15 Fix DSP CMPAR disassembly
Previously the two operand register selection bits were inverted, causing "CMPAR AC1, AX0.H" to be disassembled as "CMPAR AC0, AX1.H".

DSP RE is always fun: on the one hand Nintendo does a lot of stupid shit, so anything weird could be a legitimate bug of the UCode that is not supposed to make any sense. On the other hand, Dolphin *also* does a lot of stupid shit, so there's always that doubt.

Note: completely untested change - done with the GH text editor, just to show you how much I care :) . These operand descriptions are only used for disassembly, so no real behavior change is expected.
2014-12-13 04:14:51 +01:00
skidau 297ef16745 Merge pull request #1678 from skidau/GC-Adapter
Added GameCube Adapter support
2014-12-13 12:06:17 +11:00
Rohit Nirmal b030d29067 Silence some -Wswitch-default warnings. 2014-12-11 22:23:05 -06:00
skidau aaa2dca554 Merge pull request #1684 from skidau/mmu-blocklink
Enable block-linking with MMU
2014-12-12 13:51:39 +11:00
skidau 110d079c1e Enable block-linking with MMU. Blocks that cause an ISI exception are not linked. 2014-12-12 13:25:51 +11:00
Lioncash 815c29f6f4 Merge pull request #1682 from JosJuice/volumehandler-return
VolumeHandler: Return success value
2014-12-11 20:38:43 -05:00
skidau fe67230663 Merge pull request #1670 from lioncash/array
FifoRecorder: Use std::vector for m_Ram and m_ExRam
2014-12-11 14:26:09 +11:00
skidau 30b34f3b2e Moved the GC Adapter processing under "Standard Controller" as it appears the adapter does not work with controllers other than the standard controller (pads, bongos, some dance mats). 2014-12-11 14:06:35 +11:00
skidau 8fdd04e647 Fixed wireless GC controller detection.
Made the controller update thread-safe.
Added pad origin to wired and wireless pads only.
2014-12-11 11:15:36 +11:00
JosJuice 16f3970c79 VolumeHandler: Return success value 2014-12-10 22:25:02 +01:00
skidau 344c43cc74 Retrieved the endpoint addresses of the GC Adapter via the descriptor. 2014-12-10 21:35:30 +11:00
skidau 8d4a47d40c Added GameCube Adapter support.
The libusb driver must be installed on the adapter (e.g. zadig can be used to install the driver in Windows).  GameCube pad controllers are supported and will override the current input device assigned to the port.  GameCube controller buttons are auto-configured and cannot be re-assigned.  Rumble is supported.  Hotplug is supported while playing a game.  If a controller is unplugged from the adapter, Dolphin will fallback to using the host input device on that port.  If a port on the adapter is unused, Dolphin will use the host input device for that port, allowing a mixture of host input devices and controllers connected to the adapter.

The adapter support can be disabled in the Controllers config if the OS driver is preferred (allowing the pad buttons to be reconfigured).

One adapter per system is supported.
2014-12-10 20:45:45 +11:00
Fiora 92aad1140e JIT: fix MOVD_xmm typoes in ConvertDoubleToSingle
Ordering, plus MOVQ instead of MOVD
2014-12-09 04:19:44 -08:00
skidau 1ce3696e8b Merge pull request #1623 from FioraAeterna/fixppcfp
JIT: fix PPC_FP snan/qnan handling
2014-12-09 14:25:23 +11:00
Lioncash faf962d528 FifoRecorder: Use std::vector for m_Ram and m_ExRam
No need to delete/recreate the arrays every time a new recording happens. Just zero it out.
2014-12-07 18:13:53 -05:00
Tillmann Karras 6e928d08a0 Jit64: clean up casts in memory operands 2014-12-07 20:23:27 +01:00
Ryan Houdek 81cc177c44 Merge pull request #1477 from magcius/nunchuk-cleanup
Nunchuk cleanup
2014-12-07 01:29:59 -06:00
Ryan Houdek d9d0e285c9 Merge pull request #1560 from magcius/pad-cleanup-1
Pad cleanup 1
2014-12-07 01:22:03 -06:00
Ryan Houdek 6d6b425061 Merge pull request #1647 from magumagu/mmu-flag-cleanup
Cleanup: remove unnecessary uses of the bMMU flag
2014-12-07 01:08:30 -06:00
Ryan Houdek dec2f9f89b Merge pull request #1596 from Tilka/wiimote
WiimoteReal: use inheritance instead of #ifdef
2014-12-07 01:03:08 -06:00
Ryan Houdek b9c6ee93b6 Merge pull request #1661 from FioraAeterna/fixloadstorebind
JIT: fix possible panicalert in loadstore
2014-12-07 00:54:59 -06:00
Fiora 68972da1e5 JIT: fix possible panicalert in loadstore
Didn't bind address register tcorrectly in a very rare case.
2014-12-06 16:09:13 -08:00
Fiora 3d12849967 JIT: fix snan/qnan handling in float loads/stores
Also simplify the conversion code with some suggestions by flacs; might even
be slightly faster now despite handling more cases.
2014-12-06 13:07:24 -08:00
Rohit Nirmal fa501e9d8d Fix -Wshadow warning. 2014-12-05 20:33:24 -06:00
skidau f7a16eca84 Merge pull request #1437 from skidau/Remove-DSP-thread-option
Removed the DSP LLE on separate thread option.
2014-12-06 10:54:53 +11:00
skidau d485acdb51 Stored a copy of the PTE in the TLB like the real hardware does.
Updated PTE.R bit on Write and Instruction fetch.
Added code to read the PTE from MEM2 if the PTE is stored there.
Refactored the two hash functions to reduce code duplication.
Updated save state version.
2014-12-06 10:28:34 +11:00
skidau 997681b65a Removed the tag check in InvalidateTLBEntry. All four TLB entries are always cleared on each invalidate command.
Initialised the TLB cache to start from a consistent state on reset.
2014-12-05 19:56:45 +11:00
skidau 693f413364 Updated C bit on TLB cache hits.
Added TLB state to the save state file.
2014-12-05 14:29:13 +11:00
Tillmann Karras 8d9a30b370 WiimoteReal: use inheritance instead of #ifdef 2014-12-05 00:16:41 +01:00
Tillmann Karras 94197b604e WiimoteReal: inline unnecessary function 2014-12-04 17:09:12 +01:00
Tillmann Karras d087cb95cd WiimoteReal: shuffle code around 2014-12-04 17:09:12 +01:00
Tillmann Karras a1e974fedf WiimoteReal: add m_ prefix to member variables 2014-12-04 17:09:12 +01:00
skidau b1b7ae9f6a Merge pull request #1644 from FioraAeterna/fixtlb
TLB: fix backwards exception check
2014-12-04 13:19:03 +11:00
Ryan Houdek d8cb976bba Merge pull request #1639 from Sonicadvance1/aarch64_improvements
Aarch64 improvements
2014-12-03 19:15:55 -06:00
Lioncash c715a4f8ef Jit: Remove unnecessary include 2014-12-03 17:30:57 -05:00
magumagu 6b34b1b0d0 JIT: remove unnecessary uses of MMU flag. 2014-12-03 14:06:06 -08:00
magumagu c3b36de51e HLE code replacement: remove unused code. 2014-12-03 14:05:05 -08:00
Lioncash 241c94d337 Merge pull request #1645 from magumagu/jit-unused-flag
JIT: remove unused flag.
2014-12-03 16:13:31 -05:00
Fiora a4c6cf85e9 TLB: fix backwards exception check 2014-12-03 06:00:23 -08:00
skidau b9b3277fb5 Merge pull request #1618 from JosJuice/dvd-low-open-partition
Fix Wii disc partitions
2014-12-03 21:24:56 +11:00
Ryan Houdek 71e4e67ae1 [AArch64] Only flush registers that are needed with interpreter fallback.
We try to keep as many registers as possible in callee saved registers, so if we have guest registers in the correct registers and the interpreter
call we are falling back to doesn't need the registers then we can dump just those ones. Which means we don't have to dump 100% of our register state
when falling to the interpreter.
2014-12-02 21:08:38 -06:00
Ryan Houdek 71b77f3173 [AArch64] Makes some integer instructions more clear what they're doing.
ComputeRC was a bit unclear by using 64bit registers for setting the immediate and then calling SXTW on a 6b4it register which is just a bit obscure.
When the source register is an immediate in cntlzwx, just use the built in GCC function instead of our own implementing for counting leading zeros.
2014-12-02 21:08:38 -06:00
Ryan Houdek 8dfb8d8ad5 [AArch64] Implements HLE function injection 2014-12-02 21:08:38 -06:00
Ryan Houdek 51ad798105 [AArch64] Implements block linking.
Before block linking was enabled but it wasn't ever implemented.
Implements link blocks and destroy block functions and moves the downcount check in the WriteExit function so it doesn't get overwritten when linking.
2014-12-02 21:08:38 -06:00
Ryan Houdek ca04601b14 [AArch64] Fixes the dispatcher
Changes the dispatcher to make sure to we are saving the LR(X30) to the stack. Also makes sure to keep the stack aligned.
AArch64's AAPCS64 mandates the stack to be quad-word aligned.

Fixes the dispatcher from infinite looping due to a downcount check jumping to the dispatcher. This was because checking exceptions and the state
pointer wouldn't reset the global conditional flags. So it would leave the timing/exception, jump to the start of the dispatcher and then jump back
again due to the conditional branch.
2014-12-02 21:08:38 -06:00
Ryan Houdek c3c80e9440 [AArch64] Improves the register cache.
Removes the REG_AWAY nonsense I was doing. I've got to get the JIT more up to speed before thinking of insane register cache things.
Also fixes a bug in immediate setting where if the register being set to an immediate already had a host register tied to it then it wouldn't free the
register it had. Resulting in register exhaustion.
2014-12-02 21:08:38 -06:00
Ryan Houdek 08660c89ad Fix register usage detection in PPCAnalyst.
lmw/stmw weren't properly setting input and output registers since they use multiple registers.
dcbz was just missing a flag in the instruction tables.
2014-12-02 16:12:33 -06:00
Fiora 863fb91cad JIT: fix profiler call
Sometimes this seems to require a 64-bit offset, so use CallFunction instead
2014-12-02 10:17:58 -08:00
JosJuice bbd7370d82 DVDInterface: Tweak speeds 2014-12-02 12:27:03 +01:00
Lioncash 54f1e3a3c1 Merge pull request #1630 from lioncash/unused
WII_IPC_HLE_Device_fs: Remove unused macro constant
2014-12-01 21:49:07 -05:00
skidau b34c80d138 Merge pull request #1626 from kamiyo/fix-wiimote-volume-divisor
Fix Wiimote speaker divisor for format 0x00
2014-12-02 12:51:15 +11:00
Lioncash 11e6d75ea6 WII_IPC_HLE_Device_fs: Remove unused macro constant 2014-12-01 19:33:53 -05:00
Lioncash af5b1063bf Merge pull request #1619 from FioraAeterna/removepxor
JIT: remove unnecessary pxor in paired stores
2014-12-01 15:50:31 -05:00
kamiyo e8c393b00f Fix wiimote speaker divisor.
Playing with the wiimote volume in the Wii menu in-game, I found that the range for m_reg_speaker.volume is 0 -127, not 0 - 64.
2014-12-01 13:06:53 -05:00
Ryan Houdek 4946c6876d Merge pull request #1607 from Sonicadvance1/armv7-optimizations
A whole bunch of ARMv7 optimizations and minor fixes.
2014-11-30 15:48:27 -06:00
Fiora 644a661bf1 JIT: remove unnecessary pxor in paired stores
I don't think this is necessary anymore?
2014-11-30 08:11:45 -08:00
magumagu 4bb48d09dd DiskIO: Clean up GetTMD() API. 2014-11-30 16:38:13 +01:00
magumagu b1df4e5986 Make DVDLowOpenPartition actually change partitions. 2014-11-30 16:01:05 +01:00
Ryan Houdek cd13d2d66f [ARM32] Fix a couple bugs in the paired loadstore routines.
This code was obviously wrong, we were sign extending 8 bit unsigned values and loading from the wrong offset as well.
This fixes a bug in Muramasa where some colours were going insane.
2014-11-30 04:10:17 +00:00
Ryan Houdek b848365f78 [ARM32] Minor optimization in paired loadstores.
When the offset can fit in the instruction encoding make sure to do so.
2014-11-30 04:10:16 +00:00
Ryan Houdek 52c6fb180b [ARM32] Moves loadstore extend flag to backpatch code. 2014-11-30 04:10:16 +00:00
Ryan Houdek 32dc105aa3 [ARM32] Eat a register to store our memory base.
This saves at least two instructions per fastmem operation.
2014-11-30 04:10:16 +00:00
Ryan Houdek e2f8286415 [ARM32] Adds unsigned compares.
Superscedes PR #1131.
Optimizes cmpi a bit.
2014-11-30 04:10:16 +00:00
Ryan Houdek 581ab9edec [ARM32] cntlzwx optimization if source is immediate 2014-11-30 04:10:16 +00:00
Ryan Houdek 9c82adb14f [ARM32] negx optimization if source is immediate 2014-11-30 04:10:15 +00:00
Ryan Houdek 1dbb39f791 [ARM32] srawix optimization when source is an immediate. 2014-11-30 04:10:15 +00:00
Ryan Houdek fca0fd9dd5 [ARM32] rlwimix and rlwnmx optimizations. 2014-11-30 04:10:15 +00:00
magumagu c693cf46e9 JIT: remove unused flag. 2014-11-29 12:41:36 -08:00
Fiora 72c96c20d3 JIT: more optimizing of float ops based on known input characteristics
If the inputs are both float singles, and the top half is known to be identical
to the bottom half, we can use packed arithmetic instead of scalar to skip
the movddup.

This is slower on a few rather old CPUs, plus the Atom+Silvermont, so detect
Atom and disable it in that case.

Also avoid PPC_FP on stores if we know that the output came from a float op.
2014-11-29 11:33:11 -08:00
Fiora 4e0591cdf1 JIT: float instruction attribute fixes, fix binding mistakes
These instructions modify only the bottom halves of the output register,
so the output register needs to be treated as an input too.
2014-11-29 11:30:52 -08:00
Fiora 8d039a77af JIT: minor cleanup, avoid MOVSD where MOVAPD will do
Avoids false dependencies.
2014-11-29 11:30:51 -08:00
Fiora 7df50b0710 JIT: skip weird fmul rounding if the input is known to be single precision 2014-11-29 11:30:51 -08:00
Ryan Houdek f588a82b9a Merge pull request #1294 from FioraAeterna/noaccuratefcmp
JIT: remove "accurate fcmp" option
2014-11-28 22:48:11 -06:00
Ryan Houdek 1aed2542c7 Merge pull request #1602 from FioraAeterna/fixforce25bitimprecise
JIT: fix Force25BitPrecision with accurate single precision mode off
2014-11-28 22:42:44 -06:00
Ryan Houdek 5003618587 Merge pull request #1605 from FioraAeterna/fixcrormerge
JIT: fix fcmp+cror merging bug
2014-11-28 22:39:13 -06:00
Ryan Houdek 1a85df0459 Merge pull request #1603 from FioraAeterna/nofastinterrupts
JIT: remove "fast interrupts" option set and then used nowhere
2014-11-28 22:37:52 -06:00
Ryan Houdek ec3d6da7b5 [ARM32] Remove conditional execution from store instructions. 2014-11-29 02:44:17 +00:00
Ryan Houdek 6c399ce9ae [ARM32] Removes a block of conditional execution in the dispatcher. 2014-11-29 02:42:30 +00:00
Ryan Houdek e358696d46 [ARM32] Removes conditional execution from ARMv7's Jit function. 2014-11-29 02:42:22 +00:00
Fiora d42305aba0 JIT: fix fcmp+cror merging bug
Destination CR bit needs to be cleared if it's not one of the sources.
2014-11-28 16:11:04 -08:00
Jasper St. Pierre 854f6b8688 HW: Poll system input from system timers
Rather than playing terrible hacks to determine the start of input
frames, just update system input periodically. Specifically, every
60th of a second.
2014-11-28 10:56:11 -08:00
Jasper St. Pierre f3b739341e HW: Remove UpdateOutput
All of the rumble interfaces are now immediate mode.
2014-11-28 10:54:04 -08:00
Jasper St. Pierre 1cee3b8cc6 WiimoteEmu: Hardcode acceleration calibration values
Now we don't have any runtime calibration at all.
2014-11-28 10:51:30 -08:00
Jasper St. Pierre 5f6cfd67b7 Nunchuk: Hardcode Nunchuk accelerometre calibration values as well 2014-11-28 10:51:30 -08:00
Jasper St. Pierre 211eafc130 Nunchuk: Hardcode Nunchuk stick calibration values
The game can never change these, so there's no reason to make it
dynamic. Just put the constants in the code.

While we're at it, take the time to clean up the code and also
and document several of the hacks we're doing inside to make the code
clearer to understand.
2014-11-28 10:51:30 -08:00
Jasper St. Pierre 64014d1dcd Nunchuk: Use the accel_cal struct directly in nu_cal 2014-11-28 10:51:30 -08:00
Jasper St. Pierre cd95002356 WiimoteHid: Remove unused structs 2014-11-28 10:51:30 -08:00
Jasper St. Pierre fca9b491cc WiimoteEmu: Remove Spy method
This is the only use for a lot of unused methods and structs, and it's a
poorly written mess that doesn't even compile. Just remove it so we can
clean up the rest of a lot of code.
2014-11-28 10:51:30 -08:00
Jasper St. Pierre e43ad58a3a GCPad: Clean up Motor/Rumble interfaces
Remove the duplication here and just have one Rumble interface that
takes a single strength parameter.
2014-11-28 10:50:45 -08:00
Jasper St. Pierre 6aa1a59ee8 SI: Clean up controller-like devices with subclassing
This takes the giant mess of controller-like devices (dance mat and
steering wheel) down to something more manageable, similar to how
the Donkey Konga bongo controller works.

Based-on-a-patch-by: comex <comexk@gmail.com>
2014-11-28 10:50:45 -08:00
Ryan Houdek ce059769f6 Merge pull request #1439 from Armada651/ogl-stereo-3d
OGL: Stereoscopic 3D Support
2014-11-28 11:45:38 -06:00
Fiora 41f5ef3304 JIT: remove "fast interrupts" option set and then used nowhere 2014-11-28 06:42:40 -08:00
Fiora 3e893913dd JIT: fix Force25BitPrecision with accurate single precision mode off
Doesn't affect anything now, but it's more correct (and should make setting
AccurateSinglePrecision to false work properly now).
2014-11-28 06:39:47 -08:00
Fiora 561e96b080 JIT: clear FIFO write addresses when block cache is cleared
Fixes a spurious FIFO write check which caused a flags locking assert in
Splinter Cell: Double Agent.
2014-11-27 17:15:01 -08:00
Rohit Nirmal 84b060d313 Fix building with PCH disabled. 2014-11-26 10:21:04 -06:00
skidau b806680eac Merge pull request #1522 from jcowgill/sfml-2.1
Update / Port to SFML 2.1
2014-11-26 12:33:03 +11:00
skidau 69bd1562e2 Merge pull request #1561 from comex/10.9
Update OS X Requirement to 10.9 + fixes
2014-11-26 12:31:28 +11:00
Fiora 3be31ca2c8 JIT: remove "accurate fcmp" option
This doesn't seem to be necessary anymore now that FPRF is implemented in the
JIT. Technically, this isn't the same as before, since the JIT doesn't
implement the fcmp exception semantics, but as far as testing has shown, this
doesn't seem necessary.

This should make games that use FPRF a few percent faster (e.g. F-Zero GX)
since fcmpx no longer has to be fallbacked.
2014-11-25 09:54:40 -08:00
Lioncash aa92797f93 Merge pull request #1582 from Stevoisiak/newImprovedFormatting
More formatting and consistency fixes
2014-11-25 12:41:32 -05:00
James Cowgill a93f86330e Port dolphin to SFML 2.1 2014-11-25 16:44:38 +00:00
comex e631f68c1b Switch from deprecated Carbon idle tickling to Cocoa power assertions.
Also, this avoids keeping the system awake if a game is not being
played.

Frankly, I don't know what the point of precisely tracking these things
is, but that's how the API works.  Feel free to add analogous
functionality on other platforms.
2014-11-25 00:27:13 -05:00
Gabriel Corona 5b9aeaa686 Use CLI argument for Linux perf JIT support 2014-11-24 23:30:29 +01:00
Gabriel Corona 9722ae2a5d Move the JIT registration logic in its own file
Move the JITed function/basic-block registration logic out of the CPU
subsystem in order to add JIT registration to JITed DSP and
Video/VertexLoader code.

This necessary in order to add /tmp/perf-$pid.map support to other
JITed code as they need to write to the same file.
2014-11-24 23:18:18 +01:00
Gabriel Corona cdce5ace25 Add Linux perf JIT support (/tmp/perf-$pid.map)
'perf' is the standard builtin tool for performance analysis on recent
Linux kernel. Its source code is shipped within the kernel repository.

'perf' has basic support for JIT. For each process, it can read a file
named /tmp/perf-$PID.map. This file contains mapping from address
range to function name in the format:

  41187e2a 1a EmuCode_804a33fc

with the following entries:

 1. beginning of the range (hexadecimal);
 2. size of the range (hexadecimal);
 3. name of the function.

We supply the PowerPC address of the basic block as function name.

Usage:

    DOLPHIN_PERF_DIR=/tmp dolphin-emu &
    perf record -F99 -p $(pgrep dolphin-emu) --call-graph dwarf
    perf script | stackcollapse-perf.pl | grep EmuCode__ | flamegraph.pl > profile.svg

Issue: perf does not have support for region invalidation. It reads
the file in postprocessing. It probably does not work very well if a
JIT region is reused for another basic block: wrong results should be
expected in this case. Currently, nothing is done to prevent this.
2014-11-24 23:18:18 +01:00
Stevoisiak 6da394a4d0 More formatting and consistency fixes 2014-11-24 17:16:59 -05:00
Rohit Nirmal 4d931c16ad Silence a few "zero as null pointer" warnings. 2014-11-24 12:36:46 -06:00
Jules Blok 6e62dd3415 Add stereoscopy hotkeys. 2014-11-23 14:30:12 +01:00
Ryan Houdek e84999386b Merge pull request #1579 from Sonicadvance1/armv7-fastmem-rewrite
Rewrites ARMv7 fastmem entirely.
2014-11-21 14:54:05 -06:00
Ryan Houdek bfbbddd76f Rewrites ARMv7 fastmem entirely.
This is a fairly lengthy change that can't be separated out to multiple commits well due to the nature of fastmem being a bit of an intertangled mess.
This makes my life easier for maintaining fastmem on ARMv7 because I now don't have to do any terrible instruction counting and NOP padding. Really
makes my brain stop hurting when working with it.

This enables fastmem for a whole bunch of new instructions, which basically means that all instructions now have fastmem working for them. This also
rewrites the floating point loadstores again because the last implementation was pretty crap when it comes to performance, even if they were the
cleanest implementation from my point of view.

This initially started with me rewriting the fastmem routines to work just like the previous/current implementation of floating loadstores. That was
when I noticed that the performance tanked and decided to rewrite all of it.

This also happens to implement gatherpipe optimizations alongside constant address optimization.

Overall this comment brings a fairly large speedboost when using fastmem.
2014-11-21 05:21:57 -06:00
Matthew Parlane 1f7dbbef07 Merge pull request #1567 from comex/remove-android-ndk-hack
Remove Android <ucontext.h> hack.
2014-11-21 19:56:28 +13:00
Matthew Parlane 21e4e035cc Merge pull request #1281 from Stevoisiak/RenameEuRGB60
Renamed EuRGB to PAL60
2014-11-21 19:09:42 +13:00
skidau 15e7a8c247 Merge pull request #1573 from kamiyo/fix-wiimote-speaker
Fix wiimotespeaker emulation affecting real wiimote
2014-11-21 13:13:21 +11:00
skidau 2968cb138c Fixed the fast disc speed option (immediately service the interrupt instead of going through the scheduler). 2014-11-20 18:23:05 +11:00