diff gen_player.c @ 1957:ba06346611a1

Fix some netplay issues
author Mike Pavone <pavone@retrodev.com>
date Sat, 02 May 2020 00:52:21 -0700
parents c36102d09351
children 9c01945b5d20
line wrap: on
line diff
--- a/gen_player.c	Fri May 01 23:39:45 2020 -0700
+++ b/gen_player.c	Sat May 02 00:52:21 2020 -0700
@@ -47,10 +47,12 @@
 			break;
 		case EVENT_PSG_REG:
 			sync_sound(player, cycle);
+			reader_ensure_data(&player->reader, 1);
 			psg_write(player->psg, load_int8(&player->reader.buffer));
 			break;
 		case EVENT_YM_REG: {
 			sync_sound(player, cycle);
+			reader_ensure_data(&player->reader, 3);
 			uint8_t part = load_int8(&player->reader.buffer);
 			uint8_t reg = load_int8(&player->reader.buffer);
 			uint8_t value = load_int8(&player->reader.buffer);
@@ -62,12 +64,10 @@
 			ym_data_write(player->ym, value);
 			break;
 		case EVENT_STATE: {
+			reader_ensure_data(&player->reader, 3);
 			uint32_t size = load_int8(&player->reader.buffer) << 16;
 			size |= load_int16(&player->reader.buffer);
-			if (player->reader.buffer.size - player->reader.buffer.cur_pos < size) {
-				puts("State has not been fully loaded!");
-				exit(1);
-			}
+			reader_ensure_data(&player->reader, size);
 			deserialize_buffer buffer;
 			init_deserialize(&buffer, player->reader.buffer.data + player->reader.buffer.cur_pos, size);
 			register_section_handler(&buffer, (section_handler){.fun = vdp_deserialize, .data = player->vdp}, SECTION_VDP);