mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 07:17:45 -04:00
make, add legacy dingux and retrofw, make libavcodec optional
This commit is contained in:
parent
a6204821d5
commit
5d3b7ae27b
3 changed files with 57 additions and 27 deletions
9
Makefile
9
Makefile
|
@ -91,12 +91,13 @@ ifeq "$(PLATFORM)" "opendingux"
|
||||||
cp $< .od_data/PicoDrive
|
cp $< .od_data/PicoDrive
|
||||||
$(STRIP) .od_data/PicoDrive
|
$(STRIP) .od_data/PicoDrive
|
||||||
|
|
||||||
ifneq (,$(filter %__OPENDINGUX__, $(CFLAGS)))
|
ifneq (,$(filter %__DINGUX__, $(CFLAGS)))
|
||||||
# "legacy" opendingux without opk support
|
# "legacy" dingux without opk support
|
||||||
$(TARGET)-dge.zip: .od_data
|
$(TARGET)-dge.zip: .od_data
|
||||||
rm -f .od_data/default.*.desktop
|
rm -f .od_data/default.*.desktop
|
||||||
cd .od_data && zip -9 -r ../$@ *
|
cd .od_data && zip -9 -r ../$@ *
|
||||||
all: $(TARGET)-dge.zip
|
all: $(TARGET)-dge.zip
|
||||||
|
CFLAGS += -DSDL_SURFACE_SW # some legacy dinguces had bugs in HWSURFACE
|
||||||
else
|
else
|
||||||
$(TARGET).opk: .od_data
|
$(TARGET).opk: .od_data
|
||||||
rm -f .od_data/PicoDrive.dge
|
rm -f .od_data/PicoDrive.dge
|
||||||
|
@ -104,8 +105,8 @@ $(TARGET).opk: .od_data
|
||||||
all: $(TARGET).opk
|
all: $(TARGET).opk
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq (,$(filter %__GCW0__ %__RG350__, $(CFLAGS)))
|
ifneq (,$(filter %mips32r2, $(CFLAGS)))
|
||||||
CFLAGS += -DMIPS_USE_SYNCI # mips32r2 clear_cache uses SYNCI instead of syscall
|
CFLAGS += -DMIPS_USE_SYNCI # mips32r2 clear_cache uses SYNCI instead of a syscall
|
||||||
endif
|
endif
|
||||||
|
|
||||||
OBJS += platform/opendingux/inputmap.o
|
OBJS += platform/opendingux/inputmap.o
|
||||||
|
|
28
README.md
28
README.md
|
@ -1,14 +1,17 @@
|
||||||
This is my foray into dynamic recompilation using PicoDrive, a
|
This is my foray into dynamic recompilation using PicoDrive, a
|
||||||
Megadrive / Genesis / Sega CD / Mega CD / 32X / SMS emulator.
|
Megadrive / Genesis / Sega CD / Mega CD / 32X / SMS emulator.
|
||||||
|
|
||||||
I added support for MIPS (mips32r1), ARM64 (aarch64) and RISC-V (RV64IM) to the
|
I added support for MIPS (mips32r2), ARM64 (armv8), RISC-V (RV64IM) and
|
||||||
SH2 recompiler, as well as spent much effort to optimize the DRC-generated code.
|
PowerPC (G4/2.03) support to the SH2 recompiler, as well as spent much effort to
|
||||||
I also optimized SH2 memory access inside the emulator, and did some work on
|
optimize the DRC-generated code. I also optimized SH2 memory access inside the
|
||||||
M68K/SH2 CPU synchronization to fix some problems and speed up the emulator.
|
emulator, and did some work on M68K/SH2 CPU synchronization to fix some problems
|
||||||
|
and speed up the emulator.
|
||||||
|
|
||||||
It got a bit out of hand. I ended up doing fixes and optimizations all over the
|
It got a bit out of hand. I ended up doing fixes and optimizations all over the
|
||||||
place, mainly for 32X and CD, 32X graphics handling, and probably some more,
|
place, mainly for 32X and CD, graphics handling, sound, and probably some more,
|
||||||
see the commit history. As a result, 32X emulation speed has improved a lot.
|
see the commit history. As a result, 32X emulation speed has improved a lot, a
|
||||||
|
lot of bugs were fixed, and some new features (e.g. chd file support) have been
|
||||||
|
added.
|
||||||
|
|
||||||
### compiling
|
### compiling
|
||||||
|
|
||||||
|
@ -31,8 +34,9 @@ platform|toolchain|configure command
|
||||||
--------|---------|-----------------
|
--------|---------|-----------------
|
||||||
gp2x,wiz,caanoo|open2x|CROSS_COMPILE=arm-open2x-linux- CFLAGS="-I$TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/include" LDFLAGS="--sysroot $TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux -L$TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/lib" ./configure --platform=gp2x
|
gp2x,wiz,caanoo|open2x|CROSS_COMPILE=arm-open2x-linux- CFLAGS="-I$TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/include" LDFLAGS="--sysroot $TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux -L$TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/lib" ./configure --platform=gp2x
|
||||||
gp2x,wiz,caanoo|open2x with ubuntu arm gcc 4.7|CROSS_COMPILE=arm-linux-gnueabi- CFLAGS="-I$TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/include" LDFLAGS="-B$TC/gcc-4.1.1-glibc-2.3.6/lib/gcc/arm-open2x-linux/4.1.1 -B$TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/lib -L$TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/lib" ./configure --platform=gp2x
|
gp2x,wiz,caanoo|open2x with ubuntu arm gcc 4.7|CROSS_COMPILE=arm-linux-gnueabi- CFLAGS="-I$TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/include" LDFLAGS="-B$TC/gcc-4.1.1-glibc-2.3.6/lib/gcc/arm-open2x-linux/4.1.1 -B$TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/lib -L$TC/gcc-4.1.1-glibc-2.3.6/arm-open2x-linux/lib" ./configure --platform=gp2x
|
||||||
opendingux|opendingux|CROSS_COMPILE=mipsel-linux- CFLAGS="-I$TC/usr/include -I$TC/usr/include/SDL" LDFLAGS="--sysroot $TC -L$TC/lib" ./configure --platform=opendingux
|
dingux|dingux|CROSS_COMPILE=mipsel-linux- CFLAGS="-I$TC/usr/include -I$TC/usr/include/SDL" LDFLAGS="--sysroot $TC -L$TC/lib" ./configure --platform=dingux
|
||||||
opendingux|opendingux with ubuntu mips gcc 5.4|CROSS_COMPILE=mipsel-linux-gnu- CFLAGS="-I$TC/usr/include -I$TC/usr/include/SDL" LDFLAGS="-B$TC/usr/lib -B$TC/lib -Wl,-rpath-link=$TC/usr/lib -Wl,-rpath-link=$TC/lib" ./configure --platform=opendingux
|
dingux|dingux with ubuntu mips gcc 5.4|CROSS_COMPILE=mipsel-linux-gnu- CFLAGS="-I$TC/usr/include -I$TC/usr/include/SDL" LDFLAGS="-B$TC/usr/lib -B$TC/lib -Wl,-rpath-link=$TC/usr/lib -Wl,-rpath-link=$TC/lib" ./configure --platform=dingux
|
||||||
|
retrofw|retrofw|CROSS_COMPILE=mipsel-linux- CFLAGS="-I $TC/include -I $TC/include/SDL -Wno-unused-result" LDFLAGS="--sysroot $TC/mipsel-buildroot-linux-uclibc/sysroot" ./configure --platform=retrofw
|
||||||
gcw0|gcw0|CROSS_COMPILE=mipsel-gcw0-linux-uclibc- CFLAGS="-I$TC/usr/mipsel-gcw0-linux-uclibc/sysroot/usr/include -I$TC/usr/mipsel-gcw0-linux-uclibc/sysroot/usr/include/SDL" LDFLAGS="--sysroot $TC/usr/mipsel-gcw0-linux-uclibc/sysroot" ./configure --platform=gcw0
|
gcw0|gcw0|CROSS_COMPILE=mipsel-gcw0-linux-uclibc- CFLAGS="-I$TC/usr/mipsel-gcw0-linux-uclibc/sysroot/usr/include -I$TC/usr/mipsel-gcw0-linux-uclibc/sysroot/usr/include/SDL" LDFLAGS="--sysroot $TC/usr/mipsel-gcw0-linux-uclibc/sysroot" ./configure --platform=gcw0
|
||||||
rg350|rg350|CROSS_COMPILE=mipsel-linux- CFLAGS="-I$TC/usr/include -I$TC/usr/include/SDL" LDFLAGS="--sysroot $TC -L$TC/lib" ./configure --platform=rg350
|
rg350|rg350|CROSS_COMPILE=mipsel-linux- CFLAGS="-I$TC/usr/include -I$TC/usr/include/SDL" LDFLAGS="--sysroot $TC -L$TC/lib" ./configure --platform=rg350
|
||||||
|
|
||||||
|
@ -42,7 +46,7 @@ After configure, compile with
|
||||||
|
|
||||||
> make
|
> make
|
||||||
|
|
||||||
### helix MP3 decoder
|
### helix MP3 decoder for ARM
|
||||||
|
|
||||||
For 32 bit ARM platforms, there is the possibility to compile the helix MP3
|
For 32 bit ARM platforms, there is the possibility to compile the helix MP3
|
||||||
decoder into a shared library to be able to use MP3 audio files with CD games.
|
decoder into a shared library to be able to use MP3 audio files with CD games.
|
||||||
|
@ -60,10 +64,10 @@ the PicoDrive binary is.
|
||||||
### installing
|
### installing
|
||||||
|
|
||||||
You need to install the resulting binary onto your device manually.
|
You need to install the resulting binary onto your device manually.
|
||||||
For opendingux and gcw0, copy the opk to your SD card.
|
For opendingux, gcw0, and rg350, copy the opk to your SD card.
|
||||||
For gp2x, wiz and caanoo, the easiest way is to unpack
|
For gp2x, wiz, and caanoo, the easiest way is to unpack
|
||||||
[PicoDrive_191.zip](http://notaz.gp2x.de/releases/PicoDrive/PicoDrive_191.zip)
|
[PicoDrive_191.zip](http://notaz.gp2x.de/releases/PicoDrive/PicoDrive_191.zip)
|
||||||
on your SD card and replace the PicoDrive binary.
|
on your SD card and replace the PicoDrive binary.
|
||||||
|
For legacy dingux, unpack the dge zip and copy the files to your SD card.
|
||||||
|
|
||||||
Send bug reports, fixes etc to <derkub@gmail.com>
|
Send bug reports, fixes etc to <derkub@gmail.com>
|
||||||
Kai-Uwe Bloem
|
|
||||||
|
|
33
configure
vendored
33
configure
vendored
|
@ -39,7 +39,7 @@ check_define()
|
||||||
# "" means "autodetect".
|
# "" means "autodetect".
|
||||||
|
|
||||||
# TODO this is annoyingly messy. should have platform and device
|
# TODO this is annoyingly messy. should have platform and device
|
||||||
platform_list="generic pandora gp2x wiz caanoo opendingux retrofw gcw0 rg350 rpi1 rpi2 psp"
|
platform_list="generic pandora gp2x wiz caanoo dingux retrofw gcw0 rg350 opendingux rpi1 rpi2 psp"
|
||||||
platform="generic"
|
platform="generic"
|
||||||
sound_driver_list="oss alsa sdl"
|
sound_driver_list="oss alsa sdl"
|
||||||
sound_drivers=""
|
sound_drivers=""
|
||||||
|
@ -93,16 +93,32 @@ set_platform()
|
||||||
;;
|
;;
|
||||||
generic)
|
generic)
|
||||||
;;
|
;;
|
||||||
opendingux | retrofw | gcw0 | rg350)
|
dingux)
|
||||||
|
# dingoo a320, ritmix rzx-50, the like. all have ingenic MIPS cpus <= JZ4755
|
||||||
|
sound_drivers="sdl"
|
||||||
|
# uses a predecessor of opendingux
|
||||||
|
CFLAGS="$CFLAGS -D__DINGUX__ -march=mips32 -msoft-float"
|
||||||
|
platform="opendingux"
|
||||||
|
;;
|
||||||
|
retrofw)
|
||||||
|
# devices using retrofw. AFAIK all have ingenic MIPS cpus JZ4760 with fpu
|
||||||
|
sound_drivers="sdl"
|
||||||
|
# uses it's own modified version of opendingux
|
||||||
|
CFLAGS="$CFLAGS -D__RETROFW__ -march=mips32"
|
||||||
|
platform="opendingux"
|
||||||
|
;;
|
||||||
|
opendingux | gcw0 | rg350)
|
||||||
|
# more modern devices using opendingux, generally using cpus >= JZ4770
|
||||||
sound_drivers="sdl"
|
sound_drivers="sdl"
|
||||||
# all are more or less based on opendingux. save device type as C define.
|
# all are more or less based on opendingux. save device type as C define.
|
||||||
CFLAGS="$CFLAGS -D__`echo $platform | tr '[a-z]' '[A-Z]'`__"
|
CFLAGS="$CFLAGS -D__`echo $platform | tr '[a-z]' '[A-Z]'`__ -march=mips32r2"
|
||||||
platform="opendingux"
|
platform="opendingux"
|
||||||
;;
|
;;
|
||||||
pandora)
|
pandora)
|
||||||
sound_drivers="oss alsa"
|
sound_drivers="oss alsa"
|
||||||
optimize_cortexa8="yes"
|
optimize_cortexa8="yes"
|
||||||
have_arm_neon="yes"
|
have_arm_neon="yes"
|
||||||
|
have_libavcodec="yes"
|
||||||
;;
|
;;
|
||||||
gp2x | wiz | caanoo)
|
gp2x | wiz | caanoo)
|
||||||
sound_drivers="oss"
|
sound_drivers="oss"
|
||||||
|
@ -137,6 +153,8 @@ for opt do
|
||||||
;;
|
;;
|
||||||
--sound-drivers=*) sound_drivers="$optarg"
|
--sound-drivers=*) sound_drivers="$optarg"
|
||||||
;;
|
;;
|
||||||
|
--with-libavcodec=*) have_libavcodec="$optarg"
|
||||||
|
;;
|
||||||
*) echo "ERROR: unknown option $opt"; show_help="yes"
|
*) echo "ERROR: unknown option $opt"; show_help="yes"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -149,6 +167,7 @@ if [ "$show_help" = "yes" ]; then
|
||||||
echo " available: $platform_list"
|
echo " available: $platform_list"
|
||||||
echo " --sound-drivers=LIST sound output drivers [guessed]"
|
echo " --sound-drivers=LIST sound output drivers [guessed]"
|
||||||
echo " available: $sound_driver_list"
|
echo " available: $sound_driver_list"
|
||||||
|
echo " --with-libavcodec=yes|no use libavcodec for mp3 decoding"
|
||||||
echo "influential environment variables:"
|
echo "influential environment variables:"
|
||||||
echo " CROSS_COMPILE CC CXX AS STRIP CFLAGS ASFLAGS LDFLAGS LDLIBS"
|
echo " CROSS_COMPILE CC CXX AS STRIP CFLAGS ASFLAGS LDFLAGS LDLIBS"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -363,6 +382,8 @@ check_zlib -lz && MAIN_LDLIBS="$MAIN_LDLIBS -lz" || need_zlib="yes"
|
||||||
MAIN_LDLIBS="-lpng $MAIN_LDLIBS"
|
MAIN_LDLIBS="-lpng $MAIN_LDLIBS"
|
||||||
check_libpng || fail "please install libpng (libpng-dev)"
|
check_libpng || fail "please install libpng (libpng-dev)"
|
||||||
|
|
||||||
|
case "$have_libavcodec" in
|
||||||
|
y|Y|yes)
|
||||||
if check_libavcodec; then
|
if check_libavcodec; then
|
||||||
have_libavcodec="yes"
|
have_libavcodec="yes"
|
||||||
# add -ldl if needed
|
# add -ldl if needed
|
||||||
|
@ -370,7 +391,11 @@ if check_libavcodec; then
|
||||||
*"-ldl"*) ;;
|
*"-ldl"*) ;;
|
||||||
*) MAIN_LDLIBS="-ldl $MAIN_LDLIBS" ;;
|
*) MAIN_LDLIBS="-ldl $MAIN_LDLIBS" ;;
|
||||||
esac
|
esac
|
||||||
fi
|
else
|
||||||
|
have_libavcodec="no"
|
||||||
|
fi ;;
|
||||||
|
*) have_libavcodec="no" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
#if check_libchdr; then
|
#if check_libchdr; then
|
||||||
# have_libchdr="yes"
|
# have_libchdr="yes"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue