Super Mario Bros. X by 38A

Super Mario Bros. X by 38A (known as "SMBX-38A" and "SMBX 1.4") - is a Mario fan game engine, written by 5438A38A as an unofficial successor to the original Super Mario Bros. X by Redigit. The game is written in Visual Basic 6 (VB6). Before November 2015, SMBX 1.4.1 was considered to be fake until Kevsoft and Wohlstand found it and successfully installed it on their computers.

System requirements

 * Operating system: Windows XP/7/8.1 or 10, or Windows XP on VirtualBox with support of Direct X and enabled 2D and 3D acceleration support!
 * SMBX-38A will work on Linux or on Mac with Wine, but you need to install the Direct X 9 and VisualBasic 6 Runtime (MSVBVM6). It is recommended that you use PlayOnLinux or PlayOnMac with the latest 32-bit version of Wine, but SMBX-38A works without it.
 * Direct X 9 support

Command line syntax (since January 21, 2016)
A new update of SMBX-38A 1.4.2 allows you to launch episode or level test from command line. (Also via drag&drop of the file into smbx.exe or associating wld and lvl files with executable.)

Command syntax:

path

 * Path of level-/world-file or world-folder.

modes

 * from 0 to 4:
 * 0 - 1p mode (input: lvl)
 * 1 - 2p mode (input: lvl) / Load save 1 (input: wld/map)
 * 2 - battle mode (input: lvl) / Load save 2 (input: wld/map)
 * 3 - Start Game Engine with inputted worlds-folder (input: directory) / Load save 3 (input: wld/map)
 * 4 - Start Level Editor and load inputted level/world (input: lvl/wld)

p1id, p2id

 * from 1 to 5:
 * 1 - Mario
 * 2 - Luigi
 * 3 - Peach
 * 4 - Toad
 * 5 - link

args (for developers)

 * "SMBXArgs|hp,co,sr|p1p,p1i,p2p,p2i|levelname,cppid,cpidn" [***urlencode!***] (the whole string should be URL-encoded)
 * hp = initial 1up number
 * co = initial coins number
 * sr = initial score
 * p1p = player1's state
 * p1i = player1's mount
 * p2p = player2's state [1~12]
 * p2i = player2's mount [-3~8]
 * levelname = level's filename(same as "GGI|GM"'s levelname) [***urlencode!***] (this should be URL-encoded separately, no matter that an entire SMBXArgs line is also URL-encoded)
 * cppid = checkpoint's perm ID
 * cpidn = checkpoint's advset value

examples for SMBX-38A v1.4.2 (outdated)
Launch a test of the "test.lvl" in a battle mode with Mario and Luigi:

Launch a test of the "anoying-place.lvl" in a 1 players mode with Toad:

Launch a test of the world.wld with save 1 and with 1 player mode, with Mario:

Launch a test of the world.wld with save 1 and with 2 player mode, with Peach and Mario:

Launch a test of the world.wld with save 1 and with 1 player mode, with Link:

SMBX-38A 1.4.1 (65)

 * Versions:
 * Main Release
 * Last released patch with unknown number.
 * File Documentation
 * Version 65/66 (pdf)
 * Version 65/66 (odt)
 * Version 65/66 (txt)

SMBX-38A 1.4.2 (66)

 * Versions:
 * Main Release
 * Patch 0
 * Patch 1
 * Patch 2
 * Patch 3
 * Patch 4
 * Patch 5
 * Patch 6
 * File Documentation
 * Version 65/66 (pdf)
 * Version 65/66 (odt)
 * Version 65/66 (txt)

SMBX-38A 1.4.3 (67)

 * Versions:
 * Main Release
 * Patch 0
 * Patch 1
 * Patch 2
 * Patch 3
 * Patch 4
 * Patch 5 (Note: Archive has password 'smbx38a' due antiviruses false positives)
 * Patch 6
 * File Documentation
 * Version 67 (rtf)
 * IPC Interface
 * C++ Example & Documentation
 * VB.NET Example & C# Example

SMBX-38A 1.4.4 (68)

 * Versions:
 * Main Release
 * Patch 0
 * Patch 1
 * Patch 2
 * File Documentation
 * Version 68 (rtf)

SMBX-38A 1.4.5 (69)

 * Versions:
 * Main Release
 * Patch 0
 * Patch 1
 * Patch 2
 * Patch 3
 * Patch 4
 * Patch 5
 * Patch 6 Missing yet
 * Patch 7
 * Patch 8
 * Patch 9
 * Patch 10
 * Patch 11
 * Patch 12
 * Patch 13
 * Patch 14
 * Patch 15
 * Patch 16
 * Patch 17
 * Patch 18
 * Patch 19
 * Patch 20
 * Patch 21
 * Patch 22
 * Patch 23
 * Patch 24
 * Patch 25 Missing yet
 * Patch 26
 * Patch 27
 * Patch 28
 * Patch 29
 * Patch 30
 * Patch 31
 * Patch 31.1 (Fixes this bug only)

What SMBX-38A has that PGE Project doesn't have in it's components (yet)

 * Fully working and playable engine (however, has different physics even in comparison to official Redigit's SMBX implementations. PGE Engine allows customizing playable character physics to have any of them. But PGE Engine itself is still in alpha development state yet)
 * Tea Script (VB-Like language made by the developer of SMBX-38A)
 * More event actions (including the ones which are planned for PGE Engine)
 * More flexible exit codes parsing per level points on world maps (conditions are supported)
 * More flexible "physical environments" (aka "liquids") support: support of additional events, like trigger event when player/NPC intersected or contacted with the liquid zone
 * Round shaped "physical environment zones"
 * Support of "smart" blocks (this magical thing tries to guess which block must be placed near blocks which you recently placed (works similarly to Super Mario Maker), and it transforms these blocks into the "CORRECT" blocks)
 * Built-in graphics editor (it's already planned to appear in PGE Editor too. It will be more advanced with support of animation making/configuring/debugging and with support of opening/saving directly into PNG and even GIF+GIFm for easier recoloring process, restyling or creating SMBX 1.3 compatible elements from scratch)
 * A lot of new stuff: blocks, NPCs, BGOs, power-ups, bonuses, etc! (they will be added in SMBXtended project for PGE)
 * SMBX-38A's levels and world map file formats are not compatible with SMBX 1.3. Support for SMBX-38A file formats are experimentally supported by all PGE components (in the PGE File Library).
 * Implemented layers and events system on the world maps (which are was planned for PGE Engine)
 * GUI-based config editing for blocks, BGOs, terrain tiles, paths, scenery, levels objects (even PGE Editor and PGE Engine are supports own INI-based custom configs for every object include backgrounds)

What PGE has that SMBX-38A doesn't have

 * Lua scripting which based on advanced luabind library! Lua gives ability to code scripts with algorithms of any complexity! Lua is popular scripting language used in many various games, engines and other software and has wide community which supports it. Together with LuaJIT, lua scripts are working fast almost compared to native code.
 * Multi-Document Interface in the PGE Editor which allows you to open and edit multiple files at the same time!
 * Multi-selection support with drag & drop support (implemented since SMBX-38A v.1.4.3)
 * History manager which tracks each your change and allows you to undo or redo them! (totally history manager of PGE Editor remembers about 300 actions, but you can change that limit in the settings if you want remember more!)
 * Zoom support in the PGE Editor
 * Item specific context menu support
 * Programmable NPC-AI which allows you make a completely new NPC from scratch without using pre-programmed algorithms. That will work in PGE Engine only.
 * Smooth animation with V-Sync support and variable frame delay in the PGE Engine.
 * Absolute customization with config packs system, which allows you to make absolutely new game from scratch with full ignoring of already pre-made stuff and with ignoring of SMBX64 standard. (Different item sets: different default blocks, BGOs, NPCs, terrain tiles, sceneries, paths, level entrance tiles, sounds, musics, character sets (number of them, their abilities), etc.)
 * Backward compatibility between SMBX 1...64 standard file formats, which gives ability to make correct LVL/WLD files especially for old SMBX versions, including even SMBX 1.0, 1.2, 1.2.2, etc.!!!
 * User-friendly section-settings event configuring
 * Customizable and flexible tileset item boxes in PGE Editor, which allow you to create your own custom tilesets per level/episode! (unlike fixed tilesets of any SMBX Engine, how 1.3 and 38A too)
 * Customizable item counters inside debugger box in the PGE Editor
 * Filter search support for item selection boxes (for example, choosing which NPC will be packed into block)
 * Filter-search and category-based item boxes
 * Search ability to find any placed items in a level and in the world maps
 * Position Bookmarks which allows you to bookmark your camera position! PGE Editor will remember these specific locations in level and world maps to let you quickly return back!
 * List-based warps editing
 * Cross-file section cloning support (unlike old SMBX engines, with PGE Editor you can clone sections between different files!)
 * Clearing section support (you can delete everything in a specific section with PGE Editor)
 * World Map testing support (you can walk on your new-created world map to preview it in real work, and imitate exit codes when you trying to enter levels)
 * Support of unlimited amount of sections (SMBX-38A still keep limit of 21 section per level)
 * Support of flexible BGO layering by Z-Layer/Z-Offset per each BGO (every individual BGO element can have own Z-Order priority level which giving you full control over background objects in PGE Editor and in the PGE Engine, but partially with some tricks you even can manipulate with order priorities while saving levels for SMBX 1.3)
 * Built-in audio-conversion and bug-fixing maintain tool sets: you can convert PNG to masked GIFs which are compatible with SMBX <=1.3, convert SMBX's masked GIFs into PNG, fix lazily-made masks which causing wrong render result with alpha-blending algorithm, clearing-up junk NPCs caused by vine bug in SMBX 1.3, etc.
 * Automatic backups on crash of the PGE Editor with auto-restoring ability
 * WIP plugin support in the PGE Editor coded in JavaScript
 * Customable level backgrounds by background2-*.ini custom configs in PGE Editor and PGE Engine
 * PGE is Cross-platform: PGE has native Linux and Mac OS support without requirements of Wine usage, and also Android port of PGE Engine to play SMBX Episodes (and other games built on PGE Engine) on your Smartphone or Tabled!
 * Free and Open Source (while SMBX-38A is closed source, and also distributing in packed executable format, done with PECompact v.2)
 * PGE is coded in C++ and it never has international troubles which VisualBasics 6 has (Familiar error of SMBX 1.3 is RunTime error 13, caused by comma/dot missmatch in floating-point numbers inside NPC-*.txt custom configs).
 * PGE Editor and PGE Engine are has full Unicode support which allows making own translations of GUI and in-game texts, character dialogues, etc., allows free using of non-ASCII characters in file names in the international projects, etc.

What SMBX-38A and PGE both have now

 * Support of custom PNG CGFX
 * Hardware render with OpenGL (PGE-side) and Direct X 9 (SMBX-38A-side)
 * Line fill tool (in PGE there's a limit of 45 degrees to make correct slopes and walls. In SMBX-38A any line angle is allowed)
 * Rectangle fill tool
 * Flood-fill tool
 * Rectangle-based selection
 * Ability to export image of any level region (in PGE it's more user friendly)
 * Vertical section wrap support
 * Custom world map music support
 * Modified SDL Mixer X library extended with support of Game Music Emulator formats and with support of looping OGG music files (via vorbis tags). Added into SMBX-38a since Wohlstand made VB6 wrapper and sent it to 38A.
 * World Map music can be played in the editor
 * Circle fill tool (in PGE Editor placement at corner like rectangular and line placement which allows make ellipses rather circles, in SMBX-38A placement is polar, at center)
 * Built-in GUI-based NPC.txt editor with interactive preview of target NPC CGFX
 * Multiselection
 * Cannon-exit pipes which are shoots player out of pipe on exit in both PGE Engine and SMBX-38A
 * Two-way warps which are requiring a single warp entry rather two like in all versions of SMBX and old versions of SMBX-38A

Random Crash
SMBX-38A has a Random Crash with "Runtime Error 9: Subscript out of Range".

Distorted Sound (Wine)
Depending on the system, running SDL2MixerVB.dll via Wine may produce a distorted audio output. There are two workarounds for this.

The first is changing the SDL audiodriver to winmm, which can be done by entering "wine regedit" in a terminal, navigating to, adding a new String Value SDL_AUDIODRIVER and modifying it to winmm.

The second is using a version of SDL2MixerVB.dll built on SDL 2.0.8. It can be downloaded here.

D-Pad doesn't work
In some cases, SMBX-38A may not recognize D-Pad inputs, but Analog inputs will still work. antimicro and xboxdrv can work around this issue.

Links

 * Official sub-section about SMBX-38A on PGE Forums
 * Main discussion thread about SMBX-38A on PGE Forums
 * Troubleshooting sub-section for SMBX-38A
 * Official 1.4.1 update announcement on Baidu Tieba (Chinese)
 * First video footage by Wohlstand
 * Video footage by bossedit
 * Video Overview by Axiom