Commit Graph

136 Commits

Author SHA1 Message Date
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
twinaphex
b0e372432f Cleanups 2016-09-12 18:18:20 +02:00
twinaphex
6f23a8ac0d Move httpserver to network/ 2016-09-12 17:21:00 +02:00
twinaphex
db6171676a Use retro_assert everywhere 2016-09-08 11:59:44 +02:00
twinaphex
c3ba0ba4e9 Revert "Refactor core_system_info_* functions"
This reverts commit f637805c9e.
2016-09-06 08:38:26 +02:00
twinaphex
f637805c9e Refactor core_system_info_* functions 2016-09-06 07:08:38 +02:00
twinaphex
82d82110ae Merge system.h with core.h 2016-09-06 06:11:54 +02:00
twinaphex
e6524f961a header include cleanups 2016-09-06 01:02:25 +02:00
twinaphex
075aea2289 Header include cleanups 2016-09-06 00:56:00 +02:00
twinaphex
acd4dd527b Header include cleanups 2016-09-05 18:31:32 +02:00
twinaphex
9191bfa3c0 Header include cleanups 2016-09-03 07:51:11 +02:00
twinaphex
23612cb26f Header include cleanups 2016-09-03 07:48:25 +02:00
twinaphex
50563d255f Header cleanups 2016-09-03 07:45:51 +02:00
sergiobenrocha2
7ba35a9929 Fix some spelling errors (pendantic info lintian warnings). 2016-07-20 23:28:29 -03:00
twinaphex
982dd47f01 Translate a bunch of log strings 2016-06-29 03:06:15 +02:00
twinaphex
13dd8e4905 Add translations 2016-06-28 12:08:30 +02:00
twinaphex
aabb1e409c Move netplay code to network/netplay dir 2016-05-19 11:46:54 +02:00
twinaphex
cba281052a Rename np_ functions 2016-05-12 12:03:43 +02:00
twinaphex
a7d4379011 Rename np_is_server to netplay_is_server 2016-05-12 10:20:14 +02:00
twinaphex
df3b090d7a Revert "Create runloop_get_system_info/runloop_free_system_info/runloop_init_system_info"
This reverts commit 35bf38e05c.
2016-05-12 09:37:21 +02:00
twinaphex
35bf38e05c Create runloop_get_system_info/runloop_free_system_info/runloop_init_system_info 2016-05-12 09:25:52 +02:00
twinaphex
9aed52ac65 Move performance.c to libretro-common/features/features_cpu.c 2016-05-10 20:31:27 +02:00
twinaphex
4a7ab8366b Move libretro.h headers to libretro-common/include 2016-05-10 19:03:53 +02:00
twinaphex
35ea37b37f Revert "Move cpu_features to libretro-common"
This reverts commit 2b8ff3bf38.
2016-05-10 09:32:24 +02:00
twinaphex
2b8ff3bf38 Move cpu_features to libretro-common 2016-05-10 09:27:29 +02:00
twinaphex
0d371def5c Refactor performance.c code 2016-05-10 09:17:04 +02:00
twinaphex
b79b2dca13 Create performance_counters 2016-05-10 08:53:14 +02:00
twinaphex
2691ab0c7d Rename command_event enums 2016-05-09 20:51:53 +02:00
twinaphex
523ebed112 Combine command_event.c and command.c 2016-05-09 20:30:47 +02:00
twinaphex
a98ef36d36 Rename event_cmd_ctl to command_event 2016-05-09 20:20:50 +02:00
twinaphex
1cd98f1cf7 (Androd) Buildfix 2016-05-09 19:21:40 +02:00
twinaphex
7ca75d46f8 Move net_http_special to network/ 2016-05-09 17:47:45 +02:00
twinaphex
751872afa4 Move netlogger.c to network/ 2016-05-09 17:45:21 +02:00
twinaphex
3722826e0a Rename netplay/ to network/ 2016-05-09 17:43:38 +02:00