Meatloaf Map Maker

Users Guide
๐Ÿ“ทScreenshot: Full editor overview โ€” screen grid, char palette, toolbars

Getting Started

Open the editor at https://map.meatloaf.cc. Screen (0, 0, 0, 0) loads by default. The layout is:

Screen Toolbar layout

The Screen Toolbar has three rows:

All buttons show a tooltip on hover describing the action.

Screen Navigation

Screens live in a four-dimensional space identified by W, X, Y, Z integer coordinates.

Loading by coordinates

  1. Type the coordinates into the W / X / Y / Z inputs at the top.
  2. Click Load.

Loading by shortcode

Every saved screen has a unique code. Type it into the Code lookup field and press Enter or click Go.

URL parameters

Link directly to any screen with query params:

/?w=1&x=2&y=3&z=0
/?code=abc123
๐Ÿ“ทScreenshot: Screen Controls โ€” W/X/Y/Z inputs, Load button, code lookup

The Tile Grid

The main canvas is a grid of 40 ร— 25 tiles (configurable). Each tile holds one PETSCII character index and one C64 color index.

Use Arrow keys to move the green cursor. The Info Panel status bar shows the current position, SSE connection state, and PRG download links.

๐Ÿ“ทScreenshot: Tile grid with player cursor visible

Char Palette

The palette shows all 256 characters from the current charset as a 16ร—16 grid. Characters 0โ€“127 appear in the top half; 128โ€“255 in the bottom half.

๐Ÿ“ทScreenshot: Char palette โ€” upper and lower halves

Selecting a character

Click any character to open it in the pixel editor and make it the active painting character.

Stamping a character

Double-click any character to instantly stamp it onto the current tile, or to fill the active selection with it.

Keyboard navigation

Click the palette to give it focus, then use Arrow keys to step through characters.

Uppercase / Lowercase mode

The Uppercase / Lowercase toggle switches between the two C64 ROM character sets. Lowercase mode makes aโ€“z available as individual chars.

Char Editor

The pixel editor shows the selected character as an 8ร—8 grid at 25 pixels per pixel.

๐Ÿ“ทScreenshot: Char editor โ€” 8ร—8 pixel grid with bitmap operations toolbar

Drawing pixels

Bitmap operations

ButtonOperation
Arrow icons (โ†โ†’โ†‘โ†“)Shift pixels left / right / up / down (wrapping)
Flip horizontal iconMirror pixels left/right
Flip vertical iconMirror pixels top/bottom
Rotate right iconRotate 90ยฐ clockwise
Rotate left iconRotate 90ยฐ counter-clockwise

Changes to the editor update the tile grid immediately.

Color Palette & Screen Colors

๐Ÿ“ทScreenshot: Color swatches (16 C64 colors) and palette variant dropdown

Setting the active color

Click a color swatch to make it the active painting color.

Filling a selection with a color

Double-click a color swatch to repaint all tiles in the active selection with that color (char unchanged).

Palette variants

The Palette dropdown in the Screen Toolbar Row 2 selects among 17 named C64 color definitions (Pepto, VICE, Colodore, etc.).

Background and border color

The BG and Border color pickers in the Screen Toolbar Row 2 set the screen background and C64 border color. Both are saved to the screen record.

Painting Tiles

Basic painting

  1. Move the cursor with Arrow keys or click a tile.
  2. Type a character on the keyboard to place the PETSCII char at that code point.
  3. Or click a tile to place the current char + color.

Modifier keys when clicking

ModifierEffect
NonePlace current char + color
AltChar only (keep existing color)
ShiftColor only (keep existing char)

Delete erases the tile at the cursor (places char 32, space). Backspace erases and steps the cursor left.

Click and hold, then drag to paint continuously.

Selections

Selections scope operations to a subset of tiles. Up to 8 selections can be active simultaneously.

๐Ÿ“ทScreenshot: Selection overlay on tile grid โ€” rectangle and polygon examples

Selection shapes

Choose a shape from the Select group in Screen Toolbar Row 1:

IconShapeHow to draw
Square iconRectangleClick and drag
Circle iconOvalClick and drag from center outward
Lasso iconPolygonClick vertices one at a time; click near the first vertex to close; Esc to cancel

Adding to a selection

Shift+drag adds a new region to the existing selection without clearing it.

Select matching tiles

Ctrl+A selects all tiles on the screen that match the cursor tile (same char AND color).

Moving and adjusting

Key / ActionEffect
Shift+ArrowNudge the selection outline one tile
Alt+ArrowShift tile content inside the selection (outline stays fixed)
Drag selection edgeReposition the selection with the mouse
DeleteErase all tiles in the selection
EscClear all selections

Copy, Cut & Paste

KeyAction
Ctrl+CCopy the current selection to the clipboard
Ctrl+XCut the selection (copies then erases source tiles)
Ctrl+VPaste as a floating selection at the cursor position
Shift+ArrowNudge the floating paste position
Drag floating pasteReposition with the mouse
SpaceToggle transparent paste mode (see below)
EnterCommit paste to the screen
EscCancel paste and restore original tiles

Transparent paste mode

While a paste is floating (after Ctrl+V), press Space to toggle transparent mode. In transparent mode any tile in the clipboard whose character bitmap has no set pixels (all-zero โ€” e.g. space, blank chars) is skipped during paste and does not overwrite the destination. Press Space again to turn it off. The preview updates immediately so you can see the effect before committing.

Note: Transparency is evaluated against the active charset. Custom-drawn blank characters are also treated as transparent.

Example: duplicate a region

  1. Draw a rectangle selection around the region.
  2. Ctrl+C to copy.
  3. Ctrl+V to paste.
  4. Shift+Arrow to move to the desired location.
  5. Enter to commit.

Undo & Redo

The editor keeps 50 levels of undo history covering all tile-modifying operations.

ActionKeyToolbar
UndoCtrl+ZUndo icon (Row 1)
RedoCtrl+Y or Ctrl+Shift+ZRedo icon (Row 1)

Flood Fill

Flood fill replaces connected tiles that share the same char or color. Three modes are in the Fill group of Screen Toolbar Row 1:

IconModeChar changedColor changed
Paint bucket iconFill (char + color)YesYes
Brush iconFill char onlyYesNo
Droplet iconFill color onlyNoYes

If a selection is active, fill is limited to selected tiles. Otherwise it floods from the cursor position outward through connected matching tiles.

Example: recolor all walls

  1. Select the replacement color in the color palette.
  2. Click any wall tile on the screen to move the cursor there.
  3. Click the Droplet (Fill color only) button โ€” every contiguous tile with the same color is repainted.

Screen Operations

๐Ÿ“ทScreenshot: Screen Toolbar Row 1 โ€” undo, select, shift, flip, fill, clear

Shift screen

The four arrow icon buttons in the Shift group scroll all tile content one step in that direction. Content wraps around the edges. If a selection is active, only selected tiles shift.

Flip screen

IconEffect
Flip horizontal icon ยท Alt+HMirror left/right (applies to selection or full screen)
Flip vertical icon ยท Alt+VMirror top/bottom (applies to selection or full screen)

Clear

The Trash icon erases all tiles on the screen (or just the selection if one is active), replacing them with space (char 32, color 0).

Gradient Tool

The Gradient Tool paints a smooth multi-stop color gradient across tiles. Click the Blend icon in Screen Toolbar Row 2 to open the modal.

๐Ÿ“ทScreenshot: Gradient modal โ€” color picker, stop sequence, preview strip

Configuring the gradient

  1. Click a color in the 16-swatch picker.
  2. Click + Add Stop to append it to the sequence.
  3. Repeat for as many colors as needed. Use โ—€ โ–ถ to reorder, โœ• to remove.
  4. The preview strip shows the interpolated gradient live.

Applying

  1. Click Draw Gradient โ†’ (requires at least 2 stops).
  2. Click and drag across the tile grid to define the gradient direction.
  3. Tile colors update along the drag direction. Press Esc to cancel.

Example: sunset sky

  1. Add stops: Yellow โ†’ Orange โ†’ Red โ†’ Purple.
  2. Click Draw Gradient โ†’.
  3. Drag from the top row to the bottom row of the screen.

Find & Replace

Press Ctrl+F to open the Find & Replace modal. Search and replace tiles by char, color, or both.

๐Ÿ“ทScreenshot: Find & Replace modal โ€” field rows with char previews and checkboxes

How it works

Each of the four field rows has a checkbox to enable/disable that criterion:

FieldCheckbox offCheckbox on
Find: CharIgnore charMatch only tiles with this char
Find: ColorIgnore colorMatch only tiles with this color
Replace: CharKeep existing charReplace char with selected value
Replace: ColorKeep existing colorReplace color with selected value

Picking values from the main palette

  1. Click a field row โ€” it highlights in yellow to show it is active.
  2. Click any char in the main char palette to assign it to that row.
  3. Click a color swatch to assign it to a color row.

Scope

If a selection is active, the operation is limited to selected tiles. Otherwise it applies to the entire screen.

Count vs Replace All

QR Code Generator

Click the QR code icon in Screen Toolbar Row 2 to open the modal.

๐Ÿ“ทScreenshot: QR modal โ€” dark/light char field rows, compact checkbox, text area

Standard mode

  1. (Optional) Click the Dark field row, then click a char in the palette to set the dark-module character. Default is the currently selected char.
  2. (Optional) Click Light and pick the light-module character. Default is the sparsest char in the current charset.
  3. Type your text or URL in the textarea.
  4. Click Generate & Paste (or press Ctrl+Enter).
  5. The QR code appears as a floating paste. Nudge with Shift+Arrow, then Enter to commit.

Compact mode

Enable the Compact (1 char per 2ร—2 module) checkbox. Each tile represents a 2ร—2 block of QR modules, making the output half the size in each dimension. Char selection is fully automatic based on bitmap density โ€” dark/light fields are hidden in compact mode.

Note: Compact mode works best with a custom charset that has varied pixel densities across chars.

Animations

Any character can be assigned an animation sequence. Click the Anim button next to the char editor to open the Animation modal for the current char.

๐Ÿ“ทScreenshot: Animation modal โ€” frame list, preview canvas, interval and sequence controls

Animation settings

ControlDescription
Interval (ms)Time between frames (16โ€“5000 ms)
CycleFrames play 1โ†’2โ†’3โ†’โ€ฆโ†’1โ†’2โ€ฆ
BounceFrames play 1โ†’2โ†’3โ†’2โ†’1โ†’2โ€ฆ
LoopWhether the animation repeats indefinitely

Frame rows

Each frame specifies a char replacement, a pixel-operation (shift/flip/rotate), or no change โ€” plus an optional color override. To assign a char from the palette: click the frame row to activate it, then click any char in the main palette.

Playback

Click the Play icon in Screen Toolbar Row 2 to start animation playback for all animated chars simultaneously. The icon switches to a filled Stop square while running โ€” click it again to stop and restore the static tile display.

Example: blinking character

  1. Open char 160 (solid block) in the editor and click Anim.
  2. Set Interval = 500 ms, Sequence = Bounce, Loop = on.
  3. Add two frames: char 160 and char 32 (space).
  4. Click Save, then click the Play icon in the Screen Toolbar.

SID Audio

Attach C64 SID music to a screen. The SID plays automatically when a visitor loads the screen.

๐Ÿ“ทScreenshot: Audio toolbar โ€” SID picker, play/pause/stop, subtune controls, volume

Choosing a SID file

  1. Click the SID button to open the file browser.
  2. Navigate folders and click a file name to load and play it.
  3. The selection is saved to the current screen automatically.

Click โŠ˜ No music to explicitly disable audio for this screen.

Playback controls

ButtonAction
โ—€ / โ–ถPrevious / next subtune
โ–ถ / โธPlay / Pause
โ– Stop
Vol sliderAdjust volume
Note: Browsers block autoplay until user interaction. A yellow "Click to enable audio" button appears if the SID is queued but paused by the browser โ€” click it once to start.

Tile Text & Navigation Links

๐Ÿ“ทScreenshot: Tile Data panel โ€” text area and link coordinate fields

Tile text

The Tile Data Panel below the grid shows a textarea for the current tile. Type any notes or metadata โ€” saved on blur or Enter.

Navigation links

Link any tile to a specific position on another screen:

  1. Position the cursor on the source tile.
  2. Fill in W, X, Y, Z (target screen) and X, Y offset (position within that screen).
  3. Click Set to save.

Use Copy to snapshot the current cursor position, navigate to the linking tile, then Paste to fill the link fields. Click Clear to remove a link.

Custom Charsets & Font Mode

Loading a .64c charset

A .64c file contains 2 KB of C64 bitmap data (256 chars ร— 8 bytes). Load one from the charset picker in the toolbar to replace the ROM charset in both the palette and the tile grid.

๐Ÿ“ทScreenshot: Charset browser dropdown โ€” folder navigation, .64c files

Font mode

Click the Type (Aa) icon in Screen Toolbar Row 2 to open the Font modal. Font mode lets you render any system font into the char editor as you type:

  1. Choose a font family from the dropdown (system fonts are listed automatically).
  2. Set the point size.
  3. Choose Compact mode or leave it off:
ModeBehaviour
Off (default)Each lit pixel in the font glyph paints one tile with the current char. The cursor expands to match the glyph dimensions.
CompactEach tile is scored against all 256 charset chars by pixel density in four quadrants; the best-matching char is stamped. Produces readable text at near-native size.
  1. Click Apply to activate the font.
  2. Move the cursor to the desired position and type โ€” glyphs are rendered at each keystroke and the cursor advances by glyph width.
  3. Press Esc to exit font mode and return the cursor to normal size.
๐Ÿ“ทScreenshot: Font mode โ€” cursor expanded, system glyph rendered in char editor

Real-time Collaboration

Multiple users can edit the same screen simultaneously.

๐Ÿ“ทScreenshot: Tile grid with multiple player cursors in different colors

Messaging

Click ๐Ÿ’ฌ in the Info Panel to open the messaging modal.

๐Ÿ“ทScreenshot: Messages modal โ€” scope tabs, message list, compose area
ScopeWho sees it
GlobalAll connected users
ScreenUsers on the current screen
GroupMembers of a named group
DMA specific player

The Events Log below the editor shows a scrolling feed of server events. Toast notifications appear briefly in the corner for new messages and connection changes.

Saving to Server

Auto-save of tile changes

Every tile paint, fill, paste, and cut is sent to the server immediately. You do not need to manually save individual tile edits.

Saving screen metadata

Click the green Save button in the Info Panel to persist: title, description, code, dimensions, BG/border colors, char mode, animations, charmap, and audio assignment.

PRG download links

After loading a screen, download links appear in the status bar:

LinkContents
DL charsTile char indices as a C64 PRG binary (load $0400)
DL colorsTile color indices as a C64 PRG binary (load $D800)
DL charsetCustom charset bitmap data as a PRG binary
DL SIDThe assigned SID audio file
Note: PRG files can be loaded directly into a C64 emulator (VICE, etc.) or transferred to real hardware.

MMM Save Files

A .mmm file is a portable JSON snapshot of an entire screen. It captures everything needed to restore the screen on any server or at any coordinates.

What is saved

Saving a .mmm file

Click the Save icon (floppy disk) in Screen Toolbar Row 3. The file downloads immediately with no dialog. The filename is:

Loading a .mmm file

Click the Load icon (folder) in Screen Toolbar Row 3 and pick a .mmm file. The data is applied to the current screen coordinates (the original coordinates in the file are ignored). The screen is then saved to the server automatically.

Note: Loading a .mmm file pushes an undo state, so you can revert with Ctrl+Z if needed.

Export & Import

The Export and Import modals in Screen Toolbar Row 3 let you exchange screen data with other tools using industry-standard C64 formats.

Export

Click the Download icon (Export) to open the Export modal. Choose a format and click Download.

FormatExtensionNotes
PNG image.pngFull-color render. Options: 1ร— / 2ร— / 4ร— scale; include C64 border
Assembler source.asmByte directives for KickAssembler, ACME, 64tass, or ca65. Options: hex values; standalone (includes ML loader)
BASIC listing.basDATA statements with POKE loops for screen and color RAM
Executable PRG.prgSelf-contained binary. BASIC SYS stub + ML loader + screen + color RAM. Uses ROM charset.
Marq C format.cC byte array compatible with the Marq PETSCII editor
JSON.jsonPetmate-compatible framebuf JSON
PETSCII sequence.seqRaw PETSCII with color control codes. Options: insert CLS ($93) at start; insert CR ($0D) at end of each row
PET binary.pet5-byte header + raw screen codes + color RAM

The exported filename follows the same pattern as MMM saves: code.ext or w.x.y.z.ext.

Import

Click the Upload icon (Import) to open the Import modal. Click the file area to pick a file โ€” the format is detected automatically from the extension. The parsed result (tile count, background color, border color) is shown before you commit. Click Import to apply it to the current screen.

FormatExtensionWhat is imported
Assembler source.asmScreenData + ColorData byte blocks; BackgroundColor / BorderColor constants
BASIC listing.basDATA statement values; POKE 53280/53281 for border/background
Executable PRG.prgScreen and color RAM extracted from the ML binary payload
Marq C format.cByte array values; first two bytes treated as border/bg color
JSON.jsonPetmate framebuf โ€” tiles, colors, background
PETSCII sequence.seqScreen codes reconstructed from PETSCII control-code stream
PET binary.petHeader + raw screen + color data
Note: Import pushes an undo state. Press Ctrl+Z to revert if the result is not what you expected.

Keyboard Shortcut Reference

Navigation

KeyAction
Arrow keysMove cursor one tile
Shift+ArrowNudge selection outline or floating paste position
Alt+ArrowShift tile content inside selection (outline stays); or shift entire screen when no selection
Alt+HFlip horizontal โ€” mirrors selection or full screen left/right
Alt+VFlip vertical โ€” mirrors selection or full screen top/bottom

Editing

KeyAction
Type a characterPlace PETSCII char at cursor (or render font glyph in font mode)
DeleteErase tile at cursor (char 32 / color 0); or erase all tiles in active selection
BackspaceErase tile and move cursor left
Left-click / dragPaint tile(s) with current char + color
Alt+clickPaint char only (keep existing color)
Shift+clickPaint color only (keep existing char)
Right-click / dragClear pixel in char editor; pick tile char (on grid)

Selection

KeyAction
Ctrl+ASelect all tiles matching the cursor tile (char + color)
Shift+dragAdd a new region to the current selection
Delete (with selection)Erase all tiles in the selection
EscClear all selections

Clipboard & paste

KeyAction
Ctrl+CCopy selection to clipboard
Ctrl+XCut selection (copy + erase source)
Ctrl+VPaste as floating selection at cursor
Space (during paste)Toggle transparent paste โ€” blank tiles in clipboard do not overwrite destination
Shift+Arrow (during paste)Nudge floating paste position
Enter (during paste)Commit floating paste to screen
Esc (during paste)Cancel paste and restore original tiles

History

KeyAction
Ctrl+ZUndo
Ctrl+Y or Ctrl+Shift+ZRedo

Modals & modes

KeyAction
Ctrl+FOpen Find & Replace modal
Ctrl+EnterGenerate / execute (in modals with a textarea, e.g. QR code)
EscCancel: gradient drag ยท polygon in progress ยท floating paste ยท font mode ยท clear selection ยท close open modal

Char palette (when palette has focus)

Key / ActionEffect
Arrow keysNavigate to adjacent char
ClickSelect char for editing and painting
Double-clickStamp char onto cursor tile (or fill selection)

Screen Toolbar โ€” Row 1 (editing)

IconAction
Undo / RedoStep through 50-level undo history
Square / Circle / LassoSet selection shape to rectangle / oval / polygon
Arrow Left/Up/Down/RightShift screen content (or selection) one tile in that direction
Flip Horizontal / Vertical (Alt+H / Alt+V)Mirror screen or selection
Paint BucketFlood fill char + color
BrushFlood fill char only
DropletFlood fill color only
TrashClear screen (or selection)

Screen Toolbar โ€” Row 2 (display & tools)

IconAction
Palette dropdownSwitch between 17 named C64 color palette variants
BG / Border pickersSet screen background and border colors
Blend (two circles)Open Gradient Tool modal
Type (Aa)Open Font modal
QR codeOpen QR Code Generator modal
Play / Stop squareStart / stop character animation playback

Screen Toolbar โ€” Row 3 (file operations)

IconAction
Save (floppy disk)Download screen as a .mmm file
Load (folder)Load a .mmm file into the current screen
Upload arrowOpen Import modal (ASM/BAS/PRG/C/JSON/SEQ/PET)
Download arrowOpen Export modal (PNG/ASM/BAS/PRG/C/JSON/SEQ/PET)
Meatloaf Map Maker โ€” Back to Editor