From 97ca1096aad7e1569d849af01e6c4b8c050d865f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20L=C3=B3pez=20Guimaraes?= Date: Wed, 21 Aug 2024 10:55:54 +0100 Subject: [PATCH] act: Add more command names and implement GetErrorCode The command names have been extracted from 3dbrew and the JavaScript bindings that the NNID settings uses internally. The error names have been extracted from the Wii U implementation (102-XXXX), which are compatible with the 3DS ones except for 022-5XXX, which are error codes specific to the 3DS. --- src/core/hle/service/act/act.cpp | 763 ++++++++++++++++++++++++++++- src/core/hle/service/act/act.h | 615 ++++++++++++++++++++++- src/core/hle/service/act/act_a.cpp | 50 +- src/core/hle/service/act/act_u.cpp | 25 +- 4 files changed, 1442 insertions(+), 11 deletions(-) diff --git a/src/core/hle/service/act/act.cpp b/src/core/hle/service/act/act.cpp index ddac50e2d..c0f2bd883 100644 --- a/src/core/hle/service/act/act.cpp +++ b/src/core/hle/service/act/act.cpp @@ -31,15 +31,770 @@ void Module::Interface::Initialize(Kernel::HLERequestContext& ctx) { rb.Push(ResultSuccess); } -void Module::Interface::GetAccountDataBlock(Kernel::HLERequestContext& ctx) { +void Module::Interface::GetErrorCode(Kernel::HLERequestContext& ctx) { IPC::RequestParser rp(ctx); - const auto unknown = rp.Pop(); + const auto result = rp.Pop(); + + LOG_DEBUG(Service_ACT, "called result={:08X}", result.raw); + + u32 error_code = ErrCodes::Unknown; + if (result.module == ErrorModule::ACT) { + switch (result.description) { + case ErrDescriptions::MySuccess: + error_code = ErrCodes::MySuccess; + break; + case ErrDescriptions::MailAddressNotConfirmed: + error_code = ErrCodes::MailAddressNotConfirmed; + break; + case ErrDescriptions::LibraryError: + error_code = ErrCodes::LibraryError; + break; + case ErrDescriptions::NotInitialized: + error_code = ErrCodes::NotInitialized; + break; + case ErrDescriptions::AlreadyInitialized: + error_code = ErrCodes::AlreadyInitialized; + break; + case ErrDescriptions::ErrDesc103: + error_code = ErrCodes::ErrCode225103; + break; + case ErrDescriptions::ErrDesc104: + error_code = ErrCodes::ErrCode225104; + break; + case ErrDescriptions::Busy: + error_code = ErrCodes::Busy; + break; + case ErrDescriptions::ErrDesc112: + error_code = ErrCodes::ErrCode225112; + break; + case ErrDescriptions::NotImplemented: + error_code = ErrCodes::NotImplemented; + break; + case ErrDescriptions::Deprecated: + error_code = ErrCodes::Deprecated; + break; + case ErrDescriptions::DevelopmentOnly: + error_code = ErrCodes::DevelopmentOnly; + break; + case ErrDescriptions::InvalidArgument: + error_code = ErrCodes::InvalidArgument; + break; + case ErrDescriptions::InvalidPointer: + error_code = ErrCodes::InvalidPointer; + break; + case ErrDescriptions::OutOfRange: + error_code = ErrCodes::OutOfRange; + break; + case ErrDescriptions::InvalidSize: + error_code = ErrCodes::InvalidSize; + break; + case ErrDescriptions::InvalidFormat: + error_code = ErrCodes::InvalidFormat; + break; + case ErrDescriptions::InvalidHandle: + error_code = ErrCodes::InvalidHandle; + break; + case ErrDescriptions::InvalidValue: + error_code = ErrCodes::InvalidValue; + break; + case ErrDescriptions::InternalError: + error_code = ErrCodes::InternalError; + break; + case ErrDescriptions::EndOfStream: + error_code = ErrCodes::EndOfStream; + break; + case ErrDescriptions::FileError: + error_code = ErrCodes::FileError; + break; + case ErrDescriptions::FileNotFound: + error_code = ErrCodes::FileNotFound; + break; + case ErrDescriptions::FileVersionMismatch: + error_code = ErrCodes::FileVersionMismatch; + break; + case ErrDescriptions::FileIOError: + error_code = ErrCodes::FileIOError; + break; + case ErrDescriptions::FileTypeMismatch: + error_code = ErrCodes::FileTypeMismatch; + break; + case ErrDescriptions::ErrDesc315: + error_code = ErrCodes::ErrCode225315; + break; + case ErrDescriptions::OutOfResource: + error_code = ErrCodes::OutOfResource; + break; + case ErrDescriptions::ShortOfBuffer: + error_code = ErrCodes::ShortOfBuffer; + break; + case ErrDescriptions::OutOfMemory: + error_code = ErrCodes::OutOfMemory; + break; + case ErrDescriptions::OutOfGlobalHeap: + error_code = ErrCodes::OutOfGlobalHeap; + break; + case ErrDescriptions::ErrDesc350: + error_code = ErrCodes::ErrCode225350; + break; + case ErrDescriptions::ErrDesc351: + error_code = ErrCodes::ErrCode225351; + break; + case ErrDescriptions::ErrDesc352: + error_code = ErrCodes::ErrCode225352; + break; + case ErrDescriptions::ErrDesc360: + error_code = ErrCodes::ErrCode225360; + break; + case ErrDescriptions::ErrDesc361: + error_code = ErrCodes::ErrCode225361; + break; + case ErrDescriptions::ErrDesc362: + error_code = ErrCodes::ErrCode225362; + break; + case ErrDescriptions::ErrDesc363: + error_code = ErrCodes::ErrCode225363; + break; + case ErrDescriptions::AccountManagementError: + error_code = ErrCodes::AccountManagementError; + break; + case ErrDescriptions::AccountNotFound: + error_code = ErrCodes::AccountNotFound; + break; + case ErrDescriptions::SlotsFull: + error_code = ErrCodes::SlotsFull; + break; + case ErrDescriptions::AccountNotLoaded: + error_code = ErrCodes::AccountNotLoaded; + break; + case ErrDescriptions::AccountAlreadyLoaded: + error_code = ErrCodes::AccountAlreadyLoaded; + break; + case ErrDescriptions::AccountLocked: + error_code = ErrCodes::AccountLocked; + break; + case ErrDescriptions::NotNetworkAccount: + error_code = ErrCodes::NotNetworkAccount; + break; + case ErrDescriptions::NotLocalAccount: + error_code = ErrCodes::NotLocalAccount; + break; + case ErrDescriptions::AccountNotCommited: + error_code = ErrCodes::AccountCommited; + break; + case ErrDescriptions::ErrDesc431: + error_code = ErrCodes::ErrCode225431; + break; + case ErrDescriptions::ErrDesc432: + error_code = ErrCodes::ErrCode225432; + break; + case ErrDescriptions::ErrDesc433: + error_code = ErrCodes::ErrCode225433; + break; + case ErrDescriptions::ErrDesc451: + error_code = ErrCodes::ErrCode221101; + break; + case ErrDescriptions::AuthenticationError: + error_code = ErrCodes::AuthenticationError; + break; + case ErrDescriptions::HttpError: + error_code = ErrCodes::HttpError; + break; + case ErrDescriptions::ErrDesc502: + error_code = ErrCodes::ErrCode225502; + break; + case ErrDescriptions::ErrDesc503: + error_code = ErrCodes::ErrCode225503; + break; + case ErrDescriptions::ErrDesc504: + error_code = ErrCodes::ErrCode225504; + break; + case ErrDescriptions::ErrDesc505: + error_code = ErrCodes::ErrCode225505; + break; + case ErrDescriptions::ErrDesc506: + error_code = ErrCodes::ErrCode225506; + break; + case ErrDescriptions::ErrDesc507: + error_code = ErrCodes::ErrCode225507; + break; + case ErrDescriptions::ErrDesc508: + error_code = ErrCodes::ErrCode225508; + break; + case ErrDescriptions::ErrDesc509: + error_code = ErrCodes::ErrCode225509; + break; + case ErrDescriptions::ErrDesc510: + error_code = ErrCodes::ErrCode225510; + break; + case ErrDescriptions::ErrDesc511: + error_code = ErrCodes::ErrCode225511; + break; + case ErrDescriptions::ErrDesc512: + error_code = ErrCodes::ErrCode225512; + break; + case ErrDescriptions::ErrDesc513: + error_code = ErrCodes::ErrCode225513; + break; + case ErrDescriptions::ErrDesc514: + error_code = ErrCodes::ErrCode225514; + break; + case ErrDescriptions::ErrDesc515: + error_code = ErrCodes::ErrCode225515; + break; + case ErrDescriptions::ErrDesc516: + error_code = ErrCodes::ErrCode225516; + break; + case ErrDescriptions::ErrDesc517: + error_code = ErrCodes::ErrCode225517; + break; + case ErrDescriptions::ErrDesc518: + error_code = ErrCodes::ErrCode225518; + break; + case ErrDescriptions::ErrDesc519: + error_code = ErrCodes::ErrCode225519; + break; + case ErrDescriptions::ErrDesc520: + error_code = ErrCodes::ErrCode225520; + break; + case ErrDescriptions::ErrDesc521: + error_code = ErrCodes::ErrCode225521; + break; + case ErrDescriptions::ErrDesc522: + error_code = ErrCodes::ErrCode225522; + break; + case ErrDescriptions::ErrDesc523: + error_code = ErrCodes::ErrCode225523; + break; + case ErrDescriptions::ErrDesc524: + error_code = ErrCodes::ErrCode225524; + break; + case ErrDescriptions::ErrDesc525: + error_code = ErrCodes::ErrCode225525; + break; + case ErrDescriptions::ErrDesc526: + error_code = ErrCodes::ErrCode225526; + break; + case ErrDescriptions::ErrDesc527: + error_code = ErrCodes::ErrCode225527; + break; + case ErrDescriptions::ErrDesc528: + error_code = ErrCodes::ErrCode225528; + break; + case ErrDescriptions::ErrDesc529: + error_code = ErrCodes::ErrCode225529; + break; + case ErrDescriptions::ErrDesc530: + error_code = ErrCodes::ErrCode225530; + break; + case ErrDescriptions::ErrDesc531: + error_code = ErrCodes::ErrCode225531; + break; + case ErrDescriptions::ErrDesc532: + error_code = ErrCodes::ErrCode225532; + break; + case ErrDescriptions::ErrDesc533: + error_code = ErrCodes::ErrCode225533; + break; + case ErrDescriptions::ErrDesc534: + error_code = ErrCodes::ErrCode225534; + break; + case ErrDescriptions::ErrDesc535: + error_code = ErrCodes::ErrCode225535; + break; + case ErrDescriptions::ErrDesc536: + error_code = ErrCodes::ErrCode225536; + break; + case ErrDescriptions::ErrDesc537: + error_code = ErrCodes::ErrCode225537; + break; + case ErrDescriptions::ErrDesc538: + error_code = ErrCodes::ErrCode225538; + break; + case ErrDescriptions::ErrDesc539: + error_code = ErrCodes::ErrCode225539; + break; + case ErrDescriptions::ErrDesc540: + error_code = ErrCodes::ErrCode225540; + break; + case ErrDescriptions::ErrDesc541: + error_code = ErrCodes::ErrCode225541; + break; + case ErrDescriptions::ErrDesc542: + error_code = ErrCodes::ErrCode225542; + break; + case ErrDescriptions::ErrDesc543: + error_code = ErrCodes::ErrCode225543; + break; + case ErrDescriptions::ErrDesc544: + error_code = ErrCodes::ErrCode225544; + break; + case ErrDescriptions::ErrDesc545: + error_code = ErrCodes::ErrCode225545; + break; + case ErrDescriptions::ErrDesc546: + error_code = ErrCodes::ErrCode225546; + break; + case ErrDescriptions::ErrDesc547: + error_code = ErrCodes::ErrCode225547; + break; + case ErrDescriptions::ErrDesc548: + error_code = ErrCodes::ErrCode225548; + break; + case ErrDescriptions::ErrDesc549: + error_code = ErrCodes::ErrCode225549; + break; + case ErrDescriptions::ErrDesc550: + error_code = ErrCodes::ErrCode225550; + break; + case ErrDescriptions::ErrDesc551: + error_code = ErrCodes::ErrCode225551; + break; + case ErrDescriptions::ErrDesc552: + error_code = ErrCodes::ErrCode225552; + break; + case ErrDescriptions::ErrDesc553: + error_code = ErrCodes::ErrCode225553; + break; + case ErrDescriptions::RequestError: + error_code = ErrCodes::RequestError; + break; + case ErrDescriptions::BadFormatParameter: + error_code = ErrCodes::BadFormatParameter; + break; + case ErrDescriptions::BadFormatRequest: + error_code = ErrCodes::BadFormatRequest; + break; + case ErrDescriptions::RequestParameterMissing: + error_code = ErrCodes::RequestParameterMissing; + break; + case ErrDescriptions::WrongHttpMethod: + error_code = ErrCodes::WrongHttpMethod; + break; + case ErrDescriptions::ResponseError: + error_code = ErrCodes::ResponseError; + break; + case ErrDescriptions::BadFormatResponse: + error_code = ErrCodes::BadFormatResponse; + break; + case ErrDescriptions::ResponseItemMissing: + error_code = ErrCodes::ResponseItemMissing; + break; + case ErrDescriptions::ResponseTooLarge: + error_code = ErrCodes::ResponseTooLarge; + break; + case ErrDescriptions::InvalidCommonParameter: + error_code = ErrCodes::InvalidCommonParameter; + break; + case ErrDescriptions::InvalidPlatformId: + error_code = ErrCodes::InvalidPlatformId; + break; + case ErrDescriptions::UnauthorizedDevice: + error_code = ErrCodes::UnauthorizedDevice; + break; + case ErrDescriptions::InvalidSerialId: + error_code = ErrCodes::InvalidSerialId; + break; + case ErrDescriptions::InvalidMacAddress: + error_code = ErrCodes::InvalidMacAddress; + break; + case ErrDescriptions::InvalidRegion: + error_code = ErrCodes::InvalidRegion; + break; + case ErrDescriptions::InvalidCountry: + error_code = ErrCodes::InvalidCountry; + break; + case ErrDescriptions::InvalidLanguage: + error_code = ErrCodes::InvalidLanguage; + break; + case ErrDescriptions::UnauthorizedClient: + error_code = ErrCodes::UnauthorizedClient; + break; + case ErrDescriptions::DeviceIdEmpty: + error_code = ErrCodes::DeviceIdEmpty; + break; + case ErrDescriptions::SerialIdEmpty: + error_code = ErrCodes::SerialIdEmpty; + break; + case ErrDescriptions::PlatformIdEmpty: + error_code = ErrCodes::PlatformIdEmpty; + break; + case ErrDescriptions::InvalidUniqueId: + error_code = ErrCodes::InvalidUniqueId; + break; + case ErrDescriptions::InvalidClientId: + error_code = ErrCodes::InvalidClientId; + break; + case ErrDescriptions::InvalidClientKey: + error_code = ErrCodes::InvalidClientKey; + break; + case ErrDescriptions::InvalidNexClientId: + error_code = ErrCodes::InvalidNexClientId; + break; + case ErrDescriptions::InvalidGameServerId: + error_code = ErrCodes::InvalidGameServerId; + break; + case ErrDescriptions::GameServerIdEnvironmentNotFound: + error_code = ErrCodes::GameServerIdEnvironmentNotFound; + break; + case ErrDescriptions::GameServerIdUniqueIdNotLinked: + error_code = ErrCodes::GameServerIdUniqueIdNotLinked; + break; + case ErrDescriptions::ClientIdUniqueIdNotLinked: + error_code = ErrCodes::ClientIdUniqueIdNotLinked; + break; + case ErrDescriptions::DeviceMismatch: + error_code = ErrCodes::DeviceMismatch; + break; + case ErrDescriptions::CountryMismatch: + error_code = ErrCodes::CountryMismatch; + break; + case ErrDescriptions::EulaNotAccepted: + error_code = ErrCodes::EulaNotAccepted; + break; + case ErrDescriptions::UpdateRequired: + error_code = ErrCodes::UpdateRequired; + break; + case ErrDescriptions::SystemUpdateRequired: + error_code = ErrCodes::SystemUpdateRequired; + break; + case ErrDescriptions::ApplicationUpdateRequired: + error_code = ErrCodes::ApplicationUpdateRequired; + break; + case ErrDescriptions::UnauthorizedRequest: + error_code = ErrCodes::UnauthorizedRequest; + break; + case ErrDescriptions::RequestForbidden: + error_code = ErrCodes::RequestForbidden; + break; + case ErrDescriptions::ResourceNotFound: + error_code = ErrCodes::ResourceNotFound; + break; + case ErrDescriptions::PidNotFound: + error_code = ErrCodes::PidNotFound; + break; + case ErrDescriptions::NexAccountNotFound: + error_code = ErrCodes::NexAccountNotFound; + break; + case ErrDescriptions::GenerateTokenFailure: + error_code = ErrCodes::GenerateTokenFailure; + break; + case ErrDescriptions::RequestNotFound: + error_code = ErrCodes::RequestNotFound; + break; + case ErrDescriptions::MasterPinNotFound: + error_code = ErrCodes::MasterPinNotFound; + break; + case ErrDescriptions::MailTextNotFound: + error_code = ErrCodes::MailTextNotFound; + break; + case ErrDescriptions::SendMailFailure: + error_code = ErrCodes::SendMailFailure; + break; + case ErrDescriptions::ApprovalIdNotFound: + error_code = ErrCodes::ApprovalIdNotFound; + break; + case ErrDescriptions::InvalidEulaParameter: + error_code = ErrCodes::InvalidEulaParameter; + break; + case ErrDescriptions::InvalidEulaCountry: + error_code = ErrCodes::InvalidEulaCountry; + break; + case ErrDescriptions::InvalidEulaCountryAndVersion: + error_code = ErrCodes::InvalidEulaCountryAndVersion; + break; + case ErrDescriptions::EulaNotFound: + error_code = ErrCodes::EulaNotFound; + break; + case ErrDescriptions::PhraseNotAcceptable: + error_code = ErrCodes::PhraseNotAcceptable; + break; + case ErrDescriptions::AccountIdAlreadyExists: + error_code = ErrCodes::AccountIdAlreadyExists; + break; + case ErrDescriptions::AccountIdNotAcceptable: + error_code = ErrCodes::AccountIdNotAcceptable; + break; + case ErrDescriptions::AccountPasswordNotAcceptable: + error_code = ErrCodes::AccountPasswordNotAcceptable; + break; + case ErrDescriptions::MiiNameNotAcceptable: + error_code = ErrCodes::MiiNameNotAcceptable; + break; + case ErrDescriptions::MailAddressNotAcceptable: + error_code = ErrCodes::MailAddressNotAcceptable; + break; + case ErrDescriptions::AccountIdFormatInvalid: + error_code = ErrCodes::AccountIdFormatInvalid; + break; + case ErrDescriptions::AccountIdPasswordSame: + error_code = ErrCodes::AccountIdPasswordSame; + break; + case ErrDescriptions::AccountIdCharNotAcceptable: + error_code = ErrCodes::AccountIdCharNotAcceptable; + break; + case ErrDescriptions::AccountIdSuccessiveSymbol: + error_code = ErrCodes::AccountIdSuccessiveSymbol; + break; + case ErrDescriptions::AccountIdSymbolPositionNotAcceptable: + error_code = ErrCodes::AccountIdSymbolPositionNotAcceptable; + break; + case ErrDescriptions::AccountIdTooManyDigit: + error_code = ErrCodes::AccountIdTooManyDigit; + break; + case ErrDescriptions::AccountPasswordCharNotAcceptable: + error_code = ErrCodes::AccountPasswordCharNotAcceptable; + break; + case ErrDescriptions::AccountPasswordTooFewCharTypes: + error_code = ErrCodes::AccountPasswordTooFewCharTypes; + break; + case ErrDescriptions::AccountPasswordSuccessiveSameChar: + error_code = ErrCodes::AccountPasswordSuccessiveSameChar; + break; + case ErrDescriptions::MailAddressDomainNameNotAcceptable: + error_code = ErrCodes::MailAddressDomainNameNotAcceptable; + break; + case ErrDescriptions::MailAddressDomainNameNotResolved: + error_code = ErrCodes::MailAddressDomainNameNotResolved; + break; + case ErrDescriptions::ErrDesc787: + error_code = ErrCodes::ErrCode222587; + break; + case ErrDescriptions::ReachedAssociationLimit: + error_code = ErrCodes::ReachedAssociationLimit; + break; + case ErrDescriptions::ReachedRegistrationLimit: + error_code = ErrCodes::ReachedRegistrationLimit; + break; + case ErrDescriptions::CoppaNotAccepted: + error_code = ErrCodes::CoppaNotAccepted; + break; + case ErrDescriptions::ParentalControlsRequired: + error_code = ErrCodes::ParentalControlsRequired; + break; + case ErrDescriptions::MiiNotRegistered: + error_code = ErrCodes::MiiNotRegistered; + break; + case ErrDescriptions::DeviceEulaCountryMismatch: + error_code = ErrCodes::DeviceEulaCountryMismatch; + break; + case ErrDescriptions::PendingMigration: + error_code = ErrCodes::PendingMigration; + break; + case ErrDescriptions::WrongUserInput: + error_code = ErrCodes::WrongUserInput; + break; + case ErrDescriptions::WrongAccountPassword: + error_code = ErrCodes::WrongAccountPassword; + break; + case ErrDescriptions::WrongMailAddress: + error_code = ErrCodes::WrongMailAddress; + break; + case ErrDescriptions::WrongAccountPasswordOrMailAddress: + error_code = ErrCodes::WrongAccountPasswordOrMailAddress; + break; + case ErrDescriptions::WrongConfirmationCode: + error_code = ErrCodes::WrongConfirmationCode; + break; + case ErrDescriptions::WrongBirthDateOrMailAddress: + error_code = ErrCodes::WrongBirthDateOrMailAddress; + break; + case ErrDescriptions::WrongAccountMail: + error_code = ErrCodes::WrongAccountMail; + break; + case ErrDescriptions::AccountAlreadyDeleted: + error_code = ErrCodes::AccountAlreadyDeleted; + break; + case ErrDescriptions::AccountIdChanged: + error_code = ErrCodes::AccountIdChanged; + break; + case ErrDescriptions::AuthenticationLocked: + error_code = ErrCodes::AuthenticationLocked; + break; + case ErrDescriptions::DeviceInactive: + error_code = ErrCodes::DeviceInactive; + break; + case ErrDescriptions::CoppaAgreementCanceled: + error_code = ErrCodes::CoppaAgreementCanceled; + break; + case ErrDescriptions::DomainAccountAlreadyExists: + error_code = ErrCodes::DomainAccountAlreadyExists; + break; + case ErrDescriptions::AccountTokenExpired: + error_code = ErrCodes::AccountTokenExpired; + break; + case ErrDescriptions::InvalidAccountToken: + error_code = ErrCodes::InvalidAccountToken; + break; + case ErrDescriptions::AuthenticationRequired: + error_code = ErrCodes::AuthenticationRequired; + break; + case ErrDescriptions::ErrDesc844: + error_code = ErrCodes::ErrCode225844; + break; + case ErrDescriptions::ConfirmationCodeExpired: + error_code = ErrCodes::ConfirmationCodeExpired; + break; + case ErrDescriptions::MailAddressNotValidated: + error_code = ErrCodes::MailAddressNotValidated; + break; + case ErrDescriptions::ExcessiveMailSendRequest: + error_code = ErrCodes::ExcessiveMailSendRequest; + break; + case ErrDescriptions::CreditCardError: + error_code = ErrCodes::CreditCardError; + break; + case ErrDescriptions::CreditCardGeneralFailure: + error_code = ErrCodes::CreditCardGeneralFailure; + break; + case ErrDescriptions::CreditCardDeclined: + error_code = ErrCodes::CreditCardDeclined; + break; + case ErrDescriptions::CreditCardBlacklisted: + error_code = ErrCodes::CreditCardBlacklisted; + break; + case ErrDescriptions::InvalidCreditCardNumber: + error_code = ErrCodes::InvalidCreditCardNumber; + break; + case ErrDescriptions::InvalidCreditCardDate: + error_code = ErrCodes::InvalidCreditCardDate; + break; + case ErrDescriptions::InvalidCreditCardPin: + error_code = ErrCodes::InvalidCreditCardPin; + break; + case ErrDescriptions::InvalidPostalCode: + error_code = ErrCodes::InvalidPostalCode; + break; + case ErrDescriptions::InvalidLocation: + error_code = ErrCodes::InvalidLocation; + break; + case ErrDescriptions::CreditCardDateExpired: + error_code = ErrCodes::CreditCardDateExpired; + break; + case ErrDescriptions::CreditCardNumberWrong: + error_code = ErrCodes::CreditCardNumberWrong; + break; + case ErrDescriptions::CreditCardPinWrong: + error_code = ErrCodes::CreditCardPinWrong; + break; + case ErrDescriptions::Banned: + error_code = ErrCodes::Banned; + break; + case ErrDescriptions::BannedAccount: + error_code = ErrCodes::BannedAccount; + break; + case ErrDescriptions::BannedAccountAll: + error_code = ErrCodes::BannedAccountAll; + break; + case ErrDescriptions::BannedAccountInApplication: + error_code = ErrCodes::BannedAccountInApplication; + break; + case ErrDescriptions::BannedAccountInNexService: + error_code = ErrCodes::BannedAccountInNexService; + break; + case ErrDescriptions::BannedAccountInIndependentService: + error_code = ErrCodes::BannedAccountInIndependentService; + break; + case ErrDescriptions::BannedDevice: + error_code = ErrCodes::BannedDevice; + break; + case ErrDescriptions::BannedDeviceAll: + error_code = ErrCodes::BannedDeviceAll; + break; + case ErrDescriptions::BannedDeviceInApplication: + error_code = ErrCodes::BannedDeviceInApplication; + break; + case ErrDescriptions::BannedDeviceInNexService: + error_code = ErrCodes::BannedDeviceInNexService; + break; + case ErrDescriptions::BannedDeviceInIndependentService: + error_code = ErrCodes::BannedDeviceInIndependentService; + break; + case ErrDescriptions::BannedAccountTemporarily: + error_code = ErrCodes::BannedAccountTemporarily; + break; + case ErrDescriptions::BannedAccountAllTemporarily: + error_code = ErrCodes::BannedAccountAllTemporarily; + break; + case ErrDescriptions::BannedAccountInApplicationTemporarily: + error_code = ErrCodes::BannedAccountInApplicationTemporarily; + break; + case ErrDescriptions::BannedAccountInNexServiceTemporarily: + error_code = ErrCodes::BannedAccountInNexServiceTemporarily; + break; + case ErrDescriptions::BannedAccountInIndependentServiceTemporarily: + error_code = ErrCodes::BannedAccountInIndependentServiceTemporarily; + break; + case ErrDescriptions::BannedDeviceTemporarily: + error_code = ErrCodes::BannedDeviceTemporarily; + break; + case ErrDescriptions::BannedDeviceAllTemporarily: + error_code = ErrCodes::BannedDeviceAllTemporarily; + break; + case ErrDescriptions::BannedDeviceInApplicationTemporarily: + error_code = ErrCodes::BannedDeviceInApplicationTemporarily; + break; + case ErrDescriptions::BannedDeviceInNexServiceTemporarily: + error_code = ErrCodes::BannedDeviceInNexServiceTemporarily; + break; + case ErrDescriptions::BannedDeviceInIndependentServiceTemporarily: + error_code = ErrCodes::BannedDeviceInIndependentServiceTemporarily; + break; + case ErrDescriptions::ServiceNotProvided: + error_code = ErrCodes::ServiceNotProvided; + break; + case ErrDescriptions::UnderMaintenance: + error_code = ErrCodes::UnderMaintenance; + break; + case ErrDescriptions::ServiceClosed: + error_code = ErrCodes::ServiceClosed; + break; + case ErrDescriptions::NintendoNetworkClosed: + error_code = ErrCodes::NintendoNetworkClosed; + break; + case ErrDescriptions::NotProvidedCountry: + error_code = ErrCodes::NotProvidedCountry; + break; + case ErrDescriptions::RestrictionError: + error_code = ErrCodes::RestrictionError; + break; + case ErrDescriptions::RestrictedByAge: + error_code = ErrCodes::RestrictedByAge; + break; + case ErrDescriptions::RestrictedByParentalControls: + error_code = ErrCodes::RestrictedByParentalControls; + break; + case ErrDescriptions::OnGameInternetCommunicationRestricted: + error_code = ErrCodes::OnGameInternetCommunicationRestricted; + break; + case ErrDescriptions::InternalServerError: + error_code = ErrCodes::InternalServerError; + break; + case ErrDescriptions::UnknownServerError: + error_code = ErrCodes::UnknownServerError; + break; + case ErrDescriptions::UnauthenticatedAfterSalvage: + error_code = ErrCodes::UnauthenticatedAfterSalvage; + break; + case ErrDescriptions::AuthenticationFailureUnknown: + error_code = ErrCodes::AuthenticationFailureUnknown; + break; + } + } + + IPC::RequestBuilder rb = rp.MakeBuilder(2, 0); + rb.Push(ResultSuccess); + rb.Push(error_code); +} + +void Module::Interface::GetAccountInfo(Kernel::HLERequestContext& ctx) { + IPC::RequestParser rp(ctx); + const auto account_slot = rp.Pop(); const auto size = rp.Pop(); const auto block_id = rp.Pop(); [[maybe_unused]] auto output_buffer = rp.PopMappedBuffer(); - LOG_DEBUG(Service_ACT, "(STUBBED) called unknown={:02X}, size={:08X}, block_id={:08X}", unknown, - size, block_id); + LOG_DEBUG(Service_ACT, "(STUBBED) called account_slot={:02X}, size={:08X}, block_id={:08X}", + account_slot, size, block_id); IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); rb.Push(ResultSuccess); diff --git a/src/core/hle/service/act/act.h b/src/core/hle/service/act/act.h index cbd5e6eb1..d76cd1734 100644 --- a/src/core/hle/service/act/act.h +++ b/src/core/hle/service/act/act.h @@ -12,6 +12,605 @@ class System; namespace Service::ACT { +namespace ErrDescriptions { +enum { + MySuccess = 0, + MailAddressNotConfirmed = 1, + + // Library errors + LibraryError = 100, + NotInitialized = 101, + AlreadyInitialized = 102, + ErrDesc103 = 103, + ErrDesc104 = 104, + Busy = 111, + ErrDesc112 = 112, + NotImplemented = 191, + Deprecated = 192, + DevelopmentOnly = 193, + + InvalidArgument = 200, + InvalidPointer = 201, + OutOfRange = 202, + InvalidSize = 203, + InvalidFormat = 204, + InvalidHandle = 205, + InvalidValue = 206, + + InternalError = 300, + EndOfStream = 301, + FileError = 310, + FileNotFound = 311, + FileVersionMismatch = 312, + FileIOError = 313, + FileTypeMismatch = 314, + ErrDesc315 = 315, + + OutOfResource = 330, + ShortOfBuffer = 331, + OutOfMemory = 340, + OutOfGlobalHeap = 341, + + ErrDesc350 = 350, + ErrDesc351 = 351, + ErrDesc352 = 352, + ErrDesc360 = 360, + ErrDesc361 = 361, + ErrDesc362 = 362, + ErrDesc363 = 363, + + // Account management errors + AccountManagementError = 400, + AccountNotFound = 401, + SlotsFull = 402, + AccountNotLoaded = 411, + AccountAlreadyLoaded = 412, + AccountLocked = 413, + NotNetworkAccount = 421, + NotLocalAccount = 422, + AccountNotCommited = 423, + + ErrDesc431 = 431, + ErrDesc432 = 432, + ErrDesc433 = 433, + + ErrDesc451 = 451, + + AuthenticationError = 500, + + // HTTP errors + HttpError = 501, + ErrDesc502 = 502, + ErrDesc503 = 503, + ErrDesc504 = 504, + ErrDesc505 = 505, + ErrDesc506 = 506, + ErrDesc507 = 507, + ErrDesc508 = 508, + ErrDesc509 = 509, + ErrDesc510 = 510, + ErrDesc511 = 511, + ErrDesc512 = 512, + ErrDesc513 = 513, + ErrDesc514 = 514, + ErrDesc515 = 515, + ErrDesc516 = 516, + ErrDesc517 = 517, + ErrDesc518 = 518, + ErrDesc519 = 519, + ErrDesc520 = 520, + ErrDesc521 = 521, + ErrDesc522 = 522, + ErrDesc523 = 523, + ErrDesc524 = 524, + ErrDesc525 = 525, + ErrDesc526 = 526, + ErrDesc527 = 527, + ErrDesc528 = 528, + ErrDesc529 = 529, + ErrDesc530 = 530, + ErrDesc531 = 531, + ErrDesc532 = 532, + ErrDesc533 = 533, + ErrDesc534 = 534, + ErrDesc535 = 535, + ErrDesc536 = 536, + ErrDesc537 = 537, + ErrDesc538 = 538, + ErrDesc539 = 539, + ErrDesc540 = 540, + ErrDesc541 = 541, + ErrDesc542 = 542, + ErrDesc543 = 543, + ErrDesc544 = 544, + ErrDesc545 = 545, + ErrDesc546 = 546, + ErrDesc547 = 547, + ErrDesc548 = 548, + ErrDesc549 = 549, + ErrDesc550 = 550, + ErrDesc551 = 551, + ErrDesc552 = 552, + ErrDesc553 = 553, + + // Request errors + RequestError = 600, + BadFormatParameter = 601, + BadFormatRequest = 602, + RequestParameterMissing = 603, + WrongHttpMethod = 604, + + // Response errors + ResponseError = 620, + BadFormatResponse = 621, + ResponseItemMissing = 622, + ResponseTooLarge = 623, + + // Invalid parameter errors + InvalidCommonParameter = 650, + InvalidPlatformId = 651, + UnauthorizedDevice = 652, + InvalidSerialId = 653, + InvalidMacAddress = 654, + InvalidRegion = 655, + InvalidCountry = 656, + InvalidLanguage = 657, + UnauthorizedClient = 658, + DeviceIdEmpty = 659, + SerialIdEmpty = 660, + PlatformIdEmpty = 661, + + InvalidUniqueId = 671, + InvalidClientId = 672, + InvalidClientKey = 673, + + InvalidNexClientId = 681, + InvalidGameServerId = 682, + GameServerIdEnvironmentNotFound = 683, + GameServerIdUniqueIdNotLinked = 684, + ClientIdUniqueIdNotLinked = 685, + + DeviceMismatch = 701, + CountryMismatch = 702, + EulaNotAccepted = 703, + + // Update required errors + UpdateRequired = 710, + SystemUpdateRequired = 711, + ApplicationUpdateRequired = 712, + + UnauthorizedRequest = 720, + RequestForbidden = 722, + + // Resource not found errors + ResourceNotFound = 730, + PidNotFound = 731, + NexAccountNotFound = 732, + GenerateTokenFailure = 733, + RequestNotFound = 734, + MasterPinNotFound = 735, + MailTextNotFound = 736, + SendMailFailure = 737, + ApprovalIdNotFound = 738, + + // EULA errors + InvalidEulaParameter = 740, + InvalidEulaCountry = 741, + InvalidEulaCountryAndVersion = 742, + EulaNotFound = 743, + + // Not acceptable errors + PhraseNotAcceptable = 770, + AccountIdAlreadyExists = 771, + AccountIdNotAcceptable = 772, + AccountPasswordNotAcceptable = 773, + MiiNameNotAcceptable = 774, + MailAddressNotAcceptable = 775, + AccountIdFormatInvalid = 776, + AccountIdPasswordSame = 777, + AccountIdCharNotAcceptable = 778, + AccountIdSuccessiveSymbol = 779, + AccountIdSymbolPositionNotAcceptable = 780, + AccountIdTooManyDigit = 781, + AccountPasswordCharNotAcceptable = 782, + AccountPasswordTooFewCharTypes = 783, + AccountPasswordSuccessiveSameChar = 784, + MailAddressDomainNameNotAcceptable = 785, + MailAddressDomainNameNotResolved = 786, + ErrDesc787 = 787, + + ReachedAssociationLimit = 791, + ReachedRegistrationLimit = 792, + CoppaNotAccepted = 793, + ParentalControlsRequired = 794, + MiiNotRegistered = 795, + DeviceEulaCountryMismatch = 796, + PendingMigration = 797, + + // Wrong user input errors + WrongUserInput = 810, + WrongAccountPassword = 811, + WrongMailAddress = 812, + WrongAccountPasswordOrMailAddress = 813, + WrongConfirmationCode = 814, + WrongBirthDateOrMailAddress = 815, + WrongAccountMail = 816, + + AccountAlreadyDeleted = 831, + AccountIdChanged = 832, + AuthenticationLocked = 833, + DeviceInactive = 834, + CoppaAgreementCanceled = 835, + DomainAccountAlreadyExists = 836, + + AccountTokenExpired = 841, + InvalidAccountToken = 842, + AuthenticationRequired = 843, + ErrDesc844 = 844, + + ConfirmationCodeExpired = 851, + + MailAddressNotValidated = 861, + ExcessiveMailSendRequest = 862, + + // Credit card errors + CreditCardError = 870, + CreditCardGeneralFailure = 871, + CreditCardDeclined = 872, + CreditCardBlacklisted = 873, + InvalidCreditCardNumber = 874, + InvalidCreditCardDate = 875, + InvalidCreditCardPin = 876, + InvalidPostalCode = 877, + InvalidLocation = 878, + CreditCardDateExpired = 879, + CreditCardNumberWrong = 880, + CreditCardPinWrong = 881, + + // Ban errors + Banned = 900, + BannedAccount = 901, + BannedAccountAll = 902, + BannedAccountInApplication = 903, + BannedAccountInNexService = 904, + BannedAccountInIndependentService = 905, + BannedDevice = 911, + BannedDeviceAll = 912, + BannedDeviceInApplication = 913, + BannedDeviceInNexService = 914, + BannedDeviceInIndependentService = 915, + BannedAccountTemporarily = 921, + BannedAccountAllTemporarily = 922, + BannedAccountInApplicationTemporarily = 923, + BannedAccountInNexServiceTemporarily = 924, + BannedAccountInIndependentServiceTemporarily = 925, + BannedDeviceTemporarily = 931, + BannedDeviceAllTemporarily = 932, + BannedDeviceInApplicationTemporarily = 933, + BannedDeviceInNexServiceTemporarily = 934, + BannedDeviceInIndependentServiceTemporarily = 935, + + // Service not provided errors + ServiceNotProvided = 950, + UnderMaintenance = 951, + ServiceClosed = 952, + NintendoNetworkClosed = 953, + NotProvidedCountry = 954, + + // Restriction errors + RestrictionError = 970, + RestrictedByAge = 971, + RestrictedByParentalControls = 980, + OnGameInternetCommunicationRestricted = 981, + + InternalServerError = 991, + UnknownServerError = 992, + + UnauthenticatedAfterSalvage = 998, + AuthenticationFailureUnknown = 999, +}; +} + +namespace ErrCodes { +enum { + MySuccess = 220000, // 022-0000 + MailAddressNotConfirmed = 220001, // 022-0001 + + // Library errors + LibraryError = 220500, // 022-0500 + NotInitialized = 220501, // 022-0501 + AlreadyInitialized = 220502, // 022-0502 + ErrCode225103 = 225103, // 022-5103 + ErrCode225104 = 225104, // 022-5104 + Busy = 220511, // 022-0511 + ErrCode225112 = 225112, // 022-5112 + NotImplemented = 220591, // 022-0591 + Deprecated = 220592, // 022-0592 + DevelopmentOnly = 220593, // 022-0593 + + InvalidArgument = 220600, // 022-0600 + InvalidPointer = 220601, // 022-0601 + OutOfRange = 220602, // 022-0602 + InvalidSize = 220603, // 022-0603 + InvalidFormat = 220604, // 022-0604 + InvalidHandle = 220605, // 022-0605 + InvalidValue = 220606, // 022-0606 + + InternalError = 220700, // 022-0700 + EndOfStream = 220701, // 022-0701 + FileError = 220710, // 022-0710 + FileNotFound = 220711, // 022-0711 + FileVersionMismatch = 220712, // 022-0712 + FileIOError = 220713, // 022-0713 + FileTypeMismatch = 220714, // 022-0714 + ErrCode225315 = 225315, // 022-5315 + + OutOfResource = 220730, // 022-0730 + ShortOfBuffer = 220731, // 022-0731 + OutOfMemory = 220740, // 022-0740 + OutOfGlobalHeap = 220741, // 022-0741 + + ErrCode225350 = 225350, // 022-5350 + ErrCode225351 = 225351, // 022-5351 + ErrCode225352 = 225352, // 022-5352 + ErrCode225360 = 225360, // 022-5360 + ErrCode225361 = 225361, // 022-5361 + ErrCode225362 = 225362, // 022-5362 + ErrCode225363 = 225363, // 022-5363 + + // Account management errors + AccountManagementError = 221000, // 022-1000 + AccountNotFound = 221001, // 022-1001 + SlotsFull = 221002, // 022-1002 + AccountNotLoaded = 221011, // 022-1011 + AccountAlreadyLoaded = 221012, // 022-1012 + AccountLocked = 221013, // 022-1013 + NotNetworkAccount = 221021, // 022-1021 + NotLocalAccount = 221022, // 022-1022 + AccountCommited = 221023, // 022-1023 + + ErrCode225431 = 225431, // 022-5431 + ErrCode225432 = 225432, // 022-5432 + ErrCode225433 = 225433, // 022-5433 + + ErrCode221101 = 221101, // 022-1101 + + AuthenticationError = 222000, // 022-2000 + + // HTTP errors + HttpError = 222100, // 022-2100 + ErrCode225502 = 225502, // 022-5502 + ErrCode225503 = 225503, // 022-5503 + ErrCode225504 = 225504, // 022-5504 + ErrCode225505 = 225505, // 022-5505 + ErrCode225506 = 225506, // 022-5506 + ErrCode225507 = 225507, // 022-5507 + ErrCode225508 = 225508, // 022-5508 + ErrCode225509 = 225509, // 022-5509 + ErrCode225510 = 225510, // 022-5510 + ErrCode225511 = 225511, // 022-5511 + ErrCode225512 = 225512, // 022-5512 + ErrCode225513 = 225513, // 022-5513 + ErrCode225514 = 225514, // 022-5514 + ErrCode225515 = 225515, // 022-5515 + ErrCode225516 = 225516, // 022-5516 + ErrCode225517 = 225517, // 022-5517 + ErrCode225518 = 225518, // 022-5518 + ErrCode225519 = 225519, // 022-5519 + ErrCode225520 = 225520, // 022-5520 + ErrCode225521 = 225521, // 022-5521 + ErrCode225522 = 225522, // 022-5522 + ErrCode225523 = 225523, // 022-5523 + ErrCode225524 = 225524, // 022-5524 + ErrCode225525 = 225525, // 022-5525 + ErrCode225526 = 225526, // 022-5526 + ErrCode225527 = 225527, // 022-5527 + ErrCode225528 = 225528, // 022-5528 + ErrCode225529 = 225529, // 022-5529 + ErrCode225530 = 225530, // 022-5530 + ErrCode225531 = 225531, // 022-5531 + ErrCode225532 = 225532, // 022-5532 + ErrCode225533 = 225533, // 022-5533 + ErrCode225534 = 225534, // 022-5534 + ErrCode225535 = 225535, // 022-5535 + ErrCode225536 = 225536, // 022-5536 + ErrCode225537 = 225537, // 022-5537 + ErrCode225538 = 225538, // 022-5538 + ErrCode225539 = 225539, // 022-5539 + ErrCode225540 = 225540, // 022-5540 + ErrCode225541 = 225541, // 022-5541 + ErrCode225542 = 225542, // 022-5542 + ErrCode225543 = 225543, // 022-5543 + ErrCode225544 = 225544, // 022-5544 + ErrCode225545 = 225545, // 022-5545 + ErrCode225546 = 225546, // 022-5546 + ErrCode225547 = 225547, // 022-5547 + ErrCode225548 = 225548, // 022-5548 + ErrCode225549 = 225549, // 022-5549 + ErrCode225550 = 225550, // 022-5550 + ErrCode225551 = 225551, // 022-5551 + ErrCode225552 = 225552, // 022-5552 + ErrCode225553 = 225553, // 022-5553 + + // Request errors + RequestError = 222400, // 022-2400 + BadFormatParameter = 222401, // 022-2401 + BadFormatRequest = 222402, // 022-2402 + RequestParameterMissing = 222403, // 022-2403 + WrongHttpMethod = 222404, // 022-2404 + + // Response errors + ResponseError = 222420, // 022-2420 + BadFormatResponse = 222421, // 022-2421 + ResponseItemMissing = 222422, // 022-2422 + ResponseTooLarge = 222423, // 022-2423 + + // Invalid parameter errors + InvalidCommonParameter = 222450, // 022-2450 + InvalidPlatformId = 222451, // 022-2451 + UnauthorizedDevice = 222452, // 022-2452 + InvalidSerialId = 222453, // 022-2453 + InvalidMacAddress = 222454, // 022-2454 + InvalidRegion = 222455, // 022-2455 + InvalidCountry = 222456, // 022-2456 + InvalidLanguage = 222457, // 022-2457 + UnauthorizedClient = 222458, // 022-2458 + DeviceIdEmpty = 222459, // 022-2459 + SerialIdEmpty = 222460, // 022-2460 + PlatformIdEmpty = 222461, // 022-2461 + + InvalidUniqueId = 222471, // 022-2471 + InvalidClientId = 222472, // 022-2472 + InvalidClientKey = 222473, // 022-2473 + + InvalidNexClientId = 222481, // 022-2481 + InvalidGameServerId = 222482, // 022-2482 + GameServerIdEnvironmentNotFound = 222483, // 022-2483 + GameServerIdUniqueIdNotLinked = 222484, // 022-2484 + ClientIdUniqueIdNotLinked = 222485, // 022-2485 + + DeviceMismatch = 222501, // 022-2501 + CountryMismatch = 222502, // 022-2502 + EulaNotAccepted = 222503, // 022-2503 + + // Update required errors + UpdateRequired = 222510, // 022-2510 + SystemUpdateRequired = 222511, // 022-2511 + ApplicationUpdateRequired = 222512, // 022-2512 + + UnauthorizedRequest = 222520, // 022-2520 + RequestForbidden = 222522, // 022-2522 + + // Resource not found errors + ResourceNotFound = 222530, // 022-2530 + PidNotFound = 222531, // 022-2531 + NexAccountNotFound = 222532, // 022-2532 + GenerateTokenFailure = 222533, // 022-2533 + RequestNotFound = 222534, // 022-2534 + MasterPinNotFound = 222535, // 022-2535 + MailTextNotFound = 222536, // 022-2536 + SendMailFailure = 222537, // 022-2537 + ApprovalIdNotFound = 222538, // 022-2538 + + // EULA errors + InvalidEulaParameter = 222540, // 022-2540 + InvalidEulaCountry = 222541, // 022-2541 + InvalidEulaCountryAndVersion = 222542, // 022-2542 + EulaNotFound = 222543, // 022-2543 + + // Not acceptable errors + PhraseNotAcceptable = 222570, // 022-2570 + AccountIdAlreadyExists = 222571, // 022-2571 + AccountIdNotAcceptable = 222572, // 022-2572 + AccountPasswordNotAcceptable = 222573, // 022-2573 + MiiNameNotAcceptable = 222574, // 022-2574 + MailAddressNotAcceptable = 222575, // 022-2575 + AccountIdFormatInvalid = 222576, // 022-2576 + AccountIdPasswordSame = 222577, // 022-2577 + AccountIdCharNotAcceptable = 222578, // 022-2578 + AccountIdSuccessiveSymbol = 222579, // 022-2579 + AccountIdSymbolPositionNotAcceptable = 222580, // 022-2580 + AccountIdTooManyDigit = 222581, // 022-2581 + AccountPasswordCharNotAcceptable = 222582, // 022-2582 + AccountPasswordTooFewCharTypes = 222583, // 022-2583 + AccountPasswordSuccessiveSameChar = 222584, // 022-2584 + MailAddressDomainNameNotAcceptable = 222585, // 022-2585 + MailAddressDomainNameNotResolved = 222586, // 022-2586 + ErrCode222587 = 222587, // 022-2587 + + ReachedAssociationLimit = 222591, // 022-2591 + ReachedRegistrationLimit = 222592, // 022-2592 + CoppaNotAccepted = 222593, // 022-2593 + ParentalControlsRequired = 222594, // 022-2594 + MiiNotRegistered = 222595, // 022-2595 + DeviceEulaCountryMismatch = 222596, // 022-2596 + PendingMigration = 222597, // 022-2597 + + // Wrong user input errors + WrongUserInput = 222610, // 022-2610 + WrongAccountPassword = 222611, // 022-2611 + WrongMailAddress = 222612, // 022-2612 + WrongAccountPasswordOrMailAddress = 222613, // 022-2613 + WrongConfirmationCode = 222614, // 022-2614 + WrongBirthDateOrMailAddress = 222615, // 022-2615 + WrongAccountMail = 222616, // 022-2616 + + AccountAlreadyDeleted = 222631, // 022-2631 + AccountIdChanged = 222632, // 022-2632 + AuthenticationLocked = 222633, // 022-2633 + DeviceInactive = 222634, // 022-2634 + CoppaAgreementCanceled = 222635, // 022-2635 + DomainAccountAlreadyExists = 222636, // 022-2636 + + AccountTokenExpired = 222641, // 022-2641 + InvalidAccountToken = 222642, // 022-2642 + AuthenticationRequired = 222643, // 022-2643 + ErrCode225844 = 225844, // 022-5844 + + ConfirmationCodeExpired = 222651, // 022-2651 + + MailAddressNotValidated = 222661, // 022-2661 + ExcessiveMailSendRequest = 222662, // 022-2662 + + // Credit card errors + CreditCardError = 222670, // 022-2670 + CreditCardGeneralFailure = 222671, // 022-2671 + CreditCardDeclined = 222672, // 022-2672 + CreditCardBlacklisted = 222673, // 022-2673 + InvalidCreditCardNumber = 222674, // 022-2674 + InvalidCreditCardDate = 222675, // 022-2675 + InvalidCreditCardPin = 222676, // 022-2676 + InvalidPostalCode = 222677, // 022-2677 + InvalidLocation = 222678, // 022-2678 + CreditCardDateExpired = 222679, // 022-2679 + CreditCardNumberWrong = 222680, // 022-2680 + CreditCardPinWrong = 222681, // 022-2681 + + // Ban errors + Banned = 222800, // 022-2800 + BannedAccount = 222801, // 022-2801 + BannedAccountAll = 222802, // 022-2802 + BannedAccountInApplication = 222803, // 022-2803 + BannedAccountInNexService = 222804, // 022-2804 + BannedAccountInIndependentService = 222805, // 022-2805 + BannedDevice = 222811, // 022-2811 + BannedDeviceAll = 222812, // 022-2812 + BannedDeviceInApplication = 222813, // 022-2813 + BannedDeviceInNexService = 222814, // 022-2814 + BannedDeviceInIndependentService = 222815, // 022-2815 + BannedAccountTemporarily = 222821, // 022-2821 + BannedAccountAllTemporarily = 222822, // 022-2822 + BannedAccountInApplicationTemporarily = 222823, // 022-2823 + BannedAccountInNexServiceTemporarily = 222824, // 022-2824 + BannedAccountInIndependentServiceTemporarily = 222825, // 022-2825 + BannedDeviceTemporarily = 222831, // 022-2831 + BannedDeviceAllTemporarily = 222832, // 022-2832 + BannedDeviceInApplicationTemporarily = 222833, // 022-2833 + BannedDeviceInNexServiceTemporarily = 222834, // 022-2834 + BannedDeviceInIndependentServiceTemporarily = 222835, // 022-2835 + + // Service not provided errors + ServiceNotProvided = 222880, // 022-2880 + UnderMaintenance = 222881, // 022-2881 + ServiceClosed = 222882, // 022-2882 + NintendoNetworkClosed = 222883, // 022-2883 + NotProvidedCountry = 222884, // 022-2884 + + // Restriction errors + RestrictionError = 222900, // 022-2900 + RestrictedByAge = 222901, // 022-2901 + RestrictedByParentalControls = 222910, // 022-2910 + OnGameInternetCommunicationRestricted = 222911, // 022-2911 + + InternalServerError = 222931, // 022-2931 + UnknownServerError = 222932, // 022-2932 + + UnauthenticatedAfterSalvage = 222998, // 022-2998 + AuthenticationFailureUnknown = 222999, // 022-2999 + Unknown = 229999, // 022-9999 +}; +} + /// Initializes all ACT services class Module final { public: @@ -38,9 +637,19 @@ public: void Initialize(Kernel::HLERequestContext& ctx); /** - * ACT::GetAccountDataBlock service function. + * ACT::GetErrorCode service function. * Inputs: - * 1 : u8 Unknown + * 1 : Result code + * Outputs: + * 1 : Result of function, 0 on success, otherwise error code + * 2 : Error code + */ + void GetErrorCode(Kernel::HLERequestContext& ctx); + + /** + * ACT::GetAccountInfo service function. + * Inputs: + * 1 : Account slot * 2 : Size * 3 : Block ID * 4 : Output Buffer Mapping Translation Header ((Size << 4) | 0xC) @@ -48,7 +657,7 @@ public: * Outputs: * 1 : Result of function, 0 on success, otherwise error code */ - void GetAccountDataBlock(Kernel::HLERequestContext& ctx); + void GetAccountInfo(Kernel::HLERequestContext& ctx); }; private: diff --git a/src/core/hle/service/act/act_a.cpp b/src/core/hle/service/act/act_a.cpp index 41d8da4a4..281016022 100644 --- a/src/core/hle/service/act/act_a.cpp +++ b/src/core/hle/service/act/act_a.cpp @@ -12,15 +12,61 @@ ACT_A::ACT_A(std::shared_ptr act) : Module::Interface(std::move(act), "a // act:u shared commands // clang-format off {0x0001, &ACT_A::Initialize, "Initialize"}, - {0x0002, nullptr, "GetErrorCode"}, - {0x0006, &ACT_A::GetAccountDataBlock, "GetAccountDataBlock"}, + {0x0002, &ACT_A::GetErrorCode, "GetErrorCode"}, + {0x0003, nullptr, "GetLastResponseCode"}, + {0x0005, nullptr, "GetCommonInfo"}, + {0x0006, &ACT_A::GetAccountInfo, "GetAccountInfo"}, + {0x0007, nullptr, "GetResultAsync"}, + {0x0008, nullptr, "GetMiiImageData"}, + {0x0009, nullptr, "SetNfsPassword"}, {0x000B, nullptr, "AcquireEulaList"}, + {0x000C, nullptr, "AcquireTimeZoneList"}, {0x000D, nullptr, "GenerateUuid"}, + {0x000F, nullptr, "FindSlotNoByUuid"}, + {0x0010, nullptr, "SaveData"}, + {0x0011, nullptr, "GetTransferableId"}, + {0x0012, nullptr, "AcquireNexServiceToken"}, + {0x0013, nullptr, "GetNexServiceToken"}, + {0x0014, nullptr, "AcquireIndependentServiceToken"}, + {0x0015, nullptr, "GetIndependentServiceToken"}, + {0x0016, nullptr, "AcquireAccountInfo"}, + {0x0017, nullptr, "AcquireAccountIdByPrincipalId"}, + {0x0018, nullptr, "AcquirePrincipalIdByAccountId"}, + {0x0019, nullptr, "AcquireMii"}, + {0x001A, nullptr, "AcquireAccountInfoEx"}, + {0x001D, nullptr, "InquireMailAddress"}, + {0x001E, nullptr, "AcquireEula"}, + {0x001F, nullptr, "AcquireEulaLanguageList"}, // act:a + {0x0402, nullptr, "CreateConsoleAccount"}, + {0x0403, nullptr, "CommitConsoleAccount"}, + {0x0404, nullptr, "UnbindServerAccount"}, + {0x0405, nullptr, "DeleteConsoleAccount"}, + {0x0407, nullptr, "UnloadConsoleAccount"}, + {0x0408, nullptr, "EnableAccountPasswordCache"}, + {0x0409, nullptr, "SetDefaultAccount"}, + {0x040A, nullptr, "ReplaceAccountId"}, + {0x040B, nullptr, "GetSupportContext"}, + {0x0412, nullptr, "UpdateMii"}, {0x0413, nullptr, "UpdateMiiImage"}, + {0x0414, nullptr, "InquireAccountIdAvailability"}, + {0x0415, nullptr, "BindToNewServerAccount"}, + {0x0416, nullptr, "BindToExistentServerAccount"}, + {0x0417, nullptr, "InquireBindingToExistentServerAccount"}, + {0x041A, nullptr, "AcquireAccountTokenEx"}, {0x041B, nullptr, "AgreeEula"}, + {0x041C, nullptr, "SyncAccountInfo"}, + {0x041E, nullptr, "UpdateAccountPassword"}, + {0x041F, nullptr, "ReissueAccountPassword"}, + {0x0420, nullptr, "SetAccountPasswordInput"}, {0x0421, nullptr, "UploadMii"}, {0x0423, nullptr, "ValidateMailAddress"}, + {0x0423, nullptr, "SendConfirmationMail"}, + {0x0428, nullptr, "ApproveByCreditCard"}, + {0x0428, nullptr, "SendCoppaCodeMail"}, + {0x042F, nullptr, "UpdateAccountInfoEx"}, + {0x0430, nullptr, "UpdateAccountMailAddress"}, + {0x0435, nullptr, "DeleteServerAccount"}, // clang-format on }; RegisterHandlers(functions); diff --git a/src/core/hle/service/act/act_u.cpp b/src/core/hle/service/act/act_u.cpp index d28c3b07f..a55c303c1 100644 --- a/src/core/hle/service/act/act_u.cpp +++ b/src/core/hle/service/act/act_u.cpp @@ -11,10 +11,31 @@ ACT_U::ACT_U(std::shared_ptr act) : Module::Interface(std::move(act), "a static const FunctionInfo functions[] = { // clang-format off {0x0001, &ACT_U::Initialize, "Initialize"}, - {0x0002, nullptr, "GetErrorCode"}, - {0x0006, &ACT_U::GetAccountDataBlock, "GetAccountDataBlock"}, + {0x0002, &ACT_U::GetErrorCode, "GetErrorCode"}, + {0x0003, nullptr, "GetLastResponseCode"}, + {0x0005, nullptr, "GetCommonInfo"}, + {0x0006, &ACT_U::GetAccountInfo, "GetAccountInfo"}, + {0x0007, nullptr, "GetResultAsync"}, + {0x0008, nullptr, "GetMiiImageData"}, + {0x0009, nullptr, "SetNfsPassword"}, {0x000B, nullptr, "AcquireEulaList"}, + {0x000C, nullptr, "AcquireTimeZoneList"}, {0x000D, nullptr, "GenerateUuid"}, + {0x000F, nullptr, "FindSlotNoByUuid"}, + {0x0010, nullptr, "SaveData"}, + {0x0011, nullptr, "GetTransferableId"}, + {0x0012, nullptr, "AcquireNexServiceToken"}, + {0x0013, nullptr, "GetNexServiceToken"}, + {0x0014, nullptr, "AcquireIndependentServiceToken"}, + {0x0015, nullptr, "GetIndependentServiceToken"}, + {0x0016, nullptr, "AcquireAccountInfo"}, + {0x0017, nullptr, "AcquireAccountIdByPrincipalId"}, + {0x0018, nullptr, "AcquirePrincipalIdByAccountId"}, + {0x0019, nullptr, "AcquireMii"}, + {0x001A, nullptr, "AcquireAccountInfoEx"}, + {0x001D, nullptr, "InquireMailAddress"}, + {0x001E, nullptr, "AcquireEula"}, + {0x001F, nullptr, "AcquireEulaLanguageList"}, // clang-format on }; RegisterHandlers(functions);