Mercurial > repos > blastem
comparison cdimage.c @ 2280:9ead0fe69d9b
Implement savestate support for Sega CD
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 08 Jan 2023 14:42:24 -0800 |
parents | 646d1797f20d |
children | efc75ea79164 |
comparison
equal
deleted
inserted
replaced
2279:3b5fef896475 | 2280:9ead0fe69d9b |
---|---|
559 media->seek = bin_seek; | 559 media->seek = bin_seek; |
560 media->read = bin_read; | 560 media->read = bin_read; |
561 media->read_subcodes = bin_subcode_read; | 561 media->read_subcodes = bin_subcode_read; |
562 return media->size; | 562 return media->size; |
563 } | 563 } |
564 | |
565 void cdimage_serialize(system_media *media, serialize_buffer *buf) | |
566 { | |
567 if (media->type != MEDIA_CDROM) { | |
568 return; | |
569 } | |
570 save_int32(buf, media->cur_track); | |
571 save_int32(buf, media->cur_sector); | |
572 if (media->cur_track < media->num_tracks && media->tracks[media->cur_track].f) { | |
573 save_int32(buf, ftell(media->tracks[media->cur_track].f)); | |
574 } else { | |
575 save_int32(buf, 0); | |
576 } | |
577 save_int8(buf, media->in_fake_pregap); | |
578 save_int8(buf, media->byte_storage); | |
579 if (media->tmp_buffer) { | |
580 save_buffer8(buf, media->tmp_buffer, 96); | |
581 } | |
582 } | |
583 | |
584 void cdimage_deserialize(deserialize_buffer *buf, void *vmedia) | |
585 { | |
586 system_media *media = vmedia; | |
587 if (media->type != MEDIA_CDROM) { | |
588 return; | |
589 } | |
590 media->cur_track = load_int32(buf); | |
591 media->cur_sector = load_int32(buf); | |
592 uint32_t seekpos = load_int32(buf); | |
593 if (media->cur_track < media->num_tracks && media->tracks[media->cur_track].f) { | |
594 fseek(media->tracks[media->cur_track].f, seekpos, SEEK_SET); | |
595 } | |
596 media->in_fake_pregap = load_int8(buf); | |
597 media->byte_storage = load_int8(buf); | |
598 if (media->tmp_buffer) { | |
599 load_buffer8(buf, media->tmp_buffer, 96); | |
600 } | |
601 } |