(shouting)

TheXTech: a modern port of SMBX engine [Support moved] (Crossplatform SMBX is here!)

wanna make a game, or anything else? seminal bloom!
Post Reply
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

TheXTech: a modern port of SMBX engine [Support moved] (Crossplatform SMBX is here!)

Post by Wohlstand »

Hello everybody!
Image
______________________________________________________________________________
IMPORTANT NOTICE: I decited to leave the SMBX forums and I will no longer give any support for my projects here and on the SMBX forums. All the support is given at official GitHub repositories or at the WohlSoft Forums (https://wohlsoft.ru/forum/), or at the official Discord Server of the team: https://wohlsoft.ru/chat/.

Giving apologies for any inconveniences.

______________________________________________________________________________

Did you see that I have done little work in my public repositories during February and at the start of March 2020? So, I did a lot of work which I am going to present for you all: it's a full C++ port of the original SMBX engine which now works on multiple platforms (tested on Linux, Windows, and macOS), and it does accurately represent original gameplay with the rest of features and bugs!

Image

Image

Image

Image

Image

Image

Image

Image
How I made it?
Since February 2, SMBX's original source code is now open. This fact gave me a lot of helpful material which will help me to make the Moondust Engine better and faster! However, dealing with the VB6 environment is not convenient, and at the same time, it's not stable on Linux (because of graphical engine and risk of VB6 IDE's crash due to using of external DLL libraries). So, to get it to work easier, I remembered my very old idea to port the whole SMBX code to C++. So, after a week of initial research, I began working. After a week and a half, I got a fully working (but buggy in some places) thing. Then, I spent time debugging it and making it usable by everyone. It's the full replica of SMBX 1.3 with the rest of its logical bugs (with some exceptions: I did fix several crash bugs that were a big annoyance while playing a game). It works on multiple platforms: it works on Windows both 32 and 64 bits, on Linux, on macOS, (also may work on Haiku and xBSD). Since version 1.3.5 has Android support!


Frequently Asking Questions
This paragraph contains a list of several questions you would to ask me, I'll give answers to most of them.
What is this?
It's a port of an old VB6 engine, purely written in C++. It reproduces an old engine completely (except an Editor), includes lots of its logical bugs (crashy bugs where they were found and then fixed).


Why did you make it?
Why? I have several purposes for why I made it:
  • It's a very convenient life model for research I want to use in PGE Engine development.
  • To make it work without it being necessary to use Wine on non-Windows platforms and allow it to run on any other than x86 platforms.
  • To be able to optimize it to make it use fewer hardware resources than the original VB6-based build of a game.

You have Moondust Engine, why you have spent you over one month crafting this thing?
I need it for Moondust Engine development directly, it's much easier to hack and inspect rather dealing with the old and inconvenient VB6 environment.


What's the future of Moondust Engine as TheXTech now exist?
I'll continue the development of the Moondust Engine as I still have to pass the second goal of the Moondust Project.
Since the foundation, Moondust Project had two goals: 1) save SMBX; 2) give a flexible toolkit for new platform games. Opening of SMBX sources and introducing the TheXTech has solved the first goal: SMBX has been saved and now it's free and opensource cross-platform software. Moondust Engine will be used to pass the second goal - giving a toolkit for new games. Unlike TheXTech, Moondust Engine gives a full flexibility that allows anyone to build something new from scratch without inheriting of an old game base. However, TheXTech is needed for Moondust Engine as a working research model to develop a new engine. It will be similar to GZDoom and Chocolate Doom ports of the Doom game: GZDoom is a powerful and functional engine, the best choice of modders; a Chocolate Doom is an accurate port of the original game to a modern platform with a purpose to represent an original game including even bugs. The Moondust Engine intends to be like a GZDoom while TheXTech is an analog of Chocolate Doom to represent an original game on modern platforms.


Can LunaLua work on this?
No, LunaLua won't work: this project is binary-incompatible with LunaLua. This also means that SMBX2 content is incompatible.


How to use this?
Here are many ways to play games with it:
- there are some ready for use packages, just take and use as you did it with SMBX.
- [macOS users, skip this]: use by the same way as an original game: put an executable file into the game root folder with an "thextech.ini" that contains next text:

Code: Select all

[Main]
force-portable = true
, music.ini, sounds.ini and additional "graphics/ui" folder. An important note: all default graphics must be converted into PNG, use GIFs2PNG tool from PGE Project over your "graphics" folder with a "-d" switch. Don't use "-r" switch to keep original GIFs together with new-made PNGs if you plan to continue the use of original VB6-written SMBX.
- use it for debug mode: in your home directory, create the ".PGE_Project/thextech" folder (on macOS the "~/Library/Application Support/PGE Project/thextech") where you should put a full set of game resources and worlds stuff, this folder will work like a game root in the original game. This mode allows you to run an executable file from any folder location of your computer and use the same location of resources for all builds (except these are marked as portable by an INI file).


How to add custom episodes for the macOS version?
If you have a bundled build of TheXTech, all default resources are inside your .app: "Content/Resources/assets/". You can modify the content, but it's not recommended! Instead, after the first run of a game, in your home directory will appear the next directory:

Code: Select all

~/TheXTech Episodes
In this directory, you will find an empty "battle" and "worlds" folder to put your custom stuff. At the "~/Library/Application Support/PGE Project/thextech" path logs, settings and game saves will be stored.
If you want to replace default assets with your own, you can modify the content of the app bundle or compile a new build with giving of the necessary CMake arguments which needed to pack your custom assets root and icon into the new bundle or make the assets-less build (if you give no arguments, the assets-less build will result). Therefore, you need to put the full content of the game root into the "~/Library/Application Support/PGE Project/thextech" folder, include default assets (graphics, music, sounds, intro and outro levels, default battle and worlds folders).


What is different with this thing in comparison to the original VB6 build?
  • First off, it's written in C++ while original (as we already know) is written in VB6.
  • Doesn't have an Editor. Instead, in nearest future it will have a deep integration with PGE Editor that will allow to use it with the same functionality as in original editor (the "magic hand" functionality was kept to allow real-time editing of the level while testing, it's needed to use IPC communication with PGE Editor to get the ability to use it better).
  • Full support of UTF-8 in filename paths and internal text data (original game had the only 8bit ANSI support).
  • For graphics and controlling, it uses an SDL2 library while original game have used WinAPI calls and GDI library.
  • It uses PGE-FL that has better file formats support.
  • A support for WLDX world maps are allowing unlimited credits lines and custom music without it being necessary to use a music.ini for music replacements.
  • Some LVLX exclusive features now working: vertical section wrap, two-way warps, custom "star needed" message, warp enter event, ability to disable stars printing in HUB episodes for specific doors, ability to disable interscene showing when going to another level through a warp.
  • Built-in support for an episode and level wide music.ini and sounds.ini to override default music and sound assets.
  • World maps now support a custom directory to store any specific resources like custom tiles/scenes/paths/levels and not spam the episode root folder with world map resources anymore.
  • Default config format is INI, old config.dat format is no longer supported, mainly because of incompatible key code values (SDL_Scancode versus VirtualKeys enum of Windows API).
  • Game saves now using the SAVX format instead of a classic SAV. However, if you already have an old gamesave, you still can resume your game by using a new engine now (next gamesave attempt will result a SAVX file, old gamesave in SAV format will be kept untouched).
  • Built-in PNG support for custom and default graphics. Masked GIFs are still supported for backward compatibility, however, without making an unexpected auto-conversion like SMBX-38A does.
  • Checkpoints now have multi-points! You can use them in your levels multiple times without limits!
  • It does use of lazy-decompress algorithm to speed-up the loading of a game and reduce the memory usage.
  • For music and SFX, the MixerX library is used to give a support for a wide amount of sound and music formats!
  • It doesn't embeds any graphics: there are NO truly hardcoded graphics, everything is now represented by external graphics!
  • Some internal limits have been expanded.
  • Built-in GIF recorder by F11 key (F10 on macOS, F11 is reserved by system UI for a "show desktop" action)

How to build it?
You can read a guide how to build this project from a source code which you can find here: https://github.com/Wohlstand/TheXTech/w ... g-the-game

To build it, you need to have the next things:
  • CMake
  • Ninja optionally (to speeds-up the build process)
  • Compatible C/C++ compiler (GCC, Clang, MSVC haven't tested yet)
  • Git (required to pull submodules and clone source of dependent libraries to build them in place)
  • Mercurial (required to clone an official SDL2 repository to build it in place here)
  • Optionally: system-wide installed dependencies: SDL2, libFreeImageLite (a modded implementation of the FreeImage), MixerX sound library, AudioCodecs collection of libraries. Having them be installed in a system gives a major build speed up. However, it's possible to build all these dependencies in place here with a cost of extra build time being added.
DOWNLOADS
Feel free to try it out in action now:
There are ready for use packages, equipped with original SMBX 1.3 assets and "The Invasion 2" episode.

Visit the official page at WohlSoft for downloads and recent news:
https://wohlsoft.ru/forum/viewtopic.php ... 77&p=19831

The full C++ source code repository:
- https://github.com/Wohlstand/TheXTech

If you have any questions, problem reports, or suggestions, feel free to write to me!
Last edited by Wohlstand 9 months ago, edited 22 times in total.
Jongseok
Posts: 375
Joined: 7 years ago
Location: Seoul, Korea

Re: Meet A2xTech: a full working C++ port of SMBX engine

Post by Jongseok »

Wohlstand wrote: 4 years ago
For Windows (XP/Vista/7/8/8.1/10+):
- Download for 64-bit (modern platforms)
- Download for 32-bit (old platforms and 32-bit operating system installs)

If you have any questions, problem reports or suggestions, feel free to write me!
Nuuuuu I don't have any permission to download these files....
When I click 64-bit (modern platforms), the website says "Forbidden
You don't have permission to access /A2xTech/_downloads/Super Mario Bros. X v1.3 - A2xTech-1.3.1-Win64.zip on this server."
Last edited by Jongseok 4 years ago, edited 2 times in total.
Araragi Marisa's Anime List: MAL List
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

Re: Meet A2xTech: a full working C++ port of SMBX engine

Post by Wohlstand »

Whops, a little mistake, lemme fix it...
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

Re: Meet TheXTech: a full working C++ port of SMBX engine

Post by Wohlstand »

Jongseok wrote: 4 years ago When I click <link>, the website says "Forbidden
You don't have permission to access /A2xTech/_downloads/Super Mario Bros. X v1.3 - A2xTech-1.3.1-Win64.zip on this server."
Fixed, please retry to use these links again
Jongseok
Posts: 375
Joined: 7 years ago
Location: Seoul, Korea

Re: Meet TheXTech: a full working C++ port of SMBX engine

Post by Jongseok »

Wohlstand wrote: 4 years ago Fixed, please retry to use these links again
Thank you so much!! SMBX finally fully supports 64 bit architecture.
Araragi Marisa's Anime List: MAL List
User avatar
Hoeloe
A2XT person
Posts: 1016
Joined: 12 years ago
Pronouns: she/her
Location: Spaaace

Re: Meet TheXTech: a full working C++ port of SMBX engine

Post by Hoeloe »

Why is this in the A2XT subforum? This has nothing to do with A2XT.
Image
Image
Image
Image
Image
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

Re: Meet TheXTech: a full working C++ port of SMBX engine

Post by Wohlstand »

Hoeloe wrote: 4 years ago Why is this in the A2XT subforum? This has nothing to do with A2XT.
Which place you would to suggest for this? I'm fine if move this into another place.
User avatar
Hoeloe
A2XT person
Posts: 1016
Joined: 12 years ago
Pronouns: she/her
Location: Spaaace

Re: Meet TheXTech: a full working C++ port of SMBX engine

Post by Hoeloe »

Project Showcase would probably be the place, since this has nothing to do with SMBX2 or A2XT.
Image
Image
Image
Image
Image
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

Re: Meet TheXTech: a full working C++ port of SMBX engine

Post by Wohlstand »

Hoeloe wrote: Project Showcase would probably be the place, since this has nothing to do with SMBX2 or A2XT.
Okay, that fine, need to ask any moderator for help...

btw: Just now I did a small hotfix, please re-download archives who already downloaded some.
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

Re: Meet TheXTech: a full working C++ port of SMBX engine

Post by Wohlstand »

A small update: I did added into the main post a link to Emscripten build which can be played in a browser now!

Emscripten (Play in browser now)
- Play game in your browser now!
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

New 1.3.2 release!

Post by Wohlstand »

Hello everybody!

Here is a new 1.3.2 release of TheXTech!

It's a bugfix release with a small number of improvements and with full support for testing integration with PGE Editor (need to use the latest Laboratory build!) is working now!

You can find download links in the main post, or, alternatively, can be downloaded from here: https://github.com/Wohlstand/TheXTech/r ... /tag/1.3.2

Changelog for 1.3.2:
  • Added an own timeout sound-92 for P-Switch timer (will be played with 3 seconds before the end)
  • Added a level testing interprocess interface to work with PGE Editor
  • Fixed the Podoboo's tail effect glitch
  • Fixed an incorrect priority of BGO65 in the level file of SMBX prior to 10 format
  • Fixed a classic Bowser's behavior in "The Invasion 1" episode from SMBX 1.0.x
  • Removed 20 layers limit to show/hide/toggle per event (LVLX files only)
  • Extended limit to use up to 200 sections in one level (LVLX files only)
  • Added an error message on attempt to open an invalid level file
  • Fixed a glitch of the rendering of the two-camera screen caused by an incorrect SDL_RenderSetViewport() call usage
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

New 1.3.2.1 release!

Post by Wohlstand »

Hello!

This is a small bugfix release:
  • Reworked joysticks support
  • Added a workaround for case-sensitive file systems
  • The 1up sound now playing multiple times if the player has got more than 1 life (for example, a 3-up moon)
  • Fixed a broken work of magic potion warp packed inside of a grass container
  • Fixed a minor inaccuracy of the moving layers system
  • Fixed an incorrect process of blocked playable characters while loaiding the episodes list
All download links at the WohlSoft page.
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

New 1.3.2.2 release!

Post by Wohlstand »

Hello!

A hotfix for the previous release:
  • Fixed an incorrect computation of effect sizes, caused by a missing part of code
All download links at the WohlSoft page.
Jongseok
Posts: 375
Joined: 7 years ago
Location: Seoul, Korea

Re: Meet TheXTech: a full working C++ port of SMBX engine [1.3.2.2]

Post by Jongseok »

I don't know if this crash happens only on my computer, but please check this. When I enter "Dungeon of Strange Happenings" in Invasion 2, my game just crashes with this message "Engine has crashed because of a wrong arithmetical."
I attached a video for this.

https://youtu.be/Z0i-D_KZy8g
Araragi Marisa's Anime List: MAL List
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

Re: Meet TheXTech: a full working C++ port of SMBX engine [1.3.2.2]

Post by Wohlstand »

Jongseok wrote: 3 years ago I don't know if this crash happens only on my computer, but please check this. When I enter "Dungeon of Strange Happenings" in Invasion 2, my game just crashes with this message "Engine has crashed because of a wrong arithmetical."
I attached a video for this.

https://youtu.be/Z0i-D_KZy8g
Yeah, I already fixed this crash recently, so, please take a patch to get the fix:
https://builds.wohlsoft.ru/win32/thexte ... Rel-x64.7z
(replace all files in the copy of a game, remove old "smbx-win64.exe", and optionally rename "thextech.exe" into "smbx-win64.exe" if you want)

That SIGFPE error was happen at the code that I was added to fix computation of effects sizes that was broken, was a very small but silly error.
(so, yeah, I really need to release 1.3.2.3 today at the evening...)
Jongseok
Posts: 375
Joined: 7 years ago
Location: Seoul, Korea

Re: Meet TheXTech: a full working C++ port of SMBX engine [1.3.2.2]

Post by Jongseok »

Wohlstand wrote: 3 years ago Yeah, I already fixed this crash recently, so, please take a patch to get the fix:
https://builds.wohlsoft.ru/win32/thexte ... Rel-x64.7z
(replace all files in the copy of a game, remove old "smbx-win64.exe", and optionally rename "thextech.exe" into "smbx-win64.exe" if you want)

That SIGFPE error was happen at the code that I was added to fix computation of effects sizes that was broken, was a very small but silly error.
(so, yeah, I really need to release 1.3.2.3 today at the evening...)
Oh, thank you! Problem solved
Araragi Marisa's Anime List: MAL List
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

Re: Meet TheXTech: a full working C++ port of SMBX engine [1.3.2.3]

Post by Wohlstand »

btw, just now I released 1.3.2.3:

- Fixed a SIGFPE crash, caused by an attempt to load some custom effects
- Resolved the inability to grab vegetables normally, caused by an incorrect porting of a logical expression
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

New 1.3.2.4 release!

Post by Wohlstand »

Hello!

A bugfix release:
  • Allow music change for outro level (if outro level has non-silent music, it will be played instead of built-in)
  • Allow unlimited count of episodes and battle levels
  • Fixed an incorrect effect frames count rounding, caused glitches at the death effect for a Hammer Bros.
  • Corrected the sensitivity of axes-based sticks of game-pads to prevent the mystery, caused by value errors
All download links at the WohlSoft page.
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

New 1.3.3 release!

Post by Wohlstand »

Hello!

I present a the next release with a bonus inside (see changelog for details)! ;-)
  • Added the "gameinfo.ini" to give the support for the partial customization of internals (window/game title, character names in menu, credits, etc.)
  • Added an ability to globally override NPC settings by placing of npc-*.txt file into graphics/npc directlry of assets
  • Added an ability to run executable with a different assets directory specified
  • Added the support for playable character custom INI calibrations
  • Message box line breaking algorithm has been improved, added support for new-line characters
  • Settings now can remember the initial state of the frame-skip and show-fps options
  • Added an option to make use the Alt-Run key for Yoshi's Ground-Pound ([gameplay] section and 'ground-pound-by-alt-run' boolean field)

All download links at the WohlSoft page.
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

Re: Meet TheXTech: a full working C++ port of SMBX engine [1.3.3.1]

Post by Wohlstand »

Hello!

It's a small bugfix release together with adding support for new platforms: Windows for ARM and macOS for the new Apple Silicon processors!
Changes for 1.3.3.1
  • Fixed a crash, caused by the incremental locked warps counter that leads BGO array exciting
  • Added support for Windows ARM64 target architecture
  • Added support for Apple Silicon target architecture
  • Fixed the inability to enter levels through warp were extension is missing
All download links at the WohlSoft page.

One small note that the builds I made for Windows and Apple Silicon platforms aren't well tested. Please report to me any possible problems regarding them.
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

New 1.3.4 release!

Post by Wohlstand »

It's a bigger update than usual: it contains bugfixes for the most annoying vanilla bugs and several new features! (Don't worry, if you have some episodes or individual levels built on bugs, you always can re-enable them using the compat.ini file to repair the work of those levels back!)

* Added the Speed-Running system: run the game by giving special command-line arguments to enable the next features: level and episode stopwatch, displaying of pressed keys states, global adjusting of specific limits and bugs-features depending on a chosen speed-run mode.
* The frame-rate controller accuracy has been improved, and the frame-skip hell has been resolved!
* Added the "compat.ini" to adjust the bugs compatibility per levels and per episode. You can find the manual here.
* Tuned the work of the credits screen.
* The work of the game loading screen now is smoother!
* Resolved the problem of a level restarting after player faults when auto-run events won't work at all.

And more other fixes:
Changes for 1.3.4
  • Fixed the inability to use any custom sounds and custom music at the level's custom data directory
  • Added an ability to change sound setup (sample rate, channels, sample format, and the buffer size) via the [sound] INI section
  • Optimized the work of a lazy-decompression algorithm workflow
  • At credits, the bible quote has been replaced with a meme
  • Fixed the vanilla bug: free-falling platforms getting confused when the player changes their power-up state
  • Fixed an inability to autostart events when "restart level after death" mode is enabled on the world map
  • Fixed the case when Pokey getting collapsed during walking on slopes
  • Fixed an unwanted player bounce by a filter block after NPC stomp
  • Added the "compat.ini" support for episode and level specific to enable/disable certain bugs of the old game
  • Fixed the vanilla bug: the player can get clipped into the floor while standing on a block of a down-moving layer
  • Fixed the vanilla bug: NPC can get clipped into the floor while standing on a block of a down-moving layer
  • Fence BGOs now can move player together with a moving layer as vine NPCs does
  • Fixed the vanilla bug: attempt of a player to jump from NPC standing together with getting pushed into the wall causes the clipping
  • Fixed the vanilla bug: resolved an incorrect behavior of skull raft cells that makes the raft being squished when reaching a barrier wall
  • Credits look and performance has been improved
  • Fixed the vanilla bug: Peach can't escape the running shell surf
  • Loading screen now goes smoother (except Emscripten)
  • Level testing will quit on successful completion of a level
  • Improved the framerate controller behavior, added the guarantee of the 65.1025 FPS on almost all supported platforms
  • Added the Speed-Runner mode which can be enabled via the --speed-run-mode <mode> command line argument
  • Fixed a wrong FPS while the key-hole exit is in process
  • Improved the frame-skip logic
All download links at the WohlSoft page.
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

New 1.3.5 release! (SMBX for Android is here!)

Post by Wohlstand »

This is another bigger update with a dozen of important changes.
  • This version features the first mobile version of the SMBX game developed for the Android platform!
  • The gamepads support has been upgraded and exchanged, now it supports the hot re-plugging and auto-mapping for the gamepads and joysticks. Also, here you will be able to use both D-Pad and the left analog stick to control the movement of a playable character.
  • In addition, there are other vanilla bugs that have been fixed such as the mortal bug that kills Link riding the Clown Car gets touched by the vine.
  • To address compatibility issues with some levels the ability to restore the old behavior of checkpoints has been added into `compat.ini`. The Speedrun modes 2 and 3 will also restore the old checkpoints behavior back.
  • The macOS version of the game now has the universal build that will run well on both x86_64 and the arm64 architectures (Thanks to @kode54 for the guidance on how to make it).
  • Here you can copy and delete game saves from the game menu directly!
  • And many other fixes and additions...
Changes for 1.3.5
  • Fixed the gamepad control stuck because of axes returned value that doesn't equal the initial state on some devices
  • Fixed the invalid conversion of old sprites with a mask that is smaller than the front
  • Implemented usage of the SDL_GameController with some extras like using the rumble and the battery status (Render of the status is not implemented yet)
  • Player now can quit the credits screen by pressing the Start button on the gamepad
  • Fixed the glitched rendering of the first frame at the main menu and the world map when frame-skip is enabled
  • Every gamepad model will keep its individual settings per player
  • Added the "Reset to default" menu item to reset controls
  • Resolved the slow work of the world map on weak devices
  • Added the performance debug printing that you can activate by the F3 key
  • Automatically select the gamepad on startup if the user didn't manually set up the keyboard usage
  • Added the ability of the hot connection and disconnection of game controllers
  • Control mappings have been moved into the "controls.ini" to keep the "thextech.ini" file being human-friendly
  • Swooper can play the flap sound if presented at the assets pack
  • Iceball may have the individual shoot sound of sounds.ini enables that
  • Fixed an unexpected ability of Peach to spin-jump from off vines and on pressing of the ALT-JUMP while the JUMP key is held
  • Fixed the GFX shaking of the upside-down piranha plants when they got customized in some cases
  • NPC freezing sound got an individual sound instead of the shell hit
  • Frozen NPC breaking got an individual sound
  • Added an ability to put the silence instead of the actual sound file by specifying the "silent=true" field instead of the "file=..."
  • Thwomps will slightly shake the screen on their fall
  • Yoshi's ground pound will slightly shake the screen
  • Sprout vine from blocks got an individual sound
  • Fixed an incorrect word wrapping at message boxes
  • Fixed the vanilla GFX bug: the thwomp's ground pound dirt effect being improperly aligned
  • Bowser III'rd will shake the screen on his ground pound
  • Fixed the vanilla bug: Link may die when attempting to use the Clown Car being in a fairy form, and when flying up on the Clown Car while any vines behind him
  • Avoided the ability to switch the playable character by the Clown Car at the top of a player switch block
  • Added an ability to restore old checkpoints behavior of the SMBX 1.3 using the "compat.ini" file
  • Fixed the vanilla GFX bug: an incorrect Link's alignment at the Clown Car after being transformed from anybody who rides Yoshi
  • Fixed the skull raft getting stuck at the ceiling slope blocks
  • Fixed the vanilla GFX bug: the unexpected water splash effect appearance at BGOs
  • Fixed the inability to set up the jump button on gamepads in some conditions
  • Fixed the vanilla bug: inability to set the autoscrolling for any non-zero section
  • Added the support for the simple-style per-section autoscrolling setup from the SMBX-38A specification
  • Fixed the vanilla crash when NPC being located far off the screen, tries to find blocks
  • Added an ability to copy and delete game saves from the game menu
  • Fixed the missing "Game Beaten" flag while loading the game save
All downloads at the Official Project Page!
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

New 1.3.5.1 release!

Post by Wohlstand »

The small bugfix release was made before future big work.
Changes for 1.3.5.1
  • Episodes and battle levels lists now loading in the separated thread with a progress showing
  • Fixed the regression that caused world map music not to be switched properly
  • Added an ability to control the intro scene activity on the level by `gameinfo.ini`: set maximum number of running players, and enable/disable the activity at all
  • Fixed an inability to copy the game save based on old files at episode directory
  • Fixed the vanilla bug: incorrect blooper effect when stomped (needed an npc-*.txt with the "jumphurt=0" flag being set)
  • Changed the default compat.ini value "fix-autoscroll-speed" into "false" to prevent possible glitches from invalid setup given by several old levels
  • The "Checkpoint" sound will be played when selecting the "Save and Continue" menu item at the pause menu
  • Fixed a minor glitch at the game save a copy and erase menu while moving the mouse under menu block
  • Fixed the bullet bill getting stuck after it got unfrozen (Thanks to the @ds-sloth for the contribution!)
  • Updated an inter-process protocol with adding new commands
  • Fixed the vanilla bug: The dragon coin has avoided being turned into the block by the P-Switch activation
All downloads at the official page of the project!

Tip: Please use the plain application package at the bottom of the page if you want to quickly update your existing engine without taking any assets updates (for example, if you has the modded assets you made yourself and you don't want to re-apply all your patches again).

Also, you may visit the official TheXTech documentation to learn more about the TheXTech:
https://github.com/Wohlstand/TheXTech/wiki
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

TheXTech v1.3.5.2: More than just a bugfix update

Post by Wohlstand »

This update should've been a bugfix update, however, it introduces some set of new nice features you would like!

Note: To get the full power of TheXTech while making new projects, the special Moondust Devkit configuration package is suggested (the latest laboratory Moondust Devkit required until the next stable devkit version 0.4.3.1 release).

Significant changes
  • Added an option to enable the background game controller input handling
  • Portal warps have been allowed to be used for level entrances and level exits (Instant warps kept unsupported to avoid possible compatibility issues)
  • Added the cannon pipes that can shoot the player with a given speed
  • Added the opt-in 2x scale down optimization for all textures to reduce the memory usage
  • License was changed into GPLv3 (see details: https://github.com/Wohlstand/TheXTech/issues/162)
  • Enabled the work on the Android TV
  • Added mask fallback support for custom graphics mask compatibility for old episodes
  • Added an ability to change the look of the launcher screen on Android via gameinfo.ini (Change the logo, change the background, and set up the simple animation)
  • Added wireless game controllers battery status displaying when enabled at the settings
  • Added device battery status displaying at the right-top corner when enabled at the settings
  • Fixed an inability to save the game when game assets were stored at SD Card on an Android device
  • Added the Yoshi mode support for specified songs at the music.ini: mute selected track number without Yoshi, enable it back when Yoshi is presented
  • Added a fixed behavior for rail platforms and grinder (NPC-60, NPC-62, NPC-64, NPC-66, NPC-104, NPC-179). It can be enabled using new-added custom values
Changes for 1.3.5.2
  • Fixed the ARM64 building
  • Updated the log writer
  • Disabled the "Boss Dead" event hook to stop the episode speed-run timer by default, added the compat.ini options to enable and configure it
  • Fixed the unexpected Swooper flap sound played after the Swooper has gone far away
  • Fixed the vanilla bug: The Swooper has avoided being started to fly when inactive
  • Added the compatibility level command-line option separated from the speed-run modes (However, the speed-run mode will still override the compatibility level)
  • Added an option to enable the background game controller input handling
  • Portal warps have been allowed to be used for level entrances and level exits (Instant warps kept unsupported to avoid possible compatibility issues)
  • Added the cannon pipes that can shoot the player with a given speed
  • Added the workaround for custom background2-42 that has non-multiple 4 height (there are several custom sprites with the 3455 invalid height, they must be 3466)
  • Fixed an incorrect speed-run timer render at multiplayer mode
  • The controller state print has been replaced with a controller drawing to indicate the pressure state of buttons
  • Added the opt-in 2x scale down optimization for all textures to reduce the memory usage
  • Fixed the confusion when using the modern section auto-scroll settings when an auto-scroll fix was disabled
  • License was changed into GPLv3 (see details: https://github.com/Wohlstand/TheXTech/issues/162)
  • Enabled the work on the Android TV
  • Fixed the game start error after granting the storage permission on Android 9 and lower
  • Added an ability to change the look of the launcher screen on Android via gameinfo.ini (Change the logo, change the background, and set up the simple animation)
  • Added mask fallback support for custom graphics mask compatibility for old episodes
  • Fixed vanilla bug: Attempt to enter the locked warp or take the star with star-locked warp the game will crash if a level has no BGO at all
  • Make turn blocks (block-90) work as bricks when SMBX19 and lower-level file version is open
  • Added a workaround for the yellow platform (NPC-60) at "The Invasion 1" episode where it won't move at level42
  • Added Billy Gun (NPC-22) behavior compatibility with SMBX 1.2 and 1.1.x and older file formats
  • Added wireless game controllers battery status displaying when enabled at the settings
  • Added device battery status displaying at the right-top corner when enabled at the settings
  • Fixed an inability to save the game when game assets were stored at SD Card on an Android device
  • Added support for gamecontrollerdb.txt at the assets root and at the user directory
  • Fixed vanilla bug: World map music won't resume after going through the warp that leads to no music points or the music point with the same song
  • Fixed the improper custom music change when going through the warp on the world map
  • Fixed vanilla bug: Offscreen NPC can now respawn during the stopwatch freeze
  • Added Thwomp (NPC-37) behavior compatibility with SMBX 1.0.x
  • Added the Yoshi mode support for specified songs at the music.ini: mute selected track number without Yoshi, enable it back when Yoshi is presented
  • Fixed a bug when a last world map music is not remembered when sound is disabled
  • Fixed the wrong restart place when running the lasagna of levels and the "restart level after death" option is enabled
  • Fixed the NPC logic distortion caused by early gfx update
  • Added an ability to customize an outro behavior using gameinfo.ini
  • Battle mode access can be disabled via gameinfo.ini
  • Two-player game mode access can be disabled via gameinfo.ini
  • The Scores of Power-Ups (NPC-9, NPC-14, NPC-34, NPC-169, NPC-170, NPC-182, NPC-183, NPC-184, NPC-185, NPC-249, NPC-250, NPC-264, NPC-277) can be changed via npc-X.txt
  • Added a fixed behavior for rail platforms and grinder (NPC-60, NPC-62, NPC-64, NPC-66, NPC-104, NPC-179). It can be enabled using new-added custom values
  • Fixed the collision bug when an attempt of the player with the shoe to jump up at the moving NPC being pushed into the wall, causes the player to go through the wall
Known issues
  • Affected by DrPepper Problem: The strong lag on slow devices when the level has any moving layers that move horizontally (by X-axis), mainly because the blocks search indexing gets completely disabled when the layer gets moved by X-axis. Todo: implement the QuadTree for all level objects and make sure they properly getting updated and found. (Issue #33, got been resolved at the `devel` branch by @ds-sloth)
  • Can't type any cheats on a mobile device without a USB-OTG keyboard yeh. Some levels (for example, the "Superb Demo 128" at "Prelude To The Stupid") do require the use of cheats for being passed, otherwise, these levels become unbeatable without a USB-OTG keyboard plugged. Todo: implement the calling of the software keyboard to allow running cheats on mobile devices. (Issue #61)
Image

Image

Image

Image
All downloads at the official page of the project!

GitHub Release page: https://github.com/Wohlstand/TheXTech/r ... g/v1.3.5.2

Tip: Please use the plain application package at the bottom of the page if you want to quickly update your existing engine without taking any assets updates (for example, if you has the modded assets you made yourself and you don't want to re-apply all your patches again).

Also, you may visit the official TheXTech documentation to learn more about the TheXTech:
https://github.com/Wohlstand/TheXTech/wiki
User avatar
Wohlstand
Moondust and TheXTech developer
Posts: 186
Joined: 10 years ago
First name: Vitaly
Pronouns: he/him/his
Location: Moscow, Russia

TheXTech v1.3.6: LunaDLL scripts, better controller support, etc.

Post by Wohlstand »

TheXTech v1.3.6: LunaDLL scripts, better controller support, etc.
----------------------------------------------------------------------------------------------------------------------------------
We worked on this update long and hard, and now we're ready to present a bunch of new features and fixes!

Note: To get the full power of TheXTech while making new projects, the special Moondust Devkit configuration package is suggested (the latest laboratory Moondust Devkit required until the next stable devkit version 0.4.3.1 release).

Note 2: In order to gain access to all the new features, you should upgrade your assets package. Old ones will remain functional but do not contain the additions needed for features like new sound effects, the built-in editor, additional meta-signs, etc.

Note 3: Some options of the compat.ini file were renamed in order to get rid of references to proprietary content. We highly recommend renaming these fields at your episodes as soon as possible. (Details at the wiki)

Significant changes
  • The controllers' support has been reworked and improved: multiple profiles, more than one button/axes assigned to the same button, editable hotkeys, intuitive controller assignment between players on cooperative/battle games, and the touchscreen controller's general improvement (users can now tweak the touchscreen controller's layout for their convenience). The touchscreen controller now also works on any non-Android platforms (including Windows and Linux devices that feature a touchscreen).
  • Added real-time per-section SPC-like echo and reverb effects which can be used by episode creators to improve the atmosphere on their levels.
  • Added experimental built-in Editor, made for working on levels and episodes on mobile devices and consoles. Can be used on desktop platforms as well.
  • Introducing native support for LunaDLL Autocode (LunaScript) via the memory emulator, allowing you to play more old episodes on TheXTech even on non-x86 processors. Episodes and packed games (such as A2XT, Episode 1: Analog Funk) now officially work on the TheXTech engine.
  • Introducing the quad-tree optimisation for blocks which resolves a very old performance problem caused by horizontal layer motion.
  • Added an ability to toggle drawing of the HUD and other on-screen metadata using the F1 key (@Wohlstand)
  • Added an ability to type cheats on the touchscreen using a special new cheats key (@Wohlstand, @ds-sloth)
  • Added native support for LunaDLL Autocode script language (@Wohlstand)
  • Added fail-counter feature (keeps counting deaths per game save) (@Wohlstand)
  • Reworked controller support (@ds-sloth)
  • Touchscreen support for non-Android platforms (@ds-sloth)
  • Added the ability to save multiple keyboard profiles (@ds-sloth)
  • New multiplayer start screen (@ds-sloth with design input from @0lhi)
  • Added controller disconnect recovery screen (@ds-sloth)
  • Ground pound by alt run is now a per-controller setting (@ds-sloth)
  • Added an ability to add/drop the second player from the pause menu (@ds-sloth)
  • Added the support for real-time audio effects such as reverb and SPC echo. Sounds.ini can configure them for each level section (@Wohlstand)
  • Performance improvements for showing, hiding and moving layers (@ds-sloth)
  • Reduced game object memory footprint (@ds-sloth)
  • Performance improvements when run on slow filesystems (@ds-sloth)
  • Fixed unexpected music that got started after the level got entered too quick from the world map (@Wohlstand)
  • Fixed the vanilla bug: a Player can get stuck in the pipe when entering it being a fairy (@Wohlstand)
  • Added an option to enable fast walking on the world map (@ds-sloth, @Wohlstand)
  • Added an ability to customize UI/common assets from the episode and level sides (@Wohlstand)
  • Added a blink effect at speedrun timer on level/episode completion (@Wohlstand)
  • Added an in-game editor based on the original game's editor code (requires EditorIcons.png asset) (@ds-sloth)
  • Added config option to show the current episode's title onscreen (@ds-sloth)
  • Fixed the clipped render of the Roto-Disk's effect (@Wohlstand)
  • Fixed the lock/star sign behaviour at locked two-way warps: now they work correctly at the opposite side (@Wohlstand)
  • Added an ability to set a different path for the user directory by command line argument (@Wohlstand)
  • Blocked an ability to start the game with no episodes or battle levels available in the list and prevented several issues with this (@Wohlstand)
  • Added option to disable or always perform 2x texture scale down optimization (@ds-sloth)
  • Added the ability to have multiple intro levels per assets pack (if the introset directory exists and it contains at least one level file, they will be selected randomly every time when the main menu opens) (@Wohlstand)
  • Added game selection menu into Android launcher: every browsed assets directory will be remembered and can be accessed quickly using the new menu (@Wohlstand)
  • Added the individual sound for Ludwig von Koopa's death (@Wohlstand)
  • Added the individual sound for Larry Koopa's death and shell spinning after stomp (@Wohlstand)
  • Fixed an improper new (when specific compatibility option is not disabled) behaviour of the Skull Raft when the head segment impacts a wall but loses a floor at the same time, causing the following segments to suspend forever (@Wohlstand)
  • Fixed the issue of a possible fall through the floor if walking point-blank to a block that had an extracted bonus and another solid block placed under it (does not happen if the "fix-player-downward-clip" option was disabled) (https://github.com/Wohlstand/TheXTech/issues/401) (@Wohlstand)
  • Removed the "require-ground-to-enter-warps" compat.ini option as redundant: there is the native option of LVLX and 38A-LVL level formats to enable this behaviour. (@Wohlstand)
  • Some options of the compat.ini have been renamed (for backward compatibility, there are aliases kept for now) (@Wohlstand)
  • Added the individual sound for Link's iceball shoot (@Wohlstand)
Image

Image

Image

Image

Image
All downloads at the official page of the project!

GitHub Release page: https://github.com/Wohlstand/TheXTech/r ... tag/v1.3.6

Tip: Please use the plain application package at the bottom of the page if you want to quickly update your existing engine without taking any assets updates (for example, if you has the modded assets you made yourself and you don't want to re-apply all your patches again).

Also, you may visit the official TheXTech documentation to learn more about the TheXTech:
https://github.com/Wohlstand/TheXTech/wiki
Post Reply