Commit Graph

7087 Commits

Author SHA1 Message Date
Scott Mansell
65c1df34f4 Merge pull request #4198 from aldelaro5/memory-breakpoint-fix
Fix the memChecks breaking a second time after hitting one and unpausing
2016-09-12 14:51:47 +12:00
aldelaro5
f689b1e6b5 Switch the CPU state to CPU_STEPPING before single stepping after unpausing
This fix a double break bug when hitting a memcheck and hitting play on the same instruction it broke to earlier.  The state is put back to CPU_RUNNING after.
2016-09-11 22:46:12 -04:00
aldelaro5
da55d2a381 Add options read, write and log when toggling a breakpoint
These are needed for the next commit. I had to modify the implementation of the DSP one too, but since it basically isn`t used, I don`t think it matters much.  These options only matters when adding one.
2016-09-10 22:38:57 -04:00
Markus Wick
cbdda17507 Merge pull request #4124 from mimimi085181/wiimote-netplay-check-reporting-mode
Wiimote netplay: Check the reporting mode instead of the size
2016-09-10 23:28:57 +02:00
degasus
a0dcebba37 JitArm64: replace MOVI2R with MOVP2R when possible.
This skips the (u64) cast.
2016-09-10 11:01:18 +02:00
degasus
789e776a47 JitArm64: Fix block linking.
Double negation fail, sorry.
2016-09-10 11:01:18 +02:00
degasus
be763949bc JitArm64: Drop 32bit alignment restriction of the memarea.
ADD() is almost as fast as MOVK(), and we already have a register for the memory location. Let's just use it.
2016-09-10 11:01:18 +02:00
aldelaro5
09df343247 Move Memchecks support out of debug only builds
It wouldn't impact performance until at least one memcheck is enabled.  Because of this, it can be used in release builds without much impact, the only thing that woudl change is the use of HasAny method instead of preprocessor conditionals.  Since the perforamnce decrease comes right when the first memcheck is added and restored when the last is removed, it basically is all beneficial and works the same way.
2016-09-09 15:05:54 -04:00
EmptyChaos
2e14920e16 CoreTiming: Guarantee FIFO processing of timed events
The min-heap provides no ordering when the key is the same on 2
nodes. Disambiguate identical times by tracking the order items
were added into the queue.
2016-09-08 19:46:42 +10:00
JosJuice
d0a323cce7 Merge pull request #4192 from TylerAldrich/typo_fix
Boot: Fix minor comment typo
2016-09-07 17:35:35 +02:00
Léo Lam
4e402379e3 IPC_HLE: Fix warnings about missing override 2016-09-07 15:09:45 +02:00
Tyler Aldrich
08c72abf0f fix minor typo, 0x20 != 20 bytes 2016-09-07 08:01:00 -04:00
Scott Mansell
fe41dff228 Fix the master build. 2016-09-07 20:10:03 +12:00
Scott Mansell
d951f9e765 Merge pull request #3771 from phire/pr3771
Remove instant ARAM DMA hack (Fixes Sarge's War)
2016-09-07 19:09:39 +12:00
Scott Mansell
62d7a698da Merge pull request #4145 from tenthmile/WiiOrientationModifier
Emulated Wiimote Orientation Modifier
2016-09-07 14:20:02 +12:00
Scott Mansell
7311cd8b6e Merge pull request #4137 from aldelaro5/memCheck-crash-fix
Fix a crash when adding the first memory check while the game is running
2016-09-07 14:19:19 +12:00
Scott Mansell
366a38a917 Merge pull request #4142 from mbc07/IPC_HLE_usb_ven
[IPC HLE] Implement /dev/usb/ven with very basic functionality
2016-09-07 13:51:55 +12:00
Scott Mansell
dbface94ea And remove the feature from the Arm64 jit too. 2016-09-07 12:53:14 +12:00
Scott Mansell
c354dfcd2f Remove instant ARAM DMA mode.
Now that our timings are much more accurate it doesn't look like we
need it anymore. And the instant ARAM DMA mode + scheduling fixes
ctually breaks ATV: Quad Power Racing 2 (causing all sorts of werid
bugs).
2016-09-07 12:53:14 +12:00
Markus Wick
18030ebfb4 Merge pull request #4179 from magcius/xinput2-default
Remove the old Xlib backend
2016-09-06 10:26:26 +02:00
degasus
a4d72ac6e3 MMU: Add small BAT comment. 2016-09-06 08:43:31 +02:00
degasus
ce5dac11a2 Boot: Update BAT lookup table on booting ELF. 2016-09-06 08:43:31 +02:00
degasus
6493ea1eb9 MMU: Coding style fixes. 2016-09-06 08:43:31 +02:00
degasus
ae1421b606 JitArm64: Rebase failure. 2016-09-06 08:43:31 +02:00
degasus
2925a5b219 Jit64: Simplify dcbz. 2016-09-06 08:43:31 +02:00
degasus
ef0dcfe558 MMU: Small fixes. 2016-09-06 08:43:31 +02:00
magumagu
d557310371 Support for dynamic BAT modification (dynamic-bat).
Fundamentally, all this does is enforce the invariant that we always
translate effective addresses based on the current BAT registers and
page table before we do anything else with them.

This change can be logically divided into three parts.  The first part is
creating a table to represent the current BAT state, and keeping it up to
date (PowerPC::IBATUpdated, PowerPC::DBATUpdated, etc.).  This does
nothing by itself, but it's necessary for the other parts.

The second part (mostly in MMU.cpp) is simply removing all the hardcoded
checks for specific untranslated addresses, and consistently translating
addresses using the current BAT configuration. Very straightforward, but a
lot of code changes because we hardcoded assumptions all over the place.

The third part (mostly in Memmap.cpp) is making the fastmem arena reflect
the current BAT configuration.  We do this by redoing the mapping (calling
memmap()) based on the BAT table whenever it changes.

One additional minor change is that translation can fail in two ways:
either the segment is a direct store segment, or page table lookup failed.
The difference doesn't usually matter, but the difference affects cache
instructions, like dcbz.
2016-09-06 08:43:22 +02:00
aldelaro5
6f54c3207c Fix registerView updates issues when stepping over or stepping out
For step over, it was updating twice which actually made the red display on the register view (when a register changes since) malfunction.  Since it doesn't seem to be usefull to update before AND after the run, the one before the run was removed.

For step out, well, because there was no chances given for the thread to run as it is single stepping all the time, I only added a call to update after it was done.
2016-09-05 23:45:24 -04:00
EmptyChaos
014714d515 WII_IPC_HLE: Fix Reinit
Init cannot be called more than once because it registers the
CoreTiming callbacks, that trips the assertions and will cause
anyone with PanicAlerts disabled to crash.
2016-09-06 12:59:22 +10:00
Scott Mansell
5932ded806 Merge pull request #4183 from aldelaro5/if-simplification-slowmem
Simplify an if condition after PR #4078
2016-09-06 13:20:58 +12:00
aldelaro5
173bdc766d Simplify an if condition after PR #4078 2016-09-05 13:01:02 -04:00
Scott Mansell
d29dae207a Merge pull request #4078 from comex/alwaysUseMemFuncs-for-write
Don't use the fast path when there are watchpoints enabled, for writes too
2016-09-06 04:55:17 +12:00
Jasper St. Pierre
980ecfba7f IPC_HLE_net_ssl: Include mbedtls/platform.h
My version of mbedtls seems to require this -- otherwise, it doesn't compile.
2016-09-04 10:44:22 -07:00
Scott Mansell
f5fa5a7d32 Merge pull request #4168 from EmptyChaos/coretiming-cleanup
Core: CoreTiming Cleanup (Add UnitTests)
2016-09-04 11:48:54 +12:00
Mat M
0f359000c5 Merge pull request #4166 from lioncash/emitter-func
x64Emitter: Generify ABI_CallFunction variants
2016-09-03 07:26:34 -04:00
EmptyChaos
3a85aa9817 EXI_DeviceMemoryCard: Use CoreTiming/DoState correctly
CoreTiming gets restored before ExpansionInterface so CoreTiming
events need to already be registered before the save state loading
begins. This means that the callbacks must be registered
unconditionally instead of on-demand.
2016-09-03 14:55:45 +10:00
EmptyChaos
fb5537213a CoreTiming: Document initial startup behavior
Events don't update the downcount until after the first Advance(),
thus Advance() must be called once before scheduling works normally.
2016-09-03 14:55:45 +10:00
EmptyChaos
59465911d7 CoreTiming: Fix scheduling into the past
ForceExceptionCheck messes up the downcount and slice length if the
callback is scheduled into the past (g_slice_length becomes negative)
2016-09-03 14:55:44 +10:00
EmptyChaos
aa16282516 Core: Change CoreTiming event key from int to EventType*
Replace 'int' keys with something that carries type information.
Performance is neutral.
2016-09-03 14:55:44 +10:00
EmptyChaos
f15e4fb35e WII_IPC: Fix reregistering CoreTiming callback multiple times.
Separate state reset from Init().
2016-09-03 14:55:43 +10:00
Scott Mansell
a32bb8f1b9 Movie: Fix null pointer derefrence.
Part of the acceleration data is packed in with the buttons. We
always have button data when we have acceleration data.
2016-09-03 16:46:48 +12:00
EmptyChaos
17c34ae0b1 CoreTiming: Data structure cleanup
Replace adhoc linked list with a priority heap. Performance
characteristics are mostly the same, but is more cache friendly.

[Priority Queues have O(log n) push/pop compared to the linked
list's O(n) push/O(1) pop but the queue is not big enough for
that to matter, so linear is faster over linked. Very slight gains
when framelimit is unlimited (Wind Waker), 1900% -> 1950%]
2016-09-03 12:46:14 +10:00
EmptyChaos
b88b188819 CoreTiming: Cleanup naming conventions 2016-09-03 12:46:14 +10:00
Jules Blok
73b05b339b DVDInterface: Remove unused Triforce buffer. 2016-09-01 17:15:43 +02:00
Lioncash
13506d3c12 x64Emitter: Generify ABI_CallFunction variants
Gets rid of the need to cast to void* just to use the functions.
2016-08-31 22:54:47 -04:00
EmptyChaos
00a4404045 CheatManager/ISOProperties: Refactor ActionReplay tabs as a class
Refactor Action Replay code into its own class like Gecko Codes.
2016-08-31 14:32:12 +10:00
Sepalani
53b64435ae Map: Prevents symbols from being stripped 2016-08-30 17:59:49 +04:00
Scott Mansell
efac0cf8fe Merge pull request #4156 from phire/interlaced_panic
VideoInterface: Fix panic alert on interlaced fields.
2016-08-29 23:10:55 +12:00
Scott Mansell
17e64b75a5 VideoInterface: Fix panic alert on interlaced fields.
For some reason this was only showing up in video software.

Not sure why.
2016-08-29 23:08:23 +12:00
Scott Mansell
fc2b0e0f45 Simplify lswx loop. 2016-08-29 22:57:37 +12:00
Tim Maile
3266bf052a Toggle and Switches for upward/sideway WiimoteEmu 2016-08-28 12:47:24 +02:00
Scott Mansell
967c371d7a Zero case behaviour confirmed by hardware test
Modify comments to reflect this
2016-08-28 09:48:29 +12:00
Scott Mansell
ab3eedcc33 While I'm here, stswx should wrap too. 2016-08-27 14:15:43 +12:00
Scott Mansell
5b47635b3f Fix bug in interpreter's lswx. Was overwriting extra register.
When n was a multiple of 4, the old implementation would overwrite
the following register with 0.

This was causing Not64 to crash.

Thanks to Extrems for spotting this.
2016-08-27 14:15:42 +12:00
Scott Mansell
92f165d756 Merge pull request #4144 from aldelaro5/debugger-insertInstruction-fix
Invalidate the icache when inserting a nop or a BLR
2016-08-24 00:22:24 +12:00
aldelaro5
cc7aa73081 Invalidate the icache when inserting a nop or BLR
Also schedule an event to invalidate it if the emu thread is running.
2016-08-23 07:37:54 -04:00
aldelaro5
47d1b07abb Add a thread safe variant of invalidating the icache
This is used by the next commit.
2016-08-23 07:37:41 -04:00
mbc07
8fa687eab4 Implement /dev/usb/ven with very basic functionality (based on the old wiispeak branch) 2016-08-23 00:23:19 -04:00
Markus Wick
8d186a468f Merge pull request #4136 from Helios747/custom_textures_hotkey
[Hotkey] Added custom textures toggle
2016-08-22 16:59:01 +02:00
Markus Wick
09b955fbdd Merge pull request #4133 from lioncash/hle
HLE_OS: Return string from GetStringVA by value
2016-08-22 16:53:53 +02:00
JosJuice
9f6000bb27 Move code into Movie::SignalDiscChange
DVDInterface shouldn't need to know anything about
the DTM format's 40-character limitation.

Also replacing "filename" in variable names with "path"
to make it clearer which variables contain the whole path
and which ones only contain the filename.
2016-08-21 12:51:14 +02:00
aldelaro5
0480ca48fb Add a thread safe variant of clearing the jit cache 2016-08-21 00:57:34 -04:00
Anthony Serna
9e40fa2657 [Hotkey] Added custom textures toggle 2016-08-19 23:14:56 -05:00
JosJuice
31c530c7b3 Merge pull request #3386 from lioncash/memory
Common: Namespace MemoryUtil
2016-08-19 11:04:45 +02:00
Lioncash
e0c9c9b3ca HLE_OS: Return string from GetStringVA by value
No real point to using an out parameter for something like this.
2016-08-19 00:31:54 -04:00
hthh
789975e350 Jit: FIFO optimization improvements
This introduces speculative constants, allowing FIFO writes to be
optimized in more places.

It also clarifies the guarantees of the FIFO optimization, changing
the location of some of the checks and potentially avoiding redundant
checks.
2016-08-15 20:09:52 +10:00
Scott Mansell
0015d2e86b Merge pull request #4121 from leoetlino/osreport-sjis
Convert OSREPORT text from SJIS to UTF-8
2016-08-15 16:04:07 +12:00
mimimi085181
111182d9a3 Wiimote netplay: Check the reporting mode instead of the size 2016-08-14 19:25:00 +02:00
Léo Lam
c0be228c71 Convert OSREPORT text from SJIS to UTF-8
I'm not sure this is the correct fix, but it looks like OSREPORT output
is Shift-JIS, so we need to convert it to UTF-8. Most characters work
fine without and with this conversion, but Japanese text completely
fails and results in outputting invalid UTF-8 (which gets shown as �).
2016-08-13 17:19:21 +02:00
Mateus B. Cassiano
4b339e60aa Drop ThemeName40, GCMPathes and RecursiveGCMPaths INI hacks from 4.0-era 2016-08-12 16:54:50 -04:00
JosJuice
ed9007cab7 Save GUI language as string instead of wxLanguage enum
When 5.0-211 updated wxWidgets to 3.1.0, some entries in the
wxLanguage enum were moved and added, changing the wxLanguage
values. Because we save Dolphin's interface language to disk
as a wxLanguage, the language you have set will mean something
different depending on whether you have the updated wx version
or not. For instance, setting the language to English with the
updated version and then using an older version will make
Dolphin use Dutch. Because we can't rely on the enum anymore,
I'm replacing the "Language" setting with a "LanguageCode"
setting that uses standard ISO 639 codes.
2016-08-12 14:52:01 +02:00
hthh
d841d9c7b3 JitArm64: Check the FIFO on EIEIO instructions
Copied from the Jit64 version
2016-08-12 21:09:15 +10:00
hthh
bbc0f0c744 Jit: Check the FIFO on EIEIO instructions
The gather pipe optimization postpones checking the FIFO until the end
of the current block (or 32 bytes have been written). This is usually
safe, but is not correct across EIEIO instructions.

This is inferred from a block in NBA2K11 which synchronizes the FIFO
by writing a byte to it, executing eieio, and checking if PI_FIFO_WPTR
has changed. This is not currently an issue, but will become an issue
if the gather pipe optimization is applied to more stores.
2016-08-12 21:03:41 +10:00
Léo Lam
c1184957a5 Run clang-format on missed files
`clang-format`s files that lint missed because of the bug. Fortunately,
not much.
2016-08-11 21:14:39 +02:00
Pierre Bourdon
cef71afc27 Merge pull request #3987 from JosJuice/scheduleevent-cleanup
CoreTiming: ScheduleEvent cleanup
2016-08-11 16:18:14 +02:00
Pierre Bourdon
c6fed0565d Merge pull request #4109 from JosJuice/remove-am-baseboard
Remove AM Baseboard
2016-08-11 16:16:23 +02:00
JosJuice
3bb0e7e3f5 Remove AM Baseboard
Let's stop pretending that we support Triforce emulation.
Keeping this code around just in case someone will make
major improvements in the future isn't really worth it.

I'm keeping the Triforce game INIs so users will know that
the compatibility rating for Triforce games is 1 star (broken).
2016-08-11 12:53:44 +02:00
JosJuice
3443a10030 CoreTiming: Merge ScheduleEvent variants into one function
Now Core::IsCPUThread() only gets called once when using the AnyThread
variant. Also, I think the enum approach makes calling code clearer.
2016-08-11 12:45:57 +02:00
Markus Wick
5697032ec7 Merge pull request #4103 from degasus/dynamic-bat
JitArm64: Fix two issues.
2016-08-11 12:42:02 +02:00
Scott Mansell
e577ffaee5 Merge pull request #4107 from JosJuice/no-immediate-scheduleevent
Remove Immediate variants of ScheduleEvent
2016-08-11 12:13:49 +12:00
JosJuice
ccc4e6de02 DolphinWX: Don't translate OSD messages
OSD messages other than these one and a half aren't translated,
and OSD only supports ASCII. (Also, that "Wiimote %i %s" uses %s
like it does is bad for translation, but that's easy to fix.)
2016-08-10 18:18:25 +02:00
Mat M
8552ff5789 Merge pull request #4106 from RisingFog/dtm_gc_language
Add Gamecube Language to DTM Header
2016-08-10 12:16:20 -04:00
JosJuice
b8e04c9513 Replace some unnamed tick constants with GetTicksPerSecond()
These operations should always take the same amount of time,
not the same amount of ticks. The number of ticks per second
is different for GameCube and Wii.
2016-08-10 17:34:23 +02:00
JosJuice
47c8bb26f8 Remove Immediate variants of ScheduleEvent
Usage of these are replaced with regular equivalents in order
to avoid executing event handlers in the middle of JIT blocks.
2016-08-10 16:34:06 +02:00
Léo Lam
dca22e08eb Use Common::Flag and Common::Event when possible
Replaces old and simple usages of std::atomic<bool> with Common::Flag
(which was introduced after the initial usage), so it's clear that
the variable is a flag and because Common::Flag is well tested.

This also replaces the ready logic in WiimoteReal with Common::Event
since it was basically just unnecessarily reimplementing Common::Event.
2016-08-10 16:08:15 +02:00
degasus
a051db9792 PixelEngine: Cleanup PE Token.
This also affects the behavior a bit, it should now fit better to the one of the commonly more used PE Finish flag.
2016-08-10 10:07:53 +02:00
Chris Burgener
84731456fa Add Gamecube Language to DTM Header 2016-08-09 23:02:31 -04:00
Markus Wick
7e3c04f069 Merge pull request #4076 from RisingFog/fix_sram_rtc_offset
Fix improper SRAM RTC offset
2016-08-08 23:10:33 +02:00
degasus
447b23e09a JitArm64: Load memory base based on MSR.DR. 2016-08-08 20:19:57 +02:00
degasus
77cfd0d4fd JitArm64: Fix rfi 2016-08-08 20:19:57 +02:00
Calvin Cochran
ba45a5999f clean up bounds checking for SIDEVICE_ENUM 2016-08-08 12:33:08 -05:00
Lioncash
e01c143379 Common: namespace MemoryUtil 2016-08-07 13:03:07 -04:00
Rohit Nirmal
cbec38e775 Fix building with PCH disabled. 2016-08-07 01:18:59 -05:00
degasus
85affe995e JitCache: Do not use block 0.
This ID is reserved for invalid blocks. So this block can't be invalidated.
2016-08-06 14:16:13 +02:00
degasus
814f29b25b JitCache: Implement block unlinking. 2016-08-06 11:41:39 +02:00
magumagu
ba39a0b3b4 Add ISI logging to interpreter. 2016-08-06 11:41:39 +02:00
magumagu
ca511640a5 Add support for DSI exceptions to CachedInterpreter.
Should be straightforward.  Maybe useful for the purpose of testing.
2016-08-06 11:41:39 +02:00
magumagu
758e6406cd JIT: fix handling of PC in dispatcher/block cache.
Specifically, don't make any assumptions about what effective addresses
are used for code, and correctly handle changes to MSR.DR/MSR.IR.

(Split off from dynamic-bat.)
2016-08-06 11:41:39 +02:00
Chris Burgener
222c4ba077 Remove Global Declarations from Movie 2016-08-04 15:24:44 -04:00
Lioncash
8b84ac2f6b NetPlayClient: Remove another duplicate inclusion
I'm blind apparently, btw
2016-08-04 10:55:39 -04:00
Lioncash
ca7816acae NetPlayClient: Remove duplicate header inclusion 2016-08-04 10:50:33 -04:00
Lioncash
041f4f5eea GCAdapter: Return input state by value 2016-08-01 21:27:51 -04:00
Lioncash
2be2b2a4f1 GCKeyboard: Return input state by value 2016-08-01 20:58:04 -04:00
Lioncash
ee43820282 GCPad: Return input state by value 2016-08-01 20:49:30 -04:00
comex
c51faa41f5 Don't use the fast path when there are watchpoints enabled, for writes too.
Also fold the check in both functionss into 'slowmem' rather than having
a separate test.  (jo.alwaysUseMemFuncs implies jo.memcheck anyway, as
makes sense.)
2016-08-01 20:40:00 -04:00
Chris Burgener
28039b3d8b Fix improper SRAM RTC offset 2016-08-01 19:41:33 -04:00
Lioncash
8b5e94a102 FifoPlayer: const correctness 2016-08-01 18:33:46 -04:00
Pierre Bourdon
2c0364d95c Merge pull request #4058 from Aestek/fix/netplay-gui-freeze
NetPlay: Fix GUI freeze
2016-08-01 00:36:49 +02:00
Pierre Bourdon
bfa42a3f15 Merge pull request #4071 from lioncash/constant
DSP: Make DSP_CONTROL_MASK a concrete constant
2016-07-31 16:43:41 +02:00
Markus Wick
a6834dc2cc Merge pull request #4070 from lioncash/const
SI_DeviceGBA: const correctness
2016-07-31 11:14:46 +02:00
Markus Wick
ad1c5a8e2e Merge pull request #4054 from leoetlino/wiimote-scanner
WiimoteReal: Change the scanner to support several backends
2016-07-31 10:39:13 +02:00
Lioncash
9e6bb68a64 DSP: Make DSP_CONTROL_MASK a concrete constant 2016-07-30 18:55:45 -04:00
Lioncash
462ba0c742 SI_DeviceGBA: const correctness 2016-07-30 13:30:20 -04:00
JDV
fcf4589aa3 Make it so comments don't take up gecko space
Unlike notes, we want comments to be completely ignored
2016-07-29 11:20:35 -06:00
Pierre Bourdon
e0cbb9d1ae Merge pull request #3890 from leoetlino/evdev-hotplug
evdev: Add hotplug support
2016-07-29 17:43:49 +02:00
Léo Lam
93f5df4195 ControllerInterface: Add RemoveDevice()
This adds RemoveDevice() to ControllerInterface, fixes ExpressionParser
and some other code to support device removals without crashing,
and adds an IsValid() method to Device, to prepare for hotplugging.
2016-07-29 17:18:37 +02:00
Léo Lam
0d783f0869 ControllerInterface: Add a way to register callbacks
This adds RegisterHotplugCallback() to register a callback which will
be invoked by the input backends' hotplug threads when there is a new
device, so that Core (GCKeyboard, GCPad, Wiimote, Hotkey) can reload
the configuration without adding a dependency to Core from InputCommon.
2016-07-29 17:16:22 +02:00
Aestek
0aa6e20685 Allow to change Wii sd card path in config pane
Add a setting in the "Paths" config pane to select which file should be
used as wii sd card.
2016-07-29 15:03:01 +02:00
Léo Lam
d2976086b6 WiimoteReal: Remove unsafe static_cast in IOLinux
Since we now support different scanner sources, g_wiimotes is not
guaranteed to only contain WiimoteLinux anymore.
This replaces the previous "already connected" check with one that
doesn't use g_wiimotes.
2016-07-27 14:20:26 +02:00
Scott Mansell
6834b4cb27 Revert "JitCache: Support for VMEM + MSR bits" 2016-07-27 11:15:25 +12:00
Aestek
1760b3bdad Rewrite NetPlayClient input wait logic to use std::condition_variable's
Instead of sleeping in NetPlayClient::GetNetPads and NetPlayClient::WiimoteUpdate,
now use std::condition_variable. This allows for finer control over these blocking
areas.
2016-07-26 21:34:35 +02:00
Pierre Bourdon
d7de39ebbe Merge pull request #3588 from Aestek/feature/improve-netplay-dialog
Improve netplay UX
2016-07-26 02:12:22 +02:00
Léo Lam
9c02e327b7 WiimoteReal: Split WiimoteScannerDarwin
This moves out the HID code into a separate scanner.
2016-07-26 00:45:25 +02:00
Léo Lam
3305a923e1 WiimoteReal: Rename IONix to IOLinux
IONix.cpp really isn't for Unix, as the name would imply, but only
for Linux, so there is no reason to name it IONix.
2016-07-26 00:45:25 +02:00
Léo Lam
9455e2bca4 WiimoteReal: Change the scanner to support several backends
This makes WiimoteScanner support several scanner backends.

This adds a WiimoteScannerBackend base class, which scanner backends
derive from, and which allows backend-specific things to be moved out
of the common code.

Also removes IODummy which is not needed anymore.
2016-07-26 00:45:24 +02:00
Pierre Bourdon
c6924b4d03 Merge pull request #4036 from RisingFog/rtc_osd
Display RTC on OSD
2016-07-25 15:36:03 +02:00
Aestek
6a0fc4c438 Improve netplay setup dialog UX
* Focus "Hash Code" / "IP address" text box by default in "Connect"
* Focus game list in "Host" tab
* RETURN keypress now host/join depending on selected tab
* Remember last hosted game
* Remove PanicAlertT:
	* Simply log message to netplay window
	* Remove them when they are useless
* Show some netplay message in OSD
	* Chat messages
	* Pad buffer changes
	* Desync alerts
* Stop the game consistently when another player disconnects / crashes
* Prettify chat textbox
* Log netplay ping to OSD

Join scenario:
* Copy netplay code
* Open netplay
* Paste code
* Press enter

Host scenario:
* Open netplay
* Go to host tab
* Press enter
2016-07-23 20:58:51 +02:00
codl
9a01ced032
Fix bogus UPnP requests
UPNP_AddPortMapping needs our IP address, however enet_address_get_host
will return 0.0.0.0 or a host name in most cases.

This gets our IP address from the socket to the IGD.
2016-07-23 20:04:07 +02:00
Pierre Bourdon
78b68b707f Merge pull request #4052 from leoetlino/wiimote-reconnect
Fix Wiimotes not reconnecting on button press
2016-07-23 11:41:01 +02:00
Léo Lam
7c3a3ce46d Fix Wiimotes not reconnecting on button press
5.0-56 broke reconnecting a Wiimote on button press; this is because
data reporting was now always stopped for real Wii remotes on
disconnect, making it impossible to know a button was pressed in the
first place (to reconnect the Wiimote).

This semi-reverts to the previous behaviour, where data reporting is
never stopped.

(Also, control channels now go through WiimoteEmu, just like before,
to make sure some things are reset on disconnection.)

Hopefully fixes issue 9711.
2016-07-23 11:17:31 +02:00
JMC47
0a7a3aef0e Removes fake wiimote data that was causing desyncs. 2016-07-23 04:52:39 -04:00
Chris Burgener
0ef1ee7a83 Display RTC on OSD 2016-07-22 09:58:34 -04:00
Pierre Bourdon
c7ead90a09 Merge pull request #4041 from lioncash/mismatch
Movie: use std::mismatch for byte mismatch checking
2016-07-21 10:59:59 +02:00
Pierre Bourdon
382e7bf2f3 Merge pull request #3825 from magumagu/wii-reset-button
Make reset button (Emulation -> Reset) work correctly for Wii games.
2016-07-21 10:58:08 +02:00
Lioncash
92efd177fc Movie: use std::mismatch for detecting byte mismatches 2016-07-21 02:43:30 -04:00
Mat M
3fbd781cb8 Merge pull request #4033 from RisingFog/configurable_rtc
Disable changing Custom RTC when game is running
2016-07-19 23:09:43 -04:00
Matthew Parlane
7b9e17b72d Merge pull request #4035 from lioncash/si-constness
SI_DeviceKeyboard: const correctness
2016-07-20 12:35:10 +12:00
Lioncash
609cc3c1c3 SI_DeviceKeyboard: const correctness 2016-07-19 19:55:44 -04:00
Lioncash
0483c88f1e TAP_Win32: Use vector assign instead of resize + memcpy 2016-07-19 19:29:49 -04:00
Chris Burgener
80ac4a359d Disable changing Custom RTC when game is running 2016-07-19 16:30:00 -04:00
Chris Burgener
e32af8e0fe Merge pull request #4007 from RisingFog/configurable_rtc
Add Configurable RTC options
2016-07-19 11:55:46 -04:00
Chris Burgener
cac9516e39 Add Configurable RTC 2016-07-19 11:20:02 -04:00
Pierre Bourdon
01e99b8a2a Merge pull request #4027 from leoetlino/fix-warnings
Fix warnings
2016-07-19 01:08:54 +02:00
Léo Lam
0e1aeedb5b Fix warnings
This fixes warnings in:
- Source/Core/InputCommon/ControllerEmu.h: avoid shadowing other
  variables (my fault)
- Source/Core/Core/IPC_HLE/WII_IPC_HLE.h: made
  SDIO_EventNotify_CPUThread static as it's not used anywhere else
2016-07-18 23:38:42 +02:00
Pierre Bourdon
dac1c2d4fe Merge pull request #4026 from lioncash/constness
EXI: Misc const correctness changes
2016-07-18 18:19:23 +02:00
Pierre Bourdon
e21cc8937b Merge pull request #4023 from bentley/openbsd-context
Clean up context definition errors.
2016-07-18 16:43:52 +02:00
Anthony Serna
1a81735527 Merge pull request #3859 from Aestek/feature/netplay-md5
Netplay: add md5 testing
2016-07-18 09:20:37 -05:00
Lioncash
902a0ccedf Sram: Correct constness of SetCardFlashID parameter 2016-07-18 02:15:07 -04:00
Lioncash
5161351ca3 EXI_DeviceMic: Don't cast away const in Pa_Callback 2016-07-18 01:47:03 -04:00
Lioncash
6eaa1aab5c EXI_DeviceAGP: Correct constness for CRC8 parameter 2016-07-18 01:41:45 -04:00
Lioncash
37da945609 EXI_DeviceEthernet: Correct constness of function parameters 2016-07-18 01:36:04 -04:00
Anthony J. Bentley
b0f4a2b959 Add a context definition for OpenBSD amd64. 2016-07-17 22:15:14 -06:00
Matthew Parlane
a51c992e61 Merge pull request #4018 from bentley/openbsd-ifdefs
Openbsd ifdefs
2016-07-18 16:12:06 +12:00
Anthony J. Bentley
cdf62dece3 Add OpenBSD to the list of Unixes declaring CEXIETHERNET. 2016-07-17 20:38:39 -06:00
Anthony J. Bentley
6e6b113a7e Clarify error message.
If the #error hits, the operating system may be fine but the
architecture won't be.
2016-07-17 19:02:59 -06:00
Anthony J. Bentley
eea609c55e Explicitly error out when no context definition is provided.
If there is no context definition in a non-generic build, compilation
will error out anyway, but in a less obvious place.
2016-07-17 18:59:26 -06:00
Anthony J. Bentley
f4cc52813c Add required POSIX includes and fairly portable Unix include.
POSIX specifies that inet_ntoa() is declared in arpa/inet.h, and that
POLLRDNORM, etc. are defined in poll.h.

gethostbyname() is not specified by POSIX, but the manpages in OpenBSD,
FreeBSD, OS X, and glibc all state that it is declared in netdb.h.

Without these headers, the build fails on OpenBSD and possibly other
systems.
2016-07-17 04:41:15 -06:00
Aestek
9c5b546e2e Add Wii sdcard to CommonPaths 2016-07-16 22:48:46 +02:00
Aestek
51c77e8eea Add md5 testing to netplay
Allows to test current game, an arbitrary game or the sdcard of all players
at once.
2016-07-16 22:48:46 +02:00
mimimi085181
8b7bfe6cf9 Netplay: Fix synchronization for the Wiinote netplay
The old implementation always polled the local 1st Wiimote and used that as input for the Wiimote that is mapped to the player. But the reporting mode for Wiimotes can be different, even when using the same extensions. So an input for Wiimote 1 with a data size 4 could be used for Wiimote 2, which actually requires data size 7 at that time for example.

The 2nd problem was that the code added a dummy input into the buffer, when the reporting mode changed. But when the data from the other player hasn't arrived yet, the data in the buffer is out of order. Well, i think this is the problem, i'm not 100% sure, because i don't fully understand how the buffer works. But on the other hand, i'm pretty sure this will just force sync the players on reporting mode changes, instead of allowing them to be apart.

Pros:
- No more desyncs caused by big bugs in the code.
- Can use different extensions for different players.

Cons:
- Higher latency, because instead of polling 1 controller per player at once, all controllers are polled in order, send to the other players, before the next is processed.
- Have to setup the Wiimote, which the player is going to use, instead of the 1st one.

Now, if the controller config could temporarily be overridden with the one from another slot, the 2nd problem could be fixed. But at the same time, we would lose the ability to use different extensions. (unless we hack around it somehow, or properly send the used extension to the other players)
2016-07-16 13:00:54 +02:00
Pierre Bourdon
bb87bb73f4 Merge pull request #4004 from degasus/dynamic-bat
JitCache: Support for VMEM + MSR bits
2016-07-16 12:26:54 +02:00
degasus
f9e5660106 JitCache: Implement block unlinking. 2016-07-16 09:24:10 +02:00
magumagu
0de9d94de3 Add ISI logging to interpreter. 2016-07-16 09:24:09 +02:00
magumagu
0f788e0c3d Add support for DSI exceptions to CachedInterpreter.
Should be straightforward.  Maybe useful for the purpose of testing.
2016-07-16 09:24:09 +02:00
magumagu
b81d008f92 JIT: fix handling of PC in dispatcher/block cache.
Specifically, don't make any assumptions about what effective addresses
are used for code, and correctly handle changes to MSR.DR/MSR.IR.

(Split off from dynamic-bat.)
2016-07-16 09:24:05 +02:00
Pringo
8d6f23fa9c Clarify Boot from DVD Message 2016-07-15 13:11:13 -07:00
Lioncash
5b2ddbc4b2 EXI_Channel: Change m_pDevices to m_devices
Basic name change to get rid of (incorrect) Hungarian notation
2016-07-15 01:43:06 -04:00
Lioncash
642284fec4 EXI_Channel: Use std::array 2016-07-15 01:22:28 -04:00
Matthew Parlane
a97a546bd6 Merge pull request #3594 from lioncash/threads-a-joke-about
Core: Use the thread_local keyword
2016-07-15 08:50:54 +12:00
Pierre Bourdon
014037ebb7 Merge pull request #3983 from JosJuice/discio-enums
Move DiscIO enums to a new file
2016-07-13 19:51:01 +02:00
JosJuice
0a15aaaa12 Move DiscIO enums to a new file
At first there weren't many enums in Volume.h, but the number has been
growing, and I'm planning to add one more for regions. To not make
Volume.h too large, and to avoid needing to include Volume.h in code
that doesn't use volume objects, I'm moving the enums to a new file.
I'm also turning them into enum classes while I'm at it.
2016-07-13 17:29:27 +02:00
Pierre Bourdon
89a03174cc Merge pull request #4001 from leoetlino/split-controller-setting
ControllerEmu: Split the Setting class
2016-07-13 13:59:59 +02:00
Matthew Parlane
baf9abe911 Merge pull request #3980 from JosJuice/changedisc-threading-simplification
DVDInterface: Simplify calling ChangeDisc from CPU thread
2016-07-13 22:48:47 +12:00
Matthew Parlane
3f9a98ddf2 Merge pull request #3979 from JosJuice/use-g_want_determinism
Use g_want_determinism more
2016-07-13 18:56:23 +12:00
Matthew Parlane
ebf10d38dd Merge pull request #3978 from JosJuice/frameskipping-determinism
Movie: Fix FrameSkipping determinism condition
2016-07-13 18:54:51 +12:00
Matthew Parlane
4d2df0a8ce Merge pull request #3989 from JosJuice/insert-sd-thread
Don't ScheduleEvent from wrong thread when inserting SD card
2016-07-13 18:44:50 +12:00
Rohit Nirmal
bb52aad546 Fix building with PCH disabled. 2016-07-12 12:43:03 -05:00
Léo Lam
47859ad40c WiimoteReal: Call Update() less often
This moves back the WiimoteScanner:Update() call to where it originally
was, since according to a comment it is intended to be called only when
"when not looking for more Wiimotes", and calling it too often causes
the Bluetooth module to be loaded/unloaded a lot of times.
2016-07-12 16:50:41 +02:00
Léo Lam
5e829f4527 ControllerEmu: Split the Setting class
The Setting class was used for both numeric values and booleans, and
other parts of the code had hacks to make it work with booleans.

By splitting Setting into NumericSetting and BooleanSetting, it is
clear which settings are numeric, and which are boolean, so there is
no need to guess by checking the default values or anything like that.
Also, booleans are stored as booleans in config files, instead of 1.0.
2016-07-12 11:42:18 +02:00
Pierre Bourdon
2de6d07360 Merge pull request #4000 from JosJuice/movie-netplay-global
Movie: Don't access g_netplay_initial_gctime directly
2016-07-11 17:09:04 +02:00
JosJuice
8df4437b6c Movie: Don't access g_netplay_initial_gctime directly
Using the global variable directly is ugly and might not be threadsafe.
2016-07-11 16:49:58 +02:00
Pierre Bourdon
f57aec0525 Merge pull request #3858 from Aestek/feature/better-netplay-gamenotfound
Netplay: check if all players have the game before starting
2016-07-11 10:06:00 +02:00
comex
8a02473237 Fix more warnings:
- Externals/soundtouch/CMakeLists.txt: add -w (since it's not our code) to
silence an unused variable warning
- Source/Core/Core/NetPlayClient.cpp: Work around a Clang/libc++ bug where
initializing a std::array the way the standard says you're supposed to produces
a warning.  (libc++'s implementation of std::array, like any sane
implementation, has a C array as a field, so the most explicit form of
initialization would use two braces, one for the struct and one for the array.
Clang has a general warning for not being explicit with braces, which is
usually sane.  But the standard only guarantees that initializing std::array
works with a single pair of braces!)  There are other places in Dolphin that
incorrectly use double braces, presumably to avoid the warning, so maybe the
warning should just be turned off, but in any case here I just switch to an
equivalent .fill().
2016-07-10 21:51:28 -04:00
Pierre Bourdon
3a895f88bf Merge pull request #3988 from leoetlino/scanning-block
WiimoteReal: Don't block on refresh
2016-07-10 21:40:48 +02:00
Léo Lam
80fc5e2814 WiimoteReal: Don't use a recursive mutex
This replaces a recursive mutex with a normal mutex.
2016-07-10 20:41:00 +02:00
Léo Lam
c827fdd2b5 WiimoteReal: Don't block on refresh
This changes Refresh() to use the existing scanning thread to scan for
devices, instead of running the scan on the UI thread and blocking it.

Also makes the UI thread not block when Continuous Scanning is disabled
and removes duplicated code.

Should fix issue 8992.

Under the hood:
* The scanning thread is now always active, even when continuous
  scanning is disabled.
* The initialize code which waits for Wiimotes to be connected also
  uses the scanning thread instead of scanning on yet another thread.
* The scanning thread now always checks for disconnected devices, to
  avoid Dolphin thinking a Wiimote is still connected when it isn't. So
  we now check if we need new Wiimotes or a Balance Board at scan time.
2016-07-10 13:29:57 +02:00
Aestek
cd9a58b704 Check if all players have the game before starting netplay
https://bugs.dolphin-emu.org/issues/8885
2016-07-10 10:13:34 +02:00
Pierre Bourdon
7ee6d08213 Merge pull request #3961 from phire/less_virtual_xfb_lag
XFB: Send image to screen at start of field (Reduce VirtualXFB latency)
2016-07-10 03:01:26 +02:00
Pierre Bourdon
6204a813fd Merge pull request #3995 from RisingFog/remove_vi_movie_playback
Remove VI count limit on Movie playback
2016-07-10 02:54:31 +02:00
Chris Burgener
d00c013339 Remove VI count limit on Movie playback 2016-07-09 20:35:01 -04:00
mimimi085181
de7b2f984a Make tries a u32
Before this variable was an u8, which could theoretically result in desyncs with a large buffer(greater than 255*120/200=153) filled with blank inputs. If this could actually happen, i don't know. But this part of the code on its own looks like it could break.
2016-07-08 23:30:25 +02:00
mimimi085181
b962c1f392 Fix running more than one session with Wiimotes
A static var is not a good idea, when the value needs to be reset for every session. Also, the variable holds the data size, so it makes sense to set the data size, where the data is added.
2016-07-08 23:30:24 +02:00
mimimi085181
4f9fe41ee6 Revert pr#3660
https://github.com/dolphin-emu/dolphin/pull/3660
2016-07-08 20:23:33 +02:00
mimimi085181
330289cf71 Revert pr#3691
https://github.com/dolphin-emu/dolphin/pull/3691
2016-07-08 20:23:32 +02:00
JosJuice
b960b5677b Don't ScheduleEvent from wrong thread when inserting SD card 2016-07-08 00:02:06 +02:00
mimimi085181
fcf5d4f6bc Revert pr#3802
https://github.com/dolphin-emu/dolphin/pull/3802
2016-07-07 14:25:30 +02:00
JosJuice
865be48ee3 Movie: Simplify ChangeDisc path handling 2016-07-05 21:13:43 +02:00
JosJuice
ce9622c426 Use g_want_determinism in code added by 8f0cbef
There's no reason this only should apply to netplay.
2016-07-05 20:58:44 +02:00
JosJuice
6951228abd Use g_want_determinism more 2016-07-05 18:50:06 +02:00
JosJuice
1da866d7de DVDInterface: Simplify calling ChangeDisc from CPU thread
When Movie was calling ChangeDisc, it was moving execution to
the host thread just to then make the host thread the CPU thread.
We can simply run the code directly on the CPU thread instead.
2016-07-05 18:20:24 +02:00