compat.ini Tune the compatibility
TheXTech Docs
Links and Downloads
- 🦊 Official Wohlsoft.ru Thread
- 💬 Our Discord
- Stable releases at GitHub
- Fresh devel builds
- Game assets packages
Using
Advanced use
- Command-line arguments
- thextech.ini: Tune game settings
- compat.ini: Tune the compatibility
- Run old packed games
- gameinfo.ini: Customize the game
Hacking
Clone this wiki locally
compat.ini is the per-episode and per-level INI file that allows you to disable or enable certain bug fixes for the purpose to utilize the buggy logic of the old game. Supported since TheXTech version 1.3.4. You can put one file in the episode root directory to apply the setup for the entire episode, or put this file at the specific level file to tune the compatibility between levels individually. Parameters defined at the level-wide file have the highest priority over episode-wide: the same parameter at the level-wide file will replace the value defined at the episode-wide file.
Important note: Since the 1.3.6 release, some fields got been renamed. Consider renaming these fields in your compat.ini files as soon as possible.
[compatibility]
section
Each file should contain the [compatibility]
section. There are the next parameters supported:
enable-last-warp-hub-resume
Boolean, default true
. Allows the player to resume the last entered level warp when loading the saved game of the HUB-based episode. If you disable this feature, the player will start the main hub level from its entrance.
Demo result when 'true'
Demo result when 'false'
fix-platform-acceleration
Boolean, default true
. This option enables the fix of the glitch that makes free-falling platforms and grinders distort their speed while the player transforms between different states.
- Demo result when 'true': Preview true.
- Demo result when 'false': Preview false.
fix-npc247-collapse
Boolean, default true
. This option enables the fix of the case when Pokey collapses while passing slopes.
- Demo result when 'true': Preview true.
- Demo result when 'false': Preview false.
The old name fix-pokey-collapse
is deprecated since 1.3.6.
fix-player-filter-bounce
Boolean, default true
. This option enables the fix of the case when a player gets clip or die when bouncing off an NPC while overlapping a player filter block.
- Demo result when 'true': Preview true.
- Demo result when 'false': Preview false.
fix-player-downward-clip
Boolean, default true
. This option enables the fix of the case when the playable character gets "buried" into the floor while standing on the moving layer blocks that go through another group of blocks.
- Demo result when 'true': Preview true.
- Demo result when 'false': Preview false.
fix-npc-downward-clip
Boolean, default true
. This option enables the fix of the case when NPC gets "buried" into the floor while standing on the moving layer blocks that go through another group of blocks.
- Demo result when 'true': Preview true.
- Demo result when 'false': Preview false.
fix-npc55-kick-ice-blocks
Boolean, Default false
. This option allows NPC-55 (Legacy variant of the Blue Beech Koopa) to kick ice blocks.
- Demo result when 'true': Preview true.
- Demo result when 'false': Preview false.
fix-climb-invisible-fences
Boolean, default true
. This option prevents the unexpected ability to climb any fence BGO while they on a hidden layer.
- Demo result when 'true': Preview true.
- Demo result when 'false': Preview false.
fix-climb-bgo-speed-adding
Boolean, default true
. This option enables the fix of the glitch caused an unexpected speed-adding at idling climbable BGOs after the player had to stand any other moving layer.
- Demo result when 'true': Preview true.
- Demo result when 'false': Preview false.
enable-climb-bgo-layer-move
Boolean, default true
. This option allows players to move together with a climbable BGO at the moving layer as vine NPC does.
- Demo result when 'true': Preview true.
- Demo result when 'false': Preview false.
fix-player-clip-wall-at-npc
Boolean, default true
. This option allows players to jump at standing on NPC and being pushed into the wall and get not be clipped into it. Resolves the old conveyor bug (also affecting by other NPCs too) that causes players to clip into the wall.
- Demo result when 'true': Preview true.
- Demo result when 'false': Preview false.
fix-skull-raft
Boolean, default true
. This option makes a skull raft being not squished during the work, and also, makes it to don't work like a conveyor.
- Demo result when 'true': Preview true.
- Demo result when 'false': Preview false.
fix-char3-escape-shell-surf
Boolean, default true
. This option allows Peach to escape the running shell-surf by the alt-jump key. Without this fix, Peach can only escape the shell-surf with a tanooki suit power-up by turning into the statue.
- Demo result when 'true': Preview true.
- Demo result when 'false': Preview false.
The old name fix-peach-escape-shell-surf
is deprecated since 1.3.6.
fix-char5-vehicle-climb
Boolean, default true
. This option fixes the problem when Link riding on a Clown Car is able to die in an attempt to fly up while fence or vines behind him: that causes him to immediately fly down with lightning speed and die in the pit.
(Since TheXTech version 1.3.5)
The old name fix-link-clowncar-fairy
is deprecated since 1.3.6.
fix-vehicle-char-switch
Boolean, default true
. Prevents players to switch the playable character while riding on a Clown Car by stomping any player blocks at their top. This should avoid several glitches that may happen when the playable character gets switched with the Clown Car removal.
(Since TheXTech version 1.3.5)
The old name fix-dont-switch-player-by-clowncar
is deprecated since 1.3.6.
fix-vanilla-checkpoints
Boolean, default true
. Allows using the checkpoint (NPC-192) multiple times at the same level. Some levels require this option to be disabled. For example, at the "It's Wonderful Demo" level in the "ASMBXT: Prelude to the Stupid" episode (See details).
(Since TheXTech version 1.3.5)
The old name enable-multipoints
is deprecated since 1.3.6.
fix-autoscroll-speed
Boolean, default false
(since 1.3.5.2 because of bug that breaks SMBX64 compatibility). (Default true
at 1.3.5.1 and below). Allows the proper section auto-scroll setup by events for any section than first. (See details). You can use the modern Auto-Scroll settings for your new levels instead of this legacy option.
(Since TheXTech version 1.3.5)
fix-squid-stomp-effect
Boolean, default true
. Fixes the squid NPC death effect when get stomped (in a condition when the jumphurt
option is disabled).
(Since TheXTech version 1.3.5.1)
The old name fix-blooper-stomp-effect
is deprecated since 1.3.6.
fix-special-coin-switch
Boolean, default true
. Avoids the dragon coins (NPC-274) being transformed into the block by the P-Switch activation.
(Since TheXTech version 1.3.5.1)
The old name fix-pswitch-dragon-coin
is deprecated since 1.3.6.
fix-bat-start-while-inactive
Boolean, default true
. Prevent the Swoooer (NPC-271) being activated while inactive. If disabled, the On-Activation event and flight start sound will be played when swooper is inactive: flight away off the screen and re-appeared back into the visible area where NPC won't re-spawn until player get off the area.
(Since TheXTech version 1.3.5.2)
THe old name fix-swooper-start-while-inactive
is deprecated since 1.3.6.
fix-FreezeNPCs-no-reset
Boolean, default false
. Avoid frozen NPC (using stopwatch or green P-Switch) being de-spawned after player gone away and came back again. The fix is very experimental and works unstable, kept disabled by default.
(Since TheXTech version 1.3.5.2)
world-map-stars-show-policy
Enumeration, default unspecified
. Select the policy of the per-level stars amount on the world map. Note: The WLDX-side option has higher priority over this value. This value at compat.ini has higher priority over global game settings.
Allowed values:
-
unspecified
- Prefer the behavior, defined by global game settings. -
hide
- Always hide any per-level stars counters. -
show-collected
- Display the number of already-collected stars only. Don't display the amount number at all. -
show
- Display the number of collected and available stars.
- Note 1: The stars counter will not be shown if level has no available stars.
- Note 2: Some levels may display improer stars count (because of friendly (i.e. non-collectable) stars being counted). This is the fault of the old level editor. To fix the issue, you can open the level and re-save it using Moondust Editor that will properly count the available stars number exclude all friendly stars.
(Since TheXTech version 1.3.5.2)
fix-npc-activation-event-loop-bug
Boolean, default true
. Fixes the possible deadlock caused by recursive activation of NPCs with an event that spawns the message box and hides the layer with it.
(Since TheXTech version 1.3.5.3)
pause-on-disconnect
Boolean, default true
. Pause and enter the drop/add menu when a controller is disconnected.
(Since TheXTech version 1.3.6)
allow-drop-add
Boolean, default true
. Allow players to be dropped/added from a pause menu item during gameplay.
(Since TheXTech version 1.3.6)
multiplayer-pause-controls
Boolean, default true
. Allows players other than P1 to pause the game and control the pause menu.
(Since TheXTech version 1.3.6)
fix-fairy-stuck-in-pipe
Boolean, default true
. Enable the fix of the bug when Link could stuck in a pipe when entering it while a fairy form, leading to the deadlock of gameplay.
(Since TheXTech version 1.3.6)
world-map-fast-move
Boolean, default false
. Enable the fast move feature on the world map: the player will automatically walk through the selected path until reaches the crossing or the level entry point.
(Since TheXTech version 1.3.6)
fix-framethrower-gravity
Boolean, default true
. Enables the fix of the gravity logic of the frame thrower propeller block.
(Since TheXTech version 1.3.6)
fix-npc-ceiling-speed
Boolean, default true
. Enables the fix of the problem of NPC being stuck in a ceiling after jump up or being thrown up and hit a ceiling. (Disabling this emulates an SMBX 1.3 bug that uses the speed of the moving block at the bottom of the column, slowing down performance.)
(Since TheXTech version 1.3.6.1)
emulate-classic-block-order
Boolean, default false
. Enables the simulation of old blocks order behaviour from before TheXTech's performance updates. (Enabling this slows down performance.)
(Since TheXTech version 1.3.6.1)
fix-player-crush-death
Boolean, default true
. Enables the fix of the unfair death of playable character because of moving sloped cellings.
(Since TheXTech version 1.3.6.1)
fix-pound-skip-warp
Boolean, default true
. Allows entering instant warps while performing the ground pound to prevent unfair deaths.
(Since TheXTech version 1.3.6.1)
fix-held-item-cancel
Boolean, default true
. Enables the fix of problem when held item won't kill an enemy NPC while it touches any other safe item. (Read details)
(Since TheXTech version 1.3.6.1)
modern-section-change
Boolean, default true
. Enables the usage of the new section changing algorithm that avoids several problems like an infinite scrolling into nowhere.
(Since TheXTech version 1.3.6.1)
fix-frame-perfect-despawn
Boolean, default true
. Enables the fix of the unexpected NPC despawn once it got caught by player's camera on the final tick that matches the deactivation moment.
(Since TheXTech version 1.3.6.1)
[speedrun]
section
This section is available since TheXTech 1.3.5.2
The [speedrun]
section allows configuring the behaviour of the speed-run timer at the episode or at every individual level. There are the next parameters supported:
stop-timer-by
Enumeration, default none
. The type of event that should trigger the global timer stop.
Allowed values:
-
none
- No special timer stop conditions. The timer will stop once the "End Game" built-in event got triggered. -
event
- Stop the timer when the event with a given name got triggered (for example, trigger when defeating the final boss of the episode, or getting the goal treasure that means the episode has been completed, etc.). -
leave
- Stop the timer when a player left the level by one of the available exit types. Suggested at the final level in the episode that finishes the story. -
enter
- Stop the timer when the player entered the level. Suggested for levels built as credits.
stop-timer-at
String, default Boss Dead
. Depending on the stop-timer-by
value, this means the name of the event got triggered, or the level file name (without extension) got been entered or left.
[effects]
section
This section is available since TheXTech 1.3.5.3
The [effects]
section allows configuring the behaviour of some non-gameplay (sound or graphical) effects at an episode or individual level. There are the next parameters supported:
sfx-player-grow-with-got-item
Enumeration, default unspecified
. Enables playing of the player growing sound together with the got item to represent the Super Mario World behaviour.
Allowed values:
-
unspecified
- Prefer game global settings (settings/thextech.ini
, section[effects]
, fieldsfx-player-grow-with-got-item
). -
enable
- Force enable the effect at this episode or level, the global setting will be ignored. -
disable
- Force disable the effect at this episode or level, the global setting will be ignored.
[fails-counter]
section
This section is available since TheXTech 1.3.6
The [fails-counter]
section allows you to set up a counter of how many times a player failed a level during the playthrough.
enabled
Boolean, default false
in 1.3.6; Since Version 1.3.6.1, default value is defined by gameinfo.ini. Enables the deaths counter being shown at the left-top corner of the screen. When this option is enabled, there are two values that will be shown: a total number of player deaths on a current level, and a total number of deaths at the current gamesave of this episode.
title
String, default empty. Allows overriding game default deaths counter title label ("DEMOS" by default).
[luna-script]
section
This section is available since TheXTech 1.3.6
The [luna-script]
section allows you to set up properties of the LunaScript engine (custom implementation of LunaDLL AutoCode).
enable-engine
Enumeration, default unspecified
. Enable or disable the work of the LunaScript engine at this episode.
Allowed values:
-
unspecified
- Prefer game info file setup (gameinfo.ini
, section[luna-script]
, fieldenable-engine
). -
enable
- Force enable the LunaScript engine at this episode or level, the global setting will be ignored. -
disable
- Force disable the LunaScript engine at this episode or level, the global setting will be ignored.
allow-level-codes
Boolean, default false
, A2XT Ep.1 Analog Funk exclusive. Enable the handling of built-in level code processing. All of these are exclusively to work with "A Second Mario Bros. X Thing, Episode 1: Analog Funk", and these codes were has no sense outside that episode; so, they should not been enabled unless you play the Analog Funk game.
Example of the file:
[compatibility]
enable-last-warp-hub-resume = true
fix-platform-acceleration = true
fix-npc247-collapse = true
fix-player-filter-bounce = true
fix-player-downward-clip = true
fix-npc-downward-clip = true
fix-npc55-kick-ice-blocks = false
fix-climb-invisible-fences = true
fix-climb-bgo-speed-adding = true
enable-climb-bgo-layer-move = true
fix-player-clip-wall-at-npc = true
fix-skull-raft = true
fix-char3-escape-shell-surf = true
fix-keyhole-framerate = true
fix-char5-vehicle-climb = true
fix-vehicle-char-switch = true
fix-vanilla-checkpoints = true
fix-autoscroll-speed = false
fix-squid-stomp-effect = true
fix-special-coin-switch = true
fix-bat-start-while-inactive = true
fix-FreezeNPCs-no-reset = false
world-map-stars-show-policy = unspecified
fix-npc-activation-event-loop-bug = true
pause-on-disconnect = true
allow-drop-add = true
multiplayer-pause-controls = true
fix-fairy-stuck-in-pipe = true
world-map-fast-move = false
fix-framethrower-gravity = true
fix-npc-ceiling-speed = true
emulate-classic-block-order = true
fix-player-crush-death = true
fix-pound-skip-warp = true
fix-held-item-cancel = true
modern-section-change = true
fix-frame-perfect-despawn = true
[speedrun]
stop-timer-by = event
stop-timer-at = "Demon dead, demon dead!"
[effects]
sfx-player-grow-with-got-item = enable
[fails-counter]
enabled = false
title = "DEMOS"
[luna-script]
enable-engine = unspecified
allow-level-codes = false
Renamed fields
This is the list of compat.ini fields that got been renamed during updates:
1.3.6
There are new names introduced, but compatibility aliases were kept, and will be removed in 1.3.7. Usage of old names will lead to a set of warning messages in the log of the game.
To get rid for copyright-referenced names
-
"fix-pokey-collapse"
→"fix-npc247-collapse"
-
"fix-peach-escape-shell-surf"
→"fix-char3-escape-shell-surf"
-
"fix-link-clowncar-fairy"
→"fix-char5-vehicle-climb"
-
"fix-dont-switch-player-by-clowncar"
→"fix-vehicle-char-switch"
-
"fix-blooper-stomp-effect"
→"fix-squid-stomp-effect"
-
"fix-pswitch-dragon-coin"
→"fix-special-coin-switch"
-
"fix-swooper-start-while-inactive"
→"fix-bat-start-while-inactive"
Normal
-
"enable-multipoints"
→"fix-vanilla-checkpoints"
Version Specific
fix-keyhole-framerate
Boolean, default true
. This option makes the key-hole exit waiter work with the same frame-rate controller as all other scenes and modules. The normal workflow runs approximately 65 FPS. When the option is disabled, the key-hole exit waiter will work with 100 FPS that causes all blocks and BGO animations to speed up their animation.
(TheXTech versions between 1.3.4 to 1.3.6 ONLY)