mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-11-03 23:28:48 +00:00 
			
		
		
		
	hle: Eliminate need to specify command headers for IPC. (#6678)
This commit is contained in:
		
							parent
							
								
									0bedb28bdc
								
							
						
					
					
						commit
						e043caac27
					
				
					 96 changed files with 2691 additions and 2707 deletions
				
			
		| 
						 | 
				
			
			@ -206,7 +206,7 @@ Module::Interface::Interface(std::shared_ptr<Module> cfg, const char* name, u32
 | 
			
		|||
Module::Interface::~Interface() = default;
 | 
			
		||||
 | 
			
		||||
void Module::Interface::GetCountryCodeString(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x09, 1, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    u16 country_code_id = rp.Pop<u16>();
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -228,7 +228,7 @@ std::shared_ptr<Module> Module::Interface::Interface::GetModule() const {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::Interface::GetCountryCodeID(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x0A, 1, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    u16 country_code = rp.Pop<u16>();
 | 
			
		||||
    u16 country_code_id = 0;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -263,16 +263,16 @@ u32 Module::GetRegionValue() {
 | 
			
		|||
    return Settings::values.region_value.GetValue();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Module::Interface::SecureInfoGetRegion(Kernel::HLERequestContext& ctx, u16 id) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, id, 0, 0);
 | 
			
		||||
void Module::Interface::SecureInfoGetRegion(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
 | 
			
		||||
    rb.Push(RESULT_SUCCESS);
 | 
			
		||||
    rb.Push<u8>(static_cast<u8>(cfg->GetRegionValue()));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Module::Interface::SecureInfoGetByte101(Kernel::HLERequestContext& ctx, u16 id) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, id, 0, 0);
 | 
			
		||||
void Module::Interface::SecureInfoGetByte101(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Service_CFG, "(STUBBED) called");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -283,7 +283,7 @@ void Module::Interface::SecureInfoGetByte101(Kernel::HLERequestContext& ctx, u16
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::Interface::GenHashConsoleUnique(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x03, 1, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    const u32 app_id_salt = rp.Pop<u32>() & 0x000FFFFF;
 | 
			
		||||
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(3, 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -309,7 +309,7 @@ void Module::Interface::GenHashConsoleUnique(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::Interface::GetRegionCanadaUSA(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x04, 0, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
 | 
			
		||||
 | 
			
		||||
    rb.Push(RESULT_SUCCESS);
 | 
			
		||||
| 
						 | 
				
			
			@ -323,7 +323,7 @@ void Module::Interface::GetRegionCanadaUSA(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::Interface::GetSystemModel(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x05, 0, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
 | 
			
		||||
    u32 data{};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -345,7 +345,7 @@ void Module::Interface::GetSystemModel(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::Interface::GetModelNintendo2DS(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x06, 0, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(2, 0);
 | 
			
		||||
    u32 data{};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -356,7 +356,7 @@ void Module::Interface::GetModelNintendo2DS(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void Module::Interface::GetConfigInfoBlk2(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x01, 2, 2);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    u32 size = rp.Pop<u32>();
 | 
			
		||||
    u32 block_id = rp.Pop<u32>();
 | 
			
		||||
    auto& buffer = rp.PopMappedBuffer();
 | 
			
		||||
| 
						 | 
				
			
			@ -368,8 +368,8 @@ void Module::Interface::GetConfigInfoBlk2(Kernel::HLERequestContext& ctx) {
 | 
			
		|||
    rb.PushMappedBuffer(buffer);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Module::Interface::GetConfigInfoBlk8(Kernel::HLERequestContext& ctx, u16 id) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, id, 2, 2);
 | 
			
		||||
void Module::Interface::GetConfigInfoBlk8(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    u32 size = rp.Pop<u32>();
 | 
			
		||||
    u32 block_id = rp.Pop<u32>();
 | 
			
		||||
    auto& buffer = rp.PopMappedBuffer();
 | 
			
		||||
| 
						 | 
				
			
			@ -381,8 +381,8 @@ void Module::Interface::GetConfigInfoBlk8(Kernel::HLERequestContext& ctx, u16 id
 | 
			
		|||
    rb.PushMappedBuffer(buffer);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Module::Interface::SetConfigInfoBlk4(Kernel::HLERequestContext& ctx, u16 id) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, id, 2, 2);
 | 
			
		||||
void Module::Interface::SetConfigInfoBlk4(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    u32 block_id = rp.Pop<u32>();
 | 
			
		||||
    u32 size = rp.Pop<u32>();
 | 
			
		||||
    auto& buffer = rp.PopMappedBuffer();
 | 
			
		||||
| 
						 | 
				
			
			@ -395,14 +395,14 @@ void Module::Interface::SetConfigInfoBlk4(Kernel::HLERequestContext& ctx, u16 id
 | 
			
		|||
    rb.PushMappedBuffer(buffer);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Module::Interface::UpdateConfigNANDSavegame(Kernel::HLERequestContext& ctx, u16 id) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, id, 0, 0);
 | 
			
		||||
void Module::Interface::UpdateConfigNANDSavegame(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
 | 
			
		||||
    rb.Push(cfg->UpdateConfigNANDSavegame());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Module::Interface::FormatConfig(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    IPC::RequestParser rp(ctx, 0x0806, 0, 0);
 | 
			
		||||
    IPC::RequestParser rp(ctx);
 | 
			
		||||
    IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
 | 
			
		||||
    rb.Push(cfg->FormatConfig());
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -163,7 +163,7 @@ public:
 | 
			
		|||
         *      1 : Result of function, 0 on success, otherwise error code
 | 
			
		||||
         *      2 : Region value loaded from SecureInfo offset 0x100
 | 
			
		||||
         */
 | 
			
		||||
        void SecureInfoGetRegion(Kernel::HLERequestContext& ctx, u16 id);
 | 
			
		||||
        void SecureInfoGetRegion(Kernel::HLERequestContext& ctx);
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * CFG::SecureInfoGetByte101 service function
 | 
			
		||||
| 
						 | 
				
			
			@ -174,7 +174,7 @@ public:
 | 
			
		|||
         *      1 : Result of function, 0 on success, otherwise error code
 | 
			
		||||
         *      2 : Value loaded from SecureInfo offset 0x101
 | 
			
		||||
         */
 | 
			
		||||
        void SecureInfoGetByte101(Kernel::HLERequestContext& ctx, u16 id);
 | 
			
		||||
        void SecureInfoGetByte101(Kernel::HLERequestContext& ctx);
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * CFG::GenHashConsoleUnique service function
 | 
			
		||||
| 
						 | 
				
			
			@ -243,7 +243,7 @@ public:
 | 
			
		|||
         *  Outputs:
 | 
			
		||||
         *      1 : Result of function, 0 on success, otherwise error code
 | 
			
		||||
         */
 | 
			
		||||
        void GetConfigInfoBlk8(Kernel::HLERequestContext& ctx, u16 id);
 | 
			
		||||
        void GetConfigInfoBlk8(Kernel::HLERequestContext& ctx);
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * CFG::SetConfigInfoBlk4 service function
 | 
			
		||||
| 
						 | 
				
			
			@ -259,7 +259,7 @@ public:
 | 
			
		|||
         *      The parameters order is different from GetConfigInfoBlk2/8's,
 | 
			
		||||
         *      where Block ID and Size are switched.
 | 
			
		||||
         */
 | 
			
		||||
        void SetConfigInfoBlk4(Kernel::HLERequestContext& ctx, u16 id);
 | 
			
		||||
        void SetConfigInfoBlk4(Kernel::HLERequestContext& ctx);
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * CFG::UpdateConfigNANDSavegame service function
 | 
			
		||||
| 
						 | 
				
			
			@ -268,7 +268,7 @@ public:
 | 
			
		|||
         *  Outputs:
 | 
			
		||||
         *      1 : Result of function, 0 on success, otherwise error code
 | 
			
		||||
         */
 | 
			
		||||
        void UpdateConfigNANDSavegame(Kernel::HLERequestContext& ctx, u16 id);
 | 
			
		||||
        void UpdateConfigNANDSavegame(Kernel::HLERequestContext& ctx);
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * CFG::FormatConfig service function
 | 
			
		||||
| 
						 | 
				
			
			@ -279,12 +279,6 @@ public:
 | 
			
		|||
         */
 | 
			
		||||
        void FormatConfig(Kernel::HLERequestContext& ctx);
 | 
			
		||||
 | 
			
		||||
        /// A helper function for dispatching service functions that have multiple IDs
 | 
			
		||||
        template <void (Interface::*function)(Kernel::HLERequestContext& ctx, u16 id), u16 id>
 | 
			
		||||
        void D(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
            (this->*function)(ctx, id);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    protected:
 | 
			
		||||
        std::shared_ptr<Module> cfg;
 | 
			
		||||
    };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,50 +13,50 @@ CFG_I::CFG_I(std::shared_ptr<Module> cfg) : Module::Interface(std::move(cfg), "c
 | 
			
		|||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        // cfg common
 | 
			
		||||
        // clang-format off
 | 
			
		||||
        {IPC::MakeHeader(0x0001, 2, 2), &CFG_I::GetConfigInfoBlk2, "GetConfigInfoBlk2"},
 | 
			
		||||
        {IPC::MakeHeader(0x0002, 0, 0), &CFG_I::D<&CFG_I::SecureInfoGetRegion, 0x0002>, "SecureInfoGetRegion"},
 | 
			
		||||
        {IPC::MakeHeader(0x0003, 1, 0), &CFG_I::GenHashConsoleUnique, "GenHashConsoleUnique"},
 | 
			
		||||
        {IPC::MakeHeader(0x0004, 0, 0), &CFG_I::GetRegionCanadaUSA, "GetRegionCanadaUSA"},
 | 
			
		||||
        {IPC::MakeHeader(0x0005, 0, 0), &CFG_I::GetSystemModel, "GetSystemModel"},
 | 
			
		||||
        {IPC::MakeHeader(0x0006, 0, 0), &CFG_I::GetModelNintendo2DS, "GetModelNintendo2DS"},
 | 
			
		||||
        {IPC::MakeHeader(0x0007, 1, 0), nullptr, "WriteToFirstByteCfgSavegame"},
 | 
			
		||||
        {IPC::MakeHeader(0x0008, 2, 0), nullptr, "GoThroughTable"},
 | 
			
		||||
        {IPC::MakeHeader(0x0009, 1, 0), &CFG_I::GetCountryCodeString, "GetCountryCodeString"},
 | 
			
		||||
        {IPC::MakeHeader(0x000A, 1, 0), &CFG_I::GetCountryCodeID, "GetCountryCodeID"},
 | 
			
		||||
        {IPC::MakeHeader(0x000B, 0, 0), nullptr, "IsFangateSupported"},
 | 
			
		||||
        {0x0001, &CFG_I::GetConfigInfoBlk2, "GetConfigInfoBlk2"},
 | 
			
		||||
        {0x0002, &CFG_I::SecureInfoGetRegion, "SecureInfoGetRegion"},
 | 
			
		||||
        {0x0003, &CFG_I::GenHashConsoleUnique, "GenHashConsoleUnique"},
 | 
			
		||||
        {0x0004, &CFG_I::GetRegionCanadaUSA, "GetRegionCanadaUSA"},
 | 
			
		||||
        {0x0005, &CFG_I::GetSystemModel, "GetSystemModel"},
 | 
			
		||||
        {0x0006, &CFG_I::GetModelNintendo2DS, "GetModelNintendo2DS"},
 | 
			
		||||
        {0x0007, nullptr, "WriteToFirstByteCfgSavegame"},
 | 
			
		||||
        {0x0008, nullptr, "GoThroughTable"},
 | 
			
		||||
        {0x0009, &CFG_I::GetCountryCodeString, "GetCountryCodeString"},
 | 
			
		||||
        {0x000A, &CFG_I::GetCountryCodeID, "GetCountryCodeID"},
 | 
			
		||||
        {0x000B, nullptr, "IsFangateSupported"},
 | 
			
		||||
        // cfg:i
 | 
			
		||||
        {IPC::MakeHeader(0x0401, 2, 2), &CFG_I::D<&CFG_I::GetConfigInfoBlk8, 0x0401>, "GetConfigInfoBlk8"},
 | 
			
		||||
        {IPC::MakeHeader(0x0402, 2, 2), &CFG_I::D<&CFG_I::SetConfigInfoBlk4, 0x0402>, "SetConfigInfoBlk4"},
 | 
			
		||||
        {IPC::MakeHeader(0x0403, 0, 0), &CFG_I::D<&CFG_I::UpdateConfigNANDSavegame, 0x0403>, "UpdateConfigNANDSavegame"},
 | 
			
		||||
        {IPC::MakeHeader(0x0404, 1, 2), nullptr, "GetLocalFriendCodeSeedData"},
 | 
			
		||||
        {IPC::MakeHeader(0x0405, 0, 0), nullptr, "GetLocalFriendCodeSeed"},
 | 
			
		||||
        {IPC::MakeHeader(0x0406, 0, 0), &CFG_I::D<&CFG_I::SecureInfoGetRegion, 0x0406>, "SecureInfoGetRegion"},
 | 
			
		||||
        {IPC::MakeHeader(0x0407, 0, 0), &CFG_I::D<&CFG_I::SecureInfoGetByte101, 0x0407>, "SecureInfoGetByte101"},
 | 
			
		||||
        {IPC::MakeHeader(0x0408, 1, 2), nullptr, "SecureInfoGetSerialNo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0409, 0, 0), nullptr, "UpdateConfigBlk00040003"},
 | 
			
		||||
        {IPC::MakeHeader(0x0801, 2, 2), &CFG_I::D<&CFG_I::GetConfigInfoBlk8, 0x0801>, "GetConfigInfoBlk8"},
 | 
			
		||||
        {IPC::MakeHeader(0x0802, 2, 2), &CFG_I::D<&CFG_I::SetConfigInfoBlk4, 0x0802>, "SetConfigInfoBlk4"},
 | 
			
		||||
        {IPC::MakeHeader(0x0803, 0, 0), &CFG_I::D<&CFG_I::UpdateConfigNANDSavegame, 0x0803>, "UpdateConfigNANDSavegame"},
 | 
			
		||||
        {IPC::MakeHeader(0x0804, 3, 2), nullptr, "CreateConfigInfoBlk"},
 | 
			
		||||
        {IPC::MakeHeader(0x0805, 0, 0), nullptr, "DeleteConfigNANDSavefile"},
 | 
			
		||||
        {IPC::MakeHeader(0x0806, 0, 0), &CFG_I::FormatConfig, "FormatConfig"},
 | 
			
		||||
        {IPC::MakeHeader(0x0808, 0, 0), nullptr, "UpdateConfigBlk1"},
 | 
			
		||||
        {IPC::MakeHeader(0x0809, 0, 0), nullptr, "UpdateConfigBlk2"},
 | 
			
		||||
        {IPC::MakeHeader(0x080A, 0, 0), nullptr, "UpdateConfigBlk3"},
 | 
			
		||||
        {IPC::MakeHeader(0x080B, 2, 2), nullptr, "SetGetLocalFriendCodeSeedData"},
 | 
			
		||||
        {IPC::MakeHeader(0x080C, 1, 2), nullptr, "SetLocalFriendCodeSeedSignature"},
 | 
			
		||||
        {IPC::MakeHeader(0x080D, 0, 0), nullptr, "DeleteCreateNANDLocalFriendCodeSeed"},
 | 
			
		||||
        {IPC::MakeHeader(0x080E, 0, 0), nullptr, "VerifySigLocalFriendCodeSeed"},
 | 
			
		||||
        {IPC::MakeHeader(0x080F, 1, 2), nullptr, "GetLocalFriendCodeSeedData"},
 | 
			
		||||
        {IPC::MakeHeader(0x0810, 0, 0), nullptr, "GetLocalFriendCodeSeed"},
 | 
			
		||||
        {IPC::MakeHeader(0x0811, 2, 4), nullptr, "SetSecureInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0812, 0, 0), nullptr, "DeleteCreateNANDSecureInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0813, 0, 0), nullptr, "VerifySigSecureInfo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0814, 1, 2), nullptr, "SecureInfoGetData"},
 | 
			
		||||
        {IPC::MakeHeader(0x0815, 1, 2), nullptr, "SecureInfoGetSignature"},
 | 
			
		||||
        {IPC::MakeHeader(0x0816, 0, 0), &CFG_I::D<&CFG_I::SecureInfoGetRegion, 0x0816>, "SecureInfoGetRegion"},
 | 
			
		||||
        {IPC::MakeHeader(0x0817, 0, 0), &CFG_I::D<&CFG_I::SecureInfoGetByte101, 0x0817>, "SecureInfoGetByte101"},
 | 
			
		||||
        {IPC::MakeHeader(0x0818, 1, 2), nullptr, "SecureInfoGetSerialNo"},
 | 
			
		||||
        {0x0401, &CFG_I::GetConfigInfoBlk8, "GetConfigInfoBlk8"},
 | 
			
		||||
        {0x0402, &CFG_I::SetConfigInfoBlk4, "SetConfigInfoBlk4"},
 | 
			
		||||
        {0x0403, &CFG_I::UpdateConfigNANDSavegame, "UpdateConfigNANDSavegame"},
 | 
			
		||||
        {0x0404, nullptr, "GetLocalFriendCodeSeedData"},
 | 
			
		||||
        {0x0405, nullptr, "GetLocalFriendCodeSeed"},
 | 
			
		||||
        {0x0406, &CFG_I::SecureInfoGetRegion, "SecureInfoGetRegion"},
 | 
			
		||||
        {0x0407, &CFG_I::SecureInfoGetByte101, "SecureInfoGetByte101"},
 | 
			
		||||
        {0x0408, nullptr, "SecureInfoGetSerialNo"},
 | 
			
		||||
        {0x0409, nullptr, "UpdateConfigBlk00040003"},
 | 
			
		||||
        {0x0801, &CFG_I::GetConfigInfoBlk8, "GetConfigInfoBlk8"},
 | 
			
		||||
        {0x0802, &CFG_I::SetConfigInfoBlk4, "SetConfigInfoBlk4"},
 | 
			
		||||
        {0x0803, &CFG_I::UpdateConfigNANDSavegame, "UpdateConfigNANDSavegame"},
 | 
			
		||||
        {0x0804, nullptr, "CreateConfigInfoBlk"},
 | 
			
		||||
        {0x0805, nullptr, "DeleteConfigNANDSavefile"},
 | 
			
		||||
        {0x0806, &CFG_I::FormatConfig, "FormatConfig"},
 | 
			
		||||
        {0x0808, nullptr, "UpdateConfigBlk1"},
 | 
			
		||||
        {0x0809, nullptr, "UpdateConfigBlk2"},
 | 
			
		||||
        {0x080A, nullptr, "UpdateConfigBlk3"},
 | 
			
		||||
        {0x080B, nullptr, "SetGetLocalFriendCodeSeedData"},
 | 
			
		||||
        {0x080C, nullptr, "SetLocalFriendCodeSeedSignature"},
 | 
			
		||||
        {0x080D, nullptr, "DeleteCreateNANDLocalFriendCodeSeed"},
 | 
			
		||||
        {0x080E, nullptr, "VerifySigLocalFriendCodeSeed"},
 | 
			
		||||
        {0x080F, nullptr, "GetLocalFriendCodeSeedData"},
 | 
			
		||||
        {0x0810, nullptr, "GetLocalFriendCodeSeed"},
 | 
			
		||||
        {0x0811, nullptr, "SetSecureInfo"},
 | 
			
		||||
        {0x0812, nullptr, "DeleteCreateNANDSecureInfo"},
 | 
			
		||||
        {0x0813, nullptr, "VerifySigSecureInfo"},
 | 
			
		||||
        {0x0814, nullptr, "SecureInfoGetData"},
 | 
			
		||||
        {0x0815, nullptr, "SecureInfoGetSignature"},
 | 
			
		||||
        {0x0816, &CFG_I::SecureInfoGetRegion, "SecureInfoGetRegion"},
 | 
			
		||||
        {0x0817, &CFG_I::SecureInfoGetByte101, "SecureInfoGetByte101"},
 | 
			
		||||
        {0x0818, nullptr, "SecureInfoGetSerialNo"},
 | 
			
		||||
        // clang-format on
 | 
			
		||||
    };
 | 
			
		||||
    RegisterHandlers(functions);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,10 +12,10 @@ namespace Service::CFG {
 | 
			
		|||
CFG_NOR::CFG_NOR() : ServiceFramework("cfg:nor", 23) {
 | 
			
		||||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        // clang-format off
 | 
			
		||||
        {IPC::MakeHeader(0x0001, 1, 0), nullptr, "Initialize"},
 | 
			
		||||
        {IPC::MakeHeader(0x0002, 0, 0), nullptr, "Shutdown"},
 | 
			
		||||
        {IPC::MakeHeader(0x0005, 2, 2), nullptr, "ReadData"},
 | 
			
		||||
        {IPC::MakeHeader(0x0006, 2, 2), nullptr, "WriteData"},
 | 
			
		||||
        {0x0001, nullptr, "Initialize"},
 | 
			
		||||
        {0x0002, nullptr, "Shutdown"},
 | 
			
		||||
        {0x0005, nullptr, "ReadData"},
 | 
			
		||||
        {0x0006, nullptr, "WriteData"},
 | 
			
		||||
        // clang-format on
 | 
			
		||||
    };
 | 
			
		||||
    RegisterHandlers(functions);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,27 +13,27 @@ CFG_S::CFG_S(std::shared_ptr<Module> cfg) : Module::Interface(std::move(cfg), "c
 | 
			
		|||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        // cfg common
 | 
			
		||||
        // clang-format off
 | 
			
		||||
        {IPC::MakeHeader(0x0001, 2, 2), &CFG_S::GetConfigInfoBlk2, "GetConfigInfoBlk2"},
 | 
			
		||||
        {IPC::MakeHeader(0x0002, 0, 0), &CFG_S::D<&CFG_S::SecureInfoGetRegion, 0x0002>, "SecureInfoGetRegion"},
 | 
			
		||||
        {IPC::MakeHeader(0x0003, 1, 0), &CFG_S::GenHashConsoleUnique, "GenHashConsoleUnique"},
 | 
			
		||||
        {IPC::MakeHeader(0x0004, 0, 0), &CFG_S::GetRegionCanadaUSA, "GetRegionCanadaUSA"},
 | 
			
		||||
        {IPC::MakeHeader(0x0005, 0, 0), &CFG_S::GetSystemModel, "GetSystemModel"},
 | 
			
		||||
        {IPC::MakeHeader(0x0006, 0, 0), &CFG_S::GetModelNintendo2DS, "GetModelNintendo2DS"},
 | 
			
		||||
        {IPC::MakeHeader(0x0007, 1, 0), nullptr, "WriteToFirstByteCfgSavegame"},
 | 
			
		||||
        {IPC::MakeHeader(0x0008, 2, 0), nullptr, "GoThroughTable"},
 | 
			
		||||
        {IPC::MakeHeader(0x0009, 1, 0), &CFG_S::GetCountryCodeString, "GetCountryCodeString"},
 | 
			
		||||
        {IPC::MakeHeader(0x000A, 1, 0), &CFG_S::GetCountryCodeID, "GetCountryCodeID"},
 | 
			
		||||
        {IPC::MakeHeader(0x000B, 0, 0), nullptr, "IsFangateSupported"},
 | 
			
		||||
        {0x0001, &CFG_S::GetConfigInfoBlk2, "GetConfigInfoBlk2"},
 | 
			
		||||
        {0x0002, &CFG_S::SecureInfoGetRegion, "SecureInfoGetRegion"},
 | 
			
		||||
        {0x0003, &CFG_S::GenHashConsoleUnique, "GenHashConsoleUnique"},
 | 
			
		||||
        {0x0004, &CFG_S::GetRegionCanadaUSA, "GetRegionCanadaUSA"},
 | 
			
		||||
        {0x0005, &CFG_S::GetSystemModel, "GetSystemModel"},
 | 
			
		||||
        {0x0006, &CFG_S::GetModelNintendo2DS, "GetModelNintendo2DS"},
 | 
			
		||||
        {0x0007, nullptr, "WriteToFirstByteCfgSavegame"},
 | 
			
		||||
        {0x0008, nullptr, "GoThroughTable"},
 | 
			
		||||
        {0x0009, &CFG_S::GetCountryCodeString, "GetCountryCodeString"},
 | 
			
		||||
        {0x000A, &CFG_S::GetCountryCodeID, "GetCountryCodeID"},
 | 
			
		||||
        {0x000B, nullptr, "IsFangateSupported"},
 | 
			
		||||
        // cfg:s
 | 
			
		||||
        {IPC::MakeHeader(0x0401, 2, 2), &CFG_S::D<&CFG_S::GetConfigInfoBlk8, 0x0401>, "GetConfigInfoBlk8"},
 | 
			
		||||
        {IPC::MakeHeader(0x0402, 2, 2), &CFG_S::D<&CFG_S::SetConfigInfoBlk4, 0x0402>, "SetConfigInfoBlk4"},
 | 
			
		||||
        {IPC::MakeHeader(0x0403, 0, 0), &CFG_S::D<&CFG_S::UpdateConfigNANDSavegame, 0x0403>, "UpdateConfigNANDSavegame"},
 | 
			
		||||
        {IPC::MakeHeader(0x0404, 1, 2), nullptr, "GetLocalFriendCodeSeedData"},
 | 
			
		||||
        {IPC::MakeHeader(0x0405, 0, 0), nullptr, "GetLocalFriendCodeSeed"},
 | 
			
		||||
        {IPC::MakeHeader(0x0406, 0, 0), &CFG_S::D<&CFG_S::SecureInfoGetRegion, 0x0406>, "SecureInfoGetRegion"},
 | 
			
		||||
        {IPC::MakeHeader(0x0407, 0, 0), &CFG_S::D<&CFG_S::SecureInfoGetByte101, 0x0407>, "SecureInfoGetByte101"},
 | 
			
		||||
        {IPC::MakeHeader(0x0408, 1, 2), nullptr, "SecureInfoGetSerialNo"},
 | 
			
		||||
        {IPC::MakeHeader(0x0409, 0, 0), nullptr, "UpdateConfigBlk00040003"},
 | 
			
		||||
        {0x0401, &CFG_S::GetConfigInfoBlk8, "GetConfigInfoBlk8"},
 | 
			
		||||
        {0x0402, &CFG_S::SetConfigInfoBlk4, "SetConfigInfoBlk4"},
 | 
			
		||||
        {0x0403, &CFG_S::UpdateConfigNANDSavegame, "UpdateConfigNANDSavegame"},
 | 
			
		||||
        {0x0404, nullptr, "GetLocalFriendCodeSeedData"},
 | 
			
		||||
        {0x0405, nullptr, "GetLocalFriendCodeSeed"},
 | 
			
		||||
        {0x0406, &CFG_S::SecureInfoGetRegion, "SecureInfoGetRegion"},
 | 
			
		||||
        {0x0407, &CFG_S::SecureInfoGetByte101, "SecureInfoGetByte101"},
 | 
			
		||||
        {0x0408, nullptr, "SecureInfoGetSerialNo"},
 | 
			
		||||
        {0x0409, nullptr, "UpdateConfigBlk00040003"},
 | 
			
		||||
        // clang-format on
 | 
			
		||||
    };
 | 
			
		||||
    RegisterHandlers(functions);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,17 +13,17 @@ CFG_U::CFG_U(std::shared_ptr<Module> cfg) : Module::Interface(std::move(cfg), "c
 | 
			
		|||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        // cfg common
 | 
			
		||||
        // clang-format off
 | 
			
		||||
        {IPC::MakeHeader(0x0001, 2, 2), &CFG_U::GetConfigInfoBlk2, "GetConfigInfoBlk2"},
 | 
			
		||||
        {IPC::MakeHeader(0x0002, 0, 0), &CFG_U::D<&CFG_U::SecureInfoGetRegion, 0x0002>, "SecureInfoGetRegion"},
 | 
			
		||||
        {IPC::MakeHeader(0x0003, 1, 0), &CFG_U::GenHashConsoleUnique, "GenHashConsoleUnique"},
 | 
			
		||||
        {IPC::MakeHeader(0x0004, 0, 0), &CFG_U::GetRegionCanadaUSA, "GetRegionCanadaUSA"},
 | 
			
		||||
        {IPC::MakeHeader(0x0005, 0, 0), &CFG_U::GetSystemModel, "GetSystemModel"},
 | 
			
		||||
        {IPC::MakeHeader(0x0006, 0, 0), &CFG_U::GetModelNintendo2DS, "GetModelNintendo2DS"},
 | 
			
		||||
        {IPC::MakeHeader(0x0007, 1, 0), nullptr, "WriteToFirstByteCfgSavegame"},
 | 
			
		||||
        {IPC::MakeHeader(0x0008, 2, 0), nullptr, "GoThroughTable"},
 | 
			
		||||
        {IPC::MakeHeader(0x0009, 1, 0), &CFG_U::GetCountryCodeString, "GetCountryCodeString"},
 | 
			
		||||
        {IPC::MakeHeader(0x000A, 1, 0), &CFG_U::GetCountryCodeID, "GetCountryCodeID"},
 | 
			
		||||
        {IPC::MakeHeader(0x000B, 0, 0), nullptr, "IsFangateSupported"},
 | 
			
		||||
        {0x0001, &CFG_U::GetConfigInfoBlk2, "GetConfigInfoBlk2"},
 | 
			
		||||
        {0x0002, &CFG_U::SecureInfoGetRegion, "SecureInfoGetRegion"},
 | 
			
		||||
        {0x0003, &CFG_U::GenHashConsoleUnique, "GenHashConsoleUnique"},
 | 
			
		||||
        {0x0004, &CFG_U::GetRegionCanadaUSA, "GetRegionCanadaUSA"},
 | 
			
		||||
        {0x0005, &CFG_U::GetSystemModel, "GetSystemModel"},
 | 
			
		||||
        {0x0006, &CFG_U::GetModelNintendo2DS, "GetModelNintendo2DS"},
 | 
			
		||||
        {0x0007, nullptr, "WriteToFirstByteCfgSavegame"},
 | 
			
		||||
        {0x0008, nullptr, "GoThroughTable"},
 | 
			
		||||
        {0x0009, &CFG_U::GetCountryCodeString, "GetCountryCodeString"},
 | 
			
		||||
        {0x000A, &CFG_U::GetCountryCodeID, "GetCountryCodeID"},
 | 
			
		||||
        {0x000B, nullptr, "IsFangateSupported"},
 | 
			
		||||
        // clang-format on
 | 
			
		||||
    };
 | 
			
		||||
    RegisterHandlers(functions);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue