parent
f79e24dba8
commit
41104fd315
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2006 thoduv
|
Copyright (C) 2006 thoduv
|
||||||
Copyright (C) 2006-2007 Theo Berkau
|
Copyright (C) 2006-2007 Theo Berkau
|
||||||
Copyright (C) 2008-2017 DeSmuME team
|
Copyright (C) 2008-2018 DeSmuME team
|
||||||
|
|
||||||
This file is free software: you can redistribute it and/or modify
|
This file is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -164,14 +164,14 @@ bool BackupDevice::load_state(EMUFILE &is)
|
||||||
|
|
||||||
if (is.read_32LE(version) != 1) return false;
|
if (is.read_32LE(version) != 1) return false;
|
||||||
|
|
||||||
is.read_bool32(write_enable);
|
is.read_bool32(write_enable);
|
||||||
is.read_32LE(com);
|
is.read_32LE(com);
|
||||||
is.read_32LE(addr_size);
|
is.read_32LE(addr_size);
|
||||||
is.read_32LE(addr_counter);
|
is.read_32LE(addr_counter);
|
||||||
is.read_32LE(temp);
|
is.read_32LE(temp);
|
||||||
state = (STATE)temp;
|
state = (STATE)temp;
|
||||||
is.read_buffer(data);
|
is.read_buffer(data);
|
||||||
is.read_buffer(data_autodetect);
|
is.read_buffer(data_autodetect);
|
||||||
|
|
||||||
if (version >= 1)
|
if (version >= 1)
|
||||||
is.read_32LE(addr);
|
is.read_32LE(addr);
|
||||||
|
@ -1653,35 +1653,25 @@ bool BackupDevice::import_dsv(const char *filename)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BackupDevice::load_movie(EMUFILE &is)
|
bool BackupDevice::load_movie(EMUFILE *is)
|
||||||
{
|
{
|
||||||
const s32 cookieLen = (s32)strlen(kDesmumeSaveCookie);
|
delete fpMC;
|
||||||
|
fpMC = is;
|
||||||
is.fseek(-cookieLen, SEEK_END);
|
|
||||||
is.fseek(-4, SEEK_CUR);
|
|
||||||
|
|
||||||
u32 version = is.read_u32LE();
|
|
||||||
if (version != 0)
|
|
||||||
{
|
|
||||||
printf("Unknown save file format\n");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
is.fseek(-24, SEEK_CUR);
|
|
||||||
|
|
||||||
BackupDeviceFileInfo info;
|
|
||||||
|
|
||||||
is.read_32LE(info.size);
|
int ok = readFooter();
|
||||||
is.read_32LE(info.padSize);
|
// TODO - in case we ever change the format again (and we should probably entirely rewrite this if we do) we'd need to detect the old versions
|
||||||
is.read_32LE(info.type);
|
// (that is, returning -1 or -2 here or some other errors)
|
||||||
is.read_32LE(info.addr_size);
|
|
||||||
is.read_32LE(info.mem_size);
|
is->fseek(0, SEEK_SET);
|
||||||
|
|
||||||
is.fseek(0, SEEK_SET);
|
EMUFILE_MEMORY* scratchbuf = new EMUFILE_MEMORY(this->_info.padSize);
|
||||||
fpMC = &is;
|
is->fread(scratchbuf->buf(),_info.padSize);
|
||||||
|
fpMC = scratchbuf;
|
||||||
|
|
||||||
|
//this is what load_movie has always done.
|
||||||
|
//seems sloppy, the original intention was for this to basically be a savestate, so that all fields are saved, but someone wrecked that
|
||||||
state = RUNNING;
|
state = RUNNING;
|
||||||
addr_size = info.addr_size;
|
addr_size = _info.addr_size;
|
||||||
//none of the other fields are used right now
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1692,6 +1682,8 @@ void BackupDevice::load_movie_blank()
|
||||||
fpMC = new EMUFILE_MEMORY();
|
fpMC = new EMUFILE_MEMORY();
|
||||||
|
|
||||||
state = DETECTING;
|
state = DETECTING;
|
||||||
|
fsize = 0;
|
||||||
|
addr_size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BackupDevice::forceManualBackupType()
|
void BackupDevice::forceManualBackupType()
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2006 thoduv
|
Copyright (C) 2006 thoduv
|
||||||
Copyright (C) 2006 Theo Berkau
|
Copyright (C) 2006 Theo Berkau
|
||||||
Copyright (C) 2008-2017 DeSmuME team
|
Copyright (C) 2008-2018 DeSmuME team
|
||||||
|
|
||||||
This file is free software: you can redistribute it and/or modify
|
This file is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -147,7 +147,7 @@ public:
|
||||||
bool export_raw(const char* filename);
|
bool export_raw(const char* filename);
|
||||||
bool no_gba_unpack(u8 *&buf, u32 &size);
|
bool no_gba_unpack(u8 *&buf, u32 &size);
|
||||||
|
|
||||||
bool load_movie(EMUFILE &is);
|
bool load_movie(EMUFILE *is);
|
||||||
void load_movie_blank();
|
void load_movie_blank();
|
||||||
|
|
||||||
u32 importDataSize(const char *filename);
|
u32 importDataSize(const char *filename);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
Copyright 2008-2017 DeSmuME team
|
Copyright 2008-2018 DeSmuME team
|
||||||
|
|
||||||
This file is free software: you can redistribute it and/or modify
|
This file is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -606,8 +606,8 @@ static void openRecordingMovie(const char* fname)
|
||||||
|
|
||||||
bool MovieData::loadSramFrom(std::vector<u8>* buf)
|
bool MovieData::loadSramFrom(std::vector<u8>* buf)
|
||||||
{
|
{
|
||||||
EMUFILE_MEMORY* ms = new EMUFILE_MEMORY(buf); // change to new to avoid automatic destruction
|
EMUFILE_MEMORY ms(buf);
|
||||||
MMU_new.backupDevice.load_movie(*ms);
|
MMU_new.backupDevice.load_movie(&ms);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue