Commit Graph

6943 Commits

Author SHA1 Message Date
comex
132e1068ce Remove checks that disable fastmem if debugging and ENABLE_MEM_CHECK are enabled.
They weren't sufficient and are made redundant by previous commits; they
also (on master) caused breakage due to Jit64::psq_stXX assuming writes
would be fastmem and not clobber a register under certain conditions.

That really needs to be refactored, but for now, this works.
2015-04-24 22:37:54 -04:00
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