Classic Core
com.mobilerpgpack.phone
Zapstore _@zapstore.dev Republished from GitHub / F-Droid by the Zapstore main account.
Sats Received
Underlying data available via MCP: app_zaps, app_releases.
Zap Count
Underlying data available via MCP: app_zaps, app_releases.
Releases
- Aug 30, 2026 3.3.3This update doesn't change my stance on legacy mobile development, nor does it mean I plan to return to it on a permanent basis; I actually created this update purely for myself to simplify the *Arx Fatalis* gameplay, as I intend to play through the game on my phone. The next update will arrive in six months - as scheduled in my new update cycle - and that’s all there is to it. From now on, I am focusing exclusively on modern mobile game dev using Unity and Godot. PS: In UZDoom 5.1 dev update the upstream developers broke pretty much everything for phones, but it won't be fixed, since it's no longer my technical debt at all - and in reality, it never was. Changelog: - Fixed annoying segfault (crash) in Doom64 engines in runtime, This segfault was caused by an incorrectly written implementation of the audio backend in the engine - DOOM64-EX-Plus-Enhanced engine fork was updated to latest source code - https://github.com/Styd051/DOOM64-EX-Plus-Enhanced - id tech 4.5 engine was updated to latest source code - UZDoom was updated to 5.1 dev release - In Arx Fatalis added opportunity to cast spells quickly without annoying ARX fatalis magic drawing system, based on this work https://github.com/RockeyLol/ArxLibertatis. There is also support for quick access to the inventory; however, the on-screen controls wouldn't fit on the display and are hidden by default, though they can be added to the screen if desired. This system is working only with onscreen controls and real keyboard and it will never be added by me to the gamepad implementation.
More…
https://www.youtube.com/watch?v=e9M4oK3tb3Q - Aug 24, 2026 3.3.2Changelog: - minimal Android SDK was downgraded from Android O to Android N. The latest release version of JNA works on Android N; I have only tested Arx Fatalis on Android N, but all legacy engines should work on Android N without issues, the only thing unavailable on Android N will be the ANGLE API. - To UZDoom 5.x dev version was added opportunity to show Fatal errors on Android to user using SDL crossplatform dialogbox. - UZDoom 5.x dev version will use now separate cache folder for vulkan generated shaders with using angle API
- Aug 23, 2026 3.3.1Changelog: - fixed not working overriding user data folder, it will also fix random startup segfaults due to race conditions in multiple threads (These regression and segfaults arose from adding uzdoom 5.x code here; the application architecture is already overloaded, and it is no longer possible to add another legacy engine to it)
- Aug 23, 2026 3.3.0Changelog: - Added UZDoom 5.x dev version, It is enabled by default, can be switched to legacy UZDoom (4.14.3) in runtime - Dropped UZDoom vk render, use angle instead, if you need vulkan support - UZDoom will use gles 3.0 api by default, still can be switched to gles 2.0 in runtime - Restored all android archs for chrome os and Android GO support (id tech 4.5 will never work at armv7 and x86 archs due to RAM limitations on these devices)
- Aug 21, 2026 3.2.4Changelog - removed JNA method, which registered virtual stick in id tech 4.5 for player movement, It was wrong, because this JNA native method always called from separate thread and coule lead to race conditions even with using mutex. Now for this purpose is using SDL3 event in game thread - widelands was updated to latest release
- Aug 13, 2026 3.2.3Changelog - fixed mipmaps and anisotropy support in etc2 textures in Arx Fatalis, so, it was enabled again by default, still can be disabled.
- Aug 12, 2026 3.2.1Changelog - Fixed all graphics bugs in generated final etc2 textures. Note - automipmaps generation, what this engine expected does not work with compressed textures, it is gpu driver limitations, And not just on one vendor's devices, but on all mobile devices - everywhere. If trying to write code for mipmap generation, it wouldn't work; there are limitations within the ng gl4es code itself regarding mipmap rendering. To overcome this, I would have to delete ng gl4es and rewrite Arx Fatalis to the direct GLES 3.2 renderer—which is impossible due to this engine reliance on the fixed-function OpenGL pipeline. However, the absence of mipmaps isn't critical for a 2002 game with a very short draw distance; on the small screen of a modern phone, it simply goes unnoticed. To fix all etc2 textures - need to clear application cache - added opportunity to disable etc2 texture support in Arx Fatalis in gles 3.0 path and use again raw textures with automipmap generation without issues The Android development of Arx Fatalis is now complete, I will never make any further changes in this code, there is no longer any point in doing so.
- Aug 11, 2026 3.1.13Changelog: - all android lifecycle events in all legacy engines were moved from JNA native calls to SDL3 events. It is need to fix race conditions and segfaults connected with such calls, because JNA native methods always calls from separate thread. It is also fixed all Vanilla-Conquer startup annoying issues (render crashes), now it is finally fully playable on Android platform like native mobile game
- Aug 11, 2026 3.1.12Changelog: - fixed not working safe area screen resizing in Vanilla-Conquer - fixed startup runtime crash in Vanilla-Conquer - fixed not working hardware back button in Vanilla-Conquer - added workaround for avoiding black screen issue after egl context lost directly to SDL3 source code, for avoiding this bug in legacy, using SDLRender - fixed startup segfault in Doom64 - DOOM64-EX-Plus-Enhanced sources were updated to latest - fixed wrong working safe area screen resizing in Doom64 There still exists some annoying issues in Vanilla-Conquer at startup, but they are too difficult to fix and will be ignored.
More…
At least for now - Aug 9, 2026 3.1.11Changelog: - total particles size in id tech 4.5 was reduced by 1.5 times, tile based gpus hates a lot of particles textures, so for mobile gpus really need to use small amount of particle textures in particle system - id tech 4.5 now will use etc2 compressed textures where it is possible for default uncompressed textures. - SDL3 was updated to latest stable version - angle sources updated to latest revision - yquake2 sources updated to latest revision
- Jul 29, 2026 3.1.10Changelog: - Added DocumentsProvider API support, allowing you to modify the app’s sandbox storage content in file managers that support DocumentsProvider API. The working implementation of this feature is taken from https://github.com/glKarin/com.n0n3m4.diii4a. All credit for this feature goes to glkarin. I have neither the time nor the desire to write my own workarounds when I can use a proven solution from someone else, as the license of glkarin’s project allows this. If anyone doesn’t like it, they are free to implement their own solution. With this feature, the app now supports the full functionality found in other similar apps, so no further updates are planned for at least the next six months, possibly longer. Legacy code is starting to seriously irritate me, and I have other work besides dealing with it.
- Jul 28, 2026 3.1.9Changelog - Added the ability to use the app’s external storage sandbox folder as the target data directory for all 13 legacy engines. This method is intended only for broken Chinese firmware and certain Android 10-11 based firmware, where Google once again reworked filesystem access and where MANAGE_EXTERNAL_STORAGE for direct POSIX operations does not work. This approach is already used as a production solution in many legacy engines rewritten for Android, such as devilutionx (https://github.com/diasurgical/devilutionx). - Starting with this update, the app’s external storage sandbox is once again used by default as the user storage folder instead of the internal sandbox storage. Using the internal sandbox provides no advantages for either the user or the developer, so the choice is made in favor of the more accessible and convenient external storage.
- Jul 27, 2026 3.1.8All code for the POSIX system emulation via SAF has been removed. The reason: this code is not for production. emileb wrote brilliant code for emulating a POSIX filesystem, but that code was never designed for a scenario where 20 .so libraries from different threads simultaneously access the filesystem through SAF. And no, simple mutexes and synchronization won't save you. ANR (Application Not Responding) is inevitable. Such code should be written at the Android operating system level. Because this filesystem implementation via POSIX - despite being an emulation - in fact, a full POSIX filesystem implementation. And that's the job of Google and AOSP developers, who are paid enormous sums of money for it.
More…
Not $1, not $2, but over $500,000 per year. I am not a Google developer, nor an AOSP developer. Therefore, if someone has a problematic Chinese device where the manufacturer didn't properly implement the standard POSIX filesystem, that's not my problem. Such a person can contact their phone manufacturer, hire IT specialists from IT corporations, or write the solution they need themselves - without me. - Jul 26, 2026 3.1.7Changelog - Added SAF call support for POSIX methods instead of native POSIX methods. Disabled by default. However, a single SAF call is 20–30× slower than a native POSIX call. This is not a flaw in the SAF handling implementation, but a limitation of Android’s SAF itself - SAF was never designed, and never will be designed, for this kind of usage. The feature exists purely to give legacy engines a chance on broken Chinese firmware where manufacturers didn’t implement native POSIX methods as expected by those engines. If anyone still has filesystem problems after this, they are welcome to fork this repository and sort it out themselves - without me. (I have zero filesystem issues across my 8 test devices, and I’m done playing guessing games without owning a problematic unit. In short, it’s not my problem.) - Fixed an annoying issue where the on-screen stick does not work earlier in id Tech 4.5. - id Tech 4.5 now includes the original BFG edition materials from the upstream RBDOOM-3-BFG repository: https://github.com/RobertBeckebans/RBDOOM-3-BFG All credits for the SAFFAL POSIX-over-SAF implementation (https://github.com/emileb/SAFFAL) goes to emileb - https://github.com/emileb He is the only professional in the entire open-source world who has built this POSIX emulation layer via SAF for Android. There is literally nobody else.
- Jul 23, 2026 3.1.6.1Changelog: - Fixed low fps in arx fatalis on mali, it was due changes in vertex buffer changes. Using gl4es in render makes any changes to the renderer pointless and useless. After attempts at optimization, the engine actually performs worse than before due to gl4es. - Fixed GPU hangs on Mali GPUs in id tech 4.5 when persistent buffer storage is enabled. Switched persistent mapping from сoherent path to non coherent path. Coherent mapping on Mali is unreliable and leads to driver deadlocks. The non‑coherent path avoids these issues - buffer storage was disabled in uzdoom completely (also fixed gpu hangs on mali gpus) - Removed GL_MAP_INVALIDATE_BUFFER_BIT from id tech 4.5 and Uzdoom to avoid pipeline stalls on Mali GPUs. Replaced with explicit buffer orphaning And yes, that's exactly why I left all the communities - because they think it's easy to port a legacy engine to phones. And they give their "expert" opinions based on their porting experience. Spoiler: they don't have any experience. They say it's porting and it can be done in a month. No, it can't be done in a month or even two months. It takes years. And it's not porting - it's rewriting a legacy engine for mobile architecture.
- Jul 23, 2026 3.1.6Changelog: - Arx fatalis sources were updated with some third party forks changes - 0s and flto=thin was returned, I tried to use -O3 and flto=full I noticed that people porting legacy code were using the `-O3` flag is which is a terrible idea for legacy code on ARMV8 platform. These developers don't understand mobile development, because they’ve spent their entire careers writing code for the x86 platform. They write legacy C and C++ code full with undefined behavior; while the x86 platform and compiler might be forgiving of this - even with `-O3` enabled - Android on ARMv8 is not. The `-O3` flag triggers highly aggressive optimizations that cause all that undefined behavior to manifest as segmentation faults and app crashes. - GL_SYNC_FLUSH_COMMANDS_BIT command was deleted from id tech 4.5 and Uzdoom, These flag is glflush eqilvalent and using it in middle of frame is very terrible idea for tile based gpu. People who write code like that simply break the tiling mechanism of mobile tile-based GPUs, and then wonder why the game is running at 10 FPS? - Buffer objects in id tech 4.5 was rewirtten as required by tile based GPUs - buffer_storage using was enabled in Uzdoom, if device supports it - gamepad working was fixed in id tech 4.5. This regression was caused by the terrible control code in id Tech 4.5, which is riddled with undefined behavior; any fix in that code triggers a hundred others regressions. - angle was updated to latest revision - Vanilla Conqueror engine was updated to latest sources - All native third party deps were updated to latest sources
More…
- in NG GL4es was enabled MSAA support, However, none of the legacy engines using this library support MSAA. I deliberately set my profile to private to avoid being bothered. There is no need to dig up my personal email address from commits and annoy me with stupid, inappropriate questions - like asking why I didn't implement gles full resources restoration after an EGL context loss in the legacy engines. First of all, such a question is inappropriate. Secondly, it is unethical to bother people when they have intentionally chosen not to list their personal email address in their profile. But if you need an answer to this question: No one does this in legacy mobile engines because it’s impossible. All legacy engines were written for PC, where the GL context persists for the entire lifetime of the application - even when the app is minimized. Implementing this feature would mean rewriting more than half of each legacy engine's architecture, which - at best - would take over a year per engine. That is why no one does it. If you need a feature that restores GLES resources after an EGL context loss, write your mobile games using Godot or Unity. Those engines have this feature implemented out of the box. Because Unity is a commercial engine. And Because Godot was designed with mobile architecture in mind from the very start. For other questions, consult the GLES specification and best mobile practices . It will answer all your questions. https://registry.khronos.org/OpenGL/specs/es/3.2/es_spec_3.2.pdf https://developer.arm.com/documentation/101897/0304 https://docs.qualcomm.com/doc/80-78185-2/topic/mobile_best_practices.html https://docs.imgtec.com/performance-guides/graphics-recommendations/html/index.html - Jul 13, 2026 3.1.5Changelog: - -Os and -flto=thin was replaced with -O3 and flto=full - in id tech 4.5 was enabled -fast-math flag for math operations with floats - more faster gpu syncronization code in id tech 4.5 glmapbufferrange ringbuffer implementation - mlkit was removed
- Jul 7, 2026 3.1.4Changelog: - fixed EGL_BAD_SURFACE (gl context lost) for id tech 4.5. This is precisely what caused black screens in this engine when minimizing it during a level load and then restoring it. It isn't a bug in the engine itself, but rather an SDL3 regression introduced by the SDL developers following the transition from SDL2. I suppose, all annoying id tech 4.5 bugs on Android were fixed.
- Jul 6, 2026 3.1.3Changelog: - Fixed floating textures in id tech 4.5, which exists at some parts of the game levels.
- Jul 5, 2026 3.1.2Changelog: - There is no properly ultrawide monitors support in id tech 4.5, so some weapons animations on phones with uldtrawide resolutions had graphics artifacts, I fixed it by changing formulas for working with FOV. Again, all these bugs are not mine, These are John Carmack’s personal bugs, and that is precisely why only two - three people in the world are doing high-quality work in the mobile legacy open source scene. Because no one wants to take on someone else’s massive technical debt - the endless tasks of fixing another person’s bugs. - angle was updated to latest revision No more changes
- Jul 4, 2026 3.1.1Changelog: - Fixed white particle flashes caused by vertex cache frame counter overflow in id tech 4.5 ..which occurred every 2 minutes and 16 seconds. Actually, I didn't fix the bug itself; I simply increased the time it takes for the frame counter to overflow - from 2 minutes and 16 seconds to 1.2 hours (assuming a target of 60 FPS). A glitch occurring once every 1.2 hours has virtually no impact on the gameplay session and goes unnoticed. Properly fixing the bug would be extremely costly; I spent a full week just identifying the cause of this bug and another day implementing the workaround. Like all other legacy ports, id Tech 4.5 has a a lot of other graphical bugs - and while I am well aware of them, I am not going to fix them, as doing so would require a massive amount of my personal life. - Motion blur was completely disabled in id tech 4.5, because it is does not work correctly on Android. This bug wont fix. - Disabled opportunity to copy 2dtextures every frame in id tech 4.5 by default, however it is possible to enable it. Copy 2dtextures every frame is very bad practice for tile-based mobile gpus, Because it kills the phone's bandwidth. There will be no further fixes for graphical bugs in these legacy engines. If anyone needs to fix them, they can fork this repo and fix the bugs themselves, without me. I’m also really amused by people who want desktop-class graphics effects in legacy engines running on mobiles. That has never been a priority for me, and it never will be. These people simply don’t understand how tile-based mobile GPUs work - that all those effects are designed for heavy IMR rendering from PC - and by using them, they are quite literally killing their own phones. That’s not a metaphor; they really are destroying their own devices.
- Jul 2, 2026 3.1.0I played about 6 hours in id tech 4.5 and found some unnoying issues in Classic-RBDOOM-3-BFG fork, so I fixed them Changelog - in id tech 4.5 now always will be used only OPENGL ES 3.2 API as main render target. The engine uses specific API calls in shaders that are standard only in OpenGL ES 3.1 and 3.2. Calling these methods in OpenGL ES 3.0 as a render target is undefined behavior, and the driver may segfault the application, even if the mobile device supports the OpenGL ES 3.2 API. And from now on, I will always use only OPENGL ES 3.2 as the main render target, even in Unity and Godot Open Source mobile development. Also, from now on, I will only work with engines whose API is written exclusively in OpenGL. The mobile Vulkan driver has no relation to the desktop Vulkan driver, so to make a good port of a legacy engine to a phone with Vulkan render, it needs to be completely rewritten from scratch for the phone. The ARM documentation clearly outlines the specifics of the mobile Vulkan driver over about 40 pages, and explicitly states that it has absolutely nothing to do with the desktop Vulkan driver. The only reliable way to achieve a stable Vulkan renderer in legacy engines is to use Vulkan through ANGLE, because Google knows how to build a Vulkan backend for mobile devices. And yes, Vulkan through ANGLE is real Vulkan rendering. Anyone claiming otherwise and saying it's just another OpenGL ES implementation simply doesn't understand modern mobile graphics standards. - SPIRV CROSS using was removed from id tech 4.5 and now always will be used build in id tech 4.5 HSLSL -> GLES 3.2 shader converter. It is better on mobiles - I switched from highp shader precisions to mediump shader precisions where it is possible in id tech 4.5, It will stop killing ALU and will give more stable framerate on mobiles - In id tech 4.5 fixed annoying issue with not showing saved games sometimes after engine starting on mobiles - In id tech 4.5 fixed annoying issue: if you started rapidly tapping on‑screen buttons before the menu appeared, the engine would go crazy and stop processing input events correctly - in FTEQW now using 24 big GL depth instead of 16 bit GL depth, it will give more stable rendering without graphics bugs - More correct handling of onPause and onResume events for sending these events to legacy engine code via JNA - SDL 3 was updated to stable release https://github.com/libsdl-org/SDL/releases/tag/release-3.4.12
More…
- in ARX Fatalis framepacing destroy call now will be called in correct place, it was not correct before, because almost all SDL events are not working on mobiles in SDL3 All other bugs in Classic-RBDOOM-3-BFG fork are minor and do not affect the gameplay on mobile devices, so they will not be fixed - Jun 29, 2026 3.0.0This release does not mean anything about, that I will return to this development. It is just fixed annoying issues on my personal device Changelog - Dropped all Android archs support, except ARMV8. I do not have any resources to support all 4 android archs. - id tech 4.5 was updated to latest stable release - https://github.com/MadDeCoDeR/Classic-RBDOOM-3-BFG/releases/tag/v1.4.3 - added mutexes using to android framepacing integration to avoid crashes in runtime - hardware dxt support was disabled by default in id tech 4.5 (instead by default will be used ETC2 texture format, which is better for mobiles), but it is still possible to enable dxt support, if target device supports hardware dxt texture compression - neon specific code in id tech 4.5 was rewritten from ARMV7 intricincs to ARMV8 only neon code - in id tech 4.5 was implemented simple command buffer, to avoid a lot of allocations within a frame - etc2 textures cache size was increased from 1GB to 15 GB in id tech 4.5, It means, it is possible now to use HD textures in this engine - fixed some vk render via angle issues in UZDOOM, which exists only on my personal device
More…
- in id tech 4.5 and UZDOOM at exit spirv wrapper will be always unloaded to avoid memory leaks - angle was updated to latest revision - Jun 27, 2026 2.10.5.1I told many times using glfinish and glflush is death for TBDR and give only hellish gpu stalls on mobile gpus, I removed all such calls from these legacy engines, because with using android framepacing, they are not needed anymore Changelog - glflush and glfinish calls were removed from UZDOOM, Doom64, Perfect Dark, Widelands. No need to remove these calls from Arx Fatalis, because I removed them a long time ago before changes on my personal device (8 elite 1) in UZDOOM with Doom CE mod in opengl render, same scene, same settings, same save file <img width="1528" height="694" alt="Screenshot_20260626_013928" src="https://github.com/user-attachments/assets/0109a032-5ed3-4de0-bfb0-3d6c3022769c" /> after changes <img width="1528" height="694" alt="Screenshot_20260627_214255" src="https://github.com/user-attachments/assets/2d9c61a6-a439-43d2-9dff-89b353933061" />
- Jun 27, 2026 2.10.5Changelog: - Refactored asset management system. Assets are no longer copied from the APK binary using a JSON file stored in the phone's internal storage. This has been replaced with an SQLite database. This change fixes annoying segmentation faults that occurred during application startup. - Reworked target user folder detection to fully comply with Android standards. This also helps prevent segmentation faults on launch. - Returned GL depth 24 instead of 16 for Doom64, UZDOOM, and Arx Fatalis. GL depth 16 was breaking graphics in these legacy engines. Depth 16 is now kept only for id Tech 4.5, as it is an extremely heavy IMR renderer that consumes a massive amount of bandwidth on mobile devices. - In UZDOOM, all multisample render target textures now use RGBA8 format instead of float textures in the GL renderer. Mobile GPUs do not support float render targets with multisampling. - In Doom64, it is now possible to set the maximum texture anisotropy level directly from the Android UI settings. - id tech 4.5 sources were updated to latest Final Release (Development Completed) If you were waiting for the end of development to install this application - you have reached that moment.
More…
Development of this application is now complete. I have lost all remaining motivation to continue working on this project. The extremely high complexity combined with the amount of time and effort required has led me to this decision. I am no longer willing to invest all my free time into this work for free. I need a long break. After that, I will completely change my direction in mobile open source development and fully leave legacy engine porting behind. If I ever continue working on this application in the future, there will be no further optimizations for id Tech 4.5. This engine has already been optimized to its practical maximum for mobile platforms. Anything beyond that - such as implementing static batching on the level of Unity, multidraw, or GPU instancing - would require more than a year of work on this single engine in the best case scenario. This is completely unacceptable for unpaid work done in my spare time. This chapter is now closed - Jun 25, 2026 2.10.4Changelog: - Fixed some broken graphics effects in id tech 4.5, which I break in previous build.
- Jun 19, 2026 2.10.2Changelog - Added EGL (CPU and GPU) syncronization feature to id tech 4.5. It will remove random rendering artifacts, if you will have them. This realization should not lower FPS, however it is disabled by default - Fixed some UB in code, which I added to id tech 4.5, and it can cause runtime segfaults of id tech 4.5 on some OEM Android firmwares
- Jun 19, 2026 2.10.1Changelog - all cpu and gpu syncronization calls like glfence, glwaitsync, all egl sync calls were removed from id tech 4.5. This make VK render via angle playable in id tech 4.5. You should never use gl sync calls on mobile - TBDR architecture works different way here. - all lighting and shadows tests were disabled by default in id tech 4.5, It is settings FOR PC, TBDR architecture works different way, so these options just kill the phone's bandwidth with unnecessary passes.
- Jun 7, 2026 2.9.7.2Changelog: - fixed issues with not working graphics render in games using gl4es after loading shaders from implemented GL4ES shader cache - fixed memory leaks in DOOM 3 BFG Edition at shaders conversion from GL 3.x to GLES 3.x using SPIRV CROSS - To UzDoom added opportunity to use SPIRV CROSS for shaders conversion From GL 4.1 to GLES 3.1 in open gl emulation render. Disabled by default. It is using separate shader cache blob. Using SPIRV Cross for shaders conversion to GLES is the most modern stack for working with shaders in mobile graphics. This shaders pipeline also uses SPIRV OPT, which is the cheapest way to optimize shaders for mobile devices without rewriting them. However, in practice, this pipeline stack provides no performance gain in legacy engines, because the performance problem in legacy engines isn't the shaders, but in the IMR renderer, which is death for mobile devices. Rewriting the IMR renderer to TBDR render is impossible for a single person, so this has basically NEVER been done in open source. - SPIRV NG GL4ES SPIRV wrapper has been refactored, and now works very fast, before refactoring - Conversion of shaders from GL 4.1 to GLES 3.1 using SPIRV CROSS NG GL4ES wrapper in UZDOom with Doom CE mod took 2 minutes 38 seconds on the MTK G99, after refactoring - 1 minute The graphics stack work in these legacy ports is complete; there's nothing left to optimize. All remaining graphics stack tasks in all these legacy engines lead to the same thing: need to rewrite EVERY LEGACY engine from IMR rendering to TBDR rendering, which is IMPOSSIBLE for one person, because in an enterprise development, such task costs MILLIONS of dollars. By the way, the only way to rewrite a game's IMR renderer to TBDR render for one person in open source is Unity or Godot.
More…
These are the engines that open source legacy engine developers hate. It's very ironic. And they hate these engines simply because they don’t understand anything about mobile development. - Jun 6, 2026 2.9.7.1Changelog: - Shader cache was enabled in Uzdoom opengl emulation render - Shader cache was enabled in Uzdoom opengl es render. Shader cache will work only, when gles 3.0 or gles 3.2 API is active in uzdoom gles render - Uzdoom cache folder was moved to Android Cache Storage - Opportunity to use mediump shader presicions in gl4es was deleted, legacy engines ALWAYS must use ONLY HIGHP shader presicions. Why use shader cache in uzoom? Because it will eliminate game stutters completely, especially in heavy mods, like Doom CE
- Jun 4, 2026 2.9.7Changelog: - Shader cache support was implemented for vk render via angle and gles render via gl4es. You can not disable this feature. Without shader cache, for example doom64 shader pipeline with VK renderer via NG GL 4ES and Angle was insane. Every game launch in runtime went through a insane CPU overhead of shader conversion, like Doom 64 GL shaders - NG GL4es (NG GLes GLES legacy shader converter -> SPIRV CROSS -> Spirv OPT Shader Optimizer), -> Angle (SPIRV CROSS -> SPIRV OPT ) -> VK Driver. This feature removes this insane CPU Overhead shader conversion. Shader will be converted To SPIRV Format only once and after that at another game start will be read from file and sent directly to VK driver. If you want to know, legacy dev game engine devs simple do not even know about such insane CPU Shader conversion overhead of theirs engines on mobiles, because on their PC, they simply read the shader code from a file and immediately send the shader to the video card driver. This is cost of legacy engines on mobiles. Modern game engines like Unity and Godot don't have such insane CPU overhead for shaders conversion on mobile devices in runtime, because these engines are written specifically for mobile development. Unity simply doesn't require any shader conversion in runtime on mobiles, but legacy engines PC developers simply don't know and do not understand this, because they've never written a line of code for mobile devices. - Fmod was updated to 2.0.3.14 version. Fmod is using as audio backend in Doom64 - In widelands Vsync was enabled forced, you can not disable it.
- Jun 1, 2026 2.9.6.1Changelog: - All Arx fatalis render changes were reverted due to this bug on NVIDIA TEGRA"UI being blown out by a bloom or HDR effect. It doesn't happen immediately but after some time of playing." I left only minimal changes that fix low fps and bugs in the VK renderer. (low fps was due to GPU stalls) - Vsync was enabled by default in FTEQW and UZDoom, Vsync always should be on in any legacy engine by default for Android platform. Otherwise expect very quick battery drain, If you're wondering why, it's because of the fundamental differences between PC and mobile architecture. All legacy engines use IMR rendering, which is death to the TBDR rendering of mobile architecture. No other changes
- May 30, 2026 2.9.6Changelog: - NG GL4ES GLES 3.X GL Fixed Pipeline using SPIRV from this moment for shaders conversion. Is means, that games with fixed GL pipeline - like ARX Fatalis, DOOM2 RPG, Wolfenstein RPG will use SPIRV at GLES 3.X render from this moment - DOOM 64 from this moment will use again legacy shader converter at NG GL4es gles 3.0 render, which was written by this guy https://github.com/Sisah2. This was done deliberately to move the entire shader rendering pipeline to SPIRV, because this game also uses the GL fixed pipeline. - fixed DOOM 64 startup segfault - Fixed a regression where after switching to SDL3, SDL2-based engines started showing the SDL virtual input window. Is does not should to work this way, this is undefined behavior, so it was fixed - Fixed wrong block size at binding Uniform Buffer Objects in UZDoom - At opengl emulation render UZdoom now will forced use VK render via angle at gpus other than adreno(powervr and mali). This is workaround for avoiding black screen at these gpus using opengl emulation render. This not Mali or PowerVR GPU bug. This is bug in UzDoom code. However fixing it, requires a lot of my free time, so this bug WONT FIX, because I have no any motivation to fix it spending weeks of work on it This is FINAL Release build with such big major changes and fixes. I did everything I wanted in legacy development. My work is done here. Others tasks and bugfixes requires a lot of my free time, and I do not have any motivation for this.
More…
From this moment all future releases will contains ONLY upstream engine and third party deps code and very rarely critical bugfixes - like app segfaults and regressions END OF THE LINE - May 28, 2026 2.9.5Changelog: - APK Binary size was reduced from 1GB to 140 Mbytes, as it was asking in this issue https://github.com/sandstranger/com.mobilerpgpack.phone/issues/61 - angle was updated to latest revision, I noticed performance update in games using vk render via angle - Added 64-bit file operations support for ARMv7 using `-D_FILE_OFFSET_BITS=64`. This flag is critical for any Android game targeting ARMv7. Without it, any attempt to work with files larger than 2 GB will result in crashes and segfaults on ARMv7 devices. - ETC2 texture cache in Doom 3 BFG EDITION was rewrited, and it is working now very fast even on MTK G99. Loading level speed now very fast about - "02180 images preloaded ( or were already loaded ) in 9.8 seconds" on MTK G99, so ETC2 texture cache now ALWAYS ENABLED by default - Doom 3 BFG EDITION sources were updated to latest - SPIRV sources were updated to latest, SPIRV is using for shaders conversion from GL (2.x/3.x) to GLES 3.x in these legacy engines - Fixed Vulkan render low fps in Arx fatalis for MALI GPUS, VK render is available in Arx fatalis via ANGLE - Fixed all graphics issues in Arx Fatalis Vulkan render for Adreno GPUS - OpenGL ES 3.2 API now required in Arx Fatalis GLES 3.X render, because I changed Arx Fatalis GL extensions for GLES 3.x render. USE GLES 2.0 render, if your device does not support GLES 3.2 API.
More…
This update does not change my position and will never change it. I still consider legacy engine development for phones to be dead and a complete waste of my time. I have much more valuable things to work on. Do not expect any significant updates or any new major changes like it was in this build going forward. Only minor updates will be released — mostly engine and dependency updates, along with occasional critical bug fixes. - This minor release fixes even more crashes observed in Crashlytics. Anyway — good luck to Android open-source devs who don’t use Crashlytics. They will live in ignorance, thinking their applications are fully functional, but this is just an illusion and lie. Changelog: - The FTEQW Quake virtual machine used to think it’s smarter than everyone else. If a Quake mod was even slightly broken, it threw exceptions and killed the engine process. No other Quake engine behaves this way — Darkplaces and others only throw warnings. Now all these checks and exceptions in the Quake VM were removed, so broken Quake mods will run in FTEQW. - ENV usage was removed from all engines, SDL2, SDL3, and gl4es. ENVs aren’t guaranteed to work on Android (it’s not Linux). Always use JNI or JNA instead. Disabling ENVs should fix many crashes across these 10 engines. - Forced reloading of controller connections after first on-screen stick movement was deleted. This caused race conditions and crashes. On Android, you cannot call a JNA or JNI method that modifies engine variables without proper thread synchronization, because again - Android IS NOT LINUX. Removing this should fix many engine crashes. - Almost all JNA method calls were returned to the Activity main thread to minimize race condition risks except SDLOnScreen gamepad creation and destroying. This doesn’t fully eliminate race condition risks, and I won’t rewrite the architecture of all 10 engines and SDL to fix this — that’s the responsibility of the engine and SDL developers. - Fixed crashes occurring when users tried to download AI translation models. These crashes were due to refactoring from mutableStateOf to MutableLiveData. - When users override engine config paths to Android/data, the application now restarts automatically. I’m not interested in reading crash logs in Crashlytics that don’t need to be fixed.
More…
- When engine config paths are set to Android/data, the app will always use the sandboxed ExternalFilesDir instead of absolute file paths. Android doesn’t allow absolute paths in the sandbox, otherwise you get permission-denied errors and crashes at some Android OEMS devices - This release fixes even more bugs in FTEQW. I won’t be changing a single line of FTEQW engine code anymore, because that’s the responsibility of the engine developers, not whoever is porting it to another platform. I am not maintainer and not developer of these engines. If they don’t fix it, then those engines shouldn’t be touched, because it is unplayable Changelog: - Fixed bug where FTEQW ignored loading config.cfg if Quake resources used PK3 files with an added config.cfg. - Fixed crashes in Quake addons when starting a new game multiple times. - Fixed OpenAL sound crackling in heavy Quake mods. - Fixed crosshair not showing in some Quake mods. - Fixed zoom not working in some Quake mods. - FFmpeg plugin now always forces loading to make music work in Quake mods.
More…
- Bullet physics now always forces loading in FTEQW. - Added alternate left mouse button support in Arx Libertatis. - Fixed menu rendering incorrectly in LibreQuake by using this PR - https://github.com/fte-team/fteqw/pull/383 - All uses of mutableStateOf were removed from outside composables to prevent MainActivity crashes; now MutableLiveData is used instead. - This minor release makes FTEQW more playable on Android. A lot of crashes have been fixed thanks to Crashlytics finally working on previous releases. The next release will include Widelands. After that, the app will only receive bugfix and engines code updates. Changelog: - ArxLibertatis: CriticalLogger was disabled. Maybe it is useful on PC, however caused crashes on Android. - FTEQW Quake 3: Touchscreen pressing support disabled, because it worked poorly. - better Escape button emulation with onBack Android hardware button - Audio: FTEQW now links OpenAL via lld instead of dlopen, improving stability on Android. - Orientation: SDLActivity is now always forced to sensor landscape mode to avoid portrait mode bugs on some old Chinese devices. - Lifecycle: All engines now use onResume and onPause Activity events. SDL_APP_WILLENTERFOREGROUND and SDL_APP_WILLENTERBACKGROUND were unreliable after long deep sleep, causing muted audio in ArxLibertatis, UZDOOM and FTEQW. This is now fixed.
More…
- Rendering: Better render overriding for FTEQW; font scale increased. - Multithreading: Enabled again in FTEQW to prevent UI freezing. Also due to multithreading - FTEQW now also can work a little faster on MTK devices with GLES render. - FTEQW Vulkan: Render tuned for MTK devices. Warning: Vulkan may leak memory and crash; such issues are not going to be fixed. Use GLES render instead. - FTEQW Physics: Multiplayer physics crashes in FTEQW fixed. - Fixed java.lang.IllegalStateException in MainActivity - Fixed java.lang.IndexOutOfBoundsException in file picker - This release adds FTEQW support with Quake 1, Quake 2, Quake 3 and Hexen 2. However, this engine is legacy, so expect many pitfalls. Known limitations: - Quake 2 multiplayer is not supported. - Quake 3 multiplayer is not supported. - Quake 3 single player with bots is unstable. - Half life 1 is not supported - Vulkan renderer is not recommended on mobile devices due to architectural limitations.
More…
- Network code in Quake 1 may be unstable. For full details, read here: https://github.com/sandstranger/com.mobilerpgpack.phone?tab=readme-ov-file#fteqw If you want proper Quake 3 support and stable network gameplay, it is strongly recommended to use this instead: https://github.com/glKarin/com.n0n3m4.diii4a Porting more than 10 custom engines made me realize that open source engines cannot offer me anything new anymore. Most of them are legacy engines with outdated and uninteresting technologies. They often share the same codebase, and even the same bugs. Working with them only teaches how to deal with legacy code — which I already can do. Because of this, I will not port any more engines to this app, except Widelands, which I will evaluate first. If it is also a legacy codebase, I will abandon it as well. OpenXRay will not be ported to this app. Changelog: - Added initial FTEQW build (https://github.com/fte-team/fteqw) - Fixed gyroscope not working when used together with touchscreen - Added Chinese localization - Fixed missing Crashlytics dSYM uploads - All SDL2-based engines now use SDL_WINDOW_FULLSCREEN_DESKTOP instead of SDL_WINDOW_FULLSCREEN - Minor fixes - This hotfix release completely fixed sometimes not working touch in SDL It was fixed by hardcoded pointerid, which sended to SDL to zero. With this, SDL finally started to use my low level code workaround for not working touch Changelogs - sometimes not working touch was completely fixed - allow to use touchscreen again when gyroscope is active
- In this release was added radial wheel number view support for onscreen controls, like delta touch and com.n0n3m4.diii4a has. I consider input system in this app completed forever and I will reject any requests for improvement in the future.. Changelogs: - added radial wheel number view support for onscreen controls, which can be added from custom view menu in onscreen controls editor for any game - touchscreen now disabled, when gyroscope is active, this is working now as working at others FPS android native ports - fixed wrong touch events detection for onscreen controls, you can not use kotlin "when" for it, because multiple touch events can be sended in single "awaitPointerEvent" cycle - "Enable edit onscreen controls" button now working as standalone onscreen controls view - gles 3.2 and gles 2.0 builds now divided to separate versions to make crashlytics logs working
- In this release was added gyroscope support. But The more I delve into Android native development with custom engines, the more I understand. It's not for nothing that custom engine developers consider Unity bad. Because the same gyroscope feature can be written in Unity in 15 minutes for any game. Whereas writing it in SDL and custom engine using native Android API requires... You have to go through hell. Because SDL and custom engines trash isn't designed for a gyroscope. And custom engines trash even don't have a standard for reading mouse coordinates from SDL. Each engine reads everything differently. Moreover SDL devs make all methods, which must be used for gyroscope feature - private
More…
After all, it's so interesting, instead of writing a game, doing anything else by years. Now I completely understand who custom engine developers are and why they consider Unity ant other engines bad. Because with unity and unreal engine - is possible to write game very quickly. When with custom engine - you will write game - infinitely before your death Also, there a lot of crashes in crashlytics at these custom engines. If unity and unreal engine bad and your custom engines - brilliant, why is it always crashes? Why you can not write stable code without a lot of crashes as custom engine developer? I am too lazy to fix all these crashes. And for this I will need to fix crashlytics native logging at first, which I will fix at next builds Changelogs: - gyroscope support was added - Using -O3 optimization flag is shitshow for ARM Android, so it was replaced with -Os, to avoid crashes on Arm, especially on ArmV7 - JNA Dynamic Invocation wes replaced with JNA Direct Mapping, because using Dynamic Invocation on Android also a shitshow, it is working very slow, when JNA Direct Mapping perfomance almost similar with JNI - almost all JNA methods calling were moved to separate threads, instead of calling in MainThread, because calling heavy JNI methods in MAINTHREAD is also a shitshow, you will get ANR at weak ARMV7. and some devices got it, as I saw from crashlytics logs - better low level SDL workaround for avoiding not working SDL touchscreen - To determine whether touch pressing events can be triggered, SDL_GetRelativeMouseMode is now used instead of getting information from the engines. - ArxLibertatis extra optimizations flags were disabled for Android. It is using fast-math, which is also a shitshow for ARM Android - This minor release fixes a large number of critical bugs. There are no new features in this release. The application is now approaching a stable state thanks to the amount of issues fixed here. At the same time, fixing these bugs once again clearly demonstrates how unsuitable custom engines are for mobile platforms. To make them work more or less properly, I always have to go through hell — something that simply never happens with Unity. The same OpenMW developers may keep attacking Unity and praising SDL with “high quality standards”, but in reality they have never worked seriously with custom engines on mobile devices and have no idea what this kind of development hell actually looks like. I also decided to port FTEQW before Widelands, because it contains Hexen II. Yes — once again, another id Software–based engine.
More…
Changelogs - Fixed a critical bug in NG-GL4ES. The fixed-function OpenGL emulation pipeline never actually worked with GLES 3.2. Shaders were always compiled as GLES 2.0 instead. Because of this, games like Arx Fatalis and the Doom RPG series always ran on GLES 2.0. This issue is now fixed, and GLES 3.2 is properly used via this PR: https://github.com/BZLZHH/NG-GL4ES/pull/9 - Fixed incorrect screen resolution calculations, which affected almost all custom engines. Because of this bug, changing screen resolution never worked correctly in nearly all engines ported to this app, except Perfect Dark. This issue has now been fully resolved. - Fixed application wrong launch logic when starting from the launcher. If GameActivity was already running, the app now correctly launches into it instead of restarting MainActivity. Previously, this behavior caused crashes due to another SDL + Android lifecycle issue. - Fixed broken touch press events in Doom 64 engines. The bug was caused by relying on SDL3 events after rewriting focus detection logic. The events were simply never delivered. This is yet another example of how broken and regression-filled SDL3 is on Android. The issue is fixed, but this was the final reason I will never port another SDL3-based project. Only SDL2 based projects will be ported - Implemented another low-level workaround for SDL2 and SDL3 to bypass completely broken touchscreen input for all engines. This serves as a fallback in case input is still partially broken. I do not have time to fight this garbage endlessly. - Fixed a ConcurrentModificationException in MainActivity, which caused random crashes. - Fixed incorrect on-screen controls rendering, which appeared in some edge cases. - This minor release fixes old critical bug, which is only reproduced in Arx Fatalis, and due to this bug it is impossible to play Arx fatalis without fixing it. If you will press action button multiple times at dead bodies, touch will stop to work after some time completely. There will be no more minor updates before update with widelands RTS native support. And this game will be last game in this app. Because Openxray at current state can not be ported at Android at ALL. New Openxray devs rewriting rendering from zero to Vulkan. Porting it to Android now цith the old rendering system, will be a Sisyphean task. After last update at new updates will be only bugfixes and already ported engines sources update. and I will continue to work at porting to Android unity System Shock 1 remake So, I will port in future only projects writted with .NET (unity also using .NET) and openra is written on .NET
More…
Changelogs: - fixed very old critical bug, that touch stopped to work after some time of playing - It is now possible to override --config-dir and --data-dir commands in ArxLibertatis with command line args - It is now possible to override USER ROOT PATH to engines data files from /Android/data/com.mobilerpgpack.phone/files to any existing path on sdcard (It helpful if you want to delete this app, because all game saves wont be deleted, if you will override this path) - This release brings Arx Libertatis native support. And instead of legacy port - this port is far superior in quality to the old Arx Libertatis port, which was the first I ever developed for Android Because: 1. it is fully supports both GLES 3.2 and GLES 2.0 rendering 2. Has more convenient onscreen controls 3. Has full ArmV7 support. 4. gamepads hotlplug connection was rewrited 5. All Arx Libertatis native deps were updated to latest sources 6. It has EAS and HTRF audio support, like on PC, old port didn't support all these features 7. For audio output uses oboe, not OpenSLES
More…
8. Changing brightness now working like on PC 9. All logs now writed to logcat, so it is possible to read all engine logs from logcat 10. All the old hacks that I used in this engine for the Android platform have been removed. Common changelogs: - Arx Libertatis native support was added - All native .so libraries now builded in Release mode instead of RelWithDebInfo, so that the compiled binaries will run faster - ArmV7 binaries now builded in ARM 32 bit mode instead THUMB 16 bit mode,so that the compiled ARMV7 binaries will run faster on ARMV7 - fixed bug with not working Challenges mode in Perfect Dark - Specially for Arx fatalis was added opportunity to disable absolute touch mouse mode - Specially for Arx fatalis was added opportunity to disable touch mouse pressing events - gl4es fork from minecraft devs repo, which is working only with gles 2.0 was removed and was replaced with original gl4es from this repo - https://github.com/ptitSeb/gl4es , because gl4es fork from minecraft devs repo is super glitchy - This minor update will bring some stability in psydoom rendering for MTK. There was a lot of textures errors before it, it is still have it like it 2025-12-27 15:42:03.586 16625-18218 gralloc4 com.mobilerpgpack.phone E ERROR: Format allocation info not found for 2025-12-27 15:42:03.586 16625-18218 AHardwareBuffer com.mobilerpgpack.phone E GraphicBuffer(w=4, h=4, lc=1) failed (Unknown error -5), handle=0x0 But this is already MTK drivers issues It will not increase fps, it will just work more stable. For more fps on MTK in psydoom do not use device native screen resolution There will be no more such minor updates before arx fatalis Changelogs: - In psydoom now used textures formats, which like mtk to bring more rendering stability on MTK
More…
- All SPIRV shaders in psdyoom were compiled with spirv-opt, it can give 1-2 fps boost, but in reality it will be zero fps boost - Changelogs: - In all engines, the hotplug gamepad connection detection has been rewritten and limited to a single device. - After the first movement of the on-screen joystick, all gamepads will be force-reloaded in all engines. - On-screen joystick emulation has been updated from the legacy Xbox 360 controller to the Xbox Series X. - If on-screen controls are enabled, the virtual on-screen gamepad will always be the active gamepad, regardless of how many real gamepads are connected to the device. Even if 100,000 are connected, the virtual on-screen gamepad will still be selected as the active gamepad. Need to play with a real gamepad? Then disable on-screen controls. - Before forcing a reload of all gamepad data in the game, all gamepad entries in SDL will be forced updated. - A bunch of gamepad hints have been added for SDL like (xinpit impovements) (essentially workarounds for better virtual gamepad detection on Android devices where it's glitchy or doesn't work at all). - Added an onscreen controls button that can force a reload of all gamepads. - Fixed crash in Uzdoom at startup at some android devices.
More…
If none of it will work for some android devices as solution for non-working on-screen gamepad, Then, There are very few solutions left for fixing the non-working on-screen gamepad in games. More precisely, there's only one solution. This is opportunity to change onscreen virtual gamepad product id from Android UI But it will be available only at build with arx fatalis support - In this release shared prefs implementation based on sqlite was rewrited again - so after update you will lost all your saved shared prefs data, like onscreen controls custom layouts Changelogs: - Perfect dark native port initial release from this repo https://github.com/fgsfdsfgs/perfect_dark Working also on ARMV7, how to run it - read here https://github.com/sandstranger/com.mobilerpgpack.phone?tab=readme-ov-file#perfect-dark - UI and onscreen controls performance improvement - a lot of bugfixes for onscreen controls code - shared prefs implementation based on sqlite was rewrited, flows from this implementation was removed to avoid using blocking main thread, to avoid deadlocks and race conditions - some crashes was fixed in launcher - now application at startup and at any game launching will wait before all shared prefs data will be loaded from sqlite
More…
- ini reader and writer now send data to compose immediately after saving it - maybe even more about which I forget and too lazy to write about it here - I started playing doom CE yesterday and found a lot of bugs and unpleseant features. So, this 2.0.3 minor release brings even more ui and controls bugfixes and adds some more features to onscreen controls Changelogs - Annoying app top bar was removed and light and dark themes now look as in common material design   - fixed issues in my dialogbox edittext compose text implementation - fixed some ui annoying issues - screen controls views now can correctly work with pressing touch events even when ignoring consuming touch events is enable. So due to it touch support in uzdoom was restored
More…
- fixed very old issue, that if user was pressed touch camera and after that opened in game controls editor The touch camera stopped working completely until the next game restart - fixed issue, that when game drawing in safe area was enabled - The touch camera wasn't drawing to the full screen area, and because of this, both drag camera events and touch events stopped working correctly - fixed issue, that when OnscreenStick onscreen controls style was enabled The touch camera still continued to receive drag events even though it was completely disabled - fixed some issues with edge to eddge logic - fix game drawing in safe area at some android china firmwares, this was due crap code in this china firwmares. I have a phone with Chinese android firmware and it has a bug that the game is rendered incorrectly in this case - In doom64 autorun was disabled by default - fullscreen touch mode was forced disabled in doom64 for custom screen aspect ratios, because this engine does not support this feature - Doom64 autorun onscreen button now lights up when it is active - allow to add any onscreen controls view to show in quick panel view - added feature to always show onscreen keyboard button, even when controls completely disabled, this feature is enabled by default. This feature was added, because a lot of games simply do not support SDL virtual input - added update quick panel visibility button to doom rpg series, which are deleted by default - fixed custom SDL buttons lighting when it is pressed in toggle mode - fixed old issue, that when user was pressed any touch screen controls view and after that opened in game controls editor, click events from this view still continued to be sent to the game - Added a feature always show keyboard display and escape buttons if the user has enabled the auto-hide on-screen controls feature and the controls disappear at that moment. This feature is always enabled and it is impossibe to disable it. - Edit Screen controls button now rendered lower in the hierarchy of the other on-screen controls views - This minor release adds even more on screen controls improvements. But after this release, no new on-screen control features will ever be added. Because I'm simply not interested in such tasks. Only the basic necessary improvements will be added to the on-screen controls in the future, so it will be possible to play Arx Fatalis and Widelands, and nothing more. Next update will bring only perfect dark engine native support and nothing more Changelogs: - added opportunity to ignore touchs events consuming for almost every onscreen controls view to allow use touch camera moving, even when onscreen controls view is pressed, you may need to reset onscreen controls to enable this feature working if you are updating from previous version - added opportunity to ignore out of bounds touchs events for almost every onscreen controls view - added opportunity to use infinite wheel mouse button scrolling, when user pressing these butttons
More…
- a lot of ui bugfixes after I completed dynamic themes support, and hardcoded all gui items colors to avoid white texts colors bug at light theme at some old china android firmwares - when toggle mode at onscreen control view is enabled and toggle state at view is enabled, it is now changing it is color - added feature to always use fullscreen touch camera drawing, even when custom screen aspect ratio is chosen. This feature is enabled by default - all view onscreen items options were moved to separate dialogbox - Keys Editor view was removed and was merged to onscreen controls editor - strafe buttons were added to Doom RPG series onscreen controls - sqlite shared prefs data now loaded at mainapplication init - added separate feature to disable annoying floating start game button and use a regular material design start game button instead it - uzdoom default controls were updated to correctly working onscreen controls at games such strife, hexen and others - This minor release fixes some annoying bugs and annoying missing features in onscreen controls Changelogs: - garbage theme selection code for android 11 and below was removed, allowing to deal with themes to compose. This should fix this annoying bug on some china android firmwares  - Fixed not showing texts in keys editor on phones in horizontal mode - It is now possible to completely delete any onscreen control from layout, with restoring it from custom views selection dialogbox - It is now possible to use toggle mode for any SDL onscreen controls button - SDL gamepads database was updated to latest db
- This is last update with engines from id software. I'm no longer interested in porting engines from ID Software. The next engines will be from completely different companies and games in completely different genres. After upgrading from a previous version, All your saved data, such as your custom on-screen button layout, will be erased. Because I threw the Data Store in the trash and rewrote everything to sqlite. Data Store is very slow for parsing big data And no, there's no update support for this without losing saved data It would be too expensive to write such support
More…
Changelogs: - UZDoom 4.14.3 port initial release, which includes gles 3.2 support rendering from https://github.com/glKarin/com.n0n3m4.diii4a and opengl emulation support from https://github.com/emileb/gzdoom. Gamepads support for this stable UZDoom release was updated from Uzdoom 4.15 prealpha version. Almost all vulkan third party libs in UZDoom were updated to latest versions. - This UZDoom port also working on ARMV7 - In sdl2 was fixed hid_api initialization code for Android 13 and above - In Psydoom The incorrect logic of the menu behavior was fixed after I completely cut demo playback support for Android platform - Better gamepads code initialization in PsyDoom - In Doom64 EX Plus the maximum brightness has been increased by 2 times - In Doom64 EX Plus was fixed not working gamepad firing button - garbage SDL virtual input was replaced to third party on screen keyboard, with changing keyboard transparency feature, which I added to this keyboard - For Doom2RPG and Wolfenstein RPG was returned virtual SDL Input support - Doom64 EX Plus Enhanted engine source code was updated to latest source code - All third party native libs were updated to latest versions - Shared Prefs Data Store was thrown into the trash and was rewritten to sqlite. - Fixed dark theme support for onscreen controls - Added opportunity to use custom rendering rules to every onscreen controls item - Added opportunity to add custom buttons to onscreen controls - Onscreen stick support for moving camera - The minimum size of on-screen buttons is now limited - Added custom mods support for doom 64 EX Plus and PsyDoom - Fixed a bug where after the user granted an application full memory access rights, the user could be redirected to the application's start screen. - NG GL4es and gl4es sources were updated - added simple file extensions checker for resources which user can choose - almost all columns compose code was replaced to lazycolumns for better ui performance - maybe something more, which I forget - This is build, which fixes all race conditions in PsyDoom for Android - Changelogs: - fixed all race conditions in PsyDoom for Android Platform - fixed dark and light themes showing in launcher for Android below 12 - File caching was disabled for file picker.
- Changelogs - Fixed crash at some devices with crashlytics help, which was due to the impossibility of obtaining the Touch device ID from motionevent - screen controls interactive size was increased - The ability to change the size and alpha of on-screen buttons has been reduced by half - delete button was added to doom64 screen controls - fix possible crash with at application pause and resume - added opportunity to reset all game resources, it will delete all saved data including saved games - fmod was updated to 2.3.11 version - added opportunity to render multiple screens in launcher - Psydoom port initial build with all ini settings ported to android gui from psydoom launcher
More…
- sdl2 and, sdl3 including sdl gamepads database were updated - fix possible crash for Doom2RPG and WolfensteinRPG for Armv7 devices - removed new collection allocation at every frame, when dragging onscreen joystick, also onscreen joystick registering at SDL after game launch, not only after first joystick drug - fixed bug, that on screen joystick was tried registered at SDL every render - Changelogs - Fixed issue in Doom64, when player was shooting in game while dragging the camera at the touchscreen, when the shoot button was assigned to the left mouse button. This is a limitation of SDL2 and SDL3 on Android, and there is no any public API in SDL to fix it. - Mouse cursor was disabled in Doom 64. If you need to display a custom mouse cursor, use the built-in functionality of the app, which works more correctly on Android. - Custom mouse cursor offset settings have been added for non-standard resolutions, as they cannot be calculated on Android. This is one solution to the incorrect mouse cursor behavior at these resolutions. - In Doom 1 RPG, SDL virtual input now uses only numbers.
- Changelogs: - critical issue was fixed, that SDL touch input was completely broken after some time of playing. To fix it - SDL Touch Input was rewrited from motion events to Compose events
- Changelogs: - fixed crash in Doom64 EX+ Enhanced at beginning 2 level by disabling new enemies sounds for Android. this is fmod issue https://qa.fmod.com/t/getuserdata-android-crash/21139/9 - Doom64 EX+ Enhanced source code was updated to 5.2.0 version. I cherry picked almost all commits from this release - some old bullshit code was deleted from SDL dpad on screen controls
- Changelogs: - Doom64 EX Plus Enhanced port support https://github.com/Styd051/DOOM64-EX-Plus-Enhanced - Better autorun handling for Doom64 with jna help - Fixed a bug with on-screen controls buttons lighting up in red when pressed - better char -> keycode conversion for SDL input - fixed black screen for Adreno in Doom64 on GLES 3.2 render
- Changelogs: - Doom64 EX Plus 5.2.0 port first stable release - onscreen gamepad is using from here https://gitlab.com/cavebros/openmw-android-docker/ which I changed for my needs - A lot of bug fixes and code refactoring, which I am too lazy to describe
- Changelogs - moved from custom shit logsystem for crashes to crashlytics. - moved from jni to jna - build scripts fixes from unfinished prefabs support branch (but I will never use google prefabs feature for gradle build system, because it is broken shit) - file picker now supports external sd cards, because it was changed it to another library - forced switch to c++_static STL support - crash fixes after launch for Doom2Rpg and WolfensteinRPG - all native deps were updated - less jna methods calling for DoomRPG series machine translators - OpenGL ES 2.0 support was restored by using gl4es fork by minecraft devs (use OpenGL ES 2.0 binary for it)
More…
- openmw shader conv was disabled and NG_GL4es shader conv was fixed by using this PR -https://github.com/BZLZHH/NG-GL4ES/pull/9 - switched to oboe instead opensles for sound - all code base now used DI Injection based on koin (https://insert-koin.io/) - screen controls code was refactored for more easy custom views support - fixed bug in screen controls, that on-screen controls items were moving incorrectly in game activity when safe area was enabled - instead custom compose prefs ui, now used prefs items from https://github.com/sproctor/ComposePreferences - sdl gamepad database was updated - UnifontExMono.ttf font, which is using for Doom rpg series machine translation was updated to latest version - Launcher machine translation support was removed - fmod was updated to latest version - Initial DOOM64 EX + support - Changelogs - glslang and spir were removed from ng-gl4es, because it is not used with openmw shader conv (this will fix fdroid release) - Opengl Es 3.2 is now required - openmw NG-Gl4es shader conv was fixed for next update with doom64 ex+ port This is last update for fdroid, after update with doom64 ex+, it will be banned at fdroid
- Changelogs: - Switch from legacy gl4es with only opengl ES 2.0 support to NG-GL4ES openmw fork with modern OPENGL ES 3.2 support - Minimum Android Version now is 7.0 due to future PsyDoom port, which will require minumum Android N - Android NDK was updated to latest version - SDL2 deps were updated to latest sources - sententenpiece was updated to latest sources
- Changelogs: - extra screen keyboard keys were removed - screen keyboard number keys size was increased - fix fullscreen game activity showing on Android 14 and below - always disable screen keyboard in screen controls editmode - fixes for some ui minor bugs