From a76bc71b5dff6f1a9bbd458f0519c6d59d8f47d4 Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Wed, 9 Nov 2011 01:52:08 +0200 Subject: [PATCH 4/6] Save controller state when savestating When savestating, save the controller state and restore it upon loadstate. Prevents libsnes from mixing up buttons. --- snes/system/input.cpp | 16 ++++++++++++++++ snes/system/input.hpp | 1 + 2 files changed, 17 insertions(+), 0 deletions(-) diff --git a/snes/system/input.cpp b/snes/system/input.cpp index 9050310..ec5559d 100755 --- a/snes/system/input.cpp +++ b/snes/system/input.cpp @@ -26,6 +26,22 @@ void Input::connect(bool port, Input::Device id) { } } +void Input::serialize(serializer &s) +{ + int p1, p2; + p1 = (int)config.controller_port1; + p2 = (int)config.controller_port2; + s.integer(p1); + s.integer(p2); + if(s.mode() == nall::serializer::Load) { + connect(Controller::Port1, (Device)p1); + connect(Controller::Port2, (Device)p2); + } + port1->serialize(s); + port2->serialize(s); +} + + Input::Input() : port1(nullptr), port2(nullptr) { connect(Controller::Port1, Input::Device::Joypad); connect(Controller::Port2, Input::Device::Joypad); diff --git a/snes/system/input.hpp b/snes/system/input.hpp index 13ef46e..6832e82 100755 --- a/snes/system/input.hpp +++ b/snes/system/input.hpp @@ -31,6 +31,7 @@ struct Input { Controller *port1; Controller *port2; + void serialize(serializer &s); void connect(bool port, Input::Device id); Input(); ~Input(); -- 1.7.8.3.g027b7