Skip to content

Instantly share code, notes, and snippets.

Created December 25, 2012 01:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/4371288 to your computer and use it in GitHub Desktop.
Save anonymous/4371288 to your computer and use it in GitHub Desktop.
Index: trunk/makefile.libretro
===================================================================
--- trunk/makefile.libretro (revision 941)
+++ trunk/makefile.libretro (working copy)
@@ -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_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 @@
$(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_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_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)))
Index: trunk/projectfiles/libretro-android/jni/Android.mk
===================================================================
--- trunk/projectfiles/libretro-android/jni/Android.mk (revision 941)
+++ trunk/projectfiles/libretro-android/jni/Android.mk (working copy)
@@ -1,3 +1,6 @@
+CYCLONE_ENABLED := 0
+HAVE_GRIFFIN := 0
+
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
@@ -2,2 +5,15 @@
+
+MAIN_FBA_DIR := ../../../src
+FBA_BURN_DIR := $(MAIN_FBA_DIR)/burn
+FBA_BURN_DRIVERS_DIR := $(MAIN_FBA_DIR)/burn/drv
+FBA_BURNER_DIR := $(MAIN_FBA_DIR)/burner
+LIBRETRO_DIR := $(FBA_BURNER_DIR)/libretro
+FBA_CPU_DIR := $(MAIN_FBA_DIR)/cpu
+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)
@@ -8,7 +24,11 @@
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
@@ -18,17 +38,6 @@
LOCAL_CXXFLAGS += -DANDROID_MIPS -D__mips__ -D__MIPSEL__
endif
-MAIN_FBA_DIR := ../../../src
-FBA_BURN_DIR := $(MAIN_FBA_DIR)/burn
-FBA_BURN_DRIVERS_DIR := $(MAIN_FBA_DIR)/burn/drv
-FBA_BURNER_DIR := $(MAIN_FBA_DIR)/burner
-LIBRETRO_DIR := $(FBA_BURNER_DIR)/libretro
-FBA_CPU_DIR := $(MAIN_FBA_DIR)/cpu
-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
-
BURN_BLACKLIST := $(FBA_BURNER_DIR)/un7z.cpp \
$(FBA_CPU_DIR)/arm7/arm7exec.c \
$(FBA_CPU_DIR)/arm7/arm7core.c \
@@ -66,25 +75,39 @@
$(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_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,18 +128,17 @@
$(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_SRC_DIRS := $(FBA_BURNER_DIR) $(FBA_BURN_DIRS) $(FBA_CPU_DIRS) $(FBA_BURNER_DIRS) $(FBA_LIB_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) \
$(LIBRETRO_DIR)/tchar \
@@ -142,4 +164,6 @@
$(FBA_GENERATED_DIR) \
$(FBA_LIB_DIR)
+LOCAL_LDLIBS += -lz
+
include $(BUILD_SHARED_LIBRARY)
Index: trunk/src/burner/libretro/libretro.cpp
===================================================================
--- trunk/src/burner/libretro/libretro.cpp (revision 941)
+++ trunk/src/burner/libretro/libretro.cpp (working copy)
@@ -31,11 +31,11 @@
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 @@
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 @@
nBurnLayer = 0xff;
pBurnSoundOut = g_audio_buf;
- nBurnSoundRate = 32000;
- nBurnSoundLen = AUDIO_SEGMENT_LENGTH;
+ nBurnSoundRate = AUDIO_SAMPLERATE;
+ //nBurnSoundLen = AUDIO_SEGMENT_LENGTH;
nCurrentFrame++;
@@ -357,7 +357,7 @@
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 @@
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,24 +497,8 @@
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)
{
const char *base = strrchr(path, '/');
@@ -561,8 +545,11 @@
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 @@
case 7:
return 0;
}
- return 0;
}
static inline int CinpMouseAxis(int i, int axis)
{
- return 0;
}
static inline int CinpState(int i)
Index: trunk/src/burner/libretro/tchar.h
===================================================================
--- trunk/src/burner/libretro/tchar.h (revision 941)
+++ trunk/src/burner/libretro/tchar.h (working copy)
@@ -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 @@
#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 @@
#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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment