From fbf078880653f2cb9dfd4704f52680e49858c734 Mon Sep 17 00:00:00 2001 From: pkos Date: Sat, 2 Apr 2022 17:40:42 -0400 Subject: [PATCH] IPF Support --- Makefile.libretro | 222 +++++---------- src/capsimg_binary/CAPSImg.lib | Bin 0 -> 7052 bytes src/capsimg_binary/CapsAPI.h | 274 +++++++++++++++++++ src/capsimg_binary/CapsFDC.h | 246 +++++++++++++++++ src/capsimg_binary/CapsForm.h | 54 ++++ src/capsimg_binary/CapsLib.h | 38 +++ src/capsimg_binary/CapsLibAll.h | 11 + src/capsimg_binary/CapsLibVersion.h | 7 + src/capsimg_binary/ComLib.h | 20 ++ src/capsimg_binary/CommonTypes.h | 104 +++++++ src/capsimg_binary/x64/CAPSImg.lib | Bin 0 -> 6924 bytes src/ipflib42_w32/HISTORY.txt | 25 ++ src/ipflib42_w32/LICENSE.txt | 411 ++++++++++++++++++++++++++++ src/ipflib42_w32/README.txt | 12 + src/ipflib42_win_x64/HISTORY.txt | 25 ++ src/ipflib42_win_x64/LICENSE.txt | 411 ++++++++++++++++++++++++++++ src/ipflib42_win_x64/README.txt | 12 + 17 files changed, 1718 insertions(+), 154 deletions(-) create mode 100644 src/capsimg_binary/CAPSImg.lib create mode 100644 src/capsimg_binary/CapsAPI.h create mode 100644 src/capsimg_binary/CapsFDC.h create mode 100644 src/capsimg_binary/CapsForm.h create mode 100644 src/capsimg_binary/CapsLib.h create mode 100644 src/capsimg_binary/CapsLibAll.h create mode 100644 src/capsimg_binary/CapsLibVersion.h create mode 100644 src/capsimg_binary/ComLib.h create mode 100644 src/capsimg_binary/CommonTypes.h create mode 100644 src/capsimg_binary/x64/CAPSImg.lib create mode 100644 src/ipflib42_w32/HISTORY.txt create mode 100644 src/ipflib42_w32/LICENSE.txt create mode 100644 src/ipflib42_w32/README.txt create mode 100644 src/ipflib42_win_x64/HISTORY.txt create mode 100644 src/ipflib42_win_x64/LICENSE.txt create mode 100644 src/ipflib42_win_x64/README.txt diff --git a/Makefile.libretro b/Makefile.libretro index 053620146..1190799d4 100755 --- a/Makefile.libretro +++ b/Makefile.libretro @@ -1,8 +1,17 @@ CORE_DIR := . LIBRETRO_DIR = $(CORE_DIR)/libretro ZLIB_DIR = $(LIBRETRO_DIR)/utils/zlib -STATIC_LINKING=0 -STATIC_LINKING_LINK=0 + +IPFSUPPORT ?= 0 +IPFDIR ?= + +ifeq ($(IPFSUPPORT), 1) +CAPS_DIR = $(IPFDIR) +CAPS_LIB = -L$(CAPS_DIR) -lCAPSImg_x64 +else +CAPS_DIR = +CAPS_LIB = +endif ifeq ($(platform),) platform = unix @@ -17,93 +26,30 @@ else ifneq ($(findstring win,$(shell uname -a)),) endif endif -EXTERNAL_ZLIB ?= 0 +EXTERNAL_ZLIB = 0 TARGET_NAME := hatari -GIT_VERSION := " $(shell git rev-parse --short HEAD || echo unknown)" -ifneq ($(GIT_VERSION)," unknown") - CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\" -endif ifeq ($(platform), unix) - TARGET := $(TARGET_NAME)_libretro.so + CC = gcc + TARGET := $(TARGET_NAME)_libretro.so fpic := -fPIC - SHARED := -lpthread -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined -Wl,--as-needed - PLATFLAGS := -DLSB_FIRST -DALIGN_DWORD -ifeq ($(ARCH), arm) - CFLAGS += -mno-unaligned-access -endif + SHARED := -lz -lpthread -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined + PLATFLAGS := -DLSB_FIRST -DALIGN_DWORD else ifeq ($(platform), android) CC = arm-linux-androideabi-gcc AR = @arm-linux-androideabi-ar LD = @arm-linux-androideabi-g++ - TARGET := $(TARGET_NAME)_libretro.so + TARGET := $(TARGET_NAME)_libretro.so fpic := -fPIC SHARED := -Wl,--fix-cortex-a8 -llog -lz -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined PLATFLAGS := -DAND -DLSB_FIRST -DALIGN_DWORD - -# Classic Platforms #################### -# Platform affix = classic__<ÂľARCH> -# Help at https://modmyclassic.com/comp - -# (armv7 a7, hard point, neon based) ### -# NESC, SNESC, C64 mini -else ifeq ($(platform), classic_armv7_a7) - TARGET := $(TARGET_NAME)_libretro.so - fpic := -fPIC - SHARED := -lz -lpthread -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined - CFLAGS += -Ofast \ - -fdata-sections -ffunction-sections -Wl,--gc-sections \ - -fno-stack-protector -fno-ident -fomit-frame-pointer \ - -falign-functions=1 -falign-jumps=1 -falign-loops=1 \ - -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-unroll-loops \ - -fmerge-all-constants -fno-math-errno \ - -marm -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard - HAVE_NEON = 1 - ARCH = arm - PLATFLAGS := -DLSB_FIRST -DALIGN_DWORD - ifeq ($(shell echo `$(CC) -dumpversion` "< 4.9" | bc -l), 1) - CFLAGS += -march=armv7-a - else - CFLAGS += -march=armv7ve - # If gcc is 5.0 or later - ifeq ($(shell echo `$(CC) -dumpversion` ">= 5" | bc -l), 1) - LDFLAGS += -static-libgcc -static-libstdc++ - endif - endif -####################################### - else ifeq ($(platform), osx) TARGET := $(TARGET_NAME)_libretro.dylib fpic := -fPIC SHARED := -dynamiclib PLATFLAGS := -DLSB_FIRST -DALIGN_DWORD - -# ARM -else ifneq (,$(findstring armv,$(platform))) - CC = gcc - TARGET := $(TARGET_NAME)_libretro.so - fpic := -fPIC -fsigned-char - SHARED := -lz -lpthread -shared -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined - PLATFLAGS := -DLSB_FIRST -DALIGN_DWORD - CFLAGS += -marm -ifneq (,$(findstring neon,$(platform))) - CFLAGS += -mfpu=neon - ASFLAGS += -mfpu=neon - HAVE_NEON = 1 -endif -ifneq (,$(findstring softfloat,$(platform))) - CFLAGS += -mfloat-abi=softfp - ASFLAGS += -mfloat-abi=softfp -else ifneq (,$(findstring hardfloat,$(platform))) - CFLAGS += -mfloat-abi=hard - ASFLAGS += -mfloat-abi=hard -endif - CFLAGS += -DARM - -# iOS -else ifneq (,$(findstring ios,$(platform))) - +else ifeq ($(platform), ios) TARGET := $(TARGET_NAME)_libretro_ios.dylib fpic := -fPIC SHARED := -dynamiclib @@ -111,30 +57,15 @@ else ifneq (,$(findstring ios,$(platform))) ifeq ($(IOSSDK),) IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path) endif - ifeq ($(platform),ios-arm64) - CC = cc -arch arm64 -isysroot $(IOSSDK) - else - CC = cc -arch armv7 -isysroot $(IOSSDK) - endif - CFLAGS += -DIOS -marm -DHAVE_POSIX_MEMALIGN=1 -w - -ifeq ($(platform),$(filter $(platform),ios9 ios-arm64)) - CC += -miphoneos-version-min=8.0 - CFLAGS += -miphoneos-version-min=8.0 -else - CC += -miphoneos-version-min=5.0 - CFLAGS += -miphoneos-version-min=5.0 -endif - -else ifeq ($(platform), tvos-arm64) - TARGET := $(TARGET_NAME)_libretro_tvos.dylib - fpic := -fPIC - SHARED := -dynamiclib - ifeq ($(IOSSDK),) - IOSSDK := $(shell xcodebuild -version -sdk appletvos Path) - endif + CC = clang -arch armv7 -isysroot $(IOSSDK) CFLAGS += -DIOS -marm -DHAVE_POSIX_MEMALIGN=1 -w + OSXVER = `sw_vers -productVersion | cut -d. -f 2` + OSX_LT_MAVERICKS = `(( $(OSXVER) <= 9)) && echo "YES"` + ifeq ($(OSX_LT_MAVERICKS),"YES") + CC += -miphoneos-version-min=5.0 + CFLAGS += -miphoneos-version-min=5.0 + endif else ifeq ($(platform), wii) TARGET := $(TARGET_NAME)_libretro_wii.a @@ -147,70 +78,37 @@ else ifeq ($(platform), wii) SHARED := -lm -lpthread -lc PLATFLAGS := -DALIGN_DWORD EXTERNAL_ZLIB = 1 - STATIC_LINKING=1 - STATIC_LINKING_LINK=1 -# Nintendo Game Cube / Wii / WiiU -else ifeq ($(platform), wiiu) - TARGET := $(TARGET_NAME)_libretro_$(platform).a - CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) - CXX = $(DEVKITPPC)/bin/powerpc-eabi-g++$(EXE_EXT) - AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) - PLATFORM_DEFINES += -DSDL_BYTEORDER=SDL_BIG_ENDIAN -DMSB_FIRST -DBYTE_ORDER=BIG_ENDIAN -DBYTE_ORDER=BIG_ENDIAN - PLATFORM_DEFINES += -DGEKKO -mcpu=750 -meabi -mhard-float -DHAVE_STRTOF_L -DHAVE_LOCALE - PLATFORM_DEFINES += -U__INT32_TYPE__ -U __UINT32_TYPE__ -D__INT32_TYPE__=int -D_GNU_SOURCE - PLATFORM_DEFINES += -DWIIU -DHW_RVL -mwup -DWORDS_BIGENDIAN=1 -Dpowerpc -D__POWERPC__ -D__ppc__ - STATIC_LINKING=1 - STATIC_LINKING_LINK = 1 - CFLAGS += -DALIGN_DWORD $(PLATFORM_DEFINES) -I$(ZLIB_DIR) - -# Lightweight PS3 Homebrew SDK -else ifneq (,$(filter $(platform), ps3 psl1ght)) - TARGET := $(TARGET_NAME)_libretro_$(platform).a - CC = $(PS3DEV)/ppu/bin/ppu-$(COMMONLV)gcc$(EXE_EXT) - CXX = $(PS3DEV)/ppu/bin/ppu-$(COMMONLV)g++$(EXE_EXT) - AR = $(PS3DEV)/ppu/bin/ppu-$(COMMONLV)ar$(EXE_EXT) - SHARED := -lm -lpthread -lc - CFLAGS += -DSDL_BYTEORDER=SDL_BIG_ENDIAN -DMSB_FIRST -DBYTE_ORDER=BIG_ENDIAN -DBYTE_ORDER=BIG_ENDIAN \ - -D__PS3__ -DHAVE_MEMALIGN -DHAVE_ASPRINTF -I$(ZLIB_DIR) - PLATFLAGS := -DALIGN_DWORD - EXTERNAL_ZLIB = 1 - ifeq ($(platform), psl1ght) - CFLAGS += -D__PSL1GHT__ - endif - STATIC_LINKING=1 - STATIC_LINKING_LINK=1 - -else ifeq ($(platform), vita) - TARGET := $(TARGET_NAME)_libretro_vita.a - CC = arm-vita-eabi-gcc - CXX = arm-vita-eabi-g++ - AR = arm-vita-eabi-ar - CFLAGS += -DLSB_FIRST -DSDL_BYTEORDER=SDL_LIL_ENDIAN - PLATFLAGS := -U__INT32_TYPE__ -U __UINT32_TYPE__ -D__INT32_TYPE__=int -DHAVE_STRTOUL -DVITA -I$(ZLIB_DIR) -DHAVE_ALPHASORT -DHAVE_SCANDIR - STATIC_LINKING=1 - STATIC_LINKING_LINK=1 +else ifeq ($(platform), ps3) + TARGET := $(TARGET_NAME)_libretro_ps3.a + CC = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-gcc.exe + CXX = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-g++.exe + AR = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ar.exe + SHARED := -lm -lpthread -lc + CFLAGS += -DSDL_BYTEORDER=SDL_BIG_ENDIAN -DMSB_FIRST -DBYTE_ORDER=BIG_ENDIAN -DBYTE_ORDER=BIG_ENDIAN \ + -D__CELLOS_LV2 -DHAVE_MEMALIGN -DHAVE_ASPRINTF -I$(ZLIB_DIR) + PLATFLAGS := -DALIGN_DWORD + EXTERNAL_ZLIB = 1 else + #CC = i586-mingw32msvc-gcc + CC = x86_64-w64-mingw32-gcc + #CC = i686-w64-mingw32-gcc PLATFLAGS := -DLSB_FIRST -DALIGN_DWORD -DWIN32PORT -DWIN32 TARGET := $(TARGET_NAME)_libretro.dll SHARED := -shared -static-libgcc -s -Wl,--version-script=$(LIBRETRO_DIR)/link.T -Wl,--no-undefined - EXTERNAL_ZLIB = 1 -endif - -ZLIB = -ifneq ($(EXTERNAL_ZLIB), 1) -ZLIB = -lz endif ifeq ($(DEBUG), 1) -CFLAGS += -Og -g + CFLAGS += -O0 -g else -CFLAGS += -funroll-loops -ffast-math -fomit-frame-pointer -O3 + CFLAGS += -O3 endif -CFLAGS += -fsigned-char -D__LIBRETRO__ -fno-builtin -CFLAGS += $(fpic) $(PLATFLAGS) -CXXFLAGS := $(CFLAGS) -CPPFLAGS := $(CFLAGS) +CFLAGS += \ + -std=gnu99 -finline-functions -funroll-loops -fsigned-char -D__LIBRETRO__ \ + -Wno-strict-prototypes -ffast-math -fomit-frame-pointer -fno-strength-reduce -fno-builtin -finline-functions + +CXXFLAGS += $(CFLAGS) +CPPFLAGS += $(CFLAGS) EMU = $(CORE_DIR)/src CPU = $(EMU)/uae-cpu @@ -219,25 +117,41 @@ DBG = $(EMU)/debug FLP = $(EMU) GUI = $(LIBRETRO_DIR)/gui-retro CPU_PREGEN = $(LIBRETRO_DIR)/uae-cpu-pregen +LIBCOOBJ = $(LIBRETRO_DIR)/utils/libco LIBUTILS = $(LIBRETRO_DIR)/utils include Makefile.common +ifeq ($(IPFSUPPORT), 1) +INCFLAGS += -I$(CAPS_DIR)/include +PLATFLAGS += -DHAVE_CAPSIMAGE=1 +endif + OBJECTS := $(SOURCES_C:.c=.o) all: $(TARGET) -$(TARGET): $(OBJECTS) -ifeq ($(STATIC_LINKING_LINK),1) +ifeq ($(platform), wii) +$(TARGET): $(OBJECTS) + $(AR) rcs $@ $(OBJECTS) +else ifeq ($(platform), ps3) +$(TARGET): $(OBJECTS) $(AR) rcs $@ $(OBJECTS) + +else ifeq ($(platform), win) +$(TARGET): $(OBJECTS) + $(CC) $(fpic) $(SHARED) $(INCLUDES) -o $@ $(OBJECTS) -lm -lz $(CAPS_LIB) +else ifeq ($(platform), android) +$(TARGET): $(OBJECTS) + $(CC) $(fpic) $(SHARED) $(INCLUDES) -o $@ $(OBJECTS) -lm -lz else - $(CC) $(CFLAGS) $(INCFLAGS) $(LDFLAGS) $(OBJECTS) -o $@ -lm $(ZLIB) $(SHARED) +$(TARGET): $(OBJECTS) + $(CC) $(fpic) $(SHARED) $(INCLUDES) -o $@ $(OBJECTS) -lm -lz -lpthread $(CAPS_LIB) + endif %.o: %.c - $(CC) $(CFLAGS) $(INCFLAGS) -c -o $@ $< + $(CC) $(fpic) $(CFLAGS) $(PLATFLAGS) $(INCFLAGS) -c -o $@ $< clean: rm -f $(OBJECTS) $(TARGET) - -.PHONY: clean diff --git a/src/capsimg_binary/CAPSImg.lib b/src/capsimg_binary/CAPSImg.lib new file mode 100644 index 0000000000000000000000000000000000000000..d1eb7f1db0ead21f25889837a2c178834450a14c GIT binary patch literal 7052 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