32422 Commits

Author SHA1 Message Date
Gregor Richards
c5fe0ec6be Updating the Netplay README to be true of the current implementation. 2016-09-13 21:32:57 -04:00
Gregor Richards
147d739197 Fixed stall_frames=0 mode to only block if frames are actually needed.
Rather than counting on the complexicon of used_real calculations, set
used_real when... real is used. (Problem: If the core doesn't read input
at all, used_real won't be set; todo: test with handhelds.) Minor
resilience fixes.
2016-09-13 21:32:57 -04:00
Gregor Richards
c7d0bf90f6 Bugfixes to bring Netplay Nouveau from "kinda working" to "stably
working":

(1) Fixups to the stall logic to make sure it always receives frames
while stalling :)

(2) Disused the used_real field. It was misconfigured and would
frequently claim to be using real data when real data hadn't been
used... this means more replays for now, but used_real will be readded.
(TODO)

(3) Stall duration is now related to sync frames, and thus configurable.

(4) Delta frames were having the good ol' initialization problem, as
frame==0 was indistinguishable from unused. Quickfixed by adding a
"used" field, but maybe there's a better way.

(5) If serialization fails, switch immediately to blocking mode
(stall_frames = 0). Blocking mode barely works, but if serialization
fails, no mode will work!

(6) I'm not sure which bug my replaying-from-previous-frame was trying
to fix, but the correct behavior is to replay from the last frame we had
vital information, not the frame prior. Notionally this should just be
an efficiency thing, but unsigned arithmetic at 0 made this a "just
ignore all input from now on" thing.
2016-09-13 21:32:57 -04:00
Gregor Richards
07e869ccae is_simulated was confusing and poorly named. Using have_remote in its
place, which is simply true if we've received remote data. Could also
just use read_frame_crount instead, but this keeps the info frame-local.
2016-09-13 21:32:57 -04:00
Gregor Richards
4f16a19f5e Rather than stalling by blocking and becoming unresponsive, stall by
replaying the same frame. TODO: Maybe mute the audio?
2016-09-13 21:32:57 -04:00
Gregor Richards
5edfbeafb0 Switched Netplay over to TCP. A lot of the stalling logic had to change
for this, and in particular, it now sometimes stalls in a way that makes
it very difficult to actually input anything (whoops :) ). Simply
setting the sync frames higher avoids that. With supported cores, this
is incredibly risilient, but when it fails, it mostly fails to freezing,
which is less than ideal.

TODO: Stall frames should be configurable. All the UDP code is still
there but commented out, should be gutted. The original fast-forward
code is now commented out, but really both fast-forward and stalling
should be options; the only complication is that it needs to send
simulated self-input for fast-forward.
2016-09-13 21:32:57 -04:00
Gregor Richards
9a80a1bd7e Adding a bit of Netplay documentation. 2016-09-13 21:32:57 -04:00
Gregor Richards
69b7dc0d08 Multitudinous fixes and updates to Netplay. Had to be one commit since
they're mostly related:

(1) Renamed frame_count to self_frame_count to be consistent with all
other names.

(2) Previously, it was possible to overwrite data in the ring buffer
that hadn't yet been used. Now that's not possible, but that just
changes one breakage for another: It's now possible to miss the NEW
data. The final resolution for this will probably be requesting stalls.
This is accomplished simply by storing frame numbers in the ring buffer
and checking them against the 'other' head.

(3) In TCP packets, separated cmd_size from cmd. It was beyond pointless
for these to be combined, and restricted cmd_size to 16 bits, which
will probably fail when/if state loading is supported.

(4) Readahead is now allowed. In the past, if the peer got ahead of us,
we would simply ignore their data. Thus, if they got too far ahead of
us, we'd stop reading their data altogether. Fabulous. Now, we're happy
to read future input.

(5) If the peer gets too far ahead of us (currently an unconfigurable 10
frames), fast forward to catch up. This should prevent desync due to
clock drift or stutter.

(6) Used frame_count in a few places where ptr was used. Doing a
comparison of pointers on a ring buffer is a far more dangerous way to
assure we're done with a task than simply using the count, since the
ring buffer is... well, a ring.

(7) Renamed tmp_{ptr,frame_count} to replay_{ptr,frame_count} for
clarity.

(8) Slightly changed the protocol version hash, just to assure that
other clients wouldn't think they were compatible with this one.

(9) There was an off-by-one error which, under some circumstances, could
allow the replay engine to run a complete round through the ring buffer,
replaying stale data. Fixed.
2016-09-13 21:32:57 -04:00
radius
9022bf75ad (emscripten) make core assets a subdir of content 2016-09-13 19:48:17 -05:00
radius
0b46a6902d (emscripten) add downloads to userdata 2016-09-13 19:40:45 -05:00
radius
d6f82b4a16 (emscripten) disable buttons for real, use inmemory file system for content to be able to upload more than 10MB 2016-09-13 19:37:00 -05:00
Jean-André Santoni
6ff07a04b3 Merge pull request #3579 from lakkatv/master
(XMB) Undo icon
2016-09-13 23:22:34 +02:00
Ezio-PS
7763cf1301 Update Italian translation 2016-09-13 23:20:48 +02:00
Jean-André Santoni
7731b14b5c (XMB) Undo icon 2016-09-13 22:58:52 +02:00
twinaphex
10c29cd317 Add default 'no settings' entry if no settings could be added for
network settings
2016-09-13 22:43:20 +02:00
twinaphex
82dd2bc64c Should add default 'no settings' entry if no settings can be
pushed for updater settings list
2016-09-13 22:37:48 +02:00
Twinaphex
c06dc92c96 Merge pull request #3573 from lakkatv/master
(Menu) Hide Interface Settings in Lakka
2016-09-13 17:38:46 +02:00
Jean-André Santoni
d636f1b4b5 (Menu) Hide Interface Settings in Lakka 2016-09-13 17:18:00 +02:00
twinaphex
6b47bc0bdc Cleanup 2016-09-13 11:46:42 +02:00
twinaphex
9ccae28f6e Cleanups 2016-09-13 11:41:54 +02:00
radius
8fddf7f1ff prevent settings from propagating to main config when creating new overrides 2016-09-13 00:37:23 -05:00
twinaphex
337a0aac5a Cleanup 2016-09-12 20:40:07 +02:00
twinaphex
86c44e76fa Buildfix 2016-09-12 19:58:05 +02:00
twinaphex
f14797b67c Fix statically linked targets 2016-09-12 19:57:08 +02:00
Twinaphex
b73c7fe4e9 Merge pull request #3572 from frangarcj/patch-1
Wrong ifdef
2016-09-12 19:24:57 +02:00
Francisco José García García
912d26ec26 Wrong ifdef 2016-09-12 19:17:21 +02:00
twinaphex
3247de9afa Cleanup 2016-09-12 18:39:46 +02:00
twinaphex
d2dbe63b2b Cleanup 2016-09-12 18:37:32 +02:00
twinaphex
d4be224ea6 Header include cleanups 2016-09-12 18:34:57 +02:00
twinaphex
b0e372432f Cleanups 2016-09-12 18:18:20 +02:00
twinaphex
51823f7169 Cleanups 2016-09-12 18:16:42 +02:00
twinaphex
79222de018 Move define to scaler_filter.c 2016-09-12 17:32:35 +02:00
twinaphex
b4d75fbafd Cleanups 2016-09-12 17:29:01 +02:00
twinaphex
6f23a8ac0d Move httpserver to network/ 2016-09-12 17:21:00 +02:00
twinaphex
93d98069b2 Cleanups 2016-09-12 16:45:26 +02:00
twinaphex
e42034ebd8 Cleanups 2016-09-12 16:39:50 +02:00
twinaphex
cdc5eb4fac Cleanups 2016-09-12 16:36:27 +02:00
twinaphex
f735e96dfb Cleanup 2016-09-12 16:31:40 +02:00
twinaphex
ae158453e1 (Emscripten) Add title for menu toggle 2016-09-12 15:17:28 +02:00
twinaphex
49d5210256 Should make Start Core work on statically linked RA now 2016-09-12 08:37:40 +02:00
Twinaphex
488079d39f Merge pull request #3569 from frangarcj/master
Allow "Load Content" when RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME = true on static
2016-09-12 08:24:53 +02:00
Twinaphex
394d2a1e6b Merge pull request #3568 from Skylark13/master
Add fetching git submodules
2016-09-12 07:02:16 +02:00
Jean-Sebastien Guay
0774831b21 Add --recursive in case submodules have third-party dependencies 2016-09-11 19:43:16 -04:00
Francisco José García García
b5111d4654 Fix Typo 2016-09-12 01:14:12 +02:00
Francisco José García García
b8391e4cc2 Allow "Load Content" when RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME = true 2016-09-12 01:10:35 +02:00
Jean-Sebastien Guay
2ad380e677 Add fetching git submodules (in the case of retroarch, currently only glslang) 2016-09-11 17:31:16 -04:00
twinaphex
77ddea41c8 Move ifdefs around 2016-09-11 21:06:16 +02:00
twinaphex
056cc8ece8 Move menu_popu.c to menu/widgets 2016-09-11 21:03:31 +02:00
twinaphex
6b66377ed6 retroarch.c - set default values 2016-09-11 20:04:41 +02:00
twinaphex
16fea8d26d Create retroarch_main_init_media 2016-09-11 19:57:06 +02:00