mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	added config_mem module for HLE of firmware configuration memory settings
This commit is contained in:
		
							parent
							
								
									d1472b816f
								
							
						
					
					
						commit
						34dc0a9b07
					
				
					 5 changed files with 100 additions and 0 deletions
				
			
		|  | @ -19,6 +19,7 @@ set(SRCS    core.cpp | ||||||
|             file_sys/directory_file_system.cpp |             file_sys/directory_file_system.cpp | ||||||
|             file_sys/meta_file_system.cpp |             file_sys/meta_file_system.cpp | ||||||
|             hle/hle.cpp |             hle/hle.cpp | ||||||
|  |             hle/config_mem.cpp | ||||||
|             hle/coprocessor.cpp |             hle/coprocessor.cpp | ||||||
|             hle/syscall.cpp |             hle/syscall.cpp | ||||||
|             hle/service/apt.cpp |             hle/service/apt.cpp | ||||||
|  |  | ||||||
|  | @ -153,6 +153,7 @@ | ||||||
|     <ClCompile Include="elf\elf_reader.cpp" /> |     <ClCompile Include="elf\elf_reader.cpp" /> | ||||||
|     <ClCompile Include="file_sys\directory_file_system.cpp" /> |     <ClCompile Include="file_sys\directory_file_system.cpp" /> | ||||||
|     <ClCompile Include="file_sys\meta_file_system.cpp" /> |     <ClCompile Include="file_sys\meta_file_system.cpp" /> | ||||||
|  |     <ClCompile Include="hle\config_mem.cpp" /> | ||||||
|     <ClCompile Include="hle\coprocessor.cpp" /> |     <ClCompile Include="hle\coprocessor.cpp" /> | ||||||
|     <ClCompile Include="hle\hle.cpp" /> |     <ClCompile Include="hle\hle.cpp" /> | ||||||
|     <ClCompile Include="hle\service\apt.cpp" /> |     <ClCompile Include="hle\service\apt.cpp" /> | ||||||
|  | @ -193,6 +194,7 @@ | ||||||
|     <ClInclude Include="file_sys\directory_file_system.h" /> |     <ClInclude Include="file_sys\directory_file_system.h" /> | ||||||
|     <ClInclude Include="file_sys\file_sys.h" /> |     <ClInclude Include="file_sys\file_sys.h" /> | ||||||
|     <ClInclude Include="file_sys\meta_file_system.h" /> |     <ClInclude Include="file_sys\meta_file_system.h" /> | ||||||
|  |     <ClInclude Include="hle\config_mem.h" /> | ||||||
|     <ClInclude Include="hle\coprocessor.h" /> |     <ClInclude Include="hle\coprocessor.h" /> | ||||||
|     <ClInclude Include="hle\function_wrappers.h" /> |     <ClInclude Include="hle\function_wrappers.h" /> | ||||||
|     <ClInclude Include="hle\hle.h" /> |     <ClInclude Include="hle\hle.h" /> | ||||||
|  |  | ||||||
|  | @ -111,6 +111,9 @@ | ||||||
|     <ClCompile Include="hle\coprocessor.cpp"> |     <ClCompile Include="hle\coprocessor.cpp"> | ||||||
|       <Filter>hle</Filter> |       <Filter>hle</Filter> | ||||||
|     </ClCompile> |     </ClCompile> | ||||||
|  |     <ClCompile Include="hle\config_mem.cpp"> | ||||||
|  |       <Filter>hle</Filter> | ||||||
|  |     </ClCompile> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ClInclude Include="arm\disassembler\arm_disasm.h"> |     <ClInclude Include="arm\disassembler\arm_disasm.h"> | ||||||
|  | @ -217,6 +220,9 @@ | ||||||
|     <ClInclude Include="hle\coprocessor.h"> |     <ClInclude Include="hle\coprocessor.h"> | ||||||
|       <Filter>hle</Filter> |       <Filter>hle</Filter> | ||||||
|     </ClInclude> |     </ClInclude> | ||||||
|  |     <ClInclude Include="hle\config_mem.h"> | ||||||
|  |       <Filter>hle</Filter> | ||||||
|  |     </ClInclude> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <Text Include="CMakeLists.txt" /> |     <Text Include="CMakeLists.txt" /> | ||||||
|  |  | ||||||
							
								
								
									
										70
									
								
								src/core/hle/config_mem.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								src/core/hle/config_mem.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,70 @@ | ||||||
|  | // Copyright 2014 Citra Emulator Project
 | ||||||
|  | // Licensed under GPLv2
 | ||||||
|  | // Refer to the license.txt file included.  
 | ||||||
|  | 
 | ||||||
|  | #include "common/common_types.h" | ||||||
|  | #include "common/log.h" | ||||||
|  | 
 | ||||||
|  | #include "core/hle/config_mem.h" | ||||||
|  | 
 | ||||||
|  | ////////////////////////////////////////////////////////////////////////////////////////////////////
 | ||||||
|  | 
 | ||||||
|  | namespace ConfigMem { | ||||||
|  | 
 | ||||||
|  | enum { | ||||||
|  |     KERNEL_VERSIONREVISION  = 0x1FF80001, | ||||||
|  |     KERNEL_VERSIONMINOR     = 0x1FF80002, | ||||||
|  |     KERNEL_VERSIONMAJOR     = 0x1FF80003, | ||||||
|  |     UPDATEFLAG              = 0x1FF80004, | ||||||
|  |     NSTID                   = 0x1FF80008, | ||||||
|  |     SYSCOREVER              = 0x1FF80010, | ||||||
|  |     UNITINFO                = 0x1FF80014, | ||||||
|  |     KERNEL_CTRSDKVERSION    = 0x1FF80018, | ||||||
|  |     APPMEMTYPE              = 0x1FF80030, | ||||||
|  |     APPMEMALLOC             = 0x1FF80040, | ||||||
|  |     FIRM_VERSIONREVISION    = 0x1FF80061, | ||||||
|  |     FIRM_VERSIONMINOR       = 0x1FF80062, | ||||||
|  |     FIRM_VERSIONMAJOR       = 0x1FF80063, | ||||||
|  |     FIRM_SYSCOREVER         = 0x1FF80064, | ||||||
|  |     FIRM_CTRSDKVERSION      = 0x1FF80068, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | template <typename T> | ||||||
|  | inline void Read(T &var, const u32 addr) { | ||||||
|  |     switch (addr) { | ||||||
|  | 
 | ||||||
|  |     // Bit 0 set for Retail
 | ||||||
|  |     case UNITINFO: | ||||||
|  |         var = 0x00000001; | ||||||
|  |         break; | ||||||
|  | 
 | ||||||
|  |     // Set app memory size to 64MB?
 | ||||||
|  |     case APPMEMALLOC: | ||||||
|  |         var = 0x04000000; | ||||||
|  |         break; | ||||||
|  | 
 | ||||||
|  |     // Unknown - normally set to: 0x08000000 - (APPMEMALLOC + *0x1FF80048)
 | ||||||
|  |     // (Total FCRAM size - APPMEMALLOC - *0x1FF80048)
 | ||||||
|  |     case 0x1FF80044: | ||||||
|  |         var = 0x08000000 - (0x04000000 + 0x1400000); | ||||||
|  |         break; | ||||||
|  | 
 | ||||||
|  |     // Unknown - normally set to: 0x1400000 (20MB)
 | ||||||
|  |     case 0x1FF80048: | ||||||
|  |         var = 0x1400000; | ||||||
|  |         break; | ||||||
|  | 
 | ||||||
|  |     default: | ||||||
|  |         ERROR_LOG(HLE, "unknown ConfigMem::Read%d @ 0x%08X", sizeof(var) * 8, addr); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Explicitly instantiate template functions because we aren't defining this in the header:
 | ||||||
|  | 
 | ||||||
|  | template void Read<u64>(u64 &var, const u32 addr); | ||||||
|  | template void Read<u32>(u32 &var, const u32 addr); | ||||||
|  | template void Read<u16>(u16 &var, const u32 addr); | ||||||
|  | template void Read<u8>(u8 &var, const u32 addr); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | } // namespace
 | ||||||
							
								
								
									
										21
									
								
								src/core/hle/config_mem.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/core/hle/config_mem.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | ||||||
|  | // Copyright 2014 Citra Emulator Project
 | ||||||
|  | // Licensed under GPLv2
 | ||||||
|  | // Refer to the license.txt file included.  
 | ||||||
|  | 
 | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | // Configuration memory stores various hardware/kernel configuration settings. This memory page is 
 | ||||||
|  | // read-only for ARM11 processes. I'm guessing this would normally be written to by the firmware/
 | ||||||
|  | // bootrom. Because we're not emulating this, and essentially just "stubbing" the functionality, I'm
 | ||||||
|  | // putting this as a subset of HLE for now.
 | ||||||
|  | 
 | ||||||
|  | #include "common/common_types.h" | ||||||
|  | 
 | ||||||
|  | ////////////////////////////////////////////////////////////////////////////////////////////////////
 | ||||||
|  | 
 | ||||||
|  | namespace ConfigMem { | ||||||
|  | 
 | ||||||
|  | template <typename T> | ||||||
|  | inline void Read(T &var, const u32 addr); | ||||||
|  | 
 | ||||||
|  | } // namespace
 | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue