World Map Editor - CheMiguel23/SMB3-Bank12 GitHub Wiki

Last updated: 2026-04-05

Overview

World Map Editor

The World Map Editor is the main workspace for building and editing SMB3 world maps.

It consists of:

  1. World Map Tree - Lists all 9 worlds available in the project.
  2. Canvas Toolbar - Canvas settings and painting controls.
  3. World Map Canvas - The main working area for painting tiles and placing nodes.
  4. Palette - Allows you to select tiles for placement.
  5. Right Panel - Contains 4 tabs: tile information Inspector, world-wide settings and Boom Boom effects Properties, object placement and airship routes Map Objects, and list of placed nodes Nodes.

ℹ️ The World Map Editor works with three distinct element types:

  • Tiles - Decorative map graphics painted onto the canvas. Most are purely visual, though some carry minor logic.
  • Nodes - Placed on top of tiles, nodes define map logic: which level loads, special locations such as Toad Houses and mini-games. Node types are organized for editor convenience and do not necessarily reflect the underlying ROM structure directly.
  • Map Objects - Rendered as they appear in-game. Includes interactive elements such as Bros and airships, managed separately from tiles and nodes.

World Map Tree

A list of all 9 worlds. A filter field is available at the top, though with only 9 entries it is rarely needed. The tree has no context menu.

ℹ️ World 9 is not editable YET and it is encoded directly from the vanilla ROM and stored as-is in the project.

Worlds and levels share the same workspace - all opened tabs appear together in the canvas. Switching to a world tab activates the World Map Editor; switching to a level tab activates the Level Editor.

Canvas Toolbar

Canvas Toolbar provides controls for undo/redo, toggling visual aids, and adding/removing screens as well as zoom controls.

WM Canvas Toolbar

Available controls from left to right:

  • Undo Undo (Ctrl+Z) - Undo last action, up to 500.
  • Redo Redo (Ctrl+Y / Ctrl+Shift+Z) - Redo last action.
  • Animation Animation - Toggles tile animations as they appear in-game.
  • Grid LinesGrid Lines Off Grid Lines - Toggles grid lines on/off. Color and width can be configured in Settings > Canvases.
  • Screen Boundaries Screen Boundaries - Toggles screen boundary lines and screen numbers on/off. Color and width can be configured in Settings > Canvases.
  • Overlays Overlays - Toggles node markers and object rendering on/off. Useful when focusing on tile painting.
  • Remove ScreenAdd Screen Remove/Add Screen - Removes the last screen or adds an empty screen. The number of screens is shown between the two buttons.
  • Zoom - Allows you to control the zoom level, including by entering a value manually.

ℹ️ A world map can have a maximum of 4 screens.

World Map Canvas

The main working area for painting tiles and placing nodes and objects.

World Map Canvas

Painting tiles:

  • Single click places one tile and deselects it.
  • Hold Shift and click to place multiple instances of the selected tile.
  • Paint by clicking and dragging across the canvas.

Moving and deleting:

  • Drag and drop any placed tile, node, or object to reposition it (or use arrow keys).
  • Delete via Del key.

⚠️ When a tile is moved or deleted, the vacated position is automatically filled with 0x42 Plain Ground. This fill tile can be changed in Properties > Fill Tile by enabling the checkbox and selecting any tile ID.

Navigation:

  • Pan using the middle mouse button, scrollbars, or the mouse wheel.
    • Default: scrolls horizontally. Hold Shift + mouse wheel to scroll vertically. Direction can be configured in Settings.
  • Zoom using Ctrl+mouse wheel. Scroll direction can be configured in Settings.

ℹ️ There is no right-click context menu or multi-select on the World Map Canvas. Nodes are added via the Nodes panel and placed at coordinates 0,0 by default. Objects are managed via the Map Objects panel and are not placed freely - see those sections for details.

World Map Palette

World Map Palette

The Palette provides access to all placeable map tiles, organized into 3 tabs:

  • All - All available tiles, organized into 4 sections mirroring the ROM's sub-palette encoding. There are no strict rules for which section belongs to which world - the vanilla game mixes them freely as well.
  • Recent - Your last 20 tile picks.
  • Fav - Saved favorites.

A filter field above the tabs allows searching tiles by name or ID. Not all tiles are named yet.

ℹ️ The Palette contains tiles only. Nodes and objects are added and managed through their respective panels - Nodes and Map Objects.

Right Panel

Right panel consists of:

  • Inspector - Shows information about the selected element on the canvas.
  • Properties - World-wide settings and Boom Boom effects.
  • Map Objects - Object placement and airship route settings.
  • Nodes - List of all placed nodes.

Inspector

Regular (green), special (orange) nodes and map objects (purple) are visible<br>(Properties > Map objects turned off)
Regular (green), special (orange) nodes and map objects (purple) are visible
(Properties > Map objects turned off)

Behavior depends on what is currently selected on the canvas:

  • Tile selected (yellow border) - Shows the tile name only.
  • Node selected (green, orange, or grey border - same color as the node marker) - Shows full node fields, described below.
  • Object selected (purple border - same color as object marker) - The Map Objects panel opens automatically.

ℹ️ All node types share the following base fields: Type, Screen, Y, and X. These are not repeated in each node section below. All additional fields listed per node type appear beneath these.


Skip Node

The default type assigned when a new node is added. Has no level assignment or special behavior. Only the base fields are active - all other fields are disabled.


No Level Node

Identical to Skip in the editor - only base fields are active. The ROM handles Skip and No Level differently internally, but for editing purposes they behave the same way.


Normal Node

Inspector view when a normal node is selected
Inspector view when a normal node is selected

Defines an enterable level or a Hammer Bro encounter, depending on the underlying tile.

  • If placed on an enterable tile - the node loads a level when the player enters it.
  • If placed on a non-enterable tile - the node defines the level used for a Hammer Bro encounter.

ℹ️ Enterable tiles are those from the first quadrant of the Palette (0-quadrant), starting from 0x03 Level Panel 1. These tiles also have a flip effect when the level is completed - the flipped tile can be previewed in the Tile Events window (Tile Events... button below the World Tree) > M/L Overlay Tiles section. This flip is not yet editable in the editor.

Additional fields:

  • Tileset - Always disabled - derived automatically from the assigned level and kept in sync by the editor.
  • Layout - The level assigned to this node. Dropdown lists all levels including unassigned.
  • Object Ptr - Pointer to the object bank used for this level's objects.
  • Sync - When checked, Object Ptr is automatically synced to match the assigned Layout and cannot be edited manually.

Layout assignment:

Clicking the Layout dropdown shows all levels in the project, including unassigned ones. When a level is reassigned to a different node:

  • The newly assigned level (and its alt family) moves to the corresponding world branch in the Level Tree.
  • If the swapped-out level is not assigned to any other node, it is moved to Unassigned Levels along with its alt family.

Multiple nodes can share the same Layout - this is common in the vanilla game for Hammer Bro encounters that reuse the same single-screen level. During ROM building, identical levels are encoded only once (verified by hash), so shared layouts save memory rather than duplicating data.

Layout and Object Ptr:

Levels and their objects are stored in separate memory banks. Object Ptr explicitly points to the memory location of the object data for this level. Like layouts, object pointers are frequently reused across nodes in the vanilla game.

In practice, if a level was designed with specific objects in mind, the user can select the matching level by name from the Object Ptr dropdown - or simply check Sync to have the editor keep them in sync automatically.

💡 Open Level - Opens the level currently assigned in Layout in a new tab.


Toad House Node

Inspector view when a Toad House node is selected,<br>showcasing available reward options
Inspector view when a Toad House node is selected,
showcasing available reward options

Defines a Toad House location. Layout is limited to levels marked as special - a level is considered special when its Level Tileset is set to 7: Toad House in the Header. Special levels do not appear in normal node Layout dropdowns.

Additional fields:

  • Layout - Dropdown listing all special (Toad House) levels in the project.
  • Reward - The item reward given to the player upon completing the Toad House.

Available rewards:

Reward Contents
Frog Suit 100% Frog Suit
Tanooki Suit 100% Tanooki Suit
Hammer Suit 100% Hammer Suit
Random Super Suit Frog Suit 37.5% · Tanooki Suit 31.25% · Hammer Suit 31.25%
Random Basic Item Super Mushroom 37.5% · Fire Flower 31.25% · Super Leaf 31.25%
Random Frog/Fire/Leaf Frog Suit 37.5% · Fire Flower 31.25% · Super Leaf 31.25%
Random Tanooki/Fire/Leaf Tanooki Suit 37.5% · Fire Flower 31.25% · Super Leaf 31.25%

💡 Open Level - Opens the currently assigned Toad House level in a new tab.


Game Node

List of games
List of games

Defines a mini-game location - Spade Panel or N-Spade card game.

Additional fields:

  • Bonus Game - The mini-game type.
  • Host - The host character for the game.
  • Intro Room - How the intro room is rendered (e.g. typical, no table, empty).

⚠️ The vanilla ROM exposes several options for Bonus Game and Host, but most are unfinished and broken in the original game. Only the following are functional:

Field Working options
Bonus Game Spade (roulette) · N-Spade (card game)
Host Toad

ℹ️ A Prize field is exposed because the vanilla ROM carries this data, but it has no effect in-game and will be removed in a future version of Bank12.


Properties

World-wide settings for the currently open world map, organized into sections.


Properties panel
Properties panel

World

  • World - Displays the current world name.
  • World Start Row - The row where Mario starts on the map. X position is always 2.
  • Screens - Number of screens in the world.

Scroll

Controls how the camera behaves as Mario moves across the map.

No Pan- The map never scrolls regardless of screen count. Movement between screens uses world pipes instead. If a path leads to the edge of the current screen, Mario wraps around - but the layout underneath will be from the next screen, which is not visible. This is unintended behavior; use freely but expect edge cases. 1 Screen, 2 Screens, 3 Screens, 4 Screens - Camera pans as Mario moves. Select based on actual screen count.

💡 World 8 in the vanilla game uses No Pan with 4 screens as an example of the pipes-based navigation approach.


Visuals

  • Tile Palette - Background palette set index. Controls the color of map tiles and nodes.
  • Obj Palette - Palette applied to map objects (defined in the Map Objects tab). Not related to level objects.

Editor

  • Map Objects - When unchecked, map object renders are replaced with a purple diamond marker positioned slightly above the center of the tile, so it doesn't overlap node markers. Does not affect gameplay.
  • Fill Tile - When enabled, overrides the default fill tile (0x42 Plain Ground) placed when a tile is moved or deleted. Select any tile ID as the replacement.

White House Reward

All White Toad Houses spawned within the same world share a single reward defined here. The list is different from regular Toad House rewards and includes P-Wing and Anchor.


Init Index

Four spinboxes [0][3] defining node offsets per screen. [0] is always 0. Each subsequent value equals the previous value plus the number of nodes on the preceding screen.

These values are tracked and updated automatically by the editor whenever nodes are added, removed, or moved between screens.

⚠️ A Manual Init Index checkbox allows overriding these values directly. Incorrect values that do not match actual node counts will most likely cause incorrect game behavior.


Boom Boom Effects

Each world map supports up to 4 unique Boom Boom effects. Effects are tracked automatically - the editor scans all levels assigned to the current map, detects Boom Boom objects, and manages the effect list accordingly.

How effects are assigned:

Boom Boom objects (both variants) expose two additional fields in the Level Editor Inspector:

  • Y Pos - Minor positional effect.
  • X Pos - The effect ordinal. Options: No Effect, Effect 1, Effect 2, Effect 3, Effect 4.

When No Effect is selected and the level is assigned to the current map, an info message appears in the Boom Boom Effects section noting how many Boom Boom sources have no effect ordinal set. This is not an error - just a reminder.

When an effect ordinal (1–4) is assigned, the effect appears in the list as:

Effect # (S# X# Y#) - effect number and the world map position where this Boom Boom is located.

Multiple Boom Booms sharing the same effect:

Multiple Boom Boom objects can share the same effect ordinal. This is valid - they will all trigger the same effect. Since each effect can only trigger once, any subsequent Boom Boom triggering the same effect will do nothing.

When multiple Boom Booms share an effect, the location is hidden from the list and replaced with an info message listing all positions and noting that they share the same effect.

Effect dropdown:

Below each effect entry, a dropdown defines which tile on the map is affected. Options include (none) to disable the effect, plus any eligible tiles currently placed on the map.

In the vanilla game, eligible tiles are:

  • 3 lock tiles - replaced with a path tile when triggered.
  • A vertical river tile - replaced with a bridge tile when triggered.

Any of these tiles placed on the map are automatically added to the dropdown. The tile replacement rules (which tile, replaced with what) can be edited in the Tile Events window under the Removable Tiles section.

💡 Open Level button next to each effect - opens the level containing the Boom Boom object assigned to that effect in a new tab.

Map Objects

Manages the 9 map object slots and airship route settings.


Map Objects

Part of Objects panel
Part of Objects panel

A fixed list of 9 slots ([0][8]). All slots are always present - unused slots have Empty selected in the object dropdown.

Each slot contains:

  • [#] - Slot index.
  • Object - Dropdown to select the object type (e.g. Bros, Canoe). Select Empty to leave the slot unused.
  • X, Y - Coordinates on the map.

Some object types expose an additional field when selected:

  • Item - Available for all Bros family objects and W7 Plant. Defines the single reward the player receives from a Treasure Box (0x52) object if one is present in the assigned level.

⚠️ Slot [1] is locked - the object type cannot be changed and is always set to Airship. This defines the initial position from which the airship begins its route. Coordinates can still be modified.


Airship Routes

The airship follows a route made up of 6 stops. Three route sets are available - Set A, Set B, and Set C - each with its own independent list of stops. The game randomly selects one route set each time the world is loaded.

Each stop is defined by X and Y coordinates. Coordinates are absolute - not divided by screen.

💡 All 6 stops should be filled with reachable map coordinates. Stops left at the default 0, 0 will send the airship to the top-left corner of the map.

Nodes panel

Nodes panel
Nodes panel

A list of all nodes placed on the current world map, organized by screen.

A filter field at the top allows searching by node type or assigned level name.

Tree structure: each screen appears as a root node, with its nodes listed beneath. Each entry is color-coded to match its marker on the map:

  • 🟢 Normal nodes
  • 🟠 Toad House and Game nodes
  • ⬜ Skip and No Level nodes

Each entry displays: [Node Type] Name · X · Y · Tileset

Clicking an entry selects the corresponding node on the canvas and opens its fields in the Inspector.

💡 New nodes can be added via the + Add Node button. The node is placed at coordinates 0, 0 by default and can be dragged to its target position on the canvas.


Changelog
2026-04-05 Initial commit
⚠️ **GitHub.com Fallback** ⚠️