Mercurial > repos > blastem
comparison serialize.h @ 1427:4e5797b3935a
WIP - New savestate format
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 06 Aug 2017 00:06:36 -0700 |
parents | |
children | c886c54d8cf1 |
comparison
equal
deleted
inserted
replaced
1426:957325c990d5 | 1427:4e5797b3935a |
---|---|
1 #ifndef SERIALIZE_H_ | |
2 #define SERIALIZE_H_ | |
3 | |
4 #include <stdint.h> | |
5 #include <stddef.h> | |
6 | |
7 typedef struct { | |
8 size_t size; | |
9 size_t storage; | |
10 size_t current_section_start; | |
11 uint8_t *data; | |
12 } serialize_buffer; | |
13 | |
14 typedef struct deserialize_buffer deserialize_buffer; | |
15 typedef void (*section_fun)(deserialize_buffer *buf, void *data); | |
16 | |
17 typedef struct { | |
18 section_fun fun; | |
19 void *data; | |
20 } section_handler; | |
21 | |
22 struct deserialize_buffer { | |
23 size_t size; | |
24 size_t cur_pos; | |
25 uint8_t *data; | |
26 section_handler *handlers; | |
27 uint16_t max_handler; | |
28 }; | |
29 | |
30 enum { | |
31 SECTION_HEADER, | |
32 SECTION_68000, | |
33 SECTION_Z80, | |
34 SECTION_VDP, | |
35 SECTION_YM2612, | |
36 SECTION_PSG, | |
37 SECTION_GEN_BUS_ARBITER, | |
38 SECTION_SEGA_IO_1, | |
39 SECTION_SEGA_IO_2, | |
40 SECTION_SEGA_IO_EXT, | |
41 SECTION_MAIN_RAM, | |
42 SECTION_SOUND_RAM, | |
43 SECTION_SEGA_MAPPER, | |
44 SECTION_SMS_MAPPER, | |
45 SECTION_EEPROM | |
46 }; | |
47 | |
48 void init_serialize(serialize_buffer *buf); | |
49 void save_int32(serialize_buffer *buf, uint32_t val); | |
50 void save_int16(serialize_buffer *buf, uint16_t val); | |
51 void save_int8(serialize_buffer *buf, uint8_t val); | |
52 void save_string(serialize_buffer *buf, char *val); | |
53 void save_buffer8(serialize_buffer *buf, void *val, size_t len); | |
54 void save_buffer16(serialize_buffer *buf, uint16_t *val, size_t len); | |
55 void save_buffer32(serialize_buffer *buf, uint32_t *val, size_t len); | |
56 void start_section(serialize_buffer *buf, uint16_t section_id); | |
57 void end_section(serialize_buffer *buf); | |
58 void register_section_handler(deserialize_buffer *buf, section_handler handler, uint16_t section_id); | |
59 void init_deserialize(deserialize_buffer *buf, uint8_t *data, size_t size); | |
60 uint32_t load_int32(deserialize_buffer *buf); | |
61 uint16_t load_int16(deserialize_buffer *buf); | |
62 uint8_t load_int8(deserialize_buffer *buf); | |
63 void load_buffer8(deserialize_buffer *buf, void *dst, size_t len); | |
64 void load_buffer16(deserialize_buffer *buf, uint16_t *dst, size_t len); | |
65 void load_buffer32(deserialize_buffer *buf, uint32_t *dst, size_t len); | |
66 void load_section(deserialize_buffer *buf); | |
67 uint8_t save_to_file(serialize_buffer *buf, char *path); | |
68 uint8_t load_from_file(deserialize_buffer *buf, char *path); | |
69 #endif //SERIALIZE_H |