mirror of
https://github.com/libretro/beetle-psx-libretro.git
synced 2024-11-27 10:50:29 +00:00
Update to Mednafen PSX 0.9.34.1
This commit is contained in:
parent
cd3078d082
commit
0826d617aa
64
libretro.cpp
64
libretro.cpp
@ -130,13 +130,6 @@ uint32_t PSX_GetRandU32(uint32_t mina, uint32_t maxa)
|
||||
return PSX_PRNG.RandU32(mina, maxa);
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
static uint32_t PortReadCounter[0x4000] = { 0 }; // Debugging(performance)
|
||||
static uint32_t ReadCounter = 0;
|
||||
static uint32_t WriteCounter = 0;
|
||||
#endif
|
||||
|
||||
std::vector<CDIF*> *cdifs = NULL;
|
||||
std::vector<const char *> cdifs_scex_ids;
|
||||
bool CD_TrayOpen;
|
||||
@ -491,15 +484,6 @@ template<typename T, bool IsWrite, bool Access24> static INLINE void MemRW(pscpu
|
||||
|
||||
if(A >= 0x1F801000 && A <= 0x1F802FFF)
|
||||
{
|
||||
#if 0
|
||||
if(!IsWrite)
|
||||
{
|
||||
ReadCounter++;
|
||||
PortReadCounter[A & 0x3FFF]++;
|
||||
}
|
||||
else
|
||||
WriteCounter++;
|
||||
#endif
|
||||
|
||||
//if(IsWrite)
|
||||
// printf("HW Write%d: %08x %08x\n", (unsigned int)(sizeof(T)*8), (unsigned int)A, (unsigned int)V);
|
||||
@ -1361,6 +1345,8 @@ static void InitCommon(std::vector<CDIF *> *CDInterfaces, const bool EmulateMemc
|
||||
EmulatedPSX.fb_width = 768;
|
||||
EmulatedPSX.fb_height = 576;
|
||||
|
||||
EmulatedPSX.fps = 836203078;
|
||||
|
||||
MDFNGameInfo->VideoSystem = VIDSYS_PAL;
|
||||
}
|
||||
else
|
||||
@ -1374,6 +1360,8 @@ static void InitCommon(std::vector<CDIF *> *CDInterfaces, const bool EmulateMemc
|
||||
EmulatedPSX.fb_width = 768;
|
||||
EmulatedPSX.fb_height = 480;
|
||||
|
||||
EmulatedPSX.fps = 1005643085;
|
||||
|
||||
MDFNGameInfo->VideoSystem = VIDSYS_NTSC;
|
||||
}
|
||||
|
||||
@ -1754,12 +1742,16 @@ int StateAction(StateMem *sm, int load, int data_only)
|
||||
SFVAR(CD_TrayOpen),
|
||||
SFVAR(CD_SelectedDisc),
|
||||
SFARRAY(MainRAM.data8, 1024 * 2048),
|
||||
//SFARRAY(ScratchRAM.data8, 1024),
|
||||
SFARRAY32(SysControl.Regs, 9),
|
||||
//SFARRAY32(next_timestamps, sizeof(next_timestamps) / sizeof(next_timestamps[0])),
|
||||
SFVAR(PSX_PRNG.lcgo),
|
||||
SFVAR(PSX_PRNG.x),
|
||||
SFVAR(PSX_PRNG.y),
|
||||
SFVAR(PSX_PRNG.z),
|
||||
SFVAR(PSX_PRNG.c),
|
||||
SFEND
|
||||
};
|
||||
|
||||
|
||||
int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "MAIN");
|
||||
|
||||
// Call SetDisc() BEFORE we load CDC state, since SetDisc() has emulation side effects. We might want to clean this up in the future.
|
||||
@ -1775,15 +1767,20 @@ int StateAction(StateMem *sm, int load, int data_only)
|
||||
ret &= DMA_StateAction(sm, load, data_only);
|
||||
ret &= TIMER_StateAction(sm, load, data_only);
|
||||
ret &= CDC->StateAction(sm, load, data_only);
|
||||
ret &= MDEC_StateAction(sm, load, data_only);
|
||||
ret &= SPU->StateAction(sm, load, data_only);
|
||||
//ret &= FIO->StateAction(sm, load, data_only);
|
||||
|
||||
// These need some work still:
|
||||
//ret &= MDEC_StateAction(sm, load, data_only);
|
||||
//ret &= SPU->StateAction(sm, load, data_only);
|
||||
ret &= FIO->StateAction(sm, load, data_only);
|
||||
//ret &= SIO_StateAction(sm, load, data_only);
|
||||
//ret &= GPU->StateAction(sm, load, data_only);
|
||||
ret &= IRQ_StateAction(sm, load, data_only);
|
||||
//// End needing work
|
||||
|
||||
ret &= IRQ_StateAction(sm, load, data_only); // Do it last.
|
||||
|
||||
if(load)
|
||||
{
|
||||
|
||||
ForceEventUpdates(0); // FIXME to work with debugger step mode.
|
||||
}
|
||||
|
||||
return(ret);
|
||||
@ -2055,7 +2052,7 @@ static Deinterlacer deint;
|
||||
|
||||
#define MEDNAFEN_CORE_NAME_MODULE "psx"
|
||||
#define MEDNAFEN_CORE_NAME "Mednafen PSX"
|
||||
#define MEDNAFEN_CORE_VERSION "v0.9.33.3"
|
||||
#define MEDNAFEN_CORE_VERSION "v0.9.34.1"
|
||||
#define MEDNAFEN_CORE_EXTENSIONS "cue|toc|m3u|ccd"
|
||||
static double mednafen_psx_fps = 59.82704; // Hardcoded for NTSC atm.
|
||||
#define MEDNAFEN_CORE_GEOMETRY_BASE_W 320
|
||||
@ -2524,8 +2521,8 @@ void retro_run(void)
|
||||
update_input();
|
||||
|
||||
static int16_t sound_buf[0x10000];
|
||||
static MDFN_Rect rects[FB_MAX_HEIGHT];
|
||||
rects[0].w = ~0;
|
||||
static int32 rects[FB_MAX_HEIGHT];
|
||||
rects[0] = ~0;
|
||||
|
||||
EmulateSpecStruct spec = {0};
|
||||
spec.surface = surf;
|
||||
@ -2608,19 +2605,6 @@ void retro_run(void)
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
printf("read=%6d, write=%6d\n", ReadCounter, WriteCounter);
|
||||
ReadCounter = 0;
|
||||
WriteCounter = 0;
|
||||
printf("HW Port reads for this frame:\n");
|
||||
for(unsigned i = 0; i < 0x4000; i++)
|
||||
{
|
||||
if(PortReadCounter[i] > 100)
|
||||
printf("0x%08x: %d\n", 0x1f800000 + i, PortReadCounter[i]);
|
||||
}
|
||||
memset(PortReadCounter, 0, sizeof(PortReadCounter));
|
||||
printf("\n");
|
||||
#endif
|
||||
/* end of Emulate */
|
||||
|
||||
#ifdef NEED_DEINTERLACER
|
||||
@ -2649,7 +2633,7 @@ void retro_run(void)
|
||||
|
||||
// PSX is rather special, and needs specific handling ...
|
||||
|
||||
unsigned width = rects[0].w; // spec.DisplayRect.w is 0. Only rects[0].w seems to return something sane.
|
||||
unsigned width = rects[0]; // spec.DisplayRect.w is 0. Only rects[0].w seems to return something sane.
|
||||
unsigned height = spec.DisplayRect.h;
|
||||
//fprintf(stderr, "(%u x %u)\n", width, height);
|
||||
// PSX core inserts padding on left and right (overscan). Optionally crop this.
|
||||
|
@ -47,12 +47,15 @@ typedef enum
|
||||
{
|
||||
IDIT_BUTTON, // 1-bit
|
||||
IDIT_BUTTON_CAN_RAPID, // 1-bit
|
||||
IDIT_BUTTON_BYTE, // 8-bits, Button as a byte instead of a bit.
|
||||
|
||||
IDIT_X_AXIS, // (mouse) 32-bits, signed, fixed-point: 1.15.16 - in-screen/window range: [0.0, nominal_width)
|
||||
IDIT_Y_AXIS, // (mouse) 32-bits, signed, fixed-point: 1.15.16 - in-screen/window range: [0.0, nominal_height)
|
||||
|
||||
IDIT_X_AXIS_REL, // (mouse) 32-bits, signed
|
||||
IDIT_Y_AXIS_REL, // (mouse) 32-bits, signed
|
||||
|
||||
IDIT_BYTE_SPECIAL,
|
||||
|
||||
IDIT_BUTTON_ANALOG, // 32-bits, 0 - 32767
|
||||
IDIT_RUMBLE, // 32-bits, lower 8 bits are weak rumble(0-255), next 8 bits are strong rumble(0-255), 0=no rumble, 255=max rumble. Somewhat subjective, too...
|
||||
// May extend to 16-bit each in the future.
|
||||
@ -61,6 +64,9 @@ typedef enum
|
||||
|
||||
#include "git-virtb.h"
|
||||
|
||||
#define IDIT_BUTTON_ANALOG_FLAG_SQLR 0x00000001 // Denotes analog data that may need to be scaled to ensure a more squareish logical range(for emulated
|
||||
// analog sticks).
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char *SettingName; // No spaces, shouldbe all a-z0-9 and _. Definitely no ~!
|
||||
@ -72,8 +78,7 @@ typedef struct
|
||||
// due to physical limitations.
|
||||
|
||||
const char *RotateName[3]; // 90, 180, 270
|
||||
//const char *Rotate180Name;
|
||||
//const char *Rotate270Name;
|
||||
unsigned Flags;
|
||||
} InputDeviceInputInfoStruct;
|
||||
|
||||
typedef struct
|
||||
@ -202,7 +207,7 @@ typedef struct
|
||||
// to by system emulation code. If the emulated system doesn't support multiple screen widths per frame, or if you handle
|
||||
// such a situation by outputting at a constant width-per-frame that is the least-common-multiple of the screen widths, then
|
||||
// you can ignore this. If you do wish to use this, you must set all elements every frame.
|
||||
MDFN_Rect *LineWidths;
|
||||
int32 *LineWidths;
|
||||
|
||||
// TODO
|
||||
bool *IsFMV;
|
||||
|
@ -1,701 +0,0 @@
|
||||
# Makefile.in generated by automake 1.11.6 from Makefile.am.
|
||||
# src/psx/Makefile. Generated from Makefile.in by configure.
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||
# Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
|
||||
|
||||
am__make_dryrun = \
|
||||
{ \
|
||||
am__dry=no; \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
*) \
|
||||
for am__flg in $$MAKEFLAGS; do \
|
||||
case $$am__flg in \
|
||||
*=*|--*) ;; \
|
||||
*n*) am__dry=yes; break;; \
|
||||
esac; \
|
||||
done;; \
|
||||
esac; \
|
||||
test $$am__dry = yes; \
|
||||
}
|
||||
pkgdatadir = $(datadir)/mednafen
|
||||
pkgincludedir = $(includedir)/mednafen
|
||||
pkglibdir = $(libdir)/mednafen
|
||||
pkglibexecdir = $(libexecdir)/mednafen
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = x86_64-unknown-linux-gnu
|
||||
host_triplet = x86_64-unknown-linux-gnu
|
||||
target_triplet = x86_64-unknown-linux-gnu
|
||||
am__append_1 = debug.cpp
|
||||
subdir = src/psx
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \
|
||||
$(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \
|
||||
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \
|
||||
$(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \
|
||||
$(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \
|
||||
$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \
|
||||
$(top_srcdir)/m4/inttypes-pri.m4 \
|
||||
$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
|
||||
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
|
||||
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
|
||||
$(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \
|
||||
$(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \
|
||||
$(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \
|
||||
$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \
|
||||
$(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/include/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
LIBRARIES = $(noinst_LIBRARIES)
|
||||
ARFLAGS = cru
|
||||
AM_V_AR = $(am__v_AR_$(V))
|
||||
am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_AR_0 = @echo " AR " $@;
|
||||
AM_V_at = $(am__v_at_$(V))
|
||||
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_at_0 = @
|
||||
libpsx_a_AR = $(AR) $(ARFLAGS)
|
||||
libpsx_a_LIBADD =
|
||||
am__libpsx_a_SOURCES_DIST = psx.cpp irq.cpp timer.cpp dma.cpp \
|
||||
frontio.cpp sio.cpp cpu.cpp gte.cpp dis.cpp cdc.cpp spu.cpp \
|
||||
gpu.cpp mdec.cpp input/gamepad.cpp input/dualanalog.cpp \
|
||||
input/dualshock.cpp input/memcard.cpp input/multitap.cpp \
|
||||
input/mouse.cpp input/negcon.cpp input/guncon.cpp \
|
||||
input/justifier.cpp debug.cpp
|
||||
am__dirstamp = $(am__leading_dot)dirstamp
|
||||
am__objects_1 = debug.$(OBJEXT)
|
||||
am_libpsx_a_OBJECTS = psx.$(OBJEXT) irq.$(OBJEXT) timer.$(OBJEXT) \
|
||||
dma.$(OBJEXT) frontio.$(OBJEXT) sio.$(OBJEXT) cpu.$(OBJEXT) \
|
||||
gte.$(OBJEXT) dis.$(OBJEXT) cdc.$(OBJEXT) spu.$(OBJEXT) \
|
||||
gpu.$(OBJEXT) mdec.$(OBJEXT) input/gamepad.$(OBJEXT) \
|
||||
input/dualanalog.$(OBJEXT) input/dualshock.$(OBJEXT) \
|
||||
input/memcard.$(OBJEXT) input/multitap.$(OBJEXT) \
|
||||
input/mouse.$(OBJEXT) input/negcon.$(OBJEXT) \
|
||||
input/guncon.$(OBJEXT) input/justifier.$(OBJEXT) \
|
||||
$(am__objects_1)
|
||||
libpsx_a_OBJECTS = $(am_libpsx_a_OBJECTS)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
am__mv = mv -f
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
AM_V_lt = $(am__v_lt_$(V))
|
||||
am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_lt_0 = --silent
|
||||
LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
AM_V_CXX = $(am__v_CXX_$(V))
|
||||
am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CXX_0 = @echo " CXX " $@;
|
||||
CXXLD = $(CXX)
|
||||
CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
|
||||
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CXXLD = $(am__v_CXXLD_$(V))
|
||||
am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_CXXLD_0 = @echo " CXXLD " $@;
|
||||
AM_V_GEN = $(am__v_GEN_$(V))
|
||||
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
SOURCES = $(libpsx_a_SOURCES)
|
||||
DIST_SOURCES = $(am__libpsx_a_SOURCES_DIST)
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = ${SHELL} /home/squarepusher/Downloads/mednafen/missing --run aclocal-1.11
|
||||
ALLOCA =
|
||||
ALSA_CFLAGS =
|
||||
ALSA_LIBS = -lasound -lm -ldl -lpthread
|
||||
AMTAR = $${TAR-tar}
|
||||
AM_CFLAGS = -fsigned-char -Wall -Winline -Wshadow -Wempty-body -Wignored-qualifiers -fno-fast-math -fno-unsafe-math-optimizations -fno-aggressive-loop-optimizations -fomit-frame-pointer -finline-limit=6000 --param large-function-growth=800 --param inline-unit-growth=175 --param max-inline-insns-single=10000 -fno-strict-overflow
|
||||
AM_CXXFLAGS = -fsigned-char -Wall -Winline -Wshadow -Wempty-body -Wignored-qualifiers -fno-fast-math -fno-unsafe-math-optimizations -fno-aggressive-loop-optimizations -fomit-frame-pointer -finline-limit=6000 --param large-function-growth=800 --param inline-unit-growth=175 --param max-inline-insns-single=10000 -fno-strict-overflow
|
||||
AM_DEFAULT_VERBOSITY = 1
|
||||
AR = ar
|
||||
AUTOCONF = ${SHELL} /home/squarepusher/Downloads/mednafen/missing --run autoconf
|
||||
AUTOHEADER = ${SHELL} /home/squarepusher/Downloads/mednafen/missing --run autoheader
|
||||
AUTOMAKE = ${SHELL} /home/squarepusher/Downloads/mednafen/missing --run automake-1.11
|
||||
AWK = gawk
|
||||
BUILD_INCLUDED_LIBINTL = no
|
||||
CATOBJEXT = .gmo
|
||||
CC = gcc
|
||||
CCAS = gcc
|
||||
CCASDEPMODE = depmode=gcc3
|
||||
CCASFLAGS = -g -O2
|
||||
CCDEPMODE = depmode=gcc3
|
||||
CFLAGS = -g -O2
|
||||
CFLAG_VISIBILITY = -fvisibility=hidden
|
||||
CPP = gcc -E
|
||||
CPPFLAGS =
|
||||
CXX = g++
|
||||
CXXCPP = g++ -E
|
||||
CXXDEPMODE = depmode=gcc3
|
||||
CXXFLAGS = -g -O2
|
||||
CYGPATH_W = echo
|
||||
DATADIRNAME = share
|
||||
DEFS = -DLOCALEDIR=\"$(datadir)/locale\" -DHAVE_CONFIG_H -mmmx -msse -msse2 -funroll-loops
|
||||
DEPDIR = .deps
|
||||
DLLTOOL = false
|
||||
DSYMUTIL =
|
||||
DUMPBIN =
|
||||
ECHO_C =
|
||||
ECHO_N = -n
|
||||
ECHO_T =
|
||||
EGREP = /usr/bin/grep -E
|
||||
EXEEXT =
|
||||
FGREP = /usr/bin/grep -F
|
||||
GBA_EXTRA_FLAGS = -fno-unit-at-a-time
|
||||
GENCAT = gencat
|
||||
GETTEXT_MACRO_VERSION = 0.18
|
||||
GLIBC2 = yes
|
||||
GLIBC21 = yes
|
||||
GMSGFMT = /usr/bin/msgfmt
|
||||
GMSGFMT_015 = /usr/bin/msgfmt
|
||||
GREP = /usr/bin/grep
|
||||
HAVE_ASPRINTF = 1
|
||||
HAVE_NEWLOCALE = 1
|
||||
HAVE_POSIX_PRINTF = 1
|
||||
HAVE_SNPRINTF = 1
|
||||
HAVE_VISIBILITY = 1
|
||||
HAVE_WPRINTF = 0
|
||||
INSTALL = /usr/bin/install -c
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_SCRIPT = ${INSTALL}
|
||||
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
|
||||
INSTOBJEXT = .mo
|
||||
INTLBISON = bison
|
||||
INTLLIBS =
|
||||
INTLOBJS =
|
||||
INTL_DEFAULT_VERBOSITY = 1
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX =
|
||||
INTL_MACOSX_LIBS =
|
||||
JACK_CFLAGS =
|
||||
JACK_LIBS = -ljack -lpthread
|
||||
LD = /usr/bin/ld -m elf_x86_64
|
||||
LDFLAGS =
|
||||
LIBCDIO_CFLAGS =
|
||||
LIBCDIO_LIBS = -lcdio -lm
|
||||
LIBICONV =
|
||||
LIBINTL =
|
||||
LIBMULTITHREAD = -lpthread
|
||||
LIBOBJS =
|
||||
LIBPTH =
|
||||
LIBPTH_PREFIX =
|
||||
LIBS = -lsndfile -lcdio -lm -lz -lz -lasound -lm -ldl -lpthread -ljack -lpthread
|
||||
LIBTHREAD =
|
||||
LIBTOOL = $(SHELL) $(top_builddir)/libtool
|
||||
LIPO =
|
||||
LN_S = ln -s
|
||||
LTLIBC = -lc
|
||||
LTLIBICONV =
|
||||
LTLIBINTL =
|
||||
LTLIBMULTITHREAD = -lpthread
|
||||
LTLIBOBJS =
|
||||
LTLIBPTH =
|
||||
LTLIBTHREAD =
|
||||
MAKEINFO = ${SHELL} /home/squarepusher/Downloads/mednafen/missing --run makeinfo
|
||||
MANIFEST_TOOL = :
|
||||
MKDIR_P = /usr/bin/mkdir -p
|
||||
MMX_CFLAGS = -mmmx
|
||||
MSGFMT = /usr/bin/msgfmt
|
||||
MSGFMT_015 = /usr/bin/msgfmt
|
||||
MSGMERGE = /usr/bin/msgmerge
|
||||
NM = /usr/bin/nm -B
|
||||
NMEDIT =
|
||||
OBJDUMP = objdump
|
||||
OBJEXT = o
|
||||
OTOOL =
|
||||
OTOOL64 =
|
||||
PACKAGE = mednafen
|
||||
PACKAGE_BUGREPORT =
|
||||
PACKAGE_NAME =
|
||||
PACKAGE_STRING =
|
||||
PACKAGE_TARNAME =
|
||||
PACKAGE_URL =
|
||||
PACKAGE_VERSION =
|
||||
PATH_SEPARATOR = :
|
||||
PKG_CONFIG = /usr/bin/pkg-config
|
||||
PKG_CONFIG_LIBDIR =
|
||||
PKG_CONFIG_PATH =
|
||||
POSUB = po
|
||||
PRI_MACROS_BROKEN = 0
|
||||
RANLIB = ranlib
|
||||
SDL_CFLAGS = -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
|
||||
SDL_CONFIG = /usr/bin/sdl-config
|
||||
SDL_LIBS = -L/usr/lib -lSDL -lpthread
|
||||
SED = /usr/bin/sed
|
||||
SET_MAKE =
|
||||
SHELL = /bin/sh
|
||||
SNDFILE_CFLAGS =
|
||||
SNDFILE_LIBS = -lsndfile
|
||||
SNES_EXTRA_CXXFLAGS =
|
||||
SNES_EXTRA_FLAGS = -Wno-unused -Wno-inline -Wno-shadow -Wno-sign-compare -Wno-ignored-qualifiers -Wno-uninitialized -Wno-parentheses -Wno-switch
|
||||
SNES_PERF_EXTRA_CXXFLAGS = -funswitch-loops -fpredictive-commoning -fgcse-after-reload -ftree-vectorize -fipa-cp-clone -fno-stack-protector
|
||||
SNES_PERF_EXTRA_FLAGS = -Wno-unused -Wno-inline -Wno-shadow -Wno-sign-compare -Wno-ignored-qualifiers -Wno-uninitialized -Wno-parentheses -Wno-switch
|
||||
SSE2_CFLAGS = -msse2
|
||||
SSE3_CFLAGS = -msse3
|
||||
SSE_CFLAGS = -msse
|
||||
STRIP = strip
|
||||
TRIO_CFLAGS =
|
||||
USE_INCLUDED_LIBINTL = no
|
||||
USE_NLS = yes
|
||||
VERSION = 0.9.33.3
|
||||
WARNING_FLAGS = -Wall -Winline -Wshadow -Wempty-body -Wignored-qualifiers
|
||||
WINDRES =
|
||||
WOE32 = no
|
||||
WOE32DLL = no
|
||||
XGETTEXT = /usr/bin/xgettext
|
||||
XGETTEXT_015 = /usr/bin/xgettext
|
||||
XGETTEXT_EXTRA_OPTIONS =
|
||||
abs_builddir = /home/squarepusher/Downloads/mednafen/src/psx
|
||||
abs_srcdir = /home/squarepusher/Downloads/mednafen/src/psx
|
||||
abs_top_builddir = /home/squarepusher/Downloads/mednafen
|
||||
abs_top_srcdir = /home/squarepusher/Downloads/mednafen
|
||||
ac_ct_AR = ar
|
||||
ac_ct_CC = gcc
|
||||
ac_ct_CXX = g++
|
||||
ac_ct_DUMPBIN =
|
||||
am__include = include
|
||||
am__leading_dot = .
|
||||
am__quote =
|
||||
am__tar = $${TAR-tar} chof - "$$tardir"
|
||||
am__untar = $${TAR-tar} xf -
|
||||
bindir = ${exec_prefix}/bin
|
||||
build = x86_64-unknown-linux-gnu
|
||||
build_alias =
|
||||
build_cpu = x86_64
|
||||
build_os = linux-gnu
|
||||
build_vendor = unknown
|
||||
builddir = .
|
||||
datadir = ${datarootdir}
|
||||
datarootdir = ${prefix}/share
|
||||
docdir = ${datarootdir}/doc/${PACKAGE}
|
||||
dvidir = ${docdir}
|
||||
exec_prefix = ${prefix}
|
||||
host = x86_64-unknown-linux-gnu
|
||||
host_alias =
|
||||
host_cpu = x86_64
|
||||
host_os = linux-gnu
|
||||
host_vendor = unknown
|
||||
htmldir = ${docdir}
|
||||
includedir = ${prefix}/include
|
||||
infodir = ${datarootdir}/info
|
||||
install_sh = ${SHELL} /home/squarepusher/Downloads/mednafen/install-sh
|
||||
libdir = ${exec_prefix}/lib
|
||||
libexecdir = ${exec_prefix}/libexec
|
||||
localedir = ${datarootdir}/locale
|
||||
localstatedir = ${prefix}/var
|
||||
mandir = ${datarootdir}/man
|
||||
mkdir_p = /usr/bin/mkdir -p
|
||||
oldincludedir = /usr/include
|
||||
pdfdir = ${docdir}
|
||||
prefix = /usr/local
|
||||
program_transform_name = s,x,x,
|
||||
psdir = ${docdir}
|
||||
sbindir = ${exec_prefix}/sbin
|
||||
sharedstatedir = ${prefix}/com
|
||||
srcdir = .
|
||||
sysconfdir = ${prefix}/etc
|
||||
target = x86_64-unknown-linux-gnu
|
||||
target_alias =
|
||||
target_cpu = x86_64
|
||||
target_os = linux-gnu
|
||||
target_vendor = unknown
|
||||
top_build_prefix = ../../
|
||||
top_builddir = ../..
|
||||
top_srcdir = ../..
|
||||
AUTOMAKE_OPTIONS = subdir-objects
|
||||
DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir)
|
||||
noinst_LIBRARIES = libpsx.a
|
||||
libpsx_a_SOURCES = psx.cpp irq.cpp timer.cpp dma.cpp frontio.cpp \
|
||||
sio.cpp cpu.cpp gte.cpp dis.cpp cdc.cpp spu.cpp gpu.cpp \
|
||||
mdec.cpp input/gamepad.cpp input/dualanalog.cpp \
|
||||
input/dualshock.cpp input/memcard.cpp input/multitap.cpp \
|
||||
input/mouse.cpp input/negcon.cpp input/guncon.cpp \
|
||||
input/justifier.cpp $(am__append_1)
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .cpp .lo .o .obj
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/psx/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu src/psx/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
clean-noinstLIBRARIES:
|
||||
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
||||
input/$(am__dirstamp):
|
||||
@$(MKDIR_P) input
|
||||
@: > input/$(am__dirstamp)
|
||||
input/$(DEPDIR)/$(am__dirstamp):
|
||||
@$(MKDIR_P) input/$(DEPDIR)
|
||||
@: > input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/gamepad.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/dualanalog.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/dualshock.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/memcard.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/multitap.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/mouse.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/negcon.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/guncon.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/justifier.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
libpsx.a: $(libpsx_a_OBJECTS) $(libpsx_a_DEPENDENCIES) $(EXTRA_libpsx_a_DEPENDENCIES)
|
||||
$(AM_V_at)-rm -f libpsx.a
|
||||
$(AM_V_AR)$(libpsx_a_AR) libpsx.a $(libpsx_a_OBJECTS) $(libpsx_a_LIBADD)
|
||||
$(AM_V_at)$(RANLIB) libpsx.a
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
-rm -f input/dualanalog.$(OBJEXT)
|
||||
-rm -f input/dualshock.$(OBJEXT)
|
||||
-rm -f input/gamepad.$(OBJEXT)
|
||||
-rm -f input/guncon.$(OBJEXT)
|
||||
-rm -f input/justifier.$(OBJEXT)
|
||||
-rm -f input/memcard.$(OBJEXT)
|
||||
-rm -f input/mouse.$(OBJEXT)
|
||||
-rm -f input/multitap.$(OBJEXT)
|
||||
-rm -f input/negcon.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
include ./$(DEPDIR)/cdc.Po
|
||||
include ./$(DEPDIR)/cpu.Po
|
||||
include ./$(DEPDIR)/debug.Po
|
||||
include ./$(DEPDIR)/dis.Po
|
||||
include ./$(DEPDIR)/dma.Po
|
||||
include ./$(DEPDIR)/frontio.Po
|
||||
include ./$(DEPDIR)/gpu.Po
|
||||
include ./$(DEPDIR)/gte.Po
|
||||
include ./$(DEPDIR)/irq.Po
|
||||
include ./$(DEPDIR)/mdec.Po
|
||||
include ./$(DEPDIR)/psx.Po
|
||||
include ./$(DEPDIR)/sio.Po
|
||||
include ./$(DEPDIR)/spu.Po
|
||||
include ./$(DEPDIR)/timer.Po
|
||||
include input/$(DEPDIR)/dualanalog.Po
|
||||
include input/$(DEPDIR)/dualshock.Po
|
||||
include input/$(DEPDIR)/gamepad.Po
|
||||
include input/$(DEPDIR)/guncon.Po
|
||||
include input/$(DEPDIR)/justifier.Po
|
||||
include input/$(DEPDIR)/memcard.Po
|
||||
include input/$(DEPDIR)/mouse.Po
|
||||
include input/$(DEPDIR)/multitap.Po
|
||||
include input/$(DEPDIR)/negcon.Po
|
||||
|
||||
.cpp.o:
|
||||
$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
|
||||
$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
|
||||
$(am__mv) $$depbase.Tpo $$depbase.Po
|
||||
# $(AM_V_CXX)source='$<' object='$@' libtool=no \
|
||||
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
|
||||
# $(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<
|
||||
|
||||
.cpp.obj:
|
||||
$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
|
||||
$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
|
||||
$(am__mv) $$depbase.Tpo $$depbase.Po
|
||||
# $(AM_V_CXX)source='$<' object='$@' libtool=no \
|
||||
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
|
||||
# $(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.cpp.lo:
|
||||
$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
|
||||
$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
|
||||
$(am__mv) $$depbase.Tpo $$depbase.Plo
|
||||
# $(AM_V_CXX)source='$<' object='$@' libtool=yes \
|
||||
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
|
||||
# $(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(LIBRARIES)
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
-rm -f input/$(DEPDIR)/$(am__dirstamp)
|
||||
-rm -f input/$(am__dirstamp)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR) input/$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR) input/$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-noinstLIBRARIES ctags distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||
pdf pdf-am ps ps-am tags uninstall uninstall-am
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
@ -1,12 +0,0 @@
|
||||
AUTOMAKE_OPTIONS = subdir-objects
|
||||
DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MMX_CFLAGS@ @SSE_CFLAGS@ @SSE2_CFLAGS@ -funroll-loops
|
||||
DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir)
|
||||
|
||||
noinst_LIBRARIES = libpsx.a
|
||||
libpsx_a_SOURCES = psx.cpp irq.cpp timer.cpp dma.cpp frontio.cpp sio.cpp cpu.cpp gte.cpp dis.cpp cdc.cpp spu.cpp gpu.cpp mdec.cpp
|
||||
|
||||
libpsx_a_SOURCES += input/gamepad.cpp input/dualanalog.cpp input/dualshock.cpp input/memcard.cpp input/multitap.cpp input/mouse.cpp input/negcon.cpp input/guncon.cpp input/justifier.cpp
|
||||
|
||||
if WANT_DEBUGGER
|
||||
libpsx_a_SOURCES += debug.cpp
|
||||
endif
|
@ -1,701 +0,0 @@
|
||||
# Makefile.in generated by automake 1.11.6 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||
# Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__make_dryrun = \
|
||||
{ \
|
||||
am__dry=no; \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
*) \
|
||||
for am__flg in $$MAKEFLAGS; do \
|
||||
case $$am__flg in \
|
||||
*=*|--*) ;; \
|
||||
*n*) am__dry=yes; break;; \
|
||||
esac; \
|
||||
done;; \
|
||||
esac; \
|
||||
test $$am__dry = yes; \
|
||||
}
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
@WANT_DEBUGGER_TRUE@am__append_1 = debug.cpp
|
||||
subdir = src/psx
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cflags_gcc_option.m4 \
|
||||
$(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/fcntl-o.m4 \
|
||||
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \
|
||||
$(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \
|
||||
$(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \
|
||||
$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \
|
||||
$(top_srcdir)/m4/inttypes-pri.m4 \
|
||||
$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
|
||||
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
|
||||
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
|
||||
$(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \
|
||||
$(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \
|
||||
$(top_srcdir)/m4/threadlib.m4 $(top_srcdir)/m4/uintmax_t.m4 \
|
||||
$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/wchar_t.m4 \
|
||||
$(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/include/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
LIBRARIES = $(noinst_LIBRARIES)
|
||||
ARFLAGS = cru
|
||||
AM_V_AR = $(am__v_AR_@AM_V@)
|
||||
am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
|
||||
am__v_AR_0 = @echo " AR " $@;
|
||||
AM_V_at = $(am__v_at_@AM_V@)
|
||||
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
am__v_at_0 = @
|
||||
libpsx_a_AR = $(AR) $(ARFLAGS)
|
||||
libpsx_a_LIBADD =
|
||||
am__libpsx_a_SOURCES_DIST = psx.cpp irq.cpp timer.cpp dma.cpp \
|
||||
frontio.cpp sio.cpp cpu.cpp gte.cpp dis.cpp cdc.cpp spu.cpp \
|
||||
gpu.cpp mdec.cpp input/gamepad.cpp input/dualanalog.cpp \
|
||||
input/dualshock.cpp input/memcard.cpp input/multitap.cpp \
|
||||
input/mouse.cpp input/negcon.cpp input/guncon.cpp \
|
||||
input/justifier.cpp debug.cpp
|
||||
am__dirstamp = $(am__leading_dot)dirstamp
|
||||
@WANT_DEBUGGER_TRUE@am__objects_1 = debug.$(OBJEXT)
|
||||
am_libpsx_a_OBJECTS = psx.$(OBJEXT) irq.$(OBJEXT) timer.$(OBJEXT) \
|
||||
dma.$(OBJEXT) frontio.$(OBJEXT) sio.$(OBJEXT) cpu.$(OBJEXT) \
|
||||
gte.$(OBJEXT) dis.$(OBJEXT) cdc.$(OBJEXT) spu.$(OBJEXT) \
|
||||
gpu.$(OBJEXT) mdec.$(OBJEXT) input/gamepad.$(OBJEXT) \
|
||||
input/dualanalog.$(OBJEXT) input/dualshock.$(OBJEXT) \
|
||||
input/memcard.$(OBJEXT) input/multitap.$(OBJEXT) \
|
||||
input/mouse.$(OBJEXT) input/negcon.$(OBJEXT) \
|
||||
input/guncon.$(OBJEXT) input/justifier.$(OBJEXT) \
|
||||
$(am__objects_1)
|
||||
libpsx_a_OBJECTS = $(am_libpsx_a_OBJECTS)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
am__mv = mv -f
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
am__v_lt_0 = --silent
|
||||
LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
AM_V_CXX = $(am__v_CXX_@AM_V@)
|
||||
am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
|
||||
am__v_CXX_0 = @echo " CXX " $@;
|
||||
CXXLD = $(CXX)
|
||||
CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
|
||||
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
|
||||
am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
|
||||
am__v_CXXLD_0 = @echo " CXXLD " $@;
|
||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
am__v_GEN_0 = @echo " GEN " $@;
|
||||
SOURCES = $(libpsx_a_SOURCES)
|
||||
DIST_SOURCES = $(am__libpsx_a_SOURCES_DIST)
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
ALSA_CFLAGS = @ALSA_CFLAGS@
|
||||
ALSA_LIBS = @ALSA_LIBS@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_CXXFLAGS = @AM_CXXFLAGS@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||
CATOBJEXT = @CATOBJEXT@
|
||||
CC = @CC@
|
||||
CCAS = @CCAS@
|
||||
CCASDEPMODE = @CCASDEPMODE@
|
||||
CCASFLAGS = @CCASFLAGS@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
DEFS = -DLOCALEDIR=\"$(datadir)/locale\" @DEFS@ @MMX_CFLAGS@ @SSE_CFLAGS@ @SSE2_CFLAGS@ -funroll-loops
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
DUMPBIN = @DUMPBIN@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GBA_EXTRA_FLAGS = @GBA_EXTRA_FLAGS@
|
||||
GENCAT = @GENCAT@
|
||||
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
||||
GLIBC2 = @GLIBC2@
|
||||
GLIBC21 = @GLIBC21@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GMSGFMT_015 = @GMSGFMT_015@
|
||||
GREP = @GREP@
|
||||
HAVE_ASPRINTF = @HAVE_ASPRINTF@
|
||||
HAVE_NEWLOCALE = @HAVE_NEWLOCALE@
|
||||
HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@
|
||||
HAVE_SNPRINTF = @HAVE_SNPRINTF@
|
||||
HAVE_VISIBILITY = @HAVE_VISIBILITY@
|
||||
HAVE_WPRINTF = @HAVE_WPRINTF@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
INSTOBJEXT = @INSTOBJEXT@
|
||||
INTLBISON = @INTLBISON@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTLOBJS = @INTLOBJS@
|
||||
INTL_DEFAULT_VERBOSITY = @INTL_DEFAULT_VERBOSITY@
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
|
||||
JACK_CFLAGS = @JACK_CFLAGS@
|
||||
JACK_LIBS = @JACK_LIBS@
|
||||
LD = @LD@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBCDIO_CFLAGS = @LIBCDIO_CFLAGS@
|
||||
LIBCDIO_LIBS = @LIBCDIO_LIBS@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBINTL = @LIBINTL@
|
||||
LIBMULTITHREAD = @LIBMULTITHREAD@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBPTH = @LIBPTH@
|
||||
LIBPTH_PREFIX = @LIBPTH_PREFIX@
|
||||
LIBS = @LIBS@
|
||||
LIBTHREAD = @LIBTHREAD@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIPO = @LIPO@
|
||||
LN_S = @LN_S@
|
||||
LTLIBC = @LTLIBC@
|
||||
LTLIBICONV = @LTLIBICONV@
|
||||
LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LTLIBPTH = @LTLIBPTH@
|
||||
LTLIBTHREAD = @LTLIBTHREAD@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
MMX_CFLAGS = @MMX_CFLAGS@
|
||||
MSGFMT = @MSGFMT@
|
||||
MSGFMT_015 = @MSGFMT_015@
|
||||
MSGMERGE = @MSGMERGE@
|
||||
NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||
POSUB = @POSUB@
|
||||
PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
|
||||
RANLIB = @RANLIB@
|
||||
SDL_CFLAGS = @SDL_CFLAGS@
|
||||
SDL_CONFIG = @SDL_CONFIG@
|
||||
SDL_LIBS = @SDL_LIBS@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
|
||||
SNDFILE_LIBS = @SNDFILE_LIBS@
|
||||
SNES_EXTRA_CXXFLAGS = @SNES_EXTRA_CXXFLAGS@
|
||||
SNES_EXTRA_FLAGS = @SNES_EXTRA_FLAGS@
|
||||
SNES_PERF_EXTRA_CXXFLAGS = @SNES_PERF_EXTRA_CXXFLAGS@
|
||||
SNES_PERF_EXTRA_FLAGS = @SNES_PERF_EXTRA_FLAGS@
|
||||
SSE2_CFLAGS = @SSE2_CFLAGS@
|
||||
SSE3_CFLAGS = @SSE3_CFLAGS@
|
||||
SSE_CFLAGS = @SSE_CFLAGS@
|
||||
STRIP = @STRIP@
|
||||
TRIO_CFLAGS = @TRIO_CFLAGS@
|
||||
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
WARNING_FLAGS = @WARNING_FLAGS@
|
||||
WINDRES = @WINDRES@
|
||||
WOE32 = @WOE32@
|
||||
WOE32DLL = @WOE32DLL@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XGETTEXT_015 = @XGETTEXT_015@
|
||||
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target = @target@
|
||||
target_alias = @target_alias@
|
||||
target_cpu = @target_cpu@
|
||||
target_os = @target_os@
|
||||
target_vendor = @target_vendor@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
AUTOMAKE_OPTIONS = subdir-objects
|
||||
DEFAULT_INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/intl -I$(top_srcdir)
|
||||
noinst_LIBRARIES = libpsx.a
|
||||
libpsx_a_SOURCES = psx.cpp irq.cpp timer.cpp dma.cpp frontio.cpp \
|
||||
sio.cpp cpu.cpp gte.cpp dis.cpp cdc.cpp spu.cpp gpu.cpp \
|
||||
mdec.cpp input/gamepad.cpp input/dualanalog.cpp \
|
||||
input/dualshock.cpp input/memcard.cpp input/multitap.cpp \
|
||||
input/mouse.cpp input/negcon.cpp input/guncon.cpp \
|
||||
input/justifier.cpp $(am__append_1)
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .cpp .lo .o .obj
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/psx/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu src/psx/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
clean-noinstLIBRARIES:
|
||||
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
||||
input/$(am__dirstamp):
|
||||
@$(MKDIR_P) input
|
||||
@: > input/$(am__dirstamp)
|
||||
input/$(DEPDIR)/$(am__dirstamp):
|
||||
@$(MKDIR_P) input/$(DEPDIR)
|
||||
@: > input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/gamepad.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/dualanalog.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/dualshock.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/memcard.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/multitap.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/mouse.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/negcon.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/guncon.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
input/justifier.$(OBJEXT): input/$(am__dirstamp) \
|
||||
input/$(DEPDIR)/$(am__dirstamp)
|
||||
libpsx.a: $(libpsx_a_OBJECTS) $(libpsx_a_DEPENDENCIES) $(EXTRA_libpsx_a_DEPENDENCIES)
|
||||
$(AM_V_at)-rm -f libpsx.a
|
||||
$(AM_V_AR)$(libpsx_a_AR) libpsx.a $(libpsx_a_OBJECTS) $(libpsx_a_LIBADD)
|
||||
$(AM_V_at)$(RANLIB) libpsx.a
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
-rm -f input/dualanalog.$(OBJEXT)
|
||||
-rm -f input/dualshock.$(OBJEXT)
|
||||
-rm -f input/gamepad.$(OBJEXT)
|
||||
-rm -f input/guncon.$(OBJEXT)
|
||||
-rm -f input/justifier.$(OBJEXT)
|
||||
-rm -f input/memcard.$(OBJEXT)
|
||||
-rm -f input/mouse.$(OBJEXT)
|
||||
-rm -f input/multitap.$(OBJEXT)
|
||||
-rm -f input/negcon.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dis.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dma.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frontio.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpu.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gte.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/irq.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mdec.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/psx.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sio.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spu.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/dualanalog.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/dualshock.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/gamepad.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/guncon.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/justifier.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/memcard.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/mouse.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/multitap.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/negcon.Po@am__quote@
|
||||
|
||||
.cpp.o:
|
||||
@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
|
||||
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
|
||||
@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
|
||||
|
||||
.cpp.obj:
|
||||
@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
|
||||
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
|
||||
@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.cpp.lo:
|
||||
@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
|
||||
@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
|
||||
@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
if test $$# -gt 0; then \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
"$$@" $$unique; \
|
||||
else \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(LIBRARIES)
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
-rm -f input/$(DEPDIR)/$(am__dirstamp)
|
||||
-rm -f input/$(am__dirstamp)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR) input/$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR) input/$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-noinstLIBRARIES ctags distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||
pdf pdf-am ps ps-am tags uninstall uninstall-am
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
@ -22,6 +22,10 @@ Tales of Destiny (Japanese version 1.0)
|
||||
Simple 1500 Series Vol. 057 - The Maze
|
||||
Locks up during startup; looks to be poorly programmed and extremely sensitive to seek timing.
|
||||
|
||||
Wing Commander 4
|
||||
Frequently locks up during FMV sequences(might be sensitive to seek delays or SPU IRQ timings).
|
||||
|
||||
|
||||
----------------------------------------------------------------------------------------------
|
||||
|
||||
***Medium issues***
|
||||
|
@ -219,21 +219,10 @@ int PS_CDC::StateAction(StateMem *sm, int load, int data_only)
|
||||
SFVAR(DiscChanged),
|
||||
SFVAR(DiscStartupDelay),
|
||||
|
||||
#if 0
|
||||
#define SFAB(n) SFARRAY16N(&AudioBuffer[n].Samples[0][0], sizeof(AudioBuffer[n].Samples) / sizeof(AudioBuffer[n].Samples[0][0]), #n "Samples"), \
|
||||
SFVARN(AudioBuffer[n].Size, #n "Size"), \
|
||||
SFVARN(AudioBuffer[n].Freq, #n "Freq")
|
||||
|
||||
SFAB(0),
|
||||
SFAB(1),
|
||||
SFAB(2),
|
||||
SFAB(3),
|
||||
|
||||
SFVAR(AudioBuffer_ReadPos),
|
||||
SFVAR(AudioBuffer_WritePos),
|
||||
SFVAR(AudioBuffer_UsedCount),
|
||||
SFVAR(AudioBuffer_InPrebuffer),
|
||||
#endif
|
||||
SFARRAY16(&AudioBuffer.Samples[0][0], sizeof(AudioBuffer.Samples) / sizeof(AudioBuffer.Samples[0][0])),
|
||||
SFVAR(AudioBuffer.Size),
|
||||
SFVAR(AudioBuffer.Freq),
|
||||
SFVAR(AudioBuffer.ReadPos),
|
||||
|
||||
SFARRAY(&Pending_DecodeVolume[0][0], 2 * 2),
|
||||
SFARRAY(&DecodeVolume[0][0], 2 * 2),
|
||||
@ -249,69 +238,75 @@ int PS_CDC::StateAction(StateMem *sm, int load, int data_only)
|
||||
SFVAR(ArgsWP),
|
||||
SFVAR(ArgsRP),
|
||||
|
||||
SFVAR(ArgsReceiveLatch),
|
||||
SFARRAY(ArgsReceiveBuf, 32),
|
||||
SFVAR(ArgsReceiveIn),
|
||||
|
||||
SFARRAY(ResultsBuffer, 16),
|
||||
SFVAR(ResultsIn),
|
||||
SFVAR(ResultsWP),
|
||||
SFVAR(ResultsRP),
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
SFARRAY(&DMABuffer.data[0], DMABuffer.data.size()),
|
||||
SFVAR(DMABuffer.read_pos),
|
||||
SFVAR(DMABuffer.write_pos),
|
||||
SFVAR(DMABuffer.in_count),
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
SFARRAY(&DMABuffer.data[0], DMABuffer.data.size()),
|
||||
SFVAR(DMABuffer.read_pos),
|
||||
SFVAR(DMABuffer.write_pos),
|
||||
SFVAR(DMABuffer.in_count),
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
SFARRAY(SB, sizeof(SB) / sizeof(SB[0])),
|
||||
SFVAR(SB_In),
|
||||
//SectorPipe_Pos = SectorPipe_In = 0;
|
||||
SFARRAY(SubQBuf, sizeof(SubQBuf) / sizeof(SubQBuf[0])),
|
||||
SFARRAY(SubQBuf_Safe, sizeof(SubQBuf_Safe) / sizeof(SubQBuf_Safe[0])),
|
||||
SFARRAY(SB, sizeof(SB) / sizeof(SB[0])),
|
||||
SFVAR(SB_In),
|
||||
|
||||
SFVAR(SubQChecksumOK),
|
||||
SFARRAY(HeaderBuf, sizeof(HeaderBuf) / sizeof(HeaderBuf[0])),
|
||||
SFARRAY(&SectorPipe[0][0], sizeof(SectorPipe) / sizeof(SectorPipe[0][0])),
|
||||
SFVAR(SectorPipe_Pos),
|
||||
SFVAR(SectorPipe_In),
|
||||
|
||||
SFARRAY(SubQBuf, sizeof(SubQBuf) / sizeof(SubQBuf[0])),
|
||||
SFARRAY(SubQBuf_Safe, sizeof(SubQBuf_Safe) / sizeof(SubQBuf_Safe[0])),
|
||||
|
||||
SFVAR(SubQChecksumOK),
|
||||
|
||||
SFVAR(IRQBuffer),
|
||||
SFVAR(IRQOutTestMask),
|
||||
SFVAR(CDCReadyReceiveCounter),
|
||||
SFVAR(HeaderBufValid),
|
||||
SFARRAY(HeaderBuf, sizeof(HeaderBuf) / sizeof(HeaderBuf[0])),
|
||||
|
||||
SFVAR(IRQBuffer),
|
||||
SFVAR(IRQOutTestMask),
|
||||
SFVAR(CDCReadyReceiveCounter),
|
||||
|
||||
SFVAR(FilterFile),
|
||||
SFVAR(FilterChan),
|
||||
|
||||
SFVAR(PendingCommand),
|
||||
SFVAR(PendingCommandPhase),
|
||||
SFVAR(PendingCommandCounter),
|
||||
|
||||
SFVAR(SPUCounter),
|
||||
|
||||
SFVAR(Mode),
|
||||
SFVAR(DriveStatus),
|
||||
SFVAR(StatusAfterSeek),
|
||||
SFVAR(Forward),
|
||||
SFVAR(Backward),
|
||||
SFVAR(Muted),
|
||||
|
||||
SFVAR(PlayTrackMatch),
|
||||
|
||||
SFVAR(PSRCounter),
|
||||
|
||||
SFVAR(CurSector),
|
||||
|
||||
|
||||
SFVAR(AsyncIRQPending),
|
||||
SFARRAY(AsyncResultsPending, sizeof(AsyncResultsPending) / sizeof(AsyncResultsPending[0])),
|
||||
SFVAR(AsyncResultsPendingCount),
|
||||
|
||||
SFVAR(FilterFile),
|
||||
SFVAR(FilterChan),
|
||||
|
||||
|
||||
SFVAR(PendingCommand),
|
||||
SFVAR(PendingCommandPhase),
|
||||
SFVAR(PendingCommandCounter),
|
||||
|
||||
SFVAR(SPUCounter),
|
||||
|
||||
SFVAR(Mode),
|
||||
SFVAR(DriveStatus),
|
||||
SFVAR(StatusAfterSeek),
|
||||
SFVAR(Forward),
|
||||
SFVAR(Backward),
|
||||
SFVAR(Muted),
|
||||
|
||||
SFVAR(PlayTrackMatch),
|
||||
|
||||
SFVAR(PSRCounter),
|
||||
|
||||
SFVAR(CurSector),
|
||||
|
||||
SFVAR(AsyncIRQPending),
|
||||
SFARRAY(AsyncResultsPending, sizeof(AsyncResultsPending) / sizeof(AsyncResultsPending[0])),
|
||||
SFVAR(AsyncResultsPendingCount),
|
||||
|
||||
|
||||
SFVAR(SeekTarget),
|
||||
|
||||
SFVAR(lastts),
|
||||
SFVAR(SeekTarget),
|
||||
|
||||
// FIXME: Save TOC stuff?
|
||||
#if 0
|
||||
CDUtility::TOC toc;
|
||||
bool IsPSXDisc;
|
||||
@ -324,6 +319,9 @@ int PS_CDC::StateAction(StateMem *sm, int load, int data_only)
|
||||
SFVAR(xa_cur_set),
|
||||
SFVAR(xa_cur_file),
|
||||
SFVAR(xa_cur_chan),
|
||||
|
||||
SFVAR(ReportLastF),
|
||||
|
||||
SFEND
|
||||
};
|
||||
|
||||
@ -903,9 +901,19 @@ void PS_CDC::HandlePlayRead(void)
|
||||
return;
|
||||
}
|
||||
|
||||
if((Mode & MODE_REPORT) && (!(SubQBuf_Safe[0x9] & 0xF) || Forward || Backward) && SubQChecksumOK) // Not sure about accurate notification behavior for corrupt SubQ data
|
||||
if((Mode & MODE_REPORT) && (((SubQBuf_Safe[0x9] >> 4) != ReportLastF) || Forward || Backward) && SubQChecksumOK)
|
||||
{
|
||||
uint8 tr[8];
|
||||
#if 0
|
||||
uint16 abs_lev_max = 0;
|
||||
bool abs_lev_chselect = SubQBuf_Safe[0x8] & 0x01;
|
||||
|
||||
for(int i = 0; i < 588; i++)
|
||||
abs_lev_max = std::max<uint16>(abs_lev_max, std::min<int>(abs((int16)MDFN_de16lsb(&read_buf[i * 4 + (abs_lev_chselect * 2)])), 32767));
|
||||
abs_lev_max |= abs_lev_chselect << 15;
|
||||
#endif
|
||||
|
||||
ReportLastF = SubQBuf_Safe[0x9] >> 4;
|
||||
|
||||
tr[0] = MakeStatus();
|
||||
tr[1] = SubQBuf_Safe[0x1]; // Track
|
||||
@ -924,8 +932,8 @@ void PS_CDC::HandlePlayRead(void)
|
||||
tr[5] = SubQBuf_Safe[0x9]; // A F
|
||||
}
|
||||
|
||||
tr[6] = 0; // ??
|
||||
tr[7] = 0; // ??
|
||||
tr[6] = 0; //abs_lev_max >> 0;
|
||||
tr[7] = 0; //abs_lev_max >> 8;
|
||||
|
||||
SetAIP(CDCIRQ_DATA_READY, 8, tr);
|
||||
}
|
||||
@ -1657,6 +1665,8 @@ int32 PS_CDC::Command_Play(const int arg_count, const uint8 *args)
|
||||
HeaderBufValid = false;
|
||||
PreSeekHack(false, SeekTarget);
|
||||
|
||||
ReportLastF = 0xFF;
|
||||
|
||||
DriveStatus = DS_SEEKING;
|
||||
StatusAfterSeek = DS_PLAYING;
|
||||
}
|
||||
@ -1676,6 +1686,8 @@ int32 PS_CDC::Command_Play(const int arg_count, const uint8 *args)
|
||||
HeaderBufValid = false;
|
||||
PreSeekHack(false, SeekTarget);
|
||||
|
||||
ReportLastF = 0xFF;
|
||||
|
||||
DriveStatus = DS_SEEKING;
|
||||
StatusAfterSeek = DS_PLAYING;
|
||||
}
|
||||
|
@ -208,6 +208,8 @@ class PS_CDC
|
||||
uint8 xa_cur_file;
|
||||
uint8 xa_cur_chan;
|
||||
|
||||
uint8 ReportLastF;
|
||||
|
||||
void HandlePlayRead(void);
|
||||
|
||||
struct CDC_CTEntry
|
||||
|
@ -84,6 +84,8 @@ void PS_CPU::Power(void)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
assert(sizeof(ICache) == sizeof(ICache_Bulk));
|
||||
|
||||
memset(GPR, 0, sizeof(GPR));
|
||||
memset(&CP0, 0, sizeof(CP0));
|
||||
LO = 0;
|
||||
@ -117,7 +119,7 @@ void PS_CPU::Power(void)
|
||||
|
||||
BIU = 0;
|
||||
|
||||
memset(ScratchRAM.data32, 0, 1024);
|
||||
memset(ScratchRAM.data8, 0, 1024);
|
||||
|
||||
// Not quite sure about these poweron/reset values:
|
||||
for(i = 0; i < 1024; i++)
|
||||
@ -129,7 +131,6 @@ void PS_CPU::Power(void)
|
||||
GTE_Power();
|
||||
}
|
||||
|
||||
// FIXME: save/restore icache data.
|
||||
int PS_CPU::StateAction(StateMem *sm, int load, int data_only)
|
||||
{
|
||||
SFORMAT StateRegs[] =
|
||||
@ -148,6 +149,15 @@ int PS_CPU::StateAction(StateMem *sm, int load, int data_only)
|
||||
SFVAR(BACKED_LDValue),
|
||||
SFVAR(LDAbsorb),
|
||||
|
||||
SFVAR(next_event_ts),
|
||||
SFVAR(gte_ts_done),
|
||||
SFVAR(muldiv_ts_done),
|
||||
|
||||
SFVAR(BIU),
|
||||
SFARRAY32(ICache_Bulk, 2048),
|
||||
|
||||
SFARRAY32(CP0.Regs, 32),
|
||||
|
||||
SFARRAY(ReadAbsorb, 0x20),
|
||||
SFVAR(ReadAbsorbDummy),
|
||||
SFVAR(ReadAbsorbWhich),
|
||||
@ -155,12 +165,6 @@ int PS_CPU::StateAction(StateMem *sm, int load, int data_only)
|
||||
|
||||
SFARRAY(ScratchRAM.data8, 1024),
|
||||
|
||||
SFVAR(next_event_ts),
|
||||
SFVAR(gte_ts_done),
|
||||
SFVAR(muldiv_ts_done),
|
||||
|
||||
SFARRAY32(CP0.Regs, 32),
|
||||
|
||||
SFEND
|
||||
};
|
||||
int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "CPU");
|
||||
@ -435,6 +439,11 @@ pscpu_timestamp_t PS_CPU::RunReal(pscpu_timestamp_t timestamp_in)
|
||||
register uint32_t LDWhich;
|
||||
register uint32_t LDValue;
|
||||
|
||||
//printf("%d %d\n", gte_ts_done, muldiv_ts_done);
|
||||
|
||||
gte_ts_done += timestamp;
|
||||
muldiv_ts_done += timestamp;
|
||||
|
||||
BACKING_TO_ACTIVE;
|
||||
|
||||
do
|
||||
@ -452,8 +461,16 @@ pscpu_timestamp_t PS_CPU::RunReal(pscpu_timestamp_t timestamp_in)
|
||||
{
|
||||
ACTIVE_TO_BACKING;
|
||||
|
||||
// For save states in step mode.
|
||||
gte_ts_done -= timestamp;
|
||||
muldiv_ts_done -= timestamp;
|
||||
|
||||
CPUHook(timestamp, PC);
|
||||
|
||||
// For save states in step mode.
|
||||
gte_ts_done += timestamp;
|
||||
muldiv_ts_done += timestamp;
|
||||
|
||||
BACKING_TO_ACTIVE;
|
||||
}
|
||||
|
||||
|
@ -112,7 +112,13 @@ class PS_CPU
|
||||
{
|
||||
uint32_t TV;
|
||||
uint32_t Data;
|
||||
} ICache[1024];
|
||||
};
|
||||
|
||||
union
|
||||
{
|
||||
__ICache ICache[1024];
|
||||
uint32 ICache_Bulk[2048];
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
|
@ -141,14 +141,6 @@ static void CPUHandler(const pscpu_timestamp_t timestamp, uint32 PC)
|
||||
{
|
||||
std::vector<PSX_BPOINT>::iterator bpit;
|
||||
|
||||
if(PC == 0xB0 && CPU->GetRegister(PS_CPU::GSREG_GPR + 9, NULL, 0) == 0x3D)
|
||||
{
|
||||
putchar(CPU->GetRegister(PS_CPU::GSREG_GPR + 4, NULL, 0));
|
||||
//exit(1);
|
||||
//puts((const char *)&MainRAM[CPU->GetRegister(PS_CPU::GSREG_GPR + 4, NULL, 0) & 0x1FFFFF]);
|
||||
}
|
||||
|
||||
|
||||
for(bpit = BreakPointsPC.begin(); bpit != BreakPointsPC.end(); bpit++)
|
||||
{
|
||||
if(PC >= bpit->A[0] && PC <= bpit->A[1])
|
||||
|
@ -778,8 +778,6 @@ int DMA_StateAction(StateMem *sm, int load, int data_only)
|
||||
SFDMACH(5),
|
||||
SFDMACH(6),
|
||||
|
||||
SFVAR(lastts),
|
||||
|
||||
SFEND
|
||||
};
|
||||
|
||||
|
@ -47,6 +47,11 @@ void InputDevice::Power(void)
|
||||
{
|
||||
}
|
||||
|
||||
int InputDevice::StateAction(StateMem* sm, int load, int data_only, const char* section_name)
|
||||
{
|
||||
return(1);
|
||||
}
|
||||
|
||||
void InputDevice::Update(const pscpu_timestamp_t timestamp)
|
||||
{
|
||||
|
||||
@ -67,6 +72,72 @@ void InputDevice::SetCrosshairsColor(uint32_t color)
|
||||
|
||||
}
|
||||
|
||||
int FrontIO::StateAction(StateMem* sm, int load, int data_only)
|
||||
{
|
||||
SFORMAT StateRegs[] =
|
||||
{
|
||||
SFVAR(ClockDivider),
|
||||
|
||||
SFVAR(ReceivePending),
|
||||
SFVAR(TransmitPending),
|
||||
|
||||
SFVAR(ReceiveInProgress),
|
||||
SFVAR(TransmitInProgress),
|
||||
|
||||
SFVAR(ReceiveBufferAvail),
|
||||
|
||||
SFVAR(ReceiveBuffer),
|
||||
SFVAR(TransmitBuffer),
|
||||
|
||||
SFVAR(ReceiveBitCounter),
|
||||
SFVAR(TransmitBitCounter),
|
||||
|
||||
SFVAR(Mode),
|
||||
SFVAR(Control),
|
||||
SFVAR(Baudrate),
|
||||
|
||||
SFVAR(istatus),
|
||||
|
||||
// FIXME:
|
||||
#if 0
|
||||
pscpu_timestamp_t irq10_pulse_ts[2];
|
||||
|
||||
int32 dsr_pulse_delay[4];
|
||||
int32 dsr_active_until_ts[4];
|
||||
#endif
|
||||
|
||||
SFEND
|
||||
};
|
||||
|
||||
int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "FIO");
|
||||
|
||||
for(unsigned i = 0; i < 8; i++)
|
||||
{
|
||||
char tmpbuf[32];
|
||||
trio_snprintf(tmpbuf, sizeof(tmpbuf), "FIODEV%u", i);
|
||||
|
||||
ret &= Devices[i]->StateAction(sm, load, data_only, tmpbuf);
|
||||
}
|
||||
|
||||
for(unsigned i = 0; i < 8; i++)
|
||||
{
|
||||
char tmpbuf[32];
|
||||
trio_snprintf(tmpbuf, sizeof(tmpbuf), "FIOMC%u", i);
|
||||
|
||||
ret &= DevicesMC[i]->StateAction(sm, load, data_only, tmpbuf);
|
||||
}
|
||||
|
||||
for(unsigned i = 0; i < 2; i++)
|
||||
{
|
||||
char tmpbuf[32];
|
||||
trio_snprintf(tmpbuf, sizeof(tmpbuf), "FIOTAP%u", i);
|
||||
|
||||
ret &= DevicesTap[i]->StateAction(sm, load, data_only, tmpbuf);
|
||||
}
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
bool InputDevice::RequireNoFrameskip(void)
|
||||
{
|
||||
return false;
|
||||
|
@ -15,6 +15,7 @@ class InputDevice
|
||||
|
||||
virtual void Power(void);
|
||||
virtual void UpdateInput(const void *data);
|
||||
virtual int StateAction(StateMem* sm, int load, int data_only, const char* section_name);
|
||||
|
||||
virtual bool RequireNoFrameskip(void);
|
||||
virtual pscpu_timestamp_t GPULineHook(const pscpu_timestamp_t line_timestamp, bool vsync, uint32_t *pixels, const MDFN_PixelFormat* const format, const unsigned width, const unsigned pix_clock_offset, const unsigned pix_clock);
|
||||
@ -76,6 +77,8 @@ class FrontIO
|
||||
void LoadMemcard(unsigned int which, const char *path);
|
||||
void SaveMemcard(unsigned int which, const char *path); //, bool force_save = false);
|
||||
|
||||
int StateAction(StateMem* sm, int load, int data_only);
|
||||
|
||||
private:
|
||||
|
||||
void DoDSRIRQ(void);
|
||||
|
@ -1234,8 +1234,7 @@ pscpu_timestamp_t PS_GPU::Update(const pscpu_timestamp_t sys_timestamp)
|
||||
{
|
||||
uint32_t *dest = surface->pixels + y * surface->pitch32;
|
||||
|
||||
LineWidths[y].x = 0;
|
||||
LineWidths[y].w = 384;
|
||||
LineWidths[y] = 384;
|
||||
|
||||
memset(dest, 0, 384 * sizeof(int32));
|
||||
}
|
||||
@ -1256,14 +1255,13 @@ pscpu_timestamp_t PS_GPU::Update(const pscpu_timestamp_t sys_timestamp)
|
||||
DisplayRect->h = VisibleLineCount << (bool)(DisplayMode & 0x20);
|
||||
|
||||
// Clear ~0 state.
|
||||
LineWidths[0].x = LineWidths[0].w = 0;
|
||||
LineWidths[0] = 0;
|
||||
|
||||
for(int i = 0; i < (DisplayRect->y + DisplayRect->h); i++)
|
||||
{
|
||||
surface->pixels[i * surface->pitch32 + 0] =
|
||||
surface->pixels[i * surface->pitch32 + 1] = 0;
|
||||
LineWidths[i].x = 0;
|
||||
LineWidths[i].w = 2;
|
||||
LineWidths[i] = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1362,8 +1360,7 @@ pscpu_timestamp_t PS_GPU::Update(const pscpu_timestamp_t sys_timestamp)
|
||||
// Also, it shouldn't be here per-se, since this code won't be all if we're frameskipping or there's a video standard mismatch
|
||||
//DrawTimeAvail -= (dx_end - dx_start) + ((DisplayMode & 0x10) ? ((dx_end - dx_start + 1) >> 1) : 0);
|
||||
|
||||
LineWidths[dest_line].x = 0;
|
||||
LineWidths[dest_line].w = dmw;
|
||||
LineWidths[dest_line] = dmw;
|
||||
|
||||
{
|
||||
uint32_t x;
|
||||
|
@ -292,7 +292,7 @@ class PS_GPU
|
||||
EmulateSpecStruct *espec;
|
||||
MDFN_Surface *surface;
|
||||
MDFN_Rect *DisplayRect;
|
||||
MDFN_Rect *LineWidths;
|
||||
int32 *LineWidths;
|
||||
bool HardwarePALType;
|
||||
int LineVisFirst, LineVisLast;
|
||||
|
||||
|
@ -13,6 +13,7 @@ class InputDevice_DualAnalog : public InputDevice
|
||||
virtual ~InputDevice_DualAnalog();
|
||||
|
||||
virtual void Power(void);
|
||||
virtual int StateAction(StateMem* sm, int load, int data_only, const char* section_name);
|
||||
virtual void UpdateInput(const void *data);
|
||||
|
||||
//
|
||||
@ -71,6 +72,41 @@ void InputDevice_DualAnalog::Power(void)
|
||||
transmit_count = 0;
|
||||
}
|
||||
|
||||
int InputDevice_DualAnalog::StateAction(StateMem* sm, int load, int data_only, const char* section_name)
|
||||
{
|
||||
SFORMAT StateRegs[] =
|
||||
{
|
||||
SFVAR(dtr),
|
||||
|
||||
SFARRAY(buttons, sizeof(buttons)),
|
||||
SFARRAY(&axes[0][0], sizeof(axes)),
|
||||
|
||||
SFVAR(command_phase),
|
||||
SFVAR(bitpos),
|
||||
SFVAR(receive_buffer),
|
||||
|
||||
SFVAR(command),
|
||||
|
||||
SFARRAY(transmit_buffer, sizeof(transmit_buffer)),
|
||||
SFVAR(transmit_pos),
|
||||
SFVAR(transmit_count),
|
||||
|
||||
SFEND
|
||||
};
|
||||
int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, section_name);
|
||||
|
||||
if(load)
|
||||
{
|
||||
if((transmit_pos + transmit_count) > sizeof(transmit_buffer))
|
||||
{
|
||||
transmit_pos = 0;
|
||||
transmit_count = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
void InputDevice_DualAnalog::UpdateInput(const void *data)
|
||||
{
|
||||
uint8 *d8 = (uint8 *)data;
|
||||
@ -82,9 +118,10 @@ void InputDevice_DualAnalog::UpdateInput(const void *data)
|
||||
{
|
||||
for(int axis = 0; axis < 2; axis++)
|
||||
{
|
||||
const uint8* aba = &d8[2] + stick * 8 + axis * 4;
|
||||
int32 tmp;
|
||||
|
||||
tmp = 32768 + MDFN_de32lsb((const uint8 *)data + stick * 16 + axis * 8 + 4) - ((int32)MDFN_de32lsb((const uint8 *)data + stick * 16 + axis * 8 + 8) * 32768 / 32767);
|
||||
tmp = 32768 + MDFN_de16lsb(&aba[0]) - ((int32)MDFN_de16lsb(&aba[2]) * 32768 / 32767);
|
||||
tmp >>= 8;
|
||||
|
||||
axes[stick][axis] = tmp;
|
||||
@ -235,15 +272,15 @@ InputDeviceInputInfoStruct Device_DualAnalog_IDII[24] =
|
||||
{ "cross", "x (lower)", 7, IDIT_BUTTON_CAN_RAPID, NULL },
|
||||
{ "square", "□ (left)", 8, IDIT_BUTTON_CAN_RAPID, NULL },
|
||||
|
||||
{ "rstick_right", "Right Stick RIGHT →", 22, IDIT_BUTTON_ANALOG },
|
||||
{ "rstick_left", "Right Stick LEFT ←", 21, IDIT_BUTTON_ANALOG },
|
||||
{ "rstick_down", "Right Stick DOWN ↓", 20, IDIT_BUTTON_ANALOG },
|
||||
{ "rstick_up", "Right Stick UP ↑", 19, IDIT_BUTTON_ANALOG },
|
||||
{ "rstick_right", "Right Stick RIGHT →", 22, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "rstick_left", "Right Stick LEFT ←", 21, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "rstick_down", "Right Stick DOWN ↓", 20, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "rstick_up", "Right Stick UP ↑", 19, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
|
||||
{ "lstick_right", "Left Stick RIGHT →", 17, IDIT_BUTTON_ANALOG },
|
||||
{ "lstick_left", "Left Stick LEFT ←", 16, IDIT_BUTTON_ANALOG },
|
||||
{ "lstick_down", "Left Stick DOWN ↓", 15, IDIT_BUTTON_ANALOG },
|
||||
{ "lstick_up", "Left Stick UP ↑", 14, IDIT_BUTTON_ANALOG },
|
||||
{ "lstick_right", "Left Stick RIGHT →", 17, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "lstick_left", "Left Stick LEFT ←", 16, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "lstick_down", "Left Stick DOWN ↓", 15, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "lstick_up", "Left Stick UP ↑", 14, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
|
||||
};
|
||||
|
||||
@ -269,15 +306,15 @@ InputDeviceInputInfoStruct Device_AnalogJoy_IDII[24] =
|
||||
{ "cross", "Right stick, L-thumb", 10, IDIT_BUTTON, NULL },
|
||||
{ "square", "Right stick, Trigger", 12, IDIT_BUTTON, NULL },
|
||||
|
||||
{ "rstick_right", "Right Stick, RIGHT →", 21, IDIT_BUTTON_ANALOG },
|
||||
{ "rstick_left", "Right Stick, LEFT ←", 20, IDIT_BUTTON_ANALOG },
|
||||
{ "rstick_down", "Right Stick, BACK ↓", 19, IDIT_BUTTON_ANALOG },
|
||||
{ "rstick_up", "Right Stick, FORE ↑", 18, IDIT_BUTTON_ANALOG },
|
||||
{ "rstick_right", "Right Stick, RIGHT →", 21, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "rstick_left", "Right Stick, LEFT ←", 20, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "rstick_down", "Right Stick, BACK ↓", 19, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "rstick_up", "Right Stick, FORE ↑", 18, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
|
||||
{ "lstick_right", "Left Stick, RIGHT →", 7, IDIT_BUTTON_ANALOG },
|
||||
{ "lstick_left", "Left Stick, LEFT ←", 6, IDIT_BUTTON_ANALOG },
|
||||
{ "lstick_down", "Left Stick, BACK ↓", 5, IDIT_BUTTON_ANALOG },
|
||||
{ "lstick_up", "Left Stick, FORE ↑", 4, IDIT_BUTTON_ANALOG },
|
||||
{ "lstick_right", "Left Stick, RIGHT →", 7, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "lstick_left", "Left Stick, LEFT ←", 6, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "lstick_down", "Left Stick, BACK ↓", 5, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "lstick_up", "Left Stick, FORE ↑", 4, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
|
||||
};
|
||||
|
||||
|
@ -60,6 +60,7 @@ class InputDevice_DualShock : public InputDevice
|
||||
virtual ~InputDevice_DualShock();
|
||||
|
||||
virtual void Power(void);
|
||||
virtual int StateAction(StateMem* sm, int load, int data_only, const char* section_name);
|
||||
virtual void Update(const pscpu_timestamp_t timestamp);
|
||||
virtual void ResetTS(void);
|
||||
virtual void UpdateInput(const void *data);
|
||||
@ -241,9 +242,59 @@ void InputDevice_DualShock::Power(void)
|
||||
prev_ana_button_state = false;
|
||||
}
|
||||
|
||||
int InputDevice_DualShock::StateAction(StateMem* sm, int load, int data_only, const char* section_name)
|
||||
{
|
||||
SFORMAT StateRegs[] =
|
||||
{
|
||||
SFVAR(cur_ana_button_state),
|
||||
SFVAR(prev_ana_button_state),
|
||||
SFVAR(combo_anatoggle_counter),
|
||||
|
||||
SFVAR(da_rumble_compat),
|
||||
|
||||
SFVAR(analog_mode),
|
||||
SFVAR(analog_mode_locked),
|
||||
|
||||
SFVAR(mad_munchkins),
|
||||
SFARRAY(rumble_magic, sizeof(rumble_magic)),
|
||||
|
||||
SFARRAY(rumble_param, sizeof(rumble_param)),
|
||||
|
||||
SFVAR(dtr),
|
||||
|
||||
SFARRAY(buttons, sizeof(buttons)),
|
||||
SFARRAY(&axes[0][0], sizeof(axes)),
|
||||
|
||||
SFVAR(command_phase),
|
||||
SFVAR(bitpos),
|
||||
SFVAR(receive_buffer),
|
||||
|
||||
SFVAR(command),
|
||||
|
||||
SFARRAY(transmit_buffer, sizeof(transmit_buffer)),
|
||||
SFVAR(transmit_pos),
|
||||
SFVAR(transmit_count),
|
||||
|
||||
SFEND
|
||||
};
|
||||
int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, section_name);
|
||||
|
||||
if(load)
|
||||
{
|
||||
if((transmit_pos + transmit_count) > sizeof(transmit_buffer))
|
||||
{
|
||||
transmit_pos = 0;
|
||||
transmit_count = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
void InputDevice_DualShock::UpdateInput(const void *data)
|
||||
{
|
||||
uint8 *d8 = (uint8 *)data;
|
||||
uint8* const rumb_dp = &d8[3 + 16];
|
||||
|
||||
buttons[0] = d8[0];
|
||||
buttons[1] = d8[1];
|
||||
@ -253,15 +304,18 @@ void InputDevice_DualShock::UpdateInput(const void *data)
|
||||
{
|
||||
for(int axis = 0; axis < 2; axis++)
|
||||
{
|
||||
const uint8* aba = &d8[3] + stick * 8 + axis * 4;
|
||||
int32 tmp;
|
||||
|
||||
tmp = 32768 + MDFN_de32lsb((const uint8 *)data + stick * 16 + axis * 8 + 4) - ((int32)MDFN_de32lsb((const uint8 *)data + stick * 16 + axis * 8 + 8) * 32768 / 32767);
|
||||
tmp >>= 8;
|
||||
tmp = 32767 + MDFN_de16lsb(&aba[0]) - MDFN_de16lsb(&aba[2]);
|
||||
tmp = (tmp * 0x100) / 0xFFFF;
|
||||
|
||||
axes[stick][axis] = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
//printf("%3d:%3d, %3d:%3d\n", axes[0][0], axes[0][1], axes[1][0], axes[1][1]);
|
||||
|
||||
//printf("RUMBLE: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x\n", rumble_magic[0], rumble_magic[1], rumble_magic[2], rumble_magic[3], rumble_magic[4], rumble_magic[5]);
|
||||
//printf("%d, 0x%02x 0x%02x\n", da_rumble_compat, rumble_param[0], rumble_param[1]);
|
||||
if(da_rumble_compat == false)
|
||||
@ -271,7 +325,7 @@ void InputDevice_DualShock::UpdateInput(const void *data)
|
||||
if(rumble_param[0] == 0x01)
|
||||
sneaky_weaky = 0xFF;
|
||||
|
||||
MDFN_en32lsb(&d8[4 + 32 + 0], (sneaky_weaky << 0) | (rumble_param[1] << 8));
|
||||
MDFN_en16lsb(rumb_dp, (sneaky_weaky << 0) | (rumble_param[1] << 8));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -280,7 +334,7 @@ void InputDevice_DualShock::UpdateInput(const void *data)
|
||||
if(((rumble_param[0] & 0xC0) == 0x40) && ((rumble_param[1] & 0x01) == 0x01))
|
||||
sneaky_weaky = 0xFF;
|
||||
|
||||
MDFN_en32lsb(&d8[4 + 32 + 0], sneaky_weaky << 0);
|
||||
MDFN_en16lsb(rumb_dp, sneaky_weaky << 0);
|
||||
}
|
||||
|
||||
//printf("%d %d %d %d\n", axes[0][0], axes[0][1], axes[1][0], axes[1][1]);
|
||||
@ -294,8 +348,8 @@ void InputDevice_DualShock::UpdateInput(const void *data)
|
||||
{
|
||||
MDFN_DispMessage(_("%s: Analog mode is %s(%s)."), gp_name.c_str(), analog_mode ? _("on") : _("off"), analog_mode_locked ? _("locked") : _("unlocked"));
|
||||
}
|
||||
am_prev_info = analog_mode;
|
||||
aml_prev_info = analog_mode_locked;
|
||||
am_prev_info = analog_mode;
|
||||
}
|
||||
|
||||
|
||||
@ -1040,15 +1094,15 @@ InputDeviceInputInfoStruct Device_DualShock_IDII[26] =
|
||||
|
||||
{ "analog", "Analog(mode toggle)", 24, IDIT_BUTTON, NULL },
|
||||
|
||||
{ "rstick_right", "Right Stick RIGHT →", 22, IDIT_BUTTON_ANALOG },
|
||||
{ "rstick_left", "Right Stick LEFT ←", 21, IDIT_BUTTON_ANALOG },
|
||||
{ "rstick_down", "Right Stick DOWN ↓", 20, IDIT_BUTTON_ANALOG },
|
||||
{ "rstick_up", "Right Stick UP ↑", 19, IDIT_BUTTON_ANALOG },
|
||||
{ "rstick_right", "Right Stick RIGHT →", 22, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "rstick_left", "Right Stick LEFT ←", 21, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "rstick_down", "Right Stick DOWN ↓", 20, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "rstick_up", "Right Stick UP ↑", 19, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
|
||||
{ "lstick_right", "Left Stick RIGHT →", 17, IDIT_BUTTON_ANALOG },
|
||||
{ "lstick_left", "Left Stick LEFT ←", 16, IDIT_BUTTON_ANALOG },
|
||||
{ "lstick_down", "Left Stick DOWN ↓", 15, IDIT_BUTTON_ANALOG },
|
||||
{ "lstick_up", "Left Stick UP ↑", 14, IDIT_BUTTON_ANALOG },
|
||||
{ "lstick_right", "Left Stick RIGHT →", 17, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "lstick_left", "Left Stick LEFT ←", 16, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "lstick_down", "Left Stick DOWN ↓", 15, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
{ "lstick_up", "Left Stick UP ↑", 14, IDIT_BUTTON_ANALOG, NULL, { NULL, NULL, NULL }, IDIT_BUTTON_ANALOG_FLAG_SQLR },
|
||||
|
||||
{ "rumble", "RUMBLE MONSTER RUMBA", 100, IDIT_RUMBLE },
|
||||
};
|
||||
|
@ -13,6 +13,7 @@ class InputDevice_Gamepad : public InputDevice
|
||||
virtual ~InputDevice_Gamepad();
|
||||
|
||||
virtual void Power(void);
|
||||
virtual int StateAction(StateMem* sm, int load, int data_only, const char* section_name);
|
||||
virtual void UpdateInput(const void *data);
|
||||
|
||||
//
|
||||
@ -69,6 +70,41 @@ void InputDevice_Gamepad::Power(void)
|
||||
transmit_count = 0;
|
||||
}
|
||||
|
||||
int InputDevice_Gamepad::StateAction(StateMem* sm, int load, int data_only, const char* section_name)
|
||||
{
|
||||
SFORMAT StateRegs[] =
|
||||
{
|
||||
SFVAR(dtr),
|
||||
|
||||
SFARRAY(buttons, sizeof(buttons)),
|
||||
|
||||
SFVAR(command_phase),
|
||||
SFVAR(bitpos),
|
||||
SFVAR(receive_buffer),
|
||||
|
||||
SFVAR(command),
|
||||
|
||||
SFARRAY(transmit_buffer, sizeof(transmit_buffer)),
|
||||
SFVAR(transmit_pos),
|
||||
SFVAR(transmit_count),
|
||||
|
||||
SFEND
|
||||
};
|
||||
int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, section_name);
|
||||
|
||||
if(load)
|
||||
{
|
||||
if((transmit_pos + transmit_count) > sizeof(transmit_buffer))
|
||||
{
|
||||
transmit_pos = 0;
|
||||
transmit_count = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
void InputDevice_Gamepad::UpdateInput(const void *data)
|
||||
{
|
||||
uint8 *d8 = (uint8 *)data;
|
||||
|
@ -32,6 +32,7 @@ class InputDevice_Memcard : public InputDevice
|
||||
virtual ~InputDevice_Memcard();
|
||||
|
||||
virtual void Power(void);
|
||||
virtual int StateAction(StateMem* sm, int load, int data_only, const char* section_name);
|
||||
|
||||
//
|
||||
//
|
||||
@ -134,6 +135,41 @@ void InputDevice_Memcard::Power(void)
|
||||
presence_new = true;
|
||||
}
|
||||
|
||||
int InputDevice_Memcard::StateAction(StateMem* sm, int load, int data_only, const char* section_name)
|
||||
{
|
||||
// Don't save dirty_count.
|
||||
SFORMAT StateRegs[] =
|
||||
{
|
||||
SFVAR(presence_new),
|
||||
|
||||
SFARRAY(card_data, sizeof(card_data)),
|
||||
SFARRAY(rw_buffer, sizeof(rw_buffer)),
|
||||
SFVAR(write_xor),
|
||||
|
||||
SFVAR(dtr),
|
||||
SFVAR(command_phase),
|
||||
SFVAR(bitpos),
|
||||
SFVAR(receive_buffer),
|
||||
|
||||
SFVAR(command),
|
||||
SFVAR(addr),
|
||||
SFVAR(calced_xor),
|
||||
|
||||
SFVAR(transmit_buffer),
|
||||
SFVAR(transmit_count),
|
||||
|
||||
SFEND
|
||||
};
|
||||
int ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, section_name);
|
||||
|
||||
if(load)
|
||||
{
|
||||
dirty_count++;
|
||||
}
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
void InputDevice_Memcard::SetDTR(bool new_dtr)
|
||||
{
|
||||
if(!dtr && new_dtr)
|
||||
|
@ -455,21 +455,25 @@ void TIMER_Power(void)
|
||||
memset(Timers, 0, sizeof(Timers));
|
||||
}
|
||||
|
||||
#define SFTIMER_PSX(n) SFVARN(Timers[n].Mode, #n "Mode"), \
|
||||
SFVARN(Timers[n].Counter, #n "Counter"), \
|
||||
SFVARN(Timers[n].Target, #n "Target"), \
|
||||
SFVARN(Timers[n].Div8Counter, #n "Div8Counter"), \
|
||||
SFVARN(Timers[n].IRQDone, #n "IRQDone")
|
||||
|
||||
int TIMER_StateAction(StateMem *sm, int load, int data_only)
|
||||
{
|
||||
int ret;
|
||||
SFORMAT StateRegs[] =
|
||||
{
|
||||
SFTIMER_PSX(0),
|
||||
SFTIMER_PSX(1),
|
||||
SFTIMER_PSX(2),
|
||||
SFVAR(lastts),
|
||||
#define SFTIMER(n) SFVARN(Timers[n].Mode, #n "Mode"), \
|
||||
SFVARN(Timers[n].Counter, #n "Counter"), \
|
||||
SFVARN(Timers[n].Target, #n "Target"), \
|
||||
SFVARN(Timers[n].Div8Counter, #n "Div8Counter"), \
|
||||
SFVARN(Timers[n].IRQDone, #n "IRQDone"), \
|
||||
SFVARN(Timers[n].DoZeCounting, #n "DoZeCounting")
|
||||
SFTIMER(0),
|
||||
SFTIMER(1),
|
||||
SFTIMER(2),
|
||||
#undef SFTIMER
|
||||
|
||||
SFVAR(vblank),
|
||||
SFVAR(hretrace),
|
||||
SFEND
|
||||
};
|
||||
ret = MDFNSS_StateAction(sm, load, data_only, StateRegs, "TIMER");
|
||||
|
@ -5,13 +5,13 @@
|
||||
#include "../driver.h"
|
||||
|
||||
#include "Deinterlacer.h"
|
||||
|
||||
Deinterlacer::Deinterlacer()
|
||||
Deinterlacer::Deinterlacer() : FieldBuffer(NULL), StateValid(false), DeintType(DEINT_WEAVE)
|
||||
{
|
||||
FieldBuffer = NULL;
|
||||
PrevDRect.x = 0;
|
||||
PrevDRect.y = 0;
|
||||
|
||||
StateValid = false;
|
||||
PrevHeight = 0;
|
||||
PrevDRect.w = 0;
|
||||
PrevDRect.h = 0;
|
||||
}
|
||||
|
||||
Deinterlacer::~Deinterlacer()
|
||||
@ -23,26 +23,46 @@ Deinterlacer::~Deinterlacer()
|
||||
}
|
||||
}
|
||||
|
||||
void Deinterlacer::Process(MDFN_Surface *surface, const MDFN_Rect &DisplayRect, MDFN_Rect *LineWidths, const bool field)
|
||||
void Deinterlacer::SetType(unsigned dt)
|
||||
{
|
||||
if(!FieldBuffer || FieldBuffer->w < surface->w || FieldBuffer->h < (surface->h / 2))
|
||||
if(DeintType != dt)
|
||||
{
|
||||
DeintType = dt;
|
||||
|
||||
LWBuffer.resize(0);
|
||||
if(FieldBuffer)
|
||||
{
|
||||
delete FieldBuffer;
|
||||
|
||||
FieldBuffer = new MDFN_Surface(NULL, surface->w, surface->h / 2, surface->w, surface->format);
|
||||
LWBuffer.resize(FieldBuffer->h);
|
||||
FieldBuffer = NULL;
|
||||
}
|
||||
StateValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void Deinterlacer::InternalProcess(MDFN_Surface *surface, MDFN_Rect &DisplayRect, int32 *LineWidths, const bool field)
|
||||
{
|
||||
//
|
||||
// We need to output with LineWidths as always being valid to handle the case of horizontal resolution change between fields
|
||||
// while in interlace mode, so clear the first LineWidths entry if it's == ~0, and
|
||||
// [...]
|
||||
const bool LineWidths_In_Valid = (LineWidths[0].w != ~0);
|
||||
const bool LineWidths_In_Valid = (LineWidths[0] != ~0);
|
||||
const bool WeaveGood = (StateValid && PrevDRect.h == DisplayRect.h && DeintType == DEINT_WEAVE);
|
||||
//
|
||||
// XReposition stuff is to prevent exceeding the dimensions of the video surface under certain conditions(weave deinterlacer, previous field has higher
|
||||
// horizontal resolution than current field, and current field's rectangle has an x offset that's too large when taking into consideration the previous field's
|
||||
// width; for simplicity, we don't check widths, but just assume that the previous field's maximum width is >= than the current field's maximum width).
|
||||
//
|
||||
const int32 XReposition = ((WeaveGood && DisplayRect.x > PrevDRect.x) ? DisplayRect.x : 0);
|
||||
|
||||
//printf("%2d %2d, %d\n", DisplayRect.x, PrevDRect.x, XReposition);
|
||||
|
||||
if(XReposition)
|
||||
DisplayRect.x = 0;
|
||||
|
||||
if(surface->h && !LineWidths_In_Valid)
|
||||
{
|
||||
LineWidths[0].x = 0;
|
||||
LineWidths[0].w = 0;
|
||||
LineWidths[0] = 0;
|
||||
}
|
||||
|
||||
for(int y = 0; y < DisplayRect.h / 2; y++)
|
||||
@ -51,36 +71,58 @@ void Deinterlacer::Process(MDFN_Surface *surface, const MDFN_Rect &DisplayRect,
|
||||
// set all relevant source line widths to the contents of DisplayRect(also simplifies the src_lw and related pointer calculation code
|
||||
// farther below.
|
||||
if(!LineWidths_In_Valid)
|
||||
LineWidths[(y * 2) + field + DisplayRect.y] = DisplayRect;
|
||||
LineWidths[(y * 2) + field + DisplayRect.y] = DisplayRect.w;
|
||||
|
||||
if(StateValid && PrevHeight == DisplayRect.h)
|
||||
if(XReposition)
|
||||
{
|
||||
const uint32 *src = FieldBuffer->pixels + y * FieldBuffer->pitch32;
|
||||
uint32 *dest = surface->pixels + ((y * 2) + (field ^ 1) + DisplayRect.y) * surface->pitch32;
|
||||
MDFN_Rect *dest_lw = &LineWidths[(y * 2) + (field ^ 1) + DisplayRect.y];
|
||||
memmove(surface->pixels + ((y * 2) + field + DisplayRect.y) * surface->pitchinpix,
|
||||
surface->pixels + ((y * 2) + field + DisplayRect.y) * surface->pitchinpix + XReposition,
|
||||
LineWidths[(y * 2) + field + DisplayRect.y] * sizeof(T));
|
||||
}
|
||||
|
||||
dest_lw->x = 0;
|
||||
dest_lw->w = LWBuffer[y];
|
||||
if(WeaveGood)
|
||||
{
|
||||
const T* src = FieldBuffer->pixels + y * FieldBuffer->pitchinpix;
|
||||
T* dest = surface->pixels + ((y * 2) + (field ^ 1) + DisplayRect.y) * surface->pitchinpix + DisplayRect.x;
|
||||
int32 *dest_lw = &LineWidths[(y * 2) + (field ^ 1) + DisplayRect.y];
|
||||
|
||||
memcpy(dest, src, LWBuffer[y] * sizeof(uint32));
|
||||
*dest_lw = LWBuffer[y];
|
||||
|
||||
memcpy(dest, src, LWBuffer[y] * sizeof(T));
|
||||
}
|
||||
else if(DeintType == DEINT_BOB)
|
||||
{
|
||||
const T* src = surface->pixels + ((y * 2) + field + DisplayRect.y) * surface->pitchinpix + DisplayRect.x;
|
||||
T* dest = surface->pixels + ((y * 2) + (field ^ 1) + DisplayRect.y) * surface->pitchinpix + DisplayRect.x;
|
||||
const int32 *src_lw = &LineWidths[(y * 2) + field + DisplayRect.y];
|
||||
int32 *dest_lw = &LineWidths[(y * 2) + (field ^ 1) + DisplayRect.y];
|
||||
|
||||
*dest_lw = *src_lw;
|
||||
|
||||
memcpy(dest, src, *src_lw * sizeof(T));
|
||||
}
|
||||
else
|
||||
{
|
||||
const MDFN_Rect *src_lw = &LineWidths[(y * 2) + field + DisplayRect.y];
|
||||
const uint32 *src = surface->pixels + ((y * 2) + field + DisplayRect.y) * surface->pitch32 + src_lw->x;
|
||||
const int32 *src_lw = &LineWidths[(y * 2) + field + DisplayRect.y];
|
||||
const T* src = surface->pixels + ((y * 2) + field + DisplayRect.y) * surface->pitchinpix + DisplayRect.x;
|
||||
const int32 dly = ((y * 2) + (field + 1) + DisplayRect.y);
|
||||
uint32 *dest = surface->pixels + dly * surface->pitch32;
|
||||
T* dest = surface->pixels + dly * surface->pitchinpix + DisplayRect.x;
|
||||
|
||||
if(y == 0 && field)
|
||||
{
|
||||
LineWidths[dly - 2] = *src_lw;
|
||||
memset(&surface->pixels[(dly - 2) * surface->pitch32], 0, src_lw->w * sizeof(uint32));
|
||||
T black = surface->MakeColor(0, 0, 0);
|
||||
T* dm2 = surface->pixels + (dly - 2) * surface->pitchinpix;
|
||||
|
||||
LineWidths[dly - 2] = *src_lw;
|
||||
|
||||
for(int x = 0; x < *src_lw; x++)
|
||||
dm2[x] = black;
|
||||
}
|
||||
|
||||
if(dly < (DisplayRect.y + DisplayRect.h))
|
||||
{
|
||||
LineWidths[dly] = *src_lw;
|
||||
memcpy(dest, src, src_lw->w * sizeof(uint32));
|
||||
memcpy(dest, src, *src_lw * sizeof(T));
|
||||
}
|
||||
}
|
||||
|
||||
@ -90,23 +132,56 @@ void Deinterlacer::Process(MDFN_Surface *surface, const MDFN_Rect &DisplayRect,
|
||||
//
|
||||
//
|
||||
//
|
||||
if(DeintType == DEINT_WEAVE)
|
||||
{
|
||||
const MDFN_Rect *src_lw = &LineWidths[(y * 2) + field + DisplayRect.y];
|
||||
const uint32 *src = surface->pixels + ((y * 2) + field + DisplayRect.y) * surface->pitch32 + src_lw->x;
|
||||
uint32 *dest = FieldBuffer->pixels + y * FieldBuffer->pitch32;
|
||||
const int32 *src_lw = &LineWidths[(y * 2) + field + DisplayRect.y];
|
||||
const T* src = surface->pixels + ((y * 2) + field + DisplayRect.y) * surface->pitchinpix + DisplayRect.x;
|
||||
T* dest = FieldBuffer->pixels + y * FieldBuffer->pitchinpix;
|
||||
|
||||
memcpy(dest, src, src_lw->w * sizeof(uint32));
|
||||
LWBuffer[y] = src_lw->w;
|
||||
memcpy(dest, src, *src_lw * sizeof(uint32));
|
||||
LWBuffer[y] = *src_lw;
|
||||
|
||||
StateValid = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Deinterlacer::Process(MDFN_Surface *surface, MDFN_Rect &DisplayRect, int32 *LineWidths, const bool field)
|
||||
{
|
||||
const MDFN_Rect DisplayRect_Original = DisplayRect;
|
||||
|
||||
if(DeintType == DEINT_WEAVE)
|
||||
{
|
||||
if(!FieldBuffer || FieldBuffer->w < surface->w || FieldBuffer->h < (surface->h / 2))
|
||||
{
|
||||
if(FieldBuffer)
|
||||
delete FieldBuffer;
|
||||
|
||||
FieldBuffer = new MDFN_Surface(NULL, surface->w, surface->h / 2, surface->w, surface->format);
|
||||
LWBuffer.resize(FieldBuffer->h);
|
||||
}
|
||||
else if(memcmp(&surface->format, &FieldBuffer->format, sizeof(MDFN_PixelFormat)))
|
||||
{
|
||||
FieldBuffer->SetFormat(surface->format, StateValid && PrevDRect.h == DisplayRect.h);
|
||||
}
|
||||
}
|
||||
|
||||
PrevHeight = DisplayRect.h;
|
||||
StateValid = true;
|
||||
}
|
||||
#if defined(WANT_32BPP)
|
||||
InternalProcess<uint32>(surface, DisplayRect, LineWidths, field);
|
||||
#elif defined(WANT_16BPP)
|
||||
InternalProcess<uint16>(surface, DisplayRect, LineWidths, field);
|
||||
#endif
|
||||
|
||||
PrevDRect = DisplayRect_Original;
|
||||
}
|
||||
|
||||
void Deinterlacer::ClearState(void)
|
||||
{
|
||||
StateValid = false;
|
||||
PrevHeight = 0;
|
||||
|
||||
PrevDRect.x = 0;
|
||||
PrevDRect.y = 0;
|
||||
|
||||
PrevDRect.w = 0;
|
||||
PrevDRect.h = 0;
|
||||
}
|
||||
|
@ -1,3 +1,20 @@
|
||||
/* Mednafen - Multi-system Emulator
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef __MDFN_DEINTERLACER_H
|
||||
#define __MDFN_DEINTERLACER_H
|
||||
|
||||
@ -10,16 +27,33 @@ class Deinterlacer
|
||||
Deinterlacer();
|
||||
~Deinterlacer();
|
||||
|
||||
void Process(MDFN_Surface *surface, const MDFN_Rect &DisplayRect, MDFN_Rect *LineWidths, const bool field);
|
||||
enum
|
||||
{
|
||||
DEINT_BOB_OFFSET = 0, // Code will fall-through to this case under certain conditions, too.
|
||||
DEINT_BOB,
|
||||
DEINT_WEAVE,
|
||||
};
|
||||
|
||||
void SetType(unsigned t);
|
||||
inline unsigned GetType(void)
|
||||
{
|
||||
return(DeintType);
|
||||
}
|
||||
|
||||
void Process(MDFN_Surface *surface, MDFN_Rect &DisplayRect, int32 *LineWidths, const bool field);
|
||||
|
||||
void ClearState(void);
|
||||
|
||||
private:
|
||||
|
||||
template<typename T>
|
||||
void InternalProcess(MDFN_Surface *surface, MDFN_Rect &DisplayRect, int32 *LineWidths, const bool field);
|
||||
|
||||
MDFN_Surface *FieldBuffer;
|
||||
std::vector<int32> LWBuffer;
|
||||
bool StateValid;
|
||||
int32 PrevHeight;
|
||||
MDFN_Rect PrevDRect;
|
||||
unsigned DeintType;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user