mirror of
https://github.com/hch12907/orbum.git
synced 2024-05-20 05:00:48 -04:00
51 lines
938 B
C++
51 lines
938 B
C++
#pragma once
|
|
|
|
#include <cereal/cereal.hpp>
|
|
|
|
#include "Resources/Iop/Sio2/Sio2PortRegisters.hpp"
|
|
|
|
/// Describes an abstract SIO2 port.
|
|
class Sio2Port
|
|
{
|
|
public:
|
|
Sio2Port();
|
|
|
|
Sio2PortRegister_Ctrl1* ctrl_1;
|
|
Sio2PortRegister_Ctrl2* ctrl_2;
|
|
Sio2PortRegister_Ctrl3* ctrl_3;
|
|
};
|
|
|
|
/// Port that contains all 3 CTRL registers.
|
|
class Sio2Port_Full
|
|
{
|
|
public:
|
|
Sio2PortRegister_Ctrl1 ctrl_1;
|
|
Sio2PortRegister_Ctrl2 ctrl_2;
|
|
Sio2PortRegister_Ctrl3 ctrl_3;
|
|
|
|
template<class Archive>
|
|
void serialize(Archive & archive)
|
|
{
|
|
archive(
|
|
CEREAL_NVP(ctrl_1),
|
|
CEREAL_NVP(ctrl_2),
|
|
CEREAL_NVP(ctrl_3)
|
|
);
|
|
}
|
|
};
|
|
|
|
/// Port that contains only 1 CTRL register (ctrl_3).
|
|
class Sio2Port_Slim
|
|
{
|
|
public:
|
|
Sio2PortRegister_Ctrl3 ctrl_3;
|
|
|
|
template<class Archive>
|
|
void serialize(Archive & archive)
|
|
{
|
|
archive(
|
|
CEREAL_NVP(ctrl_3)
|
|
);
|
|
}
|
|
};
|