mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	Core: Cleaned up SingleStep(), updated default LCD refresh to assume each instruction is ~3 cycles
This commit is contained in:
		
							parent
							
								
									3449aaa350
								
							
						
					
					
						commit
						0deeda54ee
					
				
					 2 changed files with 14 additions and 12 deletions
				
			
		|  | @ -18,14 +18,15 @@ | |||
| 
 | ||||
| namespace Core { | ||||
| 
 | ||||
| ARM_Disasm*     g_disasm    = NULL; ///< ARM disassembler
 | ||||
| ARM_Interface*  g_app_core  = NULL; ///< ARM11 application core
 | ||||
| ARM_Interface*  g_sys_core  = NULL; ///< ARM11 system (OS) core
 | ||||
| u64             g_last_ticks    = 0;    ///< Last CPU ticks
 | ||||
| ARM_Disasm*     g_disasm        = NULL; ///< ARM disassembler
 | ||||
| ARM_Interface*  g_app_core      = NULL; ///< ARM11 application core
 | ||||
| ARM_Interface*  g_sys_core      = NULL; ///< ARM11 system (OS) core
 | ||||
| 
 | ||||
| /// Run the core CPU loop
 | ||||
| void RunLoop() { | ||||
|     for (;;){ | ||||
|         g_app_core->Run(LCD::kFrameTicks / 3); | ||||
|         g_app_core->Run(LCD::kFrameTicks); | ||||
|         HW::Update(); | ||||
|         Kernel::Reschedule(); | ||||
|     } | ||||
|  | @ -33,16 +34,14 @@ void RunLoop() { | |||
| 
 | ||||
| /// Step the CPU one instruction
 | ||||
| void SingleStep() { | ||||
|     static int ticks = 0; | ||||
| 
 | ||||
|     g_app_core->Step(); | ||||
|      | ||||
|     if ((ticks >= LCD::kFrameTicks / 3) || HLE::g_reschedule) { | ||||
| 
 | ||||
|     // Update and reschedule after approx. 1 frame
 | ||||
|     u64 current_ticks = Core::g_app_core->GetTicks(); | ||||
|     if ((current_ticks - g_last_ticks) >= LCD::kFrameTicks || HLE::g_reschedule) { | ||||
|         g_last_ticks = current_ticks; | ||||
|         HW::Update(); | ||||
|         Kernel::Reschedule(); | ||||
|         ticks = 0; | ||||
|     } else { | ||||
|         ticks++; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | @ -64,6 +63,8 @@ int Init() { | |||
|     g_app_core = new ARM_Interpreter(); | ||||
|     g_sys_core = new ARM_Interpreter(); | ||||
| 
 | ||||
|     g_last_ticks = Core::g_app_core->GetTicks(); | ||||
| 
 | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -8,7 +8,8 @@ | |||
| 
 | ||||
| namespace LCD { | ||||
| 
 | ||||
| static const u32 kFrameTicks = 268123480 / 60;  ///< 268MHz / 60 frames per second
 | ||||
| static const u32 kFrameCycles   = 268123480 / 60;   ///< 268MHz / 60 frames per second
 | ||||
| static const u32 kFrameTicks    = kFrameCycles / 3; ///< Approximate number of instructions/frame
 | ||||
| 
 | ||||
| struct Registers { | ||||
|     u32 framebuffer_top_left_1; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue