diff --git a/Utilities/Array.h b/Utilities/Array.h deleted file mode 100644 index 0855fdbdc7..0000000000 --- a/Utilities/Array.h +++ /dev/null @@ -1,88 +0,0 @@ -#pragma once - -template class SizedStack -{ - T m_ptr[size]; - uint m_count; - -public: - SizedStack() - { - Clear(); - } - - ~SizedStack() - { - Clear(); - } - - void Clear() - { - m_count = 0; - } - - bool Pop(T& dst) - { - if(!m_count) - return false; - - dst = m_ptr[--m_count]; - return true; - } - - bool Push(const T& src) - { - if(m_count + 1 > size) - return false; - - m_ptr[m_count++] = src; - return true; - } - - size_t GetFreeCount() const - { - return size - m_count; - } - - size_t GetCount() const - { - return m_count; - } - - size_t GetMaxCount() const - { - return size; - } -}; - -template struct ScopedPtr -{ -private: - T* m_ptr; - -public: - ScopedPtr() : m_ptr(nullptr) - { - } - - ScopedPtr(T* ptr) : m_ptr(ptr) - { - } - - ~ScopedPtr() - { - Swap(nullptr); - } - - operator T*() { return m_ptr; } - operator const T*() const { return m_ptr; } - - T* operator ->() { return m_ptr; } - const T* operator ->() const { return m_ptr; } - - void Swap(T* ptr) - { - delete m_ptr; - m_ptr = ptr; - } -}; diff --git a/Utilities/SSemaphore.cpp b/Utilities/SSemaphore.cpp index 47e9c76079..37c3cc6faa 100644 --- a/Utilities/SSemaphore.cpp +++ b/Utilities/SSemaphore.cpp @@ -1,5 +1,6 @@ #include "stdafx.h" #include "Utilities/SSemaphore.h" +#include "Emu/System.h" void SSemaphore::wait() { @@ -84,4 +85,4 @@ bool SSemaphore::post_and_wait() wait(); return true; -} \ No newline at end of file +} diff --git a/Utilities/Thread.cpp b/Utilities/Thread.cpp index 38912a139a..a98d8c6b63 100644 --- a/Utilities/Thread.cpp +++ b/Utilities/Thread.cpp @@ -1,5 +1,6 @@ #include "stdafx.h" #include "Utilities/Log.h" +#include "Emu/Memory/Memory.h" #include "Thread.h" diff --git a/Utilities/Thread.h b/Utilities/Thread.h index 4485227e2d..1f27f2a683 100644 --- a/Utilities/Thread.h +++ b/Utilities/Thread.h @@ -1,5 +1,4 @@ #pragma once -#include "Array.h" #include #include #include @@ -8,6 +7,13 @@ #include #include +static std::thread::id main_thread; + +struct rThread +{ + static bool IsMain() { std::this_thread::get_id() == main_thread; } +}; + class ThreadExec; class NamedThreadBase diff --git a/Utilities/rConcurrency.cpp b/Utilities/rConcurrency.cpp deleted file mode 100644 index c36f70e486..0000000000 --- a/Utilities/rConcurrency.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include "stdafx.h" - -rTimer::rTimer() -{ - handle = reinterpret_cast(new wxTimer()); -} - -rTimer::~rTimer() -{ - delete reinterpret_cast(handle); -} - -void rTimer::Start() -{ - reinterpret_cast(handle)->Start(); -} - -void rTimer::Stop() -{ - reinterpret_cast(handle)->Stop(); -} - -void rSleep(u32 time) -{ - wxSleep(time); -} - -void rMicroSleep(u64 time) -{ - wxMicroSleep(time); -} - -bool rThread::IsMain() -{ - return wxThread::IsMain(); -} - -void rYieldIfNeeded() -{ - wxYieldIfNeeded(); -} \ No newline at end of file diff --git a/Utilities/rConcurrency.h b/Utilities/rConcurrency.h deleted file mode 100644 index 8504daef1b..0000000000 --- a/Utilities/rConcurrency.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -struct rTimer -{ - rTimer(); - rTimer(const rTimer& other) = delete; - ~rTimer(); - void Start(); - void Stop(); -private: - void *handle; -}; - -void rSleep(u32 time); -void rMicroSleep(u64 time); - -struct rThread -{ - static bool IsMain(); -}; - -void rYieldIfNeeded(); \ No newline at end of file diff --git a/Utilities/rXml.cpp b/Utilities/rXml.cpp index 62da3d4c0c..0a8fabf51c 100644 --- a/Utilities/rXml.cpp +++ b/Utilities/rXml.cpp @@ -2,6 +2,7 @@ #include +#include "Utilities/rXml.h" #include rXmlNode::rXmlNode() diff --git a/Utilities/simpleini/ConvertUTF.h b/Utilities/simpleini/ConvertUTF.h index 14d7b70dca..4c8ab6086b 100644 --- a/Utilities/simpleini/ConvertUTF.h +++ b/Utilities/simpleini/ConvertUTF.h @@ -1,3 +1,5 @@ +#pragma once + /* * Copyright 2001-2004 Unicode, Inc. * diff --git a/rpcs3/CMakeLists.txt b/rpcs3/CMakeLists.txt index 956b612d2b..5e713720d4 100644 --- a/rpcs3/CMakeLists.txt +++ b/rpcs3/CMakeLists.txt @@ -66,8 +66,6 @@ ${wxWidgets_INCLUDE_DIRS} ${OPENAL_INCLUDE_DIR} "${RPCS3_SRC_DIR}/../ffmpeg/${PLATFORM_ARCH}/include" "${RPCS3_SRC_DIR}" -"${RPCS3_SRC_DIR}/Emu" -"${RPCS3_SRC_DIR}/Gui" "${RPCS3_SRC_DIR}/Loader" "${RPCS3_SRC_DIR}/Crypto" "${RPCS3_SRC_DIR}/.." diff --git a/rpcs3/Crypto/aes.h b/rpcs3/Crypto/aes.h index 7a9c20a567..6d85edc369 100644 --- a/rpcs3/Crypto/aes.h +++ b/rpcs3/Crypto/aes.h @@ -1,3 +1,5 @@ +#pragma once + /** * \file aes.h * @@ -174,4 +176,4 @@ void aes_cmac(aes_context *ctx, int length, unsigned char *input, unsigned char #ifdef __cplusplus } -#endif \ No newline at end of file +#endif diff --git a/rpcs3/Crypto/lz.h b/rpcs3/Crypto/lz.h index 78cce623b6..c27192624c 100644 --- a/rpcs3/Crypto/lz.h +++ b/rpcs3/Crypto/lz.h @@ -1,3 +1,4 @@ +#pragma once #include int decode_range(unsigned int *range, unsigned int *code, unsigned char **src); diff --git a/rpcs3/Crypto/sha1.h b/rpcs3/Crypto/sha1.h index 9272d94746..84d4bd80d2 100644 --- a/rpcs3/Crypto/sha1.h +++ b/rpcs3/Crypto/sha1.h @@ -1,3 +1,4 @@ +#pragma once /** * \file sha1.h * @@ -158,4 +159,4 @@ void sha1_hmac( const unsigned char *key, size_t keylen, #ifdef __cplusplus } -#endif \ No newline at end of file +#endif diff --git a/rpcs3/Emu/Audio/AL/OpenALThread.cpp b/rpcs3/Emu/Audio/AL/OpenALThread.cpp index 9ed92f04e3..5d24514d46 100644 --- a/rpcs3/Emu/Audio/AL/OpenALThread.cpp +++ b/rpcs3/Emu/Audio/AL/OpenALThread.cpp @@ -1,5 +1,6 @@ #include "stdafx.h" #include "Utilities/Log.h" +#include "Emu/System.h" #include "rpcs3/Ini.h" #include "OpenALThread.h" diff --git a/rpcs3/Emu/Cell/PPUThread.h b/rpcs3/Emu/Cell/PPUThread.h index 57b65474aa..6a183fb0dc 100644 --- a/rpcs3/Emu/Cell/PPUThread.h +++ b/rpcs3/Emu/Cell/PPUThread.h @@ -1,7 +1,5 @@ -#ifndef PPUTHREAD_H -#define PPUTHREAD_H +#pragma once #include "Emu/Cell/PPCThread.h" -#include "Emu/SysCalls/SysCalls.h" #include enum @@ -861,4 +859,4 @@ protected: }; PPUThread& GetCurrentPPUThread(); -#endif //PPUTHREAD_H + diff --git a/rpcs3/Emu/Cell/SPURSManager.h b/rpcs3/Emu/Cell/SPURSManager.h index 9ad7ec0a4b..ff7a2b7ff5 100644 --- a/rpcs3/Emu/Cell/SPURSManager.h +++ b/rpcs3/Emu/Cell/SPURSManager.h @@ -1,5 +1,7 @@ #pragma once +#include "Emu/Memory/Memory.h" + // SPURS defines. enum SPURSKernelInterfaces { diff --git a/rpcs3/Emu/Cell/SPUThread.h b/rpcs3/Emu/Cell/SPUThread.h index b0e70f8da2..b082d2c7c7 100644 --- a/rpcs3/Emu/Cell/SPUThread.h +++ b/rpcs3/Emu/Cell/SPUThread.h @@ -2,6 +2,8 @@ #include "PPCThread.h" #include "Emu/Event.h" #include "Emu/SysCalls/lv2/sys_spu.h" +#include "Emu/SysCalls/lv2/sys_event.h" +#include "Emu/SysCalls/lv2/sys_time.h" #include "MFC.h" #include "Emu/SysCalls/ErrorCodes.h" #include diff --git a/rpcs3/Emu/FS/VFS.cpp b/rpcs3/Emu/FS/VFS.cpp index 83da350d73..3c79002e13 100644 --- a/rpcs3/Emu/FS/VFS.cpp +++ b/rpcs3/Emu/FS/VFS.cpp @@ -4,6 +4,7 @@ #include "VFS.h" #include "Emu/HDD/HDD.h" #include "vfsDeviceLocalFile.h" +#include "Ini.h" int sort_devices(const void* _a, const void* _b) { diff --git a/rpcs3/Emu/Memory/DynamicMemoryBlockBase.h b/rpcs3/Emu/Memory/DynamicMemoryBlockBase.h index 6bc225daca..10ada356ad 100644 --- a/rpcs3/Emu/Memory/DynamicMemoryBlockBase.h +++ b/rpcs3/Emu/Memory/DynamicMemoryBlockBase.h @@ -1,4 +1,4 @@ - +#pragma once //DynamicMemoryBlockBase template DynamicMemoryBlockBase::DynamicMemoryBlockBase() diff --git a/rpcs3/Emu/Memory/Memory.cpp b/rpcs3/Emu/Memory/Memory.cpp index dc21cc5b7b..7cc75f4db2 100644 --- a/rpcs3/Emu/Memory/Memory.cpp +++ b/rpcs3/Emu/Memory/Memory.cpp @@ -3,6 +3,8 @@ #include "Utilities/Log.h" #include "Memory.h" +#include "Emu/System.h" +#include "Ini.h" MemoryBase Memory; diff --git a/rpcs3/Emu/Memory/Memory.h b/rpcs3/Emu/Memory/Memory.h index b0fee3bac6..7d781a7a18 100644 --- a/rpcs3/Emu/Memory/Memory.h +++ b/rpcs3/Emu/Memory/Memory.h @@ -5,6 +5,7 @@ #endif #include "MemoryBlock.h" +#include "Emu/SysCalls/Callback.h" #include using std::nullptr_t; diff --git a/rpcs3/Emu/SysCalls/Modules.h b/rpcs3/Emu/SysCalls/Modules.h index e0374db2bf..31947f14c0 100644 --- a/rpcs3/Emu/SysCalls/Modules.h +++ b/rpcs3/Emu/SysCalls/Modules.h @@ -1,8 +1,6 @@ #pragma once -#include "Emu/Memory/Memory.h" - -#define declCPU PPUThread& CPU = GetCurrentPPUThread +#include "Emu/SysCalls/SC_FUNC.h" //TODO struct ModuleFunc diff --git a/rpcs3/Emu/SysCalls/Modules/sceNpTrophy.cpp b/rpcs3/Emu/SysCalls/Modules/sceNpTrophy.cpp index 48db1ef644..dc326289a0 100644 --- a/rpcs3/Emu/SysCalls/Modules/sceNpTrophy.cpp +++ b/rpcs3/Emu/SysCalls/Modules/sceNpTrophy.cpp @@ -1,12 +1,12 @@ #include "stdafx.h" #include "Utilities/Log.h" +#include "Utilities/rXml.h" #include "Emu/Memory/Memory.h" #include "Emu/System.h" #include "Emu/Cell/PPUThread.h" #include "Emu/SysCalls/SC_FUNC.h" #include "Emu/SysCalls/Modules.h" #include "Emu/FS/vfsDir.h" -#include "wx/xml/xml.h" #include "sceNp.h" #include "sceNpTrophy.h" diff --git a/rpcs3/Emu/SysCalls/SC_FUNC.h b/rpcs3/Emu/SysCalls/SC_FUNC.h index a30d52505c..6b9fde794a 100644 --- a/rpcs3/Emu/SysCalls/SC_FUNC.h +++ b/rpcs3/Emu/SysCalls/SC_FUNC.h @@ -1,6 +1,8 @@ #pragma once #include "Emu/Memory/Memory.h" +#include "Emu/Cell/PPUThread.h" +#include "Emu/SysCalls/SysCalls.h" #define RESULT(x) SC_ARGS_1 = (x) diff --git a/rpcs3/Emu/SysCalls/lv2/sys_prx.cpp b/rpcs3/Emu/SysCalls/lv2/sys_prx.cpp index bea1e06449..fccdee285f 100644 --- a/rpcs3/Emu/SysCalls/lv2/sys_prx.cpp +++ b/rpcs3/Emu/SysCalls/lv2/sys_prx.cpp @@ -3,6 +3,7 @@ #include "Emu/Memory/Memory.h" #include "Emu/System.h" #include "Emu/SysCalls/SysCalls.h" +#include "Emu/FS/vfsFile.h" #include "sys_prx.h" SysCallBase sys_prx("sys_prx"); diff --git a/rpcs3/Emu/SysCalls/lv2/sys_semaphore.cpp b/rpcs3/Emu/SysCalls/lv2/sys_semaphore.cpp index 08f3c73915..161f0945c0 100644 --- a/rpcs3/Emu/SysCalls/lv2/sys_semaphore.cpp +++ b/rpcs3/Emu/SysCalls/lv2/sys_semaphore.cpp @@ -3,6 +3,7 @@ #include "Emu/Memory/Memory.h" #include "Emu/System.h" #include "Emu/SysCalls/SysCalls.h" +#include "Emu/Cell/PPUThread.h" #include "sys_semaphore.h" #include "sys_time.h" diff --git a/rpcs3/Emu/SysCalls/lv2/sys_timer.cpp b/rpcs3/Emu/SysCalls/lv2/sys_timer.cpp index 276c5a6474..7ff925b368 100644 --- a/rpcs3/Emu/SysCalls/lv2/sys_timer.cpp +++ b/rpcs3/Emu/SysCalls/lv2/sys_timer.cpp @@ -54,7 +54,12 @@ s32 sys_timer_start(u32 timer_id, s64 base_time, u64 period) timer_data->timer_information_t.period = period; timer_data->timer_information_t.timer_state = SYS_TIMER_STATE_RUN; //TODO: ? - timer_data->tmr.Start(); + std::function task(std::bind(sys_timer_stop, timer_id)); + std::thread([period, task]() { + std::this_thread::sleep_for(std::chrono::milliseconds(period)); + task(); + }).detach(); + return CELL_OK; } @@ -66,7 +71,6 @@ s32 sys_timer_stop(u32 timer_id) if(!sys_timer.CheckId(timer_id, timer_data)) return CELL_ESRCH; timer_data->timer_information_t.timer_state = SYS_TIMER_STATE_STOP; - timer_data->tmr.Stop(); return CELL_OK; } @@ -100,7 +104,7 @@ s32 sys_timer_disconnect_event_queue(u32 timer_id) s32 sys_timer_sleep(u32 sleep_time) { sys_timer.Warning("sys_timer_sleep(sleep_time=%d)", sleep_time); - rSleep(sleep_time); + std::this_thread::sleep_for(std::chrono::seconds(sleep_time)); return CELL_OK; } @@ -108,6 +112,6 @@ s32 sys_timer_usleep(u64 sleep_time) { sys_timer.Log("sys_timer_usleep(sleep_time=%lld)", sleep_time); if (sleep_time > 0xFFFFFFFFFFFF) sleep_time = 0xFFFFFFFFFFFF; //2^48-1 - rMicroSleep(sleep_time); //TODO: If (sleep_time >= 2^32) shit may happen + std::this_thread::sleep_for(std::chrono::microseconds(sleep_time)); return CELL_OK; -} \ No newline at end of file +} diff --git a/rpcs3/Emu/SysCalls/lv2/sys_timer.h b/rpcs3/Emu/SysCalls/lv2/sys_timer.h index def0f16c36..4332f75667 100644 --- a/rpcs3/Emu/SysCalls/lv2/sys_timer.h +++ b/rpcs3/Emu/SysCalls/lv2/sys_timer.h @@ -16,7 +16,6 @@ struct sys_timer_information_t struct timer { - rTimer tmr; sys_timer_information_t timer_information_t; }; diff --git a/rpcs3/Emu/System.h b/rpcs3/Emu/System.h index d64cc2e592..cc85ecabe8 100644 --- a/rpcs3/Emu/System.h +++ b/rpcs3/Emu/System.h @@ -9,6 +9,7 @@ #include "Emu/Audio/AudioManager.h" #include "Emu/FS/VFS.h" #include "Emu/DbgCommand.h" +#include "Emu/SysCalls/Static.h" #include "Loader/Loader.h" #include "SysCalls/Callback.h" diff --git a/rpcs3/Gui/AboutDialog.h b/rpcs3/Gui/AboutDialog.h index 975a99278d..bee94e9b1a 100644 --- a/rpcs3/Gui/AboutDialog.h +++ b/rpcs3/Gui/AboutDialog.h @@ -1,3 +1,5 @@ +#pragma once + class AboutDialog : public wxDialog { diff --git a/rpcs3/Gui/GSFrame.cpp b/rpcs3/Gui/GSFrame.cpp index 0a3f53f92f..d1361c9832 100644 --- a/rpcs3/Gui/GSFrame.cpp +++ b/rpcs3/Gui/GSFrame.cpp @@ -1,5 +1,6 @@ #include "stdafx.h" #include "GSFrame.h" +#include "Emu/System.h" #include "rpcs3.h" BEGIN_EVENT_TABLE(GSFrame, wxFrame) diff --git a/rpcs3/Gui/InstructionEditor.h b/rpcs3/Gui/InstructionEditor.h index 4da800cbe6..6bf208ed58 100644 --- a/rpcs3/Gui/InstructionEditor.h +++ b/rpcs3/Gui/InstructionEditor.h @@ -1,3 +1,5 @@ +#pragma once + class InstructionEditorDialog : public wxDialog { diff --git a/rpcs3/Gui/RegisterEditor.h b/rpcs3/Gui/RegisterEditor.h index 9fac56a567..74d5229ca5 100644 --- a/rpcs3/Gui/RegisterEditor.h +++ b/rpcs3/Gui/RegisterEditor.h @@ -1,3 +1,5 @@ +#pragma once + class RegisterEditorDialog : public wxDialog { u64 pc; diff --git a/rpcs3/Gui/VHDDManager.cpp b/rpcs3/Gui/VHDDManager.cpp index 23c5e9974e..5bf185f04d 100644 --- a/rpcs3/Gui/VHDDManager.cpp +++ b/rpcs3/Gui/VHDDManager.cpp @@ -2,6 +2,7 @@ #include "Utilities/Log.h" #include "VHDDManager.h" #include "TextInputDialog.h" +#include "Ini.h" #include VHDDListDropTarget::VHDDListDropTarget(wxListView* parent) : m_parent(parent) diff --git a/rpcs3/Loader/TROPUSR.cpp b/rpcs3/Loader/TROPUSR.cpp index 2420733248..118bf182ae 100644 --- a/rpcs3/Loader/TROPUSR.cpp +++ b/rpcs3/Loader/TROPUSR.cpp @@ -1,5 +1,6 @@ #include "stdafx.h" #include "Utilities/Log.h" +#include "Utilities/rXml.h" #include "Emu/Memory/Memory.h" #include "Emu/System.h" #include "TROPUSR.h" diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index 0e9b70487d..058d68e32b 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -210,11 +210,9 @@ - - @@ -562,4 +560,4 @@ - \ No newline at end of file + diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index aa9b035f34..36357d7e1a 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -940,9 +940,6 @@ Header Files - - Utilities - Utilities @@ -979,9 +976,6 @@ Utilities\SimpleIni - - Utilities - Emu @@ -1097,4 +1091,4 @@ Emu\Memory - \ No newline at end of file + diff --git a/rpcs3/rpcs3.cpp b/rpcs3/rpcs3.cpp index 2997ca698a..4ea8af5587 100644 --- a/rpcs3/rpcs3.cpp +++ b/rpcs3/rpcs3.cpp @@ -26,6 +26,8 @@ bool Rpcs3App::OnInit() SetAppName(_PRGNAME_); wxInitAllImageHandlers(); + main_thread = std::this_thread::get_id(); + Ini.Load(); m_MainFrame = new MainFrame(); diff --git a/rpcs3/rpcs3.h b/rpcs3/rpcs3.h index f99984ddb7..6ee25f0455 100644 --- a/rpcs3/rpcs3.h +++ b/rpcs3/rpcs3.h @@ -1,5 +1,7 @@ #pragma once #include "Gui/MainFrame.h" +#include "Emu/DbgCommand.h" +#include "Utilities/Thread.h" class CPUThread; diff --git a/rpcs3/rpcs3.vcxproj b/rpcs3/rpcs3.vcxproj index 1f8f08d77d..b3befe689e 100644 --- a/rpcs3/rpcs3.vcxproj +++ b/rpcs3/rpcs3.vcxproj @@ -155,7 +155,6 @@ - @@ -192,12 +191,10 @@ - - @@ -232,4 +229,4 @@ - \ No newline at end of file + diff --git a/rpcs3/rpcs3.vcxproj.filters b/rpcs3/rpcs3.vcxproj.filters index 950a606fba..f1a38b6bb4 100644 --- a/rpcs3/rpcs3.vcxproj.filters +++ b/rpcs3/rpcs3.vcxproj.filters @@ -69,9 +69,6 @@ Utilities - - Utilities - Utilities @@ -104,9 +101,6 @@ - - Utilities - Utilities @@ -182,9 +176,6 @@ Gui - - Utilities - Utilities @@ -213,4 +204,4 @@ Utilities - \ No newline at end of file + diff --git a/rpcs3/stdafx.h b/rpcs3/stdafx.h index c61296bf72..8aaceab5d0 100644 --- a/rpcs3/stdafx.h +++ b/rpcs3/stdafx.h @@ -26,13 +26,13 @@ #include #include #include -#include "wx/gauge.h" +#include #include -#include "wx/scrolbar.h" -#include "wx/frame.h" +#include +#include #include #include -#include "wx/app.h" +#include #include #include #include @@ -66,27 +66,10 @@ typedef int64_t s64; #include "Utilities/BEType.h" #include "Utilities/rFile.h" #include "Utilities/rTime.h" -#include "Utilities/rXml.h" -#include "Utilities/rConcurrency.h" #include "Utilities/rMsgBox.h" #include "Utilities/Thread.h" -#include "Utilities/Array.h" #include "Utilities/Timer.h" #include "Utilities/IdManager.h" -#include "Emu/SysCalls/Callback.h" -#include "Emu/Cell/PPUThread.h" -#include "Emu/SysCalls/SC_FUNC.h" -#include "Emu/SysCalls/Modules.h" - -#include "Emu/FS/vfsDirBase.h" -#include "Emu/FS/vfsFileBase.h" -#include "Emu/FS/vfsLocalDir.h" -#include "Emu/FS/vfsLocalFile.h" -#include "Emu/FS/vfsStream.h" -#include "Emu/FS/vfsStreamMemory.h" -#include "Emu/FS/vfsFile.h" -#include "Emu/FS/vfsDir.h" - #define _PRGNAME_ "RPCS3" #define _PRGVER_ "0.0.0.4"