Core: Refactor core to use only one function for execution.
Core: Cleaned up comment to be more readable. Citra: Changed loop to be more readable.
This commit is contained in:
		
							parent
							
								
									738b88293c
								
							
						
					
					
						commit
						eb36d3fc90
					
				@ -31,7 +31,9 @@ int __cdecl main(int argc, char **argv) {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Core::RunLoop();
 | 
			
		||||
    while(true) {
 | 
			
		||||
        Core::RunLoop();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    delete emu_window;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,8 @@
 | 
			
		||||
#include "common/log.h"
 | 
			
		||||
#include "common/symbols.h"
 | 
			
		||||
 | 
			
		||||
#include "video_core/video_core.h"
 | 
			
		||||
 | 
			
		||||
#include "core/core.h"
 | 
			
		||||
#include "core/mem_map.h"
 | 
			
		||||
#include "core/hw/hw.h"
 | 
			
		||||
@ -24,29 +26,17 @@ ARM_Interface*  g_app_core      = nullptr;  ///< ARM11 application core
 | 
			
		||||
ARM_Interface*  g_sys_core      = nullptr;  ///< ARM11 system (OS) core
 | 
			
		||||
 | 
			
		||||
/// Run the core CPU loop
 | 
			
		||||
void RunLoop() {
 | 
			
		||||
    for (;;){
 | 
			
		||||
        // This function loops for 100 instructions in the CPU before trying to update hardware.
 | 
			
		||||
        // This is a little bit faster than SingleStep, and should be pretty much equivalent. The 
 | 
			
		||||
        // number of instructions chosen is fairly arbitrary, however a large number will more 
 | 
			
		||||
        // drastically affect the frequency of GSP interrupts and likely break things. The point of
 | 
			
		||||
        // this is to just loop in the CPU for more than 1 instruction to reduce overhead and make
 | 
			
		||||
        // it a little bit faster...
 | 
			
		||||
        g_app_core->Run(100);
 | 
			
		||||
        HW::Update();
 | 
			
		||||
        if (HLE::g_reschedule) {
 | 
			
		||||
            Kernel::Reschedule();
 | 
			
		||||
        }
 | 
			
		||||
void RunLoop(int tight_loop) {
 | 
			
		||||
    g_app_core->Run(tight_loop);
 | 
			
		||||
    HW::Update();
 | 
			
		||||
    if (HLE::g_reschedule) {
 | 
			
		||||
        Kernel::Reschedule();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Step the CPU one instruction
 | 
			
		||||
void SingleStep() {
 | 
			
		||||
    g_app_core->Step();
 | 
			
		||||
    HW::Update();
 | 
			
		||||
    if (HLE::g_reschedule) {
 | 
			
		||||
        Kernel::Reschedule();
 | 
			
		||||
    }
 | 
			
		||||
    RunLoop(1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Halt the core
 | 
			
		||||
 | 
			
		||||
@ -19,8 +19,15 @@ extern ARM_Interface*   g_sys_core;     ///< ARM11 system (OS) core
 | 
			
		||||
/// Start the core
 | 
			
		||||
void Start();
 | 
			
		||||
 | 
			
		||||
/// Run the core CPU loop
 | 
			
		||||
void RunLoop();
 | 
			
		||||
/**
 | 
			
		||||
 * Run the core CPU loop
 | 
			
		||||
 * This function loops for 100 instructions in the CPU before trying to update hardware. This is a
 | 
			
		||||
 * little bit faster than SingleStep, and should be pretty much equivalent. The number of
 | 
			
		||||
 * instructions chosen is fairly arbitrary, however a large number will more drastically affect the
 | 
			
		||||
 * frequency of GSP interrupts and likely break things. The point of this is to just loop in the CPU
 | 
			
		||||
 * for more than 1 instruction to reduce overhead and make it a little bit faster...
 | 
			
		||||
 */
 | 
			
		||||
void RunLoop(int tight_loop=100);
 | 
			
		||||
 | 
			
		||||
/// Step the CPU one instruction
 | 
			
		||||
void SingleStep();
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user