1
0
mirror of https://github.com/RPCS3/rpcs3.git synced 2024-11-25 20:22:30 +01:00

Merge pull request #1790 from RPCS3/WIP

Version bump to the 0.0.1 pre alpha
This commit is contained in:
11DH11 2016-06-17 23:58:31 +03:00 committed by GitHub
commit 9d01396737
19 changed files with 718 additions and 9 deletions

View File

@ -0,0 +1,60 @@
#include "stdafx.h"
#include "dynamic_library.h"
#ifdef _WIN32
#include <Windows.h>
#else
#include <dlfcn.h>
#endif
namespace utils
{
dynamic_library::dynamic_library(const std::string &path)
{
load(path);
}
dynamic_library::~dynamic_library()
{
close();
}
bool dynamic_library::load(const std::string &path)
{
#ifdef _WIN32
m_handle = LoadLibraryA(path.c_str());
#else
m_handle = dlopen(path.c_str(), RTLD_LAZY);
#endif
return loaded();
}
void dynamic_library::close()
{
#ifdef _WIN32
FreeLibrary((HMODULE)m_handle);
#else
dlclose(m_handle);
#endif
m_handle = nullptr;
}
void *dynamic_library::get_impl(const std::string &name) const
{
#ifdef _WIN32
return GetProcAddress((HMODULE)m_handle, name.c_str());
#else
return dlsym(m_handle, (char *)name.c_str());
#endif
}
bool dynamic_library::loaded() const
{
return !m_handle;
}
dynamic_library::operator bool() const
{
return loaded();
}
}

View File

@ -0,0 +1,41 @@
#include <string>
namespace utils
{
class dynamic_library
{
void *m_handle = nullptr;
public:
dynamic_library() = default;
dynamic_library(const std::string &path);
~dynamic_library();
bool load(const std::string &path);
void close();
private:
void *get_impl(const std::string &name) const;
public:
template<typename Type = void>
Type *get(const std::string &name) const
{
Type *result;
*(void **)(&result) = get_impl(name);
return result;
}
template<typename Type>
bool get(Type *&function, const std::string &name) const
{
*(void **)(&function) = get_impl(name);
return !!function;
}
bool loaded() const;
explicit operator bool() const;
};
}

65
Utilities/version.cpp Normal file
View File

@ -0,0 +1,65 @@
#include "stdafx.h"
#include "version.h"
namespace utils
{
std::string to_string(version_type type)
{
switch (type)
{
case version_type::pre_alpha: return "Pre-Alpha";
case version_type::alpha: return "Alpha";
case version_type::beta: return "Beta";
case version_type::release_candidate: return "RC";
case version_type::release: return "Release";
}
throw;
}
version::version(std::uint8_t hi, std::uint8_t mid, std::uint8_t lo)
: m_hi(hi)
, m_mid(mid)
, m_lo(lo)
{
}
version& version::type(version_type type, std::uint8_t type_index)
{
m_type = type;
m_type_index = type_index;
return *this;
}
std::uint16_t version::to_hex() const
{
return (m_hi << 24) | (m_mid << 16) | (m_lo << 8) | ((std::uint8_t(m_type) & 0xf) << 4) | (m_type_index & 0xf);
}
std::string version::to_string() const
{
std::string version = std::to_string(hi()) + "." + std::to_string(mid());
if (lo())
{
version += "." + std::to_string(lo());
}
if (type() != version_type::release)
{
if (!postfix().empty())
{
version += "-" + postfix();
}
version += " " + utils::to_string(type());
if (type_index() > 1)
{
version += " " + std::to_string(type_index());
}
}
return version;
}
}

71
Utilities/version.h Normal file
View File

@ -0,0 +1,71 @@
#pragma once
#include <string>
#include <cstdint>
namespace utils
{
enum class version_type : std::uint8_t
{
pre_alpha,
alpha,
beta,
release_candidate,
release
};
std::string to_string(version_type type);
class version
{
std::uint8_t m_hi;
std::uint8_t m_mid;
std::uint8_t m_lo;
version_type m_type = version_type::release;
std::uint8_t m_type_index = 1;
std::string m_postfix;
public:
version(std::uint8_t hi, std::uint8_t mid, std::uint8_t lo = 0);
version& type(version_type type, std::uint8_t type_index = 1);
std::uint8_t hi() const
{
return m_hi;
}
std::uint8_t mid() const
{
return m_mid;
}
std::uint8_t lo() const
{
return m_lo;
}
version_type type() const
{
return m_type;
}
std::string postfix() const
{
return m_postfix;
}
version& postfix(const std::string& value)
{
m_postfix = value;
return *this;
}
std::uint8_t type_index() const
{
return m_type_index;
}
std::uint16_t to_hex() const;
std::string to_string() const;
};
}

65
ps3emu_api/ps3emu_api.cpp Normal file
View File

@ -0,0 +1,65 @@
#include "ps3emu_api.h"
ps3emu_api::ps3emu_api(const std::string &path)
{
load(path);
}
bool ps3emu_api::load(const std::string &path)
{
if (!m_library.load(path))
{
return false;
}
bool is_no_errors = true;
if (!m_library.get(get_api_version, "ps3emu_api_get_api_version") || get_api_version() != ps3emu_api_version)
{
is_no_errors = false;
}
is_no_errors = is_no_errors && m_library.get(initialize, "ps3emu_api_initialize");
is_no_errors = is_no_errors && m_library.get(destroy, "ps3emu_api_destroy");
is_no_errors = is_no_errors && m_library.get(get_version_string, "ps3emu_api_get_version_string");
is_no_errors = is_no_errors && m_library.get(get_version_number, "ps3emu_api_get_version_number");
is_no_errors = is_no_errors && m_library.get(get_name_string, "ps3emu_api_get_name_string");
is_no_errors = is_no_errors && m_library.get(load_elf, "ps3emu_api_load_elf");
is_no_errors = is_no_errors && m_library.get(set_state, "ps3emu_api_set_state");
is_no_errors = is_no_errors && m_library.get(get_state, "ps3emu_api_get_state");
if (!is_no_errors)
{
close();
return false;
}
return true;
}
bool ps3emu_api::loaded() const
{
return m_library.loaded();
}
void ps3emu_api::close()
{
initialize = nullptr;
destroy = nullptr;
get_version_string = nullptr;
get_version_number = nullptr;
get_name_string = nullptr;
load_elf = nullptr;
set_state = nullptr;
get_state = nullptr;
m_library.close();
}
ps3emu_api::operator bool() const
{
return loaded();
}

35
ps3emu_api/ps3emu_api.h Normal file
View File

@ -0,0 +1,35 @@
#pragma once
#include <Utilities/dynamic_library.h>
#include <string>
#include "ps3emu_api_enums.h"
#include "ps3emu_api_structs.h"
class ps3emu_api
{
utils::dynamic_library m_library;
public:
ps3emu_api() = default;
ps3emu_api(const std::string &path);
unsigned int(*get_api_version)() = nullptr;
ps3emu_api_error_code(*initialize)(const ps3emu_api_initialize_callbacks *callbacks) = nullptr;
ps3emu_api_error_code(*destroy)() = nullptr;
ps3emu_api_error_code(*get_version_string)(char *dest_buffer, int dest_buffer_size) = nullptr;
ps3emu_api_error_code(*get_version_number)(int *version_number) = nullptr;
ps3emu_api_error_code(*get_name_string)(char *dest_buffer, int dest_buffer_size) = nullptr;
ps3emu_api_error_code(*load_elf)(const char *path) = nullptr;
ps3emu_api_error_code(*set_state)(ps3emu_api_state state) = nullptr;
ps3emu_api_error_code(*get_state)(ps3emu_api_state *state) = nullptr;
bool load(const std::string &path);
bool loaded() const;
void close();
explicit operator bool() const;
};

View File

@ -198,7 +198,7 @@ if(WIN32)
target_link_libraries(rpcs3 avformat.lib avcodec.lib avutil.lib swresample.lib swscale.lib png16_static ${wxWidgets_LIBRARIES} ${OPENAL_LIBRARY} ${ADDITIONAL_LIBS})
else()
target_link_libraries(rpcs3 ${wxWidgets_LIBRARIES} ${OPENAL_LIBRARY} ${GLEW_LIBRARY} ${OPENGL_LIBRARIES})
target_link_libraries(rpcs3 libavformat.a libavcodec.a libavutil.a libswresample.a libswscale.a png16_static ${ZLIB_LIBRARIES} ${ADDITIONAL_LIBS})
target_link_libraries(rpcs3 libavformat.a libavcodec.a libavutil.a libswresample.a libswscale.a -ldl png16_static ${ZLIB_LIBRARIES} ${ADDITIONAL_LIBS})
if (NOT APPLE)
target_link_libraries(rpcs3 vulkan glslang OSDependent OGLCompiler SPIRV)
endif()

View File

@ -1,4 +1,5 @@
#pragma once
#include "rpcs3_version.h"
class AboutDialog : public wxDialog
{
@ -30,7 +31,7 @@ public:
t_descr->SetForegroundColour(wxColor(255, 255, 255));
t_descr->SetPosition(wxPoint(12, 50));
wxStaticText* t_version = new wxStaticText(this, wxID_ANY, wxString::Format(_PRGNAME_ " Version: " _PRGVER_ "-" RPCS3_GIT_VERSION));
wxStaticText* t_version = new wxStaticText(this, wxID_ANY, std::string(_PRGNAME_ " Version: ") + rpcs3::version.to_string());
t_version->SetBackgroundColour(wxColor(100, 100, 100));
t_version->SetForegroundColour(wxColor(200, 200, 200));
t_version->SetPosition(wxPoint(12, 66));

View File

@ -2,7 +2,7 @@
#include "stdafx_gui.h"
#include "rpcs3.h"
#include "MainFrame.h"
#include "git-version.h"
#include "rpcs3_version.h"
#include "Emu/Memory/Memory.h"
#include "Emu/System.h"
@ -69,7 +69,7 @@ MainFrame::MainFrame()
, m_sys_menu_opened(false)
{
SetLabel(_PRGNAME_ " v" _PRGVER_ "-" RPCS3_GIT_VERSION);
SetLabel(std::string(_PRGNAME_ " v") + rpcs3::version.to_string());
wxMenuBar* menubar = new wxMenuBar();
@ -158,7 +158,7 @@ MainFrame::MainFrame()
wxGetApp().Bind(wxEVT_KEY_DOWN, &MainFrame::OnKeyDown, this);
wxGetApp().Bind(wxEVT_DBG_COMMAND, &MainFrame::UpdateUI, this);
LOG_NOTICE(GENERAL, "%s", _PRGNAME_ " v" _PRGVER_ "-" RPCS3_GIT_VERSION);
LOG_NOTICE(GENERAL, "%s", (std::string(_PRGNAME_ " v") + rpcs3::version.to_string()).c_str());
LOG_NOTICE(GENERAL, "");
}

View File

@ -63,9 +63,37 @@
<PrecompiledHeader>Use</PrecompiledHeader>
<AdditionalIncludeDirectories>..\llvm\include;..\llvm_build\include;</AdditionalIncludeDirectories>
</ClCompile>
<PreBuildEvent>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug - MemLeak|x64'">%windir%\sysnative\cmd.exe /c "$(SolutionDir)\Utilities\git-version-gen.cmd"</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug - MemLeak|x64'">Updating git-version.h</Message>
</PreBuildEvent>
<PreBuildEvent>
<Command Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">%windir%\sysnative\cmd.exe /c "$(SolutionDir)\Utilities\git-version-gen.cmd"</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">Updating git-version.h</Message>
</PreBuildEvent>
<PreBuildEvent>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%windir%\sysnative\cmd.exe /c "$(SolutionDir)\Utilities\git-version-gen.cmd"</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Updating git-version.h</Message>
</PreBuildEvent>
<PreBuildEvent>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%windir%\sysnative\cmd.exe /c "$(SolutionDir)\Utilities\git-version-gen.cmd"</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Updating git-version.h</Message>
</PreBuildEvent>
<PreBuildEvent>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">%windir%\sysnative\cmd.exe /c "$(SolutionDir)\Utilities\git-version-gen.cmd"</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">Updating git-version.h</Message>
</PreBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\ps3emu_api\ps3emu_api.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NotUsing</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug - MemLeak|x64'">NotUsing</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\Utilities\AutoPause.cpp" />
<ClCompile Include="..\Utilities\dynamic_library.cpp" />
<ClCompile Include="..\Utilities\Log.cpp">
<PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile>
@ -84,6 +112,7 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile>
<ClCompile Include="..\Utilities\Thread.cpp" />
<ClCompile Include="..\Utilities\version.cpp" />
<ClCompile Include="..\Utilities\VirtualMemory.cpp" />
<ClCompile Include="Emu\PSP2\ARMv7Module.cpp" />
<ClCompile Include="Emu\Cell\lv2\lv2.cpp" />
@ -348,6 +377,8 @@
<ClCompile Include="Loader\PSF.cpp" />
<ClCompile Include="Loader\TROPUSR.cpp" />
<ClCompile Include="Loader\TRP.cpp" />
<ClCompile Include="rpcs3_api.cpp" />
<ClCompile Include="rpcs3_version.cpp" />
<ClCompile Include="stb_image.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
@ -355,12 +386,14 @@
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\3rdparty\stblib\stb_image.h" />
<ClInclude Include="..\ps3emu_api\ps3emu_api.h" />
<ClInclude Include="..\Utilities\Atomic.h" />
<ClInclude Include="..\Utilities\AtomicPtr.h" />
<ClInclude Include="..\Utilities\AutoPause.h" />
<ClInclude Include="..\Utilities\BEType.h" />
<ClInclude Include="..\Utilities\BitField.h" />
<ClInclude Include="..\Utilities\BitSet.h" />
<ClInclude Include="..\Utilities\dynamic_library.h" />
<ClInclude Include="..\Utilities\event.h" />
<ClInclude Include="..\Utilities\geometry.h" />
<ClInclude Include="..\Utilities\GSL.h" />
@ -379,6 +412,7 @@
<ClInclude Include="..\Utilities\Thread.h" />
<ClInclude Include="..\Utilities\Timer.h" />
<ClInclude Include="..\Utilities\types.h" />
<ClInclude Include="..\Utilities\version.h" />
<ClInclude Include="..\Utilities\VirtualMemory.h" />
<ClInclude Include="Crypto\aes.h" />
<ClInclude Include="Crypto\ec.h" />
@ -608,7 +642,10 @@
<ClInclude Include="Loader\PSF.h" />
<ClInclude Include="Loader\TROPUSR.h" />
<ClInclude Include="Loader\TRP.h" />
<ClInclude Include="ps3emu_api_enums.h" />
<ClInclude Include="ps3emu_api_structs.h" />
<ClInclude Include="restore_new.h" />
<ClInclude Include="rpcs3_version.h" />
<ClInclude Include="stdafx.h" />
</ItemGroup>
<ItemGroup>

View File

@ -854,6 +854,15 @@
<ClCompile Include="Emu\PSP2\Modules\sceVoiceQoS.cpp">
<Filter>Emu\PSP2\Modules</Filter>
</ClCompile>
<ClCompile Include="..\Utilities\dynamic_library.cpp">
<Filter>Utilities</Filter>
</ClCompile>
<ClCompile Include="rpcs3_api.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\ps3emu_api\ps3emu_api.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Crypto\aes.h">
@ -1624,5 +1633,17 @@
<ClInclude Include="..\Utilities\sync.h">
<Filter>Utilities</Filter>
</ClInclude>
<ClInclude Include="..\Utilities\dynamic_library.h">
<Filter>Utilities</Filter>
</ClInclude>
<ClInclude Include="ps3emu_api_enums.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ps3emu_api_structs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\ps3emu_api\ps3emu_api.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>

51
rpcs3/ps3emu_api_enums.h Normal file
View File

@ -0,0 +1,51 @@
#pragma once
#ifndef _PS3EMU_API_ENUMS
#define _PS3EMU_API_ENUMS
#ifdef __cplusplus
extern"C"
{
#endif /* __cplusplus */
typedef enum
{
ps3emu_api_ok,
ps3emu_api_bad_argument,
ps3emu_api_not_found,
ps3emu_api_internal_error,
ps3emu_api_not_initialized,
ps3emu_api_already_initialized
} ps3emu_api_error_code;
enum
{
ps3emu_api_version = 1,
ps3emu_api_max_name_length = 16,
ps3emu_api_max_version_length = 64
};
typedef enum
{
ps3emu_api_state_idle,
ps3emu_api_state_stoping,
ps3emu_api_state_stopped,
ps3emu_api_state_pausing,
ps3emu_api_state_paused,
ps3emu_api_state_starting,
ps3emu_api_state_started
} ps3emu_api_state;
typedef enum
{
ps3emu_api_window_null,
ps3emu_api_window_opengl,
ps3emu_api_window_vulkan
/* ps3emu_api_window_direct3d */
} ps3emu_api_window_type;
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _PS3EMU_API_ENUMS */

View File

@ -0,0 +1,23 @@
#ifndef _PS3EMU_API_STRUCTS
#define _PS3EMU_API_STRUCTS
#include "ps3emu_api_enums.h"
#ifdef __cplusplus
extern"C"
{
#endif /* __cplusplus */
typedef struct ps3emu_api_window_handle_s * ps3emu_api_window;
typedef struct
{
ps3emu_api_error_code(*create_window)(ps3emu_api_window *window, ps3emu_api_window_type type, unsigned int version);
ps3emu_api_error_code(*destroy_window)(ps3emu_api_window window);
ps3emu_api_error_code(*flip)(ps3emu_api_window window);
} ps3emu_api_initialize_callbacks;
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _PS3EMU_API_STRUCTS */

View File

@ -84,8 +84,10 @@
</PropertyGroup>
<ItemDefinitionGroup>
<PreBuildEvent>
<Command>%windir%\sysnative\cmd.exe /c "$(SolutionDir)\Utilities\git-version-gen.cmd"</Command>
<Message>Updating git-version.h</Message>
<Command>
</Command>
<Message>
</Message>
</PreBuildEvent>
<ClCompile>
<AdditionalIncludeDirectories>..\wxWidgets\include\msvc;..\wxWidgets\include;..\3rdparty\XAudio2_7;..\Vulkan\Vulkan-LoaderAndValidationLayers\include;..\Vulkan\glslang\glslang\Public;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

219
rpcs3/rpcs3_api.cpp Normal file
View File

@ -0,0 +1,219 @@
#include "stdafx.h"
#include "ps3emu_api_enums.h"
#include "ps3emu_api_structs.h"
#include "rpcs3_version.h"
#include "Emu/System.h"
#ifdef _MSC_VER
#define UTILS_DLL_C_EXPORT extern "C" __declspec(dllexport)
#else
#define UTILS_DLL_C_EXPORT extern "C" __attribute__((visibility("default")))
#endif
static bool g_is_initialized = false;
UTILS_DLL_C_EXPORT unsigned int ps3emu_api_get_api_version()
{
return ps3emu_api_version;
}
UTILS_DLL_C_EXPORT ps3emu_api_error_code ps3emu_api_initialize(const ps3emu_api_initialize_callbacks *callbacks)
{
if (g_is_initialized)
{
return ps3emu_api_already_initialized;
}
if (!callbacks)
{
return ps3emu_api_bad_argument;
}
g_is_initialized = true;
//TODO
return ps3emu_api_ok;
}
UTILS_DLL_C_EXPORT ps3emu_api_error_code ps3emu_api_destroy()
{
if (!g_is_initialized)
{
return ps3emu_api_not_initialized;
}
g_is_initialized = false;
//TODO
return ps3emu_api_ok;
}
UTILS_DLL_C_EXPORT ps3emu_api_error_code ps3emu_api_get_version_string(char *dest_buffer, int dest_buffer_size)
{
if (!g_is_initialized)
{
return ps3emu_api_not_initialized;
}
if (!dest_buffer || dest_buffer_size <= 0)
{
return ps3emu_api_bad_argument;
}
if (dest_buffer_size > ps3emu_api_max_version_length)
{
dest_buffer_size = ps3emu_api_max_version_length;
}
const std::string version_string = rpcs3::version.to_string();
if (dest_buffer_size > version_string.length())
{
dest_buffer_size = version_string.length();
}
std::memcpy(dest_buffer, version_string.c_str(), dest_buffer_size - 1);
dest_buffer[dest_buffer_size - 1] = '\0';
return ps3emu_api_ok;
}
UTILS_DLL_C_EXPORT ps3emu_api_error_code ps3emu_api_get_version_number(int *version_number)
{
if (!g_is_initialized)
{
return ps3emu_api_not_initialized;
}
if (!version_number)
{
return ps3emu_api_bad_argument;
}
*version_number = rpcs3::version.to_hex();
return ps3emu_api_ok;
}
UTILS_DLL_C_EXPORT ps3emu_api_error_code ps3emu_api_get_name_string(char *dest_buffer, int dest_buffer_size)
{
if (!g_is_initialized)
{
return ps3emu_api_not_initialized;
}
if (!dest_buffer || dest_buffer_size <= 0)
{
return ps3emu_api_bad_argument;
}
if (dest_buffer_size > ps3emu_api_max_name_length)
{
dest_buffer_size = ps3emu_api_max_name_length;
}
const std::string name_string = "RPCS3";
if (dest_buffer_size > name_string.length())
{
dest_buffer_size = name_string.length();
}
std::memcpy(dest_buffer, name_string.c_str(), dest_buffer_size - 1);
dest_buffer[dest_buffer_size - 1] = '\0';
return ps3emu_api_ok;
}
UTILS_DLL_C_EXPORT ps3emu_api_error_code ps3emu_api_load_elf(const char *path)
{
if (!g_is_initialized)
{
return ps3emu_api_not_initialized;
}
if (!path)
{
return ps3emu_api_bad_argument;
}
if (!fs::is_file(path))
{
return ps3emu_api_not_found;
}
Emu.SetPath(path);
Emu.Load();
return ps3emu_api_ok;
}
UTILS_DLL_C_EXPORT ps3emu_api_error_code ps3emu_api_set_state(ps3emu_api_state state)
{
if (!g_is_initialized)
{
return ps3emu_api_not_initialized;
}
//TODO state machine
switch (state)
{
case ps3emu_api_state_stoping:
Emu.Stop();
break;
case ps3emu_api_state_pausing:
Emu.Pause();
break;
case ps3emu_api_state_starting:
if (Emu.IsPaused())
{
Emu.Resume();
}
else
{
Emu.Run();
}
break;
default:
return ps3emu_api_bad_argument;
}
return ps3emu_api_ok;
}
UTILS_DLL_C_EXPORT ps3emu_api_error_code ps3emu_api_get_state(ps3emu_api_state *state)
{
if (!g_is_initialized)
{
return ps3emu_api_not_initialized;
}
if (!state)
{
return ps3emu_api_bad_argument;
}
if (Emu.IsRunning())
{
*state = ps3emu_api_state_started;
}
else if (Emu.IsPaused())
{
*state = ps3emu_api_state_paused;
}
else if (Emu.IsStopped())
{
*state = ps3emu_api_state_stopped;
}
else if (Emu.IsReady())
{
*state = ps3emu_api_state_idle;
}
else
{
return ps3emu_api_internal_error;
}
return ps3emu_api_ok;
}

10
rpcs3/rpcs3_version.cpp Normal file
View File

@ -0,0 +1,10 @@
#include "stdafx.h"
#include "rpcs3_version.h"
#include "git-version.h"
namespace rpcs3
{
const utils::version version = utils::version{ 0, 0, 1 }
.type(utils::version_type::pre_alpha)
.postfix(RPCS3_GIT_VERSION);
}

9
rpcs3/rpcs3_version.h Normal file
View File

@ -0,0 +1,9 @@
#pragma once
#include <string>
#include <cstdint>
#include <Utilities/version.h>
namespace rpcs3
{
extern const utils::version version;
}

View File

@ -42,7 +42,6 @@ using namespace std::literals;
#define EXCEPTION(format_str, ...) fmt::exception("%s(): " format_str HERE, __FUNCTION__, ##__VA_ARGS__)
#define _PRGNAME_ "RPCS3"
#define _PRGVER_ "0.0.0.9"
#include "Utilities/types.h"
#include "Utilities/Macro.h"

@ -1 +1 @@
Subproject commit 139d8092b9daaa823f6398d4a273fdc0a1d20c09
Subproject commit b4d09867643df26e503ec09119c8048832676780