Add Rpi1 and Rpi2 support with GLES upscaling
authorChips-fr <darcelf@gmail.com>
Wed, 20 Jan 2016 19:34:46 +0000 (20:34 +0100)
committerChips-fr <darcelf@gmail.com>
Wed, 20 Jan 2016 19:34:46 +0000 (20:34 +0100)
Makefile
README
configure

index 8e2feee..eecb768 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@ TARGET ?= PicoDrive
 CFLAGS += -Wall -ggdb -falign-functions=2
 CFLAGS += -I.
 ifndef DEBUG
-CFLAGS += -O2 -DNDEBUG -ffunction-sections
+CFLAGS += -O3 -DNDEBUG -ffunction-sections
 ifeq ($(findstring clang,$(CC)),)
 LDFLAGS += -Wl,--gc-sections
 endif
@@ -73,6 +73,18 @@ OBJS += platform/opendingux/inputmap.o
 # OpenDingux is a generic platform, really.
 PLATFORM := generic
 endif
+ifeq ("$(PLATFORM)",$(filter "$(PLATFORM)","rpi1" "rpi2"))
+CFLAGS += -DHAVE_GLES -DRASPBERRY
+CFLAGS += -I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads/ -I/opt/vc/include/interface/vmcs_host/linux/
+LDFLAGS += -ldl -lbcm_host -L/opt/vc/lib -lEGL -lGLESv2
+OBJS += platform/linux/emu.o platform/linux/blit.o # FIXME
+OBJS += platform/common/plat_sdl.o
+OBJS += platform/libpicofe/plat_sdl.o platform/libpicofe/in_sdl.o
+OBJS += platform/libpicofe/plat_dummy.o
+OBJS += platform/libpicofe/gl.o
+OBJS += platform/libpicofe/gl_platform.o
+USE_FRONTEND = 1
+endif
 ifeq "$(PLATFORM)" "generic"
 OBJS += platform/linux/emu.o platform/linux/blit.o # FIXME
 OBJS += platform/common/plat_sdl.o
diff --git a/README b/README
index fbcecc1..3254fe2 100644 (file)
--- a/README
+++ b/README
@@ -13,3 +13,9 @@ then taken over and expanded by notaz.
 PicoDrive was the first emulator ever to properly emulate Virtua Racing and
 it's SVP chip.
 
+How to compile on Raspbian Wheezy:
+
+export CC=gcc-4.8
+export CXX=g++-4.8
+./configure --platform=rpi2
+make
\ No newline at end of file
index 96cea7e..6cc4254 100755 (executable)
--- a/configure
+++ b/configure
@@ -31,7 +31,7 @@ check_define()
 # setting options to "yes" or "no" will make that choice default,
 # "" means "autodetect".
 
-platform_list="generic pandora gp2x opendingux"
+platform_list="generic pandora gp2x opendingux rpi1 rpi2"
 platform="generic"
 sound_driver_list="oss alsa sdl"
 sound_drivers=""
@@ -44,6 +44,8 @@ need_sdl="no"
 need_xlib="no"
 # these are for known platforms
 optimize_cortexa8="no"
+optimize_cortexa7="no"
+optimize_arm1176jzf="no"
 optimize_arm926ej="no"
 optimize_arm920="no"
 
@@ -67,6 +69,13 @@ set_platform()
 {
   platform=$1
   case "$platform" in
+  rpi1)
+    optimize_arm1176jzf="yes"
+    ;;
+  rpi2)
+    optimize_cortexa7="yes"
+    have_arm_neon="yes"
+    ;;
   generic)
     ;;
   opendingux)
@@ -159,6 +168,14 @@ arm*)
     CFLAGS="$CFLAGS -mcpu=cortex-a8 -mtune=cortex-a8"
     ASFLAGS="$ASFLAGS -mcpu=cortex-a8"
   fi
+  if [ "$optimize_cortexa7" = "yes" ]; then
+    CFLAGS="$CFLAGS -mcpu=cortex-a7"
+    ASFLAGS="$ASFLAGS -mcpu=cortex-a7"
+  fi
+  if [ "$optimize_arm1176jzf" = "yes" ]; then
+    CFLAGS="$CFLAGS -mcpu=arm1176jzf-s -mfloat-abi=hard"
+    ASFLAGS="$ASFLAGS -mcpu=arm1176jzf-s -mfloat-abi=hard"
+  fi
   if [ "$optimize_arm926ej" = "yes" ]; then
     CFLAGS="$CFLAGS -mcpu=arm926ej-s -mtune=arm926ej-s"
     ASFLAGS="$ASFLAGS -mcpu=arm926ej-s -mfloat-abi=softfp"
@@ -229,7 +246,7 @@ arm*)
 esac
 
 case "$platform" in
-generic | opendingux)
+rpi1 | rpi2 | generic | opendingux)
   need_sdl="yes"
   ;;
 esac