Meet TheXTech: a full working cross-platform port of SMBX engine [1.3.2.3]

Description: General discussion regarding the current engine development.
Moderators: Semi-moderatos, Moderators

Wohlstand M
Topic author, Lead Developer
Lead Developer
Avatar
Wohlstand M
Topic author, Lead Developer
Lead Developer
Age: 28
Reputation: 434
Posts: 1547
Joined: 15 Feb 2014
Location: Moscow, Russia
Website Youtube channel URL Skype Tencent QQ

Post #41by Wohlstand » 12 May 2020, 23:25

Olhi wrote:I found a bug on the Linux version that occurs when starting the Classics Collection version of The Great Empire 3:

https://streamable.com/x4iuoh
We had to discuss this and the fix in XMPP. I announcing that this problem has been completely resolved:
https://github.com/Wohlstand/TheXTech/commit/6edef830c0afa06f08ffa37007aa538e65883a82
All custom resources will be looked in a case insensitive manner even on a case-sensitive file system. This feature allows playing of even more episodes on non-Windows platforms without of problems of a case sensitivity crap in resources.

Olhi
Good citizen
Good citizen
Avatar
Olhi
Good citizen
Good citizen
Reputation: 4
Posts: 25
Joined: 7 Apr 2020

Post #42by Olhi » 15 May 2020, 22:06

I made a test level to compare how checkpoints behave and learned that SMBX2 has three separate types:

npc-192, the midway gate from 1.3 which can only be included once.

npc-400, reusable midway gates whose activation will be tracked.

npc-430, reusable checkpoint flags that can be re-activated.

TheXTech includes only a npc-192, but changed it's behavior to be the same as SMBX2's npc-400. This creates the issue that it's impossible for a level with multiple checkpoints to be compatible with both engines. More than one npc-192 on SMBX2 will cause the Player to (in this example) respawn at the one closest to the exit, while npc-400 on TheXTech will turn into Goombas.

For the sake of consistency, I'd include a npc-400 in TheXTech and discourage the use of npc-192. Since the level would be incompatible with 1.3 either way, I don't think there's a disadvantage.
Attachments
npc400.lvl
(6.23 KiB) Downloaded 42 times
npc192.lvl
(6.23 KiB) Downloaded 43 times
TheXTech-SMBX2-Checkpoint-Test.png

Wohlstand M
Topic author, Lead Developer
Lead Developer
Avatar
Wohlstand M
Topic author, Lead Developer
Lead Developer
Age: 28
Reputation: 434
Posts: 1547
Joined: 15 Feb 2014
Location: Moscow, Russia
Website Youtube channel URL Skype Tencent QQ

Post #43by Wohlstand » 17 May 2020, 1:43

TheXTech by default implements the SMBX64 standard with a small set of additions (I would call that as "SMBX64Ex").

Any items out of SMBX64 max type automatically turning into item-1 to prevent possible crashes. (SMBX 1.3 will just crash). NPC-400 is a 108+ out of range of SMBX64. "SMBX64Ex" means not adding more item types, but extending functionality of existing without of compatibility breackage.

When using old episodes, this doesn't matters because they all was built for old SMBX64 standard. XTech partially implements a PGE standard which intends to use LVLX/WLDX formats instead of classic LVL/WLD for using of new features.

Olhi wrote:npc-430, reusable checkpoint flags that can be re-activated.
I have an another idea to just add the special value that sets the mode of a check-point: by default, activates will be tracked, no re-appear on restart. Turning an option on will make this checkpoint re-appear back again. Adding ID-400 and ID-430 will mean extending the range of IDs which doesn't fit into SMBX64 standard:

P.S. There are already existing set of incompatible standards with different itemsets:
- SMBX-38A
- SMBX2
- recent NSMBX

The "conversion" between standards is possible by replacing IDs of items from one standard with IDs of items from the another. I.e. port episode from SMBX2 to SMBX-38A or opposite, will mean you need to replace all IDs of SMBX2 related items with IDs of SMBX-38A items. This is also may be lossy, because each standard has several exclusive item sets are not exist in other standards, OR, a different behaviour and setups also may distort desired behavior of the same item.

Olhi
Good citizen
Good citizen
Avatar
Olhi
Good citizen
Good citizen
Reputation: 4
Posts: 25
Joined: 7 Apr 2020

Post #44by Olhi » 17 May 2020, 3:12

Wohlstand wrote:Any items out of SMBX64 max type automatically turning into item-1 to prevent possible crashes. (SMBX 1.3 will just crash). NPC-400 is a 108+ out of range of SMBX64. "SMBX64Ex" means not adding more item types, but extending functionality of existing without of compatibility breackage.

I see. If NPC's outside the range can be turned into item-1, wouldn't it be possible to have npc-400 turn into npc-192? That would solve the issue. Maybe SMBX2 could do the same in reverse. Turn npc-192 into npc-400.

Wohlstand wrote:I have an another idea to just add the special value that sets the mode of a check-point: by default, activates will be tracked, no re-appear on restart. Turning an option on will make this checkpoint re-appear back again. Adding ID-400 and ID-430 will mean extending the range of IDs which doesn't fit into SMBX64 standard:

I don't think npc-430 or it's function is needed in TheXTech. At least I'm not requesting it. I am merely speculating about how to deal with one seemingly minor incompatibility. The Checkpoint is the only one I'm aware of (in regards to TheXTech and SMBX2).

P4VL0VSKEY M
Our friend
Our friend
Avatar
P4VL0VSKEY M
Our friend
Our friend
Age: 15
Reputation: 8
Posts: 77
Joined: 22 May 2020
Location: Poland

Editor

Post #45by P4VL0VSKEY » 5 Jun 2020, 22:28

Very cool and congratulations for this and I have problem. I can't find it. Is it included? :)
Last edited by P4VL0VSKEY on 5 Jun 2020, 22:49, edited 1 time in total.
ImageImageImage
Image

Wohlstand M
Topic author, Lead Developer
Lead Developer
Avatar
Wohlstand M
Topic author, Lead Developer
Lead Developer
Age: 28
Reputation: 434
Posts: 1547
Joined: 15 Feb 2014
Location: Moscow, Russia
Website Youtube channel URL Skype Tencent QQ

Post #46by Wohlstand » 5 Jun 2020, 22:46

P4VL0VSKEY wrote:Very cool and congratulations for this, because I have problem. I can't find it. Is it included?
All download links in the bottom of main post :acute:

P4VL0VSKEY M
Our friend
Our friend
Avatar
P4VL0VSKEY M
Our friend
Our friend
Age: 15
Reputation: 8
Posts: 77
Joined: 22 May 2020
Location: Poland

Post #47by P4VL0VSKEY » 5 Jun 2020, 22:50

Wohlstand wrote:
P4VL0VSKEY wrote:Very cool and congratulations for this, because I have problem. I can't find it. Is it included?
All download links in the bottom of main post :acute:
Sorry and Thanks for help! :)
ImageImageImage
Image

Olhi
Good citizen
Good citizen
Avatar
Olhi
Good citizen
Good citizen
Reputation: 4
Posts: 25
Joined: 7 Apr 2020

Post #48by Olhi » 9 Jun 2020, 19:08

I found two bugs while playing Another Adventure:

Bubble Bug: https://i.imgur.com/jKcqsVb.mp4

AnotherAdventureBubbleBug.mp4
AnotherAdventureBubbleBug.mp4 (6.34 MiB) Viewed 47 times

Mirror Bug: https://i.imgur.com/bHbbopc.mp4

AnotherAdventureMirrorBug.mp4
AnotherAdventureMirrorBug.mp4 (4.56 MiB) Viewed 54 times

The Bubble Bug occurs on Linux-NSMBX, Linux-TheXTech and Wine-TheXTech, but not on SMBX2.

The Mirror Bug only happens on NSMBX.

Another thing I noticed: On my Linux build of TheXTech I can select every character, even though only Mario and Luigi should be available. On my NSMBX build and your executable from thextech-master archive, the others are blocked as intended.

Wohlstand M
Topic author, Lead Developer
Lead Developer
Avatar
Wohlstand M
Topic author, Lead Developer
Lead Developer
Age: 28
Reputation: 434
Posts: 1547
Joined: 15 Feb 2014
Location: Moscow, Russia
Website Youtube channel URL Skype Tencent QQ

Post #49by Wohlstand » 10 Jun 2020, 11:34

Olhi wrote:Bubble Bug
Interesting thing... Gonna to check out the nature of this thing...

Olhi wrote:Mirror Bug
I should to post that in the necessary chat...

Added after 12 minutes 27 seconds:
Olhi wrote:Bubble Bug
He-he, it happens in SMBX-38A and PGE Engine too! :biggrin:
Should be here a problem in PGE-FL? Gonna to inspect...

Added after 4 minutes 10 seconds:
Anyway, this moment is still being inaccurate even in vanilla SMBX and SMBX2:
Снимок экрана_2020-06-10_11-48-48.png
Снимок экрана_2020-06-10_11-48-48.png (9.31 KiB) Viewed 1257 times

It graduately appears lefter than it was, and the reason why this "machine" is launching by an axe rather level-start because of inaccurate move inspected by an author of level. So, lemme try to make a better calibration of speeds with BPS feature I had to fix in Editor some time ago...

Added after 25 minutes:
Okay, I did an inspect and calibration, and I see that layer move system here had one extra move step that still being reproduced in vanilla SMBX, but gone from XTech and was never appeared in PGE Engine and SMBX-38A. The fact that my calibration thing I did in Editor, began to work correctly everywhere except of SMBX2 where it began to move uppier with every cycle.

popcade
Passerby
Passerby
popcade
Passerby
Passerby
Reputation: 0
Posts: 1
Joined: 10 Jun 2020

Post #50by popcade » 10 Jun 2020, 11:51

Hi,

I'm playing SMBX episodes since 2016, this is a big thing to me. Register the account here just to say this thing can be an full fledge game engine, very cool.

I have a issue with Logitech F710 games pad, when using 1.3.2, changing controls to game pad will soft lock the program, as it doesn't accept Keyboard then, but neither recognize the gamepad, I'm not sure is this the issue with my F710, OS(Win10), or program. As I know the F710 is XInput compatible and recognized as 360 pad in other games.

Wohlstand M
Topic author, Lead Developer
Lead Developer
Avatar
Wohlstand M
Topic author, Lead Developer
Lead Developer
Age: 28
Reputation: 434
Posts: 1547
Joined: 15 Feb 2014
Location: Moscow, Russia
Website Youtube channel URL Skype Tencent QQ

Post #51by Wohlstand » 10 Jun 2020, 12:26

popcade wrote:I have a issue with Logitech F710 games pad, when using 1.3.2, changing controls to game pad will soft lock the program, as it doesn't accept Keyboard then, but neither recognize the gamepad, I'm not sure is this the issue with my F710, OS(Win10), or program. As I know the F710 is XInput compatible and recognized as 360 pad in other games.
Probably a small bug on SDL2 side, or a small mistake at me. I still have some task to polish the controllers support better (mainly allow mapping same action for multiple different keys, or, for example, to handle hat and axes together for a left/right/up/down commands, and some other things).

Added after 8 hours 11 minutes:
Olhi, buble bug has been fixed: https://github.com/Wohlstand/TheXTech/commit/a5e016b63fadaf6f2828cea321af7ef8722844af
The reason was an result of a rounding function that was giving a non-matching result. I had to re-implement a similar rounding function that works same as in VB6, then problem here is going away.

Olhi
Good citizen
Good citizen
Avatar
Olhi
Good citizen
Good citizen
Reputation: 4
Posts: 25
Joined: 7 Apr 2020

Post #52by Olhi » 13 Jun 2020, 2:00

After noticing a visual bug in Yoshi's Archipelago's Mirage Manor, I learned that the Vanilla Engine makes sprites half-transparent when their m.gif is replaced by a White 1x1 Pixel. This is not taken into consideration by SMBX2, TheXTech and GIFs2PNG, which leads to the following result:

MirageManor.png


You can quickly confirm this for yourself by downloading my block-225m.gif and adding it to The Princess Cliche's Mario Pad.
Attachments
block-225m.gif.zip
(561 Bytes) Downloaded 31 times
MariosPadTransparent.png

Wohlstand M
Topic author, Lead Developer
Lead Developer
Avatar
Wohlstand M
Topic author, Lead Developer
Lead Developer
Age: 28
Reputation: 434
Posts: 1547
Joined: 15 Feb 2014
Location: Moscow, Russia
Website Youtube channel URL Skype Tencent QQ

Post #53by Wohlstand » 13 Jun 2020, 2:25

Olhi wrote:I learned that the Vanilla Engine makes sprites half-transparent when their m.gif is replaced by a White 1x1 Pixel.
A very odd thing, and it wasn't used by GIFs2PNG algorithm that is used everywhere... Anyway, I think, I need to tune GIFs2PNG algorithm to make it work more accurate here. I see this trick a first time, and it looks being interesting and odd... Anyway, I know that the front is drawn by the "and" algorithm, and in result, it just mixed with a background, so, I have an idea how to proceed these pics when mask is smaller than a front...

Olhi
Good citizen
Good citizen
Avatar
Olhi
Good citizen
Good citizen
Reputation: 4
Posts: 25
Joined: 7 Apr 2020

Post #54by Olhi » 14 Jun 2020, 2:07

Wohlstand wrote:GIFs2PNG algorithm: treat out-of-mask area as white pixels
✔️ Latest commit 0d94080 1 hour ago

Sprites will now look more transparent than on Vanilla.

Comparison.png


This creates some advantages and disadvantages:

ProCon.png


Personally I think this is fine and you can leave it as-is. :good:
___________________________________________________________________

EDIT: I found a new Bug on World 7 - Blazing Hot Inferno: https://i.imgur.com/5NQkDC0.mp4

World7BlazingHotInferno.png
World7BlazingHotInferno.png

It only occurs on my TheXTech build with the updated algorithm. On TheXTech 1.3.2, NSMBX and SMBX2 it works as intended.

EDIT 2: Here's the result for [a batch conversion with] GIFs2PNG from the updated PGE Lab Build: https://i.imgur.com/3uCMCth.mp4

World7-BHI- PGELab.png
World7-BHI- PGELab.png

EDIT 3: Only background2-30.gif is affected. It does not have a mask counterpart. When doing a single-file conversion with GIFs2PNG, the error does not occur.

EDIT 4: Another example: World 7 > Picante Pass > background2-24.gif. Here's the conversion, and here's the in-game result.

Wohlstand M
Topic author, Lead Developer
Lead Developer
Avatar
Wohlstand M
Topic author, Lead Developer
Lead Developer
Age: 28
Reputation: 434
Posts: 1547
Joined: 15 Feb 2014
Location: Moscow, Russia
Website Youtube channel URL Skype Tencent QQ

Post #55by Wohlstand » 14 Jun 2020, 23:48

Olhi wrote:background glitch

That because of a silliness: the mask shouldn't be even used for background pictures which is a mistake, not related to algorithm itself. The bug didn't appeared because the mask algorithm wasn't shown this issue. Update of algorithm just now gave me a fact of REAL issue that wasn't fixed for a while - masks shouldn't be used ever for backgrounds. The true reason of this bug because a generic thing had a try to get the mask from a PNG background that was in a default stuff, which is a mistake.

Added after 1 minute 58 seconds:
What about GIFs2PNG, looks like I need to add an exception for all "background2-*" pictures and avoid any attempts to use masks for them.

Added after 8 minutes 57 seconds:
Fixed just now: https://github.com/Wohlstand/TheXTech/commit/8962b2977f336ff84f6cb4a5f779dbb684f439f3

Olhi
Good citizen
Good citizen
Avatar
Olhi
Good citizen
Good citizen
Reputation: 4
Posts: 25
Joined: 7 Apr 2020

Post #56by Olhi » 28 Jun 2020, 19:35

I found a bug concerning Character Barriers in Luigi's Fight for the Mushroom Kingdom:

8-6 Restrained Volcano.gif
8-6 Restrained Volcano.gif

7-3 Poisonous Cave.gif
7-3 Poisonous Cave.gif

8-6 SMBX2.gif
8-6 SMBX2.gif

Wohlstand M
Topic author, Lead Developer
Lead Developer
Avatar
Wohlstand M
Topic author, Lead Developer
Lead Developer
Age: 28
Reputation: 434
Posts: 1547
Joined: 15 Feb 2014
Location: Moscow, Russia
Website Youtube channel URL Skype Tencent QQ

Post #57by Wohlstand » 28 Jun 2020, 20:02

Olhi wrote:I found a bug concerning Character Barriers in Luigi's Fight for the Mushroom Kingdom:

It's a very old vanilla bug. Speaking about SMBX2, after making this fix, they had to provide the compatibility system to re-enable this bug again. Mainly because it's used in some tricky/kaizo levels and it's very important for them to work.

Added after 33 minutes 27 seconds:
btw, please use old LunaLua-SMBX for gameplay comparison:
http://wohlsoft.ru/LunaLua/_downloads/LunaLUA_0.7 ... ta_smbx13_sfx_mus_fullgame.zip
which is the same vanilla SMBX, but with minor technical side improvments and still work like vanilla SMBX by as-is.

Olhi
Good citizen
Good citizen
Avatar
Olhi
Good citizen
Good citizen
Reputation: 4
Posts: 25
Joined: 7 Apr 2020

Post #58by Olhi » 28 Jun 2020, 22:19

Wohlstand wrote:Speaking about SMBX2, after making this fix, they had to provide the compatibility system to re-enable this bug again.

Oh, that's interesting. I didn't expect something like this to be the case.

Wohlstand wrote:btw, please use old LunaLua-SMBX for gameplay comparison:

Isn't stable for me sadly. No version based on LunaLua is, except for Beta 4. I'll have to use 1.3.0.1 with disabled sound. That seems to work fine.

Can you recommend a lightweight desktop recorder that's good for capturing a single window?

Wohlstand M
Topic author, Lead Developer
Lead Developer
Avatar
Wohlstand M
Topic author, Lead Developer
Lead Developer
Age: 28
Reputation: 434
Posts: 1547
Joined: 15 Feb 2014
Location: Moscow, Russia
Website Youtube channel URL Skype Tencent QQ

Post #59by Wohlstand » 28 Jun 2020, 22:25

Olhi wrote:Can you recommend a lightweight desktop recorder that's good for capturing a single window?
OBS Studio (Open Broadcasting Software), I use it for a while. Please configure it to record MKV videos.

Olhi
Good citizen
Good citizen
Avatar
Olhi
Good citizen
Good citizen
Reputation: 4
Posts: 25
Joined: 7 Apr 2020

Post #60by Olhi » 28 Jun 2020, 23:19

Wohlstand wrote:OBS Studio (Open Broadcasting Software), I use it for a while.

It's good for complicated set-ups, but too bloated for a simple window recording. I tried out a few others and vokoscreen looks like the best for the job. It's almost as convenient as the in-game recorder, and it supports mkv.


Return to “Engine Development”

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest