This is upstream's patch to fix Python 3 building, modified to apply against 2.2.3.

https://github.com/TASVideos/fceux/commit/878245fedf028f8c9373be128dbea01f65d4a8b7

diff --git a/SConstruct b/SConstruct
index be84421..4b60484 100644
--- a/SConstruct
+++ b/SConstruct
@@ -46,30 +46,30 @@ if platform.system == "ppc":
 # Default compiler flags:
 env.Append(CCFLAGS = ['-Wall', '-Wno-write-strings', '-Wno-sign-compare'])
 
-if os.environ.has_key('PLATFORM'):
+if 'PLATFORM' in os.environ:
   env.Replace(PLATFORM = os.environ['PLATFORM'])
-if os.environ.has_key('CC'):
+if 'CC' in os.environ:
   env.Replace(CC = os.environ['CC'])
-if os.environ.has_key('CXX'):
+if 'CXX' in os.environ:
   env.Replace(CXX = os.environ['CXX'])
-if os.environ.has_key('WINDRES'):
+if 'WINDRES' in os.environ:
   env.Replace(WINDRES = os.environ['WINDRES'])
-if os.environ.has_key('CFLAGS'):
+if 'CFLAGS' in os.environ:
   env.Append(CCFLAGS = os.environ['CFLAGS'].split())
-if os.environ.has_key('CXXFLAGS'):
+if 'CXXFLAGS' in os.environ:
   env.Append(CXXFLAGS = os.environ['CXXFLAGS'].split())
-if os.environ.has_key('CPPFLAGS'):
+if 'CPPFLAGS' in os.environ:
   env.Append(CPPFLAGS = os.environ['CPPFLAGS'].split())
-if os.environ.has_key('LDFLAGS'):
+if 'LDFLAGS' in os.environ:
   env.Append(LINKFLAGS = os.environ['LDFLAGS'].split())
-if os.environ.has_key('PKG_CONFIG_PATH'):
+if 'PKG_CONFIG_PATH' in os.environ:
   env['ENV']['PKG_CONFIG_PATH'] = os.environ['PKG_CONFIG_PATH']
-if not os.environ.has_key('PKG_CONFIG_PATH') and env['PLATFORM'] == 'darwin':
+if 'PKG_CONFIG_PATH' not in os.environ and env['PLATFORM'] == 'darwin':
   env['ENV']['PKG_CONFIG_PATH'] = "/usr/local/lib/pkgconfig:/opt/X11/lib/pkgconfig"
-if os.environ.has_key('PKG_CONFIG_LIBDIR'):
+if 'PKG_CONFIG_LIBDIR' in os.environ:
   env['ENV']['PKG_CONFIG_LIBDIR'] = os.environ['PKG_CONFIG_LIBDIR']
 
-print "platform: ", env['PLATFORM']
+print("platform: ", env['PLATFORM'])
 
 # compile with clang
 if env['CLANG']:
@@ -103,18 +103,18 @@ else:
     assert conf.CheckLibWithHeader('z', 'zlib.h', 'c', 'inflate;', 1), "please install: zlib"
   if env['SDL2']:
     if not conf.CheckLib('SDL2'):
-      print 'Did not find libSDL2 or SDL2.lib, exiting!'
+      print('Did not find libSDL2 or SDL2.lib, exiting!')
       Exit(1)
     env.Append(CPPDEFINES=["_SDL2"])
     env.ParseConfig('pkg-config sdl2 --cflags --libs')
   else:
     if not conf.CheckLib('SDL'):
-      print 'Did not find libSDL or SDL.lib, exiting!'
+      print('Did not find libSDL or SDL.lib, exiting!')
       Exit(1)
     env.ParseConfig('sdl-config --cflags --libs')
   if env['GTK']:
     if not conf.CheckLib('gtk-x11-2.0'):
-      print 'Could not find libgtk-2.0, exiting!'
+      print('Could not find libgtk-2.0, exiting!')
       Exit(1)
     # Add compiler and linker flags from pkg-config
     config_string = 'pkg-config --cflags --libs gtk+-2.0'
@@ -153,7 +153,7 @@ else:
         env.Append(CCFLAGS = ["-I/usr/include/lua"])
         lua_available = True
       if lua_available == False:
-        print 'Could not find liblua, exiting!'
+        print('Could not find liblua, exiting!')
         Exit(1)
     else:
       env.Append(CCFLAGS = ["-Isrc/lua/src"])
@@ -167,7 +167,7 @@ else:
     gd = conf.CheckLib('gd', autoadd=1)
     if gd == 0:
       env['LOGO'] = 0
-      print 'Did not find libgd, you won\'t be able to create a logo screen for your avis.'
+      print('Did not find libgd, you won\'t be able to create a logo screen for your avis.')
    
   if env['OPENGL'] and conf.CheckLibWithHeader('GL', 'GL/gl.h', 'c', autoadd=1):
     conf.env.Append(CCFLAGS = "-DOPENGL")
@@ -181,8 +181,8 @@ if sys.byteorder == 'little' or env['PLATFORM'] == 'win32':
 if env['FRAMESKIP']:
   env.Append(CPPDEFINES = ['FRAMESKIP'])
 
-print "base CPPDEFINES:",env['CPPDEFINES']
-print "base CCFLAGS:",env['CCFLAGS']
+print("base CPPDEFINES:",env['CPPDEFINES'])
+print("base CCFLAGS:",env['CCFLAGS'])
 
 if env['DEBUG']:
   env.Append(CPPDEFINES=["_DEBUG"], CCFLAGS = ['-g', '-O0'])
diff --git a/src/SConscript b/src/SConscript
index 4713e15..2001146 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -33,7 +33,7 @@ else:
   platform_files = SConscript('drivers/sdl/SConscript')
 file_list.append(platform_files)
 
-print env['LINKFLAGS']
+print(env['LINKFLAGS'])
 
 if env['PLATFORM'] == 'win32':
   fceux = env.Program('fceux.exe', file_list)
