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];
if (GetCdromFile(mdir, time, exename) == -1) return -1;
READTRACK();
+ incTime();
memcpy(head, buf + 12, sizeof(EXE_HEADER));
size = SWAP32(head->t_size);
//psxCpu->Reset();
while (size & ~2047) {
- incTime();
READTRACK();
+ incTime();
mem = PSXM(addr);
if (mem != INVALID_PTR)
size -= 2048;
addr += 2048;
}
+ if (time_bcd_out)
+ memcpy(time_bcd_out, time, 3);
return 0;
}
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;
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);