Skip to content

compat.ini Tune the compatibility

Vitaly Novichkov edited this page Jul 12, 2025 · 69 revisions

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 in Modern Mode and false in Classic Mode. 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'

Preview true

Demo result when 'false'

Preview true

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.

fix-npc247-collapse

Boolean, default true in Modern Mode and false in Classic Mode. This option enables the fix of the case when Pokey collapses while passing slopes.

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.

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.

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.

fix-npc55-kick-ice-blocks

Boolean, Default false. This option allows NPC-55 (Legacy variant of the Blue Beech Koopa) to kick ice blocks.

fix-climb-invisible-fences

Boolean, default true in Modern Mode and false in Classic Mode. This option prevents the unexpected ability to climb any fence BGO while they on a hidden layer.

fix-climb-bgo-speed-adding

Boolean, default true in Modern Mode and false in Classic Mode. This option enables the fix of the glitch caused an unexpected speed-adding at idling climbable BGOs after the player was standing on a moving layer.

enable-climb-bgo-layer-move

Boolean, default true in Modern Mode and false in Classic Mode. This option allows players to move together with a climbable BGO on a moving layer as they do on moving vine NPCs.

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.

fix-skull-raft

Boolean, default true in Modern Mode and false in Classic Mode. This option makes a skull raft being not squished during the work, and also, makes it to don't work like a conveyor.

fix-plant-wobble

Boolean, default true in Modern Mode and false in Classic Mode. This option causes plants to smoothly resize instead of appearing to change size / position. Was mistakenly always enabled before TheXTech v1.3.6.1.

(Since TheXTech version 1.3.4)

fix-powerup-lava-bug

Boolean, default true in Modern Mode and false in Classic Mode. This option fixes a vanilla bug where powerups might survive on lava depending on the state of the NPC array. (Note that this situation could cause a crash in SMBX 1.3.) Was mistakenly always enabled before TheXTech v1.3.6.1.

(Since TheXTech version 1.3.4)

fix-char3-escape-shell-surf

Boolean, default true. This option allows Character 3 to escape the running shell-surf by the alt-jump key. Without this fix, Character 3 can only escape the shell-surf with a stone suit power-up by turning into the statue.

The old name fix-peach-escape-shell-surf is deprecated since 1.3.6 and removed since 1.3.7.

fix-char5-vehicle-climb

Boolean, default true. This option fixes the problem when Character 5 riding on a Vehicle is able to die in an attempt to fly up while fence or vines behind them: that causes them 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 Vehicle 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 and removed since 1.3.7.

fix-vanilla-checkpoints

Boolean, default true in Modern Mode and false in Classic Mode. 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 and removed since 1.3.7.

fix-submerged-splash-effect

Boolean, default true in Modern Mode and false in Classic Mode. Fixes a vanilla bug where an item already underwater could trigger a splash effect.

(Since TheXTech version 1.3.5)

fix-squid-stomp-effect

Boolean, default true in Modern Mode and false in Classic Mode. 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 and removed since 1.3.7.

fix-special-coin-switch

Boolean, default true. Avoids the medals (NPC-274) being transformed into the block by the Coin Switch activation.

(Since TheXTech version 1.3.5.1)

The old name fix-pswitch-dragon-coin is deprecated since 1.3.6 and removed since 1.3.7.

fix-bat-start-while-inactive

Boolean, default true. Prevent the flying bat (NPC-271) being activated while inactive. If disabled, the On-Activation event and flight start sound will be played when the bat 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 and removed since 1.3.7.

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. This flag may be replaced by a flag emulate-vanilla-crashes in the future.

(Since TheXTech version 1.3.5.3)

fix-fairy-stuck-in-pipe

Boolean, default true. Enable the fix of the bug when Char 5 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 in Classic Mode and in 1.3.6.x, and true in Modern Mode since 1.3.7. 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 in Modern Mode and false in Classic Mode. 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 in Modern Mode and false in Classic Mode. 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 ceilings.

(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 in Modern Mode and false in Classic Mode. 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 in Modern Mode and false in Classic Mode. 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)

fix-npc-emerge-size

Boolean, default true in Modern Mode and false in Classic Mode. Enables the fix of the bug where the logical size of an NPC emerging downwards from a block.

(Since TheXTech version 1.3.6.5)

fix-visual-bugs

Boolean, default true in Modern Mode and false in Classic Mode. Enables fixes for the bunch of visual bugs that was inherited from the original engine. If disable this, the rest of old visual bugs will appear again.

(Since TheXTech version 1.3.6.5)

fix-switched-block-clipping

Boolean, default true in Modern Mode and false in Classic Mode. Enables the fix of the problem where blocks could become intangible to NPCs after a coin switch was used.

(Since TheXTech version 1.3.6.5)

fix-vehicle-altjump-bug

Boolean, default true. Enables the fix of the problem where vehicle could be vulnerable if player entered it during AltJump.

(Since TheXTech version 1.3.6.6)

fix-vehicle-altjump-lock

Boolean, default true. Enables the fix of the problem where vehicle could not be exited if player entered it while holding AltJump key.

(Since TheXTech version 1.3.6.6)

fix-player-stuck-on-dirt

Boolean, default true. Enables the fix of the problem where player can get soft-locked if hit by a grabbable NPC while digging dirt.

(Since TheXTech version 1.3.6.6)

fix-npc-camera-logic

Boolean, default true. Fixes a vanilla bug preventing NPCs from supporting more than two cameras.

(Since TheXTech version 1.3.7)

fix-multiplayer-targeting

Boolean, default true in Modern Mode and false in Classic Mode. Fixes several vanilla bugs causing NPCs to target the incorrect player in multiplayer.

(Since TheXTech version 1.3.7)

world-map-lvlname-marquee

Boolean, default false. World map option. Scroll the level name on small screens, instead of splitting it into multiple lines.

(Since TheXTech version 1.3.7)

allow-multires

Boolean, default true. Allows the gameplay field to be <800x600. When this is set but dynamic-camera-logic is not set, the 800x600 camera will be used for most NPC logic and the screen cannot grow beyond 800x600.

(Since TheXTech version 1.3.7)

dynamic-camera-logic

Boolean, default true in Modern Mode and false in Classic Mode. Allows the gameplay field to be any size. Allows NPCs to activate when they enter the visible camera coordinates.

(Since TheXTech version 1.3.7)

fix-attlayer-reset

Boolean, default true in Modern Mode and false in Classic Mode. Fixes a vanilla bug where the speed of the attached layer of a killed NPC would not be reset correctly.

(Since TheXTech version 1.3.7)

fix-medal-kill

Boolean, default true in Modern Mode and false in Classic Mode. Fixes a vanilla bug where a medal would not be counted if it was killed (instead of being collected normally).

(Since TheXTech version 1.3.7)

fix-event-swap-bug

Boolean, default true. Fixes a vanilla bug where a queued event could be deleted when multiple other events are triggered in the same frame.

(Since TheXTech version 1.3.7)

fix-player-grab-clip

Boolean, default true. Fixed the problem that player gets clipped downwards to the floor when affecting by powerup changes while digging.

(Since TheXTech version 1.3.7.1)

extra-screen-shake

Boolean, default true in Modern and Classic Modes and false in Vanilla Mode. Shakes the screen on certain events that did not cause screen shake in SMBX 1.3. Replaces several thextech.ini flags.

(Since TheXTech version 1.3.7)

enable-playtime-tracking

Boolean, default true. Enable tracking of the playtime on the current level. Does not affect Speedruns.

(Since TheXTech version 1.3.7)

enable-fails-tracking

Boolean, default true. Enable tracking of the player's fails on the current level. Useful for scripted levels (such as intros) that force the player to fail.

(Since TheXTech version 1.3.7)

small-screen-cam

Boolean, default true in Modern Mode and false in Classic Mode. For screens less wide than 800px: allow horizontal lookahead for the camera. For screens less tall than 600px: allow the player to pan the camera up or down using their up/down buttons, and lock the camera by tapping the button again while the camera icon is green.

(Since TheXTech version 1.3.7)

disable-spin-jump

Boolean, default false. Prevents the player from spin jumping under any circumstances by mapping the Alt Jump key to a normal jump. Does not prevent the player from dismounting various items that use the Alt Jump key to dismount. This supersedes hacks used in certain Autocode content (eg, Superb Demo Sisters), and may be added to such content to prevent confusion or bugs.

(Since TheXTech version 1.3.7)

[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.

[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 (Field in assets_xx.json language file 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). It's NOT advised to use it for creation!

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], field enable-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
fix-visual-bugs = true
fix-npc-emerge-size = true
fix-switched-block-clipping = true
fix-vehicle-altjump-bug = true
fix-vehicle-altjump-lock = true
fix-player-stuck-on-dirt = 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

[activity-setup] section

Since 1.3.7

Both Intro and Outro

  • enable-activity - (true/false) Enables player activity on the intro scene. If disabled, no players will walk on the scene, the camera will stay fixed on the same position, visible NPCs will work.
  • max-players-count - (integer) Specify the number of playable characters that will walk on the intro scene. The default is 6. If set to 0, it's equal to enable-activity = false
  • characters - (comma-separated integer list) Specify which playable characters are seen. Default 1,2,3,4,5. To keep Characters 1 and 3 only (eg, Demo and Kood in AoD), specify 1,3.

Outro Only

  • states - (comma-separated integer list) Specify which states playable characters will have.
  • mounts - (comma-separated integer list) Specify which mounts playable characters will use.
  • auto-jump - (true/false) Enable the automatic jump when players pass by a cliff. It may glitch sometimes while enabled.
  • walk-direction - (left/idle/right) Specify the walk direction for all characters.
  • initial-directions - (comma-separated integer list) Specify which direction playable characters will have while set to idle: -1 left, 1 right, 0 random.

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 were 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

[compatibility]

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 version between 1.3.4 to 1.3.6)

allow-drop-add

Boolean, default true. Allow players to be dropped/added from a pause menu item during gameplay. Since v1.3.7, also controls whether the player setup screen gets shown when a controller is disconnected.

(TheXTech version 1.3.6.x only. Still internally supported in v1.3.7 but no longer settable via compat.ini.)

multiplayer-pause-controls

Boolean, default true. Allows players other than P1 to pause the game and control the pause menu. Since v1.3.7, also controls some fixes for the camera logic during multiplayer.

(TheXTech version 1.3.6.x only. Still internally supported in v1.3.7 but no longer settable via compat.ini.)

Deprecated Fields

[compatibility]

fix-autoscroll-speed

Boolean, default false (true in 1.3.5). Deprecated, because of a bug that breaks past contents (See details). Originally, they're invalid data set, and if you try to enable it, might will cause unexpected results. Use the modern Autoscroll settings instead.

(Since TheXTech version 1.3.5)

Will be removed since 1.3.7

[effects] section

This section is for TheXTech versions between 1.3.5.3 and 1.3.6.x

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], field sfx-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.
Clone this wiki locally