Loading a movie now sets emulation/firmware settings.
This commit is contained in:
parent
bd299672a1
commit
e83ec89578
|
@ -486,7 +486,47 @@ void FCEUI_StopMovie()
|
|||
freshMovie = false;
|
||||
}
|
||||
|
||||
static void LoadSettingsFromMovie(MovieData movieData)
|
||||
{
|
||||
if (currMovieData.useExtBios != -1)
|
||||
CommonSettings.UseExtBIOS = currMovieData.useExtBios;
|
||||
if (currMovieData.useExtFirmware != -1)
|
||||
CommonSettings.UseExtFirmware = currMovieData.useExtFirmware;
|
||||
if (!CommonSettings.UseExtFirmware)
|
||||
{
|
||||
if (currMovieData.firmNickname != "")
|
||||
{
|
||||
CommonSettings.fw_config.nickname_len = currMovieData.firmNickname.length() > MAX_FW_NICKNAME_LENGTH ? MAX_FW_NICKNAME_LENGTH : currMovieData.firmNickname.length();
|
||||
for (int i = 0; i < CommonSettings.fw_config.nickname_len; i++)
|
||||
CommonSettings.fw_config.nickname[i] = currMovieData.firmNickname[i];
|
||||
}
|
||||
if (currMovieData.firmMessage != "")
|
||||
{
|
||||
CommonSettings.fw_config.message_len = currMovieData.firmMessage.length() > MAX_FW_MESSAGE_LENGTH ? MAX_FW_MESSAGE_LENGTH : currMovieData.firmMessage.length();
|
||||
for (int i = 0; i < CommonSettings.fw_config.message_len; i++)
|
||||
CommonSettings.fw_config.message[i] = currMovieData.firmMessage[i];
|
||||
}
|
||||
|
||||
if (currMovieData.firmFavColour != -1)
|
||||
CommonSettings.fw_config.fav_colour = currMovieData.firmFavColour;
|
||||
if (currMovieData.firmBirthMonth != -1)
|
||||
CommonSettings.fw_config.birth_month = currMovieData.firmBirthMonth;
|
||||
if (currMovieData.firmBirthDay != -1)
|
||||
CommonSettings.fw_config.birth_day = currMovieData.firmBirthDay;
|
||||
if (currMovieData.firmLanguage != -1)
|
||||
CommonSettings.fw_config.language = currMovieData.firmLanguage;
|
||||
|
||||
// reset firmware (some games can write to it)
|
||||
NDS_CreateDummyFirmware(&CommonSettings.fw_config);
|
||||
}
|
||||
if (currMovieData.advancedTiming != -1)
|
||||
CommonSettings.advanced_timing = currMovieData.advancedTiming;
|
||||
if (currMovieData.jitBlockSize != -1)
|
||||
{
|
||||
CommonSettings.use_jit = currMovieData.jitBlockSize != 0;
|
||||
CommonSettings.jit_max_block_size = currMovieData.jitBlockSize;
|
||||
}
|
||||
}
|
||||
//begin playing an existing movie
|
||||
const char* _CDECL_ FCEUI_LoadMovie(const char *fname, bool _read_only, bool tasedit, int _pauseframe)
|
||||
{
|
||||
|
@ -547,11 +587,8 @@ const char* _CDECL_ FCEUI_LoadMovie(const char *fname, bool _read_only, bool tas
|
|||
//fully reload the game to reinitialize everything before playing any movie
|
||||
//poweron(true);
|
||||
|
||||
// reset firmware (some games can write to it)
|
||||
if (!CommonSettings.UseExtFirmware)
|
||||
{
|
||||
NDS_CreateDummyFirmware(&CommonSettings.fw_config);
|
||||
}
|
||||
// set emulation/firmware settings
|
||||
LoadSettingsFromMovie(currMovieData);
|
||||
|
||||
NDS_Reset();
|
||||
|
||||
|
|
|
@ -155,6 +155,19 @@ public:
|
|||
//was the frame data stored in binary?
|
||||
bool binaryFlag;
|
||||
|
||||
int useExtBios = -1;
|
||||
int useExtFirmware = -1;
|
||||
|
||||
std::string firmNickname = "";
|
||||
std::string firmMessage = "";
|
||||
int firmFavColour = -1;
|
||||
int firmBirthMonth = -1;
|
||||
int firmBirthDay = -1;
|
||||
int firmLanguage = -1;
|
||||
|
||||
int advancedTiming = -1;
|
||||
int jitBlockSize = -1;
|
||||
|
||||
int getNumRecords() { return records.size(); }
|
||||
|
||||
class TDictionary : public std::map<std::string,std::string>
|
||||
|
@ -206,7 +219,17 @@ private:
|
|||
void installGuid(std::string& val) { guid = Desmume_Guid::fromString(val); }
|
||||
void installRtcStartNew(std::string& val) { DateTime::TryParse(val.c_str(), rtcStart); }
|
||||
void installBinary(std::string& val) { binaryFlag = atoi(val.c_str()) != 0; }
|
||||
|
||||
void installUseExtBios(std::string& val) { useExtBios = atoi(val.c_str()) != 0; }
|
||||
void installUseExtFirmware(std::string& val) { useExtFirmware = atoi(val.c_str()) != 0; }
|
||||
void installFirmNickname(std::string& val) { firmNickname = val; }
|
||||
void installFirmMessage(std::string& val) { firmMessage = val; }
|
||||
void installFirmFavColour(std::string& val) { firmFavColour = atoi(val.c_str()); }
|
||||
void installFirmBirthMonth(std::string& val) { firmBirthMonth = atoi(val.c_str()); }
|
||||
void installFirmBirthDay(std::string& val) { firmBirthDay = atoi(val.c_str()); }
|
||||
void installFirmLanguage(std::string& val) { firmLanguage = atoi(val.c_str()); }
|
||||
void installAdvancedTiming(std::string& val) { advancedTiming = atoi(val.c_str()) != 0; }
|
||||
void installJitBlockSize(std::string& val) { jitBlockSize = atoi(val.c_str()); }
|
||||
|
||||
void installRomChecksum(std::string& val);
|
||||
void installRtcStart(std::string& val);
|
||||
void installComment(std::string& val);
|
||||
|
@ -226,6 +249,16 @@ private:
|
|||
{"rtcStartNew", &MovieData::installRtcStartNew},
|
||||
{"comment", &MovieData::installComment},
|
||||
{"binary", &MovieData::installBinary},
|
||||
{"useExtBios", &MovieData::installUseExtBios},
|
||||
{"useExtFirmware", &MovieData::installUseExtBios},
|
||||
{"firmNickname", &MovieData::installFirmNickname},
|
||||
{"firmMessage", &MovieData::installFirmMessage},
|
||||
{"firmFavColour", &MovieData::installFirmFavColour},
|
||||
{"firmBirthMonth", &MovieData::installFirmBirthMonth},
|
||||
{"firmBirthDay", &MovieData::installFirmBirthDay},
|
||||
{"firmLanguage", &MovieData::installFirmLanguage},
|
||||
{"advancedTiming", &MovieData::installAdvancedTiming},
|
||||
{"jitBlockSize", &MovieData::installJitBlockSize},
|
||||
{"savestate", &MovieData::installSavestate},
|
||||
{"sram", &MovieData::installSram}
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue