From bd9bcf0bf712e6ed3f5483df4acce373aec9e376 Mon Sep 17 00:00:00 2001 From: SimoneN64 Date: Mon, 19 Aug 2024 23:01:15 +0200 Subject: [PATCH] Reset Movie when resetting emulator --- src/backend/core/mmio/PIF.cpp | 1 + src/backend/core/mmio/PIF/MupenMovie.cpp | 6 ++++++ src/backend/core/mmio/PIF/MupenMovie.hpp | 1 + 3 files changed, 8 insertions(+) diff --git a/src/backend/core/mmio/PIF.cpp b/src/backend/core/mmio/PIF.cpp index 9b0d96e8..fae33f99 100644 --- a/src/backend/core/mmio/PIF.cpp +++ b/src/backend/core/mmio/PIF.cpp @@ -10,6 +10,7 @@ namespace n64 { void PIF::Reset() { + movie.Reset(); joybusDevices = {}; bootrom = {}; ram = {}; diff --git a/src/backend/core/mmio/PIF/MupenMovie.cpp b/src/backend/core/mmio/PIF/MupenMovie.cpp index b6fd9237..fa9ce1ae 100644 --- a/src/backend/core/mmio/PIF/MupenMovie.cpp +++ b/src/backend/core/mmio/PIF/MupenMovie.cpp @@ -71,6 +71,12 @@ MupenMovie::MupenMovie(const fs::path &path) { } } +void MupenMovie::Reset() { + if(!IsLoaded()) return; + + loadedTasMovieIndex = sizeof(TASMovieHeader) - 4; // skip header +} + FORCE_INLINE void LogController(const n64::Controller& controller) { Util::debug("c_right: {}", controller.cRight); Util::debug("c_left: {}", controller.cLeft); diff --git a/src/backend/core/mmio/PIF/MupenMovie.hpp b/src/backend/core/mmio/PIF/MupenMovie.hpp index d03f94b3..9cbcc9b5 100644 --- a/src/backend/core/mmio/PIF/MupenMovie.hpp +++ b/src/backend/core/mmio/PIF/MupenMovie.hpp @@ -49,6 +49,7 @@ struct MupenMovie { MupenMovie() = default; MupenMovie(const fs::path&); bool Load(const fs::path&); + void Reset(); n64::Controller NextInputs(); bool IsLoaded() const { return !loadedTasMovie.empty(); } private: