Hi, The following diff updates games/teeworlds from 0.6.4 to 0.7.2.
This requires my new devel/bam port, sent here: https://marc.info/?l=openbsd-ports&m=155008600618612&w=2 Some changes: * this now uses SDL2 * move bam to an independent port, to ease maintenance * this can now run on strict-alignment archs (at least teeworlds_srv) * don't bother removing the extra DejaVuSans.ttf font from upstream, because they made this harder * don't bother patching some scripts which aren't used during the build * make the gfx_texture_quality setting a noop at the moment, to work around some libGLU crashes. (I'm also updating my email address in MAINTAINER, while here) The way to deal with gcc/clang in bam is really perfectible, but teeworlds is its sole consumer and I've verified that it builds on amd64, macppc and loongson. As for the libGLU crashes, they're random and I have no idea if the bug is in this port, X or SDL2 (I find SDL2 a bit less reliable than SDL1, especially on macppc). gdb output here, if someone understands which part is to blame: https://www.dwatteau.fr/tmp/gdb_teeworlds_072_crash.txt If you don't have an XDG desktop, you might need to mkdir ~/.local/share to avoid a crash on startup. This will be fixed in the next release. The following diff is also available here, in case it gets corrupted: https://www.dwatteau.fr/tmp/teeworlds_072_update.diff Thanks. Index: Makefile =================================================================== RCS file: /cvs/ports/games/teeworlds/Makefile,v retrieving revision 1.24 diff -u -p -r1.24 Makefile --- Makefile 24 Oct 2018 14:28:04 -0000 1.24 +++ Makefile 10 Mar 2019 09:54:36 -0000 @@ -1,77 +1,55 @@ # $OpenBSD: Makefile,v 1.24 2018/10/24 14:28:04 sthen Exp $ -# Crashes on strict-alignment archs, see: src/base/system.c:164 -ONLY_FOR_ARCHS= amd64 i386 powerpc - COMMENT= platform game featuring buggers equipped with weapons -V= 0.6.4 +V= 0.7.2 DISTNAME= teeworlds-${V}-src PKGNAME= teeworlds-${V} +EXTRACT_SUFX= .tar.xz CATEGORIES= games -REVISION= 1 - -HOMEPAGE= http://www.teeworlds.com/ -MAINTAINER= Donovan Watteau <tso...@gmail.com> +HOMEPAGE= https://www.teeworlds.com/ -BAM_VERSION= 0.4.0 -BAM_WRKSRC= ${WRKSRC}/bam-${BAM_VERSION} +MAINTAINER= Donovan Watteau <cont...@dwatteau.fr> -MASTER_SITES= https://downloads.teeworlds.com/ -DISTFILES= ${DISTNAME}${EXTRACT_SUFX} bam-${BAM_VERSION}${EXTRACT_SUFX} +MASTER_SITES= https://github.com/teeworlds/teeworlds/releases/download/${V}/ # BSD-like PERMIT_PACKAGE_CDROM= Yes -WANTLIB= GL GLU SDL X11 c freetype m pthread ${COMPILER_LIBCXX} wavpack z +WANTLIB= GL GLU SDL2 X11 c freetype m pthread ${COMPILER_LIBCXX} wavpack z + +COMPILER= base-clang ports-gcc base-gcc -COMPILER = base-clang ports-gcc base-gcc +BUILD_DEPENDS= devel/bam LIB_DEPENDS= audio/wavpack \ - devel/sdl + devel/sdl2 MODULES= lang/python MODPY_RUNDEP= No -SUBST_VARS= CC CXX CFLAGS CXXFLAGS X11BASE +SUBST_VARS= CC NO_TEST= Yes # Give it a chance on ppc CXXFLAGS+= -fsigned-char -post-extract: - @mv ${WRKDIR}/bam-${BAM_VERSION} ${BAM_WRKSRC} - pre-configure: - @${SUBST_CMD} ${WRKSRC}/src/engine/shared/storage.cpp \ + ${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}/scripts/make_src.py \ - ${WRKSRC}/bam.lua \ - ${WRKSRC}/configure.lua \ - ${BAM_WRKSRC}/make_unix.sh \ - ${BAM_WRKSRC}/src/driver_gcc.lua \ - ${BAM_WRKSRC}/src/base.lua + ${WRKSRC}/{bam,configure}.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}/bam -a -v release wavpack=${LOCALBASE} + cd ${WRKSRC} && env CXXFLAGS="${CXXFLAGS}" bam -a -v -j ${MAKE_JOBS} \ + conf=release builddir=build wavpack=${LOCALBASE} do-install: - ${INSTALL_PROGRAM} ${WRKSRC}/teeworlds ${PREFIX}/bin - ${INSTALL_PROGRAM} ${WRKSRC}/teeworlds_srv ${PREFIX}/bin + ${INSTALL_PROGRAM} ${WRKSRC}/build/teeworlds{,_srv} ${PREFIX}/bin ${INSTALL_DATA_DIR} ${PREFIX}/share/teeworlds - cd ${WRKSRC}; tar cf - data | tar xf - -C ${PREFIX}/share/teeworlds + cd ${WRKSRC}/build && 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.6 diff -u -p -r1.6 distinfo --- distinfo 30 Nov 2016 18:17:03 -0000 1.6 +++ distinfo 10 Mar 2019 09:54:36 -0000 @@ -1,4 +1,2 @@ -SHA256 (bam-0.4.0.tar.gz) = Xk5JILTSZdpYL2Z3TpseyN37513cAo+6hsEvaG6hjbM= -SHA256 (teeworlds-0.6.4-src.tar.gz) = wmHRnrsAtUUfqizrSnypRcrSrdSLBgRutDtAzMn9mOI= -SIZE (bam-0.4.0.tar.gz) = 206780 -SIZE (teeworlds-0.6.4-src.tar.gz) = 8771622 +SHA256 (teeworlds-0.7.2-src.tar.xz) = mXbF8Rm2HjPi7dQGC10Hpxg6NgR5PdFP0y4qKQnj32M= +SIZE (teeworlds-0.7.2-src.tar.xz) = 8237124 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 --- patches/patch-bam-0_4_0_make_unix_sh 27 Dec 2015 17:56:22 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,13 +0,0 @@ -$OpenBSD: patch-bam-0_4_0_make_unix_sh,v 1.1 2015/12/27 17:56:22 jasper Exp $ - -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 --- patches/patch-bam-0_4_0_src_driver_gcc_lua 27 Dec 2015 17:56:22 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,52 +0,0 @@ -$OpenBSD: patch-bam-0_4_0_src_driver_gcc_lua,v 1.1 2015/12/27 17:56:22 jasper Exp $ - -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: /cvs/ports/games/teeworlds/patches/patch-bam_lua,v retrieving revision 1.1 diff -u -p -r1.1 patch-bam_lua --- patches/patch-bam_lua 27 Dec 2015 17:56:22 -0000 1.1 +++ patches/patch-bam_lua 10 Mar 2019 09:54:36 -0000 @@ -2,27 +2,29 @@ $OpenBSD: patch-bam_lua,v 1.1 2015/12/27 - Don't enforce stack protector - Don't hardcode python +- Don't hardcode gcc or clang +- Don't hardcode supported archs - 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") +Index: bam.lua +--- bam.lua.orig ++++ bam.lua +@@ -7,11 +7,11 @@ 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(OptTestCompileC("minmacosxsdk", "int main(){return 0;}", "-mmacosx-version-min=10.7 -isysroot /Developer/SDKs/MacOSX10.7.sdk")) 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 + generated_src_dir = "build/src" +@@ -25,7 +25,7 @@ function Python(name) + -- Python is usually registered for .py files in Windows return str_replace(name, "/", "\\") end - return "python " .. name @@ -30,44 +32,105 @@ $OpenBSD: patch-bam_lua,v 1.1 2015/12/27 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 +@@ -55,7 +55,7 @@ function ResCompile(scriptfile, compiler) + if compiler == "cl" then + output = PathJoin(generated_icon_dir, PathBase(PathFilename(scriptfile)) .. ".res") + AddJob(output, "rc " .. scriptfile, "rc /fo " .. output .. " " .. scriptfile) +- elseif compiler == "gcc" or compiler == "clang" then ++ else + output = PathJoin(generated_icon_dir, PathBase(PathFilename(scriptfile)) .. ".coff") + AddJob(output, "windres " .. scriptfile, "windres -i " .. scriptfile .. " -o " .. output) end +@@ -77,13 +77,13 @@ end -@@ -187,7 +184,7 @@ function build(settings) + + function GenerateCommonSettings(settings, conf, arch, compiler) +- if compiler == "gcc" or compiler == "clang" then ++ if compiler ~= "cl" then + settings.cc.flags:Add("-Wall", "-fno-exceptions") end - -- compile zlib if needed + -- Compile zlib if needed + local zlib = nil - 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") +@@ -93,8 +93,20 @@ function GenerateCommonSettings(settings, conf, arch, + zlib = Compile(settings, Collect("src/engine/external/zlib/*.c")) end -+ -- compile wavpack if needed ++ -- Compile wavpack if needed ++ local wavpack = nil + 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 ++ settings.cc.include:Add("src/engine/external/wavpack") + 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")) + local md5 = Compile(settings, Collect("src/engine/external/md5/*.c")) +- local wavpack = Compile(settings, Collect("src/engine/external/wavpack/*.c")) + local png = Compile(settings, Collect("src/engine/external/pnglite/*.c")) + local json = Compile(settings, Collect("src/engine/external/json-parser/*.c")) + +@@ -170,16 +182,6 @@ end + function GenerateLinuxSettings(settings, conf, arch, compiler) + if arch == "x86" then + settings.cc.flags:Add("-msse2") -- for the _mm_pause call +- settings.cc.flags:Add("-m32") +- settings.link.flags:Add("-m32") +- elseif arch == "x86_64" then +- settings.cc.flags:Add("-m64") +- settings.link.flags:Add("-m64") +- elseif arch == "armv7l" then +- -- arm 32 bit +- else +- print("Unknown Architecture '" .. arch .. "'. Supported: x86, x86_64") +- os.exit(1) + end + settings.link.libs:Add("pthread") - -- build game components +@@ -198,6 +200,7 @@ function GenerateLinuxSettings(settings, conf, arch, c + BuildServer(settings) + + -- Client ++ settings.link.libs:Add("wavpack") + settings.link.libs:Add("X11") + settings.link.libs:Add("GL") + settings.link.libs:Add("GLU") +@@ -222,7 +225,7 @@ function GenerateWindowsSettings(settings, conf, targe + os.exit(1) + end + settings.cc.flags:Add("/wd4244", "/wd4577") +- elseif compiler == "gcc" or config.compiler.driver == "clang" then ++ else + if target_arch ~= "x86" and target_arch ~= "x86_64" then + print("Unknown Architecture '" .. arch .. "'. Supported: x86, x86_64") + os.exit(1) +@@ -377,17 +380,11 @@ end + function GenerateSettings(conf, arch, builddir, compiler) + local settings = NewSettings() + +- -- Set compiler if explicitly requested +- if compiler == "gcc" then +- SetDriversGCC(settings) +- elseif compiler == "clang" then +- SetDriversClang(settings) +- elseif compiler == "cl" then ++ if compiler == "cl" then + SetDriversCL(settings) + else +- -- apply compiler settings +- config.compiler:Apply(settings) +- compiler = config.compiler.driver ++ -- Assume GCC compatible ++ SetDriversGCC(settings) + end + + if conf == "debug" then Index: patches/patch-configure_lua =================================================================== RCS file: /cvs/ports/games/teeworlds/patches/patch-configure_lua,v retrieving revision 1.1 diff -u -p -r1.1 patch-configure_lua --- patches/patch-configure_lua 1 Mar 2017 20:42:57 -0000 1.1 +++ patches/patch-configure_lua 10 Mar 2019 09:54:36 -0000 @@ -1,17 +1,19 @@ $OpenBSD: patch-configure_lua,v 1.1 2017/03/01 20:42:57 naddy Exp $ -Accept more compilers than a hardcoded gcc. +Assume that CC is gcc compatible, instead of hardcoding gcc and clang. -(SetDriversClang() is also a no-op) - ---- configure.lua.orig Sun Nov 13 16:41:35 2016 -+++ configure.lua Tue Feb 28 19:34:03 2017 -@@ -362,10 +362,9 @@ function OptCCompiler(name, default_driver, default_c, +Index: configure.lua +--- configure.lua.orig ++++ configure.lua +@@ -359,12 +359,11 @@ function OptCCompiler(name, default_driver, default_c, + -- no need todo anything if we have a driver + -- TODO: test if we can find the compiler else - if ExecuteSilent("cl") == 0 then - option.driver = "cl" -- elseif ExecuteSilent("g++ -v") == 0 then +- if ExecuteSilent("g++ -v") == 0 then - option.driver = "gcc" +- elseif ExecuteSilent("cl") == 0 then ++ if ExecuteSilent("cl") == 0 then + option.driver = "cl" else - error("no c/c++ compiler found") + -- Assume GCC compatible @@ -19,7 +21,7 @@ Accept more compilers than a hardcoded g end end --setup_compiler(option.value) -@@ -374,12 +373,9 @@ function OptCCompiler(name, default_driver, default_c, +@@ -373,12 +372,9 @@ function OptCCompiler(name, default_driver, default_c, local apply = function(option, settings) if option.driver == "cl" then SetDriversCL(settings) Index: patches/patch-datasrc_languages_french_json =================================================================== RCS file: patches/patch-datasrc_languages_french_json diff -N patches/patch-datasrc_languages_french_json --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-datasrc_languages_french_json 10 Mar 2019 09:54:36 -0000 @@ -0,0 +1,23 @@ +$OpenBSD$ + +Sorry, but it bugs me when the main action in the UI has a big +translation error. + +Index: datasrc/languages/french.json +--- datasrc/languages/french.json.orig ++++ datasrc/languages/french.json +@@ -751,12 +751,12 @@ + }, + { + "or": "Play", +- "tr": "Lire" ++ "tr": "Jouer" + }, + { + "context": "DemoBrowser", + "or": "Play", +- "tr": "Lire" ++ "tr": "Jouer" + }, + { + "or": "Play background music", Index: patches/patch-scripts_build_py =================================================================== RCS file: patches/patch-scripts_build_py diff -N patches/patch-scripts_build_py --- patches/patch-scripts_build_py 27 Dec 2015 17:56:22 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-scripts_build_py,v 1.1 2015/12/27 17:56:22 jasper Exp $ ---- 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 --- patches/patch-scripts_compiler_py 27 Dec 2015 17:56:22 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,9 +0,0 @@ -$OpenBSD: patch-scripts_compiler_py,v 1.1 2015/12/27 17:56:22 jasper Exp $ ---- 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: patches/patch-scripts_font_installer_sh diff -N patches/patch-scripts_font_installer_sh --- patches/patch-scripts_font_installer_sh 27 Dec 2015 17:56:22 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,8 +0,0 @@ -$OpenBSD: patch-scripts_font_installer_sh,v 1.2 2015/12/27 17:56:22 jasper Exp $ ---- 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 --python ../scripts/font_converter.py default*.fnt -+${MODPY_BIN} ../scripts/font_converter.py default*.fnt Index: patches/patch-src_base_detect_h =================================================================== RCS file: /cvs/ports/games/teeworlds/patches/patch-src_base_detect_h,v retrieving revision 1.1 diff -u -p -r1.1 patch-src_base_detect_h --- patches/patch-src_base_detect_h 27 Dec 2015 17:56:22 -0000 1.1 +++ patches/patch-src_base_detect_h 10 Mar 2019 09:54:36 -0000 @@ -2,14 +2,15 @@ $OpenBSD: patch-src_base_detect_h,v 1.1 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 @@ +Index: src/base/detect.h +--- src/base/detect.h.orig ++++ src/base/detect.h +@@ -85,15 +85,15 @@ /* use gcc endianness definitions when available */ #if defined(__GNUC__) && !defined(__APPLE__) && !defined(__MINGW32__) && !defined(__sun) -- #if defined(__FreeBSD__) || defined(__OpenBSD__) -+ #if defined(__FreeBSD__) +- #if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) ++ #if defined(__FreeBSD__) || defined(__NetBSD__) #include <sys/endian.h> #else #include <endian.h> Index: patches/patch-src_engine_client_client_cpp =================================================================== RCS file: patches/patch-src_engine_client_client_cpp diff -N patches/patch-src_engine_client_client_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_engine_client_client_cpp 10 Mar 2019 09:54:36 -0000 @@ -0,0 +1,36 @@ +$OpenBSD$ + +Kill LimitFps() on archs where _mm_pause() can't be used + +Index: src/engine/client/client.cpp +--- src/engine/client/client.cpp.orig ++++ src/engine/client/client.cpp +@@ -2,7 +2,10 @@ + /* If you are missing that file, acquire a complete release at teeworlds.com. */ + #include <new> + ++#if defined(__x86_64__) || defined(__i386__) + #include <immintrin.h> //_mm_pause ++#endif ++ + #include <stdlib.h> // qsort + #include <stdarg.h> + +@@ -1733,6 +1736,9 @@ void CClient::InitInterfaces() + + bool CClient::LimitFps() + { ++#if !defined(__x86_64__) && !defined(__i386__) ++ return false; ++#else + if(g_Config.m_GfxVsync || !g_Config.m_GfxLimitFps) return false; + + /** +@@ -1809,6 +1815,7 @@ bool CClient::LimitFps() + #endif + + return SkipFrame; ++#endif + } + + void CClient::Run() Index: patches/patch-src_engine_client_graphics_threaded_cpp =================================================================== RCS file: patches/patch-src_engine_client_graphics_threaded_cpp diff -N patches/patch-src_engine_client_graphics_threaded_cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_engine_client_graphics_threaded_cpp 10 Mar 2019 09:54:36 -0000 @@ -0,0 +1,20 @@ +$OpenBSD$ + +Ignore "gfx_texture_quality" setting at the moment, it makes some crashes +in libGLU more likely to happen. + +Index: src/engine/client/graphics_threaded.cpp +--- src/engine/client/graphics_threaded.cpp.orig ++++ src/engine/client/graphics_threaded.cpp +@@ -351,8 +351,11 @@ IGraphics::CTextureHandle CGraphics_Threaded::LoadText + Cmd.m_Flags |= CCommandBuffer::TEXFLAG_NOMIPMAPS; + if(g_Config.m_GfxTextureCompression) + Cmd.m_Flags |= CCommandBuffer::TEXFLAG_COMPRESSED; ++#if 0 ++ // XXX + if(g_Config.m_GfxTextureQuality || Flags&TEXLOAD_NORESAMPLE) + Cmd.m_Flags |= CCommandBuffer::TEXFLAG_QUALITY; ++#endif + if(Flags&IGraphics::TEXLOAD_ARRAY_256) + { + Cmd.m_Flags |= CCommandBuffer::TEXFLAG_TEXTURE3D; Index: patches/patch-src_engine_client_sound_cpp =================================================================== RCS file: /cvs/ports/games/teeworlds/patches/patch-src_engine_client_sound_cpp,v retrieving revision 1.2 diff -u -p -r1.2 patch-src_engine_client_sound_cpp --- patches/patch-src_engine_client_sound_cpp 30 Nov 2016 18:19:33 -0000 1.2 +++ patches/patch-src_engine_client_sound_cpp 10 Mar 2019 09:54:36 -0000 @@ -3,8 +3,9 @@ $OpenBSD: patch-src_engine_client_sound_ Make it possible to compile with an external and newer wavpack. From Debian. ---- src/engine/client/sound.cpp.orig Sun Nov 13 16:41:35 2016 -+++ src/engine/client/sound.cpp Wed Nov 30 19:18:11 2016 +Index: src/engine/client/sound.cpp +--- src/engine/client/sound.cpp.orig ++++ src/engine/client/sound.cpp @@ -13,7 +13,7 @@ #include "sound.h" @@ -14,7 +15,7 @@ From Debian. } #include <math.h> -@@ -328,17 +328,14 @@ void CSound::RateConvert(int SampleID) +@@ -325,17 +325,14 @@ void CSound::RateConvert(int SampleID) pSample->m_NumFrames = NumFrames; } @@ -23,7 +24,7 @@ From Debian. - return io_read(ms_File, pBuffer, Size); -} - - int CSound::LoadWV(const char *pFilename) + ISound::CSampleHandle CSound::LoadWV(const char *pFilename) { CSample *pSample; int SampleID = -1; @@ -34,26 +35,35 @@ From Debian. // 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; +@@ -349,25 +346,30 @@ ISound::CSampleHandle CSound::LoadWV(const char *pFile + return CSampleHandle(); + lock_wait(m_SoundLock); - 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; + lock_unlock(m_SoundLock); + return CSampleHandle(); } + else + { + io_close(File); ++ File = 0; + } SampleID = AllocID(); if(SampleID < 0) - return -1; + { +- io_close(ms_File); +- ms_File = 0; ++ io_close(File); ++ File = 0; + lock_unlock(m_SoundLock); + return CSampleHandle(); + } pSample = &m_aSamples[SampleID]; - pContext = WavpackOpenFileInput(ReadData, aError); @@ -61,7 +71,29 @@ From Debian. if (pContext) { int m_aSamples = WavpackGetNumSamples(pContext); -@@ -419,9 +420,6 @@ int CSound::LoadWV(const char *pFilename) +@@ -385,8 +387,8 @@ ISound::CSampleHandle CSound::LoadWV(const char *pFile + if(pSample->m_Channels > 2) + { + dbg_msg("sound/wv", "file is not mono or stereo. filename='%s'", pFilename); +- io_close(ms_File); +- ms_File = 0; ++ io_close(File); ++ File = 0; + lock_unlock(m_SoundLock); + return CSampleHandle(); + } +@@ -401,8 +403,8 @@ ISound::CSampleHandle CSound::LoadWV(const char *pFile + if(BitsPerSample != 16) + { + dbg_msg("sound/wv", "bps is %d, not 16, filname='%s'", BitsPerSample, pFilename); +- io_close(ms_File); +- ms_File = 0; ++ io_close(File); ++ File = 0; + lock_unlock(m_SoundLock); + return CSampleHandle(); + } +@@ -429,9 +431,6 @@ ISound::CSampleHandle CSound::LoadWV(const char *pFile dbg_msg("sound/wv", "failed to open %s: %s", pFilename, aError); } @@ -71,9 +103,9 @@ From Debian. if(g_Config.m_Debug) dbg_msg("sound/wv", "loaded %s", pFilename); -@@ -526,8 +524,6 @@ void CSound::StopAll() - } +@@ -559,8 +558,6 @@ bool CSound::IsPlaying(CSampleHandle SampleID) lock_unlock(m_SoundLock); + return Ret; } - -IOHANDLE CSound::ms_File = 0; Index: patches/patch-src_engine_client_sound_h =================================================================== RCS file: /cvs/ports/games/teeworlds/patches/patch-src_engine_client_sound_h,v retrieving revision 1.1 diff -u -p -r1.1 patch-src_engine_client_sound_h --- patches/patch-src_engine_client_sound_h 27 Dec 2015 17:56:22 -0000 1.1 +++ patches/patch-src_engine_client_sound_h 10 Mar 2019 09:54:36 -0000 @@ -3,8 +3,9 @@ $OpenBSD: patch-src_engine_client_sound_ 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 +Index: src/engine/client/sound.h +--- src/engine/client/sound.h.orig ++++ src/engine/client/sound.h @@ -21,10 +21,6 @@ class CSound : public IEngineSound (public) static void RateConvert(int SampleID); @@ -15,4 +16,4 @@ From Debian. - virtual bool IsSoundEnabled() { return m_SoundEnabled != 0; } - virtual int LoadWV(const char *pFilename); + virtual CSampleHandle LoadWV(const char *pFilename); Index: patches/patch-src_engine_shared_netban_cpp =================================================================== RCS file: patches/patch-src_engine_shared_netban_cpp diff -N patches/patch-src_engine_shared_netban_cpp --- patches/patch-src_engine_shared_netban_cpp 6 May 2017 13:42:17 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-src_engine_shared_netban_cpp,v 1.1 2017/05/06 13:42:17 espie Exp $ - -Index: src/engine/shared/netban.cpp ---- src/engine/shared/netban.cpp.orig -+++ src/engine/shared/netban.cpp -@@ -601,3 +601,6 @@ void CNetBan::ConBansSave(IConsole::IResult *pResult, - str_format(aBuf, sizeof(aBuf), "saved banlist to '%s'", pResult->GetString(0)); - pThis->Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "net_ban", aBuf); - } -+ -+template class CNetBan::CBanPool<NETADDR, 1>; -+template class CNetBan::CBanPool<CNetRange, 16>; Index: patches/patch-src_engine_shared_storage_cpp =================================================================== RCS file: /cvs/ports/games/teeworlds/patches/patch-src_engine_shared_storage_cpp,v retrieving revision 1.1 diff -u -p -r1.1 patch-src_engine_shared_storage_cpp --- patches/patch-src_engine_shared_storage_cpp 27 Dec 2015 17:56:22 -0000 1.1 +++ patches/patch-src_engine_shared_storage_cpp 10 Mar 2019 09:54:36 -0000 @@ -1,8 +1,10 @@ $OpenBSD: patch-src_engine_shared_storage_cpp,v 1.1 2015/12/27 17:56:22 jasper Exp $ ---- 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" + +Index: src/engine/shared/storage.cpp +--- src/engine/shared/storage.cpp.orig ++++ src/engine/shared/storage.cpp +@@ -6,7 +6,7 @@ + #include <zlib.h> // compiled-in data-dir path -#define DATA_DIR "data" 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 --- patches/patch-src_game_client_gameclient_cpp 27 Dec 2015 17:56:59 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,24 +0,0 @@ -$OpenBSD: patch-src_game_client_gameclient_cpp,v 1.1 2015/12/27 17:56:59 jasper Exp $ - -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/PLIST =================================================================== RCS file: /cvs/ports/games/teeworlds/pkg/PLIST,v retrieving revision 1.3 diff -u -p -r1.3 PLIST --- pkg/PLIST 30 Nov 2016 18:17:03 -0000 1.3 +++ pkg/PLIST 10 Mar 2019 09:54:36 -0000 @@ -110,6 +110,12 @@ share/teeworlds/data/audio/wp_hammer_hit share/teeworlds/data/audio/wp_hammer_swing-01.wv share/teeworlds/data/audio/wp_hammer_swing-02.wv share/teeworlds/data/audio/wp_hammer_swing-03.wv +share/teeworlds/data/audio/wp_laser_bnce-01.wv +share/teeworlds/data/audio/wp_laser_bnce-02.wv +share/teeworlds/data/audio/wp_laser_bnce-03.wv +share/teeworlds/data/audio/wp_laser_fire-01.wv +share/teeworlds/data/audio/wp_laser_fire-02.wv +share/teeworlds/data/audio/wp_laser_fire-03.wv share/teeworlds/data/audio/wp_ninja_attack-01.wv share/teeworlds/data/audio/wp_ninja_attack-02.wv share/teeworlds/data/audio/wp_ninja_attack-03.wv @@ -123,22 +129,12 @@ share/teeworlds/data/audio/wp_noammo-02. share/teeworlds/data/audio/wp_noammo-03.wv share/teeworlds/data/audio/wp_noammo-04.wv share/teeworlds/data/audio/wp_noammo-05.wv -share/teeworlds/data/audio/wp_rifle_bnce-01.wv -share/teeworlds/data/audio/wp_rifle_bnce-02.wv -share/teeworlds/data/audio/wp_rifle_bnce-03.wv -share/teeworlds/data/audio/wp_rifle_fire-01.wv -share/teeworlds/data/audio/wp_rifle_fire-02.wv -share/teeworlds/data/audio/wp_rifle_fire-03.wv share/teeworlds/data/audio/wp_shotty_fire-01.wv share/teeworlds/data/audio/wp_shotty_fire-02.wv share/teeworlds/data/audio/wp_shotty_fire-03.wv share/teeworlds/data/audio/wp_switch-01.wv share/teeworlds/data/audio/wp_switch-02.wv share/teeworlds/data/audio/wp_switch-03.wv -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 @@ -318,6 +314,7 @@ 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/PS.png share/teeworlds/data/countryflags/PT.png share/teeworlds/data/countryflags/PW.png share/teeworlds/data/countryflags/PY.png @@ -377,7 +374,11 @@ 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/XBZ.png +share/teeworlds/data/countryflags/XCA.png share/teeworlds/data/countryflags/XEN.png +share/teeworlds/data/countryflags/XES.png +share/teeworlds/data/countryflags/XGA.png share/teeworlds/data/countryflags/XNI.png share/teeworlds/data/countryflags/XSC.png share/teeworlds/data/countryflags/XWA.png @@ -386,10 +387,12 @@ 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/countryflags/index.json +share/teeworlds/data/deadtee.png share/teeworlds/data/editor/ +share/teeworlds/data/editor/automap/ +share/teeworlds/data/editor/automap/grass_doodads.json +share/teeworlds/data/editor/automap/grass_main.json share/teeworlds/data/editor/background.png share/teeworlds/data/editor/checker.png share/teeworlds/data/editor/cursor.png @@ -399,40 +402,52 @@ share/teeworlds/data/editor/grass_main.r share/teeworlds/data/editor/jungle_main.rules share/teeworlds/data/editor/winter_main.rules share/teeworlds/data/emoticons.png -share/teeworlds/data/file_icons.png +share/teeworlds/data/fonts/ +share/teeworlds/data/fonts/DejaVuSans.ttf 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/chuvash.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/sakha.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/languages/belarusian.json +share/teeworlds/data/languages/bosnian.json +share/teeworlds/data/languages/brazilian_portuguese.json +share/teeworlds/data/languages/breton.json +share/teeworlds/data/languages/bulgarian.json +share/teeworlds/data/languages/catalan.json +share/teeworlds/data/languages/chinese.json +share/teeworlds/data/languages/chuvash.json +share/teeworlds/data/languages/czech.json +share/teeworlds/data/languages/danish.json +share/teeworlds/data/languages/dutch.json +share/teeworlds/data/languages/esperanto.json +share/teeworlds/data/languages/estonian.json +share/teeworlds/data/languages/finnish.json +share/teeworlds/data/languages/french.json +share/teeworlds/data/languages/gaelic_scottish.json +share/teeworlds/data/languages/galician.json +share/teeworlds/data/languages/german.json +share/teeworlds/data/languages/greek.json +share/teeworlds/data/languages/hungarian.json +share/teeworlds/data/languages/index.json +share/teeworlds/data/languages/irish.json +share/teeworlds/data/languages/italian.json +share/teeworlds/data/languages/japanese.json +share/teeworlds/data/languages/korean.json +share/teeworlds/data/languages/kyrgyz.json +share/teeworlds/data/languages/license.txt +share/teeworlds/data/languages/lithuanian.json +share/teeworlds/data/languages/norwegian.json +share/teeworlds/data/languages/polish.json +share/teeworlds/data/languages/portuguese.json +share/teeworlds/data/languages/readme.txt +share/teeworlds/data/languages/romanian.json +share/teeworlds/data/languages/russian.json +share/teeworlds/data/languages/serbian.json +share/teeworlds/data/languages/simplified_chinese.json +share/teeworlds/data/languages/slovak.json +share/teeworlds/data/languages/slovenian.json +share/teeworlds/data/languages/spanish.json +share/teeworlds/data/languages/swedish.json +share/teeworlds/data/languages/turkish.json +share/teeworlds/data/languages/ukrainian.json share/teeworlds/data/mapres/ share/teeworlds/data/mapres/bg_cloud1.png share/teeworlds/data/mapres/bg_cloud2.png @@ -443,6 +458,8 @@ share/teeworlds/data/mapres/desert_mount 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_lamps.png +share/teeworlds/data/mapres/generic_shadows.png share/teeworlds/data/mapres/generic_unhookable.png share/teeworlds/data/mapres/grass_doodads.png share/teeworlds/data/mapres/grass_main.png @@ -452,6 +469,7 @@ share/teeworlds/data/mapres/jungle_dooda share/teeworlds/data/mapres/jungle_main.png share/teeworlds/data/mapres/jungle_midground.png share/teeworlds/data/mapres/jungle_unhookables.png +share/teeworlds/data/mapres/light.png share/teeworlds/data/mapres/moon.png share/teeworlds/data/mapres/mountains.png share/teeworlds/data/mapres/snow.png @@ -470,28 +488,109 @@ 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/ctf8.map share/teeworlds/data/maps/dm1.map share/teeworlds/data/maps/dm2.map +share/teeworlds/data/maps/dm3.map share/teeworlds/data/maps/dm6.map share/teeworlds/data/maps/dm7.map share/teeworlds/data/maps/dm8.map share/teeworlds/data/maps/dm9.map +share/teeworlds/data/maps/license.txt +share/teeworlds/data/maps/lms1.map +share/teeworlds/data/maps/readme.txt share/teeworlds/data/particles.png share/teeworlds/data/skins/ -share/teeworlds/data/skins/bluekitty.png -share/teeworlds/data/skins/bluestripe.png -share/teeworlds/data/skins/brownbear.png -share/teeworlds/data/skins/cammo.png -share/teeworlds/data/skins/cammostripes.png -share/teeworlds/data/skins/coala.png -share/teeworlds/data/skins/default.png -share/teeworlds/data/skins/limekitty.png -share/teeworlds/data/skins/pinky.png -share/teeworlds/data/skins/redbopp.png -share/teeworlds/data/skins/redstripe.png -share/teeworlds/data/skins/saddo.png -share/teeworlds/data/skins/toptri.png -share/teeworlds/data/skins/twinbop.png -share/teeworlds/data/skins/twintri.png -share/teeworlds/data/skins/warpaint.png -share/teeworlds/data/skins/x_ninja.png +share/teeworlds/data/skins/bluekitty.json +share/teeworlds/data/skins/bluestripe.json +share/teeworlds/data/skins/body/ +share/teeworlds/data/skins/body/bear.png +share/teeworlds/data/skins/body/kitty.png +share/teeworlds/data/skins/body/standard.png +share/teeworlds/data/skins/body/x_ninja.png +share/teeworlds/data/skins/brownbear.json +share/teeworlds/data/skins/cammo.json +share/teeworlds/data/skins/cammostripes.json +share/teeworlds/data/skins/decoration/ +share/teeworlds/data/skins/decoration/hair.png +share/teeworlds/data/skins/decoration/twinbopp.png +share/teeworlds/data/skins/decoration/unibop.png +share/teeworlds/data/skins/default.json +share/teeworlds/data/skins/eyes/ +share/teeworlds/data/skins/eyes/standard.png +share/teeworlds/data/skins/eyes/standardreal.png +share/teeworlds/data/skins/eyes/x_ninja.png +share/teeworlds/data/skins/feet/ +share/teeworlds/data/skins/feet/standard.png +share/teeworlds/data/skins/hands/ +share/teeworlds/data/skins/hands/standard.png +share/teeworlds/data/skins/koala.json +share/teeworlds/data/skins/limekitty.json +share/teeworlds/data/skins/marking/ +share/teeworlds/data/skins/marking/bear.png +share/teeworlds/data/skins/marking/cammo1.png +share/teeworlds/data/skins/marking/cammo2.png +share/teeworlds/data/skins/marking/cammostripes.png +share/teeworlds/data/skins/marking/donny.png +share/teeworlds/data/skins/marking/duodonny.png +share/teeworlds/data/skins/marking/saddo.png +share/teeworlds/data/skins/marking/stripe.png +share/teeworlds/data/skins/marking/stripes.png +share/teeworlds/data/skins/marking/toptri.png +share/teeworlds/data/skins/marking/twintri.png +share/teeworlds/data/skins/marking/uppy.png +share/teeworlds/data/skins/marking/warpaint.png +share/teeworlds/data/skins/marking/whisker.png +share/teeworlds/data/skins/pinky.json +share/teeworlds/data/skins/redbopp.json +share/teeworlds/data/skins/redstripe.json +share/teeworlds/data/skins/saddo.json +share/teeworlds/data/skins/toptri.json +share/teeworlds/data/skins/twinbop.json +share/teeworlds/data/skins/twintri.json +share/teeworlds/data/skins/warpaint.json +share/teeworlds/data/skins/x_ninja.json +share/teeworlds/data/skins/xmas_hat.png +share/teeworlds/data/ui/ +share/teeworlds/data/ui/blob.png +share/teeworlds/data/ui/console.png +share/teeworlds/data/ui/console_bar.png +share/teeworlds/data/ui/debug_font.png +share/teeworlds/data/ui/demo_buttons.png +share/teeworlds/data/ui/file_icons.png +share/teeworlds/data/ui/gametypes/ +share/teeworlds/data/ui/gametypes/ctf.png +share/teeworlds/data/ui/gametypes/dm.png +share/teeworlds/data/ui/gametypes/lms.png +share/teeworlds/data/ui/gametypes/lts.png +share/teeworlds/data/ui/gametypes/mod.png +share/teeworlds/data/ui/gametypes/tdm.png +share/teeworlds/data/ui/gui_buttons.png +share/teeworlds/data/ui/gui_cursor.png +share/teeworlds/data/ui/gui_icons.png +share/teeworlds/data/ui/gui_logo.png +share/teeworlds/data/ui/icons/ +share/teeworlds/data/ui/icons/arrows.png +share/teeworlds/data/ui/icons/browse.png +share/teeworlds/data/ui/icons/chat_whisper.png +share/teeworlds/data/ui/icons/friend.png +share/teeworlds/data/ui/icons/info.png +share/teeworlds/data/ui/icons/level.png +share/teeworlds/data/ui/icons/menu.png +share/teeworlds/data/ui/icons/sidebar.png +share/teeworlds/data/ui/icons/tools.png +share/teeworlds/data/ui/menuimages/ +share/teeworlds/data/ui/menuimages/demos.png +share/teeworlds/data/ui/menuimages/editor.png +share/teeworlds/data/ui/menuimages/local_server.png +share/teeworlds/data/ui/menuimages/play_game.png +share/teeworlds/data/ui/menuimages/settings.png +share/teeworlds/data/ui/no_skinpart.png +share/teeworlds/data/ui/themes/ +share/teeworlds/data/ui/themes/heavens.png +share/teeworlds/data/ui/themes/heavens_day.map +share/teeworlds/data/ui/themes/heavens_night.map +share/teeworlds/data/ui/themes/jungle.png +share/teeworlds/data/ui/themes/jungle_day.map +share/teeworlds/data/ui/themes/jungle_night.map +share/teeworlds/data/ui/themes/none.png