How factor-64/mm2-snes-editor works
MM2 SNES Editor is a work-in-progress desktop editor for an unreleased Mega Man 2 SNES port. Users load a ROM, optionally load JSON or palette data, edit level graphics, palettes, layouts, scrolling, objects and checkpoints, then export edited ROMs or individual data sets. The graph groups the UI/orchestration, SNES asset decoding and rendering, level-domain data, and ROM metadata/edit support. App internals are only partially sampled, so unsampled feature wiring is shown at the app boundary rather than inferred in detail.
Main entry points: app.cpp Editor app · mainmenu.cpp Main menu · undoredo.cpp Undo redo · imageloader.cpp Image loading
Components 19
Editor UI
- Editor app
src/app.cpp - Main menu
src/ui/mainmenu.cpp - Undo redo
src/undoredo.cpp
Graphics pipeline
- Image loading
src/imageloader.cpp - Tile decoding
src/snes/tiledecoder.cpp - Tilemap rendering
src/snes/tilemap.cpp - Palette decoding
src/snes/cgramdecoder.cpp
Level editing
- Level layout
src/game/level.cpp - Objects
src/game/objects.cpp - Checkpoints
src/game/checkpoint.cpp - Collision data
src/game/collision.h
ROM data
- Game data definitions
src/mm2data.cpp - SNES addresses
src/snes/address.cpp - ROM header
src/snes/snesheaderreader.cpp
Other components
- Editor user
- ROM file
- Editor JSON
json/MM2 SNES.json - Palette file
- Exported ROM
Connections 18
- Editor user → Editor app: edits and exports
- Editor app → Main menu: draws menu
- Editor app → ROM file: loads ROM
- Editor app → Editor JSON: loads config
- Editor app → Palette file: loads palette
- Editor app → ROM header: reads header
- Editor app → Game data definitions: uses definitions
- Editor app → SNES addresses: resolves addresses
- Editor app → Tile decoding: decodes graphics
- Editor app → Palette decoding: decodes palettes
- Editor app → Tilemap rendering: renders views
- Editor app → Image loading: loads images
- Editor app → Level layout: edits layouts
- Editor app → Objects: edits objects
- Editor app → Checkpoints: edits checkpoints
- Editor app → Collision data: edits collision
- Editor app → Undo redo: tracks changes
- Editor app → Exported ROM: exports ROM