diff --git a/.gitmodules b/.gitmodules index d2d5dc0ba..4ef1b9201 100644 --- a/.gitmodules +++ b/.gitmodules @@ -71,3 +71,7 @@ url = https://github.com/pelya/Ninslash.git branch = master update = merge +[submodule "project/jni/application/openttd-jgrpp/src"] + path = project/jni/application/openttd-jgrpp/src + url = https://github.com/pelya/OpenTTD-JGR-patchpack.git + branch = jgrpp diff --git a/project/jni/application/openttd-jgrpp/.gitignore b/project/jni/application/openttd-jgrpp/.gitignore new file mode 100644 index 000000000..2b107e500 --- /dev/null +++ b/project/jni/application/openttd-jgrpp/.gitignore @@ -0,0 +1 @@ +openttd-build-* diff --git a/project/jni/application/openttd-jgrpp/AndroidAppSettings.cfg b/project/jni/application/openttd-jgrpp/AndroidAppSettings.cfg new file mode 100644 index 000000000..c5635029b --- /dev/null +++ b/project/jni/application/openttd-jgrpp/AndroidAppSettings.cfg @@ -0,0 +1,290 @@ +# The application settings for Android libSDL port + +# Specify application name (e.x. My Application) +AppName="OpenTTD-JGRpp" + +# Specify reversed site name of application (e.x. com.mysite.myapp) +AppFullName=org.openttd.jgrpp + +# Application version code (integer) +AppVersionCode=021071 + +# Application user-visible version name (string) +AppVersionName="0.21.0.71" + +# 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 +# You can specify Google Play expansion files in the form 'obb:main.12345' or 'obb:patch.12345' where 12345 is the app version, first associated with the file +AppDataDownloadUrl="!!Data files - 20 Mb|openttd-data-1.7.1-1.zip.xz^!!Config file|:.openttd/openttd.cfg:openttd-1.4.0.30.cfg^!!MIDI music support (18 Mb)|timidity.zip.xz|http://sourceforge.net/projects/libsdl-android/files/timidity.zip.xz^!!Internationalization files|icudt59l.zip.xz|http://sourceforge.net/projects/libsdl-android/files/icudt59l.zip.xz^HD graphics (optional) - 220 Mb download|http://sourceforge.net/projects/libsdl-android/files/OpenTTD/abase-0.1.2-0.zip.xz/download|http://sourceforge.net/projects/libsdl-android/files/OpenTTD/zBase-v5588.zip.xz/download" + +# Reset SDL config when updating application to the new version (y) / (n) +ResetSdlConfigForThisVersion=n + +# Delete application data files when upgrading (specify file/dir paths separated by spaces) +DeleteFilesOnUpgrade="libsdl-DownloadFinished-0.flag" + +# Here you may type readme text, which will be shown during startup. Format is: +# Text in English, use \\\\n to separate lines (that's four backslashes)^de:Text in Deutsch^ru:Text in Russian^button:Button that will open some URL:http://url-to-open/ +ReadmeText='' + +# libSDL version to use (1.2/1.3/2.0) +LibSdlVersion=1.2 + +# Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape +ScreenOrientation=h + +# 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=16 + +# 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 + +# Use glshim library for provide OpenGL 1.x functionality to OpenGL ES accelerated cards (y) or (n) +UseGlshim= + +# 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 + +# Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer +InhibitSuspend=y + +# Create Android service, so the app is less likely to be killed while in background +CreateService= + +# 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) +CompatibilityHacksForceScreenUpdate=n + +# Application does not call SDL_Flip() or SDL_UpdateRects() after mouse click (ScummVM and all Amiga emulators do that) - +# force screen update by moving mouse cursor a little after each click (y) or (n) +CompatibilityHacksForceScreenUpdateMouseClick=y + +# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n) +CompatibilityHacksStaticInit=y + +# On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n) +CompatibilityHacksTextInputEmulatesHwKeyboard=n + +# Built-in text input keyboards with custom layouts for emulators, requires CompatibilityHacksTextInputEmulatesHwKeyboard=y +# 0 or empty - standard Android keyboard +# 1 - Simple QWERTY keyboard, no function keys, no arrow keys +# 2 - Commodore 64 keyboard +# 3 - Amiga keyboard +# 4 - Atari800 keyboard +TextInputKeyboard= + +# 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 SDL_UpdateRects() properly, and does not draw in any region outside those rects. +# This improves drawing speed, but I know only one application that does that, and it's written by me (y)/(n) +CompatibilityHacksProperUsageOfSDL_UpdateRects=n + +# 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=y + +# Right mouse button can do long-press/drag&drop action, necessary for some games (y) or (n) +# If you disable it, swiping with two fingers will send mouse wheel events +RightMouseButtonLongPress=y + +# Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n) +ShowMouseCursor=n + +# Screen follows mouse cursor, when it's covered by soft keyboard, this works only in software video mode (y) or (n) +ScreenFollowsMouse= + +# Generate more touch events, by default SDL generates one event per one video frame, this is useful for drawing apps (y) or (n) +GenerateSubframeTouchEvents= + +# Force relative (laptop) mouse movement mode, useful when both on-screen keyboard and mouse are needed (y) or (n) +ForceRelativeMouseMode=n + +# Show on-screen dpad/joystick, that will act as arrow keys (y) or (n) +AppNeedsArrowKeys=n + +# On-screen dpad/joystick will appear under finger when it touches the screen (y) or (n) +# Joystick always follows finger, so moving mouse requires touching the screen with other finger +FloatingScreenJoystick= + +HideSystemMousePointer=y + +# Application needs text input (y) or (n), enables button for text input on screen +AppNeedsTextInput=n + +# Application uses joystick (y) or (n), the on-screen DPAD will be used as joystick 0 axes 0-1 +# This will disable AppNeedsArrowKeys option +AppUsesJoystick=n + +# Application uses second on-screen joystick, as SDL joystick 0 axes 2-3 (y)/(n) +AppUsesSecondJoystick=n + +# Application uses third on-screen joystick, as SDL joystick 0 axes 20-21 (y)/(n) +AppUsesThirdJoystick= + +# 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 orientation sensor (y) or (n), reported as joystick 1 axes 8-10 +AppUsesOrientationSensor= + +# Use gyroscope to move mouse cursor (y) or (n), it eats battery, and can be disabled in settings, do not use with AppUsesGyroscope setting +MoveMouseWithGyroscope= + +# Application uses multitouch (y) or (n), multitouch events are passed as SDL_JOYBALLMOTION events for the joystick 0 +AppUsesMultitouch=y + +# 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 needs to access SD card. Always disable it, unless you want to access user photos and downloads. (y) / (n) +AccessSdCard=n + +# Application needs Internet access. If you disable it, you'll have to bundle all your data files inside .apk (y) / (n) +AccessInternet= + +# Immersive mode - Android will hide on-screen Home/Back keys. Looks bad if you invoke Android keyboard. (y) / (n) +ImmersiveMode= + +# 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 DELETE" + +# Number of virtual keyboard keys (currently 6 is maximum) +AppTouchscreenKeyboardKeysAmount=0 + +# Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right) +RedefinedKeysScreenKb="LALT RETURN KP_PLUS KP_MINUS SPACE DELETE KP_PLUS KP_MINUS 1 2" + +# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu +RedefinedKeysScreenKbNames="LALT RETURN KP_PLUS KP_MINUS SPACE DELETE KP_PLUS KP_MINUS 1 2" + +# On-screen keys theme +# 0 = Ultimate Droid by Sean Stieber (green, with cross joystick) +# 1 = Simple Theme by Beholder (white, with cross joystick) +# 2 = Sun by Sirea (yellow, with round joystick) +# 3 = Keen by Gerstrong (multicolor, with round joystick) +# 4 = Retro by Santiago Radeff (red/white, with cross joystick) +# 5 = GameBoy from RetroArch +# 6 = PlayStation from RetroArch +# 7 = SuperNintendo from RetroArch +# 8 = DualShock from RetroArch +# 9 = Nintendo64 from RetroArch +TouchscreenKeysTheme=2 + +# Redefine gamepad keys to SDL keysyms, button order is: +# A B X Y L1 R1 L2 R2 LThumb RThumb +RedefinedKeysGamepad="LALT RETURN KP_PLUS KP_MINUS MOUSE_RIGHT MOUSE_LEFT SPACE MOUSE_RIGHT DELETE MOUSE_LEFT" + +# How long to show startup menu button, in msec, 0 to disable startup menu +StartupMenuButtonTimeout=3000 + +# 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.CommandlineConfig 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 SettingsMenuKeyboard.ScreenKeyboardAdvanced +HiddenMenuOptions='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.CommandlineConfig 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 SettingsMenuKeyboard.ScreenKeyboardAdvanced +FirstStartMenuOptions='SettingsMenu.DummyMenu' + +# Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower +AppMinimumRAM=0 + +# GCC version, or 'clang' for CLANG +NDK_TOOLCHAIN_VERSION=clang + +# Specify architectures to compile, 'all' or 'y' to compile for all architectures. +# Available architectures: armeabi armeabi-v7a x86 mips arm64-v8a x86_64 +MultiABI='armeabi-v7a x86 arm64-v8a' + +# 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="jpeg png freetype timidity expat fontconfig lzma lzo2 icui18n iculx icu-le-hb harfbuzz icudata icuuc" + +# Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n) +CustomBuildScript=y + +# Aditional CFLAGS for application +AppCflags='' + +# Additional LDFLAGS for application +AppLdflags='' + +# 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='' + +# Exclude these files from build +AppBuildExclude='' + +# Application command line parameters, including app name as 0-th param +AppCmdline='openttd -d 0 -b 16bpp-simple' + +# 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/FULL_BANNER/LEADERBOARD/MEDIUM_RECTANGLE/SMART_BANNER/WIDE_SKYSCRAPER/FULL_WIDTH:Height/Width:AUTO_HEIGHT/Width:Height) +AdmobBannerSize= + +# Google Play Game Services application ID, required for cloud saves to work +GooglePlayGameServicesId=942284197278 + diff --git a/project/jni/application/openttd-jgrpp/AndroidBuild.sh b/project/jni/application/openttd-jgrpp/AndroidBuild.sh new file mode 100755 index 000000000..cc90f4615 --- /dev/null +++ b/project/jni/application/openttd-jgrpp/AndroidBuild.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +LOCAL_PATH=`dirname $0` +LOCAL_PATH=`cd $LOCAL_PATH && pwd` +VER=build + +[ -d openttd-$VER-$1 ] || mkdir -p openttd-$VER-$1/bin/baseset + +export ARCH=$1 + +CPU_TYPE=32 +[ "$ARCH" = "arm64-v8a" ] && CPU_TYPE=64 + +[ -e openttd-$VER-$1/objs/lang/english.lng ] || { + sh -c "cd openttd-$VER-$1 && ../src/configure --without-freetype --without-png --without-zlib --without-lzo2 --without-lzma --endian=LE --cpu-type=$CPU_TYPE && make lang && make -C objs/release endian_target.h depend && make -C objs/setting" || exit 1 + rm -f openttd-$VER-$1/Makefile +} || exit 1 + +[ -e openttd-$VER-$1/Makefile ] || { + rm -f src/src/rev.cpp + env PATH=$LOCAL_PATH/..:$PATH \ + env CLANG=1 ../setEnvironment-$1.sh sh -c "cd openttd-$VER-$1 && env ../src/configure --with-sdl --with-freetype --with-png --with-zlib --with-icu --with-libtimidity='pkg-config libtimidity' --with-lzo2=$LOCAL_PATH/../../../obj/local/$ARCH/liblzo2.so --prefix-dir='.' --data-dir='' --without-allegro --with-fontconfig --with-lzma --endian=LE --cpu-type=$CPU_TYPE" +} || exit 1 + +NCPU=4 +uname -s | grep -i "linux" > /dev/null && NCPU=`cat /proc/cpuinfo | grep -c -i processor` + +# clang arm hack +LIBATOMIC= +echo $1 | grep 'arm' && LIBATOMIC=-latomic + +env CLANG=1 LIBATOMIC=$LIBATOMIC ../setEnvironment-$1.sh sh -c "cd openttd-$VER-$1 && make -j$NCPU VERBOSE=1 STRIP='' LIBS='-lsdl-1.2 -llzo2 -lpng -ltimidity -lfontconfig -lfreetype -lexpat -licui18n -liculx -licu-le-hb -lharfbuzz -licuuc -licudata -lgcc -lz -lc -lgnustl_static -lsupc++ $LIBATOMIC'" && cp -f openttd-$VER-$1/objs/release/openttd libapplication-$1.so || exit 1 diff --git a/project/jni/application/openttd-jgrpp/AndroidData/openttd-1.4.0.30.cfg b/project/jni/application/openttd-jgrpp/AndroidData/openttd-1.4.0.30.cfg new file mode 100644 index 000000000..17b4a40e3 --- /dev/null +++ b/project/jni/application/openttd-jgrpp/AndroidData/openttd-1.4.0.30.cfg @@ -0,0 +1,25 @@ +[misc] +resolution = 854,480 +small_font = fonts/Roboto-Bold.ttf +medium_font = fonts/Roboto-Bold.ttf +large_font = fonts/DroidSerif-Bold.ttf +mono_font = fonts/DroidSansMono.ttf +small_size = 10 +medium_size = 12 +large_size = 16 +mono_size = 12 +small_aa = true +medium_aa = true +large_aa = true +mono_aa = true +min_button_size = 48 +min_step_size = 48 + +[gui] +left_mouse_btn_scrolling = true +osk_activation = disabled +auto_scrolling = 0 +reverse_scroll = true +windows_titlebars = false +windows_decorations = true +compact_vertical_toolbar = true diff --git a/project/jni/application/openttd-jgrpp/build-pc.sh b/project/jni/application/openttd-jgrpp/build-pc.sh new file mode 100755 index 000000000..c18359044 --- /dev/null +++ b/project/jni/application/openttd-jgrpp/build-pc.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +LOCAL_PATH=`dirname $0` +LOCAL_PATH=`cd $LOCAL_PATH && pwd` + +mkdir -p openttd-pc openttd-pc/baseset +cd openttd-pc +[ -e bin/baseset ] || cp -a ../src/bin ./ +[ -e bin/fonts ] || cp -a ../data/fonts bin/ + +export CFLAGS=-O0 +export CXXFLAGS=-O0 + +[ -e Makefile ] || ../src/configure --enable-debug --cpu-type=64 || exit 1 +make -j8 VERBOSE=1 || exit 1 +cd bin + +export LD_LIBRARY_PATH=/usr/local/lib + +if [ -z "$1" ]; then + ./openttd -d 2 -r 854x480 -g opntitle.sav +else + #valgrind --track-fds=yes --log-file=valgrind.log --leak-check=full \ + gdb -ex run --args \ + ./openttd -d 2 -r 854x480 -g opntitle.sav +fi diff --git a/project/jni/application/openttd-jgrpp/icon.png b/project/jni/application/openttd-jgrpp/icon.png new file mode 100644 index 000000000..607f06043 Binary files /dev/null and b/project/jni/application/openttd-jgrpp/icon.png differ diff --git a/project/jni/application/openttd-jgrpp/pack-data.sh b/project/jni/application/openttd-jgrpp/pack-data.sh new file mode 100755 index 000000000..536b14fca --- /dev/null +++ b/project/jni/application/openttd-jgrpp/pack-data.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +VER=1.7.1-1 + +cd data +rm -f ../AndroidData/openttd-data-*.zip.xz ../AndroidData/openttd-data-*.zip +zip -0 -r ../AndroidData/openttd-data-$VER.zip . && xz -8 ../AndroidData/openttd-data-$VER.zip diff --git a/project/jni/application/openttd-jgrpp/readme.txt b/project/jni/application/openttd-jgrpp/readme.txt new file mode 100644 index 000000000..2221ff946 --- /dev/null +++ b/project/jni/application/openttd-jgrpp/readme.txt @@ -0,0 +1,9 @@ +Quick compilation guide: +Install liblzma-dev, it's needed for configure script +sudo apt-get install liblzma-dev +Download my Git repo from https://github.com/pelya/commandergenius, +then install Android SDK, Android NDK, and "ant" tool, then launch commands + git submodule update --init --recursive + build.sh openttd-jgrpp +You may need to run command + android update project -p project -t android-25 diff --git a/project/jni/application/openttd-jgrpp/reunpack-data-device.sh b/project/jni/application/openttd-jgrpp/reunpack-data-device.sh new file mode 100755 index 000000000..09d8222d3 --- /dev/null +++ b/project/jni/application/openttd-jgrpp/reunpack-data-device.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +adb shell rm /mnt/shell/emulated/0/Android/data/org.openttd.sdl/files/libsdl-DownloadFinished-0.flag +adb shell rm /mnt/shell/emulated/0/Android/data/org.openttd.sdl/files/libsdl-DownloadFinished-1.flag diff --git a/project/jni/application/openttd-jgrpp/src b/project/jni/application/openttd-jgrpp/src new file mode 160000 index 000000000..8817a75e6 --- /dev/null +++ b/project/jni/application/openttd-jgrpp/src @@ -0,0 +1 @@ +Subproject commit 8817a75e6cebdf140ecdb24799561ecb886bedc1 diff --git a/project/jni/application/openttd-jgrpp/unpack-data.sh b/project/jni/application/openttd-jgrpp/unpack-data.sh new file mode 100755 index 000000000..8bf63b0df --- /dev/null +++ b/project/jni/application/openttd-jgrpp/unpack-data.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +ls openttd-data-*.zip.xz || cp AndroidData/openttd-data-*.zip.xz ./ + +for f in openttd-data-*.zip.xz; do + xz -d $f +done + +for f in openttd-data-*.zip; do + rm -rf data + mkdir data + cd data + unzip ../$f + cd .. +done + diff --git a/project/jni/application/openttd/AndroidBuild.sh b/project/jni/application/openttd/AndroidBuild.sh index 2285cd5a3..cc90f4615 100755 --- a/project/jni/application/openttd/AndroidBuild.sh +++ b/project/jni/application/openttd/AndroidBuild.sh @@ -6,16 +6,20 @@ VER=build [ -d openttd-$VER-$1 ] || mkdir -p openttd-$VER-$1/bin/baseset +export ARCH=$1 + +CPU_TYPE=32 +[ "$ARCH" = "arm64-v8a" ] && CPU_TYPE=64 + [ -e openttd-$VER-$1/objs/lang/english.lng ] || { - sh -c "cd openttd-$VER-$1 && ../src/configure --without-freetype --without-png --without-zlib --without-lzo2 --without-lzma --endian=LE && make lang && make -C objs/release endian_target.h depend && make -C objs/setting" || exit 1 + sh -c "cd openttd-$VER-$1 && ../src/configure --without-freetype --without-png --without-zlib --without-lzo2 --without-lzma --endian=LE --cpu-type=$CPU_TYPE && make lang && make -C objs/release endian_target.h depend && make -C objs/setting" || exit 1 rm -f openttd-$VER-$1/Makefile } || exit 1 -export ARCH=$1 [ -e openttd-$VER-$1/Makefile ] || { rm -f src/src/rev.cpp env PATH=$LOCAL_PATH/..:$PATH \ - env CLANG=1 ../setEnvironment-$1.sh sh -c "cd openttd-$VER-$1 && env ../src/configure --with-sdl --with-freetype --with-png --with-zlib --with-icu --with-libtimidity='pkg-config libtimidity' --with-lzo2=$LOCAL_PATH/../../../obj/local/$ARCH/liblzo2.so --prefix-dir='.' --data-dir='' --without-allegro --with-fontconfig --with-lzma --endian=LE" + env CLANG=1 ../setEnvironment-$1.sh sh -c "cd openttd-$VER-$1 && env ../src/configure --with-sdl --with-freetype --with-png --with-zlib --with-icu --with-libtimidity='pkg-config libtimidity' --with-lzo2=$LOCAL_PATH/../../../obj/local/$ARCH/liblzo2.so --prefix-dir='.' --data-dir='' --without-allegro --with-fontconfig --with-lzma --endian=LE --cpu-type=$CPU_TYPE" } || exit 1 NCPU=4 diff --git a/project/jni/application/openttd/build-pc.sh b/project/jni/application/openttd/build-pc.sh index c4ca31ab1..abc78360e 100755 --- a/project/jni/application/openttd/build-pc.sh +++ b/project/jni/application/openttd/build-pc.sh @@ -20,7 +20,7 @@ export LD_LIBRARY_PATH=/usr/local/lib if [ -z "$1" ]; then ./openttd -d 2 -r 854x480 -g opntitle.sav else - #gdb -ex run --args \ #valgrind --track-fds=yes --log-file=valgrind.log --leak-check=full \ - ./openttd -d 2 -r 854x480 #-g opntitle.sav + gdb -ex run --args \ + ./openttd -d 2 -r 854x480 -g opntitle.sav fi diff --git a/project/jni/application/openttd/readme.txt b/project/jni/application/openttd/readme.txt index 53f9e0b21..2221ff946 100644 --- a/project/jni/application/openttd/readme.txt +++ b/project/jni/application/openttd/readme.txt @@ -4,8 +4,6 @@ sudo apt-get install liblzma-dev Download my Git repo from https://github.com/pelya/commandergenius, then install Android SDK, Android NDK, and "ant" tool, then launch commands git submodule update --init --recursive - rm project/jni/application/src - ln -s openttd project/jni/application/src - ./changeAppSettings.sh -a - android update project -p project -then launch build.sh. That should be it. + build.sh openttd-jgrpp +You may need to run command + android update project -p project -t android-25 diff --git a/project/jni/application/openttd/src b/project/jni/application/openttd/src index ca629a74c..ebaa3964e 160000 --- a/project/jni/application/openttd/src +++ b/project/jni/application/openttd/src @@ -1 +1 @@ -Subproject commit ca629a74c84fc300255e57e507c0d375ac50668f +Subproject commit ebaa3964ed2558ac4f1883e67574e951036a4db8