mirror of
https://github.com/Lime3DS/Lime3DS.git
synced 2024-11-01 16:05:07 +01:00
core/movie: Remove program ID checks
Most other emulators handle this automatically in the frontend, booting/restarting the corresponding game instead of reporting an error. Therefore, remove these checks and errors from the module.
This commit is contained in:
parent
bd88667247
commit
06bc37a67d
@ -413,21 +413,13 @@ u64 Movie::GetOverrideInitTime() const {
|
|||||||
return init_time;
|
return init_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
Movie::ValidationResult Movie::ValidateHeader(const CTMHeader& header, u64 program_id) const {
|
Movie::ValidationResult Movie::ValidateHeader(const CTMHeader& header) const {
|
||||||
if (header_magic_bytes != header.filetype) {
|
if (header_magic_bytes != header.filetype) {
|
||||||
LOG_ERROR(Movie, "Playback file does not have valid header");
|
LOG_ERROR(Movie, "Playback file does not have valid header");
|
||||||
return ValidationResult::Invalid;
|
return ValidationResult::Invalid;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string revision = fmt::format("{:02x}", fmt::join(header.revision, ""));
|
std::string revision = fmt::format("{:02x}", fmt::join(header.revision, ""));
|
||||||
|
|
||||||
if (!program_id)
|
|
||||||
Core::System::GetInstance().GetAppLoader().ReadProgramId(program_id);
|
|
||||||
if (program_id != header.program_id) {
|
|
||||||
LOG_WARNING(Movie, "This movie was recorded using a ROM with a different program id");
|
|
||||||
return ValidationResult::GameDismatch;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (revision != Common::g_scm_rev) {
|
if (revision != Common::g_scm_rev) {
|
||||||
LOG_WARNING(Movie,
|
LOG_WARNING(Movie,
|
||||||
"This movie was created on a different version of Citra, playback may desync");
|
"This movie was created on a different version of Citra, playback may desync");
|
||||||
@ -576,7 +568,7 @@ void Movie::PrepareForRecording() {
|
|||||||
: Settings::values.init_time);
|
: Settings::values.init_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
Movie::ValidationResult Movie::ValidateMovie(const std::string& movie_file, u64 program_id) const {
|
Movie::ValidationResult Movie::ValidateMovie(const std::string& movie_file) const {
|
||||||
LOG_INFO(Movie, "Validating Movie file '{}'", movie_file);
|
LOG_INFO(Movie, "Validating Movie file '{}'", movie_file);
|
||||||
|
|
||||||
FileUtil::IOFile save_record(movie_file, "rb");
|
FileUtil::IOFile save_record(movie_file, "rb");
|
||||||
@ -593,11 +585,15 @@ Movie::ValidationResult Movie::ValidateMovie(const std::string& movie_file, u64
|
|||||||
return ValidationResult::Invalid;
|
return ValidationResult::Invalid;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto result = ValidateHeader(header, program_id);
|
auto result = ValidateHeader(header);
|
||||||
if (result != ValidationResult::OK) {
|
if (result != ValidationResult::OK) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!header.input_count) { // Probably created by an older version.
|
||||||
|
return ValidationResult::OK;
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<u8> input(size - sizeof(header));
|
std::vector<u8> input(size - sizeof(header));
|
||||||
save_record.ReadArray(input.data(), input.size());
|
save_record.ReadArray(input.data(), input.size());
|
||||||
return ValidateInput(input, header.input_count);
|
return ValidateInput(input, header.input_count);
|
||||||
|
@ -31,7 +31,6 @@ public:
|
|||||||
enum class ValidationResult {
|
enum class ValidationResult {
|
||||||
OK,
|
OK,
|
||||||
RevisionDismatch,
|
RevisionDismatch,
|
||||||
GameDismatch,
|
|
||||||
InputCountDismatch,
|
InputCountDismatch,
|
||||||
Invalid,
|
Invalid,
|
||||||
};
|
};
|
||||||
@ -65,7 +64,7 @@ public:
|
|||||||
/// Prepare to override the clock before recording movies
|
/// Prepare to override the clock before recording movies
|
||||||
void PrepareForRecording();
|
void PrepareForRecording();
|
||||||
|
|
||||||
ValidationResult ValidateMovie(const std::string& movie_file, u64 program_id = 0) const;
|
ValidationResult ValidateMovie(const std::string& movie_file) const;
|
||||||
|
|
||||||
/// Get the init time that would override the one in the settings
|
/// Get the init time that would override the one in the settings
|
||||||
u64 GetOverrideInitTime() const;
|
u64 GetOverrideInitTime() const;
|
||||||
@ -148,7 +147,7 @@ private:
|
|||||||
void Record(const Service::IR::PadState& pad_state, const s16& c_stick_x, const s16& c_stick_y);
|
void Record(const Service::IR::PadState& pad_state, const s16& c_stick_x, const s16& c_stick_y);
|
||||||
void Record(const Service::IR::ExtraHIDResponse& extra_hid_response);
|
void Record(const Service::IR::ExtraHIDResponse& extra_hid_response);
|
||||||
|
|
||||||
ValidationResult ValidateHeader(const CTMHeader& header, u64 program_id = 0) const;
|
ValidationResult ValidateHeader(const CTMHeader& header) const;
|
||||||
ValidationResult ValidateInput(const std::vector<u8>& input, u64 expected_count) const;
|
ValidationResult ValidateInput(const std::vector<u8>& input, u64 expected_count) const;
|
||||||
|
|
||||||
void SaveMovie();
|
void SaveMovie();
|
||||||
|
Loading…
Reference in New Issue
Block a user