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"},