SMBX2 Beta 4 (2.0.0.b4)

Released January 2020

This update fixes several issues with the SMBX2 Beta 4 preview builds and adds additional functionality.

This update includes changes that may cause behavioural inconsistencies with levels made on preview builds or Beta 3.

This version is the next stable release of SMBX2 and is sufficient for releasing episodes.

We will be developing proper documentation throughout the coming months. The docs button at the top will redirect to the new documentation once it's available.

If you have any questions, please contact us on the Codehaus Discord server.

Updates

Yellow Highlighted changes may impact how previously created levels behave!

Orange Highlighted changes denote behaviour that may still persist despite our fixes. Please report back if you encouter these!

Patch 4 Hotfix (2021-04-30)

  • Engine
    • Fix a long-standing bug where deallocated CaptureBuffer Lua objects could sometimes cause flicker.
  • NPCs
    • Drybones: Fix a crash which could occur if you had timestop active, bopped a dry bones, and switched sections.
    • Snake Block: Can no longer be eaten by Yoshi.
    • Walking Rinka Gun: Fix a few bugs, most notable it mistakenly instantly killing things which didn't use to be the case.
    • Foo: Clouds no longer exist forever, and no longer have the incorrect offset when set to face right.
    • Misc: NPCs below ID 293 that featured light effects by default now correctly display their light effects.
    • Monitors: Fixed a bug in monitors that allowed exceeding 100 coins
    • Boohemoth: Fixed spinjump related jank
    • Magikoopa Magic: No longer crashes the game when entering clear pipes.
  • Characters
    • Broadsword: No longer gets stuck in clear pipe cannons.
  • Costumes
    • Updated the SMW costume pack from MrDoubleA.
  • Launcher
    • Updated translations.
  • Editor
    • Fixed the logic of initial open/save paths while opening any file dialogs (in simple words: open SMBX2's worlds directory than data/PGE/worlds to not confuse users).
    • Fixed the missing "modified" level file flag when the custom music path was changed.
    • Physical environment zones now have the taller hit-border to make the box is selected by the mouse easier (made by the request to simplify the selection of them).
    • Added the support for custom WOPL bank files at libADLMIDI synthesizer.
    • Added the support for custom WOPN bank files at libOPNMIDI synthesizer.
    • Added the support for the FluidSynth at MixerX library.
    • Updated translations.
    • Fixed the Calibrator's frame data compatibility with SMBX2 that requires all frames present in the calibration file.
  • Scripting
    • Improved compatibility of lib3d's shaders with some computers.
    • Fixed a corner-case bug in textplus for the case of a generated glDraw command having no verticies, which would error when the high quality upscaling is enabled. Only known to occur if the text printed only contains unprintable characters.
    • Fixed some clipping problems in lib3d.
    • Fixed a typo that made shader arguments for parallaxing backgrounds unusable.
    • Particle emitters now have an isValid field to check if they are destroyed or not.
    • Added Misc.coins() which can be called without arguments to query coin count, or called like Misc.coins(coinsToAdd, withSound) where "coinsToAdd" is a number of coins to add, and "withSound" being a boolean indicating whether to play the usual sound.
    • Fixed a bug where passing a table to BGO.iterate would cause an error.

Patch 4 (2021-04-08)

  • Engine
    • Much better upscaling when using large window sizes or fullscreen.
    • Better window resizing behaviour. Preserves aspect ratio, and snaps to native resolution when within 5%. Hold the Ctrl key to allow free resizing without preserved aspect ratio.
    • Fix rare graphical glitch from capture buffer deallocation.
    • Reduce tendency of the window to be unresponsive during initial loading.
    • Fix a crash that can occur in some corner case instances of saving while a character with an ID > 10
  • Editor
    • Switched to using a 64-bit build of the editor.
    • Some assorted fixes.
  • Meta
    • Fixed un-setting the waitinginthesky cheat.
  • NPCs
    • Added a new NPC type: Spawners. Spawner-type NPCs trigger a behaviour when coming onscreen.
    • Added: Boohemoth Spawner. Spawns a Boohemoth travelling in a chosen direction. Causes an autoscrolling behaviour. Currently only singleplayer compatible.
    • Added: Cheep Cheep Spawner. Automatically generates cheep cheeps to spawn at the screen edges.
    • Added: Bullet Bill Spawner. Automatically generates bullet bills to spawn at the screen edges.
    • Added: Coin Snake NPC from Super Mario World.
    • Baby Yoshi (Cyan, Pink): The spawned NPC is now spawned to the "Spawned NPCs" layer.
    • Berries: Rewards are now spawned to the "Spawned NPCs" layer.
    • Big Goombas (Splitters): NPCs spawned after splitting now inherit the "No More Objects In Layer" event.
    • Billy Gun: When using Extra Settings, Bullet Bills are now spawned to the "Spawned NPCs" layer.
    • Boo Circle: Boo Circles propagate their "Death" and "No More Objects In Layer" events to the spawned Boos on the ring.
    • Bullet Bill Blaster: When using Extra Settings, Bullet Bills are now spawned to the "Spawned NPCs" layer.
    • Dino Rhino: When spawning the Dino Torch, the death event is cancelled and instead given to the Dino Torch.
    • Dino Torch: Now inherits the Rhino's "No More Objects In Layer" event.
    • Fire Snake: Trails now inherit the "No More Objects In Layer" event.
    • Fry Guy: When Fry Guy is defeated and splits into 4, the 4 Sizzle Guys now inherit the Fry Guy's "No More Objects in Layer" event. The "Death" event can still be used to poll for the main Guy's death.
    • Megashroom: Fixed a bug where Megashrooms landing on conveyors or moving NPCs would cause a crash from speed overflow.
    • Mutant Vines: Fixed a bug where mutant vines would attach to semisolid player and NPC filter blocks.
    • Rocky Wrench: Wrenches are now spawned to the "Spawned NPCs" layer.
    • Rocky Wrench: Wrenches now follow the Rocky Wrench while held.
    • Rotating Bill Blaster: The ID of the fired NPC is now configurable in-editor.
    • Rotating Bill Blaster Base: Fixed the rotation animation.
    • Splittin' Chuck: Split Chucks are now spawned to the original Chuck's layer and inherit the "No More Objects In Layer" event.
    • Wiggler: Trails now inherit the "No More Objects In Layer" event.
  • NPC Config
    • Diggin' Chuck: projectileid - Allows the ID of the spawned rock to be adjusted.
    • Cloud Drops: range - Allows the travelling distance to be adjusted.
    • Lineguide properties can now be set in npc-n.txt files.
  • Scripting
    • Level.winState() is renamed to Level.endState() to match the LEVEL_END_STATE_* enum values. The old function name still works but is no longer preferred.
    • Level.exit(winType) now clears checkpoint state when existing when the current winType is > 0
    • Added Level.finish(endState, delayed), which finishes a level using the normal level end process associated with a particular LEVEL_END_STATE_* enum. This may cause saving the game in some cases. Both arguments are optional. If no endState is provided, one that is already set will be used. If 'delayed' is specified as true, the full end state animation will play out, instead of skipping to the end.
    • Added Level.winTypeToEndState(winType) for mapping LEVEL_WIN_TYPE_* enums to LEVEL_END_STATE_* enums
    • Added Level.endStateToWinType(endState) for mapping LEVEL_END_STATE_* enums to LEVEL_WIN_TYPE_* enums
    • Graphics.glDraw now supports a 'linearFiltered' option, causing the specified texture to be handled with bilinear filtering.
    • Handycam zoom now uses a cleaner upscaling method that won't cause wobble/shimmer of row/column sizes.
    • Added getEffectSpawners(id) and getEffectObjects(id) functions to bettereffects.lua
    • Fix timer.toggle(newValue) when a new value is specified)
    • Various small lib3d and transform bugfixes/enhancements.
    • Added setTarget, getTarget, and clearScene to map3d
    • Fixed a bug in Routine that caused aborted coroutines to leak memory.
    • The textplus img tag now accepts optional height/width/maxWidth/maxHeight fields. By default values are a number of pixels. Values can also be specified as a % of maxWidth of the layout (defaulting to 800 when no maximum width is set). In addition, values may be specified in 'em', which is the height of a line with current font and yscale. Aspect ratio will be preserved unless both height/width are given at the same time.
    • The textplus img tag now accepts a "smooth=true" field to turn on linear filtering for an image.
    • Textplus can now use a cleaner upscaling method. This is used by default when printing at a non-integer location, with non-integer font scales, or with a 'wave' effect. You can force this enhanced upscaling by calling textplus.render with a smooth=true argument, and you can force it to be disabled with a smooth=false argument.
    • Minor fixes to Block class handling block invalidation of deleted blocks.
    • Fixed some small SaveData/GameData bugs and also allow ipairs/pairs to iterate properly on SaveData/GameData tables
    • Fixed blockutils.getBlockSection which was poorly implemented and didn't do what it suggested. blockutils.getClosestPlayerSection now does what that used to, and a more robust getBlockSection now exists that can operate even when a player is not in the block's section.

Patch 3 Hotfix (2020-09-07)

  • Meta
    • Fix bug preventing Mario Challenge from working properly.
    • Fixed a bug where the camera would be locked in place during frame advance mode.
    • Fix some cheats causing errors on the overworld.
    • Add some shader object caching, to reduce excess shaders being generated in situations like darkness enabled on multiple sections.
    • Improved compatibility of 'gameboy dither' shader effect with older graphics cards.
  • NPCs
    • Rocky Wrench: Fixed a crash when the NPC gets frozen while holding a wrench.
    • Megashroom: Fix bug where it would break warps.
    • Hidden Container: Re-added invisible image to take care of an inconsistency introduced in Patch 2.
  • Editor
    • Level properties: The timer can now optionally trigger a 'Level Timer - End' event instead of killing players.
    • Updated editor update scripts
  • Scripting
    • Handycam now renders later, fixing a bug where parallaxing backgrounds would incorrectly render while handycam zoom is enabled.
    • Added constants for score, mounts, forced player state, level end state, level win type, boot colors and yoshi colors. They are documented in the "Constants" section of the documentation. https://docs.codehaus.moe/
    • Added aliases HARM_TYPE_VANISH and POWERUP_TANOOKI for mislabeled constants HARM_TYPE_OFFSCREEN and POWERUP_TANOOKIE.
    • Added alias Defines.cheat_flamethrower for Defines.cheat_flamerthrower.
    • Add Misc.exitEngine()
    • Allow passing level w