From 5f34d59ba266ffd4de10686c29993a1990aa56cc Mon Sep 17 00:00:00 2001 From: Sergii Pylypenko Date: Wed, 26 Jun 2013 17:53:11 +0300 Subject: [PATCH] Updated SuperTux --- .../commandergenius/commandergenius | 2 +- .../supertux/AndroidAppSettings.cfg | 194 ++++++++++++++++-- .../application/supertux/AndroidPreBuild.sh | 8 + project/jni/application/supertux/android.diff | 60 ++---- project/jni/application/supertux/supertux | 2 +- 5 files changed, 207 insertions(+), 59 deletions(-) create mode 100755 project/jni/application/supertux/AndroidPreBuild.sh mode change 120000 => 160000 project/jni/application/supertux/supertux diff --git a/project/jni/application/commandergenius/commandergenius b/project/jni/application/commandergenius/commandergenius index 6f28771d5..cdd8564eb 160000 --- a/project/jni/application/commandergenius/commandergenius +++ b/project/jni/application/commandergenius/commandergenius @@ -1 +1 @@ -Subproject commit 6f28771d57ca7d878e3cfee08014651b854b9c7f +Subproject commit cdd8564ebdd26b6c733bad120a8df44e11edc041 diff --git a/project/jni/application/supertux/AndroidAppSettings.cfg b/project/jni/application/supertux/AndroidAppSettings.cfg index 69dc23212..a08f311c3 100644 --- a/project/jni/application/supertux/AndroidAppSettings.cfg +++ b/project/jni/application/supertux/AndroidAppSettings.cfg @@ -1,47 +1,215 @@ # The application settings for Android libSDL port -AppSettingVersion=17 + +AppSettingVersion=19 + +# libSDL version to use (1.2 or 1.3, specify 1.3 for SDL2) LibSdlVersion=1.2 + +# Specify application name (e.x. My Application) AppName="SuperTux" + +# Specify reversed site name of application (e.x. com.mysite.myapp) AppFullName=org.lethargik.supertux2 + +# Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape ScreenOrientation=h + +# Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer InhibitSuspend=n -AppDataDownloadUrl="!Data files|http://sourceforge.net/projects/libsdl-android/files/SuperTux/data-1.zip" + +# Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...' +# If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from startup config menu +# If the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as binary BLOB to the application dir and not unzipped +# If the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir - +# these files are put inside .apk package by build system +# Also please avoid 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS +AppDataDownloadUrl="!Data files|http://sourceforge.net/projects/libsdl-android/files/SuperTux/data-2.zip" + +# Video color depth - 16 BPP is the fastest and supported for all modes, 24 bpp is supported only +# with SwVideoMode=y, SDL_OPENGL mode supports everything. (16)/(24)/(32) VideoDepthBpp=24 + +# Enable OpenGL depth buffer (needed only for 3-d applications, small speed decrease) (y) or (n) NeedDepthBuffer=n + +# Enable OpenGL stencil buffer (needed only for 3-d applications, small speed decrease) (y) or (n) NeedStencilBuffer=n + +# Try to use GLES 2.x context - will revert to GLES 1.X if unsupported by device +# you need this option only if you're developing 3-d app (y) or (n) NeedGles2=n + +# Application uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL, +# this will allow small speed optimization. Enable this even when you're using SDL_HWSURFACE. (y) or (n) SwVideoMode=y + +# Application video output will be resized to fit into native device screen (y)/(n) SdlVideoResize=y + +# Application resizing will keep 4:3 aspect ratio, with black bars at sides (y)/(n) SdlVideoResizeKeepAspect=n + +# Application does not call SDL_Flip() or SDL_UpdateRects() appropriately, or draws from non-main thread - +# enabling the compatibility mode will force screen update every 100 milliseconds, which is laggy and inefficient (y) or (n) CompatibilityHacks=n + +# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n) CompatibilityHacksStaticInit=n + +# On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n) CompatibilityHacksTextInputEmulatesHwKeyboard=n -AppUsesMouse=n + +# Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n) +CompatibilityHacksPreventAudioChopping=n + +# Hack for broken apps: application ignores audio buffer size returned by SDL (y)/(n) +CompatibilityHacksAppIgnoresAudioBufferSize=n + +# Hack for VCMI: preload additional shared libraries before aplication start +CompatibilityHacksAdditionalPreloadedSharedLibraries="" + +# Hack for Free Heroes 2, which redraws the screen inside SDL_PumpEvents(): slow and compatible SDL event queue - +# do not use it with accelerometer/gyroscope, or your app may freeze at random (y)/(n) +CompatibilityHacksSlowCompatibleEventQueue=n + +# Save and restore OpenGL state when drawing on-screen keyboard for apps that use SDL_OPENGL +CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState= + +# Application uses mouse (y) or (n), this will show mouse emulation dialog to the user +AppUsesMouse=y + +# Application needs two-button mouse, will also enable advanced point-and-click features (y) or (n) AppNeedsTwoButtonMouse=n + +# Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n) ShowMouseCursor=n + +# Force relative (laptop) mouse movement mode, useful when both on-screen keyboard and mouse are needed (y) or (n) ForceRelativeMouseMode=n + +# Application needs arrow keys (y) or (n), will show on-screen dpad/joystick (y) or (n) AppNeedsArrowKeys=y + +# Application needs text input (y) or (n), enables button for text input on screen AppNeedsTextInput=y + +# Application uses joystick (y) or (n), the on-screen DPAD will be used as joystick 0 axes 0-1 AppUsesJoystick=n -AppHandlesJoystickSensitivity=n + +# Application uses second on-screen joystick, as SDL joystick 0 axes 2-3 (y)/(n) +AppUsesSecondJoystick=n + +# Application uses accelerometer (y) or (n), the accelerometer will be used as joystick 1 axes 0-1 and 5-7 +AppUsesAccelerometer=n + +# Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4 +AppUsesGyroscope=n + +# Application uses multitouch (y) or (n), multitouch events are passed as SDL_JOYBALLMOTION events for the joystick 0 AppUsesMultitouch=n + +# Application records audio (it will use any available source, such a s microphone) +# API is defined in file SDL_android.h: int SDL_ANDROID_OpenAudioRecording(SDL_AudioSpec *spec); void SDL_ANDROID_CloseAudioRecording(void); +# This option will add additional permission to Android manifest (y)/(n) +AppRecordsAudio=n + +# Application implements Android-specific routines to put to background, and will not draw anything to screen +# between SDL_ACTIVEEVENT lost / gained notifications - you should check for them +# rigth after SDL_Flip(), if (n) then SDL_Flip() will block till app in background (y) or (n) +# This option is reported to be buggy, sometimes failing to restore video state NonBlockingSwapBuffers=n + +# Redefine common hardware keys to SDL keysyms +# BACK hardware key is available on all devices, MENU is available on pre-ICS devices, other keys may be absent +# SEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices +# Use word NO_REMAP if you want to preserve native functionality for certain key (volume keys are 3-rd and 4-th) +# Keys: TOUCHSCREEN (works only when AppUsesMouse=n), DPAD_CENTER/SEARCH, VOLUMEUP, VOLUMEDOWN, MENU, BACK, CAMERA RedefinedKeys="LALT RETURN NO_REMAP NO_REMAP SPACE" + +# Number of virtual keyboard keys (currently 6 is maximum) AppTouchscreenKeyboardKeysAmount=2 + +# Number of virtual keyboard keys that support autofire (currently 2 is maximum) AppTouchscreenKeyboardKeysAmountAutoFire=0 + +# Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right) RedefinedKeysScreenKb="SPACE LCTRL" + +# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu +RedefinedKeysScreenKbNames="Jump Action" + +# How long to show startup menu button, in msec, 0 to disable startup menu StartupMenuButtonTimeout=3000 -HiddenMenuOptions='OptionalDownloadConfig' + +# Menu items to hide from startup menu, available menu items: +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout +HiddenMenuOptions='SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMouse.DisplaySizeConfig' + +# Menu items to show at startup - this is Java code snippet, leave empty for default +# new SettingsMenuMisc.ShowReadme(), (AppUsesMouse \&\& \! ForceRelativeMouseMode \? new SettingsMenuMouse.DisplaySizeConfig(true) : new SettingsMenu.DummyMenu()), new SettingsMenuMisc.OptionalDownloadConfig(true), new SettingsMenuMisc.GyroscopeCalibration() +# Available menu items: +# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout FirstStartMenuOptions='' -MultiABI=n -AppVersionCode=03304 -AppVersionName="0.3.3.04" -ResetSdlConfigForThisVersion=n -DeleteFilesOnUpgrade="%" -CompiledLibraries=" sdl_image physfs boost_system curl openal jpeg png tremor ogg" + +# Enable multi-ABI binary, with hardware FPU support - it will also work on old devices, +# but .apk size is 2x bigger (y) / (n) / (x86) / (all) +MultiABI=y + +# Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower +AppMinimumRAM=0 + +# Application version code (integer) +AppVersionCode=03305 + +# Application user-visible version name (string) +AppVersionName="0.3.3.05" + +# Reset SDL config when updating application to the new version (y) / (n) +ResetSdlConfigForThisVersion=y + +# Delete application data files when upgrading (specify file/dir paths separated by spaces) +DeleteFilesOnUpgrade="data" + +# Optional shared libraries to compile - removing some of them will save space +# MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed +# Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2 +CompiledLibraries="sdl_image physfs boost_system curl openal jpeg png vorbis ogg" + +# Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n) CustomBuildScript=n -AppCflags='-include GLES/gl.h -Ijni/openal/include/AL -DHAVE_SDL=1' -AppLdflags='' + +# Aditional CFLAGS for application +AppCflags='-include GLES/gl.h -Ijni/openal/include/AL -DHAVE_SDL=1 -frtti -fexceptions' + +# Additional LDFLAGS for application +AppLdflags='-frtti -fexceptions' + +# If application has headers with the same name as system headers, this option tries to fix compiler flags to make it compilable +AppOverlapsSystemHeaders= + +# Build only following subdirs (empty will build all dirs, ignored with custom script) AppSubdirsBuild='. supertux/src/* supertux/external/tinygettext/tinygettext supertux/external/tinygettext supertux/external/findlocale supertux/external/obstack supertux/external/squirrel/include supertux/external/squirrel/squirrel supertux/external/squirrel/sqstdlib' + +# Exclude these files from build +AppBuildExclude='supertux/external/findlocale/example.c' + +# Application command line parameters, including app name as 0-th param AppCmdline='' + +# Here you may type readme text, which will be shown during startup. Format is: +# Text in English, use \\\\n to separate lines^de:Text in Deutsch^ru:Text in Russian, and so on (that's four backslashes, nice isn't it?) ReadmeText='^You may press "Home" now - the data will be downloaded in background' + +# Screen size is used by Google Play to prevent an app to be installed on devices with smaller screens +# Minimum screen size that application supports: (s)mall / (m)edium / (l)arge +MinimumScreenSize=m + +# Your AdMob Publisher ID, (n) if you don't want advertisements +AdmobPublisherId=n + +# Your AdMob test device ID, to receive a test ad +AdmobTestDeviceId= + +# Your AdMob banner size (BANNER/IAB_BANNER/IAB_LEADERBOARD/IAB_MRECT/IAB_WIDE_SKYSCRAPER/SMART_BANNER) +AdmobBannerSize= + diff --git a/project/jni/application/supertux/AndroidPreBuild.sh b/project/jni/application/supertux/AndroidPreBuild.sh new file mode 100755 index 000000000..02925c655 --- /dev/null +++ b/project/jni/application/supertux/AndroidPreBuild.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +if [ -e supertux/patched.successfully ]; then + exit 0 +else + # Google Code fails to send shallow repository, so we're checking out everything + git clone https://code.google.com/p/supertux && patch -p1 -d supertux < android.diff && touch supertux/patched.successfully || exit 1 +fi diff --git a/project/jni/application/supertux/android.diff b/project/jni/application/supertux/android.diff index 1f36d4c7b..8fcb828fe 100644 --- a/project/jni/application/supertux/android.diff +++ b/project/jni/application/supertux/android.diff @@ -1,33 +1,5 @@ -diff --git a/src/audio/ogg_sound_file.cpp b/src/audio/ogg_sound_file.cpp -index fd7c7fc..ebf978b 100644 ---- a/src/audio/ogg_sound_file.cpp -+++ b/src/audio/ogg_sound_file.cpp -@@ -83,8 +83,8 @@ OggSoundFile::read(void* _buffer, size_t buffer_size) - } - - long bytesRead -- = ov_read(&vorbis_file, buffer, bytes_to_read, bigendian, -- 2, 1, §ion); -+ = ov_read(&vorbis_file, buffer, bytes_to_read, -+ §ion); - if(bytesRead == 0) { - break; - } -diff --git a/src/audio/ogg_sound_file.hpp b/src/audio/ogg_sound_file.hpp -index 0a9b8b1..8344177 100644 ---- a/src/audio/ogg_sound_file.hpp -+++ b/src/audio/ogg_sound_file.hpp -@@ -18,7 +18,7 @@ - #define HEADER_SUPERTUX_AUDIO_OGG_SOUND_FILE_HPP - - #include --#include -+#include - - #include "audio/sound_file.hpp" - diff --git a/src/control/joystickkeyboardcontroller.cpp b/src/control/joystickkeyboardcontroller.cpp -index de414fa..92ba634 100644 +index 6c9e9c0..dbb8a9e 100644 --- a/src/control/joystickkeyboardcontroller.cpp +++ b/src/control/joystickkeyboardcontroller.cpp @@ -70,7 +70,7 @@ JoystickKeyboardController::JoystickKeyboardController() : @@ -58,7 +30,7 @@ index 235198c..6126b25 100644 try_vsync(true), show_fps(false), diff --git a/src/supertux/main.cpp b/src/supertux/main.cpp -index 3dccd6e..f4b179d 100644 +index d89420f..2c80b2b 100644 --- a/src/supertux/main.cpp +++ b/src/supertux/main.cpp @@ -20,7 +20,7 @@ @@ -213,7 +185,7 @@ index 6ce6f73..e12edf7 100644 return (Console::output); else diff --git a/src/video/gl/gl_lightmap.cpp b/src/video/gl/gl_lightmap.cpp -index 2ac49ef..dd5953b 100644 +index f8a6735..9638b64 100644 --- a/src/video/gl/gl_lightmap.cpp +++ b/src/video/gl/gl_lightmap.cpp @@ -60,7 +60,7 @@ GLLightmap::GLLightmap() : @@ -226,12 +198,12 @@ index 2ac49ef..dd5953b 100644 GLLightmap::~GLLightmap() diff --git a/src/video/gl/gl_renderer.cpp b/src/video/gl/gl_renderer.cpp -index 361f30a..f26db81 100644 +index 0e66433..abf65b8 100644 --- a/src/video/gl/gl_renderer.cpp +++ b/src/video/gl/gl_renderer.cpp -@@ -118,8 +118,8 @@ GLRenderer::draw_surface(const DrawingRequest& request) - - glBindTexture(GL_TEXTURE_2D, gltexture->get_handle()); +@@ -123,8 +123,8 @@ GLRenderer::draw_surface(const DrawingRequest& request) + glBindTexture(GL_TEXTURE_2D, th); + } intern_draw(request.pos.x, request.pos.y, - request.pos.x + surface->get_width(), - request.pos.y + surface->get_height(), @@ -240,9 +212,9 @@ index 361f30a..f26db81 100644 surface_data->get_uv_left(), surface_data->get_uv_top(), surface_data->get_uv_right(), -@@ -150,8 +150,8 @@ GLRenderer::draw_surface_part(const DrawingRequest& request) - - glBindTexture(GL_TEXTURE_2D, gltexture->get_handle()); +@@ -159,8 +159,8 @@ GLRenderer::draw_surface_part(const DrawingRequest& request) + glBindTexture(GL_TEXTURE_2D, th); + } intern_draw(request.pos.x, request.pos.y, - request.pos.x + surfacepartrequest->size.x, - request.pos.y + surfacepartrequest->size.y, @@ -252,7 +224,7 @@ index 361f30a..f26db81 100644 uv_top, uv_right, diff --git a/src/video/gl/gl_renderer.hpp b/src/video/gl/gl_renderer.hpp -index 9e20859..8b7e04e 100644 +index d5d9995..4fdacf8 100644 --- a/src/video/gl/gl_renderer.hpp +++ b/src/video/gl/gl_renderer.hpp @@ -63,8 +63,8 @@ inline void intern_draw(float left, float top, float right, float bottom, @@ -490,10 +462,10 @@ index e814547..710a488 100644 private: Texture(const Texture&); diff --git a/src/video/texture_manager.cpp b/src/video/texture_manager.cpp -index 7343a45..86af07e 100644 +index 0c77a5a..378853b 100644 --- a/src/video/texture_manager.cpp +++ b/src/video/texture_manager.cpp -@@ -219,6 +219,7 @@ TextureManager::create_dummy_texture() +@@ -228,6 +228,7 @@ TextureManager::create_dummy_texture() void TextureManager::save_textures() { @@ -501,7 +473,7 @@ index 7343a45..86af07e 100644 #ifdef GL_PACK_ROW_LENGTH /* all this stuff is not support by OpenGL ES */ glPixelStorei(GL_PACK_ROW_LENGTH, 0); -@@ -236,11 +237,13 @@ TextureManager::save_textures() +@@ -245,11 +246,13 @@ TextureManager::save_textures() i != image_textures.end(); ++i) { save_texture(dynamic_cast(i->second.lock().get())); } @@ -515,7 +487,7 @@ index 7343a45..86af07e 100644 SavedTexture saved_texture; saved_texture.texture = texture; glBindTexture(GL_TEXTURE_2D, texture->get_handle()); -@@ -275,11 +278,13 @@ TextureManager::save_texture(GLTexture* texture) +@@ -284,11 +287,13 @@ TextureManager::save_texture(GLTexture* texture) texture->set_handle(0); assert_gl("retrieving texture for save"); @@ -529,7 +501,7 @@ index 7343a45..86af07e 100644 #ifdef GL_UNPACK_ROW_LENGTH /* OpenGL ES doesn't support these */ glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); -@@ -320,6 +325,12 @@ TextureManager::reload_textures() +@@ -329,6 +334,12 @@ TextureManager::reload_textures() } saved_textures.clear(); diff --git a/project/jni/application/supertux/supertux b/project/jni/application/supertux/supertux deleted file mode 120000 index d0ae93725..000000000 --- a/project/jni/application/supertux/supertux +++ /dev/null @@ -1 +0,0 @@ -../../../../../supertux \ No newline at end of file diff --git a/project/jni/application/supertux/supertux b/project/jni/application/supertux/supertux new file mode 160000 index 000000000..3b3711c24 --- /dev/null +++ b/project/jni/application/supertux/supertux @@ -0,0 +1 @@ +Subproject commit 3b3711c242d630684da33a7a6ac7d7cbce8de457