comparison rf5c164.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 5a21bc0ec583
children 0343f0d5add0
comparison
equal deleted inserted replaced
2279:3b5fef896475 2280:9ead0fe69d9b
260 for (int i = 0; i < 8; i ++) 260 for (int i = 0; i < 8; i ++)
261 { 261 {
262 pcm->channels[i].scope_channel = scope_add_channel(scope, names[i], 50000000 / (pcm->clock_step * 96)); 262 pcm->channels[i].scope_channel = scope_add_channel(scope, names[i], 50000000 / (pcm->clock_step * 96));
263 } 263 }
264 } 264 }
265
266 void rf5c164_serialize(rf5c164* pcm, serialize_buffer *buf)
267 {
268 save_int32(buf, pcm->cycle);
269 save_buffer16(buf, pcm->ram, sizeof(pcm->ram)/sizeof(*pcm->ram));
270 save_int16(buf, pcm->ram_bank);
271 save_int16(buf, pcm->pending_address);
272 save_int32(buf, pcm->left);
273 save_int32(buf, pcm->right);
274 for (int i = 0; i < 8; i++)
275 {
276 rf5c164_channel *chan = pcm->channels + i;
277 save_int32(buf, chan->cur_ptr);
278 save_buffer8(buf, chan->regs, sizeof(chan->regs));
279 save_int8(buf, chan->sample);
280 }
281 save_int8(buf, pcm->pending_byte);
282 save_int8(buf, pcm->channel_enable);
283 save_int8(buf, pcm->selected_channel);
284 save_int8(buf, pcm->cur_channel);
285 save_int8(buf, pcm->step);
286 save_int8(buf, pcm->flags);
287 }
288
289 void rf5c164_deserialize(deserialize_buffer *buf, void *vpcm)
290 {
291 rf5c164 *pcm = vpcm;
292 pcm->cycle = load_int32(buf);
293 load_buffer16(buf, pcm->ram, sizeof(pcm->ram)/sizeof(*pcm->ram));
294 pcm->ram_bank = load_int16(buf);
295 pcm->pending_address = load_int16(buf);
296 pcm->left = load_int32(buf);
297 pcm->right = load_int32(buf);
298 for (int i = 0; i < 8; i++)
299 {
300 rf5c164_channel *chan = pcm->channels + i;
301 chan->cur_ptr = load_int32(buf);
302 load_buffer8(buf, chan->regs, sizeof(chan->regs));
303 chan->sample = load_int8(buf);
304 }
305 pcm->pending_byte = load_int8(buf);
306 pcm->channel_enable = load_int8(buf);
307 pcm->selected_channel = load_int8(buf);
308 pcm->cur_channel = load_int8(buf);
309 pcm->step = load_int8(buf);
310 pcm->flags = load_int8(buf);
311 }