|
|
|
@ -62,7 +62,7 @@ void Controller::Initialize() {
|
|
|
|
|
common_args.play_startup_sound, common_args.size, common_args.system_tick,
|
|
|
|
|
common_args.theme_color);
|
|
|
|
|
|
|
|
|
|
library_applet_version = LibraryAppletVersion{common_args.library_version};
|
|
|
|
|
controller_applet_version = ControllerAppletVersion{common_args.library_version};
|
|
|
|
|
|
|
|
|
|
const auto private_arg_storage = broker.PopNormalDataToApplet();
|
|
|
|
|
ASSERT(private_arg_storage != nullptr);
|
|
|
|
@ -73,7 +73,7 @@ void Controller::Initialize() {
|
|
|
|
|
std::memcpy(&controller_private_arg, private_arg.data(), private_arg.size());
|
|
|
|
|
ASSERT_MSG(controller_private_arg.arg_private_size == sizeof(ControllerSupportArgPrivate),
|
|
|
|
|
"Unknown ControllerSupportArgPrivate revision={} with size={}",
|
|
|
|
|
library_applet_version, controller_private_arg.arg_private_size);
|
|
|
|
|
controller_applet_version, controller_private_arg.arg_private_size);
|
|
|
|
|
|
|
|
|
|
// Some games such as Cave Story+ set invalid values for the ControllerSupportMode.
|
|
|
|
|
// Defer to arg_size to set the ControllerSupportMode.
|
|
|
|
@ -112,20 +112,20 @@ void Controller::Initialize() {
|
|
|
|
|
ASSERT(user_arg_storage != nullptr);
|
|
|
|
|
|
|
|
|
|
const auto& user_arg = user_arg_storage->GetData();
|
|
|
|
|
switch (library_applet_version) {
|
|
|
|
|
case LibraryAppletVersion::Version3:
|
|
|
|
|
case LibraryAppletVersion::Version4:
|
|
|
|
|
case LibraryAppletVersion::Version5:
|
|
|
|
|
switch (controller_applet_version) {
|
|
|
|
|
case ControllerAppletVersion::Version3:
|
|
|
|
|
case ControllerAppletVersion::Version4:
|
|
|
|
|
case ControllerAppletVersion::Version5:
|
|
|
|
|
ASSERT(user_arg.size() == sizeof(ControllerSupportArgOld));
|
|
|
|
|
std::memcpy(&controller_user_arg_old, user_arg.data(), user_arg.size());
|
|
|
|
|
break;
|
|
|
|
|
case LibraryAppletVersion::Version7:
|
|
|
|
|
case ControllerAppletVersion::Version7:
|
|
|
|
|
ASSERT(user_arg.size() == sizeof(ControllerSupportArgNew));
|
|
|
|
|
std::memcpy(&controller_user_arg_new, user_arg.data(), user_arg.size());
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
UNIMPLEMENTED_MSG("Unknown ControllerSupportArg revision={} with size={}",
|
|
|
|
|
library_applet_version, controller_private_arg.arg_size);
|
|
|
|
|
controller_applet_version, controller_private_arg.arg_size);
|
|
|
|
|
ASSERT(user_arg.size() >= sizeof(ControllerSupportArgNew));
|
|
|
|
|
std::memcpy(&controller_user_arg_new, user_arg.data(), sizeof(ControllerSupportArgNew));
|
|
|
|
|
break;
|
|
|
|
@ -165,10 +165,10 @@ void Controller::Execute() {
|
|
|
|
|
switch (controller_private_arg.mode) {
|
|
|
|
|
case ControllerSupportMode::ShowControllerSupport: {
|
|
|
|
|
const auto parameters = [this] {
|
|
|
|
|
switch (library_applet_version) {
|
|
|
|
|
case LibraryAppletVersion::Version3:
|
|
|
|
|
case LibraryAppletVersion::Version4:
|
|
|
|
|
case LibraryAppletVersion::Version5:
|
|
|
|
|
switch (controller_applet_version) {
|
|
|
|
|
case ControllerAppletVersion::Version3:
|
|
|
|
|
case ControllerAppletVersion::Version4:
|
|
|
|
|
case ControllerAppletVersion::Version5:
|
|
|
|
|
return ConvertToFrontendParameters(
|
|
|
|
|
controller_private_arg, controller_user_arg_old.header,
|
|
|
|
|
controller_user_arg_old.enable_explain_text,
|
|
|
|
@ -177,7 +177,7 @@ void Controller::Execute() {
|
|
|
|
|
controller_user_arg_old.identification_colors.end()),
|
|
|
|
|
std::vector<ExplainText>(controller_user_arg_old.explain_text.begin(),
|
|
|
|
|
controller_user_arg_old.explain_text.end()));
|
|
|
|
|
case LibraryAppletVersion::Version7:
|
|
|
|
|
case ControllerAppletVersion::Version7:
|
|
|
|
|
default:
|
|
|
|
|
return ConvertToFrontendParameters(
|
|
|
|
|
controller_private_arg, controller_user_arg_new.header,
|
|
|
|
|