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