annotate serialize.h @ 1971:80920c21bb52

Add an event log soft flush and call it twice per frame in between hard flushes to netplay latency when there are insufficient hardware updates to flush packets in the middle of a frame
author Michael Pavone <pavone@retrodev.com>
date Fri, 08 May 2020 11:40:30 -0700
parents c886c54d8cf1
children 3b8e29ef1145
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1427
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #ifndef SERIALIZE_H_
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
2 #define SERIALIZE_H_
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
3
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
4 #include <stdint.h>
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
5 #include <stddef.h>
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
6
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
7 typedef struct {
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
8 size_t size;
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
9 size_t storage;
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
10 size_t current_section_start;
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
11 uint8_t *data;
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
12 } serialize_buffer;
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
13
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
14 typedef struct deserialize_buffer deserialize_buffer;
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
15 typedef void (*section_fun)(deserialize_buffer *buf, void *data);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
16
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
17 typedef struct {
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
18 section_fun fun;
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
19 void *data;
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
20 } section_handler;
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
21
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
22 struct deserialize_buffer {
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
23 size_t size;
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
24 size_t cur_pos;
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
25 uint8_t *data;
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
26 section_handler *handlers;
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
27 uint16_t max_handler;
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
28 };
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
29
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
30 enum {
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
31 SECTION_HEADER,
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
32 SECTION_68000,
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
33 SECTION_Z80,
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
34 SECTION_VDP,
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
35 SECTION_YM2612,
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
36 SECTION_PSG,
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
37 SECTION_GEN_BUS_ARBITER,
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
38 SECTION_SEGA_IO_1,
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
39 SECTION_SEGA_IO_2,
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
40 SECTION_SEGA_IO_EXT,
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
41 SECTION_MAIN_RAM,
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
42 SECTION_SOUND_RAM,
1433
c886c54d8cf1 Added save states to SMS emulation
Michael Pavone <pavone@retrodev.com>
parents: 1427
diff changeset
43 SECTION_MAPPER,
c886c54d8cf1 Added save states to SMS emulation
Michael Pavone <pavone@retrodev.com>
parents: 1427
diff changeset
44 SECTION_EEPROM,
c886c54d8cf1 Added save states to SMS emulation
Michael Pavone <pavone@retrodev.com>
parents: 1427
diff changeset
45 SECTION_CART_RAM
1427
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
46 };
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
47
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
48 void init_serialize(serialize_buffer *buf);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
49 void save_int32(serialize_buffer *buf, uint32_t val);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
50 void save_int16(serialize_buffer *buf, uint16_t val);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
51 void save_int8(serialize_buffer *buf, uint8_t val);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
52 void save_string(serialize_buffer *buf, char *val);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
53 void save_buffer8(serialize_buffer *buf, void *val, size_t len);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
54 void save_buffer16(serialize_buffer *buf, uint16_t *val, size_t len);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
55 void save_buffer32(serialize_buffer *buf, uint32_t *val, size_t len);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
56 void start_section(serialize_buffer *buf, uint16_t section_id);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
57 void end_section(serialize_buffer *buf);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
58 void register_section_handler(deserialize_buffer *buf, section_handler handler, uint16_t section_id);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
59 void init_deserialize(deserialize_buffer *buf, uint8_t *data, size_t size);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
60 uint32_t load_int32(deserialize_buffer *buf);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
61 uint16_t load_int16(deserialize_buffer *buf);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
62 uint8_t load_int8(deserialize_buffer *buf);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
63 void load_buffer8(deserialize_buffer *buf, void *dst, size_t len);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
64 void load_buffer16(deserialize_buffer *buf, uint16_t *dst, size_t len);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
65 void load_buffer32(deserialize_buffer *buf, uint32_t *dst, size_t len);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
66 void load_section(deserialize_buffer *buf);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
67 uint8_t save_to_file(serialize_buffer *buf, char *path);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
68 uint8_t load_from_file(deserialize_buffer *buf, char *path);
4e5797b3935a WIP - New savestate format
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
69 #endif //SERIALIZE_H