struct Port { enum : uint {
  Controller1,
  Controller2,
  Expansion,
};};

struct Device { enum : uint {
  None,

  //controller port peripherals
  Gamepad,
  Multitap,
  Mouse,
  SuperScope,
  Justifier,
  Justifiers,
  USART,

  //expansion port peripherals
  Satellaview,
  SuperDisc,
  S21FX,
};};

struct Peripherals {
  auto unload() -> void;
  auto reset() -> void;
  auto connect(uint port, uint id) -> void;

  Controller* controllerPort1 = nullptr;
  Controller* controllerPort2 = nullptr;
  Expansion* expansionPort = nullptr;
};

extern Peripherals peripherals;
