Skip to content

Commit

Permalink
emulators/ppsspp: dogfood some improvements in-review
Browse files Browse the repository at this point in the history
- Use xdg-open to open links and cheat files
- Change OS name in compat reports: BSD -> FreeBSD
- Minor FakeJit fixes

GitHub:		hrydgard/native#272, hrydgard/ppsspp#7772
  • Loading branch information
jbeich committed May 27, 2015
1 parent c26bfb4 commit afa2b69
Show file tree
Hide file tree
Showing 11 changed files with 175 additions and 32 deletions.
2 changes: 2 additions & 0 deletions emulators/ppsspp/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
PORTNAME= ppsspp
PORTVERSION= 1.0.1
DISTVERSIONPREFIX= v
PORTREVISION= 1
CATEGORIES= emulators
.ifndef GITHUB_GROUPS
MASTER_SITES= https://codeload.github.com/${GH_ACCOUNT}/${PORTNAME}-lang/tar.gz/52c757e?dummy=/:lang \
Expand All @@ -23,6 +24,7 @@ COMMENT= PSP emulator in C++ with dynarec JIT for x86, ARM, MIPS
LICENSE= GPLv2 # or any later version

LIB_DEPENDS= libavcodec.so:${PORTSDIR}/multimedia/ffmpeg
RUN_DEPENDS= xdg-open:${PORTSDIR}/devel/xdg-utils

USE_GITHUB= yes
.ifndef GITHUB_GROUPS
Expand Down
6 changes: 2 additions & 4 deletions emulators/ppsspp/files/patch-CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
--- CMakeLists.txt.orig 2015-02-26 20:05:06 UTC
+++ CMakeLists.txt
@@ -21,7 +21,11 @@ if(CMAKE_SYSTEM_PROCESSOR)
@@ -21,7 +21,9 @@ if(CMAKE_SYSTEM_PROCESSOR)
if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^armv7")
set(ARMV7 ON)
endif()
- elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^x86" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "i.86")
+ elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^amd64")
+ set(X86 ON)
+ elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^x86" OR
+ ${CMAKE_SYSTEM_PROCESSOR} MATCHES "^amd64" OR
+ ${CMAKE_SYSTEM_PROCESSOR} MATCHES "i.86")
set(X86 ON)
elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^mips")
set(MIPS ON)
@@ -250,7 +254,7 @@ if(NOT MSVC)
@@ -250,7 +252,7 @@ if(NOT MSVC)
if (NOT CMAKE_C_COMPILER_ID STREQUAL "Intel" AND NOT CMAKE_C_COMPILER_ID STREQUAL "Clang")
add_definitions(-Wno-psabi)
endif()
Expand Down
2 changes: 1 addition & 1 deletion emulators/ppsspp/files/patch-Common_FileUtil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include <stdlib.h>
#endif

+#if defined(__DragonFly__) || defined(__FreeBSD__)
+#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#include <sys/sysctl.h> // KERN_PROC_PATHNAME
+#include <unistd.h> // getpid
+#endif
Expand Down
8 changes: 4 additions & 4 deletions emulators/ppsspp/files/patch-Core_HLE_sceRtc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
u64 srcTick = Memory::Read_U64(tickLocalPtr);
// TODO : Let the user select his timezone / daylight saving instead of taking system param ?
-#if defined(__GLIBC__) || defined(BLACKBERRY) || defined(__SYMBIAN32__)
+#ifndef _MSC_VER
+#if !defined(_MSC_VER) && !defined(_AIX) && !defined(__sgi) && !defined(__hpux)
time_t timezone = 0;
tm *time = localtime(&timezone);
srcTick -= time->tm_gmtoff*1000000ULL;
Expand All @@ -19,7 +19,7 @@
u64 srcTick = Memory::Read_U64(tickUTCPtr);
// TODO : Let the user select his timezone / daylight saving instead of taking system param ?
-#if defined(__GLIBC__) || defined(BLACKBERRY) || defined(__SYMBIAN32__)
+#ifndef _MSC_VER
+#if !defined(_MSC_VER) && !defined(_AIX) && !defined(__sgi) && !defined(__hpux)
time_t timezone = 0;
tm *time = localtime(&timezone);
srcTick += time->tm_gmtoff*1000000ULL;
Expand All @@ -33,7 +33,7 @@

int tz_seconds;
-#if defined(__GLIBC__) || defined(BLACKBERRY) || defined(__SYMBIAN32__)
+#ifndef _MSC_VER
+#if !defined(_MSC_VER) && !defined(_AIX) && !defined(__sgi) && !defined(__hpux)
time_t timezone = 0;
tm *time = localtime(&timezone);
tz_seconds = time->tm_gmtoff;
Expand All @@ -47,7 +47,7 @@

int tz_seconds;
-#if defined(__GLIBC__) || defined(BLACKBERRY) || defined(__SYMBIAN32__)
+#ifndef _MSC_VER
+#if !defined(_MSC_VER) && !defined(_AIX) && !defined(__sgi) && !defined(__hpux)
time_t timezone = 0;
tm *time = localtime(&timezone);
tz_seconds = time->tm_gmtoff;
Expand Down
20 changes: 8 additions & 12 deletions emulators/ppsspp/files/patch-Core_MIPS_JitCommon_JitCommon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,12 @@
#endif
void JitAt() {
jit->Compile(currentMIPS->pc);
@@ -95,10 +97,12 @@ const char *ppsspp_resolver(struct ud*,
*offset = addr - (uint64_t)MIPSComp::jit->GetBasePtr();
return "jitcode";
}
+#if defined(_M_IX86) || defined(_M_X64) || defined(MIPS)
if (MIPSComp::jit->Asm().IsInSpace((u8 *)(intptr_t)addr)) {
*offset = addr - (uint64_t)MIPSComp::jit->Asm().GetBasePtr();
return "dispatcher";
}
+#endif

return NULL;
@@ -76,7 +78,7 @@ std::vector<std::string> DisassembleArm2
return lines;
}

-#ifndef ARM
+#if defined(_M_IX86) || defined(_M_X64)

const char *ppsspp_resolver(struct ud*,
uint64_t addr,
17 changes: 7 additions & 10 deletions emulators/ppsspp/files/patch-Core_MemMap.cpp
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
--- Core/MemMap.cpp.orig 2015-02-26 20:05:06 UTC
+++ Core/MemMap.cpp
@@ -194,7 +194,11 @@ static bool Memory_TryBase(u32 flags) {
*view.out_ptr = *views[i - 1].out_ptr;
} else {
*view.out_ptr = (u8*)g_arena.CreateView(
+#ifdef _ARCH_32
position, view.size, base + (view.virtual_address & MEMVIEW32_MASK));
+#else
+ position, view.size, base + view.virtual_address);
+#endif
if (!*view.out_ptr)
@@ -185,7 +185,7 @@ static bool Memory_TryBase(u32 flags) {
if (!*view.out_ptr_low)
goto bail;
}
-#ifdef _M_X64
+#if defined(_ARCH_64)
*view.out_ptr = (u8*)g_arena.CreateView(
position, view.size, base + view.virtual_address);
#else
28 changes: 28 additions & 0 deletions emulators/ppsspp/files/patch-Core_Reporting.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--- Core/Reporting.cpp.orig 2015-02-26 20:05:06 UTC
+++ Core/Reporting.cpp
@@ -189,8 +189,6 @@ namespace Reporting
return "Mac";
#elif defined(__SYMBIAN32__)
return "Symbian";
-#elif defined(__FreeBSD__)
- return "BSD";
#elif defined(BLACKBERRY)
return "Blackberry";
#elif defined(LOONGSON)
@@ -199,6 +197,16 @@ namespace Reporting
return "Nokia Maemo";
#elif defined(__linux__)
return "Linux";
+#elif defined(__Bitrig__)
+ return "Bitrig";
+#elif defined(__DragonFly__)
+ return "DragonFly";
+#elif defined(__FreeBSD__)
+ return "FreeBSD";
+#elif defined(__NetBSD__)
+ return "NetBSD";
+#elif defined(__OpenBSD__)
+ return "OpenBSD";
#else
return "Unknown";
#endif
27 changes: 27 additions & 0 deletions emulators/ppsspp/files/patch-UI_CwCheatScreen.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
--- UI/CwCheatScreen.cpp.orig 2015-02-26 20:05:06 UTC
+++ UI/CwCheatScreen.cpp
@@ -72,7 +72,7 @@ void CwCheatScreen::CreateViews() {
leftColumn->Add(new Choice(d->T("Back")))->OnClick.Handle<UIScreen>(this, &UIScreen::OnBack);
//leftColumn->Add(new Choice(k->T("Add Cheat")))->OnClick.Handle(this, &CwCheatScreen::OnAddCheat);
leftColumn->Add(new Choice(k->T("Import Cheats")))->OnClick.Handle(this, &CwCheatScreen::OnImportCheat);
-#if defined(_WIN32) || defined(__APPLE__) || defined(__linux__)
+#if !defined(MOBILE_DEVICE)
leftColumn->Add(new Choice(k->T("Edit Cheat File")))->OnClick.Handle(this, &CwCheatScreen::OnEditCheatFile);
#endif
leftColumn->Add(new Choice(k->T("Enable/Disable All")))->OnClick.Handle(this, &CwCheatScreen::OnEnableAll);
@@ -179,11 +179,11 @@ UI::EventReturn CwCheatScreen::OnEditChe
if (!retval) {
ERROR_LOG(BOOT, "Failed creating notepad process");
}
-#elif defined(__APPLE__) || defined(__linux__)
-#if defined(__linux__)
- cheatFile = "xdg-open ";
-#elif defined(__APPLE__)
+#elif !defined(MOBILE_DEVICE)
+#if defined(__APPLE__)
cheatFile = "open ";
+#else
+ cheatFile = "xdg-open ";
#endif
cheatFile.append(activeCheatFile);
NOTICE_LOG(BOOT, "Launching %s", cheatFile.c_str());
18 changes: 18 additions & 0 deletions emulators/ppsspp/files/patch-UI_DevScreens.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
--- UI/DevScreens.cpp.orig 2015-02-26 20:05:06 UTC
+++ UI/DevScreens.cpp
@@ -612,12 +612,14 @@ void JitCompareScreen::UpdateDisasm() {

#if defined(ARM)
std::vector<std::string> targetDis = DisassembleArm2(block->normalEntry, block->codeSize);
-#else
+#elif defined(_M_IX86) || defined(_M_X64)
std::vector<std::string> targetDis = DisassembleX86(block->normalEntry, block->codeSize);
#endif
+#if defined(ARM) || defined(_M_IX86) || defined(_M_X64)
for (size_t i = 0; i < targetDis.size(); i++) {
rightDisasm_->Add(new TextView(targetDis[i]));
}
+#endif

int numMips = leftDisasm_->GetNumSubviews();
int numHost = rightDisasm_->GetNumSubviews();
2 changes: 1 addition & 1 deletion emulators/ppsspp/files/patch-UI_NativeApp.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
--- UI/NativeApp.cpp.orig 2015-02-26 20:05:06 UTC
+++ UI/NativeApp.cpp
@@ -295,7 +295,7 @@ void NativeInit(int argc, const char *ar
@@ -291,7 +291,7 @@ void NativeInit(int argc, const char *ar
#elif defined(BLACKBERRY) || defined(IOS)
// Packed assets are included in app
VFSRegister("", new DirectoryAssetReader(external_directory));
Expand Down
77 changes: 77 additions & 0 deletions emulators/ppsspp/files/patch-native_base_PCMain.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
--- native/base/PCMain.cpp.orig 2015-02-23 23:22:58 UTC
+++ native/base/PCMain.cpp
@@ -243,53 +243,53 @@ void System_SendMessage(const char *comm
}

void LaunchBrowser(const char *url) {
-#ifdef _WIN32
+#if defined(MOBILE_DEVICE)
+ ILOG("Would have gone to %s but LaunchBrowser is not implemented on this platform", url);
+#elif defined(_WIN32)
ShellExecute(NULL, "open", url, NULL, NULL, SW_SHOWNORMAL);
-#elif __linux__
+#elif defined(__APPLE__)
+ std::string command = std::string("open ") + url;
+ system(command.c_str());
+#else
std::string command = std::string("xdg-open ") + url;
int err = system(command.c_str());
if (err) {
ILOG("Would have gone to %s but xdg-utils seems not to be installed", url)
}
-#elif __APPLE__
- std::string command = std::string("open ") + url;
- system(command.c_str());
-#else
- ILOG("Would have gone to %s but LaunchBrowser is not implemented on this platform", url);
#endif
}

void LaunchMarket(const char *url) {
-#ifdef _WIN32
+#if defined(MOBILE_DEVICE)
+ ILOG("Would have gone to %s but LaunchMarket is not implemented on this platform", url);
+#elif defined(_WIN32)
ShellExecute(NULL, "open", url, NULL, NULL, SW_SHOWNORMAL);
-#elif __linux__
+#elif defined(__APPLE__)
+ std::string command = std::string("open ") + url;
+ system(command.c_str());
+#else
std::string command = std::string("xdg-open ") + url;
int err = system(command.c_str());
if (err) {
ILOG("Would have gone to %s but xdg-utils seems not to be installed", url)
}
-#elif __APPLE__
- std::string command = std::string("open ") + url;
- system(command.c_str());
-#else
- ILOG("Would have gone to %s but LaunchMarket is not implemented on this platform", url);
#endif
}

void LaunchEmail(const char *email_address) {
-#ifdef _WIN32
+#if defined(MOBILE_DEVICE)
+ ILOG("Would have opened your email client for %s but LaunchEmail is not implemented on this platform", email_address);
+#elif defined(_WIN32)
ShellExecute(NULL, "open", (std::string("mailto:") + email_address).c_str(), NULL, NULL, SW_SHOWNORMAL);
-#elif __linux__
+#elif defined(__APPLE__)
+ std::string command = std::string("open mailto:") + email_address;
+ system(command.c_str());
+#else
std::string command = std::string("xdg-email ") + email_address;
int err = system(command.c_str());
if (err) {
ILOG("Would have gone to %s but xdg-utils seems not to be installed", email_address)
}
-#elif __APPLE__
- std::string command = std::string("open mailto:") + email_address;
- system(command.c_str());
-#else
- ILOG("Would have opened your email client for %s but LaunchEmail is not implemented on this platform", email_address);
#endif
}

0 comments on commit afa2b69

Please sign in to comment.