Mercurial > repos > blastem
diff menu.c @ 1427:4e5797b3935a
WIP - New savestate format
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 06 Aug 2017 00:06:36 -0700 |
parents | 9a3e003bdcb3 |
children | 2540c05520f2 |
line wrap: on
line diff
--- a/menu.c Fri Jul 07 21:44:49 2017 -0700 +++ b/menu.c Sun Aug 06 00:06:36 2017 -0700 @@ -346,8 +346,10 @@ char *cur = buffer; if (gen->header.next_context && gen->header.next_context->save_dir) { char *end = buffer + SAVE_INFO_BUFFER_SIZE; - char slotfile[] = "slot_0.gst"; + char slotfile[] = "slot_0.state"; + char slotfilegst[] = "slot_0.gst"; char const * parts[3] = {gen->header.next_context->save_dir, PATH_SEP, slotfile}; + char const * partsgst[3] = {gen->header.next_context->save_dir, PATH_SEP, slotfilegst}; struct tm ltime; char *fname; time_t modtime; @@ -362,20 +364,37 @@ cur += strftime(cur, end-cur, "%c", localtime_r(&modtime, <ime)); } else { - cur += snprintf(cur, end-cur, "Slot %d - EMPTY", i); + slotfilegst[5] = i + '0'; + fname = alloc_concat_m(3, partsgst); + modtime = get_modification_time(fname); + free(fname); + if (modtime) { + cur += snprintf(cur, end-cur, "Slot %d - ", i); + cur += strftime(cur, end-cur, "%c", localtime_r(&modtime, <ime)); + } else { + cur += snprintf(cur, end-cur, "Slot %d - EMPTY", i); + } } //advance past the null terminator for this entry cur++; } if (cur < end) { - parts[2] = "quicksave.gst"; + parts[2] = "quicksave.state"; fname = alloc_concat_m(3, parts); modtime = get_modification_time(fname); free(fname); if (modtime) { cur += strftime(cur, end-cur, "Quick - %c", localtime_r(&modtime, <ime)); - } else if ((end-cur) > strlen("Quick - EMPTY")){ - cur += strlen(strcpy(cur, "Quick - EMPTY")); + } else { + parts[2] = "quicksave.gst"; + fname = alloc_concat_m(3, parts); + modtime = get_modification_time(fname); + free(fname); + if (modtime) { + cur += strftime(cur, end-cur, "Quick - %c", localtime_r(&modtime, <ime)); + } else if ((end-cur) > strlen("Quick - EMPTY")){ + cur += strlen(strcpy(cur, "Quick - EMPTY")); + } } //advance past the null terminator for this entry cur++; @@ -401,10 +420,10 @@ case 6: //load state if (gen->header.next_context && gen->header.next_context->save_dir) { - char numslotname[] = "slot_0.gst"; + char numslotname[] = "slot_0.state"; char *slotname; if (dst == QUICK_SAVE_SLOT) { - slotname = "quicksave.gst"; + slotname = "quicksave.state"; } else { numslotname[5] = '0' + dst; slotname = numslotname; @@ -412,6 +431,7 @@ char const *parts[] = {gen->header.next_context->save_dir, PATH_SEP, slotname}; char *gstpath = alloc_concat_m(3, parts); genesis_context *next = (genesis_context *)gen->header.next_context; + uint32_t pc = load_gst(next, gstpath); free(gstpath); if (!pc) {