diff --git a/network/netplay/netplay_common.c b/network/netplay/netplay_common.c index 7384771b79..7bb5b09789 100644 --- a/network/netplay/netplay_common.c +++ b/network/netplay/netplay_common.c @@ -280,9 +280,10 @@ bool netplay_get_info(netplay_t *netplay) netplay->self_frame_count = netplay->read_frame_count = netplay->other_frame_count = 0; for (i = 0; i < netplay->buffer_size; i++) { + netplay->buffer[i].used = false; if (i == netplay->self_ptr) { - netplay->buffer[i].frame = 0; + netplay_delta_frame_ready(netplay, &netplay->buffer[i], 0); } else { diff --git a/network/netplay/netplay_net.c b/network/netplay/netplay_net.c index 6724b39aa5..e31f52beb0 100644 --- a/network/netplay/netplay_net.c +++ b/network/netplay/netplay_net.c @@ -124,17 +124,15 @@ static bool netplay_net_pre_frame(netplay_t *netplay) { netplay->has_connection = true; - /* If we're not at frame 0, send them the savestate */ - if (netplay->self_frame_count != 0 && netplay->savestates_work) + /* Send them the savestate */ + if (netplay->savestates_work) { - serial_info.size = netplay->state_size; - serial_info.data_const = netplay->buffer[netplay->self_ptr].state; - netplay_load_savestate(netplay, &serial_info, false); + netplay_load_savestate(netplay, NULL, true); } /* And expect the current frame from the other side */ netplay->read_frame_count = netplay->other_frame_count = netplay->self_frame_count; - netplay->read_ptr = netplay->other_ptr = netplay->read_ptr; + netplay->read_ptr = netplay->other_ptr = netplay->self_ptr; /* Unstall if we were waiting for this */ if (netplay->stall == RARCH_NETPLAY_STALL_NO_CONNECTION)