User Tools

Site Tools


chumby

Stuff you'll need

  1. Chumby One - faster than the classic chumby
  2. Other computer you can use as a terminal

What I did!

Chumbify

Bunnie visited and gave us 2 chumby ones. one had no working wifi. the other one seemed to be OK. Using the OK one

Activated it. works OK

Turn on SSHD

Turn on sshd

ssh in as root, and turn off the control panel (to free up some memory and cycles)

stop_control_panel

Then make the sshd 'permanent'

touch /psp/start_sshd

Install Dev

Download & install silvermoon dev environment. Chmod +x the shell script and run it. This will take a bit

Tried to install/port latest SDL

Download the latest SDL tarball (we used 1.2.14)

run:

./configure  --enable-video-fbcon --disable-video-x11 --disable-dga --disable-esd --disable-oss --disable-pulseaudio --disable-joystick --disable-cdrom --without-x
make
mount -oremount,rw /
make install

Ran the test programs. Nothing happened. Kinda disappointed. So now going to backtrack

Try ChumbyQuake SDL port

Download chumby_quake to /mnt/storage and uncompress.

Make my own 'bitops.h' file from kludged together stuff

Go into the SDL directory and run

./configure --enable-alsa --enable-static --disable-oss --disable-esd --disable-pulseaudio --disable-video-x11 --enable-video-fbcon --disable-alsa-shared
make
make install

run tests. Nothing happens on the display but it -says- it found stuff. Disappointed. backtrack some more

Try chumbyquake

Download chumby quake bins and stick on USB key. plug it in and run from command line. Had to use

export SDL_NOMOUSE=1 

to stop mouse complaints Audio is fine, pressing the top button makes the 'gun' fire. But no video. Disappointed. backtrack some more

WTF is the frame buffer

bunnie suggests maybe the framebuffers are swapped (seems there are two) so tried

dd if=/dev/zero of=/dev/fb0

This wipes the screen (yay) so at least we know that the framebuffer is writable and is at /dev/fb0

Now try to run quake again. Notice that the top line is the only thing that displays (easier to see this if you wipe the screen)

Look at old SDL tests - graywin, for example, 'works' but only displays top line. So its not the quake code and is something either in the library/driver/kernel

Why is FB broken?

OK so looking around some more, it looks like this has come up before - and the answer is the kernel is buggy (?)

So try to install new kernel with composite vid support (hey i might need it eventually) by running the script on the forums

Realise a little too late that this is going to cause the chumby to 'brick' due to the wifi driver having incompatibilities. eit.

Unbrick chumby

Follow the USB update instructions to get the kernel back. Hey its a good thing to know anyways!

Really fix the FB

So finally I use my reading comprehension to realize that really whats broken is just needing to poke the chip to tell it which FB to use. Following this helpful post I run

wget http://files.chumby.com/hacks/switch_output
chmod +x switch_output

stop_control_panel
/mnt/storage/switch_output -l
switch_fb.sh 0

Try chumbyquake again

It runs! But it looks like some colorspace swappage is going on. I'll fix it later

Also tried the old SDL tests and they're working good now. yay.

Port SIemu

The 'easiest' emulator to port by far is SIemu. Its written in straight-up C, well documented and uses SDL as an underpinning.

  • Had problem with audio so commented out all the Audio procedures.
  • Complained about screen size so changes graphics.h to use 320x240 screen
  • Runs!

OK much success. Now to fix it so audio works. SDL doesnt seem to know about audio device - perhaps we need to install ALSA lib first?

Install ALSA

We configure/make'd ALSA

Build SDL with OSS

Trying to build SDL with ALSA (unpatched) didnt really work but then but then we realized that OSS is already in there so many we should just rebuild SDL?

Built SDL with following flags

./configure --disable-esd --disable-pulseaudio --disable-video-x11 --enable-video-fbcon --disable-alsa

compiled cleanly, ran test/loopwave and it worked! yay!

Rebuild SIemu

unpatched the audio and run it with new SDL that has audio. works! and keyboard works too! kpow kpow. much success.

(note used 'original' SDL not chumbyquake SDL!)

download stella & ./configure

Grab the source, try to build

chumby:/mnt/storage/stella/stella-3.0# ./configure
Running Stella configure...
./configure: line 341: printf: not found
g++
./configure: line 363: printf: not found
4.3.3, ok
./configure: line 493: printf: not found
linux-gnu
./configure: line 504: printf: not found
none found!

OK, grab an updated busybox and install it

Now printf exists, try again

 ./configure --disable-debugger --disable-cheats   
make

but gcc dies :(

g++ -Wp,-MMD,"src/emucore/.deps/PropsSet.d",-MQ,"src/emucore/PropsSet.o",-MP -O2 -Wall -Wno-multichar -Wunused -fno-rtti -fomit-frame-pointer  -DUNIX -DBSPF_UNIX -DHAVE_GETTIMEOFDAY -DHAVE_INTTYPES -DWINDOWED_SUPPORT -DSOUND_SUPPORT -DSNAPSHOT_SUPPORT -DJOYSTICK_SUPPORT  -Isrc/emucore -Isrc/emucore/m6502/src -Isrc/emucore/m6502/src/bspf/src -Isrc/common -Isrc/gui -I/usr/local/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -Isrc/unix -c src/emucore/PropsSet.cxx -o src/emucore/PropsSet.o
g++: Internal error: Killed (program cc1plus)
Please submit a full bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
make: *** [src/emucore/PropsSet.o] Error 1

dmesg says we're out of memory!

[  809.010000] ntpd invoked oom-killer: gfp_mask=0x1201d2, order=0, oomkilladj=0
[  809.010000] [<c02ff9bc>] (dump_stack+0x0/0x14) from [<c00777f4>] (oom_kill_process+0x5c/0x1d8)
[  809.020000] [<c0077798>] (oom_kill_process+0x0/0x1d8) from [<c0077f38>] (out_of_memory+0x1dc/0x254)
[  809.030000]  r8:c2aac000 r7:c0445858 r6:000001be r5:c3dec900 r4:c2a68600
[  809.040000] [<c0077d5c>] (out_of_memory+0x0/0x254) from [<c007ab98>] (__alloc_pages_internal+0x300/0x3bc)
[  809.050000] [<c007a898>] (__alloc_pages_internal+0x0/0x3bc) from [<c007cd6c>] (__do_page_cache_readahead+0x118/0x264)
[  809.060000] [<c007cc54>] (__do_page_cache_readahead+0x0/0x264) from [<c007cf24>] (do_page_cache_readahead+0x6c/0x74)
[  809.070000] [<c007ceb8>] (do_page_cache_readahead+0x0/0x74) from [<c0075168>] (filemap_fault+0x1d8/0x448)
[  809.080000]  r7:00000000 r6:c2aac000 r5:00000000 r4:00000000
[  809.080000] [<c0074f90>] (filemap_fault+0x0/0x448) from [<c0084958>] (__do_fault+0x54/0x488)
[  809.090000] [<c0084904>] (__do_fault+0x0/0x488) from [<c0085bf0>] (handle_mm_fault+0x2f4/0x7c0)
[  809.100000] [<c00858fc>] (handle_mm_fault+0x0/0x7c0) from [<c002da64>] (do_page_fault+0xf0/0x238)
[  809.110000] [<c002d974>] (do_page_fault+0x0/0x238) from [<c002dc34>] (do_translation_fault+0x18/0x80)
[  809.120000] [<c002dc1c>] (do_translation_fault+0x0/0x80) from [<c0026254>] (do_PrefetchAbort+0x18/0x1c)
[  809.130000]  r7:00000000 r6:00053790 r5:00052acc r4:ffffffff
[  809.140000] [<c002623c>] (do_PrefetchAbort+0x0/0x1c) from [<c0026dc0>] (ret_from_exception+0x0/0x10)
[  809.150000] Exception stack(0xc2aadfb0 to 0xc2aadff8)
[  809.150000] dfa0:                                     00000000 00052974 000002f6 000002f7 
[  809.160000] dfc0: 00000000 00052acc 00053790 00000000 00053794 0004ecfc 0005234c bed1bb2c 
[  809.170000] dfe0: 00008001 bed1bb00 0002859c 00017608 60000010 ffffffff                   
[  809.180000] Mem-info:
[  809.180000] Normal per-cpu:
[  809.180000] CPU    0: hi:   18, btch:   3 usd:  10
[  809.190000] Active_anon:5856 active_file:40 inactive_anon:5862
[  809.190000]  inactive_file:112 unevictable:0 dirty:0 writeback:0 unstable:0
[  809.190000]  free:285 slab:767 mapped:26 pagetables:110 bounce:0
[  809.210000] Normal free:1140kB min:1016kB low:1268kB high:1524kB active_anon:23424kB inactive_anon:23448kB active_file:160kB inactive_file:448kB unevictable:0kB present:65024kB pages_scanned:14 all_unreclaimable? no
[  809.230000] lowmem_reserve[]: 0 0
[  809.230000] Normal: 23*4kB 7*8kB 0*16kB 1*32kB 1*64kB 1*128kB 1*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 1140kB
[  809.240000] 377 total pagecache pages
[  809.240000] 0 pages in swap cache
[  809.250000] Swap cache stats: add 0, delete 0, find 0/0
[  809.250000] Free swap  = 0kB
[  809.250000] Total swap = 0kB
[  809.260000] 16384 pages of RAM
[  809.270000] 423 free pages
[  809.270000] 2647 reserved pages
[  809.270000] 630 slab pages
[  809.270000] 108 pages shared
[  809.280000] 0 pages swap cached
[  809.280000] Out of memory: kill process 2683 (g++) score 446 or a child
[  809.290000] Killed process 2684 (cc1plus)

try..

if [ ! -e /mnt/storage/swap ]
then
    echo "Making 256M swapfile"
    dd if=/dev/zero of=/mnt/storage/swap bs=1M count=256
    mkswap /mnt/storage/swap
fi
swapon /mnt/storage/swap

done and…sucess!

4455436625_859aa97392.jpg

good news: you can play ROMs if you specify them on the command line. badnews: the ROM launcher not only doesnt work, but if it tries to run it gives some assert error and then doesnt 'release' the SDL library (or *something*) and it doesnt really work until reboot. :(

commented out the Assert in Rect.h and it all works now - this should of course be fixed but hey!

The ^C problem is discussed here printf!

fix colormap

R and B are swapped in SDL. whyso? Uncommented DEBUG_FBCON in SDL, got this

        xres: 320
        yres: 240
        xres_virtual: 320
        yres_virtual: 240
        xoffset: 0
        yoffset: 0
        bits_per_pixel: 16
        grayscale: 0
        nonstd: 0
        activate: 0
        height: 240
        width: 320
        accel_flags: 0
        pixclock: 154000
        left_margin: 5
        right_margin: 4
        upper_margin: 3
        lower_margin: 3
        hsync_len: 40
        vsync_len: 2
        sync: 0
        vmode: 0
        red: 5/0
        green: 6/5
        blue: 5/11
        alpha: 0/0
        

which is fetched from SDL_fbvideo.c "ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo)" (in a few places)

So it seems like the FB driver is reporting the wrong thing i guess we could just hack it..?

Edited SDL_fbvideo.c, line #595 and then #1038

        // BEGIN TERRIBLE MEME HACK                                             
        uint32_t tempoffset = vinfo.red.offset;                                 
        vinfo.red.offset = vinfo.blue.offset;                        
        vinfo.blue.offset = tempoffset;                            
        // END TERRIBLE MEME HACK 
        

but…it works! should probably fix this 'upstream' somehow

FCEUX

OK so now that stella is sweet, we'll go up one level to NES emulators. FCEUX is SDL-based and works well. Lets do that.

First we need to install python, grab this precompiled tgz and uncompress it (we ran out of space in / so it went into /mnt/storage/ and then edit your path or ln -s)

Next we will need to install SCons, download the latest source tarball we used 2.00 Once unpacked, go into the directory and type "python setup.py install". If it complains that it cant find the pyconfig.h you can create it using this (which is from our desktop linux box but hey it works):

/* pyconfig.h.  Generated from pyconfig.h.in by configure.  */
/* pyconfig.h.in.  Generated from configure.in by autoheader.  */


#ifndef Py_PYCONFIG_H
#define Py_PYCONFIG_H


/* Define for AIX if your compiler is a genuine IBM xlC/xlC_r and you want
   support for AIX C++ shared extension modules. */
/* #undef AIX_GENUINE_CPLUSPLUS */

/* Define this if you have AtheOS threads. */
/* #undef ATHEOS_THREADS */

/* Define this if you have BeOS threads. */
/* #undef BEOS_THREADS */

/* Define if you have the Mach cthreads package */
/* #undef C_THREADS */

/* Define if --enable-ipv6 is specified */
#define ENABLE_IPV6 1

/* Define if getpgrp() must be called as getpgrp(0). */
/* #undef GETPGRP_HAVE_ARG */

/* Define if gettimeofday() does not have second (timezone) argument This is
   the case on Motorola V4 (R40V4.2) */
/* #undef GETTIMEOFDAY_NO_TZ */

/* Define to 1 if you have the `acosh' function. */
#define HAVE_ACOSH 1

/* struct addrinfo (netdb.h) */
#define HAVE_ADDRINFO 1

/* Define to 1 if you have the `alarm' function. */
#define HAVE_ALARM 1

/* Define this if your time.h defines altzone. */
/* #undef HAVE_ALTZONE */

/* Define to 1 if you have the `asinh' function. */
#define HAVE_ASINH 1

/* Define to 1 if you have the <asm/types.h> header file. */
#define HAVE_ASM_TYPES_H 1

/* Define to 1 if you have the `atanh' function. */
#define HAVE_ATANH 1

/* Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3))) */
/* #undef HAVE_ATTRIBUTE_FORMAT_PARSETUPLE */

/* Define to 1 if you have the `bind_textdomain_codeset' function. */
#define HAVE_BIND_TEXTDOMAIN_CODESET 1

/* Define to 1 if you have the <bluetooth/bluetooth.h> header file. */
#define HAVE_BLUETOOTH_BLUETOOTH_H 1

/* Define to 1 if you have the <bluetooth.h> header file. */
/* #undef HAVE_BLUETOOTH_H */

/* Define if nice() returns success/failure instead of the new priority. */
/* #undef HAVE_BROKEN_NICE */

/* Define if poll() sets errno on invalid file descriptors. */
/* #undef HAVE_BROKEN_POLL */

/* Define if the Posix semaphores do not work on your system */
/* #undef HAVE_BROKEN_POSIX_SEMAPHORES */

/* Define if pthread_sigmask() does not work on your system. */
/* #undef HAVE_BROKEN_PTHREAD_SIGMASK */

/* Define this if you have the type _Bool. */
#define HAVE_C99_BOOL 1

/* Define to 1 if you have the `chflags' function. */
/* #undef HAVE_CHFLAGS */

/* Define to 1 if you have the `chown' function. */
#define HAVE_CHOWN 1

/* Define if you have the 'chroot' function. */
#define HAVE_CHROOT 1

/* Define to 1 if you have the `clock' function. */
#define HAVE_CLOCK 1

/* Define to 1 if you have the `confstr' function. */
#define HAVE_CONFSTR 1

/* Define to 1 if you have the <conio.h> header file. */
/* #undef HAVE_CONIO_H */

/* Define to 1 if you have the `copysign' function. */
#define HAVE_COPYSIGN 1

/* Define to 1 if you have the `ctermid' function. */
#define HAVE_CTERMID 1

/* Define if you have the 'ctermid_r' function. */
/* #undef HAVE_CTERMID_R */

/* Define to 1 if you have the <curses.h> header file. */
#define HAVE_CURSES_H 1

/* Define if you have the 'is_term_resized' function. */
#define HAVE_CURSES_IS_TERM_RESIZED 1

/* Define if you have the 'resizeterm' function. */
#define HAVE_CURSES_RESIZETERM 1

/* Define if you have the 'resize_term' function. */
#define HAVE_CURSES_RESIZE_TERM 1

/* Define to 1 if you have the declaration of `isfinite', and to 0 if you
   don't. */
#define HAVE_DECL_ISFINITE 1

/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't.
   */
#define HAVE_DECL_ISINF 1

/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't.
   */
#define HAVE_DECL_ISNAN 1

/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
   */
/* #undef HAVE_DECL_TZNAME */

/* Define to 1 if you have the device macros. */
#define HAVE_DEVICE_MACROS 1

/* Define if we have /dev/ptc. */
/* #undef HAVE_DEV_PTC */

/* Define if we have /dev/ptmx. */
#define HAVE_DEV_PTMX 1

/* Define to 1 if you have the <direct.h> header file. */
/* #undef HAVE_DIRECT_H */

/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
   */
#define HAVE_DIRENT_H 1

/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1

/* Define to 1 if you have the `dlopen' function. */
#define HAVE_DLOPEN 1

/* Define to 1 if you have the `dup2' function. */
#define HAVE_DUP2 1

/* Defined when any dynamic module loading is enabled. */
#define HAVE_DYNAMIC_LOADING 1

/* Define if you have the 'epoll' functions. */
#define HAVE_EPOLL 1

/* Define to 1 if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1

/* Define to 1 if you have the `execv' function. */
#define HAVE_EXECV 1

/* Define to 1 if you have the `expm1' function. */
#define HAVE_EXPM1 1

/* Define if you have the 'fchdir' function. */
#define HAVE_FCHDIR 1

/* Define to 1 if you have the `fchmod' function. */
#define HAVE_FCHMOD 1

/* Define to 1 if you have the `fchown' function. */
#define HAVE_FCHOWN 1

/* Define to 1 if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H 1

/* Define if you have the 'fdatasync' function. */
#define HAVE_FDATASYNC 1

/* Define to 1 if you have the `finite' function. */
#define HAVE_FINITE 1

/* Define if you have the 'flock' function. */
#define HAVE_FLOCK 1

/* Define to 1 if you have the `fork' function. */
#define HAVE_FORK 1

/* Define to 1 if you have the `forkpty' function. */
#define HAVE_FORKPTY 1

/* Define to 1 if you have the `fpathconf' function. */
#define HAVE_FPATHCONF 1

/* Define to 1 if you have the `fseek64' function. */
/* #undef HAVE_FSEEK64 */

/* Define to 1 if you have the `fseeko' function. */
#define HAVE_FSEEKO 1

/* Define to 1 if you have the `fstatvfs' function. */
#define HAVE_FSTATVFS 1

/* Define if you have the 'fsync' function. */
#define HAVE_FSYNC 1

/* Define to 1 if you have the `ftell64' function. */
/* #undef HAVE_FTELL64 */

/* Define to 1 if you have the `ftello' function. */
#define HAVE_FTELLO 1

/* Define to 1 if you have the `ftime' function. */
#define HAVE_FTIME 1

/* Define to 1 if you have the `ftruncate' function. */
#define HAVE_FTRUNCATE 1

/* Define to 1 if you have the `gai_strerror' function. */
#define HAVE_GAI_STRERROR 1

/* Define if you have the getaddrinfo function. */
#define HAVE_GETADDRINFO 1

/* Define to 1 if you have the `getcwd' function. */
#define HAVE_GETCWD 1

/* Define this if you have flockfile(), getc_unlocked(), and funlockfile() */
#define HAVE_GETC_UNLOCKED 1

/* Define to 1 if you have the `getgroups' function. */
#define HAVE_GETGROUPS 1

/* Define to 1 if you have the `gethostbyname' function. */
/* #undef HAVE_GETHOSTBYNAME */

/* Define this if you have some version of gethostbyname_r() */
#define HAVE_GETHOSTBYNAME_R 1

/* Define this if you have the 3-arg version of gethostbyname_r(). */
/* #undef HAVE_GETHOSTBYNAME_R_3_ARG */

/* Define this if you have the 5-arg version of gethostbyname_r(). */
/* #undef HAVE_GETHOSTBYNAME_R_5_ARG */

/* Define this if you have the 6-arg version of gethostbyname_r(). */
#define HAVE_GETHOSTBYNAME_R_6_ARG 1

/* Define to 1 if you have the `getitimer' function. */
#define HAVE_GETITIMER 1

/* Define to 1 if you have the `getloadavg' function. */
#define HAVE_GETLOADAVG 1

/* Define to 1 if you have the `getlogin' function. */
#define HAVE_GETLOGIN 1

/* Define to 1 if you have the `getnameinfo' function. */
#define HAVE_GETNAMEINFO 1

/* Define if you have the 'getpagesize' function. */
#define HAVE_GETPAGESIZE 1

/* Define to 1 if you have the `getpeername' function. */
#define HAVE_GETPEERNAME 1

/* Define to 1 if you have the `getpgid' function. */
#define HAVE_GETPGID 1

/* Define to 1 if you have the `getpgrp' function. */
#define HAVE_GETPGRP 1

/* Define to 1 if you have the `getpid' function. */
#define HAVE_GETPID 1

/* Define to 1 if you have the `getpriority' function. */
#define HAVE_GETPRIORITY 1

/* Define to 1 if you have the `getpwent' function. */
#define HAVE_GETPWENT 1

/* Define to 1 if you have the `getsid' function. */
#define HAVE_GETSID 1

/* Define to 1 if you have the `getspent' function. */
#define HAVE_GETSPENT 1

/* Define to 1 if you have the `getspnam' function. */
#define HAVE_GETSPNAM 1

/* Define to 1 if you have the `gettimeofday' function. */
#define HAVE_GETTIMEOFDAY 1

/* Define to 1 if you have the `getwd' function. */
#define HAVE_GETWD 1

/* Define to 1 if you have the <grp.h> header file. */
#define HAVE_GRP_H 1

/* Define if you have the 'hstrerror' function. */
#define HAVE_HSTRERROR 1

/* Define to 1 if you have the `hypot' function. */
#define HAVE_HYPOT 1

/* Define to 1 if you have the <ieeefp.h> header file. */
/* #undef HAVE_IEEEFP_H */

/* Define if you have the 'inet_aton' function. */
#define HAVE_INET_ATON 1

/* Define if you have the 'inet_pton' function. */
#define HAVE_INET_PTON 1

/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1

/* Define to 1 if you have the <io.h> header file. */
/* #undef HAVE_IO_H */

/* Define to 1 if you have the `kill' function. */
#define HAVE_KILL 1

/* Define to 1 if you have the `killpg' function. */
#define HAVE_KILLPG 1

/* Define if you have the 'kqueue' functions. */
/* #undef HAVE_KQUEUE */

/* Define to 1 if you have the <langinfo.h> header file. */
#define HAVE_LANGINFO_H 1

/* Defined to enable large file support when an off_t is bigger than a long
   and long long is available and at least as big as an off_t. You may need to
   add some flags for configuration and compilation to enable this mode. (For
   Solaris and Linux, the necessary defines are already defined.) */
#define HAVE_LARGEFILE_SUPPORT 1

/* Define to 1 if you have the `lchflags' function. */
/* #undef HAVE_LCHFLAGS */

/* Define to 1 if you have the `lchmod' function. */
/* #undef HAVE_LCHMOD */

/* Define to 1 if you have the `lchown' function. */
#define HAVE_LCHOWN 1

/* Define to 1 if you have the `dl' library (-ldl). */
#define HAVE_LIBDL 1

/* Define to 1 if you have the `dld' library (-ldld). */
/* #undef HAVE_LIBDLD */

/* Define to 1 if you have the `ieee' library (-lieee). */
/* #undef HAVE_LIBIEEE */

/* Define to 1 if you have the <libintl.h> header file. */
#define HAVE_LIBINTL_H 1

/* Define if you have the readline library (-lreadline). */
#define HAVE_LIBREADLINE 1

/* Define to 1 if you have the `resolv' library (-lresolv). */
/* #undef HAVE_LIBRESOLV */

/* Define to 1 if you have the <libutil.h> header file. */
/* #undef HAVE_LIBUTIL_H */

/* Define if you have the 'link' function. */
#define HAVE_LINK 1

/* Define to 1 if you have the <linux/netlink.h> header file. */
#define HAVE_LINUX_NETLINK_H 1

/* Define to 1 if you have the <linux/tipc.h> header file. */
#define HAVE_LINUX_TIPC_H 1

/* Define to 1 if you have the `log1p' function. */
#define HAVE_LOG1P 1

/* Define this if you have the type long double. */
#define HAVE_LONG_DOUBLE 1

/* Define this if you have the type long long. */
#define HAVE_LONG_LONG 1

/* Define to 1 if you have the `lstat' function. */
#define HAVE_LSTAT 1

/* Define this if you have the makedev macro. */
#define HAVE_MAKEDEV 1

/* Define to 1 if you have the `memmove' function. */
#define HAVE_MEMMOVE 1

/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1

/* Define to 1 if you have the `mkfifo' function. */
#define HAVE_MKFIFO 1

/* Define to 1 if you have the `mknod' function. */
#define HAVE_MKNOD 1

/* Define to 1 if you have the `mktime' function. */
#define HAVE_MKTIME 1

/* Define to 1 if you have the `mremap' function. */
#define HAVE_MREMAP 1

/* Define to 1 if you have the <ncurses.h> header file. */
#define HAVE_NCURSES_H 1

/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
/* #undef HAVE_NDIR_H */

/* Define to 1 if you have the <netpacket/packet.h> header file. */
#define HAVE_NETPACKET_PACKET_H 1

/* Define to 1 if you have the `nice' function. */
#define HAVE_NICE 1

/* Define to 1 if you have the `openpty' function. */
#define HAVE_OPENPTY 1

/* Define if compiling using MacOS X 10.5 SDK or later. */
/* #undef HAVE_OSX105_SDK */

/* Define to 1 if you have the `pathconf' function. */
#define HAVE_PATHCONF 1

/* Define to 1 if you have the `pause' function. */
#define HAVE_PAUSE 1

/* Define to 1 if you have the `plock' function. */
/* #undef HAVE_PLOCK */

/* Define to 1 if you have the `poll' function. */
#define HAVE_POLL 1

/* Define to 1 if you have the <poll.h> header file. */
#define HAVE_POLL_H 1

/* Define to 1 if you have the <process.h> header file. */
/* #undef HAVE_PROCESS_H */

/* Define if your compiler supports function prototype */
#define HAVE_PROTOTYPES 1

/* Define if you have GNU PTH threads. */
/* #undef HAVE_PTH */

/* Defined for Solaris 2.6 bug in pthread header. */
/* #undef HAVE_PTHREAD_DESTRUCTOR */

/* Define to 1 if you have the <pthread.h> header file. */
#define HAVE_PTHREAD_H 1

/* Define to 1 if you have the `pthread_init' function. */
/* #undef HAVE_PTHREAD_INIT */

/* Define to 1 if you have the `pthread_sigmask' function. */
#define HAVE_PTHREAD_SIGMASK 1

/* Define to 1 if you have the <pty.h> header file. */
#define HAVE_PTY_H 1

/* Define to 1 if you have the `putenv' function. */
#define HAVE_PUTENV 1

/* Define to 1 if you have the `readlink' function. */
#define HAVE_READLINK 1

/* Define to 1 if you have the `realpath' function. */
#define HAVE_REALPATH 1

/* Define if you have readline 2.1 */
#define HAVE_RL_CALLBACK 1

/* Define if you can turn off readline's signal handling. */
#define HAVE_RL_CATCH_SIGNAL 1

/* Define if you have readline 2.2 */
#define HAVE_RL_COMPLETION_APPEND_CHARACTER 1

/* Define if you have readline 4.0 */
#define HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK 1

/* Define if you have readline 4.2 */
#define HAVE_RL_COMPLETION_MATCHES 1

/* Define if you have readline 4.0 */
#define HAVE_RL_PRE_INPUT_HOOK 1

/* Define to 1 if you have the `select' function. */
#define HAVE_SELECT 1

/* Define to 1 if you have the `setegid' function. */
#define HAVE_SETEGID 1

/* Define to 1 if you have the `seteuid' function. */
#define HAVE_SETEUID 1

/* Define to 1 if you have the `setgid' function. */
#define HAVE_SETGID 1

/* Define if you have the 'setgroups' function. */
#define HAVE_SETGROUPS 1

/* Define to 1 if you have the `setitimer' function. */
#define HAVE_SETITIMER 1

/* Define to 1 if you have the `setlocale' function. */
#define HAVE_SETLOCALE 1

/* Define to 1 if you have the `setpgid' function. */
#define HAVE_SETPGID 1

/* Define to 1 if you have the `setpgrp' function. */
#define HAVE_SETPGRP 1

/* Define to 1 if you have the `setregid' function. */
#define HAVE_SETREGID 1

/* Define to 1 if you have the `setreuid' function. */
#define HAVE_SETREUID 1

/* Define to 1 if you have the `setsid' function. */
#define HAVE_SETSID 1

/* Define to 1 if you have the `setuid' function. */
#define HAVE_SETUID 1

/* Define to 1 if you have the `setvbuf' function. */
#define HAVE_SETVBUF 1

/* Define to 1 if you have the <shadow.h> header file. */
#define HAVE_SHADOW_H 1

/* Define to 1 if you have the `sigaction' function. */
#define HAVE_SIGACTION 1

/* Define to 1 if you have the `siginterrupt' function. */
#define HAVE_SIGINTERRUPT 1

/* Define to 1 if you have the <signal.h> header file. */
#define HAVE_SIGNAL_H 1

/* Define to 1 if you have the `sigrelse' function. */
#define HAVE_SIGRELSE 1

/* Define to 1 if you have the `snprintf' function. */
#define HAVE_SNPRINTF 1

/* Define if sockaddr has sa_len member */
/* #undef HAVE_SOCKADDR_SA_LEN */

/* struct sockaddr_storage (sys/socket.h) */
#define HAVE_SOCKADDR_STORAGE 1

/* Define if you have the 'socketpair' function. */
#define HAVE_SOCKETPAIR 1

/* Define if your compiler provides ssize_t */
#define HAVE_SSIZE_T 1

/* Define to 1 if you have the `statvfs' function. */
#define HAVE_STATVFS 1

/* Define if you have struct stat.st_mtim.tv_nsec */
#define HAVE_STAT_TV_NSEC 1

/* Define if you have struct stat.st_mtimensec */
/* #undef HAVE_STAT_TV_NSEC2 */

/* Define if your compiler supports variable length function prototypes (e.g.
   void fprintf(FILE *, char *, ...);) *and* <stdarg.h> */
#define HAVE_STDARG_PROTOTYPES 1

/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1

/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1

/* Define to 1 if you have the `strdup' function. */
#define HAVE_STRDUP 1

/* Define to 1 if you have the `strftime' function. */
#define HAVE_STRFTIME 1

/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1

/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1

/* Define to 1 if you have the <stropts.h> header file. */
#define HAVE_STROPTS_H 1

/* Define to 1 if `st_birthtime' is member of `struct stat'. */
/* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */

/* Define to 1 if `st_blksize' is member of `struct stat'. */
#define HAVE_STRUCT_STAT_ST_BLKSIZE 1

/* Define to 1 if `st_blocks' is member of `struct stat'. */
#define HAVE_STRUCT_STAT_ST_BLOCKS 1

/* Define to 1 if `st_flags' is member of `struct stat'. */
/* #undef HAVE_STRUCT_STAT_ST_FLAGS */

/* Define to 1 if `st_gen' is member of `struct stat'. */
/* #undef HAVE_STRUCT_STAT_ST_GEN */

/* Define to 1 if `st_rdev' is member of `struct stat'. */
#define HAVE_STRUCT_STAT_ST_RDEV 1

/* Define to 1 if `tm_zone' is member of `struct tm'. */
#define HAVE_STRUCT_TM_TM_ZONE 1

/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use
   `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */
#define HAVE_ST_BLOCKS 1

/* Define if you have the 'symlink' function. */
#define HAVE_SYMLINK 1

/* Define to 1 if you have the `sysconf' function. */
#define HAVE_SYSCONF 1

/* Define to 1 if you have the <sysexits.h> header file. */
#define HAVE_SYSEXITS_H 1

/* Define to 1 if you have the <sys/audioio.h> header file. */
/* #undef HAVE_SYS_AUDIOIO_H */

/* Define to 1 if you have the <sys/bsdtty.h> header file. */
/* #undef HAVE_SYS_BSDTTY_H */

/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
   */
/* #undef HAVE_SYS_DIR_H */

/* Define to 1 if you have the <sys/epoll.h> header file. */
#define HAVE_SYS_EPOLL_H 1

/* Define to 1 if you have the <sys/event.h> header file. */
/* #undef HAVE_SYS_EVENT_H */

/* Define to 1 if you have the <sys/file.h> header file. */
#define HAVE_SYS_FILE_H 1

/* Define to 1 if you have the <sys/loadavg.h> header file. */
/* #undef HAVE_SYS_LOADAVG_H */

/* Define to 1 if you have the <sys/lock.h> header file. */
/* #undef HAVE_SYS_LOCK_H */

/* Define to 1 if you have the <sys/mkdev.h> header file. */
/* #undef HAVE_SYS_MKDEV_H */

/* Define to 1 if you have the <sys/modem.h> header file. */
/* #undef HAVE_SYS_MODEM_H */

/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
   */
/* #undef HAVE_SYS_NDIR_H */

/* Define to 1 if you have the <sys/param.h> header file. */
#define HAVE_SYS_PARAM_H 1

/* Define to 1 if you have the <sys/poll.h> header file. */
#define HAVE_SYS_POLL_H 1

/* Define to 1 if you have the <sys/resource.h> header file. */
#define HAVE_SYS_RESOURCE_H 1

/* Define to 1 if you have the <sys/select.h> header file. */
#define HAVE_SYS_SELECT_H 1

/* Define to 1 if you have the <sys/socket.h> header file. */
#define HAVE_SYS_SOCKET_H 1

/* Define to 1 if you have the <sys/statvfs.h> header file. */
#define HAVE_SYS_STATVFS_H 1

/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1

/* Define to 1 if you have the <sys/termio.h> header file. */
/* #undef HAVE_SYS_TERMIO_H */

/* Define to 1 if you have the <sys/times.h> header file. */
#define HAVE_SYS_TIMES_H 1

/* Define to 1 if you have the <sys/time.h> header file. */
#define HAVE_SYS_TIME_H 1

/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1

/* Define to 1 if you have the <sys/un.h> header file. */
#define HAVE_SYS_UN_H 1

/* Define to 1 if you have the <sys/utsname.h> header file. */
#define HAVE_SYS_UTSNAME_H 1

/* Define to 1 if you have the <sys/wait.h> header file. */
#define HAVE_SYS_WAIT_H 1

/* Define to 1 if you have the `tcgetpgrp' function. */
#define HAVE_TCGETPGRP 1

/* Define to 1 if you have the `tcsetpgrp' function. */
#define HAVE_TCSETPGRP 1

/* Define to 1 if you have the `tempnam' function. */
#define HAVE_TEMPNAM 1

/* Define to 1 if you have the <termios.h> header file. */
#define HAVE_TERMIOS_H 1

/* Define to 1 if you have the <term.h> header file. */
#define HAVE_TERM_H 1

/* Define to 1 if you have the <thread.h> header file. */
/* #undef HAVE_THREAD_H */

/* Define to 1 if you have the `timegm' function. */
#define HAVE_TIMEGM 1

/* Define to 1 if you have the `times' function. */
#define HAVE_TIMES 1

/* Define to 1 if you have the `tmpfile' function. */
#define HAVE_TMPFILE 1

/* Define to 1 if you have the `tmpnam' function. */
#define HAVE_TMPNAM 1

/* Define to 1 if you have the `tmpnam_r' function. */
#define HAVE_TMPNAM_R 1

/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
   `HAVE_STRUCT_TM_TM_ZONE' instead. */
#define HAVE_TM_ZONE 1

/* Define to 1 if you have the `truncate' function. */
#define HAVE_TRUNCATE 1

/* Define to 1 if you don't have `tm_zone' but do have the external array
   `tzname'. */
/* #undef HAVE_TZNAME */

/* Define this if you have tcl and TCL_UTF_MAX==6 */
/* #undef HAVE_UCS4_TCL */

/* Define to 1 if the system has the type `uintptr_t'. */
#define HAVE_UINTPTR_T 1

/* Define to 1 if you have the `uname' function. */
#define HAVE_UNAME 1

/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1

/* Define to 1 if you have the `unsetenv' function. */
#define HAVE_UNSETENV 1

/* Define if you have a useable wchar_t type defined in wchar.h; useable means
   wchar_t must be an unsigned type with at least 16 bits. (see
   Include/unicodeobject.h). */
/* #undef HAVE_USABLE_WCHAR_T */

/* Define to 1 if you have the `utimes' function. */
#define HAVE_UTIMES 1

/* Define to 1 if you have the <utime.h> header file. */
#define HAVE_UTIME_H 1

/* Define to 1 if you have the `wait3' function. */
#define HAVE_WAIT3 1

/* Define to 1 if you have the `wait4' function. */
#define HAVE_WAIT4 1

/* Define to 1 if you have the `waitpid' function. */
#define HAVE_WAITPID 1

/* Define if the compiler provides a wchar.h header file. */
#define HAVE_WCHAR_H 1

/* Define to 1 if you have the `wcscoll' function. */
#define HAVE_WCSCOLL 1

/* Define if tzset() actually switches the local timezone in a meaningful way.
   */
#define HAVE_WORKING_TZSET 1

/* Define if the zlib library has inflateCopy */
#define HAVE_ZLIB_COPY 1

/* Define to 1 if you have the `_getpty' function. */
/* #undef HAVE__GETPTY */

/* Define if you are using Mach cthreads directly under /include */
/* #undef HURD_C_THREADS */

/* Define if you are using Mach cthreads under mach / */
/* #undef MACH_C_THREADS */

/* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.
   */
/* #undef MAJOR_IN_MKDEV */

/* Define to 1 if `major', `minor', and `makedev' are declared in
   <sysmacros.h>. */
/* #undef MAJOR_IN_SYSMACROS */

/* Define if mvwdelch in curses.h is an expression. */
#define MVWDELCH_IS_EXPRESSION 1

/* Define to the address where bug reports for this package should be sent. */
/* #undef PACKAGE_BUGREPORT */

/* Define to the full name of this package. */
/* #undef PACKAGE_NAME */

/* Define to the full name and version of this package. */
/* #undef PACKAGE_STRING */

/* Define to the one symbol short name of this package. */
/* #undef PACKAGE_TARNAME */

/* Define to the version of this package. */
/* #undef PACKAGE_VERSION */

/* Defined if PTHREAD_SCOPE_SYSTEM supported. */
#define PTHREAD_SYSTEM_SCHED_SUPPORTED 1

/* Define to printf format modifier for Py_ssize_t */
#define PY_FORMAT_SIZE_T "z"

/* Define as the integral type used for Unicode representation. */
#define PY_UNICODE_TYPE unsigned long

/* Define if you want to build an interpreter with many run-time checks. */
/* #undef Py_DEBUG */

/* Defined if Python is built as a shared library. */
/* #undef Py_ENABLE_SHARED */

/* Define as the size of the unicode type. */
#define Py_UNICODE_SIZE 4

/* Define if you want to have a Unicode type. */
#define Py_USING_UNICODE 1

/* Define as the return type of signal handlers (`int' or `void'). */
#define RETSIGTYPE void

/* Define if setpgrp() must be called as setpgrp(0, 0). */
/* #undef SETPGRP_HAVE_ARG */

/* Define this to be extension of shared libraries (including the dot!). */
#define SHLIB_EXT ".so"

/* Define if i>>j for signed int i does not extend the sign bit when i < 0 */
/* #undef SIGNED_RIGHT_SHIFT_ZERO_FILLS */

/* The size of `double', as computed by sizeof. */
#define SIZEOF_DOUBLE 8

/* The size of `float', as computed by sizeof. */
#define SIZEOF_FLOAT 4

/* The size of `fpos_t', as computed by sizeof. */
#define SIZEOF_FPOS_T 16

/* The size of `int', as computed by sizeof. */
#define SIZEOF_INT 4

/* The size of `long', as computed by sizeof. */
#define SIZEOF_LONG 4

/* The size of `long double', as computed by sizeof. */
#define SIZEOF_LONG_DOUBLE 12

/* The size of `long long', as computed by sizeof. */
#define SIZEOF_LONG_LONG 8

/* The number of bytes in an off_t. */
#define SIZEOF_OFF_T 8

/* The size of `pid_t', as computed by sizeof. */
#define SIZEOF_PID_T 4

/* The number of bytes in a pthread_t. */
#define SIZEOF_PTHREAD_T 4

/* The size of `short', as computed by sizeof. */
#define SIZEOF_SHORT 2

/* The size of `size_t', as computed by sizeof. */
#define SIZEOF_SIZE_T 4

/* The number of bytes in a time_t. */
#define SIZEOF_TIME_T 4

/* The size of `uintptr_t', as computed by sizeof. */
#define SIZEOF_UINTPTR_T 4

/* The size of `void *', as computed by sizeof. */
#define SIZEOF_VOID_P 4

/* The size of `wchar_t', as computed by sizeof. */
#define SIZEOF_WCHAR_T 4

/* The size of `_Bool', as computed by sizeof. */
#define SIZEOF__BOOL 1

/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1

/* Define if you can safely include both <sys/select.h> and <sys/time.h>
   (which you can't on SCO ODT 3.0). */
#define SYS_SELECT_WITH_SYS_TIME 1

/* Define if tanh(-0.) is -0., or if platform doesn't have signed zeros */
#define TANH_PRESERVES_ZERO_SIGN 1

/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1

/* Define to 1 if your <sys/time.h> declares `struct tm'. */
/* #undef TM_IN_SYS_TIME */

/* Define if you want to use MacPython modules on MacOSX in unix-Python. */
/* #undef USE_TOOLBOX_OBJECT_GLUE */

/* Define if a va_list is an array of some kind */
/* #undef VA_LIST_IS_ARRAY */

/* Define if you want SIGFPE handled (see Include/pyfpe.h). */
#define WANT_SIGFPE_HANDLER 1

/* Define if you want wctype.h functions to be used instead of the one
   supplied by Python itself. (see Include/unicodectype.h). */
/* #undef WANT_WCTYPE_FUNCTIONS */

/* Define if WINDOW in curses.h offers a field _flags. */
#define WINDOW_HAS_FLAGS 1

/* Define if you want documentation strings in extension modules */
#define WITH_DOC_STRINGS 1

/* Define if you want to use the new-style (Openstep, Rhapsody, MacOS) dynamic
   linker (dyld) instead of the old-style (NextStep) dynamic linker (rld).
   Dyld is necessary to support frameworks. */
/* #undef WITH_DYLD */

/* Define to 1 if libintl is needed for locale functions. */
/* #undef WITH_LIBINTL */

/* Define if you want to produce an OpenStep/Rhapsody framework (shared
   library plus accessory files). */
/* #undef WITH_NEXT_FRAMEWORK */

/* Define if you want to compile in Python-specific mallocs */
#define WITH_PYMALLOC 1

/* Define if you want to compile in rudimentary thread support */
#define WITH_THREAD 1

/* Define to profile with the Pentium timestamp counter */
/* #undef WITH_TSC */

/* Define to 1 if your processor stores words with the most significant byte
   first (like Motorola and SPARC, unlike Intel and VAX). */
/* #undef WORDS_BIGENDIAN */

/* Define if arithmetic is subject to x87-style double rounding issue */
#define X87_DOUBLE_ROUNDING 1

/* Define to 1 if on AIX 3.
   System headers sometimes define this.
   We just want to avoid a redefinition error message.  */
#ifndef _ALL_SOURCE
# define _ALL_SOURCE 1
#endif

/* Define on OpenBSD to activate all library features */
/* #undef _BSD_SOURCE */

/* Define on Irix to enable u_int */
#define _BSD_TYPES 1

/* Define on Darwin to activate all library features */
#define _DARWIN_C_SOURCE 1

/* This must be set to 64 on some systems to enable large file support. */
#define _FILE_OFFSET_BITS 64

/* Define on Linux to activate all library features */
#define _GNU_SOURCE 1

/* This must be defined on some systems to enable large file support. */
#define _LARGEFILE_SOURCE 1

/* Define on NetBSD to activate all library features */
#define _NETBSD_SOURCE 1

/* Define _OSF_SOURCE to get the makedev macro. */
/* #undef _OSF_SOURCE */

/* Define to activate features from IEEE Stds 1003.1-2001 */
#define _POSIX_C_SOURCE 200112L

/* Define if you have POSIX threads, and your system does not define that. */
/* #undef _POSIX_THREADS */

/* Define to force use of thread-safe errno, h_errno, and other functions */
/* #undef _REENTRANT */

/* Define to the level of X/Open that your system supports */
#define _XOPEN_SOURCE 600

/* Define to activate Unix95-and-earlier features */
#define _XOPEN_SOURCE_EXTENDED 1

/* Define on FreeBSD to activate all library features */
#define __BSD_VISIBLE 1

/* Define to 1 if type `char' is unsigned and you are not using gcc.  */
#ifndef __CHAR_UNSIGNED__
/* # undef __CHAR_UNSIGNED__ */
#endif

/* Defined on Solaris to see additional function prototypes. */
#define __EXTENSIONS__ 1

/* Define to 'long' if <time.h> doesn't define. */
/* #undef clock_t */

/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */

/* Define to `int' if <sys/types.h> doesn't define. */
/* #undef gid_t */

/* Define to `int' if <sys/types.h> does not define. */
/* #undef mode_t */

/* Define to `long int' if <sys/types.h> does not define. */
/* #undef off_t */

/* Define to `int' if <sys/types.h> does not define. */
/* #undef pid_t */

/* Define to empty if the keyword does not work. */
/* #undef signed */

/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */

/* Define to `int' if <sys/socket.h> does not define. */
/* #undef socklen_t */

/* Define to `int' if <sys/types.h> doesn't define. */
/* #undef uid_t */

/* Define to empty if the keyword does not work. */
/* #undef volatile */


/* Define the macros needed if on a UnixWare 7.x system. */
#if defined(__USLC__) && defined(__SCO_VERSION__)
#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
#endif

#endif /*Py_PYCONFIG_H*/

Now grab FCEUX and uncompress the source. Edit the SConstruct file to disable GTK: BoolVariable('GTK', 'Enable GTK2 GUI (SDL only)', 0),

Run scons in the directory to begin the config and build. You may need to turn on swap if gcc is killed mid-compile

For unknown reasons, scons refuses to pick up on zlib, missing the -lz at the end, so i just made a shell script (ash doesnt haev a large enough buffer to just paste into the command line:

g++ -o src/fceux -Wl,-rpath,/usr/local/lib src/asm.o src/cart.o src/cheat.o src/conddebug.o src/config.o src/debug.o src/drawing.o src/emufile.o src/fceu.o src/fds.o src/file.o src/filter.o src/ines.o src/input.o src/netplay.o src/nsf.o src/oldmovie.o src/palette.o src/ppu.o src/sound.o src/state.o src/unif.o src/video.o src/vsuni.o src/wave.o src/x6502.o src/movie.o src/lua-engine.o src/boards/01-222.o src/boards/103.o src/boards/106.o src/boards/108.o src/boards/112.o src/boards/117.o src/boards/120.o src/boards/121.o src/boards/15.o src/boards/164.o src/boards/175.o src/boards/176.o src/boards/177.o src/boards/178.o src/boards/179.o src/boards/183.o src/boards/185.o src/boards/186.o src/boards/187.o src/boards/189.o src/boards/199.o src/boards/208.o src/boards/222.o src/boards/23.o src/boards/235.o src/boards/253.o src/boards/3d-block.o src/boards/411120-c.o src/boards/43.o src/boards/57.o src/boards/603-5052.o src/boards/68.o src/boards/8157.o src/boards/8237.o src/boards/830118C.o src/boards/88.o src/boards/90.o src/boards/95.o src/boards/a9711.o src/boards/a9746.o src/boards/addrlatch.o src/boards/ax5705.o src/boards/bandai.o src/boards/bmc13in1jy110.o src/boards/bmc42in1r.o src/boards/bmc64in1nr.o src/boards/bmc70in1.o src/boards/bonza.o src/boards/bs-5.o src/boards/copyfami_mmc3.o src/boards/dance.o src/boards/datalatch.o src/boards/deirom.o src/boards/dream.o src/boards/__dummy_mapper.o src/boards/edu2000.o src/boards/fk23c.o src/boards/ghostbusters63in1.o src/boards/gs-2004.o src/boards/gs-2013.o src/boards/h2288.o src/boards/karaoke.o src/boards/kof97.o src/boards/konami-qtai.o src/boards/ks7032.o src/boards/malee.o src/boards/mmc1.o src/boards/mmc3.o src/boards/mmc5.o src/boards/n-c22m.o src/boards/n106.o src/boards/n625092.o src/boards/novel.o src/boards/sachen.o src/boards/sc-127.o src/boards/sheroes.o src/boards/sl1632.o src/boards/smb2j.o src/boards/subor.o src/boards/super24.o src/boards/supervision.o src/boards/t-227-1.o src/boards/t-262.o src/boards/tengen.o src/boards/tf-1201.o src/drivers/common/args.o src/drivers/common/cheat.o src/drivers/common/config.o src/drivers/common/hq2x.o src/drivers/common/hq3x.o src/drivers/common/scale2x.o src/drivers/common/scale3x.o src/drivers/common/scalebit.o src/drivers/common/vidblit.o src/drivers/common/configSys.o src/drivers/common/nes_ntsc.o src/input/arkanoid.o src/input/bworld.o src/input/cursor.o src/input/fkb.o src/input/ftrainer.o src/input/hypershot.o src/input/mahjong.o src/input/mouse.o src/input/oekakids.o src/input/powerpad.o src/input/quiz.o src/input/shadow.o src/input/suborkb.o src/input/toprider.o src/input/zapper.o src/utils/crc32.o src/utils/endian.o src/utils/general.o src/utils/guid.o src/utils/md5.o src/utils/memory.o src/utils/unzip.o src/utils/xstring.o src/mappers/151.o src/mappers/16.o src/mappers/17.o src/mappers/18.o src/mappers/193.o src/mappers/201.o src/mappers/202.o src/mappers/203.o src/mappers/204.o src/mappers/212.o src/mappers/213.o src/mappers/214.o src/mappers/215.o src/mappers/217.o src/mappers/21.o src/mappers/225.o src/mappers/227.o src/mappers/228.o src/mappers/229.o src/mappers/22.o src/mappers/230.o src/mappers/231.o src/mappers/232.o src/mappers/234.o src/mappers/241.o src/mappers/242.o src/mappers/244.o src/mappers/246.o src/mappers/24and26.o src/mappers/255.o src/mappers/25.o src/mappers/27.o src/mappers/32.o src/mappers/33.o src/mappers/40.o src/mappers/41.o src/mappers/42.o src/mappers/46.o src/mappers/50.o src/mappers/51.o src/mappers/59.o src/mappers/60.o src/mappers/61.o src/mappers/62.o src/mappers/65.o src/mappers/67.o src/mappers/69.o src/mappers/6.o src/mappers/71.o src/mappers/72.o src/mappers/73.o src/mappers/75.o src/mappers/76.o src/mappers/77.o src/mappers/79.o src/mappers/80.o src/mappers/82.o src/mappers/83.o src/mappers/85.o src/mappers/86.o src/mappers/89.o src/mappers/8.o src/mappers/91.o src/mappers/92.o src/mappers/97.o src/mappers/99.o src/mappers/emu2413.o src/mappers/mmc2and4.o src/mappers/simple.o src/lua/src/lapi.o src/lua/src/lauxlib.o src/lua/src/lbaselib.o src/lua/src/lcode.o src/lua/src/ldblib.o src/lua/src/ldebug.o src/lua/src/ldo.o src/lua/src/ldump.o src/lua/src/lfunc.o src/lua/src/lgc.o src/lua/src/linit.o src/lua/src/liolib.o src/lua/src/llex.o src/lua/src/lmathlib.o src/lua/src/lmem.o src/lua/src/loadlib.o src/lua/src/lobject.o src/lua/src/lopcodes.o src/lua/src/loslib.o src/lua/src/lparser.o src/lua/src/lstate.o src/lua/src/lstring.o src/lua/src/lstrlib.o src/lua/src/ltable.o src/lua/src/ltablib.o src/lua/src/ltm.o src/lua/src/lundump.o src/lua/src/lvm.o src/lua/src/lzio.o src/lua/src/print.o src/drivers/sdl/input.o src/drivers/sdl/config.o src/drivers/sdl/sdl.o src/drivers/sdl/sdl-joystick.o src/drivers/sdl/sdl-sound.o src/drivers/sdl/sdl-throttle.o src/drivers/sdl/sdl-video.o src/drivers/sdl/unix-netplay.o -L/usr/local/lib -lSDL -lpthread **-lz** 

Run FCEUX

mount -oremount,rw /
stop_control_panel
/mnt/storage/switch_output -l
switch_fb.sh 0
cd /mnt/storage/fceux

and after all that…it doesnt work well at all :( –newppu 1 is hella slow and –newppu 0 has corrupted pixels

FCE Ultra 0.98.13

On a whim I decided to try an earlier FCEU (the predecesssor) with more success! Compile went pretty much cleanly.

Run it with -xscale 1 -yscale 1 -sound 0 after killing chumbhowld and chumbradiod we got good performance with -skipframe 1

Will see if its worth trying other versions - the later v's might add less-useful stuff

/home/ladyada/public_html/wiki/data/pages/chumby.txt · Last modified: 2016/01/28 18:05 (external edit)