libretro patch (twinaphex)

This commit is contained in:
Barry Harris 2012-12-26 19:46:34 +00:00
parent 6f58f95083
commit 0ac7bcd353
4 changed files with 91 additions and 78 deletions

View File

@ -1,6 +1,7 @@
DEBUG = 0
LIBRETRO_OPTIMIZATIONS = 1
FRONTEND_SUPPORTS_RGB565 = 1
HAVE_GRIFFIN = 0
ifeq ($(platform),)
platform = unix
@ -35,6 +36,7 @@ FBA_LIB_DIR := $(MAIN_FBA_DIR)/dep/libs
FBA_INTERFACE_DIR := $(MAIN_FBA_DIR)/intf
FBA_GENERATED_DIR = $(MAIN_FBA_DIR)/dep/generated
FBA_SCRIPTS_DIR = $(MAIN_FBA_DIR)/dep/scripts
GRIFFIN_DIR = griffin-libretro
EXTERNAL_ZLIB = 0
@ -157,26 +159,38 @@ BURN_BLACKLIST += $(FBA_BURNER_DIR)/unzip.c \
$(FBA_BURNER_DIR)/ioapi.c
endif
ifeq ($(HAVE_GRIFFIN), 1)
GRIFFIN_CXXSRCFILES := $(GRIFFIN_DIR)/cps12.cpp $(GRIFFIN_DIR)/cps3.cpp $(GRIFFIN_DIR)/neogeo.cpp $(GRIFFIN_DIR)/pgm.cpp $(GRIFFIN_DIR)/snes.cpp $(GRIFFIN_DIR)/galaxian.cpp $(GRIFFIN_DIR)/cpu-m68k.cpp
BURN_BLACKLIST += $(FBA_CPU_DIR)/m68000_intf.cpp
else
CPS2_DIR := $(FBA_BURN_DRIVERS_DIR)/capcom
CPS3_DIR := $(FBA_BURN_DRIVERS_DIR)/cps3
GALAXIAN_DIR := $(FBA_BURN_DRIVERS_DIR)/galaxian
NEOGEO_DIR := $(FBA_BURN_DRIVERS_DIR)/neogeo
PGM_DIR := $(FBA_BURN_DRIVERS_DIR)/pgm
SNES_DIR := $(FBA_BURN_DRIVERS_DIR)/snes
M68K_DIR := $(FBA_CPU_DIR)/m68k
endif
FBA_BURN_DIRS := $(FBA_BURN_DIR) \
$(FBA_BURN_DIR)/devices \
$(FBA_BURN_DIR)/snd \
$(FBA_BURN_DRIVERS_DIR)/capcom \
$(CPS2_DIR) \
$(FBA_BURN_DRIVERS_DIR)/cave \
$(FBA_BURN_DRIVERS_DIR)/cps3 \
$(CPS3_DIR) \
$(FBA_BURN_DRIVERS_DIR)/dataeast \
$(FBA_BURN_DRIVERS_DIR)/galaxian \
$(GALAXIAN_DIR) \
$(FBA_BURN_DRIVERS_DIR)/irem \
$(FBA_BURN_DRIVERS_DIR)/konami \
$(FBA_BURN_DRIVERS_DIR)/megadrive \
$(FBA_BURN_DRIVERS_DIR)/neogeo \
$(NEOGEO_DIR) \
$(FBA_BURN_DRIVERS_DIR)/pce \
$(FBA_BURN_DRIVERS_DIR)/pgm \
$(PGM_DIR) \
$(FBA_BURN_DRIVERS_DIR)/pre90s \
$(FBA_BURN_DRIVERS_DIR)/psikyo \
$(FBA_BURN_DRIVERS_DIR)/pst90s \
$(FBA_BURN_DRIVERS_DIR)/sega \
$(FBA_BURN_DRIVERS_DIR)/snes \
$(SNES_DIR) \
$(FBA_BURN_DRIVERS_DIR)/taito \
$(FBA_BURN_DRIVERS_DIR)/toaplan
@ -187,7 +201,7 @@ FBA_CPU_DIRS := $(FBA_CPU_DIR) \
$(FBA_CPU_DIR)/hd6309 \
$(FBA_CPU_DIR)/i8039 \
$(FBA_CPU_DIR)/konami \
$(FBA_CPU_DIR)/m68k \
$(M68K_DIR) \
$(FBA_CPU_DIR)/m6502 \
$(FBA_CPU_DIR)/m6800 \
$(FBA_CPU_DIR)/m6805 \
@ -201,13 +215,14 @@ FBA_LIB_DIRS := $(FBA_LIB_DIR)/zlib
FBA_SRC_DIRS := $(FBA_BURNER_DIR) $(FBA_BURN_DIRS) $(FBA_CPU_DIRS) $(FBA_BURNER_DIRS)
ifeq ($(EXTERNAL_ZLIB), 1)
FBA_DEFINES += -DEXTERNAL_ZLIB
else
FBA_SRC_DIRS += $(FBA_LIB_DIRS)
endif
FBA_CXXSRCS := $(filter-out $(BURN_BLACKLIST),$(foreach dir,$(FBA_SRC_DIRS),$(wildcard $(dir)/*.cpp)))
FBA_CXXSRCS := $(GRIFFIN_CXXSRCFILES) $(filter-out $(BURN_BLACKLIST),$(foreach dir,$(FBA_SRC_DIRS),$(wildcard $(dir)/*.cpp)))
FBA_CXXSRCS += $(LIBRETRO_DIR)/libretro.cpp $(LIBRETRO_DIR)/neocdlist.cpp
FBA_CXXOBJ := $(FBA_CXXSRCS:.cpp=.o)
FBA_CSRCS := $(filter-out $(BURN_BLACKLIST),$(foreach dir,$(FBA_SRC_DIRS),$(wildcard $(dir)/*.c)))

View File

@ -1,22 +1,10 @@
CYCLONE_ENABLED := 0
HAVE_GRIFFIN := 0
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
ifeq ($(TARGET_ARCH),arm)
LOCAL_CXXFLAGS += -DANDROID_ARM
LOCAL_ARM_MODE := arm
LOCAL_C_FLAGS += -fuse-ld=gold
LOCAL_CPP_FLAGS+= -fuse-ld=gold
LOCAL_LDLIBS := -fuse-ld=gold
endif
ifeq ($(TARGET_ARCH),x86)
LOCAL_CXXFLAGS += -DANDROID_X86
endif
ifeq ($(TARGET_ARCH),mips)
LOCAL_CXXFLAGS += -DANDROID_MIPS -D__mips__ -D__MIPSEL__
endif
MAIN_FBA_DIR := ../../../src
FBA_BURN_DIR := $(MAIN_FBA_DIR)/burn
@ -28,6 +16,27 @@ FBA_LIB_DIR := $(MAIN_FBA_DIR)/dep/libs
FBA_INTERFACE_DIR := $(MAIN_FBA_DIR)/intf
FBA_GENERATED_DIR = $(MAIN_FBA_DIR)/dep/generated
FBA_SCRIPTS_DIR = $(MAIN_FBA_DIR)/dep/scripts
GRIFFIN_DIR := ../../../griffin-libretro
ifeq ($(TARGET_ARCH),arm)
LOCAL_CXXFLAGS += -DANDROID_ARM
LOCAL_ARM_MODE := arm
LOCAL_C_FLAGS += -fuse-ld=gold
LOCAL_CPP_FLAGS+= -fuse-ld=gold
LOCAL_LDLIBS := -fuse-ld=gold
ifeq ($(CYCLONE_ENABLED), 1)
CYCLONE_SRC := $(FBA_CPU_DIR)/cyclone/cyclone.s
CYCLONE_DEFINES := -DBUILD_C68K
endif
endif
ifeq ($(TARGET_ARCH),x86)
LOCAL_CXXFLAGS += -DANDROID_X86
endif
ifeq ($(TARGET_ARCH),mips)
LOCAL_CXXFLAGS += -DANDROID_MIPS -D__mips__ -D__MIPSEL__
endif
BURN_BLACKLIST := $(FBA_BURNER_DIR)/un7z.cpp \
$(FBA_CPU_DIR)/arm7/arm7exec.c \
@ -66,25 +75,39 @@ BURN_BLACKLIST := $(FBA_BURNER_DIR)/un7z.cpp \
$(FBA_CPU_DIR)/nec/necinstr.c \
$(FBA_BURN_DIR)/drv/capcom/ctv_make.cpp
ifeq ($(HAVE_GRIFFIN), 1)
GRIFFIN_CXX_SRC_FILES := $(GRIFFIN_DIR)/cps12.cpp $(GRIFFIN_DIR)/cps3.cpp $(GRIFFIN_DIR)/neogeo.cpp $(GRIFFIN_DIR)/pgm.cpp $(GRIFFIN_DIR)/snes.cpp $(GRIFFIN_DIR)/galaxian.cpp
GRIFFIN_CXX_SRC_FILES += $(GRIFFIN_DIR)/cpu-m68k.cpp
BURN_BLACKLIST += $(FBA_CPU_DIR)/m68000_intf.cpp
else
CPS2_DIR := $(FBA_BURN_DRIVERS_DIR)/capcom
CPS3_DIR := $(FBA_BURN_DRIVERS_DIR)/cps3
GALAXIAN_DIR := $(FBA_BURN_DRIVERS_DIR)/galaxian
NEOGEO_DIR := $(FBA_BURN_DRIVERS_DIR)/neogeo
PGM_DIR := $(FBA_BURN_DRIVERS_DIR)/pgm
SNES_DIR := $(FBA_BURN_DRIVERS_DIR)/snes
M68K_DIR := $(FBA_CPU_DIR)/m68k
endif
FBA_BURN_DIRS := $(FBA_BURN_DIR) \
$(FBA_BURN_DIR)/devices \
$(FBA_BURN_DIR)/snd \
$(FBA_BURN_DRIVERS_DIR)/capcom \
$(CPS2_DIR) \
$(FBA_BURN_DRIVERS_DIR)/cave \
$(FBA_BURN_DRIVERS_DIR)/cps3 \
$(CPS3_DIR) \
$(FBA_BURN_DRIVERS_DIR)/dataeast \
$(FBA_BURN_DRIVERS_DIR)/galaxian \
$(GALAXIAN_DIR) \
$(FBA_BURN_DRIVERS_DIR)/irem \
$(FBA_BURN_DRIVERS_DIR)/konami \
$(FBA_BURN_DRIVERS_DIR)/megadrive \
$(FBA_BURN_DRIVERS_DIR)/neogeo \
$(NEOGEO_DIR) \
$(FBA_BURN_DRIVERS_DIR)/pce \
$(FBA_BURN_DRIVERS_DIR)/pgm \
$(PGM_DIR) \
$(FBA_BURN_DRIVERS_DIR)/pre90s \
$(FBA_BURN_DRIVERS_DIR)/psikyo \
$(FBA_BURN_DRIVERS_DIR)/pst90s \
$(FBA_BURN_DRIVERS_DIR)/sega \
$(FBA_BURN_DRIVERS_DIR)/snes \
$(SNES_DIR) \
$(FBA_BURN_DRIVERS_DIR)/taito \
$(FBA_BURN_DRIVERS_DIR)/toaplan
@ -95,7 +118,7 @@ FBA_CPU_DIRS := $(FBA_CPU_DIR) \
$(FBA_CPU_DIR)/hd6309 \
$(FBA_CPU_DIR)/i8039 \
$(FBA_CPU_DIR)/konami \
$(FBA_CPU_DIR)/m68k \
$(M68K_DIR) \
$(FBA_CPU_DIR)/m6502 \
$(FBA_CPU_DIR)/m6800 \
$(FBA_CPU_DIR)/m6805 \
@ -105,17 +128,16 @@ FBA_CPU_DIRS := $(FBA_CPU_DIR) \
$(FBA_CPU_DIR)/sh2 \
$(FBA_CPU_DIR)/z80
FBA_LIB_DIRS := $(FBA_LIB_DIR)/zlib
FBA_SRC_DIRS := $(FBA_BURNER_DIR) $(FBA_BURN_DIRS) $(FBA_CPU_DIRS) $(FBA_BURNER_DIRS) $(FBA_LIB_DIRS)
FBA_SRC_DIRS := $(FBA_BURNER_DIR) $(FBA_BURN_DIRS) $(FBA_CPU_DIRS) $(FBA_BURNER_DIRS)
LOCAL_MODULE := libretro
LOCAL_SRC_FILES := $(filter-out $(BURN_BLACKLIST),$(foreach dir,$(FBA_SRC_DIRS),$(wildcard $(dir)/*.cpp))) $(filter-out $(BURN_BLACKLIST),$(foreach dir,$(FBA_SRC_DIRS),$(wildcard $(dir)/*.c))) $(LIBRETRO_DIR)/libretro.cpp $(LIBRETRO_DIR)/neocdlist.cpp
LOCAL_CXXFLAGS += -O3 -fno-stack-protector -DUSE_SPEEDHACKS -DINLINE="static inline" -DSH2_INLINE="static inline" -D__LIBRETRO_OPTIMIZATIONS__ -DLSB_FIRST -D__LIBRETRO__ -Wno-write-strings -DUSE_FILE32API -DANDROID -DFRONTEND_SUPPORTS_RGB565
LOCAL_CFLAGS = -O3 -fno-stack-protector -DUSE_SPEEDHACKS -DINLINE="static inline" -DSH2_INLINE="static inline" -D__LIBRETRO_OPTIMIZATIONS__ -DLSB_FIRST -D__LIBRETRO__ -Wno-write-strings -DUSE_FILE32API -DANDROID -DFRONTEND_SUPPORTS_RGB565
LOCAL_SRC_FILES := $(GRIFFIN_CXX_SRC_FILES) $(CYCLONE_SRC) $(filter-out $(BURN_BLACKLIST),$(foreach dir,$(FBA_SRC_DIRS),$(wildcard $(dir)/*.cpp))) $(filter-out $(BURN_BLACKLIST),$(foreach dir,$(FBA_SRC_DIRS),$(wildcard $(dir)/*.c))) $(LIBRETRO_DIR)/libretro.cpp $(LIBRETRO_DIR)/neocdlist.cpp
LOCAL_CXXFLAGS += -O3 -fno-stack-protector -DUSE_SPEEDHACKS -DINLINE="static inline" -DSH2_INLINE="static inline" -D__LIBRETRO_OPTIMIZATIONS__ -DLSB_FIRST -D__LIBRETRO__ -Wno-write-strings -DUSE_FILE32API -DANDROID -DFRONTEND_SUPPORTS_RGB565 $(CYCLONE_DEFINES)
LOCAL_CFLAGS = -O3 -fno-stack-protector -DUSE_SPEEDHACKS -DINLINE="static inline" -DSH2_INLINE="static inline" -D__LIBRETRO_OPTIMIZATIONS__ -DLSB_FIRST -D__LIBRETRO__ -Wno-write-strings -DUSE_FILE32API -DANDROID -DFRONTEND_SUPPORTS_RGB565 $(CYCLONE_DEFINES)
LOCAL_C_INCLUDES = $(FBA_BURNER_DIR)/win32 \
$(LIBRETRO_DIR) \
@ -142,4 +164,6 @@ LOCAL_C_INCLUDES = $(FBA_BURNER_DIR)/win32 \
$(FBA_GENERATED_DIR) \
$(FBA_LIB_DIR)
LOCAL_LDLIBS += -lz
include $(BUILD_SHARED_LIBRARY)

View File

@ -31,11 +31,11 @@ static std::vector<std::string> g_find_list_path;
static ROMFIND g_find_list[1024];
static unsigned g_rom_count;
#define AUDIO_SAMPLERATE 32000
#define AUDIO_SEGMENT_LENGTH 534 // <-- Hardcoded value that corresponds well to 32kHz audio.
#define AUDIO_SEGMENT_LENGTH_TIMES_CHANNELS (534 * 2)
static uint16_t g_fba_frame[1024 * 1024];
static int16_t g_audio_buf[AUDIO_SEGMENT_LENGTH_TIMES_CHANNELS];
static int16_t g_audio_buf[AUDIO_SEGMENT_LENGTH * 2];
// libretro globals
@ -57,7 +57,7 @@ static bool driver_inited;
void retro_get_system_info(struct retro_system_info *info)
{
info->library_name = "FB Alpha";
info->library_version = "v0.2.97.27";
info->library_version = "v0.2.97.28";
info->need_fullpath = true;
info->block_extract = true;
info->valid_extensions = "iso|ISO|zip|ZIP";
@ -339,8 +339,8 @@ void retro_run()
nBurnLayer = 0xff;
pBurnSoundOut = g_audio_buf;
nBurnSoundRate = 32000;
nBurnSoundLen = AUDIO_SEGMENT_LENGTH;
nBurnSoundRate = AUDIO_SAMPLERATE;
//nBurnSoundLen = AUDIO_SEGMENT_LENGTH;
nCurrentFrame++;
@ -357,7 +357,7 @@ void retro_run()
nBurnPitch = width * sizeof(uint16_t);
video_cb(g_fba_frame, width, height, nBurnPitch);
audio_batch_cb(g_audio_buf, AUDIO_SEGMENT_LENGTH);
audio_batch_cb(g_audio_buf, nBurnSoundLen);
}
static uint8_t *write_state_ptr;
@ -428,7 +428,7 @@ void retro_get_system_av_info(struct retro_system_av_info *info)
int maximum = width > height ? width : height;
struct retro_game_geometry geom = { width, height, maximum, maximum };
struct retro_system_timing timing = { 60.0, 60.0 * AUDIO_SEGMENT_LENGTH };
struct retro_system_timing timing = { (nBurnFPS / 100.0), (nBurnFPS / 100.0) * AUDIO_SEGMENT_LENGTH };
info->geometry = geom;
info->timing = timing;
@ -497,22 +497,6 @@ int VidRecalcPal()
static void init_video()
{
nBurnBpp = 2;
VidRecalcPal();
#if 0
#ifdef FRONTEND_SUPPORTS_RGB565
BurnHighCol = HighCol16;
#else
BurnHighCol = HighCol15;
#endif
#endif
}
static void init_audio()
{
pBurnSoundOut = g_audio_buf;
nBurnSoundRate = 32000;
nBurnSoundLen = AUDIO_SEGMENT_LENGTH;
}
static void extract_basename(char *buf, const char *path, size_t size)
@ -561,8 +545,11 @@ bool retro_load_game(const struct retro_game_info *info)
unsigned i = BurnDrvGetIndexByName(basename);
if (i < nBurnDrvCount)
{
init_video();
init_audio();
nBurnBpp = 2;
VidRecalcPal();
pBurnSoundOut = g_audio_buf;
nBurnSoundRate = AUDIO_SAMPLERATE;
nBurnSoundLen = AUDIO_SEGMENT_LENGTH;
if (!fba_init(i))
return false;
@ -1361,12 +1348,10 @@ static inline int CinpJoyAxis(int i, int axis)
case 7:
return 0;
}
return 0;
}
static inline int CinpMouseAxis(int i, int axis)
{
return 0;
}
static inline int CinpState(int i)

View File

@ -4,7 +4,7 @@
#include <stdint.h>
#include <wchar.h>
#include "input/inp_keys.h"
#include "inp_keys.h"
#ifdef _MSC_VER
#include <tchar.h>
@ -16,15 +16,7 @@ typedef struct { int x, y, width, height; } RECT;
#undef __cdecl
#define __cdecl
#ifdef _XBOX1
static inline void bprintf(int code, const char *format, ...)
{
(void)0;
}
#else
#define bprintf
#endif
#define bprintf(...) {}
#define _strnicmp(s1, s2, n) strncasecmp(s1, s2, n)
#define _stricmp(x, y) strcasecmp(x,y)
@ -46,13 +38,10 @@ static inline void bprintf(int code, const char *format, ...)
#define _tcsstr strstr
#define _stscanf sscanf
#define _ftprintf fprintf
#define _tcscpy(to, from) strcpy(to, from)
#ifdef _MSC_VER
#define _tcsicmp(a, b) _stricmp(a, b)
#else
#ifndef _MSC_VER
#define _tcsicmp(a, b) strcasecmp(a, b)
#endif
#define _tcscpy(to, from) strcpy(to, from)
/*define lstrlen what does lstrlen correspond to?*/
#undef __fastcall