#include "gpu.h"
#include "ppf.h"
#include "database.h"
-#include "lightrec/plugin.h"
#include <zlib.h>
char CdromId[10] = "";
current = ftell(f);
fseek(f, 0L, SEEK_SET);
- if (fread(&mybuf, sizeof(mybuf), 1, f) != sizeof(mybuf))
+ if (fread(&mybuf, 1, sizeof(mybuf), f) != sizeof(mybuf))
goto io_fail;
fseek(f, current, SEEK_SET);
type = PSXGetFileType(tmpFile);
switch (type) {
case PSX_EXE:
- if (fread(&tmpHead, sizeof(EXE_HEADER), 1, tmpFile) != sizeof(EXE_HEADER))
+ if (fread(&tmpHead, 1, sizeof(EXE_HEADER), tmpFile) != sizeof(EXE_HEADER))
goto fail_io;
section_address = SWAP32(tmpHead.t_addr);
section_size = SWAP32(tmpHead.t_size);
case CPE_EXE:
fseek(tmpFile, 6, SEEK_SET); /* Something tells me we should go to 4 and read the "08 00" here... */
do {
- if (fread(&opcode, sizeof(opcode), 1, tmpFile) != sizeof(opcode))
+ if (fread(&opcode, 1, sizeof(opcode), tmpFile) != sizeof(opcode))
goto fail_io;
switch (opcode) {
case 1: /* Section loading */
- if (fread(§ion_address, sizeof(section_address), 1, tmpFile) != sizeof(section_address))
+ if (fread(§ion_address, 1, sizeof(section_address), tmpFile) != sizeof(section_address))
goto fail_io;
- if (fread(§ion_size, sizeof(section_size), 1, tmpFile) != sizeof(section_size))
+ if (fread(§ion_size, 1, sizeof(section_size), tmpFile) != sizeof(section_size))
goto fail_io;
section_address = SWAPu32(section_address);
section_size = SWAPu32(section_size);
break;
case 3: /* register loading (PC only?) */
fseek(tmpFile, 2, SEEK_CUR); /* unknown field */
- if (fread(&psxRegs.pc, sizeof(psxRegs.pc), 1, tmpFile) != sizeof(psxRegs.pc))
+ if (fread(&psxRegs.pc, 1, sizeof(psxRegs.pc), tmpFile) != sizeof(psxRegs.pc))
goto fail_io;
psxRegs.pc = SWAPu32(psxRegs.pc);
break;
CdromLabel[0] = '\0';
}
- fclose(tmpFile);
+ if (tmpFile)
+ fclose(tmpFile);
return retval;
fail_io:
f = SaveFuncs.open(file, "wb");
if (f == NULL) return -1;
- new_dyna_before_save();
-
- if (drc_is_lightrec() && Config.Cpu != CPU_INTERPRETER)
- lightrec_plugin_prepare_save_state();
+ psxCpu->Notify(R3000ACPU_NOTIFY_BEFORE_SAVE, NULL);
SaveFuncs.write(f, (void *)PcsxHeader, 32);
SaveFuncs.write(f, (void *)&SaveVersion, sizeof(u32));
SaveFuncs.close(f);
- new_dyna_after_save();
-
return 0;
}
if (Config.HLE)
psxBiosInit();
- if (!drc_is_lightrec() || Config.Cpu == CPU_INTERPRETER)
- psxCpu->Reset();
SaveFuncs.seek(f, 128 * 96 * 3, SEEK_CUR);
-
SaveFuncs.read(f, psxM, 0x00200000);
SaveFuncs.read(f, psxR, 0x00080000);
SaveFuncs.read(f, psxH, 0x00010000);
SaveFuncs.read(f, &psxRegs, offsetof(psxRegisters, gteBusyCycle));
psxRegs.gteBusyCycle = psxRegs.cycle;
- if (drc_is_lightrec() && Config.Cpu != CPU_INTERPRETER)
- lightrec_plugin_prepare_load_state();
+ psxCpu->Notify(R3000ACPU_NOTIFY_AFTER_LOAD, NULL);
if (Config.HLE)
psxBiosFreeze(0);
SysClose(); return -1;
}
psxCpu->Reset();
+ psxCpu->Notify(R3000ACPU_NOTIFY_AFTER_LOAD, NULL);
}
return 0;