mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 22:00:05 +00:00 
			
		
		
		
	Loader: Added support for loading raw BIN executables.
- Useful for debugging homebrew Qt: Updated GUI to support loading .bin files.
This commit is contained in:
		
							parent
							
								
									304999dfeb
								
							
						
					
					
						commit
						6966fdf025
					
				
					 3 changed files with 22 additions and 1 deletions
				
			
		|  | @ -150,7 +150,7 @@ void GMainWindow::BootGame(std::string filename) | |||
| 
 | ||||
| void GMainWindow::OnMenuLoadFile() | ||||
| { | ||||
|     QString filename = QFileDialog::getOpenFileName(this, tr("Load file"), QString(), tr("3DS executable (*.elf *.axf *.cci *.cxi)")); | ||||
|     QString filename = QFileDialog::getOpenFileName(this, tr("Load file"), QString(), tr("3DS executable (*.elf *.axf *.bin *.cci *.cxi)")); | ||||
|     if (filename.size()) | ||||
|        BootGame(filename.toLatin1().data()); | ||||
| } | ||||
|  |  | |||
|  | @ -9,6 +9,7 @@ | |||
| #include "core/loader/elf.h" | ||||
| #include "core/loader/ncch.h" | ||||
| #include "core/hle/kernel/archive.h" | ||||
| #include "core/mem_map.h" | ||||
| 
 | ||||
| ////////////////////////////////////////////////////////////////////////////////////////////////////
 | ||||
| 
 | ||||
|  | @ -39,6 +40,9 @@ FileType IdentifyFile(const std::string &filename) { | |||
|     else if (!strcasecmp(extension.c_str(), ".cci")) { | ||||
|         return FileType::CCI; // TODO(bunnei): Do some filetype checking :p
 | ||||
|     } | ||||
|     else if (!strcasecmp(extension.c_str(), ".bin")) { | ||||
|         return FileType::BIN; // TODO(bunnei): Do some filetype checking :p
 | ||||
|     } | ||||
|     return FileType::Unknown; | ||||
| } | ||||
| 
 | ||||
|  | @ -69,6 +73,22 @@ ResultStatus LoadFile(const std::string& filename) { | |||
|         break; | ||||
|     } | ||||
| 
 | ||||
|     // Raw BIN file format...
 | ||||
|     case FileType::BIN: | ||||
|     { | ||||
|         INFO_LOG(LOADER, "Loading BIN file %s...", filename.c_str()); | ||||
| 
 | ||||
|         File::IOFile file(filename, "rb"); | ||||
| 
 | ||||
|         if (file.IsOpen()) { | ||||
|             file.ReadBytes(Memory::GetPointer(Memory::EXEFS_CODE_VADDR), (size_t)file.GetSize()); | ||||
|             Kernel::LoadExec(Memory::EXEFS_CODE_VADDR); | ||||
|         } else { | ||||
|             return ResultStatus::Error; | ||||
|         } | ||||
|         return ResultStatus::Success; | ||||
|     } | ||||
| 
 | ||||
|     // Error occurred durring IdentifyFile...
 | ||||
|     case FileType::Error: | ||||
| 
 | ||||
|  |  | |||
|  | @ -21,6 +21,7 @@ enum class FileType { | |||
|     CXI, | ||||
|     CIA, | ||||
|     ELF, | ||||
|     BIN, | ||||
| }; | ||||
| 
 | ||||
| /// Return type for functions in Loader namespace
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue