Mercurial > repos > blastem
comparison menu.c @ 1433:c886c54d8cf1
Added save states to SMS emulation
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 16 Aug 2017 20:06:28 -0700 |
parents | 2540c05520f2 |
children | b9dbc823c014 |
comparison
equal
deleted
inserted
replaced
1432:5e7e6d9b79ff | 1433:c886c54d8cf1 |
---|---|
418 m68k->should_return = 1; | 418 m68k->should_return = 1; |
419 break; | 419 break; |
420 case 6: | 420 case 6: |
421 //load state | 421 //load state |
422 if (gen->header.next_context && gen->header.next_context->save_dir) { | 422 if (gen->header.next_context && gen->header.next_context->save_dir) { |
423 if (!gen->header.next_context->load_state(gen->header.next_context, dst)) { | |
424 break; | |
425 }/* | |
423 char numslotname[] = "slot_0.state"; | 426 char numslotname[] = "slot_0.state"; |
424 char *slotname; | 427 char *slotname; |
425 if (dst == QUICK_SAVE_SLOT) { | 428 if (dst == QUICK_SAVE_SLOT) { |
426 slotname = "quicksave.state"; | 429 slotname = "quicksave.state"; |
427 } else { | 430 } else { |
428 numslotname[5] = '0' + dst; | 431 numslotname[5] = '0' + dst; |
429 slotname = numslotname; | 432 slotname = numslotname; |
430 } | 433 } |
431 char const *parts[] = {gen->header.next_context->save_dir, PATH_SEP, slotname}; | 434 char const *parts[] = {gen->header.next_context->save_dir, PATH_SEP, slotname}; |
432 char *statepath = alloc_concat_m(3, parts); | 435 char *statepath = alloc_concat_m(3, parts); |
436 gen->header.next_context->load_state | |
433 genesis_context *next = (genesis_context *)gen->header.next_context; | 437 genesis_context *next = (genesis_context *)gen->header.next_context; |
434 deserialize_buffer state; | 438 deserialize_buffer state; |
435 uint32_t pc = 0; | 439 uint32_t pc = 0; |
436 if (load_from_file(&state, statepath)) { | 440 if (load_from_file(&state, statepath)) { |
437 genesis_deserialize(&state, next); | 441 genesis_deserialize(&state, next); |
445 free(statepath); | 449 free(statepath); |
446 if (!pc) { | 450 if (!pc) { |
447 break; | 451 break; |
448 } | 452 } |
449 next->m68k->resume_pc = get_native_address_trans(next->m68k, pc); | 453 next->m68k->resume_pc = get_native_address_trans(next->m68k, pc); |
454 */ | |
450 } | 455 } |
451 m68k->should_return = 1; | 456 m68k->should_return = 1; |
452 break; | 457 break; |
453 case 7: | 458 case 7: |
454 //read only port | 459 //read only port |