diff --git a/src/common/common.vcxproj b/src/common/common.vcxproj index 1f5c714c3..e6fb5bc1d 100644 --- a/src/common/common.vcxproj +++ b/src/common/common.vcxproj @@ -219,7 +219,11 @@ + + + + - + \ No newline at end of file diff --git a/src/common/common.vcxproj.filters b/src/common/common.vcxproj.filters index e8c4ce360..f1a5a3b51 100644 --- a/src/common/common.vcxproj.filters +++ b/src/common/common.vcxproj.filters @@ -30,18 +30,18 @@ + + + - - - @@ -56,14 +56,18 @@ + + - - - + + + + + \ No newline at end of file diff --git a/src/core/core.cpp b/src/core/core.cpp index d366498a5..7dc0809d0 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -9,7 +9,7 @@ #include "core/core.h" #include "core/mem_map.h" #include "core/hw/hw.h" -#include "core/hw/lcd.h" +#include "core/hw/gpu.h" #include "core/arm/disassembler/arm_disasm.h" #include "core/arm/interpreter/arm_interpreter.h" @@ -26,7 +26,7 @@ ARM_Interface* g_sys_core = nullptr; ///< ARM11 system (OS) core /// Run the core CPU loop void RunLoop() { for (;;){ - g_app_core->Run(LCD::kFrameTicks); + g_app_core->Run(GPU::kFrameTicks); HW::Update(); Kernel::Reschedule(); } @@ -38,7 +38,7 @@ void SingleStep() { // 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) { + if ((current_ticks - g_last_ticks) >= GPU::kFrameTicks || HLE::g_reschedule) { g_last_ticks = current_ticks; HW::Update(); Kernel::Reschedule(); diff --git a/src/core/core.vcxproj b/src/core/core.vcxproj index 512bce365..8f3561653 100644 --- a/src/core/core.vcxproj +++ b/src/core/core.vcxproj @@ -191,9 +191,9 @@ + - @@ -244,9 +244,9 @@ + - @@ -257,4 +257,4 @@ - + \ No newline at end of file diff --git a/src/core/core.vcxproj.filters b/src/core/core.vcxproj.filters index b443582b4..33b00ab90 100644 --- a/src/core/core.vcxproj.filters +++ b/src/core/core.vcxproj.filters @@ -1,324 +1,111 @@  - - {b84ab55c-588b-45f0-a5ba-f9ebb0442f13} - - - {61100188-a726-4024-ab16-95ee242b446e} - - - {7f618562-73d1-4f55-9628-887497c27654} - - - {cca8b763-8a80-4478-9bcc-3c979293c357} - - - {d1158fc4-3e0f-431f-9d3b-f30bbfeb4ad5} - - - {7ae34319-6d72-4d12-bc62-9b438ba9241f} - - - {8b62769e-3e2a-4a57-a7bc-b3b2933c2bc7} - - - {812c5189-ca49-4704-b842-3ffad09092d3} - - - {de62238f-a28e-4a33-8495-23fed6784588} - - - {13ef9860-2ba0-47e9-a93d-b4052adab269} - - - {8089d94b-5faa-43dc-854b-ffd2fa2e7fe3} - - - - - arm\disassembler - - - arm\interpreter - - - arm\interpreter - - - arm\interpreter - - - arm\interpreter - - - arm\interpreter - - - arm\interpreter - - - arm\interpreter - - - arm\interpreter - - - file_sys - - - file_sys - - - hw - - - elf - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - hle - - - hle\service - - - hle\service - - - hle\service - - - hle\service - - - hle\service - - - hw - - - hw - - - arm\disassembler - - - hle - - - hle - - - arm\interpreter\vfp - - - arm\interpreter\vfp - - - arm\interpreter\vfp - - - arm\interpreter\vfp - - - arm\interpreter\mmu - - - arm\interpreter\mmu - - - arm\interpreter\mmu - - - arm\interpreter\mmu - - - arm\interpreter\mmu - - - arm\interpreter\mmu - - - arm\interpreter\mmu - - - arm\interpreter\mmu - - - hle\kernel - - - hle\kernel - - - hle - - - hle\kernel - - - arm\interpreter - - - hw - - hle\kernel - - - hle\kernel - - hle\service - - - arm\disassembler - - - arm\interpreter - - - arm\interpreter - - - arm\interpreter - - - arm\interpreter - - - arm\interpreter - - - arm\interpreter - - - arm\interpreter - - - arm\interpreter - - - file_sys - - - file_sys - - - file_sys - - - hw - - - elf - - - elf - - - arm - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - hle - - - hle - - - hle\service - - - hle\service - - - hle\service - - - hle\service - - - hle\service - - - hw - - - hw - - - arm\disassembler - - - hle - - - hle - - - arm\interpreter\vfp - - - arm\interpreter\vfp - - - arm\interpreter\vfp - - - arm\interpreter\mmu - - - arm\interpreter\mmu - - - arm\interpreter\mmu - - - arm\interpreter\mmu - - - arm\interpreter\mmu - - - arm\interpreter\mmu - - - hle\kernel - - - hle\kernel - - - hle - - - hle\kernel - - - hle\kernel - - - hle\service - - - hw - - - hle\kernel - - + \ No newline at end of file diff --git a/src/core/hle/function_wrappers.h b/src/core/hle/function_wrappers.h index 0bed78653..f9a64c0a5 100644 --- a/src/core/hle/function_wrappers.h +++ b/src/core/hle/function_wrappers.h @@ -108,6 +108,10 @@ template void Wrap() { func(Memory::GetCharPointer(PARAM(0))); } +template void Wrap() { + RETURN(func()); +} + #undef PARAM #undef RETURN diff --git a/src/core/hle/kernel/shared_memory.cpp b/src/core/hle/kernel/shared_memory.cpp index dc9c66ea1..9824d55ac 100644 --- a/src/core/hle/kernel/shared_memory.cpp +++ b/src/core/hle/kernel/shared_memory.cpp @@ -20,6 +20,15 @@ public: Kernel::HandleType GetHandleType() const { return Kernel::HandleType::SharedMemory; } //TODO: implement + /** + * Wait for kernel object to synchronize + * @param wait Boolean wait set if current thread should wait as a result of sync operation + * @return Result of operation, 0 on success, otherwise error code + */ + Result WaitSynchronization(bool* wait) { + // TODO(bravia): ImplementMe + return 0; + } }; //////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index d90056499..875ea2873 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp @@ -331,6 +331,12 @@ void SleepThread(s64 nanoseconds) { DEBUG_LOG(SVC, "called nanoseconds=%d", nanoseconds); } +//TODO: verify with a kernel dump +u64 GetSystemTick() { + return Core::g_app_core->GetTicks(); +} + + const HLE::FunctionDef SVC_Table[] = { {0x00, nullptr, "Unknown"}, {0x01, HLE::Wrap, "ControlMemory"}, @@ -372,7 +378,7 @@ const HLE::FunctionDef SVC_Table[] = { {0x25, HLE::Wrap, "WaitSynchronizationN"}, {0x26, nullptr, "SignalAndWait"}, {0x27, HLE::Wrap, "DuplicateHandle"}, - {0x28, nullptr, "GetSystemTick"}, + {0x28, HLE::Wrap, "GetSystemTick"}, {0x29, nullptr, "GetHandleInfo"}, {0x2A, nullptr, "GetSystemInfo"}, {0x2B, nullptr, "GetProcessInfo"},