merge with libretro repo

This commit is contained in:
Not6 committed 2017-05-07 16:22:49 +02:00
1 parent cf47e34490
commit d241ebc579
8 files changed
+318 -466

No files matched your search

+1 -133
View File
@@ -1,133 +1 @@
include version.txt
CC = gcc
CXX = c++
CXXLINK = $(CXX)
RM = rm -f
TAGS = etags
DEPEND = gccmakedep
DEPEND_DEFINES =
# for debug
CDEBUGFLAGS = -g -O0 -fno-strict-aliasing
#
# enable SDL_gfx
#
CDEBUGFLAGS+= -DUSE_SDLGFX
#
# disable sound
#
#CDEBUGFLAGS+= -DNO_SOUND
#
# disable mercury unit
#
CDEBUGFLAGS+= -DNO_MERCURY
#
# enable RFMDRV
#
#CDEBUGFLAGS+= -DRFMDRV
#
# for Opt.
#
# CDEBUGFLAGS= -O3
# CDEBUGFLAGS+= -funroll-loops
# CDEBUGFLAGS+= -fomit-frame-pointer
# CDEBUGFLAGS+= -ffast-math
# CDEBUGFLAGS+= -march=pentium-m
# CDEBUGFLAGS+= -msse -mfpmath=sse
#
# for DEBUG
#
# CDEBUGFLAGS= -O0
# CDEBUGFLAGS+= -g
# CDEBUGFLAGS+= -W -Wall -Wuninitialized
# CDEBUGFLAGS+= -Wunused
# CDEBUGFLAGS+= -Werror
# CDEBUGFLAGS+= -DINLINE=
# CDEBUGFLAGS+= -DUSE_GAS
CDEBUGFLAGS+=-DPX68K_VERSION=$(PX68K_VERSION)
ifdef SDL2
# SDL 2.0
SDL_CONFIG?= sdl2-config
else
# SDL 1.2
SDL_CONFIG?= sdl-config
endif
SDL_INCLUDE= `$(SDL_CONFIG) --cflags`
ifdef SDL2
SDL_LIB= `$(SDL_CONFIG) --libs` -lSDL2_gfx
else
SDL_LIB= `$(SDL_CONFIG) --libs` -lSDL_gfx
endif
ifeq ($(shell uname -m),armv6l)
MOPT=
else
MOPT= -m32
endif
LDLIBS = -lm
EXTRA_INCLUDES= -I./x11 -I./x68k -I./fmgen -I./win32api $(SDL_INCLUDE)
CXXDEBUGFLAGS= $(CDEBUGFLAGS)
CFLAGS= $(MOPT) $(CDEBUGFLAGS) $(EXTRA_INCLUDES)
CXXFLAGS= $(MOPT) $(CXXDEBUGFLAGS) $(EXTRA_INCLUDES)
CXXLDOPTIONS= $(CXXDEBUGFLAGS)
CPUOBJS= x68k/d68k.o m68000/c68k.o m68000/m68000.o
X68KOBJS= x68k/adpcm.o x68k/bg.o x68k/crtc.o x68k/dmac.o x68k/fdc.o x68k/fdd.o x68k/disk_d88.o x68k/disk_dim.o x68k/disk_xdf.o x68k/gvram.o x68k/ioc.o x68k/irqh.o x68k/mem_wrap.o x68k/mercury.o x68k/mfp.o x68k/palette.o x68k/midi.o x68k/pia.o x68k/rtc.o x68k/sasi.o x68k/scc.o x68k/scsi.o x68k/sram.o x68k/sysport.o x68k/tvram.o
FMGENOBJS= fmgen/fmgen.o fmgen/fmg_wrap.o fmgen/file.o fmgen/fmtimer.o fmgen/opm.o fmgen/opna.o fmgen/psg.o
X11OBJS= x11/joystick.o x11/juliet.o x11/keyboard.o x11/mouse.o x11/prop.o x11/status.o x11/timer.o x11/dswin.o x11/windraw.o x11/winui.o x11/about.o x11/common.o
X11CXXOBJS= x11/winx68k.o
WIN32APIOBJS= win32api/dosio.o win32api/fake.o win32api/peace.o
COBJS= $(X68KOBJS) $(X11OBJS) $(WIN32APIOBJS) $(CPUOBJS)
CXXOBJS= $(FMGENOBJS) $(X11CXXOBJS)
OBJS= $(COBJS) $(CXXOBJS)
CSRCS= $(COBJS:.o=.c)
CXXSRCS= $(CXXOBJS:.o=.cpp)
SRCS= $(CSRCS) $(CXXSRCS)
.SUFFIXES: .c .cpp
.c.o:
$(CC) -o $@ $(CFLAGS) -c $*.c
.cpp.o:
$(CXX) -o $@ $(CXXFLAGS) -c $*.cpp
all:: px68k
px68k: $(OBJS)
$(RM) $@
$(CXXLINK) $(MOPT) -o $@ $(CXXLDOPTIONS) $(OBJS) $(SDL_LIB) $(LDLIBS)
depend::
$(DEPEND) -- $(CXXFLAGS) $(DEPEND_DEFINES) -- $(SRCS)
clean::
$(RM) px68k
$(RM) $(OBJS)
$(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut "#"*
tags::
find . -name "*.h" -o -name "*.c" -o -name "*.cpp" | $(TAGS) -
include Makefile.libretro
+69
View File
@@ -0,0 +1,69 @@
INCFLAGS := -I$(CORE_DIR) \
-I$(CORE_DIR)/libretro \
-I$(CORE_DIR)/x68k \
-I$(CORE_DIR)/fmgen \
-I$(CORE_DIR)/win32api
SOURCES_C := $(CORE_DIR)/x68k/d68k.c \
$(CORE_DIR)/m68000/m68000.c
ifdef CYCLONE
SOURCES_S := \
$(CORE_DIR)/m68000/cyclone.s
else
SOURCES_C += \
$(CORE_DIR)/m68000/c68k/c68k.c \
$(CORE_DIR)/m68000/c68k/c68kexec.c
endif
SOURCES_C += \
$(CORE_DIR)/x68k/adpcm.c \
$(CORE_DIR)/x68k/bg.c \
$(CORE_DIR)/x68k/crtc.c \
$(CORE_DIR)/x68k/dmac.c \
$(CORE_DIR)/x68k/fdc.c \
$(CORE_DIR)/x68k/fdd.c \
$(CORE_DIR)/x68k/disk_d88.c \
$(CORE_DIR)/x68k/disk_dim.c \
$(CORE_DIR)/x68k/disk_xdf.c \
$(CORE_DIR)/x68k/gvram.c \
$(CORE_DIR)/x68k/ioc.c \
$(CORE_DIR)/x68k/irqh.c \
$(CORE_DIR)/x68k/mem_wrap.c \
$(CORE_DIR)/x68k/mercury.c \
$(CORE_DIR)/x68k/mfp.c \
$(CORE_DIR)/x68k/palette.c \
$(CORE_DIR)/x68k/midi.c \
$(CORE_DIR)/x68k/pia.c \
$(CORE_DIR)/x68k/rtc.c \
$(CORE_DIR)/x68k/sasi.c \
$(CORE_DIR)/x68k/scc.c \
$(CORE_DIR)/x68k/scsi.c \
$(CORE_DIR)/x68k/sram.c \
$(CORE_DIR)/x68k/sysport.c \
$(CORE_DIR)/x68k/tvram.c \
$(CORE_DIR)/libretro/joystick.c \
$(CORE_DIR)/libretro/juliet.c \
$(CORE_DIR)/libretro/keyboard.c \
$(CORE_DIR)/libretro/mouse.c \
$(CORE_DIR)/libretro/prop.c \
$(CORE_DIR)/libretro/status.c \
$(CORE_DIR)/libretro/timer.c \
$(CORE_DIR)/libretro/dswin.c \
$(CORE_DIR)/libretro/windraw.c \
$(CORE_DIR)/libretro/winui.c \
$(CORE_DIR)/libretro/about.c \
$(CORE_DIR)/libretro/common.c \
$(CORE_DIR)/win32api/dosio.c \
$(CORE_DIR)/win32api/fake.c \
$(CORE_DIR)/win32api/peace.c \
$(CORE_DIR)/libretro.c
SOURCES_CXX := $(CORE_DIR)/fmgen/file.cpp \
$(CORE_DIR)/fmgen/fmg_wrap.cpp \
$(CORE_DIR)/fmgen/fmgen.cpp \
$(CORE_DIR)/fmgen/fmtimer.cpp \
$(CORE_DIR)/fmgen/opm.cpp \
$(CORE_DIR)/fmgen/opna.cpp \
$(CORE_DIR)/fmgen/psg.cpp \
$(CORE_DIR)/libretro/winx68k.cpp
+70 -46
View File
@@ -5,42 +5,81 @@ ifeq ($(platform),)
platform = unix
ifeq ($(shell uname -a),)
platform = win
else ifneq ($(findstring MINGW,$(shell uname -a)),)
platform = win
else ifneq ($(findstring Darwin,$(shell uname -a)),)
platform = osx
else ifneq ($(findstring MINGW,$(shell uname -a)),)
else ifneq ($(findstring win,$(shell uname -a)),)
platform = win
endif
endif
ifdef CYCLONE
CFLAGS += -DCYCLONE
CXXFLAGS += -DCYCLONE
# system platform
system_platform = unix
ifeq ($(shell uname -a),)
EXE_EXT = .exe
system_platform = win
else ifneq ($(findstring Darwin,$(shell uname -a)),)
system_platform = osx
arch = intel
ifeq ($(shell uname -p),powerpc)
arch = ppc
endif
else ifneq ($(findstring MINGW,$(shell uname -a)),)
system_platform = win
endif
ifeq ($(platform), win)
INCLUDES += -I Windows
endif
TARGET_NAME := px68k
ENDIANNESS_DEFINES :=
CORE_DIR := .
ifeq ($(platform), unix)
CC = gcc
CXX = g++
CFLAGS = -g -O2
CXXFLAGS = -g -O2 -fno-merge-constants
TARGET := $(TARGET_NAME)_libretro.so
fpic := -fPIC
SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T
ENDIANNESS_DEFINES := -DLSB_FIRST
FLAGS += -D__LINUX__
# android arm
else ifneq (,$(findstring osx,$(platform)))
TARGET := $(TARGET_NAME)_libretro.dylib
fpic = -fPIC
SHARED := -dynamiclib
else ifneq (,$(findstring ios,$(platform)))
TARGET := $(TARGET_NAME)_libretro_ios.dylib
fpic = -fPIC
SHARED := -dynamiclib
ifeq ($(IOSSDK),)
IOSSDK := $(shell xcodebuild -version -sdk iphoneos Path)
endif
DEFINES := -DIOS
CC = cc -arch armv7 -isysroot $(IOSSDK)
CXX = c++ -arch armv7 -isysroot $(IOSSDK)
ifeq ($(platform),ios9)
CC += -miphoneos-version-min=8.0
CXXFLAGS += -miphoneos-version-min=8.0
else
CC += -miphoneos-version-min=5.0
CXXFLAGS += -miphoneos-version-min=5.0
endif
# android arm
else ifneq (,$(findstring android,$(platform)))
TARGET := $(TARGET_NAME)_libretro_android.so
fpic = -fPIC
SHARED := -lstdc++ -llog -shared -Wl,--version-script=link.T -Wl,--no-undefined
TARGET := $(TARGET_NAME)_libretro_android.so
fpic = -fPIC
SHARED := -lstdc++ -llog -shared -Wl,--version-script=link.T -Wl,--no-undefined
CFLAGS += -g -O2
CXXFLAGS = -g -O2 -fno-merge-constants
CC = arm-linux-androideabi-gcc
CXX = arm-linux-androideabi-g++
ENDIANNESS_DEFINES := -DLSB_FIRST
CXXFLAGS = -g -O2 -fno-merge-constants
CC = arm-linux-androideabi-gcc
CXX = arm-linux-androideabi-g++
FLAGS += -D__LINUX__ -DARM -marm
# crosspi arm
# crosspi arm
else ifneq (,$(findstring crosspi,$(platform)))
CC = arm-linux-gnueabihf-gcc
CXX = arm-linux-gnueabihf-g++
@@ -51,9 +90,8 @@ CPU_FLAGS += -march=armv7-a -mfpu=neon-vfpv4 -mfloat-abi=hard
TARGET := $(TARGET_NAME)_libretro.so
fpic := -fPIC
SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T
ENDIANNESS_DEFINES := -DLSB_FIRST
FLAGS += -D__LINUX__ -DARM -marm
# cross Windows
# cross Windows
else ifeq ($(platform), wincross64)
TARGET := $(TARGET_NAME)_libretro.dll
AR = x86_64-w64-mingw32-ar
@@ -61,43 +99,23 @@ else ifeq ($(platform), wincross64)
CXX = x86_64-w64-mingw32-g++
SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T
LDFLAGS += -static-libgcc -static-libstdc++
ENDIANNESS_DEFINES := -DLSB_FIRST
FLAGS +=
EXTRA_LDF := -lwinmm -Wl,--export-all-symbols
else
TARGET := $(TARGET_NAME)_retro.dll
CC = gcc
CXX = g++
SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T
LDFLAGS += -static-libgcc -static-libstdc++
ENDIANNESS_DEFINES := -DLSB_FIRST
FLAGS +=
TARGET := $(TARGET_NAME)_libretro.dll
CC = gcc
CXX = g++
SHARED := -shared -Wl,--no-undefined -Wl,--version-script=link.T
LDFLAGS += -static-libgcc -static-libstdc++
EXTRA_LDF = -lwinmm -Wl,--export-all-symbols
endif
CDEBUGFLAGS+= -DNO_MERCURY
CDEBUGFLAGS+=-DPX68K_VERSION=0.15
EXTRA_INCLUDES= -I./libretro -I./x68k -I./fmgen -I./win32api
FLAGS += $(CDEBUGFLAGS)
C68KOBJS= m68000/c68k/c68k.o m68000/c68k/c68kexec.o
CYCLONEOBJS = m68000/cyclone.o
include $(CORE_DIR)/Makefile.common
ifdef CYCLONE
CPUOBJS= x68k/d68k.o m68000/m68000.o $(CYCLONEOBJS)
else
CPUOBJS= x68k/d68k.o m68000/m68000.o $(C68KOBJS)
endif
X68KOBJS= x68k/adpcm.o x68k/bg.o x68k/crtc.o x68k/dmac.o x68k/fdc.o x68k/fdd.o x68k/disk_d88.o x68k/disk_dim.o x68k/disk_xdf.o x68k/gvram.o x68k/ioc.o x68k/irqh.o x68k/mem_wrap.o x68k/mercury.o x68k/mfp.o x68k/palette.o x68k/midi.o x68k/pia.o x68k/rtc.o x68k/sasi.o x68k/scc.o x68k/scsi.o x68k/sram.o x68k/sysport.o x68k/tvram.o
FMGENOBJS= fmgen/fmgen.o fmgen/fmg_wrap.o fmgen/file.o fmgen/fmtimer.o fmgen/opm.o fmgen/opna.o fmgen/psg.o
RETROCOBJS= libretro/joystick.o libretro/juliet.o libretro/keyboard.o libretro/mouse.o libretro/prop.o libretro/status.o libretro/timer.o libretro/dswin.o libretro/windraw.o libretro/winui.o libretro/about.o libretro/common.o
RETROCXXOBJS= libretro/winx68k.o
WIN32APIOBJS= win32api/dosio.o win32api/fake.o win32api/peace.o
OBJECTS := $(X68KOBJS) $(RETROCOBJS) $(WIN32APIOBJS) $(CPUOBJS) $(FMGENOBJS) $(RETROCXXOBJS) libretro.o
#$(C68KOBJS)
OBJECTS := $(SOURCES_CXX:.cpp=.o) $(SOURCES_C:.c=.o) $(SOURCES_S:.s=.o)
all: $(TARGET)
@@ -108,7 +126,8 @@ else
endif
LDFLAGS += $(fpic) $(SHARED) $(EXTRA_LDF)
FLAGS += -I. -I.. $(EXTRA_INCLUDES)
FLAGS += $(INCFLAGS)
#FLAGS += -DC68K_NO_JUMP_TABLE
WARNINGS :=
@@ -117,6 +136,11 @@ FLAGS += -D__LIBRETRO__ $(ENDIANNESS_DEFINES) $(WARNINGS) $(fpic)
CXXFLAGS += $(FLAGS) -fpermissive $(CPU_FLAGS)
CFLAGS += $(FLAGS) -std=gnu99 $(CPU_FLAGS)
ifdef CYCLONE
CFLAGS += -DCYCLONE
CXXFLAGS += -DCYCLONE
endif
$(TARGET): $(OBJECTS)
$(CXX) -o $@ $^ $(LDFLAGS)
-78
View File
@@ -1,78 +0,0 @@
include version.txt
#if defined(NO_SOUND)
EXTRA_DEFINES+= -DNOSOUND
#endif
#if defined(NO_MERCURY)
EXTRA_DEFINES+= -DNO_MERCURY
#endif
EXTRA_INCLUDES= -I./x11 -I./x68k -I./fmgen -I./win32api \
$(GTK_INCLUDE) $(SDL_INCLUDE)
CXXEXTRA_INCLUDES= $(EXTRA_INCLUDES)
CXXEXTRA_DEFINES= $(EXTRA_DEFINES)
CXXDEBUGFLAGS= $(CDEBUGFLAGS)
LOCAL_LIBRARIES= $(XLIB) $(GTK_LIB) $(SDL_LIB)
#define PassCDebugFlags
CPUOBJS= x68k/d68k.o m68000/c68k.o m68000/m68000.o
X68KOBJS= \
x68k/adpcm.o x68k/bg.o x68k/crtc.o x68k/dmac.o x68k/fdc.o \
x68k/fdd.o x68k/disk_d88.o x68k/disk_dim.o x68k/disk_xdf.o \
x68k/gvram.o x68k/ioc.o x68k/irqh.o x68k/mem_wrap.o x68k/mercury.o \
x68k/mfp.o x68k/palette.o x68k/midi.o x68k/pia.o x68k/rtc.o \
x68k/sasi.o x68k/scc.o x68k/scsi.o x68k/sram.o x68k/sysport.o \
x68k/tvram.o
FMGENOBJS= \
fmgen/fmgen.o fmgen/fmg_wrap.o fmgen/file.o fmgen/fmtimer.o \
fmgen/opm.o fmgen/opna.o fmgen/psg.o
X11OBJS= \
x11/joystick.o x11/juliet.o x11/keyboard.o x11/mouse.o x11/prop.o \
x11/status.o x11/timer.o \
x11/dswin.o x11/windraw.o x11/winui.o \
x11/about.o x11/common.o
X11CXXOBJS= x11/winx68k.o
WIN32APIOBJS= win32api/dosio.o win32api/fake.o win32api/peace.o
COBJS= $(X68KOBJS) $(X11OBJS) $(WIN32APIOBJS) $(CPUOBJS)
CXXOBJS= $(FMGENOBJS) $(X11CXXOBJS)
OBJS= $(COBJS) $(CXXOBJS)
TARGET = px68k
#OBJS = cube.o logo.o ../common/callbacks.o ../common/vram.o
# for psplink
#BUILD_PRX = 1
PSPDEV = $(shell psp-config -d)
PSPBIN = $(PSPDEV)/psp/bin
SDL_CONFIG = $(PSPBIN)/sdl-config
SDL_INCLUDE= `$(SDL_CONFIG) --cflags`
SDL_LIB= `$(SDL_CONFIG) --libs`
INCDIR = ./x11 ./x68k ./fmgen ./win32api
CFLAGS = -G0 -O2 -Wall $(SDL_INCLUDE) -DPX68K_VERSION=$(PX68K_VERSION)
# for debugging
#CFLAGS = -g -G0 -Wall $(SDL_INCLUDE)
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
LIBDIR =
LDFLAGS =
LIBS= -lpspgum -lpspgu -lm -lstdc++ $(SDL_LIB)
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = PX68K for PSP ver.$(PX68K_VERSION)
PSP_EBOOT_ICON = psp_logo.png
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
+76 -92
View File
@@ -1,19 +1,17 @@
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include "libretro.h"
#ifdef _WIN32
char slash = '\\';
char slash = '\\';
#else
char slash = '/';
char slash = '/';
#endif
#define LOGI printf
#define RENDER16B 1
#define SOUNDRATE 44100.0
#define SNDSZ 795
@@ -54,24 +52,22 @@ void retro_set_audio_sample_batch(retro_audio_sample_batch_t cb) { audio_batch_c
void retro_set_input_poll(retro_input_poll_t cb) { input_poll_cb = cb; }
void retro_set_input_state(retro_input_state_t cb) { input_state_cb = cb; }
#define LOGI printf
static char CMDFILE[512];
int loadcmdfile(char *argv)
{
int res=0;
int res=0;
FILE *fp = fopen(argv,"r");
FILE *fp = fopen(argv,"r");
if( fp != NULL )
{
if ( fgets (CMDFILE , 512 , fp) != NULL )
res=1;
fclose (fp);
}
if( fp != NULL )
{
if ( fgets (CMDFILE , 512 , fp) != NULL )
res=1;
fclose (fp);
}
return res;
return res;
}
int HandleExtension(char *path,char *ext)
@@ -123,16 +119,13 @@ int pre_main(const char *argv)
if (strlen(argv) > strlen("cmd"))
{
if( HandleExtension((char*)argv,"cmd") || HandleExtension((char*)argv,"CMD"))
i=loadcmdfile((char*)argv);
i=loadcmdfile((char*)argv);
}
if(i==1)
{
parse_cmdline(CMDFILE);
LOGI("Starting game from command line :%s\n",CMDFILE);
}
else
parse_cmdline(argv);
parse_cmdline(argv);
Only1Arg = (strcmp(ARGUV[0],"px68k") == 0) ? 0 : 1;
@@ -147,16 +140,17 @@ int pre_main(const char *argv)
Add_Option("px68k");
if (strlen(RPATH) >= strlen("hdf")){
if(!strcasecmp(&RPATH[strlen(RPATH)-strlen("hdf")], "hdf")){
Add_Option("-h");
cfgload=1;
}
if(!strcasecmp(&RPATH[strlen(RPATH)-strlen("hdf")], "hdf")){
Add_Option("-h");
cfgload=1;
}
}
if(cfgload==0) {
//Add_Option("-verbose");
//Add_Option(retro_system_tos);
//Add_Option("-8");
if(cfgload==0)
{
//Add_Option("-verbose");
//Add_Option(retro_system_tos);
//Add_Option("-8");
}
Add_Option(RPATH);
@@ -170,7 +164,6 @@ int pre_main(const char *argv)
for (i = 0; i < PARAMCOUNT; i++)
{
xargv_cmd[i] = (char*)(XARGV[i]);
LOGI("%2d %s\n",i,XARGV[i]);
}
pmain(PARAMCOUNT,( char **)xargv_cmd);
@@ -182,15 +175,15 @@ int pre_main(const char *argv)
void parse_cmdline(const char *argv)
{
char *p,*p2,*start_of_word;
int c,c2;
static char buffer[512*4];
enum states { DULL, IN_WORD, IN_STRING } state = DULL;
strcpy(buffer,argv);
strcat(buffer," \0");
char *p,*p2,*start_of_word;
int c,c2;
static char buffer[512*4];
enum states { DULL, IN_WORD, IN_STRING } state = DULL;
for (p = buffer; *p != '\0'; p++)
strcpy(buffer,argv);
strcat(buffer," \0");
for (p = buffer; *p != '\0'; p++)
{
c = (unsigned char) *p; /* convert to unsigned char for is* functions */
switch (state)
@@ -238,18 +231,15 @@ void parse_cmdline(const char *argv)
}
}
void texture_init(){
memset(videoBuffer, 0, sizeof(videoBuffer));
void texture_init(void)
{
memset(videoBuffer, 0, sizeof(*videoBuffer));
}
void retro_set_environment(retro_environment_t cb)
{
// bool no_rom = true;
environ_cb = cb;
// cb(RETRO_ENVIRONMENT_SET_SUPPORT_NO_GAME, &no_rom);
struct retro_variable variables[] = {
{
"px68k_analog","Use Analog; OFF|ON",
@@ -265,24 +255,23 @@ static void update_variables(void)
{
struct retro_variable var = {0};
var.key = "px68k_analog";
var.value = NULL;
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
{
fprintf(stderr, "value: %s\n", var.value);
if (strcmp(var.value, "OFF") == 0)
if (!strcmp(var.value, "OFF"))
opt_analog = false;
if (strcmp(var.value, "ON") == 0)
if (!strcmp(var.value, "ON"))
opt_analog = true;
fprintf(stderr, "[libretro-test]: Analog: %s.\n",opt_analog?"ON":"OFF");
fprintf(stderr, "[libretro-test]: Analog: %s.\n",opt_analog?"ON":"OFF");
}
}
void update_input()
void update_input(void)
{
input_poll_cb();
}
@@ -302,17 +291,17 @@ static void keyboard_cb(bool down, unsigned keycode, uint32_t character, uint16_
void retro_get_system_info(struct retro_system_info *info)
{
memset(info, 0, sizeof(*info));
info->library_name = "px68k";
info->library_version = "0.15+";
info->need_fullpath = true;
info->valid_extensions = "dim|zip|img|d88|88d|hdm|dup|2hd|xdf|hdf";
memset(info, 0, sizeof(*info));
info->library_name = "px68k";
info->library_version = "0.15+";
info->need_fullpath = true;
info->valid_extensions = "dim|zip|img|d88|88d|hdm|dup|2hd|xdf|hdf|cmd";
}
void retro_get_system_av_info(struct retro_system_av_info *info)
{
//FIXME handle vice PAL/NTSC
/* FIXME handle PAL/NTSC */
struct retro_game_geometry geom = { retrow, retroh,800, 600 ,4.0 / 3.0 };
struct retro_system_timing timing = { 55.45, SOUNDRATE };
@@ -320,7 +309,7 @@ void retro_get_system_av_info(struct retro_system_av_info *info)
info->timing = timing;
}
void update_geometry()
void update_geometry(void)
{
struct retro_system_av_info system_av_info;
system_av_info.geometry.base_width = retrow;
@@ -362,17 +351,16 @@ void retro_cheat_set(unsigned index, bool enabled, const char *code)
}
bool retro_load_game(const struct retro_game_info *info)
{
{
const char *full_path;
const char *full_path;
full_path = info->path;
full_path = info->path;
strcpy(RPATH,full_path);
strcpy(RPATH,full_path);
printf("LOAD EMU\n");
printf("LOAD EMU\n");
return true;
return true;
}
bool retro_load_game_special(unsigned game_type, const struct retro_game_info *info, size_t num_info)
@@ -444,11 +432,8 @@ void retro_init(void)
sprintf(retro_system_conf, "%s%ckeropi\0",RETRO_DIR,slash);
LOGI("Retro SYSTEM_DIRECTORY %s\n",retro_system_directory);
LOGI("Retro SAVE_DIRECTORY %s\n",retro_save_directory);
LOGI("Retro CONTENT_DIRECTORY %s\n",retro_content_directory);
enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_RGB565;
if (!environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt))
{
fprintf(stderr, "RGB565 is not supported.\n");
@@ -487,8 +472,8 @@ void retro_init(void)
void retro_deinit(void)
{
end_loop_retro();
printf("Retro DeInit\n");
end_loop_retro();
printf("Retro DeInit\n");
}
void retro_reset(void)
@@ -499,32 +484,31 @@ static int firstcall=1;
void retro_run(void)
{
if(firstcall)
{
pre_main(RPATH);
firstcall=0;
printf("INIT done\n");
return;
}
if(firstcall){
pre_main(RPATH);
firstcall=0;
printf("INIT done\n");
return;
}
if (CHANGEAV == 1)
{
update_geometry();
printf("w:%d h:%d a:%f\n",retrow,retroh,(float)(4/3));
CHANGEAV=0;
}
if (CHANGEAV == 1){
update_geometry();
printf("w:%d h:%d a:%f\n",retrow,retroh,(float)(4/3));
CHANGEAV=0;
}
update_input();
if(pauseg!=-1)
{
}
update_input();
exec_app_retro();
if(pauseg!=-1){
}
exec_app_retro();
raudio_callback(NULL, NULL,SNDSZ*4);
video_cb(videoBuffer, retrow, retroh, /*retrow*/ 800 << 1/*2*/);
raudio_callback(NULL, NULL,SNDSZ*4);
video_cb(videoBuffer, retrow, retroh, /*retrow*/ 800 << 1/*2*/);
}
+83 -97
View File
@@ -49,21 +49,20 @@ BYTE rsndbuf[PCMBUF_SIZE];
int audio_fd = 1;
void raudio_callback(void *userdata, unsigned char *stream, int len);
void raudio_callback(void *userdata, unsigned char *stream, int len);
#ifndef NOSOUND
int
DSound_Init(unsigned long rate, unsigned long buflen)
{
DWORD samples;
if (playing) {
if (playing)
return FALSE;
}
if (rate == 0) {
if (rate == 0)
{
audio_fd = -1;
return TRUE;
}
@@ -79,45 +78,39 @@ DSound_Init(unsigned long rate, unsigned long buflen)
void
DSound_Play(void)
{
// if (audio_fd >= 0);
// if (audio_fd >= 0);
}
void
DSound_Stop(void)
{
// if (audio_fd >= 0);
// if (audio_fd >= 0);
}
int
DSound_Cleanup(void)
{
playing = FALSE;
if (audio_fd >= 0) {
if (audio_fd >= 0)
audio_fd = -1;
}
return TRUE;
}
static void sound_send(int length)
{
int rate;
int rate = 0;
rate = 0;
ADPCM_Update((short *)pbwp, length, rate, pbsp, pbep);
OPM_Update((short *)pbwp, length, rate, pbsp, pbep);
ADPCM_Update((short *)pbwp, length, rate, pbsp, pbep);
OPM_Update((short *)pbwp, length, rate, pbsp, pbep);
#ifndef NO_MERCURY
//Mcry_Update((short *)pcmbufp, length);
//Mcry_Update((short *)pcmbufp, length);
#endif
pbwp += length * sizeof(WORD) * 2;
if (pbwp >= pbep) {
pbwp = pbsp + (pbwp - pbep);
}
pbwp += length * sizeof(WORD) * 2;
if (pbwp >= pbep)
pbwp = pbsp + (pbwp - pbep);
}
void FASTCALL DSound_Send0(long clock)
@@ -125,18 +118,20 @@ void FASTCALL DSound_Send0(long clock)
int length = 0;
int rate;
if (audio_fd < 0) {
if (audio_fd < 0)
return;
}
DSound_PreCounter += (ratebase * clock);
while (DSound_PreCounter >= 10000000L) {
while (DSound_PreCounter >= 10000000L)
{
length++;
DSound_PreCounter -= 10000000L;
}
if (length == 0) {
if (length == 0)
return;
}
sound_send(length);
}
@@ -144,98 +139,89 @@ static void FASTCALL DSound_Send(int length)
{
int rate;
if (audio_fd < 0) {
if (audio_fd < 0)
return;
}
sound_send(length);
}
void
raudio_callback(void *userdata, unsigned char *stream, int len)
{
int lena, lenb, datalen, rate;
BYTE *buf;
static DWORD bef;
DWORD now;
int lena, lenb, datalen, rate;
BYTE *buf;
now = timeGetTime();
//p6logd("tdiff %4d : len %d ", now - bef, len);
//printf("tdiff %4d : len %d \n", now - bef, len);
cb_start:
if (pbrp <= pbwp) {
// pcmbuffer
// +---------+-------------+----------+
// | |/////////////| |
// +---------+-------------+----------+
// A A<--datalen-->A A
// | | | |
// pbsp pbrp pbwp pbep
if (pbrp <= pbwp)
{
// pcmbuffer
// +---------+-------------+----------+
// | |/////////////| |
// +---------+-------------+----------+
// A A<--datalen-->A A
// | | | |
// pbsp pbrp pbwp pbep
datalen = pbwp - pbrp;
if (datalen < len) {
// needs more data
datalen = pbwp - pbrp;
DSound_Send((len - datalen) / 4);
// needs more data
if (datalen < len)
DSound_Send((len - datalen) / 4);
}
#if 0
datalen = pbwp - pbrp;
if (datalen < len) {
printf("xxxxx not enough sound data xxxxx\n");
}
datalen = pbwp - pbrp;
if (datalen < len)
printf("xxxxx not enough sound data xxxxx\n");
#endif
if (pbrp > pbwp) {
// chage to TYPEC or TYPED
goto cb_start;
}
buf = pbrp;
pbrp += len;
//printf("TYPEA: ");
// change to TYPEC or TYPED
if (pbrp > pbwp)
goto cb_start;
} else {
// pcmbuffer
// +---------+-------------+----------+
// |/////////| |//////////|
// +------+--+-------------+----------+
// <-lenb-> A <---lena--->
// A | A A
// | | | |
// pbsp pbwp pbrp pbep
buf = pbrp;
pbrp += len;
//printf("TYPEA: ");
}
else
{
// pcmbuffer
// +---------+-------------+----------+
// |/////////| |//////////|
// +------+--+-------------+----------+
// <-lenb-> A <---lena--->
// A | A A
// | | | |
// pbsp pbwp pbrp pbep
lena = pbep - pbrp;
if (lena >= len) {
buf = pbrp;
pbrp += len;
//printf("TYPEC: ");
} else {
lenb = len - lena;
if (pbwp - pbsp < lenb) {
lena = pbep - pbrp;
if (lena >= len)
{
buf = pbrp;
pbrp += len;
//printf("TYPEC: ");
}
else
{
lenb = len - lena;
DSound_Send((lenb - (pbwp - pbsp)) / 4);
if (pbwp - pbsp < lenb)
DSound_Send((lenb - (pbwp - pbsp)) / 4);
}
#if 0
if (pbwp - pbsp < lenb) {
printf("xxxxx not enough sound data xxxxx\n");
}
if (pbwp - pbsp < lenb)
printf("xxxxx not enough sound data xxxxx\n");
#endif
memcpy(rsndbuf, pbrp, lena);
memcpy(&rsndbuf[lena], pbsp, lenb);
buf = rsndbuf;
pbrp = pbsp + lenb;
//printf("TYPED: ");
}
}
memcpy(rsndbuf, pbrp, lena);
memcpy(&rsndbuf[lena], pbsp, lenb);
buf = rsndbuf;
pbrp = pbsp + lenb;
//printf("TYPED: ");
}
}
signed short int *ptr=(signed short int *)buf;
memcpy(&soundbuf[0],buf,len);
audio_batch_cb(soundbuf,len/4);
//printf("%d %d \n",len,lena+lenb);
// _MixAudio(stream, buf, len, _MIX_MAXVOLUME);
signed short int *ptr=(signed short int *)buf;
memcpy(&soundbuf[0],buf,len);
audio_batch_cb(soundbuf,len/4);
bef = now;
}
#else /* NOSOUND */
+18 -19
View File
@@ -915,29 +915,28 @@ extern "C" void exec_app_retro(){
//}
}
extern "C" void end_loop_retro(){
//end_loop:
Memory_WriteB(0xe8e00d, 0x31); // SRAMœñ€­¹þ€ßµö²Ä
Memory_WriteD(0xed0040, Memory_ReadD(0xed0040)+1); // ÀÑ»»²ÔƯ»þŽÖ(min.)
Memory_WriteD(0xed0044, Memory_ReadD(0xed0044)+1); // ÀÑ»»µ¯Æ°²ó¿ô
extern "C" void end_loop_retro(void)
{
//end_loop:
Memory_WriteB(0xe8e00d, 0x31); // SRAMœñ€­¹þ€ßµö²Ä
Memory_WriteD(0xed0040, Memory_ReadD(0xed0040)+1); // ÀÑ»»²ÔƯ»þŽÖ(min.)
Memory_WriteD(0xed0044, Memory_ReadD(0xed0044)+1); // ÀÑ»»µ¯Æ°²ó¿ô
OPM_Cleanup();
OPM_Cleanup();
#ifndef NO_MERCURY
Mcry_Cleanup();
Mcry_Cleanup();
#endif
Joystick_Cleanup();
SRAM_Cleanup();
FDD_Cleanup();
//CDROM_Cleanup();
MIDI_Cleanup();
DSound_Cleanup();
WinX68k_Cleanup();
WinDraw_Cleanup();
WinDraw_CleanupScreen();
Joystick_Cleanup();
SRAM_Cleanup();
FDD_Cleanup();
//CDROM_Cleanup();
MIDI_Cleanup();
DSound_Cleanup();
WinX68k_Cleanup();
WinDraw_Cleanup();
WinDraw_CleanupScreen();
SaveConfig();
return 0;
SaveConfig();
}
+1 -1
View File
@@ -1,7 +1,7 @@
#ifndef _winx68k_memory
#define _winx68k_memory
#include "../x11/common.h"
#include "../libretro/common.h"
#define Memory_ReadB cpu_readmem24
#define Memory_ReadW cpu_readmem24_word