ping

On Sun, 30 Aug 2015, Donovan Watteau wrote:
> Hi,
> 
> Here's another attempt at getting this port updated [1].
> 
> Here are the changes:
> 
> - update from 0.5.2 to 0.6.3, which fixes a lot of security issues and 
>   which makes the game playable online again.
> - don't bother building on strict-alignment archs.  On loongson, both
>   the client and the server SIGBUS during startup, and looking at the
>   code it seems that it will crash on anything not x86 or ppc.
> - don't include an extra copy of DejaVuSans.ttf.
> - use audio/wavpack, not an internal copy.
> - make sure an internal zlib is never used.
> - invoke "bam" with -a, to make sure that it will abort on error.
> - don't enforce stack protector, base gcc(1) enables it wherever
>   it's possible.
> - fix endianness detection (confirmed to work on macppc).
> - drop patch-src_engine_client_ec_snd_c.  At first, I ported it to
>   teeworlds-0.6.2, but actually this patch makes audio much worse
>   for me, and I can't observe anymore the crash it was supposed
>   to fix.
> 
> There are some CRLFs in patch-bam-0_2_0*, and an inline diff might
> corrupt this part of the patch, but these files get removed anyway
> so it shouldn't matter.
> 
> [1] https://marc.info/?l=openbsd-ports&m=139956748407652&w=2
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/games/teeworlds/Makefile,v
> retrieving revision 1.17
> diff -u -p -r1.17 Makefile
> --- Makefile  9 Aug 2013 19:04:49 -0000       1.17
> +++ Makefile  30 Aug 2015 12:40:14 -0000
> @@ -1,60 +1,69 @@
>  # $OpenBSD: Makefile,v 1.17 2013/08/09 19:04:49 ajacoutot Exp $
>  
> -COMMENT =    platform game featuring buggers equipped with weapons
> +# Crashes on strict-alignment archs, see: src/base/system.c:164
> +ONLY_FOR_ARCHS=      amd64 i386 powerpc
>  
> -V =          0.5.2
> -DISTNAME =   teeworlds-${V}-src
> -PKGNAME =    teeworlds-${V}
> -REVISION =   4
> -CATEGORIES = games
> +COMMENT=     platform game featuring buggers equipped with weapons
>  
> -MAINTAINER = Jonathan Armani <arm...@openbsd.org>
> -HOMEPAGE =   http://www.teeworlds.com/
> +V=           0.6.3
> +DISTNAME=    teeworlds-${V}-src
> +PKGNAME=     teeworlds-${V}
> +CATEGORIES=  games
>  
> -BAM_VERSION =        0.2.0
> -BAM_WRKSRC = ${WRKSRC}/bam-${BAM_VERSION}
> -BAM_TARGET = release
> +HOMEPAGE=    http://www.teeworlds.com/
>  
> -MASTER_SITES =       http://www.teeworlds.com/files/
> -DISTFILES =  ${DISTNAME}${EXTRACT_SUFX} bam-${BAM_VERSION}${EXTRACT_SUFX}
> +MAINTAINER=  Donovan Watteau <tso...@gmail.com>
>  
> -# GPLv2
> -PERMIT_PACKAGE_CDROM =       Yes
> +BAM_VERSION= 0.4.0
> +BAM_WRKSRC=  ${WRKSRC}/bam-${BAM_VERSION}
>  
> -WANTLIB =    GL GLU SDL X11 c m pthread stdc++ z
> -LIB_DEPENDS =        devel/sdl
> +MASTER_SITES=        https://downloads.teeworlds.com/
> +DISTFILES=   ${DISTNAME}${EXTRACT_SUFX} bam-${BAM_VERSION}${EXTRACT_SUFX}
>  
> -MODULES =    lang/python
> +# BSD-like
> +PERMIT_PACKAGE_CDROM=        Yes
>  
> -NO_TEST =    Yes
> +WANTLIB=     GL GLU SDL X11 c freetype m pthread stdc++ wavpack z
>  
> -GAMEDIR =    ${PREFIX}/share/teeworlds
> +LIB_DEPENDS= audio/wavpack \
> +             devel/sdl
>  
> -SUBST_VARS = CC CXX CFLAGS
> +MODULES=     lang/python
> +
> +SUBST_VARS=  CC CXX CFLAGS CXXFLAGS X11BASE
> +
> +NO_TEST=     Yes
>  
>  post-extract:
>       @mv ${WRKDIR}/bam-${BAM_VERSION} ${BAM_WRKSRC}
>  
>  pre-configure:
> -     ${SUBST_CMD} ${WRKSRC}/src/engine/e_engine.c \
> -             ${WRKSRC}/scripts/make_src.py \
> +     @${SUBST_CMD} ${WRKSRC}/src/engine/shared/storage.cpp \
> +             ${WRKSRC}/src/game/client/gameclient.cpp \
> +             ${WRKSRC}/scripts/build.py \
> +             ${WRKSRC}/scripts/compiler.py \
>               ${WRKSRC}/scripts/font_installer.sh \
> -             ${WRKSRC}/default.bam \
> +             ${WRKSRC}/scripts/make_src.py \
> +             ${WRKSRC}/bam.lua \
>               ${BAM_WRKSRC}/make_unix.sh \
> -             ${BAM_WRKSRC}/src/driver_gcc.bam \
> -             ${BAM_WRKSRC}/src/base.bam
> +             ${BAM_WRKSRC}/src/driver_gcc.lua \
> +             ${BAM_WRKSRC}/src/base.lua
> +     # Make sure internal wavpack and zlib can't be picked up
> +     rm -rf ${WRKSRC}/src/engine/external/{wavpack,zlib}
> +     # Don't provide an extra copy of DejaVu
> +     rm -rf ${WRKSRC}/data/fonts
>  
>  # build bam executable - teeworlds own build system
>  pre-build:
>       cd ${BAM_WRKSRC} && /bin/sh -v make_unix.sh
>  
>  do-build:
> -     cd ${WRKSRC} && CC=${CC} ${BAM_WRKSRC}/src/bam -v ${BAM_TARGET}
> +     cd ${WRKSRC} && CC=${CC} ${BAM_WRKSRC}/bam -a -v release 
> wavpack=${LOCALBASE}
>  
>  do-install:
>       ${INSTALL_PROGRAM} ${WRKSRC}/teeworlds ${PREFIX}/bin
>       ${INSTALL_PROGRAM} ${WRKSRC}/teeworlds_srv ${PREFIX}/bin
> -     ${INSTALL_DATA_DIR} ${GAMEDIR}
> -     cd ${WRKSRC}; tar cf - data | tar xf - -C ${GAMEDIR}
> +     ${INSTALL_DATA_DIR} ${PREFIX}/share/teeworlds
> +     cd ${WRKSRC}; tar cf - data | tar xf - -C ${PREFIX}/share/teeworlds
>  
>  .include <bsd.port.mk>
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/games/teeworlds/distinfo,v
> retrieving revision 1.4
> diff -u -p -r1.4 distinfo
> --- distinfo  9 Aug 2013 19:04:49 -0000       1.4
> +++ distinfo  30 Aug 2015 12:40:14 -0000
> @@ -1,4 +1,4 @@
> -SHA256 (bam-0.2.0.tar.gz) = 72zdwd9HsNgQYmUDPvTlXmHeyr8ieaKs1/3wFmM8B1g=
> -SHA256 (teeworlds-0.5.2-src.tar.gz) = 
> GBGnG/mhRwx6aTCANXREkvPoUK790S8bwiP7hdmM9MA=
> -SIZE (bam-0.2.0.tar.gz) = 162342
> -SIZE (teeworlds-0.5.2-src.tar.gz) = 6393472
> +SHA256 (bam-0.4.0.tar.gz) = Xk5JILTSZdpYL2Z3TpseyN37513cAo+6hsEvaG6hjbM=
> +SHA256 (teeworlds-0.6.3-src.tar.gz) = 
> SQ7nw3KJh2HGCa+Newxr1VlCxsb81/Nh7voAq/xwB3s=
> +SIZE (bam-0.4.0.tar.gz) = 206780
> +SIZE (teeworlds-0.6.3-src.tar.gz) = 13101446
> Index: patches/patch-bam-0_2_0_make_unix_sh
> ===================================================================
> RCS file: patches/patch-bam-0_2_0_make_unix_sh
> diff -N patches/patch-bam-0_2_0_make_unix_sh
> --- patches/patch-bam-0_2_0_make_unix_sh      9 Aug 2013 19:04:49 -0000       
> 1.3
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,10 +0,0 @@
> -$OpenBSD: patch-bam-0_2_0_make_unix_sh,v 1.3 2013/08/09 19:04:49 ajacoutot 
> Exp $
> ---- bam-0.2.0/make_unix.sh.orig      Thu Jan  8 13:07:44 2009
> -+++ bam-0.2.0/make_unix.sh   Sun Feb  8 18:11:29 2009
> -@@ -1,4 +1,4 @@
> - #!/bin/sh
> --gcc -Wall -ansi -pedantic src/tools/txt2c.c -o src/tools/txt2c
> -+${CC} ${CFLAGS} -Wall -ansi -pedantic src/tools/txt2c.c -o src/tools/txt2c
> - src/tools/txt2c src/base.bam src/driver_gcc.bam src/driver_cl.bam > 
> src/internal_base.h
> --gcc -Wall -ansi -pedantic src/lua/*.c src/*.c -o src/bam -I src/lua -lm 
> -lpthread -O2 $*
> -+${CC} ${CFLAGS} -Wall -ansi -pedantic src/lua/*.c src/*.c -o src/bam -I 
> src/lua -lm -lpthread $*
> Index: patches/patch-bam-0_2_0_src_base_bam
> ===================================================================
> RCS file: patches/patch-bam-0_2_0_src_base_bam
> diff -N patches/patch-bam-0_2_0_src_base_bam
> --- patches/patch-bam-0_2_0_src_base_bam      18 Jan 2009 17:53:36 -0000      
> 1.1.1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,12 +0,0 @@
> -$OpenBSD: patch-bam-0_2_0_src_base_bam,v 1.1.1.1 2009/01/18 17:53:36 
> ajacoutot Exp $
> ---- bam-0.2.0/src/base.bam.orig      Fri Jan 16 18:46:07 2009
> -+++ bam-0.2.0/src/base.bam   Fri Jan 16 18:46:33 2009
> -@@ -589,7 +589,7 @@ end
> - @END]]--
> - function OptFindCompiler()
> -     local check = function(option, settings)
> --            if ExecuteSilent("g++ -v") == 0 then
> -+            if ExecuteSilent("${CXX} -v") == 0 then
> -                     option.value = "gcc"
> -             elseif ExecuteSilent("cl") == 0 then
> -                     option.value = "cl"
> Index: patches/patch-bam-0_2_0_src_context_h
> ===================================================================
> RCS file: patches/patch-bam-0_2_0_src_context_h
> diff -N patches/patch-bam-0_2_0_src_context_h
> --- patches/patch-bam-0_2_0_src_context_h     8 Feb 2009 22:31:58 -0000       
> 1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,24 +0,0 @@
> -$OpenBSD: patch-bam-0_2_0_src_context_h,v 1.1 2009/02/08 22:31:58 ajacoutot 
> Exp $
> -
> -Fix bus error on sparc64.
> -
> ---- bam-0.2.0/src/context.h.orig     Mon Feb  9 00:11:33 2009
> -+++ bam-0.2.0/src/context.h  Mon Feb  9 00:09:59 2009
> -@@ -5,7 +5,7 @@ struct TARGET
> - {
> -     struct NODE *node;
> -     struct TARGET *next;
> --};
> -+} __attribute__((packed));
> - 
> - struct CONTEXT
> - {
> -@@ -24,7 +24,7 @@ struct CONTEXT
> -     
> -     volatile int current_cmd_num;
> -     int num_commands;
> --};
> -+} __attribute__((packed));
> - 
> - const char *context_get_path(lua_State *L);
> - struct CONTEXT *context_get_pointer(lua_State *L);
> Index: patches/patch-bam-0_2_0_src_driver_gcc_bam
> ===================================================================
> RCS file: patches/patch-bam-0_2_0_src_driver_gcc_bam
> diff -N patches/patch-bam-0_2_0_src_driver_gcc_bam
> --- patches/patch-bam-0_2_0_src_driver_gcc_bam        18 Jan 2009 17:53:36 
> -0000      1.1.1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,14 +0,0 @@
> -$OpenBSD: patch-bam-0_2_0_src_driver_gcc_bam,v 1.1.1.1 2009/01/18 17:53:36 
> ajacoutot Exp $
> ---- bam-0.2.0/src/driver_gcc.bam.orig        Fri Jan 16 18:44:47 2009
> -+++ bam-0.2.0/src/driver_gcc.bam     Fri Jan 16 18:45:47 2009
> -@@ -82,8 +82,8 @@ end
> - function SetDriversGCC(settings)
> -     if settings.cc then
> -             settings.cc.extension = ".o"
> --            settings.cc.c_compiler = "gcc"
> --            settings.cc.cxx_compiler = "g++"
> -+            settings.cc.c_compiler = "${CC} ${CFLAGS}"
> -+            settings.cc.cxx_compiler = "${CXX} ${CFLAGS}"
> -             settings.cc.DriverCTest = DriverCTest_GCC
> -             settings.cc.DriverC = DriverC_GCC
> -             settings.cc.DriverCXX = DriverCXX_GCC   
> Index: patches/patch-bam-0_2_0_src_main_c
> ===================================================================
> RCS file: patches/patch-bam-0_2_0_src_main_c
> diff -N patches/patch-bam-0_2_0_src_main_c
> --- patches/patch-bam-0_2_0_src_main_c        8 Feb 2009 16:54:54 -0000       
> 1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,37 +0,0 @@
> -$OpenBSD: patch-bam-0_2_0_src_main_c,v 1.1 2009/02/08 16:54:54 ajacoutot Exp 
> $
> ---- bam-0.2.0/src/main.c.orig        Sun Feb  8 18:09:12 2009
> -+++ bam-0.2.0/src/main.c     Sun Feb  8 18:10:27 2009
> -@@ -986,8 +986,8 @@ int register_lua_globals(struct CONTEXT *context)
> -     
> -     /* set paths */
> -     {
> --            char cwd[512];
> --            getcwd(cwd, 512);
> -+            char cwd[1024];
> -+            getcwd(cwd, 1024);
> -             
> -             lua_pushstring(context->lua, CONTEXT_LUA_PATH);
> -             lua_pushstring(context->lua, context->script_directory);
> -@@ -1131,17 +1131,17 @@ static int bam(const char *scriptfile, const char 
> **ta
> -     
> -     /* fetch script directory */
> -     {
> --            char cwd[512];
> --            char path[512];
> -+            char cwd[1024];
> -+            char path[1024];
> - 
> --            getcwd(cwd, 512);
> --            if(path_directory(context.filename, path, 512))
> -+            getcwd(cwd, 1024);
> -+            if(path_directory(context.filename, path, 1024))
> -             {
> -                     printf("crap error1\n");
> -                     *((int*)0) = 0;
> -             }
> -             
> --            if(path_join(cwd, path, context.script_directory, 512))
> -+            if(path_join(cwd, path, context.script_directory, 1024))
> -             {
> -                     printf("crap error2\n");
> -                     *((int*)0) = 0;
> Index: patches/patch-bam-0_2_0_src_node_h
> ===================================================================
> RCS file: patches/patch-bam-0_2_0_src_node_h
> diff -N patches/patch-bam-0_2_0_src_node_h
> --- patches/patch-bam-0_2_0_src_node_h        8 Feb 2009 22:31:58 -0000       
> 1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,24 +0,0 @@
> -$OpenBSD: patch-bam-0_2_0_src_node_h,v 1.1 2009/02/08 22:31:58 ajacoutot Exp 
> $
> -
> -Fix bus error on sparc64.
> -
> ---- bam-0.2.0/src/node.h.orig        Mon Feb  9 00:11:20 2009
> -+++ bam-0.2.0/src/node.h     Mon Feb  9 00:10:15 2009
> -@@ -9,7 +9,7 @@ struct DEPENDENCY
> - {
> -     struct NODE *node;
> -     struct DEPENDENCY *next;
> --};
> -+} __attribute__((packed));
> - 
> - #define USE_NODE_RB
> - 
> -@@ -55,7 +55,7 @@ struct NODE
> -     unsigned int counted:1;
> -     
> -     volatile unsigned int workstatus:2; /* 0 = undone, 1 = in the workings, 
> 2 = done*/
> --};
> -+} __attribute__((packed));
> - 
> - struct HEAP;
> - struct GRAPH;
> Index: patches/patch-bam-0_4_0_make_unix_sh
> ===================================================================
> RCS file: patches/patch-bam-0_4_0_make_unix_sh
> diff -N patches/patch-bam-0_4_0_make_unix_sh
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-bam-0_4_0_make_unix_sh      30 Aug 2015 12:40:14 -0000
> @@ -0,0 +1,13 @@
> +$OpenBSD$
> +
> +Don't hardcode compiler path and flags.
> +
> +--- bam-0.4.0/make_unix.sh.orig      Mon Aug  9 20:08:24 2010
> ++++ bam-0.4.0/make_unix.sh   Sat Mar 17 15:05:51 2012
> +@@ -1,4 +1,4 @@
> + #!/bin/sh
> +-gcc -Wall -ansi -pedantic src/tools/txt2c.c -o src/tools/txt2c
> ++${CC} ${CFLAGS}  -Wall -ansi -pedantic src/tools/txt2c.c -o src/tools/txt2c
> + src/tools/txt2c src/base.lua src/tools.lua src/driver_gcc.lua 
> src/driver_cl.lua > src/internal_base.h
> +-gcc -Wall -ansi -pedantic src/*.c src/lua/*.c -o bam -I src/lua -lm 
> -lpthread -ldl -O2 -rdynamic $*
> ++${CC} ${CFLAGS} -Wall -ansi -pedantic src/*.c src/lua/*.c -o bam -I src/lua 
> -lm -lpthread -rdynamic $*
> Index: patches/patch-bam-0_4_0_src_driver_gcc_lua
> ===================================================================
> RCS file: patches/patch-bam-0_4_0_src_driver_gcc_lua
> diff -N patches/patch-bam-0_4_0_src_driver_gcc_lua
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-bam-0_4_0_src_driver_gcc_lua        30 Aug 2015 12:40:14 
> -0000
> @@ -0,0 +1,52 @@
> +$OpenBSD$
> +
> +Don't hardcode compiler path and flags.
> +
> +--- bam-0.4.0/src/driver_gcc.lua.orig        Mon Aug  9 20:08:24 2010
> ++++ bam-0.4.0/src/driver_gcc.lua     Sat Mar 17 15:14:24 2012
> +@@ -13,7 +13,6 @@ function DriverGCC_Get(exe, cache_name, flags_name)
> +                     local f = cc.flags:ToString()
> +                     f = f .. cc[flags_name]:ToString()
> +                     if settings.debug > 0 then f = f .. "-g " end
> +-                    if settings.optimize > 0 then f = f .. "-O2 " end
> +                     
> +                     cache.str = cc[exe] .. " " .. f .. "-c " .. d .. i .. " 
> -o "
> +             end
> +@@ -27,7 +26,7 @@ function DriverGCC_CTest(code, options)
> +     f:write(code)
> +     f:write("\n")
> +     f:close()
> +-    local ret = ExecuteSilent("gcc _test.c -o _test " .. options)
> ++    local ret = ExecuteSilent("${CC} _test.c -o _test " .. options)
> +     os.remove("_test.c")
> +     os.remove("_test")
> +     return ret==0
> +@@ -80,8 +79,8 @@ end
> + function SetDriversGCC(settings)
> +     if settings.cc then
> +             settings.cc.extension = ".o"
> +-            settings.cc.exe_c = "gcc"
> +-            settings.cc.exe_cxx = "g++"
> ++            settings.cc.exe_c = "${CC} ${CFLAGS}"
> ++            settings.cc.exe_cxx = "${CXX} ${CXXFLAGS}"
> +             settings.cc.DriverCTest = DriverGCC_CTest
> +             settings.cc.DriverC = DriverGCC_Get("exe_c", "_c_cache", 
> "flags_c")
> +             settings.cc.DriverCXX = DriverGCC_Get("exe_cxx", "_cxx_cache", 
> "flags_cxx")
> +@@ -89,7 +88,7 @@ function SetDriversGCC(settings)
> +     
> +     if settings.link then
> +             settings.link.extension = ""
> +-            settings.link.exe = "g++"
> ++            settings.link.exe = "${CXX}"
> +             settings.link.Driver = DriverGCC_Link
> +     end
> +     
> +@@ -108,7 +107,7 @@ function SetDriversGCC(settings)
> +                     settings.dll.prefix = ""
> +                     settings.dll.extension = ".so"
> +             end
> +-            settings.dll.exe = "g++"
> ++            settings.dll.exe = "${CXX}"
> +             settings.dll.Driver = DriverGCC_DLL
> +     end
> + end
> Index: patches/patch-bam_lua
> ===================================================================
> RCS file: patches/patch-bam_lua
> diff -N patches/patch-bam_lua
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-bam_lua     30 Aug 2015 12:40:14 -0000
> @@ -0,0 +1,73 @@
> +$OpenBSD$
> +
> +- Don't enforce stack protector
> +- Don't hardcode python
> +- Make it possible to use wavpack as an external dependency (from Debian)
> +- Fix zlib external dependency (from Debian)
> +
> +--- bam.lua.orig     Wed May  1 13:47:39 2013
> ++++ bam.lua  Thu May  8 16:13:57 2014
> +@@ -7,12 +7,12 @@ Import("other/freetype/freetype.lua")
> + --- Setup Config -------
> + config = NewConfig()
> + config:Add(OptCCompiler("compiler"))
> +-config:Add(OptTestCompileC("stackprotector", "int main(){return 0;}", 
> "-fstack-protector -fstack-protector-all"))
> + config:Add(OptTestCompileC("minmacosxsdk", "int main(){return 0;}", 
> "-mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk"))
> + config:Add(OptTestCompileC("macosxppc", "int main(){return 0;}", "-arch 
> ppc"))
> + config:Add(OptLibrary("zlib", "zlib.h", false))
> + config:Add(SDL.OptFind("sdl", true))
> + config:Add(FreeType.OptFind("freetype", true))
> ++config:Add(OptLibrary("wavpack", "wavpack/wavpack.h", false))
> + config:Finalize("config.lua")
> + 
> + -- data compiler
> +@@ -20,7 +20,7 @@ function Script(name)
> +     if family == "windows" then
> +             return str_replace(name, "/", "\\")
> +     end
> +-    return "python " .. name
> ++    return "${MODPY_BIN} " .. name
> + end
> + 
> + function CHash(output, ...)
> +@@ -157,9 +157,6 @@ function build(settings)
> +                             settings.cc.flags:Add("-isysroot 
> /Developer/SDKs/MacOSX10.5.sdk")
> +                             settings.link.flags:Add("-isysroot 
> /Developer/SDKs/MacOSX10.5.sdk")
> +                     end
> +-            elseif config.stackprotector.value == 1 then
> +-                    settings.cc.flags:Add("-fstack-protector", 
> "-fstack-protector-all")
> +-                    settings.link.flags:Add("-fstack-protector", 
> "-fstack-protector-all")
> +             end
> +     end
> + 
> +@@ -187,7 +184,7 @@ function build(settings)
> +     end
> + 
> +     -- compile zlib if needed
> +-    if config.zlib.value == 1 then
> ++    if config.zlib.value then
> +             settings.link.libs:Add("z")
> +             if config.zlib.include_path then
> +                     settings.cc.includes:Add(config.zlib.include_path)
> +@@ -198,8 +195,20 @@ function build(settings)
> +             settings.cc.includes:Add("src/engine/external/zlib")
> +     end
> + 
> ++    -- compile wavpack if needed
> ++    if config.wavpack.value then
> ++            settings.link.libs:Add("wavpack")
> ++            if config.wavpack.include_path then
> ++                    settings.cc.includes:Add(config.wavpack.include_path .. 
> "/include")
> ++                    settings.link.libpath:Add(config.wavpack.include_path 
> .. "/lib")
> ++            end
> ++            wavpack = {}
> ++    else
> ++            wavpack = Compile(settings, 
> Collect("src/engine/external/wavpack/*.c"))
> ++            settings.cc.includes:Add("src/engine/external")
> ++    end
> ++
> +     -- build the small libraries
> +-    wavpack = Compile(settings, Collect("src/engine/external/wavpack/*.c"))
> +     pnglite = Compile(settings, Collect("src/engine/external/pnglite/*.c"))
> + 
> +     -- build game components
> Index: patches/patch-default_bam
> ===================================================================
> RCS file: patches/patch-default_bam
> diff -N patches/patch-default_bam
> --- patches/patch-default_bam 5 Apr 2009 16:59:40 -0000       1.2
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,21 +0,0 @@
> -$OpenBSD: patch-default_bam,v 1.2 2009/04/05 16:59:40 ajacoutot Exp $
> ---- default.bam.orig Thu Mar  5 11:41:17 2009
> -+++ default.bam      Thu Mar  5 11:41:53 2009
> -@@ -15,7 +15,7 @@ function Script(name)
> -     if family == "windows" then
> -             return str_replace(name, "/", "\\")
> -     end
> --    return "python " .. name
> -+    return "${MODPY_BIN} " .. name
> - end
> - 
> - function CHash(output, ...)
> -@@ -128,7 +128,7 @@ function build(settings)
> -                     settings.link.frameworks:Add("Carbon")
> -                     settings.link.frameworks:Add("AppKit")
> -             else
> --                    settings.link.libs:Add("pthread")
> -+                    settings.link.flags:Add("-pthread")
> -             end
> -     elseif family == "windows" then
> -             settings.link.libs:Add("gdi32")
> Index: patches/patch-scripts_build_py
> ===================================================================
> RCS file: patches/patch-scripts_build_py
> diff -N patches/patch-scripts_build_py
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-scripts_build_py    30 Aug 2015 12:40:14 -0000
> @@ -0,0 +1,12 @@
> +$OpenBSD$
> +--- scripts/build.py.orig    Sun Jul 31 23:17:00 2011
> ++++ scripts/build.py Sat Mar 17 15:19:47 2012
> +@@ -276,7 +276,7 @@ if flag_make_release:
> +     os.chdir(src_dir_teeworlds)
> +     command = '"%s/%s/scripts/make_release.py" %s %s' % (work_dir, 
> src_dir_teeworlds, version_teeworlds, platform)
> +     if os.name != "nt":
> +-            command = "python %s" % command
> ++            command = "${MODPY_BIN} %s" % command
> +     if os.system(command) != 0:
> +             bail("failed to make a relase of %s" % name)
> +     final_output = "FAIL"
> Index: patches/patch-scripts_compiler_py
> ===================================================================
> RCS file: patches/patch-scripts_compiler_py
> diff -N patches/patch-scripts_compiler_py
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-scripts_compiler_py 30 Aug 2015 12:40:14 -0000
> @@ -0,0 +1,9 @@
> +$OpenBSD$
> +--- scripts/compiler.py.orig Sun Jul 31 23:17:00 2011
> ++++ scripts/compiler.py      Sat Mar 17 15:22:43 2012
> +@@ -1,4 +1,4 @@
> +-#!/usr/bin/python
> ++#!${MODPY_BIN}
> + 
> + import sys
> + import struct
> Index: patches/patch-scripts_font_installer_sh
> ===================================================================
> RCS file: /cvs/ports/games/teeworlds/patches/patch-scripts_font_installer_sh,v
> retrieving revision 1.1.1.1
> diff -u -p -r1.1.1.1 patch-scripts_font_installer_sh
> --- patches/patch-scripts_font_installer_sh   18 Jan 2009 17:53:36 -0000      
> 1.1.1.1
> +++ patches/patch-scripts_font_installer_sh   30 Aug 2015 12:40:14 -0000
> @@ -1,6 +1,6 @@
>  $OpenBSD: patch-scripts_font_installer_sh,v 1.1.1.1 2009/01/18 17:53:36 
> ajacoutot Exp $
> ---- scripts/font_installer.sh.orig   Fri Jan 16 17:18:33 2009
> -+++ scripts/font_installer.sh        Fri Jan 16 17:18:51 2009
> +--- scripts/font_installer.sh.orig   Sun Jul 31 23:17:00 2011
> ++++ scripts/font_installer.sh        Sat Mar 17 15:19:57 2012
>  @@ -1,3 +1,3 @@
>   echo Generating .fnts...
>   ../../font_generator/a.out
> Index: patches/patch-scripts_make_src_py
> ===================================================================
> RCS file: patches/patch-scripts_make_src_py
> diff -N patches/patch-scripts_make_src_py
> --- patches/patch-scripts_make_src_py 18 Jan 2009 17:53:36 -0000      1.1.1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,12 +0,0 @@
> -$OpenBSD: patch-scripts_make_src_py,v 1.1.1.1 2009/01/18 17:53:36 ajacoutot 
> Exp $
> ---- scripts/make_src.py.orig Fri Jan 16 17:17:44 2009
> -+++ scripts/make_src.py      Fri Jan 16 17:18:15 2009
> -@@ -34,7 +34,7 @@ os.chdir(root_dir)
> - if 1:
> -     os.system("svn export svn://svn.teeworlds.com/teeworlds/%s teeworlds" % 
> svn_tree)
> -     os.chdir("teeworlds")
> --    os.system("python scripts/make_release.py %s src" % version)
> -+    os.system("${MODPY_BIN} scripts/make_release.py %s src" % version)
> -     os.chdir(root_dir)
> -     for f in os.listdir("teeworlds"):
> -             if "teeworlds" in f and "src" in f and (".zip" in f or 
> ".tar.gz" in f):
> Index: patches/patch-src_base_detect_h
> ===================================================================
> RCS file: patches/patch-src_base_detect_h
> diff -N patches/patch-src_base_detect_h
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_base_detect_h   30 Aug 2015 12:40:14 -0000
> @@ -0,0 +1,25 @@
> +$OpenBSD$
> +
> +Fix endianness detection.
> +
> +--- src/base/detect.h.orig   Wed Nov 19 23:08:22 2014
> ++++ src/base/detect.h        Sat Aug 22 16:44:40 2015
> +@@ -78,15 +78,15 @@
> + 
> + /* use gcc endianness definitions when available */
> + #if defined(__GNUC__) && !defined(__APPLE__) && !defined(__MINGW32__) && 
> !defined(__sun)
> +-    #if defined(__FreeBSD__) || defined(__OpenBSD__)
> ++    #if defined(__FreeBSD__)
> +             #include <sys/endian.h>
> +     #else
> +             #include <endian.h>
> +     #endif
> + 
> +-    #if __BYTE_ORDER == __LITTLE_ENDIAN
> ++    #if BYTE_ORDER == LITTLE_ENDIAN
> +             #define CONF_ARCH_ENDIAN_LITTLE 1
> +-    #elif __BYTE_ORDER == __BIG_ENDIAN
> ++    #elif BYTE_ORDER == BIG_ENDIAN
> +             #define CONF_ARCH_ENDIAN_BIG 1
> +     #endif
> + #endif
> Index: patches/patch-src_engine_client_ec_snd_c
> ===================================================================
> RCS file: patches/patch-src_engine_client_ec_snd_c
> diff -N patches/patch-src_engine_client_ec_snd_c
> --- patches/patch-src_engine_client_ec_snd_c  10 Feb 2009 00:32:43 -0000      
> 1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,38 +0,0 @@
> -$OpenBSD: patch-src_engine_client_ec_snd_c,v 1.1 2009/02/10 00:32:43 sthen 
> Exp $
> ---- src/engine/client/ec_snd.c.orig  Tue Jan 27 11:41:17 2009
> -+++ src/engine/client/ec_snd.c       Tue Jan 27 12:30:08 2009
> -@@ -139,10 +139,19 @@ static int iabs(int i)
> - 
> - static void mix(short *final_out, unsigned frames)
> - {
> --    int mix_buffer[MAX_FRAMES*2] = {0};
> --    int i, s;
> -+    int *mix_buffer;
> -+    int i, s, mix_buffer_size;
> -     int master_vol;
> - 
> -+    mix_buffer_size = frames * 2 * sizeof(int);
> -+    mix_buffer = malloc(mix_buffer_size);
> -+    if (mix_buffer == NULL)
> -+    {
> -+            printf("malloc failed");
> -+            return;
> -+    }
> -+    bzero(mix_buffer, mix_buffer_size);
> -+
> -     /* aquire lock while we are mixing */
> -     lock_wait(sound_lock);
> -     
> -@@ -239,6 +248,12 @@ static void mix(short *final_out, unsigned frames)
> - #if defined(CONF_ARCH_ENDIAN_BIG)
> -     swap_endian(final_out, sizeof(short), frames * 2);
> - #endif
> -+
> -+    if(mix_buffer != NULL) {
> -+            free(mix_buffer);
> -+            mix_buffer = NULL;
> -+    }
> -+    
> - }
> - 
> - static void sdlcallback(void *unused, Uint8 *stream, int len)
> Index: patches/patch-src_engine_client_sound_cpp
> ===================================================================
> RCS file: patches/patch-src_engine_client_sound_cpp
> diff -N patches/patch-src_engine_client_sound_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_engine_client_sound_cpp 30 Aug 2015 12:40:14 -0000
> @@ -0,0 +1,82 @@
> +$OpenBSD$
> +
> +Make it possible to compile with an external and newer wavpack.
> +From Debian.
> +
> +--- src/engine/client/sound.cpp.orig Wed May  1 13:47:39 2013
> ++++ src/engine/client/sound.cpp      Thu May  8 16:00:47 2014
> +@@ -13,7 +13,7 @@
> + #include "sound.h"
> + 
> + extern "C" { // wavpack
> +-    #include <engine/external/wavpack/wavpack.h>
> ++    #include <wavpack/wavpack.h>
> + }
> + #include <math.h>
> + 
> +@@ -328,17 +328,14 @@ void CSound::RateConvert(int SampleID)
> +     pSample->m_NumFrames = NumFrames;
> + }
> + 
> +-int CSound::ReadData(void *pBuffer, int Size)
> +-{
> +-    return io_read(ms_File, pBuffer, Size);
> +-}
> +-
> + int CSound::LoadWV(const char *pFilename)
> + {
> +     CSample *pSample;
> +     int SampleID = -1;
> +     char aError[100];
> +     WavpackContext *pContext;
> ++    char aWholePath[1024];
> ++    IOHANDLE File;
> + 
> +     // don't waste memory on sound when we are stress testing
> +     if(g_Config.m_DbgStress)
> +@@ -351,19 +348,23 @@ int CSound::LoadWV(const char *pFilename)
> +     if(!m_pStorage)
> +             return -1;
> + 
> +-    ms_File = m_pStorage->OpenFile(pFilename, IOFLAG_READ, 
> IStorage::TYPE_ALL);
> +-    if(!ms_File)
> ++    File = m_pStorage->OpenFile(pFilename, IOFLAG_READ, IStorage::TYPE_ALL, 
> aWholePath, sizeof(aWholePath));
> ++    if(!File)
> +     {
> +             dbg_msg("sound/wv", "failed to open file. filename='%s'", 
> pFilename);
> +             return -1;
> +     }
> ++    else
> ++    {
> ++            io_close(File);
> ++    }
> + 
> +     SampleID = AllocID();
> +     if(SampleID < 0)
> +             return -1;
> +     pSample = &m_aSamples[SampleID];
> + 
> +-    pContext = WavpackOpenFileInput(ReadData, aError);
> ++    pContext = WavpackOpenFileInput(aWholePath, aError, OPEN_2CH_MAX, 0);
> +     if (pContext)
> +     {
> +             int m_aSamples = WavpackGetNumSamples(pContext);
> +@@ -419,9 +420,6 @@ int CSound::LoadWV(const char *pFilename)
> +             dbg_msg("sound/wv", "failed to open %s: %s", pFilename, aError);
> +     }
> + 
> +-    io_close(ms_File);
> +-    ms_File = NULL;
> +-
> +     if(g_Config.m_Debug)
> +             dbg_msg("sound/wv", "loaded %s", pFilename);
> + 
> +@@ -526,8 +524,6 @@ void CSound::StopAll()
> +     }
> +     lock_release(m_SoundLock);
> + }
> +-
> +-IOHANDLE CSound::ms_File = 0;
> + 
> + IEngineSound *CreateEngineSound() { return new CSound; }
> + 
> Index: patches/patch-src_engine_client_sound_h
> ===================================================================
> RCS file: patches/patch-src_engine_client_sound_h
> diff -N patches/patch-src_engine_client_sound_h
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_engine_client_sound_h   30 Aug 2015 12:40:14 -0000
> @@ -0,0 +1,18 @@
> +$OpenBSD$
> +
> +Make it possible to compile with an external and newer wavpack.
> +From Debian.
> +
> +--- src/engine/client/sound.h.orig   Wed May  1 13:47:39 2013
> ++++ src/engine/client/sound.h        Thu May  8 15:58:08 2014
> +@@ -21,10 +21,6 @@ class CSound : public IEngineSound (public)
> + 
> +     static void RateConvert(int SampleID);
> + 
> +-    // TODO: Refactor: clean this mess up
> +-    static IOHANDLE ms_File;
> +-    static int ReadData(void *pBuffer, int Size);
> +-
> +     virtual bool IsSoundEnabled() { return m_SoundEnabled != 0; }
> + 
> +     virtual int LoadWV(const char *pFilename);
> Index: patches/patch-src_engine_e_engine_c
> ===================================================================
> RCS file: patches/patch-src_engine_e_engine_c
> diff -N patches/patch-src_engine_e_engine_c
> --- patches/patch-src_engine_e_engine_c       18 Jan 2009 17:53:36 -0000      
> 1.1.1.1
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,12 +0,0 @@
> -$OpenBSD: patch-src_engine_e_engine_c,v 1.1.1.1 2009/01/18 17:53:36 
> ajacoutot Exp $
> ---- src/engine/e_engine.c.orig       Fri Jan 16 17:15:42 2009
> -+++ src/engine/e_engine.c    Fri Jan 16 17:16:30 2009
> -@@ -13,7 +13,7 @@
> - #include "e_linereader.h"
> - 
> - /* compiled-in data-dir path */
> --#define DATA_DIR "data"
> -+#define DATA_DIR "${PREFIX}/share/teeworlds/data"
> - 
> - static JOBPOOL hostlookuppool;
> - static int engine_find_datadir(char *argv0);
> Index: patches/patch-src_engine_shared_storage_cpp
> ===================================================================
> RCS file: patches/patch-src_engine_shared_storage_cpp
> diff -N patches/patch-src_engine_shared_storage_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_engine_shared_storage_cpp       30 Aug 2015 12:40:14 
> -0000
> @@ -0,0 +1,12 @@
> +$OpenBSD$
> +--- src/engine/shared/storage.cpp.orig       Sun Jul 31 23:17:00 2011
> ++++ src/engine/shared/storage.cpp    Sat Mar 17 15:21:21 2012
> +@@ -5,7 +5,7 @@
> + #include "linereader.h"
> + 
> + // compiled-in data-dir path
> +-#define DATA_DIR "data"
> ++#define DATA_DIR "${PREFIX}/share/teeworlds/data"
> + 
> + class CStorage : public IStorage
> + {
> Index: patches/patch-src_game_client_gameclient_cpp
> ===================================================================
> RCS file: patches/patch-src_game_client_gameclient_cpp
> diff -N patches/patch-src_game_client_gameclient_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_game_client_gameclient_cpp      30 Aug 2015 12:40:14 
> -0000
> @@ -0,0 +1,24 @@
> +$OpenBSD$
> +
> +Don't require a local copy of DejavuSans.ttf.
> +
> +--- src/game/client/gameclient.cpp.orig      Wed May  1 13:47:39 2013
> ++++ src/game/client/gameclient.cpp   Thu May  8 16:59:57 2014
> +@@ -240,7 +240,7 @@ void CGameClient::OnInit()
> +     // load default font
> +     static CFont *pDefaultFont = 0;
> +     char aFilename[512];
> +-    IOHANDLE File = Storage()->OpenFile("fonts/DejaVuSans.ttf", 
> IOFLAG_READ, IStorage::TYPE_ALL, aFilename, sizeof(aFilename));
> ++    IOHANDLE File = 
> Storage()->OpenFile("${X11BASE}/lib/X11/fonts/TTF/DejaVuSans.ttf", 
> IOFLAG_READ, IStorage::TYPE_ALL, aFilename, sizeof(aFilename));
> +     if(File)
> +     {
> +             io_close(File);
> +@@ -248,7 +248,7 @@ void CGameClient::OnInit()
> +             TextRender()->SetDefaultFont(pDefaultFont);
> +     }
> +     if(!pDefaultFont)
> +-            Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "gameclient", 
> "failed to load font. filename='fonts/DejaVuSans.ttf'");
> ++            Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "gameclient", 
> "failed to load font. filename='DejaVuSans.ttf'");
> + 
> +     // init all components
> +     for(int i = m_All.m_Num-1; i >= 0; --i)
> Index: pkg/DESCR
> ===================================================================
> RCS file: /cvs/ports/games/teeworlds/pkg/DESCR,v
> retrieving revision 1.1.1.1
> diff -u -p -r1.1.1.1 DESCR
> --- pkg/DESCR 18 Jan 2009 17:53:36 -0000      1.1.1.1
> +++ pkg/DESCR 30 Aug 2015 12:40:14 -0000
> @@ -1,3 +1,3 @@
> -Teeworlds is a free online multiplayer game, available for all major 
> -operating systems. Battle with up to 16 players in a variety of game 
> +Teeworlds is a free online multiplayer game, available for all major
> +operating systems. Battle with up to 16 players in a variety of game
>  modes, including Team Deathmatch and Capture The Flag.
> Index: pkg/PLIST
> ===================================================================
> RCS file: /cvs/ports/games/teeworlds/pkg/PLIST,v
> retrieving revision 1.1.1.1
> diff -u -p -r1.1.1.1 PLIST
> --- pkg/PLIST 18 Jan 2009 17:53:36 -0000      1.1.1.1
> +++ pkg/PLIST 30 Aug 2015 12:40:14 -0000
> @@ -34,6 +34,7 @@ share/teeworlds/data/audio/hook_loop-02.
>  share/teeworlds/data/audio/hook_noattach-01.wv
>  share/teeworlds/data/audio/hook_noattach-02.wv
>  share/teeworlds/data/audio/hook_noattach-03.wv
> +share/teeworlds/data/audio/music_menu.wv
>  share/teeworlds/data/audio/sfx_ctf_cap_pl.wv
>  share/teeworlds/data/audio/sfx_ctf_drop.wv
>  share/teeworlds/data/audio/sfx_ctf_grab_en.wv
> @@ -45,6 +46,7 @@ share/teeworlds/data/audio/sfx_hit_weak-
>  share/teeworlds/data/audio/sfx_hit_weak-02.wv
>  share/teeworlds/data/audio/sfx_hit_weak-03.wv
>  share/teeworlds/data/audio/sfx_msg-client.wv
> +share/teeworlds/data/audio/sfx_msg-highlight.wv
>  share/teeworlds/data/audio/sfx_msg-server.wv
>  share/teeworlds/data/audio/sfx_pickup_arm-01.wv
>  share/teeworlds/data/audio/sfx_pickup_arm-02.wv
> @@ -137,73 +139,317 @@ share/teeworlds/data/blob.png
>  share/teeworlds/data/browse_icons.png
>  share/teeworlds/data/console.png
>  share/teeworlds/data/console_bar.png
> +share/teeworlds/data/countryflags/
> +share/teeworlds/data/countryflags/AD.png
> +share/teeworlds/data/countryflags/AE.png
> +share/teeworlds/data/countryflags/AF.png
> +share/teeworlds/data/countryflags/AG.png
> +share/teeworlds/data/countryflags/AI.png
> +share/teeworlds/data/countryflags/AL.png
> +share/teeworlds/data/countryflags/AM.png
> +share/teeworlds/data/countryflags/AO.png
> +share/teeworlds/data/countryflags/AR.png
> +share/teeworlds/data/countryflags/AS.png
> +share/teeworlds/data/countryflags/AT.png
> +share/teeworlds/data/countryflags/AU.png
> +share/teeworlds/data/countryflags/AW.png
> +share/teeworlds/data/countryflags/AX.png
> +share/teeworlds/data/countryflags/AZ.png
> +share/teeworlds/data/countryflags/BA.png
> +share/teeworlds/data/countryflags/BB.png
> +share/teeworlds/data/countryflags/BD.png
> +share/teeworlds/data/countryflags/BE.png
> +share/teeworlds/data/countryflags/BF.png
> +share/teeworlds/data/countryflags/BG.png
> +share/teeworlds/data/countryflags/BH.png
> +share/teeworlds/data/countryflags/BI.png
> +share/teeworlds/data/countryflags/BJ.png
> +share/teeworlds/data/countryflags/BL.png
> +share/teeworlds/data/countryflags/BM.png
> +share/teeworlds/data/countryflags/BN.png
> +share/teeworlds/data/countryflags/BO.png
> +share/teeworlds/data/countryflags/BR.png
> +share/teeworlds/data/countryflags/BS.png
> +share/teeworlds/data/countryflags/BT.png
> +share/teeworlds/data/countryflags/BW.png
> +share/teeworlds/data/countryflags/BY.png
> +share/teeworlds/data/countryflags/BZ.png
> +share/teeworlds/data/countryflags/CA.png
> +share/teeworlds/data/countryflags/CC.png
> +share/teeworlds/data/countryflags/CD.png
> +share/teeworlds/data/countryflags/CF.png
> +share/teeworlds/data/countryflags/CG.png
> +share/teeworlds/data/countryflags/CH.png
> +share/teeworlds/data/countryflags/CI.png
> +share/teeworlds/data/countryflags/CK.png
> +share/teeworlds/data/countryflags/CL.png
> +share/teeworlds/data/countryflags/CM.png
> +share/teeworlds/data/countryflags/CN.png
> +share/teeworlds/data/countryflags/CO.png
> +share/teeworlds/data/countryflags/CR.png
> +share/teeworlds/data/countryflags/CU.png
> +share/teeworlds/data/countryflags/CV.png
> +share/teeworlds/data/countryflags/CW.png
> +share/teeworlds/data/countryflags/CX.png
> +share/teeworlds/data/countryflags/CY.png
> +share/teeworlds/data/countryflags/CZ.png
> +share/teeworlds/data/countryflags/DE.png
> +share/teeworlds/data/countryflags/DJ.png
> +share/teeworlds/data/countryflags/DK.png
> +share/teeworlds/data/countryflags/DM.png
> +share/teeworlds/data/countryflags/DO.png
> +share/teeworlds/data/countryflags/DZ.png
> +share/teeworlds/data/countryflags/EC.png
> +share/teeworlds/data/countryflags/EE.png
> +share/teeworlds/data/countryflags/EG.png
> +share/teeworlds/data/countryflags/EH.png
> +share/teeworlds/data/countryflags/ER.png
> +share/teeworlds/data/countryflags/ES.png
> +share/teeworlds/data/countryflags/ET.png
> +share/teeworlds/data/countryflags/FI.png
> +share/teeworlds/data/countryflags/FJ.png
> +share/teeworlds/data/countryflags/FK.png
> +share/teeworlds/data/countryflags/FM.png
> +share/teeworlds/data/countryflags/FO.png
> +share/teeworlds/data/countryflags/FR.png
> +share/teeworlds/data/countryflags/GA.png
> +share/teeworlds/data/countryflags/GB.png
> +share/teeworlds/data/countryflags/GD.png
> +share/teeworlds/data/countryflags/GE.png
> +share/teeworlds/data/countryflags/GF.png
> +share/teeworlds/data/countryflags/GG.png
> +share/teeworlds/data/countryflags/GH.png
> +share/teeworlds/data/countryflags/GI.png
> +share/teeworlds/data/countryflags/GL.png
> +share/teeworlds/data/countryflags/GM.png
> +share/teeworlds/data/countryflags/GN.png
> +share/teeworlds/data/countryflags/GP.png
> +share/teeworlds/data/countryflags/GQ.png
> +share/teeworlds/data/countryflags/GR.png
> +share/teeworlds/data/countryflags/GS.png
> +share/teeworlds/data/countryflags/GT.png
> +share/teeworlds/data/countryflags/GU.png
> +share/teeworlds/data/countryflags/GW.png
> +share/teeworlds/data/countryflags/GY.png
> +share/teeworlds/data/countryflags/HK.png
> +share/teeworlds/data/countryflags/HN.png
> +share/teeworlds/data/countryflags/HR.png
> +share/teeworlds/data/countryflags/HT.png
> +share/teeworlds/data/countryflags/HU.png
> +share/teeworlds/data/countryflags/ID.png
> +share/teeworlds/data/countryflags/IE.png
> +share/teeworlds/data/countryflags/IL.png
> +share/teeworlds/data/countryflags/IM.png
> +share/teeworlds/data/countryflags/IN.png
> +share/teeworlds/data/countryflags/IO.png
> +share/teeworlds/data/countryflags/IQ.png
> +share/teeworlds/data/countryflags/IR.png
> +share/teeworlds/data/countryflags/IS.png
> +share/teeworlds/data/countryflags/IT.png
> +share/teeworlds/data/countryflags/JE.png
> +share/teeworlds/data/countryflags/JM.png
> +share/teeworlds/data/countryflags/JO.png
> +share/teeworlds/data/countryflags/JP.png
> +share/teeworlds/data/countryflags/KE.png
> +share/teeworlds/data/countryflags/KG.png
> +share/teeworlds/data/countryflags/KH.png
> +share/teeworlds/data/countryflags/KI.png
> +share/teeworlds/data/countryflags/KM.png
> +share/teeworlds/data/countryflags/KN.png
> +share/teeworlds/data/countryflags/KP.png
> +share/teeworlds/data/countryflags/KR.png
> +share/teeworlds/data/countryflags/KW.png
> +share/teeworlds/data/countryflags/KY.png
> +share/teeworlds/data/countryflags/KZ.png
> +share/teeworlds/data/countryflags/LA.png
> +share/teeworlds/data/countryflags/LB.png
> +share/teeworlds/data/countryflags/LC.png
> +share/teeworlds/data/countryflags/LI.png
> +share/teeworlds/data/countryflags/LK.png
> +share/teeworlds/data/countryflags/LR.png
> +share/teeworlds/data/countryflags/LS.png
> +share/teeworlds/data/countryflags/LT.png
> +share/teeworlds/data/countryflags/LU.png
> +share/teeworlds/data/countryflags/LV.png
> +share/teeworlds/data/countryflags/LY.png
> +share/teeworlds/data/countryflags/MA.png
> +share/teeworlds/data/countryflags/MC.png
> +share/teeworlds/data/countryflags/MD.png
> +share/teeworlds/data/countryflags/ME.png
> +share/teeworlds/data/countryflags/MF.png
> +share/teeworlds/data/countryflags/MG.png
> +share/teeworlds/data/countryflags/MH.png
> +share/teeworlds/data/countryflags/MK.png
> +share/teeworlds/data/countryflags/ML.png
> +share/teeworlds/data/countryflags/MM.png
> +share/teeworlds/data/countryflags/MN.png
> +share/teeworlds/data/countryflags/MO.png
> +share/teeworlds/data/countryflags/MP.png
> +share/teeworlds/data/countryflags/MQ.png
> +share/teeworlds/data/countryflags/MR.png
> +share/teeworlds/data/countryflags/MS.png
> +share/teeworlds/data/countryflags/MT.png
> +share/teeworlds/data/countryflags/MU.png
> +share/teeworlds/data/countryflags/MV.png
> +share/teeworlds/data/countryflags/MW.png
> +share/teeworlds/data/countryflags/MX.png
> +share/teeworlds/data/countryflags/MY.png
> +share/teeworlds/data/countryflags/MZ.png
> +share/teeworlds/data/countryflags/NA.png
> +share/teeworlds/data/countryflags/NC.png
> +share/teeworlds/data/countryflags/NE.png
> +share/teeworlds/data/countryflags/NF.png
> +share/teeworlds/data/countryflags/NG.png
> +share/teeworlds/data/countryflags/NI.png
> +share/teeworlds/data/countryflags/NL.png
> +share/teeworlds/data/countryflags/NO.png
> +share/teeworlds/data/countryflags/NP.png
> +share/teeworlds/data/countryflags/NR.png
> +share/teeworlds/data/countryflags/NU.png
> +share/teeworlds/data/countryflags/NZ.png
> +share/teeworlds/data/countryflags/OM.png
> +share/teeworlds/data/countryflags/PA.png
> +share/teeworlds/data/countryflags/PE.png
> +share/teeworlds/data/countryflags/PF.png
> +share/teeworlds/data/countryflags/PG.png
> +share/teeworlds/data/countryflags/PH.png
> +share/teeworlds/data/countryflags/PK.png
> +share/teeworlds/data/countryflags/PL.png
> +share/teeworlds/data/countryflags/PM.png
> +share/teeworlds/data/countryflags/PN.png
> +share/teeworlds/data/countryflags/PR.png
> +share/teeworlds/data/countryflags/PT.png
> +share/teeworlds/data/countryflags/PW.png
> +share/teeworlds/data/countryflags/PY.png
> +share/teeworlds/data/countryflags/QA.png
> +share/teeworlds/data/countryflags/RE.png
> +share/teeworlds/data/countryflags/RO.png
> +share/teeworlds/data/countryflags/RS.png
> +share/teeworlds/data/countryflags/RU.png
> +share/teeworlds/data/countryflags/RW.png
> +share/teeworlds/data/countryflags/SA.png
> +share/teeworlds/data/countryflags/SB.png
> +share/teeworlds/data/countryflags/SC.png
> +share/teeworlds/data/countryflags/SD.png
> +share/teeworlds/data/countryflags/SE.png
> +share/teeworlds/data/countryflags/SG.png
> +share/teeworlds/data/countryflags/SH.png
> +share/teeworlds/data/countryflags/SI.png
> +share/teeworlds/data/countryflags/SK.png
> +share/teeworlds/data/countryflags/SL.png
> +share/teeworlds/data/countryflags/SM.png
> +share/teeworlds/data/countryflags/SN.png
> +share/teeworlds/data/countryflags/SO.png
> +share/teeworlds/data/countryflags/SR.png
> +share/teeworlds/data/countryflags/SS.png
> +share/teeworlds/data/countryflags/ST.png
> +share/teeworlds/data/countryflags/SV.png
> +share/teeworlds/data/countryflags/SX.png
> +share/teeworlds/data/countryflags/SY.png
> +share/teeworlds/data/countryflags/SZ.png
> +share/teeworlds/data/countryflags/TC.png
> +share/teeworlds/data/countryflags/TD.png
> +share/teeworlds/data/countryflags/TF.png
> +share/teeworlds/data/countryflags/TG.png
> +share/teeworlds/data/countryflags/TH.png
> +share/teeworlds/data/countryflags/TJ.png
> +share/teeworlds/data/countryflags/TK.png
> +share/teeworlds/data/countryflags/TL.png
> +share/teeworlds/data/countryflags/TM.png
> +share/teeworlds/data/countryflags/TN.png
> +share/teeworlds/data/countryflags/TO.png
> +share/teeworlds/data/countryflags/TR.png
> +share/teeworlds/data/countryflags/TT.png
> +share/teeworlds/data/countryflags/TV.png
> +share/teeworlds/data/countryflags/TW.png
> +share/teeworlds/data/countryflags/TZ.png
> +share/teeworlds/data/countryflags/UA.png
> +share/teeworlds/data/countryflags/UG.png
> +share/teeworlds/data/countryflags/US.png
> +share/teeworlds/data/countryflags/UY.png
> +share/teeworlds/data/countryflags/UZ.png
> +share/teeworlds/data/countryflags/VA.png
> +share/teeworlds/data/countryflags/VC.png
> +share/teeworlds/data/countryflags/VE.png
> +share/teeworlds/data/countryflags/VG.png
> +share/teeworlds/data/countryflags/VI.png
> +share/teeworlds/data/countryflags/VN.png
> +share/teeworlds/data/countryflags/VU.png
> +share/teeworlds/data/countryflags/WF.png
> +share/teeworlds/data/countryflags/WS.png
> +share/teeworlds/data/countryflags/XEN.png
> +share/teeworlds/data/countryflags/XNI.png
> +share/teeworlds/data/countryflags/XSC.png
> +share/teeworlds/data/countryflags/XWA.png
> +share/teeworlds/data/countryflags/YE.png
> +share/teeworlds/data/countryflags/ZA.png
> +share/teeworlds/data/countryflags/ZM.png
> +share/teeworlds/data/countryflags/ZW.png
> +share/teeworlds/data/countryflags/default.png
> +share/teeworlds/data/countryflags/index.txt
>  share/teeworlds/data/debug_font.png
> +share/teeworlds/data/demo_buttons.png
>  share/teeworlds/data/editor/
>  share/teeworlds/data/editor/background.png
>  share/teeworlds/data/editor/checker.png
>  share/teeworlds/data/editor/cursor.png
> +share/teeworlds/data/editor/desert_main.rules
>  share/teeworlds/data/editor/entities.png
> +share/teeworlds/data/editor/grass_main.rules
> +share/teeworlds/data/editor/jungle_main.rules
> +share/teeworlds/data/editor/winter_main.rules
>  share/teeworlds/data/emoticons.png
> -share/teeworlds/data/fonts/
> -share/teeworlds/data/fonts/default_font10.png
> -share/teeworlds/data/fonts/default_font10.tfnt
> -share/teeworlds/data/fonts/default_font10_b.png
> -share/teeworlds/data/fonts/default_font11.png
> -share/teeworlds/data/fonts/default_font11.tfnt
> -share/teeworlds/data/fonts/default_font11_b.png
> -share/teeworlds/data/fonts/default_font12.png
> -share/teeworlds/data/fonts/default_font12.tfnt
> -share/teeworlds/data/fonts/default_font12_b.png
> -share/teeworlds/data/fonts/default_font13.png
> -share/teeworlds/data/fonts/default_font13.tfnt
> -share/teeworlds/data/fonts/default_font13_b.png
> -share/teeworlds/data/fonts/default_font14.png
> -share/teeworlds/data/fonts/default_font14.tfnt
> -share/teeworlds/data/fonts/default_font14_b.png
> -share/teeworlds/data/fonts/default_font15.png
> -share/teeworlds/data/fonts/default_font15.tfnt
> -share/teeworlds/data/fonts/default_font15_b.png
> -share/teeworlds/data/fonts/default_font16.png
> -share/teeworlds/data/fonts/default_font16.tfnt
> -share/teeworlds/data/fonts/default_font16_b.png
> -share/teeworlds/data/fonts/default_font17.png
> -share/teeworlds/data/fonts/default_font17.tfnt
> -share/teeworlds/data/fonts/default_font17_b.png
> -share/teeworlds/data/fonts/default_font18.png
> -share/teeworlds/data/fonts/default_font18.tfnt
> -share/teeworlds/data/fonts/default_font18_b.png
> -share/teeworlds/data/fonts/default_font19.png
> -share/teeworlds/data/fonts/default_font19.tfnt
> -share/teeworlds/data/fonts/default_font19_b.png
> -share/teeworlds/data/fonts/default_font20.png
> -share/teeworlds/data/fonts/default_font20.tfnt
> -share/teeworlds/data/fonts/default_font20_b.png
> -share/teeworlds/data/fonts/default_font36.png
> -share/teeworlds/data/fonts/default_font36.tfnt
> -share/teeworlds/data/fonts/default_font36_b.png
> -share/teeworlds/data/fonts/default_font8.png
> -share/teeworlds/data/fonts/default_font8.tfnt
> -share/teeworlds/data/fonts/default_font8_b.png
> -share/teeworlds/data/fonts/default_font9.png
> -share/teeworlds/data/fonts/default_font9.tfnt
> -share/teeworlds/data/fonts/default_font9_b.png
> +share/teeworlds/data/file_icons.png
>  share/teeworlds/data/game.png
> +share/teeworlds/data/gui_buttons.png
>  share/teeworlds/data/gui_cursor.png
> +share/teeworlds/data/gui_icons.png
>  share/teeworlds/data/gui_logo.png
> +share/teeworlds/data/languages/
> +share/teeworlds/data/languages/belarusian.txt
> +share/teeworlds/data/languages/bosnian.txt
> +share/teeworlds/data/languages/brazilian_portuguese.txt
> +share/teeworlds/data/languages/bulgarian.txt
> +share/teeworlds/data/languages/czech.txt
> +share/teeworlds/data/languages/danish.txt
> +share/teeworlds/data/languages/dutch.txt
> +share/teeworlds/data/languages/finnish.txt
> +share/teeworlds/data/languages/french.txt
> +share/teeworlds/data/languages/german.txt
> +share/teeworlds/data/languages/hungarian.txt
> +share/teeworlds/data/languages/index.txt
> +share/teeworlds/data/languages/italian.txt
> +share/teeworlds/data/languages/kyrgyz.txt
> +share/teeworlds/data/languages/norwegian.txt
> +share/teeworlds/data/languages/polish.txt
> +share/teeworlds/data/languages/portuguese.txt
> +share/teeworlds/data/languages/romanian.txt
> +share/teeworlds/data/languages/russian.txt
> +share/teeworlds/data/languages/serbian.txt
> +share/teeworlds/data/languages/slovak.txt
> +share/teeworlds/data/languages/spanish.txt
> +share/teeworlds/data/languages/swedish.txt
> +share/teeworlds/data/languages/turkish.txt
> +share/teeworlds/data/languages/ukrainian.txt
>  share/teeworlds/data/mapres/
>  share/teeworlds/data/mapres/bg_cloud1.png
>  share/teeworlds/data/mapres/bg_cloud2.png
>  share/teeworlds/data/mapres/bg_cloud3.png
> +share/teeworlds/data/mapres/desert_doodads.png
>  share/teeworlds/data/mapres/desert_main.png
>  share/teeworlds/data/mapres/desert_mountains.png
> +share/teeworlds/data/mapres/desert_mountains2.png
>  share/teeworlds/data/mapres/desert_sun.png
> +share/teeworlds/data/mapres/generic_deathtiles.png
>  share/teeworlds/data/mapres/generic_unhookable.png
>  share/teeworlds/data/mapres/grass_doodads.png
>  share/teeworlds/data/mapres/grass_main.png
> +share/teeworlds/data/mapres/jungle_background.png
> +share/teeworlds/data/mapres/jungle_deathtiles.png
>  share/teeworlds/data/mapres/jungle_doodads.png
>  share/teeworlds/data/mapres/jungle_main.png
> -share/teeworlds/data/mapres/jungle_night.png
> -share/teeworlds/data/mapres/jungle_night2.png
> +share/teeworlds/data/mapres/jungle_midground.png
> +share/teeworlds/data/mapres/jungle_unhookables.png
>  share/teeworlds/data/mapres/moon.png
>  share/teeworlds/data/mapres/mountains.png
>  share/teeworlds/data/mapres/snow.png
> @@ -211,12 +457,17 @@ share/teeworlds/data/mapres/stars.png
>  share/teeworlds/data/mapres/sun.png
>  share/teeworlds/data/mapres/winter_doodads.png
>  share/teeworlds/data/mapres/winter_main.png
> +share/teeworlds/data/mapres/winter_mountains.png
> +share/teeworlds/data/mapres/winter_mountains2.png
> +share/teeworlds/data/mapres/winter_mountains3.png
>  share/teeworlds/data/maps/
>  share/teeworlds/data/maps/ctf1.map
>  share/teeworlds/data/maps/ctf2.map
>  share/teeworlds/data/maps/ctf3.map
>  share/teeworlds/data/maps/ctf4.map
>  share/teeworlds/data/maps/ctf5.map
> +share/teeworlds/data/maps/ctf6.map
> +share/teeworlds/data/maps/ctf7.map
>  share/teeworlds/data/maps/dm1.map
>  share/teeworlds/data/maps/dm2.map
>  share/teeworlds/data/maps/dm6.map
> 

Reply via email to