diff -bB -NaHudr fceu-0.98.15-src/configure fceu/configure --- fceu-0.98.15-src/configure 2006-04-11 10:43:18.000000000 +0300 +++ fceu/configure 2006-04-11 10:43:12.000000000 +0300 @@ -1,9 +1,8 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.56. +# Generated by GNU Autoconf 2.59. # -# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 -# Free Software Foundation, Inc. +# Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## @@ -20,9 +19,10 @@ elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi +DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false @@ -41,7 +41,7 @@ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do - if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var @@ -218,16 +218,17 @@ if mkdir -p . 2>/dev/null; then as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS @@ -921,12 +922,45 @@ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. @@ -943,7 +977,7 @@ else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi - cd $ac_popdir + cd "$ac_popdir" done fi @@ -951,8 +985,7 @@ if $ac_init_version; then cat <<\_ACEOF -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 -Free Software Foundation, Inc. +Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -964,7 +997,7 @@ running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was -generated by GNU Autoconf 2.56. Invocation command line was +generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ @@ -1140,7 +1173,7 @@ echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 - rm -f core core.* *.core && + rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 @@ -1292,8 +1325,8 @@ -FCEU_VERSION='0.98.13' -FCEU_VERSION_NUMERIC=9813 +FCEU_VERSION='0.98.15' +FCEU_VERSION_NUMERIC=9815 ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do @@ -1414,6 +1447,7 @@ # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 @@ -1430,6 +1464,7 @@ case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. @@ -1594,7 +1629,7 @@ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2094,7 +2129,6 @@ (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2114,8 +2148,8 @@ # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -echo "$as_me:$LINENO: checking for C compiler default output" >&5 -echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 @@ -2251,7 +2285,6 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2302,7 +2335,6 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2322,10 +2354,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -2339,7 +2380,7 @@ ac_compiler_gnu=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi @@ -2355,7 +2396,6 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2372,10 +2412,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -2389,7 +2438,7 @@ ac_cv_prog_cc_g=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 @@ -2416,7 +2465,6 @@ ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2444,6 +2492,16 @@ va_end (v); return s; } + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; @@ -2470,10 +2528,19 @@ CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -2487,7 +2554,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 fi -rm -f conftest.$ac_objext +rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC @@ -2515,10 +2582,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -2526,8 +2602,7 @@ echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ - ''\ - '#include ' \ + '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ @@ -2535,14 +2610,13 @@ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include $ac_declaration +#include int main () { @@ -2553,10 +2627,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -2570,9 +2653,8 @@ continue fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2589,10 +2671,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -2605,7 +2696,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then @@ -2619,7 +2710,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -2791,16 +2882,21 @@ do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include +#ifdef __STDC__ +# include +#else +# include +#endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 @@ -2813,6 +2909,7 @@ (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi @@ -2833,7 +2930,6 @@ # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2851,6 +2947,7 @@ (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi @@ -2892,16 +2989,21 @@ do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include +#ifdef __STDC__ +# include +#else +# include +#endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 @@ -2914,6 +3016,7 @@ (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi @@ -2934,7 +3037,6 @@ # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2952,6 +3054,7 @@ (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi @@ -3003,7 +3106,6 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3213,7 +3315,6 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3233,10 +3334,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -3250,7 +3360,7 @@ ac_compiler_gnu=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi @@ -3266,7 +3376,6 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3283,10 +3392,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -3300,7 +3418,7 @@ ac_cv_prog_cxx_g=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 @@ -3320,8 +3438,7 @@ fi fi for ac_declaration in \ - ''\ - '#include ' \ + '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ @@ -3329,14 +3446,13 @@ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include $ac_declaration +#include int main () { @@ -3347,10 +3463,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -3364,9 +3489,8 @@ continue fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3383,10 +3507,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -3399,7 +3532,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then @@ -3502,16 +3635,21 @@ do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include +#ifdef __STDC__ +# include +#else +# include +#endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 @@ -3524,6 +3662,7 @@ (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi @@ -3544,7 +3683,6 @@ # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3562,6 +3700,7 @@ (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi @@ -3603,16 +3742,21 @@ do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include +#ifdef __STDC__ +# include +#else +# include +#endif Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 @@ -3625,6 +3769,7 @@ (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi @@ -3645,7 +3790,6 @@ # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3663,6 +3807,7 @@ (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= fi @@ -3712,6 +3857,7 @@ # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 @@ -3728,6 +3874,7 @@ case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. @@ -3790,15 +3937,28 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ +/* Define asprintf to an innocuous variant, in case declares asprintf. + For example, HP-UX 11i declares gettimeofday. */ +#define asprintf innocuous_asprintf + /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char asprintf (); below. */ -#include + which can conflict with char asprintf (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef asprintf + /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" @@ -3822,17 +3982,26 @@ int main () { - +return f != asprintf; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -3846,7 +4015,8 @@ ac_cv_func_asprintf=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_asprintf" >&5 echo "${ECHO_T}$ac_cv_func_asprintf" >&6 @@ -3867,7 +4037,6 @@ ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3891,10 +4060,19 @@ _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -3908,7 +4086,8 @@ ac_cv_lib_z_zlibVersion=no fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_z_zlibVersion" >&5 @@ -4107,7 +4286,6 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4128,10 +4306,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -4145,12 +4332,11 @@ ac_cv_header_stdc=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4172,7 +4358,6 @@ if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4197,7 +4382,6 @@ : else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4247,7 +4431,7 @@ ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi @@ -4281,7 +4465,6 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4293,10 +4476,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -4310,7 +4502,7 @@ eval "$as_ac_Header=no" fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 @@ -4337,7 +4529,6 @@ echo "$as_me:$LINENO: checking sys/soundcard.h usability" >&5 echo $ECHO_N "checking sys/soundcard.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4348,10 +4539,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -4365,7 +4565,7 @@ ac_header_compiler=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 @@ -4373,7 +4573,6 @@ echo "$as_me:$LINENO: checking sys/soundcard.h presence" >&5 echo $ECHO_N "checking sys/soundcard.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4391,6 +4590,7 @@ (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi @@ -4410,33 +4610,32 @@ echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: sys/soundcard.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: sys/soundcard.h: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: sys/soundcard.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes ;; - no:yes ) + no:yes:* ) { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: sys/soundcard.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: sys/soundcard.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: sys/soundcard.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: sys/soundcard.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: sys/soundcard.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: sys/soundcard.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: sys/soundcard.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -4579,7 +4778,6 @@ echo $ac_n "cross compiling; assumed OK... $ac_c" else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4664,7 +4862,7 @@ ( exit $ac_status ) no_sdl=yes fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" @@ -4690,7 +4888,6 @@ CFLAGS="$CFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4710,10 +4907,19 @@ _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -4738,7 +4944,8 @@ echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl-config script: $SDL_CONFIG" fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi @@ -4784,7 +4991,6 @@ echo "$as_me:$LINENO: checking GL/gl.h usability" >&5 echo $ECHO_N "checking GL/gl.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4795,10 +5001,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -4812,7 +5027,7 @@ ac_header_compiler=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 @@ -4820,7 +5035,6 @@ echo "$as_me:$LINENO: checking GL/gl.h presence" >&5 echo $ECHO_N "checking GL/gl.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4838,6 +5052,7 @@ (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi @@ -4857,33 +5072,32 @@ echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) { echo "$as_me:$LINENO: WARNING: GL/gl.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: GL/gl.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + { echo "$as_me:$LINENO: WARNING: GL/gl.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: GL/gl.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes ;; - no:yes ) + no:yes:* ) { echo "$as_me:$LINENO: WARNING: GL/gl.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: GL/gl.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: GL/gl.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: GL/gl.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: GL/gl.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: GL/gl.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: GL/gl.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: GL/gl.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: GL/gl.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: GL/gl.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -4929,7 +5143,6 @@ echo "$as_me:$LINENO: checking OpenGL/gl.h usability" >&5 echo $ECHO_N "checking OpenGL/gl.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4940,10 +5153,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -4957,7 +5179,7 @@ ac_header_compiler=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 @@ -4965,7 +5187,6 @@ echo "$as_me:$LINENO: checking OpenGL/gl.h presence" >&5 echo $ECHO_N "checking OpenGL/gl.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4983,6 +5204,7 @@ (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= fi @@ -5002,33 +5224,32 @@ echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? -case $ac_header_compiler:$ac_header_preproc in - yes:no ) +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) { echo "$as_me:$LINENO: WARNING: OpenGL/gl.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: OpenGL/gl.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: OpenGL/gl.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: OpenGL/gl.h: proceeding with the preprocessor's result" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + { echo "$as_me:$LINENO: WARNING: OpenGL/gl.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: OpenGL/gl.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes ;; - no:yes ) + no:yes:* ) { echo "$as_me:$LINENO: WARNING: OpenGL/gl.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: OpenGL/gl.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: OpenGL/gl.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: OpenGL/gl.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: OpenGL/gl.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: OpenGL/gl.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: OpenGL/gl.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: OpenGL/gl.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: OpenGL/gl.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: OpenGL/gl.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: OpenGL/gl.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: OpenGL/gl.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------ ## -## Report this to bug-autoconf@gnu.org. ## -## ------------------------------------ ## +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -5092,7 +5313,6 @@ else # See if sys/param.h defines the BYTE_ORDER macro. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5114,10 +5334,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -5126,7 +5355,6 @@ (exit $ac_status); }; }; then # It does; now see whether it defined to BIG_ENDIAN or not. cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5148,10 +5376,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -5165,7 +5402,7 @@ ac_cv_c_bigendian=no fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -5175,7 +5412,6 @@ # try to guess the endianness by grepping values into an object file ac_cv_c_bigendian=unknown cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5197,10 +5433,19 @@ _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 @@ -5223,10 +5468,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else cat >conftest.$ac_ext <<_ACEOF -#line $LINENO "configure" /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -5265,10 +5509,10 @@ ( exit $ac_status ) ac_cv_c_bigendian=yes fi -rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi -rm -f conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 echo "${ECHO_T}$ac_cv_c_bigendian" >&6 @@ -5561,9 +5805,10 @@ elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi +DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false @@ -5582,7 +5827,7 @@ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do - if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else $as_unset $as_var @@ -5761,16 +6006,17 @@ if mkdir -p . 2>/dev/null; then as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # IFS @@ -5797,7 +6043,7 @@ cat >&5 <<_CSEOF This file was extended by $as_me, which was -generated by GNU Autoconf 2.56. Invocation command line was +generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -5855,11 +6101,10 @@ cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status -configured by $0, generated by GNU Autoconf 2.56, +configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. +Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir @@ -6239,12 +6484,45 @@ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac case $INSTALL in @@ -6252,11 +6530,6 @@ *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ @@ -6279,14 +6552,14 @@ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } - echo $f;; + echo "$f";; *) # Relative if test -f "$f"; then # Build tree - echo $f + echo "$f" elif test -f "$srcdir/$f"; then # Source tree - echo $srcdir/$f + echo "$srcdir/$f" else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 @@ -6295,6 +6568,12 @@ fi;; esac done` || { (exit 1); exit 1; } + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub @@ -6344,6 +6623,31 @@ /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. if test "$ac_dir" != .; then @@ -6369,12 +6673,45 @@ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac -# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be -# absolute. -ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` -ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` -ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` -ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 diff -bB -NaHudr fceu-0.98.15-src/configure.ac fceu/configure.ac --- fceu-0.98.15-src/configure.ac 2006-04-11 10:43:18.000000000 +0300 +++ fceu/configure.ac 2006-04-11 10:43:12.000000000 +0300 @@ -1,7 +1,7 @@ AC_INIT([src/fceu.c]) -FCEU_VERSION='0.98.13' -FCEU_VERSION_NUMERIC=9813 +FCEU_VERSION='0.98.15' +FCEU_VERSION_NUMERIC=9815 AC_CANONICAL_HOST AC_CANONICAL_TARGET diff -bB -NaHudr fceu-0.98.15-src/Makefile.in fceu/Makefile.in --- fceu-0.98.15-src/Makefile.in 2006-04-11 10:43:18.000000000 +0300 +++ fceu/Makefile.in 2006-04-11 10:43:12.000000000 +0300 @@ -68,8 +68,6 @@ AMTAR = @AMTAR@ AWK = @AWK@ CC = @CC@ -CCAS = @CCAS@ -CCASFLAGS = @CCASFLAGS@ CPP = @CPP@ CXX = @CXX@ CXXCPP = @CXXCPP@ diff -bB -NaHudr fceu-0.98.15-src/src/bisqbot-backup.cc fceu/src/bisqbot-backup.cc --- fceu-0.98.15-src/src/bisqbot-backup.cc 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/bisqbot-backup.cc 2006-04-11 10:43:12.000000000 +0300 @@ -0,0 +1,341 @@ +#include +#include /* rand() */ +#include + +#include +#include +#include + +#define BISQBOT_INTERNAL +#include "bisqbot.hh" +static const unsigned MAX_FRAMES = 240; + +extern "C" unsigned char RAM[0x800]; +extern "C" unsigned char PALRAM[0x20]; + +static unsigned NextChange=0; +static unsigned NextJump =0; + +static boost::mt19937 rng; + +static class BisqBotState: public BisqBotStateBase +{ +public: + virtual ~BisqBotState() { } + + BisqBotState() + { + Reset(); + } + void Reset() + { + PrevMarioX = 0; + NFrames = 0; + MarioMovement = 0; + Pit = 0; + Entry.Clear(); + Damage.Clear(); + + JumpRemain = 0; + MarioY = 0; + Active = 0; + } + + void operator= (const BisqBotState& b) + { + PrevMarioX = b.PrevMarioX; + NFrames = b.NFrames; + MarioMovement = b.MarioMovement; + Pit = b.Pit; + Entry = b.Entry; + Damage = b.Damage; + JumpRemain = b.JumpRemain; + MarioY = b.MarioY; + Active = b.Active; + } + +public: + unsigned PrevMarioX, NFrames; + int MarioMovement; + int Pit; + BisqBotVar Entry, Damage; + int MarioY; + int Active; + + unsigned JumpRemain; +} state; + +const BisqBotStateBase* BisqBotNewSaveState() +{ + return new BisqBotState(state); +} + +void BisqBotLoadState(const BisqBotStateBase* b) +{ + state = *(BisqBotState*)b; +} + +extern "C" { +void FCEUI_GetIVectors(unsigned short *reset, unsigned short *irq, unsigned short *nmi); +unsigned HScroll,VScroll; +} + +void BisqBotMonitorCPU + (unsigned short PC, + unsigned char A, + unsigned char X, + unsigned char Y) +{ +/* + static bool InSoundCode=false; + static bool InWaitFrame=false; + static bool InNMI=false; + if(PC == 0xD551) { InSoundCode=true; return; } + if(PC == 0xD554) { InSoundCode=false; return; } + if(InSoundCode) return; + if(PC == 0xC01D) { InWaitFrame=true; return; } + if(PC == 0xC059) { InWaitFrame=false; return; } + if(InWaitFrame) return; + if(PC == 0xD4A8) { InNMI=true; return; } + if(PC == 0xD582) { InNMI=false; return; } + if(InNMI) return; + printf("PC[%04X]", PC); +*/ + static unsigned short irq=0; + if(!irq) { unsigned short res, nmi; FCEUI_GetIVectors(&res,&irq,&nmi); } + + if(PC == irq) + { + static int LastX=-1,LastY=-1, frame=0; + extern unsigned HScroll, VScroll; + int NowX=HScroll, NowY=VScroll; + + if(NowX != LastX || NowY != LastY) + { + fprintf(stderr, "Frame %u, X:%3d Y:%3d", frame, NowX,NowY); + for(unsigned a=0; a<0x20; ++a) fprintf(stderr, " %02X", PALRAM[a]); + fprintf(stderr, "\n"); + + LastX=NowX; + LastY=NowY; + } + ++frame; + } + +#if 0 /* SMB */ + /* GAME MONITORING */ + /* A, X, Y, PC correspond to the values of the CPU registers. */ + if(PC == 0x8082) + { + unsigned MarioXPos = RAM[0x86]; + unsigned MarioYPos = RAM[0xCE]; + unsigned ScrollBegin = RAM[0x73F]; + + state.MarioY = MarioYPos; + + unsigned MarioScreenX = (unsigned char)(MarioXPos-ScrollBegin+256); + + unsigned MarioX = MarioXPos; + if(state.NFrames++ > 0) + { + //fprintf(stderr, "MarioX = %u\n", MarioX); + state.MarioMovement += (signed char)(MarioX - state.PrevMarioX); + } + state.PrevMarioX = MarioX; + } + + if(PC == 0xB04C) // magic_jT9+2 + { + //fprintf(stderr, "JT9 with A=%02X\n", A); + switch(A) + { + case 1: // auto climb + case 2: // enter horiz pipe + case 3: // enter vert pipe + case 4: // slide flagpole down + case 5: // victory + case 9: // eat mushroom + case 12: // eat flower + state.Entry.Set(A); + break; + case 10:// eat damage + case 11:// eat death + state.Damage.Set(A); + fprintf(stderr, "Pit (a=%u)\n", A); + state.Pit=1; + break; + case 0: // regen level + case 7: // start level + { + state.Pit = 0; + state.MarioY = 128; + break; + } + case 8: // normal level activity + { + state.Active = 1; + + int MarioYPos = state.MarioY; + + if(!state.Pit && MarioYPos >= 0xF0 && MarioYPos <= 0xFF) + { + state.Pit = -1; // ignore, it's screen top + } + else if(state.Pit < 0 && MarioYPos < 0x60) + state.Pit = 0; + else if(!state.Pit && MarioYPos > 0xC0 && MarioYPos < 0xFF) + { + state.Pit=1; + fprintf(stderr, "Pit (y=%u)\n", MarioYPos); + } + break; + } + } + } + if(PC == 0xCFEC) + { + state.Entry.Set(15); // Killed koopa + } +#endif +#if 1 /* Rockman3 */ + /* GAME MONITORING */ + /* A, X, Y, PC correspond to the values of the CPU registers. */ + if(PC == 0xC000) + { + unsigned MarioXPos = RAM[0x360]; + unsigned MarioX = MarioXPos; + if(state.NFrames++ > 0) + { + //fprintf(stderr, "MarioX = %u\n", MarioX); + state.MarioMovement += (signed char)(MarioX - state.PrevMarioX); + } + state.PrevMarioX = MarioX; + state.Active=1; + } +#endif +} + +void BisqBotReset() +{ + struct timeval tv; + gettimeofday(&tv,NULL); + rng.seed(tv.tv_usec + tv.tv_sec*1000000ULL); + + state.Reset(); +} + +template +static inline unsigned GetRnd() +{ + static boost::uniform_int g(0, mod-1); + return g(rng); +} +static inline unsigned GetRnd(unsigned mod) +{ + return boost::uniform_int (0,mod-1) (rng); +} + +unsigned char BisqBotInput(unsigned FrameNo) +{ + if(state.Entry.Count()) return 0; + + //if(FrameNo >= 4) return K_A + K_B + K_R; + + static const unsigned char InputTable[] = + { + K_R, + K_R, + K_R, + K_R,/* + K_R, + K_R, + K_R, + K_R, + K_R,*/ + K_L, + 0 + }; + static unsigned LastInput = 0; + static unsigned A_State = 0; + static unsigned B_State = K_B; + unsigned char Input = 0x00; + + if(!NextChange) + { + LastInput = InputTable[ GetRnd() ]; + NextChange = GetRnd<10>(); + } + else --NextChange; + + /*B_State = K_B;*/ + /* + if(B_State) + { if(GetRnd<100>() < 1) B_State=0; } + else + { if(GetRnd<100>() < 95) B_State=K_B; } + */ + if(GetRnd<30>() == 0) B_State = K_B; else B_State = 0; + if(GetRnd<20>() == 0) Input |= K_U; + if(GetRnd<20>() == 0) Input |= K_D; + + /* + if(!GetRnd<20>()) + { + Input |= K_D; + if(GetRnd<5>()) Input &= ~(K_R | K_L); + } + */ + + if(!state.JumpRemain) + { + if(!NextJump) + { + state.JumpRemain = GetRnd(1+GetRnd<6>()); + NextJump = GetRnd<10>() + 1; + } else --NextJump; + } + + Input |= LastInput; + if(state.JumpRemain) Input |= K_A; + Input |= B_State; + + return Input; +} + +unsigned long long BisqBotEvaluate(unsigned FrameNo) +{ + //fprintf(stderr, "Joypad=%02X\n", RAM[0x6FC]); + /* + fprintf(stderr, "Evaluate %u, movement=%d, %u frames, nextchange=%u\n", + FrameNo, + state.MarioMovement, + state.NFrames, + NextChange); + */ + + if(!state.Active) return 912*1000000ULL; + state.Active = 0; + + if(state.Pit > 0) return 0; // dead + + unsigned score1 = 0; +/* + for(unsigned a=0; a<6; ++a) + score1 = score1*10 + RAM[0x7DD+a]; + //fprintf(stderr, "score1: %u\n", score1); +*/ + + unsigned movescore = state.MarioMovement + 512; + unsigned goalscore = state.Entry.Count() * 2048; + return (movescore + goalscore) * 1000000ULL + score1; +} + +enum BisqBotInstruction BisqBotTick(unsigned FrameNo) +{ + if(state.Pit > 0) return BisqBotRestart; + + if(FrameNo > MAX_FRAMES) return BisqBotRestart; + + //fprintf(stderr, "%u: %d\n", FrameNo, MarioMovement); + return BisqBotContinue; +} diff -bB -NaHudr fceu-0.98.15-src/src/bisqbot.cc fceu/src/bisqbot.cc --- fceu-0.98.15-src/src/bisqbot.cc 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/bisqbot.cc 2006-04-11 10:43:12.000000000 +0300 @@ -0,0 +1,518 @@ +#include +#include /* rand() */ +#include +#include +#include + +#include +#include +#include + + +#define BISQBOT_INTERNAL +#include "bisqbotdefs.hh" +#include "bisqbot.hh" +extern "C" unsigned char RAM[0x800]; +extern "C" unsigned char PALRAM[0x20]; +extern "C" void FCEU_DispMessage(const char *format, ...) + __attribute__((format(printf,1,2))); + +extern "C" unsigned char RefrRAM[0x800]; +unsigned char RefrRAM[0x800]; + +static unsigned NextChange=0; + +static boost::mt19937 rng; + +#include "rockman1sound.hh" +static class Rockman1Sound Rockman1Sound; +#include "rockman1sound.cc" + +struct BisqBotStateData +{ + /* Put here all variables that you want to be saved + * with Savestates when the core does rerecording. + * Reset() is only called when seeking back to frame 0, + * which is not always the case if you use 2 or more steps. + */ + int Goal; + double BonusX, BonusY; + unsigned NumShoots; + unsigned MaxShoots; + unsigned EventFrame; + bool Region; +}; +static class BisqBotState: public BisqBotStateBase, public BisqBotStateData +{ +public: + virtual ~BisqBotState() { } + + BisqBotState() + { + Reset(); + } + void Reset() + { + Goal = 0; + NextChange = 0; + NumShoots = 0; + BonusX = 0; + BonusY = 0; + MaxShoots = 1; + Region = false; + EventFrame = 0; + } + + void operator= (const BisqBotState& b) + { + (BisqBotStateData&)*this = b; + } + +public: +} state; + +const BisqBotStateBase* BisqBotNewSaveState() +{ + return new BisqBotState(state); +} + +void BisqBotLoadState(const BisqBotStateBase* b) +{ + state = *(BisqBotState*)b; +} + +extern "C" { +void FCEUI_GetIVectors(unsigned short *reset, unsigned short *irq, unsigned short *nmi); +unsigned SavedHScroll,SavedVScroll; +} + +void BisqBotMonitorCPU + (unsigned short PC, + unsigned char A, + unsigned char X, + unsigned char Y) +{ + static unsigned short irq=0, nmi=0, res=0; + if(!irq) { FCEUI_GetIVectors(&res,&irq,&nmi); } + +#if 0 + #if 0 + static std::map > jptpc; + static unsigned prevpc; + if(prevpc == 0x83EE + || prevpc == 0x8276 + || prevpc == 0x8803 + || prevpc == 0x8EBD + || prevpc == 0xB821 + || prevpc == 0xF243) + { + if(jptpc[prevpc].find(PC) == jptpc[prevpc].end()) + { + FCEU_DispMessage("New PC $%X in table $%X\n", PC, prevpc); + jptpc[prevpc].insert(PC); + } + } + prevpc = PC; + #endif + if(PC == 0xC563) { state.Goal += 1; FCEU_DispMessage("Got KEY\n"); } + if(PC == 0xC587) { state.Goal += 2; FCEU_DispMessage("Got DOOR\n"); } +#endif + +#if 0 +static unsigned prevpc; +unsigned addr=PC; + if(0 +|| (addr >= 0x80F0 && addr <= 0x80F2) +|| (addr >= 0x81D8 && addr <= 0x81D8) +|| (addr >= 0x81DA && addr <= 0x81DA) +) + { + FCEU_DispMessage("PC=%X A=%02X X=%02X Y=%02X prevPC=%04X\n", PC,A,X,Y, prevpc); + exit(1); + } + prevpc=PC; +#endif + + +#if 0 //ROCKMAN1 + static bool sound=false; + + if(PC == 0xD54C) sound=true; + if(PC == 0xD56E) sound=false; + //if(sound && PC == 0x9000) Rockman1Sound.Update(); + //if(sound && PC == 0x9003) Rockman1Sound.Command(A,Y); + + if(!sound && PC == 0xA238) + { + FCEU_DispMessage("Damage from enemy %02X (%u points)\n", Y,A); + state.Goal = -5; + } + if(!sound && PC == 0xBEDF) + { + FCEU_DispMessage("Enemy %02X hit with weapon %u (%d points left) - rndseed=%02X\n", + (unsigned)Y, (unsigned)RAM[0x5F], (signed char)A, (unsigned)RAM[0x46]); + if(A==0) + switch(RAM[0x46]) + { + case 0x5F: case 0x60: + case 0xC3: case 0xC4: + break; + default: + state.Goal = -5; + } + if(Y == 0x3A) state.Goal = 2; // bubblebot + } + if(!sound + && (PC == 0x9FE8)) // horiz scrolling + { + FCEU_DispMessage("Scrolling routine at PC=%04X A=%02X X=%02X Y=%02X\n", PC, A,X,Y); + state.Goal = 2; + } + if(!sound + && (PC == 0x925D)) // scroll prev room + { + FCEU_DispMessage("Scroll previous room at PC=%04X A=%02X X=%02X Y=%02X\n", PC, A,X,Y); + } + if(!sound + && (PC == 0x92A6)) // scroll next room + { + FCEU_DispMessage("Scroll next room at PC=%04X A=%02X X=%02X Y=%02X\n", PC, A,X,Y); + state.Goal = 2; + } + if(PC == 0xC912) + { + state.Goal += 2; + FCEU_DispMessage("Boss %u damaged with weapon %u (%d points left)\n", RAM[0xAC], RAM[0x5F], (signed char)A); + } + if(PC == 0xC833) + { + FCEU_DispMessage("Acquire item 0x%02X\n", A); + + //if(RAM[0x46] >= 0x30) state.Goal += 2; else + //if(A == 0x3F) state.Goal += 2; else + state.Goal = -5; + } + if(!sound + && (PC == 0xBF25)) + { + unsigned objnum = RAM[0x2F]; + state.BonusX = RAM[0x460+objnum]*256 + (unsigned short)(RAM[0x480+objnum]*256 + RAM[0x4A0+objnum])/ 256.0; + state.BonusY = (unsigned short)(RAM[0x600+objnum]*256 + RAM[0x620+objnum])/ 256.0; + + if(Y == 0x3B) + FCEU_DispMessage("Create no bonus at %.3f,%.3f\n", state.BonusX,state.BonusY); + else + FCEU_DispMessage("Create bonus 0x%02X at %.3f,%.3f\n", (unsigned)Y, state.BonusX,state.BonusY); + if(Y == 0x3F) state.Goal += 2; else state.Goal = -5; + /**/ + if(state.BonusX >= 6941.9) state.Goal = -5; + if(state.BonusX >= 6888.0 && state.BonusX < 6905.0) state.Goal = -5; + /**/ + //if(state.BonusX < 6872.0) state.Goal = -5; + } + + if(PC == 0xD4B1 && !BotFrontActive()) FCEU_DispMessage("LAG detected\n"); +#endif + if(PC == 0xD4AD) std::memcpy(RefrRAM, RAM, 0x800); + +#if 0 //ROCKMAN2 + // 90C9 = DoScrolling + if(true + && (PC == 0x9185)) // vert scrolling + { + FCEU_DispMessage("VertScroll at PC=%04X A=%02X X=%02X Y=%02X\n", PC, A,X,Y); + state.Goal += 0; + } + if(true + && (PC == 0x90D2)) // horiz scrolling + { + FCEU_DispMessage("HorizScroll at PC=%04X A=%02X X=%02X Y=%02X\n", PC, A,X,Y); + state.Goal += 2; + } + if(true + && (PC == 0x8F39)) // next-scrolling + { + FCEU_DispMessage("ScrollNextRoom at PC=%04X A=%02X X=%02X Y=%02X -- $37=%u, Rockman Y=%.2f speed %.2f, item1 %02X\n", + PC, A,X,Y, RAM[0x37], + (unsigned short)(RAM[0x4A0]*256 + RAM[0x4C0])/256.0, + (signed short)(RAM[0x640]*256 + RAM[0x660])/256.0, + RAM[0xA4]); + if(RAM[0x37] & 1) state.Goal = -5; else state.Goal += 2; + // vert = bad, horiz = good + } + if(PC == 0x80AB) + { + FCEU_DispMessage("Boss %u damaged with weapon %u (%d points left)\n", RAM[0xB3], RAM[0xB3], (signed char)A); + } + + if(!BotFrontActive()) + { + if(/*PC == 0xCFFA // megaman2 + || */PC == 0xCFF7 // rockman2 + ) FCEU_DispMessage("LAG detected at PC=%04X\n", PC); + } + + /* + static int counter=0; + if(++counter>=50000) {counter=0; + fprintf(stderr, "Object types: "); + for(unsigned a=0; a<32; ++a) + fprintf(stderr, " %u", RAM[0x400 + a]); + fprintf(stderr, "\n");}*/ + + /*if(PC == nmi) + { + FCEU_DispMessage("Y=%.2f speed=%.2f\n", + (unsigned short)(RAM[0x4A0]*256 + RAM[0x4C0])/256.0, + (signed short)(RAM[0x640]*256 + RAM[0x660])/256.0); + }*/ +#endif + +#if 0 + if(false && PC == 0x92B6) + { + FCEU_DispMessage("stage=%02X A=%02X CurScreen=%02X\n", RAM[0x31], A, RAM[0x460]); + } + if(false && PC == 0xCD8A) + { + FCEU_DispMessage("Y=%u 0C=$%02X 0D=$%02X 0E=$%02X\n", Y,RAM[12],RAM[13],RAM[14]); + fprintf(stderr, "#Actives=%u [%f] (", RAM[0x720], RAM[0x8E]/6.0); + for(unsigned a=0; a +static inline unsigned GetRnd() +{ + static boost::uniform_int g(0, mod-1); + return g(rng); +} +static inline unsigned GetRnd(unsigned mod) +{ + return boost::uniform_int (0,mod-1) (rng); +} + +unsigned char BisqBotInput(unsigned FrameNo) +{ + static const unsigned char InputTable[] = + { + K_R, + K_R, + K_R | K_A, + K_R | K_A, + K_R, + K_R, + K_R | K_A, + K_R | K_A, + K_L, + K_L | K_A, + 0 + }; + static unsigned LastInput = 0; + static unsigned A_State = 0; + static unsigned B_State = 0; + + if(!NextChange) + { + LastInput = InputTable[ GetRnd() ]; + /*if(FrameNo < 6) + NextChange = 0; + else*/ + NextChange = GetRnd<10>(); + } + else --NextChange; + +#if 0 + double RockX = + RAM[0x460]*256 + (unsigned short)(RAM[0x480]*256 + RAM[0x4A0])/ 256.0; + double RockY = (unsigned short)(RAM[0x600]*256 + RAM[0x620])/ 256.0; + double RockYS = (signed short)(RAM[0x680]*256 + RAM[0x660])/ 256.0; + double NextY = RockY-RockYS; +#endif + + // if(RockX >= 6756 && RockX < 6768) LastInput |= K_A; + // if(RockX >= 6740 && RockX < 6756) LastInput &= ~K_A; + //if(FrameNo < 10) { LastInput &= ~K_L; LastInput |= K_R; } +/* + if(RockY >= 1.5) LastInput = K_R; +*/ + + /* + if(B_State && FrameNo) + { + double RockX = (unsigned short)(RAM[0x480]*256 + RAM[0x4A0])/ 256.0; + fprintf(stderr, + "[frame %u]I think the beam went at %u... X=%.1f screen=%u\n", + FrameNo, RAM[0x5F5], RockX, RAM[0x460]); + } + + B_State = (NextY >= 112 && NextY <= 114) ? K_B : 0; + if(B_State) fprintf(stderr, "Try beam at RockY=%.1f (%+.1f)\n", RockY, RockYS); + if(RockY >= 104 && RockY <= 112 && NextY > 113) + fprintf(stderr, "Rats, this try failed Y=%.1f (%+.1f)\n", RockY, RockYS); + */ + + /* + if(FrameNo < 7) if(GetRnd<3>() == 0) Input |= K_SE; + if(FrameNo >= 12 && FrameNo < 45) if(GetRnd<20>() == 0) Input |= K_ST; + */ + + //if(FrameNo < 16) A_State = K_A; else A_State = 0; + //if(FrameNo < 43) B_State = K_B; else B_State = 0; + + bool Region = false;//RockY >= 78 && RockY < 107; + if(state.NumShoots < state.MaxShoots && GetRnd<15>() == 0 +#if 0 + && (!Region || FrameNo >= 27) +#endif + ) + { ++state.NumShoots; B_State = K_B; + if(Region) state.Region=true; + state.EventFrame = FrameNo; + } + else + B_State = 0; + + //if(B_State == K_B) { LastInput &= ~K_L; LastInput |= K_R; } + //if(FrameNo >= 8 && FrameNo < 15) LastInput |= K_A; + + //if(GetRnd<8>() != 0) A_State = K_A; else A_State = 0; + //if(GetRnd<20>() == 0) Input |= K_U; + //if(GetRnd<10>() == 0) Input |= K_ST; + //if(GetRnd<100>() == 0) Input |= K_SE; + //if(RockY < 1) A_State = 0; + + unsigned char Input = 0x00; + Input |= LastInput; + Input |= B_State; + Input |= A_State; + + return Input; +} + +unsigned long long BisqBotEvaluate(unsigned FrameNo) +{ + /* + #define OkBeam(y) ((y)==113) + + state.Goal=1; + if(OkBeam(RAM[0x5F5]) || OkBeam(RAM[0x5F6]) + || OkBeam(RAM[0x5F7]) || OkBeam(RAM[0x5F8]) + || OkBeam(RAM[0x5F9])) + { + if(RAM[0x460] == 5) // screen 5 + state.Goal = 2; + }*/ + + /* + // Fail if screen 5 isn't reached in time + if(FrameNo >= 40 && RAM[0x460] != 5) { state.Goal=-1; return 0; } + // Fail if Rockman falls off the beam too soon + if(FrameNo <= 32 && (signed char)RAM[0x600] > 5) { state.Goal=-1; return 0; } + if(state.Goal < 0) return 0; + */ + //if(FrameNo==60) state.Goal = 2; + +#if 0 /* ROCKMAN 1 */ + double RockY = (unsigned short)(RAM[0x600]*256 + RAM[0x620])/ 256.0; + double RockX = + RAM[0x460]*256 + (unsigned short)(RAM[0x480]*256 + RAM[0x4A0])/ 256.0; + double RockYS = (signed short)(RAM[0x680]*256 + RAM[0x660])/ 256.0; +#endif +#if 1 /* ROCKMAN 2 */ + double RockY = (unsigned short)(RAM[0x4A0]*256 + RAM[0x4C0])/ 256.0; + double RockX = + RAM[0x440]*256 + (unsigned short)(RAM[0x460]*256 + RAM[0x480])/ 256.0; + double RockYS = (signed short)(RAM[0x620]*256 + RAM[0x640])/ 256.0; +#endif + + //if(state.Goal < 1 && RockY >= 117.0) { state.Goal = -5; } + /* + if(RockX >= 6848 && RockX < 6868 && RockY + RockYS >= 99) state.Goal = -5; + */ + + if(state.Goal > 0) + { +#if 0 /* Shot distances in Rockman 1 */ + double NearestDistance = 256; + double NearestShot = RockX + 256; + + for(unsigned n=2; n<5; ++n) + { + if(RAM[0x600+n] == 0xF8) continue; // + double ShotX = + RAM[0x460+n]*256 + (unsigned short)(RAM[0x480+n]*256 + RAM[0x4A0+n])/ 256.0; + double Distance = ShotX - RockX; + if(Distance < 0) Distance = -Distance; + + if(Distance < NearestDistance) + { NearestDistance = Distance; NearestShot = ShotX; } + } +#endif + + return 10000000 + - FrameNo*256*130 + // - (unsigned)((RockX-6700) *256*10) + // + (unsigned)((RockY) *256*20) + // - state.EventFrame*256*10 + // + (unsigned)(state.BonusX-6700) + // + (unsigned)((NearestShot-6700)*256*30) + ; + + //return (10000-FrameNo*3) + RAM[0xA4]*20; + /* + double RockY = (unsigned short)(RAM[0x4A0]*256 + RAM[0x4C0])/ 256.0; + double YSpeed = ( signed short)(RAM[0x640]*256 + RAM[0x660])/-256.0; + + return (10000-FrameNo*3) + (unsigned)(RockY + YSpeed*3); // ok + */ + } + + return 0;//((RAM[0x460]-4)*256+RAM[0x480]); // not done +} + +enum BisqBotInstruction BisqBotTick(unsigned FrameNo, unsigned Step) +{ + if(state.Goal < 0) return BisqBotRestartStep; +#if 1 + if(state.Goal < 2 && FrameNo >= 33 && !state.Region) return BisqBotRestart; +#endif + + if(Step == 0 && state.Goal == 1) + { + state.MaxShoots = state.NumShoots+1; + return BisqBotNextStep; + } + if(state.Goal >= 2) + { + double RockY = (unsigned short)(RAM[0x4A0]*256 + RAM[0x4C0])/ 256.0; + BotFrontMsg("RockY=%.2f, BonusX=%.3f, Goal=2\n", RockY, state.BonusX); + return BisqBotAccept; + } + + // Max item1s used: 5 + //if(RAM[0xA4] < 0x1C - 2*5) return BisqBotRestart; + + return BisqBotContinue; +} diff -bB -NaHudr fceu-0.98.15-src/src/bisqbot-cv2.cc fceu/src/bisqbot-cv2.cc --- fceu-0.98.15-src/src/bisqbot-cv2.cc 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/bisqbot-cv2.cc 2006-04-11 10:43:12.000000000 +0300 @@ -0,0 +1,142 @@ +#include +#include /* rand() */ +#include + +#define BISQBOT_INTERNAL +#include "bisqbot.hh" +static const unsigned MAX_FRAMES = 900; + +/* + 80 = enter from right side + 00 = enter from left side +*/ + +extern "C" unsigned char RAM[0x800]; +extern "C" void BotFrontMsg(const char*fmt, ...); + +/* + 100 framea hätiköintivaraa. + Kyykistymisen jälkeen menee TASAN 256 framea siihen kun tuuli ilmestyy + Kun tuuli tulee, menee noin 530 frames siihen kun tulos näkyy. +*/ + +void BisqBotMonitorCPU + (unsigned short PC, + unsigned char A, + unsigned char X, + unsigned char Y) +{ +} + +static unsigned KyykFrame; +static unsigned WalkStopFrame; +static unsigned TuuliFrame; +static unsigned VerdictFrame; + +void BisqBotReset() +{ + fprintf(stderr, "restart\n"); + + unsigned extra = (rand()%32); + const unsigned begin = 1; + + KyykFrame = begin + extra; + TuuliFrame = KyykFrame+256; + VerdictFrame = TuuliFrame + 580; + + WalkStopFrame = begin + rand()%(extra+1); + + TuuliFrame += 10; +} + +static unsigned char GenRandInput() +{ + unsigned char result = 0x00; + switch(rand()%3) + { + case 0: result |= K_R; break; + case 1: result |= K_L; break; + } + if(!(rand()%3)) result |= K_A; + if(!(rand()%8)) result |= K_D; + if(!(rand()%40)) + { + result |= K_B; + if(!(rand()%4)) result |= K_U; + } + return result; +} + +unsigned char BisqBotInput(unsigned FrameNo) +{ + unsigned char Input = 0x00; + + if(FrameNo < WalkStopFrame) Input |= K_L; + if(FrameNo >= KyykFrame && FrameNo <= TuuliFrame) + { + if(!(rand()%100)) Input |= K_L; + if(!(rand()%100)) Input |= K_R; + Input |= K_D; + } + if(FrameNo > TuuliFrame) + Input |= GenRandInput(); + return Input; +} + +unsigned BisqBotEvaluate(unsigned FrameNo) +{ + if(RAM[0x30] == 5) return 1; + return 0; //dame +} + +extern "C" void BotFrontMsg(const char*fmt, ...); +extern "C" void FCEUI_StopMovie(void); + +enum BisqBotInstruction BisqBotTick(unsigned FrameNo) +{ + unsigned Place = RAM[0x30]; + unsigned Scene = RAM[0x50]; + unsigned Screen = RAM[0x51]; + + if(Scene == 4 && + (Screen == 0x80 +// || Screen == 0xFF + || Screen == 0x00)) + { + BotFrontMsg("%u: Scene %02X.%02X.%02X\n", FrameNo, Place,Scene,Screen); + return BisqBotRestart; + } + + if(FrameNo == WalkStopFrame) fprintf(stderr, "- %u walkstop\n", FrameNo); + if(FrameNo == KyykFrame) fprintf(stderr, "- %u kyyk\n", FrameNo); + if(FrameNo == TuuliFrame) fprintf(stderr, "- %u showtime\n", FrameNo); + if(FrameNo == VerdictFrame) fprintf(stderr, "- %u verdict time\n", FrameNo); + + if(FrameNo >= VerdictFrame) + { + BotFrontMsg("%u: Scene %02X.%02X.%02X\n", FrameNo, Place,Scene,Screen); + if(Scene != 1) + { + fprintf(stderr, "Woohoo...\n"); + FCEUI_StopMovie(); + return BisqBotAccept; + } + if(!BisqBotEvaluate(FrameNo)) + { + srand(time(0)); + return BisqBotRestart; + } + } + if(BisqBotEvaluate(FrameNo) > 0) + { + fprintf(stderr, "It worked?!?\n"); + FCEUI_StopMovie(); + return BisqBotAccept; + } + if(FrameNo > MAX_FRAMES) + { + BotFrontMsg("%u: Scene %02X.%02X.%02X (did nothing)\n", FrameNo, Place,Scene,Screen); + return BisqBotRestart; + } + return BisqBotContinue; +} diff -bB -NaHudr fceu-0.98.15-src/src/bisqbotdefs.hh fceu/src/bisqbotdefs.hh --- fceu-0.98.15-src/src/bisqbotdefs.hh 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/bisqbotdefs.hh 2006-04-11 10:43:10.000000000 +0300 @@ -0,0 +1,14 @@ +/* Maximum number of parts. */ +static const unsigned MAX_PARTS = 1; + +/* Maximum number each part may be refined. */ +/* i.e. if part2 is refined more than N times, it returns to part 1, + * and may do another N at part2 later. + */ +static const unsigned MAX_REFINES[MAX_PARTS] = { 40000000/*, 125000*/ }; + +/* Maximum length of movie when in each part. + * i.e. if part1max = 20 and part2max = 60, + * it means that maximum length of movie is 60 frames. + */ +static const unsigned MAX_LENGTH[MAX_PARTS] = { 90 /*3,30*/ }; diff -bB -NaHudr fceu-0.98.15-src/src/bisqbot-gutsmankill.cc fceu/src/bisqbot-gutsmankill.cc --- fceu-0.98.15-src/src/bisqbot-gutsmankill.cc 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/bisqbot-gutsmankill.cc 2006-04-11 10:43:12.000000000 +0300 @@ -0,0 +1,156 @@ +#include +#include /* rand() */ +#include + +#define BISQBOT_INTERNAL +#include "bisqbot.hh" +static const unsigned MAX_FRAMES = 238; + +static BisqBotVar Bonus, Hurt, Item, Kill, BossHit; +static BisqBotVar PauseActivated; +static unsigned LastTick; + +extern "C" unsigned char RAM[0x800]; + +void BisqBotMonitorCPU( + unsigned short PC, + unsigned char A, + unsigned char X, + unsigned char Y) +{ + /* GAME MONITORING */ + /* A, X, Y, PC correspond to the values of the CPU registers. */ + + static const unsigned short FrameUpd = 0xD57D; + static const unsigned short RandomFunc = 0xC5AB; + static const unsigned short CreateDrop = 0xBF25; + static const unsigned short HurtFunc = 0xA244; + static const unsigned short GotItem = 0xC833; + static const unsigned short KillFunc = 0xC219; + static const unsigned short EnemyKill = 0xBEEC; + static const unsigned short BossDamaged= 0xC90F; + static const unsigned short BossKilled = 0xC916; + static const unsigned short SelectPushed= 0x91D1; + static const unsigned short PauseRelease= 0x91F5; + + unsigned char GameFrame = RAM[0x23]; + unsigned char Bank = RAM[0x42]; + + #define TestPC(rule) \ + if(rule) fprintf(stderr, "[%u,%02X,%02X]Match %s (%04X,%02X,%02X,%02X)\n", \ + LastTick, GameFrame, Bank, \ + #rule, \ + PC,A,X,Y); \ + if(rule) + + TestPC(PC == CreateDrop) Bonus.Set(Y); + TestPC(PC == HurtFunc) Hurt.Set(1); + TestPC(PC == KillFunc) Hurt.Set(2); + TestPC(PC == GotItem) Item.Set(A); + TestPC(PC == EnemyKill) Kill.Set(A); + TestPC(PC == BossDamaged) BossHit.Set(1); + TestPC(PC == BossKilled) BossHit.Set(2); + TestPC(PC == SelectPushed && Bank == 0x05 && A == 0x22) + { + PauseActivated.Set(1); + } + TestPC(PC == PauseRelease && Bank == 0x05 && A == RAM[0x95]) + { + } +} + +static bool PauseActive = false; +static bool WantPause = false; +static int BFrame=0, UnPause=0; + +void BisqBotReset() +{ + Bonus.Clear(); + Hurt.Clear(); + Item.Clear(); + Kill.Clear(); + + BossHit.Clear(); + PauseActivated.Clear(); + WantPause = false; + PauseActive = false; + UnPause=0; + + BFrame = 8 + rand()%20; + fprintf(stderr, "restart\n"); +} + +unsigned char BisqBotInput(unsigned FrameNo) +{ + static const unsigned char InputTable[] = + { + 0x00, 0x01, + 0x40, 0x41, + 0x80, 0x81, + 0x01, 0x41, 0x81, + 0x01, 0x41, 0x81, + 0x01, 0x41, 0x81 + }; + static unsigned LastInput = 0x00; + unsigned char Input = 0x00; + //if(!(rand()%20)) Input |= 0x02; + if(FrameNo==BFrame) Input |= 0x02; + if(!(rand()%10)) LastInput = InputTable[rand()%sizeof(InputTable)]; + + if(FrameNo < BFrame) LastInput = (LastInput&0x3F) | 0x80; + + Input |= LastInput; + + if(WantPause) + { + Input |= 0x04; //select button + } + else if(PauseActive) + { + if(FrameNo == UnPause) + { + Input |= 0x04; + PauseActive=false; + UnPause=0; + } + } + + return Input; +} + +enum BisqBotInstruction BisqBotTick(unsigned FrameNo) +{ +LastTick=FrameNo; + if(BossHit.Has(1) && !BossHit.Has(2)) + { + BossHit.Clear(); + WantPause = true; + } + if(PauseActivated.Count() > 0) + { + PauseActivated.Clear(); + if(!PauseActive) + { + WantPause=false; + PauseActive=true; + UnPause = FrameNo + 7+rand()%6; + fprintf(stderr, "UnPause = %u\n", UnPause-FrameNo); + srand(time(NULL)); + } + } + + if(/*Hurt.Count() + || Item.Count() + || !Bonus.LimitedTo(0x3B, 0x3F) + || */FrameNo > MAX_FRAMES) + { + return BisqBotRestart; + } + + if(BossHit.Has(2)) + //if(Bonus.Has(0x3F, 1)) + { + return BisqBotAccept; + } + return BisqBotContinue; +} diff -bB -NaHudr fceu-0.98.15-src/src/bisqbot.hh fceu/src/bisqbot.hh --- fceu-0.98.15-src/src/bisqbot.hh 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/bisqbot.hh 2006-04-11 10:43:12.000000000 +0300 @@ -0,0 +1,89 @@ +#ifdef __cplusplus +extern "C" { +#endif + +enum Keys +{ + K_A = 0x01, + K_B = 0x02, + K_SE= 0x04, + K_ST= 0x08, + K_U = 0x10, + K_D = 0x20, + K_L = 0x40, + K_R = 0x80 +}; + +void BisqBotMonitorCPU(unsigned short PC, unsigned char A, unsigned char X, unsigned char Y); + +void BisqBotReset(); +unsigned char BisqBotInput(unsigned FrameNo); + +enum BisqBotInstruction +{ + BisqBotContinue, + BisqBotRestartStep, + BisqBotRestart, + BisqBotNextStep, + BisqBotAccept +}; + +enum BisqBotInstruction BisqBotTick(unsigned FrameNo, unsigned Step); + +unsigned long long BisqBotEvaluate(unsigned FrameNo); + + + + +#ifdef BISQBOT_INTERNAL +class BisqBotStateBase +{ +public: + virtual ~BisqBotStateBase() { } +}; +const BisqBotStateBase* BisqBotNewSaveState(); +void BisqBotLoadState(const BisqBotStateBase* b); + +class BisqBotVar +{ +public: + void Set(unsigned char value) { values.push_back(value); } + void Clear() { values.clear(); } + bool Has(unsigned char v, unsigned min_count=1) const + { + for(unsigned a=0; min_count > 0 && a < values.size(); ++a) + if(values[a] == v) --min_count; + return min_count == 0; + } + bool LimitedTo(unsigned char a,unsigned char b) const + { + for(unsigned ind=0; ind values; +}; +#endif + +extern int BotFrontDisableVideo; + +void BotFrontMsg(const char*fmt, ...); +void BotFrontStart(); +void BotFrontEnd(); +void BotFrontToggle(); +int BotFrontActive(); +unsigned BotFrontGetKeymask(); +void BotFrontIter(); + +#ifdef __cplusplus +} +#endif diff -bB -NaHudr fceu-0.98.15-src/src/bisqbot-mario.cc fceu/src/bisqbot-mario.cc --- fceu-0.98.15-src/src/bisqbot-mario.cc 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/bisqbot-mario.cc 2006-04-11 10:43:11.000000000 +0300 @@ -0,0 +1,103 @@ +#include +#include /* rand() */ +#include + +#define BISQBOT_INTERNAL +#include "bisqbot.hh" +static const unsigned MAX_FRAMES = 120; + +extern "C" unsigned char RAM[0x800]; +extern "C" void BotFrontMsg(const char*fmt, ...); + +static unsigned PrevMarioX = 0, NFrames=0; +static unsigned MarioX = 0; +static int MarioMovement; + +void BisqBotMonitorCPU + (unsigned short PC, + unsigned char A, + unsigned char X, + unsigned char Y) +{ + /* GAME MONITORING */ + /* A, X, Y, PC correspond to the values of the CPU registers. */ + if(PC == 0x8082) + { + unsigned MarioXPos = RAM[0x86]; + unsigned MarioYPos = RAM[0xCE]; + unsigned ScrollBegin = RAM[0x73F]; + + unsigned MarioScreenX = (unsigned char)(MarioXPos-ScrollBegin+256); + + MarioX = MarioXPos; + if(NFrames++ > 0) + MarioMovement += (signed char)(MarioX - PrevMarioX); + PrevMarioX = MarioX; + } +} + +void BisqBotReset() +{ + fprintf(stderr, "restart\n"); + + PrevMarioX = 0; + NFrames = 0; + MarioX = 0; + MarioMovement = 0; +} + +unsigned char BisqBotInput(unsigned FrameNo) +{ + static const unsigned char InputTable[] = + { + K_R, + K_R | K_A, + K_L, + K_L | K_A, + K_B | K_R, + K_B | K_R | K_A, + K_B | K_L, + K_B | K_L | K_A, + + K_B | K_R, + K_B | K_R | K_A, + K_B | K_R, + K_B | K_R | K_A, + K_B | K_R, + K_B | K_R | K_A, + K_B | K_R, + K_B | K_R | K_A, + K_B | K_R, + K_B | K_R | K_A, + K_B | K_R, + K_B | K_R | K_A, + K_B | K_R, + K_B | K_R | K_A, + K_B | K_R, + K_B | K_R | K_A, + + K_B | K_R | K_L, + K_R | K_L + }; + + static unsigned LastInput = 0x00; + unsigned char Input = 0x00; + + if(!(rand()%20)) LastInput = InputTable[rand()%sizeof(InputTable)]; + + Input |= LastInput; + + return Input; +} + +unsigned BisqBotEvaluate(unsigned FrameNo) +{ + return MarioMovement + 512; +} + +enum BisqBotInstruction BisqBotTick(unsigned FrameNo) +{ + if(FrameNo > MAX_FRAMES) return BisqBotRestart; + fprintf(stderr, "%u: %d\n", FrameNo, MarioMovement); + return BisqBotContinue; +} diff -bB -NaHudr fceu-0.98.15-src/src/bisqbot-rockman.cc fceu/src/bisqbot-rockman.cc --- fceu-0.98.15-src/src/bisqbot-rockman.cc 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/bisqbot-rockman.cc 2006-04-11 10:43:10.000000000 +0300 @@ -0,0 +1,249 @@ +#include +#include /* rand() */ +#include + +#define BISQBOT_INTERNAL +#include "bisqbot.hh" +static const unsigned MAX_FRAMES = 120; + +static BisqBotVar Bonus, Hurt, Item, Kill, BossHit; +static BisqBotVar PauseActivated, Scrolling; +static unsigned LastTick; + +/* Scrolling: + 0,1,2,3 = r,u,l,d + 5=prev, 6=next +*/ + +extern "C" unsigned char RAM[0x800]; +extern "C" void BotFrontMsg(const char*fmt, ...); + +static bool InSoundCode=false; + +void BisqBotMonitorCPU + (unsigned short PC, + unsigned char A, + unsigned char X, + unsigned char Y) +{ + /* GAME MONITORING */ + /* A, X, Y, PC correspond to the values of the CPU registers. */ + + if(PC == 0xD551) { InSoundCode=true; return; } + if(PC == 0xD554) { InSoundCode=false; return; } + if(InSoundCode) return; + + static const unsigned short FrameUpd = 0xD57D; + static const unsigned short RandomFunc = 0xC5AB; + static const unsigned short CreateDrop = 0xBF25; + static const unsigned short HurtFunc = 0xA244; + static const unsigned short GotItem = 0xC833; + static const unsigned short KillFunc = 0xC219; + static const unsigned short EnemyKill = 0xBEEC; + static const unsigned short BossDamaged= 0xC90F; + static const unsigned short BossKilled = 0xC916; + static const unsigned short SelectPushed= 0x91D1; + static const unsigned short PauseRelease= 0x91F5; + static const unsigned short EnemyCreate= 0xF663; + static const unsigned short HorizScroll= 0x9FE8; + static const unsigned short VertScroll= 0x92A6; + static const unsigned short PrevScroll= 0x925B; + static const unsigned short NextScroll= 0x92A6; + + unsigned char GameFrame = RAM[0x23]; + unsigned char Bank = RAM[0x42]; + + #define TestPC(rule) \ + if(rule) BotFrontMsg("[%u,%02X,%02X]Match %s (%04X,%02X,%02X,%02X)\n", \ + LastTick, GameFrame, Bank, \ + #rule, \ + PC,A,X,Y); \ + if(rule) + +#if 0 + // Display Rockman's Y pos + if(PC == FrameUpd) fprintf(stderr, "%02X ", RAM[0x600]); +#endif + + TestPC(PC == CreateDrop) Bonus.Set(Y); + TestPC(PC == HurtFunc) Hurt.Set(1); + TestPC(PC == KillFunc) Hurt.Set(2); + TestPC(PC == GotItem) Item.Set(A); + TestPC(PC == EnemyKill) Kill.Set(A); + TestPC(PC == BossDamaged) BossHit.Set(1); + TestPC(PC == BossKilled) BossHit.Set(2); + TestPC(PC == SelectPushed && Bank == 0x05) + { + PauseActivated.Set(1); + } + TestPC(PC == PauseRelease && Bank == 0x05) + { + } + TestPC(PC == EnemyCreate); + TestPC(PC == HorizScroll && Bank == 0x05) + { + Scrolling.Set(RAM[0x26] & 3); + } + TestPC(PC == VertScroll && Bank == 0x05) + { + Scrolling.Set(RAM[0x26] & 3); + } + TestPC(PC == PrevScroll && Bank == 0x05) + { + Scrolling.Set(5); + } + TestPC(PC == NextScroll && Bank == 0x05) + { + Scrolling.Set(6); + } +} + +static bool PauseActive = false; +static bool WantPause = false; +static int UnPause=0; +static int Climb=0; + +void BisqBotReset() +{ + Bonus.Clear(); + Hurt.Clear(); + Item.Clear(); + Kill.Clear(); + BossHit.Clear(); + + PauseActivated.Clear(); + Scrolling.Clear(); + + WantPause = false; + PauseActive = false; + Climb = 0; + UnPause=0; + + fprintf(stderr, "restart\n"); +} + +unsigned char BisqBotInput(unsigned FrameNo) +{ + static const unsigned char InputTable[] = + { + K_L, + K_L | K_A, + K_L | K_U | K_A, + K_R, + K_R | K_A, + K_R | K_U | K_A, + + K_A, K_A, K_A, K_A, K_A, + K_U | K_A + }; + + static const unsigned ClimbFlags = K_U | K_D; + static unsigned LastInput = 0x00; + unsigned char Input = 0x00; + +// if(!(rand()%40)) Input |= K_B; +// if(!(rand()%20)) Input |= K_ST; +// if(!(rand()%30)) Input |= K_SE; + +// if(!(rand()%20)) LastInput ^= K_L; +// if(!(rand()%20)) LastInput ^= K_R; +// if(!(rand()%20)) LastInput ^= K_D; +// if(!(rand()%20)) LastInput ^= K_U; +// if(!(rand()%30)) LastInput ^= K_A; + +// if(!rand()%30)) LastInput ^= K_U; + + if(!(rand()%20)) LastInput = InputTable[rand()%sizeof(InputTable)]; + +// LastInput |= K_A; +// LastInput |= K_L; + + Input |= LastInput; + + /* + if(Climb > 0) + { + Input = Climb; + } + else if(Input & ClimbFlags) + { + Climb = Input & ClimbFlags; + } + */ + + if(WantPause) + { + Input |= K_SE; //select button + } + else if(PauseActive) + { + if(FrameNo == UnPause) + { + Input |= K_SE; + PauseActive=false; + UnPause=0; + } + } + + return Input; +} + +enum BisqBotInstruction BisqBotTick(unsigned FrameNo) +{ + LastTick=FrameNo; + if(BossHit.Has(1) && !BossHit.Has(2)) + { + BossHit.Clear(); + WantPause = true; + } + if(PauseActivated.Count() > 0) + { + WantPause=false; + PauseActivated.Clear(); + if(!PauseActive) + { + PauseActive=true; + UnPause = FrameNo + 2; + srand(time(NULL)); + } + } + +/**/ + if(Hurt.Count()) + { + Hurt.Clear(); + WantPause=true; + } +/**/ + +/**/ + if(RAM[0x400] == 0x06) + { + fprintf(stderr, "Standing at %02X\n", RAM[0x600]); + if(RAM[0x600] > 0x74) return BisqBotRestart; + return BisqBotAccept; + } + if(FrameNo > MAX_FRAMES) return BisqBotRestart; + return BisqBotContinue; +/**/ + + if(Hurt.Has(2)) srand(time(NULL)); + + if(Hurt.Count() + || Item.Count() + //|| RAM[0x600] > 0x64 + || !Bonus.LimitedTo(0x3B, 0x3F) + || FrameNo > MAX_FRAMES) + { + return BisqBotRestart; + } + + //if(BossHit.Has(2)) + //if(Bonus.Has(0x3F, 1)) + //if(Kill.Count()) + if(Scrolling.Has(6)) + { + return BisqBotAccept; + } + return BisqBotContinue; +} diff -bB -NaHudr fceu-0.98.15-src/src/botfront.cc fceu/src/botfront.cc --- fceu-0.98.15-src/src/botfront.cc 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/botfront.cc 2006-04-11 10:43:12.000000000 +0300 @@ -0,0 +1,346 @@ +#include +#include +#include +#include +#include + +#include +#include + +#include "types.h" +extern "C" { +#include "state.h" +} +#include "fceu.h" + +#define BISQBOT_INTERNAL +#include "bisqbotdefs.hh" +#include "bisqbot.hh" + +#include "coroutine.h" + +int BotFrontDisableVideo=0; + +struct SaveState +{ + std::vector Data; + const BisqBotStateBase* Bot; + + SaveState() : Bot(0) { } + ~SaveState() { delete Bot; } + + void Create() + { + delete Bot; + + FILE*fp = tmpfile(); + FCEUSS_SaveFP(fp); + rewind(fp); + + fseek(fp,0,SEEK_END); + long pos = ftell(fp); + rewind(fp); + + SaveState result; + Data.resize(pos); + fread(&Data[0], 1, pos, fp); + fclose(fp); + + Bot = BisqBotNewSaveState(); + } + void Load() + { + FILE*fp = tmpfile(); + fwrite(&Data[0], 1, Data.size(), fp); + rewind(fp); + FCEUSS_LoadFP(fp, 0); + fclose(fp); + + BisqBotLoadState(Bot); + } +private: + SaveState(const SaveState& b); + void operator=(const SaveState& b); +}; + +static unsigned char CurInput; +static bool Active=false; + +static void DisplaySeq(const std::vector& Seq) +{ + std::stringstream msg; + for(unsigned a=0; a /* For file locking */ +void BotFrontMsg(const char*fmt, ...) +{ + FILE*fp; + + va_list ap; + va_start(ap,fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + fp = fopen("rockman.log", "at"); + if(!fp) fp = fopen("rockman.log", "wt"); + if(!fp) return; + flock(fileno(fp), LOCK_EX); + fseek(fp,0,SEEK_END); + + va_start(ap,fmt); + vfprintf(fp, fmt, ap); + va_end(ap); + + fclose(fp); +} + +void BotFrontStart() +{ + fprintf(stderr,"BotFrontStart\n"); + BotFrontDisableVideo=1; + Active=true; +} + +void BotFrontEnd() +{ + fprintf(stderr,"BotFrontEnd\n"); + BisqBotReset(); + BotFrontDisableVideo=0; + Active=false; +} + +void BotFrontToggle() +{ + if(!Active) + BotFrontStart(); + else + BotFrontEnd(); +} + +int BotFrontActive() +{ + return Active ? 1 : 0; +} + +unsigned BotFrontGetKeymask() +{ + if(Active) + { + //fprintf(stderr, "CurInput: %02X\n", CurInput); + return CurInput; + } + //fprintf(stderr, "Nul keymask\n"); + return 0; +} + +/* + FCEU main loop: + 1. Emulate frame + 2. Read keyboard input (BotFrontIter) + 3. Update joypad input (BotFrontGetKeymask) + + It is actually possible for keyboard input to be + read multiple times per frame... Currently we hope + this don't happen. +*/ + +struct Attempt +{ + std::vector Seq; + SaveState anchor; + unsigned retry_count; + unsigned retry_max; + unsigned frame_begin; + unsigned frame_count; + unsigned frame_max; + + void Init(unsigned Step, unsigned Frameno) + { + Seq.resize(Frameno); + anchor.Create(); + retry_count = 0; + retry_max = MAX_REFINES[Step]; + frame_begin = Frameno; + frame_count = Frameno; + frame_max = MAX_LENGTH[Step]; + } + void Reset() + { + Seq.resize(frame_begin); + frame_count = frame_begin; + anchor.Load(); + if(frame_count == 0) BisqBotReset(); + ++retry_count; + } +}; + +void BotFrontIter() +{ + scrBegin; +Restart: + while(!Active) + { + BisqBotEvaluate(0); + BisqBotReset(); + scrReturnV; + } + + BotFrontMsg("--------------- New run ------------------ \n"); + + #define RunFrameWith(k) \ + CurInput = (k); \ + FCEUI_FrameAdvance(); \ + scrReturnV; if(!Active)goto Restart; + + static std::vector BestSeq; + static unsigned long long BestScore; + + static Attempt Steps[MAX_PARTS]; + static unsigned CurStep; + + if(!FCEUI_EmulationPaused()) FCEUI_ToggleEmulationPause(); + + CurStep=0; + Steps[0].Init(0, 0); + Steps[0].Reset(); + + BestSeq.clear(); + BestScore = 0; + + /* MAIN LOOP */ + for(;;) + { + /* All frames handled? */ + if(Steps[CurStep].frame_count >= Steps[CurStep].frame_max) + { + TryOver: + /* Return to the beginning of this step (and possibly, + * to the end of the previous step) + */ + Steps[CurStep].Reset(); + + /* Check retry counter */ + if(Steps[CurStep].retry_count < Steps[CurStep].retry_max) + { + /* One more time */ + ++Steps[CurStep].retry_count; + continue; + } + /* All retries exhausted */ + if(CurStep > 0) + { + BotFrontMsg("*** Return step %u->%u\n", CurStep,CurStep-1); + /* Back to previous level */ + --CurStep; + goto TryOver; + } + /* End loop */ + break; + } + + /* Run frame. Scope the "k" off. */ + if(true) + { + static unsigned char k; + //fprintf(stderr, "Frame %u\r", Steps[CurStep].frame_count); + k = BisqBotInput(Steps[CurStep].frame_count++); + Steps[CurStep].Seq.push_back(k); + RunFrameWith(k); + } + + /* Let BisqBot analyze how we're doing */ + unsigned long long Score = BisqBotEvaluate(Steps[CurStep].frame_count); + bool Restart=false; + switch(BisqBotTick(Steps[CurStep].frame_count, CurStep)) + { + case BisqBotRestart: + CurStep=0; // passthru + case BisqBotRestartStep: + { + /* Try over */ + Restart=true; + break; + } + case BisqBotContinue: + { + /* ok */ + break; + } + case BisqBotNextStep: + { + /* Go to next step */ + if(CurStep+1 < MAX_PARTS) + { + BotFrontMsg("*** Advance step %u->%u at frame %u (score %llu)\n", + CurStep,CurStep+1, Steps[CurStep].frame_count, Score); + DisplaySeq(Steps[CurStep].Seq); + BotFrontMsg("\n"); + + Steps[CurStep+1].Init(CurStep+1, Steps[CurStep].frame_count); + Steps[CurStep+1].Seq = Steps[CurStep].Seq; + ++CurStep; + } + break; + } + case BisqBotAccept: + { + /* Bingo */ + const char* beep = ""; + if(Score >= BestScore) beep = ""; + + BotFrontMsg("\n*** %s Bingo in %u frames (score: %llu):\n", + beep, Steps[CurStep].frame_count, Score); + DisplaySeq(Steps[CurStep].Seq); + BotFrontMsg("\n\n"); + + Restart=true; + break; + } + } + if(Score > BestScore) + { + BestScore = Score; + BestSeq = Steps[CurStep].Seq; + } + if(Restart) goto TryOver; + } + + /* Lastly, apply the best sequence. Shield with a scope again. */ + if(true) + { + Steps[0].Reset(); + + static unsigned frameno; + for(frameno = 0; frameno < BestSeq.size(); ++frameno) + { + RunFrameWith(BestSeq[frameno]); + } + } + + #undef RunFrameWith + +End: ; + BotFrontEnd(); + + scrFinishV; +} diff -bB -NaHudr fceu-0.98.15-src/src/COMPILE fceu/src/COMPILE --- fceu-0.98.15-src/src/COMPILE 2006-04-11 10:43:18.000000000 +0300 +++ fceu/src/COMPILE 1970-01-01 02:00:00.000000000 +0200 @@ -1 +0,0 @@ -# dummy diff -bB -NaHudr fceu-0.98.15-src/src/coroutine.h fceu/src/coroutine.h --- fceu-0.98.15-src/src/coroutine.h 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/coroutine.h 2006-04-11 10:43:12.000000000 +0300 @@ -0,0 +1,181 @@ +/* coroutine.h + * + * Coroutine mechanics, implemented on top of standard ANSI C. See + * http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html for + * a full discussion of the theory behind this. + * + * To use these macros to define a coroutine, you need to write a + * function that looks something like this. + * + * [Simple version using static variables (scr macros)] + * int ascending (void) { + * static int i; + * + * scrBegin; + * for (i=0; i<10; i++) { + * scrReturn(i); + * } + * scrFinish(-1); + * } + * + * [Re-entrant version using an explicit context structure (ccr macros)] + * int ascending (ccrContParam) { + * ccrBeginContext; + * int i; + * ccrEndContext(foo); + * + * ccrBegin(foo); + * for (foo->i=0; foo->i<10; foo->i++) { + * ccrReturn(foo->i); + * } + * ccrFinish(-1); + * } + * + * In the static version, you need only surround the function body + * with `scrBegin' and `scrFinish', and then you can do `scrReturn' + * within the function and on the next call control will resume + * just after the scrReturn statement. Any local variables you need + * to be persistent across an `scrReturn' must be declared static. + * + * In the re-entrant version, you need to declare your persistent + * variables between `ccrBeginContext' and `ccrEndContext'. These + * will be members of a structure whose name you specify in the + * parameter to `ccrEndContext'. + * + * The re-entrant macros will malloc() the state structure on first + * call, and free() it when `ccrFinish' is reached. If you want to + * abort in the middle, you can use `ccrStop' to free the state + * structure immediately (equivalent to an explicit return() in a + * caller-type routine). + * + * A coroutine returning void type may call `ccrReturnV', + * `ccrFinishV' and `ccrStopV', or `scrReturnV', to avoid having to + * specify an empty parameter to the ordinary return macros. + * + * Ground rules: + * - never put `ccrReturn' or `scrReturn' within an explicit `switch'. + * - never put two `ccrReturn' or `scrReturn' statements on the same + * source line. + * + * The caller of a static coroutine calls it just as if it were an + * ordinary function: + * + * void main(void) { + * int i; + * do { + * i = ascending(); + * printf("got number %d\n", i); + * } while (i != -1); + * } + * + * The caller of a re-entrant coroutine must provide a context + * variable: + * + * void main(void) { + * ccrContext z = 0; + * do { + * printf("got number %d\n", ascending (&z)); + * } while (z); + * } + * + * Note that the context variable is set back to zero when the + * coroutine terminates (by crStop, or by control reaching + * crFinish). This can make the re-entrant coroutines more useful + * than the static ones, because you can tell when they have + * finished. + * + * If you need to dispose of a crContext when it is non-zero (that + * is, if you want to stop calling a coroutine without suffering a + * memory leak), the caller should call `ccrAbort(ctx)' where `ctx' + * is the context variable. + * + * This mechanism could have been better implemented using GNU C + * and its ability to store pointers to labels, but sadly this is + * not part of the ANSI C standard and so the mechanism is done by + * case statements instead. That's why you can't put a crReturn() + * inside a switch() statement. + */ + +/* + * coroutine.h is copyright 1995,2000 Simon Tatham. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL SIMON TATHAM BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * $Id: coroutine.h 6386 2005-10-12 09:13:42Z simon $ + */ + +#ifndef COROUTINE_H +#define COROUTINE_H + +#include + +/* + * `scr' macros for static coroutines. + */ + +#define scrBegin static int scrLine = 0; switch(scrLine) { case 0:; +#define scrFinish(z) } scrLine=0; return (z) +#define scrFinishV } scrLine=0; return + +#define scrReturn(z) \ + do {\ + scrLine=__LINE__;\ + return (z); case __LINE__:;\ + } while (0) +#define scrReturnV \ + do {\ + scrLine=__LINE__;\ + return; case __LINE__:;\ + } while (0) + +/* + * `ccr' macros for re-entrant coroutines. + */ + +#define ccrContParam void **ccrParam + +#define ccrBeginContext struct ccrContextTag { int ccrLine +#define ccrEndContext(x) } *x = *ccrParam + +#define ccrBegin(x) if(!x) {x= *ccrParam=malloc(sizeof(*x)); x->ccrLine=0;}\ + if (x) switch(x->ccrLine) { case 0:; +#define ccrFinish(z) } free(*ccrParam); *ccrParam=0; return (z) +#define ccrFinishV } free(*ccrParam); *ccrParam=0; return + +#define ccrReturn(z) \ + do {\ + ((struct ccrContextTag *)*ccrParam)->ccrLine=__LINE__;\ + return (z); case __LINE__:;\ + } while (0) +#define ccrReturnV \ + do {\ + ((struct ccrContextTag *)*ccrParam)->ccrLine=__LINE__;\ + return; case __LINE__:;\ + } while (0) + +#define ccrStop(z) do{ free(*ccrParam); *ccrParam=0; return (z); }while(0) +#define ccrStopV do{ free(*ccrParam); *ccrParam=0; return; }while(0) + +#define ccrContext void * +#define ccrAbort(ctx) do { free (ctx); ctx = 0; } while (0) + +#endif /* COROUTINE_H */ diff -bB -NaHudr fceu-0.98.15-src/src/drawing.h fceu/src/drawing.h --- fceu-0.98.15-src/src/drawing.h 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drawing.h 2006-04-11 10:43:10.000000000 +0300 @@ -1,3 +1,5 @@ +#include + void DrawTextLineBG(uint8 *dest) { int x,y; @@ -11,7 +13,10 @@ else offs=otable[y]; for(x=offs;x<(256-offs);x++) - dest[y*256+x]=(dest[y*256+x]&0x0f)|0xC0;//&=0xe0; //0x80; + { + // Choose the dimmest set of colours and then dim that + dest[y*256+x]=(dest[y*256+x]&0x0F)|0xC0; + } } } @@ -22,10 +27,27 @@ uint8 *t; howlong--; t=XBuf+(FSettings.LastSLine-16)*256; + + /* + FCEU palette: + $00: [8] unvpalette found in palettes/palettes.h + black, white, black, greyish, redish, bright green, bluish + $80: + nes palette + $C0: + dim version of nes palette + + */ + if(t>=XBuf) { - DrawTextLineBG(t); - DrawTextTrans(t+256*3+(128-strlen(errmsg)*4),256,(uint8 *)errmsg,4); + int color = 0x20; + if(howlong == 39) color = 0x38; + if(howlong <= 30) color = 0x2C; + if(howlong <= 20) color = 0x1C; + if(howlong <= 10) color = 0x11; + if(howlong <= 5) color = 0x1; + DrawTextTrans(t, 256, (uint8 *)errmsg, color+0x80); } } } @@ -41,18 +63,128 @@ 0x18,0x18,0x18,0x18,0xf8,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xf8,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0xff,0x18,0x18,0x18,0x18,0x18,0xf8,0x18,0xf8,0x18,0x18,0x18,0x6c,0x6c,0x6c,0x6c,0xec,0x6c,0x6c,0x6c,0x6c,0x6c,0xec,0x0c,0xfc,0x00,0x00,0x00,0x00,0x00,0xfc,0x0c,0xec,0x6c,0x6c,0x6c,0x6c,0x6c,0xef,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0xef,0x6c,0x6c,0x6c,0x6c,0x6c,0xec,0x0c,0xec,0x6c,0x6c,0x6c,0x00,0x00,0xff,0x00,0xff,0x00,0x00,0x00,0x6c,0x6c,0xef,0x00,0xef,0x6c,0x6c,0x6c,0x18,0x18,0xff,0x00,0xff,0x00,0x00,0x00,0x6c,0x6c,0x6c,0x6c,0xff,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0xff,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0xff,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0xfc,0x00,0x00,0x00,0x18,0x18,0xf8,0x18,0xf8,0x00,0x00,0x00,0x00,0x00,0xf8,0x18,0xf8,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0xfc,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0xff,0x6c,0x6c,0x6c,0x18,0x18,0xff,0x18,0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x18,0x18,0x18,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, 0x00,0x00,0x6e,0x3b,0x13,0x3b,0x6e,0x00,0x00,0x1e,0x33,0x1f,0x33,0x1f,0x03,0x03,0x00,0x3f,0x33,0x03,0x03,0x03,0x03,0x00,0x00,0x7f,0x36,0x36,0x36,0x36,0x36,0x00,0x3f,0x33,0x06,0x0c,0x06,0x33,0x3f,0x00,0x00,0x00,0x7e,0x1b,0x1b,0x1b,0x0e,0x00,0x00,0x66,0x66,0x66,0x66,0x3e,0x06,0x03,0x00,0x6e,0x3b,0x18,0x18,0x18,0x18,0x00,0x3f,0x0c,0x1e,0x33,0x33,0x1e,0x0c,0x3f,0x1c,0x36,0x63,0x7f,0x63,0x36,0x1c,0x00,0x1c,0x36,0x63,0x63,0x36,0x36,0x77,0x00,0x38,0x0c,0x18,0x3e,0x33,0x33,0x1e,0x00,0x00,0x00,0x7e,0xdb,0xdb,0x7e,0x00,0x00,0x60,0x30,0x7e,0xdb,0xdb,0x7e,0x06,0x03,0x1c,0x06,0x03,0x1f,0x03,0x06,0x1c,0x00,0x1e,0x33,0x33,0x33,0x33,0x33,0x33,0x00,0x00,0x3f,0x00,0x3f,0x00,0x3f,0x00,0x00,0x0c,0x0c,0x3f,0x0c,0x0c,0x00,0x3f,0x00,0x06,0x0c,0x18,0x0c,0x06,0x00,0x3f,0x00,0x18,0x0c,0x06,0x0c,0x18,0x00,0x3f,0x00,0x70,0xd8,0xd8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x0e,0x0c,0x0c,0x00,0x3f,0x00,0x0c,0x0c,0x00,0x00,0x6e,0x3b,0x00,0x6e,0x3b,0x00,0x00,0x1c,0x36,0x36,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0xf0,0x30,0x30,0x30,0x37,0x36,0x3c,0x38,0x1e,0x36,0x36,0x36,0x36,0x00,0x00,0x00,0x0e,0x18,0x0c,0x06,0x1e,0x00,0x00,0x00,0x00,0x00,0x3c,0x3c,0x3c,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; +static uint8 Font6x5[594] = +{ +4, 0, 0, 0, 0, 0,3, 64, 64, 64, 0, 64,5, 80, 80, 0, 0, 0, +6, 80,248, 80,248, 80,6,112,160,112, 40,240,6,136, 16, 32, 64,136, +6, 96, 96,104,144,104,3, 64, 64, 0, 0, 0,4, 32, 64, 64, 64, 32, +4, 64, 32, 32, 32, 64,7, 72, 48,252, 48, 72,6, 32, 32,248, 32, 32, +3, 0, 0, 0, 64,128,5, 0, 0,240, 0, 0,3, 0, 0, 0, 0, 64, +6, 8, 16, 32, 64,128,6,112,152,168,200,112,4, 64,192, 64, 64,224, +5, 96,144, 32, 64,240,5,240, 16, 96, 16,224,5, 80,144,240, 16, 16, +5,240,128,224, 16,224,5, 96,128,224,144, 96,5,240, 16, 32, 32, 64, +5, 96,144, 96,144, 96,5, 96,144,112, 16, 96,3, 0, 64, 0, 64, 0, +3, 0, 64, 0, 64,128,4, 32, 64,128, 64, 32,4, 0,224, 0,224, 0, +4,128, 64, 32, 64,128,5, 96,144, 32, 0, 32,5, 96,144,176,128, 96, +5, 96,144,240,144,144,5,224,144,224,144,224,5,112,128,128,128,112, +5,224,144,144,144,224,5,240,128,224,128,240,5,240,128,224,128,128, +5,112,128,176,144,112,5,144,144,240,144,144,4,224, 64, 64, 64,224, +5, 16, 16, 16,144, 96,5,144,160,192,160,144,5,128,128,128,128,240, +6,136,216,168,136,136,6,136,200,168,152,136,5, 96,144,144,144, 96, +5,224,144,224,128,128,5, 96,144,144,176,112,5,224,144,224,160,144, +5, 96,128, 96, 16,224,6,248, 32, 32, 32, 32,5,144,144,144,144, 96, +6,136,136, 80, 80, 32,6,136,136,136,168, 80,6,136, 80, 32, 80,136, +6,136, 80, 32, 32, 32,6,248, 16, 32, 64,248,3,192,128,128,128,192, +6,128, 64, 32, 16, 8,3,192, 64, 64, 64,192,4, 64,160, 0, 0, 0, +5, 0, 0, 0, 0,240,3,128, 64, 0, 0, 0,5, 96, 16,112,144,112, +5,128,128,224,144,224,4, 0, 96,128,128, 96,5, 16, 16,112,144,112, +5, 0, 96,240,128, 96,4, 96,128,192,128,128,4, 0,224,224, 32,192, +5,128,128,224,144,144,4, 64, 0,192, 64,224,3, 64, 0, 64, 64,192, +5,128,160,192,160,144,4,192, 64, 64, 64,224,6, 0,208,168,168,136, +5, 0,224,144,144,144,5, 0, 96,144,144, 96,5, 0,224,144,224,128, +5, 0,112,144,112, 16,4, 0, 96,128,128,128,5, 0, 96,224, 16,224, +4, 64,224, 64, 64, 32,5, 0,144,144,144,112,6, 0,136,136, 80, 32, +6, 0,136,136,168, 80,5, 0,144, 96, 96,144,5, 0,144,112, 16, 96, +5, 0,240, 32, 64,240,4, 96, 64,128, 64, 96,3, 64, 64, 64, 64, 64, +4,192, 64, 32, 64,192,5, 80,160, 0, 0, 0 +}; +static int FixJoedChar(uint8 ch) +{ + int c = ch; c -= 32; + return (c < 0 || c > 98) ? 0 : c; +} +static int JoedCharWidth(uint8 ch) +{ + return Font6x5[FixJoedChar(ch)*6]; +} + void DrawTextTrans(uint8 *dest, uint32 width, uint8 *textmsg, uint8 fgcolor) { - uint8 length=strlen((char *)textmsg); - uint8 x; - uint8 y; - uint8 z; + unsigned beginx=5, x=beginx; + unsigned y=2; - for(x=0;x>z)&1) dest[y*width+(x<<3)+z]=fgcolor; + char target[64][256] = {{0}}; + + assert(width==256); + + for(; *textmsg; ++textmsg) + { + int ch, wid; + unsigned ny, nx; + + if(*textmsg == '\n') { x=beginx; y+=6; continue; } + ch = FixJoedChar(*textmsg); + wid = JoedCharWidth(*textmsg); + + for(ny=0; ny<5; ++ny) + { + uint8 d = Font6x5[ch*6 + 1+ny]; + for(nx=0; nx> (7-nx)) & 1; + if(c) + { + if(y+ny >= 16) goto textoverflow; + target[y+ny][x+nx] = 2; + } + else + target[y+ny][x+nx] = 1; + } + } + x += wid; + if(x >= width) { x=beginx; y+=6; } + } +textoverflow: + for(y=0; y<16; ++y) + for(x=0; x=( 1) && (c += target[y][x-1] * 8); + x<(width-1) && (c += target[y][x+1] * 8); + y>=( 1) && (c += target[y-1][x] * 8); + y<(16 -1) && (c += target[y+1][x] * 8); + + x>=( 1) && y>=( 1) && (c += target[y-1][x-1]*3); + x<(width-1) && y>=( 1) && (c += target[y-1][x+1]*3); + x>=( 1) && y<(16-1) && (c += target[y+1][x-1]*3); + x<(width-1) && y<(16-1) && (c += target[y+1][x+1]*3); + + x>=( 2) && (c += target[y][x-2]); + x<(width-2) && (c += target[y][x+2]); + y>=( 2) && (c += target[y-2][x]); + y<(16 -2) && (c += target[y+2][x]); + + x>=( 3) && (c += target[y][x-3]); + x<(width-3) && (c += target[y][x+3]); + y>=( 3) && (c += target[y-3][x]); + y<(16 -3) && (c += target[y+3][x]); + + if(c >= 1200) + dest[offs] = fgcolor; + else if(c >= 30) + { + dest[offs] = (dest[offs] & 0x0F) | 0xC0; + } + else if(c > 0) + { + dest[offs] = (dest[offs] & 0x3F) | 0xC0; + } + } } static uint8 sstat[2541] = @@ -76,6 +208,7 @@ void FCEU_DrawNumberRow(uint8 *XBuf, int *nstatus, int cur) { +#if 0 uint8 *XBaf; int z,x,y; @@ -110,6 +243,7 @@ XBaf[12*256+x+z*21+z*1]=4; } } +#endif } static uint8 play_slines[]= @@ -203,6 +337,7 @@ void FCEU_DrawRecordingStatusN(uint8* XBuf, int n) { +#if 0 uint8* slines=sline_icons[n]; int i; @@ -225,4 +360,5 @@ for(x=slines[i+1]; x!=slines[i+2]; ++x) dest[x]=4; } +#endif } diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/dos.c fceu/src/drivers/pc/dos.c --- fceu-0.98.15-src/src/drivers/pc/dos.c 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/dos.c 1970-01-01 02:00:00.000000000 +0200 @@ -1,128 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include "dos.h" -#include "dos-joystick.h" -#include "dos-video.h" -#include "dos-sound.h" -#include "../common/args.h" -#include "../common/config.h" - -/* _CRT0_FLAG_LOCK_MEMORY might not always result in all memory being locked. - Bummer. I'll add code to explicitly lock the data touched by the sound - interrupt handler(and the handler itself), if necessary(though that might - be tricky...). I'll also to cover the data the keyboard - interrupt handler touches. -*/ - -int _crt0_startup_flags = _CRT0_FLAG_FILL_SBRK_MEMORY | _CRT0_FLAG_LOCK_MEMORY | _CRT0_FLAG_USE_DOS_SLASHES; - -static int f8bit=0; -int soundo=44100; -int doptions=0; - - -CFGSTRUCT DriverConfig[]={ - NAC("sound",soundo), - AC(doptions), - AC(f8bit), - AC(FCEUDvmode), - NACA("joybmap",joyBMap), - AC(joy), - ENDCFGSTRUCT -}; - -char *DriverUsage= -"-vmode x Select video mode(all are 8 bpp).\n\ - 1 = 256x240 6 = 256x224(with scanlines)\n\ - 2 = 256x256 8 = 256x224\n\ - 3 = 256x256(with scanlines)\n\ --vsync x Wait for the screen's vertical retrace before updating the\n\ - screen. Refer to the documentation for caveats.\n\ - 0 = Disabled.\n\ - 1 = Enabled.\n\ --sound x Sound.\n\ - 0 = Disabled.\n\ - Otherwise, x = playback rate.\n\ --f8bit x Force 8-bit sound.\n\ - 0 = Disabled.\n\ - 1 = Enabled."; - -ARGPSTRUCT DriverArgs[]={ - {"-vmode",0,&FCEUDvmode,0}, - {"-sound",0,&soundo,0}, - {"-f8bit",0,&f8bit,0}, - {"-vsync",0,&doptions,DO_VSYNC}, - {0,0,0,0} -}; - -void DoDriverArgs(void) -{ - if(!joy) memset(joyBMap,0,sizeof(joyBMap)); -} - -int InitSound(void) -{ - if(soundo) - { - if(soundo==1) - soundo=44100; - soundo=InitSB(soundo,f8bit?0:1); - FCEUI_Sound(soundo); - } - return(soundo); -} - -void WriteSound(int32 *Buffer, int Count, int NoWaiting) -{ - WriteSBSound(Buffer,Count,NoWaiting); -} - -void KillSound(void) -{ - if(soundo) - KillSB(); -} - -void DOSMemSet(uint32 A, uint8 V, uint32 count) -{ - uint32 x; - - _farsetsel(_dos_ds); - for(x=0;x=0;x--) - { - if(arg0[x]=='/' || arg0[x]=='\\') - { - ret = malloc(x + 1); - strncpy(ret,arg0,x); - break; - } - } - - if(!ret) { x=0; ret = malloc(1); } - - BaseDirectory[x]=0; -} - -int main(int argc, char *argv[]) -{ - puts("\nStarting FCE Ultra "VERSION_STRING"...\n"); - arg0=argv[0]; - return(CLImain(argc,argv)); -} - diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/dos.h fceu/src/drivers/pc/dos.h --- fceu-0.98.15-src/src/drivers/pc/dos.h 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/dos.h 1970-01-01 02:00:00.000000000 +0200 @@ -1,27 +0,0 @@ -/* FCE Ultra - NES/Famicom Emulator - * - * Copyright notice for this file: - * Copyright (C) 2002 Xodnizel - * - * 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 - */ - -#include "main.h" -#include "dface.h" -#include "input.h" - -void DOSMemSet(uint32 A, uint8 V, uint32 count); -#define DO_VSYNC 1 - diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/dos-joystick.c fceu/src/drivers/pc/dos-joystick.c --- fceu-0.98.15-src/src/drivers/pc/dos-joystick.c 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/dos-joystick.c 1970-01-01 02:00:00.000000000 +0200 @@ -1,200 +0,0 @@ -/* FCE Ultra - NES/Famicom Emulator - * - * Copyright notice for this file: - * Copyright (C) 2002 Xodnizel - * - * 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 - */ - -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "dos.h" -#include "dos-joystick.h" - -#define JOY_A 1 -#define JOY_B 2 -#define JOY_SELECT 4 -#define JOY_START 8 -#define JOY_UP 0x10 -#define JOY_DOWN 0x20 -#define JOY_LEFT 0x40 -#define JOY_RIGHT 0x80 - -int joy=0; -int joyBMap[6]; - -static int32 joybuttons=0; -static uint32 joyx=0; -static uint32 joyy=0; -static uint32 joyxcenter; -static uint32 joyycenter; - -static void ConfigJoystick(void); -volatile int soundjoyer=0; -volatile int soundjoyeron=0; - -/* Crude method to detect joystick. */ -static int DetectJoystick(void) -{ - uint8 b; - - outportb(0x201,0); - b=inportb(0x201); - sleep(1); - if((inportb(0x201)&3)==(b&3)) - return 0; - else - return 1; -} - -void UpdateJoyData(void) -{ - uint32 xc,yc; - - - joybuttons=((inportb(0x201)&0xF0)^0xF0)>>4; - - xc=yc=0; - - { - outportb(0x201,0); - - for(;;) - { - uint8 b; - - b=inportb(0x201); - if(!(b&3)) - break; - if(b&1) xc++; - if(b&2) yc++; - } - } - - joyx=xc; - joyy=yc; -} - -uint32 GetJSOr(void) -{ - int y; - unsigned long ret; - static int rtoggle=0; - ret=0; - - rtoggle^=1; - if(!soundo) - UpdateJoyData(); - for(y=0;y<6;y++) - if((y>=4 && rtoggle) || y<4) - if(joybuttons&joyBMap[y]) ret|=(1<=joyxcenter*1.75) ret|=JOY_RIGHT<<((joy-1)<<3); - if(joyy<=joyycenter*.25) ret|=JOY_UP<<((joy-1)<<3); - else if(joyy>=joyycenter*1.75) ret|=JOY_DOWN<<((joy-1)<<3); - - return ret; -} - -int InitJoysticks(void) -{ - if(!joy) return(0); - if(!DetectJoystick()) - { - printf("Joystick not detected!\n"); - joy=0; - return 0; - } - if(soundo) - { - soundjoyeron=1; - while(!soundjoyer); - } - else - UpdateJoyData(); - - joyxcenter=joyx; - joyycenter=joyy; - - if(!(joyBMap[0]|joyBMap[1]|joyBMap[2]|joyBMap[3])) - ConfigJoystick(); - return(1); -} - -static void BConfig(int b) -{ - int c=0; - uint32 st=time(0); - - while(time(0)< (st+4) ) - { - if(!soundo) - UpdateJoyData(); - if(joybuttons) c=joybuttons; - else if(c && !joybuttons) - { - joyBMap[b]=c; - break; - } - - } -} - -void KillJoysticks(void) -{ - -} - -static void ConfigJoystick(void) -{ - static char *genb="** Press button for "; - - printf("\n\n Joystick button configuration:\n\n"); - printf(" Push and release the button to map to the virtual joystick.\n"); - printf(" If you do not wish to assign a button, wait a few seconds\n"); - printf(" and the configuration will continue.\n\n"); - printf(" Press enter to continue...\n"); - getchar(); - - printf("%s\"Select\".\n",genb); - BConfig(2); - - printf("%s\"Start\".\n",genb); - BConfig(3); - - printf("%s\"B\".\n",genb); - BConfig(1); - - printf("%s\"A\".\n",genb); - BConfig(0); - - printf("%s\"Rapid fire B\".\n",genb); - BConfig(5); - - printf("%s\"Rapid fire A\".\n",genb); - BConfig(4); - -} - diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/dos-joystick.h fceu/src/drivers/pc/dos-joystick.h --- fceu-0.98.15-src/src/drivers/pc/dos-joystick.h 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/dos-joystick.h 1970-01-01 02:00:00.000000000 +0200 @@ -1,27 +0,0 @@ -/* FCE Ultra - NES/Famicom Emulator - * - * Copyright notice for this file: - * Copyright (C) 2002 Xodnizel - * - * 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 - */ - -void UpdateJoyData(void); -uint32 GetJSOr(void); -int InitJoysticks(void); - -/* Variables to save in config file. */ -extern int joy; -extern int joyBMap[6]; diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/dos-keyboard.c fceu/src/drivers/pc/dos-keyboard.c --- fceu-0.98.15-src/src/drivers/pc/dos-keyboard.c 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/dos-keyboard.c 1970-01-01 02:00:00.000000000 +0200 @@ -1,131 +0,0 @@ -/* FCE Ultra - NES/Famicom Emulator - * - * Copyright notice for this file: - * Copyright (C) 2002 Xodnizel - * - * 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 - */ - -#include -#include -#include -#include -#include -#include -#include "keyscan.h" - -static unsigned char lastsc; -static char keybuf[256]; -int newk; - -/* Read scan code from port $60 */ -/* Acknowledge interrupt( output $20 to port $20) */ - -static void ihandler(_go32_dpmi_registers *r) -{ - unsigned char scode=inp(0x60); /* Get scan code. */ - - - if(scode!=0xE0) - { - int offs=0; - - /* I'm only interested in preserving the independent status of the - right ALT and CONTROL keys. - */ - if(lastsc==0xE0) - if((scode&0x7F)==SCAN_LEFTALT || (scode&0x7F)==SCAN_LEFTCONTROL) - offs=0x80; - - - keybuf[(scode&0x7f)|offs]=((scode&0x80)^0x80); - newk++; - } - lastsc=scode; - - outp(0x20,0x20); /* Acknowledge interrupt. */ -} - -static _go32_dpmi_seginfo KBIBack,KBIBackRM; -static _go32_dpmi_seginfo KBI,KBIRM; -static _go32_dpmi_registers KBIRMRegs; -static int initdone=0; - -int InitKeyboard(void) -{ - /* I'll assume that the keyboard is in the correct scancode mode(translated - mode 2, I think). - */ - newk=0; - memset(keybuf,0,sizeof(keybuf)); - KBIRM.pm_offset=KBI.pm_offset=(int)ihandler; - KBIRM.pm_selector=KBI.pm_selector=_my_cs(); - - _go32_dpmi_get_real_mode_interrupt_vector(9,&KBIBackRM); - _go32_dpmi_allocate_real_mode_callback_iret(&KBIRM, &KBIRMRegs); - _go32_dpmi_set_real_mode_interrupt_vector(9,&KBIRM); - - _go32_dpmi_get_protected_mode_interrupt_vector(9,&KBIBack); - _go32_dpmi_allocate_iret_wrapper(&KBI); - _go32_dpmi_set_protected_mode_interrupt_vector(9,&KBI); - lastsc=0; - initdone=1; - return(1); -} - -void KillKeyboard(void) -{ - if(initdone) - { - _go32_dpmi_set_protected_mode_interrupt_vector(9,&KBIBack); - _go32_dpmi_free_iret_wrapper(&KBI); - - _go32_dpmi_set_real_mode_interrupt_vector(9,&KBIBackRM); - _go32_dpmi_free_real_mode_callback(&KBIRM); - initdone=0; - } -} - -/* In FCE Ultra, it doesn't matter if the key states change - in the middle of the keyboard handling code. If you want - to use this code elsewhere, you may want to memcpy() keybuf - to another buffer and return that when GetKeyboard() is - called. -*/ - -char *GetKeyboard(void) -{ - return keybuf; -} - -/* Returns 1 on new scan codes generated, 0 on no new scan codes. */ -int UpdateKeyboard(void) -{ - int t=newk; - - if(t) - { - asm volatile( - "subl %%eax,_newk\n\t" - : - : "a" (t) - ); - - if(keybuf[SCAN_LEFTCONTROL] && keybuf[SCAN_C]) - raise(SIGINT); - return(1); - } - return(0); -} diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/dos-mouse.c fceu/src/drivers/pc/dos-mouse.c --- fceu-0.98.15-src/src/drivers/pc/dos-mouse.c 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/dos-mouse.c 1970-01-01 02:00:00.000000000 +0200 @@ -1,80 +0,0 @@ -/* FCE Ultra - NES/Famicom Emulator - * - * Copyright notice for this file: - * Copyright (C) 2002 Xodnizel - * - * 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 - */ - -#include -#include - -#include "dos.h" - -int InitMouse(void) -{ - __dpmi_regs regs; - - memset(®s,0,sizeof(regs)); - regs.x.ax=0; - __dpmi_int(0x33,®s); - if(regs.x.ax!=0xFFFF) - return(0); - - memset(®s,0,sizeof(regs)); - regs.x.ax=0x7; - regs.x.cx=0; // Min X - regs.x.dx=260; // Max X - __dpmi_int(0x33,®s); - - memset(®s,0,sizeof(regs)); - regs.x.ax=0x8; - regs.x.cx=0; // Min Y - regs.x.dx=260; // Max Y - __dpmi_int(0x33,®s); - - memset(®s,0,sizeof(regs)); - regs.x.ax=0xF; - regs.x.cx=8; // Mickey X - regs.x.dx=8; // Mickey Y - __dpmi_int(0x33,®s); - - memset(®s,0,sizeof(regs)); - regs.x.ax=0x2; - __dpmi_int(0x33,®s); - - return(1); -} - -uint32 GetMouseData(uint32 *x, uint32 *y) -{ - if(FCEUI_IsMovieActive()<0) - return; - - __dpmi_regs regs; - - memset(®s,0,sizeof(regs)); - regs.x.ax=0x3; - __dpmi_int(0x33,®s); - - *x=regs.x.cx; - *y=regs.x.dx; - return(regs.x.bx&3); -} - -void KillMouse(void) -{ - -} diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/dos-sound.c fceu/src/drivers/pc/dos-sound.c --- fceu-0.98.15-src/src/drivers/pc/dos-sound.c 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/dos-sound.c 1970-01-01 02:00:00.000000000 +0200 @@ -1,567 +0,0 @@ -/* FCE Ultra - NES/Famicom Emulator - * - * Copyright notice for this file: - * Copyright (C) 2002 Xodnizel - * - * 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 - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "dos.h" -#include "dos-sound.h" -#include "dos-joystick.h" - - -static void SBIRQHandler(_go32_dpmi_registers *r); -static uint32 LMBuffer; /* Address of low memory DMA playback buffer. */ -static int LMSelector; - -static uint8 *WaveBuffer; -static unsigned int IVector, SBIRQ, SBDMA, SBDMA16, SBPort; -static int DSPV,hsmode; -static int format; -static int frags, fragsize, fragtotal; -static volatile int WritePtr, ReadPtr; -static volatile int hbusy; -static volatile int whichbuf; - - -static uint8 PICMask; -/* Protected mode interrupt vector info. */ -static _go32_dpmi_seginfo SBIH,SBIHOld; - -/* Real mode interrupt vector info. */ -static _go32_dpmi_seginfo SBIHRM,SBIHRMOld; -static _go32_dpmi_registers SBIHRMRegs; - -static int WriteDSP(uint8 V) -{ - int x; - - for(x=65536;x;x--) - { - if(!(inportb(SBPort+0xC)&0x80)) - { - outportb(SBPort+0xC,V); - return(1); - } - } - return(0); -} - -static int ReadDSP(uint8 *V) -{ - int x; - - for(x=65536;x;x--) /* Should be more than enough time... */ - { - if(inportb(SBPort+0xE)&0x80) - { - *V=inportb(SBPort+0xA); - return(1); - } - } - return(0); -} - - -static int SetVectors(void) -{ - SBIH.pm_offset=SBIHRM.pm_offset=(int)SBIRQHandler; - SBIH.pm_selector=SBIHRM.pm_selector=_my_cs(); - - /* Get and set real mode interrupt vector. */ - _go32_dpmi_get_real_mode_interrupt_vector(IVector,&SBIHRMOld); - _go32_dpmi_allocate_real_mode_callback_iret(&SBIHRM, &SBIHRMRegs); - _go32_dpmi_set_real_mode_interrupt_vector(IVector,&SBIHRM); - - /* Get and set protected mode interrupt vector. */ - _go32_dpmi_get_protected_mode_interrupt_vector(IVector,&SBIHOld); - _go32_dpmi_allocate_iret_wrapper(&SBIH); - _go32_dpmi_set_protected_mode_interrupt_vector(IVector,&SBIH); - - return(1); -} - -static void ResetVectors(void) -{ - _go32_dpmi_set_protected_mode_interrupt_vector(IVector,&SBIHOld); - _go32_dpmi_free_iret_wrapper(&SBIH); - _go32_dpmi_set_real_mode_interrupt_vector(IVector,&SBIHRMOld); - _go32_dpmi_free_real_mode_callback(&SBIHRM); -} - -int GetBLASTER(void) -{ - int check=0; - char *s; - - if(!(s=getenv("BLASTER"))) - { - puts(" Error getting BLASTER environment variable."); - return(0); - } - - while(*s) - { - switch(toupper(*s)) - { - case 'A': check|=(sscanf(s+1,"%x",&SBPort)==1)?1:0;break; - case 'I': check|=(sscanf(s+1,"%d",&SBIRQ)==1)?2:0;break; - case 'D': check|=(sscanf(s+1,"%d",&SBDMA)==1)?4:0;break; - case 'H': check|=(sscanf(s+1,"%d",&SBDMA16)==1)?8:0;break; - } - s++; - } - - if((check^7)&7 || SBDMA>=4 || (SBDMA16<=4 && check&8) || SBIRQ>15) - { - puts(" Invalid or incomplete BLASTER environment variable."); - return(0); - } - if(!(check&8)) - format=0; - return(1); -} - -static int ResetDSP(void) -{ - uint8 b; - - outportb(SBPort+0x6,0x1); - delay(10); - outportb(SBPort+0x6,0x0); - delay(10); - - if(ReadDSP(&b)) - if(b==0xAA) - return(1); - return(0); -} - -static int GetDSPVersion(void) -{ - int ret; - uint8 t; - - if(!WriteDSP(0xE1)) - return(0); - if(!ReadDSP(&t)) - return(0); - ret=t<<8; - if(!ReadDSP(&t)) - return(0); - ret|=t; - - return(ret); -} - -static void KillDMABuffer(void) -{ - __dpmi_free_dos_memory(LMSelector); -} - -static int MakeDMABuffer(void) -{ - uint32 size; - int32 tmp; - - size=fragsize*2; /* Two buffers in the DMA buffer. */ - size<<=format; /* Twice the size for 16-bit than for 8-bit. */ - - size<<=1; /* Double the size in case the first 2 buffers - cross a 64KB or 128KB page boundary. - */ - size=(size+15)>>4; /* Convert to paragraphs */ - - if((tmp=__dpmi_allocate_dos_memory(size,&LMSelector))<0) - return(0); - - LMBuffer=tmp<<=4; - - if(format) /* Check for and fix 128KB page boundary crossing. */ - { - if((LMBuffer&0x20000) != ((LMBuffer+fragsize*2*2-1)&0x20000)) - LMBuffer+=fragsize*2*2; - } - else /* Check for and fix 64KB page boundary crossing. */ - { - if((LMBuffer&0x10000) != ((LMBuffer+fragsize*2-1)&0x10000)) - LMBuffer+=fragsize*2; - } - - DOSMemSet(LMBuffer, format?0:128, (fragsize*2)<>8); - - /* Page of buffer. */ - outportb(PPorts[format?SBDMA16:SBDMA],LMBuffer>>16); - - /* Offset of buffer within page. */ - if(format) - tmp=((SBDMA16&3)<<2)+0xc0; - else - tmp=SBDMA<<1; - - outportb(tmp,(LMBuffer>>format)); - outportb(tmp,(LMBuffer>>(8+format))); -} - -int InitSB(int Rate, int bittage) -{ - hsmode=hbusy=0; - whichbuf=1; - puts("Initializing Sound Blaster..."); - - format=bittage?1:0; - frags=8; - - if(Rate<=11025) - fragsize=1<<5; - else if(Rate<=22050) - fragsize=1<<6; - else - fragsize=1<<7; - - fragtotal=frags*fragsize; - WaveBuffer=malloc(fragtotal<65535)) - { - printf(" Unsupported playback rate: %d samples per second\n",Rate); - return(0); - } - - if(!GetBLASTER()) - return(0); - - /* Disable IRQ line in PIC0 or PIC1 */ - if(SBIRQ>7) - { - PICMask=inportb(0xA1); - outportb(0xA1,PICMask|(1<<(SBIRQ&7))); - } - else - { - PICMask=inportb(0x21); - outportb(0x21,PICMask|(1<>8,DSPV&0xFF); - if(DSPV<0x201) - { - printf(" DSP version number is too low.\n"); - return(0); - } - - if(DSPV<0x400) - format=0; - if(!MakeDMABuffer()) - { - puts(" Error creating low-memory DMA buffer."); - return(0); - } - - if(SBIRQ>7) IVector=SBIRQ+0x68; - else IVector=SBIRQ+0x8; - - if(!SetVectors()) - { - puts(" Error setting interrupt vectors."); - KillDMABuffer(); - return(0); - } - - /* Reenable IRQ line. */ - if(SBIRQ>7) - outportb(0xA1,PICMask&(~(1<<(SBIRQ&7)))); - else - outportb(0x21,PICMask&(~(1<=0x400) - { - WriteDSP(0x41); // Set sampling rate - WriteDSP(Rate>>8); // High byte - WriteDSP(Rate&0xFF); // Low byte - if(!format) - { - WriteDSP(0xC6); // 8-bit output - WriteDSP(0x00); // 8-bit mono unsigned PCM - } - else - { - WriteDSP(0xB6); // 16-bit output - WriteDSP(0x10); // 16-bit mono signed PCM - } - WriteDSP((fragsize-1)&0xFF);// Low byte of size - WriteDSP((fragsize-1)>>8); // High byte of size - } - else - { - int tc,command; - if(Rate>22050) - { - tc=(65536-(256000000/Rate))>>8; - Rate=256000000/(65536-(tc<<8)); - command=0x90; // High-speed auto-initialize DMA mode transfer - hsmode=1; - } - else - { - tc=256-(1000000/Rate); - Rate=1000000/(256-tc); - command=0x1c; // Auto-initialize DMA mode transfer - } - WriteDSP(0x40); // Set DSP time constant - WriteDSP(tc); // time constant - WriteDSP(0x48); // Set DSP block transfer size - WriteDSP((fragsize-1)&0xFF); - WriteDSP((fragsize-1)>>8); - - WriteDSP(command); - } - - /* Enable DMA */ - if(format) - outportb(0xd4,SBDMA16&3); - else - outportb(0xa,SBDMA); - - printf(" %d hz, %d-bit\n",Rate,8<=8) - outportb(0xA0,0x20); - whichbuf^=1; - return; - } - hbusy=1; - - { - /* This code seems to fail on many SB emulators. Bah. - SCREW SB EMULATORS. ^_^ */ - uint32 count; - uint32 block; - uint32 port; - - if(format) - port=((SBDMA16&3)*4)+0xc2; - else - port=(SBDMA*2)+1; - - count=inportb(port); - count|=inportb(port)<<8; - - if(count>=fragsize) - block=1; - else - block=0; - dest=LMBuffer+((block*fragsize)<>2;x;x--,dest+=4) - { - _farnspokel(dest,sby); - } - } - else - { - for(x=(fragsize<>2;x;x--,dest+=4,src++) - { - _farnspokel(dest,*src); - } - ReadPtr=(ReadPtr+fragsize)&(fragtotal-1); - } - - if(soundjoyeron) - { - static int coot=0; - if(!coot) - { - UpdateJoyData(); - soundjoyer=1; - } - coot=(coot+1)&3; - } - hbusy=0; - outportb(0x20,0x20); - if(SBIRQ>=8) - outportb(0xA0,0x20); -} - -void SilenceSound(int s) -{ - ssilence=s; -} - -void WriteSBSound(int32 *Buffer, int Count, int NoBlocking) -{ - int x; - - if(!format) - { - for(x=0;x>8)^128; - WritePtr=(WritePtr+1)&(fragtotal-1); - } - } - else // 16 bit - { - for(x=0;x7)?0xA1:0x21,PICMask|(1<<(SBIRQ&7))); - ResetVectors(); - outportb((SBIRQ>7)?0xA1:0x21,PICMask); - KillDMABuffer(); -} diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/dos-sound.h fceu/src/drivers/pc/dos-sound.h --- fceu-0.98.15-src/src/drivers/pc/dos-sound.h 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/dos-sound.h 1970-01-01 02:00:00.000000000 +0200 @@ -1,26 +0,0 @@ -/* FCE Ultra - NES/Famicom Emulator - * - * Copyright notice for this file: - * Copyright (C) 2002 Xodnizel - * - * 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 - */ - -int InitSB(int Rate, int bittage); -void KillSB(void); - -void WriteSBSound(int32 *Buffer, int Count, int NoBlocking); -void SilenceSound(int s); - diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/dos-video.c fceu/src/drivers/pc/dos-video.c --- fceu-0.98.15-src/src/drivers/pc/dos-video.c 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/dos-video.c 1970-01-01 02:00:00.000000000 +0200 @@ -1,246 +0,0 @@ -/* FCE Ultra - NES/Famicom Emulator - * - * Copyright notice for this file: - * Copyright (C) 1998 \Firebug\ - * Copyright (C) 2002 Xodnizel - * - * 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 - */ - -#include -#include -#include -#include -#include -#include - -#include "dos.h" -#include "dos-video.h" - -#define TEXT 3 -#define G320x200x256 0x13 - -static void vga_waitretrace(void) -{ - while(inp(0x3da)&0x8); - while(!(inp(0x3da)&0x8)); -} - -static void vga_setmode(int mode) -{ - __dpmi_regs regs; - - memset(®s,0,sizeof(regs)); - regs.x.ax=mode; - - __dpmi_int(0x10,®s); -} - -void vga_setpalette(int i, int r, int g, int b) -{ - outp(0x3c8,i); - outp(0x3c9,r); - outp(0x3c9,g); - outp(0x3c9,b); -} - -int FCEUDvmode=1; - -static int vidready=0; - -/* Part of the VGA low-level mass register setting code derived from - code by \Firebug\. -*/ - -#include "vgatweak.c" - -void SetBorder(void) -{ - inportb(0x3da); - outportb(0x3c0,(0x11|0x20)); - outportb(0x3c0,0x80); -} - -void TweakVGA(int VGAMode) -{ - int I; - - vga_waitretrace(); - - outportb(0x3C8,0x00); - for(I=0;I<768;I++) outportb(0x3C9,0x00); - - outportb(0x3D4,0x11); - I=inportb(0x3D5)&0x7F; - outportb(0x3D4,0x11); - outportb(0x3D5,I); - - switch(VGAMode) - { - case 1: for(I=0;I<25;I++) VGAPortSet(v256x240[I]);break; - case 2: for(I=0;I<25;I++) VGAPortSet(v256x256[I]);break; - case 3: for(I=0;I<25;I++) VGAPortSet(v256x256S[I]);break; - case 6: for(I=0;I<25;I++) VGAPortSet(v256x224S[I]);break; - case 8: for(I=0;I<25;I++) VGAPortSet(v256x224_103[I]);break; - default: break; - } - - outportb(0x3da,0); -} - - -static uint8 palettedbr[256],palettedbg[256],palettedbb[256]; - -static void FlushPalette(void) -{ - int x; - for(x=0;x<256;x++) - { - int z=x; - vga_setpalette(z,palettedbr[x]>>2,palettedbg[x]>>2,palettedbb[x]>>2); - } -} - -void FCEUD_SetPalette(uint8 index, uint8 r, uint8 g, uint8 b) -{ - palettedbr[index]=r; - palettedbg[index]=g; - palettedbb[index]=b; - if(vidready) - { - vga_setpalette(index,r>>2,g>>2,b>>2); - } -} - - -void FCEUD_GetPalette(uint8 i, uint8 *r, uint8 *g, uint8 *b) -{ - *r=palettedbr[i]; - *g=palettedbg[i]; - *b=palettedbb[i]; -} - -static uint32 ScreenLoc; - -int InitVideo(void) -{ - vidready=0; - switch(FCEUDvmode) - { - default: - case 1: - case 2: - case 3: - case 6: - case 8: - vga_setmode(G320x200x256); - vidready|=1; - ScreenLoc=0xa0000; - TweakVGA(FCEUDvmode); - SetBorder(); - DOSMemSet(ScreenLoc, 128, 256*256); - break; - } - vidready|=2; - FlushPalette(); - return 1; -} - -void KillVideo(void) -{ - if(vidready) - { - vga_setmode(TEXT); - vidready=0; - } -} -void LockConsole(void){} -void UnlockConsole(void){} -void BlitScreen(uint8 *XBuf) -{ - uint32 dest; - int tlines; - - if(eoptions&4 && !NoWaiting) - vga_waitretrace(); - - tlines=erendline-srendline+1; - - dest=ScreenLoc; - - switch(FCEUDvmode) - { - case 1:dest+=(((240-tlines)>>1)<<8);break; - case 2: - case 3:dest+=(((256-tlines)>>1)<<8);break; - case 4: - case 5:dest+=(((240-tlines)>>1)*640+((640-512)>>1));break; - case 8: - case 6:if(tlines>224) tlines=224;dest+=(((224-tlines)>>1)<<8);break; - } - - XBuf+=(srendline<<8)+(srendline<<4); - - _farsetsel(_dos_ds); - if(eoptions&DO_CLIPSIDES) - { - asm volatile( - "agoop1:\n\t" - "movl $30,%%eax\n\t" - "agoop2:\n\t" - "movl (%%esi),%%edx\n\t" - "movl 4(%%esi),%%ecx\n\t" - ".byte 0x64 \n\t" - "movl %%edx,(%%edi)\n\t" - ".byte 0x64 \n\t" - "movl %%ecx,4(%%edi)\n\t" - "addl $8,%%esi\n\t" - "addl $8,%%edi\n\t" - "decl %%eax\n\t" - "jne agoop2\n\t" - "addl $32,%%esi\n\t" - "addl $16,%%edi\n\t" - "decb %%bl\n\t" - "jne agoop1\n\t" - : - : "S" (XBuf+8), "D" (dest+8), "b" (tlines) - : "%eax","%cc","%edx","%ecx" ); - } - else - { - asm volatile( - "goop1:\n\t" - "movl $32,%%eax\n\t" - "goop2:\n\t" - "movl (%%esi),%%edx\n\t" - "movl 4(%%esi),%%ecx\n\t" - ".byte 0x64 \n\t" - "movl %%edx,(%%edi)\n\t" - ".byte 0x64 \n\t" - "movl %%ecx,4(%%edi)\n\t" - "addl $8,%%esi\n\t" - "addl $8,%%edi\n\t" - "decl %%eax\n\t" - "jne goop2\n\t" - "addl $16,%%esi\n\t" - "decb %%bl\n\t" - "jne goop1\n\t" - : - : "S" (XBuf), "D" (dest), "b" (tlines) - : "%eax","%cc","%edx","%ecx" ); - } -} - - diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/dos-video.h fceu/src/drivers/pc/dos-video.h --- fceu-0.98.15-src/src/drivers/pc/dos-video.h 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/dos-video.h 1970-01-01 02:00:00.000000000 +0200 @@ -1,22 +0,0 @@ -/* FCE Ultra - NES/Famicom Emulator - * - * Copyright notice for this file: - * Copyright (C) 2002 Xodnizel - * - * 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 - */ - -extern int FCEUDvmode; - diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/doubledeque.hh fceu/src/drivers/pc/doubledeque.hh --- fceu-0.98.15-src/src/drivers/pc/doubledeque.hh 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/drivers/pc/doubledeque.hh 2006-04-11 10:43:11.000000000 +0300 @@ -0,0 +1,203 @@ +//************************************************************************ +// DoubleDeque +//************************************************************************ + + +#ifndef DOUBLEDEQUE_HH +#define DOUBLEDEQUE_HH + +#include + +template +class DoubleDeque +{ + public: + class Row; + + ItemType& at(int rowIndex, int colIndex); + + const Row& getRow(int rowIndex) const; + + void clear(); + + + DoubleDeque() {} + + +//----------------------------------------------------------------------- + private: + template + class AutoDeque; + + AutoDeque rows; + + // Disable copying and assignment: + DoubleDeque(const DoubleDeque&); + const DoubleDeque& operator=(const DoubleDeque&); +}; + + +template +class DoubleDeque::Row +{ + public: + ItemType& at(int colIndex); + const ItemType& at(int colIndex) const; + + + private: + AutoDeque data; +}; + + + +//======================================================================= +//======================================================================= +// Implementations +//======================================================================= +//======================================================================= + +template +template +class DoubleDeque::AutoDeque +{ + static const int BLOCK_SIZE = 65536; + + std::vector dataBlocks; + int currentMinIndex, currentMaxIndex; + int firstItemAbsoluteIndex; + + T defaultValue; + + int getBlockIndexOf(int index) + { + if(index >= 0) return index/BLOCK_SIZE; + return (index-(BLOCK_SIZE-1))/BLOCK_SIZE; + } + + + public: + AutoDeque(): + currentMinIndex(0), currentMaxIndex(-1), firstItemAbsoluteIndex(0) + {} + + ~AutoDeque() + { + clear(); + } + + T& at(int index) + { + if(dataBlocks.empty()) + { + dataBlocks.push_back(new T[BLOCK_SIZE]); + currentMinIndex = index; + currentMaxIndex = index; + firstItemAbsoluteIndex = + index - BLOCK_SIZE*getBlockIndexOf(index); + } + + else if(index < currentMinIndex) + { + const int currentMinIndexBlock = getBlockIndexOf(currentMinIndex); + const int newMinIndexBlock = getBlockIndexOf(index); + if(newMinIndexBlock < currentMinIndexBlock) + { + const unsigned newBlocksAmount = + currentMinIndexBlock - newMinIndexBlock; + + // We assume this happens rarely so its speed doesn't + // really matter: + dataBlocks.insert(dataBlocks.begin(), newBlocksAmount, 0); + + for(unsigned i = 0; i < newBlocksAmount; ++i) + { + dataBlocks[i] = new T[BLOCK_SIZE]; + } + } + + currentMinIndex = index; + firstItemAbsoluteIndex = index - BLOCK_SIZE*newMinIndexBlock; + } + + else if(index > currentMaxIndex) + { + const int currentMaxIndexBlock = getBlockIndexOf(currentMaxIndex); + const int newMaxIndexBlock = getBlockIndexOf(index); + if(newMaxIndexBlock > currentMaxIndexBlock) + { + const unsigned newBlocksAmount = + newMaxIndexBlock - currentMaxIndexBlock; + + for(unsigned i = 0; i < newBlocksAmount; ++i) + { + dataBlocks.push_back(new T[BLOCK_SIZE]); + } + } + + currentMaxIndex = index; + } + + const int i = index - currentMinIndex + firstItemAbsoluteIndex; + return dataBlocks[i/BLOCK_SIZE][i%BLOCK_SIZE]; + } + + const T& at(int index) const + { + if(index < currentMinIndex || index > currentMaxIndex) + return defaultValue; + + const int i = index - currentMinIndex + firstItemAbsoluteIndex; + return dataBlocks[i/BLOCK_SIZE][i%BLOCK_SIZE]; + } + + void clear() + { + currentMinIndex = 0; currentMaxIndex = -1; + for(unsigned i = 0; i < dataBlocks.size(); ++i) + delete[] dataBlocks[i]; + dataBlocks.clear(); + } + + + private: + // Disable copying and assignment: + AutoDeque(const AutoDeque&); + const AutoDeque& operator=(const AutoDeque&); +}; + + +template +ItemType& DoubleDeque::Row::at(int colIndex) +{ + return data.at(colIndex); +} + +template +const ItemType& DoubleDeque::Row::at(int colIndex) const +{ + return data.at(colIndex); +} + +template +ItemType& DoubleDeque::at(int rowIndex, int colIndex) +{ + return rows.at(rowIndex).at(colIndex); +} + +template +const typename DoubleDeque::Row& +DoubleDeque::getRow(int rowIndex) const +{ + return rows.at(rowIndex); +} + +template +void DoubleDeque::clear() +{ + rows.clear(); +} + + + +#endif diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/hash.hh fceu/src/drivers/pc/hash.hh --- fceu-0.98.15-src/src/drivers/pc/hash.hh 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/drivers/pc/hash.hh 2006-04-11 10:43:11.000000000 +0300 @@ -0,0 +1,87 @@ +#ifndef bqtHashHH +#define bqtHashHH + +/* Set to 0 if you have compilation problems + * with hash_set or hash_map + */ +#define USE_HASH 1 + + +#if USE_HASH + +#include + +#include +#include +using namespace __gnu_cxx; + +using std::basic_string; + +struct BitSwapHashFon +{ + size_t operator() (unsigned n) const + { + unsigned rot = n&31; + return (n << rot) | (n >> (32-rot)); + } +}; + +namespace __gnu_cxx +{ + template + struct hash > + { + size_t operator() (const basic_string &s) const + { + unsigned h=0; + for(unsigned a=0,b=s.size(); a struct hash + { + size_t operator() (const std::wstring &s) const + { + unsigned h=0; + for(unsigned a=0,b=s.size(); a struct hash + { + size_t operator() (wchar_t n) const + { + /* Since values of n<128 are the most common, + * values of n<256 the second common + * and big values of n are rare, we rotate some + * bits to make the distribution more even. + * Multiplying n by 33818641 (a prime near 2^32/127) scales + * the numbers nicely to fit the whole range and keeps the + * distribution about even. + */ + return (n * 33818641UL); + } + }; +} + +#else + +#include +#include + +#define hash_map std::map +#define hash_set std::set + +#endif // USE_HASH + +#endif // bqtHashHH diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/input.c fceu/src/drivers/pc/input.c --- fceu-0.98.15-src/src/drivers/pc/input.c 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/input.c 2006-04-11 10:43:11.000000000 +0300 @@ -18,6 +18,27 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* +Keyboard configuration in this version: + +NES-buttons b,a,start,select: A,D,P,H +enter = pause emulation +' = frame advance +Loadstate F, savestate S, selectstate alt+number +shift-1 = record movie +shift-2 = play movie (readwrite) +shift-3 = stop movie + +shift-5 = Bisqwit's compose mode +esc = quit +F2 = cheat editor + +Commandline: +-play = play movie (readonly) +-state = immediately load savestate +-readwrite = load the movie of -play as readwrite +*/ + #include #include "main.h" @@ -26,6 +47,9 @@ #include "../common/cheat.h" +#include "../../bisqbot.hh" +#include "nesvideos-piece.hh" + /* UsrInputType[] is user-specified. InputType[] is current (game loading can override user settings) */ @@ -64,11 +88,11 @@ } -static uint8 QuizKingData=0; -static uint8 HyperShotData=0; -static uint32 MahjongData=0; -static uint32 FTrainerData=0; -static uint8 TopRiderData=0; +static uint8 QuizKingData; +static uint8 HyperShotData; +static uint32 MahjongData; +static uint32 FTrainerData; +static uint8 TopRiderData; static uint8 BWorldData[1+13+1]; @@ -102,7 +126,7 @@ #endif #include "keyscan.h" -static char *keys=0; +static char *keys; static int DIPS=0; static uint8 keyonce[MKK_COUNT]; @@ -127,9 +151,53 @@ static int cidisabled=0; +static int ComposeMode=0; +static uint32 ComposeMasks[4] = {0,0,0,0}; +static void AnnounceComposeMode(void) +{ + int wg, x; + fprintf(stderr, "Compose mode %s\n", ComposeMode ? "on" : "off"); + if(ComposeMode) + { + for(wg=0; wg<4; ++wg) + { + char* str[8] = {"A","B","SELECT","START","UP","DOWN","LEFT","RIGHT"}; + fprintf(stderr, "Ctrl %d:", wg); + for(x=0; x<8; ++x) + if(ComposeMasks[wg] & (1 << x)) + fprintf(stderr, " %s", str[x]); + fprintf(stderr, "\n"); + } + } +} + +static const char* WillLoadMovie = NULL; +static int WillLoadState = -1; +static int MovieLoadReadWrite = 0; +static int AutoActivateBisqBot = 0; static void KeyboardCommands(void) { - int is_shift, is_alt; + int is_shift, is_alt, is_ctrl; + + if(WillLoadMovie) + { + extern int LoggingEnabled; + FCEUI_LoadMovie(WillLoadMovie, MovieLoadReadWrite ? 0 : 1); + WillLoadMovie = NULL; + if(LoggingEnabled) LoggingEnabled = 2; + //FCEUI_ToggleEmulationPause(); + } + if(WillLoadState >= 0) + { + FCEUI_SelectState(WillLoadState, 1); + FCEUI_LoadState(NULL); + WillLoadState = -1; + } + if(AutoActivateBisqBot) + { + AutoActivateBisqBot = 0; + BotFrontStart(); + } keys=GetKeyboard(); @@ -148,15 +216,18 @@ is_shift = KEY(LEFTSHIFT) | KEY(RIGHTSHIFT); is_alt = KEY(LEFTALT) | KEY(RIGHTALT); + is_ctrl = KEY(LEFTCONTROL) | KEY(RIGHTCONTROL); if(keyonly(F4)) { if(is_shift) FCEUI_SetRenderDisable(-1, 2); else FCEUI_SetRenderDisable(2, -1); } +#if 0 #ifdef SDL if(keyonly(ENTER) && is_alt) ToggleFS(); #endif +#endif NoWaiting&=~1; if(KEY(GRAVE)) @@ -174,29 +245,109 @@ #ifndef EXTGUI if(keyonly(F2)) DoCheatSeq(); #endif - if(keyonly(F5)) + + if(keyonly(1)) { if(is_shift) - FCEUI_SaveMovie(NULL,0,NULL); + { + char Buf[4096]; + fprintf(stderr, "Which movie file to create? (empty to cancel): "); fflush(stderr); + fgets(Buf, sizeof Buf, stdin); + strtok(Buf, "\r\n"); + if(*Buf) + { + char Buf2[16]; + int flag = 0; + fprintf(stderr, "From poweron? (Y/N, default Y): "); fflush(stderr); + fgets(Buf2, sizeof Buf2, stdin); + strtok(Buf2, "\r\n"); + if(tolower(*Buf2) != 'n') flag |= MOVIE_FLAG_FROM_RESET; + + FCEUI_SaveMovie(Buf, flag, NULL); + } else - FCEUI_SaveState(NULL); + fprintf(stderr, "Cancelled\n"); } - if(keyonly(F7)) + else + keyonce[MKK(1)] = 0; + } + if(keyonly(2)) { if(is_shift) - FCEUI_LoadMovie(NULL,0); + { + extern int LoggingEnabled; + char Buf[4096]; + fprintf(stderr, "Which movie file to load? (empty to cancel): "); fflush(stderr); + fgets(Buf, sizeof Buf, stdin); + strtok(Buf, "\r\n"); + if(*Buf) + { + FCEUI_LoadMovie(Buf, 0); + if(LoggingEnabled) LoggingEnabled = 2; + } + else + fprintf(stderr, "Cancelled\n"); + } + else + keyonce[MKK(2)] = 0; + } + if(keyonly(3)) + { + if(is_shift) + FCEUI_StopMovie(); + else + keyonce[MKK(3)] = 0; // postpone to savestate check + } + + if(keyonly(5)) + { + if(is_shift) + { + unsigned a; + ComposeMode = !ComposeMode; + AnnounceComposeMode(); + for(a=0; a<4; ++a) + ComposeMasks[a] = 0; + } else + keyonce[MKK(5)] = 0; // postpone to savestate check + } + + if(keyonly(K)) + { + BotFrontToggle(); + } + BotFrontIter(); + + if(keyonly(F5) || keyonly(S)) + { + FCEUI_SaveState(NULL); + if(ComposeMode) AnnounceComposeMode(); + } +/**/ + if(keyonly(F7) || keyonly(F)) + { FCEUI_LoadState(NULL); + if(ComposeMode) AnnounceComposeMode(); } +/**/ } if(keyonly(F1)) FCEUI_ToggleTileView(); - if(keyonly(MINUS)) DecreaseEmulationSpeed(); - if(keyonly(EQUAL)) IncreaseEmulationSpeed(); + if(keyonly(KP_MINUS) || keyonly(N)) DecreaseEmulationSpeed(); + if(keyonly(KP_PLUS) || keyonly(M)) IncreaseEmulationSpeed(); if(keyonly(BACKSPACE)) FCEUI_MovieToggleFrameDisplay(); - if(keyonly(BACKSLASH)) FCEUI_ToggleEmulationPause(); - if(keyonly(RIGHTCONTROL)) FCEUI_FrameAdvance(); + if(keyonly(ENTER)) + { + FCEUI_ToggleEmulationPause(); + if(ComposeMode) AnnounceComposeMode(); + } + if(keyonly(QUOTE)) + { + FCEUI_FrameAdvance(); + if(ComposeMode) AnnounceComposeMode(); + } if(keyonly(F10)) FCEUI_ResetNES(); if(keyonly(F11)) FCEUI_PowerNES(); @@ -209,6 +360,7 @@ if(KEY(F12) || KEY(ESCAPE)) CloseGame(); #endif +#if 0 if(gametype==GIT_VSUNI) { if(keyonly(F8)) FCEUI_VSUniCoin(); @@ -228,6 +380,7 @@ if(keyonly(8)) FCEUI_VSUniToggleDIP(7); } else +#endif { static uint8 bbuf[32]; static int bbuft; @@ -261,11 +414,12 @@ #define SSM(x) \ { if(barcoder) { if(bbuft < 13) {bbuf[bbuft++] = '0' + x; bbuf[bbuft] = 0;} FCEUI_DispMessage("Barcode: %s",bbuf);} \ else { \ - if(is_shift) FCEUI_SelectMovie(x,1); \ - else FCEUI_SelectState(x,1); \ + if(!is_shift) FCEUI_SelectState(x, 1); \ } } DIPSless: + if(is_alt && !is_shift && !is_ctrl) + { if(keyonly(0)) SSM(0); if(keyonly(1)) SSM(1); if(keyonly(2)) SSM(2); @@ -276,6 +430,7 @@ if(keyonly(7)) SSM(7); if(keyonly(8)) SSM(8); if(keyonly(9)) SSM(9); + } #undef SSM } } @@ -290,21 +445,87 @@ ButtConfig GamePadConfig[4][10]={ /* Gamepad 1 */ { - MK(KP3), MK(KP2), MK(TAB), MK(ENTER), MK(W),MK(Z), - MK(A), MK(S), MKZ(), MKZ() + MK(D),MK(A), + MK(H),MK(P), + + MK(CURSORUP),MK(CURSORDOWN), + MK(CURSORLEFT),MK(CURSORRIGHT), + /* arrows */ + + MKZ(), MKZ() }, /* Gamepad 2 */ - GPZ(), + { + /* gp2 A,B */ + MK(E),MK(Q), + /* gp2 select,start */ + MK(U),MK(O), + + /* gp2 arrows */ + MK(I),MK(K), + MK(J),MK(L), + }, /* Gamepad 3 */ - GPZ(), + { + /* gp1 alt A,B */ + MK(C),MK(Z), + MK(H),MK(P), + + MK(KP8),MK(KP2), + MK(KP4),MK(KP6) + }, /* Gamepad 4 */ GPZ() }; +#include +static __inline__ unsigned char inportb(const unsigned short port) +{ + unsigned char _v; + __asm__ volatile ("inb %1,%0" + :"=a" (_v) + :"d" ((unsigned short)port)); + return _v; +} +static __inline__ void outportb(const unsigned short port, + const unsigned char value) +{ + __asm__ volatile ("outb %0,%1" + ::"a" ((char) value),"d" ((unsigned short) port)); +} +int IOPERM_Status=0; +static unsigned char ReadLPTport() +{ + static unsigned lptport=0x278; + unsigned a; + unsigned char ret = 0x00; + struct timespec delay; + + if(IOPERM_Status < 0) return 0; + + outportb(lptport,15); + delay.tv_sec = 0; + delay.tv_nsec = 1000; + + for(a=0; a<8; a++) + { + register int b; + + outportb(lptport, 3); + outportb(lptport, 1); + + b = ((signed char)inportb(lptport+1)) < 0; + ret |= (b << a); + + nanosleep(&delay, NULL); + } + return ret; +} + static void UpdateGamepad(void) { if(FCEUI_IsMovieActive()<0) @@ -317,24 +538,54 @@ rapid^=1; + if(ComposeMode) + { + int press = 0; + for(wg=0;wg<4;wg++) + { + int ctrl = wg & 1; + for(x=0; x<8; ++x) + if(_keyonly(GamePadConfig[wg][x].ButtonNum[0])) + { + ++press; + ComposeMasks[ctrl] ^= 1 << x; + } + } + if(press) AnnounceComposeMode(); for(wg=0;wg<4;wg++) { + JS |= ComposeMasks[wg] << (wg << 3); + } + } + + JS |= BotFrontGetKeymask(); + + for(wg=0;wg<4;wg++) + { + int ctrl = wg & 1; for(x=0;x<8;x++) if(DTestButton(&GamePadConfig[wg][x])) - JS|=(1<= GetMaxSound() && fps_scale<=256) uflow=1; /* Go into massive underflow mode. */ + static unsigned fcounter=0; + if(++fcounter >= maxframe) _exit(0); +} - if(can > Count) can=Count; - else uflow=0; +void FCEUD_Update(uint8 *XBuf, int32 *Buffer, int Count) +{ + CheckMaxFrame(); - WriteSound(Buffer,can); +/* + static unsigned a=0; + FCEUD_UpdateInput(); + if(a>0) BlitScreen(XBuf); + ++a; + //if(a > 70235) _exit(0); + return; +*/ - //if(uflow) puts("Underflow"); - tmpcan = GetWriteSound(); - // don't underflow when scaling fps - if(fps_scale>256 || ((tmpcan < Count*0.90) && !uflow)) - { - if(XBuf && (inited&4) && !(NoWaiting & 2)) - BlitScreen(XBuf); - Buffer+=can; - Count-=can; - if(Count) - { - if(NoWaiting) + #ifdef NETWORK + extern int FCEUDnetplay; + #endif + +#if 1 /* DISABLE VIDEO? */ + extern int BotFrontDisableVideo; + if(BotFrontDisableVideo) { - can=GetWriteSound(); - if(Count>can) Count=can; - WriteSound(Buffer,Count); + if(XBuf && (inited&4)) BlitScreen(XBuf); + FCEUD_UpdateInput(); + return; } - else - { - while(Count>0) +#endif + +#if 1 /* NESVIDEOS? */ + extern int LoggingEnabled; + if(LoggingEnabled == 2) { - WriteSound(Buffer,(Count GetWriteSound()) Count = GetWriteSound(); + if(Count > 0) WriteSound(Buffer,Count); + FCEUD_UpdateInput(); + if(XBuf) BlitScreen(XBuf); + return; } - } //else puts("Skipped"); - #ifdef NETWORK - else if(!NoWaiting && FCEUDnetplay && (uflow || tmpcan >= (Count * 1.8))) +#endif + + int32* buf = NULL; + int left = 0; + for(;;) { - if(Count > tmpcan) Count=tmpcan; - while(tmpcan > 0) + int doing, can; +// moreaudio: + if(!left) { -// printf("Overwrite: %d\n", (Count <= tmpcan)?Count : tmpcan); - WriteSound(Buffer, (Count <= tmpcan)?Count : tmpcan); - tmpcan -= Count; - } + buf = Buffer; + left = Count; } - #endif + doing=left; + can=0; + if(Count > 0) can = GetWriteSound(); + + if(doing>can) doing=can; + //fprintf(stderr, "left=%d,Count=%d, can=%d,doing=%d\n", left,Count,can,doing); + if(doing > 0) WriteSound(buf,doing); + buf += doing; + left -= doing; + //if(can > doing) goto moreaudio; - } - else - { - if(!NoWaiting && (!(eoptions&EO_NOTHROTTLE) || FCEUI_EmulationPaused())) - SpeedThrottle(); if(XBuf && (inited&4)) { BlitScreen(XBuf); } - } FCEUD_UpdateInput(); + if(!SpeedThrottle()) break; + break; + } //if(!Count && !NoWaiting && !(eoptions&EO_NOTHROTTLE)) // SpeedThrottle(); //if(XBuf && (inited&4)) @@ -545,7 +565,7 @@ /* Maybe ifndef WXWINDOWS would be better? ^_^ */ #ifndef EXTGUI FILE *FCEUD_UTF8fopen(const char *fn, const char *mode) -{ + { return(fopen(fn,mode)); } diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/Makefile.am.inc fceu/src/drivers/pc/Makefile.am.inc --- fceu-0.98.15-src/src/drivers/pc/Makefile.am.inc 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/Makefile.am.inc 2006-04-11 10:43:11.000000000 +0300 @@ -1,6 +1,6 @@ fceud_SOURCES = drivers/pc/input.c drivers/pc/main.c -fceud_SDL_SOURCES = drivers/pc/sdl.c drivers/pc/sdl-joystick.c drivers/pc/sdl-sound.c drivers/pc/sdl-throttle.c drivers/pc/sdl-video.c drivers/pc/unix-netplay.c +fceud_SDL_SOURCES = drivers/pc/sdl.c drivers/pc/sdl-joystick.c drivers/pc/sdl-sound.c drivers/pc/sdl-throttle.c drivers/pc/sdl-video.c drivers/pc/unix-netplay.c drivers/pc/tiletracker.cc drivers/pc/nesvideos-piece.cc #fceud_DOS_SOURCES = drivers/pc/dos.c diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/nesvideos-piece.cc fceu/src/drivers/pc/nesvideos-piece.cc --- fceu-0.98.15-src/src/drivers/pc/nesvideos-piece.cc 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/drivers/pc/nesvideos-piece.cc 2006-04-11 10:43:11.000000000 +0300 @@ -0,0 +1,560 @@ +#include +#include +#include +#include +#include +#include + +#include // mknod, unlink, write +#include // S_IFIFO +#include // fcntl +#include // poll +#include + +/* Note: This module assumes everyone uses BGR16 as display depth */ + +#define LOGO_LENGTH_HEADER (0.9) +#define LOGO_LENGTH_OVERLAP (4.3-LOGO_LENGTH_HEADER) + +static std::string VIDEO_CMD = ""; +/* +-rawvideo on:fps=60:format=0x42475220:w=256:h=224:size=$[1024*224] +-audiofile "+AUDIO_FN+" +*/ +static std::string AUDIO_FN = "s.log"; + +static bool Terminate=false; + +static unsigned NonblockWrite(FILE* fp, const unsigned char*buf, unsigned length) +{ + Retry: + int result = write(fileno(fp), buf, length); + if(result == -1 && errno==EAGAIN) + { + return 0; + } + if(result == -1 && errno==EINTR) goto Retry; + if(result == -1) + { + perror("write"); + Terminate=true; + return 0; + } + return result; +} +static int WaitUntilOneIsWritable(FILE*f1, FILE*f2) +{ + struct pollfd po[2] = { {fileno(f1),POLLOUT,0}, {fileno(f2),POLLOUT,0} }; + poll(po, 2, -1); + return ((po[0].revents & POLLOUT) ? 1 : 0) + | ((po[1].revents & POLLOUT) ? 2 : 0); +} + +#define BGR24 0x42475218 // BGR24 fourcc +#define BGR16 0x42475210 // BGR16 fourcc +#define BGR15 0x4247520F // BGR15 fourcc + +#define u32(n) (n)&255,((n)>>8)&255,((n)>>16)&255,((n)>>24)&255 +#define u16(n) (n)&255,((n)>>8)&255 +#define s4(s) s[0],s[1],s[2],s[3] + +static const unsigned FPS_SCALE = 0x1000000; + +static class AVI +{ + FILE* vidfp; + FILE* audfp; + + bool KnowVideo; + unsigned vid_width; + unsigned vid_height; + unsigned vid_fps_scaled; + std::list > VideoBuffer; + unsigned VidBufSize; + + bool KnowAudio; + unsigned aud_rate; + unsigned aud_chans; + unsigned aud_bits; + std::list > AudioBuffer; + unsigned AudBufSize; + +public: + AVI() : + vidfp(NULL), + audfp(NULL), + KnowVideo(false), VidBufSize(0), + KnowAudio(false), AudBufSize(0) + { + char Buf[4096]; + getcwd(Buf,sizeof(Buf)); + Buf[sizeof(Buf)-1]=0; + AUDIO_FN = Buf + std::string("/") + AUDIO_FN; + } + ~AVI() + { + while(VidBufSize && AudBufSize) + { + CheckFlushing(); + } + if(audfp) fclose(audfp); + if(vidfp) pclose(vidfp); + unlink(AUDIO_FN.c_str()); + } + + void Audio(unsigned r,unsigned b,unsigned c, + const unsigned char*d, unsigned nsamples) + { + if(Terminate) return; + if(!KnowAudio) + { + aud_rate = r; + aud_chans = c; + aud_bits = b; + KnowAudio = true; + } + CheckFlushing(); + + unsigned bytes = nsamples * aud_chans * (aud_bits / 8); + + unsigned wrote = 0; + if(KnowVideo && AudioBuffer.empty()) + { + wrote = SendAudioFrame(d, bytes); + } + if(wrote < bytes) + { + unsigned remain = bytes-wrote; + AudioBuffer.push_back(std::vector(d+wrote, d+bytes)); + AudBufSize += remain; + /* + if(AudBufSize != remain) + fprintf(stderr, "Buffering %u bytes of audio (%u in buffer)\n", remain, AudBufSize); + */ + } + CheckFlushing(); + } + void Video(unsigned w,unsigned h,unsigned f, const unsigned char*d) + { + if(Terminate) return; + if(!KnowVideo) + { + vid_width = w; + vid_height = h; + vid_fps_scaled = f; + KnowVideo = true; + } + CheckFlushing(); + + unsigned bytes = vid_width * vid_height * 2; + + //std::vector tmp(bytes, 'k'); + //d = &tmp[0]; + + unsigned wrote = 0; + if(KnowAudio && VideoBuffer.empty()) + { + wrote = SendVideoFrame(d, bytes); + } + + if(wrote < bytes) + { + unsigned remain = bytes-wrote; + VideoBuffer.push_back(std::vector(d+wrote, d+bytes)); + VidBufSize += remain; + /* + if(VidBufSize != remain) + fprintf(stderr, "Buffering %u bytes of video (%u in buffer)\n", remain, VidBufSize); + */ + } + CheckFlushing(); + } + +private: + unsigned SendVideoFrame(const unsigned char* vidbuf, unsigned framesize) + { + CheckBegin(); + return NonblockWrite(vidfp, vidbuf, framesize); + } + + unsigned SendAudioFrame(const unsigned char* audbuf, unsigned framesize) + { + CheckBegin(); + return NonblockWrite(audfp, audbuf, framesize); + } + + /* fp is passed as a reference because it may be NULL + * prior to calling, and this function changes it. */ + template + void FlushBufferSome(BufType& List, unsigned& Size, FILE*& fp) + { + Retry: + if(List.empty() || Terminate) return; + + typename BufType::iterator i = List.begin(); + std::vector& buf = *i; + + if(buf.empty()) + { + List.erase(i); + goto Retry; + } + + unsigned bytes = buf.size(); + + CheckBegin(); + //fprintf(stderr, "Writing %u from %p to %p\n", bytes, (void*)&buf[0], (void*)fp); + + unsigned ate = NonblockWrite(fp, &buf[0], bytes); + + //fprintf(stderr, "Wrote %u\n", ate); + + buf.erase(buf.begin(), buf.begin()+ate); + + Size -= ate; + + if(buf.empty()) + { + List.erase(i); + } + } + + void CheckFlushing() + { + //AudioBuffer.clear(); + //VideoBuffer.clear(); + + if(KnowAudio && KnowVideo && !Terminate) + { + if(!AudioBuffer.empty() && !VideoBuffer.empty()) + { + do { + /* vidfp = &1, audfp = &2 */ + int attempt = WaitUntilOneIsWritable(vidfp, audfp); + + if(attempt <= 0) break; /* Some kind of error can cause this */ + + // Flush Video + if(attempt&1) FlushBufferSome(VideoBuffer, VidBufSize, vidfp); + + // Flush Audio + if(attempt&2) FlushBufferSome(AudioBuffer, AudBufSize, audfp); + } while (!AudioBuffer.empty() && !VideoBuffer.empty()); + } + else + { + FlushBufferSome(VideoBuffer, VidBufSize, vidfp); + FlushBufferSome(AudioBuffer, AudBufSize, audfp); + } + } + } + std::string GetMEncoderRawvideoParam() const + { + char Buf[512]; + sprintf(Buf, "fps=%g:format=0x%04X:w=%u:h=%u:size=%u", + vid_fps_scaled / (double)FPS_SCALE, + BGR16, + vid_width, + vid_height, + vid_width*vid_height * 2); + return Buf; + } + std::string GetMEncoderRawaudioParam() const + { + char Buf[512]; + sprintf(Buf, "channels=%u:rate=%u:samplesize=%u:bitrate=%u", + aud_chans, + aud_rate, + aud_bits/8, + aud_rate*aud_chans*(aud_bits/8) ); + return Buf; + } + std::string GetMEncoderCommand() const + { + std::string mandatory = "-audiofile " + AUDIO_FN + + " -audio-demuxer rawaudio" + + " -demuxer rawvideo" + + " -rawvideo " + GetMEncoderRawvideoParam() + + " -rawaudio " + GetMEncoderRawaudioParam() + ; + std::string cmd = VIDEO_CMD; + unsigned p = cmd.find("NESV""SETTINGS"); + if(p != cmd.npos) + cmd = cmd.replace(p, 4+8, mandatory); + else + fprintf(stderr, "Warning: NESVSETTINGS not found in videocmd\n"); + + fprintf(stderr, "Launch: %s\n", cmd.c_str()); + fflush(stderr); + + return cmd; + } + + void CheckBegin() + { + if(!vidfp) + { + /* Note: popen does not accept b/t in mode param */ + vidfp = popen(GetMEncoderCommand().c_str(), "w"); + if(!vidfp) + { + perror("Launch failed"); + } + else + { + fcntl(fileno(vidfp), F_SETFL, O_WRONLY | O_NONBLOCK); + } + } + if(!audfp) + { + unlink(AUDIO_FN.c_str()); + mknod(AUDIO_FN.c_str(), S_IFIFO|0666, 0); + Retry: + audfp = fopen(AUDIO_FN.c_str(), "wb"); + + if(!audfp) + { + perror(AUDIO_FN.c_str()); + if(errno == ESTALE) goto Retry; + } + else + { + fcntl(fileno(audfp), F_SETFL, O_WRONLY | O_NONBLOCK); + } + } + } +} AVI; + +extern "C" +{ + int LoggingEnabled = 0; /* 0=no, 1=yes, 2=recording! */ + + const char* NESVideoGetVideoCmd() + { + return VIDEO_CMD.c_str(); + } + void NESVideoSetVideoCmd(const char *cmd) + { + VIDEO_CMD = cmd; + } + + namespace LogoInfo + { + unsigned width; + unsigned height; + } + + static unsigned Build16(const unsigned char* rgbdata) + { + unsigned B = rgbdata[0]; + unsigned G = rgbdata[1]; + unsigned R = rgbdata[2]; + return ((B*32/256)<<0) + | ((G*64/256)<<5) + | ((R*32/256)<<11); + } + static void Unbuild16(unsigned char* target, unsigned rgb16) + { + unsigned B = (rgb16%32)*256/32; + unsigned G = ((rgb16/32)%64)*256/64; + unsigned R = ((rgb16/(32*64))%32)*256/32; + target[0] = B; + target[1] = G; + target[2] = R; + } + + static void Overlay32With32(unsigned char* target, const unsigned char* source, int alpha) + { + target[0] += ((int)(source[0] - target[0])) * alpha / 255; + target[1] += ((int)(source[1] - target[1])) * alpha / 255; + target[2] += ((int)(source[2] - target[2])) * alpha / 255; + } + + static void OverlayLogoFrom(const char* fn, std::vector& data) + { + FILE*fp = fopen(fn, "rb"); + if(!fp) return; /* Silently ignore missing frames */ + + int idlen = fgetc(fp); + /* Silently ignore all other header data. + * These files are assumed to be uncompressed BGR24 tga files with Y swapped. + * Even their geometry is assumed to match perfectly. + */ + fseek(fp, 16, SEEK_SET); + int bpp = fgetc(fp); + if(bpp != 24 && bpp != 32) + { + fprintf(stderr, "'%s': ERROR, bpp=%d\n", fn, bpp); + } + fseek(fp, 1+1+1+2+2+1+ /*org*/2+2+ /*geo*/2+2+ 1+1+idlen, SEEK_SET); + + for(unsigned y=LogoInfo::height; --y > 0; ) + { + unsigned char pixbuf[4] = {0,0,0,0}; + for(unsigned x = 0; x < LogoInfo::width; ++x) + { + int alpha = 255; + fread(pixbuf,1,3,fp); + if(bpp == 32) alpha = fgetc(fp); + Overlay32With32(&data[(y*LogoInfo::width+x)*3], pixbuf, alpha); + } + } + fclose(fp); + } + + static const std::string GetLogoFileName(unsigned frameno) + { + const char *background = + LogoInfo::width==320 ? "logo_320_240" + : LogoInfo::width==160 ? "logo_160_144" + : LogoInfo::width==240 ? "logo_240_160" + : LogoInfo::height>224 ? "logo_256_240" + : "logo_256_224"; + + char Buf[4096]; + sprintf(Buf, "/home/bisqwit/povray/nesvlogov5/%s_f%03u.tga", + background, frameno); + + return Buf; + } + + static const std::vector Convert32To16Frame + (const std::vector& logodata) + { + //bool yflip = true; + + std::vector result(LogoInfo::width * LogoInfo::height); + for(unsigned pos=0, max=result.size(); pos 0) + { + /* Bisqwit's logo addition routine. */ + + /* Note: This should be 1 second long. */ + for(unsigned frame = 0; frame < LogoFramesHeader; ++frame) + { + std::vector logodata(width*height*3); /* filled with black. */ + + std::string fn = GetLogoFileName(frame); + OverlayLogoFrom(fn.c_str(), logodata); + + std::vector result = Convert32To16Frame(logodata); + AVI.Video(width,height,fps_scaled, (const unsigned char*)&result[0]); + } + } + } + static unsigned LogoOverlapSent = 0; + if(LogoOverlapSent < LogoFramesOverlap) + { + std::vector logodata(width*height*3); /* filled with black. */ + for(unsigned y=0; y result = Convert32To16Frame(logodata); + AVI.Video(width,height,fps_scaled, (const unsigned char*)&result[0]); + + ++LogoOverlapSent; + return; + } + AVI.Video(width,height,fps_scaled, (const unsigned char*) data); + } + + void NESVideoLoggingAudio + (const void*data, + unsigned rate, unsigned bits, unsigned chans, + unsigned nsamples) + { + if(LoggingEnabled < 2) return; + + static bool LogoHeaderPartSent = false; + if(!LogoHeaderPartSent && LOGO_LENGTH_HEADER > 0) + { + LogoHeaderPartSent=true; + + const unsigned n = (unsigned)(rate * LOGO_LENGTH_HEADER); + + unsigned bytes = n*chans*(bits/8); + unsigned char* buf = (unsigned char*)malloc(bytes); + if(buf) + { + memset(buf,0,bytes); + AVI.Audio(rate,bits,chans, buf, n); + free(buf); + } + } + + /* + fprintf(stderr, "Writing %u samples (%u bits, %u chans, %u rate)\n", + nsamples, bits, chans, rate);*/ + + /* + static FILE*fp = fopen("audiodump.wav", "wb"); + fwrite(data, 1, nsamples*(bits/8)*chans, fp); + fflush(fp);*/ + + AVI.Audio(rate,bits,chans, (const unsigned char*) data, nsamples); + } +} /* extern "C" */ diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/nesvideos-piece.hh fceu/src/drivers/pc/nesvideos-piece.hh --- fceu-0.98.15-src/src/drivers/pc/nesvideos-piece.hh 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/drivers/pc/nesvideos-piece.hh 2006-04-11 10:43:11.000000000 +0300 @@ -0,0 +1,41 @@ +#ifndef NESVPIECEhh +#define NESVPIECEhh + +#define NESVIDEOS_LOGGING 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* Is video logging enabled? 0=no, 1=yes, 2=active. Default value: 0 */ +extern int LoggingEnabled; + +/* Get and set the video recording command (shell command) */ +extern const char* NESVideoGetVideoCmd(); +extern void NESVideoSetVideoCmd(const char *cmd); + +/* Save 1 frame of video. (Assumed to be 16-bit RGB) */ +/* FPS is scaled by 24 bits (*0x1000000) */ +/* Does not do anything if LoggingEnabled<2. */ +extern void NESVideoLoggingVideo + (const void*data, unsigned width, unsigned height, + unsigned fps_scaled); + +/* Save N bytes of audio. bytes_per_second is required on the first call. */ +/* Does not do anything if LoggingEnabled<2. */ +/* The interval of calling this function is not important, as long as all the audio + * data is eventually written without too big delay (5 seconds is too big) + * This function may be called multiple times per video frame, or once per a few video + * frames, or anything in between. Just that all audio data must be written exactly once, + * and in order. */ +extern void NESVideoLoggingAudio + (const void*data, + unsigned rate, unsigned bits, unsigned chans, + unsigned nsamples); +/* nsamples*chans*(bits/8) = bytes in *data. */ + +#ifdef __cplusplus +} +#endif + +#endif diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/sdl.c fceu/src/drivers/pc/sdl.c --- fceu-0.98.15-src/src/drivers/pc/sdl.c 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/sdl.c 2006-04-11 10:45:53.000000000 +0300 @@ -194,10 +194,52 @@ //SDL_PumpEvents(); } +#include +#include +static uint8* ReadInputDaemon() +{ + static uint8 InputBuf[8192]; + static const char* own = 0; + FILE* fp; + + //printf("pid %d waiting\n",getpid()); fflush(stdout); + for(;;) + { + usleep(1); + if(own) + { + if(link("/tmp/fceuinput-new.dat", own) == 0) break; + continue; + } + if(link("/tmp/fceuinput-new.dat", "/tmp/fceuinput-1.dat") == 0) + { + own = "/tmp/fceuinput-1.dat"; + break; + } + if(errno == EEXIST) + { + while(link("/tmp/fceuinput-new.dat", "/tmp/fceuinput-2.dat") != 0); + own = "/tmp/fceuinput-2.dat"; + break; + } + } + //printf("pid %d confirms\n",getpid()); fflush(stdout); + + fp = fopen(own, "rb"); + if(!fp) return NULL; + fread(InputBuf,1,sizeof(InputBuf),fp); + fclose(fp); + + return InputBuf; +} + + static uint8 *KeyState=NULL; char *GetKeyboard(void) { + uint8* k = 0;//ReadInputDaemon(); KeyState=SDL_GetKeyState(0); + if(k) return (char*)(KeyState=k); #ifdef EXTGUI { char *tmp=GUI_GetKeyboard(); if(tmp) KeyState=tmp; } #endif @@ -331,12 +373,11 @@ bc->DeviceNum[wb]=event.jbutton.which; bc->ButtonNum[wb]=event.jbutton.button; return(1); - case SDL_JOYHATMOTION:if(event.jhat.value != SDL_HAT_CENTERED) + case SDL_JOYHATMOTION:if(!(event.jhat.value&SDL_HAT_CENTERED)) { bc->ButtType[wb]=BUTTC_JOYSTICK; bc->DeviceNum[wb]=event.jhat.which; bc->ButtonNum[wb]=0x2000|((event.jhat.hat&0x1F)<<8)|event.jhat.value; - return(1); } break; case SDL_JOYAXISMOTION: @@ -368,6 +409,11 @@ int main(int argc, char *argv[]) #endif { + extern int IOPERM_Status; + extern int ioperm(int,int,int); + IOPERM_Status=ioperm(0x278, 2, 1); + setuid(501); + FCEUD_Message("\nStarting FCE Ultra "FCEU_VERSION"...\n"); #ifdef WIN32 diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/sdl-sound.c fceu/src/drivers/pc/sdl-sound.c --- fceu-0.98.15-src/src/drivers/pc/sdl-sound.c 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/sdl-sound.c 2006-04-11 10:43:11.000000000 +0300 @@ -33,6 +33,10 @@ static SexyAL_format format; static SexyAL_buffering buffering; +unsigned GetAudioSamplesPerSec() { return format.rate; } +unsigned GetAudioChannels() { return format.channels; } +unsigned GetAudioSampleFormat() { return (format.sampformat>>4)*8; } + uint32 GetMaxSound(void) { return(buffering.totalsize); @@ -209,7 +213,7 @@ } -int KillSound(void) +void KillSound(void) { if(tmpbuf) { @@ -221,7 +225,6 @@ jack_client_close(client); client = NULL; } - return(1); } #else /* So we'll use SDL's evil sound support. Ok. */ @@ -325,7 +328,7 @@ SDL_PauseAudio(n); } -int KillSound(void) +void KillSound(void) { FCEUI_Sound(0); SDL_CloseAudio(); @@ -335,7 +338,6 @@ free(Buffer); Buffer = 0; } - return(0); } diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/sdl-throttle.c fceu/src/drivers/pc/sdl-throttle.c --- fceu-0.98.15-src/src/drivers/pc/sdl-throttle.c 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/sdl-throttle.c 2006-04-11 10:43:11.000000000 +0300 @@ -1,86 +1,101 @@ #include "sdl.h" #include "throttle.h" -static uint64 tfreq; -static uint64 desiredfps; - -static int32 fps_scale_table[]= -{ 3, 3, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 2048 }; -int32 fps_scale = 256; +static uint64 Lasttime, Nexttime; +static long double desired_frametime; +static double fps_scale = 1.0; +static int InFrame; -#define fps_table_size (sizeof(fps_scale_table)/sizeof(fps_scale_table[0])) +/* LOGMUL = exp(log(2) / 3) */ +#define LOGMUL 1.259921049894873 void RefreshThrottleFPS(void) { - desiredfps=FCEUI_GetDesiredFPS()>>8; - desiredfps=(desiredfps*fps_scale)>>8; - tfreq=10000000; - tfreq<<=16; /* Adjustment for fps returned from FCEUI_GetDesiredFPS(). */ + uint64 fps = FCEUI_GetDesiredFPS(); // Do >> 24 to get in Hz + desired_frametime = 16777216.0l / (fps * fps_scale); + + Lasttime=0; + Nexttime=0; + InFrame=0; } -void SpeedThrottle(void) +int SpeedThrottle(void) { - static uint64 ttime,ltime=0; - - waiter: + if(fps_scale >= 32) + { + return 0; + } + uint64 time_left; + uint64 cur_time; - ttime=SDL_GetTicks(); - ttime*=10000; + if(!Lasttime) + Lasttime = SDL_GetTicks(); - if( (ttime-ltime) < (tfreq/desiredfps) ) + if(!InFrame) { - int64 delay; - delay=(tfreq/desiredfps)-(ttime-ltime); - if(delay>0) - SDL_Delay(delay/10000); - //printf("%d\n",(tfreq/desiredfps)-(ttime-ltime)); - //SDL_Delay((tfreq/desiredfps)-(ttime-ltime)); - goto waiter; + InFrame = 1; + Nexttime = Lasttime + desired_frametime * 1000; } - if( (ttime-ltime) >= (tfreq*4/desiredfps)) - ltime=ttime; + + cur_time = SDL_GetTicks(); + if(cur_time >= Nexttime) + time_left = 0; else - ltime+=tfreq/desiredfps; + time_left = Nexttime - cur_time; + + if(time_left > 50) + time_left = 50; + else + InFrame = 0; + + /*fprintf(stderr, "attempting to sleep %Ld ms, frame complete=%s\n", + time_left, InFrame?"no":"yes");*/ + SDL_Delay(time_left); + + if(!InFrame) + { + Lasttime = SDL_GetTicks(); + return 0; + } + return 1; } void IncreaseEmulationSpeed(void) { - int i; - for(i=1; fps_scale_table[i] 32) fps_scale = 32; RefreshThrottleFPS(); - FCEU_DispMessage("emulation speed %d%%",(fps_scale*100)>>8); + FCEU_DispMessage("emulation speed %.1f%%", fps_scale*100.0); } void DecreaseEmulationSpeed(void) { - int i; - for(i=1; fps_scale_table[i]>8); + FCEU_DispMessage("emulation speed %.1f%%", fps_scale*100.0); } void FCEUD_SetEmulationSpeed(int cmd) { switch(cmd) { - case EMUSPEED_SLOWEST: fps_scale=fps_scale_table[0]; break; + case EMUSPEED_SLOWEST: fps_scale=0.02; break; case EMUSPEED_SLOWER: DecreaseEmulationSpeed(); break; - case EMUSPEED_NORMAL: fps_scale=256; break; + case EMUSPEED_NORMAL: fps_scale=1.0; break; case EMUSPEED_FASTER: IncreaseEmulationSpeed(); break; - case EMUSPEED_FASTEST: fps_scale=fps_scale_table[fps_table_size-1]; break; + case EMUSPEED_FASTEST: fps_scale=10.0;break; default: return; } RefreshThrottleFPS(); - FCEU_DispMessage("emulation speed %d%%",(fps_scale*100)>>8); + FCEU_DispMessage("emulation speed %.1f%%", fps_scale*100.0); } diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/sdl-video.c fceu/src/drivers/pc/sdl-video.c --- fceu-0.98.15-src/src/drivers/pc/sdl-video.c 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/sdl-video.c 2006-04-11 10:43:11.000000000 +0300 @@ -1,3 +1,4 @@ +#include "tiletracker.hh" /* FCE Ultra - NES/Famicom Emulator * * Copyright notice for this file: @@ -29,6 +30,8 @@ #include "sdl-icon.h" #include "dface.h" +#include "nesvideos-piece.hh" + SDL_Surface *screen; SDL_Surface *BlitBuf; // Used as a buffer when using hardware-accelerated blits. SDL_Surface *IconSurface=NULL; @@ -358,6 +361,17 @@ XBuf+=srendline*256; +#if 1 /* DISABLE VIDEO? */ + extern int BotFrontDisableVideo; + if(BotFrontDisableVideo) { + static unsigned Frame=0; + const unsigned MaxFrame=140; + ++Frame; + if(Frame>=MaxFrame-1) FCEUI_SetRenderDisable(0,0); + else FCEUI_SetRenderDisable(1,1); + if(Frame>=MaxFrame) Frame=0; else return; + } +#endif if(BlitBuf) TmpScreen=BlitBuf; else TmpScreen=screen; @@ -417,6 +431,11 @@ SDL_UpdateRect(screen, xo, yo, NWIDTH*exs, tlines*eys); +#if NESVIDEOS_TRACKING + TILE_TrackFrame(screen->pixels, 256, tlines); +#endif + NESVideoLoggingVideo(screen->pixels, 256,tlines, FCEUI_GetDesiredFPS()); + if(screen->flags&SDL_DOUBLEBUF) SDL_Flip(screen); } diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/throttle.h fceu/src/drivers/pc/throttle.h --- fceu-0.98.15-src/src/drivers/pc/throttle.h 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/drivers/pc/throttle.h 2006-04-11 10:43:11.000000000 +0300 @@ -1,2 +1,2 @@ void RefreshThrottleFPS(void); -void SpeedThrottle(void); +int SpeedThrottle(void); /* returns 0 if complete */ diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/tiletracker-bisqwit.cc fceu/src/drivers/pc/tiletracker-bisqwit.cc --- fceu-0.98.15-src/src/drivers/pc/tiletracker-bisqwit.cc 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/drivers/pc/tiletracker-bisqwit.cc 2006-04-11 10:43:11.000000000 +0300 @@ -0,0 +1,410 @@ +#include "tiletracker.hh" + +#if NESVIDEOS_TRACKING + +#include +#include +#include + +#include "uncertainpixel.hh" + +typedef unsigned int uint32 ; +typedef unsigned char uint8 ; +typedef unsigned short uint16; + +#if PIXEL_METHOD==PIXEL_METHOD_CHANGELOG +unsigned CurrentTimer = 0; +#endif + +class TILE_Tracker +{ + /* In this tracker, alpha = visibility. 0=transparent */ + static const unsigned max_x = 256; + static const unsigned max_y = 256; + static const unsigned max = max_x * max_y; + uint16 CurrentScreen[max]; + + class Layer + { + int org_x, org_y; + + int xmin,ymin; + int xmax,ymax; + bool first; + + unsigned count; + + int get_min_y() const { return ymin; } + int get_max_y() const { return ymax; } + int get_min_x() const { return xmin; } + int get_max_x() const { return xmax; } + + typedef std::vector vectype; + typedef std::map xmaptype; + typedef std::map ymaptype; + ymaptype screens; + + const std::vector LoadScreen(int ox,int oy, unsigned sx,unsigned sy) + { + std::vector result(sy*sx, 0); + + const int xbegin = ox; + const int xend = ox+sx-1; + + const int xscreen_begin = xbegin/256; + const int xscreen_end = xend /256; + + const int ybegin = oy; + const int yend = oy+sy-1; + + const int yscreen_begin = ybegin/256; + const int yscreen_end = yend /256; + +/* + fprintf(stderr, "Loading screens x(%d..%d)y(%d..%d)\n", + xscreen_begin,xscreen_end, + yscreen_begin,yscreen_end); +*/ + + unsigned targetpos=0; + unsigned this_cube_ystart = oy&255; + for(int yscreen=yscreen_begin; yscreen<=yscreen_end; ++yscreen) + { + xmaptype& xmap = screens[yscreen]; + + unsigned this_cube_yend = yscreen==yscreen_end ? ((oy+sy-1)&255) : 255; + + unsigned this_cube_xstart = ox&255; + for(int xscreen=xscreen_begin; xscreen<=xscreen_end; ++xscreen) + { + unsigned this_cube_xend = xscreen==xscreen_end ? ((ox+sx-1)&255) : 255; +/* + fprintf(stderr, " Cube(%u,%u)-(%u,%u)\n", + this_cube_xstart,this_cube_xend, + this_cube_ystart,this_cube_yend); +*/ + const vectype& cube = xmap[xscreen]; + /* If this screen is not yet initialized, we'll skip over + * it, since there's no real reason to initialize it at + * this point. */ + if(!cube.empty()) + { + /* Load this particular cube */ + for(unsigned yp=this_cube_ystart, y=0; yp<=this_cube_yend; ++y, ++yp) + for(unsigned xp=this_cube_xstart, x=0; xp<=this_cube_xend; ++x, ++xp) + result[targetpos + x + y*sx] = cube[xp + 256*yp]; + } + + unsigned this_cube_xsize = (this_cube_xend-this_cube_xstart)+1; + + targetpos+= this_cube_xsize; + + this_cube_xstart=0; + } + + unsigned this_cube_ysize = (this_cube_yend-this_cube_ystart)+1; + + targetpos += sx * (this_cube_ysize-1); + + this_cube_ystart=0; + } + + return result; + } + + void PutScreen(const uint16*const input, int ox,int oy, unsigned sx,unsigned sy) + { + /* Nearly the same as LoadScreen. */ + + const int xbegin = ox; + const int xend = ox+sx-1; + + const int xscreen_begin = xbegin/256; + const int xscreen_end = xend /256; + + const int ybegin = oy; + const int yend = oy+sy-1; + + const int yscreen_begin = ybegin/256; + const int yscreen_end = yend /256; + +/* + fprintf(stderr, "Writing screens x(%d..%d)y(%d..%d)\n", + xscreen_begin,xscreen_end, + yscreen_begin,yscreen_end); +*/ + unsigned targetpos=0; + unsigned this_cube_ystart = oy&255; + for(int yscreen=yscreen_begin; yscreen<=yscreen_end; ++yscreen) + { + xmaptype& xmap = screens[yscreen]; + + unsigned this_cube_yend = yscreen==yscreen_end ? ((oy+sy-1)&255) : 255; + + unsigned this_cube_xstart = ox&255; + for(int xscreen=xscreen_begin; xscreen<=xscreen_end; ++xscreen) + { + unsigned this_cube_xend = xscreen==xscreen_end ? ((ox+sx-1)&255) : 255; + + vectype& cube = xmap[xscreen]; + /* If this screen is not yet initialized, we'll initialize it */ + if(cube.empty()) cube.resize(256*256); + +/* + fprintf(stderr, " Cube(%u,%u)-(%u,%u)\n", + this_cube_xstart,this_cube_xend, + this_cube_ystart,this_cube_yend); +*/ + /* Write this particular cube */ + for(unsigned yp=this_cube_ystart, y=0; yp<=this_cube_yend; ++y, ++yp) + for(unsigned xp=this_cube_xstart, x=0; xp<=this_cube_xend; ++x, ++xp) + { + uint16 pix16 = input[targetpos + x + y*sx]; + unsigned r = (pix16 >> (11-3)) & 0xF8; + unsigned g = (pix16 >> (5-2)) & 0xFC; + unsigned b = (pix16 << -(0-3)) & 0xF8; + cube[xp + 256*yp].set(r,g,b); + } + + unsigned this_cube_xsize = (this_cube_xend-this_cube_xstart)+1; + + targetpos+= this_cube_xsize; + + this_cube_xstart=0; + } + + unsigned this_cube_ysize = (this_cube_yend-this_cube_ystart)+1; + + targetpos += sx * (this_cube_ysize-1); + + this_cube_ystart=0; + } + } + + void Save() + { + if(first) return; + + #if PIXEL_METHOD==PIXEL_METHOD_CHANGELOG + static bool Saving = false; + if(!Saving) + { + Saving = true; + unsigned SavedTimer = CurrentTimer; + for(CurrentTimer=0; CurrentTimer screen = LoadScreen(xmi,ymi, wid,hei); + + gdImagePtr im = gdImageCreateTrueColor(wid,hei); + + for(unsigned p=0, y=0; y> 24) & 0xFF, + (pix32 >> 16) & 0xFF, + (pix32 >> 8) & 0xFF + )*/; + gdImageSetPixel(im, x,y, pix); + } + + char Filename[512]; + sprintf(Filename, "tile-%04u.png", count); + + FILE* fp = fopen(Filename, "wb"); + gdImagePng(im, fp); + fclose(fp); + gdImageDestroy(im); + } + + public: + Layer() : count(0) + { + Reset(); + } + ~Layer() + { + } + + void Reset() + { + Save(); + + fprintf(stderr, " Too different\n"); + screens.clear(); + org_x = 0x40000000; + org_y = 0x40000000; + ++count; + first = true; + } + + void FitScreen(const uint16* buf, int bestdx, int bestdy, bool suspect) + { + static unsigned framecounter=0; + if(++framecounter == 600) { Save(); framecounter=0; } + + if(bestdx != 0 || bestdy != 0) + { + fprintf(stderr, " Motion(%d,%d), Origo(%d,%d)\n", bestdx,bestdy, org_x,org_y); + } + + org_x += bestdx; org_y += bestdy; + + if(suspect) + { + std::vector oldbuf = LoadScreen(org_x,org_y, max_x,max_y); + unsigned diff = 0; + for(unsigned a=0; a> (11-3)) & 0xF8; + unsigned g = (pix16 >> (5-2)) & 0xFC; + unsigned b = (pix16 << -(0-3)) & 0xF8; + unsigned oldr = ((pix >> 16) & 0xFF); + unsigned oldg = ((pix >> 8) & 0xFF); + unsigned oldb = ((pix >> 0) & 0xFF); + int rdiff = (int)(r-oldr); if(rdiff < 0)rdiff=-rdiff; + int gdiff = (int)(g-oldg); if(gdiff < 0)gdiff=-gdiff; + int bdiff = (int)(b-oldb); if(bdiff < 0)bdiff=-bdiff; + unsigned absdiff = rdiff+gdiff+bdiff; + diff += absdiff; + } + if(diff > max_x * 256) + { + Reset(); + } + } + + if(first || org_x < xmin) xmin = org_x; + if(first || org_y < ymin) ymin = org_y; + int xtmp = org_x+max_x; if(first || xtmp > xmax) xmax=xtmp; + int ytmp = org_y+max_y; if(first || ytmp > ymax) ymax=ytmp; + first=false; + + PutScreen(buf, org_x,org_y, max_x,max_y); + } + + void SaveNow() + { + Save(); + } + + } layer; + +public: + TILE_Tracker() + { + } + + void Reset() + { + layer.Reset(); + } + + void Begin() + { + for(unsigned a=0; a= max) return; /* silently ignore bad coordinate */ + //fprintf(stderr, "[%u]", pos); + CurrentScreen[pos] = pixel; + } + void Save() + { + layer.SaveNow(); + } +} TILE_Tracker; + +extern "C" { /******* PPU variables: **/ + +/* 0..7. Finetuning the scrolling. */ +unsigned VScroll=0; +unsigned HScroll=0; +unsigned NTAWrites=0; + +void TILE_TrackFrame(const void*data, unsigned width, unsigned height) +{ + TILE_Tracker.Begin(); + + const unsigned short * buf = (const unsigned short *)data; + unsigned pos=0; + for(unsigned y=0; y= 128) hdiff -= 256; + if(vdiff >= 120) vdiff -= 240; + + long absdiff2 = (hdiff*hdiff) + (vdiff*vdiff); + + bool suspect = false; + if(/*absdiff2 > 20*20 || */NTAWrites > 200) + { + suspect = true; + } + +/* + if(NTAWrites != 0) + fprintf(stderr, "%ld NTA writes\n", NTAWrites); +*/ + TILE_Tracker.End(hdiff, vdiff, suspect); + NTAWrites = 0; + +#if PIXEL_METHOD==PIXEL_METHOD_CHANGELOG + ++CurrentTimer; +#endif + +} +void TILE_ForceSave() +{ + TILE_Tracker.Save(); +} + + +} + +#else +extern "C" { +void TILE_ForceSave() { } +} + +#endif diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/tiletracker.cc fceu/src/drivers/pc/tiletracker.cc --- fceu-0.98.15-src/src/drivers/pc/tiletracker.cc 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/drivers/pc/tiletracker.cc 2006-04-11 10:43:11.000000000 +0300 @@ -0,0 +1,608 @@ +#include "tiletracker.hh" + +#if NESVIDEOS_TRACKING + +#include +#include +#include + +#include "uncertainpixel.hh" + +typedef unsigned int uint32 ; +typedef unsigned char uint8 ; +typedef unsigned short uint16; + +#if PIXEL_METHOD==PIXEL_METHOD_CHANGELOG || PIXEL_METHOD==PIXEL_METHOD_LOOPINGLOG +unsigned CurrentTimer = 0; +unsigned SequenceBegin = 0; +struct ScrollingPosition +{ + unsigned org_x, org_y; + unsigned max_x, max_y; +}; +static std::vector scrolls; + +#endif + +class TILE_Tracker +{ + /* In this tracker, alpha = visibility. 0=transparent */ + + int org_x, org_y; + + int xmin,ymin; + int xmax,ymax; + bool first; + + unsigned count; + + int get_min_y() const { return ymin; } + int get_max_y() const { return ymax; } + int get_min_x() const { return xmin; } + int get_max_x() const { return xmax; } + + typedef std::vector vectype; + typedef std::map xmaptype; + typedef std::map ymaptype; + ymaptype screens; + + const std::vector LoadScreen(int ox,int oy, unsigned sx,unsigned sy) + { + // Create the result vector filled with default pixel value + std::vector result(sy*sx, DefaultPixel); + + const int xbegin = ox; + const int xend = ox+sx-1; + + const int xscreen_begin = xbegin/256; + const int xscreen_end = xend /256; + + const int ybegin = oy; + const int yend = oy+sy-1; + + const int yscreen_begin = ybegin/256; + const int yscreen_end = yend /256; + +/* + fprintf(stderr, "Loading screens x(%d..%d)y(%d..%d)\n", + xscreen_begin,xscreen_end, + yscreen_begin,yscreen_end); +*/ + + // Load each cube that falls into the requested region + + unsigned targetpos=0; + unsigned this_cube_ystart = oy&255; + for(int yscreen=yscreen_begin; yscreen<=yscreen_end; ++yscreen) + { + xmaptype& xmap = screens[yscreen]; + + unsigned this_cube_yend = yscreen==yscreen_end ? ((oy+sy-1)&255) : 255; + + unsigned this_cube_xstart = ox&255; + for(int xscreen=xscreen_begin; xscreen<=xscreen_end; ++xscreen) + { + unsigned this_cube_xend = xscreen==xscreen_end ? ((ox+sx-1)&255) : 255; +/* + fprintf(stderr, " Cube(%u,%u)-(%u,%u)\n", + this_cube_xstart,this_cube_xend, + this_cube_ystart,this_cube_yend); +*/ + const vectype& cube = xmap[xscreen]; + /* If this screen is not yet initialized, we'll skip over + * it, since there's no real reason to initialize it at + * this point. */ + if(!cube.empty()) + { + /* Load this particular cube */ + for(unsigned yp=this_cube_ystart, y=0; yp<=this_cube_yend; ++y, ++yp) + { + unsigned srcp = 256*yp + this_cube_xstart - this_cube_xstart; + unsigned destp = sx*y + targetpos - this_cube_xstart; + for(unsigned xp=this_cube_xstart; xp<=this_cube_xend; ++xp) + result[destp + xp] = cube[srcp + xp]; + } + } + + unsigned this_cube_xsize = (this_cube_xend-this_cube_xstart)+1; + + targetpos+= this_cube_xsize; + + this_cube_xstart=0; + } + + unsigned this_cube_ysize = (this_cube_yend-this_cube_ystart)+1; + + targetpos += sx * (this_cube_ysize-1); + + this_cube_ystart=0; + } + + return result; + } + + void PutScreen(const uint16*const input, int ox,int oy, unsigned sx,unsigned sy) + { + /* Nearly the same as LoadScreen. */ + + const int xbegin = ox; + const int xend = ox+sx-1; + + const int xscreen_begin = xbegin/256; + const int xscreen_end = xend /256; + + const int ybegin = oy; + const int yend = oy+sy-1; + + const int yscreen_begin = ybegin/256; + const int yscreen_end = yend /256; + +/* + fprintf(stderr, "Writing screens x(%d..%d)y(%d..%d)\n", + xscreen_begin,xscreen_end, + yscreen_begin,yscreen_end); +*/ + unsigned targetpos=0; + unsigned this_cube_ystart = oy&255; + for(int yscreen=yscreen_begin; yscreen<=yscreen_end; ++yscreen) + { + xmaptype& xmap = screens[yscreen]; + + unsigned this_cube_yend = yscreen==yscreen_end ? ((oy+sy-1)&255) : 255; + + unsigned this_cube_xstart = ox&255; + for(int xscreen=xscreen_begin; xscreen<=xscreen_end; ++xscreen) + { + unsigned this_cube_xend = xscreen==xscreen_end ? ((ox+sx-1)&255) : 255; + + vectype& cube = xmap[xscreen]; + /* If this screen is not yet initialized, we'll initialize it */ + if(cube.empty()) cube.resize(256*256); + +/* + fprintf(stderr, " Cube(%u,%u)-(%u,%u)\n", + this_cube_xstart,this_cube_xend, + this_cube_ystart,this_cube_yend); +*/ + /* Write this particular cube */ + for(unsigned yp=this_cube_ystart, y=0; yp<=this_cube_yend; ++y, ++yp) + for(unsigned xp=this_cube_xstart, x=0; xp<=this_cube_xend; ++x, ++xp) + { + uint16 pix16 = input[targetpos + x + y*sx]; + unsigned r = (pix16 >> (11-3)) & 0xF8; + unsigned g = (pix16 >> (5-2)) & 0xFC; + unsigned b = (pix16 << -(0-3)) & 0xF8; + cube[xp + 256*yp].set(r,g,b); + } + + unsigned this_cube_xsize = (this_cube_xend-this_cube_xstart)+1; + + targetpos+= this_cube_xsize; + + this_cube_xstart=0; + } + + unsigned this_cube_ysize = (this_cube_yend-this_cube_ystart)+1; + + targetpos += sx * (this_cube_ysize-1); + + this_cube_ystart=0; + } + } +public: + TILE_Tracker() : count(0) + { + Reset(); + } + + ~TILE_Tracker() + { + } + +#if PIXEL_METHOD==PIXEL_METHOD_CHANGELOG + std::vector LastScreen; + std::string LastFilename; + + bool veq(const std::vector& a, const std::vector& b) const + { + if(a.size() != b.size()) return false; + return memcmp(&a[0], &b[0], a.size()*sizeof(a[0])) == 0; + } +#endif + + void Cleanup() + { + fprintf(stderr, "Compressing...\n"); + for(ymaptype::iterator y=screens.begin(); y!=screens.end(); ++y) + { + xmaptype& xmap = y->second; + for(xmaptype::iterator x=xmap.begin(); x!=xmap.end(); ++x) + { + vectype& vec = x->second; + for(unsigned a=0; a= LoopLength) SavedTimer = LoopLength; +# endif + for(CurrentTimer=0; CurrentTimer screen = LoadScreen(xmi,ymi, wid,hei); +#if PIXEL_METHOD==PIXEL_METHOD_CHANGELOG + if(veq(screen, LastScreen) && !LastFilename.empty()) + { + fprintf(stderr, "->link (%u,%u)\n", screen.size(), LastScreen.size()); + std::string cmd = "ln "+LastFilename+" "+Filename; + system(cmd.c_str()); + LastScreen = screen; + LastFilename = Filename; + return; + } + LastScreen = screen; + LastFilename = Filename; +#endif + + gdImagePtr im = gdImageCreateTrueColor(wid,hei); + + for(unsigned p=0, y=0; y> 24) & 0xFF, + (pix32 >> 16) & 0xFF, + (pix32 >> 8) & 0xFF + )*/; + gdImageSetPixel(im, x,y, pix); + } + + FILE* fp = fopen(Filename, "wb"); + gdImagePngEx(im, fp, 1); + fclose(fp); + gdImageDestroy(im); + } + + void Reset() + { +#if PIXEL_METHOD==PIXEL_METHOD_CHANGELOG || PIXEL_METHOD==PIXEL_METHOD_LOOPINGLOG + SequenceBegin += CurrentTimer; + CurrentTimer = 0; +#endif + + fprintf(stderr, " Resetting\n"); + screens.clear(); + org_x = 0x40000000; + org_y = 0x40000000; + xmin=xmax=org_x; + ymin=ymax=org_y; + first = true; + } + + void FitScreen(const uint16* buf, + unsigned max_x, + unsigned max_y, + int offs_x, int offs_y, bool suspect) + { +#if !(PIXEL_METHOD==PIXEL_METHOD_CHANGELOG || PIXEL_METHOD==PIXEL_METHOD_LOOPINGLOG) +/* + static unsigned framecounter=0; + if(++framecounter == 600) { Save(); framecounter=0; } +*/ +#endif + + if(offs_x != 0 || offs_y != 0) + { + fprintf(stderr, " Motion(%d,%d), Origo(%d,%d)\n", offs_x,offs_y, org_x,org_y); + } + + org_x += offs_x; org_y += offs_y; + + if(suspect) + { + std::vector oldbuf = LoadScreen(org_x,org_y, max_x,max_y); + unsigned diff = 0; + for(unsigned a=0; a> (11-3)) & 0xF8; + unsigned g = (pix16 >> (5-2)) & 0xFC; + unsigned b = (pix16 << -(0-3)) & 0xF8; + unsigned oldr = ((pix >> 16) & 0xFF); + unsigned oldg = ((pix >> 8) & 0xFF); + unsigned oldb = ((pix >> 0) & 0xFF); + int rdiff = (int)(r-oldr); if(rdiff < 0)rdiff=-rdiff; + int gdiff = (int)(g-oldg); if(gdiff < 0)gdiff=-gdiff; + int bdiff = (int)(b-oldb); if(bdiff < 0)bdiff=-bdiff; + unsigned absdiff = rdiff+gdiff+bdiff; + diff += absdiff; + } + + if(diff > oldbuf.size() * 128) + { +#if 0 + /* Castlevania hack */ + static int org_diff = -180; + org_y += org_diff; + org_diff = -org_diff; +#else +#if 1 + SaveAndReset(); +#endif +#endif + } + } + + if(first || org_x < xmin) xmin = org_x; + if(first || org_y < ymin) ymin = org_y; + int xtmp = org_x+max_x; if(first || xtmp > xmax) xmax=xtmp; + int ytmp = org_y+max_y; if(first || ytmp > ymax) ymax=ytmp; + first=false; + +#if 0 + /* If the image geometry would exceed some bounds */ + if(xmax-xmin > 800 || ymax-ymin > 800) + { + SaveAndReset(); + first=true; + } +#endif + + PutScreen(buf, org_x,org_y, max_x,max_y); +#if PIXEL_METHOD==PIXEL_METHOD_CHANGELOG || PIXEL_METHOD==PIXEL_METHOD_LOOPINGLOG + ScrollingPosition s; + s.org_x = org_x; + s.org_y = org_y; + s.max_x = max_x; + s.max_y = max_y; + scrolls.push_back(s); + + ++CurrentTimer; +#endif + } +} TILE_Tracker; + +extern "C" { /******* PPU variables: **/ + +/* 0..7. Finetuning the scrolling. */ +unsigned NTAWrites=0; +static unsigned VScroll=0; +static unsigned HScroll=0; +static const unsigned MinScanLine = 0; +static const unsigned MaxScanLine = 272; +static unsigned ScrollPointers[MaxScanLine] = { 0 }; +static unsigned PrevScrollingDefault = 0; +void TILE_SaveScroll(unsigned H, unsigned V, int scanline) +{ +/* + printf("[%3d] %u,%u\n", scanline, H,V); + fflush(stdout); +*/ + if(scanline < 0 || scanline >= (int)MaxScanLine) return; + + unsigned code = H*4000+V; + ScrollPointers[scanline] = code + 1; +} +static void GetScroll(unsigned& First, unsigned& Last) +{ + std::map ScrollUsages; + // Take the most common value that appeared during the frame. + + // snes9x: take the first value and duplicate it to the frame. + for(unsigned a=0; a max) { max = usage; result = value; } + } + PrevScrollingDefault = prev; + + // Find the region that has this scrolling value, stored in "result". + int state=0; + for(unsigned a=MinScanLine; a < MaxScanLine && state < 2; ++a) + { + unsigned value = ScrollPointers[a]; + if(value == 0) continue; + --value; + switch(state) + { + case 0: if(value == result) { First = a; state = 1; } break; + case 1: if(value != result) { Last =a-1; state = 2; } break; + } + } + + VScroll = result % 4000; + HScroll = result / 4000; + + fprintf(stderr, "%u-%u: %u,%u\n", First,Last, HScroll,VScroll); + + if(First > 0 && First < 8) + { + //fprintf(stderr, "First < 8 !\n"); + + VScroll = (VScroll + 240 - First) % 240; + + First = 0; + } + + for(unsigned a=MinScanLine; a> (11-3)) & 0xF8; + unsigned g = (pix16 >> (5-2)) & 0xFC; + unsigned b = (pix16 << -(0-3)) & 0xF8; + unsigned pix32 = gdTrueColor(r,g,b); + gdImageSetPixel(im, x,y, pix32); + } + + char Filename[512]; + static unsigned count=0; + sprintf(Filename, "tile-%04u.png", count++); + + FILE* fp = fopen(Filename, "wb"); + gdImagePngEx(im, fp, 1); + fclose(fp); + gdImageDestroy(im); + return; +#endif + + unsigned FirstLine = 0; + unsigned LastLine = height-1; + + GetScroll(FirstLine,LastLine); + + //LastLine -= 10*8; + + //if(LastLine >= height) LastLine=height-1; + //FirstLine=0; + //LastLine =height-1; + + LastLine=194-16; + FirstLine=0; + + static unsigned PrevV; + static unsigned PrevH; + static bool first=true; + if(first) { PrevV=VScroll; PrevH=HScroll; first=false; } + + fprintf(stderr, "Firstline %u,%u\n", FirstLine,LastLine); + + //VScroll += FirstLine; + + int vdiff = (VScroll+240-PrevV)%240; PrevV=VScroll; + int hdiff = (HScroll+256-PrevH)%256; PrevH=HScroll; + + if(hdiff >= 128) hdiff -= 256; + if(vdiff >= 120) vdiff -= 240; + + //long absdiff2 = (hdiff*hdiff) + (vdiff*vdiff); + + bool suspect = false; + if(/*absdiff2 > 20*20 || */NTAWrites > 100) + { + // suspect = true; + } + +/* + if(NTAWrites != 0) + fprintf(stderr, "%ld NTA writes\n", NTAWrites); +*/ + TILE_Tracker.FitScreen + ( + buf + FirstLine*width, + width, LastLine-FirstLine+1, + hdiff, vdiff, suspect + ); + NTAWrites = 0; +} + +void TILE_ForceSave() +{ + TILE_Tracker.SaveAndReset(); +} + + + +} + +#else +extern "C" { +void TILE_ForceSave() { } +void TILE_SaveScroll(unsigned H, unsigned V, int scanline) { } +void TILE_TrackFrame(const void*data, unsigned width, unsigned height) { } +} + +#endif diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/tiletracker.hh fceu/src/drivers/pc/tiletracker.hh --- fceu-0.98.15-src/src/drivers/pc/tiletracker.hh 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/drivers/pc/tiletracker.hh 2006-04-11 10:43:11.000000000 +0300 @@ -0,0 +1,19 @@ +//#define NESVIDEOS_TRACKING 1 + +#ifdef __cplusplus +extern "C" { +#endif +extern void TILE_TrackFrame(const void*data, unsigned width, unsigned height); +extern void TILE_ForceSave(); +extern void TILE_SaveScroll(unsigned H, unsigned V, int scanline); + + +#ifdef NESVIDEOS_TRACKING +# define TILE_ClearScroll(H,V) H=V=0 +#else +# define TILE_ClearScroll(H,V) +#endif + +#ifdef __cplusplus +} +#endif diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/tiletracker-warp.cc fceu/src/drivers/pc/tiletracker-warp.cc --- fceu-0.98.15-src/src/drivers/pc/tiletracker-warp.cc 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/drivers/pc/tiletracker-warp.cc 2006-04-11 10:43:11.000000000 +0300 @@ -0,0 +1,298 @@ +#include "tiletracker.hh" + +#if NESVIDEOS_TRACKING + +#include +#include +#include + +#include "uncertainpixel.hh" + +#include "doubledeque.hh" + +typedef unsigned int uint32 ; +typedef unsigned char uint8 ; +typedef unsigned short uint16; + +#if PIXEL_METHOD==PIXEL_METHOD_CHANGELOG +unsigned CurrentTimer = 0; +#endif + +class TILE_Tracker +{ + /* In this tracker, alpha = visibility. 0=transparent */ + static const unsigned max_x = 256; + static const unsigned max_y = 256; + static const unsigned max = max_x * max_y; + uint16 CurrentScreen[max]; + + class Layer + { + int org_x, org_y; + + int xmin,ymin; + int xmax,ymax; + bool first; + + unsigned count; + + int get_min_y() const { return ymin; } + int get_max_y() const { return ymax; } + int get_min_x() const { return xmin; } + int get_max_x() const { return xmax; } + + DoubleDeque screens; + + const std::vector LoadScreen(int ox,int oy, unsigned sx,unsigned sy) + { + std::vector result(sy*sx, 0); + unsigned pos=0; + for(unsigned y=0; y::Row& row = screens.getRow(y+oy); + for(unsigned x=0; x> (11-3)) & 0xF8; + unsigned g = (pix16 >> (5-2)) & 0xFC; + unsigned b = (pix16 << -(0-3)) & 0xF8; + screens.at(y+oy, x+ox).set(r,g,b); + } + } + + void Save() + { + if(first) return; + + #if PIXEL_METHOD==PIXEL_METHOD_CHANGELOG + static bool Saving = false; + if(!Saving) + { + Saving = true; + unsigned SavedTimer = CurrentTimer; + for(CurrentTimer=0; CurrentTimer screen = LoadScreen(xmi,ymi, wid,hei); + + gdImagePtr im = gdImageCreateTrueColor(wid,hei); + + for(unsigned p=0, y=0; y> 24) & 0xFF, + (pix32 >> 16) & 0xFF, + (pix32 >> 8) & 0xFF + )*/; + gdImageSetPixel(im, x,y, pix); + } + + char Filename[512]; + sprintf(Filename, "tile-%04u.png", count); + + FILE* fp = fopen(Filename, "wb"); + gdImagePng(im, fp); + fclose(fp); + gdImageDestroy(im); + } + + public: + Layer() : count(0) + { + Reset(); + } + ~Layer() + { + } + + void Reset() + { + Save(); + + fprintf(stderr, " Too different\n"); + screens.clear(); + org_x = 0x40000000; + org_y = 0x40000000; + ++count; + first = true; + } + + void FitScreen(const uint16* buf, int bestdx, int bestdy, bool suspect) + { + static unsigned framecounter=0; + if(++framecounter == 600) { Save(); framecounter=0; } + + if(bestdx != 0 || bestdy != 0) + { + fprintf(stderr, " Motion(%d,%d), Origo(%d,%d)\n", bestdx,bestdy, org_x,org_y); + } + + org_x += bestdx; org_y += bestdy; + + if(suspect) + { + std::vector oldbuf = LoadScreen(org_x,org_y, max_x,max_y); + unsigned diff = 0; + for(unsigned a=0; a> (11-3)) & 0xF8; + unsigned g = (pix16 >> (5-2)) & 0xFC; + unsigned b = (pix16 << -(0-3)) & 0xF8; + unsigned oldr = ((pix >> 16) & 0xFF); + unsigned oldg = ((pix >> 8) & 0xFF); + unsigned oldb = ((pix >> 0) & 0xFF); + int rdiff = (int)(r-oldr); if(rdiff < 0)rdiff=-rdiff; + int gdiff = (int)(g-oldg); if(gdiff < 0)gdiff=-gdiff; + int bdiff = (int)(b-oldb); if(bdiff < 0)bdiff=-bdiff; + unsigned absdiff = rdiff+gdiff+bdiff; + diff += absdiff; + } + if(diff > max_x * 256) + { + Reset(); + } + } + + if(first || org_x < xmin) xmin = org_x; + if(first || org_y < ymin) ymin = org_y; + int xtmp = org_x+max_x; if(first || xtmp > xmax) xmax=xtmp; + int ytmp = org_y+max_y; if(first || ytmp > ymax) ymax=ytmp; + first=false; + + PutScreen(buf, org_x,org_y, max_x,max_y); + } + + void SaveNow() + { + Save(); + } + + } layer; + +public: + TILE_Tracker() + { + } + + void Reset() + { + layer.Reset(); + } + + void Begin() + { + for(unsigned a=0; a= max) return; /* silently ignore bad coordinate */ + //fprintf(stderr, "[%u]", pos); + CurrentScreen[pos] = pixel; + } + void Save() + { + layer.SaveNow(); + } +} TILE_Tracker; + +extern "C" { /******* PPU variables: **/ + +/* 0..7. Finetuning the scrolling. */ +unsigned VScroll=0; +unsigned HScroll=0; +unsigned NTAWrites=0; + +void TILE_TrackFrame(const void*data, unsigned width, unsigned height) +{ + TILE_Tracker.Begin(); + + const unsigned short * buf = (const unsigned short *)data; + unsigned pos=0; + for(unsigned y=0; y= 128) hdiff -= 256; + if(vdiff >= 120) vdiff -= 240; + + long absdiff2 = (hdiff*hdiff) + (vdiff*vdiff); + + bool suspect = false; + if(/*absdiff2 > 20*20 || */NTAWrites > 200) + { + suspect = true; + } + +/* + if(NTAWrites != 0) + fprintf(stderr, "%ld NTA writes\n", NTAWrites); +*/ + TILE_Tracker.End(hdiff, vdiff, suspect); + NTAWrites = 0; + +#if PIXEL_METHOD==PIXEL_METHOD_CHANGELOG + ++CurrentTimer; +#endif + +} +void TILE_ForceSave() +{ + TILE_Tracker.Save(); +} + + +} + +#else +extern "C" { +void TILE_ForceSave() { } +} + +#endif diff -bB -NaHudr fceu-0.98.15-src/src/drivers/pc/uncertainpixel.hh fceu/src/drivers/pc/uncertainpixel.hh --- fceu-0.98.15-src/src/drivers/pc/uncertainpixel.hh 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/drivers/pc/uncertainpixel.hh 2006-04-11 10:43:11.000000000 +0300 @@ -0,0 +1,530 @@ +typedef unsigned int uint32 ; +typedef unsigned char uint8 ; +typedef unsigned short uint16; + +#define PIXEL_METHOD_AVERAGE 0 +#define PIXEL_METHOD_MOST_USED 1 +#define PIXEL_METHOD_MOST_USED16 2 +#define PIXEL_METHOD_CHANGELOG 3 +#define PIXEL_METHOD_LOOPINGLOG 4 +#define PIXEL_METHOD_LAST 5 + +//#define PIXEL_METHOD PIXEL_METHOD_CHANGELOG +#define PIXEL_METHOD PIXEL_METHOD_LOOPINGLOG + +/* undef or define. */ +#define CHANGELOG_GUESS_OUTSIDES + +static const uint32 DefaultPixel = 0x404041; + +#include +#include +#include + +#if 1 +#define VecType std::vector +#else +template +class VecType +{ +public: + typedef T* iterator; + typedef const T* const_iterator; + typedef T& reference; + typedef const T& const_reference; + +public: + VecType() : data(0),len(0) { } + ~VecType() { if(len) delete[] data; } + + void reserve(unsigned) { } /* ignore */ + + VecType(const VecType& b) : len(b.len) + { + if(len) + { + data = new T[len]; + std::copy(b.begin(),b.end(), data); + } + } + VecType& operator= (const VecType& b) + { + if(len) { delete[] data; if(!b.len) { len=0; data=0; return *this; } } + len = b.len; + data = new T[len]; + std::copy(b.begin(),b.end(), data); + return *this; + } +public: + reference operator[] (unsigned ind) { return data[ind]; } + iterator begin() { return data; } + iterator end() { return data+len; } + const_iterator begin() const { return data; } + const_iterator end() const { return data+len; } + unsigned size() const { return len; } + iterator insert(iterator pos, T value) + { + if(!len) { data = new T[1]; *data = value; return data; } + + T* newdata = new T[len+1]; + unsigned diff = pos-data; + std::copy(data,pos, newdata); + newdata[diff] = value; + std::copy(pos, data+len, newdata+diff+1); + delete[] data; + data = newdata; + ++len; + return newdata + diff; + } +private: + T* data; + unsigned len; +}; +#endif + +template +class MapType +{ +public: + typedef K key_type; + typedef V mapped_type; + typedef std::pair value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; +private: + typedef VecType rep; + rep data; + +public: + MapType() { } + + typedef typename rep::iterator iterator; + typedef typename rep::const_iterator const_iterator; + + const_iterator begin() const { return data.begin(); } + const_iterator end() const { return data.end(); } + iterator begin() { return data.begin(); } + iterator end() { return data.end(); } + + void clear() + { + std::_Destroy(&data); + std::_Construct(&data); + } + + iterator lower_bound(K key) + { + iterator first = begin(), last = end(); + unsigned limit; + while(__builtin_expect((limit=last-first) > 0, 1)) + { + iterator middle = first + (limit>>1); + if(middle->first < key) + first = middle+1; + else + last = middle; + } + return first; + } + V& operator[] (K key) + { + iterator i = lower_bound(key); + if(i == end() || i->first > key) + { + i = data.insert(i, value_type(key, V())); + } + return i->second; + } +}; + +class MostUsedPixel +{ + typedef MapType vmap; + vmap values; + unsigned pix; + unsigned short max; + //bool final; +public: + MostUsedPixel() : pix(DefaultPixel),max(0) //, final(false) + { + } + void set(unsigned R,unsigned G,unsigned B) + { + //if(final) return; + uint32 p = (((R) << 16) + ((G) << 8) + (B)); + set_p(p); + } + void set_p(uint32 p) + { + unsigned short v = ++values[p]; + if(v > max) { max = v; pix = p; } + //if(v > 300) { final=true; values.clear(); } + } + uint32 value_ignore(uint32 ignore) const + { + if(pix != ignore) return pix; + unsigned max2 = 0; + uint32 result = DefaultPixel; + for(vmap::const_iterator i = values.begin(); i != values.end(); ++i) + { + if(i->first != ignore) + { + unsigned v = i->second; + if(v > max2) { max2 = v; result = i->first; } + } + } + return result; + } + operator uint32() const { return pix; } + void Compress() + { + values.clear(); + } + void CompressButIgnore(uint32 ignore) + { + pix = value_ignore(ignore); + values.clear(); + } +}; + +class AveragePixel +{ + unsigned r,g,b; + unsigned n; + unsigned pix; +public: + AveragePixel() : r(0),g(0),b(0),n(0), pix(DefaultPixel) + { + } + void set(unsigned R,unsigned G,unsigned B) + { + r+=R; g+=G; b+=B; + ++n; + + pix = (((r/n) << 16) + ((g/n) << 8) + (b/n)); + } + operator uint32() const { return pix; } + void Compress() + { + } +}; + +class LastPixel +{ + unsigned pix; +public: + LastPixel() : pix(DefaultPixel) + { + } + void set(unsigned R,unsigned G,unsigned B) + { + set_p(((R) << 16) + ((G) << 8) + B); + } + void set_p(uint32 p) + { + pix = p; + } + operator uint32() const { return pix; } + void Compress() + { + } +}; + +#if PIXEL_METHOD==PIXEL_METHOD_AVERAGE +typedef AveragePixel UncertainPixel; +#endif + +#if PIXEL_METHOD==PIXEL_METHOD_MOST_USED +typedef MostUsedPixel UncertainPixel; +#endif + +#if PIXEL_METHOD==PIXEL_METHOD_MOST_USED16 +class UncertainPixel +{ + static const unsigned BUFFER_SIZE = 16; + + // Read the first BUFFER_SIZE amount of pixels into this buffer. + // The last item is reused as a place for the current most common pixel. + unsigned pixels[BUFFER_SIZE]; + + // Index to the current unused place in the buffer: + unsigned pixelIndex; + + public: + UncertainPixel(): pixelIndex(0) + { + // By default the color of the current most common pixel is black: + pixels[BUFFER_SIZE-1] = 0; + } + + void set(unsigned r, unsigned g, unsigned b) + { + // If we have already read BUFFER_SIZE pixels, ignore the rest: + if(pixelIndex == BUFFER_SIZE) return; + + const unsigned newPixel = (r<<16) | (g<<8) | b; + + // Insert the new pixel into its sorted place: + unsigned i = pixelIndex; + while(i > 0 && pixels[i-1] > newPixel) + { + pixels[i] = pixels[i-1]; + --i; + } + pixels[i] = newPixel; + ++pixelIndex; + + // Count the most used pixel and put it to end of the buffer: + unsigned currentMaxCount = 0, mostUsedPixel = 0; + for(i = 0; i < pixelIndex;) + { + unsigned currentPixel = pixels[i], count = 1; + while(++i < pixelIndex && pixels[i] == currentPixel) + ++count; + if(count > currentMaxCount) + { + mostUsedPixel = currentPixel; + currentMaxCount = count; + } + } + pixels[BUFFER_SIZE-1] = mostUsedPixel; + } + + operator uint32() const + { + return pixels[BUFFER_SIZE-1]; + } + + void Compress() + { + } +}; +#endif + +#if PIXEL_METHOD==PIXEL_METHOD_CHANGELOG +#include +#include +# include "hash.hh" +extern unsigned CurrentTimer; +class UncertainPixel +{ + struct historyitem + { + unsigned moment; + unsigned pixel; + public: + historyitem() { } + + // Because std::upper_bound doesn't allow searching by types + // other than what the container has, here are utility functions + // to handle this container as if it only contained the "moment" value. + // Conveniently, it allows also the insertion of the "first moment" pixel. + historyitem(unsigned time) : moment(time) { } + bool operator< (const historyitem& b) const { return moment < b.moment; } + }; + + std::vector history; + unsigned lastpixel; + unsigned lastmoment; + +#ifdef CHANGELOG_GUESS_OUTSIDES + bool FirstMomentIsVague; + MostUsedPixel first_moment; +#endif + +#if 0 + MapType minvalues; +#endif +public: + UncertainPixel() : lastpixel(DefaultPixel), lastmoment(0) +#ifdef CHANGELOG_GUESS_OUTSIDES + , FirstMomentIsVague(true) +#endif + { + } + void set(unsigned R,unsigned G,unsigned B) + { + unsigned p = (((R) << 16) + ((G) << 8) + (B)); + + if(CurrentTimer == 0) + { + // Ignore first frame. It's gray. + return; + } + +#if 0 + ++minvalues[p]; +#endif + + // Store the value into the history. + // (But only if it's different than previous value.) + if(lastpixel != p || history.empty()) + { + lastpixel = p; + + if(CurrentTimer == 0) + { + // The value of the pixel at first moment is precisely known. +#ifdef CHANGELOG_GUESS_OUTSIDES + FirstMomentIsVague = false; +#endif + } + else if(history.empty()) + { + // The value of the pixel at the first moment is not precisely known. +#ifdef CHANGELOG_GUESS_OUTSIDES + FirstMomentIsVague = true; + history.push_back(historyitem(0)); +#endif + } + + historyitem item; + item.pixel = p; + item.moment = CurrentTimer; + + history.push_back(item); + } +#ifdef CHANGELOG_GUESS_OUTSIDES + if(FirstMomentIsVague) UpdateFirstMoment(p); +#endif + lastmoment = CurrentTimer; + } + + operator uint32() const + { +#if 0 + /* Return the rarest of the last N values. */ + unsigned tmpmin = lastmoment; + unsigned retval = Find(0); + for(MapType::const_iterator + i = minvalues.begin(); + i != minvalues.end(); + ++i) + { + if(i->second <= tmpmin) { tmpmin = i->second; retval = i->first; } + } + return retval; +#else + return Find(CurrentTimer); +#endif + } + + void Compress() + { +#ifdef CHANGELOG_GUESS_OUTSIDES + first_moment.Compress(); +#endif + } + +private: + uint32 Find(unsigned time) const + { + // Find the pixel value that was present at the given time. + /* + map::lower_bound: + Returns an iterator pointing to first element >= key, or end(). + map::upper_bound: + Returns an iterator pointing to the first element > key, or end(). + + What we want is an iterator pointing + to the last element that is <= key. + */ + std::vector::const_iterator + i = std::upper_bound(history.begin(), history.end(), historyitem(time)); + + /* Pre-begin value: reasonable default */ + if(i == history.begin()) + { +#ifdef CHANGELOG_GUESS_OUTSIDES + return lastpixel; +#else + return DefaultPixel; +#endif + } + +#if 1 + /* Post-end value: Special handling */ + if(i == history.end()) + { + /* If the last value is somewhat behind the chosen moment, + * take the reasonable default instead */ + if(lastmoment+0 < time) + { +#ifdef CHANGELOG_GUESS_OUTSIDES + return history[0].pixel; +#else + return DefaultPixel; +#endif + } + } +#endif + + /* Anything else. Take the value. */ + --i; + return i->pixel; + } + +private: +#ifdef CHANGELOG_GUESS_OUTSIDES + void UpdateFirstMoment(uint32 p) + { + // Updates the value of the pixel at the first moment to the value + // that has appeared the most. + first_moment.set_p(p); + history[0].pixel = first_moment; + } +#endif +}; +#endif + +#if PIXEL_METHOD==PIXEL_METHOD_LOOPINGLOG +#include +#include +# include "hash.hh" +extern unsigned CurrentTimer; +static const unsigned LoopLength = 80; +class UncertainPixel +{ + MostUsedPixel most_used; + + LastPixel history[LoopLength]; +public: + UncertainPixel() + { + } + void set(unsigned R,unsigned G,unsigned B) + { + uint32 p = (((R) << 16) + ((G) << 8) + (B)); + if(CurrentTimer == 0) + { + // Ignore first frame. It's gray. + return; + } + most_used.set_p(p); + + unsigned offs = CurrentTimer % LoopLength; + if(history[offs] == DefaultPixel || p != most_used) + history[offs].set_p(p); + } + operator uint32() const + { + unsigned offs = CurrentTimer % LoopLength; + uint32 result = history[offs];//.value_ignore(most_used); + if(result == DefaultPixel) return most_used; + return result; + } + + void Compress() + { + most_used.Compress(); + //for(unsigned a=0; abyteorder == %d)\n{\n",destbo); //printf("if(srcformat->sampformat==%s && destformat->sameck[srcbits],check[destbits]); printf("while(frames--)\n{\n"); - - puts("int32_t tmp;"); - if(srcchannels) - puts("int32_t tmp2;"); - Fetch(srcbits,""); if(srcbo) diff -bB -NaHudr fceu-0.98.15-src/src/drivers/sexyal/drivers/dsound.c fceu/src/drivers/sexyal/drivers/dsound.c --- fceu-0.98.15-src/src/drivers/sexyal/drivers/dsound.c 2006-04-11 10:43:18.000000000 +0300 +++ fceu/src/drivers/sexyal/drivers/dsound.c 2006-04-11 10:43:11.000000000 +0300 @@ -194,7 +194,7 @@ int SexyALI_DSound_RawWrite(SexyAL_device *device, void *data, uint32_t len) { DSFobby *tmp=device->private; -// uint32_t cw; + uint32_t cw; //printf("Pre: %d\n",SexyALI_DSound_RawCanWrite(device)); //fflush(stdout); diff -bB -NaHudr fceu-0.98.15-src/src/fceu.c fceu/src/fceu.c --- fceu-0.98.15-src/src/fceu.c 2006-04-11 10:43:18.000000000 +0300 +++ fceu/src/fceu.c 2006-04-11 10:43:12.000000000 +0300 @@ -185,6 +185,9 @@ static void CloseGame(void) { + extern void TILE_ForceSave(); + TILE_ForceSave(); + if(FCEUGameInfo) { if(FCEUnetplay) @@ -373,7 +376,7 @@ extern int soundoptions; if(soundoptions&SO_MUTEFA) #endif - *SoundBufSize=0; // keep sound muted + //*SoundBufSize=0; // keep sound muted } } @@ -590,4 +593,10 @@ // if(EmulationPaused&1) // EmulationPaused |= 2; EmulationPaused |= 1|2; +/* + if(EmulationPaused&1) + EmulationPaused |= 2; + else + fprintf(stderr, "Not paused - frame advance ignored\n"); +*/ } diff -bB -NaHudr fceu-0.98.15-src/src/fceu.h fceu/src/fceu.h --- fceu-0.98.15-src/src/fceu.h 2006-04-11 10:43:18.000000000 +0300 +++ fceu/src/fceu.h 2006-04-11 10:43:12.000000000 +0300 @@ -90,7 +90,7 @@ extern uint8 pale; extern uint8 vsdip; -#define FCEUDEF_DEBUGGER +//#define FCEUDEF_DEBUGGER #define JOY_A 1 #define JOY_B 2 diff -bB -NaHudr fceu-0.98.15-src/src/Makefile.am fceu/src/Makefile.am --- fceu-0.98.15-src/src/Makefile.am 2006-04-11 10:43:18.000000000 +0300 +++ fceu/src/Makefile.am 2006-04-11 10:43:12.000000000 +0300 @@ -1,7 +1,7 @@ AUTOMAKE_OPTIONS = subdir-objects bin_PROGRAMS = fceu -fceu_SOURCES = x6502.c fceustr.c cart.c cheat.c crc32.c debug.c endian.c fceu.c fds.c file.c filter.c general.c ines.c input.c md5.c memory.c netplay.c nsf.c palette.c ppu.c sound.c state.c unif.c video.c vsuni.c wave.c movie.c +fceu_SOURCES = x6502.c fceustr.c cart.c cheat.c crc32.c debug.c endian.c fceu.c fds.c file.c filter.c general.c ines.c input.c md5.c memory.c netplay.c nsf.c palette.c ppu.c sound.c state.c unif.c video.c vsuni.c wave.c movie.c bisqbot.cc botfront.cc # soundexp.c diff -bB -NaHudr fceu-0.98.15-src/src/Makefile.in fceu/src/Makefile.in --- fceu-0.98.15-src/src/Makefile.in 2006-04-11 10:43:18.000000000 +0300 +++ fceu/src/Makefile.in 2006-04-11 10:43:12.000000000 +0300 @@ -68,8 +68,6 @@ AMTAR = @AMTAR@ AWK = @AWK@ CC = @CC@ -CCAS = @CCAS@ -CCASFLAGS = @CCASFLAGS@ CPP = @CPP@ CXX = @CXX@ CXXCPP = @CXXCPP@ @@ -93,7 +91,7 @@ # soundexp.c -fceu_SOURCES = x6502.c fceustr.c cart.c cheat.c crc32.c debug.c endian.c fceu.c fds.c file.c filter.c general.c ines.c input.c md5.c memory.c netplay.c nsf.c palette.c ppu.c sound.c state.c unif.c video.c vsuni.c wave.c movie.c unzip.c boards/mmc5.c boards/mmc3.c boards/mmc1.c boards/tengen.c boards/bonza.c boards/deirom.c boards/dream.c boards/konami-qtai.c boards/n106.c boards/karaoke.c boards/90.c boards/112.c boards/164.c boards/183.c boards/186.c boards/8237.c boards/8157.c boards/addrlatch.c boards/datalatch.c boards/h2288.c boards/malee.c boards/novel.c boards/sachen.c boards/subor.c boards/super24.c boards/supervision.c input/cursor.c input/zapper.c input/powerpad.c input/arkanoid.c input/shadow.c input/fkb.c input/fkb.h input/hypershot.c input/mahjong.c input/oekakids.c input/ftrainer.c input/quiz.c input/toprider.c input/bworld.c input/suborkb.c mappers/6.c mappers/8.c mappers/15.c mappers/16.c mappers/17.c mappers/18.c mappers/21.c mappers/22.c mappers/23.c mappers/24and26.c mappers/25.c mappers/27.c mappers/32.c mappers/33.c mappers/40.c mappers/41.c mappers/42.c mappers/43.c mappers/46.c mappers/50.c mappers/51.c mappers/57.c mappers/58.c mappers/59.c mappers/60.c mappers/61.c mappers/62.c mappers/65.c mappers/67.c mappers/68.c mappers/69.c mappers/71.c mappers/72.c mappers/73.c mappers/75.c mappers/76.c mappers/77.c mappers/79.c mappers/80.c mappers/82.c mappers/83.c mappers/85.c mappers/86.c mappers/88.c mappers/89.c mappers/91.c mappers/92.c mappers/95.c mappers/97.c mappers/99.c mappers/113.c mappers/117.c mappers/151.c mappers/180.c mappers/183.c mappers/184.c mappers/187.c mappers/189.c mappers/193.c mappers/200.c mappers/201.c mappers/202.c mappers/203.c mappers/ mappers/204.c mappers/208.c mappers/211.c mappers/212.c mappers/213.c mappers/214.c mappers/215.c mappers/217.c mappers/225.c mappers/226.c mappers/227.c mappers/228.c mappers/229.c mappers/230.c mappers/231.c mappers/232.c mappers/234.c mappers/235.c mappers/240.c mappers/241.c mappers/242.c mappers/244.c mappers/246.c mappers/255.c mappers/emu2413.c mappers/mmc2and4.c mappers/simple.c drivers/common/args.c drivers/common/cheat.c drivers/common/config.c drivers/common/vidblit.c drivers/common/hq2x.c drivers/common/hq3x.c drivers/common/scale2x.c drivers/common/scale3x.c drivers/common/scalebit.c $(sexyal_SOURCES) $(fceud_SOURCES) +fceu_SOURCES = x6502.c fceustr.c cart.c cheat.c crc32.c debug.c endian.c fceu.c fds.c file.c filter.c general.c ines.c input.c md5.c memory.c netplay.c nsf.c palette.c ppu.c sound.c state.c unif.c video.c vsuni.c wave.c movie.c bisqbot.cc botfront.cc unzip.c boards/mmc5.c boards/mmc3.c boards/mmc1.c boards/tengen.c boards/bonza.c boards/deirom.c boards/dream.c boards/konami-qtai.c boards/n106.c boards/karaoke.c boards/90.c boards/112.c boards/164.c boards/183.c boards/186.c boards/8237.c boards/8157.c boards/addrlatch.c boards/datalatch.c boards/h2288.c boards/malee.c boards/novel.c boards/sachen.c boards/subor.c boards/super24.c boards/supervision.c input/cursor.c input/zapper.c input/powerpad.c input/arkanoid.c input/shadow.c input/fkb.c input/fkb.h input/hypershot.c input/mahjong.c input/oekakids.c input/ftrainer.c input/quiz.c input/toprider.c input/bworld.c input/suborkb.c mappers/6.c mappers/8.c mappers/15.c mappers/16.c mappers/17.c mappers/18.c mappers/21.c mappers/22.c mappers/23.c mappers/24and26.c mappers/25.c mappers/27.c mappers/32.c mappers/33.c mappers/40.c mappers/41.c mappers/42.c mappers/43.c mappers/46.c mappers/50.c mappers/51.c mappers/57.c mappers/58.c mappers/59.c mappers/60.c mappers/61.c mappers/62.c mappers/65.c mappers/67.c mappers/68.c mappers/69.c mappers/71.c mappers/72.c mappers/73.c mappers/75.c mappers/76.c mappers/77.c mappers/79.c mappers/80.c mappers/82.c mappers/83.c mappers/85.c mappers/86.c mappers/88.c mappers/89.c mappers/91.c mappers/92.c mappers/95.c mappers/97.c mappers/99.c mappers/113.c mappers/117.c mappers/151.c mappers/180.c mappers/183.c mappers/184.c mappers/187.c mappers/189.c mappers/193.c mappers/200.c mappers/201.c mappers/202.c mappers/203.c mappers/ mappers/204.c mappers/208.c mappers/211.c mappers/212.c mappers/213.c mappers/214.c mappers/215.c mappers/217.c mappers/225.c mappers/226.c mappers/227.c mappers/228.c mappers/229.c mappers/230.c mappers/231.c mappers/232.c mappers/234.c mappers/235.c mappers/240.c mappers/241.c mappers/242.c mappers/244.c mappers/246.c mappers/255.c mappers/emu2413.c mappers/mmc2and4.c mappers/simple.c drivers/common/args.c drivers/common/cheat.c drivers/common/config.c drivers/common/vidblit.c drivers/common/hq2x.c drivers/common/hq3x.c drivers/common/scale2x.c drivers/common/scale3x.c drivers/common/scalebit.c $(sexyal_SOURCES) $(fceud_SOURCES) @USE_SEXYAL_TRUE@sexyal_SOURCES = drivers/sexyal/sexyal.c drivers/sexyal/md5.c drivers/sexyal/smallc.c drivers/sexyal/convert.c $(TMP_SEXYAL) @@ -103,7 +101,7 @@ @NATIVEWIN32_TRUE@fceud_SOURCES = drivers/win/cheat.c drivers/win/debug.c drivers/win/input.c drivers/win/joystick.c drivers/win/keyboard.c drivers/win/log.c drivers/win/main.c drivers/win/netplay.c drivers/win/ppuview.c drivers/win/aviout.c drivers/win/res.res @NATIVEWIN32_FALSE@fceud_SOURCES = drivers/pc/input.c drivers/pc/main.c $(fceud_SDL_SOURCES) $(TMP_OGL) -@NATIVEWIN32_FALSE@fceud_SDL_SOURCES = drivers/pc/sdl.c drivers/pc/sdl-joystick.c drivers/pc/sdl-sound.c drivers/pc/sdl-throttle.c drivers/pc/sdl-video.c drivers/pc/unix-netplay.c +@NATIVEWIN32_FALSE@fceud_SDL_SOURCES = drivers/pc/sdl.c drivers/pc/sdl-joystick.c drivers/pc/sdl-sound.c drivers/pc/sdl-throttle.c drivers/pc/sdl-video.c drivers/pc/unix-netplay.c drivers/pc/tiletracker.cc drivers/pc/nesvideos-piece.cc #fceud_DOS_SOURCES = drivers/pc/dos.c @@ -130,7 +128,9 @@ @NATIVEWIN32_FALSE@ drivers/pc/sdl-sound.$(OBJEXT) \ @NATIVEWIN32_FALSE@ drivers/pc/sdl-throttle.$(OBJEXT) \ @NATIVEWIN32_FALSE@ drivers/pc/sdl-video.$(OBJEXT) \ -@NATIVEWIN32_FALSE@ drivers/pc/unix-netplay.$(OBJEXT) +@NATIVEWIN32_FALSE@ drivers/pc/unix-netplay.$(OBJEXT) \ +@NATIVEWIN32_FALSE@ drivers/pc/tiletracker.$(OBJEXT) \ +@NATIVEWIN32_FALSE@ drivers/pc/nesvideos-piece.$(OBJEXT) @NATIVEWIN32_FALSE@@OPENGL_TRUE@am__objects_4 = \ @NATIVEWIN32_FALSE@@OPENGL_TRUE@ drivers/pc/sdl-opengl.$(OBJEXT) @NATIVEWIN32_TRUE@am__objects_5 = drivers/win/cheat.$(OBJEXT) \ @@ -153,7 +153,8 @@ input.$(OBJEXT) md5.$(OBJEXT) memory.$(OBJEXT) \ netplay.$(OBJEXT) nsf.$(OBJEXT) palette.$(OBJEXT) ppu.$(OBJEXT) \ sound.$(OBJEXT) state.$(OBJEXT) unif.$(OBJEXT) video.$(OBJEXT) \ - vsuni.$(OBJEXT) wave.$(OBJEXT) movie.$(OBJEXT) unzip.$(OBJEXT) \ + vsuni.$(OBJEXT) wave.$(OBJEXT) movie.$(OBJEXT) \ + bisqbot.$(OBJEXT) botfront.$(OBJEXT) unzip.$(OBJEXT) \ boards/mmc5.$(OBJEXT) boards/mmc3.$(OBJEXT) \ boards/mmc1.$(OBJEXT) boards/tengen.$(OBJEXT) \ boards/bonza.$(OBJEXT) boards/deirom.$(OBJEXT) \ @@ -161,10 +162,10 @@ boards/n106.$(OBJEXT) boards/karaoke.$(OBJEXT) \ boards/90.$(OBJEXT) boards/112.$(OBJEXT) boards/164.$(OBJEXT) \ boards/183.$(OBJEXT) boards/186.$(OBJEXT) boards/8237.$(OBJEXT) \ - boards/8157.$(OBJEXT) boards/addrlatch.$(OBJEXT) boards/datalatch.$(OBJEXT) \ - boards/h2288.$(OBJEXT) boards/malee.$(OBJEXT) \ - boards/novel.$(OBJEXT) boards/sachen.$(OBJEXT) \ - boards/subor.$(OBJEXT) \ + boards/8157.$(OBJEXT) boards/addrlatch.$(OBJEXT) \ + boards/datalatch.$(OBJEXT) boards/h2288.$(OBJEXT) \ + boards/malee.$(OBJEXT) boards/novel.$(OBJEXT) \ + boards/sachen.$(OBJEXT) boards/subor.$(OBJEXT) \ boards/super24.$(OBJEXT) boards/supervision.$(OBJEXT) \ input/cursor.$(OBJEXT) input/zapper.$(OBJEXT) \ input/powerpad.$(OBJEXT) input/arkanoid.$(OBJEXT) \ @@ -194,20 +195,19 @@ mappers/151.$(OBJEXT) mappers/180.$(OBJEXT) \ mappers/183.$(OBJEXT) mappers/184.$(OBJEXT) \ mappers/187.$(OBJEXT) mappers/189.$(OBJEXT) \ - mappers/193.$(OBJEXT) \ - mappers/200.$(OBJEXT) mappers/201.$(OBJEXT) \ - mappers/202.$(OBJEXT) mappers/203.$(OBJEXT) \ - mappers/204.$(OBJEXT) mappers/208.$(OBJEXT) \ - mappers/211.$(OBJEXT) mappers/212.$(OBJEXT) \ - mappers/213.$(OBJEXT) mappers/214.$(OBJEXT) \ - mappers/215.$(OBJEXT) mappers/217.$(OBJEXT) \ - mappers/225.$(OBJEXT) mappers/226.$(OBJEXT) \ - mappers/227.$(OBJEXT) mappers/228.$(OBJEXT) \ - mappers/229.$(OBJEXT) mappers/230.$(OBJEXT) \ - mappers/231.$(OBJEXT) mappers/232.$(OBJEXT) \ - mappers/234.$(OBJEXT) mappers/235.$(OBJEXT) \ - mappers/240.$(OBJEXT) mappers/241.$(OBJEXT) \ - mappers/242.$(OBJEXT) \ + mappers/193.$(OBJEXT) mappers/200.$(OBJEXT) \ + mappers/201.$(OBJEXT) mappers/202.$(OBJEXT) \ + mappers/203.$(OBJEXT) mappers/204.$(OBJEXT) \ + mappers/208.$(OBJEXT) mappers/211.$(OBJEXT) \ + mappers/212.$(OBJEXT) mappers/213.$(OBJEXT) \ + mappers/214.$(OBJEXT) mappers/215.$(OBJEXT) \ + mappers/217.$(OBJEXT) mappers/225.$(OBJEXT) \ + mappers/226.$(OBJEXT) mappers/227.$(OBJEXT) \ + mappers/228.$(OBJEXT) mappers/229.$(OBJEXT) \ + mappers/230.$(OBJEXT) mappers/231.$(OBJEXT) \ + mappers/232.$(OBJEXT) mappers/234.$(OBJEXT) \ + mappers/235.$(OBJEXT) mappers/240.$(OBJEXT) \ + mappers/241.$(OBJEXT) mappers/242.$(OBJEXT) \ mappers/244.$(OBJEXT) mappers/246.$(OBJEXT) \ mappers/255.$(OBJEXT) mappers/emu2413.$(OBJEXT) \ mappers/mmc2and4.$(OBJEXT) mappers/simple.$(OBJEXT) \ @@ -229,7 +229,8 @@ LIBS = @LIBS@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles -@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/cart.Po ./$(DEPDIR)/cheat.Po \ +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/bisqbot.Po ./$(DEPDIR)/botfront.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/cart.Po ./$(DEPDIR)/cheat.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/crc32.Po ./$(DEPDIR)/debug.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/endian.Po ./$(DEPDIR)/fceu.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/fceustr.Po ./$(DEPDIR)/fds.Po \ @@ -245,9 +246,11 @@ @AMDEP_TRUE@ ./$(DEPDIR)/wave.Po ./$(DEPDIR)/x6502.Po \ @AMDEP_TRUE@ boards/$(DEPDIR)/112.Po boards/$(DEPDIR)/164.Po \ @AMDEP_TRUE@ boards/$(DEPDIR)/183.Po boards/$(DEPDIR)/186.Po \ -@AMDEP_TRUE@ boards/$(DEPDIR)/8237.Po boards/$(DEPDIR)/90.Po \ -@AMDEP_TRUE@ boards/$(DEPDIR)/8157.Po boards/$(DEPDIR)/addrlatch.Po boards/$(DEPDIR)/datalatch.Po \ +@AMDEP_TRUE@ boards/$(DEPDIR)/8157.Po boards/$(DEPDIR)/8237.Po \ +@AMDEP_TRUE@ boards/$(DEPDIR)/90.Po \ +@AMDEP_TRUE@ boards/$(DEPDIR)/addrlatch.Po \ @AMDEP_TRUE@ boards/$(DEPDIR)/bonza.Po \ +@AMDEP_TRUE@ boards/$(DEPDIR)/datalatch.Po \ @AMDEP_TRUE@ boards/$(DEPDIR)/deirom.Po \ @AMDEP_TRUE@ boards/$(DEPDIR)/dream.Po boards/$(DEPDIR)/h2288.Po \ @AMDEP_TRUE@ boards/$(DEPDIR)/karaoke.Po \ @@ -256,7 +259,6 @@ @AMDEP_TRUE@ boards/$(DEPDIR)/mmc3.Po boards/$(DEPDIR)/mmc5.Po \ @AMDEP_TRUE@ boards/$(DEPDIR)/n106.Po boards/$(DEPDIR)/novel.Po \ @AMDEP_TRUE@ boards/$(DEPDIR)/sachen.Po \ -@AMDEP_TRUE@ boards/$(DEPDIR)/simple.Po \ @AMDEP_TRUE@ boards/$(DEPDIR)/subor.Po \ @AMDEP_TRUE@ boards/$(DEPDIR)/super24.Po \ @AMDEP_TRUE@ boards/$(DEPDIR)/supervision.Po \ @@ -272,12 +274,14 @@ @AMDEP_TRUE@ drivers/common/$(DEPDIR)/vidblit.Po \ @AMDEP_TRUE@ drivers/pc/$(DEPDIR)/input.Po \ @AMDEP_TRUE@ drivers/pc/$(DEPDIR)/main.Po \ +@AMDEP_TRUE@ drivers/pc/$(DEPDIR)/nesvideos-piece.Po \ @AMDEP_TRUE@ drivers/pc/$(DEPDIR)/sdl-joystick.Po \ @AMDEP_TRUE@ drivers/pc/$(DEPDIR)/sdl-opengl.Po \ @AMDEP_TRUE@ drivers/pc/$(DEPDIR)/sdl-sound.Po \ @AMDEP_TRUE@ drivers/pc/$(DEPDIR)/sdl-throttle.Po \ @AMDEP_TRUE@ drivers/pc/$(DEPDIR)/sdl-video.Po \ @AMDEP_TRUE@ drivers/pc/$(DEPDIR)/sdl.Po \ +@AMDEP_TRUE@ drivers/pc/$(DEPDIR)/tiletracker.Po \ @AMDEP_TRUE@ drivers/pc/$(DEPDIR)/unix-netplay.Po \ @AMDEP_TRUE@ drivers/sexyal/$(DEPDIR)/convert.Po \ @AMDEP_TRUE@ drivers/sexyal/$(DEPDIR)/md5.Po \ @@ -311,22 +315,21 @@ @AMDEP_TRUE@ mappers/$(DEPDIR)/17.Po mappers/$(DEPDIR)/18.Po \ @AMDEP_TRUE@ mappers/$(DEPDIR)/180.Po mappers/$(DEPDIR)/183.Po \ @AMDEP_TRUE@ mappers/$(DEPDIR)/184.Po mappers/$(DEPDIR)/187.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/189.Po mappers/$(DEPDIR)/191.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/193.Po mappers/$(DEPDIR)/200.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/201.Po mappers/$(DEPDIR)/202.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/203.Po mappers/$(DEPDIR)/204.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/208.Po mappers/$(DEPDIR)/21.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/211.Po mappers/$(DEPDIR)/212.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/213.Po mappers/$(DEPDIR)/214.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/215.Po mappers/$(DEPDIR)/217.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/22.Po mappers/$(DEPDIR)/225.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/226.Po mappers/$(DEPDIR)/227.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/228.Po mappers/$(DEPDIR)/229.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/23.Po mappers/$(DEPDIR)/230.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/231.Po mappers/$(DEPDIR)/232.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/234.Po mappers/$(DEPDIR)/235.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/240.Po mappers/$(DEPDIR)/241.Po \ -@AMDEP_TRUE@ mappers/$(DEPDIR)/242.Po mappers/$(DEPDIR)/243.Po \ +@AMDEP_TRUE@ mappers/$(DEPDIR)/189.Po mappers/$(DEPDIR)/193.Po \ +@AMDEP_TRUE@ mappers/$(DEPDIR)/200.Po mappers/$(DEPDIR)/201.Po \ +@AMDEP_TRUE@ mappers/$(DEPDIR)/202.Po mappers/$(DEPDIR)/203.Po \ +@AMDEP_TRUE@ mappers/$(DEPDIR)/204.Po mappers/$(DEPDIR)/208.Po \ +@AMDEP_TRUE@ mappers/$(DEPDIR)/21.Po mappers/$(DEPDIR)/211.Po \ +@AMDEP_TRUE@ mappers/$(DEPDIR)/212.Po mappers/$(DEPDIR)/213.Po \ +@AMDEP_TRUE@ mappers/$(DEPDIR)/214.Po mappers/$(DEPDIR)/215.Po \ +@AMDEP_TRUE@ mappers/$(DEPDIR)/217.Po mappers/$(DEPDIR)/22.Po \ +@AMDEP_TRUE@ mappers/$(DEPDIR)/225.Po mappers/$(DEPDIR)/226.Po \ +@AMDEP_TRUE@ mappers/$(DEPDIR)/227.Po mappers/$(DEPDIR)/228.Po \ +@AMDEP_TRUE@ mappers/$(DEPDIR)/229.Po mappers/$(DEPDIR)/23.Po \ +@AMDEP_TRUE@ mappers/$(DEPDIR)/230.Po mappers/$(DEPDIR)/231.Po \ +@AMDEP_TRUE@ mappers/$(DEPDIR)/232.Po mappers/$(DEPDIR)/234.Po \ +@AMDEP_TRUE@ mappers/$(DEPDIR)/235.Po mappers/$(DEPDIR)/240.Po \ +@AMDEP_TRUE@ mappers/$(DEPDIR)/241.Po mappers/$(DEPDIR)/242.Po \ @AMDEP_TRUE@ mappers/$(DEPDIR)/244.Po mappers/$(DEPDIR)/246.Po \ @AMDEP_TRUE@ mappers/$(DEPDIR)/24and26.Po \ @AMDEP_TRUE@ mappers/$(DEPDIR)/25.Po mappers/$(DEPDIR)/255.Po \ @@ -359,6 +362,12 @@ CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ CFLAGS = @CFLAGS@ +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +CXXFLAGS = @CXXFLAGS@ DIST_SOURCES = $(fceu_SOURCES) DIST_COMMON = Makefile.am Makefile.in SOURCES = $(fceu_SOURCES) @@ -366,7 +375,7 @@ all: all-am .SUFFIXES: -.SUFFIXES: .c .o .obj .res +.SUFFIXES: .c .cc .o .obj .res $(srcdir)/Makefile.in: Makefile.am $(srcdir)/boards/Makefile.am.inc $(srcdir)/input/Makefile.am.inc $(srcdir)/mappers/Makefile.am.inc $(srcdir)/drivers/common/Makefile.am.inc $(srcdir)/drivers/sexyal/Makefile.am.inc $(srcdir)/drivers/win/Makefile.am.inc $(srcdir)/drivers/pc/Makefile.am.inc $(top_srcdir)/configure.ac $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile @@ -773,11 +782,15 @@ drivers/pc/.dirstamp drivers/pc/$(DEPDIR)/.dirstamp drivers/pc/unix-netplay.$(OBJEXT): drivers/pc/unix-netplay.c \ drivers/pc/.dirstamp drivers/pc/$(DEPDIR)/.dirstamp +drivers/pc/tiletracker.$(OBJEXT): drivers/pc/tiletracker.cc \ + drivers/pc/.dirstamp drivers/pc/$(DEPDIR)/.dirstamp +drivers/pc/nesvideos-piece.$(OBJEXT): drivers/pc/nesvideos-piece.cc \ + drivers/pc/.dirstamp drivers/pc/$(DEPDIR)/.dirstamp drivers/pc/sdl-opengl.$(OBJEXT): drivers/pc/sdl-opengl.c \ drivers/pc/.dirstamp drivers/pc/$(DEPDIR)/.dirstamp fceu$(EXEEXT): $(fceu_OBJECTS) $(fceu_DEPENDENCIES) @rm -f fceu$(EXEEXT) - $(LINK) $(fceu_LDFLAGS) $(fceu_OBJECTS) $(fceu_LDADD) $(LIBS) + $(CXXLINK) $(fceu_LDFLAGS) $(fceu_OBJECTS) $(fceu_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) core *.core @@ -785,12 +798,12 @@ -rm -f boards/164.$(OBJEXT) -rm -f boards/183.$(OBJEXT) -rm -f boards/186.$(OBJEXT) - -rm -f boards/8237.$(OBJEXT) -rm -f boards/8157.$(OBJEXT) - -rm -f boards/addrlatch.$(OBJEXT) - -rm -f boards/datalatch.$(OBJEXT) + -rm -f boards/8237.$(OBJEXT) -rm -f boards/90.$(OBJEXT) + -rm -f boards/addrlatch.$(OBJEXT) -rm -f boards/bonza.$(OBJEXT) + -rm -f boards/datalatch.$(OBJEXT) -rm -f boards/deirom.$(OBJEXT) -rm -f boards/dream.$(OBJEXT) -rm -f boards/h2288.$(OBJEXT) @@ -818,12 +831,14 @@ -rm -f drivers/common/vidblit.$(OBJEXT) -rm -f drivers/pc/input.$(OBJEXT) -rm -f drivers/pc/main.$(OBJEXT) + -rm -f drivers/pc/nesvideos-piece.$(OBJEXT) -rm -f drivers/pc/sdl-joystick.$(OBJEXT) -rm -f drivers/pc/sdl-opengl.$(OBJEXT) -rm -f drivers/pc/sdl-sound.$(OBJEXT) -rm -f drivers/pc/sdl-throttle.$(OBJEXT) -rm -f drivers/pc/sdl-video.$(OBJEXT) -rm -f drivers/pc/sdl.$(OBJEXT) + -rm -f drivers/pc/tiletracker.$(OBJEXT) -rm -f drivers/pc/unix-netplay.$(OBJEXT) -rm -f drivers/sexyal/convert.$(OBJEXT) -rm -f drivers/sexyal/drivers/dsound.$(OBJEXT) @@ -965,6 +980,8 @@ -rm -f mappers/$(DEPDIR)/.dirstamp -rm -f mappers/.dirstamp +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bisqbot.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/botfront.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cart.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cheat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crc32.Po@am__quote@ @@ -997,12 +1014,12 @@ @AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/164.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/183.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/186.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/8237.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/8157.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/addrlatch.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/datalatch.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/8237.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/90.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/addrlatch.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/bonza.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/datalatch.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/deirom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/dream.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/h2288.Po@am__quote@ @@ -1015,7 +1032,6 @@ @AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/n106.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/novel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/sachen.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/simple.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/subor.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/super24.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@boards/$(DEPDIR)/supervision.Po@am__quote@ @@ -1031,12 +1047,14 @@ @AMDEP_TRUE@@am__include@ @am__quote@drivers/common/$(DEPDIR)/vidblit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@drivers/pc/$(DEPDIR)/input.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@drivers/pc/$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@drivers/pc/$(DEPDIR)/nesvideos-piece.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@drivers/pc/$(DEPDIR)/sdl-joystick.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@drivers/pc/$(DEPDIR)/sdl-opengl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@drivers/pc/$(DEPDIR)/sdl-sound.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@drivers/pc/$(DEPDIR)/sdl-throttle.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@drivers/pc/$(DEPDIR)/sdl-video.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@drivers/pc/$(DEPDIR)/sdl.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@drivers/pc/$(DEPDIR)/tiletracker.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@drivers/pc/$(DEPDIR)/unix-netplay.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@drivers/sexyal/$(DEPDIR)/convert.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@drivers/sexyal/$(DEPDIR)/md5.Po@am__quote@ @@ -1080,7 +1098,6 @@ @AMDEP_TRUE@@am__include@ @am__quote@mappers/$(DEPDIR)/184.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mappers/$(DEPDIR)/187.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mappers/$(DEPDIR)/189.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mappers/$(DEPDIR)/191.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mappers/$(DEPDIR)/193.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mappers/$(DEPDIR)/200.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mappers/$(DEPDIR)/201.Po@am__quote@ @@ -1110,7 +1127,6 @@ @AMDEP_TRUE@@am__include@ @am__quote@mappers/$(DEPDIR)/240.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mappers/$(DEPDIR)/241.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mappers/$(DEPDIR)/242.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@mappers/$(DEPDIR)/243.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mappers/$(DEPDIR)/244.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mappers/$(DEPDIR)/246.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mappers/$(DEPDIR)/24and26.Po@am__quote@ @@ -1186,7 +1202,7 @@ @AMDEP_TRUE@ source='boards/mmc5.c' object='boards/mmc5.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/mmc5.Po' tmpdepfile='boards/$(DEPDIR)/mmc5.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/mmc5.obj `cygpath -w 'boards/mmc5.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/mmc5.obj `cygpath -w boards/mmc5.c` boards/mmc3.o: boards/mmc3.c @AMDEP_TRUE@ source='boards/mmc3.c' object='boards/mmc3.o' libtool=no @AMDEPBACKSLASH@ @@ -1197,7 +1214,7 @@ @AMDEP_TRUE@ source='boards/mmc3.c' object='boards/mmc3.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/mmc3.Po' tmpdepfile='boards/$(DEPDIR)/mmc3.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/mmc3.obj `cygpath -w 'boards/mmc3.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/mmc3.obj `cygpath -w boards/mmc3.c` boards/mmc1.o: boards/mmc1.c @AMDEP_TRUE@ source='boards/mmc1.c' object='boards/mmc1.o' libtool=no @AMDEPBACKSLASH@ @@ -1208,7 +1226,7 @@ @AMDEP_TRUE@ source='boards/mmc1.c' object='boards/mmc1.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/mmc1.Po' tmpdepfile='boards/$(DEPDIR)/mmc1.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/mmc1.obj `cygpath -w 'boards/mmc1.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/mmc1.obj `cygpath -w boards/mmc1.c` boards/tengen.o: boards/tengen.c @AMDEP_TRUE@ source='boards/tengen.c' object='boards/tengen.o' libtool=no @AMDEPBACKSLASH@ @@ -1219,7 +1238,7 @@ @AMDEP_TRUE@ source='boards/tengen.c' object='boards/tengen.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/tengen.Po' tmpdepfile='boards/$(DEPDIR)/tengen.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/tengen.obj `cygpath -w 'boards/tengen.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/tengen.obj `cygpath -w boards/tengen.c` boards/bonza.o: boards/bonza.c @AMDEP_TRUE@ source='boards/bonza.c' object='boards/bonza.o' libtool=no @AMDEPBACKSLASH@ @@ -1230,7 +1250,7 @@ @AMDEP_TRUE@ source='boards/bonza.c' object='boards/bonza.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/bonza.Po' tmpdepfile='boards/$(DEPDIR)/bonza.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/bonza.obj `cygpath -w 'boards/bonza.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/bonza.obj `cygpath -w boards/bonza.c` boards/deirom.o: boards/deirom.c @AMDEP_TRUE@ source='boards/deirom.c' object='boards/deirom.o' libtool=no @AMDEPBACKSLASH@ @@ -1241,7 +1262,7 @@ @AMDEP_TRUE@ source='boards/deirom.c' object='boards/deirom.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/deirom.Po' tmpdepfile='boards/$(DEPDIR)/deirom.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/deirom.obj `cygpath -w 'boards/deirom.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/deirom.obj `cygpath -w boards/deirom.c` boards/dream.o: boards/dream.c @AMDEP_TRUE@ source='boards/dream.c' object='boards/dream.o' libtool=no @AMDEPBACKSLASH@ @@ -1252,7 +1274,7 @@ @AMDEP_TRUE@ source='boards/dream.c' object='boards/dream.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/dream.Po' tmpdepfile='boards/$(DEPDIR)/dream.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/dream.obj `cygpath -w 'boards/dream.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/dream.obj `cygpath -w boards/dream.c` boards/konami-qtai.o: boards/konami-qtai.c @AMDEP_TRUE@ source='boards/konami-qtai.c' object='boards/konami-qtai.o' libtool=no @AMDEPBACKSLASH@ @@ -1263,7 +1286,7 @@ @AMDEP_TRUE@ source='boards/konami-qtai.c' object='boards/konami-qtai.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/konami-qtai.Po' tmpdepfile='boards/$(DEPDIR)/konami-qtai.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/konami-qtai.obj `cygpath -w 'boards/konami-qtai.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/konami-qtai.obj `cygpath -w boards/konami-qtai.c` boards/n106.o: boards/n106.c @AMDEP_TRUE@ source='boards/n106.c' object='boards/n106.o' libtool=no @AMDEPBACKSLASH@ @@ -1274,7 +1298,7 @@ @AMDEP_TRUE@ source='boards/n106.c' object='boards/n106.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/n106.Po' tmpdepfile='boards/$(DEPDIR)/n106.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/n106.obj `cygpath -w 'boards/n106.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/n106.obj `cygpath -w boards/n106.c` boards/karaoke.o: boards/karaoke.c @AMDEP_TRUE@ source='boards/karaoke.c' object='boards/karaoke.o' libtool=no @AMDEPBACKSLASH@ @@ -1285,7 +1310,7 @@ @AMDEP_TRUE@ source='boards/karaoke.c' object='boards/karaoke.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/karaoke.Po' tmpdepfile='boards/$(DEPDIR)/karaoke.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/karaoke.obj `cygpath -w 'boards/karaoke.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/karaoke.obj `cygpath -w boards/karaoke.c` boards/90.o: boards/90.c @AMDEP_TRUE@ source='boards/90.c' object='boards/90.o' libtool=no @AMDEPBACKSLASH@ @@ -1296,7 +1322,7 @@ @AMDEP_TRUE@ source='boards/90.c' object='boards/90.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/90.Po' tmpdepfile='boards/$(DEPDIR)/90.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/90.obj `cygpath -w 'boards/90.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/90.obj `cygpath -w boards/90.c` boards/112.o: boards/112.c @AMDEP_TRUE@ source='boards/112.c' object='boards/112.o' libtool=no @AMDEPBACKSLASH@ @@ -1307,7 +1334,7 @@ @AMDEP_TRUE@ source='boards/112.c' object='boards/112.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/112.Po' tmpdepfile='boards/$(DEPDIR)/112.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/112.obj `cygpath -w 'boards/112.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/112.obj `cygpath -w boards/112.c` boards/164.o: boards/164.c @AMDEP_TRUE@ source='boards/164.c' object='boards/164.o' libtool=no @AMDEPBACKSLASH@ @@ -1318,7 +1346,7 @@ @AMDEP_TRUE@ source='boards/164.c' object='boards/164.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/164.Po' tmpdepfile='boards/$(DEPDIR)/164.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/164.obj `cygpath -w 'boards/164.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/164.obj `cygpath -w boards/164.c` boards/183.o: boards/183.c @AMDEP_TRUE@ source='boards/183.c' object='boards/183.o' libtool=no @AMDEPBACKSLASH@ @@ -1329,7 +1358,7 @@ @AMDEP_TRUE@ source='boards/183.c' object='boards/183.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/183.Po' tmpdepfile='boards/$(DEPDIR)/183.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/183.obj `cygpath -w 'boards/183.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/183.obj `cygpath -w boards/183.c` boards/186.o: boards/186.c @AMDEP_TRUE@ source='boards/186.c' object='boards/186.o' libtool=no @AMDEPBACKSLASH@ @@ -1340,7 +1370,7 @@ @AMDEP_TRUE@ source='boards/186.c' object='boards/186.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/186.Po' tmpdepfile='boards/$(DEPDIR)/186.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/186.obj `cygpath -w 'boards/186.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/186.obj `cygpath -w boards/186.c` boards/8237.o: boards/8237.c @AMDEP_TRUE@ source='boards/8237.c' object='boards/8237.o' libtool=no @AMDEPBACKSLASH@ @@ -1432,7 +1466,7 @@ @AMDEP_TRUE@ source='boards/sachen.c' object='boards/sachen.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/sachen.Po' tmpdepfile='boards/$(DEPDIR)/sachen.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/sachen.obj `cygpath -w 'boards/sachen.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/sachen.obj `cygpath -w boards/sachen.c` boards/subor.o: boards/subor.c @AMDEP_TRUE@ source='boards/subor.c' object='boards/subor.o' libtool=no @AMDEPBACKSLASH@ @@ -1443,7 +1478,7 @@ @AMDEP_TRUE@ source='boards/subor.c' object='boards/subor.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='boards/$(DEPDIR)/subor.Po' tmpdepfile='boards/$(DEPDIR)/subor.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/subor.obj `cygpath -w 'boards/subor.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o boards/subor.obj `cygpath -w boards/subor.c` boards/super24.o: boards/super24.c @AMDEP_TRUE@ source='boards/super24.c' object='boards/super24.o' libtool=no @AMDEPBACKSLASH@ @@ -1623,7 +1658,7 @@ @AMDEP_TRUE@ source='input/bworld.c' object='input/bworld.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='input/$(DEPDIR)/bworld.Po' tmpdepfile='input/$(DEPDIR)/bworld.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o input/bworld.obj `cygpath -w 'input/bworldbworld.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o input/bworld.obj `cygpath -w input/bworld.c` input/suborkb.o: input/suborkb.c @AMDEP_TRUE@ source='input/suborkb.c' object='input/suborkb.o' libtool=no @AMDEPBACKSLASH@ @@ -1634,7 +1670,7 @@ @AMDEP_TRUE@ source='input/suborkb.c' object='input/suborkb.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='input/$(DEPDIR)/suborkb.Po' tmpdepfile='input/$(DEPDIR)/suborkb.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o input/suborkb.obj `cygpath -w 'input/suborkb.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o input/suborkb.obj `cygpath -w input/suborkb.c` mappers/6.o: mappers/6.c @AMDEP_TRUE@ source='mappers/6.c' object='mappers/6.o' libtool=no @AMDEPBACKSLASH@ @@ -1646,7 +1682,7 @@ @AMDEP_TRUE@ source='mappers/6.c' object='mappers/6.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/6.Po' tmpdepfile='mappers/$(DEPDIR)/6.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/6.obj `cygpath -w 'mappers/66.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/6.obj `cygpath -w mappers/6.c` mappers/8.o: mappers/8.c @AMDEP_TRUE@ source='mappers/8.c' object='mappers/8.o' libtool=no @AMDEPBACKSLASH@ @@ -1658,7 +1694,7 @@ @AMDEP_TRUE@ source='mappers/8.c' object='mappers/8.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/8.Po' tmpdepfile='mappers/$(DEPDIR)/8.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/8.obj `cygpath -w 'mappers/8.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/8.obj `cygpath -w mappers/8.c` mappers/15.o: mappers/15.c @AMDEP_TRUE@ source='mappers/15.c' object='mappers/15.o' libtool=no @AMDEPBACKSLASH@ @@ -1669,7 +1706,7 @@ @AMDEP_TRUE@ source='mappers/15.c' object='mappers/15.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/15.Po' tmpdepfile='mappers/$(DEPDIR)/15.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/15.obj `cygpath -w 'mappers/15.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/15.obj `cygpath -w mappers/15.c` mappers/16.o: mappers/16.c @AMDEP_TRUE@ source='mappers/16.c' object='mappers/16.o' libtool=no @AMDEPBACKSLASH@ @@ -1680,7 +1718,7 @@ @AMDEP_TRUE@ source='mappers/16.c' object='mappers/16.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/16.Po' tmpdepfile='mappers/$(DEPDIR)/16.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/16.obj `cygpath -w 'mappers/16.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/16.obj `cygpath -w mappers/16.c` mappers/17.o: mappers/17.c @AMDEP_TRUE@ source='mappers/17.c' object='mappers/17.o' libtool=no @AMDEPBACKSLASH@ @@ -1691,7 +1730,7 @@ @AMDEP_TRUE@ source='mappers/17.c' object='mappers/17.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/17.Po' tmpdepfile='mappers/$(DEPDIR)/17.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/17.obj `cygpath -w 'mappers/17.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/17.obj `cygpath -w mappers/17.c` mappers/18.o: mappers/18.c @AMDEP_TRUE@ source='mappers/18.c' object='mappers/18.o' libtool=no @AMDEPBACKSLASH@ @@ -1702,7 +1742,7 @@ @AMDEP_TRUE@ source='mappers/18.c' object='mappers/18.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/18.Po' tmpdepfile='mappers/$(DEPDIR)/18.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/18.obj `cygpath -w 'mappers/18.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/18.obj `cygpath -w mappers/18.c` mappers/21.o: mappers/21.c @AMDEP_TRUE@ source='mappers/21.c' object='mappers/21.o' libtool=no @AMDEPBACKSLASH@ @@ -1713,7 +1754,7 @@ @AMDEP_TRUE@ source='mappers/21.c' object='mappers/21.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/21.Po' tmpdepfile='mappers/$(DEPDIR)/21.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/21.obj `cygpath -w 'mappers/21.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/21.obj `cygpath -w mappers/21.c` mappers/22.o: mappers/22.c @AMDEP_TRUE@ source='mappers/22.c' object='mappers/22.o' libtool=no @AMDEPBACKSLASH@ @@ -1724,7 +1766,7 @@ @AMDEP_TRUE@ source='mappers/22.c' object='mappers/22.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/22.Po' tmpdepfile='mappers/$(DEPDIR)/22.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/22.obj `cygpath -w 'mappers/22.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/22.obj `cygpath -w mappers/22.c` mappers/23.o: mappers/23.c @AMDEP_TRUE@ source='mappers/23.c' object='mappers/23.o' libtool=no @AMDEPBACKSLASH@ @@ -1735,7 +1778,7 @@ @AMDEP_TRUE@ source='mappers/23.c' object='mappers/23.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/23.Po' tmpdepfile='mappers/$(DEPDIR)/23.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/23.obj `cygpath -w 'mappers/23.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/23.obj `cygpath -w mappers/23.c` mappers/24and26.o: mappers/24and26.c @AMDEP_TRUE@ source='mappers/24and26.c' object='mappers/24and26.o' libtool=no @AMDEPBACKSLASH@ @@ -1746,7 +1790,7 @@ @AMDEP_TRUE@ source='mappers/24and26.c' object='mappers/24and26.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/24and26.Po' tmpdepfile='mappers/$(DEPDIR)/24and26.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/24and26.obj `cygpath -w 'mappers/24and26.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/24and26.obj `cygpath -w mappers/24and26.c` mappers/25.o: mappers/25.c @AMDEP_TRUE@ source='mappers/25.c' object='mappers/25.o' libtool=no @AMDEPBACKSLASH@ @@ -1757,7 +1802,7 @@ @AMDEP_TRUE@ source='mappers/25.c' object='mappers/25.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/25.Po' tmpdepfile='mappers/$(DEPDIR)/25.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/25.obj `cygpath -w 'mappers/25.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/25.obj `cygpath -w mappers/25.c` mappers/27.o: mappers/27.c @AMDEP_TRUE@ source='mappers/27.c' object='mappers/27.o' libtool=no @AMDEPBACKSLASH@ @@ -1768,7 +1814,7 @@ @AMDEP_TRUE@ source='mappers/27.c' object='mappers/27.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/27.Po' tmpdepfile='mappers/$(DEPDIR)/27.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/27.obj `cygpath -w 'mappers/27.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/27.obj `cygpath -w mappers/27.c` mappers/32.o: mappers/32.c @AMDEP_TRUE@ source='mappers/32.c' object='mappers/32.o' libtool=no @AMDEPBACKSLASH@ @@ -1779,7 +1826,7 @@ @AMDEP_TRUE@ source='mappers/32.c' object='mappers/32.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/32.Po' tmpdepfile='mappers/$(DEPDIR)/32.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/32.obj `cygpath -w 'mappers/32.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/32.obj `cygpath -w mappers/32.c` mappers/33.o: mappers/33.c @AMDEP_TRUE@ source='mappers/33.c' object='mappers/33.o' libtool=no @AMDEPBACKSLASH@ @@ -1790,7 +1838,7 @@ @AMDEP_TRUE@ source='mappers/33.c' object='mappers/33.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/33.Po' tmpdepfile='mappers/$(DEPDIR)/33.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/33.obj `cygpath -w 'mappers/33.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/33.obj `cygpath -w mappers/33.c` mappers/40.o: mappers/40.c @AMDEP_TRUE@ source='mappers/40.c' object='mappers/40.o' libtool=no @AMDEPBACKSLASH@ @@ -1801,7 +1850,7 @@ @AMDEP_TRUE@ source='mappers/40.c' object='mappers/40.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/40.Po' tmpdepfile='mappers/$(DEPDIR)/40.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/40.obj `cygpath -w 'mappers/40.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/40.obj `cygpath -w mappers/40.c` mappers/41.o: mappers/41.c @AMDEP_TRUE@ source='mappers/41.c' object='mappers/41.o' libtool=no @AMDEPBACKSLASH@ @@ -1812,7 +1862,7 @@ @AMDEP_TRUE@ source='mappers/41.c' object='mappers/41.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/41.Po' tmpdepfile='mappers/$(DEPDIR)/41.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/41.obj `cygpath -w 'mappers/41.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/41.obj `cygpath -w mappers/41.c` mappers/42.o: mappers/42.c @AMDEP_TRUE@ source='mappers/42.c' object='mappers/42.o' libtool=no @AMDEPBACKSLASH@ @@ -1824,7 +1874,7 @@ @AMDEP_TRUE@ source='mappers/42.c' object='mappers/42.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/42.Po' tmpdepfile='mappers/$(DEPDIR)/42.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/42.obj `cygpath -w 'mappers/42.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/42.obj `cygpath -w mappers/42.c` mappers/43.o: mappers/43.c @AMDEP_TRUE@ source='mappers/43.c' object='mappers/43.o' libtool=no @AMDEPBACKSLASH@ @@ -1835,7 +1886,7 @@ @AMDEP_TRUE@ source='mappers/43.c' object='mappers/43.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/43.Po' tmpdepfile='mappers/$(DEPDIR)/43.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/43.obj `cygpath -w 'mappers/43.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/43.obj `cygpath -w mappers/43.c` mappers/46.o: mappers/46.c @AMDEP_TRUE@ source='mappers/46.c' object='mappers/46.o' libtool=no @AMDEPBACKSLASH@ @@ -1846,7 +1898,7 @@ @AMDEP_TRUE@ source='mappers/46.c' object='mappers/46.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/46.Po' tmpdepfile='mappers/$(DEPDIR)/46.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/46.obj `cygpath -w 'mappers/46.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/46.obj `cygpath -w mappers/46.c` mappers/50.o: mappers/50.c @AMDEP_TRUE@ source='mappers/50.c' object='mappers/50.o' libtool=no @AMDEPBACKSLASH@ @@ -1858,7 +1910,7 @@ @AMDEP_TRUE@ source='mappers/50.c' object='mappers/50.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/50.Po' tmpdepfile='mappers/$(DEPDIR)/50.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/50.obj `cygpath -w 'mappers/50.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/50.obj `cygpath -w mappers/50.c` mappers/51.o: mappers/51.c @AMDEP_TRUE@ source='mappers/51.c' object='mappers/51.o' libtool=no @AMDEPBACKSLASH@ @@ -1869,7 +1922,7 @@ @AMDEP_TRUE@ source='mappers/51.c' object='mappers/51.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/51.Po' tmpdepfile='mappers/$(DEPDIR)/51.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/51.obj `cygpath -w 'mappers/51.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/51.obj `cygpath -w mappers/51.c` mappers/57.o: mappers/57.c @AMDEP_TRUE@ source='mappers/57.c' object='mappers/57.o' libtool=no @AMDEPBACKSLASH@ @@ -1880,7 +1934,7 @@ @AMDEP_TRUE@ source='mappers/57.c' object='mappers/57.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/57.Po' tmpdepfile='mappers/$(DEPDIR)/57.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/57.obj `cygpath -w 'mappers/57.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/57.obj `cygpath -w mappers/57.c` mappers/58.o: mappers/58.c @AMDEP_TRUE@ source='mappers/58.c' object='mappers/58.o' libtool=no @AMDEPBACKSLASH@ @@ -1892,7 +1946,7 @@ @AMDEP_TRUE@ source='mappers/58.c' object='mappers/58.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/58.Po' tmpdepfile='mappers/$(DEPDIR)/58.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/58.obj `cygpath -w 'mappers/58.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/58.obj `cygpath -w mappers/58.c` mappers/59.o: mappers/59.c @AMDEP_TRUE@ source='mappers/59.c' object='mappers/59.o' libtool=no @AMDEPBACKSLASH@ @@ -1903,7 +1958,7 @@ @AMDEP_TRUE@ source='mappers/59.c' object='mappers/59.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/59.Po' tmpdepfile='mappers/$(DEPDIR)/59.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/59.obj `cygpath -w 'mappers/59.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/59.obj `cygpath -w mappers/59.c` mappers/60.o: mappers/60.c @AMDEP_TRUE@ source='mappers/60.c' object='mappers/60.o' libtool=no @AMDEPBACKSLASH@ @@ -1914,7 +1970,7 @@ @AMDEP_TRUE@ source='mappers/60.c' object='mappers/60.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/60.Po' tmpdepfile='mappers/$(DEPDIR)/60.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/60.obj `cygpath -w 'mappers/60.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/60.obj `cygpath -w mappers/60.c` mappers/61.o: mappers/61.c @AMDEP_TRUE@ source='mappers/61.c' object='mappers/61.o' libtool=no @AMDEPBACKSLASH@ @@ -1925,7 +1982,7 @@ @AMDEP_TRUE@ source='mappers/61.c' object='mappers/61.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/61.Po' tmpdepfile='mappers/$(DEPDIR)/61.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/61.obj `cygpath -w 'mappers/61.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/61.obj `cygpath -w mappers/61.c` mappers/62.o: mappers/62.c @AMDEP_TRUE@ source='mappers/62.c' object='mappers/62.o' libtool=no @AMDEPBACKSLASH@ @@ -1936,7 +1994,7 @@ @AMDEP_TRUE@ source='mappers/62.c' object='mappers/62.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/62.Po' tmpdepfile='mappers/$(DEPDIR)/62.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/62.obj `cygpath -w 'mappers/62.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/62.obj `cygpath -w mappers/62.c` mappers/65.o: mappers/65.c @AMDEP_TRUE@ source='mappers/65.c' object='mappers/65.o' libtool=no @AMDEPBACKSLASH@ @@ -1947,7 +2006,7 @@ @AMDEP_TRUE@ source='mappers/65.c' object='mappers/65.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/65.Po' tmpdepfile='mappers/$(DEPDIR)/65.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/65.obj `cygpath -w 'mappers/65.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/65.obj `cygpath -w mappers/65.c` mappers/67.o: mappers/67.c @AMDEP_TRUE@ source='mappers/67.c' object='mappers/67.o' libtool=no @AMDEPBACKSLASH@ @@ -1958,7 +2018,7 @@ @AMDEP_TRUE@ source='mappers/67.c' object='mappers/67.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/67.Po' tmpdepfile='mappers/$(DEPDIR)/67.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/67.obj `cygpath -w 'mappers/67.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/67.obj `cygpath -w mappers/67.c` mappers/68.o: mappers/68.c @AMDEP_TRUE@ source='mappers/68.c' object='mappers/68.o' libtool=no @AMDEPBACKSLASH@ @@ -1969,7 +2030,7 @@ @AMDEP_TRUE@ source='mappers/68.c' object='mappers/68.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/68.Po' tmpdepfile='mappers/$(DEPDIR)/68.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/68.obj `cygpath -w 'mappers/68.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/68.obj `cygpath -w mappers/68.c` mappers/69.o: mappers/69.c @AMDEP_TRUE@ source='mappers/69.c' object='mappers/69.o' libtool=no @AMDEPBACKSLASH@ @@ -1980,7 +2042,7 @@ @AMDEP_TRUE@ source='mappers/69.c' object='mappers/69.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/69.Po' tmpdepfile='mappers/$(DEPDIR)/69.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/69.obj `cygpath -w 'mappers/69.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/69.obj `cygpath -w mappers/69.c` mappers/71.o: mappers/71.c @AMDEP_TRUE@ source='mappers/71.c' object='mappers/71.o' libtool=no @AMDEPBACKSLASH@ @@ -1991,7 +2054,7 @@ @AMDEP_TRUE@ source='mappers/71.c' object='mappers/71.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/71.Po' tmpdepfile='mappers/$(DEPDIR)/71.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/71.obj `cygpath -w 'mappers/71.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/71.obj `cygpath -w mappers/71.c` mappers/72.o: mappers/72.c @AMDEP_TRUE@ source='mappers/72.c' object='mappers/72.o' libtool=no @AMDEPBACKSLASH@ @@ -2002,7 +2066,7 @@ @AMDEP_TRUE@ source='mappers/72.c' object='mappers/72.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/72.Po' tmpdepfile='mappers/$(DEPDIR)/72.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/72.obj `cygpath -w 'mappers/72.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/72.obj `cygpath -w mappers/72.c` mappers/73.o: mappers/73.c @AMDEP_TRUE@ source='mappers/73.c' object='mappers/73.o' libtool=no @AMDEPBACKSLASH@ @@ -2013,7 +2078,7 @@ @AMDEP_TRUE@ source='mappers/73.c' object='mappers/73.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/73.Po' tmpdepfile='mappers/$(DEPDIR)/73.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/73.obj `cygpath -w 'mappers/73.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/73.obj `cygpath -w mappers/73.c` mappers/75.o: mappers/75.c @AMDEP_TRUE@ source='mappers/75.c' object='mappers/75.o' libtool=no @AMDEPBACKSLASH@ @@ -2024,7 +2090,7 @@ @AMDEP_TRUE@ source='mappers/75.c' object='mappers/75.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/75.Po' tmpdepfile='mappers/$(DEPDIR)/75.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/75.obj `cygpath -w 'mappers/75.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/75.obj `cygpath -w mappers/75.c` mappers/76.o: mappers/76.c @AMDEP_TRUE@ source='mappers/76.c' object='mappers/76.o' libtool=no @AMDEPBACKSLASH@ @@ -2035,7 +2102,7 @@ @AMDEP_TRUE@ source='mappers/76.c' object='mappers/76.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/76.Po' tmpdepfile='mappers/$(DEPDIR)/76.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/76.obj `cygpath -w 'mappers/76.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/76.obj `cygpath -w mappers/76.c` mappers/77.o: mappers/77.c @AMDEP_TRUE@ source='mappers/77.c' object='mappers/77.o' libtool=no @AMDEPBACKSLASH@ @@ -2046,7 +2114,7 @@ @AMDEP_TRUE@ source='mappers/77.c' object='mappers/77.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/77.Po' tmpdepfile='mappers/$(DEPDIR)/77.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/77.obj `cygpath -w 'mappers/77.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/77.obj `cygpath -w mappers/77.c` mappers/79.o: mappers/79.c @AMDEP_TRUE@ source='mappers/79.c' object='mappers/79.o' libtool=no @AMDEPBACKSLASH@ @@ -2057,7 +2126,7 @@ @AMDEP_TRUE@ source='mappers/79.c' object='mappers/79.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/79.Po' tmpdepfile='mappers/$(DEPDIR)/79.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/79.obj `cygpath -w 'mappers/79.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/79.obj `cygpath -w mappers/79.c` mappers/80.o: mappers/80.c @AMDEP_TRUE@ source='mappers/80.c' object='mappers/80.o' libtool=no @AMDEPBACKSLASH@ @@ -2068,7 +2138,7 @@ @AMDEP_TRUE@ source='mappers/80.c' object='mappers/80.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/80.Po' tmpdepfile='mappers/$(DEPDIR)/80.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/80.obj `cygpath -w 'mappers/80.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/80.obj `cygpath -w mappers/80.c` mappers/82.o: mappers/82.c @AMDEP_TRUE@ source='mappers/82.c' object='mappers/82.o' libtool=no @AMDEPBACKSLASH@ @@ -2079,7 +2150,7 @@ @AMDEP_TRUE@ source='mappers/82.c' object='mappers/82.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/82.Po' tmpdepfile='mappers/$(DEPDIR)/82.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/82.obj `cygpath -w 'mappers/82.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/82.obj `cygpath -w mappers/82.c` mappers/83.o: mappers/83.c @AMDEP_TRUE@ source='mappers/83.c' object='mappers/83.o' libtool=no @AMDEPBACKSLASH@ @@ -2090,7 +2162,7 @@ @AMDEP_TRUE@ source='mappers/83.c' object='mappers/83.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/83.Po' tmpdepfile='mappers/$(DEPDIR)/83.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/83.obj `cygpath -w 'mappers/83.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/83.obj `cygpath -w mappers/83.c` mappers/85.o: mappers/85.c @AMDEP_TRUE@ source='mappers/85.c' object='mappers/85.o' libtool=no @AMDEPBACKSLASH@ @@ -2101,7 +2174,7 @@ @AMDEP_TRUE@ source='mappers/85.c' object='mappers/85.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/85.Po' tmpdepfile='mappers/$(DEPDIR)/85.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/85.obj `cygpath -w 'mappers/85.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/85.obj `cygpath -w mappers/85.c` mappers/86.o: mappers/86.c @AMDEP_TRUE@ source='mappers/86.c' object='mappers/86.o' libtool=no @AMDEPBACKSLASH@ @@ -2112,7 +2186,7 @@ @AMDEP_TRUE@ source='mappers/86.c' object='mappers/86.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/86.Po' tmpdepfile='mappers/$(DEPDIR)/86.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/86.obj `cygpath -w 'mappers/86.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/86.obj `cygpath -w mappers/86.c` mappers/88.o: mappers/88.c @AMDEP_TRUE@ source='mappers/88.c' object='mappers/88.o' libtool=no @AMDEPBACKSLASH@ @@ -2123,7 +2198,7 @@ @AMDEP_TRUE@ source='mappers/88.c' object='mappers/88.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/88.Po' tmpdepfile='mappers/$(DEPDIR)/88.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/88.obj `cygpath -w 'mappers/88.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/88.obj `cygpath -w mappers/88.c` mappers/89.o: mappers/89.c @AMDEP_TRUE@ source='mappers/89.c' object='mappers/89.o' libtool=no @AMDEPBACKSLASH@ @@ -2134,7 +2210,7 @@ @AMDEP_TRUE@ source='mappers/89.c' object='mappers/89.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/89.Po' tmpdepfile='mappers/$(DEPDIR)/89.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/89.obj `cygpath -w 'mappers/89.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/89.obj `cygpath -w mappers/89.c` mappers/91.o: mappers/91.c @AMDEP_TRUE@ source='mappers/91.c' object='mappers/91.o' libtool=no @AMDEPBACKSLASH@ @@ -2145,7 +2222,7 @@ @AMDEP_TRUE@ source='mappers/91.c' object='mappers/91.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/91.Po' tmpdepfile='mappers/$(DEPDIR)/91.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/91.obj `cygpath -w 'mappers/91.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/91.obj `cygpath -w mappers/91.c` mappers/92.o: mappers/92.c @AMDEP_TRUE@ source='mappers/92.c' object='mappers/92.o' libtool=no @AMDEPBACKSLASH@ @@ -2156,7 +2234,7 @@ @AMDEP_TRUE@ source='mappers/92.c' object='mappers/92.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/92.Po' tmpdepfile='mappers/$(DEPDIR)/92.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/92.obj `cygpath -w 'mappers/92.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/92.obj `cygpath -w mappers/92.c` mappers/95.o: mappers/95.c @AMDEP_TRUE@ source='mappers/95.c' object='mappers/95.o' libtool=no @AMDEPBACKSLASH@ @@ -2167,7 +2246,7 @@ @AMDEP_TRUE@ source='mappers/95.c' object='mappers/95.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/95.Po' tmpdepfile='mappers/$(DEPDIR)/95.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/95.obj `cygpath -w 'mappers/95.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/95.obj `cygpath -w mappers/95.c` mappers/97.o: mappers/97.c @AMDEP_TRUE@ source='mappers/97.c' object='mappers/97.o' libtool=no @AMDEPBACKSLASH@ @@ -2178,7 +2258,7 @@ @AMDEP_TRUE@ source='mappers/97.c' object='mappers/97.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/97.Po' tmpdepfile='mappers/$(DEPDIR)/97.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/97.obj `cygpath -w 'mappers/97.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/97.obj `cygpath -w mappers/97.c` mappers/99.o: mappers/99.c @AMDEP_TRUE@ source='mappers/99.c' object='mappers/99.o' libtool=no @AMDEPBACKSLASH@ @@ -2189,7 +2270,7 @@ @AMDEP_TRUE@ source='mappers/99.c' object='mappers/99.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/99.Po' tmpdepfile='mappers/$(DEPDIR)/99.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/99.obj `cygpath -w 'mappers/99.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/99.obj `cygpath -w mappers/99.c` mappers/113.o: mappers/113.c @AMDEP_TRUE@ source='mappers/113.c' object='mappers/113.o' libtool=no @AMDEPBACKSLASH@ @@ -2200,7 +2282,7 @@ @AMDEP_TRUE@ source='mappers/113.c' object='mappers/113.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/113.Po' tmpdepfile='mappers/$(DEPDIR)/113.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/113.obj `cygpath -w 'mappers/113.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/113.obj `cygpath -w mappers/113.c` mappers/117.o: mappers/117.c @AMDEP_TRUE@ source='mappers/117.c' object='mappers/117.o' libtool=no @AMDEPBACKSLASH@ @@ -2211,7 +2294,7 @@ @AMDEP_TRUE@ source='mappers/117.c' object='mappers/117.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/117.Po' tmpdepfile='mappers/$(DEPDIR)/117.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/117.obj `cygpath -w 'mappers/117.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/117.obj `cygpath -w mappers/117.c` mappers/151.o: mappers/151.c @AMDEP_TRUE@ source='mappers/151.c' object='mappers/151.o' libtool=no @AMDEPBACKSLASH@ @@ -2222,7 +2306,7 @@ @AMDEP_TRUE@ source='mappers/151.c' object='mappers/151.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/151.Po' tmpdepfile='mappers/$(DEPDIR)/151.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/151.obj `cygpath -w 'mappers/151.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/151.obj `cygpath -w mappers/151.c` mappers/180.o: mappers/180.c @AMDEP_TRUE@ source='mappers/180.c' object='mappers/180.o' libtool=no @AMDEPBACKSLASH@ @@ -2233,7 +2318,7 @@ @AMDEP_TRUE@ source='mappers/180.c' object='mappers/180.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/180.Po' tmpdepfile='mappers/$(DEPDIR)/180.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/180.obj `cygpath -w 'mappers/180.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/180.obj `cygpath -w mappers/180.c` mappers/183.o: mappers/183.c @AMDEP_TRUE@ source='mappers/183.c' object='mappers/183.o' libtool=no @AMDEPBACKSLASH@ @@ -2244,7 +2330,7 @@ @AMDEP_TRUE@ source='mappers/183.c' object='mappers/183.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/183.Po' tmpdepfile='mappers/$(DEPDIR)/183.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/183.obj `cygpath -w 'mappers/183.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/183.obj `cygpath -w mappers/183.c` mappers/184.o: mappers/184.c @AMDEP_TRUE@ source='mappers/184.c' object='mappers/184.o' libtool=no @AMDEPBACKSLASH@ @@ -2255,7 +2342,7 @@ @AMDEP_TRUE@ source='mappers/184.c' object='mappers/184.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/184.Po' tmpdepfile='mappers/$(DEPDIR)/184.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/184.obj `cygpath -w 'mappers/184.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/184.obj `cygpath -w mappers/184.c` mappers/187.o: mappers/187.c @AMDEP_TRUE@ source='mappers/187.c' object='mappers/187.o' libtool=no @AMDEPBACKSLASH@ @@ -2267,7 +2354,7 @@ @AMDEP_TRUE@ source='mappers/187.c' object='mappers/187.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/187.Po' tmpdepfile='mappers/$(DEPDIR)/187.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/187.obj `cygpath -w 'mappers/187.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/187.obj `cygpath -w mappers/187.c` mappers/189.o: mappers/189.c @AMDEP_TRUE@ source='mappers/189.c' object='mappers/189.o' libtool=no @AMDEPBACKSLASH@ @@ -2278,7 +2366,7 @@ @AMDEP_TRUE@ source='mappers/189.c' object='mappers/189.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/189.Po' tmpdepfile='mappers/$(DEPDIR)/189.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/189.obj `cygpath -w 'mappers/189.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/189.obj `cygpath -w mappers/189.c` mappers/193.o: mappers/193.c @AMDEP_TRUE@ source='mappers/193.c' object='mappers/193.o' libtool=no @AMDEPBACKSLASH@ @@ -2289,7 +2378,7 @@ @AMDEP_TRUE@ source='mappers/193.c' object='mappers/193.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/193.Po' tmpdepfile='mappers/$(DEPDIR)/193.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/193.obj `cygpath -w 'mappers/193.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/193.obj `cygpath -w mappers/193.c` mappers/200.o: mappers/200.c @AMDEP_TRUE@ source='mappers/200.c' object='mappers/200.o' libtool=no @AMDEPBACKSLASH@ @@ -2300,7 +2390,7 @@ @AMDEP_TRUE@ source='mappers/200.c' object='mappers/200.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/200.Po' tmpdepfile='mappers/$(DEPDIR)/200.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/200.obj `cygpath -w 'mappers/200.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/200.obj `cygpath -w mappers/200.c` mappers/201.o: mappers/201.c @AMDEP_TRUE@ source='mappers/201.c' object='mappers/201.o' libtool=no @AMDEPBACKSLASH@ @@ -2311,7 +2402,7 @@ @AMDEP_TRUE@ source='mappers/201.c' object='mappers/201.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/201.Po' tmpdepfile='mappers/$(DEPDIR)/201.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/201.obj `cygpath -w 'mappers/201.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/201.obj `cygpath -w mappers/201.c` mappers/202.o: mappers/202.c @AMDEP_TRUE@ source='mappers/202.c' object='mappers/202.o' libtool=no @AMDEPBACKSLASH@ @@ -2322,7 +2414,7 @@ @AMDEP_TRUE@ source='mappers/202.c' object='mappers/202.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/202.Po' tmpdepfile='mappers/$(DEPDIR)/202.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/202.obj `cygpath -w 'mappers/202.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/202.obj `cygpath -w mappers/202.c` mappers/203.o: mappers/203.c @AMDEP_TRUE@ source='mappers/203.c' object='mappers/203.o' libtool=no @AMDEPBACKSLASH@ @@ -2333,7 +2426,7 @@ @AMDEP_TRUE@ source='mappers/203.c' object='mappers/203.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/203.Po' tmpdepfile='mappers/$(DEPDIR)/203.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/203.obj `cygpath -w 'mappers/203.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/203.obj `cygpath -w mappers/203.c` mappers/204.o: mappers/204.c @AMDEP_TRUE@ source='mappers/204.c' object='mappers/204.o' libtool=no @AMDEPBACKSLASH@ @@ -2344,7 +2438,7 @@ @AMDEP_TRUE@ source='mappers/204.c' object='mappers/204.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/204.Po' tmpdepfile='mappers/$(DEPDIR)/204.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/204.obj `cygpath -w 'mappers/204.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/204.obj `cygpath -w mappers/204.c` mappers/208.o: mappers/208.c @AMDEP_TRUE@ source='mappers/208.c' object='mappers/208.o' libtool=no @AMDEPBACKSLASH@ @@ -2355,7 +2450,7 @@ @AMDEP_TRUE@ source='mappers/208.c' object='mappers/208.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/208.Po' tmpdepfile='mappers/$(DEPDIR)/208.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/208.obj `cygpath -w 'mappers/208.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/208.obj `cygpath -w mappers/208.c` mappers/211.o: mappers/211.c @AMDEP_TRUE@ source='mappers/211.c' object='mappers/211.o' libtool=no @AMDEPBACKSLASH@ @@ -2366,7 +2462,7 @@ @AMDEP_TRUE@ source='mappers/211.c' object='mappers/211.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/211.Po' tmpdepfile='mappers/$(DEPDIR)/211.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/211.obj `cygpath -w 'mappers/211.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/211.obj `cygpath -w mappers/211.c` mappers/212.o: mappers/212.c @AMDEP_TRUE@ source='mappers/212.c' object='mappers/212.o' libtool=no @AMDEPBACKSLASH@ @@ -2377,7 +2474,7 @@ @AMDEP_TRUE@ source='mappers/212.c' object='mappers/212.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/212.Po' tmpdepfile='mappers/$(DEPDIR)/212.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/212.obj `cygpath -w 'mappers/212.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/212.obj `cygpath -w mappers/212.c` mappers/213.o: mappers/213.c @AMDEP_TRUE@ source='mappers/213.c' object='mappers/213.o' libtool=no @AMDEPBACKSLASH@ @@ -2388,7 +2486,7 @@ @AMDEP_TRUE@ source='mappers/213.c' object='mappers/213.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/213.Po' tmpdepfile='mappers/$(DEPDIR)/213.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/213.obj `cygpath -w 'mappers/213.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/213.obj `cygpath -w mappers/213.c` mappers/214.o: mappers/214.c @AMDEP_TRUE@ source='mappers/214.c' object='mappers/214.o' libtool=no @AMDEPBACKSLASH@ @@ -2399,7 +2498,7 @@ @AMDEP_TRUE@ source='mappers/214.c' object='mappers/214.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/214.Po' tmpdepfile='mappers/$(DEPDIR)/214.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/214.obj `cygpath -w 'mappers/214.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/214.obj `cygpath -w mappers/214.c` mappers/215.o: mappers/215.c @AMDEP_TRUE@ source='mappers/215.c' object='mappers/215.o' libtool=no @AMDEPBACKSLASH@ @@ -2410,7 +2510,7 @@ @AMDEP_TRUE@ source='mappers/215.c' object='mappers/215.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/215.Po' tmpdepfile='mappers/$(DEPDIR)/215.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/215.obj `cygpath -w 'mappers/215.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/215.obj `cygpath -w mappers/215.c` mappers/217.o: mappers/217.c @AMDEP_TRUE@ source='mappers/217.c' object='mappers/217.o' libtool=no @AMDEPBACKSLASH@ @@ -2421,7 +2522,7 @@ @AMDEP_TRUE@ source='mappers/217.c' object='mappers/217.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/217.Po' tmpdepfile='mappers/$(DEPDIR)/217.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/217.obj `cygpath -w 'mappers/217.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/217.obj `cygpath -w mappers/217.c` mappers/225.o: mappers/225.c @AMDEP_TRUE@ source='mappers/225.c' object='mappers/225.o' libtool=no @AMDEPBACKSLASH@ @@ -2432,7 +2534,7 @@ @AMDEP_TRUE@ source='mappers/225.c' object='mappers/225.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/225.Po' tmpdepfile='mappers/$(DEPDIR)/225.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/225.obj `cygpath -w 'mappers/225.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/225.obj `cygpath -w mappers/225.c` mappers/226.o: mappers/226.c @AMDEP_TRUE@ source='mappers/226.c' object='mappers/226.o' libtool=no @AMDEPBACKSLASH@ @@ -2443,7 +2546,7 @@ @AMDEP_TRUE@ source='mappers/226.c' object='mappers/226.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/226.Po' tmpdepfile='mappers/$(DEPDIR)/226.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/226.obj `cygpath -w 'mappers/226.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/226.obj `cygpath -w mappers/226.c` mappers/227.o: mappers/227.c @AMDEP_TRUE@ source='mappers/227.c' object='mappers/227.o' libtool=no @AMDEPBACKSLASH@ @@ -2454,7 +2558,7 @@ @AMDEP_TRUE@ source='mappers/227.c' object='mappers/227.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/227.Po' tmpdepfile='mappers/$(DEPDIR)/227.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/227.obj `cygpath -w 'mappers/227.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/227.obj `cygpath -w mappers/227.c` mappers/228.o: mappers/228.c @AMDEP_TRUE@ source='mappers/228.c' object='mappers/228.o' libtool=no @AMDEPBACKSLASH@ @@ -2465,7 +2570,7 @@ @AMDEP_TRUE@ source='mappers/228.c' object='mappers/228.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/228.Po' tmpdepfile='mappers/$(DEPDIR)/228.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/228.obj `cygpath -w 'mappers/228.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/228.obj `cygpath -w mappers/228.c` mappers/229.o: mappers/229.c @AMDEP_TRUE@ source='mappers/229.c' object='mappers/229.o' libtool=no @AMDEPBACKSLASH@ @@ -2476,7 +2582,7 @@ @AMDEP_TRUE@ source='mappers/229.c' object='mappers/229.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/229.Po' tmpdepfile='mappers/$(DEPDIR)/229.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/229.obj `cygpath -w 'mappers/229.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/229.obj `cygpath -w mappers/229.c` mappers/230.o: mappers/230.c @AMDEP_TRUE@ source='mappers/230.c' object='mappers/230.o' libtool=no @AMDEPBACKSLASH@ @@ -2487,7 +2594,7 @@ @AMDEP_TRUE@ source='mappers/230.c' object='mappers/230.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/230.Po' tmpdepfile='mappers/$(DEPDIR)/230.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/230.obj `cygpath -w 'mappers/230.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/230.obj `cygpath -w mappers/230.c` mappers/231.o: mappers/231.c @AMDEP_TRUE@ source='mappers/231.c' object='mappers/231.o' libtool=no @AMDEPBACKSLASH@ @@ -2498,7 +2606,7 @@ @AMDEP_TRUE@ source='mappers/231.c' object='mappers/231.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/231.Po' tmpdepfile='mappers/$(DEPDIR)/231.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/231.obj `cygpath -w 'mappers/231.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/231.obj `cygpath -w mappers/231.c` mappers/232.o: mappers/232.c @AMDEP_TRUE@ source='mappers/232.c' object='mappers/232.o' libtool=no @AMDEPBACKSLASH@ @@ -2509,7 +2618,7 @@ @AMDEP_TRUE@ source='mappers/232.c' object='mappers/232.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/232.Po' tmpdepfile='mappers/$(DEPDIR)/232.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/232.obj `cygpath -w 'mappers/232.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/232.obj `cygpath -w mappers/232.c` mappers/234.o: mappers/234.c @AMDEP_TRUE@ source='mappers/234.c' object='mappers/234.o' libtool=no @AMDEPBACKSLASH@ @@ -2520,7 +2630,7 @@ @AMDEP_TRUE@ source='mappers/234.c' object='mappers/234.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/234.Po' tmpdepfile='mappers/$(DEPDIR)/234.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/234.obj `cygpath -w 'mappers/234.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/234.obj `cygpath -w mappers/234.c` mappers/235.o: mappers/235.c @AMDEP_TRUE@ source='mappers/235.c' object='mappers/235.o' libtool=no @AMDEPBACKSLASH@ @@ -2531,7 +2642,7 @@ @AMDEP_TRUE@ source='mappers/235.c' object='mappers/235.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/235.Po' tmpdepfile='mappers/$(DEPDIR)/235.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/235.obj `cygpath -w 'mappers/235.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/235.obj `cygpath -w mappers/235.c` mappers/240.o: mappers/240.c @AMDEP_TRUE@ source='mappers/240.c' object='mappers/240.o' libtool=no @AMDEPBACKSLASH@ @@ -2542,7 +2654,7 @@ @AMDEP_TRUE@ source='mappers/240.c' object='mappers/240.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/240.Po' tmpdepfile='mappers/$(DEPDIR)/240.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/240.obj `cygpath -w 'mappers/240.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/240.obj `cygpath -w mappers/240.c` mappers/241.o: mappers/241.c @AMDEP_TRUE@ source='mappers/241.c' object='mappers/241.o' libtool=no @AMDEPBACKSLASH@ @@ -2553,7 +2666,7 @@ @AMDEP_TRUE@ source='mappers/241.c' object='mappers/241.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/241.Po' tmpdepfile='mappers/$(DEPDIR)/241.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/241.obj `cygpath -w 'mappers/241.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/241.obj `cygpath -w mappers/241.c` mappers/242.o: mappers/242.c @AMDEP_TRUE@ source='mappers/242.c' object='mappers/242.o' libtool=no @AMDEPBACKSLASH@ @@ -2564,7 +2678,7 @@ @AMDEP_TRUE@ source='mappers/242.c' object='mappers/242.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/242.Po' tmpdepfile='mappers/$(DEPDIR)/242.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/242.obj `cygpath -w 'mappers/242.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/242.obj `cygpath -w mappers/242.c` mappers/244.o: mappers/244.c @AMDEP_TRUE@ source='mappers/244.c' object='mappers/244.o' libtool=no @AMDEPBACKSLASH@ @@ -2575,7 +2690,7 @@ @AMDEP_TRUE@ source='mappers/244.c' object='mappers/244.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/244.Po' tmpdepfile='mappers/$(DEPDIR)/244.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/244.obj `cygpath -w 'mappers/244.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/244.obj `cygpath -w mappers/244.c` mappers/246.o: mappers/246.c @AMDEP_TRUE@ source='mappers/246.c' object='mappers/246.o' libtool=no @AMDEPBACKSLASH@ @@ -2586,7 +2702,7 @@ @AMDEP_TRUE@ source='mappers/246.c' object='mappers/246.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/246.Po' tmpdepfile='mappers/$(DEPDIR)/246.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/246.obj `cygpath -w 'mappers/246.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/246.obj `cygpath -w mappers/246.c` mappers/255.o: mappers/255.c @AMDEP_TRUE@ source='mappers/255.c' object='mappers/255.o' libtool=no @AMDEPBACKSLASH@ @@ -2597,7 +2714,7 @@ @AMDEP_TRUE@ source='mappers/255.c' object='mappers/255.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/255.Po' tmpdepfile='mappers/$(DEPDIR)/255.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/255.obj `cygpath -w 'mappers/255.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/255.obj `cygpath -w mappers/255.c` mappers/emu2413.o: mappers/emu2413.c @AMDEP_TRUE@ source='mappers/emu2413.c' object='mappers/emu2413.o' libtool=no @AMDEPBACKSLASH@ @@ -2608,7 +2726,7 @@ @AMDEP_TRUE@ source='mappers/emu2413.c' object='mappers/emu2413.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/emu2413.Po' tmpdepfile='mappers/$(DEPDIR)/emu2413.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/emu2413.obj `cygpath -w 'mappers/emu2413.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/emu2413.obj `cygpath -w mappers/emu2413.c` mappers/mmc2and4.o: mappers/mmc2and4.c @AMDEP_TRUE@ source='mappers/mmc2and4.c' object='mappers/mmc2and4.o' libtool=no @AMDEPBACKSLASH@ @@ -2619,7 +2738,7 @@ @AMDEP_TRUE@ source='mappers/mmc2and4.c' object='mappers/mmc2and4.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/mmc2and4.Po' tmpdepfile='mappers/$(DEPDIR)/mmc2and4.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/mmc2and4.obj `cygpath -w 'mappers/mmc2and4.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/mmc2and4.obj `cygpath -w mappers/mmc2and4.c` mappers/simple.o: mappers/simple.c @AMDEP_TRUE@ source='mappers/simple.c' object='mappers/simple.o' libtool=no @AMDEPBACKSLASH@ @@ -2630,7 +2750,7 @@ @AMDEP_TRUE@ source='mappers/simple.c' object='mappers/simple.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='mappers/$(DEPDIR)/simple.Po' tmpdepfile='mappers/$(DEPDIR)/simple.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/simple.obj `cygpath -w 'mappers/simple.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mappers/simple.obj `cygpath -w mappers/simple.c` drivers/common/args.o: drivers/common/args.c @AMDEP_TRUE@ source='drivers/common/args.c' object='drivers/common/args.o' libtool=no @AMDEPBACKSLASH@ @@ -2906,7 +3026,7 @@ @AMDEP_TRUE@ source='drivers/win/netplay.c' object='drivers/win/netplay.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='drivers/win/$(DEPDIR)/netplay.Po' tmpdepfile='drivers/win/$(DEPDIR)/netplay.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o drivers/win/netplay.obj `cygpath -w 'drivers/win/netplay.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o drivers/win/netplay.obj `cygpath -w drivers/win/netplay.c` drivers/win/ppuview.o: drivers/win/ppuview.c @AMDEP_TRUE@ source='drivers/win/ppuview.c' object='drivers/win/ppuview.o' libtool=no @AMDEPBACKSLASH@ @@ -2918,7 +3038,7 @@ @AMDEP_TRUE@ source='drivers/win/ppuview.c' object='drivers/win/ppuview.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='drivers/win/$(DEPDIR)/ppuview.Po' tmpdepfile='drivers/win/$(DEPDIR)/ppuview.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o drivers/win/ppuview.obj `cygpath -w 'drivers/win/ppuview.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o drivers/win/ppuview.obj `cygpath -w drivers/win/ppuview.c` drivers/win/aviout.o: drivers/win/aviout.c @AMDEP_TRUE@ source='drivers/win/aviout.c' object='drivers/win/aviout.o' libtool=no @AMDEPBACKSLASH@ @@ -2929,7 +3050,7 @@ @AMDEP_TRUE@ source='drivers/win/aviout.c' object='drivers/win/aviout.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@ depfile='drivers/win/$(DEPDIR)/aviout.Po' tmpdepfile='drivers/win/$(DEPDIR)/aviout.TPo' @AMDEPBACKSLASH@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o drivers/win/aviout.obj `cygpath -w 'drivers/win/aviout.c` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o drivers/win/aviout.obj `cygpath -w drivers/win/aviout.c` drivers/pc/input.o: drivers/pc/input.c @AMDEP_TRUE@ source='drivers/pc/input.c' object='drivers/pc/input.o' libtool=no @AMDEPBACKSLASH@ @@ -3039,6 +3160,43 @@ @AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o drivers/pc/sdl-opengl.obj `cygpath -w drivers/pc/sdl-opengl.c` CCDEPMODE = @CCDEPMODE@ + +.cc.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cc.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `cygpath -w $<` + +drivers/pc/tiletracker.o: drivers/pc/tiletracker.cc +@AMDEP_TRUE@ source='drivers/pc/tiletracker.cc' object='drivers/pc/tiletracker.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='drivers/pc/$(DEPDIR)/tiletracker.Po' tmpdepfile='drivers/pc/$(DEPDIR)/tiletracker.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o drivers/pc/tiletracker.o `test -f 'drivers/pc/tiletracker.cc' || echo '$(srcdir)/'`drivers/pc/tiletracker.cc + +drivers/pc/tiletracker.obj: drivers/pc/tiletracker.cc +@AMDEP_TRUE@ source='drivers/pc/tiletracker.cc' object='drivers/pc/tiletracker.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='drivers/pc/$(DEPDIR)/tiletracker.Po' tmpdepfile='drivers/pc/$(DEPDIR)/tiletracker.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o drivers/pc/tiletracker.obj `cygpath -w drivers/pc/tiletracker.cc` + +drivers/pc/nesvideos-piece.o: drivers/pc/nesvideos-piece.cc +@AMDEP_TRUE@ source='drivers/pc/nesvideos-piece.cc' object='drivers/pc/nesvideos-piece.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='drivers/pc/$(DEPDIR)/nesvideos-piece.Po' tmpdepfile='drivers/pc/$(DEPDIR)/nesvideos-piece.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o drivers/pc/nesvideos-piece.o `test -f 'drivers/pc/nesvideos-piece.cc' || echo '$(srcdir)/'`drivers/pc/nesvideos-piece.cc + +drivers/pc/nesvideos-piece.obj: drivers/pc/nesvideos-piece.cc +@AMDEP_TRUE@ source='drivers/pc/nesvideos-piece.cc' object='drivers/pc/nesvideos-piece.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='drivers/pc/$(DEPDIR)/nesvideos-piece.Po' tmpdepfile='drivers/pc/$(DEPDIR)/nesvideos-piece.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o drivers/pc/nesvideos-piece.obj `cygpath -w drivers/pc/nesvideos-piece.cc` +CXXDEPMODE = @CXXDEPMODE@ uninstall-info-am: ETAGS = etags @@ -3121,7 +3279,7 @@ install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \` + `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: diff -bB -NaHudr fceu-0.98.15-src/src/mappers/Makefile.in fceu/src/mappers/Makefile.in --- fceu-0.98.15-src/src/mappers/Makefile.in 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/mappers/Makefile.in 2006-04-11 10:43:12.000000000 +0300 @@ -0,0 +1,199 @@ +# Makefile.in generated by automake 1.6.3 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AWK = @AWK@ +CC = @CC@ +CXX = @CXX@ +DEPDIR = @DEPDIR@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +PACKAGE = @PACKAGE@ +STRIP = @STRIP@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ +fceu_SOURCES = *.c +subdir = src/mappers +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/mappers/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +uninstall-info-am: +tags: TAGS +TAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile + +installdirs: + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic uninstall uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -bB -NaHudr fceu-0.98.15-src/src/midi.cc fceu/src/midi.cc --- fceu-0.98.15-src/src/midi.cc 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/midi.cc 2006-04-11 10:43:12.000000000 +0300 @@ -0,0 +1,336 @@ +#include + +#include "midi.hh" + +void MIDItrack::Add(unsigned char data) +{ + track.push_back(data); +} +void MIDItrack::Flush() +{ + AddVarLen(delay); delay = 0; +} +void MIDItrack::AddVarLen(unsigned t) +{ + //fprintf(stderr, "%p:Appending varlen %u\n", this,t); + if(t>>21)Add(0x80 | ((t>>21) &127)); + if(t>>14)Add(0x80 | ((t>>14) &127)); + if(t>>7) Add(0x80 | ((t>>7) &127)); + Add(t&127); +} +void MIDItrack::AddText(unsigned char n, const char* t) +{ + Flush(); + Add(0xFF); + Add(n); + Add(strlen(t)); + while(*t)Add(*t++); +} +void MIDItrack::AddData(unsigned char data) +{ + if(data & 0x80) + { + Flush(); + if(data == running)return; + running = data; + } + Add(data); +} +void MIDItrack::AddData(unsigned char nbytes, unsigned char data, ...) +{ + va_list ap; + va_start(ap, data); + for(;;) + { + AddData(data); + if(nbytes <= 1)break; + --nbytes; + data = (unsigned char)(va_arg(ap, int)); + } + va_end(ap); +} +void MIDItrack::AddMeta(unsigned char metatype, unsigned char nbytes, ...) +{ + Flush(); + Add(0xFF); + Add(metatype); + Add(nbytes); + va_list ap; + va_start(ap, nbytes); + while(nbytes > 0) + { + unsigned char byte = (unsigned char)(va_arg(ap, int)); + Add(byte); + --nbytes; + } + va_end(ap); +} +unsigned MIDItrack::ReadVarLen() +{ + unsigned result = 0; + while(readpos < track.size()) + { + unsigned char c = track[readpos++]; + result = result*128 + (c & 127); + if(c < 128) break; + } + return result; +} +void MIDItrack::ReadDelay() +{ + if(readpos < track.size()) delay = ReadVarLen(); +} +int MIDItrack::ReadMeta(std::string& data) +{ + if(readpos+3 <= track.size() + && track[readpos] == 0xFF) + { + unsigned char type = track[readpos+1]; + readpos += 2; + unsigned length = ReadVarLen(); + unsigned orig = readpos; + readpos += length; + data = std::string(&track[orig], &track[orig+length]); + return type; + } + return -1; +} +void MIDItrack::PeekNextCmd(std::string& cmd, bool peek_only) +{ + cmd = ""; + unsigned save_pos = readpos; + try + { + unsigned char b = track.at(readpos); + + if(b < 0x80) + b = running; + else + { + ++readpos; + if(b < 0xF0) running = b; + } + + unsigned origpos = readpos; + + if(b == 0xFF) + { + unsigned char type = track.at(readpos++); + unsigned p = ReadVarLen(); + readpos += p; + } + else if(b == 0xF0 || b == 0xF7) + { + unsigned p = ReadVarLen(); + readpos += p; + } + else if(b == 0xF2) readpos += 2; + else if(b == 0xF3) readpos += 1; + else if(b >= 0xC0 && b <= 0xCF) readpos += 1; + else if(b >= 0x80 && b <= 0xEF) readpos += 2; + + if(b & 0x80) + cmd += (char)b; + while(origpos < readpos) + cmd += (char)(track.at(origpos++)); + } + catch(...) + { + delay=1; + } + if(peek_only) readpos = save_pos; +} +void MIDItrack::ReadEventInto(MIDIfile& target, unsigned trackno) +{ + std::string cmd; + PeekNextCmd(cmd, false); + + if(!cmd.empty()) + { + /* + fprintf(stderr, "Append: "); + for(unsigned a=0; a= 0xF0) + { + target.tracks[trackno].Flush(); + + for(unsigned a=0; a>16)&255), + ((tempo>>8)&255), + ((tempo)&255)); +} +void MIDIfile::Done() +{ + AddLoopEnd(); + for(unsigned a=0; a> 8) & 255); + midi.push_back((tracks.size() ) & 255); + + midi.push_back((deltaticks>>8)&255); + midi.push_back((deltaticks )&255); + + for(unsigned a=0; a>24)&255); + midi.push_back((tracklen>>16)&255); + midi.push_back((tracklen>> 8)&255); + midi.push_back((tracklen )&255); + + midi.insert(midi.end(), trk.getdata(), trk.getdata() + tracklen); + } +} +bool MIDIfile::Load(const char* filename) +{ + unsigned char header[14]; + FILE* fp = fopen(filename, "rb"); + if(!fp) return false; + + fread(header,1,sizeof(header), fp); + if(memcmp(header, "MThd\0\0\0\6", 8) != 0) + { + euh: + fclose(fp); + return false; + } + unsigned ntracks = header[10]*256 + header[11]; + deltaticks = header[12]*256 + header[13]; + for(unsigned a=0; a buf(tracklen); + fread(&buf[0], 1, tracklen, fp); + + tracks[a].SetData(&buf[0], tracklen); + } + return true; +} + +void MIDIfile::KeyOn(unsigned trackno, unsigned ch, unsigned char note, unsigned char pressure) +{ + if(false&&trackno == 0) + { + fprintf(stderr, "Track %u: delay(%d) noteon[%u] %02X %02X\n", + trackno, tracks[trackno].GetDelay(), ch, note, pressure); + } + tracks[trackno].AddData(3, 0x90|ch, note, pressure); +} + +void MIDIfile::KeyOff(unsigned trackno, unsigned ch, unsigned char note, unsigned char pressure) +{ + if(false&&trackno == 0) + { + fprintf(stderr, "Track %u: delay(%d) noteoff[%u] %02X %02X\n", + trackno, tracks[trackno].GetDelay(), ch, note, pressure); + } + tracks[trackno].AddData(3, 0x80|ch, note, pressure); +} + +void MIDIfile::KeyTouch(unsigned trackno, unsigned ch, unsigned char note, unsigned char pressure) +{ + if(false&&trackno == 0) + { + fprintf(stderr, "Track %u: delay(%d) touch[%u] %02X %02X\n", + trackno, tracks[trackno].GetDelay(), ch, note, pressure); + } + tracks[trackno].AddData(3, 0xA0|ch, note, pressure); +} + +void MIDIfile::Control(unsigned trackno, unsigned ch, unsigned char ctrl, unsigned char value) +{ + if(false&&trackno == 0) + { + fprintf(stderr, "Track %u: delay(%d) ontrol[%u] %02X %02X\n", + trackno, tracks[trackno].GetDelay(), ch, ctrl, value); + } + tracks[trackno].AddData(3, 0xB0|ch, ctrl, value); +} + +void MIDIfile::Patch(unsigned trackno, unsigned ch, unsigned patchno) +{ + if(false&&trackno == 0) + { + fprintf(stderr, "Track %u: delay(%d) patch[%u] %02X\n", + trackno, tracks[trackno].GetDelay(), ch, patchno); + } + tracks[trackno].AddData(2, 0xC0|ch, patchno); +} + +void MIDIfile::Wheel(unsigned trackno, unsigned ch, unsigned value) +{ + tracks[trackno].AddData(3, 0xE0|ch, value&127, (value>>7)&127); +} + +void MIDIfile::Save(const char* filename) +{ + FILE* fp = fopen(filename, "wb"); + if(!fp) return; + + fwrite(getdata(), 1, size(), fp); + fclose(fp); +} diff -bB -NaHudr fceu-0.98.15-src/src/midi.hh fceu/src/midi.hh --- fceu-0.98.15-src/src/midi.hh 1970-01-01 02:00:00.000000000 +0200 +++ fceu/src/midi.hh 2006-04-11 10:43:12.000000000 +0300 @@ -0,0 +1,154 @@ +#ifndef bqtSndTool2MIDIhh +#define bqtSndTool2MIDIhh + +#include +#include + +/* + +MIDI events: + + 8c note volume KEY OFF + 9c note volume KEY ON + Ac note volume KEY AFTERTOUCH + Bc ctrl value CONTROL + Cc patch PATCH CHANGE + Dc ?? CHANNEL AFTERTOUCH + Ec lo7 hi7 PITCH WHEEL + +*/ + +class MIDItrack +{ +protected: + unsigned delay; + unsigned char running; + unsigned readpos; + + std::vector track; +public: + MIDItrack() : delay(0), running(0), readpos(0) + { + } + void Reset() { delay=0; running=0; readpos=0; track.clear(); } + + void Add(unsigned char data); + void Flush(); + void AddVarLen(unsigned t); + void AddText(unsigned char n, const char* t); + void AddMarker(const char* s) { AddText(6, s); } + void AddCopyright(const char* s) { AddText(2, s); } + void AddFilename(const char* s) { AddText(1, s); } + void AddSongname(const char* s) { AddText(3, s); } + void AddDelay(unsigned length) { delay += length; } + void AddData(unsigned char data); + void AddMeta(unsigned char metatype, unsigned char nbytes, ...); + void AddData(unsigned char nbytes, unsigned char data, ...); + + void DecDelay(unsigned length) { delay -= length; } + void ReadDelay(); + void ReadEventInto(class MIDIfile&, unsigned trackno); + unsigned ReadVarLen(); + int ReadMeta(std::string& data); + void PeekNextCmd(std::string& cmd, bool peek_only=true); + + unsigned size() const { return track.size(); } + unsigned char operator[] (unsigned ind) const { return track[ind]; } + const unsigned char* getdata() const { return (const unsigned char* )&track[0]; } + + void SetData(const unsigned char* buf, unsigned size) + { + Reset(); + track.assign(buf, buf+size); + } + + unsigned GetDelay() const { return delay; } +}; + +class MIDIfile +{ +protected: + std::vector tracks; + unsigned deltaticks, tempo; + + std::vector midi; + + friend class MIDItrack; +public: + MIDIfile() : deltaticks(1000), tempo(1000000) + { + } + void AddLoopStart() { AddMarker(0, "loopStart"); } + void AddLoopEnd() { AddMarker(0, "loopEnd"); } + void AddText(unsigned trackno, unsigned char type, const char* s) + { + if(tracks.size() > trackno) tracks[trackno].AddText(type, s); + } + void AddMarker(unsigned trackno, const char* s) { AddText(trackno, 6, s); } + void AddCopyright(unsigned trackno, const char* s) { AddText(trackno, 2, s); } + void AddFilename(unsigned trackno, const char* s) { AddText(trackno, 1, s); } + void AddSongname(unsigned trackno, const char* s) { AddText(trackno, 3, s); } + void InitTrack(unsigned trackno); + void Done(); + + // Note: pressure != volume. Use ctrl(7) to set volume. + void KeyOn(unsigned trackno, unsigned ch, unsigned char note, unsigned char pressure); + + void KeyOff(unsigned trackno, unsigned ch, unsigned char note, unsigned char pressure); + + // Nobody ever uses this. Use ctrl(7) to change the pressure. + void KeyTouch(unsigned trackno, unsigned ch, unsigned char note, unsigned char pressure); + + void Control(unsigned trackno, unsigned ch, unsigned char ctrl, unsigned char value); + + // Use this for melodic only. Percussions have a different mechanism. + void Patch(unsigned trackno, unsigned ch, unsigned patchno); + + // Note: The value is 14bit and its effect is somewhat undefined. + void Wheel(unsigned trackno, unsigned ch, unsigned value); + + // Controllers work like this: + void SetVolume(unsigned trackno, unsigned ch, unsigned volume) + { + if(volume > 127) volume = 127; + Control(trackno, ch, 7, volume); + } + + // FIXME: What unit is this "amount" in?? + void AddDelay(unsigned trackno, unsigned amount) + { + // amount = amount * deltaticks / tempo; + tracks[trackno].AddDelay(amount); + } + + unsigned size() const { return midi.size(); } + unsigned char operator[] (unsigned ind) const { return midi[ind]; } + const unsigned char* getdata() const { return (const unsigned char* )&midi[0]; } + + void Save(const char* filename); + bool Load(const char* filename); +}; + +#if 0 +class MUSfile +{ +public: + void Init() + { + } + void Done() + { + fwrite("MUS\x1A", 1, 4, fp); + fputc(0, fp); /* word scorelen - TODO */ + fputc(0, fp); + fputc(0, fp); /* word scorestart - TODO */ + fputc(0, fp); + fputc(15, fp); /* word count of primary channels */ + fputc(0, fp); + fputc(0, fp); /* word count of secondary channels */ + fputc(0, fp); + } +}; +#endif + +#endif diff -bB -NaHudr fceu-0.98.15-src/src/movie.c fceu/src/movie.c --- fceu-0.98.15-src/src/movie.c 2006-04-11 10:43:18.000000000 +0300 +++ fceu/src/movie.c 2006-04-11 10:43:12.000000000 +0300 @@ -685,7 +685,15 @@ FCEU_DoSimpleCommand(nextd&0x1F); } else - joop[(nextd >> 3)&0x3] ^= 1 << (nextd&0x7); + { + unsigned jno = (nextd >> 3)&0x3; + unsigned kno = 1 << (nextd&0x7); + const char* newstate = "off"; + joop[jno] ^= kno; + if(joop[jno] & kno) newstate = "on"; + fprintf(stderr, "Frame %6u: %u %s for %u\n", + framecount, kno, newstate, jno); + } } @@ -816,46 +824,121 @@ void FCEU_DrawMovies(uint8 *XBuf) { - int frameDisplayOn = current != 0 && frame_display; - extern int howlong; -#if WIN32 - extern int32 fps_scale; -#else - int32 fps_scale=256; -#endif - int howl=(180-(FCEUI_EmulationPaused()?(60):(20*fps_scale/256))); - if(howl>176) howl=180; - if(howl<1) howl=1; - if((howlong':' ', (c&0x20)?'v':' ', - (c&0x01)?'A':' ', (c&0x02)?'B':' ', (c&0x08)?'S':' ', (c&0x04)?'s':' ', - (c&0x4000)?'<':' ', (c&0x1000)?'^':' ', (c&0x8000)?'>':' ', (c&0x2000)?'v':' ', - (c&0x0100)?'A':' ', (c&0x0200)?'B':' ', (c&0x0800)?'S':' ', (c&0x0400)?'s':' '); - if(!(c&0xff00)) - inputstr[8] = '\0'; + unsigned char seed=RAM[0x46], frame=RAM[0x23], a; + #define Iterate(n, c) \ + for(a=0;a>= 1; } + Iterate(3, 0x64); + Iterate(3, 0x7C); + Iterate(6, 0x64); + Iterate(1, 0x54); + Iterate(32, 0x03); + Iterate(60, 0x02); + Iterate(1, 0x54); + Iterate(33, 0x03); + Iterate(2, 0x64); + Iterate(3, 0x7C); + Iterate(6, 0x64); + Iterate(1, 0x98); + Iterate(13, 0xD4); + Iterate(1, 0xCC); + Iterate(81, 0xD0); + {char mdata[512]; + sprintf(mdata,",Bomb[%02X]", seed);strcat(msg, mdata);} } - if(frameDisplayOn && !input_display) - FCEU_DispMessage("%s frame %u",current >= 0?"Recording":"Playing",framecount); - else if(input_display && !frameDisplayOn) - FCEU_DispMessage("Input: %s",inputstr); - else //if(input_display && frame_display) - FCEU_DispMessage("%s %u %s",current >= 0?"Recording":"Playing",framecount,inputstr); + if(RockYS <= 0.0) + { + strcat(msg, "; jmps="); + if(RAM[0x620] != 0 && RockYS != -0.75) + { + double NewRockY = RockY - RockYS; + /* Take fraction part only */ + RockY = ((int)RockY) + (NewRockY - (int)NewRockY); + } + {double JmpS = 4.8710938; + unsigned n;for(n=0; n<20; ++n) + { + char mdata[512]; + sprintf(mdata, "%d,", (signed int)RockY); + strcat(msg, mdata); + RockY -= JmpS; + JmpS -= 0.25; + if(RockY < -4) break; + }} + } + + {unsigned a,b=0;for(a=0; a<16; ++a) + { + char mdata[512]; + if(RAM[0x5B0+a]==0) continue; + + if(b==0) { ++b; strcat(msg, "\nBeams: "); } + sprintf(mdata, "%u,%u+%u[%u,%u], ", + RAM[0x5D0+a]*256 + RAM[0x5C0+a], + RAM[0x5F0+a], + RAM[0x5A0+a], + RAM[0x5E0+a], RAM[0x5B0+a]); + + strcat(msg, mdata); + }} + strcat(msg, ""); + {unsigned a,b=0;for(a=0; a<32; ++a) + { + char mdata[512]; + + if(RAM[0x600+a] == 0xF8) continue; // dead object + if(RAM[0x6E0+a] != 0x2C) continue; // lift animator + + double LiftX, LiftY; + if(b==0) + { + double LiftX = (signed short)(RAM[0x9D]*256 + RAM[0x9C])/ 256.0; + ++b; + sprintf(mdata, "\nLifts (9B=%02X,9E=%02X,Speed=%.1f): ", + RAM[0x9B], + RAM[0x9E], + LiftX); + strcat(msg, mdata); + } + + LiftX = (unsigned short)(RAM[0x480+a]*256 + RAM[0x4A0+a])/ 256.0 + RAM[0x460+a]*256; + LiftY = (unsigned short)(RAM[0x600+a]*256 + RAM[0x620+a])/ 256.0; + + sprintf(mdata, "%.0f,%.0f%s, ", LiftX,LiftY, (RAM[0x640+a]&64) ? "R" : "L"); + + strcat(msg, mdata); + }} + strcat(msg, ""); +#endif +#if 1 /* ROCKMAN 2 */ + double RockY = (unsigned short)(RAM[0x4A0]*256 + RAM[0x4C0])/ 256.0; + double RockYS = (signed short )(RAM[0x640]*256 + RAM[0x660])/ 256.0; + double RockX = (unsigned short)(RAM[0x460]*256 + RAM[0x480])/ 256.0 + RAM[0x440]*256; + double RockXS = (signed short )(RAM[0x600]*256 + RAM[0x620])/ 256.0; + sprintf(msg, " - X=%.2f%+.3f Y=%.2f%+.3f\n", + RockX,RockXS, RockY, RockYS + ); +#endif + + FCEU_DispMessage("%s #%u%s",(current<0) ? "Play" : "Rec", framecount, msg); last_frame_display = framecount; - last_input_display = cur_input_display; - movcounter=180-1; return; } - if(movcounter) movcounter--; - if(!MovieShow) return; FCEU_DrawNumberRow(XBuf,MovieStatus, CurrentMovie); diff -bB -NaHudr fceu-0.98.15-src/src/ppu.c fceu/src/ppu.c --- fceu-0.98.15-src/src/ppu.c 2006-04-11 10:43:17.000000000 +0300 +++ fceu/src/ppu.c 2006-04-11 10:43:11.000000000 +0300 @@ -32,9 +32,6 @@ #include "general.h" #include "endian.h" #include "memory.h" -#ifdef WIN32 -#include "ppuview.h" -#endif #include "cart.h" #include "palette.h" @@ -102,7 +99,7 @@ } static int ppudead=1; -static int kook=0; +static int kook = 0; int fceuindbg=0; int MMC5Hack=0; @@ -236,13 +233,13 @@ static DECLFW(B2000) { -// FCEU_printf("%04x:%02x, (%d) %02x, %02x\n",A,V,scanline,PPU[0],PPU_status); + //printf("%04x:$%02x, %d\n",A,V&0x38,scanline); FCEUPPU_LineUpdate(); PPUGenLatch=V; if(!(PPU[0]&0x80) && (V&0x80) && (PPU_status&0x80)) { -// FCEU_printf("Trigger NMI, %d, %d\n",timestamp,ppudead); + //printf("Trigger NMI, %d, %d\n",timestamp,ppudead); TriggerNMI2(); } PPU[0]=V; @@ -293,25 +290,43 @@ } +/* Begin Bisqwit's TILE_TRACKER */ +static const unsigned EXTRA_CYCLES_SCANLINE = 0; // BISQWIT'S ADDITION +unsigned NTAWrites; +static unsigned HScroll, VScroll; +unsigned SavedHScroll, SavedVScroll; +static void SaveScroll() +{ + extern void TILE_SaveScroll(unsigned H, unsigned V, int scanline); + TILE_SaveScroll(SavedHScroll=HScroll, SavedVScroll=VScroll, scanline); +} +/* End Bisqwit's TILE_TRACKER */ + static DECLFW(B2005) { uint32 tmp=TempAddr; FCEUPPU_LineUpdate(); PPUGenLatch=V; - if(!vtoggle) + if (!vtoggle) { tmp&=0xFFE0; tmp|=V>>3; XOffset=V&7; + HScroll=V; } else { tmp&=0x8C1F; tmp|=((V&~0x7)<<2); tmp|=(V&7)<<12; + VScroll=V; } + SaveScroll(); TempAddr=tmp; - vtoggle^=1; + vtoggle^=1; /* + if(!vtoggle) + fprintf(stderr, "Scroll %u,%u @ %u\n", + HScroll,VScroll, scanline);*/ } @@ -357,10 +372,12 @@ else { if(PPUNTARAM&(1<<((tmp&0xF00)>>10))) + { vnapage[((tmp&0xF00)>>10)][tmp&0x3FF]=V; + ++NTAWrites; } -// FCEU_printf("ppu (%04x) %04x:%04x %d, %d\n",X.PC,RefreshAddr,PPUGenLatch,scanline,timestamp); - if(INC32) RefreshAddr+=32; + } + if (INC32) RefreshAddr+=32; else RefreshAddr++; if(PPU_hook) PPU_hook(RefreshAddr&0x3fff); } @@ -477,20 +494,14 @@ int x; if(sphitx==0x100) return; - for(x=sphitx;x<(sphitx+8) && x>(x-sphitx))) && !(Plinef[x]&64)) { PPU_status|=0x40; //printf("Ha: %d, %d, Hita: %d, %d, %d, %d, %d\n",p,p&~7,scanline,GETLASTPIXEL-16,&Plinef[x],Pline,Pline-Plinef); - //printf("%d\n",GETLASTPIXEL-16); - //if(Plinef[x] == 0xFF) - //printf("PL: %d, %02x\n",scanline, Plinef[x]); sphitx=0x100; break; } - } } static int spork=0; /* spork the world. Any sprites on this line? Then this will be set to 1. Needed for zapper @@ -504,6 +515,7 @@ static uint32 atlatch; uint32 smorkus=RefreshAddr; +SaveScroll(); #define RefreshAddr smorkus uint32 vofs; int X1; @@ -561,6 +573,7 @@ { InputScanlineHook(Plinef,spork?sprlinebuf:0,linestartts,lasttile*8-16); } + NTAWrites++; return; } @@ -861,7 +874,43 @@ if(!PPU_hook) for(n=63;n>=0;n--,spr++) { + +/*** BISQWIT'S HACK WHICH DISABLES THE SCORE & ENERGY METERS IN SOME GAMES ***/ +#if 0 + // ROCKMAN 1-6 + if((spr->x == 16 || spr->x == 24) + && (spr->y & 7) == 0 + && spr->y >= 24 && spr->y < 88) continue; +#endif +#if 0 + // ROCKMAN 1 SCORE + if(spr->y == 16) continue; +#endif +#if 0 + // SMB2 + if(spr->x == 16 && spr->y >= 16 && spr->y < 80) continue; +#endif +#if 0 + // BATMAN + if(spr->x >= 24 && (spr->x&7) == 0 && spr->x <= 88 + && spr->y >= 24 && (spr->y&7) == 0 && spr->y <= 32) continue; +#endif +#if 0 + // RYGAR + if(spr->x >= 0xA8 && (spr->x&7) == 0 && spr->x <= 0xD8 + && spr->y >= 24 && (spr->y&7) == 0 && spr->y <= 32) continue; +#endif +#if 0 + // CHIP&DALE + if(((spr->x >= 0x10 && (spr->x&7) == 0 && spr->x <= 0x20) + ||(spr->x >= 0xD0 && (spr->x&7) == 0 && spr->x <= 0xE0)) + && spr->y >= 16 && (spr->y&7) == 0 && spr->y <= 24) continue; +#endif + if((unsigned int)(scanline-spr->y)>=H) continue; + + //fprintf(stderr, "SPR %u,%u\n", spr->x, spr->y); + //printf("%d, %u\n",scanline,(unsigned int)(scanline-spr->y)); if(ns +#include + +#include "midi.hh" +#include "midi.cc" + +class Rockman1Sound +{ +public: + void Update() + { + IterateMusic(); + IterateSFX(); + NextFrame(); + + static unsigned b=0; + if(++b==60) { b=0; Save("test.mid"); } + } + void Command(unsigned char cmd, signed char param) + { + switch(cmd) + { + case 0xFC: SetSpeedUp((unsigned char)param + 1); break; + case 0xFD: SetFading(param); break; + case 0xFE: Reset(); break; + case 0xFF: StopMusic(); break; + default: InitSound(cmd); + } + } +private: + class MIDI: public MIDIfile + { + public: + MIDI() + { + tempo = 1000000; // 1 second + deltaticks = 60; // 60 ticks per second + InitTrack(0); + InitTrack(1); + balance = 0; + for(unsigned c=0; c<16; ++c) + for(unsigned n=0; n<256; ++n) + NotesOn[c][n]=false; + } + void Stop(MIDIfile& target, unsigned trackno) + { + MIDIfile::tracks.clear(); + + for(unsigned c=0; c<16; ++c) + for(unsigned n=0; n<256; ++n) + if(NotesOn[c][n]) + { + target.KeyOff(trackno, c, n, 127); + NotesOn[c][n] = false; + } + } + void Load(const std::string& fn) + { + std::string ffn = "/mnt/oc/mid/megaman/" + fn; + fprintf(stderr, "Loading %s...\n", ffn.c_str()); + bool ok = MIDIfile::Load(ffn.c_str()); + fprintf(stderr, "-> %s\n", ok?"ok":"not ok"); + + for(unsigned a=0; a= 1) AddDelay(0, 1); // track 0, 1 frame + if(MIDIfile::tracks.size() >= 2) AddDelay(1, 1); // track 1, 1 frame + } + void IterateTo(MIDI& target, unsigned trackno) + { + long long target_delta = target.deltaticks; + long long wanted = target.tempo * deltaticks; + balance += wanted; + while(balance >= wanted) + { + for(unsigned a=0; a 0) track.DecDelay(1); + while(track.GetDelay() == 0) + { + std::string metadata; + int metatype = track.ReadMeta(metadata); + switch(metatype) + { + case -1: + { + track.PeekNextCmd(metadata); + + unsigned cmd = metadata[0]&0xF0; + unsigned chan = metadata[0]&0x0F; + switch(cmd) + { + case 0x90: NotesOn[chan][(unsigned char)metadata[1]] = true; break; + case 0x80: NotesOn[chan][(unsigned char)metadata[1]] = false; break; + } + track.ReadEventInto(target, trackno); + break; + } + case 0x2F: // end track + break; + case 0x51: // tempo + { + tempo = + ((unsigned char)metadata[0])*256*256+ + ((unsigned char)metadata[1])*256+ + ((unsigned char)metadata[2]); + break; + } + } + track.ReadDelay(); + } + } + } sfx, music, result; +private: + void InitSound(unsigned char cmd) + { + if(cmd <= 0x10) StopMusic(); + else StopSFX(); + std::string midifn = ""; + switch(cmd) + { + case 0x00: break; + case 0x01: + midifn = "mm1stageselect.mid"; + break; + case 0x02: + midifn = "mm1bossselected.mid"; + break; + case 0x03: break; + case 0x04: + midifn = "mm1bossdefeat.mid"; + break; + case 0x05: break; + case 0x06: break; + case 0x07: break; + case 0x08: break; + case 0x09: + midifn = "MM1ELEC4.MID"; + break; + case 0x0A: break; + case 0x0B: break; + case 0x0C: break; + case 0x0D: + midifn = "MMBOSS.MID"; + break; + case 0x0E: break; + case 0x0F: break; + case 0x10: break; + case 0x11: break; + case 0x12: break; + case 0x13: // mag beam + break; + case 0x14: // shoot P + break; + case 0x15: break; + case 0x16: // megaman hit + break; + case 0x17: break; + case 0x18: break; + case 0x19: // hit ground + break; + case 0x1A: // acquire magnetbeam + break; + case 0x1B: // enemy kill + break; + case 0x1C: // game start, boss launch + break; + case 0x1D: break; + case 0x1E: break; + case 0x1F: // menu select + break; + case 0x20: // transform + break; + case 0x21: // score shuffle + break; + case 0x22: // pause sound + break; + case 0x23: break; + case 0x24: break; + case 0x25: break; + case 0x26: break; + case 0x27: break; + case 0x28: break; + case 0x29: break; + case 0x2A: break; + case 0x2B: break; + case 0x2C: // pneuma block + break; + case 0x2D: break; + case 0x2E: break; + case 0x2F: break; + case 0x30: break; + case 0x31: break; + case 0x32: break; + } + if(midifn.empty()) + { + fprintf(stderr, "Sound 0x%02X not implemented\n", cmd); + return; + } + if(cmd <= 0x10) music.Load(midifn); else sfx.Load(midifn); + } + + void SetSpeedUp(unsigned/* value*/) + { + // unused in Rockman + } + void SetFading(int/* param*/) + { + // unused in Rockman + } + void Reset() + { + StopMusic(); + StopSFX(); + } + void StopMusic() + { + music.Stop(result, 0); + } + void StopSFX() + { + sfx.Stop(result, 1); + } + void IterateMusic() + { + music.IterateTo(result, 0); + } + void IterateSFX() + { + sfx.IterateTo(result, 1); + } + void NextFrame() + { + // music.NextFrame(); + // sfx.NextFrame(); + result.NextFrame(); + } + void Save(const char* fn) + { + MIDIfile m = result; + m.Done(); + m.Save("test.mid"); + } +}; + +#endif + diff -bB -NaHudr fceu-0.98.15-src/src/state.c fceu/src/state.c --- fceu-0.98.15-src/src/state.c 2006-04-11 10:43:18.000000000 +0300 +++ fceu/src/state.c 2006-04-11 10:43:12.000000000 +0300 @@ -586,8 +586,8 @@ CurrentState=w; if(show) { - StateShow=180; - FCEU_DispMessage("-select state-"); + //StateShow=180; + FCEU_DispMessage("-state %d selected-", w); } return oldstate; } diff -bB -NaHudr fceu-0.98.15-src/src/video.c fceu/src/video.c --- fceu-0.98.15-src/src/video.c 2006-04-11 10:43:18.000000000 +0300 +++ fceu/src/video.c 2006-04-11 10:43:12.000000000 +0300 @@ -65,10 +65,10 @@ return 0; xbsave=XBuf; - if(sizeof(uint8*)==4) + if(sizeof(XBuf)==4) { - uint32 m; - m=(uint32)XBuf; + unsigned m; + m=(unsigned)XBuf; m=(4-m)&3; XBuf+=m; } @@ -78,7 +78,7 @@ } int howlong; -static char errmsg[65]; +static char errmsg[512]; #include "drawing.h" #ifdef FRAMESKIP @@ -109,7 +109,11 @@ static void FCEU_DrawRecordingStatus(uint8* XBuf) { int n=0; +#ifdef WIN32 if(FCEUD_ShowStatusIcon()) +#else + if(0) +#endif { if(FCEUI_EmulationPaused()) n=3; @@ -132,21 +136,74 @@ FCEU_DispMessage("Screen snapshot %d saved.",x-1); } +void RockmanBeams() +{ + extern unsigned char RefrRAM[0x800]; + + unsigned a; + int scrollbegin = RefrRAM[0x1B]*256 + RefrRAM[0x1A]; + //for(a=0; a<256*240; ++a) XBuf[a] = (XBuf[a] & 15) | 192; + if(RefrRAM[0x1E] != 0) return; // vscroll + for(a=0; a<16; ++a) + { + unsigned power = RefrRAM[0x5B0+a]; + int xmid = RefrRAM[0x5D0+a]*256 + RefrRAM[0x5C0+a]; + int ypos = RefrRAM[0x5F0+a]; + unsigned length = RefrRAM[0x5A0+a]; + unsigned units = 1+length/4; + if(!power) continue; + + int screenbegin = (xmid - scrollbegin) - units*8; + int screenend = (xmid - scrollbegin) + units*8; + + if(screenbegin < 0) screenbegin = 0; + if(RefrRAM[0x1A] != 0 && screenend > 255) screenend = 255; + if(RefrRAM[0x1A] != 0 && screenbegin > 255) continue; + if(screenend < 0) continue; + + if(RefrRAM[0x1E] != 0) ypos -= RefrRAM[0x1E]-256; + + while(screenbegin <= screenend) + { + unsigned x=screenbegin&255; + int y, ycount=0; + for(y=ypos-2; y 255) + { + continue;//if((x|y)&1)continue; + } + if(y < 0 || y > 239) continue; + switch(ycount) + { + case 0: color=13; break; + case 5: color=13; break; + default: + { + int offs = y+screenbegin+RefrRAM[0x1A]; + int hi=0x2C, lo=0x11; + //if(power==156 && (RefrRAM[0x23]&1)) hi=0x3C; + // -RefrRAM[0x23]/8; // frame counter for visfx + color = (offs&2) ? hi:lo; + } + } + //if(((x^y)&1) != (RefrRAM[0x23]&1)) continue; + XBuf[x + y*256] = color | 128; + } + ++screenbegin; + } + } +} + void FCEU_PutImage(void) { #ifdef SHOWFPS ShowFPS(); #endif -/* - // HACK to record input and/or frame counter into AVI - extern int frame_display, input_display, movcounter; - int movieDrawInAVI = FCEUI_AviIsRecording() && (frame_display || input_display) && movcounter; - if(movieDrawInAVI) - { - FCEU_DrawMovies(XBuf); - DrawMessage(); - } -*/ +#if 1 + RockmanBeams(); +#endif if(FCEUGameInfo->type==GIT_NSF) { DrawNSF(XBuf); @@ -162,8 +219,6 @@ else { /* Update AVI before overlay stuff is written */ - if(!FCEUI_EmulationPaused()) - FCEUI_AviVideoUpdate(XBuf); /* Save backbuffer before overlay stuff is written. */ if(!FCEUI_EmulationPaused()) memcpy(XBackBuf, XBuf, 256*256); @@ -180,7 +235,6 @@ FCEU_DrawNTSCControlBars(XBuf); FCEU_DrawRecordingStatus(XBuf); } -// if(!movieDrawInAVI) DrawMessage(); FCEU_DrawInput(XBuf); } @@ -193,7 +247,13 @@ vsprintf(errmsg,format,ap); va_end(ap); - howlong=180; + va_start(ap,format); + vfprintf(stderr, format, ap); + fprintf(stderr, "\n"); + va_end(ap); + + howlong=40; + //howlong=0; //DISABLE MESSAGES extern int movcounter; movcounter=0; diff -bB -NaHudr fceu-0.98.15-src/src/x6502.c fceu/src/x6502.c --- fceu-0.98.15-src/src/x6502.c 2006-04-11 10:43:18.000000000 +0300 +++ fceu/src/x6502.c 2006-04-11 10:43:11.000000000 +0300 @@ -21,15 +21,14 @@ #include #include "types.h" -#include "x6502.h" #include "fceu.h" #include "sound.h" -X6502 X; +#include "bisqbot.hh" -#ifdef FCEUDEF_DEBUGGER -void (*X6502_Run)(int32 cycles); -#endif +#include "x6502.h" + +X6502 X; uint32 timestamp; void FP_FASTAPASS(1) (*MapIRQHook)(int a); @@ -55,6 +54,27 @@ timestamp+=__x; \ } +static void TrackWrite(unsigned A, unsigned char V) +{ +#if 0 + const char*name=0; + switch(A) + { + case 0x37: name="CurrentStripeEndType"; break; + /* + case 0x30: name="place";break; + case 0x50: name="scene";break; + case 0x51: name="screen";break; + // case 0x52: name="52";break; - related to scrolling + // case 0x53: name="xscroll";break; + case 0x82: name="time";break; + */ + } + if(name) + fprintf(stderr,"%04X(%s) <- %02X\n", A,name, V); +#endif +} + static INLINE uint8 RdMemNorm(unsigned int A) { return(_DB=ARead[A](A)); @@ -62,6 +82,7 @@ static INLINE void WrMemNorm(unsigned int A, uint8 V) { + TrackWrite(A,V); BWrite[A](A,V); } @@ -80,6 +102,7 @@ static INLINE void WrMemHook(unsigned int A, uint8 V) { + TrackWrite(A,V); if(X.WriteHook) X.WriteHook(&X,A,V); else @@ -97,6 +120,7 @@ static INLINE void WrRAMFast(unsigned int A, uint8 V) { + TrackWrite(A,V); RAM[A]=V; } @@ -108,6 +132,7 @@ void FASTAPASS(2) X6502_DMW(uint32 A, uint8 V) { + TrackWrite(A,V); ADDCYC(1); BWrite[A](A,V); } @@ -398,7 +422,6 @@ _IRQlow|=FCEU_IQNMI2; } -#ifdef FCEUDEF_DEBUGGER /* Called from debugger. */ void FCEUI_NMI(void) { @@ -410,6 +433,11 @@ _IRQlow|=FCEU_IQTEMP; } +void X6502_Reset(void) +{ + _IRQlow=FCEU_IQRESET; +} + void FCEUI_GetIVectors(uint16 *reset, uint16 *irq, uint16 *nmi) { fceuindbg=1; @@ -422,13 +450,6 @@ *irq|=RdMemNorm(0xFFFF)<<8; fceuindbg=0; } -static int debugmode; -#endif - -void X6502_Reset(void) -{ - _IRQlow=FCEU_IQRESET; -} void X6502_Init(void) { @@ -437,11 +458,11 @@ memset((void *)&X,0,sizeof(X)); for(x=0;x<256;x++) if(!x) ZNTable[x]=Z_FLAG; - else if(x&0x80) ZNTable[x]=N_FLAG; + else if (x&0x80) ZNTable[x]=N_FLAG; else ZNTable[x]=0; - #ifdef FCEUDEF_DEBUGGER +#ifdef FCEUDEF_DEBUGGER X6502_Debug(0,0,0); - #endif +#endif } void X6502_Power(void) @@ -452,6 +473,7 @@ } #ifdef FCEUDEF_DEBUGGER +static int debugmode; static void X6502_RunDebug(int32 cycles) { #define RdRAM RdMemHook @@ -571,13 +593,10 @@ #undef WrRAM #undef RdMem #undef WrMem - } +#endif -static void X6502_RunNormal(int32 cycles) -#else void X6502_Run(int32 cycles) -#endif { #define RdRAM RdRAMFast #define WrRAM WrRAMFast @@ -662,14 +681,19 @@ } _PI=_P; - b1=RdMem(_PC); - ADDCYC(CycTable[b1]); + BisqBotMonitorCPU(_PC, X.A, X.X, X.Y); + b1=RdMem(_PC); + //printf("$%04x, $%02x\n",_PC,b1); + ADDCYC(CycTable[b1]); + //PPUHack(); temp=_tcount; _tcount=0; + if(MapIRQHook) MapIRQHook(temp); FCEU_SoundCPUHook(temp); + //printf("%04x\n",X.PC); X.PC=pbackus; _PC++;