diff --git a/.reuse/dep5 b/.reuse/dep5 index 5ead99f72..9eaf57812 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -9,5 +9,7 @@ Files: CMakeSettings.json .github/shadps4.desktop .github/shadps4.png .gitmodules + src/images/shadps4.ico + src/shadps4.rc Copyright: shadPS4 Emulator Project License: GPL-2.0-or-later diff --git a/CMakeLists.txt b/CMakeLists.txt index c57a10c9c..63b2d8453 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -127,6 +127,7 @@ set(HOST_SOURCES src/Emulator/Host/controller.cpp src/Emulator/Host/controller.h ) +# the above is shared in sdl and qt version (TODO share them all) set(COMMON src/common/types.h src/common/endian.h src/common/concepts.h @@ -134,6 +135,10 @@ set(COMMON src/common/types.h src/common/io_file.h ) +set(CORE src/core/loader.cpp + src/core/loader.h +) + set(CRYPTO src/core/crypto/crypto.cpp src/core/crypto/crypto.h src/core/crypto/keys.h @@ -244,6 +249,7 @@ add_executable(shadps4 src/core/tls.cpp src/core/tls.h ${COMMON} + ${CORE} ${CRYPTO} ${FILE_FORMAT} ) @@ -265,6 +271,10 @@ if (WIN32) add_definitions(-DNOMINMAX -DWIN32_LEAN_AND_MEAN) endif() +if(WIN32) + target_sources(shadps4 PRIVATE src/shadps4.rc) +endif() + target_include_directories(shadps4 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) if(CMAKE_BUILD_TYPE STREQUAL "Debug") diff --git a/src/core/loader.cpp b/src/core/loader.cpp new file mode 100644 index 000000000..5f584e744 --- /dev/null +++ b/src/core/loader.cpp @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/io_file.h" +#include "common/types.h" +#include "loader.h" + +FileTypes detectFileType(const std::string& filepath) { + if (filepath.size() == 0) // no file loaded + { + return FILETYPE_UNKNOWN; + } + Common::FS::IOFile file; + file.Open(filepath, Common::FS::FileAccessMode::Read); + file.Seek(0); + u32 magic; + file.ReadRaw(&magic, sizeof(magic)); + file.Close(); + switch (magic) { + case 0x544e437f: // PS4 PKG + return FILETYPE_PKG; + } + return FILETYPE_UNKNOWN; +} diff --git a/src/core/loader.h b/src/core/loader.h new file mode 100644 index 000000000..c118cc09b --- /dev/null +++ b/src/core/loader.h @@ -0,0 +1,9 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include + +enum FileTypes { FILETYPE_UNKNOWN, FILETYPE_PKG }; +FileTypes detectFileType(const std::string& filepath); diff --git a/src/images/shadps4.ico b/src/images/shadps4.ico new file mode 100644 index 000000000..ecf6675aa Binary files /dev/null and b/src/images/shadps4.ico differ diff --git a/src/shadps4.rc b/src/shadps4.rc new file mode 100644 index 000000000..8c984f260 --- /dev/null +++ b/src/shadps4.rc @@ -0,0 +1 @@ +IDI_ICON1 ICON "images/shadps4.ico" \ No newline at end of file