We've updated the engine to pre-release version 0.1.4.
There have been many changes since our last upload in Dec. 2025, so we have a detailed changelog below, split per category.
The compiler received a full rewrite from string-based emission to a structured IR (Intermediate Representation) with a full optimization pipeline:
Structured IR — two-phase compilation: collect IR, render once
Script Inlining — sync callees inlined with constant folding and early-return-to-goto conversion
CSE (Common Subexpression Elimination) — cross-statement with deep sub-expression replacement
LICM (Loop-Invariant Code Motion) — expression-level alias analysis
Dead Store Elimination — removes unused variable writes
Parameterized Script Dedup — merges nearly-identical scripts differing only in actor IDs
Direct C Argument Passing — eliminates global array marshalling for custom events
Per-Actor/Trigger Local Var Pools — each type gets only the locals it needs
Jump Tables — dense switch statements compile to indexed jumps
M68K ASM Expression Lowering — binops, unary ops, DBF loops, TST.W for zero comparisons
IR Optimization Passes — constant folding, identity elimination, associative merging
UI toggles for optimization passes in Build Options (marked experimental)
The resource compiler (rescomp) has been completely rewritten in TypeScript instead of using the old Java version — it's 2x faster now.
We also added per-resource size reporting integrated into the editor.
Massive expansion of export targets, build and ship from the editor to:
macOS — .app bundles with code signing, universal binary (arm64 + x86_64)
iOS — .app export with Metal backend, touch input, landscape support
Android — APK/AAB export with AAudio, touch overlay, GLES3 shaders
Linux PortMaster — handheld-ready packaging (ARMv7, AArch64, MIPS)
Linux Desktop — DEB, RPM, and AppImage
Windows — with or without Steam support
Web — HTML + WASM
Touch Input — texture-based overlay with positional D-pad, layout editor with presets for iOS, Android and Web
We improved the debugger substantially, some of the most important changes are:
CPU Profiler — cycle-accurate per-section timing with stacked bar visualization
Per-script profiling with sparklines, self-time, freeze, and threshold highlighting
Flame timeline, sort/filter, hide-idle, budget lines, EMA smoothing
Detachable profiler window with copy-to-clipboard export
Auto-pause when CPU load exceeds configurable threshold
Memory Map — heap walk visualization with DMA, VRAM regions, BSS/Stack split
VDP register display aligned with Sega Retro spec
Breakpoint sync, step controls, variable/actor inspection
DMA tracking with configurable buffer size
MiniDebugger standalone app with sprite table, plane tooltips, memory viewer
We added new features to the UI, some are related to updating the engine to match GB Studio 4.2.0 and others are custom-made for MD Engine.
The new changes are:
Scene Notes — collapsible, markdown-rendered, with linked entities
Scene Minimap — overview with connections and click-to-navigate
Script Search (Ctrl+Shift+F) — find by command, variable, actor, custom event, constant, or text
Multi-Select — Ctrl+click, Shift+drag, Ctrl+A for actors and triggers
Stamps — reusable actor/trigger group templates for quick placement
Undo/Redo History Panel — draggable floating popup with preview
Keyboard Shortcut Customization — full rebinding in Preferences
Detachable Script Editor — floating panel for more screen space
Asset Usage Report — "View Uses" toggle across all asset editors
Import Scene / Import Project — merge content from other projects
Tile Grid Overlay — 8x8 / 16x16 with color presets and snap-to-grid
Drag-and-drop in navigators (palettes, constants, entities)
Right-click context menus in World view (add scenes, notes, delete)
F2 rename shortcut in all navigator panels
Collapsible root folders in prefabs navigator (Actors/Triggers/Stamps)
Auto-labeling for scenes and entities
Switch event max cases increased from 16 to 64
Inline C Code event with C syntax highlighting
Custom event parameter count warning (>6 params)
We added new features to the engine and runtime.
Pathfinding — BFS and A* with 8-directional movement, 68K ASM hot paths, configurable grid.
Collision Grid — Improves collision performance on certain types of games, like shoot em ups or games with very big maps.
Wait counter fix during game pause.
Non-fatal warnings for unmapped/invalid memory access. They help identify major bugs.
Custom profiler section events (Profile Start/End).
We did a major rewrite of the internal runtime engine, and a polish pass on the editor UI, some of the more notable improvements are:
Engine (68K ASM) — collision gridding, physics, text rendering, actor sync (branchless isPinned + dbra), tween update (pointer table)
Editor — throttled profiler renders (~4Hz), pre-allocated typed arrays, ring buffers, memoized selectors
Compiler — parallel I/O, cached lookups, up to 6x faster build time
Android — AAudio with lock-free SPSC ring buffer, sustained perf mode (19fps → 60fps fix)
Full-featured indexed-color pixel art editor embedded in the editor:
Sprite, background, tileset, and font editing modes
Palette-aware painting with dithering (Bayer + Floyd-Steinberg)
Layers, animations (multiple per document), onion skinning
Sprite sheet import/export with frame splitting and animation detection
Wrong Tile Overlay to highlight palette line mismatches
Color picker, quantize dialog, live palette preview
Symmetry/mirror drawing, magic wand, marching ants selection
Light/dark theme, VRAM usage bar, per-frame duration control
Tracker-style music composition tool:
Native .mdemt format with FM/PSG/DAC channels
DefleMask (.dmf) and Furnace (.fur) import with DAC sample support
DMP instrument import
VGM export, MIDI export
WASM-based chip emulation for live preview
Full integration: edit songs directly from the editor's song list
MML (Music Macro Language) composition tool:
ctrmml-compatible MML tokenizer, parser, and compiler
Code editor with MML syntax highlighting
Live VGM preview with seek via register snapshots
DAC sample import and FM6 DAC mode
Vibrato, tremolo, arpeggio, pitch/volume envelopes, shuffle/swing
MDSDRV driver integration with PCM alignment and drum mode
New serial flash tool for writing ROMs to real cartridges:
Flash chip identification from MID/DID database
ROM header parsing with auto size detection
SRAM backup/restore and save slot management
One-click "Flash Last Export" from the editor
AMD Unlock Bypass for ~5.5x faster flash writes
EFIGS Localization — multi-language text support in games as new text rendering mode option
Slope Support — terrain slopes with 16x16 export
GB Studio 4.20 — updated code to GB Studio 4.2.0 format