Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* WARNING: this is only an idea of how save states could be implemented
- in libretro, I didn't even tried to compile this code :)
- */
- size_t retro_serialize_size(void)
- {
- /* You can ask the real size and pray that it doesn't change afterward... */
- size_t size;
- YabSaveStateBuffer(NULL, &size);
- return size;
- /* Or you can try some "safe" value */
- return 5000000;
- }
- bool retro_serialize(void *data, size_t size)
- {
- void * buffer;
- size_t bufsize;
- int status;
- status = YabSaveStateBuffer(&buffer, &bufsize);
- if (status != 0) return false;
- if (bufsize > size)
- {
- free(buffer);
- return false;
- }
- /* yeah... that means we don't fill the whole data area
- and there will be trailing random data */
- memcpy(data, buffer, bufsize);
- free(buffer);
- return true;
- }
- bool retro_unserialize(const void *data, size_t size)
- {
- /* again, size may be different from what yabause needs.
- If it's smaller, loading will fail.
- If it's larger, random data at the end is ignored */
- int status = YabLoadStateBuffer(data, size);
- return status == 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement