1631 Commits

Author SHA1 Message Date
Jordan Woyak
6848812a31 Produce emulated nunchuk calibration data. 2018-12-15 10:27:06 -06:00
Pierre Bourdon
8d20a173f0
Merge pull request #7579 from AdmiralCurtiss/next-free-block-fix
GCMemcard: Fix mixed memcard-based and bat-based indices in definition and usage of NextFreeBlock().
2018-11-22 06:54:52 +01:00
Pierre Bourdon
0c6d677233
Merge pull request #7582 from AdmiralCurtiss/memcard-delete-wrong-dir
GCMemcard: Fix incorrect directory block being accessed in RemoveFile().
2018-11-22 06:43:25 +01:00
Admiral H. Curtiss
431e6c42e1 GCMemcard: Fix incorrect directory block being accessed in RemoveFile().
When deleting files, block index data was always fetched from the first copy of the directory listing rather than the currently active one.
2018-11-21 00:15:58 +01:00
Admiral H. Curtiss
353e289fbf GCMemcard: Fix mixed memcard-based and bat-based indices in definition and usage of NextFreeBlock(). 2018-11-19 20:40:18 +01:00
Techjar
f4eb4fab08 HW/WiiSave: Fix reversed condition in WriteFiles
This didn't make any sense, as it would only attempt to create the directory if it already existed, and would simply fail if it didn't exist.
2018-11-19 06:37:09 -05:00
Pierre Bourdon
a9f7df5b15 SystemTimers: fix a 1-in-1000 crash happening in throttler performance 2018-11-10 20:50:17 +01:00
JosJuice
20b8c24847 Fix first DTK track not playing after booting with IPL
DVDLowAudioBufferConfig doesn't start a DTK stream, it just tells the
drive that the game is allowed to use DTK. At least if I'm not mistaken.
2018-11-01 21:06:11 +01:00
Pierre Bourdon
64e04eb38c SystemTimers: export performance index from the throttler callback 2018-10-27 15:14:59 +02:00
Pierre Bourdon
eadb4a66a5 ThrottleCallback: use microseconds to represent realtime
Using milliseconds doesn't provide a lot of granularity, and we can use
all we can get for performance analysis.
2018-10-25 02:27:49 +02:00
Shawn Hoffman
2a0f022da3 mx sram: replace union-with-byte-array with operator[] to make gcc happy. 2018-10-01 00:00:20 -07:00
Shawn Hoffman
d300f3bbbc exi ipl: quiet a gcc warning 2018-09-30 18:22:35 -07:00
Shawn Hoffman
2cd96aa5bb mx sram: fix checksum calc; use Common::BigEndianValue for rtc field. 2018-09-30 17:58:37 -07:00
Shawn Hoffman
d594d4f12f Fix sram accesses. 2018-09-29 22:52:29 -07:00
Mat M
3cee297c87
Merge pull request #7331 from booto/si_buffer
SI: Add 16bit accessors for SI IO buffer
2018-09-27 21:50:50 -04:00
Léo Lam
e90bd035cb
Merge pull request #7262 from lioncash/force
ControlGroup: Return state data via GetState() by value where applicable
2018-09-16 16:04:21 +02:00
Léo Lam
40b7fab235
Merge pull request #7261 from lioncash/static
WiimoteReal: Make functions internally linked where applicable
2018-09-16 15:30:25 +02:00
booto
3825e2e5ff SI: Add 16bit accessors for SI IO buffer
Dolphin has traditionally treated the SI IO buffer (128 bytes) as a set of
32 little endian u32s. This works out fine if you only ever read/write
using aligned 32bit accesses. Different sized accesses or misaligned reads
will mess it up. Byte swapping reads/writes will fix this up, but all the
SI devices that use the SI IO buffer need to be adjusted.
2018-09-11 22:19:13 -04:00
Lioncash
8753321841 IOWin: Use anonymous namespaces where applicable
Several functions (and one variable) were being given external linkage.
Instead, relocate them all to anonymous namespaces to make them
internally linked.
2018-08-27 16:10:07 -04:00
Pierre Bourdon
f2323331ea
Merge pull request #7240 from lioncash/namespace
Common/DebugInterface: Namespace code under the Common namespace
2018-08-27 04:49:26 +02:00
Techjar
5519efa66e NetPlay host input authority mode
Currently, each player buffers their own inputs and sends them to the
host. The host then relays those inputs to everyone else. Every player
waits on inputs from all players to be buffered before continuing. What
this means is all clients run in lockstep, and the total latency of
inputs cannot be lower than the sum of the 2 highest client ping times
in the game (in 3+ player sessions with people across the world, the
latency can be very high).

Host input authority mode changes it so players no longer buffer their
own inputs, and only send them to the host. The host stores only the
most recent input received from a player. The host then sends inputs
for all pads at the SI poll interval, similar to the existing code. If
a player sends inputs to slowly, their last received input is simply
sent again. If they send too quickly, inputs are dropped. This means
that the host has full control over what inputs are actually read by
the game, hence the name of the mode. Also, because the rate at which
inputs are received by SI is decoupled from the rate at which players
are sending inputs, clients are no longer dependent on each other. They
only care what the host is doing. This means that they can set their
buffer individually based on their latency to the host, rather than the
highest latency between any 2 players, allowing someone with lower ping
to the host to have less latency than someone else.

This is a catch to this: as a necessity of how the host's input sending
works, the host has 0 latency. There isn't a good way to fix this, as
input delay is now solely dependent on the real latency to the host's
server. Having differing latency between players would be considered
unfair for competitive play, but for casual play we don't really care.
For this reason though, combined with the potential for a few inputs to
be dropped on a bad connection, the old mode will remain and this new
mode is entirely optional.
2018-08-26 17:10:23 -04:00
booto
168fdf814b Fix analog modes that use 4 bits for c-stick data
Also get rid of a load of unnecessary casts
2018-08-16 02:17:17 -04:00
Anthony
72d5ff54f3
Merge pull request #7257 from lioncash/const
WiimoteEmu: Minor changes
2018-08-03 20:09:31 -07:00
Techjar
7036299a92 NetPlay: Improve settings synchronization and UI
Most settings which affect determinism will now be synced on NetPlay.
Additionally, there's a strict sync mode which will sync various
enhancements to prevent desync in games that use EFB reads.

This also adds a check for all players having the IPL.bin file, and
doesn't load it for anyone if someone is missing it. This prevents
desyncs caused by mismatched system fonts.

Additionally, the NetPlay window was getting too wide with checkboxes,
so FlowLayout has been introduced to make the checkboxes take up
multiple rows dynamically. However, there's some minor vertical
centering issues I haven't been able to solve, but it's better than a
ridiculously wide window.
2018-07-26 17:23:04 -04:00
Techjar
4407854e9c NetPlay save data synchronization
This adds the functionality of sending the host's save data (raw memory
cards, as well as GCI files and Wii saves with a matching GameID) to
all other clients. The data is compressed using LZO1X to greatly reduce
its size while keeping compression/decompression fast. Save
synchronization is enabled by default, and toggleable with a checkbox
in the NetPlay dialog.

On clicking start, if the option is enabled, game boot will be delayed
until all players have received the save data sent by the host. If any
player fails to receive it properly, boot will be cancelled to prevent
desyncs.
2018-07-19 18:09:20 -04:00
Lioncash
9983d92981 WiimoteEmu: Resolve unrelated lint code style warnings
This discrepancy was introduced in b3b1845785429e19076063c00daf13a2da1ec6b1
2018-07-13 13:34:00 -04:00
Lioncash
cfe7549091 ControlGroup/Triggers: Return state data by value
Makes it less error-prone to get state data from analog sticks (no need
to pass any locals), and also allows direct assignment, letting the
retrieved data be const.
2018-07-13 13:20:35 -04:00
Lioncash
97ba02df27 ControlGroup/Tilt: Return state data by value
Makes it less error-prone to get state data from tilt controls (no need
to pass any pointers to locals), and also allows direct assignment,
letting the retrieved data be const.
2018-07-13 13:20:35 -04:00
Lioncash
918d448b5b ControlGroup/Slider: Return state data by value
Makes it less error-prone to get state data from sliders (no need
to pass any locals), and also allows direct assignment, letting the
retrieved data be const.
2018-07-13 13:20:35 -04:00
Lioncash
4c30b9e14d ControlGroup/Force: Return state data by value
Ensures that an array of sufficient size is always used and doesn't put
the responsibility on the caller. It also allows for direct assignment.
2018-07-13 13:20:35 -04:00
Lioncash
ef1240b0c7 ControlGroup/Cursor: Return state data by value
Makes it less error-prone to get state data from cursors (no need
to pass any pointers to locals), and also allows direct assignment,
letting the retrieved data be const.
2018-07-13 13:20:35 -04:00
Lioncash
d05f490caa ControlGroup/AnalogStick: Return state data by value
Makes it less error-prone to get state data from analog sticks (no need
to pass any locals), and also allows direct assignment, letting the
retrieved data be const.
2018-07-13 13:20:31 -04:00
Lioncash
d80f91478f WiimoteReal: Make functions internally linked where applicable
These functions are only used within this translation unit, so they can
be made internally linked.
2018-07-13 09:24:27 -04:00
Lioncash
113a357604 WiimoteEmu: Make constructor of Wiimote explicit
Prevents implicit conversions
2018-07-12 15:59:31 -04:00
Lioncash
5b58977561 WiimoteEmu: Amend parameter names for EmulateShake() and EmulateSwing()
Ensures they match their naming within the definition of the function.

In EmulateSwing's case, one parameter was erroneously named tilt_group,
when it's actually supposed to be swing_group.
2018-07-12 15:58:50 -04:00
Lioncash
2825b2daa2 WiimoteEmu: Remove unnecessary value-wise const from function prototypes
These aren't necessary in the prototype, however they do apply in the
definition of the function. This just cuts down on line noise within the
prototypes.
2018-07-12 15:54:01 -04:00
spycrab
cc6526f553
Merge pull request #6222 from iwubcode/emulated_input_improvements
Emulated wii input improvements
2018-07-12 20:36:53 +02:00
spycrab
b3b1845785 HW/WiimoteEmu: Add Forward Option 2018-07-12 19:35:30 +02:00
Techjar
006202a33c NetPlay: Fix SRAM desyncing after first boot 2018-07-10 05:03:31 -04:00
Lioncash
dfdfe6c972
Common/DebugInterface: Namespace code under the Common namespace
Gets more identifiers out of the global namespace and makes it more in
line with the rest of the (mostly) namespaced Common code.
2018-07-09 22:23:57 -04:00
Techjar
38e67c0530 NetPlay: Change "Reduce Polling Rate" to poll twice per frame
Some games don't play nice when we poll only once per frame, so we'll poll twice instead.
2018-07-08 06:14:13 -04:00
iwubcode
3b11066e61 Fix lint bugs 2018-07-07 13:02:38 -05:00
iwubcode
230af569ed Input - Make dynamic rules be definable per game. Configuration can now
define how many frames constitute a high or a low swing/shake when the
button is down.  Also configurable is the number of frames to execute
the swing/shake after the button is released.
2018-07-07 12:55:52 -05:00
iwubcode
29b71fb9ce Wiimote Emulation: increase left/right bounds for IR calculation, to fix games that previously you couldn't reach the left/right edges (ex: system menu) 2018-07-07 00:49:47 -05:00
iwubcode
5cbc825bc9 Wiimote Emulation: add 'dynamic' swing/shake options that vary based on how long the key is pressed 2018-07-07 00:49:47 -05:00
iwubcode
9936a83a1b Add game-configurable shake/swing commands for the nunchuk at three intensities 2018-07-07 00:49:47 -05:00
iwubcode
fb7a6a1bbe Wiimote Emulation: Add game-configurable shake/swing commands for the wiimote at three intensities 2018-07-07 00:49:47 -05:00
spycrab
eb01a0a040
Merge pull request #7204 from spycrab/exclusive_mapping
Support for exclusive mapping booleans
2018-07-06 11:27:20 +02:00
spycrab
3ab3ba0d99
Merge pull request #7187 from Techjar/netplay-reduce-poll-rate
Add "Reduce Polling Rate" option to NetPlay
2018-07-04 20:49:29 +02:00
spycrab
3e2e813607 HW/WiimoteEmu: Make "Upright / Sideways Wii Remote" mutually exclusive 2018-07-02 15:27:03 +02:00