mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	Merge pull request #1921 from Subv/fs_funcs
HLE/FS: Document some command parameters and implemented command 0x08560240
This commit is contained in:
		
						commit
						ff2d1a2b74
					
				
					 1 changed files with 42 additions and 11 deletions
				
			
		|  | @ -645,20 +645,19 @@ static void DeleteSystemSaveData(Service::Interface* self) { | ||||||
|  * FS_User::CreateSystemSaveData service function. |  * FS_User::CreateSystemSaveData service function. | ||||||
|  *  Inputs: |  *  Inputs: | ||||||
|  *      0 : 0x08560240 |  *      0 : 0x08560240 | ||||||
|  *      1 : High word of the SystemSaveData id to create |  *      1 : u8 MediaType of the system save data | ||||||
|  *      2 : Low word of the SystemSaveData id to create |  *      2 : SystemSaveData id to create | ||||||
|  *      3 : Unknown |  *      3 : Total size | ||||||
|  *      4 : Unknown |  *      4 : Block size | ||||||
|  *      5 : Unknown |  *      5 : Number of directories | ||||||
|  *      6 : Unknown |  *      6 : Number of files | ||||||
|  *      7 : Unknown |  *      7 : Directory bucket count | ||||||
|  *      8 : Unknown |  *      8 : File bucket count | ||||||
|  *      9 : Unknown (Memory address) |  *      9 : u8 Whether to duplicate data or not | ||||||
|  *  Outputs: |  *  Outputs: | ||||||
|  *      1 : Result of function, 0 on success, otherwise error code |  *      1 : Result of function, 0 on success, otherwise error code | ||||||
|  */ |  */ | ||||||
| static void CreateSystemSaveData(Service::Interface* self) { | static void CreateSystemSaveData(Service::Interface* self) { | ||||||
|     // TODO(Subv): Figure out the other parameters.
 |  | ||||||
|     u32* cmd_buff = Kernel::GetCommandBuffer(); |     u32* cmd_buff = Kernel::GetCommandBuffer(); | ||||||
|     u32 savedata_high = cmd_buff[1]; |     u32 savedata_high = cmd_buff[1]; | ||||||
|     u32 savedata_low = cmd_buff[2]; |     u32 savedata_low = cmd_buff[2]; | ||||||
|  | @ -671,6 +670,38 @@ static void CreateSystemSaveData(Service::Interface* self) { | ||||||
|     cmd_buff[1] = CreateSystemSaveData(savedata_high, savedata_low).raw; |     cmd_buff[1] = CreateSystemSaveData(savedata_high, savedata_low).raw; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /**
 | ||||||
|  |  * FS_User::CreateLegacySystemSaveData service function. | ||||||
|  |  *  This function appears to be obsolete and seems to have been replaced by | ||||||
|  |  *  command 0x08560240 (CreateSystemSaveData). | ||||||
|  |  * | ||||||
|  |  *  Inputs: | ||||||
|  |  *      0 : 0x08100200 | ||||||
|  |  *      1 : SystemSaveData id to create | ||||||
|  |  *      2 : Total size | ||||||
|  |  *      3 : Block size | ||||||
|  |  *      4 : Number of directories | ||||||
|  |  *      5 : Number of files | ||||||
|  |  *      6 : Directory bucket count | ||||||
|  |  *      7 : File bucket count | ||||||
|  |  *      8 : u8 Duplicate data | ||||||
|  |  *  Outputs: | ||||||
|  |  *      1 : Result of function, 0 on success, otherwise error code | ||||||
|  |  */ | ||||||
|  | static void CreateLegacySystemSaveData(Service::Interface* self) { | ||||||
|  |     u32* cmd_buff = Kernel::GetCommandBuffer(); | ||||||
|  |     u32 savedata_id = cmd_buff[1]; | ||||||
|  | 
 | ||||||
|  |     LOG_WARNING(Service_FS, "(STUBBED) savedata_id=%08X cmd_buff[3]=%08X " | ||||||
|  |             "cmd_buff[4]=%08X cmd_buff[5]=%08X cmd_buff[6]=%08X cmd_buff[7]=%08X cmd_buff[8]=%08X " | ||||||
|  |             "cmd_buff[9]=%08X", savedata_id, cmd_buff[3], cmd_buff[4], cmd_buff[5], | ||||||
|  |             cmd_buff[6], cmd_buff[7], cmd_buff[8], cmd_buff[9]); | ||||||
|  | 
 | ||||||
|  |     cmd_buff[0] = IPC::MakeHeader(0x810, 0x1, 0); | ||||||
|  |     // With this command, the SystemSaveData always has save_high = 0 (Always created in the NAND)
 | ||||||
|  |     cmd_buff[1] = CreateSystemSaveData(0, savedata_id).raw; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /**
 | /**
 | ||||||
|  * FS_User::InitializeWithSdkVersion service function. |  * FS_User::InitializeWithSdkVersion service function. | ||||||
|  *  Inputs: |  *  Inputs: | ||||||
|  | @ -820,7 +851,7 @@ const Interface::FunctionInfo FunctionTable[] = { | ||||||
|     {0x080D0144, nullptr,                  "ControlArchive"}, |     {0x080D0144, nullptr,                  "ControlArchive"}, | ||||||
|     {0x080E0080, CloseArchive,             "CloseArchive"}, |     {0x080E0080, CloseArchive,             "CloseArchive"}, | ||||||
|     {0x080F0180, FormatThisUserSaveData,   "FormatThisUserSaveData"}, |     {0x080F0180, FormatThisUserSaveData,   "FormatThisUserSaveData"}, | ||||||
|     {0x08100200, nullptr,                  "CreateSystemSaveData"}, |     {0x08100200, CreateLegacySystemSaveData, "CreateLegacySystemSaveData"}, | ||||||
|     {0x08110040, nullptr,                  "DeleteSystemSaveData"}, |     {0x08110040, nullptr,                  "DeleteSystemSaveData"}, | ||||||
|     {0x08120080, GetFreeBytes,             "GetFreeBytes"}, |     {0x08120080, GetFreeBytes,             "GetFreeBytes"}, | ||||||
|     {0x08130000, nullptr,                  "GetCardType"}, |     {0x08130000, nullptr,                  "GetCardType"}, | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue