Changelog - CheMiguel23/SMB3-Bank12 GitHub Wiki

Last updated: 2026-04-12

Unreleased

  • Settings
    • Settings now has separate Level Canvas and Map Canvas tabs with independent grid, boundary, and navigation preferences.
    • Changed tab order.
  • Level Editor
    • It is now possible to duplicate a level directly from the left level tree, optionally copy its linked alt family; the new copies appear as unassigned levels
    • Tundra/ice striped sky now renders correctly in the editor, CHR preview, and PNG exports
    • TS1 width-0 big blocks now preview and validate their ROM-accurate shadow column
    • Floating TS1 big-block selection boxes now match the editable block body instead of the decorative shadow
    • Changing Level tileset now updates the real level tileset and immediately resyncs linked world-map node tilesets, including after reassigning nodes, reopening a project, and building unopened worlds
    • Editor canvas now renders TS13 width-0 long/double/pointy cloud; TS6/TS7/TS8 pipes, minipipes, and block generators underflow the same way the game does
    • Desert fixed pyramids now render to their ROM-correct height in the editor, and their selection bounds follow the real stepped pyramid shape
    • End-goal previews now render at the correct vertical position when the goal generator is placed below row 0
    • Fortress windows, pillars, and hanging globes now use tighter selection footprints, so clicking and box-selecting targets the actual repeated columns instead of the empty gaps between them
  • World Map Editor
    • Normal world-map nodes now only let choose root normal levels or unassigned levels in the Layout/Object pickers.
    • World Map Properties now includes a ROM-backed Anim speed field under Fill Tile, with vanilla exception notes for Worlds 3, 5, and 8 (watchout! for legacy projects speed is set to 0 by default)
    • World map boundary guides now dim the columns that SMB3's gameplay border frame covers, with per-screen masking on non-scrolling maps and outer-edge masking on scrolling maps
  • CHR Editor
    • CHR metatile editing now shows reuse counts for all four source tiles and includes a new affected-metatiles browser
    • CHR editor tiles mode now includes a Tile Usage browser that shows which metatiles and object frames use the selected raw tile, with live-updating previews and filters
  • Banks management
    • bank-capacity displays now use exact vanilla layout-bank starts for known banks, so empty/shared bank capacity is reported accurately instead of using the old generic estimate.
  • Text Editor
    • In 0.1.x, Sprite Words and Status Bar no longer appear in the Text Editor tree, while existing project and ROM compatibility for their underlying text data remains in place until 0.2.0.

v0.1.2 (2026-04-07)

Assigning an already-assigned level moves the whole family cleanly, including alt levels and any manual object binding, the old source node becomes a safe No Level decoration node, and the ROM builder patches pointers using the current node identity instead of relying on a single index convention.

This update brings breaking changes and major change to pointers assignment system, I would put v.0.2 on it but since user-base is almost non-existent, it stays as 0.1.2

  • A critical nodes reindexing bug fixed, previous versions projects are corrupted.
  • A critical rebuilt-ROM world-map table discovery bug fixed so edited maps still decode correctly after a full build
  • Level Editor
    • Fixed Hills/TS3-TS14 preview parity so several ceiling slope and corner generators that were showing as transparent in the editor now render the same raw metatiles the ROM uses in-game.
    • Fixed TS6/TS7/TS8 generator id 34 so it previews as the ROM's P-switch coin variant instead of incorrectly drawing a full two-row bridge.
  • World Map Editor
    • World map entry editing now correctly re-enables Toad House and Spade controls after switching away from World 9, and warp pipe no longer appears as a selectable entry type outside World 9.
    • World map tile labels now show Plain Ground for tile 0x42 and explicit Level Panel 1 through Level Panel 10 names for tiles 0x03..0x0C across shared world-map UI
    • World map node inspector now uses a simpler Screen / Y / X coordinate layout and no longer shows the redundant Section field.
    • Regular Toad House reward dropdowns now use more accurate names for the mixed reward options.
    • Boom Boom effect coordinates in the world map properties panel now use X/Y.
    • The world map Entries panel is now called Nodes, with a full-width + Add Node button under the list.
  • Graphics Editor
    • Drawing on the Metatiles tab now batches CHR updates until the mouse is released, which keeps the local editor preview live while avoiding the heavy per-pixel redraw churn that made painting feel laggy.
    • Replacing a quadrant tile from the metatile picker now commits immediately, is undoable/redoable, persists with the project like other metatile edits, and updates the metatile atlas and previews right away.
    • The CHR editor's level preview now renders with the same rendering path as the main level editor canvas, so what you see in the preview matches the editor much more closely.
    • Right-click drag now continuously erases in the CHR editor's Objects and Tiles tabs, with the same undo/redo and batched-save behavior as left-click painting, while Metatiles keeps its existing right-click action.
    • In the CHR Metatiles editor, right-click/drag on the large metatile now erases pixels instead of opening tile swap; tile swapping stays on the smaller quadrant tiles below, keeping the workflow consistent with the other editors.
    • Objects and Tiles in the CHR editor now support Alt+click color picking, matching the eyedropper behavior already available in Metatiles mode.
    • CHR editor sub-tabs now remember their own last edited selection, so switching between Objects, Tiles, and Metatiles refreshes the right panel to the correct item instead of leaving stale content from the previous mode.
    • Graphics editor previews now update live during palette edits.
    • World map objects in CHR Editor Objects mode now show frame variants where the overworld sprite tables actually animate
  • Palette Editor
    • Palette Editor now disables “set as active palette” unless the dialog is tied to the currently active level or world map, and it turns back off automatically when you switch away from that target context.
    • Palette Editor now supports CHR Metatiles, Objects, and Tiles as active palette contexts, including a new metatile preview BG-row selector and cleaner tiles-mode palette controls.
    • The palette editor now opens as a single window; clicking the palette button again reuses the existing editor instead of stacking duplicate windows.
  • Text Editor
    • The Text Editor now only shows real ROM-backed World Map HUD and Status Bar text. Helper-only world-number rows were removed, and old projects silently drop the legacy status-bar helper slot on the next save.
    • Spade and N-Spade instruction text now repack into PRG22 free space, so bonus panel text can exceed the original vanilla byte slots as long as the shared bonus-text pool still fits.
    • Text constraints now track the currently edited row, bonus-panel text has a real 24-character row cap, and ROM/BPS builds are blocked when saved text exceeds SMB3's text constraints.
  • Settings
    • Settings are now organized so shared canvas controls stay under Canvases, while level-editor-only display and behavior options live together under Level Editor.
    • Added a Show tooltip on canvas checkbox under Level Editor settings

v0.1.1 (consumed by v0.1.2)

  • Level Editor
    • The level tree context menu now includes Rename, Unassign, and Delete.
      • Unassign is available for world-map root levels and removes the selected world-map assignment without deleting the level. The level then appears under Unassigned Levels.
      • Delete is available for world-map and unassigned levels, including alt levels.
      • Deleting a level shows a confirmation prompt and permanently removes that level file from the project.
      • If the deleted level is part of an alt chain, the remaining chain is repaired automatically.
      • If a main assigned level is deleted and it has an alt, the first alt is promoted into its place.
      • Any world-map and object-source references to the deleted level are cleared automatically to avoid broken references.
    • Enabled selection box for vars/fixed when "Overlay" toggle is off
    • Level editor canvas context menus now show shortcut hints for Cut, Copy, Paste, Duplicate, and Delete, and those hints stay in sync with custom keybindings.
    • Fixed horizontal and vertical resizing for scaled-width/height generators so dragging now snaps correctly to each generator's actual multi-tile width.
    • Prefab placement previews now render object members at their proper sprite size and offset instead of squishing them into a single tile.
    • Level Header spawn dropdowns now show real in-game row/column meanings and are ordered by actual screen position.
    • Junctions now warn when a destination screen points past the linked alt level's screen count, without clamping or changing the raw stored value.
    • Level editor selection, multi-select, and resize flows now update the inspector through one canvas-owned path, reducing duplicate logic and keeping inspector state consistent without changing undo behavior.
  • Main application
    • Opening or creating a project from the hub now fully resets the current editor session first, so it behaves like a fresh app start into the new project. This clears open tabs and project-scoped UI state, flushes pending saves from the previous project, and prevents stale level/world map state from leaking across project switches.

v0.1.0 (2026-04-03)

  • Initial release