diff -Nru mednafen-1.24.3+dfsg/aclocal.m4 mednafen-1.26.1+dfsg/aclocal.m4
--- mednafen-1.24.3+dfsg/aclocal.m4 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/aclocal.m4 2020-11-10 06:04:17.000000000 +0000
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -20,32 +20,63 @@
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
-# serial 1 (pkg-config-0.24)
-#
-# Copyright © 2004 Scott James Remnant .
-#
-# 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.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
-# ----------------------------------
+dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+dnl serial 11 (pkg-config-0.29)
+dnl
+dnl Copyright © 2004 Scott James Remnant .
+dnl Copyright © 2012-2015 Dan Nicholson
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+dnl 02111-1307, USA.
+dnl
+dnl As a special exception to the GNU General Public License, if you
+dnl distribute this file as part of a program that contains a
+dnl configuration script generated by Autoconf, you may include it under
+dnl the same distribution terms that you use for the rest of that
+dnl program.
+
+dnl PKG_PREREQ(MIN-VERSION)
+dnl -----------------------
+dnl Since: 0.29
+dnl
+dnl Verify that the version of the pkg-config macros are at least
+dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
+dnl installed version of pkg-config, this checks the developer's version
+dnl of pkg.m4 when generating configure.
+dnl
+dnl To ensure that this macro is defined, also add:
+dnl m4_ifndef([PKG_PREREQ],
+dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
+dnl
+dnl See the "Since" comment for each macro you use to see what version
+dnl of the macros you require.
+m4_defun([PKG_PREREQ],
+[m4_define([PKG_MACROS_VERSION], [0.29])
+m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
+ [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
+])dnl PKG_PREREQ
+
+dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
+dnl ----------------------------------
+dnl Since: 0.16
+dnl
+dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
+dnl first found in the path. Checks that the version of pkg-config found
+dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
+dnl used since that's the first version where most current features of
+dnl pkg-config existed.
AC_DEFUN([PKG_PROG_PKG_CONFIG],
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
@@ -67,18 +98,19 @@
PKG_CONFIG=""
fi
fi[]dnl
-])# PKG_PROG_PKG_CONFIG
+])dnl PKG_PROG_PKG_CONFIG
-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# Check to see whether a particular set of modules exists. Similar
-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
-#
-# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-# only at the first occurence in configure.ac, so if the first place
-# it's called might be skipped (such as if it is within an "if", you
-# have to call PKG_CHECK_EXISTS manually
-# --------------------------------------------------------------
+dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------------------------------
+dnl Since: 0.18
+dnl
+dnl Check to see whether a particular set of modules exists. Similar to
+dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
+dnl
+dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+dnl only at the first occurence in configure.ac, so if the first place
+dnl it's called might be skipped (such as if it is within an "if", you
+dnl have to call PKG_CHECK_EXISTS manually
AC_DEFUN([PKG_CHECK_EXISTS],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
if test -n "$PKG_CONFIG" && \
@@ -88,8 +120,10 @@
$3])dnl
fi])
-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-# ---------------------------------------------
+dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+dnl ---------------------------------------------
+dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
+dnl pkg_failed based on the result.
m4_define([_PKG_CONFIG],
[if test -n "$$1"; then
pkg_cv_[]$1="$$1"
@@ -101,10 +135,11 @@
else
pkg_failed=untried
fi[]dnl
-])# _PKG_CONFIG
+])dnl _PKG_CONFIG
-# _PKG_SHORT_ERRORS_SUPPORTED
-# -----------------------------
+dnl _PKG_SHORT_ERRORS_SUPPORTED
+dnl ---------------------------
+dnl Internal check to see if pkg-config supports short errors.
AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@@ -112,19 +147,17 @@
else
_pkg_short_errors_supported=no
fi[]dnl
-])# _PKG_SHORT_ERRORS_SUPPORTED
+])dnl _PKG_SHORT_ERRORS_SUPPORTED
-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-# [ACTION-IF-NOT-FOUND])
-#
-#
-# Note that if there is a possibility the first call to
-# PKG_CHECK_MODULES might not happen, you should be sure to include an
-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
-#
-#
-# --------------------------------------------------------------
+dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl [ACTION-IF-NOT-FOUND])
+dnl --------------------------------------------------------------
+dnl Since: 0.4.0
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
+dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
AC_DEFUN([PKG_CHECK_MODULES],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
@@ -178,16 +211,40 @@
AC_MSG_RESULT([yes])
$3
fi[]dnl
-])# PKG_CHECK_MODULES
+])dnl PKG_CHECK_MODULES
-# PKG_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable pkgconfigdir as the location where a module
-# should install pkg-config .pc files. By default the directory is
-# $libdir/pkgconfig, but the default can be changed by passing
-# DIRECTORY. The user can override through the --with-pkgconfigdir
-# parameter.
+dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl [ACTION-IF-NOT-FOUND])
+dnl ---------------------------------------------------------------------
+dnl Since: 0.29
+dnl
+dnl Checks for existence of MODULES and gathers its build flags with
+dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
+dnl and VARIABLE-PREFIX_LIBS from --libs.
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
+dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
+dnl configure.ac.
+AC_DEFUN([PKG_CHECK_MODULES_STATIC],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+_save_PKG_CONFIG=$PKG_CONFIG
+PKG_CONFIG="$PKG_CONFIG --static"
+PKG_CHECK_MODULES($@)
+PKG_CONFIG=$_save_PKG_CONFIG[]dnl
+])dnl PKG_CHECK_MODULES_STATIC
+
+
+dnl PKG_INSTALLDIR([DIRECTORY])
+dnl -------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable pkgconfigdir as the location where a module
+dnl should install pkg-config .pc files. By default the directory is
+dnl $libdir/pkgconfig, but the default can be changed by passing
+dnl DIRECTORY. The user can override through the --with-pkgconfigdir
+dnl parameter.
AC_DEFUN([PKG_INSTALLDIR],
[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
m4_pushdef([pkg_description],
@@ -198,16 +255,18 @@
AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
m4_popdef([pkg_default])
m4_popdef([pkg_description])
-]) dnl PKG_INSTALLDIR
+])dnl PKG_INSTALLDIR
-# PKG_NOARCH_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable noarch_pkgconfigdir as the location where a
-# module should install arch-independent pkg-config .pc files. By
-# default the directory is $datadir/pkgconfig, but the default can be
-# changed by passing DIRECTORY. The user can override through the
-# --with-noarch-pkgconfigdir parameter.
+dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
+dnl --------------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable noarch_pkgconfigdir as the location where a
+dnl module should install arch-independent pkg-config .pc files. By
+dnl default the directory is $datadir/pkgconfig, but the default can be
+dnl changed by passing DIRECTORY. The user can override through the
+dnl --with-noarch-pkgconfigdir parameter.
AC_DEFUN([PKG_NOARCH_INSTALLDIR],
[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
m4_pushdef([pkg_description],
@@ -218,13 +277,15 @@
AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
m4_popdef([pkg_default])
m4_popdef([pkg_description])
-]) dnl PKG_NOARCH_INSTALLDIR
+])dnl PKG_NOARCH_INSTALLDIR
-# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
-# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-# -------------------------------------------
-# Retrieves the value of the pkg-config variable for the given module.
+dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
+dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------
+dnl Since: 0.28
+dnl
+dnl Retrieves the value of the pkg-config variable for the given module.
AC_DEFUN([PKG_CHECK_VAR],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
@@ -233,9 +294,9 @@
AS_VAR_COPY([$1], [pkg_cv_][$1])
AS_VAR_IF([$1], [""], [$5], [$4])dnl
-])# PKG_CHECK_VAR
+])dnl PKG_CHECK_VAR
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -247,10 +308,10 @@
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.14'
+[am__api_version='1.16'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.14.1], [],
+m4_if([$1], [1.16.1], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -266,14 +327,14 @@
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14.1])dnl
+[AM_AUTOMAKE_VERSION([1.16.1])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# Figure out how to run the assembler. -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -293,7 +354,7 @@
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -345,7 +406,7 @@
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -376,7 +437,7 @@
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -567,13 +628,12 @@
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
#
# This file 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.
-
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
@@ -581,49 +641,41 @@
# Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting.
- case $CONFIG_FILES in
- *\'*) eval set x "$CONFIG_FILES" ;;
- *) set x $CONFIG_FILES ;;
- esac
+ # TODO: see whether this extra hack can be removed once we start
+ # requiring Autoconf 2.70 or later.
+ AS_CASE([$CONFIG_FILES],
+ [*\'*], [eval set x "$CONFIG_FILES"],
+ [*], [set x $CONFIG_FILES])
shift
- for mf
+ # Used to flag and report bootstrapping failures.
+ am_rc=0
+ for am_mf
do
# Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named 'Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # Grep'ing the whole file is not good either: AIX grep has a line
+ am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile which includes
+ # dependency-tracking related rules and includes.
+ # Grep'ing the whole file directly is not great: AIX grep has a line
# limit of 2048, but all sed's we know have understand at least 4000.
- if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
- dirpart=`AS_DIRNAME("$mf")`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running 'make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "$am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`AS_DIRNAME(["$file"])`
- AS_MKDIR_P([$dirpart/$fdir])
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
+ sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+ || continue
+ am_dirpart=`AS_DIRNAME(["$am_mf"])`
+ am_filepart=`AS_BASENAME(["$am_mf"])`
+ AM_RUN_LOG([cd "$am_dirpart" \
+ && sed -e '/# am--include-marker/d' "$am_filepart" \
+ | $MAKE -f - am--depfiles]) || am_rc=$?
done
+ if test $am_rc -ne 0; then
+ AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
+ for automatic dependency tracking. Try re-running configure with the
+ '--disable-dependency-tracking' option to at least be able to build
+ the package (albeit without support for automatic dependency tracking).])
+ fi
+ AS_UNSET([am_dirpart])
+ AS_UNSET([am_filepart])
+ AS_UNSET([am_mf])
+ AS_UNSET([am_rc])
+ rm -f conftest-deps.mk
}
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
@@ -632,18 +684,17 @@
# -----------------------------
# This macro should only be invoked once -- use via AC_REQUIRE.
#
-# This code is only required when automatic dependency tracking
-# is enabled. FIXME. This creates each '.P' file that we will
-# need in order to bootstrap the dependency handling code.
+# This code is only required when automatic dependency tracking is enabled.
+# This creates each '.Po' and '.Plo' makefile fragment that we'll need in
+# order to bootstrap the dependency handling code.
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AC_CONFIG_COMMANDS([depfiles],
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
- [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
+ [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])])
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -730,11 +781,11 @@
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
# For better backward compatibility. To be removed once Automake 1.9.x
# dies out for good. For more background, see:
-#
-#
+#
+#
AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
AC_REQUIRE([AC_PROG_AWK])dnl
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
@@ -798,7 +849,7 @@
Aborting the configuration process, to ensure you take notice of the issue.
You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: .
+that behaves properly: .
If you want to complete the configuration process using your problematic
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
@@ -808,6 +859,9 @@
AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
fi
fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
])
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
@@ -837,7 +891,7 @@
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -848,7 +902,7 @@
# Define $install_sh.
AC_DEFUN([AM_PROG_INSTALL_SH],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -858,7 +912,7 @@
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+# Copyright (C) 2003-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -879,7 +933,7 @@
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -887,49 +941,42 @@
# AM_MAKE_INCLUDE()
# -----------------
-# Check to see how make treats includes.
+# Check whether make has an 'include' directive that can support all
+# the idioms we need for our automatic dependency tracking code.
AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
+[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive])
+cat > confinc.mk << 'END'
am__doit:
- @echo this is the am__doit target
+ @echo this is the am__doit target >confinc.out
.PHONY: am__doit
END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
am__include="#"
am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
- am__include=include
- am__quote=
- _am_result=GNU
- ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
- am__include=.include
- am__quote="\""
- _am_result=BSD
- ;;
- esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+ AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out])
+ AS_CASE([$?:`cat confinc.out 2>/dev/null`],
+ ['0:this is the am__doit target'],
+ [AS_CASE([$s],
+ [BSD], [am__include='.include' am__quote='"'],
+ [am__include='include' am__quote=''])])
+ if test "$am__include" != "#"; then
+ _am_result="yes ($s style)"
+ break
+ fi
+done
+rm -f confinc.* confmf.*
+AC_MSG_RESULT([${_am_result}])
+AC_SUBST([am__include])])
+AC_SUBST([am__quote])])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
+# Copyright (C) 1997-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -966,7 +1013,7 @@
fi
])
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
+# Copyright (C) 2003-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1000,7 +1047,7 @@
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1029,7 +1076,7 @@
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1076,7 +1123,7 @@
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1095,7 +1142,7 @@
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1176,7 +1223,7 @@
rm -f conftest.file
])
-# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+# Copyright (C) 2009-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1236,7 +1283,7 @@
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1264,7 +1311,7 @@
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006-2013 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1283,7 +1330,7 @@
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+# Copyright (C) 2004-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff -Nru mednafen-1.24.3+dfsg/ChangeLog mednafen-1.26.1+dfsg/ChangeLog
--- mednafen-1.24.3+dfsg/ChangeLog 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/ChangeLog 2020-11-10 06:04:17.000000000 +0000
@@ -1,3 +1,161 @@
+-- 1.26.1: --
+
+November 8, 2020:
+ PSX: Fixed various inaccuracies in the SPU reverb emulation code.
+
+ PSX: Fixed quasi-benign dereferencing of a null pointer in the GPU code when playing a PSF.
+
+November 3, 2020:
+ SNES-Faust: Fixed a crash when an MSU1-enabled game tried to play MSU1 audio but no audio tracks existed.
+
+ SNES-Faust: Only create MSU1 multithreaded audio reader object if at least one audio track is available.
+
+November 2, 2020:
+ SNES-Faust: Fixed a design flaw in the MSU1 audio track loading code that broke loading of audio tracks when the game's filename included a "%" character.
+
+November 1, 2020:
+ SS: Fixed compilation errors after configuring with --disable-debugger.
+
+ SS: Fixed compilation errors with clang.
+
+-- 1.26.0-UNSTABLE: --
+
+October 26, 2020:
+ SS: Added "The Lost World: Jurassic Park" to the internal database of games to enable full cache emulation with, to fix most rock face graphical glitches.
+
+October 25, 2020:
+ SS: Added "Corpse Killer" to the internal database of games to enable full cache emulation with, to fix the glitchy rotation-zoom effect.
+
+October 24, 2020:
+ SS: Fixed major bug, existing since Saturn save state support was added, in the SCU save state code that caused wrong state to be saved(and later restored)
+ when an SCU DMA level in indirect mode was active.
+
+ SS: Added "Kaitei Daisensou"/"In the Hunt" to the internal database of games to enable SH-2 read/write VDP1 draw slowdown with, to fix FMV tearing.
+
+ SS: Added "Zero Divide" to the internal database of games to use the data cache read bypass kludge with, to fix a graphical glitch with character portraits.
+
+October 23, 2020:
+ SS: Made changes to prevent the CDB emulation from reporting PLAY status until the second sector is read after a seek completes; fixes game-breaking
+ problems in "Break Point", "DJ Wars", "Hop Step Idol", and "Tennis Arena".
+
+ SS: Fixed inaccuracies with how CDB playback buffer full auto-pause and resume works; fixes occasional hangs of finite duration in "Dragon Force II" and
+ "World Cup France '98: Road to Win" when trying to skip FMVs.
+
+October 22, 2020:
+ SS: Added "Mujintou Monogatari R: Futari no Love Love Island" to the internal database of games to use the data cache read bypass kludge with,
+ to fix glitches when character portrait graphics change.
+
+October 21, 2020:
+ SS: Added "Doraemon: Nobita to Fukkatsu no Hoshi" to the internal database of games to use the data cache read bypass kludge with,
+ to fix the blank Game Over screen.
+
+ SS: When a CDB 'Get CD Device Connection' command is issued very shortly after a 'Reset Selector' command, the 'Get CD Device Connection' command
+ will now be executed before the resetting effects of the 'Reset Selector' command occur. Fixes startup hang in the USA version of "Independence Day".
+
+October 20, 2020:
+ SS: Slowed down emulated VDP1 pixel plotting performance by a bit less than 20%(10% in 8bpp mode); fixes prematurely cut-off voices in "Paneltia Story",
+ and reduces tearing in "Yu-No".
+
+October 18, 2020:
+ SS: Added "3D Baseball", "The Crow", "NBA Action", "NFL Quarterback Club 96", "Solar Eclipse", and "Titan Wars" to the internal database of games to
+ enable full cache emulation with, to fix minor FMV glitches.
+
+ SS: Added "Thunder Force Gold Pack 1" to the internal database of games to enable full cache emulation with, to fix the glitchy ship sprite in the ending
+ of "Thunder Force III".
+
+ SS: Added the Europe releases of "Virtua Cop" and "Virtua Cop 2" to the internal database of games to enable full cache emulation with, to fix
+ startup hangs.
+
+ SS: Added "Yu-No" to the internal database of games to enable full cache emulation with, to fix the problem of the intro FMV ending too soon.
+
+ SS: Added "Horror Tour" to the internal database of games to enable full cache emulation with, to fix graphical glitches on the save and load screens.
+
+ SS: Added "Falcom Classics II" to the internal database of games to enable SH-2 read/write VDP1 draw slowdown with, to fix tearing in the intro FMV of "Ys II".
+
+ SS: Added "Tokimeki Memorial: Forever With You" to the internal database of games to enable SH-2 read/write VDP1 draw slowdown with, to fix the glitchy
+ arm sprite in the Konami intro.
+
+ SS: Added "Virtua Fighter Kids" to the internal database of games to use the data cache read bypass kludge with, to fix a major FMV glitch.
+
+October 17, 2020:
+ SS: Made a very small SSE2-based optimization to the cache tag evaluation code.
+
+October 16, 2020:
+ SS: Removed incorrect write mirrors for the SH-2 CCR register; fixes FMV glitches in "NFL Quarterback Club 97".
+
+ SS: When full cache emulation is enabled(e.g. via database), alternate slave CPU and bus sharing emulation code will be used, to reduce
+ disproportionate sharing of the bus(it's still not perfect, however).
+
+ SS: SH-2 PC-relative MOV.W and MOV.L loads are now correctly treated as instruction fetches instead of data fetches with respect to the
+ OD/ID bits of CCR.
+
+ SS: The SH-2 WB/EX pipeline stall emulation logic is now always enabled, instead of only being enabled in full cache emulation mode as it was previously.
+
+October 12, 2020:
+ SS: Moved SH-2 cache entry invalid bit from bit31 of the internal combined tag variable to bit0, for slightly better code generation.
+
+October 11, 2020:
+ SS: Slave SH-2 on/off is now handled outside of the regular event handling system to prevent a crash under certain conditions.
+
+October 9, 2020:
+ SS: Extended the handling of VDP1 command execution slowdown on SH-2 CPU reads/writes to also include SH-2 DMA accesses.
+
+October 5, 2020:
+ SS: Bumped up minimum seek timing delay, to compensate for upcoming general CPU timing improvements in the games sensitive to seek timing.
+
+October 4, 2020:
+ SS: The SR value loaded with RTE is now properly masked.
+
+October 2, 2020:
+ SS: Allow the SMPC joystick reading process to be aborted earlier on, while still waiting for vblank to end; fixes another hang in "QuoVadis".
+
+ SS: Added "Wolf Fang SS: Kuuga 2001" to the internal database of games to enable SH-2 CPU read/write VDP1 draw slowdown with, to
+ fix glitchy graphics in the player's robot.
+
+ SS: Added "Mahjong Doukyuusei Special" to the internal database of games to use the data cache read bypass kludge with, to fix the missing
+ background graphics layer on disc 2.
+
+ SS: Added "Kidou Senkan Nadesico: Yappari Saigo wa Ai ga Katsu" to the internal database of games to use full cache emulation with, to fix a hang.
+
+ SS: Implemented emulation of the timing effects of the B-bus write buffer on SH-2 CPU writes; fixes hang in "QuoVadis".
+
+September 4, 2020:
+ SNES-Faust: Fixed bug in the multithreaded PPU renderer that could cause massive graphics corruption when a game interleaves reads and writes to
+ VRAM without resetting the VRAM address, like in "NBA Pro Basketball: Bulls vs Blazers".
+
+August 28, 2020:
+ SS: Delay CDB status position info update by about 44us after a seek request(via Play command, or otherwise); fixes missing graphics in
+ the intro of "Magical Drop 3".
+
+-- 1.25.0-UNSTABLE: --
+
+June 27, 2020:
+ SS: Implemented more accurate emulation of VDP1 drawing of excessively-large primitives.
+ It's not perfect, there's still something weird going on with antialiasing, and the effects on gradient shading
+ and texturing are not fully emulated, but it's enough to fix missing graphics in the attract mode of "Virtua Cop",
+ and a hang after defeating the final boss in "Rayman".
+
+ SS: Fixed an off-by-1 inaccuracy in the edge stepping code for sprites and polygons, with minor visible effects in
+ non-rectangular sprites/polygons.
+
+June 26, 2020:
+ SS, MD: Fixed/Implemented M68K MULU and MULS instruction timing.
+
+June 24, 2020:
+ SS: Added wait states to M68K writes; fixes hang in "Lunar" after the Meribia pub singer's singing, that was caused by a timer being
+ reloaded too quickly in an interrupt handler.
+
+June 13, 2020:
+ SS: Allow VDP1 primitive drawing code to be suspended(and later resumed) mid-drawing when it's consumed too much emulated time; fixes excessive CPU usage during
+ the FMV in "Dark Seed II".
+
+June 4, 2020:
+ SS: Added "Senken Kigyouden", "Xian Jian Qi Xia Zhuan", "Virtua Fighter", and "Virtua Fighter Remix" to the internal database of games to
+ enable full cache emulation with, to fix graphical glitches.
+
+May 17, 2020:
+ SS: Implemented more complete emulation of SCSP's buggy(inter-slot contamination) linear interpolation on FM carrier slots.
+
-- 1.24.3: --
May 1, 2020:
diff -Nru mednafen-1.24.3+dfsg/compile mednafen-1.26.1+dfsg/compile
--- mednafen-1.24.3+dfsg/compile 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/compile 2020-11-10 06:04:17.000000000 +0000
@@ -1,9 +1,9 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
-scriptversion=2012-10-14.11; # UTC
+scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Written by Tom Tromey .
#
# This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@
# 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, see .
+# along with this program. If not, see .
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -255,7 +255,8 @@
echo "compile $scriptversion"
exit $?
;;
- cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
+ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
@@ -339,9 +340,9 @@
# Local Variables:
# mode: shell-script
# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
diff -Nru mednafen-1.24.3+dfsg/config.guess mednafen-1.26.1+dfsg/config.guess
--- mednafen-1.24.3+dfsg/config.guess 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/config.guess 2020-11-10 06:04:17.000000000 +0000
@@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2014 Free Software Foundation, Inc.
+# Copyright 1992-2018 Free Software Foundation, Inc.
-timestamp='2014-03-23'
+timestamp='2018-02-24'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, see .
+# along with this program; if not, see .
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -24,12 +24,12 @@
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
#
-# Originally written by Per Bothner.
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
#
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to .
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -39,7 +39,7 @@
Output the configuration name of the system \`$me' is run on.
-Operation modes:
+Options:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
@@ -50,7 +50,7 @@
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2014 Free Software Foundation, Inc.
+Copyright 1992-2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -107,9 +107,9 @@
dummy=$tmp/dummy ;
tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
+ ,,) echo "int x;" > "$dummy.c" ;
for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
CC_FOR_BUILD="$c"; break ;
fi ;
done ;
@@ -132,14 +132,14 @@
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-case "${UNAME_SYSTEM}" in
+case "$UNAME_SYSTEM" in
Linux|GNU|GNU/*)
# If the system lacks a compiler, then just pick glibc.
# We could probably try harder.
LIBC=gnu
- eval $set_cc_for_build
- cat <<-EOF > $dummy.c
+ eval "$set_cc_for_build"
+ cat <<-EOF > "$dummy.c"
#include
#if defined(__UCLIBC__)
LIBC=uclibc
@@ -149,13 +149,20 @@
LIBC=gnu
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+ eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+
+ # If ldd exists, use it to detect musl libc.
+ if command -v ldd >/dev/null && \
+ ldd --version 2>&1 | grep -q ^musl
+ then
+ LIBC=musl
+ fi
;;
esac
# Note: order is significant - the case branches are not exclusive.
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -168,21 +175,31 @@
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
+ UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+ "/sbin/$sysctl" 2>/dev/null || \
+ "/usr/sbin/$sysctl" 2>/dev/null || \
+ echo unknown)`
+ case "$UNAME_MACHINE_ARCH" in
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ earmv*)
+ arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+ endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+ machine="${arch}${endian}"-unknown
+ ;;
+ *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
esac
# The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
- case "${UNAME_MACHINE_ARCH}" in
+ # to ELF recently (or will in the future) and ABI.
+ case "$UNAME_MACHINE_ARCH" in
+ earm*)
+ os=netbsdelf
+ ;;
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
+ eval "$set_cc_for_build"
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
then
@@ -197,44 +214,67 @@
os=netbsd
;;
esac
+ # Determine ABI tags.
+ case "$UNAME_MACHINE_ARCH" in
+ earm*)
+ expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+ abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
+ ;;
+ esac
# The OS release
# Debian GNU/NetBSD machines have a different userland, and
# thus, need a distinct triplet. However, they do not need
# kernel version information, so it can be replaced with a
# suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
+ case "$UNAME_VERSION" in
Debian*)
release='-gnu'
;;
*)
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
;;
esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
+ echo "$machine-${os}${release}${abi}"
exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
+ exit ;;
+ *:LibertyBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+ echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
+ exit ;;
+ *:MidnightBSD:*:*)
+ echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
exit ;;
*:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
exit ;;
*:SolidBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
exit ;;
macppc:MirBSD:*:*)
- echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
exit ;;
*:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
+ exit ;;
+ *:Sortix:*:*)
+ echo "$UNAME_MACHINE"-unknown-sortix
exit ;;
+ *:Redox:*:*)
+ echo "$UNAME_MACHINE"-unknown-redox
+ exit ;;
+ mips:OSF1:*.*)
+ echo mips-dec-osf1
+ exit ;;
alpha:OSF1:*:*)
case $UNAME_RELEASE in
*4.0)
@@ -251,63 +291,54 @@
ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
case "$ALPHA_CPU_TYPE" in
"EV4 (21064)")
- UNAME_MACHINE="alpha" ;;
+ UNAME_MACHINE=alpha ;;
"EV4.5 (21064)")
- UNAME_MACHINE="alpha" ;;
+ UNAME_MACHINE=alpha ;;
"LCA4 (21066/21068)")
- UNAME_MACHINE="alpha" ;;
+ UNAME_MACHINE=alpha ;;
"EV5 (21164)")
- UNAME_MACHINE="alphaev5" ;;
+ UNAME_MACHINE=alphaev5 ;;
"EV5.6 (21164A)")
- UNAME_MACHINE="alphaev56" ;;
+ UNAME_MACHINE=alphaev56 ;;
"EV5.6 (21164PC)")
- UNAME_MACHINE="alphapca56" ;;
+ UNAME_MACHINE=alphapca56 ;;
"EV5.7 (21164PC)")
- UNAME_MACHINE="alphapca57" ;;
+ UNAME_MACHINE=alphapca57 ;;
"EV6 (21264)")
- UNAME_MACHINE="alphaev6" ;;
+ UNAME_MACHINE=alphaev6 ;;
"EV6.7 (21264A)")
- UNAME_MACHINE="alphaev67" ;;
+ UNAME_MACHINE=alphaev67 ;;
"EV6.8CB (21264C)")
- UNAME_MACHINE="alphaev68" ;;
+ UNAME_MACHINE=alphaev68 ;;
"EV6.8AL (21264B)")
- UNAME_MACHINE="alphaev68" ;;
+ UNAME_MACHINE=alphaev68 ;;
"EV6.8CX (21264D)")
- UNAME_MACHINE="alphaev68" ;;
+ UNAME_MACHINE=alphaev68 ;;
"EV6.9A (21264/EV69A)")
- UNAME_MACHINE="alphaev69" ;;
+ UNAME_MACHINE=alphaev69 ;;
"EV7 (21364)")
- UNAME_MACHINE="alphaev7" ;;
+ UNAME_MACHINE=alphaev7 ;;
"EV7.9 (21364A)")
- UNAME_MACHINE="alphaev79" ;;
+ UNAME_MACHINE=alphaev79 ;;
esac
# A Pn.n version is a patched version.
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
exitcode=$?
trap '' 0
exit $exitcode ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit ;;
Amiga*:UNIX_System_V:4.0:*)
echo m68k-unknown-sysv4
exit ;;
*:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
+ echo "$UNAME_MACHINE"-unknown-amigaos
exit ;;
*:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
+ echo "$UNAME_MACHINE"-unknown-morphos
exit ;;
*:OS/390:*:*)
echo i370-ibm-openedition
@@ -319,7 +350,7 @@
echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
+ echo arm-acorn-riscix"$UNAME_RELEASE"
exit ;;
arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
@@ -346,38 +377,38 @@
sparc) echo sparc-icl-nx7; exit ;;
esac ;;
s390x:SunOS:*:*)
- echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
exit ;;
sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
exit ;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
- echo i386-pc-auroraux${UNAME_RELEASE}
+ echo i386-pc-auroraux"$UNAME_RELEASE"
exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- eval $set_cc_for_build
- SUN_ARCH="i386"
+ eval "$set_cc_for_build"
+ SUN_ARCH=i386
# If there is a compiler, see if it is configured for 64-bit objects.
# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
# This test works for both compilers.
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
- SUN_ARCH="x86_64"
+ SUN_ARCH=x86_64
fi
fi
- echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
@@ -386,25 +417,25 @@
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
exit ;;
sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
+ echo m68k-sun-sunos"$UNAME_RELEASE"
exit ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
case "`/bin/arch`" in
sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
+ echo m68k-sun-sunos"$UNAME_RELEASE"
;;
sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
+ echo sparc-sun-sunos"$UNAME_RELEASE"
;;
esac
exit ;;
aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
+ echo sparc-auspex-sunos"$UNAME_RELEASE"
exit ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
@@ -415,44 +446,44 @@
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint"$UNAME_RELEASE"
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint"$UNAME_RELEASE"
exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint"$UNAME_RELEASE"
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
+ echo m68k-milan-mint"$UNAME_RELEASE"
exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
+ echo m68k-hades-mint"$UNAME_RELEASE"
exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
+ echo m68k-unknown-mint"$UNAME_RELEASE"
exit ;;
m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
+ echo m68k-apple-machten"$UNAME_RELEASE"
exit ;;
powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
+ echo powerpc-apple-machten"$UNAME_RELEASE"
exit ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
exit ;;
RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
+ echo mips-dec-ultrix"$UNAME_RELEASE"
exit ;;
VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
+ echo vax-dec-ultrix"$UNAME_RELEASE"
exit ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
+ echo clipper-intergraph-clix"$UNAME_RELEASE"
exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ eval "$set_cc_for_build"
+ sed 's/^ //' << EOF > "$dummy.c"
#ifdef __cplusplus
#include /* for printf() prototype */
int main (int argc, char *argv[]) {
@@ -461,23 +492,23 @@
#endif
#if defined (host_mips) && defined (MIPSEB)
#if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
#endif
#endif
exit (-1);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c &&
- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`$dummy $dummyarg` &&
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
+ dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
{ echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos${UNAME_RELEASE}
+ echo mips-mips-riscos"$UNAME_RELEASE"
exit ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
@@ -503,17 +534,17 @@
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
+ if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
+ [ "$TARGET_BINARY_INTERFACE"x = x ]
then
- echo m88k-dg-dgux${UNAME_RELEASE}
+ echo m88k-dg-dgux"$UNAME_RELEASE"
else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ echo m88k-dg-dguxbcs"$UNAME_RELEASE"
fi
else
- echo i586-dg-dgux${UNAME_RELEASE}
+ echo i586-dg-dgux"$UNAME_RELEASE"
fi
exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
@@ -530,7 +561,7 @@
echo m68k-tektronix-bsd
exit ;;
*:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
exit ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
@@ -542,14 +573,14 @@
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ eval "$set_cc_for_build"
+ sed 's/^ //' << EOF > "$dummy.c"
#include
main()
@@ -560,7 +591,7 @@
exit(0);
}
EOF
- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
then
echo "$SYSTEM_NAME"
else
@@ -574,26 +605,27 @@
exit ;;
*:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
+ if [ -x /usr/bin/lslpp ] ; then
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
exit ;;
*:AIX:*:*)
echo rs6000-ibm-aix
exit ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
echo romp-ibm-bsd4.4
exit ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to
exit ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
@@ -608,28 +640,28 @@
echo m68k-hp-bsd4.4
exit ;;
9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
+ HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+ case "$UNAME_MACHINE" in
+ 9000/31?) HP_ARCH=m68000 ;;
+ 9000/[34]??) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ case "$sc_cpu_version" in
+ 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
- '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ case "$sc_kernel_bits" in
+ 32) HP_ARCH=hppa2.0n ;;
+ 64) HP_ARCH=hppa2.0w ;;
+ '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
esac ;;
esac
fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ if [ "$HP_ARCH" = "" ]; then
+ eval "$set_cc_for_build"
+ sed 's/^ //' << EOF > "$dummy.c"
#define _HPUX_SOURCE
#include
@@ -662,13 +694,13 @@
exit (0);
}
EOF
- (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
- if [ ${HP_ARCH} = "hppa2.0w" ]
+ if [ "$HP_ARCH" = hppa2.0w ]
then
- eval $set_cc_for_build
+ eval "$set_cc_for_build"
# hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
# 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
@@ -679,23 +711,23 @@
# $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
# => hppa64-hp-hpux11.23
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
grep -q __LP64__
then
- HP_ARCH="hppa2.0w"
+ HP_ARCH=hppa2.0w
else
- HP_ARCH="hppa64"
+ HP_ARCH=hppa64
fi
fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
exit ;;
ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
+ HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux"$HPUX_REV"
exit ;;
3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ eval "$set_cc_for_build"
+ sed 's/^ //' << EOF > "$dummy.c"
#include
int
main ()
@@ -720,11 +752,11 @@
exit (0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
{ echo "$SYSTEM_NAME"; exit; }
echo unknown-hitachi-hiuxwe2
exit ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
echo hppa1.1-hp-bsd
exit ;;
9000/8??:4.3bsd:*:*)
@@ -733,7 +765,7 @@
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
echo hppa1.0-hp-mpeix
exit ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
echo hppa1.1-hp-osf
exit ;;
hp8??:OSF1:*:*)
@@ -741,9 +773,9 @@
exit ;;
i*86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
+ echo "$UNAME_MACHINE"-unknown-osf1mk
else
- echo ${UNAME_MACHINE}-unknown-osf1
+ echo "$UNAME_MACHINE"-unknown-osf1
fi
exit ;;
parisc*:Lites*:*:*)
@@ -768,127 +800,109 @@
echo c4-convex-bsd
exit ;;
CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-e 's/\.[^.]*$/.X/'
exit ;;
CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
*:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
exit ;;
sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
+ echo sparc-unknown-bsdi"$UNAME_RELEASE"
exit ;;
*:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
exit ;;
*:FreeBSD:*:*)
UNAME_PROCESSOR=`/usr/bin/uname -p`
- case ${UNAME_PROCESSOR} in
+ case "$UNAME_PROCESSOR" in
amd64)
- echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- *)
- echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ UNAME_PROCESSOR=x86_64 ;;
+ i386)
+ UNAME_PROCESSOR=i586 ;;
esac
+ echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
exit ;;
i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
+ echo "$UNAME_MACHINE"-pc-cygwin
exit ;;
*:MINGW64*:*)
- echo ${UNAME_MACHINE}-pc-mingw64
+ echo "$UNAME_MACHINE"-pc-mingw64
exit ;;
*:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
+ echo "$UNAME_MACHINE"-pc-mingw32
exit ;;
*:MSYS*:*)
- echo ${UNAME_MACHINE}-pc-msys
- exit ;;
- i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
+ echo "$UNAME_MACHINE"-pc-msys
exit ;;
i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
+ echo "$UNAME_MACHINE"-pc-pw32
exit ;;
*:Interix*:*)
- case ${UNAME_MACHINE} in
+ case "$UNAME_MACHINE" in
x86)
- echo i586-pc-interix${UNAME_RELEASE}
+ echo i586-pc-interix"$UNAME_RELEASE"
exit ;;
authenticamd | genuineintel | EM64T)
- echo x86_64-unknown-interix${UNAME_RELEASE}
+ echo x86_64-unknown-interix"$UNAME_RELEASE"
exit ;;
IA64)
- echo ia64-unknown-interix${UNAME_RELEASE}
+ echo ia64-unknown-interix"$UNAME_RELEASE"
exit ;;
esac ;;
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- echo i${UNAME_MACHINE}-pc-mks
- exit ;;
- 8664:Windows_NT:*)
- echo x86_64-pc-mks
- exit ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i586-pc-interix
- exit ;;
i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
+ echo "$UNAME_MACHINE"-pc-uwin
exit ;;
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
echo x86_64-unknown-cygwin
exit ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
- exit ;;
prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
*:GNU:*:*)
# the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+ echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
exit ;;
i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
+ echo "$UNAME_MACHINE"-pc-minix
exit ;;
aarch64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -901,58 +915,64 @@
EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
arc:Linux:*:* | arceb:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
arm*:Linux:*:*)
- eval $set_cc_for_build
+ eval "$set_cc_for_build"
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
else
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
cris:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
exit ;;
crisv32:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
+ exit ;;
+ e2k:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
frv:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
hexagon:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
i*86:Linux:*:*)
- echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
exit ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
+ k1om:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ eval "$set_cc_for_build"
+ sed 's/^ //' << EOF > "$dummy.c"
#undef CPU
#undef ${UNAME_MACHINE}
#undef ${UNAME_MACHINE}el
@@ -966,64 +986,74 @@
#endif
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+ eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`"
+ test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; }
;;
+ mips64el:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
openrisc*:Linux:*:*)
- echo or1k-unknown-linux-${LIBC}
+ echo or1k-unknown-linux-"$LIBC"
exit ;;
or32:Linux:*:* | or1k*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-${LIBC}
+ echo sparc-unknown-linux-"$LIBC"
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-${LIBC}
+ echo hppa64-unknown-linux-"$LIBC"
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
- PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
- *) echo hppa-unknown-linux-${LIBC} ;;
+ PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
+ PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
+ *) echo hppa-unknown-linux-"$LIBC" ;;
esac
exit ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-${LIBC}
+ echo powerpc64-unknown-linux-"$LIBC"
exit ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-${LIBC}
+ echo powerpc-unknown-linux-"$LIBC"
exit ;;
ppc64le:Linux:*:*)
- echo powerpc64le-unknown-linux-${LIBC}
+ echo powerpc64le-unknown-linux-"$LIBC"
exit ;;
ppcle:Linux:*:*)
- echo powerpcle-unknown-linux-${LIBC}
+ echo powerpcle-unknown-linux-"$LIBC"
+ exit ;;
+ riscv32:Linux:*:* | riscv64:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+ echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
tile*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+ echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
exit ;;
x86_64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ if objdump -f /bin/sh | grep -q elf32-x86-64; then
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32
+ else
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
+ fi
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1037,34 +1067,34 @@
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
exit ;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
+ echo "$UNAME_MACHINE"-pc-os2-emx
exit ;;
i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
+ echo "$UNAME_MACHINE"-unknown-stop
exit ;;
i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
+ echo "$UNAME_MACHINE"-unknown-atheos
exit ;;
i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
+ echo "$UNAME_MACHINE"-pc-syllable
exit ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
+ echo i386-unknown-lynxos"$UNAME_RELEASE"
exit ;;
i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ echo "$UNAME_MACHINE"-pc-msdosdjgpp
exit ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ i*86:*:4.*:*)
+ UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
fi
exit ;;
i*86:*:5:[678]*)
@@ -1074,12 +1104,12 @@
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then
UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
@@ -1089,9 +1119,9 @@
&& UNAME_MACHINE=i686
(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
else
- echo ${UNAME_MACHINE}-pc-sysv32
+ echo "$UNAME_MACHINE"-pc-sysv32
fi
exit ;;
pc:*:*:*)
@@ -1099,7 +1129,7 @@
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i586.
# Note: whatever this is, it MUST be the same as what config.sub
- # prints for the "djgpp" host, or else GDB configury will decide that
+ # prints for the "djgpp" host, or else GDB configure will decide that
# this is a cross-build.
echo i586-pc-msdosdjgpp
exit ;;
@@ -1111,9 +1141,9 @@
exit ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4
fi
exit ;;
mini*:CTIX:SYS*5:*)
@@ -1133,9 +1163,9 @@
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4; exit; } ;;
@@ -1144,28 +1174,28 @@
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
+ echo m68k-unknown-lynxos"$UNAME_RELEASE"
exit ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit ;;
TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
+ echo sparc-unknown-lynxos"$UNAME_RELEASE"
exit ;;
rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ echo rs6000-unknown-lynxos"$UNAME_RELEASE"
exit ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ echo powerpc-unknown-lynxos"$UNAME_RELEASE"
exit ;;
SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
+ echo mips-dde-sysv"$UNAME_RELEASE"
exit ;;
RM*:ReliantUNIX-*:*:*)
echo mips-sni-sysv4
@@ -1176,7 +1206,7 @@
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
+ echo "$UNAME_MACHINE"-sni-sysv4
else
echo ns32k-sni-sysv
fi
@@ -1196,23 +1226,23 @@
exit ;;
i*86:VOS:*:*)
# From Paul.Green@stratus.com.
- echo ${UNAME_MACHINE}-stratus-vos
+ echo "$UNAME_MACHINE"-stratus-vos
exit ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
echo hppa1.1-stratus-vos
exit ;;
mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
+ echo m68k-apple-aux"$UNAME_RELEASE"
exit ;;
news*:NEWS-OS:6*:*)
echo mips-sony-newsos6
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
+ echo mips-nec-sysv"$UNAME_RELEASE"
else
- echo mips-unknown-sysv${UNAME_RELEASE}
+ echo mips-unknown-sysv"$UNAME_RELEASE"
fi
exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
@@ -1231,46 +1261,56 @@
echo x86_64-unknown-haiku
exit ;;
SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
+ echo sx4-nec-superux"$UNAME_RELEASE"
exit ;;
SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
+ echo sx5-nec-superux"$UNAME_RELEASE"
exit ;;
SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux${UNAME_RELEASE}
+ echo sx6-nec-superux"$UNAME_RELEASE"
exit ;;
SX-7:SUPER-UX:*:*)
- echo sx7-nec-superux${UNAME_RELEASE}
+ echo sx7-nec-superux"$UNAME_RELEASE"
exit ;;
SX-8:SUPER-UX:*:*)
- echo sx8-nec-superux${UNAME_RELEASE}
+ echo sx8-nec-superux"$UNAME_RELEASE"
exit ;;
SX-8R:SUPER-UX:*:*)
- echo sx8r-nec-superux${UNAME_RELEASE}
+ echo sx8r-nec-superux"$UNAME_RELEASE"
+ exit ;;
+ SX-ACE:SUPER-UX:*:*)
+ echo sxace-nec-superux"$UNAME_RELEASE"
exit ;;
Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ echo powerpc-apple-rhapsody"$UNAME_RELEASE"
exit ;;
*:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- eval $set_cc_for_build
+ eval "$set_cc_for_build"
if test "$UNAME_PROCESSOR" = unknown ; then
UNAME_PROCESSOR=powerpc
fi
- if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
+ if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
then
case $UNAME_PROCESSOR in
i386) UNAME_PROCESSOR=x86_64 ;;
powerpc) UNAME_PROCESSOR=powerpc64 ;;
esac
fi
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
+ fi
fi
elif test "$UNAME_PROCESSOR" = i386 ; then
# Avoid executing cc on OS X 10.9, as it ships with a stub
@@ -1281,27 +1321,33 @@
# that Apple uses in portable devices.
UNAME_PROCESSOR=x86_64
fi
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = "x86"; then
+ if test "$UNAME_PROCESSOR" = x86; then
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
exit ;;
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
- NEO-?:NONSTOP_KERNEL:*:*)
- echo neo-tandem-nsk${UNAME_RELEASE}
+ NEO-*:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk"$UNAME_RELEASE"
exit ;;
NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
+ echo nse-tandem-nsk"$UNAME_RELEASE"
exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
+ NSR-*:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSV-*:NONSTOP_KERNEL:*:*)
+ echo nsv-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSX-*:NONSTOP_KERNEL:*:*)
+ echo nsx-tandem-nsk"$UNAME_RELEASE"
exit ;;
*:NonStop-UX:*:*)
echo mips-compaq-nonstopux
@@ -1310,18 +1356,18 @@
echo bs2000-siemens-sysv
exit ;;
DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
exit ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
- if test "$cputype" = "386"; then
+ if test "$cputype" = 386; then
UNAME_MACHINE=i386
else
UNAME_MACHINE="$cputype"
fi
- echo ${UNAME_MACHINE}-unknown-plan9
+ echo "$UNAME_MACHINE"-unknown-plan9
exit ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
@@ -1342,14 +1388,14 @@
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
+ echo mips-sei-seiux"$UNAME_RELEASE"
exit ;;
*:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
exit ;;
*:*VMS:*:*)
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
+ case "$UNAME_MACHINE" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
V*) echo vax-dec-vms ; exit ;;
@@ -1358,34 +1404,48 @@
echo i386-pc-xenix
exit ;;
i*86:skyos:*:*)
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
exit ;;
i*86:rdos:*:*)
- echo ${UNAME_MACHINE}-pc-rdos
+ echo "$UNAME_MACHINE"-pc-rdos
exit ;;
i*86:AROS:*:*)
- echo ${UNAME_MACHINE}-pc-aros
+ echo "$UNAME_MACHINE"-pc-aros
exit ;;
x86_64:VMkernel:*:*)
- echo ${UNAME_MACHINE}-unknown-esx
+ echo "$UNAME_MACHINE"-unknown-esx
+ exit ;;
+ amd64:Isilon\ OneFS:*:*)
+ echo x86_64-unknown-onefs
exit ;;
esac
+echo "$0: unable to guess system type" >&2
+
+case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+ mips:Linux | mips64:Linux)
+ # If we got here on MIPS GNU/Linux, output extra information.
+ cat >&2 <&2 < in order to provide the needed
-information to handle your system.
+If $0 has already been updated, send the following data and any
+information you think might be pertinent to config-patches@gnu.org to
+provide the necessary information to handle your system.
config.guess timestamp = $timestamp
@@ -1404,16 +1464,16 @@
/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
+UNAME_MACHINE = "$UNAME_MACHINE"
+UNAME_RELEASE = "$UNAME_RELEASE"
+UNAME_SYSTEM = "$UNAME_SYSTEM"
+UNAME_VERSION = "$UNAME_VERSION"
EOF
exit 1
# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'write-file-functions 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
diff -Nru mednafen-1.24.3+dfsg/config.sub mednafen-1.26.1+dfsg/config.sub
--- mednafen-1.24.3+dfsg/config.sub 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/config.sub 2020-11-10 06:04:17.000000000 +0000
@@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2014 Free Software Foundation, Inc.
+# Copyright 1992-2018 Free Software Foundation, Inc.
-timestamp='2014-09-11'
+timestamp='2018-02-22'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, see .
+# along with this program; if not, see .
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -25,7 +25,7 @@
# of the GNU General Public License, version 3 ("GPLv3").
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to .
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
@@ -33,7 +33,7 @@
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
@@ -53,12 +53,11 @@
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
- $0 [OPTION] ALIAS
+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
Canonicalize a configuration name.
-Operation modes:
+Options:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
@@ -68,7 +67,7 @@
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2014 Free Software Foundation, Inc.
+Copyright 1992-2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -95,7 +94,7 @@
*local*)
# First pass through any local machine types.
- echo $1
+ echo "$1"
exit ;;
* )
@@ -113,24 +112,24 @@
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | \
- kopensolaris*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
+ kopensolaris*-gnu* | cloudabi*-eabi* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
android-linux)
os=-linux-android
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
;;
*)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
+ basic_machine=`echo "$1" | sed 's/-[^-]*$//'`
+ if [ "$basic_machine" != "$1" ]
+ then os=`echo "$1" | sed 's/.*-/-/'`
else os=; fi
;;
esac
@@ -179,44 +178,44 @@
;;
-sco6)
os=-sco5v6
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco5)
os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco4)
os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2.[4-9]*)
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2v[4-9]*)
# Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco5v6*)
# Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco*)
os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-isc)
os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-clix*)
basic_machine=clipper-intergraph
;;
-isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-lynx*178)
os=-lynxos178
@@ -228,10 +227,7 @@
os=-lynxos
;;
-ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'`
;;
-psos*)
os=-psos
@@ -255,15 +251,16 @@
| arc | arceb \
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
| avr | avr32 \
+ | ba \
| be32 | be64 \
| bfin \
| c4x | c8051 | clipper \
| d10v | d30v | dlx | dsp16xx \
- | epiphany \
- | fido | fr30 | frv \
+ | e2k | epiphany \
+ | fido | fr30 | frv | ft32 \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
- | i370 | i860 | i960 | ia64 \
+ | i370 | i860 | i960 | ia16 | ia64 \
| ip2k | iq2000 \
| k1om \
| le32 | le64 \
@@ -299,13 +296,14 @@
| nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \
| open8 | or1k | or1knd | or32 \
- | pdp10 | pdp11 | pj | pjl \
+ | pdp10 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
+ | pru \
| pyramid \
| riscv32 | riscv64 \
| rl78 | rx \
| score \
- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
@@ -313,7 +311,8 @@
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
- | we32k \
+ | visium \
+ | wasm32 \
| x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
@@ -327,11 +326,14 @@
c6x)
basic_machine=tic6x-unknown
;;
+ leon|leon[3-9])
+ basic_machine=sparc-$basic_machine
+ ;;
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65)
;;
ms1)
basic_machine=mt-unknown
@@ -360,7 +362,7 @@
;;
# Object if more than one company name word.
*-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
exit 1
;;
# Recognize the basic CPU types with company name.
@@ -372,17 +374,18 @@
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
+ | ba-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
| c8051-* | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
- | elxsi-* \
+ | e2k-* | elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| hexagon-* \
- | i*86-* | i860-* | i960-* | ia64-* \
+ | i*86-* | i860-* | i960-* | ia16-* | ia64-* \
| ip2k-* | iq2000-* \
| k1om-* \
| le32-* | le64-* \
@@ -423,13 +426,15 @@
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+ | pru-* \
| pyramid-* \
+ | riscv32-* | riscv64-* \
| rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
| tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tile*-* \
@@ -437,6 +442,8 @@
| ubicom32-* \
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \
+ | visium-* \
+ | wasm32-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
@@ -450,7 +457,7 @@
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
386bsd)
- basic_machine=i386-unknown
+ basic_machine=i386-pc
os=-bsd
;;
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
@@ -484,7 +491,7 @@
basic_machine=x86_64-pc
;;
amd64-*)
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
amdahl)
basic_machine=580-amdahl
@@ -513,6 +520,9 @@
basic_machine=i386-pc
os=-aros
;;
+ asmjs)
+ basic_machine=asmjs-unknown
+ ;;
aux)
basic_machine=m68k-apple
os=-aux
@@ -526,7 +536,7 @@
os=-linux
;;
blackfin-*)
- basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=-linux
;;
bluegene*)
@@ -534,13 +544,13 @@
os=-cnk
;;
c54x-*)
- basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
c55x-*)
- basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
c6x-*)
- basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
c90)
basic_machine=c90-cray
@@ -629,10 +639,18 @@
basic_machine=rs6000-bull
os=-bosx
;;
- dpx2* | dpx2*-bull)
+ dpx2*)
basic_machine=m68k-bull
os=-sysv3
;;
+ e500v[12])
+ basic_machine=powerpc-unknown
+ os=$os"spe"
+ ;;
+ e500v[12]-*)
+ basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+ os=$os"spe"
+ ;;
ebmon29k)
basic_machine=a29k-amd
os=-ebmon
@@ -722,9 +740,6 @@
hp9k8[0-9][0-9] | hp8[0-9][0-9])
basic_machine=hppa1.0-hp
;;
- hppa-next)
- os=-nextstep3
- ;;
hppaosf)
basic_machine=hppa1.1-hp
os=-osf
@@ -737,26 +752,26 @@
basic_machine=i370-ibm
;;
i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-sysv32
;;
i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-sysv4
;;
i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-sysv
;;
i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-solaris2
;;
i386mach)
basic_machine=i386-mach
os=-mach
;;
- i386-vsta | vsta)
+ vsta)
basic_machine=i386-unknown
os=-vsta
;;
@@ -774,17 +789,17 @@
basic_machine=m68k-isi
os=-sysv
;;
+ leon-*|leon[3-9]-*)
+ basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'`
+ ;;
m68knommu)
basic_machine=m68k-unknown
os=-linux
;;
m68knommu-*)
- basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=-linux
;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
magnum | m3230)
basic_machine=mips-mips
os=-sysv
@@ -816,10 +831,10 @@
os=-mint
;;
mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`
;;
mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown
;;
monitor)
basic_machine=m68k-rom68k
@@ -838,7 +853,7 @@
os=-msdos
;;
ms1-*)
- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'`
;;
msys)
basic_machine=i686-pc
@@ -880,7 +895,7 @@
basic_machine=v70-nec
os=-sysv
;;
- next | m*-next )
+ next | m*-next)
basic_machine=m68k-next
case $os in
-nextstep* )
@@ -925,6 +940,12 @@
nsr-tandem)
basic_machine=nsr-tandem
;;
+ nsv-tandem)
+ basic_machine=nsv-tandem
+ ;;
+ nsx-tandem)
+ basic_machine=nsx-tandem
+ ;;
op50n-* | op60c-*)
basic_machine=hppa1.1-oki
os=-proelf
@@ -957,7 +978,7 @@
os=-linux
;;
parisc-*)
- basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=-linux
;;
pbd)
@@ -973,7 +994,7 @@
basic_machine=i386-pc
;;
pc98-*)
- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc
@@ -988,16 +1009,16 @@
basic_machine=i786-pc
;;
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
pentium4-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
pn)
basic_machine=pn-gould
@@ -1007,23 +1028,23 @@
ppc | ppcbe) basic_machine=powerpc-unknown
;;
ppc-* | ppcbe-*)
- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
+ ppcle | powerpclittle)
basic_machine=powerpcle-unknown
;;
ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
ppc64) basic_machine=powerpc64-unknown
;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
- ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ ppc64le | powerpc64little)
basic_machine=powerpc64le-unknown
;;
ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
ps2)
basic_machine=i386-ibm
@@ -1077,17 +1098,10 @@
sequent)
basic_machine=i386-sequent
;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
sh5el)
basic_machine=sh5le-unknown
;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparclite-wrs | simso-wrs)
+ simso-wrs)
basic_machine=sparclite-wrs
os=-vxworks
;;
@@ -1106,7 +1120,7 @@
os=-sysv4
;;
strongarm-* | thumb-*)
- basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
sun2)
basic_machine=m68000-sun
@@ -1228,6 +1242,9 @@
basic_machine=hppa1.1-winbond
os=-proelf
;;
+ x64)
+ basic_machine=x86_64-pc
+ ;;
xbox)
basic_machine=i686-pc
os=-mingw32
@@ -1236,20 +1253,12 @@
basic_machine=xps100-honeywell
;;
xscale-* | xscalee[bl]-*)
- basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'`
;;
ymp)
basic_machine=ymp-cray
os=-unicos
;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- z80-*-coff)
- basic_machine=z80-unknown
- os=-sim
- ;;
none)
basic_machine=none-none
os=-none
@@ -1278,10 +1287,6 @@
vax)
basic_machine=vax-dec
;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
- ;;
pdp11)
basic_machine=pdp11-dec
;;
@@ -1291,9 +1296,6 @@
sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
;;
- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
- basic_machine=sparc-sun
- ;;
cydra)
basic_machine=cydra-cydrome
;;
@@ -1313,7 +1315,7 @@
# Make sure to match an already-canonicalized machine name.
;;
*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
exit 1
;;
esac
@@ -1321,10 +1323,10 @@
# Here we canonicalize certain aliases for manufacturers.
case $basic_machine in
*-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'`
;;
*-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'`
;;
*)
;;
@@ -1335,8 +1337,8 @@
if [ x"$os" != x"" ]
then
case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
+ # First match some system type aliases that might get confused
+ # with valid system types.
# -solaris* is a basic system type, with this one exception.
-auroraux)
os=-auroraux
@@ -1347,45 +1349,48 @@
-solaris)
os=-solaris2
;;
- -svr4*)
- os=-sysv4
- ;;
-unixware*)
os=-sysv4.2uw
;;
-gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
;;
- # First accept the basic system types.
+ # es1800 is here to avoid being matched by es* (a different OS)
+ -es1800*)
+ os=-ose
+ ;;
+ # Now accept the basic system types.
# The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
+ # Each alternative MUST end in a * to match a version number.
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
| -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* | -aros* \
+ | -aos* | -aros* | -cloudabi* | -sortix* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -bitrig* | -openbsd* | -solidbsd* \
+ | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* | -cegcc* \
+ | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -morphos* | -superux* | -rtmk* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
+ | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \
+ | -midnightbsd*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1402,12 +1407,12 @@
-nto*)
os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ -sim | -xray | -os68k* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* \
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
;;
-mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
+ os=`echo "$os" | sed -e 's|mac|macos|'`
;;
-linux-dietlibc)
os=-linux-dietlibc
@@ -1416,10 +1421,10 @@
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
-sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
;;
-sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
;;
-opened*)
os=-openedition
@@ -1430,12 +1435,6 @@
-wince*)
os=-wince
;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
-utek*)
os=-bsd
;;
@@ -1460,7 +1459,7 @@
-nova*)
os=-rtmk-nova
;;
- -ns2 )
+ -ns2)
os=-nextstep2
;;
-nsk*)
@@ -1482,7 +1481,7 @@
-oss*)
os=-sysv3
;;
- -svr4)
+ -svr4*)
os=-sysv4
;;
-svr3)
@@ -1497,32 +1496,38 @@
-ose*)
os=-ose
;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
os=-mint
;;
- -aros*)
- os=-aros
- ;;
-zvmoe)
os=-zvmoe
;;
-dicos*)
os=-dicos
;;
+ -pikeos*)
+ # Until real need of OS specific support for
+ # particular features comes up, bare metal
+ # configurations are quite functional.
+ case $basic_machine in
+ arm*)
+ os=-eabi
+ ;;
+ *)
+ os=-elf
+ ;;
+ esac
+ ;;
-nacl*)
;;
+ -ios)
+ ;;
-none)
;;
*)
# Get rid of the `-' at the beginning of $os.
os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
exit 1
;;
esac
@@ -1612,12 +1617,12 @@
sparc-* | *-sun)
os=-sunos4.1.1
;;
+ pru-*)
+ os=-elf
+ ;;
*-be)
os=-beos
;;
- *-haiku)
- os=-haiku
- ;;
*-ibm)
os=-aix
;;
@@ -1657,7 +1662,7 @@
m88k-omron*)
os=-luna
;;
- *-next )
+ *-next)
os=-nextstep
;;
*-sequent)
@@ -1672,9 +1677,6 @@
i370-*)
os=-mvs
;;
- *-next)
- os=-nextstep3
- ;;
*-gould)
os=-sysv
;;
@@ -1784,15 +1786,15 @@
vendor=stratus
;;
esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"`
;;
esac
-echo $basic_machine$os
+echo "$basic_machine$os"
exit
# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'write-file-functions 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
diff -Nru mednafen-1.24.3+dfsg/configure mednafen-1.26.1+dfsg/configure
--- mednafen-1.24.3+dfsg/configure 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/configure 2020-11-10 06:04:17.000000000 +0000
@@ -835,7 +835,6 @@
AMDEPBACKSLASH
AMDEP_FALSE
AMDEP_TRUE
-am__quote
am__include
DEPDIR
am__untar
@@ -898,6 +897,7 @@
docdir
oldincludedir
includedir
+runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -916,7 +916,8 @@
PACKAGE_TARNAME
PACKAGE_NAME
PATH_SEPARATOR
-SHELL'
+SHELL
+am__quote'
ac_subst_files=''
ac_user_opts='
enable_option_checking
@@ -1035,6 +1036,7 @@
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE}'
@@ -1287,6 +1289,15 @@
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst | --runs \
+ | --run | --ru | --r)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+ | --run=* | --ru=* | --r=*)
+ runstatedir=$ac_optarg ;;
+
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1424,7 +1435,7 @@
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
+ libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -1577,6 +1588,7 @@
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -4366,8 +4378,8 @@
#
# Avoid trailing and leading zeroes in the decimal version components to avoid confusing not-so-learned people.
#
-MEDNAFEN_VERSION='1.24.3'
-MEDNAFEN_VERSION_NUMERIC=0x00102403
+MEDNAFEN_VERSION='1.26.1'
+MEDNAFEN_VERSION_NUMERIC=0x00102601
# 0xJJJnnnRR
# Make sure we can run config.sub.
@@ -4441,7 +4453,7 @@
case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-am__api_version='1.14'
+am__api_version='1.16'
# Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
@@ -4630,7 +4642,7 @@
$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
case $am_aux_dir in
*\ * | *\ *)
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -4867,45 +4879,45 @@
ac_config_commands="$ac_config_commands depfiles"
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
+$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
+cat > confinc.mk << 'END'
am__doit:
- @echo this is the am__doit target
+ @echo this is the am__doit target >confinc.out
.PHONY: am__doit
END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
am__include="#"
am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
- am__include=include
- am__quote=
- _am_result=GNU
- ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
- am__include=.include
- am__quote="\""
- _am_result=BSD
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+ { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5
+ (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ case $?:`cat confinc.out 2>/dev/null` in #(
+ '0:this is the am__doit target') :
+ case $s in #(
+ BSD) :
+ am__include='.include' am__quote='"' ;; #(
+ *) :
+ am__include='include' am__quote='' ;;
+esac ;; #(
+ *) :
;;
- esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
+esac
+ if test "$am__include" != "#"; then
+ _am_result="yes ($s style)"
+ break
+ fi
+done
+rm -f confinc.* confmf.*
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
+$as_echo "${_am_result}" >&6; }
# Check whether --enable-dependency-tracking was given.
if test "${enable_dependency_tracking+set}" = set; then :
@@ -5018,12 +5030,12 @@
# For better backward compatibility. To be removed once Automake 1.9.x
# dies out for good. For more background, see:
-#
-#
+#
+#
mkdir_p='$(MKDIR_P)'
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
+# We need awk for the "check" target (and possibly the TAP driver). The
+# system "awk" is bad on some platforms.
# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AMTAR='$${TAR-tar}'
@@ -5198,7 +5210,7 @@
Aborting the configuration process, to ensure you take notice of the issue.
You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: .
+that behaves properly: .
If you want to complete the configuration process using your problematic
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
@@ -9830,6 +9842,8 @@
if (*(data + i) != *(data3 + i))
return 14;
close (fd);
+ free (data);
+ free (data3);
return 0;
}
_ACEOF
@@ -20821,7 +20835,7 @@
#
# INIT-COMMANDS
#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"
# Capture the value of obsolete ALL_LINGUAS because we need it to compute
# POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
# from automake < 1.5.
@@ -21487,29 +21501,35 @@
# Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting.
- case $CONFIG_FILES in
- *\'*) eval set x "$CONFIG_FILES" ;;
- *) set x $CONFIG_FILES ;;
- esac
+ # TODO: see whether this extra hack can be removed once we start
+ # requiring Autoconf 2.70 or later.
+ case $CONFIG_FILES in #(
+ *\'*) :
+ eval set x "$CONFIG_FILES" ;; #(
+ *) :
+ set x $CONFIG_FILES ;; #(
+ *) :
+ ;;
+esac
shift
- for mf
+ # Used to flag and report bootstrapping failures.
+ am_rc=0
+ for am_mf
do
# Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named 'Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # Grep'ing the whole file is not good either: AIX grep has a line
+ am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile which includes
+ # dependency-tracking related rules and includes.
+ # Grep'ing the whole file directly is not great: AIX grep has a line
# limit of 2048, but all sed's we know have understand at least 4000.
- if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
- dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$mf" : 'X\(//\)[^/]' \| \
- X"$mf" : 'X\(//\)$' \| \
- X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
+ sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+ || continue
+ am_dirpart=`$as_dirname -- "$am_mf" ||
+$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$am_mf" : 'X\(//\)[^/]' \| \
+ X"$am_mf" : 'X\(//\)$' \| \
+ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$am_mf" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -21527,53 +21547,48 @@
q
}
s/.*/./; q'`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running 'make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "$am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$file" : 'X\(//\)[^/]' \| \
- X"$file" : 'X\(//\)$' \| \
- X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
+ am_filepart=`$as_basename -- "$am_mf" ||
+$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$am_mf" : 'X\(//\)$' \| \
+ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$am_mf" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
}
- /^X\(\/\/\)$/{
+ /^X\/\(\/\/\)$/{
s//\1/
q
}
- /^X\(\/\).*/{
+ /^X\/\(\/\).*/{
s//\1/
q
}
s/.*/./; q'`
- as_dir=$dirpart/$fdir; as_fn_mkdir_p
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
+ { echo "$as_me:$LINENO: cd "$am_dirpart" \
+ && sed -e '/# am--include-marker/d' "$am_filepart" \
+ | $MAKE -f - am--depfiles" >&5
+ (cd "$am_dirpart" \
+ && sed -e '/# am--include-marker/d' "$am_filepart" \
+ | $MAKE -f - am--depfiles) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } || am_rc=$?
done
+ if test $am_rc -ne 0; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Something went wrong bootstrapping makefile fragments
+ for automatic dependency tracking. Try re-running configure with the
+ '--disable-dependency-tracking' option to at least be able to build
+ the package (albeit without support for automatic dependency tracking).
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ { am_dirpart=; unset am_dirpart;}
+ { am_filepart=; unset am_filepart;}
+ { am_mf=; unset am_mf;}
+ { am_rc=; unset am_rc;}
+ rm -f conftest-deps.mk
}
;;
"po-directories":C)
diff -Nru mednafen-1.24.3+dfsg/configure.ac mednafen-1.26.1+dfsg/configure.ac
--- mednafen-1.24.3+dfsg/configure.ac 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/configure.ac 2020-11-10 06:04:17.000000000 +0000
@@ -6,8 +6,8 @@
#
# Avoid trailing and leading zeroes in the decimal version components to avoid confusing not-so-learned people.
#
-MEDNAFEN_VERSION='1.24.3'
-MEDNAFEN_VERSION_NUMERIC=0x00102403
+MEDNAFEN_VERSION='1.26.1'
+MEDNAFEN_VERSION_NUMERIC=0x00102601
# 0xJJJnnnRR
AC_CANONICAL_HOST
diff -Nru mednafen-1.24.3+dfsg/debian/changelog mednafen-1.26.1+dfsg/debian/changelog
--- mednafen-1.24.3+dfsg/debian/changelog 2020-05-09 18:03:27.000000000 +0000
+++ mednafen-1.26.1+dfsg/debian/changelog 2020-11-11 20:03:05.000000000 +0000
@@ -1,3 +1,12 @@
+mednafen (1.26.1+dfsg-1) unstable; urgency=medium
+
+ * New upstream release.
+ * Fix some ordering issues in debian/copyright.
+ * Remove obsolete Lintian overrides.
+ * Switch to debhelper compatibility level 13.
+
+ -- Stephen Kitt Wed, 11 Nov 2020 21:03:05 +0100
+
mednafen (1.24.3+dfsg-1) unstable; urgency=medium
* New upstream release.
diff -Nru mednafen-1.24.3+dfsg/debian/control mednafen-1.26.1+dfsg/debian/control
--- mednafen-1.24.3+dfsg/debian/control 2020-05-09 17:59:07.000000000 +0000
+++ mednafen-1.26.1+dfsg/debian/control 2020-11-11 16:47:32.000000000 +0000
@@ -3,7 +3,7 @@
Uploaders: Stephen Kitt
Section: games
Priority: optional
-Build-Depends: debhelper-compat (= 12),
+Build-Depends: debhelper-compat (= 13),
libasound2-dev [linux-any],
libgl1-mesa-dev | libgl-dev,
libjack-dev,
diff -Nru mednafen-1.24.3+dfsg/debian/copyright mednafen-1.26.1+dfsg/debian/copyright
--- mednafen-1.24.3+dfsg/debian/copyright 2020-03-18 12:49:07.000000000 +0000
+++ mednafen-1.26.1+dfsg/debian/copyright 2020-11-11 11:33:27.000000000 +0000
@@ -57,6 +57,16 @@
Copyright: 1999-2004 Buschmann/Klemm/Piecha/Wolf
License: LGPL-2.1+
+Files:
+ src/nes/*
+ src/pce_fast/huc6280_ops.inc
+Comment: FCE Ultra
+Copyright: 1998 BERO
+ 2002 Xodnizel
+ 2002 Paul Kuliniewicz
+ 2003 CaH4e3
+License: GPL-2+
+
Files: src/tremor/*
Comment: Tremor
Copyright: 2002 Xiph.org Foundation
@@ -167,16 +177,6 @@
Copyright: 2005-2012 Stanislav Shwartsman
License: LGPL-2+
-Files:
- src/nes/*
- src/pce_fast/huc6280_ops.inc
-Comment: FCE Ultra
-Copyright: 1998 BERO
- 2002 Xodnizel
- 2002 Paul Kuliniewicz
- 2003 CaH4e3
-License: GPL-2+
-
Files: src/quicklz/*
Comment: QuickLZ
Copyright: 2006-2008 Lasse Mikkel Reinhold
diff -Nru mednafen-1.24.3+dfsg/debian/source/lintian-overrides mednafen-1.26.1+dfsg/debian/source/lintian-overrides
--- mednafen-1.24.3+dfsg/debian/source/lintian-overrides 2019-06-13 06:36:52.000000000 +0000
+++ mednafen-1.26.1+dfsg/debian/source/lintian-overrides 1970-01-01 00:00:00.000000000 +0000
@@ -1,3 +0,0 @@
-# False positives for GPL-2 / GPL-2+ / GPL-1 or GPL-2 licenses (#801182)
-mednafen source: dep5-copyright-license-name-not-unique (paragraph at line 380)
-mednafen source: missing-license-paragraph-in-dep5-copyright gpl-2 (paragraph at line 323)
diff -Nru mednafen-1.24.3+dfsg/depcomp mednafen-1.26.1+dfsg/depcomp
--- mednafen-1.24.3+dfsg/depcomp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/depcomp 2020-11-10 06:04:17.000000000 +0000
@@ -1,9 +1,9 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2013-05-30.07; # UTC
+scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# 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
@@ -16,7 +16,7 @@
# 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, see .
+# along with this program. If not, see .
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -783,9 +783,9 @@
# Local Variables:
# mode: shell-script
# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
diff -Nru mednafen-1.24.3+dfsg/Documentation/apple2.html mednafen-1.26.1+dfsg/Documentation/apple2.html
--- mednafen-1.24.3+dfsg/Documentation/apple2.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/apple2.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Apple II/II+ Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/cdplay.html mednafen-1.26.1+dfsg/Documentation/cdplay.html
--- mednafen-1.24.3+dfsg/Documentation/cdplay.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/cdplay.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Sega Saturn Sound Format Player Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/docgen.inc mednafen-1.26.1+dfsg/Documentation/docgen.inc
--- mednafen-1.24.3+dfsg/Documentation/docgen.inc 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/docgen.inc 2020-11-10 06:04:17.000000000 +0000
@@ -369,6 +369,7 @@
echo('' . htmlspecialchars($db['fullname']) . ':' . ' | ');
echo('Purpose: | ');
echo('');
+ echo("\n");
foreach($db['entries'] as $gdbe)
{
@@ -377,10 +378,11 @@
if($gdbe['idishash'])
echo('' . htmlspecialchars($gdbe['id']) . ' | ');
else
- echo('' . htmlspecialchars($gdbe['id']) . ' | ');
+ echo('' . str_replace("\n", " ", htmlspecialchars($gdbe['id'])) . ' | ');
echo('' . htmlspecialchars($gdbe['setting']) . ' | ');
echo('' . htmlspecialchars($gdbe['purpose']) . ' | ');
echo('');
+ echo("\n");
}
echo('');
@@ -435,6 +437,9 @@
$type = $setting['type'];
$flags = $setting['flags'];
+ if(strpos($flags, "MDFNSF_SUPPRESS_DOC") !== FALSE)
+ continue;
+
if($curmod == "")
{
$should_continue = 0;
@@ -488,9 +493,6 @@
continue;
}
- if(strpos($flags, "MDFNSF_SUPPRESS_DOC") !== FALSE)
- continue;
-
if($display_ct != spis($flags, "MDFNSF_COMMON_TEMPLATE"))
continue;
diff -Nru mednafen-1.24.3+dfsg/Documentation/gba.html mednafen-1.26.1+dfsg/Documentation/gba.html
--- mednafen-1.24.3+dfsg/Documentation/gba.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/gba.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Game Boy Advance Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/gb.html mednafen-1.26.1+dfsg/Documentation/gb.html
--- mednafen-1.24.3+dfsg/Documentation/gb.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/gb.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Game Boy (Color) Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/gg.html mednafen-1.26.1+dfsg/Documentation/gg.html
--- mednafen-1.24.3+dfsg/Documentation/gg.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/gg.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Sega Game Gear Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/lynx.html mednafen-1.26.1+dfsg/Documentation/lynx.html
--- mednafen-1.24.3+dfsg/Documentation/lynx.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/lynx.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Atari Lynx Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/md.html mednafen-1.26.1+dfsg/Documentation/md.html
--- mednafen-1.24.3+dfsg/Documentation/md.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/md.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Sega Genesis/MegaDrive Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/mednafen.html mednafen-1.26.1+dfsg/Documentation/mednafen.html
--- mednafen-1.24.3+dfsg/Documentation/mednafen.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/mednafen.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
General Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/modules.def mednafen-1.26.1+dfsg/Documentation/modules.def
--- mednafen-1.24.3+dfsg/Documentation/modules.def 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/modules.def 2020-11-10 06:04:17.000000000 +0000
@@ -1,4 +1,4 @@
-1.24.3
+1.26.1
apple2
Apple II/II+
250
@@ -356,7 +356,7 @@
0
1MiB Extended RAM
Required by \"Groove on Fight\" demo.
-Super Real Mahjong P7 (Japan) (TODO: Test)
+Super Real Mahjong P7 (Japan)
T-16509G
0
1MiB Extended RAM
@@ -453,8 +453,8 @@
Allows saving replay data.
cachemode
Cache Mode
-This database is used to automatically select cache emulation mode, to fix various logic and timing issues in games. The default cache mode is data-only(with no high-level bypass).\n\nThe cache mode \"Data-only, with high-level bypass\" is a hack of sorts, to work around cache coherency bugs in games. These bugs are typically masked on a real Saturn due to the effects of instruction fetches on the cache, but become a problem when only data caching is emulated.\n\nFull cache emulation is not enabled globally due to the large increase in host CPU usage, along with the potential of causing games that fully utilize both SH-2 CPUs to run significantly slower than they should due to inadequate emulation of bus sharing/contention.
-54
+This database is used to automatically select cache emulation mode, to fix various logic and timing issues in games. The default cache mode is data-only(with no high-level bypass).\n\nThe cache mode \"Data-only, with high-level bypass\" is a hack of sorts, to work around cache coherency bugs in games. These bugs are typically masked on a real Saturn due to the effects of instruction fetches on the cache, but become a problem when only data caching is emulated.\n\nFull cache emulation is not enabled globally primarily due to the large increase in host CPU usage.
+92
Area 51 (USA)
T-9705H
0
@@ -475,6 +475,11 @@
0
Data only, with high-level bypass
Fixes graphical glitches.
+Doraemon - Nobita to Fukkatsu no Hoshi (Japan)
+T-19801G
+0
+Data only, with high-level bypass
+Fixes blank Game Over screen.
Dragon Force II (Japan)
GS-9184
0
@@ -520,6 +525,21 @@
0
Data only, with high-level bypass
Fixes game crash when going to the world map.
+Mahjong Doukyuusei Special (Japan)
+T-25302G1
+0
+Data only, with high-level bypass
+Fixes missing background layer on disc 2.
+Mahjong Doukyuusei Special (Japan)
+T-25302G2
+0
+Data only, with high-level bypass
+Fixes missing background layer on disc 2.
+Mujintou Monogatari R - Futari no Love Love Island (Japan)
+T-28901G
+0
+Data only, with high-level bypass
+Fixes glitches when character graphics change.
Ronde (Japan)
T-14415G
0
@@ -534,7 +554,7 @@
610680501
0
Data only, with high-level bypass
-
+Fixes graphical glitch on the character select screen in the \"Zero Divide\" demo.
Shunsai (Japan)
T-18703G
0
@@ -570,21 +590,26 @@
0
Data only, with high-level bypass
Fixes hang during FMV.
-Thunder Force Gold Pack 1 (Japan)
-T-1807G
-0
-Data only, with high-level bypass
-Fixes explosion graphic glitches in \"Thunder Force III\".
Thunder Force Gold Pack 2 (Japan)
T-1808G
0
Data only, with high-level bypass
Fixes hang when pausing the game under certain conditions in \"Thunder Force AC\".
-Virtua Fighter Kids (Java Tea Original)
-GS-9113
+Virtua Fighter Kids (Japan/Europe)
+GS-9079\nVF. KIDS
+0
+Data only, with high-level bypass
+Fixes FMV glitches.
+Virtua Fighter Kids (Korea/Java Tea Original)
+GS-9113\nVF. KIDS
+0
+Data only, with high-level bypass
+Fixes FMV glitches and/or malfunction of computer-controlled player.
+Virtua Fighter Kids (USA)
+MK-81049\nVF. KIDS
0
Data only, with high-level bypass
-Fixes malfunction of computer-controlled player.
+Fixes FMV glitches.
Virtual Mahjong (Japan)
T-2206G
0
@@ -620,6 +645,21 @@
0
Data only, with high-level bypass
Fixes severe gameplay logic glitches.
+Zero Divide - The Final Conflict (Japan)
+T-31601G
+0
+Data only, with high-level bypass
+Fixes graphical glitch on the character select screen.
+3D Baseball (USA)
+T-15906H
+0
+Full
+Fixes minor FMV glitches.
+3D Baseball - The Majors (Japan)
+T-18003G
+0
+Full
+Fixes minor FMV glitches.
Albert Odyssey (Japan)
T-1507G
0
@@ -630,6 +670,31 @@
0
Full
Fixes battle text truncation.
+Corpse Killer (USA)
+T-16201H
+0
+Full
+Fixes glitchy rotation-zoom effect.
+Crow, The (USA)
+T-8124H
+0
+Full
+Fixes minor FMV glitches.
+Crow, The (Europe)
+T-8124H-50
+0
+Full
+Fixes minor FMV glitches.
+Crow, The (Germany)
+T-8124H-18
+0
+Full
+Fixes minor FMV glitches.
+Dark Seed II (Japan)
+T-36101G
+0
+Full
+Fixes game hang.
Die Hard Trilogy (Japan)
GS-9123
0
@@ -640,11 +705,6 @@
0
Full
Fixes game hang.
-Digital Monster Version S (Japan)
-T-13331G
-0
-Full
-Fixes game hang.
GeGeGe no Kitarou (Japan)
T-13310G
0
@@ -665,11 +725,61 @@
0
Full
Fixes minor FMV glitches.
+Horror Tour (Japan)
+T-24301G
+0
+Full
+Fixes graphical glitches on the save and load screens.
+Irem Arcade Classics (Japan)
+T-22403G
+0
+Full
+Fixes hang when trying to start \"Zippy Race\".
+Kidou Senkan Nadesico - Yappari Saigo wa Ai ga Katsu
+GS-9142
+0
+Full
+Fixes game hang.
+The Lost World - Jurassic Park (Japan)
+GS-9162
+0
+Full
+Fixes most graphical glitches in rock faces.
+The Lost World - Jurassic Park (Europe/USA)
+MK-81065
+0
+Full
+Fixes most graphical glitches in rock faces.
Lunar - Silver Star Story (Japan)
T-27901G
0
Full
-Fixes FMV flickering with alternative BIOS.
+Fixes FMV flickering.
+NBA Action (USA)
+MK-81103
+0
+Full
+Fixes minor FMV glitches.
+NBA Action (Europe)
+MK81103-50
+0
+Full
+Fixes minor FMV glitches.
+NFL Quarterback Club 96 (Japan)
+T-8105G
+0
+Full
+Fixes minor FMV glitches.
+NFL Quarterback Club 96 (USA)
+T-8109H
+0
+Full
+Fixes minor FMV glitches.
+NFL Quarterback Club 96 (Europe)
+T-8109H-50
+0
+Full
+Fixes minor FMV glitches.
Nobunaga no Yabou Shouseiroku (Japan)
T-7664G
0
@@ -685,6 +795,16 @@
0
Full
Fixes game hang.
+Senken Kigyouden (Japan)
+T-37401G
+0
+Full
+Fixes dialogue text truncation.
+Xian Jian Qi Xia Zhuan (Taiwan)
+T-37401H
+0
+Full
+Fixes dialogue text truncation.
Slam 'n Jam 96 (Japan)
T-159056
0
@@ -715,6 +835,71 @@
0
Full
Fixes game crash.
+Thunder Force Gold Pack 1 (Japan)
+T-1807G
+0
+Full
+Fixes explosion graphic glitches in \"Thunder Force III\".
+Titan Wars (Japan)
+T-15903G
+0
+Full
+Fixes minor FMV glitches.
+Solar Eclipse (USA)
+T-15911H
+0
+Full
+Fixes minor FMV glitches.
+Titan Wars (Europe)
+T-15911H50
+0
+Full
+Fixes minor FMV glitches.
+Virtua Cop (Europe)
+MK-81015\n\nE
+0
+Full
+Fixes game hang.
+Virtua Cop 2 (Europe)
+MK-81043\n\nE
+0
+Full
+Fixes game hang.
+Virtua Fighter (Japan)
+GS-9001
+0
+Full
+Fixes graphical glitches.
+Virtua Fighter (USA)
+MK-81005
+0
+Full
+Fixes graphical glitches.
+Virtua Fighter (Europe)
+MK_8100550
+0
+Full
+Fixes graphical glitches.
+Virtua Fighter Remix (Japan)
+GS-9039
+0
+Full
+Fixes graphical glitches.
+Virtua Fighter Remix (USA)
+MK-81023
+0
+Full
+Fixes graphical glitches.
+Virtua Fighter Remix (Europe)
+MK-8102350
+0
+Full
+Fixes graphical glitches.
+Virtua Fighter Remix (SegaNet)
+SG-7103
+0
+Full
+Fixes graphical glitches.
Whizz (Japan)
T-36102G
0
@@ -725,10 +910,15 @@
0
Full
Fixes quasi-random hangs during startup.
+Yu-No (Japan)
+T-28004G
+0
+Full
+Fixes FMV ending too soon.
horriblehacks
Horrible Hacks
-This database is used to automatically enable various horrible hacks to fix issues in certain games.\n\nNote that slowing down VDP1 command execution due to SH-2 CPU reads/writes isn't a horrible hack per-se, but it's activated on a per-game basis to avoid the likelihood of breaking some games due to overall Saturn emulation timing inaccuracies.
-18
+This database is used to automatically enable various horrible hacks to fix issues in certain games.\n\nNote that slowing down VDP1 command execution due to SH-2 reads/writes isn't a horrible hack per-se, but it's activated on a per-game basis to avoid the likelihood of breaking some games due to overall Saturn emulation timing inaccuracies.
+30
Fighters Megamix (Japan)
GS-9126
0
@@ -739,11 +929,6 @@
0
Disable slowing down of SH-2 CPU reads/writes during SH-2 DMA.
Fixes hang after watching or aborting FMV playback.
-Irem Arcade Classics (Japan)
-T-22403G
-0
-Disable slowing down of SH-2 CPU reads/writes during SH-2 DMA.
-Fixes hang when trying to start \"Zippy Race\".
Grandia (Japan)
T-4507G
0
@@ -752,63 +937,128 @@
Albert Odyssey (Japan)
T-1507G
0
-SH-2 CPU reads/writes from/to VDP1 slow down command execution.
+SH-2 reads/writes from/to VDP1 slow down command execution.
Partially fixes battle text truncation.
Albert Odyssey (USA)
T-12705H
0
-SH-2 CPU reads/writes from/to VDP1 slow down command execution.
+SH-2 reads/writes from/to VDP1 slow down command execution.
Partially fixes battle text truncation.
All-Star Baseball 97 (USA)
T-8150H
0
-SH-2 CPU reads/writes from/to VDP1 slow down command execution.
+SH-2 reads/writes from/to VDP1 slow down command execution.
Fixes texture glitches.
Arcade's Greatest Hits (USA)
T-9703H
0
-SH-2 CPU reads/writes from/to VDP1 slow down command execution.
+SH-2 reads/writes from/to VDP1 slow down command execution.
Fixes flickering credits text.
Arcade's Greatest Hits - Atari Collection 1 (USA)
T-9706H
0
-SH-2 CPU reads/writes from/to VDP1 slow down command execution.
+SH-2 reads/writes from/to VDP1 slow down command execution.
Fixes flickering credits text.
Burning Rangers Taikenban (Japan)
6106856
0
-SH-2 CPU reads/writes from/to VDP1 slow down command execution.
+SH-2 reads/writes from/to VDP1 slow down command execution.
Fixes flickering rescue text.
Burning Rangers (Japan)
GS-9174
0
-SH-2 CPU reads/writes from/to VDP1 slow down command execution.
+SH-2 reads/writes from/to VDP1 slow down command execution.
Fixes flickering rescue text.
Burning Rangers (Europe/USA)
MK-81803
0
-SH-2 CPU reads/writes from/to VDP1 slow down command execution.
+SH-2 reads/writes from/to VDP1 slow down command execution.
Fixes flickering rescue text.
+Falcom Classics II (Japan)
+T-31505G
+0
+SH-2 reads/writes from/to VDP1 slow down command execution.
+Fixes FMV tearing in \"Ys II\".
Frank Thomas Big Hurt Baseball (Japan)
T-8111G
0
-SH-2 CPU reads/writes from/to VDP1 slow down command execution.
+SH-2 reads/writes from/to VDP1 slow down command execution.
Reduces graphical glitches.
Frank Thomas Big Hurt Baseball (USA)
T-8138H
0
-SH-2 CPU reads/writes from/to VDP1 slow down command execution.
+SH-2 reads/writes from/to VDP1 slow down command execution.
Reduces graphical glitches.
+Tokimeki Memorial - Forever with You (Japan)
+T-9504G
+0
+SH-2 reads/writes from/to VDP1 slow down command execution.
+Fixes glitchy frames on the Konami intro arm sprite.
+Kaitei Daisensou (Japan)
+T-15006G
+0
+SH-2 reads/writes from/to VDP1 slow down command execution.
+Fixes FMV tearing.
+In The Hunt (Europe/USA)
+T-10001G
+0
+SH-2 reads/writes from/to VDP1 slow down command execution.
+Fixes FMV tearing.
+Virtua Fighter (Japan)
+GS-9001
+0
+SH-2 reads/writes from/to VDP1 slow down command execution.
+Fixes graphical glitches.
+Virtua Fighter (USA)
+MK-81005
+0
+SH-2 reads/writes from/to VDP1 slow down command execution.
+Fixes graphical glitches.
+Virtua Fighter (Europe)
+MK_8100550
+0
+SH-2 reads/writes from/to VDP1 slow down command execution.
+Fixes graphical glitches.
+Virtua Fighter Remix (Japan)
+GS-9039
+0
+SH-2 reads/writes from/to VDP1 slow down command execution.
+Fixes graphical glitches.
+Virtua Fighter Remix (USA)
+MK-81023
+0
+SH-2 reads/writes from/to VDP1 slow down command execution.
+Fixes graphical glitches.
+Virtua Fighter Remix (Europe)
+MK-8102350
+0
+SH-2 reads/writes from/to VDP1 slow down command execution.
+Fixes graphical glitches.
+Virtua Fighter Remix (SegaNet)
+SG-7103
+0
+SH-2 reads/writes from/to VDP1 slow down command execution.
+Fixes graphical glitches.
Whizz (Japan)
T-36102G
0
-SH-2 CPU reads/writes from/to VDP1 slow down command execution.
+SH-2 reads/writes from/to VDP1 slow down command execution.
Fixes major graphical issues during gameplay.
Whizz (Europe)
T-9515H-50
0
-SH-2 CPU reads/writes from/to VDP1 slow down command execution.
+SH-2 reads/writes from/to VDP1 slow down command execution.
Fixes major graphical issues during gameplay.
+Wolf Fang SS - Kuuga 2001 (Japan)
+T-26105G
+0
+SH-2 reads/writes from/to VDP1 slow down command execution.
+Fixes graphical glitches.
+Yu-No (Japan)
+T-28004G
+0
+SH-2 reads/writes from/to VDP1 slow down command execution.
+Reduces FMV tearing.
Thunderhawk II (Japan)
T-6006G
0
diff -Nru mednafen-1.24.3+dfsg/Documentation/nes.html mednafen-1.26.1+dfsg/Documentation/nes.html
--- mednafen-1.24.3+dfsg/Documentation/nes.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/nes.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Nintendo Entertainment System/Famicom Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/netplay.html mednafen-1.26.1+dfsg/Documentation/netplay.html
--- mednafen-1.24.3+dfsg/Documentation/netplay.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/netplay.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Netplay Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/ngp.html mednafen-1.26.1+dfsg/Documentation/ngp.html
--- mednafen-1.24.3+dfsg/Documentation/ngp.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/ngp.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Neo Geo Pocket (Color) Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/pce_fast.html mednafen-1.26.1+dfsg/Documentation/pce_fast.html
--- mednafen-1.24.3+dfsg/Documentation/pce_fast.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/pce_fast.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
PC Engine (CD)/TurboGrafx 16 (CD)/SuperGrafx Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/pce.html mednafen-1.26.1+dfsg/Documentation/pce.html
--- mednafen-1.24.3+dfsg/Documentation/pce.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/pce.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
PC Engine/TurboGrafx 16 (CD)/SuperGrafx Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/pcfx.html mednafen-1.26.1+dfsg/Documentation/pcfx.html
--- mednafen-1.24.3+dfsg/Documentation/pcfx.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/pcfx.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
PC-FX Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/psx.html mednafen-1.26.1+dfsg/Documentation/psx.html
--- mednafen-1.24.3+dfsg/Documentation/psx.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/psx.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Sony PlayStation Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/settings.def mednafen-1.26.1+dfsg/Documentation/settings.def
--- mednafen-1.24.3+dfsg/Documentation/settings.def 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/settings.def 2020-11-10 06:04:17.000000000 +0000
@@ -99,7 +99,7 @@
0
apple2.input.keyboard.twopiece.7
MDFNSF_CAT_INPUT_MAPPING MDFNSF_SUPPRESS_DOC
-apple2, Keyboard, Apple II/II+ 2-piece keyboard: 7\'
+apple2, Keyboard, Apple II/II+ 2-piece keyboard: 7
MDFNST_STRING
keyboard 0x0 36
diff -Nru mednafen-1.24.3+dfsg/Documentation/sms.html mednafen-1.26.1+dfsg/Documentation/sms.html
--- mednafen-1.24.3+dfsg/Documentation/sms.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/sms.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Sega Master System Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/snes_faust.html mednafen-1.26.1+dfsg/Documentation/snes_faust.html
--- mednafen-1.24.3+dfsg/Documentation/snes_faust.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/snes_faust.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Super Nintendo Entertainment System/Super Famicom Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/snes.html mednafen-1.26.1+dfsg/Documentation/snes.html
--- mednafen-1.24.3+dfsg/Documentation/snes.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/snes.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Super Nintendo Entertainment System/Super Famicom Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/ssfplay.html mednafen-1.26.1+dfsg/Documentation/ssfplay.html
--- mednafen-1.24.3+dfsg/Documentation/ssfplay.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/ssfplay.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Sega Saturn Sound Format Player Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/ss.html mednafen-1.26.1+dfsg/Documentation/ss.html
--- mednafen-1.24.3+dfsg/Documentation/ss.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/ss.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Sega Saturn Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
@@ -35,6 +35,11 @@
A list of known emulation bugs(with workarounds in some cases) in Saturn games with Mednafen is available at https://forum.fobby.net/index.php?t=msg&th=1357
+
+Mednafen's Sega Saturn emulation should not be used in lieu of a Sega Saturn for authoritative game performance/FPS review purposes. The emulation will generally
+run Saturn games with less slowdown than on a real Saturn, even when more accurate emulation modes are enabled via internal databases.
+
+
Place the correct BIOS image files in the correct location.
@@ -97,7 +102,196 @@
-This database is used in conjunction with a game's internal header and the "ss.region_default" setting to automatically select the region of Saturn to emulate when the "ss.region_autodetect" setting is set to "1", the default.Preview Sega Saturn Vol. 1 (Europe) | 10 8f e1 af 55 5a 95 42 04 85 7e 98 8c 53 6a 31 | Europe | |
Primal Rage (Europe) | ed 4c 0b 87 35 37 86 76 a0 f6 32 c6 a4 c3 99 88 | Europe | |
Race Drivin' (Japan) | 15 fc 3a 82 16 a9 85 a5 a8 ad 30 af 9a ff 03 a9 | Japan | |
Riven - A Sequencia de Myst (Brazil) (Disc 1) | e1 dd fd a1 8b 47 02 21 36 1e 5a ae 20 c0 59 9f | Brazil | |
Riven - A Sequencia de Myst (Brazil) (Disc 2) | bf 5f f8 5f f2 0c 35 f6 c9 8d 03 bc 34 d9 da 7f | Brazil | |
Riven - A Sequencia de Myst (Brazil) (Disc 3) | 98 b6 6e 09 e6 dc 30 e6 55 db 85 01 33 0c 0b 9c | Brazil | |
Riven - A Sequencia de Myst (Brazil) (Disc 4) | a2 34 b0 b9 aa 47 74 1f d4 1e 35 da 3d e7 4d e3 | Brazil | |
Sega International Victory Goal (Japan) | f7 e9 23 0a 9e 92 f1 93 16 43 f8 6c e8 21 50 66 | Japan | |
Virtua Racing (Europe) | 64 75 25 0c a1 9b 6c 5e 4e a0 6d 69 d9 0f 32 ca | Europe | |
Virtua Racing (Japan) | 0d e3 fa fb 2b b9 6d 79 e0 3a b7 6d cc bf b0 2c | Japan | |
WWF WrestleMania - The Arcade Game (Europe) (Demo) | 73 91 4b e1 ad 4d af 69 c3 eb b8 43 ee 3e b5 09 | Europe | |
Winter Heat (Europe) (Demo) | 6b 29 33 fc dd ad 8e 0d 95 81 a6 ee fd 90 4b 43 | Europe | |
This database is used to automatically select the type of cart to emulate when the "ss.cart" setting is set to "auto", the default. If a game is not found in the database when auto selection is enabled, then the cart used is specified by the "ss.cart.auto_default" setting, default "backup"(a backup memory cart).Astra Superstars (Japan) | T-1521G | 1MiB Extended RAM | |
Cotton 2 (Japan) | T-9904G | 1MiB Extended RAM | |
Cyberbots (Japan) | T-1217G | 1MiB Extended RAM | |
Daytona USA CCE Net Link Edition | MK-81218 | None | Reserved for future modem support. |
Dennou Senki Virtual On (SegaNet) | GS-7106 | None | Reserved for future modem support. |
Dezaemon 2 (Japan) | T-16804G | Backup Memory | Allows saving. |
Die Hard Trilogy (Europe/USA) | T-16103H | Backup Memory | Game will crash when running with a RAM expansion cart. |
Die Hard Trilogy (Japan) | GS-9123 | Backup Memory | Game will crash when running with a RAM expansion cart. |
Dragon's Dream (Japan) | GS-7114 | None | Reserved for future modem support. |
Duke Nukem 3D | MK-81071 | None | Reserved for future modem support. |
Dungeons and Dragons Collection (Japan) | T-1245G | 4MiB Extended RAM | Game requirement("Shadow over Mystara"). |
Fighter's History Dynamite (Japan) | GS-9107 | 1MiB Extended RAM | Game requirement. |
Final Fight Revenge (Japan) | T-1248G | 4MiB Extended RAM | Game requirement. |
Friends (Japan) | T-20109G | 1MiB Extended RAM | |
Groove on Fight (Japan) | T-14411G | 1MiB Extended RAM | Game requirement. |
Habitat II (Japan) | GS-7105 | None | Reserved for future modem support. |
Heart of Darkness (Prototype) | 4a f9 ff 30 ea 54 fe 3a 79 a7 68 69 ae de 55 bb | 16MiB A-bus CS1 RAM | Game requirement(though it's probable the original dev cart was only around 6 to 8MiB). |
Heart of Darkness (Prototype) | f1 71 c3 e4 69 d5 99 93 94 09 05 fc 29 d3 8a 59 | 16MiB A-bus CS1 RAM | Game requirement(though it's probable the original dev cart was only around 6 to 8MiB). |
King of Fighters '95, The (Europe) | MK-81088 | King of Fighters 95 ROM | Game requirement. |
King of Fighters '95, The (Japan) | T-3101G | King of Fighters 95 ROM | Game requirement. |
Kouryuu Sangoku Engi (Japan) | T-26104G | Backup Memory | |
Marvel Super Heroes (Europe) | T-7032H-50 | 1MiB Extended RAM | |
Marvel Super Heroes (Japan) | T-1215G | 1MiB Extended RAM | |
Marvel Super Heroes vs. Street Fighter (Japan) | T-1238G | 4MiB Extended RAM | Game requirement. |
Metal Slug (Japan) | T-3111G | 1MiB Extended RAM | Game requirement. |
NOël 3 (Japan) | T-22205G | 1MiB Extended RAM | |
Pad Nifty (Japan) | GS-7101 | None | Reserved for future modem support. |
Pia Carrot e Youkoso!! 2 (Japan) | T-20114G | 1MiB Extended RAM | |
PlanetWeb Browser (multiple versions) | T-319-01H | None | Reserved for future modem support. |
Pocket Fighter (Japan) | T-1230G | 4MiB Extended RAM | |
Puzzle Bobble 3 (SegaNet) | GS-7113 | None | Reserved for future modem support. |
Real Bout Garou Densetsu (Japan) | T-3105G | 1MiB Extended RAM | Game requirement. |
Real Bout Garou Densetsu Special (Japan) | T-3119G | 1MiB Extended RAM | Game requirement. |
Samurai Spirits - Amakusa Kourin (Japan) | T-3116G | 1MiB Extended RAM | Game requirement. |
Samurai Spirits - Zankurou Musouken (Japan) | T-3104G | 1MiB Extended RAM | Game requirement. |
Saturn Bomberman | MK-81070 | None | Reserved for future modem support. |
Saturn Bomberman (SegaNet) | T-14305G | None | Reserved for future modem support. |
Sega Ages - Galaxy Force II | GS-9197 | Backup Memory | Allows saving replay data. |
Sega Rally Championship Plus NetLink Edition | MK-81215 | None | Reserved for future modem support. |
SegaSaturn Internet Vol. 1 (Japan) | T-31301G | None | Reserved for future modem support. |
Street Fighter Zero 3 (Japan) | T-1246G | 4MiB Extended RAM | Game requirement. |
Super Real Mahjong P7 (Japan) | T-16510G | 1MiB Extended RAM | |
Super Real Mahjong P7 (Japan) (TODO: Test) | T-16509G | 1MiB Extended RAM | |
Tech Saturn 1997.6 (Japan) | 610636008 | 1MiB Extended RAM | Required by "Groove on Fight" demo. |
The King of Fighters '96 (Japan) | T-3108G | 1MiB Extended RAM | Game requirement. |
The King of Fighters '97 (Japan) | T-3121G | 1MiB Extended RAM | Game requirement. |
Ultraman - Hikari no Kyojin Densetsu (Japan) | T-13308G | Ultraman ROM | Game requirement. |
Vampire Savior (Japan) | T-1229G | 4MiB Extended RAM | Game requirement. |
Virtual On NetLink Edition | MK-81072 | None | Reserved for future modem support. |
Waku Waku 7 (Japan) | T-1515G | 1MiB Extended RAM | Game requirement. |
X-Men vs. Street Fighter (Japan) | T-1226G | 4MiB Extended RAM | Game requirement. |
This database is used to automatically select cache emulation mode, to fix various logic and timing issues in games. The default cache mode is data-only(with no high-level bypass).
The cache mode "Data-only, with high-level bypass" is a hack of sorts, to work around cache coherency bugs in games. These bugs are typically masked on a real Saturn due to the effects of instruction fetches on the cache, but become a problem when only data caching is emulated.
Full cache emulation is not enabled globally due to the large increase in host CPU usage, along with the potential of causing games that fully utilize both SH-2 CPUs to run significantly slower than they should due to inadequate emulation of bus sharing/contention.Albert Odyssey (Japan) | T-1507G | Full | |
Albert Odyssey (USA) | T-12705H | Full | Fixes battle text truncation. |
Area 51 (Europe) | T-25408H | Data only, with high-level bypass | Fixes game hang. |
Area 51 (USA) | T-9705H | Data only, with high-level bypass | Fixes game hang. |
Clockwork Knight 2 (USA) | MK-81036 | Data only, with high-level bypass | Fixes game hang that occurred when some FMVs were played. |
DeJig - Lassen Art Collection (Japan) | T-30304G | Data only, with high-level bypass | Fixes graphical glitches. |
Die Hard Trilogy (Europe/USA) | T-16103H | Full | Fixes game hang. |
Die Hard Trilogy (Japan) | GS-9123 | Full | Fixes game hang. |
Digital Monster Version S (Japan) | T-13331G | Full | Fixes game hang. |
Dragon Force II (Japan) | GS-9184 | Data only, with high-level bypass | Fixes math and game logic errors during battles. |
Father Christmas (Japan) | T-18504G | Data only, with high-level bypass | Fixes stuck music and voice acting. |
Fighting Vipers (Europe/USA) | MK-81041 | Data only, with high-level bypass | Fixes computer-controlled opponent turning into a ghost statue. |
Fighting Vipers (Japan) | GS-9101 | Data only, with high-level bypass | Fixes computer-controlled opponent turning into a ghost statue. |
Formula Grand Prix - Team Unei Simulation (Japan) | T-7309G | Data only, with high-level bypass | Fixes game hang. |
GeGeGe no Kitarou (Japan) | T-13310G | Full | Fixes game hang. |
Gex (Europe) | T-15904H50 | Full | Fixes minor FMV glitches. |
Gex (Japan) | T-15904G | Full | Fixes minor FMV glitches. |
Gex (USA) | T-15904H | Full | Fixes minor FMV glitches. |
Golden Axe - The Duel (Europe/USA) | MK-81045 | Data only, with high-level bypass | Fixes flickering title screen. |
Golden Axe - The Duel (Japan) | GS-9041 | Data only, with high-level bypass | Fixes flickering title screen. |
Hideo Nomo World Series Baseball (Japan) | GS-9061 | Data only, with high-level bypass | Fixes severe gameplay logic glitches. |
House of the Dead (Japan) | GS-9173 | Data only, with high-level bypass | Fixes game crash on lightgun calibration screen. |
Linkle Liver Story (Japan) | GS-9055 | Data only, with high-level bypass | Fixes game crash when going to the world map. |
Lunar - Silver Star Story (Japan) | T-27901G | Full | Fixes FMV flickering with alternative BIOS. |
Nobunaga no Yabou Shouseiroku (Japan) | T-7664G | Full | Fixes game hang. |
Policenauts (Japan) | T-9510G | Full | Fixes screen flickering on disc 2. |
Rampage - World Tour (Europe) | T-25416H50 | Full | Fixes game hang. |
Ronde (Japan) | T-14415G | Data only, with high-level bypass | Fixes missing graphics on the title screen, main menu, and elsewhere. |
Sega Saturn Choice Cuts (USA) | 81600 | Data only, with high-level bypass | Fixes FMV playback hangs and playback failures. |
Segakore Sega Bible Mogitate SegaSaturn (Japan) | 610680501 | Data only, with high-level bypass | |
Shunsai (Japan) | T-18703G | Data only, with high-level bypass | Fixes various graphical glitches. |
Slam 'n Jam 96 (Europe) | T-15902H50 | Full | Fixes minor FMV glitches. |
Slam 'n Jam 96 (Japan) | T-159056 | Full | Fixes minor FMV glitches. |
Slam 'n Jam 96 (USA) | T-159028H | Full | Fixes minor FMV glitches. |
Space Jam (Europe) | T-8125H-50 | Full | Fixes game crash. |
Space Jam (Japan) | T-8119G | Full | Fixes game crash. |
Space Jam (USA) | T-8125H | Full | Fixes game crash. |
Spot Goes to Hollywood (Japan) | T-7014G | Data only, with high-level bypass | Fixes hang at corrupted "Burst" logo. |
Spot Goes to Hollywood (USA) | T-7001H | Data only, with high-level bypass | Fixes hang at corrupted "Burst" logo. |
Street Fighter Zero (Japan) | T-1206G | Data only, with high-level bypass | Fixes weird color/palette issues during game startup. |
Street Fighter Zero 3 (Japan) | T-1246G | Data only, with high-level bypass | |
Super Puzzle Fighter II Turbo (USA) | T-1215H | Data only, with high-level bypass | Fixes color/brightness and other graphical issues. |
Theme Park (Europe) | T-5001H | Data only, with high-level bypass | Fixes hang during FMV. |
Thunder Force Gold Pack 1 (Japan) | T-1807G | Data only, with high-level bypass | Fixes explosion graphic glitches in "Thunder Force III". |
Thunder Force Gold Pack 2 (Japan) | T-1808G | Data only, with high-level bypass | Fixes hang when pausing the game under certain conditions in "Thunder Force AC". |
Virtua Fighter Kids (Java Tea Original) | GS-9113 | Data only, with high-level bypass | Fixes malfunction of computer-controlled player. |
Virtual Mahjong (Japan) | T-2206G | Data only, with high-level bypass | Fixes graphical glitches on the character select screen. |
Virtual Volleyball (Japan) | T-15005G | Data only, with high-level bypass | Fixes invisible menu items and hang. |
Whizz (Europe) | T-9515H-50 | Full | Fixes quasi-random hangs during startup. |
Whizz (Japan) | T-36102G | Full | Fixes quasi-random hangs during startup. |
WipEout (Europe) | T-11301H | Data only, with high-level bypass | Fixes hang when trying to exit gameplay back to the main menu. |
WipEout (Japan) | T-18603G | Data only, with high-level bypass | Fixes hang when trying to exit gameplay back to the main menu. |
WipEout (USA) | T-18601H | Data only, with high-level bypass | Fixes hang when trying to exit gameplay back to the main menu. |
World Series Baseball (Europe/USA) | MK-81109 | Data only, with high-level bypass | Fixes severe gameplay logic glitches. |
This database is used to automatically enable various horrible hacks to fix issues in certain games.
Note that slowing down VDP1 command execution due to SH-2 CPU reads/writes isn't a horrible hack per-se, but it's activated on a per-game basis to avoid the likelihood of breaking some games due to overall Saturn emulation timing inaccuracies.Albert Odyssey (Japan) | T-1507G | SH-2 CPU reads/writes from/to VDP1 slow down command execution. | Partially fixes battle text truncation. |
Albert Odyssey (USA) | T-12705H | SH-2 CPU reads/writes from/to VDP1 slow down command execution. | Partially fixes battle text truncation. |
All-Star Baseball 97 (USA) | T-8150H | SH-2 CPU reads/writes from/to VDP1 slow down command execution. | Fixes texture glitches. |
Arcade's Greatest Hits (USA) | T-9703H | SH-2 CPU reads/writes from/to VDP1 slow down command execution. | Fixes flickering credits text. |
Arcade's Greatest Hits - Atari Collection 1 (USA) | T-9706H | SH-2 CPU reads/writes from/to VDP1 slow down command execution. | Fixes flickering credits text. |
Burning Rangers (Europe/USA) | MK-81803 | SH-2 CPU reads/writes from/to VDP1 slow down command execution. | Fixes flickering rescue text. |
Burning Rangers (Japan) | GS-9174 | SH-2 CPU reads/writes from/to VDP1 slow down command execution. | Fixes flickering rescue text. |
Burning Rangers Taikenban (Japan) | 6106856 | SH-2 CPU reads/writes from/to VDP1 slow down command execution. | Fixes flickering rescue text. |
Fighters Megamix (Europe/USA) | MK-81073 | Disable slowing down of SH-2 CPU reads/writes during SH-2 DMA. | Fixes hang after watching or aborting FMV playback. |
Fighters Megamix (Japan) | GS-9126 | Disable slowing down of SH-2 CPU reads/writes during SH-2 DMA. | Fixes hang after watching or aborting FMV playback. |
Frank Thomas Big Hurt Baseball (Japan) | T-8111G | SH-2 CPU reads/writes from/to VDP1 slow down command execution. | Reduces graphical glitches. |
Frank Thomas Big Hurt Baseball (USA) | T-8138H | SH-2 CPU reads/writes from/to VDP1 slow down command execution. | Reduces graphical glitches. |
Grandia (Japan) | T-4507G | Patch VDP1 VRAM to break an infinite loop. | Fixes hang at end of first disc. |
Irem Arcade Classics (Japan) | T-22403G | Disable slowing down of SH-2 CPU reads/writes during SH-2 DMA. | Fixes hang when trying to start "Zippy Race". |
Thunderhawk II (Japan) | T-6006G | Block SH-2 DMA on last line of frame. Execute VDP1 commands instantly. | Fixes hangs just before and during gameplay. |
Thunderstrike II (USA) | T-11501H00 | Block SH-2 DMA on last line of frame. Execute VDP1 commands instantly. | Fixes hangs just before and during gameplay. |
Whizz (Europe) | T-9515H-50 | SH-2 CPU reads/writes from/to VDP1 slow down command execution. | Fixes major graphical issues during gameplay. |
Whizz (Japan) | T-36102G | SH-2 CPU reads/writes from/to VDP1 slow down command execution. | Fixes major graphical issues during gameplay. |
+This database is used in conjunction with a game's internal header and the "ss.region_default" setting to automatically select the region of Saturn to emulate when the "ss.region_autodetect" setting is set to "1", the default.
+Preview Sega Saturn Vol. 1 (Europe) | 10 8f e1 af 55 5a 95 42 04 85 7e 98 8c 53 6a 31 | Europe | |
+Primal Rage (Europe) | ed 4c 0b 87 35 37 86 76 a0 f6 32 c6 a4 c3 99 88 | Europe | |
+Race Drivin' (Japan) | 15 fc 3a 82 16 a9 85 a5 a8 ad 30 af 9a ff 03 a9 | Japan | |
+Riven - A Sequencia de Myst (Brazil) (Disc 1) | e1 dd fd a1 8b 47 02 21 36 1e 5a ae 20 c0 59 9f | Brazil | |
+Riven - A Sequencia de Myst (Brazil) (Disc 2) | bf 5f f8 5f f2 0c 35 f6 c9 8d 03 bc 34 d9 da 7f | Brazil | |
+Riven - A Sequencia de Myst (Brazil) (Disc 3) | 98 b6 6e 09 e6 dc 30 e6 55 db 85 01 33 0c 0b 9c | Brazil | |
+Riven - A Sequencia de Myst (Brazil) (Disc 4) | a2 34 b0 b9 aa 47 74 1f d4 1e 35 da 3d e7 4d e3 | Brazil | |
+Sega International Victory Goal (Japan) | f7 e9 23 0a 9e 92 f1 93 16 43 f8 6c e8 21 50 66 | Japan | |
+Virtua Racing (Europe) | 64 75 25 0c a1 9b 6c 5e 4e a0 6d 69 d9 0f 32 ca | Europe | |
+Virtua Racing (Japan) | 0d e3 fa fb 2b b9 6d 79 e0 3a b7 6d cc bf b0 2c | Japan | |
+WWF WrestleMania - The Arcade Game (Europe) (Demo) | 73 91 4b e1 ad 4d af 69 c3 eb b8 43 ee 3e b5 09 | Europe | |
+Winter Heat (Europe) (Demo) | 6b 29 33 fc dd ad 8e 0d 95 81 a6 ee fd 90 4b 43 | Europe | |
+
This database is used to automatically select the type of cart to emulate when the "ss.cart" setting is set to "auto", the default. If a game is not found in the database when auto selection is enabled, then the cart used is specified by the "ss.cart.auto_default" setting, default "backup"(a backup memory cart).
+Astra Superstars (Japan) | T-1521G | 1MiB Extended RAM | |
+Cotton 2 (Japan) | T-9904G | 1MiB Extended RAM | |
+Cyberbots (Japan) | T-1217G | 1MiB Extended RAM | |
+Daytona USA CCE Net Link Edition | MK-81218 | None | Reserved for future modem support. |
+Dennou Senki Virtual On (SegaNet) | GS-7106 | None | Reserved for future modem support. |
+Dezaemon 2 (Japan) | T-16804G | Backup Memory | Allows saving. |
+Die Hard Trilogy (Europe/USA) | T-16103H | Backup Memory | Game will crash when running with a RAM expansion cart. |
+Die Hard Trilogy (Japan) | GS-9123 | Backup Memory | Game will crash when running with a RAM expansion cart. |
+Dragon's Dream (Japan) | GS-7114 | None | Reserved for future modem support. |
+Duke Nukem 3D | MK-81071 | None | Reserved for future modem support. |
+Dungeons and Dragons Collection (Japan) | T-1245G | 4MiB Extended RAM | Game requirement("Shadow over Mystara"). |
+Fighter's History Dynamite (Japan) | GS-9107 | 1MiB Extended RAM | Game requirement. |
+Final Fight Revenge (Japan) | T-1248G | 4MiB Extended RAM | Game requirement. |
+Friends (Japan) | T-20109G | 1MiB Extended RAM | |
+Groove on Fight (Japan) | T-14411G | 1MiB Extended RAM | Game requirement. |
+Habitat II (Japan) | GS-7105 | None | Reserved for future modem support. |
+Heart of Darkness (Prototype) | 4a f9 ff 30 ea 54 fe 3a 79 a7 68 69 ae de 55 bb | 16MiB A-bus CS1 RAM | Game requirement(though it's probable the original dev cart was only around 6 to 8MiB). |
+Heart of Darkness (Prototype) | f1 71 c3 e4 69 d5 99 93 94 09 05 fc 29 d3 8a 59 | 16MiB A-bus CS1 RAM | Game requirement(though it's probable the original dev cart was only around 6 to 8MiB). |
+King of Fighters '95, The (Europe) | MK-81088 | King of Fighters 95 ROM | Game requirement. |
+King of Fighters '95, The (Japan) | T-3101G | King of Fighters 95 ROM | Game requirement. |
+Kouryuu Sangoku Engi (Japan) | T-26104G | Backup Memory | |
+Marvel Super Heroes (Europe) | T-7032H-50 | 1MiB Extended RAM | |
+Marvel Super Heroes (Japan) | T-1215G | 1MiB Extended RAM | |
+Marvel Super Heroes vs. Street Fighter (Japan) | T-1238G | 4MiB Extended RAM | Game requirement. |
+Metal Slug (Japan) | T-3111G | 1MiB Extended RAM | Game requirement. |
+NOël 3 (Japan) | T-22205G | 1MiB Extended RAM | |
+Pad Nifty (Japan) | GS-7101 | None | Reserved for future modem support. |
+Pia Carrot e Youkoso!! 2 (Japan) | T-20114G | 1MiB Extended RAM | |
+PlanetWeb Browser (multiple versions) | T-319-01H | None | Reserved for future modem support. |
+Pocket Fighter (Japan) | T-1230G | 4MiB Extended RAM | |
+Puzzle Bobble 3 (SegaNet) | GS-7113 | None | Reserved for future modem support. |
+Real Bout Garou Densetsu (Japan) | T-3105G | 1MiB Extended RAM | Game requirement. |
+Real Bout Garou Densetsu Special (Japan) | T-3119G | 1MiB Extended RAM | Game requirement. |
+Samurai Spirits - Amakusa Kourin (Japan) | T-3116G | 1MiB Extended RAM | Game requirement. |
+Samurai Spirits - Zankurou Musouken (Japan) | T-3104G | 1MiB Extended RAM | Game requirement. |
+Saturn Bomberman | MK-81070 | None | Reserved for future modem support. |
+Saturn Bomberman (SegaNet) | T-14305G | None | Reserved for future modem support. |
+Sega Ages - Galaxy Force II | GS-9197 | Backup Memory | Allows saving replay data. |
+Sega Rally Championship Plus NetLink Edition | MK-81215 | None | Reserved for future modem support. |
+SegaSaturn Internet Vol. 1 (Japan) | T-31301G | None | Reserved for future modem support. |
+Street Fighter Zero 3 (Japan) | T-1246G | 4MiB Extended RAM | Game requirement. |
+Super Real Mahjong P7 (Japan) | T-16509G | 1MiB Extended RAM | |
+Super Real Mahjong P7 (Japan) | T-16510G | 1MiB Extended RAM | |
+Tech Saturn 1997.6 (Japan) | 610636008 | 1MiB Extended RAM | Required by "Groove on Fight" demo. |
+The King of Fighters '96 (Japan) | T-3108G | 1MiB Extended RAM | Game requirement. |
+The King of Fighters '97 (Japan) | T-3121G | 1MiB Extended RAM | Game requirement. |
+Ultraman - Hikari no Kyojin Densetsu (Japan) | T-13308G | Ultraman ROM | Game requirement. |
+Vampire Savior (Japan) | T-1229G | 4MiB Extended RAM | Game requirement. |
+Virtual On NetLink Edition | MK-81072 | None | Reserved for future modem support. |
+Waku Waku 7 (Japan) | T-1515G | 1MiB Extended RAM | Game requirement. |
+X-Men vs. Street Fighter (Japan) | T-1226G | 4MiB Extended RAM | Game requirement. |
+
This database is used to automatically select cache emulation mode, to fix various logic and timing issues in games. The default cache mode is data-only(with no high-level bypass).
The cache mode "Data-only, with high-level bypass" is a hack of sorts, to work around cache coherency bugs in games. These bugs are typically masked on a real Saturn due to the effects of instruction fetches on the cache, but become a problem when only data caching is emulated.
Full cache emulation is not enabled globally primarily due to the large increase in host CPU usage.
+3D Baseball (USA) | T-15906H | Full | Fixes minor FMV glitches. |
+3D Baseball - The Majors (Japan) | T-18003G | Full | Fixes minor FMV glitches. |
+Albert Odyssey (Japan) | T-1507G | Full | |
+Albert Odyssey (USA) | T-12705H | Full | Fixes battle text truncation. |
+Area 51 (Europe) | T-25408H | Data only, with high-level bypass | Fixes game hang. |
+Area 51 (USA) | T-9705H | Data only, with high-level bypass | Fixes game hang. |
+Clockwork Knight 2 (USA) | MK-81036 | Data only, with high-level bypass | Fixes game hang that occurred when some FMVs were played. |
+Corpse Killer (USA) | T-16201H | Full | Fixes glitchy rotation-zoom effect. |
+Crow, The (Europe) | T-8124H-50 | Full | Fixes minor FMV glitches. |
+Crow, The (Germany) | T-8124H-18 | Full | Fixes minor FMV glitches. |
+Crow, The (USA) | T-8124H | Full | Fixes minor FMV glitches. |
+Dark Seed II (Japan) | T-36101G | Full | Fixes game hang. |
+DeJig - Lassen Art Collection (Japan) | T-30304G | Data only, with high-level bypass | Fixes graphical glitches. |
+Die Hard Trilogy (Europe/USA) | T-16103H | Full | Fixes game hang. |
+Die Hard Trilogy (Japan) | GS-9123 | Full | Fixes game hang. |
+Doraemon - Nobita to Fukkatsu no Hoshi (Japan) | T-19801G | Data only, with high-level bypass | Fixes blank Game Over screen. |
+Dragon Force II (Japan) | GS-9184 | Data only, with high-level bypass | Fixes math and game logic errors during battles. |
+Father Christmas (Japan) | T-18504G | Data only, with high-level bypass | Fixes stuck music and voice acting. |
+Fighting Vipers (Europe/USA) | MK-81041 | Data only, with high-level bypass | Fixes computer-controlled opponent turning into a ghost statue. |
+Fighting Vipers (Japan) | GS-9101 | Data only, with high-level bypass | Fixes computer-controlled opponent turning into a ghost statue. |
+Formula Grand Prix - Team Unei Simulation (Japan) | T-7309G | Data only, with high-level bypass | Fixes game hang. |
+GeGeGe no Kitarou (Japan) | T-13310G | Full | Fixes game hang. |
+Gex (Europe) | T-15904H50 | Full | Fixes minor FMV glitches. |
+Gex (Japan) | T-15904G | Full | Fixes minor FMV glitches. |
+Gex (USA) | T-15904H | Full | Fixes minor FMV glitches. |
+Golden Axe - The Duel (Europe/USA) | MK-81045 | Data only, with high-level bypass | Fixes flickering title screen. |
+Golden Axe - The Duel (Japan) | GS-9041 | Data only, with high-level bypass | Fixes flickering title screen. |
+Hideo Nomo World Series Baseball (Japan) | GS-9061 | Data only, with high-level bypass | Fixes severe gameplay logic glitches. |
+Horror Tour (Japan) | T-24301G | Full | Fixes graphical glitches on the save and load screens. |
+House of the Dead (Japan) | GS-9173 | Data only, with high-level bypass | Fixes game crash on lightgun calibration screen. |
+Irem Arcade Classics (Japan) | T-22403G | Full | Fixes hang when trying to start "Zippy Race". |
+Kidou Senkan Nadesico - Yappari Saigo wa Ai ga Katsu | GS-9142 | Full | Fixes game hang. |
+Linkle Liver Story (Japan) | GS-9055 | Data only, with high-level bypass | Fixes game crash when going to the world map. |
+Lunar - Silver Star Story (Japan) | T-27901G | Full | Fixes FMV flickering. |
+Mahjong Doukyuusei Special (Japan) | T-25302G1 | Data only, with high-level bypass | Fixes missing background layer on disc 2. |
+Mahjong Doukyuusei Special (Japan) | T-25302G2 | Data only, with high-level bypass | Fixes missing background layer on disc 2. |
+Mujintou Monogatari R - Futari no Love Love Island (Japan) | T-28901G | Data only, with high-level bypass | Fixes glitches when character graphics change. |
+NBA Action (Europe) | MK81103-50 | Full | Fixes minor FMV glitches. |
+NBA Action (USA) | MK-81103 | Full | Fixes minor FMV glitches. |
+NFL Quarterback Club 96 (Europe) | T-8109H-50 | Full | Fixes minor FMV glitches. |
+NFL Quarterback Club 96 (Japan) | T-8105G | Full | Fixes minor FMV glitches. |
+NFL Quarterback Club 96 (USA) | T-8109H | Full | Fixes minor FMV glitches. |
+Nobunaga no Yabou Shouseiroku (Japan) | T-7664G | Full | Fixes game hang. |
+Policenauts (Japan) | T-9510G | Full | Fixes screen flickering on disc 2. |
+Rampage - World Tour (Europe) | T-25416H50 | Full | Fixes game hang. |
+Ronde (Japan) | T-14415G | Data only, with high-level bypass | Fixes missing graphics on the title screen, main menu, and elsewhere. |
+Sega Saturn Choice Cuts (USA) | 81600 | Data only, with high-level bypass | Fixes FMV playback hangs and playback failures. |
+Segakore Sega Bible Mogitate SegaSaturn (Japan) | 610680501 | Data only, with high-level bypass | Fixes graphical glitch on the character select screen in the "Zero Divide" demo. |
+Senken Kigyouden (Japan) | T-37401G | Full | Fixes dialogue text truncation. |
+Shunsai (Japan) | T-18703G | Data only, with high-level bypass | Fixes various graphical glitches. |
+Slam 'n Jam 96 (Europe) | T-15902H50 | Full | Fixes minor FMV glitches. |
+Slam 'n Jam 96 (Japan) | T-159056 | Full | Fixes minor FMV glitches. |
+Slam 'n Jam 96 (USA) | T-159028H | Full | Fixes minor FMV glitches. |
+Solar Eclipse (USA) | T-15911H | Full | Fixes minor FMV glitches. |
+Space Jam (Europe) | T-8125H-50 | Full | Fixes game crash. |
+Space Jam (Japan) | T-8119G | Full | Fixes game crash. |
+Space Jam (USA) | T-8125H | Full | Fixes game crash. |
+Spot Goes to Hollywood (Japan) | T-7014G | Data only, with high-level bypass | Fixes hang at corrupted "Burst" logo. |
+Spot Goes to Hollywood (USA) | T-7001H | Data only, with high-level bypass | Fixes hang at corrupted "Burst" logo. |
+Street Fighter Zero (Japan) | T-1206G | Data only, with high-level bypass | Fixes weird color/palette issues during game startup. |
+Street Fighter Zero 3 (Japan) | T-1246G | Data only, with high-level bypass | |
+Super Puzzle Fighter II Turbo (USA) | T-1215H | Data only, with high-level bypass | Fixes color/brightness and other graphical issues. |
+The Lost World - Jurassic Park (Europe/USA) | MK-81065 | Full | Fixes most graphical glitches in rock faces. |
+The Lost World - Jurassic Park (Japan) | GS-9162 | Full | Fixes most graphical glitches in rock faces. |
+Theme Park (Europe) | T-5001H | Data only, with high-level bypass | Fixes hang during FMV. |
+Thunder Force Gold Pack 1 (Japan) | T-1807G | Full | Fixes explosion graphic glitches in "Thunder Force III". |
+Thunder Force Gold Pack 2 (Japan) | T-1808G | Data only, with high-level bypass | Fixes hang when pausing the game under certain conditions in "Thunder Force AC". |
+Titan Wars (Europe) | T-15911H50 | Full | Fixes minor FMV glitches. |
+Titan Wars (Japan) | T-15903G | Full | Fixes minor FMV glitches. |
+Virtua Cop (Europe) | MK-81015
E | Full | Fixes game hang. |
+Virtua Cop 2 (Europe) | MK-81043
E | Full | Fixes game hang. |
+Virtua Fighter (Europe) | MK_8100550 | Full | Fixes graphical glitches. |
+Virtua Fighter (Japan) | GS-9001 | Full | Fixes graphical glitches. |
+Virtua Fighter (USA) | MK-81005 | Full | Fixes graphical glitches. |
+Virtua Fighter Kids (Japan/Europe) | GS-9079 VF. KIDS | Data only, with high-level bypass | Fixes FMV glitches. |
+Virtua Fighter Kids (Korea/Java Tea Original) | GS-9113 VF. KIDS | Data only, with high-level bypass | Fixes FMV glitches and/or malfunction of computer-controlled player. |
+Virtua Fighter Kids (USA) | MK-81049 VF. KIDS | Data only, with high-level bypass | Fixes FMV glitches. |
+Virtua Fighter Remix (Europe) | MK-8102350 | Full | Fixes graphical glitches. |
+Virtua Fighter Remix (Japan) | GS-9039 | Full | Fixes graphical glitches. |
+Virtua Fighter Remix (SegaNet) | SG-7103 | Full | Fixes graphical glitches. |
+Virtua Fighter Remix (USA) | MK-81023 | Full | Fixes graphical glitches. |
+Virtual Mahjong (Japan) | T-2206G | Data only, with high-level bypass | Fixes graphical glitches on the character select screen. |
+Virtual Volleyball (Japan) | T-15005G | Data only, with high-level bypass | Fixes invisible menu items and hang. |
+Whizz (Europe) | T-9515H-50 | Full | Fixes quasi-random hangs during startup. |
+Whizz (Japan) | T-36102G | Full | Fixes quasi-random hangs during startup. |
+WipEout (Europe) | T-11301H | Data only, with high-level bypass | Fixes hang when trying to exit gameplay back to the main menu. |
+WipEout (Japan) | T-18603G | Data only, with high-level bypass | Fixes hang when trying to exit gameplay back to the main menu. |
+WipEout (USA) | T-18601H | Data only, with high-level bypass | Fixes hang when trying to exit gameplay back to the main menu. |
+World Series Baseball (Europe/USA) | MK-81109 | Data only, with high-level bypass | Fixes severe gameplay logic glitches. |
+Xian Jian Qi Xia Zhuan (Taiwan) | T-37401H | Full | Fixes dialogue text truncation. |
+Yu-No (Japan) | T-28004G | Full | Fixes FMV ending too soon. |
+Zero Divide - The Final Conflict (Japan) | T-31601G | Data only, with high-level bypass | Fixes graphical glitch on the character select screen. |
+
This database is used to automatically enable various horrible hacks to fix issues in certain games.
Note that slowing down VDP1 command execution due to SH-2 reads/writes isn't a horrible hack per-se, but it's activated on a per-game basis to avoid the likelihood of breaking some games due to overall Saturn emulation timing inaccuracies.
+Albert Odyssey (Japan) | T-1507G | SH-2 reads/writes from/to VDP1 slow down command execution. | Partially fixes battle text truncation. |
+Albert Odyssey (USA) | T-12705H | SH-2 reads/writes from/to VDP1 slow down command execution. | Partially fixes battle text truncation. |
+All-Star Baseball 97 (USA) | T-8150H | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes texture glitches. |
+Arcade's Greatest Hits (USA) | T-9703H | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes flickering credits text. |
+Arcade's Greatest Hits - Atari Collection 1 (USA) | T-9706H | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes flickering credits text. |
+Burning Rangers (Europe/USA) | MK-81803 | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes flickering rescue text. |
+Burning Rangers (Japan) | GS-9174 | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes flickering rescue text. |
+Burning Rangers Taikenban (Japan) | 6106856 | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes flickering rescue text. |
+Falcom Classics II (Japan) | T-31505G | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes FMV tearing in "Ys II". |
+Fighters Megamix (Europe/USA) | MK-81073 | Disable slowing down of SH-2 CPU reads/writes during SH-2 DMA. | Fixes hang after watching or aborting FMV playback. |
+Fighters Megamix (Japan) | GS-9126 | Disable slowing down of SH-2 CPU reads/writes during SH-2 DMA. | Fixes hang after watching or aborting FMV playback. |
+Frank Thomas Big Hurt Baseball (Japan) | T-8111G | SH-2 reads/writes from/to VDP1 slow down command execution. | Reduces graphical glitches. |
+Frank Thomas Big Hurt Baseball (USA) | T-8138H | SH-2 reads/writes from/to VDP1 slow down command execution. | Reduces graphical glitches. |
+Grandia (Japan) | T-4507G | Patch VDP1 VRAM to break an infinite loop. | Fixes hang at end of first disc. |
+In The Hunt (Europe/USA) | T-10001G | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes FMV tearing. |
+Kaitei Daisensou (Japan) | T-15006G | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes FMV tearing. |
+Thunderhawk II (Japan) | T-6006G | Block SH-2 DMA on last line of frame. Execute VDP1 commands instantly. | Fixes hangs just before and during gameplay. |
+Thunderstrike II (USA) | T-11501H00 | Block SH-2 DMA on last line of frame. Execute VDP1 commands instantly. | Fixes hangs just before and during gameplay. |
+Tokimeki Memorial - Forever with You (Japan) | T-9504G | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes glitchy frames on the Konami intro arm sprite. |
+Virtua Fighter (Europe) | MK_8100550 | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes graphical glitches. |
+Virtua Fighter (Japan) | GS-9001 | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes graphical glitches. |
+Virtua Fighter (USA) | MK-81005 | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes graphical glitches. |
+Virtua Fighter Remix (Europe) | MK-8102350 | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes graphical glitches. |
+Virtua Fighter Remix (Japan) | GS-9039 | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes graphical glitches. |
+Virtua Fighter Remix (SegaNet) | SG-7103 | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes graphical glitches. |
+Virtua Fighter Remix (USA) | MK-81023 | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes graphical glitches. |
+Whizz (Europe) | T-9515H-50 | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes major graphical issues during gameplay. |
+Whizz (Japan) | T-36102G | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes major graphical issues during gameplay. |
+Wolf Fang SS - Kuuga 2001 (Japan) | T-26105G | SH-2 reads/writes from/to VDP1 slow down command execution. | Fixes graphical glitches. |
+Yu-No (Japan) | T-28004G | SH-2 reads/writes from/to VDP1 slow down command execution. | Reduces FMV tearing. |
+
Caution: Any settings that change emulation behavior as seen from the emulated game are shown with the setting name bolded in the table. One should be conscious of these settings if one has changed them from the default values when using network play or movies, as they can cause desychronizations if not set the same among hosts(or between the recording emulator and the playing emulator).
diff -Nru mednafen-1.24.3+dfsg/Documentation/ss.php mednafen-1.26.1+dfsg/Documentation/ss.php
--- mednafen-1.24.3+dfsg/Documentation/ss.php 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/ss.php 2020-11-10 06:04:17.000000000 +0000
@@ -25,6 +25,11 @@
A list of known emulation bugs(with workarounds in some cases) in Saturn games with Mednafen is available at https://forum.fobby.net/index.php?t=msg&th=1357
+
+Mednafen's Sega Saturn emulation should not be used in lieu of a Sega Saturn for authoritative game performance/FPS review purposes. The emulation will generally
+run Saturn games with less slowdown than on a real Saturn, even when more accurate emulation modes are enabled via internal databases.
+
+
diff -Nru mednafen-1.24.3+dfsg/Documentation/vb.html mednafen-1.26.1+dfsg/Documentation/vb.html
--- mednafen-1.24.3+dfsg/Documentation/vb.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/vb.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
Virtual Boy Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/Documentation/wswan.html mednafen-1.26.1+dfsg/Documentation/wswan.html
--- mednafen-1.24.3+dfsg/Documentation/wswan.html 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/Documentation/wswan.html 2020-11-10 06:04:17.000000000 +0000
@@ -9,7 +9,7 @@
WonderSwan Documentation
- Last updated May 1, 2020
Valid as of 1.24.3
+ Last updated November 9, 2020
Valid as of 1.26.1
Table of Contents:
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/apple2/apple2.cpp mednafen-1.26.1+dfsg/include/mednafen/apple2/apple2.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/apple2/apple2.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/apple2/apple2.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -1450,7 +1450,7 @@
{
const std::string& giotype = gio_cfg[1];
- if(gio_cfg.size() != (2 + (giotype == "gamepad" || giotype == "joystick")))
+ if(gio_cfg.size() != (unsigned)(2 + (giotype == "gamepad" || giotype == "joystick")))
throw MDFN_Error(0, _("Too many arguments for \"%s\" setting in MAI file."), "gameio");
else
{
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/apple2/debug.inc mednafen-1.26.1+dfsg/include/mednafen/apple2/debug.inc
--- mednafen-1.24.3+dfsg/include/mednafen/apple2/debug.inc 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/apple2/debug.inc 2020-11-10 06:04:17.000000000 +0000
@@ -499,6 +499,7 @@
static DebuggerInfoStruct DBGInfo =
{
+ true,
"cp437",
3,
1, // Instruction alignment(bytes)
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/apple2/disk2.inc mednafen-1.26.1+dfsg/include/mednafen/apple2/disk2.inc
--- mednafen-1.24.3+dfsg/include/mednafen/apple2/disk2.inc 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/apple2/disk2.inc 2020-11-10 06:04:17.000000000 +0000
@@ -1357,7 +1357,7 @@
{
const uint8 header_magic[7] = { 'M', 'D', 'F', 'N', 'A', 'F', 'D' };
uint8 header[16];
- uint32 version;
+ uint32 version MDFN_NOWARN_UNUSED;
bool bigendian;
if(sp->read(header, 16, false) != 16 || memcmp(header, header_magic, sizeof(header_magic)))
@@ -1840,7 +1840,7 @@
disk->ever_modified = true;
}
-static bool GetClearDiskDirty(FloppyDisk* disk)
+static MDFN_NOWARN_UNUSED bool GetClearDiskDirty(FloppyDisk* disk)
{
bool ret = disk->dirty;
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/apple2/kbio.inc mednafen-1.26.1+dfsg/include/mednafen/apple2/kbio.inc
--- mednafen-1.24.3+dfsg/include/mednafen/apple2/kbio.inc 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/apple2/kbio.inc 2020-11-10 06:04:17.000000000 +0000
@@ -447,7 +447,7 @@
/* X8 */ IDIIS_Padding<1>(),
/* Y4 */
- /* X0 */ IDIIS_Button("7", "7'", -1),
+ /* X0 */ IDIIS_Button("7", "7", -1),
/* X1 */ IDIIS_Button("t", "T", -1),
/* X2 */ IDIIS_Button("j", "J", -1),
/* X3 */ IDIIS_Button("b", "B", -1),
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/apple2/video.inc mednafen-1.26.1+dfsg/include/mednafen/apple2/video.inc
--- mednafen-1.24.3+dfsg/include/mednafen/apple2/video.inc 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/apple2/video.inc 2020-11-10 06:04:17.000000000 +0000
@@ -481,7 +481,7 @@
if(text)
{
uint8 fd = FontData[((ram_data & 0x3F) << 3) | (VCounter & 0x7)];
- bool invert = !(ram_data & 0x80) & (!(ram_data & 0x40) | !flashything);
+ bool invert = (!(ram_data & 0x80)) & (!(ram_data & 0x40) | !flashything);
if(invert)
fd ^= 0x7F;
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/cdrom/scsicd.cpp mednafen-1.26.1+dfsg/include/mednafen/cdrom/scsicd.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/cdrom/scsicd.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/cdrom/scsicd.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -22,6 +22,21 @@
** 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/*
+ When changing CD read timing(throughput, and startup/seek delay), be sure to test:
+
+ 4 in 1 Super CD (check for stuck note when starting "Gate of Thunder")
+ Downtown Nekketsu Monogatari (with text speed set to fast, quickly enter and exit store and listen to ADPCM playback for glitches)
+ Galaxy Fraulein Yuna HuVideo CD
+ It Came from the Desert
+ John Madden Duo Football
+ Kuusou Kagaku Sekai Gulliver Boy
+ Magical Fantasy Adventure: Popful Mail (third cutscene, check for glitches and hang)
+ Mirai Shonen Conan (check for hang after boat sinking cutscene)
+ Sherlock Holmes Consulting Detective
+
+*/
+
#include
#include
#include
@@ -1939,6 +1954,7 @@
uint32 Offset = sa - toc.tracks[Track].lba; //Cur_CDIF->GetTrackStartPositionLBA(Track);
SCSILog("SCSI", "Read: start=0x%08x(track=%d, offs=0x%08x), cnt=0x%08x", sa, Track, Offset, sc);
}
+ //const uint32 PrevSectorAddr = SectorAddr;
SectorAddr = sa;
SectorCount = sc;
@@ -1947,6 +1963,8 @@
Cur_CDIF->HintReadSector(sa); //, sa + sc);
CDReadTimer = (uint64)((WhichSystem == SCSICD_PCE) ? 8 : 1) * 2048 * System_Clock / CD_DATA_TRANSFER_RATE;
+ //printf("%d\n", SectorAddr - PrevSectorAddr);
+ //TODO?: CDReadTimer = (double)((WhichSystem == SCSICD_PCE) ? ((PrevSectorAddr == SectorAddr) ? 0.5 : 8) : 1) * 2048 * System_Clock / CD_DATA_TRANSFER_RATE;
}
else
{
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/compress/GZFileStream.cpp mednafen-1.26.1+dfsg/include/mednafen/compress/GZFileStream.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/compress/GZFileStream.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/compress/GZFileStream.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -158,7 +158,7 @@
throw MDFN_Error(0, _("Error reading from opened file \"%s\": %s"), path_save.c_str(), errstring);
}
- const uint64 read_count_u64 = (std::make_unsigned::type)read_count;
+ const uint64 read_count_u64 = (std::make_unsigned::type>::type)read_count;
if(read_count_u64 != count && error_on_eof)
throw MDFN_Error(0, _("Error reading from opened file \"%s\": %s"), path_save.c_str(), _("Unexpected EOF"));
@@ -210,7 +210,7 @@
void GZFileStream::write(const void *data, uint64 count)
{
const auto write_count = gzwrite(gzp, data, count);
- const uint64 write_count_u64 = (std::make_unsigned::type)write_count;
+ const uint64 write_count_u64 = (std::make_unsigned::type>::type)write_count;
if(write_count_u64 != count)
{
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/debug.h mednafen-1.26.1+dfsg/include/mednafen/debug.h
--- mednafen-1.24.3+dfsg/include/mednafen/debug.h 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/debug.h 2020-11-10 06:04:17.000000000 +0000
@@ -118,8 +118,9 @@
};
#endif
-typedef struct
+struct DebuggerInfoStruct
{
+ bool SuppressDoc; // Suppress auto-generated documentation for this system's debugger.
const char *DefaultCharEnc; // Default(or most common) internal character encoding for text for the system.
uint32 MaxInstructionSize; // Maximum instruction size in bytes
@@ -180,7 +181,7 @@
// Game emulation code shouldn't touch these directly.
std::vector *AddressSpaces;
std::vector *RegGroups;
-} DebuggerInfoStruct;
+};
// ASpace_Add() functions return an ID that should be used with with MDFNDBG_ASpace_Read()
// and ASpace_Write() functions. The ID is guaranteed to be 0 for the first address space,
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/drivers/main.cpp mednafen-1.26.1+dfsg/include/mednafen/drivers/main.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/drivers/main.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/drivers/main.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -195,7 +195,7 @@
void BuildSystemSetting(MDFNSetting *setting, const char *system_name, const char *name, const char *description, const char *description_extra, MDFNSettingType type,
const char *default_value, const char *minimum, const char *maximum,
bool (*validate_func)(const char *name, const char *value), void (*ChangeNotification)(const char *name),
- const MDFNSetting_EnumList *enum_list)
+ const MDFNSetting_EnumList *enum_list, uint32 extra_flags)
{
char setting_name[256];
@@ -204,7 +204,7 @@
trio_snprintf(setting_name, 256, "%s.%s", system_name, name);
setting->name = strdup(setting_name);
- setting->flags = MDFNSF_COMMON_TEMPLATE;
+ setting->flags = MDFNSF_COMMON_TEMPLATE | extra_flags;
setting->description = description;
setting->description_extra = description_extra;
setting->type = type;
@@ -227,11 +227,13 @@
if(!dbg)
continue;
+ //
+ const uint32 extra_flags = dbg->SuppressDoc ? MDFNSF_SUPPRESS_DOC : 0;
- BuildSystemSetting(&setting, sysname, "debugger.disfontsize", gettext_noop("Disassembly font size."), gettext_noop("Note: Setting the font size to larger than the default may cause text overlap in the debugger."), MDFNST_ENUM, "5x7", NULL, NULL, NULL, NULL, FontSize_List);
+ BuildSystemSetting(&setting, sysname, "debugger.disfontsize", gettext_noop("Disassembly font size."), gettext_noop("Note: Setting the font size to larger than the default may cause text overlap in the debugger."), MDFNST_ENUM, "5x7", NULL, NULL, NULL, NULL, FontSize_List, extra_flags);
settings.push_back(setting);
- BuildSystemSetting(&setting, sysname, "debugger.memcharenc", gettext_noop("Character encoding for the debugger's memory editor."), NULL, MDFNST_STRING, dbg->DefaultCharEnc);
+ BuildSystemSetting(&setting, sysname, "debugger.memcharenc", gettext_noop("Character encoding for the debugger's memory editor."), NULL, MDFNST_STRING, dbg->DefaultCharEnc, NULL, NULL, NULL, NULL, NULL, extra_flags);
settings.push_back(setting);
}
#endif
@@ -2584,6 +2586,14 @@
{
//printf("MidSync; flags=0x%08x --- SoundBufSize_DriverProcessed=0x%08x, SoundBufSize=0x%08x\n", flags, espec->SoundBufSize_DriverProcessed, espec->SoundBufSize);
//
+ if(MDFN_UNLIKELY(StateRCTest))
+ {
+ // TODO: Make state rewind consistency checking compatible with midsync, instead of this quick workaround.
+ //puts("MDFND_MidSync ignored");
+ return;
+ }
+ //
+ //
int16* const sbuf = espec->SoundBuf + espec->SoundBufSize_DriverProcessed * CurGame->soundchan;
const int32 scount = espec->SoundBufSize - espec->SoundBufSize_DriverProcessed;
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/drivers/main.h mednafen-1.26.1+dfsg/include/mednafen/drivers/main.h
--- mednafen-1.24.3+dfsg/include/mednafen/drivers/main.h 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/drivers/main.h 2020-11-10 06:04:17.000000000 +0000
@@ -74,5 +74,5 @@
void BuildSystemSetting(MDFNSetting *setting, const char *system_name, const char *name, const char *description, const char *description_extra, MDFNSettingType type,
const char *default_value, const char *minimum = NULL, const char *maximum = NULL,
bool (*validate_func)(const char *name, const char *value) = NULL, void (*ChangeNotification)(const char *name) = NULL,
- const MDFNSetting_EnumList *enum_list = NULL);
+ const MDFNSetting_EnumList *enum_list = NULL, uint32 extra_flags = 0);
#endif
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/drivers/Makefile.in mednafen-1.26.1+dfsg/include/mednafen/drivers/Makefile.in
--- mednafen-1.24.3+dfsg/include/mednafen/drivers/Makefile.in 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/drivers/Makefile.in 2020-11-10 06:04:17.000000000 +0000
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -83,8 +93,6 @@
@WANT_FANCY_SCALERS_TRUE@am__append_3 = hqxx-common.cpp hq2x.cpp hq3x.cpp hq4x.cpp scale2x.c scale3x.c scalebit.c 2xSaI.cpp
@WANT_DEBUGGER_TRUE@am__append_4 = debugger.cpp gfxdebugger.cpp memdebugger.cpp logdebugger.cpp prompt.cpp
subdir = src/drivers
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp
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 \
@@ -106,6 +114,7 @@
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/include/config.h
CONFIG_CLEAN_FILES =
@@ -163,7 +172,25 @@
am__v_at_0 = @
am__v_at_1 =
depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/2xSaI.Po ./$(DEPDIR)/Joystick.Po \
+ ./$(DEPDIR)/Joystick_DX5.Po ./$(DEPDIR)/Joystick_Linux.Po \
+ ./$(DEPDIR)/Joystick_SDL.Po ./$(DEPDIR)/Joystick_XInput.Po \
+ ./$(DEPDIR)/args.Po ./$(DEPDIR)/cheat.Po \
+ ./$(DEPDIR)/console.Po ./$(DEPDIR)/debugger.Po \
+ ./$(DEPDIR)/ers.Po ./$(DEPDIR)/fps.Po \
+ ./$(DEPDIR)/gfxdebugger.Po ./$(DEPDIR)/help.Po \
+ ./$(DEPDIR)/hq2x.Po ./$(DEPDIR)/hq3x.Po ./$(DEPDIR)/hq4x.Po \
+ ./$(DEPDIR)/hqxx-common.Po ./$(DEPDIR)/input.Po \
+ ./$(DEPDIR)/keyboard.Po ./$(DEPDIR)/logdebugger.Po \
+ ./$(DEPDIR)/main.Po ./$(DEPDIR)/memdebugger.Po \
+ ./$(DEPDIR)/mouse.Po ./$(DEPDIR)/netplay.Po ./$(DEPDIR)/nnx.Po \
+ ./$(DEPDIR)/nongl.Po ./$(DEPDIR)/opengl.Po \
+ ./$(DEPDIR)/prompt.Po ./$(DEPDIR)/remote.Po \
+ ./$(DEPDIR)/rmdui.Po ./$(DEPDIR)/scale2x.Po \
+ ./$(DEPDIR)/scale3x.Po ./$(DEPDIR)/scalebit.Po \
+ ./$(DEPDIR)/shader.Po ./$(DEPDIR)/sound.Po \
+ ./$(DEPDIR)/video-state.Po ./$(DEPDIR)/video.Po
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -216,6 +243,8 @@
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/mkinstalldirs
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ALLOCA = @ALLOCA@
@@ -390,6 +419,7 @@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@@ -423,14 +453,13 @@
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/drivers/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu src/drivers/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);; \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -456,44 +485,50 @@
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/2xSaI.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Joystick.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Joystick_DX5.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Joystick_Linux.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Joystick_SDL.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Joystick_XInput.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/args.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cheat.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/console.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debugger.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ers.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fps.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfxdebugger.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/help.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hq2x.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hq3x.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hq4x.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hqxx-common.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyboard.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logdebugger.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memdebugger.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mouse.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netplay.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nnx.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nongl.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opengl.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prompt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmdui.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scale2x.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scale3x.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalebit.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shader.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sound.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/video-state.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/video.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/2xSaI.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Joystick.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Joystick_DX5.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Joystick_Linux.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Joystick_SDL.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Joystick_XInput.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/args.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cheat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/console.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debugger.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ers.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fps.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gfxdebugger.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/help.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hq2x.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hq3x.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hq4x.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hqxx-common.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/input.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyboard.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logdebugger.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memdebugger.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mouse.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netplay.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nnx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nongl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opengl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prompt.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmdui.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scale2x.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scale3x.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalebit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shader.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sound.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/video-state.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/video.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+ @$(MKDIR_P) $(@D)
+ @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -579,7 +614,10 @@
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
@@ -648,7 +686,44 @@
clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
distclean: distclean-am
- -rm -rf ./$(DEPDIR)
+ -rm -f ./$(DEPDIR)/2xSaI.Po
+ -rm -f ./$(DEPDIR)/Joystick.Po
+ -rm -f ./$(DEPDIR)/Joystick_DX5.Po
+ -rm -f ./$(DEPDIR)/Joystick_Linux.Po
+ -rm -f ./$(DEPDIR)/Joystick_SDL.Po
+ -rm -f ./$(DEPDIR)/Joystick_XInput.Po
+ -rm -f ./$(DEPDIR)/args.Po
+ -rm -f ./$(DEPDIR)/cheat.Po
+ -rm -f ./$(DEPDIR)/console.Po
+ -rm -f ./$(DEPDIR)/debugger.Po
+ -rm -f ./$(DEPDIR)/ers.Po
+ -rm -f ./$(DEPDIR)/fps.Po
+ -rm -f ./$(DEPDIR)/gfxdebugger.Po
+ -rm -f ./$(DEPDIR)/help.Po
+ -rm -f ./$(DEPDIR)/hq2x.Po
+ -rm -f ./$(DEPDIR)/hq3x.Po
+ -rm -f ./$(DEPDIR)/hq4x.Po
+ -rm -f ./$(DEPDIR)/hqxx-common.Po
+ -rm -f ./$(DEPDIR)/input.Po
+ -rm -f ./$(DEPDIR)/keyboard.Po
+ -rm -f ./$(DEPDIR)/logdebugger.Po
+ -rm -f ./$(DEPDIR)/main.Po
+ -rm -f ./$(DEPDIR)/memdebugger.Po
+ -rm -f ./$(DEPDIR)/mouse.Po
+ -rm -f ./$(DEPDIR)/netplay.Po
+ -rm -f ./$(DEPDIR)/nnx.Po
+ -rm -f ./$(DEPDIR)/nongl.Po
+ -rm -f ./$(DEPDIR)/opengl.Po
+ -rm -f ./$(DEPDIR)/prompt.Po
+ -rm -f ./$(DEPDIR)/remote.Po
+ -rm -f ./$(DEPDIR)/rmdui.Po
+ -rm -f ./$(DEPDIR)/scale2x.Po
+ -rm -f ./$(DEPDIR)/scale3x.Po
+ -rm -f ./$(DEPDIR)/scalebit.Po
+ -rm -f ./$(DEPDIR)/shader.Po
+ -rm -f ./$(DEPDIR)/sound.Po
+ -rm -f ./$(DEPDIR)/video-state.Po
+ -rm -f ./$(DEPDIR)/video.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
@@ -694,7 +769,44 @@
installcheck-am:
maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
+ -rm -f ./$(DEPDIR)/2xSaI.Po
+ -rm -f ./$(DEPDIR)/Joystick.Po
+ -rm -f ./$(DEPDIR)/Joystick_DX5.Po
+ -rm -f ./$(DEPDIR)/Joystick_Linux.Po
+ -rm -f ./$(DEPDIR)/Joystick_SDL.Po
+ -rm -f ./$(DEPDIR)/Joystick_XInput.Po
+ -rm -f ./$(DEPDIR)/args.Po
+ -rm -f ./$(DEPDIR)/cheat.Po
+ -rm -f ./$(DEPDIR)/console.Po
+ -rm -f ./$(DEPDIR)/debugger.Po
+ -rm -f ./$(DEPDIR)/ers.Po
+ -rm -f ./$(DEPDIR)/fps.Po
+ -rm -f ./$(DEPDIR)/gfxdebugger.Po
+ -rm -f ./$(DEPDIR)/help.Po
+ -rm -f ./$(DEPDIR)/hq2x.Po
+ -rm -f ./$(DEPDIR)/hq3x.Po
+ -rm -f ./$(DEPDIR)/hq4x.Po
+ -rm -f ./$(DEPDIR)/hqxx-common.Po
+ -rm -f ./$(DEPDIR)/input.Po
+ -rm -f ./$(DEPDIR)/keyboard.Po
+ -rm -f ./$(DEPDIR)/logdebugger.Po
+ -rm -f ./$(DEPDIR)/main.Po
+ -rm -f ./$(DEPDIR)/memdebugger.Po
+ -rm -f ./$(DEPDIR)/mouse.Po
+ -rm -f ./$(DEPDIR)/netplay.Po
+ -rm -f ./$(DEPDIR)/nnx.Po
+ -rm -f ./$(DEPDIR)/nongl.Po
+ -rm -f ./$(DEPDIR)/opengl.Po
+ -rm -f ./$(DEPDIR)/prompt.Po
+ -rm -f ./$(DEPDIR)/remote.Po
+ -rm -f ./$(DEPDIR)/rmdui.Po
+ -rm -f ./$(DEPDIR)/scale2x.Po
+ -rm -f ./$(DEPDIR)/scale3x.Po
+ -rm -f ./$(DEPDIR)/scalebit.Po
+ -rm -f ./$(DEPDIR)/shader.Po
+ -rm -f ./$(DEPDIR)/sound.Po
+ -rm -f ./$(DEPDIR)/video-state.Po
+ -rm -f ./$(DEPDIR)/video.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
@@ -714,18 +826,20 @@
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
- distclean-compile distclean-generic 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 pdf pdf-am ps ps-am tags tags-am uninstall \
- uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
+ clean-generic clean-noinstLIBRARIES cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ 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 pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/drivers_dos/Makefile.in mednafen-1.26.1+dfsg/include/mednafen/drivers_dos/Makefile.in
--- mednafen-1.24.3+dfsg/include/mednafen/drivers_dos/Makefile.in 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/drivers_dos/Makefile.in 2020-11-10 06:04:17.000000000 +0000
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -79,8 +89,6 @@
build_triplet = @build@
host_triplet = @host@
subdir = src/drivers_dos
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs
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 \
@@ -102,6 +110,7 @@
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/include/config.h
CONFIG_CLEAN_FILES =
@@ -149,6 +158,7 @@
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ALLOCA = @ALLOCA@
@@ -323,6 +333,7 @@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@@ -350,14 +361,13 @@
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/drivers_dos/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu src/drivers_dos/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);; \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -389,7 +399,10 @@
cscope cscopelist:
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
@@ -534,6 +547,8 @@
mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
uninstall-am
+.PRECIOUS: Makefile
+
# 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.
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/drivers_libxxx/Makefile.in mednafen-1.26.1+dfsg/include/mednafen/drivers_libxxx/Makefile.in
--- mednafen-1.24.3+dfsg/include/mednafen/drivers_libxxx/Makefile.in 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/drivers_libxxx/Makefile.in 2020-11-10 06:04:17.000000000 +0000
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -79,8 +89,6 @@
build_triplet = @build@
host_triplet = @host@
subdir = src/drivers_libxxx
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp
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 \
@@ -102,6 +110,7 @@
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/include/config.h
CONFIG_CLEAN_FILES =
@@ -135,7 +144,9 @@
am__v_at_0 = @
am__v_at_1 =
depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/CDInterface_EXT.Po \
+ ./$(DEPDIR)/interface.Po ./$(DEPDIR)/main.Po
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
@@ -176,6 +187,8 @@
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/mkinstalldirs
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ALLOCA = @ALLOCA@
@@ -350,6 +363,7 @@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@@ -379,14 +393,13 @@
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/drivers_libxxx/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu src/drivers_libxxx/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);; \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -417,9 +430,15 @@
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CDInterface_EXT.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CDInterface_EXT.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+ @$(MKDIR_P) $(@D)
+ @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
.cpp.o:
@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -489,7 +508,10 @@
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
@@ -558,7 +580,9 @@
clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
distclean: distclean-am
- -rm -rf ./$(DEPDIR)
+ -rm -f ./$(DEPDIR)/CDInterface_EXT.Po
+ -rm -f ./$(DEPDIR)/interface.Po
+ -rm -f ./$(DEPDIR)/main.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
@@ -604,7 +628,9 @@
installcheck-am:
maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
+ -rm -f ./$(DEPDIR)/CDInterface_EXT.Po
+ -rm -f ./$(DEPDIR)/interface.Po
+ -rm -f ./$(DEPDIR)/main.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
@@ -624,18 +650,20 @@
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
- distclean-compile distclean-generic 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 pdf pdf-am ps ps-am tags tags-am uninstall \
- uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
+ clean-generic clean-noinstLIBRARIES cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ 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 pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/hw_cpu/m68k/m68k.cpp mednafen-1.26.1+dfsg/include/mednafen/hw_cpu/m68k/m68k.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/hw_cpu/m68k/m68k.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/hw_cpu/m68k/m68k.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -27,7 +27,7 @@
//
// TODO: Fix instruction timings(currently execute too fast).
//
-// TODO: Fix multiplication and division timing, and make sure flags are ok for divide by zero.
+// TODO: Fix division timing, and make sure flags are ok for divide by zero.
//
// FIXME: Handle NMI differently; how to test? Maybe MOVEM to interrupt control registers...
//
@@ -1123,6 +1123,11 @@
T const src_data = src.read();
uint32 const result = (uint32)(uint16)D[dr] * (uint32)src_data;
+ timestamp += 34;
+
+ for(uint32 tmp = src_data; tmp; tmp &= tmp - 1)
+ timestamp += 2;
+
CalcZN(result);
SetC(false);
SetV(false);
@@ -1143,6 +1148,11 @@
T const src_data = src.read();
uint32 const result = (int16)D[dr] * (int16)src_data;
+ timestamp += 34;
+
+ for(uint32 tmp = src_data << 1, i = 0; i < 16; tmp >>= 1, i++)
+ timestamp += (tmp ^ (tmp << 1)) & 2;
+
CalcZN(result);
SetC(false);
SetV(false);
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/Makefile.in mednafen-1.26.1+dfsg/include/mednafen/Makefile.in
--- mednafen-1.24.3+dfsg/include/mednafen/Makefile.in 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/Makefile.in 2020-11-10 06:04:17.000000000 +0000
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,17 @@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -91,42 +101,6 @@
@ENABLE_LIBXXX_MODE_TRUE@am__append_9 = drivers_libxxx/libmdfnxxx.a
@ENABLE_LIBXXX_MODE_TRUE@am__append_10 = drivers_libxxx/libmdfnxxx.a
@HAVE_SDL_TRUE@am__append_11 = @SDL_LIBS@
-DIST_COMMON = $(srcdir)/cdplay/Makefile.am.inc \
- $(srcdir)/demo/Makefile.am.inc \
- $(srcdir)/apple2/Makefile.am.inc $(srcdir)/gb/Makefile.am.inc \
- $(srcdir)/gba/Makefile.am.inc $(srcdir)/lynx/Makefile.am.inc \
- $(srcdir)/md/Makefile.am.inc $(srcdir)/nes/Makefile.am.inc \
- $(srcdir)/nes/ppu/Makefile.am.inc \
- $(srcdir)/nes/boards/Makefile.am.inc \
- $(srcdir)/nes/input/Makefile.am.inc \
- $(srcdir)/ngp/Makefile.am.inc $(srcdir)/pce/Makefile.am.inc \
- $(srcdir)/pce_fast/Makefile.am.inc \
- $(srcdir)/pcfx/Makefile.am.inc $(srcdir)/psx/Makefile.am.inc \
- $(srcdir)/sms/Makefile.am.inc $(srcdir)/snes/Makefile.am.inc \
- $(srcdir)/snes_faust/Makefile.am.inc \
- $(srcdir)/vb/Makefile.am.inc $(srcdir)/wswan/Makefile.am.inc \
- $(srcdir)/desa68/Makefile.am.inc \
- $(srcdir)/hw_cpu/Makefile.am.inc \
- $(srcdir)/hw_misc/Makefile.am.inc \
- $(srcdir)/hw_sound/Makefile.am.inc \
- $(srcdir)/hw_video/Makefile.am.inc \
- $(srcdir)/mthreading/Makefile.am.inc \
- $(srcdir)/cdrom/Makefile.am.inc \
- $(srcdir)/sound/Makefile.am.inc $(srcdir)/net/Makefile.am.inc \
- $(srcdir)/quicklz/Makefile.am.inc \
- $(srcdir)/compress/Makefile.am.inc \
- $(srcdir)/hash/Makefile.am.inc \
- $(srcdir)/string/Makefile.am.inc \
- $(srcdir)/video/Makefile.am.inc \
- $(srcdir)/resampler/Makefile.am.inc \
- $(srcdir)/cputest/Makefile.am.inc \
- $(srcdir)/cheat_formats/Makefile.am.inc \
- $(srcdir)/minilzo/Makefile.am.inc \
- $(srcdir)/tremor/Makefile.am.inc \
- $(srcdir)/mpcdec/Makefile.am.inc \
- $(srcdir)/trio/Makefile.am.inc $(srcdir)/Makefile.in \
- $(srcdir)/Makefile.am $(top_srcdir)/mkinstalldirs \
- $(top_srcdir)/depcomp
@WANT_APPLE2_EMU_TRUE@am__append_12 = apple2/apple2.cpp
@WANT_GB_EMU_TRUE@am__append_13 = gb/gb.cpp gb/gfx.cpp gb/gbGlobals.cpp gb/memory.cpp gb/sound.cpp gb/z80.cpp
@WANT_GBA_EMU_TRUE@am__append_14 = gba/GBAinline.cpp gba/arm.cpp \
@@ -342,10 +316,13 @@
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/include/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS)
LIBRARIES = $(noinst_LIBRARIES)
AR = ar
ARFLAGS = cru
@@ -492,8 +469,6 @@
@HAVE_EXTERNAL_TREMOR_FALSE@ tremor/libvorbisidec_a-framing.$(OBJEXT) \
@HAVE_EXTERNAL_TREMOR_FALSE@ tremor/libvorbisidec_a-bitwise.$(OBJEXT)
libvorbisidec_a_OBJECTS = $(am_libvorbisidec_a_OBJECTS)
-am__installdirs = "$(DESTDIR)$(bindir)"
-PROGRAMS = $(bin_PROGRAMS)
am__mednafen_SOURCES_DIST = debug.cpp error.cpp mempatcher.cpp \
settings.cpp endian.cpp Time.cpp mednafen.cpp git.cpp file.cpp \
general.cpp memory.cpp netplay.cpp state.cpp state_rewind.cpp \
@@ -999,7 +974,309 @@
am__v_at_0 = @
am__v_at_1 =
depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/ExtMemStream.Po \
+ ./$(DEPDIR)/FileStream.Po ./$(DEPDIR)/IPSPatcher.Po \
+ ./$(DEPDIR)/MTStreamReader.Po ./$(DEPDIR)/MemoryStream.Po \
+ ./$(DEPDIR)/NativeVFS.Po ./$(DEPDIR)/PSFLoader.Po \
+ ./$(DEPDIR)/SNSFLoader.Po ./$(DEPDIR)/SPCReader.Po \
+ ./$(DEPDIR)/SSFLoader.Po ./$(DEPDIR)/Stream.Po \
+ ./$(DEPDIR)/Time.Po ./$(DEPDIR)/VirtualFS.Po \
+ ./$(DEPDIR)/debug.Po ./$(DEPDIR)/endian.Po \
+ ./$(DEPDIR)/error.Po ./$(DEPDIR)/file.Po \
+ ./$(DEPDIR)/general.Po ./$(DEPDIR)/git.Po \
+ ./$(DEPDIR)/mednafen.Po ./$(DEPDIR)/memory.Po \
+ ./$(DEPDIR)/mempatcher.Po ./$(DEPDIR)/movie.Po \
+ ./$(DEPDIR)/netplay.Po ./$(DEPDIR)/player.Po \
+ ./$(DEPDIR)/qtrecord.Po ./$(DEPDIR)/settings.Po \
+ ./$(DEPDIR)/state.Po ./$(DEPDIR)/state_rewind.Po \
+ ./$(DEPDIR)/tests.Po ./$(DEPDIR)/win32-common.Po \
+ apple2/$(DEPDIR)/apple2.Po cdplay/$(DEPDIR)/cdplay.Po \
+ cdrom/$(DEPDIR)/CDAFReader.Po \
+ cdrom/$(DEPDIR)/CDAFReader_MPC.Po \
+ cdrom/$(DEPDIR)/CDAFReader_SF.Po \
+ cdrom/$(DEPDIR)/CDAFReader_Vorbis.Po \
+ cdrom/$(DEPDIR)/CDAccess.Po cdrom/$(DEPDIR)/CDAccess_CCD.Po \
+ cdrom/$(DEPDIR)/CDAccess_Image.Po \
+ cdrom/$(DEPDIR)/CDInterface.Po \
+ cdrom/$(DEPDIR)/CDInterface_MT.Po \
+ cdrom/$(DEPDIR)/CDInterface_ST.Po cdrom/$(DEPDIR)/CDUtility.Po \
+ cdrom/$(DEPDIR)/crc32.Po cdrom/$(DEPDIR)/galois.Po \
+ cdrom/$(DEPDIR)/l-ec.Po cdrom/$(DEPDIR)/lec.Po \
+ cdrom/$(DEPDIR)/recover-raw.Po cdrom/$(DEPDIR)/scsicd.Po \
+ cheat_formats/$(DEPDIR)/gb.Po cheat_formats/$(DEPDIR)/psx.Po \
+ cheat_formats/$(DEPDIR)/snes.Po \
+ compress/$(DEPDIR)/GZFileStream.Po \
+ compress/$(DEPDIR)/ZIPReader.Po \
+ compress/$(DEPDIR)/ZLInflateFilter.Po \
+ cputest/$(DEPDIR)/cputest.Po cputest/$(DEPDIR)/ppc_cpu.Po \
+ cputest/$(DEPDIR)/x86_cpu.Po demo/$(DEPDIR)/demo.Po \
+ desa68/$(DEPDIR)/libdesa68_a-desa68.Po gb/$(DEPDIR)/gb.Po \
+ gb/$(DEPDIR)/gbGlobals.Po gb/$(DEPDIR)/gfx.Po \
+ gb/$(DEPDIR)/memory.Po gb/$(DEPDIR)/sound.Po \
+ gb/$(DEPDIR)/z80.Po gba/$(DEPDIR)/GBA.Po \
+ gba/$(DEPDIR)/GBAinline.Po gba/$(DEPDIR)/Gfx.Po \
+ gba/$(DEPDIR)/Globals.Po gba/$(DEPDIR)/Mode0.Po \
+ gba/$(DEPDIR)/Mode1.Po gba/$(DEPDIR)/Mode2.Po \
+ gba/$(DEPDIR)/Mode3.Po gba/$(DEPDIR)/Mode4.Po \
+ gba/$(DEPDIR)/Mode5.Po gba/$(DEPDIR)/RTC.Po \
+ gba/$(DEPDIR)/Sound.Po gba/$(DEPDIR)/arm.Po \
+ gba/$(DEPDIR)/bios.Po gba/$(DEPDIR)/eeprom.Po \
+ gba/$(DEPDIR)/flash.Po gba/$(DEPDIR)/sram.Po \
+ gba/$(DEPDIR)/thumb.Po hash/$(DEPDIR)/crc.Po \
+ hash/$(DEPDIR)/md5.Po hash/$(DEPDIR)/sha1.Po \
+ hash/$(DEPDIR)/sha256.Po hw_cpu/m68k/$(DEPDIR)/m68k.Po \
+ hw_cpu/v810/$(DEPDIR)/v810_cpu.Po \
+ hw_cpu/v810/$(DEPDIR)/v810_cpuD.Po \
+ hw_cpu/v810/$(DEPDIR)/v810_fp_ops.Po \
+ hw_cpu/z80-fuse/$(DEPDIR)/z80.Po \
+ hw_cpu/z80-fuse/$(DEPDIR)/z80_ops.Po \
+ hw_misc/arcade_card/$(DEPDIR)/arcade_card.Po \
+ hw_sound/gb_apu/$(DEPDIR)/Gb_Apu.Po \
+ hw_sound/gb_apu/$(DEPDIR)/Gb_Apu_State.Po \
+ hw_sound/gb_apu/$(DEPDIR)/Gb_Oscs.Po \
+ hw_sound/pce_psg/$(DEPDIR)/pce_psg.Po \
+ hw_sound/sms_apu/$(DEPDIR)/Sms_Apu.Po \
+ hw_sound/ym2413/$(DEPDIR)/emu2413.Po \
+ hw_sound/ym2612/$(DEPDIR)/Ym2612_Emu.Po \
+ hw_video/huc6270/$(DEPDIR)/vdc.Po lynx/$(DEPDIR)/c65c02.Po \
+ lynx/$(DEPDIR)/cart.Po lynx/$(DEPDIR)/memmap.Po \
+ lynx/$(DEPDIR)/mikie.Po lynx/$(DEPDIR)/ram.Po \
+ lynx/$(DEPDIR)/rom.Po lynx/$(DEPDIR)/susie.Po \
+ lynx/$(DEPDIR)/system.Po md/$(DEPDIR)/debug.Po \
+ md/$(DEPDIR)/genesis.Po md/$(DEPDIR)/genio.Po \
+ md/$(DEPDIR)/header.Po md/$(DEPDIR)/mem68k.Po \
+ md/$(DEPDIR)/membnk.Po md/$(DEPDIR)/memvdp.Po \
+ md/$(DEPDIR)/memz80.Po md/$(DEPDIR)/sound.Po \
+ md/$(DEPDIR)/system.Po md/$(DEPDIR)/vdp.Po \
+ md/cart/$(DEPDIR)/cart.Po md/cart/$(DEPDIR)/map_eeprom.Po \
+ md/cart/$(DEPDIR)/map_ff.Po md/cart/$(DEPDIR)/map_realtec.Po \
+ md/cart/$(DEPDIR)/map_rmx3.Po md/cart/$(DEPDIR)/map_rom.Po \
+ md/cart/$(DEPDIR)/map_sbb.Po md/cart/$(DEPDIR)/map_sram.Po \
+ md/cart/$(DEPDIR)/map_ssf2.Po md/cart/$(DEPDIR)/map_svp.Po \
+ md/cart/$(DEPDIR)/map_yase.Po md/cd/$(DEPDIR)/cd.Po \
+ md/cd/$(DEPDIR)/cdc_cdd.Po md/cd/$(DEPDIR)/interrupt.Po \
+ md/cd/$(DEPDIR)/pcm.Po md/cd/$(DEPDIR)/timer.Po \
+ md/input/$(DEPDIR)/4way.Po md/input/$(DEPDIR)/gamepad.Po \
+ md/input/$(DEPDIR)/megamouse.Po md/input/$(DEPDIR)/multitap.Po \
+ minilzo/$(DEPDIR)/minilzo.Po \
+ mpcdec/$(DEPDIR)/libmpcdec_a-crc32.Po \
+ mpcdec/$(DEPDIR)/libmpcdec_a-huffman.Po \
+ mpcdec/$(DEPDIR)/libmpcdec_a-mpc_bits_reader.Po \
+ mpcdec/$(DEPDIR)/libmpcdec_a-mpc_decoder.Po \
+ mpcdec/$(DEPDIR)/libmpcdec_a-mpc_demux.Po \
+ mpcdec/$(DEPDIR)/libmpcdec_a-mpc_reader.Po \
+ mpcdec/$(DEPDIR)/libmpcdec_a-requant.Po \
+ mpcdec/$(DEPDIR)/libmpcdec_a-streaminfo.Po \
+ mpcdec/$(DEPDIR)/libmpcdec_a-synth_filter.Po \
+ mthreading/$(DEPDIR)/MThreading_POSIX.Po \
+ mthreading/$(DEPDIR)/MThreading_Win32.Po nes/$(DEPDIR)/cart.Po \
+ nes/$(DEPDIR)/debug.Po nes/$(DEPDIR)/dis6502.Po \
+ nes/$(DEPDIR)/fds-sound.Po nes/$(DEPDIR)/fds.Po \
+ nes/$(DEPDIR)/ines.Po nes/$(DEPDIR)/input.Po \
+ nes/$(DEPDIR)/nes.Po nes/$(DEPDIR)/nsf.Po \
+ nes/$(DEPDIR)/nsfe.Po nes/$(DEPDIR)/sound.Po \
+ nes/$(DEPDIR)/unif.Po nes/$(DEPDIR)/vsuni.Po \
+ nes/$(DEPDIR)/x6502.Po nes/boards/$(DEPDIR)/107.Po \
+ nes/boards/$(DEPDIR)/112.Po nes/boards/$(DEPDIR)/113.Po \
+ nes/boards/$(DEPDIR)/114.Po nes/boards/$(DEPDIR)/117.Po \
+ nes/boards/$(DEPDIR)/140.Po nes/boards/$(DEPDIR)/15.Po \
+ nes/boards/$(DEPDIR)/151.Po nes/boards/$(DEPDIR)/152.Po \
+ nes/boards/$(DEPDIR)/156.Po nes/boards/$(DEPDIR)/16.Po \
+ nes/boards/$(DEPDIR)/163.Po nes/boards/$(DEPDIR)/18.Po \
+ nes/boards/$(DEPDIR)/180.Po nes/boards/$(DEPDIR)/182.Po \
+ nes/boards/$(DEPDIR)/184.Po nes/boards/$(DEPDIR)/185.Po \
+ nes/boards/$(DEPDIR)/187.Po nes/boards/$(DEPDIR)/189.Po \
+ nes/boards/$(DEPDIR)/190.Po nes/boards/$(DEPDIR)/193.Po \
+ nes/boards/$(DEPDIR)/208.Po nes/boards/$(DEPDIR)/21.Po \
+ nes/boards/$(DEPDIR)/22.Po nes/boards/$(DEPDIR)/222.Po \
+ nes/boards/$(DEPDIR)/228.Po nes/boards/$(DEPDIR)/23.Po \
+ nes/boards/$(DEPDIR)/232.Po nes/boards/$(DEPDIR)/234.Po \
+ nes/boards/$(DEPDIR)/240.Po nes/boards/$(DEPDIR)/241.Po \
+ nes/boards/$(DEPDIR)/242.Po nes/boards/$(DEPDIR)/244.Po \
+ nes/boards/$(DEPDIR)/246.Po nes/boards/$(DEPDIR)/248.Po \
+ nes/boards/$(DEPDIR)/25.Po nes/boards/$(DEPDIR)/30.Po \
+ nes/boards/$(DEPDIR)/32.Po nes/boards/$(DEPDIR)/33.Po \
+ nes/boards/$(DEPDIR)/34.Po nes/boards/$(DEPDIR)/38.Po \
+ nes/boards/$(DEPDIR)/40.Po nes/boards/$(DEPDIR)/41.Po \
+ nes/boards/$(DEPDIR)/42.Po nes/boards/$(DEPDIR)/46.Po \
+ nes/boards/$(DEPDIR)/51.Po nes/boards/$(DEPDIR)/65.Po \
+ nes/boards/$(DEPDIR)/67.Po nes/boards/$(DEPDIR)/68.Po \
+ nes/boards/$(DEPDIR)/70.Po nes/boards/$(DEPDIR)/72.Po \
+ nes/boards/$(DEPDIR)/73.Po nes/boards/$(DEPDIR)/75.Po \
+ nes/boards/$(DEPDIR)/76.Po nes/boards/$(DEPDIR)/77.Po \
+ nes/boards/$(DEPDIR)/78.Po nes/boards/$(DEPDIR)/8.Po \
+ nes/boards/$(DEPDIR)/80.Po nes/boards/$(DEPDIR)/82.Po \
+ nes/boards/$(DEPDIR)/8237.Po nes/boards/$(DEPDIR)/86.Po \
+ nes/boards/$(DEPDIR)/87.Po nes/boards/$(DEPDIR)/88.Po \
+ nes/boards/$(DEPDIR)/89.Po nes/boards/$(DEPDIR)/90.Po \
+ nes/boards/$(DEPDIR)/92.Po nes/boards/$(DEPDIR)/93.Po \
+ nes/boards/$(DEPDIR)/94.Po nes/boards/$(DEPDIR)/95.Po \
+ nes/boards/$(DEPDIR)/96.Po nes/boards/$(DEPDIR)/97.Po \
+ nes/boards/$(DEPDIR)/99.Po nes/boards/$(DEPDIR)/codemasters.Po \
+ nes/boards/$(DEPDIR)/colordreams.Po \
+ nes/boards/$(DEPDIR)/deirom.Po nes/boards/$(DEPDIR)/emu2413.Po \
+ nes/boards/$(DEPDIR)/ffe.Po nes/boards/$(DEPDIR)/fme7.Po \
+ nes/boards/$(DEPDIR)/h2288.Po nes/boards/$(DEPDIR)/malee.Po \
+ nes/boards/$(DEPDIR)/maxicart.Po nes/boards/$(DEPDIR)/mmc1.Po \
+ nes/boards/$(DEPDIR)/mmc2and4.Po nes/boards/$(DEPDIR)/mmc3.Po \
+ nes/boards/$(DEPDIR)/mmc5.Po nes/boards/$(DEPDIR)/n106.Po \
+ nes/boards/$(DEPDIR)/nina06.Po nes/boards/$(DEPDIR)/novel.Po \
+ nes/boards/$(DEPDIR)/sachen.Po nes/boards/$(DEPDIR)/simple.Po \
+ nes/boards/$(DEPDIR)/super24.Po \
+ nes/boards/$(DEPDIR)/supervision.Po \
+ nes/boards/$(DEPDIR)/tengen.Po nes/boards/$(DEPDIR)/vrc6.Po \
+ nes/boards/$(DEPDIR)/vrc7.Po nes/input/$(DEPDIR)/arkanoid.Po \
+ nes/input/$(DEPDIR)/bbattler2.Po nes/input/$(DEPDIR)/cursor.Po \
+ nes/input/$(DEPDIR)/fkb.Po nes/input/$(DEPDIR)/ftrainer.Po \
+ nes/input/$(DEPDIR)/hypershot.Po \
+ nes/input/$(DEPDIR)/mahjong.Po nes/input/$(DEPDIR)/oekakids.Po \
+ nes/input/$(DEPDIR)/partytap.Po \
+ nes/input/$(DEPDIR)/powerpad.Po nes/input/$(DEPDIR)/shadow.Po \
+ nes/input/$(DEPDIR)/suborkb.Po nes/input/$(DEPDIR)/toprider.Po \
+ nes/input/$(DEPDIR)/zapper.Po nes/ntsc/$(DEPDIR)/nes_ntsc.Po \
+ nes/ppu/$(DEPDIR)/palette.Po nes/ppu/$(DEPDIR)/ppu.Po \
+ net/$(DEPDIR)/Net.Po net/$(DEPDIR)/Net_POSIX.Po \
+ net/$(DEPDIR)/Net_WS2.Po ngp/$(DEPDIR)/libngp_a-T6W28_Apu.Po \
+ ngp/$(DEPDIR)/libngp_a-Z80_interface.Po \
+ ngp/$(DEPDIR)/libngp_a-bios.Po \
+ ngp/$(DEPDIR)/libngp_a-biosHLE.Po \
+ ngp/$(DEPDIR)/libngp_a-dma.Po ngp/$(DEPDIR)/libngp_a-flash.Po \
+ ngp/$(DEPDIR)/libngp_a-gfx.Po \
+ ngp/$(DEPDIR)/libngp_a-gfx_scanline_colour.Po \
+ ngp/$(DEPDIR)/libngp_a-gfx_scanline_mono.Po \
+ ngp/$(DEPDIR)/libngp_a-interrupt.Po \
+ ngp/$(DEPDIR)/libngp_a-mem.Po ngp/$(DEPDIR)/libngp_a-neopop.Po \
+ ngp/$(DEPDIR)/libngp_a-rom.Po ngp/$(DEPDIR)/libngp_a-rtc.Po \
+ ngp/$(DEPDIR)/libngp_a-sound.Po \
+ ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret.Po \
+ ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_dst.Po \
+ ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_reg.Po \
+ ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_single.Po \
+ ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_src.Po \
+ ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_registers.Po \
+ pce/$(DEPDIR)/debug.Po pce/$(DEPDIR)/dis6280.Po \
+ pce/$(DEPDIR)/hes.Po pce/$(DEPDIR)/huc.Po \
+ pce/$(DEPDIR)/huc6280.Po pce/$(DEPDIR)/input.Po \
+ pce/$(DEPDIR)/mcgenjin.Po pce/$(DEPDIR)/pce.Po \
+ pce/$(DEPDIR)/pcecd.Po pce/$(DEPDIR)/tsushin.Po \
+ pce/$(DEPDIR)/vce.Po pce/input/$(DEPDIR)/gamepad.Po \
+ pce/input/$(DEPDIR)/mouse.Po pce/input/$(DEPDIR)/tsushinkb.Po \
+ pce_fast/$(DEPDIR)/hes.Po pce_fast/$(DEPDIR)/huc.Po \
+ pce_fast/$(DEPDIR)/huc6280.Po pce_fast/$(DEPDIR)/input.Po \
+ pce_fast/$(DEPDIR)/pce.Po pce_fast/$(DEPDIR)/pcecd.Po \
+ pce_fast/$(DEPDIR)/pcecd_drive.Po pce_fast/$(DEPDIR)/psg.Po \
+ pce_fast/$(DEPDIR)/vdc.Po pcfx/$(DEPDIR)/debug.Po \
+ pcfx/$(DEPDIR)/fxscsi.Po pcfx/$(DEPDIR)/huc6273.Po \
+ pcfx/$(DEPDIR)/idct.Po pcfx/$(DEPDIR)/input.Po \
+ pcfx/$(DEPDIR)/interrupt.Po pcfx/$(DEPDIR)/king.Po \
+ pcfx/$(DEPDIR)/pcfx.Po pcfx/$(DEPDIR)/rainbow.Po \
+ pcfx/$(DEPDIR)/soundbox.Po pcfx/$(DEPDIR)/timer.Po \
+ pcfx/input/$(DEPDIR)/gamepad.Po pcfx/input/$(DEPDIR)/mouse.Po \
+ psx/$(DEPDIR)/cdc.Po psx/$(DEPDIR)/cpu.Po \
+ psx/$(DEPDIR)/debug.Po psx/$(DEPDIR)/dis.Po \
+ psx/$(DEPDIR)/dma.Po psx/$(DEPDIR)/frontio.Po \
+ psx/$(DEPDIR)/gpu.Po psx/$(DEPDIR)/gpu_line.Po \
+ psx/$(DEPDIR)/gpu_polygon.Po psx/$(DEPDIR)/gpu_sprite.Po \
+ psx/$(DEPDIR)/gte.Po psx/$(DEPDIR)/irq.Po \
+ psx/$(DEPDIR)/mdec.Po psx/$(DEPDIR)/psx.Po \
+ psx/$(DEPDIR)/sio.Po psx/$(DEPDIR)/spu.Po \
+ psx/$(DEPDIR)/timer.Po psx/input/$(DEPDIR)/dualanalog.Po \
+ psx/input/$(DEPDIR)/dualshock.Po \
+ psx/input/$(DEPDIR)/gamepad.Po psx/input/$(DEPDIR)/guncon.Po \
+ psx/input/$(DEPDIR)/justifier.Po \
+ psx/input/$(DEPDIR)/memcard.Po psx/input/$(DEPDIR)/mouse.Po \
+ psx/input/$(DEPDIR)/multitap.Po psx/input/$(DEPDIR)/negcon.Po \
+ quicklz/$(DEPDIR)/libmdfnquicklz_a-quicklz.Po \
+ resampler/$(DEPDIR)/resample.Po sms/$(DEPDIR)/cart.Po \
+ sms/$(DEPDIR)/memz80.Po sms/$(DEPDIR)/pio.Po \
+ sms/$(DEPDIR)/render.Po sms/$(DEPDIR)/romdb.Po \
+ sms/$(DEPDIR)/sms.Po sms/$(DEPDIR)/sound.Po \
+ sms/$(DEPDIR)/system.Po sms/$(DEPDIR)/tms.Po \
+ sms/$(DEPDIR)/vdp.Po snes/$(DEPDIR)/libsnes_a-interface.Po \
+ snes/src/cartridge/$(DEPDIR)/libsnes_a-cartridge.Po \
+ snes/src/cheat/$(DEPDIR)/libsnes_a-cheat.Po \
+ snes/src/chip/bsx/$(DEPDIR)/libsnes_a-bsx.Po \
+ snes/src/chip/cx4/$(DEPDIR)/libsnes_a-cx4.Po \
+ snes/src/chip/dsp1/$(DEPDIR)/libsnes_a-dsp1.Po \
+ snes/src/chip/dsp2/$(DEPDIR)/libsnes_a-dsp2.Po \
+ snes/src/chip/dsp3/$(DEPDIR)/libsnes_a-dsp3.Po \
+ snes/src/chip/dsp4/$(DEPDIR)/libsnes_a-dsp4.Po \
+ snes/src/chip/obc1/$(DEPDIR)/libsnes_a-obc1.Po \
+ snes/src/chip/sa1/$(DEPDIR)/libsnes_a-sa1.Po \
+ snes/src/chip/sdd1/$(DEPDIR)/libsnes_a-sdd1.Po \
+ snes/src/chip/spc7110/$(DEPDIR)/libsnes_a-spc7110.Po \
+ snes/src/chip/srtc/$(DEPDIR)/libsnes_a-srtc.Po \
+ snes/src/chip/st010/$(DEPDIR)/libsnes_a-st010.Po \
+ snes/src/chip/superfx/$(DEPDIR)/libsnes_a-superfx.Po \
+ snes/src/cpu/$(DEPDIR)/libsnes_a-cpu.Po \
+ snes/src/cpu/core/$(DEPDIR)/libsnes_a-core.Po \
+ snes/src/cpu/scpu/$(DEPDIR)/libsnes_a-scpu.Po \
+ snes/src/lib/libco/$(DEPDIR)/libsnes_a-libco.Po \
+ snes/src/memory/$(DEPDIR)/libsnes_a-memory.Po \
+ snes/src/memory/smemory/$(DEPDIR)/libsnes_a-smemory.Po \
+ snes/src/ppu/$(DEPDIR)/libsnes_a-ppu.Po \
+ snes/src/sdsp/$(DEPDIR)/libsnes_a-sdsp.Po \
+ snes/src/smp/$(DEPDIR)/libsnes_a-smp.Po \
+ snes/src/system/$(DEPDIR)/libsnes_a-system.Po \
+ snes_faust/$(DEPDIR)/apu.Po snes_faust/$(DEPDIR)/cart.Po \
+ snes_faust/$(DEPDIR)/cpu.Po snes_faust/$(DEPDIR)/debug.Po \
+ snes_faust/$(DEPDIR)/dis65816.Po snes_faust/$(DEPDIR)/input.Po \
+ snes_faust/$(DEPDIR)/msu1.Po snes_faust/$(DEPDIR)/ppu.Po \
+ snes_faust/$(DEPDIR)/ppu_mt.Po \
+ snes_faust/$(DEPDIR)/ppu_mtrender.Po \
+ snes_faust/$(DEPDIR)/ppu_st.Po snes_faust/$(DEPDIR)/snes.Po \
+ snes_faust/cart/$(DEPDIR)/cx4.Po \
+ snes_faust/cart/$(DEPDIR)/dsp1.Po \
+ snes_faust/cart/$(DEPDIR)/dsp2.Po \
+ snes_faust/cart/$(DEPDIR)/sa1.Po \
+ snes_faust/cart/$(DEPDIR)/sa1cpu.Po \
+ snes_faust/cart/$(DEPDIR)/sdd1.Po \
+ snes_faust/cart/$(DEPDIR)/superfx.Po \
+ sound/$(DEPDIR)/Blip_Buffer.Po sound/$(DEPDIR)/DSPUtility.Po \
+ sound/$(DEPDIR)/Fir_Resampler.Po \
+ sound/$(DEPDIR)/OwlResampler.Po \
+ sound/$(DEPDIR)/Stereo_Buffer.Po \
+ sound/$(DEPDIR)/SwiftResampler.Po sound/$(DEPDIR)/WAVRecord.Po \
+ sound/$(DEPDIR)/okiadpcm.Po string/$(DEPDIR)/escape.Po \
+ string/$(DEPDIR)/string.Po \
+ tremor/$(DEPDIR)/libvorbisidec_a-bitwise.Po \
+ tremor/$(DEPDIR)/libvorbisidec_a-block.Po \
+ tremor/$(DEPDIR)/libvorbisidec_a-codebook.Po \
+ tremor/$(DEPDIR)/libvorbisidec_a-floor0.Po \
+ tremor/$(DEPDIR)/libvorbisidec_a-floor1.Po \
+ tremor/$(DEPDIR)/libvorbisidec_a-framing.Po \
+ tremor/$(DEPDIR)/libvorbisidec_a-info.Po \
+ tremor/$(DEPDIR)/libvorbisidec_a-mapping0.Po \
+ tremor/$(DEPDIR)/libvorbisidec_a-mdct.Po \
+ tremor/$(DEPDIR)/libvorbisidec_a-registry.Po \
+ tremor/$(DEPDIR)/libvorbisidec_a-res012.Po \
+ tremor/$(DEPDIR)/libvorbisidec_a-sharedbook.Po \
+ tremor/$(DEPDIR)/libvorbisidec_a-synthesis.Po \
+ tremor/$(DEPDIR)/libvorbisidec_a-vorbisfile.Po \
+ tremor/$(DEPDIR)/libvorbisidec_a-window.Po \
+ trio/$(DEPDIR)/libtrio_a-trio.Po \
+ trio/$(DEPDIR)/libtrio_a-trionan.Po \
+ trio/$(DEPDIR)/libtrio_a-triostr.Po vb/$(DEPDIR)/debug.Po \
+ vb/$(DEPDIR)/input.Po vb/$(DEPDIR)/timer.Po vb/$(DEPDIR)/vb.Po \
+ vb/$(DEPDIR)/vip.Po vb/$(DEPDIR)/vsu.Po \
+ video/$(DEPDIR)/Deinterlacer.Po \
+ video/$(DEPDIR)/Deinterlacer_Blend.Po \
+ video/$(DEPDIR)/Deinterlacer_Simple.Po \
+ video/$(DEPDIR)/font-data-12x13.Po \
+ video/$(DEPDIR)/font-data-18x18.Po \
+ video/$(DEPDIR)/font-data.Po video/$(DEPDIR)/png.Po \
+ video/$(DEPDIR)/primitives.Po video/$(DEPDIR)/resize.Po \
+ video/$(DEPDIR)/surface.Po video/$(DEPDIR)/tblur.Po \
+ video/$(DEPDIR)/text.Po video/$(DEPDIR)/video.Po \
+ wswan/$(DEPDIR)/comm.Po wswan/$(DEPDIR)/debug.Po \
+ wswan/$(DEPDIR)/eeprom.Po wswan/$(DEPDIR)/gfx.Po \
+ wswan/$(DEPDIR)/interrupt.Po wswan/$(DEPDIR)/main.Po \
+ wswan/$(DEPDIR)/memory.Po wswan/$(DEPDIR)/rtc.Po \
+ wswan/$(DEPDIR)/sound.Po wswan/$(DEPDIR)/tcache.Po \
+ wswan/$(DEPDIR)/v30mz.Po wswan/dis/$(DEPDIR)/dis_decode.Po \
+ wswan/dis/$(DEPDIR)/dis_groups.Po \
+ wswan/dis/$(DEPDIR)/resolve.Po wswan/dis/$(DEPDIR)/syntax.Po
am__mv = mv -f
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -1060,7 +1337,7 @@
$(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
- distdir
+ distdir distdir-am
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
@@ -1081,6 +1358,43 @@
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = drivers drivers_dos drivers_libxxx sexyal ss
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+ $(srcdir)/apple2/Makefile.am.inc \
+ $(srcdir)/cdplay/Makefile.am.inc \
+ $(srcdir)/cdrom/Makefile.am.inc \
+ $(srcdir)/cheat_formats/Makefile.am.inc \
+ $(srcdir)/compress/Makefile.am.inc \
+ $(srcdir)/cputest/Makefile.am.inc \
+ $(srcdir)/demo/Makefile.am.inc \
+ $(srcdir)/desa68/Makefile.am.inc $(srcdir)/gb/Makefile.am.inc \
+ $(srcdir)/gba/Makefile.am.inc $(srcdir)/hash/Makefile.am.inc \
+ $(srcdir)/hw_cpu/Makefile.am.inc \
+ $(srcdir)/hw_misc/Makefile.am.inc \
+ $(srcdir)/hw_sound/Makefile.am.inc \
+ $(srcdir)/hw_video/Makefile.am.inc \
+ $(srcdir)/lynx/Makefile.am.inc $(srcdir)/md/Makefile.am.inc \
+ $(srcdir)/minilzo/Makefile.am.inc \
+ $(srcdir)/mpcdec/Makefile.am.inc \
+ $(srcdir)/mthreading/Makefile.am.inc \
+ $(srcdir)/nes/Makefile.am.inc \
+ $(srcdir)/nes/boards/Makefile.am.inc \
+ $(srcdir)/nes/input/Makefile.am.inc \
+ $(srcdir)/nes/ppu/Makefile.am.inc \
+ $(srcdir)/net/Makefile.am.inc $(srcdir)/ngp/Makefile.am.inc \
+ $(srcdir)/pce/Makefile.am.inc \
+ $(srcdir)/pce_fast/Makefile.am.inc \
+ $(srcdir)/pcfx/Makefile.am.inc $(srcdir)/psx/Makefile.am.inc \
+ $(srcdir)/quicklz/Makefile.am.inc \
+ $(srcdir)/resampler/Makefile.am.inc \
+ $(srcdir)/sms/Makefile.am.inc $(srcdir)/snes/Makefile.am.inc \
+ $(srcdir)/snes_faust/Makefile.am.inc \
+ $(srcdir)/sound/Makefile.am.inc \
+ $(srcdir)/string/Makefile.am.inc \
+ $(srcdir)/tremor/Makefile.am.inc \
+ $(srcdir)/trio/Makefile.am.inc $(srcdir)/vb/Makefile.am.inc \
+ $(srcdir)/video/Makefile.am.inc \
+ $(srcdir)/wswan/Makefile.am.inc $(top_srcdir)/depcomp \
+ $(top_srcdir)/mkinstalldirs
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
@@ -1280,6 +1594,7 @@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@@ -1467,16 +1782,15 @@
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu src/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);; \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
-$(srcdir)/cdplay/Makefile.am.inc $(srcdir)/demo/Makefile.am.inc $(srcdir)/apple2/Makefile.am.inc $(srcdir)/gb/Makefile.am.inc $(srcdir)/gba/Makefile.am.inc $(srcdir)/lynx/Makefile.am.inc $(srcdir)/md/Makefile.am.inc $(srcdir)/nes/Makefile.am.inc $(srcdir)/nes/ppu/Makefile.am.inc $(srcdir)/nes/boards/Makefile.am.inc $(srcdir)/nes/input/Makefile.am.inc $(srcdir)/ngp/Makefile.am.inc $(srcdir)/pce/Makefile.am.inc $(srcdir)/pce_fast/Makefile.am.inc $(srcdir)/pcfx/Makefile.am.inc $(srcdir)/psx/Makefile.am.inc $(srcdir)/sms/Makefile.am.inc $(srcdir)/snes/Makefile.am.inc $(srcdir)/snes_faust/Makefile.am.inc $(srcdir)/vb/Makefile.am.inc $(srcdir)/wswan/Makefile.am.inc $(srcdir)/desa68/Makefile.am.inc $(srcdir)/hw_cpu/Makefile.am.inc $(srcdir)/hw_misc/Makefile.am.inc $(srcdir)/hw_sound/Makefile.am.inc $(srcdir)/hw_video/Makefile.am.inc $(srcdir)/mthreading/Makefile.am.inc $(srcdir)/cdrom/Makefile.am.inc $(srcdir)/sound/Makefile.am.inc $(srcdir)/net/Makefile.am.inc $(srcdir)/quicklz/Makefile.am.inc $(srcdir)/compress/Makefile.am.inc $(srcdir)/hash/Makefile.am.inc $(srcdir)/string/Makefile.am.inc $(srcdir)/video/Makefile.am.inc $(srcdir)/resampler/Makefile.am.inc $(srcdir)/cputest/Makefile.am.inc $(srcdir)/cheat_formats/Makefile.am.inc $(srcdir)/minilzo/Makefile.am.inc $(srcdir)/tremor/Makefile.am.inc $(srcdir)/mpcdec/Makefile.am.inc $(srcdir)/trio/Makefile.am.inc:
+$(srcdir)/cdplay/Makefile.am.inc $(srcdir)/demo/Makefile.am.inc $(srcdir)/apple2/Makefile.am.inc $(srcdir)/gb/Makefile.am.inc $(srcdir)/gba/Makefile.am.inc $(srcdir)/lynx/Makefile.am.inc $(srcdir)/md/Makefile.am.inc $(srcdir)/nes/Makefile.am.inc $(srcdir)/nes/ppu/Makefile.am.inc $(srcdir)/nes/boards/Makefile.am.inc $(srcdir)/nes/input/Makefile.am.inc $(srcdir)/ngp/Makefile.am.inc $(srcdir)/pce/Makefile.am.inc $(srcdir)/pce_fast/Makefile.am.inc $(srcdir)/pcfx/Makefile.am.inc $(srcdir)/psx/Makefile.am.inc $(srcdir)/sms/Makefile.am.inc $(srcdir)/snes/Makefile.am.inc $(srcdir)/snes_faust/Makefile.am.inc $(srcdir)/vb/Makefile.am.inc $(srcdir)/wswan/Makefile.am.inc $(srcdir)/desa68/Makefile.am.inc $(srcdir)/hw_cpu/Makefile.am.inc $(srcdir)/hw_misc/Makefile.am.inc $(srcdir)/hw_sound/Makefile.am.inc $(srcdir)/hw_video/Makefile.am.inc $(srcdir)/mthreading/Makefile.am.inc $(srcdir)/cdrom/Makefile.am.inc $(srcdir)/sound/Makefile.am.inc $(srcdir)/net/Makefile.am.inc $(srcdir)/quicklz/Makefile.am.inc $(srcdir)/compress/Makefile.am.inc $(srcdir)/hash/Makefile.am.inc $(srcdir)/string/Makefile.am.inc $(srcdir)/video/Makefile.am.inc $(srcdir)/resampler/Makefile.am.inc $(srcdir)/cputest/Makefile.am.inc $(srcdir)/cheat_formats/Makefile.am.inc $(srcdir)/minilzo/Makefile.am.inc $(srcdir)/tremor/Makefile.am.inc $(srcdir)/mpcdec/Makefile.am.inc $(srcdir)/trio/Makefile.am.inc $(am__empty):
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -1486,6 +1800,48 @@
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+ fi; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p \
+ ; then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' \
+ -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' \
+ `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
@@ -1901,48 +2257,6 @@
$(AM_V_at)-rm -f libvorbisidec.a
$(AM_V_AR)$(libvorbisidec_a_AR) libvorbisidec.a $(libvorbisidec_a_OBJECTS) $(libvorbisidec_a_LIBADD)
$(AM_V_at)$(RANLIB) libvorbisidec.a
-install-binPROGRAMS: $(bin_PROGRAMS)
- @$(NORMAL_INSTALL)
- @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
- fi; \
- for p in $$list; do echo "$$p $$p"; done | \
- sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p \
- ; then echo "$$p"; echo "$$p"; else :; fi; \
- done | \
- sed -e 'p;s,.*/,,;n;h' \
- -e 's|.*|.|' \
- -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
- sed 'N;N;N;s,\n, ,g' | \
- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
- if ($$2 == $$4) files[d] = files[d] " " $$1; \
- else { print "f", $$3 "/" $$4, $$1; } } \
- END { for (d in files) print "f", d, files[d] }' | \
- while read type dir files; do \
- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
- test -z "$$files" || { \
- echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
- $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-binPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' \
- `; \
- test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-clean-binPROGRAMS:
- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
drivers/$(am__dirstamp):
@$(MKDIR_P) drivers
@: > drivers/$(am__dirstamp)
@@ -3029,492 +3343,498 @@
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ExtMemStream.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FileStream.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IPSPatcher.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MTStreamReader.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MemoryStream.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NativeVFS.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PSFLoader.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SNSFLoader.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SPCReader.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSFLoader.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Stream.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Time.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VirtualFS.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/endian.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/general.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/git.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mednafen.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mempatcher.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movie.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netplay.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/player.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qtrecord.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/settings.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/state.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/state_rewind.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tests.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win32-common.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@apple2/$(DEPDIR)/apple2.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdplay/$(DEPDIR)/cdplay.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAFReader.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAFReader_MPC.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAFReader_SF.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAFReader_Vorbis.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAccess.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAccess_CCD.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAccess_Image.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDInterface.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDInterface_MT.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDInterface_ST.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDUtility.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/crc32.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/galois.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/l-ec.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/lec.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/recover-raw.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/scsicd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cheat_formats/$(DEPDIR)/gb.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cheat_formats/$(DEPDIR)/psx.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cheat_formats/$(DEPDIR)/snes.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@compress/$(DEPDIR)/GZFileStream.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@compress/$(DEPDIR)/ZIPReader.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@compress/$(DEPDIR)/ZLInflateFilter.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cputest/$(DEPDIR)/cputest.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cputest/$(DEPDIR)/ppc_cpu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cputest/$(DEPDIR)/x86_cpu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@demo/$(DEPDIR)/demo.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@desa68/$(DEPDIR)/libdesa68_a-desa68.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gb/$(DEPDIR)/gb.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gb/$(DEPDIR)/gbGlobals.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gb/$(DEPDIR)/gfx.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gb/$(DEPDIR)/memory.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gb/$(DEPDIR)/sound.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gb/$(DEPDIR)/z80.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/GBA.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/GBAinline.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Gfx.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Globals.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Mode0.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Mode1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Mode2.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Mode3.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Mode4.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Mode5.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/RTC.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Sound.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/arm.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/bios.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/eeprom.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/flash.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/sram.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/thumb.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hash/$(DEPDIR)/crc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hash/$(DEPDIR)/md5.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hash/$(DEPDIR)/sha1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hash/$(DEPDIR)/sha256.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hw_cpu/m68k/$(DEPDIR)/m68k.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hw_cpu/v810/$(DEPDIR)/v810_cpu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hw_cpu/v810/$(DEPDIR)/v810_cpuD.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hw_cpu/v810/$(DEPDIR)/v810_fp_ops.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hw_cpu/z80-fuse/$(DEPDIR)/z80.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hw_cpu/z80-fuse/$(DEPDIR)/z80_ops.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hw_misc/arcade_card/$(DEPDIR)/arcade_card.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hw_sound/gb_apu/$(DEPDIR)/Gb_Apu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hw_sound/gb_apu/$(DEPDIR)/Gb_Apu_State.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hw_sound/gb_apu/$(DEPDIR)/Gb_Oscs.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hw_sound/pce_psg/$(DEPDIR)/pce_psg.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hw_sound/sms_apu/$(DEPDIR)/Sms_Apu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hw_sound/ym2413/$(DEPDIR)/emu2413.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hw_sound/ym2612/$(DEPDIR)/Ym2612_Emu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@hw_video/huc6270/$(DEPDIR)/vdc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/c65c02.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/cart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/memmap.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/mikie.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/ram.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/rom.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/susie.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/system.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/debug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/genesis.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/genio.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/header.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/mem68k.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/membnk.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/memvdp.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/memz80.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/sound.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/system.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/vdp.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/cart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_eeprom.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_ff.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_realtec.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_rmx3.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_rom.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_sbb.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_sram.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_ssf2.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_svp.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_yase.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cd/$(DEPDIR)/cd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cd/$(DEPDIR)/cdc_cdd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cd/$(DEPDIR)/interrupt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cd/$(DEPDIR)/pcm.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/cd/$(DEPDIR)/timer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/input/$(DEPDIR)/4way.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/input/$(DEPDIR)/gamepad.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/input/$(DEPDIR)/megamouse.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@md/input/$(DEPDIR)/multitap.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@minilzo/$(DEPDIR)/minilzo.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-crc32.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-huffman.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-mpc_bits_reader.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-mpc_decoder.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-mpc_demux.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-mpc_reader.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-requant.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-streaminfo.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-synth_filter.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@mthreading/$(DEPDIR)/MThreading_POSIX.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@mthreading/$(DEPDIR)/MThreading_Win32.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/cart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/debug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/dis6502.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/fds-sound.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/fds.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/ines.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/input.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/nes.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/nsf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/nsfe.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/sound.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/unif.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/vsuni.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/x6502.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/107.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/112.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/113.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/114.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/117.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/140.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/15.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/151.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/152.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/156.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/16.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/163.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/18.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/180.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/182.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/184.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/185.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/187.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/189.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/190.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/193.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/208.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/21.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/22.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/222.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/228.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/23.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/232.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/234.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/240.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/241.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/242.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/244.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/246.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/248.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/25.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/30.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/32.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/33.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/34.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/38.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/40.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/41.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/42.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/46.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/51.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/65.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/67.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/68.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/70.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/72.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/73.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/75.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/76.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/77.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/78.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/8.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/80.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/82.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/8237.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/86.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/87.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/88.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/89.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/90.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/92.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/93.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/94.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/95.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/96.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/97.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/99.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/codemasters.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/colordreams.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/deirom.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/emu2413.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/ffe.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/fme7.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/h2288.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/malee.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/maxicart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/mmc1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/mmc2and4.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/mmc3.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/mmc5.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/n106.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/nina06.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/novel.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/sachen.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/simple.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/super24.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/supervision.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/tengen.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/vrc6.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/vrc7.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/arkanoid.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/bbattler2.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/cursor.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/fkb.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/ftrainer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/hypershot.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/mahjong.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/oekakids.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/partytap.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/powerpad.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/shadow.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/suborkb.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/toprider.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/zapper.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/ntsc/$(DEPDIR)/nes_ntsc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/ppu/$(DEPDIR)/palette.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@nes/ppu/$(DEPDIR)/ppu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@net/$(DEPDIR)/Net.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@net/$(DEPDIR)/Net_POSIX.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@net/$(DEPDIR)/Net_WS2.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-T6W28_Apu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-Z80_interface.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-bios.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-biosHLE.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-dma.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-flash.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-gfx.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-gfx_scanline_colour.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-gfx_scanline_mono.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-interrupt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-mem.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-neopop.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-rom.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-rtc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-sound.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_dst.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_reg.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_single.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_src.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_registers.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/debug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/dis6280.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/hes.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/huc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/huc6280.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/input.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/mcgenjin.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/pce.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/pcecd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/tsushin.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/vce.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce/input/$(DEPDIR)/gamepad.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce/input/$(DEPDIR)/mouse.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce/input/$(DEPDIR)/tsushinkb.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/hes.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/huc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/huc6280.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/input.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/pce.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/pcecd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/pcecd_drive.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/psg.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/vdc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/debug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/fxscsi.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/huc6273.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/idct.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/input.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/interrupt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/king.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/pcfx.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/rainbow.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/soundbox.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/timer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pcfx/input/$(DEPDIR)/gamepad.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@pcfx/input/$(DEPDIR)/mouse.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/cdc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/cpu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/debug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/dis.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/dma.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/frontio.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/gpu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/gpu_line.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/gpu_polygon.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/gpu_sprite.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/gte.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/irq.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/mdec.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/psx.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/sio.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/spu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/timer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/dualanalog.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/dualshock.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/gamepad.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/guncon.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/justifier.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/memcard.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/mouse.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/multitap.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/negcon.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@quicklz/$(DEPDIR)/libmdfnquicklz_a-quicklz.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@resampler/$(DEPDIR)/resample.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/cart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/memz80.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/pio.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/render.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/romdb.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/sms.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/sound.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/system.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/tms.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/vdp.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/$(DEPDIR)/libsnes_a-interface.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/cartridge/$(DEPDIR)/libsnes_a-cartridge.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/cheat/$(DEPDIR)/libsnes_a-cheat.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/bsx/$(DEPDIR)/libsnes_a-bsx.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/cx4/$(DEPDIR)/libsnes_a-cx4.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/dsp1/$(DEPDIR)/libsnes_a-dsp1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/dsp2/$(DEPDIR)/libsnes_a-dsp2.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/dsp3/$(DEPDIR)/libsnes_a-dsp3.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/dsp4/$(DEPDIR)/libsnes_a-dsp4.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/obc1/$(DEPDIR)/libsnes_a-obc1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/sa1/$(DEPDIR)/libsnes_a-sa1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/sdd1/$(DEPDIR)/libsnes_a-sdd1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/spc7110/$(DEPDIR)/libsnes_a-spc7110.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/srtc/$(DEPDIR)/libsnes_a-srtc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/st010/$(DEPDIR)/libsnes_a-st010.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/superfx/$(DEPDIR)/libsnes_a-superfx.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/cpu/$(DEPDIR)/libsnes_a-cpu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/cpu/core/$(DEPDIR)/libsnes_a-core.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/cpu/scpu/$(DEPDIR)/libsnes_a-scpu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/lib/libco/$(DEPDIR)/libsnes_a-libco.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/memory/$(DEPDIR)/libsnes_a-memory.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/memory/smemory/$(DEPDIR)/libsnes_a-smemory.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/ppu/$(DEPDIR)/libsnes_a-ppu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/sdsp/$(DEPDIR)/libsnes_a-sdsp.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/smp/$(DEPDIR)/libsnes_a-smp.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes/src/system/$(DEPDIR)/libsnes_a-system.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/apu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/cart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/cpu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/debug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/dis65816.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/input.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/msu1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/ppu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/ppu_mt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/ppu_mtrender.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/ppu_st.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/snes.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/cart/$(DEPDIR)/cx4.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/cart/$(DEPDIR)/dsp1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/cart/$(DEPDIR)/dsp2.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/cart/$(DEPDIR)/sa1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/cart/$(DEPDIR)/sa1cpu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/cart/$(DEPDIR)/sdd1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/cart/$(DEPDIR)/superfx.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/Blip_Buffer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/DSPUtility.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/Fir_Resampler.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/OwlResampler.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/Stereo_Buffer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/SwiftResampler.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/WAVRecord.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/okiadpcm.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/escape.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/string.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-bitwise.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-block.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-codebook.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-floor0.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-floor1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-framing.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-info.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-mapping0.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-mdct.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-registry.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-res012.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-sharedbook.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-synthesis.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-vorbisfile.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-window.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@trio/$(DEPDIR)/libtrio_a-trio.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@trio/$(DEPDIR)/libtrio_a-trionan.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@trio/$(DEPDIR)/libtrio_a-triostr.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@vb/$(DEPDIR)/debug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@vb/$(DEPDIR)/input.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@vb/$(DEPDIR)/timer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@vb/$(DEPDIR)/vb.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@vb/$(DEPDIR)/vip.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@vb/$(DEPDIR)/vsu.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/Deinterlacer.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/Deinterlacer_Blend.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/Deinterlacer_Simple.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/font-data-12x13.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/font-data-18x18.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/font-data.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/png.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/primitives.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/resize.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/surface.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/tblur.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/text.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/video.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/comm.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/debug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/eeprom.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/gfx.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/interrupt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/main.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/memory.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/rtc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/sound.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/tcache.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/v30mz.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wswan/dis/$(DEPDIR)/dis_decode.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wswan/dis/$(DEPDIR)/dis_groups.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wswan/dis/$(DEPDIR)/resolve.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wswan/dis/$(DEPDIR)/syntax.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ExtMemStream.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FileStream.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IPSPatcher.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MTStreamReader.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MemoryStream.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NativeVFS.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PSFLoader.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SNSFLoader.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SPCReader.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSFLoader.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Stream.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Time.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VirtualFS.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/endian.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/general.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/git.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mednafen.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mempatcher.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/movie.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netplay.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/player.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qtrecord.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/settings.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/state.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/state_rewind.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tests.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win32-common.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@apple2/$(DEPDIR)/apple2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdplay/$(DEPDIR)/cdplay.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAFReader.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAFReader_MPC.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAFReader_SF.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAFReader_Vorbis.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAccess.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAccess_CCD.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDAccess_Image.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDInterface.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDInterface_MT.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDInterface_ST.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/CDUtility.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/crc32.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/galois.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/l-ec.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/lec.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/recover-raw.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cdrom/$(DEPDIR)/scsicd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cheat_formats/$(DEPDIR)/gb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cheat_formats/$(DEPDIR)/psx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cheat_formats/$(DEPDIR)/snes.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@compress/$(DEPDIR)/GZFileStream.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@compress/$(DEPDIR)/ZIPReader.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@compress/$(DEPDIR)/ZLInflateFilter.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cputest/$(DEPDIR)/cputest.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cputest/$(DEPDIR)/ppc_cpu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cputest/$(DEPDIR)/x86_cpu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@demo/$(DEPDIR)/demo.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@desa68/$(DEPDIR)/libdesa68_a-desa68.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gb/$(DEPDIR)/gb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gb/$(DEPDIR)/gbGlobals.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gb/$(DEPDIR)/gfx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gb/$(DEPDIR)/memory.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gb/$(DEPDIR)/sound.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gb/$(DEPDIR)/z80.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/GBA.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/GBAinline.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Gfx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Globals.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Mode0.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Mode1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Mode2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Mode3.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Mode4.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Mode5.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/RTC.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/Sound.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/arm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/bios.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/eeprom.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/flash.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/sram.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@gba/$(DEPDIR)/thumb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hash/$(DEPDIR)/crc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hash/$(DEPDIR)/md5.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hash/$(DEPDIR)/sha1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hash/$(DEPDIR)/sha256.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hw_cpu/m68k/$(DEPDIR)/m68k.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hw_cpu/v810/$(DEPDIR)/v810_cpu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hw_cpu/v810/$(DEPDIR)/v810_cpuD.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hw_cpu/v810/$(DEPDIR)/v810_fp_ops.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hw_cpu/z80-fuse/$(DEPDIR)/z80.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hw_cpu/z80-fuse/$(DEPDIR)/z80_ops.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hw_misc/arcade_card/$(DEPDIR)/arcade_card.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hw_sound/gb_apu/$(DEPDIR)/Gb_Apu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hw_sound/gb_apu/$(DEPDIR)/Gb_Apu_State.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hw_sound/gb_apu/$(DEPDIR)/Gb_Oscs.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hw_sound/pce_psg/$(DEPDIR)/pce_psg.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hw_sound/sms_apu/$(DEPDIR)/Sms_Apu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hw_sound/ym2413/$(DEPDIR)/emu2413.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hw_sound/ym2612/$(DEPDIR)/Ym2612_Emu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@hw_video/huc6270/$(DEPDIR)/vdc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/c65c02.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/cart.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/memmap.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/mikie.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/ram.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/rom.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/susie.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@lynx/$(DEPDIR)/system.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/debug.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/genesis.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/genio.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/header.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/mem68k.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/membnk.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/memvdp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/memz80.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/sound.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/system.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/$(DEPDIR)/vdp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/cart.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_eeprom.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_ff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_realtec.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_rmx3.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_rom.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_sbb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_sram.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_ssf2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_svp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cart/$(DEPDIR)/map_yase.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cd/$(DEPDIR)/cd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cd/$(DEPDIR)/cdc_cdd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cd/$(DEPDIR)/interrupt.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cd/$(DEPDIR)/pcm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/cd/$(DEPDIR)/timer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/input/$(DEPDIR)/4way.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/input/$(DEPDIR)/gamepad.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/input/$(DEPDIR)/megamouse.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@md/input/$(DEPDIR)/multitap.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@minilzo/$(DEPDIR)/minilzo.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-crc32.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-huffman.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-mpc_bits_reader.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-mpc_decoder.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-mpc_demux.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-mpc_reader.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-requant.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-streaminfo.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@mpcdec/$(DEPDIR)/libmpcdec_a-synth_filter.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@mthreading/$(DEPDIR)/MThreading_POSIX.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@mthreading/$(DEPDIR)/MThreading_Win32.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/cart.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/debug.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/dis6502.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/fds-sound.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/fds.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/ines.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/input.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/nes.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/nsf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/nsfe.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/sound.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/unif.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/vsuni.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/$(DEPDIR)/x6502.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/107.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/112.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/113.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/114.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/117.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/140.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/15.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/151.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/152.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/156.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/16.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/163.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/18.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/180.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/182.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/184.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/185.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/187.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/189.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/190.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/193.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/208.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/21.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/22.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/222.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/228.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/23.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/232.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/234.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/240.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/241.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/242.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/244.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/246.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/248.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/25.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/30.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/32.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/33.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/34.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/38.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/40.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/41.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/42.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/46.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/51.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/65.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/67.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/68.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/70.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/72.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/73.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/75.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/76.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/77.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/78.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/8.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/80.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/82.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/8237.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/86.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/87.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/88.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/89.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/90.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/92.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/93.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/94.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/95.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/96.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/97.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/99.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/codemasters.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/colordreams.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/deirom.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/emu2413.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/ffe.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/fme7.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/h2288.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/malee.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/maxicart.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/mmc1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/mmc2and4.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/mmc3.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/mmc5.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/n106.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/nina06.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/novel.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/sachen.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/simple.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/super24.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/supervision.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/tengen.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/vrc6.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/boards/$(DEPDIR)/vrc7.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/arkanoid.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/bbattler2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/cursor.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/fkb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/ftrainer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/hypershot.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/mahjong.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/oekakids.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/partytap.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/powerpad.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/shadow.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/suborkb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/toprider.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/input/$(DEPDIR)/zapper.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/ntsc/$(DEPDIR)/nes_ntsc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/ppu/$(DEPDIR)/palette.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@nes/ppu/$(DEPDIR)/ppu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@net/$(DEPDIR)/Net.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@net/$(DEPDIR)/Net_POSIX.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@net/$(DEPDIR)/Net_WS2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-T6W28_Apu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-Z80_interface.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-bios.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-biosHLE.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-dma.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-flash.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-gfx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-gfx_scanline_colour.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-gfx_scanline_mono.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-interrupt.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-mem.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-neopop.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-rom.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-rtc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/$(DEPDIR)/libngp_a-sound.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_dst.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_reg.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_single.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_src.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_registers.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/debug.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/dis6280.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/hes.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/huc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/huc6280.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/input.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/mcgenjin.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/pce.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/pcecd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/tsushin.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce/$(DEPDIR)/vce.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce/input/$(DEPDIR)/gamepad.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce/input/$(DEPDIR)/mouse.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce/input/$(DEPDIR)/tsushinkb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/hes.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/huc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/huc6280.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/input.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/pce.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/pcecd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/pcecd_drive.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/psg.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pce_fast/$(DEPDIR)/vdc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/debug.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/fxscsi.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/huc6273.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/idct.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/input.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/interrupt.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/king.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/pcfx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/rainbow.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/soundbox.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pcfx/$(DEPDIR)/timer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pcfx/input/$(DEPDIR)/gamepad.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@pcfx/input/$(DEPDIR)/mouse.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/cdc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/cpu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/debug.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/dis.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/dma.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/frontio.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/gpu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/gpu_line.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/gpu_polygon.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/gpu_sprite.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/gte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/irq.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/mdec.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/psx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/sio.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/spu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/$(DEPDIR)/timer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/dualanalog.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/dualshock.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/gamepad.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/guncon.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/justifier.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/memcard.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/mouse.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/multitap.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@psx/input/$(DEPDIR)/negcon.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@quicklz/$(DEPDIR)/libmdfnquicklz_a-quicklz.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@resampler/$(DEPDIR)/resample.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/cart.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/memz80.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/pio.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/render.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/romdb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/sms.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/sound.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/system.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/tms.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sms/$(DEPDIR)/vdp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/$(DEPDIR)/libsnes_a-interface.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/cartridge/$(DEPDIR)/libsnes_a-cartridge.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/cheat/$(DEPDIR)/libsnes_a-cheat.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/bsx/$(DEPDIR)/libsnes_a-bsx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/cx4/$(DEPDIR)/libsnes_a-cx4.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/dsp1/$(DEPDIR)/libsnes_a-dsp1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/dsp2/$(DEPDIR)/libsnes_a-dsp2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/dsp3/$(DEPDIR)/libsnes_a-dsp3.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/dsp4/$(DEPDIR)/libsnes_a-dsp4.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/obc1/$(DEPDIR)/libsnes_a-obc1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/sa1/$(DEPDIR)/libsnes_a-sa1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/sdd1/$(DEPDIR)/libsnes_a-sdd1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/spc7110/$(DEPDIR)/libsnes_a-spc7110.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/srtc/$(DEPDIR)/libsnes_a-srtc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/st010/$(DEPDIR)/libsnes_a-st010.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/chip/superfx/$(DEPDIR)/libsnes_a-superfx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/cpu/$(DEPDIR)/libsnes_a-cpu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/cpu/core/$(DEPDIR)/libsnes_a-core.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/cpu/scpu/$(DEPDIR)/libsnes_a-scpu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/lib/libco/$(DEPDIR)/libsnes_a-libco.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/memory/$(DEPDIR)/libsnes_a-memory.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/memory/smemory/$(DEPDIR)/libsnes_a-smemory.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/ppu/$(DEPDIR)/libsnes_a-ppu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/sdsp/$(DEPDIR)/libsnes_a-sdsp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/smp/$(DEPDIR)/libsnes_a-smp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes/src/system/$(DEPDIR)/libsnes_a-system.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/apu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/cart.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/cpu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/debug.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/dis65816.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/input.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/msu1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/ppu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/ppu_mt.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/ppu_mtrender.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/ppu_st.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/$(DEPDIR)/snes.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/cart/$(DEPDIR)/cx4.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/cart/$(DEPDIR)/dsp1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/cart/$(DEPDIR)/dsp2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/cart/$(DEPDIR)/sa1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/cart/$(DEPDIR)/sa1cpu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/cart/$(DEPDIR)/sdd1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@snes_faust/cart/$(DEPDIR)/superfx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/Blip_Buffer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/DSPUtility.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/Fir_Resampler.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/OwlResampler.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/Stereo_Buffer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/SwiftResampler.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/WAVRecord.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@sound/$(DEPDIR)/okiadpcm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/escape.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/string.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-bitwise.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-block.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-codebook.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-floor0.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-floor1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-framing.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-info.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-mapping0.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-mdct.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-registry.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-res012.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-sharedbook.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-synthesis.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-vorbisfile.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tremor/$(DEPDIR)/libvorbisidec_a-window.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@trio/$(DEPDIR)/libtrio_a-trio.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@trio/$(DEPDIR)/libtrio_a-trionan.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@trio/$(DEPDIR)/libtrio_a-triostr.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vb/$(DEPDIR)/debug.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vb/$(DEPDIR)/input.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vb/$(DEPDIR)/timer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vb/$(DEPDIR)/vb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vb/$(DEPDIR)/vip.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vb/$(DEPDIR)/vsu.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/Deinterlacer.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/Deinterlacer_Blend.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/Deinterlacer_Simple.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/font-data-12x13.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/font-data-18x18.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/font-data.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/png.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/primitives.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/resize.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/surface.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/tblur.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/text.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@video/$(DEPDIR)/video.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/comm.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/debug.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/eeprom.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/gfx.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/interrupt.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/main.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/memory.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/rtc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/sound.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/tcache.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@wswan/$(DEPDIR)/v30mz.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@wswan/dis/$(DEPDIR)/dis_decode.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@wswan/dis/$(DEPDIR)/dis_groups.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@wswan/dis/$(DEPDIR)/resolve.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@wswan/dis/$(DEPDIR)/syntax.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+ @$(MKDIR_P) $(@D)
+ @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -4711,7 +5031,10 @@
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
@@ -4768,7 +5091,7 @@
done
check-am: all-am
check: check-recursive
-all-am: Makefile $(LIBRARIES) $(PROGRAMS)
+all-am: Makefile $(PROGRAMS) $(LIBRARIES)
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(bindir)"; do \
@@ -4978,7 +5301,492 @@
mostlyclean-am
distclean: distclean-recursive
- -rm -rf ./$(DEPDIR) apple2/$(DEPDIR) cdplay/$(DEPDIR) cdrom/$(DEPDIR) cheat_formats/$(DEPDIR) compress/$(DEPDIR) cputest/$(DEPDIR) demo/$(DEPDIR) desa68/$(DEPDIR) gb/$(DEPDIR) gba/$(DEPDIR) hash/$(DEPDIR) hw_cpu/m68k/$(DEPDIR) hw_cpu/v810/$(DEPDIR) hw_cpu/z80-fuse/$(DEPDIR) hw_misc/arcade_card/$(DEPDIR) hw_sound/gb_apu/$(DEPDIR) hw_sound/pce_psg/$(DEPDIR) hw_sound/sms_apu/$(DEPDIR) hw_sound/ym2413/$(DEPDIR) hw_sound/ym2612/$(DEPDIR) hw_video/huc6270/$(DEPDIR) lynx/$(DEPDIR) md/$(DEPDIR) md/cart/$(DEPDIR) md/cd/$(DEPDIR) md/input/$(DEPDIR) minilzo/$(DEPDIR) mpcdec/$(DEPDIR) mthreading/$(DEPDIR) nes/$(DEPDIR) nes/boards/$(DEPDIR) nes/input/$(DEPDIR) nes/ntsc/$(DEPDIR) nes/ppu/$(DEPDIR) net/$(DEPDIR) ngp/$(DEPDIR) ngp/TLCS-900h/$(DEPDIR) pce/$(DEPDIR) pce/input/$(DEPDIR) pce_fast/$(DEPDIR) pcfx/$(DEPDIR) pcfx/input/$(DEPDIR) psx/$(DEPDIR) psx/input/$(DEPDIR) quicklz/$(DEPDIR) resampler/$(DEPDIR) sms/$(DEPDIR) snes/$(DEPDIR) snes/src/cartridge/$(DEPDIR) snes/src/cheat/$(DEPDIR) snes/src/chip/bsx/$(DEPDIR) snes/src/chip/cx4/$(DEPDIR) snes/src/chip/dsp1/$(DEPDIR) snes/src/chip/dsp2/$(DEPDIR) snes/src/chip/dsp3/$(DEPDIR) snes/src/chip/dsp4/$(DEPDIR) snes/src/chip/obc1/$(DEPDIR) snes/src/chip/sa1/$(DEPDIR) snes/src/chip/sdd1/$(DEPDIR) snes/src/chip/spc7110/$(DEPDIR) snes/src/chip/srtc/$(DEPDIR) snes/src/chip/st010/$(DEPDIR) snes/src/chip/superfx/$(DEPDIR) snes/src/cpu/$(DEPDIR) snes/src/cpu/core/$(DEPDIR) snes/src/cpu/scpu/$(DEPDIR) snes/src/lib/libco/$(DEPDIR) snes/src/memory/$(DEPDIR) snes/src/memory/smemory/$(DEPDIR) snes/src/ppu/$(DEPDIR) snes/src/sdsp/$(DEPDIR) snes/src/smp/$(DEPDIR) snes/src/system/$(DEPDIR) snes_faust/$(DEPDIR) snes_faust/cart/$(DEPDIR) sound/$(DEPDIR) string/$(DEPDIR) tremor/$(DEPDIR) trio/$(DEPDIR) vb/$(DEPDIR) video/$(DEPDIR) wswan/$(DEPDIR) wswan/dis/$(DEPDIR)
+ -rm -f ./$(DEPDIR)/ExtMemStream.Po
+ -rm -f ./$(DEPDIR)/FileStream.Po
+ -rm -f ./$(DEPDIR)/IPSPatcher.Po
+ -rm -f ./$(DEPDIR)/MTStreamReader.Po
+ -rm -f ./$(DEPDIR)/MemoryStream.Po
+ -rm -f ./$(DEPDIR)/NativeVFS.Po
+ -rm -f ./$(DEPDIR)/PSFLoader.Po
+ -rm -f ./$(DEPDIR)/SNSFLoader.Po
+ -rm -f ./$(DEPDIR)/SPCReader.Po
+ -rm -f ./$(DEPDIR)/SSFLoader.Po
+ -rm -f ./$(DEPDIR)/Stream.Po
+ -rm -f ./$(DEPDIR)/Time.Po
+ -rm -f ./$(DEPDIR)/VirtualFS.Po
+ -rm -f ./$(DEPDIR)/debug.Po
+ -rm -f ./$(DEPDIR)/endian.Po
+ -rm -f ./$(DEPDIR)/error.Po
+ -rm -f ./$(DEPDIR)/file.Po
+ -rm -f ./$(DEPDIR)/general.Po
+ -rm -f ./$(DEPDIR)/git.Po
+ -rm -f ./$(DEPDIR)/mednafen.Po
+ -rm -f ./$(DEPDIR)/memory.Po
+ -rm -f ./$(DEPDIR)/mempatcher.Po
+ -rm -f ./$(DEPDIR)/movie.Po
+ -rm -f ./$(DEPDIR)/netplay.Po
+ -rm -f ./$(DEPDIR)/player.Po
+ -rm -f ./$(DEPDIR)/qtrecord.Po
+ -rm -f ./$(DEPDIR)/settings.Po
+ -rm -f ./$(DEPDIR)/state.Po
+ -rm -f ./$(DEPDIR)/state_rewind.Po
+ -rm -f ./$(DEPDIR)/tests.Po
+ -rm -f ./$(DEPDIR)/win32-common.Po
+ -rm -f apple2/$(DEPDIR)/apple2.Po
+ -rm -f cdplay/$(DEPDIR)/cdplay.Po
+ -rm -f cdrom/$(DEPDIR)/CDAFReader.Po
+ -rm -f cdrom/$(DEPDIR)/CDAFReader_MPC.Po
+ -rm -f cdrom/$(DEPDIR)/CDAFReader_SF.Po
+ -rm -f cdrom/$(DEPDIR)/CDAFReader_Vorbis.Po
+ -rm -f cdrom/$(DEPDIR)/CDAccess.Po
+ -rm -f cdrom/$(DEPDIR)/CDAccess_CCD.Po
+ -rm -f cdrom/$(DEPDIR)/CDAccess_Image.Po
+ -rm -f cdrom/$(DEPDIR)/CDInterface.Po
+ -rm -f cdrom/$(DEPDIR)/CDInterface_MT.Po
+ -rm -f cdrom/$(DEPDIR)/CDInterface_ST.Po
+ -rm -f cdrom/$(DEPDIR)/CDUtility.Po
+ -rm -f cdrom/$(DEPDIR)/crc32.Po
+ -rm -f cdrom/$(DEPDIR)/galois.Po
+ -rm -f cdrom/$(DEPDIR)/l-ec.Po
+ -rm -f cdrom/$(DEPDIR)/lec.Po
+ -rm -f cdrom/$(DEPDIR)/recover-raw.Po
+ -rm -f cdrom/$(DEPDIR)/scsicd.Po
+ -rm -f cheat_formats/$(DEPDIR)/gb.Po
+ -rm -f cheat_formats/$(DEPDIR)/psx.Po
+ -rm -f cheat_formats/$(DEPDIR)/snes.Po
+ -rm -f compress/$(DEPDIR)/GZFileStream.Po
+ -rm -f compress/$(DEPDIR)/ZIPReader.Po
+ -rm -f compress/$(DEPDIR)/ZLInflateFilter.Po
+ -rm -f cputest/$(DEPDIR)/cputest.Po
+ -rm -f cputest/$(DEPDIR)/ppc_cpu.Po
+ -rm -f cputest/$(DEPDIR)/x86_cpu.Po
+ -rm -f demo/$(DEPDIR)/demo.Po
+ -rm -f desa68/$(DEPDIR)/libdesa68_a-desa68.Po
+ -rm -f gb/$(DEPDIR)/gb.Po
+ -rm -f gb/$(DEPDIR)/gbGlobals.Po
+ -rm -f gb/$(DEPDIR)/gfx.Po
+ -rm -f gb/$(DEPDIR)/memory.Po
+ -rm -f gb/$(DEPDIR)/sound.Po
+ -rm -f gb/$(DEPDIR)/z80.Po
+ -rm -f gba/$(DEPDIR)/GBA.Po
+ -rm -f gba/$(DEPDIR)/GBAinline.Po
+ -rm -f gba/$(DEPDIR)/Gfx.Po
+ -rm -f gba/$(DEPDIR)/Globals.Po
+ -rm -f gba/$(DEPDIR)/Mode0.Po
+ -rm -f gba/$(DEPDIR)/Mode1.Po
+ -rm -f gba/$(DEPDIR)/Mode2.Po
+ -rm -f gba/$(DEPDIR)/Mode3.Po
+ -rm -f gba/$(DEPDIR)/Mode4.Po
+ -rm -f gba/$(DEPDIR)/Mode5.Po
+ -rm -f gba/$(DEPDIR)/RTC.Po
+ -rm -f gba/$(DEPDIR)/Sound.Po
+ -rm -f gba/$(DEPDIR)/arm.Po
+ -rm -f gba/$(DEPDIR)/bios.Po
+ -rm -f gba/$(DEPDIR)/eeprom.Po
+ -rm -f gba/$(DEPDIR)/flash.Po
+ -rm -f gba/$(DEPDIR)/sram.Po
+ -rm -f gba/$(DEPDIR)/thumb.Po
+ -rm -f hash/$(DEPDIR)/crc.Po
+ -rm -f hash/$(DEPDIR)/md5.Po
+ -rm -f hash/$(DEPDIR)/sha1.Po
+ -rm -f hash/$(DEPDIR)/sha256.Po
+ -rm -f hw_cpu/m68k/$(DEPDIR)/m68k.Po
+ -rm -f hw_cpu/v810/$(DEPDIR)/v810_cpu.Po
+ -rm -f hw_cpu/v810/$(DEPDIR)/v810_cpuD.Po
+ -rm -f hw_cpu/v810/$(DEPDIR)/v810_fp_ops.Po
+ -rm -f hw_cpu/z80-fuse/$(DEPDIR)/z80.Po
+ -rm -f hw_cpu/z80-fuse/$(DEPDIR)/z80_ops.Po
+ -rm -f hw_misc/arcade_card/$(DEPDIR)/arcade_card.Po
+ -rm -f hw_sound/gb_apu/$(DEPDIR)/Gb_Apu.Po
+ -rm -f hw_sound/gb_apu/$(DEPDIR)/Gb_Apu_State.Po
+ -rm -f hw_sound/gb_apu/$(DEPDIR)/Gb_Oscs.Po
+ -rm -f hw_sound/pce_psg/$(DEPDIR)/pce_psg.Po
+ -rm -f hw_sound/sms_apu/$(DEPDIR)/Sms_Apu.Po
+ -rm -f hw_sound/ym2413/$(DEPDIR)/emu2413.Po
+ -rm -f hw_sound/ym2612/$(DEPDIR)/Ym2612_Emu.Po
+ -rm -f hw_video/huc6270/$(DEPDIR)/vdc.Po
+ -rm -f lynx/$(DEPDIR)/c65c02.Po
+ -rm -f lynx/$(DEPDIR)/cart.Po
+ -rm -f lynx/$(DEPDIR)/memmap.Po
+ -rm -f lynx/$(DEPDIR)/mikie.Po
+ -rm -f lynx/$(DEPDIR)/ram.Po
+ -rm -f lynx/$(DEPDIR)/rom.Po
+ -rm -f lynx/$(DEPDIR)/susie.Po
+ -rm -f lynx/$(DEPDIR)/system.Po
+ -rm -f md/$(DEPDIR)/debug.Po
+ -rm -f md/$(DEPDIR)/genesis.Po
+ -rm -f md/$(DEPDIR)/genio.Po
+ -rm -f md/$(DEPDIR)/header.Po
+ -rm -f md/$(DEPDIR)/mem68k.Po
+ -rm -f md/$(DEPDIR)/membnk.Po
+ -rm -f md/$(DEPDIR)/memvdp.Po
+ -rm -f md/$(DEPDIR)/memz80.Po
+ -rm -f md/$(DEPDIR)/sound.Po
+ -rm -f md/$(DEPDIR)/system.Po
+ -rm -f md/$(DEPDIR)/vdp.Po
+ -rm -f md/cart/$(DEPDIR)/cart.Po
+ -rm -f md/cart/$(DEPDIR)/map_eeprom.Po
+ -rm -f md/cart/$(DEPDIR)/map_ff.Po
+ -rm -f md/cart/$(DEPDIR)/map_realtec.Po
+ -rm -f md/cart/$(DEPDIR)/map_rmx3.Po
+ -rm -f md/cart/$(DEPDIR)/map_rom.Po
+ -rm -f md/cart/$(DEPDIR)/map_sbb.Po
+ -rm -f md/cart/$(DEPDIR)/map_sram.Po
+ -rm -f md/cart/$(DEPDIR)/map_ssf2.Po
+ -rm -f md/cart/$(DEPDIR)/map_svp.Po
+ -rm -f md/cart/$(DEPDIR)/map_yase.Po
+ -rm -f md/cd/$(DEPDIR)/cd.Po
+ -rm -f md/cd/$(DEPDIR)/cdc_cdd.Po
+ -rm -f md/cd/$(DEPDIR)/interrupt.Po
+ -rm -f md/cd/$(DEPDIR)/pcm.Po
+ -rm -f md/cd/$(DEPDIR)/timer.Po
+ -rm -f md/input/$(DEPDIR)/4way.Po
+ -rm -f md/input/$(DEPDIR)/gamepad.Po
+ -rm -f md/input/$(DEPDIR)/megamouse.Po
+ -rm -f md/input/$(DEPDIR)/multitap.Po
+ -rm -f minilzo/$(DEPDIR)/minilzo.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-crc32.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-huffman.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-mpc_bits_reader.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-mpc_decoder.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-mpc_demux.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-mpc_reader.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-requant.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-streaminfo.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-synth_filter.Po
+ -rm -f mthreading/$(DEPDIR)/MThreading_POSIX.Po
+ -rm -f mthreading/$(DEPDIR)/MThreading_Win32.Po
+ -rm -f nes/$(DEPDIR)/cart.Po
+ -rm -f nes/$(DEPDIR)/debug.Po
+ -rm -f nes/$(DEPDIR)/dis6502.Po
+ -rm -f nes/$(DEPDIR)/fds-sound.Po
+ -rm -f nes/$(DEPDIR)/fds.Po
+ -rm -f nes/$(DEPDIR)/ines.Po
+ -rm -f nes/$(DEPDIR)/input.Po
+ -rm -f nes/$(DEPDIR)/nes.Po
+ -rm -f nes/$(DEPDIR)/nsf.Po
+ -rm -f nes/$(DEPDIR)/nsfe.Po
+ -rm -f nes/$(DEPDIR)/sound.Po
+ -rm -f nes/$(DEPDIR)/unif.Po
+ -rm -f nes/$(DEPDIR)/vsuni.Po
+ -rm -f nes/$(DEPDIR)/x6502.Po
+ -rm -f nes/boards/$(DEPDIR)/107.Po
+ -rm -f nes/boards/$(DEPDIR)/112.Po
+ -rm -f nes/boards/$(DEPDIR)/113.Po
+ -rm -f nes/boards/$(DEPDIR)/114.Po
+ -rm -f nes/boards/$(DEPDIR)/117.Po
+ -rm -f nes/boards/$(DEPDIR)/140.Po
+ -rm -f nes/boards/$(DEPDIR)/15.Po
+ -rm -f nes/boards/$(DEPDIR)/151.Po
+ -rm -f nes/boards/$(DEPDIR)/152.Po
+ -rm -f nes/boards/$(DEPDIR)/156.Po
+ -rm -f nes/boards/$(DEPDIR)/16.Po
+ -rm -f nes/boards/$(DEPDIR)/163.Po
+ -rm -f nes/boards/$(DEPDIR)/18.Po
+ -rm -f nes/boards/$(DEPDIR)/180.Po
+ -rm -f nes/boards/$(DEPDIR)/182.Po
+ -rm -f nes/boards/$(DEPDIR)/184.Po
+ -rm -f nes/boards/$(DEPDIR)/185.Po
+ -rm -f nes/boards/$(DEPDIR)/187.Po
+ -rm -f nes/boards/$(DEPDIR)/189.Po
+ -rm -f nes/boards/$(DEPDIR)/190.Po
+ -rm -f nes/boards/$(DEPDIR)/193.Po
+ -rm -f nes/boards/$(DEPDIR)/208.Po
+ -rm -f nes/boards/$(DEPDIR)/21.Po
+ -rm -f nes/boards/$(DEPDIR)/22.Po
+ -rm -f nes/boards/$(DEPDIR)/222.Po
+ -rm -f nes/boards/$(DEPDIR)/228.Po
+ -rm -f nes/boards/$(DEPDIR)/23.Po
+ -rm -f nes/boards/$(DEPDIR)/232.Po
+ -rm -f nes/boards/$(DEPDIR)/234.Po
+ -rm -f nes/boards/$(DEPDIR)/240.Po
+ -rm -f nes/boards/$(DEPDIR)/241.Po
+ -rm -f nes/boards/$(DEPDIR)/242.Po
+ -rm -f nes/boards/$(DEPDIR)/244.Po
+ -rm -f nes/boards/$(DEPDIR)/246.Po
+ -rm -f nes/boards/$(DEPDIR)/248.Po
+ -rm -f nes/boards/$(DEPDIR)/25.Po
+ -rm -f nes/boards/$(DEPDIR)/30.Po
+ -rm -f nes/boards/$(DEPDIR)/32.Po
+ -rm -f nes/boards/$(DEPDIR)/33.Po
+ -rm -f nes/boards/$(DEPDIR)/34.Po
+ -rm -f nes/boards/$(DEPDIR)/38.Po
+ -rm -f nes/boards/$(DEPDIR)/40.Po
+ -rm -f nes/boards/$(DEPDIR)/41.Po
+ -rm -f nes/boards/$(DEPDIR)/42.Po
+ -rm -f nes/boards/$(DEPDIR)/46.Po
+ -rm -f nes/boards/$(DEPDIR)/51.Po
+ -rm -f nes/boards/$(DEPDIR)/65.Po
+ -rm -f nes/boards/$(DEPDIR)/67.Po
+ -rm -f nes/boards/$(DEPDIR)/68.Po
+ -rm -f nes/boards/$(DEPDIR)/70.Po
+ -rm -f nes/boards/$(DEPDIR)/72.Po
+ -rm -f nes/boards/$(DEPDIR)/73.Po
+ -rm -f nes/boards/$(DEPDIR)/75.Po
+ -rm -f nes/boards/$(DEPDIR)/76.Po
+ -rm -f nes/boards/$(DEPDIR)/77.Po
+ -rm -f nes/boards/$(DEPDIR)/78.Po
+ -rm -f nes/boards/$(DEPDIR)/8.Po
+ -rm -f nes/boards/$(DEPDIR)/80.Po
+ -rm -f nes/boards/$(DEPDIR)/82.Po
+ -rm -f nes/boards/$(DEPDIR)/8237.Po
+ -rm -f nes/boards/$(DEPDIR)/86.Po
+ -rm -f nes/boards/$(DEPDIR)/87.Po
+ -rm -f nes/boards/$(DEPDIR)/88.Po
+ -rm -f nes/boards/$(DEPDIR)/89.Po
+ -rm -f nes/boards/$(DEPDIR)/90.Po
+ -rm -f nes/boards/$(DEPDIR)/92.Po
+ -rm -f nes/boards/$(DEPDIR)/93.Po
+ -rm -f nes/boards/$(DEPDIR)/94.Po
+ -rm -f nes/boards/$(DEPDIR)/95.Po
+ -rm -f nes/boards/$(DEPDIR)/96.Po
+ -rm -f nes/boards/$(DEPDIR)/97.Po
+ -rm -f nes/boards/$(DEPDIR)/99.Po
+ -rm -f nes/boards/$(DEPDIR)/codemasters.Po
+ -rm -f nes/boards/$(DEPDIR)/colordreams.Po
+ -rm -f nes/boards/$(DEPDIR)/deirom.Po
+ -rm -f nes/boards/$(DEPDIR)/emu2413.Po
+ -rm -f nes/boards/$(DEPDIR)/ffe.Po
+ -rm -f nes/boards/$(DEPDIR)/fme7.Po
+ -rm -f nes/boards/$(DEPDIR)/h2288.Po
+ -rm -f nes/boards/$(DEPDIR)/malee.Po
+ -rm -f nes/boards/$(DEPDIR)/maxicart.Po
+ -rm -f nes/boards/$(DEPDIR)/mmc1.Po
+ -rm -f nes/boards/$(DEPDIR)/mmc2and4.Po
+ -rm -f nes/boards/$(DEPDIR)/mmc3.Po
+ -rm -f nes/boards/$(DEPDIR)/mmc5.Po
+ -rm -f nes/boards/$(DEPDIR)/n106.Po
+ -rm -f nes/boards/$(DEPDIR)/nina06.Po
+ -rm -f nes/boards/$(DEPDIR)/novel.Po
+ -rm -f nes/boards/$(DEPDIR)/sachen.Po
+ -rm -f nes/boards/$(DEPDIR)/simple.Po
+ -rm -f nes/boards/$(DEPDIR)/super24.Po
+ -rm -f nes/boards/$(DEPDIR)/supervision.Po
+ -rm -f nes/boards/$(DEPDIR)/tengen.Po
+ -rm -f nes/boards/$(DEPDIR)/vrc6.Po
+ -rm -f nes/boards/$(DEPDIR)/vrc7.Po
+ -rm -f nes/input/$(DEPDIR)/arkanoid.Po
+ -rm -f nes/input/$(DEPDIR)/bbattler2.Po
+ -rm -f nes/input/$(DEPDIR)/cursor.Po
+ -rm -f nes/input/$(DEPDIR)/fkb.Po
+ -rm -f nes/input/$(DEPDIR)/ftrainer.Po
+ -rm -f nes/input/$(DEPDIR)/hypershot.Po
+ -rm -f nes/input/$(DEPDIR)/mahjong.Po
+ -rm -f nes/input/$(DEPDIR)/oekakids.Po
+ -rm -f nes/input/$(DEPDIR)/partytap.Po
+ -rm -f nes/input/$(DEPDIR)/powerpad.Po
+ -rm -f nes/input/$(DEPDIR)/shadow.Po
+ -rm -f nes/input/$(DEPDIR)/suborkb.Po
+ -rm -f nes/input/$(DEPDIR)/toprider.Po
+ -rm -f nes/input/$(DEPDIR)/zapper.Po
+ -rm -f nes/ntsc/$(DEPDIR)/nes_ntsc.Po
+ -rm -f nes/ppu/$(DEPDIR)/palette.Po
+ -rm -f nes/ppu/$(DEPDIR)/ppu.Po
+ -rm -f net/$(DEPDIR)/Net.Po
+ -rm -f net/$(DEPDIR)/Net_POSIX.Po
+ -rm -f net/$(DEPDIR)/Net_WS2.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-T6W28_Apu.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-Z80_interface.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-bios.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-biosHLE.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-dma.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-flash.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-gfx.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-gfx_scanline_colour.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-gfx_scanline_mono.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-interrupt.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-mem.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-neopop.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-rom.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-rtc.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-sound.Po
+ -rm -f ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret.Po
+ -rm -f ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_dst.Po
+ -rm -f ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_reg.Po
+ -rm -f ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_single.Po
+ -rm -f ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_src.Po
+ -rm -f ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_registers.Po
+ -rm -f pce/$(DEPDIR)/debug.Po
+ -rm -f pce/$(DEPDIR)/dis6280.Po
+ -rm -f pce/$(DEPDIR)/hes.Po
+ -rm -f pce/$(DEPDIR)/huc.Po
+ -rm -f pce/$(DEPDIR)/huc6280.Po
+ -rm -f pce/$(DEPDIR)/input.Po
+ -rm -f pce/$(DEPDIR)/mcgenjin.Po
+ -rm -f pce/$(DEPDIR)/pce.Po
+ -rm -f pce/$(DEPDIR)/pcecd.Po
+ -rm -f pce/$(DEPDIR)/tsushin.Po
+ -rm -f pce/$(DEPDIR)/vce.Po
+ -rm -f pce/input/$(DEPDIR)/gamepad.Po
+ -rm -f pce/input/$(DEPDIR)/mouse.Po
+ -rm -f pce/input/$(DEPDIR)/tsushinkb.Po
+ -rm -f pce_fast/$(DEPDIR)/hes.Po
+ -rm -f pce_fast/$(DEPDIR)/huc.Po
+ -rm -f pce_fast/$(DEPDIR)/huc6280.Po
+ -rm -f pce_fast/$(DEPDIR)/input.Po
+ -rm -f pce_fast/$(DEPDIR)/pce.Po
+ -rm -f pce_fast/$(DEPDIR)/pcecd.Po
+ -rm -f pce_fast/$(DEPDIR)/pcecd_drive.Po
+ -rm -f pce_fast/$(DEPDIR)/psg.Po
+ -rm -f pce_fast/$(DEPDIR)/vdc.Po
+ -rm -f pcfx/$(DEPDIR)/debug.Po
+ -rm -f pcfx/$(DEPDIR)/fxscsi.Po
+ -rm -f pcfx/$(DEPDIR)/huc6273.Po
+ -rm -f pcfx/$(DEPDIR)/idct.Po
+ -rm -f pcfx/$(DEPDIR)/input.Po
+ -rm -f pcfx/$(DEPDIR)/interrupt.Po
+ -rm -f pcfx/$(DEPDIR)/king.Po
+ -rm -f pcfx/$(DEPDIR)/pcfx.Po
+ -rm -f pcfx/$(DEPDIR)/rainbow.Po
+ -rm -f pcfx/$(DEPDIR)/soundbox.Po
+ -rm -f pcfx/$(DEPDIR)/timer.Po
+ -rm -f pcfx/input/$(DEPDIR)/gamepad.Po
+ -rm -f pcfx/input/$(DEPDIR)/mouse.Po
+ -rm -f psx/$(DEPDIR)/cdc.Po
+ -rm -f psx/$(DEPDIR)/cpu.Po
+ -rm -f psx/$(DEPDIR)/debug.Po
+ -rm -f psx/$(DEPDIR)/dis.Po
+ -rm -f psx/$(DEPDIR)/dma.Po
+ -rm -f psx/$(DEPDIR)/frontio.Po
+ -rm -f psx/$(DEPDIR)/gpu.Po
+ -rm -f psx/$(DEPDIR)/gpu_line.Po
+ -rm -f psx/$(DEPDIR)/gpu_polygon.Po
+ -rm -f psx/$(DEPDIR)/gpu_sprite.Po
+ -rm -f psx/$(DEPDIR)/gte.Po
+ -rm -f psx/$(DEPDIR)/irq.Po
+ -rm -f psx/$(DEPDIR)/mdec.Po
+ -rm -f psx/$(DEPDIR)/psx.Po
+ -rm -f psx/$(DEPDIR)/sio.Po
+ -rm -f psx/$(DEPDIR)/spu.Po
+ -rm -f psx/$(DEPDIR)/timer.Po
+ -rm -f psx/input/$(DEPDIR)/dualanalog.Po
+ -rm -f psx/input/$(DEPDIR)/dualshock.Po
+ -rm -f psx/input/$(DEPDIR)/gamepad.Po
+ -rm -f psx/input/$(DEPDIR)/guncon.Po
+ -rm -f psx/input/$(DEPDIR)/justifier.Po
+ -rm -f psx/input/$(DEPDIR)/memcard.Po
+ -rm -f psx/input/$(DEPDIR)/mouse.Po
+ -rm -f psx/input/$(DEPDIR)/multitap.Po
+ -rm -f psx/input/$(DEPDIR)/negcon.Po
+ -rm -f quicklz/$(DEPDIR)/libmdfnquicklz_a-quicklz.Po
+ -rm -f resampler/$(DEPDIR)/resample.Po
+ -rm -f sms/$(DEPDIR)/cart.Po
+ -rm -f sms/$(DEPDIR)/memz80.Po
+ -rm -f sms/$(DEPDIR)/pio.Po
+ -rm -f sms/$(DEPDIR)/render.Po
+ -rm -f sms/$(DEPDIR)/romdb.Po
+ -rm -f sms/$(DEPDIR)/sms.Po
+ -rm -f sms/$(DEPDIR)/sound.Po
+ -rm -f sms/$(DEPDIR)/system.Po
+ -rm -f sms/$(DEPDIR)/tms.Po
+ -rm -f sms/$(DEPDIR)/vdp.Po
+ -rm -f snes/$(DEPDIR)/libsnes_a-interface.Po
+ -rm -f snes/src/cartridge/$(DEPDIR)/libsnes_a-cartridge.Po
+ -rm -f snes/src/cheat/$(DEPDIR)/libsnes_a-cheat.Po
+ -rm -f snes/src/chip/bsx/$(DEPDIR)/libsnes_a-bsx.Po
+ -rm -f snes/src/chip/cx4/$(DEPDIR)/libsnes_a-cx4.Po
+ -rm -f snes/src/chip/dsp1/$(DEPDIR)/libsnes_a-dsp1.Po
+ -rm -f snes/src/chip/dsp2/$(DEPDIR)/libsnes_a-dsp2.Po
+ -rm -f snes/src/chip/dsp3/$(DEPDIR)/libsnes_a-dsp3.Po
+ -rm -f snes/src/chip/dsp4/$(DEPDIR)/libsnes_a-dsp4.Po
+ -rm -f snes/src/chip/obc1/$(DEPDIR)/libsnes_a-obc1.Po
+ -rm -f snes/src/chip/sa1/$(DEPDIR)/libsnes_a-sa1.Po
+ -rm -f snes/src/chip/sdd1/$(DEPDIR)/libsnes_a-sdd1.Po
+ -rm -f snes/src/chip/spc7110/$(DEPDIR)/libsnes_a-spc7110.Po
+ -rm -f snes/src/chip/srtc/$(DEPDIR)/libsnes_a-srtc.Po
+ -rm -f snes/src/chip/st010/$(DEPDIR)/libsnes_a-st010.Po
+ -rm -f snes/src/chip/superfx/$(DEPDIR)/libsnes_a-superfx.Po
+ -rm -f snes/src/cpu/$(DEPDIR)/libsnes_a-cpu.Po
+ -rm -f snes/src/cpu/core/$(DEPDIR)/libsnes_a-core.Po
+ -rm -f snes/src/cpu/scpu/$(DEPDIR)/libsnes_a-scpu.Po
+ -rm -f snes/src/lib/libco/$(DEPDIR)/libsnes_a-libco.Po
+ -rm -f snes/src/memory/$(DEPDIR)/libsnes_a-memory.Po
+ -rm -f snes/src/memory/smemory/$(DEPDIR)/libsnes_a-smemory.Po
+ -rm -f snes/src/ppu/$(DEPDIR)/libsnes_a-ppu.Po
+ -rm -f snes/src/sdsp/$(DEPDIR)/libsnes_a-sdsp.Po
+ -rm -f snes/src/smp/$(DEPDIR)/libsnes_a-smp.Po
+ -rm -f snes/src/system/$(DEPDIR)/libsnes_a-system.Po
+ -rm -f snes_faust/$(DEPDIR)/apu.Po
+ -rm -f snes_faust/$(DEPDIR)/cart.Po
+ -rm -f snes_faust/$(DEPDIR)/cpu.Po
+ -rm -f snes_faust/$(DEPDIR)/debug.Po
+ -rm -f snes_faust/$(DEPDIR)/dis65816.Po
+ -rm -f snes_faust/$(DEPDIR)/input.Po
+ -rm -f snes_faust/$(DEPDIR)/msu1.Po
+ -rm -f snes_faust/$(DEPDIR)/ppu.Po
+ -rm -f snes_faust/$(DEPDIR)/ppu_mt.Po
+ -rm -f snes_faust/$(DEPDIR)/ppu_mtrender.Po
+ -rm -f snes_faust/$(DEPDIR)/ppu_st.Po
+ -rm -f snes_faust/$(DEPDIR)/snes.Po
+ -rm -f snes_faust/cart/$(DEPDIR)/cx4.Po
+ -rm -f snes_faust/cart/$(DEPDIR)/dsp1.Po
+ -rm -f snes_faust/cart/$(DEPDIR)/dsp2.Po
+ -rm -f snes_faust/cart/$(DEPDIR)/sa1.Po
+ -rm -f snes_faust/cart/$(DEPDIR)/sa1cpu.Po
+ -rm -f snes_faust/cart/$(DEPDIR)/sdd1.Po
+ -rm -f snes_faust/cart/$(DEPDIR)/superfx.Po
+ -rm -f sound/$(DEPDIR)/Blip_Buffer.Po
+ -rm -f sound/$(DEPDIR)/DSPUtility.Po
+ -rm -f sound/$(DEPDIR)/Fir_Resampler.Po
+ -rm -f sound/$(DEPDIR)/OwlResampler.Po
+ -rm -f sound/$(DEPDIR)/Stereo_Buffer.Po
+ -rm -f sound/$(DEPDIR)/SwiftResampler.Po
+ -rm -f sound/$(DEPDIR)/WAVRecord.Po
+ -rm -f sound/$(DEPDIR)/okiadpcm.Po
+ -rm -f string/$(DEPDIR)/escape.Po
+ -rm -f string/$(DEPDIR)/string.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-bitwise.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-block.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-codebook.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-floor0.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-floor1.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-framing.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-info.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-mapping0.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-mdct.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-registry.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-res012.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-sharedbook.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-synthesis.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-vorbisfile.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-window.Po
+ -rm -f trio/$(DEPDIR)/libtrio_a-trio.Po
+ -rm -f trio/$(DEPDIR)/libtrio_a-trionan.Po
+ -rm -f trio/$(DEPDIR)/libtrio_a-triostr.Po
+ -rm -f vb/$(DEPDIR)/debug.Po
+ -rm -f vb/$(DEPDIR)/input.Po
+ -rm -f vb/$(DEPDIR)/timer.Po
+ -rm -f vb/$(DEPDIR)/vb.Po
+ -rm -f vb/$(DEPDIR)/vip.Po
+ -rm -f vb/$(DEPDIR)/vsu.Po
+ -rm -f video/$(DEPDIR)/Deinterlacer.Po
+ -rm -f video/$(DEPDIR)/Deinterlacer_Blend.Po
+ -rm -f video/$(DEPDIR)/Deinterlacer_Simple.Po
+ -rm -f video/$(DEPDIR)/font-data-12x13.Po
+ -rm -f video/$(DEPDIR)/font-data-18x18.Po
+ -rm -f video/$(DEPDIR)/font-data.Po
+ -rm -f video/$(DEPDIR)/png.Po
+ -rm -f video/$(DEPDIR)/primitives.Po
+ -rm -f video/$(DEPDIR)/resize.Po
+ -rm -f video/$(DEPDIR)/surface.Po
+ -rm -f video/$(DEPDIR)/tblur.Po
+ -rm -f video/$(DEPDIR)/text.Po
+ -rm -f video/$(DEPDIR)/video.Po
+ -rm -f wswan/$(DEPDIR)/comm.Po
+ -rm -f wswan/$(DEPDIR)/debug.Po
+ -rm -f wswan/$(DEPDIR)/eeprom.Po
+ -rm -f wswan/$(DEPDIR)/gfx.Po
+ -rm -f wswan/$(DEPDIR)/interrupt.Po
+ -rm -f wswan/$(DEPDIR)/main.Po
+ -rm -f wswan/$(DEPDIR)/memory.Po
+ -rm -f wswan/$(DEPDIR)/rtc.Po
+ -rm -f wswan/$(DEPDIR)/sound.Po
+ -rm -f wswan/$(DEPDIR)/tcache.Po
+ -rm -f wswan/$(DEPDIR)/v30mz.Po
+ -rm -f wswan/dis/$(DEPDIR)/dis_decode.Po
+ -rm -f wswan/dis/$(DEPDIR)/dis_groups.Po
+ -rm -f wswan/dis/$(DEPDIR)/resolve.Po
+ -rm -f wswan/dis/$(DEPDIR)/syntax.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
@@ -5024,7 +5832,492 @@
installcheck-am:
maintainer-clean: maintainer-clean-recursive
- -rm -rf ./$(DEPDIR) apple2/$(DEPDIR) cdplay/$(DEPDIR) cdrom/$(DEPDIR) cheat_formats/$(DEPDIR) compress/$(DEPDIR) cputest/$(DEPDIR) demo/$(DEPDIR) desa68/$(DEPDIR) gb/$(DEPDIR) gba/$(DEPDIR) hash/$(DEPDIR) hw_cpu/m68k/$(DEPDIR) hw_cpu/v810/$(DEPDIR) hw_cpu/z80-fuse/$(DEPDIR) hw_misc/arcade_card/$(DEPDIR) hw_sound/gb_apu/$(DEPDIR) hw_sound/pce_psg/$(DEPDIR) hw_sound/sms_apu/$(DEPDIR) hw_sound/ym2413/$(DEPDIR) hw_sound/ym2612/$(DEPDIR) hw_video/huc6270/$(DEPDIR) lynx/$(DEPDIR) md/$(DEPDIR) md/cart/$(DEPDIR) md/cd/$(DEPDIR) md/input/$(DEPDIR) minilzo/$(DEPDIR) mpcdec/$(DEPDIR) mthreading/$(DEPDIR) nes/$(DEPDIR) nes/boards/$(DEPDIR) nes/input/$(DEPDIR) nes/ntsc/$(DEPDIR) nes/ppu/$(DEPDIR) net/$(DEPDIR) ngp/$(DEPDIR) ngp/TLCS-900h/$(DEPDIR) pce/$(DEPDIR) pce/input/$(DEPDIR) pce_fast/$(DEPDIR) pcfx/$(DEPDIR) pcfx/input/$(DEPDIR) psx/$(DEPDIR) psx/input/$(DEPDIR) quicklz/$(DEPDIR) resampler/$(DEPDIR) sms/$(DEPDIR) snes/$(DEPDIR) snes/src/cartridge/$(DEPDIR) snes/src/cheat/$(DEPDIR) snes/src/chip/bsx/$(DEPDIR) snes/src/chip/cx4/$(DEPDIR) snes/src/chip/dsp1/$(DEPDIR) snes/src/chip/dsp2/$(DEPDIR) snes/src/chip/dsp3/$(DEPDIR) snes/src/chip/dsp4/$(DEPDIR) snes/src/chip/obc1/$(DEPDIR) snes/src/chip/sa1/$(DEPDIR) snes/src/chip/sdd1/$(DEPDIR) snes/src/chip/spc7110/$(DEPDIR) snes/src/chip/srtc/$(DEPDIR) snes/src/chip/st010/$(DEPDIR) snes/src/chip/superfx/$(DEPDIR) snes/src/cpu/$(DEPDIR) snes/src/cpu/core/$(DEPDIR) snes/src/cpu/scpu/$(DEPDIR) snes/src/lib/libco/$(DEPDIR) snes/src/memory/$(DEPDIR) snes/src/memory/smemory/$(DEPDIR) snes/src/ppu/$(DEPDIR) snes/src/sdsp/$(DEPDIR) snes/src/smp/$(DEPDIR) snes/src/system/$(DEPDIR) snes_faust/$(DEPDIR) snes_faust/cart/$(DEPDIR) sound/$(DEPDIR) string/$(DEPDIR) tremor/$(DEPDIR) trio/$(DEPDIR) vb/$(DEPDIR) video/$(DEPDIR) wswan/$(DEPDIR) wswan/dis/$(DEPDIR)
+ -rm -f ./$(DEPDIR)/ExtMemStream.Po
+ -rm -f ./$(DEPDIR)/FileStream.Po
+ -rm -f ./$(DEPDIR)/IPSPatcher.Po
+ -rm -f ./$(DEPDIR)/MTStreamReader.Po
+ -rm -f ./$(DEPDIR)/MemoryStream.Po
+ -rm -f ./$(DEPDIR)/NativeVFS.Po
+ -rm -f ./$(DEPDIR)/PSFLoader.Po
+ -rm -f ./$(DEPDIR)/SNSFLoader.Po
+ -rm -f ./$(DEPDIR)/SPCReader.Po
+ -rm -f ./$(DEPDIR)/SSFLoader.Po
+ -rm -f ./$(DEPDIR)/Stream.Po
+ -rm -f ./$(DEPDIR)/Time.Po
+ -rm -f ./$(DEPDIR)/VirtualFS.Po
+ -rm -f ./$(DEPDIR)/debug.Po
+ -rm -f ./$(DEPDIR)/endian.Po
+ -rm -f ./$(DEPDIR)/error.Po
+ -rm -f ./$(DEPDIR)/file.Po
+ -rm -f ./$(DEPDIR)/general.Po
+ -rm -f ./$(DEPDIR)/git.Po
+ -rm -f ./$(DEPDIR)/mednafen.Po
+ -rm -f ./$(DEPDIR)/memory.Po
+ -rm -f ./$(DEPDIR)/mempatcher.Po
+ -rm -f ./$(DEPDIR)/movie.Po
+ -rm -f ./$(DEPDIR)/netplay.Po
+ -rm -f ./$(DEPDIR)/player.Po
+ -rm -f ./$(DEPDIR)/qtrecord.Po
+ -rm -f ./$(DEPDIR)/settings.Po
+ -rm -f ./$(DEPDIR)/state.Po
+ -rm -f ./$(DEPDIR)/state_rewind.Po
+ -rm -f ./$(DEPDIR)/tests.Po
+ -rm -f ./$(DEPDIR)/win32-common.Po
+ -rm -f apple2/$(DEPDIR)/apple2.Po
+ -rm -f cdplay/$(DEPDIR)/cdplay.Po
+ -rm -f cdrom/$(DEPDIR)/CDAFReader.Po
+ -rm -f cdrom/$(DEPDIR)/CDAFReader_MPC.Po
+ -rm -f cdrom/$(DEPDIR)/CDAFReader_SF.Po
+ -rm -f cdrom/$(DEPDIR)/CDAFReader_Vorbis.Po
+ -rm -f cdrom/$(DEPDIR)/CDAccess.Po
+ -rm -f cdrom/$(DEPDIR)/CDAccess_CCD.Po
+ -rm -f cdrom/$(DEPDIR)/CDAccess_Image.Po
+ -rm -f cdrom/$(DEPDIR)/CDInterface.Po
+ -rm -f cdrom/$(DEPDIR)/CDInterface_MT.Po
+ -rm -f cdrom/$(DEPDIR)/CDInterface_ST.Po
+ -rm -f cdrom/$(DEPDIR)/CDUtility.Po
+ -rm -f cdrom/$(DEPDIR)/crc32.Po
+ -rm -f cdrom/$(DEPDIR)/galois.Po
+ -rm -f cdrom/$(DEPDIR)/l-ec.Po
+ -rm -f cdrom/$(DEPDIR)/lec.Po
+ -rm -f cdrom/$(DEPDIR)/recover-raw.Po
+ -rm -f cdrom/$(DEPDIR)/scsicd.Po
+ -rm -f cheat_formats/$(DEPDIR)/gb.Po
+ -rm -f cheat_formats/$(DEPDIR)/psx.Po
+ -rm -f cheat_formats/$(DEPDIR)/snes.Po
+ -rm -f compress/$(DEPDIR)/GZFileStream.Po
+ -rm -f compress/$(DEPDIR)/ZIPReader.Po
+ -rm -f compress/$(DEPDIR)/ZLInflateFilter.Po
+ -rm -f cputest/$(DEPDIR)/cputest.Po
+ -rm -f cputest/$(DEPDIR)/ppc_cpu.Po
+ -rm -f cputest/$(DEPDIR)/x86_cpu.Po
+ -rm -f demo/$(DEPDIR)/demo.Po
+ -rm -f desa68/$(DEPDIR)/libdesa68_a-desa68.Po
+ -rm -f gb/$(DEPDIR)/gb.Po
+ -rm -f gb/$(DEPDIR)/gbGlobals.Po
+ -rm -f gb/$(DEPDIR)/gfx.Po
+ -rm -f gb/$(DEPDIR)/memory.Po
+ -rm -f gb/$(DEPDIR)/sound.Po
+ -rm -f gb/$(DEPDIR)/z80.Po
+ -rm -f gba/$(DEPDIR)/GBA.Po
+ -rm -f gba/$(DEPDIR)/GBAinline.Po
+ -rm -f gba/$(DEPDIR)/Gfx.Po
+ -rm -f gba/$(DEPDIR)/Globals.Po
+ -rm -f gba/$(DEPDIR)/Mode0.Po
+ -rm -f gba/$(DEPDIR)/Mode1.Po
+ -rm -f gba/$(DEPDIR)/Mode2.Po
+ -rm -f gba/$(DEPDIR)/Mode3.Po
+ -rm -f gba/$(DEPDIR)/Mode4.Po
+ -rm -f gba/$(DEPDIR)/Mode5.Po
+ -rm -f gba/$(DEPDIR)/RTC.Po
+ -rm -f gba/$(DEPDIR)/Sound.Po
+ -rm -f gba/$(DEPDIR)/arm.Po
+ -rm -f gba/$(DEPDIR)/bios.Po
+ -rm -f gba/$(DEPDIR)/eeprom.Po
+ -rm -f gba/$(DEPDIR)/flash.Po
+ -rm -f gba/$(DEPDIR)/sram.Po
+ -rm -f gba/$(DEPDIR)/thumb.Po
+ -rm -f hash/$(DEPDIR)/crc.Po
+ -rm -f hash/$(DEPDIR)/md5.Po
+ -rm -f hash/$(DEPDIR)/sha1.Po
+ -rm -f hash/$(DEPDIR)/sha256.Po
+ -rm -f hw_cpu/m68k/$(DEPDIR)/m68k.Po
+ -rm -f hw_cpu/v810/$(DEPDIR)/v810_cpu.Po
+ -rm -f hw_cpu/v810/$(DEPDIR)/v810_cpuD.Po
+ -rm -f hw_cpu/v810/$(DEPDIR)/v810_fp_ops.Po
+ -rm -f hw_cpu/z80-fuse/$(DEPDIR)/z80.Po
+ -rm -f hw_cpu/z80-fuse/$(DEPDIR)/z80_ops.Po
+ -rm -f hw_misc/arcade_card/$(DEPDIR)/arcade_card.Po
+ -rm -f hw_sound/gb_apu/$(DEPDIR)/Gb_Apu.Po
+ -rm -f hw_sound/gb_apu/$(DEPDIR)/Gb_Apu_State.Po
+ -rm -f hw_sound/gb_apu/$(DEPDIR)/Gb_Oscs.Po
+ -rm -f hw_sound/pce_psg/$(DEPDIR)/pce_psg.Po
+ -rm -f hw_sound/sms_apu/$(DEPDIR)/Sms_Apu.Po
+ -rm -f hw_sound/ym2413/$(DEPDIR)/emu2413.Po
+ -rm -f hw_sound/ym2612/$(DEPDIR)/Ym2612_Emu.Po
+ -rm -f hw_video/huc6270/$(DEPDIR)/vdc.Po
+ -rm -f lynx/$(DEPDIR)/c65c02.Po
+ -rm -f lynx/$(DEPDIR)/cart.Po
+ -rm -f lynx/$(DEPDIR)/memmap.Po
+ -rm -f lynx/$(DEPDIR)/mikie.Po
+ -rm -f lynx/$(DEPDIR)/ram.Po
+ -rm -f lynx/$(DEPDIR)/rom.Po
+ -rm -f lynx/$(DEPDIR)/susie.Po
+ -rm -f lynx/$(DEPDIR)/system.Po
+ -rm -f md/$(DEPDIR)/debug.Po
+ -rm -f md/$(DEPDIR)/genesis.Po
+ -rm -f md/$(DEPDIR)/genio.Po
+ -rm -f md/$(DEPDIR)/header.Po
+ -rm -f md/$(DEPDIR)/mem68k.Po
+ -rm -f md/$(DEPDIR)/membnk.Po
+ -rm -f md/$(DEPDIR)/memvdp.Po
+ -rm -f md/$(DEPDIR)/memz80.Po
+ -rm -f md/$(DEPDIR)/sound.Po
+ -rm -f md/$(DEPDIR)/system.Po
+ -rm -f md/$(DEPDIR)/vdp.Po
+ -rm -f md/cart/$(DEPDIR)/cart.Po
+ -rm -f md/cart/$(DEPDIR)/map_eeprom.Po
+ -rm -f md/cart/$(DEPDIR)/map_ff.Po
+ -rm -f md/cart/$(DEPDIR)/map_realtec.Po
+ -rm -f md/cart/$(DEPDIR)/map_rmx3.Po
+ -rm -f md/cart/$(DEPDIR)/map_rom.Po
+ -rm -f md/cart/$(DEPDIR)/map_sbb.Po
+ -rm -f md/cart/$(DEPDIR)/map_sram.Po
+ -rm -f md/cart/$(DEPDIR)/map_ssf2.Po
+ -rm -f md/cart/$(DEPDIR)/map_svp.Po
+ -rm -f md/cart/$(DEPDIR)/map_yase.Po
+ -rm -f md/cd/$(DEPDIR)/cd.Po
+ -rm -f md/cd/$(DEPDIR)/cdc_cdd.Po
+ -rm -f md/cd/$(DEPDIR)/interrupt.Po
+ -rm -f md/cd/$(DEPDIR)/pcm.Po
+ -rm -f md/cd/$(DEPDIR)/timer.Po
+ -rm -f md/input/$(DEPDIR)/4way.Po
+ -rm -f md/input/$(DEPDIR)/gamepad.Po
+ -rm -f md/input/$(DEPDIR)/megamouse.Po
+ -rm -f md/input/$(DEPDIR)/multitap.Po
+ -rm -f minilzo/$(DEPDIR)/minilzo.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-crc32.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-huffman.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-mpc_bits_reader.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-mpc_decoder.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-mpc_demux.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-mpc_reader.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-requant.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-streaminfo.Po
+ -rm -f mpcdec/$(DEPDIR)/libmpcdec_a-synth_filter.Po
+ -rm -f mthreading/$(DEPDIR)/MThreading_POSIX.Po
+ -rm -f mthreading/$(DEPDIR)/MThreading_Win32.Po
+ -rm -f nes/$(DEPDIR)/cart.Po
+ -rm -f nes/$(DEPDIR)/debug.Po
+ -rm -f nes/$(DEPDIR)/dis6502.Po
+ -rm -f nes/$(DEPDIR)/fds-sound.Po
+ -rm -f nes/$(DEPDIR)/fds.Po
+ -rm -f nes/$(DEPDIR)/ines.Po
+ -rm -f nes/$(DEPDIR)/input.Po
+ -rm -f nes/$(DEPDIR)/nes.Po
+ -rm -f nes/$(DEPDIR)/nsf.Po
+ -rm -f nes/$(DEPDIR)/nsfe.Po
+ -rm -f nes/$(DEPDIR)/sound.Po
+ -rm -f nes/$(DEPDIR)/unif.Po
+ -rm -f nes/$(DEPDIR)/vsuni.Po
+ -rm -f nes/$(DEPDIR)/x6502.Po
+ -rm -f nes/boards/$(DEPDIR)/107.Po
+ -rm -f nes/boards/$(DEPDIR)/112.Po
+ -rm -f nes/boards/$(DEPDIR)/113.Po
+ -rm -f nes/boards/$(DEPDIR)/114.Po
+ -rm -f nes/boards/$(DEPDIR)/117.Po
+ -rm -f nes/boards/$(DEPDIR)/140.Po
+ -rm -f nes/boards/$(DEPDIR)/15.Po
+ -rm -f nes/boards/$(DEPDIR)/151.Po
+ -rm -f nes/boards/$(DEPDIR)/152.Po
+ -rm -f nes/boards/$(DEPDIR)/156.Po
+ -rm -f nes/boards/$(DEPDIR)/16.Po
+ -rm -f nes/boards/$(DEPDIR)/163.Po
+ -rm -f nes/boards/$(DEPDIR)/18.Po
+ -rm -f nes/boards/$(DEPDIR)/180.Po
+ -rm -f nes/boards/$(DEPDIR)/182.Po
+ -rm -f nes/boards/$(DEPDIR)/184.Po
+ -rm -f nes/boards/$(DEPDIR)/185.Po
+ -rm -f nes/boards/$(DEPDIR)/187.Po
+ -rm -f nes/boards/$(DEPDIR)/189.Po
+ -rm -f nes/boards/$(DEPDIR)/190.Po
+ -rm -f nes/boards/$(DEPDIR)/193.Po
+ -rm -f nes/boards/$(DEPDIR)/208.Po
+ -rm -f nes/boards/$(DEPDIR)/21.Po
+ -rm -f nes/boards/$(DEPDIR)/22.Po
+ -rm -f nes/boards/$(DEPDIR)/222.Po
+ -rm -f nes/boards/$(DEPDIR)/228.Po
+ -rm -f nes/boards/$(DEPDIR)/23.Po
+ -rm -f nes/boards/$(DEPDIR)/232.Po
+ -rm -f nes/boards/$(DEPDIR)/234.Po
+ -rm -f nes/boards/$(DEPDIR)/240.Po
+ -rm -f nes/boards/$(DEPDIR)/241.Po
+ -rm -f nes/boards/$(DEPDIR)/242.Po
+ -rm -f nes/boards/$(DEPDIR)/244.Po
+ -rm -f nes/boards/$(DEPDIR)/246.Po
+ -rm -f nes/boards/$(DEPDIR)/248.Po
+ -rm -f nes/boards/$(DEPDIR)/25.Po
+ -rm -f nes/boards/$(DEPDIR)/30.Po
+ -rm -f nes/boards/$(DEPDIR)/32.Po
+ -rm -f nes/boards/$(DEPDIR)/33.Po
+ -rm -f nes/boards/$(DEPDIR)/34.Po
+ -rm -f nes/boards/$(DEPDIR)/38.Po
+ -rm -f nes/boards/$(DEPDIR)/40.Po
+ -rm -f nes/boards/$(DEPDIR)/41.Po
+ -rm -f nes/boards/$(DEPDIR)/42.Po
+ -rm -f nes/boards/$(DEPDIR)/46.Po
+ -rm -f nes/boards/$(DEPDIR)/51.Po
+ -rm -f nes/boards/$(DEPDIR)/65.Po
+ -rm -f nes/boards/$(DEPDIR)/67.Po
+ -rm -f nes/boards/$(DEPDIR)/68.Po
+ -rm -f nes/boards/$(DEPDIR)/70.Po
+ -rm -f nes/boards/$(DEPDIR)/72.Po
+ -rm -f nes/boards/$(DEPDIR)/73.Po
+ -rm -f nes/boards/$(DEPDIR)/75.Po
+ -rm -f nes/boards/$(DEPDIR)/76.Po
+ -rm -f nes/boards/$(DEPDIR)/77.Po
+ -rm -f nes/boards/$(DEPDIR)/78.Po
+ -rm -f nes/boards/$(DEPDIR)/8.Po
+ -rm -f nes/boards/$(DEPDIR)/80.Po
+ -rm -f nes/boards/$(DEPDIR)/82.Po
+ -rm -f nes/boards/$(DEPDIR)/8237.Po
+ -rm -f nes/boards/$(DEPDIR)/86.Po
+ -rm -f nes/boards/$(DEPDIR)/87.Po
+ -rm -f nes/boards/$(DEPDIR)/88.Po
+ -rm -f nes/boards/$(DEPDIR)/89.Po
+ -rm -f nes/boards/$(DEPDIR)/90.Po
+ -rm -f nes/boards/$(DEPDIR)/92.Po
+ -rm -f nes/boards/$(DEPDIR)/93.Po
+ -rm -f nes/boards/$(DEPDIR)/94.Po
+ -rm -f nes/boards/$(DEPDIR)/95.Po
+ -rm -f nes/boards/$(DEPDIR)/96.Po
+ -rm -f nes/boards/$(DEPDIR)/97.Po
+ -rm -f nes/boards/$(DEPDIR)/99.Po
+ -rm -f nes/boards/$(DEPDIR)/codemasters.Po
+ -rm -f nes/boards/$(DEPDIR)/colordreams.Po
+ -rm -f nes/boards/$(DEPDIR)/deirom.Po
+ -rm -f nes/boards/$(DEPDIR)/emu2413.Po
+ -rm -f nes/boards/$(DEPDIR)/ffe.Po
+ -rm -f nes/boards/$(DEPDIR)/fme7.Po
+ -rm -f nes/boards/$(DEPDIR)/h2288.Po
+ -rm -f nes/boards/$(DEPDIR)/malee.Po
+ -rm -f nes/boards/$(DEPDIR)/maxicart.Po
+ -rm -f nes/boards/$(DEPDIR)/mmc1.Po
+ -rm -f nes/boards/$(DEPDIR)/mmc2and4.Po
+ -rm -f nes/boards/$(DEPDIR)/mmc3.Po
+ -rm -f nes/boards/$(DEPDIR)/mmc5.Po
+ -rm -f nes/boards/$(DEPDIR)/n106.Po
+ -rm -f nes/boards/$(DEPDIR)/nina06.Po
+ -rm -f nes/boards/$(DEPDIR)/novel.Po
+ -rm -f nes/boards/$(DEPDIR)/sachen.Po
+ -rm -f nes/boards/$(DEPDIR)/simple.Po
+ -rm -f nes/boards/$(DEPDIR)/super24.Po
+ -rm -f nes/boards/$(DEPDIR)/supervision.Po
+ -rm -f nes/boards/$(DEPDIR)/tengen.Po
+ -rm -f nes/boards/$(DEPDIR)/vrc6.Po
+ -rm -f nes/boards/$(DEPDIR)/vrc7.Po
+ -rm -f nes/input/$(DEPDIR)/arkanoid.Po
+ -rm -f nes/input/$(DEPDIR)/bbattler2.Po
+ -rm -f nes/input/$(DEPDIR)/cursor.Po
+ -rm -f nes/input/$(DEPDIR)/fkb.Po
+ -rm -f nes/input/$(DEPDIR)/ftrainer.Po
+ -rm -f nes/input/$(DEPDIR)/hypershot.Po
+ -rm -f nes/input/$(DEPDIR)/mahjong.Po
+ -rm -f nes/input/$(DEPDIR)/oekakids.Po
+ -rm -f nes/input/$(DEPDIR)/partytap.Po
+ -rm -f nes/input/$(DEPDIR)/powerpad.Po
+ -rm -f nes/input/$(DEPDIR)/shadow.Po
+ -rm -f nes/input/$(DEPDIR)/suborkb.Po
+ -rm -f nes/input/$(DEPDIR)/toprider.Po
+ -rm -f nes/input/$(DEPDIR)/zapper.Po
+ -rm -f nes/ntsc/$(DEPDIR)/nes_ntsc.Po
+ -rm -f nes/ppu/$(DEPDIR)/palette.Po
+ -rm -f nes/ppu/$(DEPDIR)/ppu.Po
+ -rm -f net/$(DEPDIR)/Net.Po
+ -rm -f net/$(DEPDIR)/Net_POSIX.Po
+ -rm -f net/$(DEPDIR)/Net_WS2.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-T6W28_Apu.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-Z80_interface.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-bios.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-biosHLE.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-dma.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-flash.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-gfx.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-gfx_scanline_colour.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-gfx_scanline_mono.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-interrupt.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-mem.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-neopop.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-rom.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-rtc.Po
+ -rm -f ngp/$(DEPDIR)/libngp_a-sound.Po
+ -rm -f ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret.Po
+ -rm -f ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_dst.Po
+ -rm -f ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_reg.Po
+ -rm -f ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_single.Po
+ -rm -f ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_interpret_src.Po
+ -rm -f ngp/TLCS-900h/$(DEPDIR)/libngp_a-TLCS900h_registers.Po
+ -rm -f pce/$(DEPDIR)/debug.Po
+ -rm -f pce/$(DEPDIR)/dis6280.Po
+ -rm -f pce/$(DEPDIR)/hes.Po
+ -rm -f pce/$(DEPDIR)/huc.Po
+ -rm -f pce/$(DEPDIR)/huc6280.Po
+ -rm -f pce/$(DEPDIR)/input.Po
+ -rm -f pce/$(DEPDIR)/mcgenjin.Po
+ -rm -f pce/$(DEPDIR)/pce.Po
+ -rm -f pce/$(DEPDIR)/pcecd.Po
+ -rm -f pce/$(DEPDIR)/tsushin.Po
+ -rm -f pce/$(DEPDIR)/vce.Po
+ -rm -f pce/input/$(DEPDIR)/gamepad.Po
+ -rm -f pce/input/$(DEPDIR)/mouse.Po
+ -rm -f pce/input/$(DEPDIR)/tsushinkb.Po
+ -rm -f pce_fast/$(DEPDIR)/hes.Po
+ -rm -f pce_fast/$(DEPDIR)/huc.Po
+ -rm -f pce_fast/$(DEPDIR)/huc6280.Po
+ -rm -f pce_fast/$(DEPDIR)/input.Po
+ -rm -f pce_fast/$(DEPDIR)/pce.Po
+ -rm -f pce_fast/$(DEPDIR)/pcecd.Po
+ -rm -f pce_fast/$(DEPDIR)/pcecd_drive.Po
+ -rm -f pce_fast/$(DEPDIR)/psg.Po
+ -rm -f pce_fast/$(DEPDIR)/vdc.Po
+ -rm -f pcfx/$(DEPDIR)/debug.Po
+ -rm -f pcfx/$(DEPDIR)/fxscsi.Po
+ -rm -f pcfx/$(DEPDIR)/huc6273.Po
+ -rm -f pcfx/$(DEPDIR)/idct.Po
+ -rm -f pcfx/$(DEPDIR)/input.Po
+ -rm -f pcfx/$(DEPDIR)/interrupt.Po
+ -rm -f pcfx/$(DEPDIR)/king.Po
+ -rm -f pcfx/$(DEPDIR)/pcfx.Po
+ -rm -f pcfx/$(DEPDIR)/rainbow.Po
+ -rm -f pcfx/$(DEPDIR)/soundbox.Po
+ -rm -f pcfx/$(DEPDIR)/timer.Po
+ -rm -f pcfx/input/$(DEPDIR)/gamepad.Po
+ -rm -f pcfx/input/$(DEPDIR)/mouse.Po
+ -rm -f psx/$(DEPDIR)/cdc.Po
+ -rm -f psx/$(DEPDIR)/cpu.Po
+ -rm -f psx/$(DEPDIR)/debug.Po
+ -rm -f psx/$(DEPDIR)/dis.Po
+ -rm -f psx/$(DEPDIR)/dma.Po
+ -rm -f psx/$(DEPDIR)/frontio.Po
+ -rm -f psx/$(DEPDIR)/gpu.Po
+ -rm -f psx/$(DEPDIR)/gpu_line.Po
+ -rm -f psx/$(DEPDIR)/gpu_polygon.Po
+ -rm -f psx/$(DEPDIR)/gpu_sprite.Po
+ -rm -f psx/$(DEPDIR)/gte.Po
+ -rm -f psx/$(DEPDIR)/irq.Po
+ -rm -f psx/$(DEPDIR)/mdec.Po
+ -rm -f psx/$(DEPDIR)/psx.Po
+ -rm -f psx/$(DEPDIR)/sio.Po
+ -rm -f psx/$(DEPDIR)/spu.Po
+ -rm -f psx/$(DEPDIR)/timer.Po
+ -rm -f psx/input/$(DEPDIR)/dualanalog.Po
+ -rm -f psx/input/$(DEPDIR)/dualshock.Po
+ -rm -f psx/input/$(DEPDIR)/gamepad.Po
+ -rm -f psx/input/$(DEPDIR)/guncon.Po
+ -rm -f psx/input/$(DEPDIR)/justifier.Po
+ -rm -f psx/input/$(DEPDIR)/memcard.Po
+ -rm -f psx/input/$(DEPDIR)/mouse.Po
+ -rm -f psx/input/$(DEPDIR)/multitap.Po
+ -rm -f psx/input/$(DEPDIR)/negcon.Po
+ -rm -f quicklz/$(DEPDIR)/libmdfnquicklz_a-quicklz.Po
+ -rm -f resampler/$(DEPDIR)/resample.Po
+ -rm -f sms/$(DEPDIR)/cart.Po
+ -rm -f sms/$(DEPDIR)/memz80.Po
+ -rm -f sms/$(DEPDIR)/pio.Po
+ -rm -f sms/$(DEPDIR)/render.Po
+ -rm -f sms/$(DEPDIR)/romdb.Po
+ -rm -f sms/$(DEPDIR)/sms.Po
+ -rm -f sms/$(DEPDIR)/sound.Po
+ -rm -f sms/$(DEPDIR)/system.Po
+ -rm -f sms/$(DEPDIR)/tms.Po
+ -rm -f sms/$(DEPDIR)/vdp.Po
+ -rm -f snes/$(DEPDIR)/libsnes_a-interface.Po
+ -rm -f snes/src/cartridge/$(DEPDIR)/libsnes_a-cartridge.Po
+ -rm -f snes/src/cheat/$(DEPDIR)/libsnes_a-cheat.Po
+ -rm -f snes/src/chip/bsx/$(DEPDIR)/libsnes_a-bsx.Po
+ -rm -f snes/src/chip/cx4/$(DEPDIR)/libsnes_a-cx4.Po
+ -rm -f snes/src/chip/dsp1/$(DEPDIR)/libsnes_a-dsp1.Po
+ -rm -f snes/src/chip/dsp2/$(DEPDIR)/libsnes_a-dsp2.Po
+ -rm -f snes/src/chip/dsp3/$(DEPDIR)/libsnes_a-dsp3.Po
+ -rm -f snes/src/chip/dsp4/$(DEPDIR)/libsnes_a-dsp4.Po
+ -rm -f snes/src/chip/obc1/$(DEPDIR)/libsnes_a-obc1.Po
+ -rm -f snes/src/chip/sa1/$(DEPDIR)/libsnes_a-sa1.Po
+ -rm -f snes/src/chip/sdd1/$(DEPDIR)/libsnes_a-sdd1.Po
+ -rm -f snes/src/chip/spc7110/$(DEPDIR)/libsnes_a-spc7110.Po
+ -rm -f snes/src/chip/srtc/$(DEPDIR)/libsnes_a-srtc.Po
+ -rm -f snes/src/chip/st010/$(DEPDIR)/libsnes_a-st010.Po
+ -rm -f snes/src/chip/superfx/$(DEPDIR)/libsnes_a-superfx.Po
+ -rm -f snes/src/cpu/$(DEPDIR)/libsnes_a-cpu.Po
+ -rm -f snes/src/cpu/core/$(DEPDIR)/libsnes_a-core.Po
+ -rm -f snes/src/cpu/scpu/$(DEPDIR)/libsnes_a-scpu.Po
+ -rm -f snes/src/lib/libco/$(DEPDIR)/libsnes_a-libco.Po
+ -rm -f snes/src/memory/$(DEPDIR)/libsnes_a-memory.Po
+ -rm -f snes/src/memory/smemory/$(DEPDIR)/libsnes_a-smemory.Po
+ -rm -f snes/src/ppu/$(DEPDIR)/libsnes_a-ppu.Po
+ -rm -f snes/src/sdsp/$(DEPDIR)/libsnes_a-sdsp.Po
+ -rm -f snes/src/smp/$(DEPDIR)/libsnes_a-smp.Po
+ -rm -f snes/src/system/$(DEPDIR)/libsnes_a-system.Po
+ -rm -f snes_faust/$(DEPDIR)/apu.Po
+ -rm -f snes_faust/$(DEPDIR)/cart.Po
+ -rm -f snes_faust/$(DEPDIR)/cpu.Po
+ -rm -f snes_faust/$(DEPDIR)/debug.Po
+ -rm -f snes_faust/$(DEPDIR)/dis65816.Po
+ -rm -f snes_faust/$(DEPDIR)/input.Po
+ -rm -f snes_faust/$(DEPDIR)/msu1.Po
+ -rm -f snes_faust/$(DEPDIR)/ppu.Po
+ -rm -f snes_faust/$(DEPDIR)/ppu_mt.Po
+ -rm -f snes_faust/$(DEPDIR)/ppu_mtrender.Po
+ -rm -f snes_faust/$(DEPDIR)/ppu_st.Po
+ -rm -f snes_faust/$(DEPDIR)/snes.Po
+ -rm -f snes_faust/cart/$(DEPDIR)/cx4.Po
+ -rm -f snes_faust/cart/$(DEPDIR)/dsp1.Po
+ -rm -f snes_faust/cart/$(DEPDIR)/dsp2.Po
+ -rm -f snes_faust/cart/$(DEPDIR)/sa1.Po
+ -rm -f snes_faust/cart/$(DEPDIR)/sa1cpu.Po
+ -rm -f snes_faust/cart/$(DEPDIR)/sdd1.Po
+ -rm -f snes_faust/cart/$(DEPDIR)/superfx.Po
+ -rm -f sound/$(DEPDIR)/Blip_Buffer.Po
+ -rm -f sound/$(DEPDIR)/DSPUtility.Po
+ -rm -f sound/$(DEPDIR)/Fir_Resampler.Po
+ -rm -f sound/$(DEPDIR)/OwlResampler.Po
+ -rm -f sound/$(DEPDIR)/Stereo_Buffer.Po
+ -rm -f sound/$(DEPDIR)/SwiftResampler.Po
+ -rm -f sound/$(DEPDIR)/WAVRecord.Po
+ -rm -f sound/$(DEPDIR)/okiadpcm.Po
+ -rm -f string/$(DEPDIR)/escape.Po
+ -rm -f string/$(DEPDIR)/string.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-bitwise.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-block.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-codebook.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-floor0.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-floor1.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-framing.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-info.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-mapping0.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-mdct.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-registry.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-res012.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-sharedbook.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-synthesis.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-vorbisfile.Po
+ -rm -f tremor/$(DEPDIR)/libvorbisidec_a-window.Po
+ -rm -f trio/$(DEPDIR)/libtrio_a-trio.Po
+ -rm -f trio/$(DEPDIR)/libtrio_a-trionan.Po
+ -rm -f trio/$(DEPDIR)/libtrio_a-triostr.Po
+ -rm -f vb/$(DEPDIR)/debug.Po
+ -rm -f vb/$(DEPDIR)/input.Po
+ -rm -f vb/$(DEPDIR)/timer.Po
+ -rm -f vb/$(DEPDIR)/vb.Po
+ -rm -f vb/$(DEPDIR)/vip.Po
+ -rm -f vb/$(DEPDIR)/vsu.Po
+ -rm -f video/$(DEPDIR)/Deinterlacer.Po
+ -rm -f video/$(DEPDIR)/Deinterlacer_Blend.Po
+ -rm -f video/$(DEPDIR)/Deinterlacer_Simple.Po
+ -rm -f video/$(DEPDIR)/font-data-12x13.Po
+ -rm -f video/$(DEPDIR)/font-data-18x18.Po
+ -rm -f video/$(DEPDIR)/font-data.Po
+ -rm -f video/$(DEPDIR)/png.Po
+ -rm -f video/$(DEPDIR)/primitives.Po
+ -rm -f video/$(DEPDIR)/resize.Po
+ -rm -f video/$(DEPDIR)/surface.Po
+ -rm -f video/$(DEPDIR)/tblur.Po
+ -rm -f video/$(DEPDIR)/text.Po
+ -rm -f video/$(DEPDIR)/video.Po
+ -rm -f wswan/$(DEPDIR)/comm.Po
+ -rm -f wswan/$(DEPDIR)/debug.Po
+ -rm -f wswan/$(DEPDIR)/eeprom.Po
+ -rm -f wswan/$(DEPDIR)/gfx.Po
+ -rm -f wswan/$(DEPDIR)/interrupt.Po
+ -rm -f wswan/$(DEPDIR)/main.Po
+ -rm -f wswan/$(DEPDIR)/memory.Po
+ -rm -f wswan/$(DEPDIR)/rtc.Po
+ -rm -f wswan/$(DEPDIR)/sound.Po
+ -rm -f wswan/$(DEPDIR)/tcache.Po
+ -rm -f wswan/$(DEPDIR)/v30mz.Po
+ -rm -f wswan/dis/$(DEPDIR)/dis_decode.Po
+ -rm -f wswan/dis/$(DEPDIR)/dis_groups.Po
+ -rm -f wswan/dis/$(DEPDIR)/resolve.Po
+ -rm -f wswan/dis/$(DEPDIR)/syntax.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
@@ -5044,20 +6337,22 @@
.MAKE: $(am__recursive_targets) install-am install-strip
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
- check-am clean clean-binPROGRAMS clean-generic \
- clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
- distclean-compile distclean-generic distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-binPROGRAMS 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 \
- installdirs-am maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
- ps ps-am tags tags-am uninstall uninstall-am \
- uninstall-binPROGRAMS
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+ am--depfiles check check-am clean clean-binPROGRAMS \
+ clean-generic clean-noinstLIBRARIES cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-binPROGRAMS 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 installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am uninstall-binPROGRAMS
+
+.PRECIOUS: Makefile
#
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/md/cd/cd.cpp mednafen-1.26.1+dfsg/include/mednafen/md/cd/cd.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/md/cd/cd.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/md/cd/cd.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -43,12 +43,12 @@
// Read: 0 = Sub CPU "operating"(?), 1 = acknowledge
static bool SACK;
-static uint8 LEDControl;
-static bool InPeripheralReset;
+//static uint8 LEDControl;
+//static bool InPeripheralReset;
static uint8 MM_WP; // Write protect
static uint8 MM_BK; // R/W only on main. PRAM bank select for the main CPU
-static uint8 MM_PM; // R/W only on sub. Priority mode.
+//static uint8 MM_PM; // R/W only on sub. Priority mode.
static bool MM_MODE; // R/W on main and sub. 0 = 2M mode, 1 = 1M mode
enum
{
@@ -439,7 +439,7 @@
printf("Unknown main Read16: %08x\n", A);
return(0);
}
-
+#if 0
//////////////////////////////////
//
// Sub 68K memory map handling:
@@ -820,7 +820,7 @@
printf("Unknown Sub read16: %08x\n", A);
return(0);
}
-
+#endif
#define SUBCPU_CLOCK 12500000
void MDCD_Run(int32 md_master_cycles)
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/md/debug.cpp mednafen-1.26.1+dfsg/include/mednafen/md/debug.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/md/debug.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/md/debug.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -409,6 +409,7 @@
DebuggerInfoStruct DBGInfo =
{
+ false,
"shift_jis",
10, // Max instruction size(bytes)
2, // Instruction alignment(bytes)
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/mednafen.cpp mednafen-1.26.1+dfsg/include/mednafen/mednafen.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/mednafen.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/mednafen.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -1425,7 +1425,7 @@
&EmulatedCDPlay,
&EmulatedDEMO
};
- static_assert(MEDNAFEN_VERSION_NUMERIC >= 0x00102402, "Bad MEDNAFEN_VERSION_NUMERIC");
+ static_assert(MEDNAFEN_VERSION_NUMERIC >= 0x00102601, "Bad MEDNAFEN_VERSION_NUMERIC");
for(unsigned int i = 0; i < sizeof(InternalSystems) / sizeof(MDFNGI *); i++)
AddSystem(InternalSystems[i]);
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/nes/debug.cpp mednafen-1.26.1+dfsg/include/mednafen/nes/debug.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/nes/debug.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/nes/debug.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -498,6 +498,7 @@
DebuggerInfoStruct NESDBGInfo =
{
+ false,
"cp437",
3,
1, // Instruction alignment(bytes)
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/nes/ppu/ppu.cpp mednafen-1.26.1+dfsg/include/mednafen/nes/ppu/ppu.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/nes/ppu/ppu.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/nes/ppu/ppu.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -1037,47 +1037,47 @@
if(n == 0)
sb=1;
- uint8 *C;
- int t;
- unsigned int vadr;
-
- t = (int)scanline-(spr->y);
-
- if (Sprite16)
- vadr = ((spr->no&1)<<12) + ((spr->no&0xFE)<<4);
- else
- vadr = (spr->no<<4)+vofs;
+ uint8 *C;
+ int t;
+ unsigned int vadr;
+
+ t = (int)scanline-(spr->y);
+
+ if (Sprite16)
+ vadr = ((spr->no&1)<<12) + ((spr->no&0xFE)<<4);
+ else
+ vadr = (spr->no<<4)+vofs;
- if (spr->atr&V_FLIP)
- {
+ if (spr->atr&V_FLIP)
+ {
vadr+=7;
vadr-=t;
vadr+=(P0&0x20)>>1;
vadr-=t&8;
- }
- else
- {
+ }
+ else
+ {
vadr+=t;
vadr+=t&8;
- }
+ }
- if(MMC5Hack && geniestage!=1 && Sprite16) C = MMC5SPRVRAMADR(vadr);
- else C = VRAMADR(vadr);
- dst->ca[0]=C[0];
+ if(MMC5Hack && geniestage!=1 && Sprite16) C = MMC5SPRVRAMADR(vadr);
+ else C = VRAMADR(vadr);
+ dst->ca[0]=C[0];
- if(PPU_hook && ns < 8)
- {
- PPU_hook(0x2000);
- PPU_hook(vadr);
- }
+ if(PPU_hook && ns < 8)
+ {
+ PPU_hook(0x2000);
+ PPU_hook(vadr);
+ }
- dst->ca[1]=C[8];
+ dst->ca[1]=C[8];
- if(PPU_hook && ns<8)
- PPU_hook(vadr | 8);
+ if(PPU_hook && ns<8)
+ PPU_hook(vadr | 8);
- dst->x=spr->x;
- dst->atr=spr->atr;
+ dst->x=spr->x;
+ dst->atr=spr->atr;
ns++;
}
@@ -1722,61 +1722,52 @@
neo_palette[x] = GfxDecode_Buf->format.MakeColor(x * 85, x * 85, x * 85, 0xFF);
}
else
+ {
for(int x = 0; x < 4; x++)
neo_palette[x] = CM.PALRAMLUTCache[PALRAMCache[pbn * 4 + x] & 0x3F] | GfxDecode_Buf->format.MakeColor(0, 0, 0, 0xFF);
+ }
- for(int y = 0; y < GfxDecode_Buf->h; y++)
+ for(int y = 0; y < GfxDecode_Buf->h; y++)
+ {
+ for(int x = 0; x < GfxDecode_Buf->w; x+=8)
{
- for(int x = 0; x < GfxDecode_Buf->w; x+=8)
- {
- unsigned which_tile = (x / 8) + (GfxDecode_Scroll + (y / 8)) * (GfxDecode_Buf->w / 8);
- unsigned tile_c = 0;
+ unsigned which_tile = (x / 8) + (GfxDecode_Scroll + (y / 8)) * (GfxDecode_Buf->w / 8);
+ unsigned tile_c = 0;
- uint8 *cg_ptr;
- uint8 cg[2];
+ uint8 *cg_ptr;
+ uint8 cg[2];
- if(MMC5Hack)
+ if(MMC5Hack)
+ {
+ if(GfxDecode_Layer) // Sprites
{
- if(GfxDecode_Layer) // Sprites
- {
- //which_tile &= 0x1FF;
- cg_ptr = MMC5SPRVRAMADR(which_tile * 16);
- tile_c = 0x200;
- }
- else
+ //which_tile &= 0x1FF;
+ cg_ptr = MMC5SPRVRAMADR(which_tile * 16);
+ tile_c = 0x200;
+ }
+ else
+ {
+ switch(MMC5HackCHRMode)
{
- switch(MMC5HackCHRMode)
- {
- case 1: break;
- default: //which_tile &= 0x1FF;
- cg_ptr = MMC5BGVRAMADR(which_tile * 16);
+ case 1: break;
+ default: //which_tile &= 0x1FF;
+ cg_ptr = MMC5BGVRAMADR(which_tile * 16);
tile_c = 0x200;
break;
- }
}
}
- else
+ }
+ else
+ {
+ if(GfxDecode_Layer) // Sprites
{
- if(GfxDecode_Layer) // Sprites
+ if(Sprite16)
{
- if(Sprite16)
- {
- tile_c = 0x200;
- }
- else
- {
- if(SpAdrHI)
- {
- which_tile += 0x100;
- tile_c = 0x200;
- }
- else
- tile_c = 0x100;
- }
+ tile_c = 0x200;
}
- else // Background
+ else
{
- if(BGAdrHI)
+ if(SpAdrHI)
{
which_tile += 0x100;
tile_c = 0x200;
@@ -1784,30 +1775,41 @@
else
tile_c = 0x100;
}
-
- cg_ptr = VRAMADR(which_tile * 16);
}
-
- if(which_tile >= tile_c)
+ else // Background
{
- for(int sx = 0; sx < 8; sx++) target[x + sx] = GfxDecode_Buf->format.MakeColor(0, 0, 0, 0);
- continue;
+ if(BGAdrHI)
+ {
+ which_tile += 0x100;
+ tile_c = 0x200;
+ }
+ else
+ tile_c = 0x100;
}
- cg[0] = cg_ptr[0 + (y & 0x7)];
- cg[1] = cg_ptr[8 + (y & 0x7)];
+ cg_ptr = VRAMADR(which_tile * 16);
+ }
- for(int sx = 0; sx < 8; sx++)
- target[x + sx] = neo_palette[((cg[0] >> (7-sx)) & 0x1) | (((cg[1] >> (7-sx)) & 0x1) << 1)];
+ if(which_tile >= tile_c)
+ {
+ for(int sx = 0; sx < 8; sx++) target[x + sx] = GfxDecode_Buf->format.MakeColor(0, 0, 0, 0);
+ continue;
+ }
- target[x + GfxDecode_Buf->w*2 + 0] = target[x + GfxDecode_Buf->w*2 + 1] = target[x + GfxDecode_Buf->w*2 + 2] = target[x + GfxDecode_Buf->w*2 + 3] =
- target[x + GfxDecode_Buf->w*2 + 4] = target[x + GfxDecode_Buf->w*2 + 5] = target[x + GfxDecode_Buf->w*2 + 6] = target[x + GfxDecode_Buf->w*2 + 7] = which_tile * 16;
+ cg[0] = cg_ptr[0 + (y & 0x7)];
+ cg[1] = cg_ptr[8 + (y & 0x7)];
- target[x + GfxDecode_Buf->w*1 + 0]=target[x + GfxDecode_Buf->w*1 + 1]=target[x + GfxDecode_Buf->w*1 + 2]=target[x + GfxDecode_Buf->w*1 + 3] =
- target[x + GfxDecode_Buf->w*1 + 4]=target[x + GfxDecode_Buf->w*1 + 5]=target[x + GfxDecode_Buf->w*1 + 6]=target[x + GfxDecode_Buf->w*1 + 7] = which_tile;
- }
- target += GfxDecode_Buf->w * 3;
+ for(int sx = 0; sx < 8; sx++)
+ target[x + sx] = neo_palette[((cg[0] >> (7-sx)) & 0x1) | (((cg[1] >> (7-sx)) & 0x1) << 1)];
+
+ target[x + GfxDecode_Buf->w*2 + 0] = target[x + GfxDecode_Buf->w*2 + 1] = target[x + GfxDecode_Buf->w*2 + 2] = target[x + GfxDecode_Buf->w*2 + 3] =
+ target[x + GfxDecode_Buf->w*2 + 4] = target[x + GfxDecode_Buf->w*2 + 5] = target[x + GfxDecode_Buf->w*2 + 6] = target[x + GfxDecode_Buf->w*2 + 7] = which_tile * 16;
+
+ target[x + GfxDecode_Buf->w*1 + 0]=target[x + GfxDecode_Buf->w*1 + 1]=target[x + GfxDecode_Buf->w*1 + 2]=target[x + GfxDecode_Buf->w*1 + 3] =
+ target[x + GfxDecode_Buf->w*1 + 4]=target[x + GfxDecode_Buf->w*1 + 5]=target[x + GfxDecode_Buf->w*1 + 6]=target[x + GfxDecode_Buf->w*1 + 7] = which_tile;
}
+ target += GfxDecode_Buf->w * 3;
+ }
}
}
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/pce/debug.cpp mednafen-1.26.1+dfsg/include/mednafen/pce/debug.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/pce/debug.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/pce/debug.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -1094,6 +1094,7 @@
DebuggerInfoStruct PCEDBGInfo =
{
+ false,
"shift_jis",
7,
1, // Instruction alignment(bytes)
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/pcfx/debug.cpp mednafen-1.26.1+dfsg/include/mednafen/pcfx/debug.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/pcfx/debug.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/pcfx/debug.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -1008,6 +1008,7 @@
DebuggerInfoStruct PCFXDBGInfo =
{
+ false,
"shift_jis",
4,
2, // Instruction alignment(bytes)
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/psx/debug.cpp mednafen-1.26.1+dfsg/include/mednafen/psx/debug.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/psx/debug.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/psx/debug.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -416,6 +416,7 @@
DebuggerInfoStruct PSX_DBGInfo =
{
+ false,
"shift_jis",
4, // Max instruction byte size
4, // Instruction alignment(bytes)
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/psx/gpu.cpp mednafen-1.26.1+dfsg/include/mednafen/psx/gpu.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/psx/gpu.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/psx/gpu.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -1448,7 +1448,7 @@
}
else
{
- PSX_GPULineHook(sys_timestamp, sys_timestamp - ((uint64)gpu_clocks * 65536) / GPUClockRatio, scanline == 0, NULL, &surface->format, 0, 0, 0, 0);
+ PSX_GPULineHook(sys_timestamp, sys_timestamp - ((uint64)gpu_clocks * 65536) / GPUClockRatio, scanline == 0, NULL, NULL, 0, 0, 0, 0);
}
if(!InVBlank)
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/psx/spu.h mednafen-1.26.1+dfsg/include/mednafen/psx/spu.h
--- mednafen-1.24.3+dfsg/include/mednafen/psx/spu.h 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/psx/spu.h 2020-11-10 06:04:17.000000000 +0000
@@ -219,28 +219,17 @@
int16 IIR_COEF;
int16 FB_ALPHA;
int16 FB_X;
- uint16 IIR_DEST_A0;
- uint16 IIR_DEST_A1;
- uint16 ACC_SRC_A0;
- uint16 ACC_SRC_A1;
- uint16 ACC_SRC_B0;
- uint16 ACC_SRC_B1;
- uint16 IIR_SRC_A0;
- uint16 IIR_SRC_A1;
- uint16 IIR_DEST_B0;
- uint16 IIR_DEST_B1;
- uint16 ACC_SRC_C0;
- uint16 ACC_SRC_C1;
- uint16 ACC_SRC_D0;
- uint16 ACC_SRC_D1;
- uint16 IIR_SRC_B1;
- uint16 IIR_SRC_B0;
- uint16 MIX_DEST_A0;
- uint16 MIX_DEST_A1;
- uint16 MIX_DEST_B0;
- uint16 MIX_DEST_B1;
- int16 IN_COEF_L;
- int16 IN_COEF_R;
+ uint16 IIR_DEST_A[2];
+ uint16 ACC_SRC_A[2];
+ uint16 ACC_SRC_B[2];
+ uint16 IIR_SRC_A[2];
+ uint16 IIR_DEST_B[2];
+ uint16 ACC_SRC_C[2];
+ uint16 ACC_SRC_D[2];
+ uint16 IIR_SRC_B[2];
+ uint16 MIX_DEST_A[2];
+ uint16 MIX_DEST_B[2];
+ int16 IN_COEF[2];
};
};
};
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/psx/spu_reverb.inc mednafen-1.26.1+dfsg/include/mednafen/psx/spu_reverb.inc
--- mednafen-1.24.3+dfsg/include/mednafen/psx/spu_reverb.inc 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/psx/spu_reverb.inc 2020-11-10 06:04:17.000000000 +0000
@@ -2,7 +2,7 @@
/* Mednafen Sony PS1 Emulation Module */
/******************************************************************************/
/* spu_reverb.inc:
-** Copyright (C) 2011-2016 Mednafen Team
+** Copyright (C) 2011-2020 Mednafen Team
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License
@@ -31,6 +31,13 @@
return(samp);
}
+static INLINE int16 ReverbNeg(int16 samp)
+{
+ if(samp == -32768)
+ return 0x7FFF;
+
+ return -samp;
+}
INLINE uint32 PS_SPU::Get_Reverb_Offset(uint32 in_offset)
{
@@ -54,7 +61,8 @@
void NO_INLINE PS_SPU::WR_RVB(uint16 raw_offs, int16 sample)
{
- WriteSPURAM(Get_Reverb_Offset(raw_offs << 2), sample);
+ if(SPUControl & 0x80)
+ WriteSPURAM(Get_Reverb_Offset(raw_offs << 2), sample);
}
//
@@ -140,77 +148,70 @@
int32 downsampled[2];
for(unsigned lr = 0; lr < 2; lr++)
- downsampled[lr] = Reverb4422(&RDSB[lr][(RvbResPos - 39) & 0x3F]);
+ downsampled[lr] = Reverb4422(&RDSB[lr][(RvbResPos - 38) & 0x3F]);
//
// Run algorithm
- ///
- if(SPUControl & 0x80)
+ //
+ for(unsigned lr = 0; lr < 2; lr++)
{
- int16 IIR_INPUT_A0, IIR_INPUT_A1, IIR_INPUT_B0, IIR_INPUT_B1;
- int16 IIR_A0, IIR_A1, IIR_B0, IIR_B1;
- int16 ACC0, ACC1;
- int16 FB_A0, FB_A1, FB_B0, FB_B1;
-
- IIR_INPUT_A0 = ReverbSat(((RD_RVB(IIR_SRC_A0) * IIR_COEF) >> 15) + ((downsampled[0] * IN_COEF_L) >> 15));
- IIR_INPUT_A1 = ReverbSat(((RD_RVB(IIR_SRC_A1) * IIR_COEF) >> 15) + ((downsampled[1] * IN_COEF_R) >> 15));
- IIR_INPUT_B0 = ReverbSat(((RD_RVB(IIR_SRC_B0) * IIR_COEF) >> 15) + ((downsampled[0] * IN_COEF_L) >> 15));
- IIR_INPUT_B1 = ReverbSat(((RD_RVB(IIR_SRC_B1) * IIR_COEF) >> 15) + ((downsampled[1] * IN_COEF_R) >> 15));
-
- IIR_A0 = ReverbSat((((IIR_INPUT_A0 * IIR_ALPHA) >> 14) + (IIASM(IIR_ALPHA, RD_RVB(IIR_DEST_A0, -1)) >> 14)) >> 1);
- IIR_A1 = ReverbSat((((IIR_INPUT_A1 * IIR_ALPHA) >> 14) + (IIASM(IIR_ALPHA, RD_RVB(IIR_DEST_A1, -1)) >> 14)) >> 1);
- IIR_B0 = ReverbSat((((IIR_INPUT_B0 * IIR_ALPHA) >> 14) + (IIASM(IIR_ALPHA, RD_RVB(IIR_DEST_B0, -1)) >> 14)) >> 1);
- IIR_B1 = ReverbSat((((IIR_INPUT_B1 * IIR_ALPHA) >> 14) + (IIASM(IIR_ALPHA, RD_RVB(IIR_DEST_B1, -1)) >> 14)) >> 1);
-
- WR_RVB(IIR_DEST_A0, IIR_A0);
- WR_RVB(IIR_DEST_A1, IIR_A1);
- WR_RVB(IIR_DEST_B0, IIR_B0);
- WR_RVB(IIR_DEST_B1, IIR_B1);
-
- ACC0 = ReverbSat((((RD_RVB(ACC_SRC_A0) * ACC_COEF_A) >> 14) +
- ((RD_RVB(ACC_SRC_B0) * ACC_COEF_B) >> 14) +
- ((RD_RVB(ACC_SRC_C0) * ACC_COEF_C) >> 14) +
- ((RD_RVB(ACC_SRC_D0) * ACC_COEF_D) >> 14)) >> 1);
-
- ACC1 = ReverbSat((((RD_RVB(ACC_SRC_A1) * ACC_COEF_A) >> 14) +
- ((RD_RVB(ACC_SRC_B1) * ACC_COEF_B) >> 14) +
- ((RD_RVB(ACC_SRC_C1) * ACC_COEF_C) >> 14) +
- ((RD_RVB(ACC_SRC_D1) * ACC_COEF_D) >> 14)) >> 1);
-
- FB_A0 = RD_RVB(MIX_DEST_A0 - FB_SRC_A);
- FB_A1 = RD_RVB(MIX_DEST_A1 - FB_SRC_A);
- FB_B0 = RD_RVB(MIX_DEST_B0 - FB_SRC_B);
- FB_B1 = RD_RVB(MIX_DEST_B1 - FB_SRC_B);
-
- WR_RVB(MIX_DEST_A0, ReverbSat(ACC0 - ((FB_A0 * FB_ALPHA) >> 15)));
- WR_RVB(MIX_DEST_A1, ReverbSat(ACC1 - ((FB_A1 * FB_ALPHA) >> 15)));
-
- WR_RVB(MIX_DEST_B0, ReverbSat(((FB_ALPHA * ACC0) >> 15) - ((FB_A0 * (int16)(0x8000 ^ FB_ALPHA)) >> 15) - ((FB_B0 * FB_X) >> 15)));
- WR_RVB(MIX_DEST_B1, ReverbSat(((FB_ALPHA * ACC1) >> 15) - ((FB_A1 * (int16)(0x8000 ^ FB_ALPHA)) >> 15) - ((FB_B1 * FB_X) >> 15)));
+ const int16 IIR_INPUT_A = ReverbSat((((RD_RVB(IIR_SRC_A[lr ^ 0]) * IIR_COEF) >> 14) + ((downsampled[lr] * IN_COEF[lr]) >> 14)) >> 1);
+ const int16 IIR_INPUT_B = ReverbSat((((RD_RVB(IIR_SRC_B[lr ^ 1]) * IIR_COEF) >> 14) + ((downsampled[lr] * IN_COEF[lr]) >> 14)) >> 1);
+ const int16 IIR_A = ReverbSat((((IIR_INPUT_A * IIR_ALPHA) >> 14) + (IIASM(IIR_ALPHA, RD_RVB(IIR_DEST_A[lr], -1)) >> 14)) >> 1);
+ const int16 IIR_B = ReverbSat((((IIR_INPUT_B * IIR_ALPHA) >> 14) + (IIASM(IIR_ALPHA, RD_RVB(IIR_DEST_B[lr], -1)) >> 14)) >> 1);
+
+ WR_RVB(IIR_DEST_A[lr], IIR_A);
+ WR_RVB(IIR_DEST_B[lr], IIR_B);
+
+ const int32 ACC = ((RD_RVB(ACC_SRC_A[lr]) * ACC_COEF_A) >> 14) +
+ ((RD_RVB(ACC_SRC_B[lr]) * ACC_COEF_B) >> 14) +
+ ((RD_RVB(ACC_SRC_C[lr]) * ACC_COEF_C) >> 14) +
+ ((RD_RVB(ACC_SRC_D[lr]) * ACC_COEF_D) >> 14);
+
+ const int16 FB_A = RD_RVB(MIX_DEST_A[lr] - FB_SRC_A);
+ const int16 FB_B = RD_RVB(MIX_DEST_B[lr] - FB_SRC_B);
+ const int16 MDA = ReverbSat((ACC + ((FB_A * ReverbNeg(FB_ALPHA)) >> 14)) >> 1);
+ const int16 MDB = ReverbSat(FB_A + ((((MDA * FB_ALPHA) >> 14) + ((FB_B * ReverbNeg(FB_X)) >> 14)) >> 1));
+ const int16 IVB = ReverbSat(FB_B + ((MDB * FB_X) >> 15));
+
+ WR_RVB(MIX_DEST_A[lr], MDA);
+ WR_RVB(MIX_DEST_B[lr], MDB);
+#if 0
+ {
+ static uint32 sqcounter;
+ RUSB[lr][(RvbResPos >> 1) | 0x20] = RUSB[lr][RvbResPos >> 1] = ((sqcounter & 0xFF) == 0) ? 0x8000 : 0x0000; //((sqcounter & 0x80) ? 0x7000 : 0x9000);
+ sqcounter += lr;
+ }
+#else
+ RUSB[lr][(RvbResPos >> 1) | 0x20] = RUSB[lr][RvbResPos >> 1] = IVB; // Output sample
+#endif
}
-
- //
- // Get output samples
//
- RUSB[0][(RvbResPos >> 1) | 0x20] = RUSB[0][RvbResPos >> 1] = (RD_RVB(MIX_DEST_A0) + RD_RVB(MIX_DEST_B0)) >> 1;
- RUSB[1][(RvbResPos >> 1) | 0x20] = RUSB[1][RvbResPos >> 1] = (RD_RVB(MIX_DEST_A1) + RD_RVB(MIX_DEST_B1)) >> 1;
-
+ //
+ //
ReverbCur = (ReverbCur + 1) & 0x3FFFF;
if(!ReverbCur)
ReverbCur = ReverbWA;
for(unsigned lr = 0; lr < 2; lr++)
- upsampled[lr] = Reverb2244(&RUSB[lr][((RvbResPos - 39) & 0x3F) >> 1]);
+ upsampled[lr] = Reverb2244(&RUSB[lr][((RvbResPos >> 1) - 19) & 0x1F]);
}
else
{
for(unsigned lr = 0; lr < 2; lr++)
- upsampled[lr] = Reverb2244(&RUSB[lr][((RvbResPos - 39) & 0x3F) >> 1]);
+ upsampled[lr] = Reverb2244(&RUSB[lr][((RvbResPos >> 1) - 19) & 0x1F]);
}
RvbResPos = (RvbResPos + 1) & 0x3F;
for(unsigned lr = 0; lr < 2; lr++)
+ {
+#if 0
+ if(!lr)
+ printf("%d\n", (-upsampled[lr]) >> 1);
+#endif
+
out[lr] = upsampled[lr];
+ }
}
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/sexyal/Makefile.in mednafen-1.26.1+dfsg/include/mednafen/sexyal/Makefile.in
--- mednafen-1.24.3+dfsg/include/mednafen/sexyal/Makefile.in 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/sexyal/Makefile.in 2020-11-10 06:04:17.000000000 +0000
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -79,8 +89,6 @@
build_triplet = @build@
host_triplet = @host@
subdir = src/sexyal
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp README
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 \
@@ -102,6 +110,7 @@
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/include/config.h
CONFIG_CLEAN_FILES =
@@ -151,7 +160,15 @@
am__v_at_0 = @
am__v_at_1 =
depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/convert.Po ./$(DEPDIR)/sexyal.Po \
+ drivers/$(DEPDIR)/alsa.Po drivers/$(DEPDIR)/cmi8738.Po \
+ drivers/$(DEPDIR)/dos_common.Po drivers/$(DEPDIR)/dsound.Po \
+ drivers/$(DEPDIR)/dummy.Po drivers/$(DEPDIR)/es1370.Po \
+ drivers/$(DEPDIR)/es1371.Po drivers/$(DEPDIR)/jack.Po \
+ drivers/$(DEPDIR)/openbsd.Po drivers/$(DEPDIR)/oss.Po \
+ drivers/$(DEPDIR)/sb.Po drivers/$(DEPDIR)/sdl.Po \
+ drivers/$(DEPDIR)/wasapi.Po drivers/$(DEPDIR)/wasapish.Po
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
@@ -192,6 +209,8 @@
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/mkinstalldirs README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ALLOCA = @ALLOCA@
@@ -366,6 +385,7 @@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@@ -405,14 +425,13 @@
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/sexyal/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu src/sexyal/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);; \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -473,22 +492,28 @@
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convert.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sexyal.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/alsa.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/cmi8738.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/dos_common.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/dsound.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/dummy.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/es1370.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/es1371.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/jack.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/openbsd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/oss.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/sb.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/sdl.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/wasapi.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/wasapish.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convert.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sexyal.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/alsa.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/cmi8738.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/dos_common.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/dsound.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/dummy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/es1370.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/es1371.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/jack.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/openbsd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/oss.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/sb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/sdl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/wasapi.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@drivers/$(DEPDIR)/wasapish.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+ @$(MKDIR_P) $(@D)
+ @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
.cpp.o:
@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -558,7 +583,10 @@
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
@@ -629,7 +657,22 @@
clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
distclean: distclean-am
- -rm -rf ./$(DEPDIR) drivers/$(DEPDIR)
+ -rm -f ./$(DEPDIR)/convert.Po
+ -rm -f ./$(DEPDIR)/sexyal.Po
+ -rm -f drivers/$(DEPDIR)/alsa.Po
+ -rm -f drivers/$(DEPDIR)/cmi8738.Po
+ -rm -f drivers/$(DEPDIR)/dos_common.Po
+ -rm -f drivers/$(DEPDIR)/dsound.Po
+ -rm -f drivers/$(DEPDIR)/dummy.Po
+ -rm -f drivers/$(DEPDIR)/es1370.Po
+ -rm -f drivers/$(DEPDIR)/es1371.Po
+ -rm -f drivers/$(DEPDIR)/jack.Po
+ -rm -f drivers/$(DEPDIR)/openbsd.Po
+ -rm -f drivers/$(DEPDIR)/oss.Po
+ -rm -f drivers/$(DEPDIR)/sb.Po
+ -rm -f drivers/$(DEPDIR)/sdl.Po
+ -rm -f drivers/$(DEPDIR)/wasapi.Po
+ -rm -f drivers/$(DEPDIR)/wasapish.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
@@ -675,7 +718,22 @@
installcheck-am:
maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR) drivers/$(DEPDIR)
+ -rm -f ./$(DEPDIR)/convert.Po
+ -rm -f ./$(DEPDIR)/sexyal.Po
+ -rm -f drivers/$(DEPDIR)/alsa.Po
+ -rm -f drivers/$(DEPDIR)/cmi8738.Po
+ -rm -f drivers/$(DEPDIR)/dos_common.Po
+ -rm -f drivers/$(DEPDIR)/dsound.Po
+ -rm -f drivers/$(DEPDIR)/dummy.Po
+ -rm -f drivers/$(DEPDIR)/es1370.Po
+ -rm -f drivers/$(DEPDIR)/es1371.Po
+ -rm -f drivers/$(DEPDIR)/jack.Po
+ -rm -f drivers/$(DEPDIR)/openbsd.Po
+ -rm -f drivers/$(DEPDIR)/oss.Po
+ -rm -f drivers/$(DEPDIR)/sb.Po
+ -rm -f drivers/$(DEPDIR)/sdl.Po
+ -rm -f drivers/$(DEPDIR)/wasapi.Po
+ -rm -f drivers/$(DEPDIR)/wasapish.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
@@ -695,18 +753,20 @@
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
- distclean-compile distclean-generic 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 pdf pdf-am ps ps-am tags tags-am uninstall \
- uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
+ clean-generic clean-noinstLIBRARIES cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ 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 pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/snes/interface.cpp mednafen-1.26.1+dfsg/include/mednafen/snes/interface.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/snes/interface.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/snes/interface.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -346,7 +346,6 @@
case bSNES_v059::Input::DeviceMouse:
{
- assert(port < 2);
switch(id)
{
case bSNES_v059::Input::MouseX:
@@ -370,7 +369,6 @@
case bSNES_v059::Input::DeviceSuperScope:
{
- assert(port < 2);
switch(id)
{
case bSNES_v059::Input::SuperScopeX:
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/snes_faust/debug.cpp mednafen-1.26.1+dfsg/include/mednafen/snes_faust/debug.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/snes_faust/debug.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/snes_faust/debug.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -591,6 +591,7 @@
DebuggerInfoStruct DBG_DBGInfo
{
+ true,
"cp437",
4,
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/snes_faust/msu1.cpp mednafen-1.26.1+dfsg/include/mednafen/snes_faust/msu1.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/snes_faust/msu1.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/snes_faust/msu1.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -2,7 +2,7 @@
/* Mednafen Fast SNES Emulation Module */
/******************************************************************************/
/* msu1.cpp - MSU1 emulation
-** Copyright (C) 2019 Mednafen Team
+** Copyright (C) 2019-2020 Mednafen Team
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License
@@ -90,8 +90,11 @@
//
const float eff_volume = volume * ((1.0 / 255.0f) * 256.0f);
- if(MDFN_UNLIKELY(!(status & 0x10) || (status & 0x40)))
+ if(MDFN_UNLIKELY((status & 0x50) != 0x10 || !audio_reader))
{
+ if(!(status & 0x60) && !audio_reader)
+ status &= ~0x10;
+
while(run_count)
{
(&ResampBuf[0].BufPudding()->f)[ResampBufPos] = 0;
@@ -481,7 +484,6 @@
//
//
//
- audio_reader = new MTStreamReader(affinity_audio);
data_reader = new MTStreamReader(affinity_data);
//
{
@@ -500,6 +502,7 @@
const std::string filebase = gf->outside.fbase;
const std::string fnamepat = filebase + "-%.pcm";
+ const size_t fnamepat_pctpos = fnamepat.size() - 5;
const std::string dirpath = gf->outside.dir;
std::bitset<65536> trypcm; // May have false positives, should not have false negatives, but who knows with case insensitive filesystems...
try
@@ -515,10 +518,12 @@
if(si >= fname.size())
return ret;
//
- if(fnamepat[i] == '%')
+ if(i == fnamepat_pctpos)
{
bool first = true;
+ assert(fnamepat[i] == '%');
+
tnum = 0;
do
{
@@ -606,6 +611,9 @@
asi.pos = 0;
asi.stream = std::move(afp);
+ if(!audio_reader)
+ audio_reader = new MTStreamReader(affinity_audio);
+
audio_reader->add_stream(std::move(asi));
//
td.w = w++;
@@ -658,7 +666,7 @@
control = 0x00;
data_reader->set_active_stream(0, 0);
- if(tracks.size())
+ if(audio_reader)
audio_reader->set_active_stream(0, 8);
//
//
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/snes_faust/notes/GAME_NOTES mednafen-1.26.1+dfsg/include/mednafen/snes_faust/notes/GAME_NOTES
--- mednafen-1.24.3+dfsg/include/mednafen/snes_faust/notes/GAME_NOTES 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/snes_faust/notes/GAME_NOTES 2020-11-10 06:04:17.000000000 +0000
@@ -29,6 +29,11 @@
Hook
Tecmo Super Bowl II
+//
+// Attempts to write(non-HDMA) to VRAM during active display:
+//
+NBA Pro Basketball: Bulls vs Blazers
+Zen-Nihon Pro Wres
//
// Interlace:
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/snes_faust/ppu_common.inc mednafen-1.26.1+dfsg/include/mednafen/snes_faust/ppu_common.inc
--- mednafen-1.24.3+dfsg/include/mednafen/snes_faust/ppu_common.inc 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/snes_faust/ppu_common.inc 2020-11-10 06:04:17.000000000 +0000
@@ -315,7 +315,7 @@
VRAM_ReadBuffer = VRAM[GetVAddr()];
VRAM_Addr += VMAIN_AddrInc;
- PPU_MTRENDER::MTIF_Read(A);
+ PPU_MTRENDER::MTIF_Read(A); // Don't move outside this if() block
}
return BusLatch[0];
@@ -338,7 +338,7 @@
VRAM_ReadBuffer = VRAM[GetVAddr()];
VRAM_Addr += VMAIN_AddrInc;
- PPU_MTRENDER::MTIF_Read(A);
+ PPU_MTRENDER::MTIF_Read(A); // Don't move outside this if() block
}
return BusLatch[0];
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/snes_faust/ppu_mtrender.cpp mednafen-1.26.1+dfsg/include/mednafen/snes_faust/ppu_mtrender.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/snes_faust/ppu_mtrender.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/snes_faust/ppu_mtrender.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -420,8 +420,7 @@
case 0x39:
case 0x3A:
//printf("MT VRAM Addr Inc\n");
- if(!VMAIN_IncMode)
- VRAM_Addr += VMAIN_AddrInc;
+ VRAM_Addr += VMAIN_AddrInc;
break;
}
}
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/ss/cdb.cpp mednafen-1.26.1+dfsg/include/mednafen/ss/cdb.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/ss/cdb.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/ss/cdb.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -2,7 +2,7 @@
/* Mednafen Sega Saturn Emulation Module */
/******************************************************************************/
/* cdb.cpp - CD Block Emulation
-** Copyright (C) 2016-2017 Mednafen Team
+** Copyright (C) 2016-2020 Mednafen Team
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License
@@ -19,14 +19,80 @@
** 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
+/*
+ Finicky games:
+ Astal
+ Play and Seek command nuances.
+
+ Batman Forever
+ Seek delay must be high enough, or glitchy batmobile.
+
+ BIOS CD-DA Player
+ Play and Seek command nuances.
+
+ Break Point
+ Aborts out to BIOS CD player screen if CDB ever reports
+ PLAY status for a 1-sector read.
+
+ DJ Wars
+ Same issue as Break Point.
+
+ Dragon Force II
+ When trying to skip an FMV, the game will hang until the initial
+ Play command completes if the CDB in in a PAUSE state due to
+ buffers being full, and the CDB fails to quickly go into BUSY
+ state(due to seek start) immediately after a Reset Selector
+ command frees up buffers.
+
+ Hop Step Idol
+ Similar issue to Break Point, but fails more spectacularly.
+
+ Independence Day (USA)
+ Issues 'Get CD Device Connection' command without waiting for
+ the previously-issued 'Reset Selector' command to completely
+ finish, expecting the returned value to not be the reset
+ value.
+
+ Jung Rhythm
+ Seek delay must be high enough, or will hang when trying to
+ retry a failed stage.
+
+ Magical Drop III
+ Needs resetting of 'is_cdrom' status bit to be delayed by a
+ few dozen microseconds after a seek start triggered by the
+ Play command.
+
+ NBA Action
+ Relies on seek to index 2+ functionality.
+
+ Steam Heart's
+ Play and Seek command nuances. Music should resume where it
+ left off after pausing and unpausing in-game.
+
+ Tactics Ogre
+ If repeat handling is wrong, will hang when trying to resume
+ a suspended game.
+
+ Taito Chase H.Q.
+ Relies on seek to index 2+ functionality.
+
+ Tenchi Muyou! Ryououki Gokuraku
+ Quirks with running commands during an Init command software
+ reset.
+
+ Tennis Arena
+ Probably same issue as Break Point.
+
+ World Cup France '98
+ Same issues as Dragon Force II
+*/
+
// TODO: Respect auth type with COMMAND_AUTH_DEVICE.
// TODO: Test INIT 0x00 side effects(and see if it affects CD device connection)
// TODO: edc_lec_check_and_correct
-// TODO: Proper seek delays(for "Gungriffon" FMV)
-
// TODO: Some filesys commands(at least change dir, read file) seem to reset the saved command start and end positions(accessed via 0xFFFFFF to PLAY command) to something
// akin to 0.
@@ -63,6 +129,8 @@
namespace MDFN_IEN_SS
{
+static void CheckBufPauseResume(void);
+
enum
{
SECLEN__FIRST = 0,
@@ -379,6 +447,7 @@
static bool CommandPending;
static uint16 SWResetHIRQDeferred;
static bool SWResetPending;
+static uint8 ResetSelPending;
static uint8 CDDevConn;
static uint8 LastBufDest;
@@ -498,7 +567,7 @@
DRIVEPHASE_STOPPED = 0,
DRIVEPHASE_PLAY,
- DRIVEPHASE_SEEK_START,
+ DRIVEPHASE_SEEK_START3,
DRIVEPHASE_SEEK,
DRIVEPHASE_SCAN,
@@ -507,12 +576,19 @@
DRIVEPHASE_EJECTED_WAITING,
DRIVEPHASE_STARTUP,
- DRIVEPHASE_RESETTING
+ DRIVEPHASE_RESETTING,
+
+ DRIVEPHASE_SEEK_START1,
+ DRIVEPHASE_SEEK_START2,
+
+ DRIVEPHASE_PAUSE
};
static int64 DriveCounter;
static int64 PeriodicIdleCounter;
enum : int64 { PeriodicIdleCounter_Reload = (int64)187065 << 32 };
+static int32 PauseCounter;
+static bool PlaySectorProcessed;
static uint8 PlayRepeatCounter;
static uint8 CurPlayRepeat;
@@ -893,6 +969,7 @@
Partition_UnlinkBuffer(FLS.pnum, bfi); \
memcpy(FLS.pbuf, &dptr[(dptr[15] == 0x2) ? 24 : 16], 2048); \
Buffer_Free(bfi); \
+ CheckBufPauseResume(); \
}
#define FLS_READ(buffer, count) \
@@ -1040,7 +1117,6 @@
// Pause
//
PlayEndIRQType = 0;
- CurPlayStart = 0x800000;
CurPlayEnd = 0x800000;
CurPlayRepeat = 0;
//
@@ -1282,6 +1358,7 @@
CommandPending = false;
SWResetHIRQDeferred = 0;
SWResetPending = false;
+ ResetSelPending = false;
CDDevConn = 0;
LastBufDest = 0;
@@ -1315,6 +1392,9 @@
DriveCounter = 0;
PeriodicIdleCounter = 0;
+ PauseCounter = 0;
+ PlaySectorProcessed = false;
+
PlayRepeatCounter = 0;
CurPlayRepeat = 0;
@@ -1605,27 +1685,18 @@
SWResetHIRQDeferred = 0;
}
-static void StartSeek(const uint32 cmd_target, const bool no_pickup_change = false)
-{
- if(!Cur_CDIF)
- {
- SS_DBG(SS_DBG_WARNING | SS_DBG_CDB, "[CDB] [BUG] StartSeek() called when no disc present or tray open.\n");
- return;
- }
-
- CurPlayStart = cmd_target;
+//
+// Should be closer to 600, but 500 is good enough for Magical Drop 3's intro, so
+// be more conservative to reduce the probability of breaking a game due
+// to CPU timing emulation deficiencies.
+//
+enum : int32 { SeekCPIUpdateDelay = 500 };
- if(no_pickup_change)
- {
- if(DrivePhase == DRIVEPHASE_PLAY)
- {
- // Maybe stop scanning? or before the if(no_pickup_change)...
- return;
- }
- }
- else if(cmd_target & 0x800000)
+static void SeekStart1(void)
+{
+ if(CurPlayStart & 0x800000)
{
- int32 fad_target = cmd_target & 0x7FFFFF;
+ int32 fad_target = CurPlayStart & 0x7FFFFF;
int32 tt = 1;
if(fad_target < 150)
@@ -1640,7 +1711,7 @@
if(fad_target < (150 + (int32)toc.tracks[track].lba))
break;
-
+
tt = track;
}
@@ -1652,8 +1723,8 @@
}
else
{
- int32 track_target = (cmd_target >> 8) & 0xFF;
- int32 index_target = cmd_target & 0xFF;
+ int32 track_target = (CurPlayStart >> 8) & 0xFF;
+ int32 index_target = CurPlayStart & 0xFF;
if(track_target > toc.last_track)
track_target = toc.last_track;
@@ -1671,20 +1742,103 @@
CurPosInfo.rel_fad = 0;
CurPosInfo.ctrl_adr = (toc.tracks[track_target].control << 4) | (toc.tracks[track_target].adr << 0);
}
- //
+}
+
+static void SeekStart2(int delay_sub = 0)
+{
CurPosInfo.status = STATUS_BUSY;
CurPosInfo.is_cdrom = false;
CurPosInfo.repcount = PlayRepeatCounter & 0xF;
- DrivePhase = DRIVEPHASE_SEEK_START;
+ DrivePhase = DRIVEPHASE_SEEK_START3;
Cur_CDIF->HintReadSector(CurPosInfo.fad);
-// PlayEndIRQPending = false;
- PeriodicIdleCounter = PeriodicIdleCounter_Reload;
- DriveCounter = (int64)256000 << 32; //(int64)((44100 * 256) / 150) << 32;
+ DriveCounter = (int64)(256000 - delay_sub) << 32;
SeekIndexPhase = 0;
}
+static void StartSeek(const uint32 cmd_target, const bool no_pickup_change = false)
+{
+ if(!Cur_CDIF)
+ {
+ SS_DBG(SS_DBG_WARNING | SS_DBG_CDB, "[CDB] [BUG] StartSeek() called when no disc present or tray open.\n");
+ return;
+ }
+
+ CurPlayStart = cmd_target;
+
+ if(no_pickup_change)
+ {
+ if(DrivePhase == DRIVEPHASE_PLAY)
+ {
+ // Maybe stop scanning? or before the if(no_pickup_change)...
+ return;
+ }
+ }
+
+ CurPosInfo.status = STATUS_BUSY;
+ DrivePhase = no_pickup_change ? DRIVEPHASE_SEEK_START2 : DRIVEPHASE_SEEK_START1;
+ PeriodicIdleCounter = PeriodicIdleCounter_Reload;
+ DriveCounter = (int64)SeekCPIUpdateDelay << 32;
+}
+
+static bool CheckEndMet(void)
+{
+ bool end_met = (CurPosInfo.tno == 0xAA);
+
+ if(CurPlayEnd != 0)
+ {
+ if(CurPlayEnd & 0x800000)
+ end_met |= (CurPosInfo.fad >= (CurPlayEnd & 0x7FFFFF));
+ else
+ {
+ const unsigned end_track = std::min(toc.last_track, std::max(toc.first_track, (CurPlayEnd >> 8) & 0xFF));
+ const unsigned end_index = std::min(99, std::max(1, CurPlayEnd & 0xFF));
+
+ end_met |= (CurPosInfo.tno > end_track) || (CurPosInfo.tno == end_track && CurPosInfo.idx > end_index);
+ }
+ }
+
+ //
+ // Steam Heart's, it's always Steam Heart's...
+ //
+ if(CurPlayStart & 0x800000)
+ {
+ end_met |= (CurPosInfo.fad < (CurPlayStart & 0x7FFFFF));
+ }
+ else
+ {
+ const unsigned start_track = std::min(toc.last_track, std::max(toc.first_track, (CurPlayStart >> 8) & 0xFF));
+ //const unsigned start_index = std::min(99, std::max(1, CurPlayStart & 0xFF));
+
+ end_met |= (CurPosInfo.tno < start_track); //|| (CurPosInfo.tno == start_track && CurPosInfo.idx < start_index);
+ }
+
+ return end_met;
+}
+
+static void CheckBufPauseResume(void)
+{
+ if(DrivePhase == DRIVEPHASE_PAUSE)
+ {
+ const bool end_met = CheckEndMet();
+
+ if(!end_met && FreeBufferCount)
+ {
+ SS_DBG(SS_DBG_CDB, "[CDB] Resuming from buffer full pause (fast path).\n");
+#if 0
+ CurPosInfo.status = STATUS_BUSY;
+#else
+ SecPreBuf_In = false;
+ CurPosInfo.status = STATUS_BUSY;
+ DrivePhase = DRIVEPHASE_SEEK_START2;
+ DriveCounter = (int64)SeekCPIUpdateDelay << 32;
+ PeriodicIdleCounter = PeriodicIdleCounter_Reload;
+#endif
+ }
+ }
+}
+
static void Drive_Run(int64 clocks)
{
DriveCounter -= clocks;
@@ -1752,7 +1906,14 @@
DriveCounter += (int64)2000 << 32;
break;
- case DRIVEPHASE_SEEK_START:
+ case DRIVEPHASE_SEEK_START1:
+ SeekStart1();
+ // no break
+ case DRIVEPHASE_SEEK_START2:
+ SeekStart2(SeekCPIUpdateDelay);
+ break;
+
+ case DRIVEPHASE_SEEK_START3:
//
// TODO: Motor spinup from stopped state time penalty?
//
@@ -1762,11 +1923,13 @@
fad_delta = CurPosInfo.fad - CurSector;
- seek_time = 6 * (44100 * 256) / 150;
+ seek_time = 12 * (44100 * 256) / 150;
seek_time += abs(fad_delta) * ((fad_delta < 0) ? 28 : 26);
seek_time += (fad_delta < 0 || fad_delta >= 150) ? (44100 * 256) / 150 : 0;
//seek_time += fabs(sqrt(CurSector) - sqrt(CurPosInfo.fad)) * 13000;
+ //printf("%d %d\n", fad_delta, seek_time);
+
CurPosInfo.status = STATUS_SEEK;
DrivePhase = DRIVEPHASE_SEEK;
DriveCounter += (int64)seek_time << 32;
@@ -1836,6 +1999,7 @@
if(index_ok)
{
+ PlaySectorProcessed = false;
DrivePhase = DRIVEPHASE_PLAY;
DriveCounter += (int64)((44100 * 256) / ((SubQBuf_Safe[0] & 0x40) ? 150 : 75)) << 32;
@@ -1899,39 +2063,34 @@
if(!SecPreBuf_In)
{
- CurPosInfo.status = STATUS_PLAY;
+ PlaySectorProcessed = true;
+ CurSector++;
}
} // end if(SecPreBuf_In > 0)
-
+ // Fallthrough:
+ case DRIVEPHASE_PAUSE:
PeriodicIdleCounter = 17712LL << 32;
- if(DrivePhase == DRIVEPHASE_PLAY)
+
+ if(SecPreBuf_In)
{
- if(SecPreBuf_In)
- {
- // TODO: More accurate:
- CurPosInfo.status = STATUS_PAUSE;
+ SS_DBG(SS_DBG_CDB, "[CDB] SecPreBuf_In=%d at sector read time(CurSector=%d, CurPosInfo.fad=%d).\n", CurSector, CurPosInfo.fad);
+ }
+ else
+ {
+ Cur_CDIF->ReadRawSector(SecPreBuf, CurSector - 150);
+ SecPreBuf_In = true;
- if(SecPreBuf_In > 0)
- SS_DBG(SS_DBG_CDB, "[CDB] SB Overflow\n");
- }
- else
+ // TODO:(maybe pointless...)
+ //if(SubQBuf_Safe[0] & 0x40)
+ // CurPosInfo.fad = SECTOR HEADER
+ //else
+ // CurPosInfo.fad = SUBQ STUFF
+ CurPosInfo.fad = CurSector;
+ if(DecodeSubQ(SecPreBuf + 2352))
{
- Cur_CDIF->ReadRawSector(SecPreBuf, CurSector - 150);
- SecPreBuf_In = true;
-
- // TODO:(maybe pointless...)
- //if(SubQBuf_Safe[0] & 0x40)
- // CurPosInfo.fad = SECTOR HEADER
- //else
- // CurPosInfo.fad = SUBQ STUFF
- CurPosInfo.fad = CurSector;
- if(DecodeSubQ(SecPreBuf + 2352))
- {
- CurPosInfo.rel_fad = (BCD_to_U8(SubQBuf[0x3]) * 60 + BCD_to_U8(SubQBuf[0x4])) * 75 + BCD_to_U8(SubQBuf[0x5]);
- CurPosInfo.tno = (SubQBuf[0x1] >= 0xA0) ? SubQBuf[0x1] : BCD_to_U8(SubQBuf[0x1]);
- CurPosInfo.idx = BCD_to_U8(SubQBuf[0x2]);
- }
- CurSector++;
+ CurPosInfo.rel_fad = (BCD_to_U8(SubQBuf[0x3]) * 60 + BCD_to_U8(SubQBuf[0x4])) * 75 + BCD_to_U8(SubQBuf[0x5]);
+ CurPosInfo.tno = (SubQBuf[0x1] >= 0xA0) ? SubQBuf[0x1] : BCD_to_U8(SubQBuf[0x1]);
+ CurPosInfo.idx = BCD_to_U8(SubQBuf[0x2]);
}
}
@@ -1947,62 +2106,56 @@
//
//
//
- if(SecPreBuf_In && DrivePhase == DRIVEPHASE_PLAY)
+ if(SecPreBuf_In && (DrivePhase == DRIVEPHASE_PLAY || DrivePhase == DRIVEPHASE_PAUSE))
{
- bool end_met = (CurPosInfo.tno == 0xAA);
+ const bool end_met = CheckEndMet();
- if(CurPlayEnd != 0)
+ if(DrivePhase == DRIVEPHASE_PAUSE)
{
- if(CurPlayEnd & 0x800000)
- end_met |= (CurPosInfo.fad >= (CurPlayEnd & 0x7FFFFF));
- else
+ SecPreBuf_In = false;
+
+ if(PauseCounter == 1)
{
- const unsigned end_track = std::min(toc.last_track, std::max(toc.first_track, (CurPlayEnd >> 8) & 0xFF));
- const unsigned end_index = std::min(99, std::max(1, CurPlayEnd & 0xFF));
+ CurPosInfo.status = STATUS_PAUSE;
- end_met |= (CurPosInfo.tno > end_track) || (CurPosInfo.tno == end_track && CurPosInfo.idx > end_index);
+ if(end_met && PlayEndIRQType)
+ {
+ // Don't generate IRQ if we've repeated and there hasn't been a non-end_met sector since.
+ if(!(PlayRepeatCounter & 0x80))
+ TriggerIRQ(PlayEndIRQType & 0xFFFF); // May not be right for EFLS with Read File, maybe EFLS is only triggered after the buffer is written?
+ PlayEndIRQType = 0;
+ }
+ PauseCounter = -1;
}
- }
-
- //
- // Steam Heart's, it's always Steam Heart's...
- //
- if(CurPlayStart & 0x800000)
- {
- end_met |= (CurPosInfo.fad < (CurPlayStart & 0x7FFFFF));
- }
- else
- {
- const unsigned start_track = std::min(toc.last_track, std::max(toc.first_track, (CurPlayStart >> 8) & 0xFF));
- //const unsigned start_index = std::min(99, std::max(1, CurPlayStart & 0xFF));
+ else if(PauseCounter == -1)
+ {
+ CurPosInfo.status = STATUS_PAUSE;
- end_met |= (CurPosInfo.tno < start_track); //|| (CurPosInfo.tno == start_track && CurPosInfo.idx < start_index);
+ if(!end_met && FreeBufferCount)
+ {
+ SS_DBG(SS_DBG_CDB, "[CDB] Resuming from buffer full pause.\n");
+ CurPosInfo.status = STATUS_BUSY;
+ DrivePhase = DRIVEPHASE_SEEK_START2;
+ DriveCounter = (int64)SeekCPIUpdateDelay << 32;
+ }
+ }
+ else
+ PauseCounter++;
}
-
- if(end_met)
+ else if(end_met)
{
SecPreBuf_In = false;
if(PlayRepeatCounter >= CurPlayRepeat)
{
- CurSector = CurPosInfo.fad;
-
if(PlayEndIRQType)
- {
- CurPosInfo.status = STATUS_BUSY;
-
- PlayEndIRQType += 1 << 30; // Crappy delay so we're in STATUS_BUSY state long enough.
-
- if((PlayEndIRQType >> 30) >= 3)
- {
- // Don't generate IRQ if we've repeated and there hasn't been a non-end_met sector since.
- if(!(PlayRepeatCounter & 0x80))
- TriggerIRQ(PlayEndIRQType & 0xFFFF); // May not be right for EFLS with Read File, maybe EFLS is only triggered after the buffer is written?
- PlayEndIRQType = 0;
- }
- }
+ SS_DBG(SS_DBG_CDB, "[CDB] Starting play end pause.\n");
+ else
+ SS_DBG(SS_DBG_CDB, "[CDB] Starting pause.\n");
- if(!PlayEndIRQType)
- CurPosInfo.status = STATUS_PAUSE;
+ CurSector = CurPosInfo.fad;
+ CurPosInfo.status = STATUS_BUSY;
+ DrivePhase = DRIVEPHASE_PAUSE;
+ PauseCounter = PlayEndIRQType ? 0 : 1;
}
else
{
@@ -2011,11 +2164,28 @@
PlayRepeatCounter |= 0x80;
//
- StartSeek(PlayCmdStartPos);
+ SeekStart1();
+ SeekStart2();
}
}
+ else if((SubQBuf_Safe[0] & 0x40) && !FreeBufferCount)
+ {
+ SS_DBG(SS_DBG_CDB, "[CDB] Starting buffer full pause.\n");
+ SecPreBuf_In = false;
+ CurPosInfo.status = STATUS_BUSY;
+ DrivePhase = DRIVEPHASE_PAUSE;
+ PauseCounter = 0;
+ }
else
+ {
PlayRepeatCounter &= ~0x80;
+
+ if(PlaySectorProcessed)
+ {
+ CurPosInfo.status = STATUS_PLAY;
+ PlaySectorProcessed = false;
+ }
+ }
}
//
//
@@ -2117,11 +2287,11 @@
{
char cdet[128];
GetCommandDetails(CTR.CD, cdet, sizeof(cdet));
- SS_DBG(SS_DBG_CDB, "[CDB] Command: %s --- HIRQ=0x%04x, HIRQ_Mask=0x%04x\n", cdet, HIRQ, HIRQ_Mask);
+ SS_DBG(SS_DBG_CDB, "[CDB] Command: %s --- HIRQ=0x%04x, HIRQ_Mask=0x%04x --- %u\n", cdet, HIRQ, HIRQ_Mask, timestamp);
}
//
//
- CMD_EAT_CLOCKS(84);
+ CMD_EAT_CLOCKS(84); //90);
//
//
@@ -2296,6 +2466,9 @@
TriggerIRQ(HIRQ_EHST);
}
}
+ //
+ //
+ CheckBufPauseResume();
}
else
BasicResults((MakeBaseStatus() << 8) | 0xFF, 0xFFFF, 0, 0);
@@ -2593,6 +2766,7 @@
CDStatusResults(true);
else
{
+ //CMD_EAT_CLOCKS(30);
{
const uint32 fad = ((CTR.CD[0] & 0xFF) << 16) | CTR.CD[1];
const uint32 range = ((CTR.CD[2] & 0xFF) << 16) | CTR.CD[3];
@@ -2601,7 +2775,7 @@
CDStatusResults();
}
- CMD_EAT_CLOCKS(96);
+ CMD_EAT_CLOCKS(96); //211);
TriggerIRQ(HIRQ_ESEL);
}
#undef fnum
@@ -2637,6 +2811,8 @@
CDStatusResults(true);
else
{
+ //CMD_EAT_CLOCKS(30);
+
Filters[fnum].Channel = CTR.CD[0] & 0xFF;
Filters[fnum].SubModeMask = CTR.CD[1] >> 8;
Filters[fnum].CInfoMask = CTR.CD[1] & 0xFF;
@@ -2646,7 +2822,7 @@
CDStatusResults();
- CMD_EAT_CLOCKS(96);
+ CMD_EAT_CLOCKS(96); //211);
TriggerIRQ(HIRQ_ESEL);
}
#undef fnum
@@ -2681,6 +2857,8 @@
CDStatusResults(true);
else
{
+ //CMD_EAT_CLOCKS(30);
+
Filters[fnum].Mode = CTR.CD[0] & 0xFF;
if(CTR.CD[0] & 0x80)
@@ -2688,7 +2866,7 @@
CDStatusResults();
- CMD_EAT_CLOCKS(96);
+ CMD_EAT_CLOCKS(96); //211);
TriggerIRQ(HIRQ_ESEL);
}
#undef fnum
@@ -2722,6 +2900,8 @@
CDStatusResults(true);
else
{
+ //CMD_EAT_CLOCKS(41);
+
if(fcflags & 0x1)
Filter_SetTrueConn(fnum, tconn);
@@ -2730,7 +2910,7 @@
CDStatusResults();
- CMD_EAT_CLOCKS(96);
+ CMD_EAT_CLOCKS(96); //192 + ((fcflags & 0x1) ? 167 : 0) + ((fcflags & 0x2) ? 198 : 0));
TriggerIRQ(HIRQ_ESEL);
}
#undef fconn
@@ -2778,62 +2958,36 @@
{
Partition_Clear(pnum);
+ //CMD_EAT_CLOCKS(34);
+
CDStatusResults();
//
//
//
- CMD_EAT_CLOCKS(150);
- TriggerIRQ(HIRQ_ESEL);
+ CMD_EAT_CLOCKS(150); //224);
+ TriggerIRQ(HIRQ_ESEL);
+ //
+ //
+ CheckBufPauseResume();
}
}
else
{
- for(unsigned pnum = 0; pnum < 0x18; pnum++)
- {
- if(rflags & 0x04) // Initialize all partition data
- {
- Partition_Clear(pnum);
- }
-
- // TODO: Initialize all partition output connectors.
- // Has to do with MPEG decoding, copy/move sector data
- // commands, and maybe some other commands too?
- if(rflags & 0x08)
- {
-
- }
-
- if(rflags & 0x10) // Initialize all filter conditions
- {
- Filter_ResetCond(pnum);
- }
-
- if(rflags & 0x20) // Initialize all filter input connectors
- {
- if(pnum == CDDevConn)
- CDDevConn = 0xFF;
-
- if(Filters[pnum].FalseConn < 0x18)
- Filters[pnum].FalseConn = 0xFF;
- }
-
- if(rflags & 0x40) // Initialize all true output connectors
- {
- Filters[pnum].TrueConn = pnum;
- }
-
- if(rflags & 0x80) // Initialize all false output connectors
- {
- Filters[pnum].FalseConn = 0xFF;
- }
- }
CDStatusResults();
//
//
//
+ ResetSelPending = rflags;
+ //
// TODO: Accurate timing(while not blocking other command execution and sector reading).
- CMD_EAT_CLOCKS(300);
- TriggerIRQ(HIRQ_ESEL);
+ CMD_EAT_CLOCKS((ResetSelPending & 0xAC) ? 400 : 300);
+
+ //
+ // Half-assed handling of goofy games(e.g. USA release of "Independence Day") that issue a Get CD Device Connection command
+ // before the Reset Selector command resets it.
+ //
+ if((ResetSelPending & 0x3C) > 0x20 && CommandPending && (CData[0] >> 8) == COMMAND_GET_CDDEVCONN)
+ continue;
}
}
//
@@ -3136,6 +3290,9 @@
CMD_EAT_CLOCKS(485);
TriggerIRQ(HIRQ_EHST);
+ //
+ //
+ CheckBufPauseResume();
}
else
{
@@ -3547,6 +3704,58 @@
CommandPending = false;
}
+ if(ResetSelPending)
+ {
+ const unsigned rflags = ResetSelPending;
+ ResetSelPending = false;
+
+ for(unsigned pnum = 0; pnum < 0x18; pnum++)
+ {
+ if(rflags & 0x04) // Initialize all partition data
+ {
+ Partition_Clear(pnum);
+ }
+
+ // TODO: Initialize all partition output connectors.
+ // Has to do with MPEG decoding, copy/move sector data
+ // commands, and maybe some other commands too?
+ if(rflags & 0x08)
+ {
+
+ }
+
+ if(rflags & 0x10) // Initialize all filter conditions
+ {
+ Filter_ResetCond(pnum);
+ }
+
+ if(rflags & 0x20) // Initialize all filter input connectors
+ {
+ if(pnum == CDDevConn)
+ CDDevConn = 0xFF;
+
+ if(Filters[pnum].FalseConn < 0x18)
+ Filters[pnum].FalseConn = 0xFF;
+ }
+
+ if(rflags & 0x40) // Initialize all true output connectors
+ {
+ Filters[pnum].TrueConn = pnum;
+ }
+
+ if(rflags & 0x80) // Initialize all false output connectors
+ {
+ Filters[pnum].FalseConn = 0xFF;
+ }
+ }
+
+ TriggerIRQ(HIRQ_ESEL);
+ //
+ //
+ //
+ CheckBufPauseResume();
+ }
+
if(SWResetPending)
{
SWResetPending = false;
@@ -3579,6 +3788,7 @@
CommandPending = false;
SWResetPending = false;
SWResetHIRQDeferred = 0;
+ ResetSelPending = false;
ResultsRead = true;
memset(&DT, 0, sizeof(DT));
@@ -3810,6 +4020,7 @@
SFVAR(CommandPending),
SFVAR(SWResetHIRQDeferred),
SFVAR(SWResetPending),
+ SFVAR(ResetSelPending),
SFVAR(CDDevConn),
SFVAR(LastBufDest),
@@ -3893,6 +4104,9 @@
SFVAR(DriveCounter),
SFVAR(PeriodicIdleCounter),
+ SFVAR(PauseCounter),
+ SFVAR(PlaySectorProcessed),
+
SFVAR(PlayRepeatCounter),
SFVAR(CurPlayRepeat),
@@ -3979,6 +4193,25 @@
if(load)
{
+ if(load < 0x00102600)
+ {
+ if(DrivePhase == DRIVEPHASE_PLAY && SecPreBuf_In)
+ {
+ //printf("CurSector--\n");
+ CurSector--;
+ }
+
+ if(CurPosInfo.status == STATUS_PAUSE && DrivePhase == DRIVEPHASE_PLAY)
+ {
+ //printf("Pause fixup.\n");
+ DrivePhase = DRIVEPHASE_PAUSE;
+ PauseCounter = -1;
+ }
+ }
+ //
+ //
+ //
+
// FIXME: Sanitizing!
//
//
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/ss/db.cpp mednafen-1.26.1+dfsg/include/mednafen/ss/db.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/ss/db.cpp 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/ss/db.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -2,7 +2,7 @@
/* Mednafen Sega Saturn Emulation Module */
/******************************************************************************/
/* db.cpp:
-** Copyright (C) 2016-2019 Mednafen Team
+** Copyright (C) 2016-2020 Mednafen Team
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License
@@ -21,12 +21,9 @@
/*
Grandia could use full cache emulation to fix a hang at the end of disc 1, but
- it glitches graphically during gameplay with it enabled, possibly from
- VDP1 drawing completing too fast relative to the CPU... Also it makes
- emulator CPU usage too high.
-
- Lost World(Jurassic Park) could use full cache emulation to fix some disappearing background graphics(at least mostly), but
- it makes emulator CPU usage borderline too high.
+ FMVs make the emulator CPU usage too high; there's also currently a timing bug in
+ the VDP1 frame swap/draw start code that causes Grandia to glitch out during gameplay
+ with full cache emulation enabled.
*/
#include
@@ -114,7 +111,7 @@
{ "T-3116G", CART_EXTRAM_1M, "Samurai Spirits - Amakusa Kourin (Japan)", gettext_noop("Game requirement.") }, // Incompatible with 4MiB extended RAM cart.
{ "T-3104G", CART_EXTRAM_1M, "Samurai Spirits - Zankurou Musouken (Japan)", gettext_noop("Game requirement.") },
{ "610636008",CART_EXTRAM_1M,"Tech Saturn 1997.6 (Japan)", gettext_noop("Required by \"Groove on Fight\" demo.") },
- { "T-16509G", CART_EXTRAM_1M, "Super Real Mahjong P7 (Japan) (TODO: Test)" },
+ { "T-16509G", CART_EXTRAM_1M, "Super Real Mahjong P7 (Japan)" },
{ "T-16510G", CART_EXTRAM_1M, "Super Real Mahjong P7 (Japan)" }, // Would 4MiB be better?
{ "T-3108G", CART_EXTRAM_1M, "The King of Fighters '96 (Japan)", gettext_noop("Game requirement.") },
{ "T-3121G", CART_EXTRAM_1M, "The King of Fighters '97 (Japan)", gettext_noop("Game requirement.") },
@@ -203,6 +200,9 @@
{ "T-1219G", CART_BACKUP_MEM, "Bio Hazard (Japan)" },
{ "T-1221H", CART_BACKUP_MEM, "Resident Evil (USA)" },
{ "MK-81092", CART_BACKUP_MEM, "Resident Evil (Europe)" },
+ { "T-7601G", CART_BACKUP_MEM, "Sangokushi IV (Japan)" },
+ { "T-7644G", CART_BAKCUP_MEM, "Sangokushi IV with Power-Up Kit (Japan)" },
+ { "T-7601H", CART_BACKUP_MEM, "Romance of the Three Kingdoms IV - Wall of Fire (USA)" },
{ "MK-81383", CART_BACKUP_MEM, "Shining Force III (Europe/USA)" }, // ~
{ "GS-9175", CART_BACKUP_MEM, "Shining Force III - Scenario 1 (Japan)" }, // ~
{ "GS-9188", CART_BACKUP_MEM, "Shining Force III - Scenario 2 (Japan)" }, // ~
@@ -231,75 +231,134 @@
static const struct
{
const char* sgid;
+ const char* sgname;
+ const char* sgarea;
unsigned mode;
const char* game_name;
const char* purpose;
uint8 fd_id[16];
} cemdb[] =
{
- { "T-9705H", CPUCACHE_EMUMODE_DATA_CB, "Area 51 (USA)", gettext_noop("Fixes game hang.") },
- { "T-25408H", CPUCACHE_EMUMODE_DATA_CB, "Area 51 (Europe)", gettext_noop("Fixes game hang.") },
- { "MK-81036", CPUCACHE_EMUMODE_DATA_CB, "Clockwork Knight 2 (USA)", gettext_noop("Fixes game hang that occurred when some FMVs were played.") },
- { "T-30304G", CPUCACHE_EMUMODE_DATA_CB, "DeJig - Lassen Art Collection (Japan)", gettext_noop("Fixes graphical glitches.") },
- { "GS-9184", CPUCACHE_EMUMODE_DATA_CB, "Dragon Force II (Japan)", gettext_noop("Fixes math and game logic errors during battles.") },
- { "T-18504G", CPUCACHE_EMUMODE_DATA_CB, "Father Christmas (Japan)", gettext_noop("Fixes stuck music and voice acting.") },
- { "GS-9101", CPUCACHE_EMUMODE_DATA_CB, "Fighting Vipers (Japan)", gettext_noop("Fixes computer-controlled opponent turning into a ghost statue.") },
- { "MK-81041", CPUCACHE_EMUMODE_DATA_CB, "Fighting Vipers (Europe/USA)", gettext_noop("Fixes computer-controlled opponent turning into a ghost statue.") },
- { "T-7309G", CPUCACHE_EMUMODE_DATA_CB, "Formula Grand Prix - Team Unei Simulation (Japan)", gettext_noop("Fixes game hang.") },
- { "MK-81045", CPUCACHE_EMUMODE_DATA_CB, "Golden Axe - The Duel (Europe/USA)", gettext_noop("Fixes flickering title screen.") },
- { "GS-9041", CPUCACHE_EMUMODE_DATA_CB, "Golden Axe - The Duel (Japan)", gettext_noop("Fixes flickering title screen.") },
- { "GS-9173", CPUCACHE_EMUMODE_DATA_CB, "House of the Dead (Japan)", gettext_noop("Fixes game crash on lightgun calibration screen.") },
- { "GS-9055", CPUCACHE_EMUMODE_DATA_CB, "Linkle Liver Story (Japan)", gettext_noop("Fixes game crash when going to the world map.") },
- { "T-14415G", CPUCACHE_EMUMODE_DATA_CB, "Ronde (Japan)", gettext_noop("Fixes missing graphics on the title screen, main menu, and elsewhere.") },
- { "81600", CPUCACHE_EMUMODE_DATA_CB, "Sega Saturn Choice Cuts (USA)", gettext_noop("Fixes FMV playback hangs and playback failures.") },
- { "610680501",CPUCACHE_EMUMODE_DATA_CB, "Segakore Sega Bible Mogitate SegaSaturn (Japan)", gettext_noop("") }, // ? ? ?
- { "T-18703G", CPUCACHE_EMUMODE_DATA_CB, "Shunsai (Japan)", gettext_noop("Fixes various graphical glitches.") },
- { "T-7001H", CPUCACHE_EMUMODE_DATA_CB, "Spot Goes to Hollywood (USA)", gettext_noop("Fixes hang at corrupted \"Burst\" logo.") },
- { "T-7014G", CPUCACHE_EMUMODE_DATA_CB, "Spot Goes to Hollywood (Japan)", gettext_noop("Fixes hang at corrupted \"Burst\" logo.") },
+ { "T-9705H", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Area 51 (USA)", gettext_noop("Fixes game hang.") },
+ { "T-25408H", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Area 51 (Europe)", gettext_noop("Fixes game hang.") },
+ { "MK-81036", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Clockwork Knight 2 (USA)", gettext_noop("Fixes game hang that occurred when some FMVs were played.") },
+ { "T-30304G", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "DeJig - Lassen Art Collection (Japan)", gettext_noop("Fixes graphical glitches.") },
+ { "T-19801G", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Doraemon - Nobita to Fukkatsu no Hoshi (Japan)", gettext_noop("Fixes blank Game Over screen.") },
+ { "GS-9184", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Dragon Force II (Japan)", gettext_noop("Fixes math and game logic errors during battles.") },
+ { "T-18504G", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Father Christmas (Japan)", gettext_noop("Fixes stuck music and voice acting.") },
+ { "GS-9101", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Fighting Vipers (Japan)", gettext_noop("Fixes computer-controlled opponent turning into a ghost statue.") },
+ { "MK-81041", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Fighting Vipers (Europe/USA)", gettext_noop("Fixes computer-controlled opponent turning into a ghost statue.") },
+ { "T-7309G", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Formula Grand Prix - Team Unei Simulation (Japan)", gettext_noop("Fixes game hang.") },
+ { "MK-81045", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Golden Axe - The Duel (Europe/USA)", gettext_noop("Fixes flickering title screen.") },
+ { "GS-9041", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Golden Axe - The Duel (Japan)", gettext_noop("Fixes flickering title screen.") },
+ { "GS-9173", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "House of the Dead (Japan)", gettext_noop("Fixes game crash on lightgun calibration screen.") },
+ { "GS-9055", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Linkle Liver Story (Japan)", gettext_noop("Fixes game crash when going to the world map.") },
+ { "T-25302G1", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Mahjong Doukyuusei Special (Japan)", gettext_noop("Fixes missing background layer on disc 2.") },
+ { "T-25302G2", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Mahjong Doukyuusei Special (Japan)", gettext_noop("Fixes missing background layer on disc 2.") },
+ { "T-28901G", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Mujintou Monogatari R - Futari no Love Love Island (Japan)", gettext_noop("Fixes glitches when character graphics change.") },
+ { "T-14415G", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Ronde (Japan)", gettext_noop("Fixes missing graphics on the title screen, main menu, and elsewhere.") },
+ { "81600", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Sega Saturn Choice Cuts (USA)", gettext_noop("Fixes FMV playback hangs and playback failures.") },
+ { "610680501", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Segakore Sega Bible Mogitate SegaSaturn (Japan)", gettext_noop("Fixes graphical glitch on the character select screen in the \"Zero Divide\" demo.") },
+ { "T-18703G", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Shunsai (Japan)", gettext_noop("Fixes various graphical glitches.") },
+ { "T-7001H", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Spot Goes to Hollywood (USA)", gettext_noop("Fixes hang at corrupted \"Burst\" logo.") },
+ { "T-7014G", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Spot Goes to Hollywood (Japan)", gettext_noop("Fixes hang at corrupted \"Burst\" logo.") },
// Nooo, causes glitches: { "T-7001H-50",CPUCACHE_EMUMODE_DATA_CB, "Spot Goes to Hollywood (Europe)
- { "T-1206G", CPUCACHE_EMUMODE_DATA_CB, "Street Fighter Zero (Japan)", gettext_noop("Fixes weird color/palette issues during game startup.") },
- { "T-1246G", CPUCACHE_EMUMODE_DATA_CB, "Street Fighter Zero 3 (Japan)", gettext_noop("") }, // ? ? ?
- { "T-1215H", CPUCACHE_EMUMODE_DATA_CB, "Super Puzzle Fighter II Turbo (USA)", gettext_noop("Fixes color/brightness and other graphical issues.") },
- { "T-5001H", CPUCACHE_EMUMODE_DATA_CB, "Theme Park (Europe)", gettext_noop("Fixes hang during FMV.") },
- { "T-1807G", CPUCACHE_EMUMODE_DATA_CB, "Thunder Force Gold Pack 1 (Japan)", gettext_noop("Fixes explosion graphic glitches in \"Thunder Force III\".") },
- { "T-1808G", CPUCACHE_EMUMODE_DATA_CB, "Thunder Force Gold Pack 2 (Japan)", gettext_noop("Fixes hang when pausing the game under certain conditions in \"Thunder Force AC\".") },
- { "GS-9113", CPUCACHE_EMUMODE_DATA_CB, "Virtua Fighter Kids (Java Tea Original)", gettext_noop("Fixes malfunction of computer-controlled player.") },
- { "T-2206G", CPUCACHE_EMUMODE_DATA_CB, "Virtual Mahjong (Japan)", gettext_noop("Fixes graphical glitches on the character select screen.") },
- { "T-15005G", CPUCACHE_EMUMODE_DATA_CB, "Virtual Volleyball (Japan)", gettext_noop("Fixes invisible menu items and hang.") },
- { "T-18601H", CPUCACHE_EMUMODE_DATA_CB, "WipEout (USA)", gettext_noop("Fixes hang when trying to exit gameplay back to the main menu.") },
- { "T-18603G", CPUCACHE_EMUMODE_DATA_CB, "WipEout (Japan)", gettext_noop("Fixes hang when trying to exit gameplay back to the main menu.") },
- { "T-11301H", CPUCACHE_EMUMODE_DATA_CB, "WipEout (Europe)", gettext_noop("Fixes hang when trying to exit gameplay back to the main menu.") },
- { "GS-9061", CPUCACHE_EMUMODE_DATA_CB, "Hideo Nomo World Series Baseball (Japan)", gettext_noop("Fixes severe gameplay logic glitches.") },
- { "MK-81109", CPUCACHE_EMUMODE_DATA_CB, "World Series Baseball (Europe/USA)", gettext_noop("Fixes severe gameplay logic glitches.") },
-
- //{ "MK-81019", CPUCACHE_EMUMODE_DATA }, // Astal (USA)
+ { "T-1206G", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Street Fighter Zero (Japan)", gettext_noop("Fixes weird color/palette issues during game startup.") },
+ { "T-1246G", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Street Fighter Zero 3 (Japan)", gettext_noop("") }, // ? ? ?
+ { "T-1215H", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Super Puzzle Fighter II Turbo (USA)", gettext_noop("Fixes color/brightness and other graphical issues.") },
+ { "T-5001H", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Theme Park (Europe)", gettext_noop("Fixes hang during FMV.") },
+ { "T-1808G", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Thunder Force Gold Pack 2 (Japan)", gettext_noop("Fixes hang when pausing the game under certain conditions in \"Thunder Force AC\".") },
+ { "GS-9079","VF. KIDS",NULL,CPUCACHE_EMUMODE_DATA_CB,"Virtua Fighter Kids (Japan/Europe)", gettext_noop("Fixes FMV glitches.") },
+ { "GS-9113","VF. KIDS",NULL,CPUCACHE_EMUMODE_DATA_CB,"Virtua Fighter Kids (Korea/Java Tea Original)", gettext_noop("Fixes FMV glitches and/or malfunction of computer-controlled player.") },
+ { "MK-81049","VF. KIDS",NULL,CPUCACHE_EMUMODE_DATA_CB,"Virtua Fighter Kids (USA)", gettext_noop("Fixes FMV glitches.") },
+ { "T-2206G", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Virtual Mahjong (Japan)", gettext_noop("Fixes graphical glitches on the character select screen.") },
+ { "T-15005G", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Virtual Volleyball (Japan)", gettext_noop("Fixes invisible menu items and hang.") },
+ { "T-18601H", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "WipEout (USA)", gettext_noop("Fixes hang when trying to exit gameplay back to the main menu.") },
+ { "T-18603G", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "WipEout (Japan)", gettext_noop("Fixes hang when trying to exit gameplay back to the main menu.") },
+ { "T-11301H", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "WipEout (Europe)", gettext_noop("Fixes hang when trying to exit gameplay back to the main menu.") },
+ { "GS-9061", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Hideo Nomo World Series Baseball (Japan)", gettext_noop("Fixes severe gameplay logic glitches.") },
+ { "MK-81109", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "World Series Baseball (Europe/USA)", gettext_noop("Fixes severe gameplay logic glitches.") },
+ { "T-31601G", NULL, NULL, CPUCACHE_EMUMODE_DATA_CB, "Zero Divide - The Final Conflict (Japan)", gettext_noop("Fixes graphical glitch on the character select screen.") },
+ //{ "MK-81019", NULL, NULL, CPUCACHE_EMUMODE_DATA }, // Astal (USA)
//{ "GS-9019", CPUCACHE_EMUMODE_DATA }, // Astal (Japan)
- { "T-1507G", CPUCACHE_EMUMODE_FULL, "Albert Odyssey (Japan)", gettext_noop("") },
- { "T-12705H", CPUCACHE_EMUMODE_FULL, "Albert Odyssey (USA)", gettext_noop("Fixes battle text truncation.") },
- { "GS-9123", CPUCACHE_EMUMODE_FULL, "Die Hard Trilogy (Japan)", gettext_noop("Fixes game hang.") },
- { "T-16103H", CPUCACHE_EMUMODE_FULL, "Die Hard Trilogy (Europe/USA)", gettext_noop("Fixes game hang.") },
- { "T-13331G", CPUCACHE_EMUMODE_FULL, "Digital Monster Version S (Japan)", gettext_noop("Fixes game hang.") },
- //{ "T-20502G", CPUCACHE_EMUMODE_FULL, "Discworld (Japan) (still broken...)" },
- { "T-13310G", CPUCACHE_EMUMODE_FULL, "GeGeGe no Kitarou (Japan)", gettext_noop("Fixes game hang.") },
- { "T-15904G", CPUCACHE_EMUMODE_FULL, "Gex (Japan)", gettext_noop("Fixes minor FMV glitches.") },
- { "T-15904H", CPUCACHE_EMUMODE_FULL, "Gex (USA)", gettext_noop("Fixes minor FMV glitches.") },
- { "T-15904H50", CPUCACHE_EMUMODE_FULL, "Gex (Europe)", gettext_noop("Fixes minor FMV glitches.") },
- { "T-27901G", CPUCACHE_EMUMODE_FULL, "Lunar - Silver Star Story (Japan)", gettext_noop("Fixes FMV flickering with alternative BIOS.") },
- { "T-7664G", CPUCACHE_EMUMODE_FULL, "Nobunaga no Yabou Shouseiroku (Japan)", gettext_noop("Fixes game hang.") },
- { "T-9510G", CPUCACHE_EMUMODE_FULL, "Policenauts (Japan)", gettext_noop("Fixes screen flickering on disc 2.") },
- { "T-25416H50", CPUCACHE_EMUMODE_FULL, "Rampage - World Tour (Europe)", gettext_noop("Fixes game hang.") },
- { "T-159056", CPUCACHE_EMUMODE_FULL, "Slam 'n Jam 96 (Japan)", gettext_noop("Fixes minor FMV glitches.") },
- { "T-159028H", CPUCACHE_EMUMODE_FULL, "Slam 'n Jam 96 (USA)", gettext_noop("Fixes minor FMV glitches.") },
- { "T-15902H50", CPUCACHE_EMUMODE_FULL, "Slam 'n Jam 96 (Europe)", gettext_noop("Fixes minor FMV glitches.") },
- { "T-8119G", CPUCACHE_EMUMODE_FULL, "Space Jam (Japan)", gettext_noop("Fixes game crash.") },
- { "T-8125H", CPUCACHE_EMUMODE_FULL, "Space Jam (USA)", gettext_noop("Fixes game crash.") },
- { "T-8125H-50", CPUCACHE_EMUMODE_FULL, "Space Jam (Europe)", gettext_noop("Fixes game crash.") },
- { "T-36102G", CPUCACHE_EMUMODE_FULL, "Whizz (Japan)", gettext_noop("Fixes quasi-random hangs during startup.") },
- { "T-9515H-50", CPUCACHE_EMUMODE_FULL, "Whizz (Europe)", gettext_noop("Fixes quasi-random hangs during startup.") },
+ { "T-15906H", NULL, NULL, CPUCACHE_EMUMODE_FULL, "3D Baseball (USA)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-18003G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "3D Baseball - The Majors (Japan)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-1507G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Albert Odyssey (Japan)", gettext_noop("") },
+ { "T-12705H", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Albert Odyssey (USA)", gettext_noop("Fixes battle text truncation.") },
+ //{ "MK-81501", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Baku Baku Animal (Europe)", gettext_noop("Fixes hang when trying to watch a movie in the \"Movie Viewer\".") },
+ { "T-16201H", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Corpse Killer (USA)", gettext_noop("Fixes glitchy rotation-zoom effect.") },
+ { "T-8124H", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Crow, The (USA)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-8124H-50",NULL, NULL, CPUCACHE_EMUMODE_FULL, "Crow, The (Europe)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-8124H-18",NULL, NULL, CPUCACHE_EMUMODE_FULL, "Crow, The (Germany)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-36101G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Dark Seed II (Japan)", gettext_noop("Fixes game hang.") },
+ { "GS-9123", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Die Hard Trilogy (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-16103H", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Die Hard Trilogy (Europe/USA)", gettext_noop("Fixes game hang.") },
+ // Not needed in 1.26.0, and actually causes a game hang, probably due to lack of SCI emulation messing up game timing: { "T-13331G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Digital Monster Version S (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-13310G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "GeGeGe no Kitarou (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-15904G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Gex (Japan)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-15904H", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Gex (USA)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-15904H50",NULL, NULL, CPUCACHE_EMUMODE_FULL, "Gex (Europe)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-24301G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Horror Tour (Japan)", gettext_noop("Fixes graphical glitches on the save and load screens.") },
+ { "T-22403G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Irem Arcade Classics (Japan)", gettext_noop("Fixes hang when trying to start \"Zippy Race\".") },
+ { "GS-9142", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Kidou Senkan Nadesico - Yappari Saigo wa Ai ga Katsu", gettext_noop("Fixes game hang.") },
+ { "GS-9162", NULL, NULL, CPUCACHE_EMUMODE_FULL, "The Lost World - Jurassic Park (Japan)", gettext_noop("Fixes most graphical glitches in rock faces.") },
+ { "MK-81065", NULL, NULL, CPUCACHE_EMUMODE_FULL, "The Lost World - Jurassic Park (Europe/USA)", gettext_noop("Fixes most graphical glitches in rock faces.") },
+ { "T-27901G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Lunar - Silver Star Story (Japan)", gettext_noop("Fixes FMV flickering.") },
+ { "MK-81103", NULL, NULL, CPUCACHE_EMUMODE_FULL, "NBA Action (USA)", gettext_noop("Fixes minor FMV glitches.") },
+ { "MK81103-50",NULL, NULL, CPUCACHE_EMUMODE_FULL, "NBA Action (Europe)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-8105G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "NFL Quarterback Club 96 (Japan)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-8109H", NULL, NULL, CPUCACHE_EMUMODE_FULL, "NFL Quarterback Club 96 (USA)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-8109H-50",NULL, NULL, CPUCACHE_EMUMODE_FULL, "NFL Quarterback Club 96 (Europe)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-7664G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Nobunaga no Yabou Shouseiroku (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-9510G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Policenauts (Japan)", gettext_noop("Fixes screen flickering on disc 2.") },
+ { "T-25416H50",NULL, NULL, CPUCACHE_EMUMODE_FULL, "Rampage - World Tour (Europe)", gettext_noop("Fixes game hang.") },
+ { "T-37401G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Senken Kigyouden (Japan)", gettext_noop("Fixes dialogue text truncation.") },
+ { "T-37401H", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Xian Jian Qi Xia Zhuan (Taiwan)", gettext_noop("Fixes dialogue text truncation.") },
+ { "T-159056", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Slam 'n Jam 96 (Japan)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-159028H", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Slam 'n Jam 96 (USA)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-15902H50",NULL, NULL, CPUCACHE_EMUMODE_FULL, "Slam 'n Jam 96 (Europe)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-8119G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Space Jam (Japan)", gettext_noop("Fixes game crash.") },
+ { "T-8125H", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Space Jam (USA)", gettext_noop("Fixes game crash.") },
+ { "T-8125H-50",NULL, NULL, CPUCACHE_EMUMODE_FULL, "Space Jam (Europe)", gettext_noop("Fixes game crash.") },
+ { "T-1807G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Thunder Force Gold Pack 1 (Japan)", gettext_noop("Fixes explosion graphic glitches in \"Thunder Force III\".") },
+ { "T-15903G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Titan Wars (Japan)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-15911H", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Solar Eclipse (USA)", gettext_noop("Fixes minor FMV glitches.") },
+ { "T-15911H50",NULL, NULL, CPUCACHE_EMUMODE_FULL, "Titan Wars (Europe)", gettext_noop("Fixes minor FMV glitches.") },
+ { "MK-81015", NULL, "E", CPUCACHE_EMUMODE_FULL, "Virtua Cop (Europe)", gettext_noop("Fixes game hang.") },
+ { "MK-81043", NULL, "E", CPUCACHE_EMUMODE_FULL, "Virtua Cop 2 (Europe)", gettext_noop("Fixes game hang.") },
+ { "GS-9001", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Virtua Fighter (Japan)", gettext_noop("Fixes graphical glitches.") },
+ { "MK-81005", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Virtua Fighter (USA)", gettext_noop("Fixes graphical glitches.") },
+ { "MK_8100550",NULL, NULL, CPUCACHE_EMUMODE_FULL, "Virtua Fighter (Europe)", gettext_noop("Fixes graphical glitches.") },
+ { "GS-9039", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Virtua Fighter Remix (Japan)", gettext_noop("Fixes graphical glitches.") },
+ { "MK-81023", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Virtua Fighter Remix (USA)", gettext_noop("Fixes graphical glitches.") },
+ { "MK-8102350",NULL, NULL, CPUCACHE_EMUMODE_FULL, "Virtua Fighter Remix (Europe)", gettext_noop("Fixes graphical glitches.") },
+ { "SG-7103", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Virtua Fighter Remix (SegaNet)", gettext_noop("Fixes graphical glitches.") },
+ { "T-36102G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Whizz (Japan)", gettext_noop("Fixes quasi-random hangs during startup.") },
+ { "T-9515H-50",NULL, NULL, CPUCACHE_EMUMODE_FULL, "Whizz (Europe)", gettext_noop("Fixes quasi-random hangs during startup.") },
+ { "T-28004G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Yu-No (Japan)", gettext_noop("Fixes FMV ending too soon.") },
+ //
+ // DMA overhead sensitive games, may be fragile:
+ //
+#if 0
+ { "T-38001G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Another Memories (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-27810G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Device Reign (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-30002G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Real Sound - Kaze no Regret (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-13324G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "SD Gundam G Century S (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-26413G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Super Tempo (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-17703G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Tennis Arena (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-32508G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Tilk - Aoi Umi kara Kita Shoujo (Japan)", gettext_noop("Fixes game hang.") },
+ { "6106602", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Yuukyuu Gensoukyoku Demo (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-27804G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Yuukyuu Gensoukyoku (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-27806G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Yuukyuu no Kobako Official Collection (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-27807G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Yuukyuu Gensoukyoku 2nd Album (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-27808G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Yuukyuu Gensoukyoku ensemble (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-27809G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Yuukyuu Gensoukyoku ensemble 2 (Japan)", gettext_noop("Fixes game hang.") },
+ { "T-21401G", NULL, NULL, CPUCACHE_EMUMODE_FULL, "Zero4 Champ DooZy-J Type-R (Japan)", gettext_noop("Fixes game hang.") },
+#endif
};
-void DB_Lookup(const char* path, const char* sgid, const uint8* fd_id, unsigned* const region, int* const cart_type, unsigned* const cpucache_emumode)
+void DB_Lookup(const char* path, const char* sgid, const char* sgname, const char* sgarea, const uint8* fd_id, unsigned* const region, int* const cart_type, unsigned* const cpucache_emumode)
{
for(auto& re : regiondb)
{
@@ -321,7 +380,22 @@
for(auto& c : cemdb)
{
- if((c.sgid && !strcmp(c.sgid, sgid)) || (!c.sgid && !memcmp(c.fd_id, fd_id, 16)))
+ bool match;
+
+ if(c.sgid)
+ {
+ match = !strcmp(c.sgid, sgid);
+
+ if(c.sgname)
+ match &= !strcmp(c.sgname, sgname);
+
+ if(c.sgarea)
+ match &= !strcmp(c.sgarea, sgarea);
+ }
+ else
+ match = !memcmp(c.fd_id, fd_id, 16);
+
+ if(match)
{
*cpucache_emumode = c.mode;
break;
@@ -340,7 +414,6 @@
{
{ "GS-9126", HORRIBLEHACK_NOSH2DMAPENALTY, "Fighters Megamix (Japan)", gettext_noop("Fixes hang after watching or aborting FMV playback.") },
{ "MK-81073", HORRIBLEHACK_NOSH2DMAPENALTY, "Fighters Megamix (Europe/USA)", gettext_noop("Fixes hang after watching or aborting FMV playback.") },
- { "T-22403G", HORRIBLEHACK_NOSH2DMAPENALTY, "Irem Arcade Classics (Japan)", gettext_noop("Fixes hang when trying to start \"Zippy Race\".") }, // (way too finicky...)
{ "T-4507G", HORRIBLEHACK_VDP1VRAM5000FIX, "Grandia (Japan)", gettext_noop("Fixes hang at end of first disc.") },
@@ -352,10 +425,23 @@
{ "6106856", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Burning Rangers Taikenban (Japan)", gettext_noop("Fixes flickering rescue text.") },
{ "GS-9174", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Burning Rangers (Japan)", gettext_noop("Fixes flickering rescue text.") },
{ "MK-81803", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Burning Rangers (Europe/USA)", gettext_noop("Fixes flickering rescue text.") },
+ { "T-31505G", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Falcom Classics II (Japan)", gettext_noop("Fixes FMV tearing in \"Ys II\".") },
{ "T-8111G", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Frank Thomas Big Hurt Baseball (Japan)", gettext_noop("Reduces graphical glitches.") },
{ "T-8138H", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Frank Thomas Big Hurt Baseball (USA)", gettext_noop("Reduces graphical glitches.") }, // Probably need more-accurate VDP1 draw timings to fix the glitches completely.
+ { "T-9504G", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Tokimeki Memorial - Forever with You (Japan)", gettext_noop("Fixes glitchy frames on the Konami intro arm sprite.") },
+ { "T-15006G", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Kaitei Daisensou (Japan)", gettext_noop("Fixes FMV tearing.") },
+ { "T-10001G", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "In The Hunt (Europe/USA)", gettext_noop("Fixes FMV tearing.") },
+ { "GS-9001", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Virtua Fighter (Japan)", gettext_noop("Fixes graphical glitches.") },
+ { "MK-81005", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Virtua Fighter (USA)", gettext_noop("Fixes graphical glitches.") },
+ { "MK_8100550", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN,"Virtua Fighter (Europe)", gettext_noop("Fixes graphical glitches.") },
+ { "GS-9039", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Virtua Fighter Remix (Japan)", gettext_noop("Fixes graphical glitches.") },
+ { "MK-81023", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Virtua Fighter Remix (USA)", gettext_noop("Fixes graphical glitches.") },
+ { "MK-8102350", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN,"Virtua Fighter Remix (Europe)", gettext_noop("Fixes graphical glitches.") },
+ { "SG-7103", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Virtua Fighter Remix (SegaNet)", gettext_noop("Fixes graphical glitches.") },
{ "T-36102G", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Whizz (Japan)", gettext_noop("Fixes major graphical issues during gameplay.") },
{ "T-9515H-50", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN,"Whizz (Europe)", gettext_noop("Fixes major graphical issues during gameplay.") },
+ { "T-26105G", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Wolf Fang SS - Kuuga 2001 (Japan)", gettext_noop("Fixes graphical glitches.") },
+ { "T-28004G", HORRIBLEHACK_VDP1RWDRAWSLOWDOWN, "Yu-No (Japan)", gettext_noop("Reduces FMV tearing.") },
// Still random hangs...wtf is this game doing...
{ "T-6006G", HORRIBLEHACK_NOSH2DMALINE106 | HORRIBLEHACK_VDP1INSTANT, "Thunderhawk II (Japan)", gettext_noop("Fixes hangs just before and during gameplay.") },
@@ -380,6 +466,28 @@
return MDFN_sprintf("%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x", fd_id[0], fd_id[1], fd_id[2], fd_id[3], fd_id[4], fd_id[5], fd_id[6], fd_id[7], fd_id[8], fd_id[9], fd_id[10], fd_id[11], fd_id[12], fd_id[13], fd_id[14], fd_id[15]);
}
+std::string DB_GetHHDescriptions(const uint32 hhv)
+{
+ std::string sv;
+
+ if(hhv & HORRIBLEHACK_NOSH2DMALINE106)
+ sv += "Block SH-2 DMA on last line of frame. ";
+
+ if(hhv & HORRIBLEHACK_NOSH2DMAPENALTY)
+ sv += "Disable slowing down of SH-2 CPU reads/writes during SH-2 DMA. ";
+
+ if(hhv & HORRIBLEHACK_VDP1VRAM5000FIX)
+ sv += "Patch VDP1 VRAM to break an infinite loop. ";
+
+ if(hhv & HORRIBLEHACK_VDP1RWDRAWSLOWDOWN)
+ sv += "SH-2 reads/writes from/to VDP1 slow down command execution. ";
+
+ if(hhv & HORRIBLEHACK_VDP1INSTANT)
+ sv += "Execute VDP1 commands instantly. ";
+
+ return sv;
+}
+
void DB_GetInternalDB(std::vector* databases)
{
databases->push_back({
@@ -458,7 +566,7 @@
databases->push_back({
"cachemode",
gettext_noop("Cache Mode"),
- gettext_noop("This database is used to automatically select cache emulation mode, to fix various logic and timing issues in games. The default cache mode is data-only(with no high-level bypass).\n\nThe cache mode \"Data-only, with high-level bypass\" is a hack of sorts, to work around cache coherency bugs in games. These bugs are typically masked on a real Saturn due to the effects of instruction fetches on the cache, but become a problem when only data caching is emulated.\n\nFull cache emulation is not enabled globally due to the large increase in host CPU usage, along with the potential of causing games that fully utilize both SH-2 CPUs to run significantly slower than they should due to inadequate emulation of bus sharing/contention.")
+ gettext_noop("This database is used to automatically select cache emulation mode, to fix various logic and timing issues in games. The default cache mode is data-only(with no high-level bypass).\n\nThe cache mode \"Data-only, with high-level bypass\" is a hack of sorts, to work around cache coherency bugs in games. These bugs are typically masked on a real Saturn due to the effects of instruction fetches on the cache, but become a problem when only data caching is emulated.\n\nFull cache emulation is not enabled globally primarily due to the large increase in host CPU usage.")
});
for(auto& c : cemdb)
{
@@ -472,8 +580,32 @@
}
GameDB_Entry e;
- e.GameID = c.sgid ? c.sgid : FDIDToString(c.fd_id);
- e.GameIDIsHash = !c.sgid;
+ if(c.sgid)
+ {
+ unsigned lfcount = 0;
+
+ e.GameIDIsHash = false;
+ e.GameID = c.sgid;
+
+ if(c.sgname)
+ {
+ for(; lfcount < 1; lfcount++)
+ e.GameID += '\n';
+ e.GameID += c.sgname;
+ }
+
+ if(c.sgarea)
+ {
+ for(; lfcount < 2; lfcount++)
+ e.GameID += '\n';
+ e.GameID += c.sgarea;
+ }
+ }
+ else
+ {
+ e.GameIDIsHash = true;
+ e.GameID = FDIDToString(c.fd_id);
+ }
e.Name = c.game_name;
e.Setting = sv;
e.Purpose = c.purpose ? _(c.purpose) : "";
@@ -486,30 +618,11 @@
databases->push_back({
"horriblehacks",
gettext_noop("Horrible Hacks"),
- gettext_noop("This database is used to automatically enable various horrible hacks to fix issues in certain games.\n\nNote that slowing down VDP1 command execution due to SH-2 CPU reads/writes isn't a horrible hack per-se, but it's activated on a per-game basis to avoid the likelihood of breaking some games due to overall Saturn emulation timing inaccuracies.")
+ gettext_noop("This database is used to automatically enable various horrible hacks to fix issues in certain games.\n\nNote that slowing down VDP1 command execution due to SH-2 reads/writes isn't a horrible hack per-se, but it's activated on a per-game basis to avoid the likelihood of breaking some games due to overall Saturn emulation timing inaccuracies.")
});
for(auto& hh : hhdb)
{
- std::string sv;
- unsigned hhv = hh.horrible_hacks;
-
- if(hhv & HORRIBLEHACK_NOSH2DMALINE106)
- sv += "Block SH-2 DMA on last line of frame. ";
-
- if(hhv & HORRIBLEHACK_NOSH2DMAPENALTY)
- sv += "Disable slowing down of SH-2 CPU reads/writes during SH-2 DMA. ";
-
- if(hhv & HORRIBLEHACK_VDP1VRAM5000FIX)
- sv += "Patch VDP1 VRAM to break an infinite loop. ";
-
- if(hhv & HORRIBLEHACK_VDP1RWDRAWSLOWDOWN)
- sv += "SH-2 CPU reads/writes from/to VDP1 slow down command execution. ";
-
- if(hhv & HORRIBLEHACK_VDP1INSTANT)
- sv += "Execute VDP1 commands instantly. ";
- //
- //
- //
+ std::string sv = DB_GetHHDescriptions(hh.horrible_hacks);
GameDB_Entry e;
e.GameID = hh.sgid ? hh.sgid : FDIDToString(hh.fd_id);
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/ss/db.h mednafen-1.26.1+dfsg/include/mednafen/ss/db.h
--- mednafen-1.24.3+dfsg/include/mednafen/ss/db.h 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/ss/db.h 2020-11-10 06:04:17.000000000 +0000
@@ -2,7 +2,7 @@
/* Mednafen Sega Saturn Emulation Module */
/******************************************************************************/
/* db.h:
-** Copyright (C) 2016-2019 Mednafen Team
+** Copyright (C) 2016-2020 Mednafen Team
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License
@@ -27,14 +27,16 @@
enum
{
- CPUCACHE_EMUMODE_DATA_CB,
- CPUCACHE_EMUMODE_DATA,
- CPUCACHE_EMUMODE_FULL
+ CPUCACHE_EMUMODE_DATA_CB = 0,
+ CPUCACHE_EMUMODE_DATA = 1,
+ CPUCACHE_EMUMODE_FULL = 2,
+ CPUCACHE_EMUMODE__COUNT = 3,
};
-void DB_Lookup(const char* path, const char* sgid, const uint8* fd_id, unsigned* const region, int* const cart_type, unsigned* const cpucache_emumode);
+void DB_Lookup(const char* path, const char* sgid, const char* sgname, const char* sgarea, const uint8* fd_id, unsigned* const region, int* const cart_type, unsigned* const cpucache_emumode);
uint32 DB_LookupHH(const char* sgid, const uint8* fd_id);
void DB_GetInternalDB(std::vector* databases) MDFN_COLD;
+std::string DB_GetHHDescriptions(const uint32 hhv) MDFN_COLD;
}
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/ss/debug.inc mednafen-1.26.1+dfsg/include/mednafen/ss/debug.inc
--- mednafen-1.24.3+dfsg/include/mednafen/ss/debug.inc 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/ss/debug.inc 2020-11-10 06:04:17.000000000 +0000
@@ -52,14 +52,17 @@
uint32 CurPC[2];
unsigned ActiveCPU;
+
+ sscpu_timestamp_t eff_ts;
+ bool inss;
} DBG;
-static MDFN_NOWARN_UNUSED void DBG_Break(void)
+static MDFN_COLD MDFN_NOWARN_UNUSED void DBG_Break(void)
{
DBG.FoundBPoint = true;
}
-static void DBG_CheckReadBP(unsigned len, uint32 addr)
+static MDFN_COLD void DBG_CheckReadBP(unsigned len, uint32 addr)
{
for(auto const& bp : DBG.BreakPointsRead)
{
@@ -74,7 +77,7 @@
}
}
-static void DBG_CheckWriteBP(unsigned len, uint32 addr)
+static MDFN_COLD void DBG_CheckWriteBP(unsigned len, uint32 addr)
{
for(auto const& bp : DBG.BreakPointsWrite)
{
@@ -92,6 +95,7 @@
enum
{
ASPACE_PHYSICAL = 0,
+ ASPACE_BACKUP,
ASPACE_WORKRAML,
ASPACE_WORKRAMH,
ASPACE_SCSPRAM,
@@ -118,6 +122,11 @@
//*Buffer = SH7095_BusPeek(Address);
break;
+ case ASPACE_BACKUP:
+ Address &= 0x7FFF;
+ *Buffer = BackupRAM[Address];
+ break;
+
case ASPACE_WORKRAML:
Address &= 0xFFFFF;
*Buffer = ne16_rbo_be(WorkRAML, Address);
@@ -175,6 +184,12 @@
//*Buffer = SH7095_BusPoke(Address, *Buffer);
break;
+ case ASPACE_BACKUP:
+ Address &= 0x7FFF;
+ BackupRAM[Address] = *Buffer;
+ BackupRAM_Dirty = true;
+ break;
+
case ASPACE_WORKRAML:
Address &= 0xFFFFF;
ne16_wbo_be(WorkRAML, Address, *Buffer);
@@ -216,7 +231,7 @@
}
-static uint32 DBG_MemPeek(uint32 A, unsigned int bsize, bool hl, bool logical)
+static MDFN_COLD uint32 DBG_MemPeek(uint32 A, unsigned int bsize, bool hl, bool logical)
{
/*
uint32 ret = 0;
@@ -255,13 +270,13 @@
DBG.BreakPointsPC.push_back(tmp);
}
-static void DBG_SetCPUCallback(void (*callb)(uint32 PC, bool bpoint), bool continuous)
+static MDFN_COLD void DBG_SetCPUCallback(void (*callb)(uint32 PC, bool bpoint), bool continuous)
{
DBG.CPUHook = callb;
DBG.CPUHookContinuous = continuous;
}
-static void DBG_EnableBranchTrace(bool enable)
+static MDFN_COLD void DBG_EnableBranchTrace(bool enable)
{
if((DBG.BTEnabled ^ enable) & DBG.BTEnabled)
{
@@ -273,7 +288,7 @@
DBG.BTEnabled = enable;
}
-static void DBG_AddBranchTrace(unsigned which, uint32 to, int exception, unsigned vecnum = 0)
+static MDFN_COLD void DBG_AddBranchTrace(unsigned which, uint32 to, int exception, unsigned vecnum = 0)
{
const uint32 from = DBG.CurPC[which];
auto *prevbt = &DBG.BTEntries[which][(DBG.BTIndex[which] + DBGS::NUMBT - 1) % DBGS::NUMBT];
@@ -296,7 +311,7 @@
}
}
-static std::vector DBG_GetBranchTrace(void)
+static MDFN_COLD std::vector DBG_GetBranchTrace(void)
{
std::vector ret;
BranchTraceResult tmp;
@@ -369,8 +384,18 @@
return(ret);
}
+static INLINE void DBG_SetEffTS(const sscpu_timestamp_t eff_ts)
+{
+ DBG.eff_ts = eff_ts;
+}
+
+static INLINE bool DBG_InSlaveStep(void)
+{
+ return DBG.inss;
+}
+
template
-static void DBG_CPUHandler(const sscpu_timestamp_t timestamp)
+static MDFN_COLD void DBG_CPUHandler(void)
{
const uint32 PC = CPU[which].GetRegister(SH7095::GSREG_PC_ID, NULL, 0);
@@ -419,8 +444,10 @@
if(DBG.CPUHookContinuous && DBG.CPUHook)
{
- ForceEventUpdates(timestamp);
+ DBG.inss = which;
+ ForceEventUpdates(DBG.eff_ts);
DBG.CPUHook(PC, DBG.FoundBPoint);
+ DBG.inss = false;
}
DBG.FoundBPoint = false;
@@ -431,18 +458,18 @@
}
-static bool DBG_NeedCPUHooks(void)
+static MDFN_COLD bool DBG_NeedCPUHooks(void)
{
return DBG.BTEnabled || DBG.CPUHook || DBG.BreakPointsPC.size() || DBG.BreakPointsRead.size() || DBG.BreakPointsWrite.size();
}
// TODO: Standard peek functions
-static INLINE uint16 DBG_DisPeek16(uint32 A)
+static MDFN_COLD uint16 DBG_DisPeek16(uint32 A)
{
return *(uint16*)(SH7095_FastMap[A >> SH7095_EXT_MAP_GRAN_BITS] + A);
}
-static INLINE uint32 DBG_DisPeek32(uint32 A)
+static MDFN_COLD uint32 DBG_DisPeek32(uint32 A)
{
uint32 ret;
@@ -453,7 +480,7 @@
return ret;
}
-static void DBG_Disassemble(uint32 &A, uint32 SpecialA, char *TextBuf)
+static MDFN_COLD void DBG_Disassemble(uint32 &A, uint32 SpecialA, char *TextBuf)
{
if(A & 0x1)
{
@@ -607,10 +634,15 @@
{ SH7095::GSREG_TOCR, "TOCR", "TOCR", 1 },
{ SH7095::GSREG_RWT, "RWT", "R/W Temp", 1 },
+ { 0, "-----------", "", 0xFFFF },
+
+ { SH7095::GSREG_CCR, "CCR", "Cache Control Register", 1 },
+ { SH7095::GSREG_SBYCR, "SBYCR", "Standby Control Register", 1 },
+
{ 0, "", "", 0 },
};
-static uint32 DBG_GetRegister_CPU(const unsigned int id, char* special, const uint32 special_len)
+static MDFN_COLD uint32 DBG_GetRegister_CPU(const unsigned int id, char* special, const uint32 special_len)
{
return CPU[DBG.ActiveCPU].GetRegister(id, special, special_len);
}
@@ -720,7 +752,7 @@
{ 0, "", "", 0 },
};
-static uint32 GetRegister(const unsigned id, char* const special, const uint32 special_len)
+static MDFN_COLD uint32 GetRegister(const unsigned id, char* const special, const uint32 special_len)
{
switch(id >> 16)
{
@@ -734,7 +766,7 @@
return 0;
}
-static void SetRegister(const unsigned id, const uint32 value)
+static MDFN_COLD void SetRegister(const unsigned id, const uint32 value)
{
switch(id >> 16)
{
@@ -835,8 +867,7 @@
//
//
//
-static void DBG_Init(void) MDFN_COLD;
-static void DBG_Init(void)
+static MDFN_COLD void DBG_Init(void)
{
DBG.ActiveCPU = 0;
DBG.BTEnabled = false;
@@ -853,6 +884,9 @@
DBG.CPUHookContinuous = false;
DBG.FoundBPoint = false;
+ DBG.eff_ts = 0;
+ DBG.inss = false;
+
MDFNDBG_AddRegGroup(&DBG_RegGroup_CPU);
MDFNDBG_AddRegGroup(&DBG_RegGroup_CPUE);
MDFNDBG_AddRegGroup(&DBG_RegGroup_SCU_CDB_VDP1);
@@ -867,14 +901,15 @@
ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "dspprog", "DSP Program RAM", 10);
+ ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "backup", "Backup RAM", 15);
+
ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "vdp1vram", "VDP1 VRAM", 19);
ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "vdp1fb0", "VDP1 FB0 RAM(raw, no 8bpp/rot addr bit swizzling)", 18);
ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "vdp1fb1", "VDP1 FB1 RAM(raw, no 8bpp/rot addr bit swizzling)", 18);
ASpace_Add(GetAddressSpaceBytes, PutAddressSpaceBytes, "vdp2vram", "VDP2 VRAM", 19);
}
-static void DBG_Kill(void) MDFN_COLD;
-static void DBG_Kill(void)
+static MDFN_COLD void DBG_Kill(void)
{
DBG.BreakPointsPC.clear();
DBG.BreakPointsRead.clear();
@@ -883,6 +918,7 @@
static DebuggerInfoStruct DBGInfo
{
+ false,
"SJIS",
2,
@@ -916,8 +952,9 @@
NULL,
};
#else
-template
-static INLINE void DBG_CPUHandler(const sscpu_timestamp_t timestamp) { }
+static INLINE void DBG_SetEffTS(const sscpu_timestamp_t eff_ts) { }
+static INLINE bool DBG_InSlaveStep(void) { return false; }
+template static INLINE void DBG_CPUHandler(void) { }
static INLINE void DBG_AddBranchTrace(unsigned which, uint32 to, int exception, unsigned vecnum = 0) { }
static INLINE bool DBG_NeedCPUHooks(void) { return false; }
static INLINE void DBG_Init(void) { }
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/ss/Makefile.in mednafen-1.26.1+dfsg/include/mednafen/ss/Makefile.in
--- mednafen-1.24.3+dfsg/include/mednafen/ss/Makefile.in 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/ss/Makefile.in 2020-11-10 06:04:17.000000000 +0000
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,17 @@
@SET_MAKE@
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -81,8 +91,6 @@
@WANT_SS_EMU_TRUE@am__append_1 = libss.a
@WANT_SSFPLAY_EMU_TRUE@am__append_2 = libssfplay.a
subdir = src/ss
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp
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 \
@@ -104,6 +112,7 @@
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/include/config.h
CONFIG_CLEAN_FILES =
@@ -148,7 +157,23 @@
am__v_at_0 = @
am__v_at_1 =
depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/cart.Po ./$(DEPDIR)/cdb.Po \
+ ./$(DEPDIR)/db.Po ./$(DEPDIR)/scu_dsp_gen.Po \
+ ./$(DEPDIR)/scu_dsp_jmp.Po ./$(DEPDIR)/scu_dsp_misc.Po \
+ ./$(DEPDIR)/scu_dsp_mvi.Po ./$(DEPDIR)/smpc.Po \
+ ./$(DEPDIR)/sound.Po ./$(DEPDIR)/ss.Po ./$(DEPDIR)/ssf.Po \
+ ./$(DEPDIR)/vdp1.Po ./$(DEPDIR)/vdp1_line.Po \
+ ./$(DEPDIR)/vdp1_poly.Po ./$(DEPDIR)/vdp1_sprite.Po \
+ ./$(DEPDIR)/vdp2.Po ./$(DEPDIR)/vdp2_render.Po \
+ cart/$(DEPDIR)/ar4mp.Po cart/$(DEPDIR)/backup.Po \
+ cart/$(DEPDIR)/cs1ram.Po cart/$(DEPDIR)/debug.Po \
+ cart/$(DEPDIR)/extram.Po cart/$(DEPDIR)/rom.Po \
+ input/$(DEPDIR)/3dpad.Po input/$(DEPDIR)/gamepad.Po \
+ input/$(DEPDIR)/gun.Po input/$(DEPDIR)/jpkeyboard.Po \
+ input/$(DEPDIR)/keyboard.Po input/$(DEPDIR)/mission.Po \
+ input/$(DEPDIR)/mouse.Po input/$(DEPDIR)/multitap.Po \
+ input/$(DEPDIR)/wheel.Po
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
@@ -189,6 +214,8 @@
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \
+ $(top_srcdir)/mkinstalldirs
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ALLOCA = @ALLOCA@
@@ -363,6 +390,7 @@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@@ -400,14 +428,13 @@
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/ss/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu src/ss/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);; \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -482,38 +509,44 @@
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cart.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdb.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/db.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scu_dsp_gen.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scu_dsp_jmp.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scu_dsp_misc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scu_dsp_mvi.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smpc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sound.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdp1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdp1_line.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdp1_poly.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdp1_sprite.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdp2.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdp2_render.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cart/$(DEPDIR)/ar4mp.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cart/$(DEPDIR)/backup.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cart/$(DEPDIR)/cs1ram.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cart/$(DEPDIR)/debug.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cart/$(DEPDIR)/extram.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@cart/$(DEPDIR)/rom.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/3dpad.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/gamepad.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/gun.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/jpkeyboard.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/keyboard.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/mission.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)/wheel.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cart.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdb.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/db.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scu_dsp_gen.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scu_dsp_jmp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scu_dsp_misc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scu_dsp_mvi.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smpc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sound.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ssf.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdp1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdp1_line.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdp1_poly.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdp1_sprite.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdp2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdp2_render.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cart/$(DEPDIR)/ar4mp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cart/$(DEPDIR)/backup.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cart/$(DEPDIR)/cs1ram.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cart/$(DEPDIR)/debug.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cart/$(DEPDIR)/extram.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@cart/$(DEPDIR)/rom.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/3dpad.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/gamepad.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/gun.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/jpkeyboard.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/keyboard.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/mission.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/mouse.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/multitap.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@input/$(DEPDIR)/wheel.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+ @$(MKDIR_P) $(@D)
+ @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
.cpp.o:
@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -583,7 +616,10 @@
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
@@ -656,7 +692,38 @@
clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
distclean: distclean-am
- -rm -rf ./$(DEPDIR) cart/$(DEPDIR) input/$(DEPDIR)
+ -rm -f ./$(DEPDIR)/cart.Po
+ -rm -f ./$(DEPDIR)/cdb.Po
+ -rm -f ./$(DEPDIR)/db.Po
+ -rm -f ./$(DEPDIR)/scu_dsp_gen.Po
+ -rm -f ./$(DEPDIR)/scu_dsp_jmp.Po
+ -rm -f ./$(DEPDIR)/scu_dsp_misc.Po
+ -rm -f ./$(DEPDIR)/scu_dsp_mvi.Po
+ -rm -f ./$(DEPDIR)/smpc.Po
+ -rm -f ./$(DEPDIR)/sound.Po
+ -rm -f ./$(DEPDIR)/ss.Po
+ -rm -f ./$(DEPDIR)/ssf.Po
+ -rm -f ./$(DEPDIR)/vdp1.Po
+ -rm -f ./$(DEPDIR)/vdp1_line.Po
+ -rm -f ./$(DEPDIR)/vdp1_poly.Po
+ -rm -f ./$(DEPDIR)/vdp1_sprite.Po
+ -rm -f ./$(DEPDIR)/vdp2.Po
+ -rm -f ./$(DEPDIR)/vdp2_render.Po
+ -rm -f cart/$(DEPDIR)/ar4mp.Po
+ -rm -f cart/$(DEPDIR)/backup.Po
+ -rm -f cart/$(DEPDIR)/cs1ram.Po
+ -rm -f cart/$(DEPDIR)/debug.Po
+ -rm -f cart/$(DEPDIR)/extram.Po
+ -rm -f cart/$(DEPDIR)/rom.Po
+ -rm -f input/$(DEPDIR)/3dpad.Po
+ -rm -f input/$(DEPDIR)/gamepad.Po
+ -rm -f input/$(DEPDIR)/gun.Po
+ -rm -f input/$(DEPDIR)/jpkeyboard.Po
+ -rm -f input/$(DEPDIR)/keyboard.Po
+ -rm -f input/$(DEPDIR)/mission.Po
+ -rm -f input/$(DEPDIR)/mouse.Po
+ -rm -f input/$(DEPDIR)/multitap.Po
+ -rm -f input/$(DEPDIR)/wheel.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
@@ -702,7 +769,38 @@
installcheck-am:
maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR) cart/$(DEPDIR) input/$(DEPDIR)
+ -rm -f ./$(DEPDIR)/cart.Po
+ -rm -f ./$(DEPDIR)/cdb.Po
+ -rm -f ./$(DEPDIR)/db.Po
+ -rm -f ./$(DEPDIR)/scu_dsp_gen.Po
+ -rm -f ./$(DEPDIR)/scu_dsp_jmp.Po
+ -rm -f ./$(DEPDIR)/scu_dsp_misc.Po
+ -rm -f ./$(DEPDIR)/scu_dsp_mvi.Po
+ -rm -f ./$(DEPDIR)/smpc.Po
+ -rm -f ./$(DEPDIR)/sound.Po
+ -rm -f ./$(DEPDIR)/ss.Po
+ -rm -f ./$(DEPDIR)/ssf.Po
+ -rm -f ./$(DEPDIR)/vdp1.Po
+ -rm -f ./$(DEPDIR)/vdp1_line.Po
+ -rm -f ./$(DEPDIR)/vdp1_poly.Po
+ -rm -f ./$(DEPDIR)/vdp1_sprite.Po
+ -rm -f ./$(DEPDIR)/vdp2.Po
+ -rm -f ./$(DEPDIR)/vdp2_render.Po
+ -rm -f cart/$(DEPDIR)/ar4mp.Po
+ -rm -f cart/$(DEPDIR)/backup.Po
+ -rm -f cart/$(DEPDIR)/cs1ram.Po
+ -rm -f cart/$(DEPDIR)/debug.Po
+ -rm -f cart/$(DEPDIR)/extram.Po
+ -rm -f cart/$(DEPDIR)/rom.Po
+ -rm -f input/$(DEPDIR)/3dpad.Po
+ -rm -f input/$(DEPDIR)/gamepad.Po
+ -rm -f input/$(DEPDIR)/gun.Po
+ -rm -f input/$(DEPDIR)/jpkeyboard.Po
+ -rm -f input/$(DEPDIR)/keyboard.Po
+ -rm -f input/$(DEPDIR)/mission.Po
+ -rm -f input/$(DEPDIR)/mouse.Po
+ -rm -f input/$(DEPDIR)/multitap.Po
+ -rm -f input/$(DEPDIR)/wheel.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
@@ -722,18 +820,20 @@
.MAKE: install-am install-strip
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
- distclean-compile distclean-generic 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 pdf pdf-am ps ps-am tags tags-am uninstall \
- uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
+ clean-generic clean-noinstLIBRARIES cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ 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 pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/ss/notes/build_sh7095s_ctable.cpp mednafen-1.26.1+dfsg/include/mednafen/ss/notes/build_sh7095s_ctable.cpp
--- mednafen-1.24.3+dfsg/include/mednafen/ss/notes/build_sh7095s_ctable.cpp 1970-01-01 00:00:00.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/ss/notes/build_sh7095s_ctable.cpp 2020-11-10 06:04:17.000000000 +0000
@@ -0,0 +1,15 @@
+#include
+
+
+int main(int argc, char* argv[])
+{
+// printf("static_assert(__COUNTER__ <= 11025, \"Unexpected __COUNTER__\");\n");
+ const unsigned base = 2*5000; //10000;
+ const unsigned max_entries = 512; //512;
+ for(int i = max_entries; i > 0; i--)
+ {
+ printf("#if __COUNTER__ >= %u\n", base + max_entries + 2);
+ printf(" &&Resume_%u,\n", base + i);
+ printf("#endif\n");
+ }
+}
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/ss/notes/PROBLEMATIC-GAMES mednafen-1.26.1+dfsg/include/mednafen/ss/notes/PROBLEMATIC-GAMES
--- mednafen-1.24.3+dfsg/include/mednafen/ss/notes/PROBLEMATIC-GAMES 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/ss/notes/PROBLEMATIC-GAMES 2020-11-10 06:04:17.000000000 +0000
@@ -4,21 +4,30 @@
-------------------------------------------------------------------------------
Area 51 (USA/Europe)
Clockwork Knight 2 (USA)
-DeJig - Lassen Art Collection (Japan)
+DeJig: Lassen Art Collection (Japan)
+Doraemon: Nobita to Fukkatsu no Hoshi (Japan)
Dragon Force II (Japan) - Battles(broken math)
Father Christmas (Japan)
Fighting Vipers (Japan/Europe/USA)
+Formula Grand Prix: Team Unei Simulation (Japan)
Golden Axe The Duel (Japan/Europe/USA)
House of the Dead (Japan)
Linkle Liver Story (Japan)
+Mahjong Doukyuusei Special (Japan)
+Mr. Bones - Intro FMV
+Ronde (Japan)
Sega Saturn Choice Cuts (USA) - Broken FMV playback(except intro FMV).
Segakore Sega Bible Mogitate SegaSaturn - Zero Divide demo, especially.
+Shunsai (Japan)
Spot Goes to Hollywood (USA/Japan)
Street Fighter Zero (Japan)
Street Fighter Zero 3 (Japan)
Super Puzzle Fighter II Turbo (USA)
Theme Park (Europe)
+Thunder Force Gold Pack 1 (Japan)
+Thunder Force Gold Pack 2 (Japan)
Virtua Fighter Kids (Java Tea Original)
+Virtual Mahjong (Japan)
Virtual Volleyball (Japan)
WipEout (Japan/Europe/USA)
World Series Baseball (USA/Japan)
@@ -39,6 +48,7 @@
-------------------------------------------------------------------------------
Rely on SH-2 DMA bus hogging
-------------------------------------------------------------------------------
+Another Memories
Device Reign
Real Sound
Resident Evil
@@ -70,11 +80,18 @@
-------------------------------------------------------------------------------
-Rely on SH-2 CPU writes/reads to/from VDP1 RAM slowing VDP1 command execution
+Rely on SH-2 CPU and SH-2 DMA writes/reads to/from VDP1 RAM slowing
+VDP1 command execution
-------------------------------------------------------------------------------
+Albert Odyssey - Battle text
Arcade's Greatest Hits - Credits
Burning Rangers - Victim transfer text
+Falcom Classics II - "Ys II" FMV
+Frank Thomas Big Hurt Baseball
+Tokimeki Memorial: Forever with You - Konami intro arm sprite
Whizz - Gameplay
+Wolf Fang SS: Kuuga 2001 - Player robot(especially when jumping)
+Yu-No - FMV
-------------------------------------------------------------------------------
@@ -121,6 +138,12 @@
-------------------------------------------------------------------------------
+Rely on quirks relating to command execution during CDB Reset Selector
+-------------------------------------------------------------------------------
+Independence Day (USA) - Startup hang; 'Get CD Device Connection' command
+
+
+-------------------------------------------------------------------------------
Rely on CDB seeks taking long enough
-------------------------------------------------------------------------------
Batman Forever - Intro graphics; may also be a general timing issue.
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/ss/notes/SCSP-FM-GAMES mednafen-1.26.1+dfsg/include/mednafen/ss/notes/SCSP-FM-GAMES
--- mednafen-1.24.3+dfsg/include/mednafen/ss/notes/SCSP-FM-GAMES 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/ss/notes/SCSP-FM-GAMES 2020-11-10 06:04:17.000000000 +0000
@@ -12,6 +12,7 @@
S_GM_FM2.B
S_GM_FM3.B
S_GM_FM4.B
+Hang On GP - BGM 00 through 03 in the sound test.
Kaitou Saint Tail
Langrisser III
Magic Knight Rayearth - "Tokyo Tower", "Flash's Theme", "Mysterious Cephiro Lecture", "Great Whirlpool", "Rainbow Junction Shop", "Sea of Trees"
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/ss/scsp.inc mednafen-1.26.1+dfsg/include/mednafen/ss/scsp.inc
--- mednafen-1.24.3+dfsg/include/mednafen/ss/scsp.inc 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/ss/scsp.inc 2020-11-10 06:04:17.000000000 +0000
@@ -547,7 +547,7 @@
if(!shift)
t->Reload = DBV & 0xFF;
- //printf("Timer(%zu-byte) %u: %04x\n", sizeof(T), ((A >> 1) & 0x1F) - 0x0C, DBV);
+ //printf("Timer(%zu-byte) %u: %04x --- %02x\n", sizeof(T), ((A >> 1) & 0x1F) - 0x0C, DBV, t->Counter);
}
else
DBV = 0;
@@ -1313,7 +1313,6 @@
//
for(unsigned slot = 0; slot < 32; slot++)
{
- uint32 mdata = 0;
auto* s = &Slots[slot];
unsigned key_eg_scale;
@@ -1343,16 +1342,8 @@
else
s->EnvPhase = ENV_PHASE_RELEASE;
}
-
//
//
- uint16 sample = 0;
-
- if(s->SourceControl == 1)
- sample = LFSR << 8;
-
- sample ^= s->SBXOR; // For zero and noise case only; waveform playback needs it to occur before linear interpolation.
-
if(!s->InLoop)
{
if((uint16)(s->CurrentAddr + 1) > s->LoopStart)
@@ -1393,29 +1384,27 @@
}
}
}
+ }
+
+ for(unsigned slot = 0; slot < 32; slot++)
+ {
+ auto* s = &Slots[slot];
+ uint32 mdata = 0;
+ uint16 sample = 0;
+
+ if(s->SourceControl == 1)
+ sample = LFSR << 8;
+
+ sample ^= s->SBXOR; // For zero and noise case only; waveform playback needs it to occur before linear interpolation.
//
//
if(s->WFAllowAccess)
{
- uint32 modalizer;
- uint32 modalizer_int;
+ uint32 modalizer_int[2];
uint32 tmppw = s->PhaseWhacker;
uint16 tmpa = s->CurrentAddr;
- int16 s0, s1;
-
- //
//
- modalizer = (int16)SoundStack[(GlobalCounter + s->ModInputX) & 0x3F];
- modalizer += (int16)SoundStack[(GlobalCounter + s->ModInputY) & 0x3F];
- modalizer = (modalizer << 6) >> (0x10 - s->ModLevel);
-
- if(s->ModLevel <= 0x04)
- modalizer = 0;
-
- modalizer_int = sign_x_to_s32(11, modalizer >> 6);
//
- //
-
if(s->LoopSub)
{
tmppw = ~tmppw;
@@ -1423,19 +1412,48 @@
}
mdata |= ((tmpa >> 12) << 7);
+ //
+ //
+ uint32 sia;
+ int16 s0, s1;
+
+ {
+ //
+ // TODO/FIXME: Proper handling of the slot 31->0 buggy FM interpolation case with respect to reverse looping(ns->LoopSub)
+ // requires sub-sample timing emulation.
+ //
+ auto* ns = &Slots[(slot + 1) & 0x1F];
+ uint32 modalizer;
+ uint32 ns_sia;
+
+ modalizer = (int16)SoundStack[(GlobalCounter + s->ModInputX) & 0x3F];
+ modalizer += (int16)SoundStack[(GlobalCounter + s->ModInputY) & 0x3F];
+ modalizer = ((modalizer << 6) >> (0x10 - s->ModLevel)) & ~1;
+
+ if(s->ModLevel <= 0x04)
+ modalizer = 0;
+
+ sia = modalizer + ((tmppw >> (14 - 6)) & 0x3F);
+ ns_sia = modalizer + (((ns->PhaseWhacker >> (14 - 6)) ^ (ns->LoopSub ? 0x3F : 0x00)) & 0x3F);
+
+ modalizer_int[0] = sign_x_to_s32(11, sia >> 6);
+ modalizer_int[1] = sign_x_to_s32(11, ns_sia >> 6);
+ //
+ sia &= 0x3F;
+ }
if(s->WF8Bit)
{
- const uint32 addr0 = (s->StartAddr + ((modalizer_int + (uint16)(tmpa + 0)) & s->ShortWaveMask)) & 0xFFFFF;
- const uint32 addr1 = (s->StartAddr + ((modalizer_int + (uint16)(tmpa + 1)) & s->ShortWaveMask)) & 0xFFFFF;
+ const uint32 addr0 = (s->StartAddr + ((modalizer_int[0] + (uint16)(tmpa + 0)) & s->ShortWaveMask)) & 0xFFFFF;
+ const uint32 addr1 = (s->StartAddr + ((modalizer_int[1] + (uint16)(tmpa + 1)) & s->ShortWaveMask)) & 0xFFFFF;
s0 = ne16_rbo_be(RAM, addr0) << 8;
s1 = ne16_rbo_be(RAM, addr1) << 8;
}
else
{
- s0 = RAM[((s->StartAddr >> 1) + ((modalizer_int + (uint16)(tmpa + 0)) & s->ShortWaveMask)) & 0x7FFFF];
- s1 = RAM[((s->StartAddr >> 1) + ((modalizer_int + (uint16)(tmpa + 1)) & s->ShortWaveMask)) & 0x7FFFF];
+ s0 = RAM[((s->StartAddr >> 1) + ((modalizer_int[0] + (uint16)(tmpa + 0)) & s->ShortWaveMask)) & 0x7FFFF];
+ s1 = RAM[((s->StartAddr >> 1) + ((modalizer_int[1] + (uint16)(tmpa + 1)) & s->ShortWaveMask)) & 0x7FFFF];
}
s0 ^= s->SBXOR;
@@ -1443,7 +1461,6 @@
if(s->SourceControl == 0)
{
- const unsigned sia = std::min(0x40, ((tmppw >> (14 - 6)) & 0x3F) + (modalizer & 0x3E));
sample = ((s0 * (0x40 - sia)) + (s1 * sia)) >> 6;
}
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/ss/scu_dsp_common.inc mednafen-1.26.1+dfsg/include/mednafen/ss/scu_dsp_common.inc
--- mednafen-1.24.3+dfsg/include/mednafen/ss/scu_dsp_common.inc 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/ss/scu_dsp_common.inc 2020-11-10 06:04:17.000000000 +0000
@@ -30,7 +30,7 @@
// See loop in "SCU_UpdateDSP()" in scu.inc, and END/ENDI handling in scu_dsp_misc.cpp
enum { DSP_EndCCSubVal = 1000000 };
-void DSP_Init(void);
+void DSP_Init(void) MDFN_COLD;
void DSP_FinishPRAMDMA(void);
union DSPR48
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/ss/scu.inc mednafen-1.26.1+dfsg/include/mednafen/ss/scu.inc
--- mednafen-1.24.3+dfsg/include/mednafen/ss/scu.inc 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/ss/scu.inc 2020-11-10 06:04:17.000000000 +0000
@@ -2,7 +2,7 @@
/* Mednafen Sega Saturn Emulation Module */
/******************************************************************************/
/* scu.inc - SCU Emulation
-** Copyright (C) 2015-2019 Mednafen Team
+** Copyright (C) 2015-2020 Mednafen Team
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License
@@ -30,6 +30,15 @@
// TODO: Test and improve emulation of DSP single-stepping.
//
// TODO: Running DMA forces DSP into full execution mode when single-stepping; test the exact semantics, and implement it.
+//
+// TODO: Better emulation of SH-2 CPU to SCU write timings:
+// A-bus write buffer
+//
+// Higher B-bus base overhead, unless the last read or write to the specific memory region(VDP1 VRAM, VDP1 FB, etc.) being accessed
+// was in the same page; pages seem to be 512 bytes for VDP1 VRAM, maybe 32 bytes for FB RAM but probably more complex.
+//
+// TODO: SH-2 CPU read overhead when reading from VDP1 VRAM and VDP1 FB RAM should be significantly higher.
+//
/*
Notes(assuming NTSC, HRES=0, VRES=0, LSMD=0):
@@ -173,6 +182,8 @@
static void CheckDMASFByInt(unsigned int_which);
static INLINE void CheckForceDMAFinish(void);
+static sscpu_timestamp_t BBus_SH2_WriteFinishTS;
+
static uint32 IAsserted;
static uint32 IPending;
static uint32 IMask;
@@ -206,6 +217,9 @@
unsigned we = MDFN_tzcount16(ipmd >> 16);
unsigned olev, ovec, bpos;
+ //if((ipmd & 0x3) == 0x3 || ((ipmd & 0x81) == 0x81))
+ // printf("CONFLICT: 0x%08x 0x%08x\n", IPending, ipmd);
+
olev = internal_tab[wi];
ovec = 0x40 + wi;
bpos = wi;
@@ -398,6 +412,8 @@
if(DSP.T0_Until > 0x10000000)
DSP.T0_Until = 0x10000000;
+ //DSP.LastTS = std::max(-1000000, DSP.LastTS + delta);
+
DSP.LastTS += delta;
if(DSP.LastTS < 0)
{
@@ -405,6 +421,10 @@
//printf("%d\n", DSP.LastTS);
DSP.LastTS = 0;
}
+ //
+ //
+ //
+ BBus_SH2_WriteFinishTS = std::max(-1000000, BBus_SH2_WriteFinishTS + delta);
}
//
@@ -770,19 +790,32 @@
}
}
-
template
static INLINE void BBusRW_DB(uint32 A, uint16* DB, int32* time_thing, int32* dma_time_thing = NULL, int32* sh2_dma_time_thing = NULL) // add to time_thing, subtract from dma_time_thing
{
static_assert(IsWrite || sizeof(T) == 2, "Wrong type.");
+ if(time_thing != NULL)
+ {
+ if(!SH32)
+ {
+ *time_thing = std::max(*time_thing, BBus_SH2_WriteFinishTS);
+
+ if(IsWrite)
+ {
+ *time_thing += 2;
+ BBus_SH2_WriteFinishTS = *time_thing;
+ }
+ }
+ }
+
//
// VDP1
//
if(A >= 0x05C00000 && A <= 0x05D7FFFF)
{
if(sh2_dma_time_thing != NULL)
- *sh2_dma_time_thing -= IsWrite ? (SH32 ? 0 : 6) : 10;
+ *sh2_dma_time_thing += IsWrite ? (SH32 ? 0 : 6) : 10;
if(dma_time_thing != NULL)
{
@@ -804,12 +837,19 @@
}
}
+ //if(IsWrite && (A & 0x100000) && SH32)
+ //{
+ // assert(0);
+ //}
+
if(time_thing != NULL)
{
if(IsWrite)
- *time_thing += SH32 ? 0 : 11;
+ BBus_SH2_WriteFinishTS += SH32 ? ((A & 0x100000) ? 0 : 1) : 9;
else
+ {
*time_thing += 14;
+ }
CheckEventsByMemTS();
}
@@ -818,6 +858,8 @@
{
if(time_thing != NULL)
VDP1::Write_CheckDrawSlowdown(A, *time_thing);
+ else if(sh2_dma_time_thing != NULL)
+ VDP1::Write_CheckDrawSlowdown(A, *sh2_dma_time_thing);
if(sizeof(T) == 1)
VDP1::Write8_DB(A, *DB);
@@ -828,6 +870,8 @@
{
if(time_thing != NULL)
VDP1::Read_CheckDrawSlowdown(A, *time_thing);
+ else if(sh2_dma_time_thing != NULL)
+ VDP1::Read_CheckDrawSlowdown(A, *sh2_dma_time_thing);
*DB = VDP1::Read16_DB(A);
}
@@ -841,7 +885,7 @@
if(A >= 0x05E00000 && A <= 0x05FBFFFF)
{
if(sh2_dma_time_thing != NULL)
- *sh2_dma_time_thing -= IsWrite ? (SH32 ? 0 : 5) : 10;
+ *sh2_dma_time_thing += IsWrite ? (SH32 ? 0 : 5) : 10;
if(dma_time_thing != NULL)
{
@@ -853,7 +897,7 @@
if(time_thing != NULL)
{
if(IsWrite)
- *time_thing += SH32 ? 0 : 5;
+ BBus_SH2_WriteFinishTS += SH32 ? 1 : 3;
else
*time_thing += 20;
@@ -891,7 +935,7 @@
if(A >= 0x05A00000 && A <= 0x05BFFFFF)
{
if(sh2_dma_time_thing != NULL)
- *sh2_dma_time_thing -= 13;
+ *sh2_dma_time_thing += 13;
if(dma_time_thing != NULL)
{
@@ -901,7 +945,7 @@
if(time_thing != NULL)
{
if(IsWrite)
- *time_thing += SH32 ? 13 : 19;
+ BBus_SH2_WriteFinishTS += SH32 ? 13 : 17;
else
*time_thing += 24;
}
@@ -922,7 +966,7 @@
//
//
if(sh2_dma_time_thing != NULL)
- *sh2_dma_time_thing -= 1;
+ *sh2_dma_time_thing += 1;
if(dma_time_thing != NULL)
*dma_time_thing -= 1;
@@ -967,7 +1011,7 @@
// TODO: SCU seems to have its own internal write buffering...or something else complex going on, that complicates
// getting the SH-2 DMA timing right.
if(sh2_dma_time_thing != NULL)
- *sh2_dma_time_thing -= 1;
+ *sh2_dma_time_thing += 1;
if(dma_time_thing != NULL)
{
@@ -997,7 +1041,7 @@
if(MDFN_UNLIKELY(A >= 0x05000000 && A <= 0x057FFFFF))
{
if(sh2_dma_time_thing != NULL)
- *sh2_dma_time_thing -= 16;
+ *sh2_dma_time_thing += 16;
if(dma_time_thing != NULL)
{
@@ -1019,7 +1063,7 @@
if(A >= 0x05800000 && A <= 0x058FFFFF)
{
if(sh2_dma_time_thing != NULL)
- *sh2_dma_time_thing -= 8;
+ *sh2_dma_time_thing += 8;
if(dma_time_thing != NULL)
{
@@ -1065,7 +1109,7 @@
}
if(sh2_dma_time_thing != NULL)
- *sh2_dma_time_thing -= 1;
+ *sh2_dma_time_thing += 1;
if(dma_time_thing != NULL)
*dma_time_thing -= 1;
@@ -1759,7 +1803,7 @@
DSP.PRAMDMABuf[i] = 0;
}
-void DSP_Init(void)
+MDFN_COLD void DSP_Init(void)
{
DSP.LastTS = 0;
@@ -1960,7 +2004,7 @@
//
//
-static void SCU_Init(void)
+static MDFN_COLD void SCU_Init(void)
{
SCU_DMA_TimeCounter = 0;
SCU_DMA_RunUntil = 0;
@@ -1968,6 +2012,8 @@
HB_FromVDP2 = false;
VB_FromVDP2 = false;
+ BBus_SH2_WriteFinishTS = 0;
+
DSP_Init();
}
@@ -2115,6 +2161,8 @@
SFVAR(SCU_DMA_SDRAM_Slowdown_Counter),
SFVAR(SCU_DMA_VDP1WriteIgnoreKludge),
+ SFVAR(BBus_SH2_WriteFinishTS),
+
SFVAR(IAsserted),
SFVAR(IPending),
SFVAR(IMask),
@@ -2189,7 +2237,7 @@
{
if(d.TableReadFunc == rftab[trb])
{
- DMALevel_ReadFunc[level] = trb;
+ DMALevel_TableReadFunc[level] = trb;
break;
}
}
@@ -2282,7 +2330,7 @@
//
//
//
-uint32 SCU_DSP_PeekProgRAM(uint8 A)
+MDFN_COLD uint32 SCU_DSP_PeekProgRAM(uint8 A)
{
return DSP.ProgRAM[A] >> 32;
}
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/ss/sh7095.h mednafen-1.26.1+dfsg/include/mednafen/ss/sh7095.h
--- mednafen-1.24.3+dfsg/include/mednafen/ss/sh7095.h 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/ss/sh7095.h 2020-11-10 06:04:17.000000000 +0000
@@ -2,7 +2,7 @@
/* Mednafen Sega Saturn Emulation Module */
/******************************************************************************/
/* sh7095.h:
-** Copyright (C) 2015-2017 Mednafen Team
+** Copyright (C) 2015-2020 Mednafen Team
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License
@@ -29,13 +29,16 @@
SH7095(const char* const name_arg, const unsigned dma_event_id_arg, uint8 (*exivecfn_arg)(void)) MDFN_COLD;
~SH7095() MDFN_COLD;
- void Init(const bool CacheBypassHack) MDFN_COLD;
+ void Init(const bool EmulateICache, const bool CacheBypassHack) MDFN_COLD;
+ void SetDebugMode(const bool DebugMode) MDFN_COLD;
void StateAction(StateMem* sm, const unsigned load, const bool data_only, const char* sname) MDFN_COLD;
- void FixupICacheModeState(void) MDFN_COLD;
+ void StateAction_SlaveResume(StateMem* sm, const unsigned load, const bool data_only, const char* sname) MDFN_COLD;
+ void PostStateLoad(const unsigned state_version, const bool recorded_needicache, const bool needicache) MDFN_COLD;
void ForceInternalEventUpdates(void);
- void AdjustTS(int32 delta, bool force_set = false);
+ void AdjustTS(int32 delta);
+ void SetActive(bool active);
void TruePowerOn(void) MDFN_COLD;
void Reset(bool power_on_reset, bool from_internal_wdt = false) MDFN_COLD;
@@ -61,9 +64,14 @@
ExtHaltDMA = (ExtHaltDMA & ~2) | (state << 1);
}
+ // When entering Step(), EmulateICache and DebugMode must match what was passed to Init() and SetDebugMode()
template
void Step(void);
+ // Slave only
+ NO_CLONE NO_INLINE void RunSlaveUntil(sscpu_timestamp_t bound_timestamp) MDFN_HOT;
+ NO_CLONE NO_INLINE void RunSlaveUntil_Debug(sscpu_timestamp_t bound_timestamp) MDFN_COLD;
+
//private:
uint32 R[16];
uint32 PC;
@@ -185,17 +193,22 @@
//
//
uint32 IBuffer;
-
uint32 (MDFN_FASTCALL *MRFPI[8])(uint32 A);
uint8 (MDFN_FASTCALL *MRFP8[8])(uint32 A);
uint16 (MDFN_FASTCALL *MRFP16[8])(uint32 A);
uint32 (MDFN_FASTCALL *MRFP32[8])(uint32 A);
+ uint16 (MDFN_FASTCALL *MRFP16_I[8])(uint32 A);
+ uint32 (MDFN_FASTCALL *MRFP32_I[8])(uint32 A);
+
void (MDFN_FASTCALL *MWFP8[8])(uint32 A, uint8);
void (MDFN_FASTCALL *MWFP16[8])(uint32 A, uint16);
void (MDFN_FASTCALL *MWFP32[8])(uint32 A, uint32);
+ void RecalcMRWFP_0(void);
+ void RecalcMRWFP_1_7(void);
+
sscpu_timestamp_t WB_until[16];
//
@@ -203,15 +216,18 @@
// Cache:
//
//
- struct
+ struct CacheEntry
{
// Rather than have separate validity bits, we're putting an INvalidity bit(invalid when =1)
- // in the upper bit of the Tag variables.
+ // in the lower bit of the Tag variables.
uint32 Tag[4];
- uint8 LRU;
- alignas(4) uint8 Data[4][16];
- } Cache[64];
+ uint8 Data[4][16];
+ };
+ alignas(16) CacheEntry Cache[64];
+ uint8 Cache_LRU[64];
+ int32 CCRC_Replace_OR[2]; // Cached cache var, calculated from the ID and OD bits of CCR in SetCCR()
+ uint8 CCRC_Replace_AND; // Cached cache var, calculated from the TW bit of CCR in SetCCR()
uint8 CCR;
void SetCCR(uint8 V);
@@ -222,19 +238,97 @@
enum { CCR_CP = 0x10 }; // Cache Purge
enum { CCR_W0 = 0x40 }; //
enum { CCR_W1 = 0x80 }; //
- void AssocPurge(const uint32 A);
+
+ void Cache_AssocPurge(const uint32 A);
+
+ int Cache_FindWay(CacheEntry* const cent, const uint32 ATM);
+
+ template
+ void Cache_WriteAddressArray(uint32 A, T V);
+
+ template
+ void Cache_WriteDataArray(uint32 A, T V);
+
+ template
+ T Cache_ReadAddressArray(uint32 A);
template
- void Write_UpdateCache(uint32 A, T V);
+ T Cache_ReadDataArray(uint32 A);
+
+ template
+ void Cache_CheckReadIncoherency(CacheEntry* cent, const int way, const uint32 A);
+
+ template
+ void Cache_WriteUpdate(uint32 A, T V);
//
// End cache stuff
//
//
+ // Bus State Controller
+ //
+ struct
+ {
+ uint16 BCR1;
+ uint8 BCR2;
+ uint16 WCR;
+ uint16 MCR;
+
+ uint8 RTCSR;
+ uint8 RTCSRM;
+ uint8 RTCNT;
+ uint8 RTCOR;
+ //
+ //
+ //
+ sscpu_timestamp_t sdram_finish_time;
+ sscpu_timestamp_t last_mem_time;
+ uint32 last_mem_addr;
+ uint32 last_mem_type;
+ } BSC;
+
+ template
+ void INLINE BSC_BusWrite(uint32 A, T V, const bool BurstHax, int32* SH2DMAHax);
+
+ template
+ T INLINE BSC_BusRead(uint32 A, const bool BurstHax, int32* SH2DMAHax);
+
+ uint32 UCRead_IF_Kludge;
+
+ //
+ // Exit/Resume stuff for slave CPU with icache emulation(RunSlaveUntil())
+ //
+ const void* ResumePoint;
+ CacheEntry* Resume_cent;
+ uint32 Resume_instr;
+ int Resume_way_match;
+ uint32 Resume_uint8_A;
+ uint32 Resume_uint16_A;
+ uint32 Resume_uint32_A;
+ uint32 Resume_unmasked_A;
+ uint32 Resume_uint32_V;
+ uint16 Resume_uint16_V;
+ uint8 Resume_uint8_V;
+
+ int32 Resume_MAC_L_m0;
+ int32 Resume_MAC_L_m1;
+
+ int16 Resume_MAC_W_m0;
+ int16 Resume_MAC_W_m1;
+
+ uint32 Resume_ea;
+ uint32 Resume_new_PC;
+ uint32 Resume_new_SR;
+
+ uint8 Resume_ipr;
+ uint8 Resume_exnum;
+ uint8 Resume_vecnum;
+
+ //
//
// Interrupt controller registers and related state
//
- //
+ //
void INTC_Reset(void) MDFN_COLD;
bool NMILevel;
@@ -252,22 +346,6 @@
//
//
//
- struct
- {
- uint16 BCR1;
- uint8 BCR2;
- uint16 WCR;
- uint16 MCR;
-
- uint8 RTCSR;
- uint8 RTCSRM;
- uint8 RTCNT;
- uint8 RTCOR;
- } BSC;
-
- //
- //
- //
uint8 SBYCR;
bool Standby;
@@ -335,10 +413,8 @@
void DMA_BusTimingKludge(void);
const unsigned event_id_dma;
- sscpu_timestamp_t dma_lastts; // External SH7095_mem_timestamp related.
-
- int32 DMA_ClockCounter;
- int32 DMA_SGCounter; // When negative, smaller granularity scheduling for DMA_Update()
+ sscpu_timestamp_t DMA_Timestamp;
+ sscpu_timestamp_t DMA_SGEndTimestamp; // For smaller granularity scheduling for DMA_Update() after start of DMA.
bool DMA_RoundRobinRockinBoppin;
uint32 DMA_PenaltyKludgeAmount;
@@ -402,51 +478,26 @@
uint8 GetPendingInt(uint8*);
void RecalcPendingIntPEX(void);
- template
- INLINE void FetchIF(bool ForceIBufferFill);
-
- template
- void DoIDIF_Real(void);
+ template
+ INLINE void DoIDIF_INLINE(void);
- template
- T ExtBusRead(uint32 A);
+ template
+ INLINE T ExtBusRead_INLINE(uint32 A);
- template
- void ExtBusWrite(uint32 A, T V);
+ template
+ INLINE void ExtBusWrite_INLINE(uint32 A, T V);
template
- void OnChipRegWrite(uint32 A, uint32 V);
+ NO_INLINE void OnChipRegWrite(uint32 A, uint32 V) MDFN_HOT;
template
- T OnChipRegRead(uint32 A);
-
- template
- T MemReadRT(uint32 A);
-
- template
- T MemRead(uint32 A);
-
- template
- void MemWriteRT(uint32 A, T V);
-
- template
- void MemWrite(uint32 A, T V);
-
-
- template
- INLINE void Branch(uint32 target);
-
- template
- INLINE void CondRelBranch(bool cond, uint32 disp);
-
-
- template
- INLINE void UCDelayBranch(uint32 target);
-
- template
- INLINE void UCRelDelayBranch(uint32 disp);
+ INLINE T OnChipRegRead_INLINE(uint32 A);
+ template
+ INLINE T MemReadRT(uint32 A);
+ template
+ INLINE void MemWriteRT(uint32 A, T V);
//
//
//
@@ -544,6 +595,9 @@
GSREG_TCR,
GSREG_TOCR,
GSREG_RWT,
+
+ GSREG_CCR,
+ GSREG_SBYCR
};
uint32 GetRegister(const unsigned id, char* const special, const uint32 special_len);
@@ -552,9 +606,24 @@
void CheckRWBreakpoints(void (*MRead)(unsigned len, uint32 addr), void (*MWrite)(unsigned len, uint32 addr)) const;
static void Disassemble(const uint16 instr, const uint32 PC, char* buffer, uint16 (*DisPeek16)(uint32), uint32 (*DisPeek32)(uint32));
private:
- const char* const cpu_name;
bool CBH_Setting;
+ bool EIC_Setting;
+ bool DM_Setting;
uint32 PC_IF, PC_ID; // Debug-related variables.
-};
+#ifdef MDFN_ENABLE_DEV_BUILD
+ void CheckDMARace(uint32 addr, uint32 size, bool write);
+ struct
+ {
+ uint32 rw[2][2];
+ } DMADebug[2];
+#endif
+ const char* const cpu_name;
+ const void*const* ResumeTableP[2];
+
+ template
+ void DevBuild_ReadLog(uint32 A);
+ template
+ void DevBuild_WriteLog(uint32 A, T V);
+};
#endif
diff -Nru mednafen-1.24.3+dfsg/include/mednafen/ss/sh7095.inc mednafen-1.26.1+dfsg/include/mednafen/ss/sh7095.inc
--- mednafen-1.24.3+dfsg/include/mednafen/ss/sh7095.inc 2020-05-04 05:35:56.000000000 +0000
+++ mednafen-1.26.1+dfsg/include/mednafen/ss/sh7095.inc 2020-11-10 06:04:17.000000000 +0000
@@ -2,7 +2,7 @@
/* Mednafen Sega Saturn Emulation Module */
/******************************************************************************/
/* sh7095.inc - Hitachi SH7095 Emulation
-** Copyright (C) 2015-2019 Mednafen Team
+** Copyright (C) 2015-2020 Mednafen Team
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License
@@ -20,14 +20,6 @@
*/
/*
- Instruction cache emulation shouldn't be enabled globally for all games until we resolve timestamp vs mem_timestamp issues
- in regards to bus contention and time sharing, or else emulated dual-CPU programs may run slower
- than they should and probably glitch out(and also until 5GHz desktop CPUs are the norm ;)).
-
- Also...the emulated overhead is a little too high when executing a branch with no delay slot from non-cacheable memory.
-*/
-
-/*
Emulation implementation notes/deficiencies:
Cache multiple-way tag collisions (ostensibly an illegal condition) during reads/writes are not handled accurately.
@@ -61,26 +53,20 @@
This cooouuuld turn out to be a problem, and if it does, it can be fixed by having two interrupt-pending variables,
with one being copied to the other in DoIDIF().
- Instruction fetches don't go through the cache emulation, for performance reasons(getting the instruction fetches timed right
- versus the instruction data read/write would be critical, to avoid causing inaccurate cache miss patterns which could cause code
- to run slower than on the real thing, which is arguably worse than having it run faster).
+ Emulation of SH-2 master/slave bus sharing is very approximate. On a real SH-2, internal bus cycles may affect
+ bus grant timing, need to run tests(though emulating that behavior would probably be unrealistic performance-wise).
- SCI, UBC, and BSC are mostly unemulated.
-*/
+ The SCU C-bus DMA ExtHalt kludge doesn't work totally as intended when full cache emulation is enabled(and the
+ interruptible/resumable slave CPU code is used), but it proooobably won't be a problem in practice because on
+ a real Saturn, after the write that triggers the SCU DMA, a few CPU bus accesses can get in before the SCU hogs the bus.
-// Address error exception order, sleep versus exceptions.
-
-/*
- TODO: PC-relative addressing, uses instruction or data fetches?
+ SCI, UBC, and BSC are mostly unemulated.
*/
-/*
- TODO: Make sure RecalcPendingIntPEX() is called in all places it needs to be called(which is arguably too many...).
-*/
+/* TODO:
+ Check address error exception order, sleep versus exceptions.
-/*
- TODO: Penalize slave CPU external bus access if we ever figure out a solution to the timestamp vs mem_timestamp problem that doesn't murder
- performance.
+ Make sure RecalcPendingIntPEX() is called in all places it needs to be called(which is arguably too many...).
*/
#ifdef MSB_FIRST
@@ -89,60 +75,197 @@
#define NE32ASU8_IDX_ADJ(T, idx) ( ((idx) & ~(sizeof(T) - 1)) ^ (4 - (sizeof(T))) )
#endif
-SH7095::SH7095(const char* const name_arg, const unsigned event_id_dma_arg, uint8 (*exivecfn_arg)(void)) : event_id_dma(event_id_dma_arg), ExIVecFetch(exivecfn_arg), cpu_name(name_arg)
+SH7095::SH7095(const char* const name_arg, const unsigned event_id_dma_arg, uint8 (*exivecfn_arg)(void)) : event_id_dma(event_id_dma_arg), ExIVecFetch(exivecfn_arg), CBH_Setting(false), EIC_Setting(false), DM_Setting(false), cpu_name(name_arg)
{
- Init(false);
+ if(this == &CPU[1])
+ {
+ for(unsigned dm = 0; dm < 2; dm++)
+ {
+ //
+ // Very fragile, be careful.
+ //
+ ResumePoint = nullptr;
+ ResumeTableP[dm] = nullptr;
+ timestamp = -1;
+ FRT_WDT_NextTS = 0x7FFFFFFF;
+ Pipe_ID = 0xFEU << 24;
+ //
+ if(dm)
+ RunSlaveUntil_Debug(0);
+ else
+ RunSlaveUntil(0);
+ //
+ assert(ResumePoint == nullptr);
+ assert(ResumeTableP[dm] != nullptr);
+ assert(timestamp == -1);
+ assert(FRT_WDT_NextTS == 0x7FFFFFFF);
+ assert(Pipe_ID == (0xFEU << 24));
+ }
+ }
+ //
+ //
+ Init(false, false);
}
-template
-static NO_INLINE MDFN_FASTCALL T C_MemReadRT(uint32 A);
+template
+static NO_INLINE MDFN_FASTCALL T C_MemReadRT(uint32 A) MDFN_HOT;
-template
-static NO_INLINE MDFN_FASTCALL void C_MemWriteRT(uint32 A, T V);
+template
+static NO_INLINE MDFN_FASTCALL void C_MemWriteRT(uint32 A, T V) MDFN_HOT;
-void SH7095::Init(const bool cbh)
+// WARNING: Template arguments CacheEnabled and CacheBypassHack are only valid for region==0.
+void SH7095::RecalcMRWFP_0(void)
{
- CBH_Setting = cbh;
- //
- #define MAHL_P(w, region) { \
- MRFP8[region] = C_MemReadRT; \
- MRFP16[region] = C_MemReadRT; \
- MRFP32[region] = C_MemReadRT; \
- MRFPI[region] = C_MemReadRT; \
- MWFP8[region] = C_MemWriteRT; \
- MWFP16[region] = C_MemWriteRT; \
- MWFP32[region] = C_MemWriteRT; \
+ #define MAHL_(bs,w,nsc,cbh) \
+ if(CCR & CCR_CE) \
+ { \
+ if(bs == 16) { MRFP16_I[0] = C_MemReadRT; } \
+ if(bs == 32) { MRFP32_I[0] = C_MemReadRT; } \
+ MRFP##bs[0] = C_MemReadRT ; \
+ MRFPI[0] = C_MemReadRT ; \
+ MWFP##bs[0] = C_MemWriteRT; \
+ } \
+ else \
+ { \
+ if(bs == 16) { MRFP16_I[0] = C_MemReadRT; }\
+ if(bs == 32) { MRFP32_I[0] = C_MemReadRT; }\
+ MRFP##bs[0] = C_MemReadRT ; \
+ MRFPI[0] = C_MemReadRT ; \
+ MWFP##bs[0] = C_MemWriteRT; \
+ }
+
+ #define MAHL(w, nsc, cbh) \
+ { \
+ MAHL_( 8, w, nsc, cbh) \
+ MAHL_(16, w, nsc, cbh) \
+ MAHL_(32, w, nsc, cbh) \
+ }
+
+ if(this == &CPU[0])
+ {
+ if(EIC_Setting)
+ {
+ if(DM_Setting)
+ MAHL(0, -1, false)
+ else
+ MAHL(0, true, false)
+ }
+ else if(CBH_Setting)
+ {
+ MAHL(0, false, true)
+ }
+ else
+ {
+ MAHL(0, false, false)
+ }
+ }
+ else
+ {
+ if(!EIC_Setting && CBH_Setting)
+ {
+ MAHL(1, false, true)
+ }
+ else
+ {
+ MAHL(1, false, false)
+ }
+ }
+ #undef MAHL_
+ #undef MAHL
+}
+
+void SH7095::RecalcMRWFP_1_7(void)
+{
+ #define MAHL_P(w, nsc, region) { \
+ MRFP8[region] = C_MemReadRT; \
+ MRFP16[region] = C_MemReadRT; \
+ MRFP32[region] = C_MemReadRT; \
+ MRFP16_I[region] = C_MemReadRT; \
+ MRFP32_I[region] = C_MemReadRT; \
+ MRFPI[region] = C_MemReadRT; \
+ MWFP8[region] = C_MemWriteRT; \
+ MWFP16[region] = C_MemWriteRT; \
+ MWFP32[region] = C_MemWriteRT; \
}
- #define MAHL(region) \
- if(this == &CPU[0]) \
- { MAHL_P(0, region) } \
- else \
- { MAHL_P(1, region) }
-
- MAHL(1)
- MAHL(2)
- MAHL(3)
- MAHL(4)
- MAHL(5)
- MAHL(6)
- MAHL(7)
+ #define MAHL(nsc, region) \
+ if(this == &CPU[0]) \
+ { MAHL_P(0, nsc, region) } \
+ else \
+ { MAHL_P(1, false, region) }
+
+ if(EIC_Setting)
+ {
+ if(DM_Setting)
+ {
+ MAHL(-1, 1)
+ }
+ else
+ {
+ MAHL(true, 1)
+ }
+ MAHL(false, 2)
+ MAHL(false, 3)
+ MAHL(false, 4)
+ MAHL(false, 5)
+ MAHL(false, 6)
+ MAHL(false, 7)
+ }
+ else
+ {
+ MAHL(false, 1)
+ MAHL(false, 2)
+ MAHL(false, 3)
+ MAHL(false, 4)
+ MAHL(false, 5)
+ MAHL(false, 6)
+ MAHL(false, 7)
+ }
#undef MAHL
#undef MAHL_P
+}
+
+void SH7095::SetDebugMode(bool DebugMode)
+{
+ if(DM_Setting != DebugMode)
+ {
+ if(ResumePoint != nullptr)
+ {
+ bool found = false;
+
+ for(unsigned i = 0; i < 512; i++)
+ {
+ if(ResumeTableP[DM_Setting][i] == ResumePoint)
+ {
+ ResumePoint = ResumeTableP[DebugMode][i];
+ found = true;
+ break;
+ }
+ }
+ assert(found);
+ }
+ DM_Setting = DebugMode;
+ //
+ RecalcMRWFP_0();
+ RecalcMRWFP_1_7();
+ }
+}
+
+void SH7095::Init(const bool EmulateICache, const bool CacheBypassHack)
+{
+ CBH_Setting = CacheBypassHack;
+ EIC_Setting = EmulateICache;
+ RecalcMRWFP_0();
+ RecalcMRWFP_1_7();
//
//
//
-
//
// Initialize variables that won't be initialized elsewhere since they reflect the overall emulator timing state, or are cache variables
// for signal inputs.
//
timestamp = 0;
- write_finish_timestamp = 0;
- divide_finish_timestamp = 0;
- FRT.lastts = 0;
- dma_lastts = 0;
FRT.FTI = false;
FRT.FTCI = false;
@@ -152,6 +275,8 @@
ExtHalt = false;
ExtHaltDMA = false;
+ ResumePoint = nullptr;
+
TruePowerOn();
}
@@ -160,55 +285,6 @@
}
-void SH7095::AdjustTS(int32 delta, bool force_set)
-{
- if(force_set)
- {
- timestamp = delta;
-
- MA_until = delta;
- MM_until = delta;
-
- for(unsigned i = 0; i < 16; i++)
- WB_until[i] = delta;
-
- write_finish_timestamp = delta;
- divide_finish_timestamp = delta;
-
- FRT.lastts = delta;
- dma_lastts = delta;
- }
- else
- {
- if(!(timestamp & 0x40000000))
- timestamp += delta;
-
- if(!(MA_until & 0x40000000))
- MA_until += delta;
-
- if(!(MM_until & 0x40000000))
- MM_until += delta;
-
- for(unsigned i = 0; i < 16; i++)
- {
- if(!(WB_until[i] & 0x40000000))
- WB_until[i] += delta;
- }
-
- if(!(write_finish_timestamp & 0x40000000))
- write_finish_timestamp += delta;
-
- if(!(divide_finish_timestamp & 0x40000000))
- divide_finish_timestamp += delta;
-
- FRT.lastts += delta;
- dma_lastts += delta;
- }
-
- FRT_WDT_ClockDivider &= 0x00FFFFFF;
- FRT_WDT_Recalc_NET();
-}
-
//
// Initialize everything for determinism, especially state left "undefined" by reset/power exception handling.
//
@@ -218,7 +294,13 @@
R[i] = 0;
for(unsigned i = 0; i < 16; i++)
- WB_until[i] = 0;
+ WB_until[i] = timestamp;
+
+ UCRead_IF_Kludge = 0;
+
+ MA_until = timestamp;
+ MM_until = timestamp;
+ write_finish_timestamp = timestamp;
PC = 0;
@@ -238,10 +320,39 @@
PC_IF = PC_ID = 0;
memset(Cache, 0, sizeof(Cache));
+ memset(Cache_LRU, 0, sizeof(Cache_LRU));
+ CCRC_Replace_OR[0] = 0;
+ CCRC_Replace_OR[1] = 0;
+ CCRC_Replace_AND = 0;
CCR = 0;
-
- MA_until = 0;
- MM_until = 0;
+ //
+ //
+ //
+ ResumePoint = nullptr;
+ Resume_cent = nullptr;
+ Resume_instr = 0;
+ Resume_way_match = 0;
+ Resume_uint8_A = 0;
+ Resume_uint16_A = 0;
+ Resume_uint32_A = 0;
+ Resume_unmasked_A = 0;
+ Resume_uint32_V = 0;
+ Resume_uint16_V = 0;
+ Resume_uint8_V = 0;
+
+ Resume_MAC_L_m0 = 0;
+ Resume_MAC_L_m1 = 0;
+
+ Resume_MAC_W_m0 = 0;
+ Resume_MAC_W_m1 = 0;
+
+ Resume_ea = 0;
+ Resume_new_PC = 0;
+ Resume_new_SR = 0;
+
+ Resume_ipr = 0;
+ Resume_exnum = 0;
+ Resume_vecnum = 0;
//
//
//
@@ -253,10 +364,39 @@
VCRC = 0;
VCRD = 0;
ICR = 0;
+ //
+ //
+ //
+ BSC.BCR1 &= 0x8000;
+ BSC.BCR2 = 0;
+ BSC.WCR = 0;
+ BSC.MCR = 0;
+
+ BSC.RTCSR = 0;
+ BSC.RTCSRM = 0;
+ BSC.RTCNT = 0;
+ BSC.RTCOR = 0;
+ BSC.sdram_finish_time = timestamp;
+ BSC.last_mem_time = timestamp;
+ BSC.last_mem_addr = 0;
+ BSC.last_mem_type = 0;
+ //
+ //
+ //
+ ResumePoint = nullptr;
+ //
+ //
+ //
+ SBYCR = 0;
+ Standby = false;
//
//
//
+ FRT.lastts = timestamp;
+
+ // Don't change FRT.FTI and FRT.FTCI here.
+
FRT.FRC = 0;
FRT.OCR[0] = FRT.OCR[1] = 0;
FRT.FICR = 0;
@@ -279,8 +419,8 @@
//
//
//
- DMA_ClockCounter = 0;
- DMA_SGCounter = 0;
+ DMA_Timestamp = timestamp;
+ DMA_SGEndTimestamp = timestamp;
DMA_RoundRobinRockinBoppin = 0;
DMA_PenaltyKludgeAmount = 0;
DMA_PenaltyKludgeAccum = 0;
@@ -291,6 +431,7 @@
//
//
//
+ divide_finish_timestamp = timestamp;
DVSR = 0;
DVDNT = 0;
DVDNTH = 0;
@@ -302,10 +443,68 @@
//
//
//
+ SCI.SMR = 0;
+ SCI.BRR = 0;
+ SCI.SCR = 0;
+ SCI.TDR = 0;
+ SCI.SSR = 0;
+ SCI.SSRM = 0;
+ SCI.RDR = 0;
+ SCI.RSR = 0;
+ SCI.TSR = 0;
+}
+
+void SH7095::SetActive(bool active)
+{
+ if(active && timestamp == SS_EVENT_DISABLED_TS)
+ {
+ timestamp = SH7095_mem_timestamp;
+ FRT.lastts = timestamp;
+
+ DMA_Timestamp = SH7095_mem_timestamp;
+ DMA_SGEndTimestamp = SH7095_mem_timestamp;
+
+ SS_SetEventNT(&events[event_id_dma], SH7095_mem_timestamp + 1);
+ //
+ Reset(true);
+ }
+ else if(!active && timestamp != SS_EVENT_DISABLED_TS)
+ {
+ Reset(true);
+ //
+ timestamp = SS_EVENT_DISABLED_TS;
+ SS_SetEventNT(&events[event_id_dma], SS_EVENT_DISABLED_TS);
+ }
}
+void SH7095::AdjustTS(int32 delta)
+{
+ if(MDFN_UNLIKELY(timestamp == SS_EVENT_DISABLED_TS))
+ return;
+
+ timestamp += delta;
+ FRT.lastts += delta;
+#define ATSD(v) v = std::max(-1000000, v + (delta))
+ ATSD(DMA_Timestamp);
+ ATSD(DMA_SGEndTimestamp);
+ ATSD(MA_until);
+ ATSD(MM_until);
+
+ for(unsigned i = 0; i < 16; i++)
+ ATSD(WB_until[i]);
+
+ ATSD(write_finish_timestamp);
+ ATSD(divide_finish_timestamp);
+
+ ATSD(BSC.sdram_finish_time);
+ ATSD(BSC.last_mem_time);
+#undef ATSD
+
+ FRT_WDT_ClockDivider &= 0x00FFFFFF;
+ FRT_WDT_Recalc_NET();
+}
// de=1, dme=1, te=0, nmif=0, ae=0
@@ -360,8 +559,8 @@
{
uint8 buffer;
- buffer = SH7095_BusRead(sar & 0x07FFFFFF, false, &DMA_ClockCounter);
- SH7095_BusWrite(dar & 0x07FFFFFF, buffer, false, &DMA_ClockCounter);
+ buffer = BSC_BusRead(sar & 0x07FFFFFF, false, &DMA_Timestamp);
+ BSC_BusWrite(dar & 0x07FFFFFF, buffer, false, &DMA_Timestamp);
sar += ainc[0][sm];
dar += ainc[0][dm];
@@ -373,8 +572,8 @@
{
uint16 buffer;
- buffer = SH7095_BusRead(sar & 0x07FFFFFE, false, &DMA_ClockCounter);
- SH7095_BusWrite(dar & 0x07FFFFFE, buffer, false, &DMA_ClockCounter);
+ buffer = BSC_BusRead(sar & 0x07FFFFFE, false, &DMA_Timestamp);
+ BSC_BusWrite(dar & 0x07FFFFFE, buffer, false, &DMA_Timestamp);
if(MDFN_UNLIKELY((sar | dar) & 0x1))
{
@@ -394,8 +593,8 @@
{
uint32 buffer;
- buffer = SH7095_BusRead(sar & 0x07FFFFFC, false, &DMA_ClockCounter);
- SH7095_BusWrite(dar & 0x07FFFFFC, buffer, false, &DMA_ClockCounter);
+ buffer = BSC_BusRead(sar & 0x07FFFFFC, false, &DMA_Timestamp);
+ BSC_BusWrite(dar & 0x07FFFFFC, buffer, false, &DMA_Timestamp);
if(MDFN_UNLIKELY((sar | dar) & 0x3))
{
@@ -425,14 +624,14 @@
for(unsigned i = 0; i < 4; i++)
{
- buffer[i] = SH7095_BusRead((sar + (i << 2)) & 0x07FFFFFC, (bool)i, &DMA_ClockCounter);
+ buffer[i] = BSC_BusRead((sar + (i << 2)) & 0x07FFFFFC, (bool)i, &DMA_Timestamp);
}
sar += 0x10;
for(unsigned i = 0; i < 4; i++)
{
- SH7095_BusWrite(dar & 0x07FFFFFC, buffer[i], false, &DMA_ClockCounter);
+ BSC_BusWrite(dar & 0x07FFFFFC, buffer[i], false, &DMA_Timestamp);
dar += ainc[2][dm];
tcr = (tcr - 1) & 0xFFFFFF;
if(MDFN_UNLIKELY(!tcr))
@@ -458,38 +657,33 @@
sscpu_timestamp_t SH7095::DMA_Update(sscpu_timestamp_t et)
{
- if(MDFN_UNLIKELY(et < dma_lastts))
+#ifdef MDFN_ENABLE_DEV_BUILD
+ assert(timestamp != SS_EVENT_DISABLED_TS);
+#endif
+
+ if(MDFN_UNLIKELY(et < DMA_Timestamp))
{
- // et < dma_lastts may happen...look into it.
- if(et < dma_lastts)
- SS_DBG(SS_DBG_WARNING | SS_DBG_SH2, "[%s] DMA_Update called with et(%u) < dma_lastts(%u).\n", cpu_name, et, dma_lastts);
+ // may happen...look into it.
+ // SS_DBG(SS_DBG_WARNING | SS_DBG_SH2, "[%s] DMA_Update called with et(%d) < DMA_Timestamp(%d).\n", cpu_name, et, DMA_Timestamp);
+ return DMA_Timestamp + 32;
}
else if(MDFN_UNLIKELY(ExtHaltDMA))
{
//printf("%s ExtHaltDMA 0x%02x!\n", cpu_name, ExtHaltDMA);
- dma_lastts = et;
- return dma_lastts + 128;
+ DMA_Timestamp = et;
+ return DMA_Timestamp + 128;
}
else
{
- uint32 clocks = et - dma_lastts;
- dma_lastts = et;
-
- //
- //
- //
bool rr = DMA_RoundRobinRockinBoppin;
- DMA_ClockCounter += clocks;
- DMA_SGCounter += clocks;
-
if(DMAOR & 0x08) // Round robin
{
while(DMA_RunCond(0) || DMA_RunCond(1))
{
if(DMA_RunCond(rr))
{
- if(DMA_ClockCounter <= 0)
+ if(DMA_Timestamp >= et)
goto TimeOver;
DMA_DoTransfer(rr);
@@ -501,7 +695,7 @@
{
while(DMA_RunCond(0))
{
- if(DMA_ClockCounter <= 0)
+ if(DMA_Timestamp >= et)
goto TimeOver;
DMA_DoTransfer(0);
@@ -509,7 +703,7 @@
while(DMA_RunCond(1))
{
- if(DMA_ClockCounter <= 0)
+ if(DMA_Timestamp >= et)
goto TimeOver;
DMA_DoTransfer(1);
@@ -521,26 +715,69 @@
TimeOver:;
DMA_RoundRobinRockinBoppin = rr;
- DMA_ClockCounter = std::min(DMA_ClockCounter, 128);
- DMA_SGCounter = std::min(DMA_SGCounter, 0);
+ DMA_Timestamp = std::max(DMA_Timestamp, et - 128);
DMA_CheckEnterBurstHack();
RecalcPendingIntPEX(); // TODO: conditionalize(or make RecalcPendingIntPEX() less expensive).
}
- return dma_lastts + ((DMA_SGCounter < 0) ? 32 : 128);
+ return et + ((et < DMA_SGEndTimestamp) ? 32 : 128);
}
+
+#ifdef MDFN_ENABLE_DEV_BUILD
+void SH7095::CheckDMARace(uint32 addr, uint32 size, bool write)
+{
+ for(unsigned cpu = 0; cpu < 2; cpu++)
+ {
+ for(unsigned ch = 0; ch < 2; ch++)
+ {
+ auto& dd = CPU[cpu].DMADebug[ch];
+
+ if(dd.rw[0][0] == ~0U)
+ continue;
+
+ for(uint32 A = addr; A != ((addr + size) & 0x07FFFFFF); A = (A + 1) & 0x07FFFFFF)
+ {
+ bool match = false;
+
+ if(dd.rw[1][1] < dd.rw[1][0])
+ match |= (A >= dd.rw[1][0] || A < dd.rw[1][1]);
+ else
+ match |= (A >= dd.rw[1][0] && A < dd.rw[1][1]);
+
+ if(write)
+ {
+ if(dd.rw[0][1] < dd.rw[0][0])
+ match |= (A >= dd.rw[0][0] || A < dd.rw[0][1]);
+ else
+ match |= (A >= dd.rw[0][0] && A < dd.rw[0][1]);
+ }
+
+ if(match)
+ {
+ SS_DBG(SS_DBG_SH2_DMARACE, "[%s] %u-byte %s 0x%07x races with %s DMA%u; SAR=0x%08x DAR=0x%08x, [0x%07x,0x%07x]->[0x%07x,0x%07x]\n", cpu_name, size, write ? "write to" : "read from", addr, CPU[cpu].cpu_name, ch, CPU[cpu].DMACH[ch].SAR, CPU[cpu].DMACH[ch].DAR, dd.rw[0][0], dd.rw[0][1] - 1, dd.rw[1][0], dd.rw[1][1] - 1);
+ break;
+ }
+ }
+ }
+ }
+}
+#endif
+
// DMA_StartSG() must be paired with a DMA_Update(SH7095_mem_timestamp) somewhere before.
void SH7095::DMA_StartSG(void)
{
- DMA_SGCounter = DMA_ClockCounter - 128;
- SS_SetEventNT(&events[event_id_dma], SH7095_mem_timestamp + 32); // fixed + 32, don't evaluate DMA_SGCounter here.
+ DMA_SGEndTimestamp = DMA_Timestamp + 192;
+ SS_SetEventNT(&events[event_id_dma], SH7095_mem_timestamp + 32); // fixed + 32
DMA_CheckEnterBurstHack();
}
// Must be called after DMACH[0].CHCR or DMACH[1].CHCR or DMAOR changes.
+//
+// If DMA_RunCond(...) returns false, SAR and DAR and TCR for that channel
+// should not be used(due to caching of variables in DMA_DoTransfer()).
NO_INLINE void SH7095::DMA_RecalcRunning(void)
{
DMA_PenaltyKludgeAmount = 0;
@@ -549,7 +786,7 @@
{
if(DMA_RunCond(ch))
{
- const int32 npka = (((DMACH[ch].CHCR >> 10) & 3) == 3 && (DMACH[ch].SAR & DMACH[ch].DAR & 0x06000000) != 0x06000000) ? 23 : 18;
+ const int32 npka = (((DMACH[ch].CHCR >> 10) & 3) == 3 && (DMACH[ch].SAR & DMACH[ch].DAR & 0x06000000) != 0x06000000) ? 23 : 19;
DMA_PenaltyKludgeAmount = std::max(DMA_PenaltyKludgeAmount, npka);
}
@@ -562,16 +799,63 @@
//
//
//
- if(ss_dbg_mask & (SS_DBG_WARNING | SS_DBG_SH2))
+#ifdef MDFN_ENABLE_DEV_BUILD
+ for(unsigned ch = 0; ch < 2; ch++)
{
- for(unsigned ch = 0; ch < 2; ch++)
+ const bool run_cond = DMA_RunCond(ch);
+ const unsigned ts = (DMACH[ch].CHCR >> 10) & 3;
+ const unsigned sm = (DMACH[ch].CHCR >> 12) & 3;
+ const unsigned dm = (DMACH[ch].CHCR >> 14) & 3;
+ const uint32 sar = DMACH[ch].SAR;
+ const uint32 dar = DMACH[ch].DAR;
+ const uint32 count = DMACH[ch].TCR ? DMACH[ch].TCR : 0x1000000;
+
+ if(run_cond && DMADebug[ch].rw[0][0] == ~0U)
{
- if(DMA_RunCond(ch) && ((DMACH[ch].CHCR >> 10) & 3) == 3 && ((DMACH[ch].SAR | DMACH[ch].DAR) & 0xF))
+ auto& dd = DMADebug[ch];
+
+ if(ts == 3)
+ {
+ dd.rw[0][0] = sar & 0x07FFFFFF;
+ dd.rw[0][1] = (dd.rw[0][0] + (count << 2)) & 0x07FFFFFF;
+ }
+ else
+ {
+ if(sm & 2)
+ {
+ dd.rw[0][1] = (sar + (1 << ts)) & 0x07FFFFFF;
+ dd.rw[0][0] = (dd.rw[0][1] - (count << ts)) & 0x07FFFFFF;
+ }
+ else
+ {
+ dd.rw[0][0] = sar & 0x07FFFFFF;
+ dd.rw[0][1] = (dd.rw[0][0] + ((sm ? count : 1) << ts)) & 0x07FFFFFF;
+ }
+ }
+ //
+ const unsigned ts_adj = std::min(2, ts);
+
+ if(dm & 2)
+ {
+ dd.rw[1][1] = (dar + (1 << ts_adj)) & 0x07FFFFFF;
+ dd.rw[1][0] = (dd.rw[1][1] - (count << ts_adj)) & 0x07FFFFFF;
+ }
+ else
{
- SS_DBG(SS_DBG_WARNING | SS_DBG_SH2, "[%s] DMA channel %u, 16-byte transfer size address misalignment, SAR=0x%08x DAR=0x%08x", cpu_name, ch, DMACH[ch].SAR, DMACH[ch].DAR);
+ dd.rw[1][0] = dar & 0x07FFFFFF;
+ dd.rw[1][1] = (dd.rw[1][0] + ((dm ? count : 1) << ts_adj)) & 0x07FFFFFF;
}
+ //printf("%u, read:[0x%07x, 0x%07x) write:[0x%07x, 0x%07x)\n", ch, dd.rw[0][0], dd.rw[0][1], dd.rw[1][0], dd.rw[1][1]);
+ }
+ else if(!run_cond)
+ DMADebug[ch].rw[0][0] = ~0U;
+
+ if(run_cond && ts == 0x3 && ((sar | dar) & 0xF))
+ {
+ SS_DBG(SS_DBG_WARNING | SS_DBG_SH2, "[%s] DMA channel %u, 16-byte transfer size address misalignment, SAR=0x%08x DAR=0x%08x", cpu_name, ch, sar, dar);
}
}
+#endif
}
INLINE void SH7095::DMA_BusTimingKludge(void)
@@ -758,6 +1042,12 @@
void SH7095::SetFTI(bool state)
{
+ if(MDFN_UNLIKELY(timestamp == SS_EVENT_DISABLED_TS))
+ {
+ FRT.FTI = state;
+ return;
+ }
+
FRT_WDT_Update();
//
//
@@ -963,9 +1253,9 @@
// Misaligned/wrong-sized accesses aren't handled correctly, it's a mess, but probably doesn't matter.
//
template
-NO_INLINE void SH7095::OnChipRegWrite(uint32 A, uint32 V)
+NO_INLINE MDFN_HOT void SH7095::OnChipRegWrite(uint32 A, uint32 V)
{
- //SS_DBG(SS_DBG_SH2_REGW, "[%s] %zu-byte write to on-chip register area; address=0x%08x value=0x%08x\n", cpu_name, sizeof(T), A, V);
+ SS_DBGTI(SS_DBG_SH2_REGW, "[%s] %zu-byte write to on-chip register area; address=0x%08x value=0x%08x, PC=0x%08x\n", cpu_name, sizeof(T), A, V, PC);
if(A & 0x100)
{
@@ -1405,14 +1695,9 @@
}
break;
- case 0x92: case 0x93: case 0x94: case 0x95:
- case 0x96: case 0x97: case 0x98: case 0x99:
- case 0x9A: case 0x9B: case 0x9C: case 0x9D:
- case 0x9E:
+ case 0x92: // No 0x93...0x9F mirrors for writes.
SetCCR(V);
break;
-
-
//
//
//
@@ -1467,7 +1752,7 @@
}
template
-INLINE T SH7095::OnChipRegRead(uint32 A)
+INLINE T SH7095::OnChipRegRead_INLINE(uint32 A)
{
if(A & 0x100)
{
@@ -1804,10 +2089,10 @@
ret = SBYCR;
break;
- case 0x92: case 0x93: case 0x94: case 0x95:
- case 0x96: case 0x97: case 0x98: case 0x99:
- case 0x9A: case 0x9B: case 0x9C: case 0x9D:
- case 0x9E:
+ case 0x92 ... 0x9F:
+ //
+ // TODO: Emulate jankiness of 16-bit reads from mirror addresses.
+ //
ret = CCR | (CCR << 8);
break;
//
@@ -1869,47 +2154,284 @@
}
}
-template
-INLINE T SH7095::ExtBusRead(uint32 A)
+template
+void INLINE SH7095::BSC_BusWrite(uint32 A, T V, const bool BurstHax, int32* SH2DMAHax)
{
- T ret;
-
- A &= (1U << 27) - 1;
-
- if(timestamp > SH7095_mem_timestamp)
- SH7095_mem_timestamp = timestamp;
+ uint32 DB = SH7095_DB;
- //
if(!BurstHax)
+ SH7095_mem_timestamp += (SH7095_mem_timestamp == BSC.last_mem_time) & BSC.last_mem_type;
+
+ if(A < 0x02000000) // CS0, configured as 16-bit
{
- DMA_PenaltyKludgeAccum += DMA_PenaltyKludgeAmount;
- }
- //
+ if(sizeof(T) == 4)
+ {
+ // TODO/FIXME: Don't allow DMA transfers to occur between the two 16-bit accesses.
+ //if(!SH2DMAHax)
+ // SH7095_BusLock++;
- ret = SH7095_BusRead(A, BurstHax, NULL);
+ DB = (DB & 0xFFFF0000) | (V >> 16);
+ BusRW_DB_CS0(A, DB, BurstHax, SH2DMAHax);
- return ret;
-}
+ DB = (DB & 0xFFFF0000) | (uint16)V;
+ BusRW_DB_CS0(A | 2, DB, BurstHax, SH2DMAHax);
-template
-INLINE void SH7095::ExtBusWrite(uint32 A, T V)
-{
- A &= (1U << 27) - 1;
+ //if(!SH2DMAHax)
+ // SH7095_BusLock--;
+ }
+ else
+ {
+ const uint32 shift = ((A & 1) ^ (2 - sizeof(T))) << 3;
+ const uint32 mask = (0xFFFF >> ((2 - sizeof(T)) * 8)) << shift;
- if(timestamp > SH7095_mem_timestamp)
- SH7095_mem_timestamp = timestamp;
+ DB = (DB & ~mask) | (V << shift);
+ BusRW_DB_CS0(A, DB, BurstHax, SH2DMAHax);
+ }
+ }
+ else if(A >= 0x06000000) // CS3; 32-bit
+ {
+ const uint32 shift = ((A & 3) ^ (4 - sizeof(T))) << 3;
+ const uint32 mask = (0xFFFFFFFF >> ((4 - sizeof(T)) * 8)) << shift;
- //
+ DB = (DB & ~mask) | (V << shift);
+ BusRW_DB_CS3(A, DB, BurstHax, SH2DMAHax);
+
+ if(!BurstHax)
+ {
+ if(!SH2DMAHax)
+ {
+ if(SH7095_mem_timestamp < BSC.sdram_finish_time)
+ SH7095_mem_timestamp = BSC.sdram_finish_time;
+
+ SH7095_mem_timestamp += 2;
+ BSC.sdram_finish_time = SH7095_mem_timestamp + 2;
+ }
+ else
+ *SH2DMAHax += 3;
+ }
+ }
+ else // CS1, CS2; 32-bit
{
- DMA_PenaltyKludgeAccum += DMA_PenaltyKludgeAmount;
+ const uint32 shift = ((A & 3) ^ (4 - sizeof(T))) << 3;
+ const uint32 mask = (0xFFFFFFFF >> ((4 - sizeof(T)) * 8)) << shift;
+
+ DB = (DB & ~mask) | (V << shift);
+ BusRW_DB_CS12(A, DB, BurstHax, SH2DMAHax);
}
- //
- SH7095_BusWrite(A, V, false, NULL);
+ SH7095_DB = DB;
- write_finish_timestamp = SH7095_mem_timestamp;
+ if(!BurstHax)
+ {
+ BSC.last_mem_addr = A;
+ BSC.last_mem_type = 0;
+ BSC.last_mem_time = SH7095_mem_timestamp;
+ }
}
+template
+T INLINE SH7095::BSC_BusRead(uint32 A, const bool BurstHax, int32* SH2DMAHax)
+{
+ //
+ //
+ //
+ uint32 DB = SH7095_DB;
+ T ret;
+
+ if(!BurstHax)
+ SH7095_mem_timestamp += (SH7095_mem_timestamp == BSC.last_mem_time) & (bool)((BSC.last_mem_addr ^ A) & 0x06000000);
+
+ if(A < 0x02000000) // CS0, configured as 16-bit
+ {
+ if(sizeof(T) == 4)
+ {
+ // TODO/FIXME: Don't allow DMA transfers to occur between the two 16-bit accesses.
+ //if(!SH2DMAHax)
+ // SH7095_BusLock++;
+
+ BusRW_DB_CS0(A, DB, BurstHax, SH2DMAHax);
+ ret = DB << 16;
+
+ BusRW_DB_CS0(A | 2, DB, BurstHax, SH2DMAHax);
+ ret |= (uint16)DB;
+
+ //if(!SH2DMAHax)
+ // SH7095_BusLock--;
+ }
+ else
+ {
+ BusRW_DB_CS0(A, DB, BurstHax, SH2DMAHax);
+ ret = DB >> (((A & 1) ^ (2 - sizeof(T))) << 3);
+ }
+ }
+ else if(A >= 0x06000000) // CS3; 32-bit
+ {
+ BusRW_DB_CS3(A, DB, BurstHax, SH2DMAHax);
+ ret = DB >> (((A & 3) ^ (4 - sizeof(T))) << 3);
+
+ // SDRAM leaves data bus in a weird state after read...
+ // DB = 0;
+
+ if(!BurstHax)
+ {
+ if(!SH2DMAHax)
+ {
+ if(SH7095_mem_timestamp < BSC.sdram_finish_time)
+ SH7095_mem_timestamp = BSC.sdram_finish_time;
+
+ SH7095_mem_timestamp += 7;
+ }
+ else
+ *SH2DMAHax += 6;
+ }
+ }
+ else // CS1, CS2; 32-bit
+ {
+ BusRW_DB_CS12(A, DB, BurstHax, SH2DMAHax);
+ ret = DB >> (((A & 3) ^ (4 - sizeof(T))) << 3);
+ }
+
+ SH7095_DB = DB;
+
+ if(!BurstHax)
+ {
+ BSC.last_mem_addr = A;
+ BSC.last_mem_type = 1;
+ BSC.last_mem_time = SH7095_mem_timestamp;
+ }
+
+ return ret;
+}
+
+
+template
+INLINE T SH7095::ExtBusRead_INLINE(uint32 A)
+{
+ T ret;
+
+ A &= (1U << 27) - 1;
+
+ if(timestamp > SH7095_mem_timestamp)
+ SH7095_mem_timestamp = timestamp;
+
+ //
+ if(!BurstHax)
+ {
+ DMA_PenaltyKludgeAccum += DMA_PenaltyKludgeAmount;
+ }
+ //
+#ifdef MDFN_ENABLE_DEV_BUILD
+ CheckDMARace(A, sizeof(T), false);
+#endif
+ if(SlavePenalty && !BurstHax)
+ {
+ if(SH7095_mem_timestamp > (BSC.last_mem_time + 1))
+ SH7095_mem_timestamp += 2;
+ else
+ SH7095_mem_timestamp++;
+ }
+
+ ret = BSC_BusRead(A, BurstHax, NULL);
+
+ if(SlavePenalty && !BurstHax)
+ {
+ SH7095_mem_timestamp++;
+ }
+
+ return ret;
+}
+
+template
+INLINE void SH7095::ExtBusWrite_INLINE(uint32 A, T V)
+{
+ A &= (1U << 27) - 1;
+
+ if(timestamp > SH7095_mem_timestamp)
+ SH7095_mem_timestamp = timestamp;
+
+ //
+ DMA_PenaltyKludgeAccum += DMA_PenaltyKludgeAmount;
+ //
+#ifdef MDFN_ENABLE_DEV_BUILD
+ CheckDMARace(A, sizeof(T), true);
+#endif
+
+ if(SlavePenalty)
+ SH7095_mem_timestamp++;
+
+ BSC_BusWrite(A, V, false, NULL);
+
+ if(SlavePenalty)
+ {
+ if(SH7095_mem_timestamp < BSC.sdram_finish_time)
+ SH7095_mem_timestamp = BSC.sdram_finish_time;
+
+ SH7095_mem_timestamp++;
+ }
+
+ write_finish_timestamp = SH7095_mem_timestamp;
+}
+
+template
+static NO_INLINE MDFN_HOT T ExtBusRead_NI(uint32 A)
+{
+ return CPU[w].ExtBusRead_INLINE(A);
+}
+
+template
+static NO_INLINE MDFN_HOT void ExtBusWrite_NI(uint32 A, T V)
+{
+ CPU[w].ExtBusWrite_INLINE(A, V);
+}
+
+template
+static NO_INLINE MDFN_HOT T OnChipRegRead_NI(uint32 A)
+{
+ return CPU[w].OnChipRegRead_INLINE(A);
+}
+
+template
+INLINE void SH7095::DevBuild_ReadLog(uint32 A)
+{
+#ifdef MDFN_ENABLE_DEV_BUILD
+ if((A & 0xC7FFFFFF) >= 0x06000200 && (A & 0xC7FFFFFF) <= 0x060003FF)
+ {
+ const uint32 pcm = PC & 0x07FFFFFF;
+ bool match = (pcm >= 0x100000) && (pcm < 0x06000600 || pcm >= 0x06000A00);
+
+ if(match && !BWMIgnoreAddr[0][A & 0x1FF])
+ {
+ SS_DBG(SS_DBG_BIOS, "[%s] Read from BIOS area of RAM 0x%08x; PC=0x%08x\n", cpu_name, A, PC);
+ }
+ }
+
+ if((A & 0xC7FFFFFF) >= 0x00000200/*0x00000004*//*0x00000000*/ && (A & 0xC7FFFFFF) <= 0x000FFFFF)
+ {
+ const uint32 pcm = PC & 0x07FFFFFF;
+ bool match = (pcm >= 0x100000) && (pcm < 0x06000600 || pcm >= 0x06000A00);
+
+ if(match)
+ SS_DBG(SS_DBG_BIOS, "[%s] Read from BIOS ROM 0x%06x; PC=0x%08x\n", cpu_name, A, PC);
+ }
+#endif
+}
+
+template
+INLINE void SH7095::DevBuild_WriteLog(uint32 A, T V)
+{
+#ifdef MDFN_ENABLE_DEV_BUILD
+ if((A & 0xC7FFFFFF) >= 0x06000200 && (A & 0xC7FFFFFF) <= 0x060003FF)
+ {
+ const uint32 pcm = PC & 0x07FFFFFF;
+ bool match = (pcm >= 0x100000) && (pcm < 0x06000600 || pcm >= 0x06000800);
+
+ if(match && !BWMIgnoreAddr[1][A & 0x1FF])
+ {
+ SS_DBG(SS_DBG_BIOS, "[%s] Write to BIOS area of RAM 0x%08x; PC=0x%08x\n", cpu_name, A, PC);
+ }
+ }
+#endif
+}
//
//
@@ -1952,399 +2474,380 @@
return var;
}
-INLINE void SH7095::AssocPurge(const uint32 A)
+INLINE void SH7095::Cache_AssocPurge(const uint32 A)
{
const uint32 ATM = A & (0x7FFFF << 10);
auto* cent = &Cache[(A >> 4) & 0x3F];
+ SS_DBG(SS_DBG_SH2_CACHE_NOISY, "[%s] Associative purge; address=0x%08x\n", cpu_name, A);
+
// Ignore two-way-mode bit in CCR here.
- if(ATM == cent->Tag[0]) cent->Tag[0] |= 1U << 31; // Set invalid bit to 1.
- if(ATM == cent->Tag[1]) cent->Tag[1] |= 1U << 31;
- if(ATM == cent->Tag[2]) cent->Tag[2] |= 1U << 31;
- if(ATM == cent->Tag[3]) cent->Tag[3] |= 1U << 31;
+ cent->Tag[0] |= (ATM == cent->Tag[0]); // Set invalid bit to 1.
+ cent->Tag[1] |= (ATM == cent->Tag[1]);
+ cent->Tag[2] |= (ATM == cent->Tag[2]);
+ cent->Tag[3] |= (ATM == cent->Tag[3]);
}
-template
-INLINE T SH7095::MemReadRT(uint32 A)
+INLINE int SH7095::Cache_FindWay(CacheEntry* const cent, const uint32 ATM)
{
- static_assert(region < 0x8, "Wrong region argument.");
- const uint32 unmasked_A = A;
-
- if(!IsInstr)
- {
- if(MDFN_UNLIKELY(A & (sizeof(T) - 1)))
- {
- SS_DBG(SS_DBG_WARNING | SS_DBG_SH2, "[%s] Misaligned %zu-byte read from 0x%08x\n", cpu_name, sizeof(T), A);
- A &= ~(sizeof(T) - 1);
- SetPEX(PEX_CPUADDR);
- }
- }
-
- if(!IsInstr)
- MA_until = std::max(MA_until, timestamp + 1);
- else
- timestamp = std::max(MA_until, timestamp);
+#if defined(HAVE_SSE2_INTRINSICS)
+ __m128i atm = _mm_set1_epi32(ATM);
+ __m128i v1234 = _mm_setr_epi32(1, 2, 3, 4);
+ __m128i tmp;
-#ifdef MDFN_ENABLE_DEV_BUILD
- if((A & 0xC7FFFFFF) >= 0x06000200 && (A & 0xC7FFFFFF) <= 0x060003FF)
- {
- const uint32 pcm = PC & 0x07FFFFFF;
- bool match = (pcm >= 0x100000) && (pcm < 0x06000600 || pcm >= 0x06000A00);
+ tmp = _mm_cmpeq_epi32(_mm_load_si128((__m128i*)cent->Tag), atm);
+ tmp = _mm_and_si128(tmp, v1234);
+ tmp = _mm_max_epi16(tmp, _mm_shuffle_epi32(tmp, (3 << 0) | (2 << 2) | (1 << 4) | (0 << 6)));
+ tmp = _mm_max_epi16(tmp, _mm_shuffle_epi32(tmp, (1 << 0) | (0 << 2)));
- if(match && !BWMIgnoreAddr[0][A & 0x1FF])
- {
- SS_DBG(SS_DBG_BIOS, "[%s] Read from BIOS area of RAM 0x%08x; PC=0x%08x\n", cpu_name, A, PC);
- }
- }
+ return _mm_cvtsi128_si32(tmp) - 1;
+#else
+ int way_match = -1;
- if((A & 0xC7FFFFFF) >= 0x00000200/*0x00000004*//*0x00000000*/ && (A & 0xC7FFFFFF) <= 0x000FFFFF)
- {
- const uint32 pcm = PC & 0x07FFFFFF;
- bool match = (pcm >= 0x100000) && (pcm < 0x06000600 || pcm >= 0x06000A00);
+ way_match = cmov_eq_thing(ATM, cent->Tag[0], way_match, 0);
+ way_match = cmov_eq_thing(ATM, cent->Tag[1], way_match, 1);
+ way_match = cmov_eq_thing(ATM, cent->Tag[2], way_match, 2);
+ way_match = cmov_eq_thing(ATM, cent->Tag[3], way_match, 3);
- if(match)
- SS_DBG(SS_DBG_BIOS, "[%s] Read from BIOS ROM 0x%06x; PC=0x%08x\n", cpu_name, A, PC);
- }
+ return way_match;
#endif
+}
- //
- // WARNING: Template arguments CacheEnabled and TwoWayMode are only valid for region==0. In addition, TwoWayMode is only valid for CacheEnabled==true.
- //
- switch(region) // A >> 29
- {
- case 0:
- if(CacheEnabled)
- {
- const uint32 ATM = A & (0x7FFFF << 10);
- auto* cent = &Cache[(A >> 4) & 0x3F];
- int way_match = -1;
-
- way_match = cmov_eq_thing(ATM, cent->Tag[0], way_match, 0);
- way_match = cmov_eq_thing(ATM, cent->Tag[1], way_match, 1);
- way_match = cmov_eq_thing(ATM, cent->Tag[2], way_match, 2);
- way_match = cmov_eq_thing(ATM, cent->Tag[3], way_match, 3);
-
- if(MDFN_UNLIKELY(way_match < 0)) // Cache miss!
- {
- if(IsInstr)
- {
- if(MDFN_UNLIKELY(CCR & CCR_ID))
- goto EBRCase;
- }
- else
- {
- if(MDFN_UNLIKELY(CCR & CCR_OD))
- goto EBRCase;
- }
-
- if(TwoWayMode)
- way_match = 3 ^ (cent->LRU & 0x1);
- else
- way_match = LRU_Replace_Tab[cent->LRU];
-
- if(MDFN_UNLIKELY(way_match < 0))
- goto EBRCase;
-
- //
- // Load cache line.
- //
- //printf("Cache load line: %08x\n", A);
- cent->Tag[way_match] = ATM;
-
- {
- unsigned di = (A + 4 + 0) & 0xC; MDFN_ennsb(¢->Data[way_match][di], ExtBusRead((A &~ 0xF) + di));
- }
- for(unsigned i = 4; i < 16; i += 4)
- {
- unsigned di = (A + 4 + i) & 0xC; MDFN_ennsb(¢->Data[way_match][di], ExtBusRead((A &~ 0xF) + di));
- }
- if(!IsInstr)
- MA_until = std::max(MA_until, SH7095_mem_timestamp + 1);
- else
- timestamp = SH7095_mem_timestamp;
- }
+template
+INLINE void SH7095::Cache_WriteUpdate(uint32 A, T V)
+{
+ const uint32 ATM = A & (0x7FFFF << 10);
+ const unsigned ena = (A >> 4) & 0x3F;
+ CacheEntry* cent = &Cache[ena];
+ const int way_match = Cache_FindWay(cent, ATM);
- if((SH7095_FastMap[A >> SH7095_EXT_MAP_GRAN_BITS] + (A & ~((1U << SH7095_EXT_MAP_GRAN_BITS) - 1))) == (uintptr_t)fmap_dummy)
- SS_DBG(SS_DBG_WARNING | SS_DBG_SH2_CACHE, "[%s] Cacheable %zu-byte read from non-RAM address 0x%08x!\n", cpu_name, sizeof(T), A);
- else if(ne16_rbo_be(SH7095_FastMap[A >> SH7095_EXT_MAP_GRAN_BITS], A) != MDFN_densb(¢->Data[way_match][NE32ASU8_IDX_ADJ(T, A & 0x0F)]))
- SS_DBG(SS_DBG_WARNING | SS_DBG_SH2_CACHE, "[%s] Cache incoherency for %zu-byte read from address 0x%08x!\n", cpu_name, sizeof(T), A);
-
- cent->LRU = (cent->LRU & LRU_Update_Tab[way_match].AND) | LRU_Update_Tab[way_match].OR;
-
- // Ugggghhhh....
- if(CacheBypassHack && FMIsWriteable[A >> SH7095_EXT_MAP_GRAN_BITS])
- return ne16_rbo_be(SH7095_FastMap[A >> SH7095_EXT_MAP_GRAN_BITS], A);
+ if(MDFN_LIKELY(way_match >= 0)) // Cache hit!
+ {
+ Cache_LRU[ena] = (Cache_LRU[ena] & LRU_Update_Tab[way_match].AND) | LRU_Update_Tab[way_match].OR;
+ MDFN_ennsb(¢->Data[way_match][NE32ASU8_IDX_ADJ(T, A & 0x0F)], V); // Ignore CCR OD bit here.
+ }
+}
- return MDFN_densb(¢->Data[way_match][NE32ASU8_IDX_ADJ(T, A & 0x0F)]);
- }
- // Fall-through, no break here
- case 1:
- EBRCase:
- {
- T ret = ExtBusRead(A);
+template
+INLINE void SH7095::Cache_WriteAddressArray(uint32 A, T V)
+{
+ const unsigned way = (CCR >> 6) & 0x3;
+ const unsigned ena = (A >> 4) & 0x3F;
- if(!IsInstr)
- MA_until = std::max(MA_until, SH7095_mem_timestamp + 1);
- else
- timestamp = SH7095_mem_timestamp;
+ SS_DBG(SS_DBG_SH2_CACHE_NOISY, "[%s] %zu-byte write to cache address array area; address=0x%08x value=0x%x\n", cpu_name, sizeof(T), A, V);
- return ret;
- }
+ Cache[ena].Tag[way] = (A & (0x7FFFF << 10)) | (!(A & 0x4));
+ Cache_LRU[ena] = (V >> 4) & 0x3F;
+}
- case 2:
- case 5:
- //
- // Associative purge(apparently returns open bus of some sort)
- //
- //SS_DBG(SS_DBG_WARNING | SS_DBG_SH2, "[%s] %zu-byte read from associative purge area; address=0x%08x\n", cpu_name, sizeof(T), A);
- AssocPurge(A);
- return ~0;
+template
+INLINE void SH7095::Cache_WriteDataArray(uint32 A, T V)
+{
+ const unsigned way = (A >> 10) & 0x3;
+ const unsigned ena = (A >> 4) & 0x3F;
- case 3:
- //
- // Direct cache address/tag access
- //
- // Note: bits 0, 1, 3, 29, 30, 31 are some sort of open-bus(unemulated).
- //
- // SS_DBG(SS_DBG_WARNING | SS_DBG_SH2, "[%s] %zu-byte read from cache address array area; address=0x%08x\n", cpu_name, sizeof(T), A);
- {
- const unsigned way = (CCR >> 6) & 0x3;
- const unsigned ena = (A >> 4) & 0x3F;
+ SS_DBG(SS_DBG_SH2_CACHE_NOISY, "[%s] %zu-byte write to cache data array area; address=0x%08x value=0x%x\n", cpu_name, sizeof(T), A, V);
- return (Cache[ena].Tag[way] & (0x7FFFF << 10)) | (((int32)~Cache[ena].Tag[way] >> 31) & 0x4) | (Cache[ena].LRU << 4);
- }
+ MDFN_ennsb(&Cache[ena].Data[way][NE32ASU8_IDX_ADJ(T, A & 0x0F)], V);
+}
- case 4:
- case 6:
- //
- // Direct cache data access
- //
- //SS_DBG(SS_DBG_WARNING | SS_DBG_SH2, "[%s] %zu-byte read from cache data array area; address=0x%08x\n", cpu_name, sizeof(T), A);
- {
- const unsigned way = (A >> 10) & 0x3;
- const unsigned ena = (A >> 4) & 0x3F;
+template
+INLINE T SH7095::Cache_ReadAddressArray(uint32 A)
+{
+ const unsigned way = (CCR >> 6) & 0x3;
+ const unsigned ena = (A >> 4) & 0x3F;
- return MDFN_densb(&Cache[ena].Data[way][NE32ASU8_IDX_ADJ(T, A & 0x0F)]);
- }
+ SS_DBG(SS_DBG_SH2_CACHE_NOISY, "[%s] %zu-byte read from cache address array area; address=0x%08x\n", cpu_name, sizeof(T), A);
- case 7:
- return OnChipRegRead(unmasked_A);
- }
+ return (Cache[ena].Tag[way] & (0x7FFFF << 10)) | ((~Cache[ena].Tag[way] & 1) << 2) | (Cache_LRU[ena] << 4);
}
template
-INLINE T SH7095::MemRead(uint32 A)
+INLINE T SH7095::Cache_ReadDataArray(uint32 A)
{
- if(sizeof(T) == 1)
- return MRFP8[A >> 29](A);
- else if(sizeof(T) == 2)
- return MRFP16[A >> 29](A);
- else
- return MRFP32[A >> 29](A);
+ const unsigned way = (A >> 10) & 0x3;
+ const unsigned ena = (A >> 4) & 0x3F;
+
+ SS_DBG(SS_DBG_SH2_CACHE_NOISY, "[%s] %zu-byte read from cache data array area; address=0x%08x\n", cpu_name, sizeof(T), A);
+
+ return MDFN_densb(&Cache[ena].Data[way][NE32ASU8_IDX_ADJ(T, A & 0x0F)]);
}
template
-INLINE void SH7095::Write_UpdateCache(uint32 A, T V)
+INLINE void SH7095::Cache_CheckReadIncoherency(CacheEntry* cent, const int way, const uint32 A)
{
- const uint32 ATM = A & (0x7FFFF << 10);
- auto* cent = &Cache[(A >> 4) & 0x3F];
- int way_match = -1;
+ if((SH7095_FastMap[A >> SH7095_EXT_MAP_GRAN_BITS] + (A & ~((1U << SH7095_EXT_MAP_GRAN_BITS) - 1))) == (uintptr_t)fmap_dummy)
+ SS_DBG(SS_DBG_WARNING | SS_DBG_SH2_CACHE | SS_DBG_SH2_CACHE_NOISY, "[%s] Cacheable %zu-byte read from non-RAM address 0x%08x!\n", cpu_name, sizeof(T), A);
+ else if(ne16_rbo_be(SH7095_FastMap[A >> SH7095_EXT_MAP_GRAN_BITS], A) != MDFN_densb(¢->Data[way][NE32ASU8_IDX_ADJ(T, A & 0x0F)]))
+ SS_DBG(SS_DBG_WARNING | SS_DBG_SH2_CACHE | SS_DBG_SH2_CACHE_NOISY, "[%s] Cache incoherency for %zu-byte read from address 0x%08x!\n", cpu_name, sizeof(T), A);
+}
+
+#define MemRead(IsInstr, T, region, CacheEnabled, A_, outval_, A, unmasked_A, cent, way_match) \
+{ \
+ __label__ EBRCase, MemReturn; \
+ T retval; \
+ retval = 0; \
+ A = (A_); \
+ unmasked_A = A; \
+ \
+ if(IsInstr <= 0) \
+ { \
+ if(MDFN_UNLIKELY(A & (sizeof(T) - 1))) \
+ { \
+ SS_DBG(SS_DBG_WARNING | SS_DBG_SH2, "[%s] Misaligned %zu-byte read from 0x%08x\n", cpu_name, sizeof(T), A); \
+ A &= ~(sizeof(T) - 1); \
+ SetPEX(PEX_CPUADDR); \
+ } \
+ } \
+ \
+ if(IsInstr <= 0) \
+ MA_until = std::max(MA_until, timestamp + 1); \
+ else \
+ timestamp = std::max(MA_until, timestamp); \
+ \
+ DevBuild_ReadLog(A); \
+ \
+ switch(region) \
+ { \
+ case 0: \
+ if(MDFN_LIKELY(CacheEnabled)) \
+ { \
+ uint32 ATM; \
+ \
+ ATM = A & (0x7FFFF << 10); \
+ cent = &Cache[(A >> 4) & 0x3F]; \
+ \
+ way_match = Cache_FindWay(cent, ATM); \
+ \
+ if(MDFN_UNLIKELY(way_match < 0)) /* Cache miss! */ \
+ { \
+ way_match = LRU_Replace_Tab[Cache_LRU[(A >> 4) & 0x3F] & CCRC_Replace_AND] | CCRC_Replace_OR[(bool)IsInstr]; \
+ \
+ if(MDFN_UNLIKELY(way_match < 0)) \
+ goto EBRCase; \
+ \
+ /* */ \
+ /* Load cache line. */ \
+ /* */ \
+ /*printf("Cache load line: %08x\n", A);*/ \
+ cent->Tag[way_match] = ATM; \
+ /* Don't use ATM after this point. */ \
+ CHECK_EXIT_RESUME(); \
+ { \
+ unsigned di = (A + 4 + 0) & 0xC; MDFN_ennsb(¢->Data[way_match][di], ExtBusRead(uint32, false, (A &~ 0xF) + di)); \
+ } \
+ for(unsigned i = 4; i < 16; i += 4) \
+ { \
+ unsigned di = (A + 4 + i) & 0xC; MDFN_ennsb(¢->Data[way_match][di], ExtBusRead(uint32, true, (A &~ 0xF) + di)); \
+ } \
+ if(IsInstr <= 0) \
+ MA_until = std::max(MA_until, SH7095_mem_timestamp + 1); \
+ else \
+ timestamp = SH7095_mem_timestamp; \
+ } \
+ \
+ Cache_CheckReadIncoherency(cent, way_match, A); \
+ \
+ Cache_LRU[(A >> 4) & 0x3F] = (Cache_LRU[(A >> 4) & 0x3F] & LRU_Update_Tab[way_match].AND) | LRU_Update_Tab[way_match].OR; \
+ \
+ /* Ugggghhhh.... */ \
+ if(CacheBypassHack && FMIsWriteable[A >> SH7095_EXT_MAP_GRAN_BITS]) \
+ { \
+ retval = ne16_rbo_be(SH7095_FastMap[A >> SH7095_EXT_MAP_GRAN_BITS], A); \
+ goto MemReturn; \
+ } \
+ \
+ retval = MDFN_densb(¢->Data[way_match][NE32ASU8_IDX_ADJ(T, A & 0x0F)]); \
+ goto MemReturn; \
+ } \
+ /* Fall-through, no break here */ \
+ case 1: \
+ EBRCase: \
+ CHECK_EXIT_RESUME(); \
+ { \
+ retval = ExtBusRead(T, false, A); \
+ \
+ if(IsInstr <= 0) \
+ MA_until = std::max(MA_until, SH7095_mem_timestamp + 1); \
+ else \
+ { \
+ timestamp = SH7095_mem_timestamp; \
+ UCRead_IF_Kludge = true; \
+ } \
+ \
+ goto MemReturn; \
+ } \
+ \
+ case 2: \
+ case 5: \
+ /* */ \
+ /* Associative purge(apparently returns open bus of some sort) */ \
+ /* */ \
+ Cache_AssocPurge(A); \
+ retval = ~0; \
+ goto MemReturn; \
+ \
+ case 3: \
+ /* */ \
+ /* Direct cache address/tag access */ \
+ /* */ \
+ /* Note: bits 0, 1, 3, 29, 30, 31 are some sort */ \
+ /* of open-bus(unemulated). */ \
+ /* */ \
+ retval = Cache_ReadAddressArray(A); \
+ goto MemReturn; \
+ \
+ case 4: \
+ case 6: \
+ /* */ \
+ /* Direct cache data access */ \
+ /* */ \
+ retval = Cache_ReadDataArray(A); \
+ goto MemReturn; \
+ \
+ case 7: \
+ retval = OnChipRegRead(T, unmasked_A); \
+ goto MemReturn; \
+ } \
+ MemReturn: outval_ = retval; \
+}
+
+#define MemWrite(T, region, CacheEnabled, A_, V_, A, unmasked_A, V) \
+{ \
+ A = (A_); \
+ unmasked_A = A; \
+ V = (V_); \
+ \
+ if(MDFN_UNLIKELY(A & (sizeof(T) - 1))) \
+ { \
+ SS_DBG(SS_DBG_WARNING | SS_DBG_SH2, "[%s] Misaligned %zu-byte write of 0x%08x to 0x%08x\n", cpu_name, sizeof(T), V, A); \
+ A &= ~(sizeof(T) - 1); \
+ SetPEX(PEX_CPUADDR); \
+ } \
+ \
+ MA_until = std::max(MA_until, timestamp + 1); \
+ \
+ DevBuild_WriteLog(A, V); \
+ \
+ switch(region) \
+ { \
+ case 0: \
+ if(MDFN_LIKELY(CacheEnabled)) \
+ Cache_WriteUpdate(A, V); \
+ /* Fall-through, no break */ \
+ case 1: \
+ MA_until = std::max(MA_until, write_finish_timestamp + 1); \
+ \
+ if(!SH7095_BusLock) { CHECK_EXIT_RESUME(); } \
+ ExtBusWrite(T, A, V); \
+ break; \
+ \
+ case 2: \
+ case 5: \
+ /* */ \
+ /* Associative purge. */ \
+ /* */ \
+ Cache_AssocPurge(A); \
+ break; \
+ \
+ case 3: \
+ /* */ \
+ /* Direct cache address/tag access */ \
+ /* */ \
+ /* TODO: Check non-32 bit access */ \
+ timestamp++; \
+ MA_until = std::max(MA_until, timestamp + 1); \
+ \
+ Cache_WriteAddressArray(A, V); \
+ break; \
+ \
+ case 4: \
+ case 6: \
+ /* */ \
+ /* Direct cache data access */ \
+ /* */ \
+ Cache_WriteDataArray(A, V); \
+ break; \
+ \
+ case 7: \
+ OnChipRegWrite(unmasked_A, V); \
+ break; \
+ } \
+}
+
+#define CHECK_EXIT_RESUME() { if(NeedSlaveCall > 0) CPU[1].RunSlaveUntil(timestamp); if(NeedSlaveCall < 0) CPU[1].RunSlaveUntil_Debug(timestamp); }
+#define OnChipRegRead(T, A) OnChipRegRead_INLINE(A)
+#define ExtBusRead(T, BurstHax, A) ExtBusRead_NI(A)
+#define ExtBusWrite(T, A, V) ExtBusWrite_NI(A, V)
+template
+INLINE T SH7095::MemReadRT(uint32 A)
+{
+ static_assert(region < 0x8, "Wrong region argument.");
+ static_assert(!NeedSlaveCall || (!which && region < 2), "Wrong arguments.");
+ static_assert(IsInstr >= 0 || (CacheEnabled && region == 0x0), "Wrong arguments.");
+ T ret;
+ uint32 unmasked_A;
+ CacheEntry* cent;
+ int way_match;
- way_match = cmov_eq_thing(ATM, cent->Tag[0], way_match, 0);
- way_match = cmov_eq_thing(ATM, cent->Tag[1], way_match, 1);
- way_match = cmov_eq_thing(ATM, cent->Tag[2], way_match, 2);
- way_match = cmov_eq_thing(ATM, cent->Tag[3], way_match, 3);
+ MemRead(IsInstr, T, region, CacheEnabled, A, ret, A, unmasked_A, cent, way_match);
- if(MDFN_LIKELY(way_match >= 0)) // Cache hit!
- {
- cent->LRU = (cent->LRU & LRU_Update_Tab[way_match].AND) | LRU_Update_Tab[way_match].OR;
- MDFN_ennsb(¢->Data[way_match][NE32ASU8_IDX_ADJ(T, A & 0x0F)], V); // Ignore CCR OD bit here.
- }
+ return ret;
}
-template
+template
INLINE void SH7095::MemWriteRT(uint32 A, T V)
{
static_assert(region < 0x8, "Wrong region argument.");
- const uint32 unmasked_A = A;
-
- if(MDFN_UNLIKELY(A & (sizeof(T) - 1)))
- {
- SS_DBG(SS_DBG_WARNING | SS_DBG_SH2, "[%s] Misaligned %zu-byte write of 0x%08x to 0x%08x\n", cpu_name, sizeof(T), V, A);
- A &= ~(sizeof(T) - 1);
- SetPEX(PEX_CPUADDR);
- }
+ static_assert(!NeedSlaveCall || (!which && region < 2), "Wrong arguments.");
+ uint32 unmasked_A;
- MA_until = std::max(MA_until, timestamp + 1);
+ MemWrite(T, region, CacheEnabled, A, V, A, unmasked_A, V);
+}
+#undef CHECK_EXIT_RESUME
+#undef OnChipRegRead
+#undef ExtBusRead
+#undef ExtBusWrite
-#ifdef MDFN_ENABLE_DEV_BUILD
- if((A & 0xC7FFFFFF) >= 0x06000200 && (A & 0xC7FFFFFF) <= 0x060003FF)
- {
- const uint32 pcm = PC & 0x07FFFFFF;
- bool match = (pcm >= 0x100000) && (pcm < 0x06000600 || pcm >= 0x06000800);
+template
+static NO_INLINE MDFN_HOT MDFN_FASTCALL T C_MemReadRT(uint32 A)
+{
+ return CPU[which].MemReadRT(A);
+}
- if(match && !BWMIgnoreAddr[1][A & 0x1FF])
- {
- SS_DBG(SS_DBG_BIOS, "[%s] Write to BIOS area of RAM 0x%08x; PC=0x%08x\n", cpu_name, A, PC);
- }
- }
-#endif
-
- //
- // WARNING: Template argument CacheEnabled is only valid for region==0.
- //
- switch(region) // A >> 29
- {
- case 0:
- if(CacheEnabled)
- Write_UpdateCache(A, V);
- // Fall-through, no break
- case 1:
- MA_until = std::max(MA_until, write_finish_timestamp + 1);
-
- ExtBusWrite(A, V);
- return;
-
- case 2:
- case 5:
- //
- // Associative purge.
- //
- //SS_DBG(SS_DBG_WARNING | SS_DBG_SH2, "[%s] %zu-byte write to associative purge area; address=0x%08x value=0x%x\n", cpu_name, sizeof(T), A, V);
- AssocPurge(A);
- return;
-
- case 3:
- //
- // Direct cache address/tag access
- //
- // TODO: Check non-32 bit access
- //SS_DBG(SS_DBG_WARNING | SS_DBG_SH2, "[%s] %zu-byte write to cache address array area; address=0x%08x value=0x%x\n", cpu_name, sizeof(T), A, V);
- timestamp++;
- MA_until = std::max(MA_until, timestamp + 1);
- {
- const unsigned way = (CCR >> 6) & 0x3;
- const unsigned ena = (A >> 4) & 0x3F;
-
- Cache[ena].Tag[way] = (A & (0x7FFFF << 10)) | ((!(A & 0x4)) << 31);
- Cache[ena].LRU = (V >> 4) & 0x3F;
- }
- return;
-
- case 4:
- case 6:
- //
- // Direct cache data access
- //
- //SS_DBG(SS_DBG_WARNING | SS_DBG_SH2, "[%s] %zu-byte write to cache data array area; address=0x%08x value=0x%x\n", cpu_name, sizeof(T), A, V);
- {
- const unsigned way = (A >> 10) & 0x3;
- const unsigned ena = (A >> 4) & 0x3F;
-
- MDFN_ennsb(&Cache[ena].Data[way][NE32ASU8_IDX_ADJ(T, A & 0x0F)], V);
- }
- return;
-
- case 7:
- OnChipRegWrite(unmasked_A, V);
- return;
- }
-}
-
-template
-INLINE void SH7095::MemWrite(uint32 A, T V)
-{
- if(sizeof(T) == 1)
- MWFP8[A >> 29](A, V);
- else if(sizeof(T) == 2)
- MWFP16[A >> 29](A, V);
- else
- MWFP32[A >> 29](A, V);
-}
-
-
-template
-static NO_INLINE MDFN_FASTCALL T C_MemReadRT(uint32 A)
+template
+static NO_INLINE MDFN_HOT MDFN_FASTCALL void C_MemWriteRT(uint32 A, T V)
{
- return CPU[which].MemReadRT(A);
+ CPU[which].MemWriteRT(A, V);
}
-template
-static NO_INLINE MDFN_FASTCALL void C_MemWriteRT(uint32 A, T V)
-{
- CPU[which].MemWriteRT(A, V);
-}
-
-
INLINE void SH7095::SetCCR(uint8 V)
{
if(CCR != V)
- SS_DBG(SS_DBG_SH2_CACHE, "[%s] CCR changed: 0x%02x->0x%02x%s\n", cpu_name, CCR, V, (V & CCR_CP) ? " (CACHE PURGE!)" : "");
+ SS_DBG(SS_DBG_SH2_CACHE | SS_DBG_SH2_CACHE_NOISY, "[%s] CCR changed: 0x%02x->0x%02x%s\n", cpu_name, CCR, V, (V & CCR_CP) ? " (CACHE PURGE!)" : "");
if(V & CCR_CP)
{
for(unsigned entry = 0; entry < 64; entry++)
{
- Cache[entry].LRU = 0;
+ Cache_LRU[entry] = 0;
for(unsigned way = 0; way < 4; way++)
- Cache[entry].Tag[way] |= 1U << 31; // Set invalid bit to 1.
+ Cache[entry].Tag[way] |= 1; // Set invalid bit to 1.
}
V &= ~CCR_CP;
}
- CCR = V;
- #define MAHL(bs,w,cbh) \
- if(CCR & CCR_CE) \
- { \
- if(CCR & CCR_TW) \
- { \
- MRFP##bs[0] = C_MemReadRT ; \
- MRFPI[0] = C_MemReadRT ; \
- } \
- else \
- { \
- MRFP##bs[0] = C_MemReadRT ; \
- MRFPI[0] = C_MemReadRT ; \
- } \
- MWFP##bs[0] = C_MemWriteRT; \
- } \
- else \
- { \
- MRFP##bs[0] = C_MemReadRT ; \
- MRFPI[0] = C_MemReadRT ; \
- MWFP##bs[0] = C_MemWriteRT