diff --git a/core/hw/maple/maple_jvs.cpp b/core/hw/maple/maple_jvs.cpp index 73843aa2e..7b53d4bd6 100644 --- a/core/hw/maple/maple_jvs.cpp +++ b/core/hw/maple/maple_jvs.cpp @@ -147,8 +147,8 @@ public: virtual ~jvs_io_board() = default; u32 handle_jvs_message(u8 *buffer_in, u32 length_in, u8 *buffer_out); - void serialize(Serializer& ser) const; - void deserialize(Deserializer& deser); + virtual void serialize(Serializer& ser) const; + virtual void deserialize(Deserializer& deser); bool lightgun_as_analog = false; @@ -373,6 +373,20 @@ public: { } + void serialize(Serializer& ser) const override + { + ser << out; + jvs_837_13844::serialize(ser); + } + void deserialize(Deserializer& deser) override + { + if (deser.version() >= Deserializer::V31) + deser >> out; + else + out = 0xff; + jvs_837_13844::deserialize(deser); + } + protected: void read_digital_in(const u32 *buttons, u16 *v) override { @@ -466,6 +480,21 @@ public: { } + void serialize(Serializer& ser) const override + { + ser << gear; + ser << testMode; + jvs_837_13844_motor_board::serialize(ser); + } + void deserialize(Deserializer& deser) override + { + if (deser.version() >= Deserializer::V31) { + deser >> gear; + deser >> testMode; + } + jvs_837_13844_motor_board::deserialize(deser); + } + protected: void read_digital_in(const u32 *buttons, u16 *v) override { @@ -543,8 +572,8 @@ protected: } private: - bool testMode = false; // TODO serialize - int gear = 0; // 0: low, 1: high, -1: reverse + bool testMode = false; + int8_t gear = 0; // 0: low, 1: high, -1: reverse bool transitionWait = false; }; diff --git a/core/serialize.h b/core/serialize.h index fbed29f6a..d85a85868 100644 --- a/core/serialize.h +++ b/core/serialize.h @@ -66,7 +66,8 @@ public: V28, V29, V30, - Current = V30, + V31, + Current = V31, Next = Current + 1, };