X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fmisc.c;h=0848c267bccd579d6dc08fa156f78a327e5ae86b;hb=7f2a91d0a12d2c096cafc3fa4e1f1da8f63e5af9;hp=f175e2a367f384b9dfd923f348b960f4112e3d34;hpb=02b1a085fcb5bbabc4a9148daba91c3dc0a798f8;p=pcsx_rearmed.git diff --git a/libpcsxcore/misc.c b/libpcsxcore/misc.c index f175e2a3..0848c267 100644 --- a/libpcsxcore/misc.c +++ b/libpcsxcore/misc.c @@ -301,7 +301,7 @@ int LoadCdrom() { return 0; } -int LoadCdromFile(const char *filename, EXE_HEADER *head) { +int LoadCdromFile(const char *filename, EXE_HEADER *head, u8 *time_bcd_out) { struct iso_directory_record *dir; u8 time[4],*buf; u8 mdir[4096]; @@ -334,6 +334,7 @@ int LoadCdromFile(const char *filename, EXE_HEADER *head) { if (GetCdromFile(mdir, time, exename) == -1) return -1; READTRACK(); + incTime(); memcpy(head, buf + 12, sizeof(EXE_HEADER)); size = SWAP32(head->t_size); @@ -343,8 +344,8 @@ int LoadCdromFile(const char *filename, EXE_HEADER *head) { //psxCpu->Reset(); while (size & ~2047) { - incTime(); READTRACK(); + incTime(); mem = PSXM(addr); if (mem != INVALID_PTR) @@ -353,6 +354,8 @@ int LoadCdromFile(const char *filename, EXE_HEADER *head) { size -= 2048; addr += 2048; } + if (time_bcd_out) + memcpy(time_bcd_out, time, 3); return 0; } @@ -674,6 +677,10 @@ int SaveState(const char *file) { assert(!psxRegs.branching); assert(!psxRegs.cpuInRecursion); assert(!misc->magic); + + f = SaveFuncs.open(file, "wb"); + if (f == NULL) return -1; + misc->magic = MISC_MAGIC; misc->gteBusyCycle = psxRegs.gteBusyCycle; misc->muldivBusyCycle = psxRegs.muldivBusyCycle; @@ -684,9 +691,6 @@ int SaveState(const char *file) { misc->frame_counter = frame_counter; misc->CdromFrontendId = CdromFrontendId; - f = SaveFuncs.open(file, "wb"); - if (f == NULL) return -1; - psxCpu->Notify(R3000ACPU_NOTIFY_BEFORE_SAVE, NULL); SaveFuncs.write(f, (void *)PcsxHeader, 32);