From f953e235c486f3ccda3d61c25a27b5bdba28483f Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sun, 31 May 2015 14:17:28 +0200 Subject: [PATCH] Pandora support --- src/CMakeLists.txt | 44 +++++++++++++++++++++++++++++-------- src/Config.cpp | 7 ++++++ src/GLideNHQ/CMakeLists.txt | 19 ++++++++++++---- src/OpenGL.h | 3 +++ src/TextDrawer.cpp | 2 ++ 5 files changed, 62 insertions(+), 13 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cf09e0ff..f1a8e477 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,9 @@ cmake_minimum_required(VERSION 2.6) +option(GLES2 "Set to ON if targeting a GLES2 device" ${GLES2}) +option(PANDORA "Set to ON if targeting an OpenPandora" ${PANDORA}) +option(MUPENPLUSAPI "Set to ON for Mupen64Plus plugin" ${MUPENPLUSAPI}) + project( GLideN64 ) set(GLideN64_SOURCES @@ -41,8 +45,6 @@ set(GLideN64_SOURCES PostProcessor.cpp VI.cpp common/CommonAPIImpl_common.cpp - OGL3X/GLSLCombiner_ogl3x.cpp - OGL3X/UniformBlock.cpp ) if(MUPENPLUSAPI) @@ -115,6 +117,15 @@ if(SDL) ) endif(SDL) +if(PANDORA) + #Pandora as a SGX530, but it should share the bugs and limitations as SGX540 + add_definitions( + -DPANDORA + -DPowerVR_SGX_540 + -DGLES2 + ) +endif(PANDORA) + SET( ENV{FREETYPE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../../freetype ) FIND_PACKAGE( Freetype REQUIRED ) include_directories( ${FREETYPE_INCLUDE_DIRS} ) @@ -139,13 +150,28 @@ if( CMAKE_BUILD_TYPE STREQUAL "Debug") # ) endif( CMAKE_BUILD_TYPE STREQUAL "Debug") -find_package(OpenGL REQUIRED) -include_directories(${OpenGL_INCLUDE_DIRS}) -link_directories(${OpenGL_LIBRARY_DIRS}) -add_definitions(${OpenGL_DEFINITIONS}) -if(NOT OPENGL_FOUND) - message(ERROR " OPENGL not found!") -endif(NOT OPENGL_FOUND) +if(GLES2) + add_definitions( + -DGLES2 + ) + list(APPEND GLideN64_SOURCES + GLES2/GLSLCombiner_gles2.cpp + GLES2/UniformSet.cpp + ) + SET(OPENGL_LIBRARIES -lGLESv2 -lEGL) +else(GLES2) + find_package(OpenGL REQUIRED) + include_directories(${OpenGL_INCLUDE_DIRS}) + link_directories(${OpenGL_LIBRARY_DIRS}) + add_definitions(${OpenGL_DEFINITIONS}) + if(NOT OPENGL_FOUND) + message(ERROR " OPENGL not found!") + endif(NOT OPENGL_FOUND) + list(APPEND GLideN64_SOURCES + OGL3X/GLSLCombiner_ogl3x.cpp + OGL3X/UniformBlock.cpp + ) +endif(GLES2) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") SET(GCC_CPP11_COMPILE_FLAGS "-std=c++0x -static-libgcc -static-libstdc++") diff --git a/src/Config.cpp b/src/Config.cpp index 1644a084..2d1f38e4 100644 --- a/src/Config.cpp +++ b/src/Config.cpp @@ -12,8 +12,13 @@ void Config::resetToDefaults() { version = CONFIG_VERSION_CURRENT; +#ifdef PANDORA + video.fullscreen = 1; + video.fullscreenWidth = video.windowedWidth = 800; +#else video.fullscreen = 0; video.fullscreenWidth = video.windowedWidth = 640; +#endif video.fullscreenHeight = video.windowedHeight = 480; video.fullscreenRefresh = 60; video.multisampling = 0; @@ -60,6 +65,8 @@ void Config::resetToDefaults() font.name.assign("arial.ttf"); #elif defined (ANDROID) font.name.assign("DroidSans.ttf"); +#elif defined (PANDORA) + font.name.assign("LiberationMono-Regular.ttf"); #else font.name = "FreeSans.ttf"; #endif diff --git a/src/GLideNHQ/CMakeLists.txt b/src/GLideNHQ/CMakeLists.txt index 1db3d199..f3f4ad8d 100644 --- a/src/GLideNHQ/CMakeLists.txt +++ b/src/GLideNHQ/CMakeLists.txt @@ -20,7 +20,11 @@ set(GLideNHQ_SOURCES TxUtil.cpp ) +if(PANDORA) +include_directories( osal ) +else(PANDORA) include_directories( inc osal ) +endif(PANDORA) LINK_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/lib ) if(UNIX) @@ -102,10 +106,17 @@ if( NOT GHQCHK ) # set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") # find_library(PNGLIB libpng.a) - target_link_libraries(GLideNHQ PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/lib/libpng.a - ${CMAKE_CURRENT_SOURCE_DIR}/lib/libz.a - ) + if(PANDORA) + target_link_libraries(GLideNHQ PRIVATE + /mnt/utmp/codeblocks/usr/lib/libpng.a + /mnt/utmp/codeblocks/usr/lib/libz.a + ) + else(PANDORA) + target_link_libraries(GLideNHQ PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/lib/libpng.a + ${CMAKE_CURRENT_SOURCE_DIR}/lib/libz.a + ) + endif(PANDORA) endif( CMAKE_BUILD_TYPE STREQUAL "Release") else( NOT GHQCHK ) add_definitions(-DGHQCHK) diff --git a/src/OpenGL.h b/src/OpenGL.h index 161840ac..076cd401 100644 --- a/src/OpenGL.h +++ b/src/OpenGL.h @@ -18,6 +18,9 @@ #define GL_DRAW_FRAMEBUFFER GL_FRAMEBUFFER #define GL_READ_FRAMEBUFFER GL_FRAMEBUFFER #define GLESX +#ifdef PANDORA +typedef char GLchar; +#endif #elif defined(GLES3) #include #include diff --git a/src/TextDrawer.cpp b/src/TextDrawer.cpp index c7e5bc65..2bea7a4f 100644 --- a/src/TextDrawer.cpp +++ b/src/TextDrawer.cpp @@ -227,6 +227,8 @@ bool getFontFileName(char * _strName) sprintf(_strName, "%s/Fonts/%s", pSysPath, config.font.name.c_str()); #elif defined (ANDROID) sprintf(_strName, "/system/fonts/%s", config.font.name.c_str()); +#elif defined (PANDORA) + sprintf(_strName, "/usr/share/fonts/truetype/%s", config.font.name.c_str()); #else sprintf(_strName, "/usr/share/fonts/truetype/freefont/%s", config.font.name.c_str()); #endif