Mercurial > repos > blastem
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);