BMP2Tile remade for macOS
A native Apple Silicon reimplementation of maxim-zhao/bmp2tile, the tool for converting images to Sega Master System tiles, tilemaps and palettes. C++20, SDL3, Dear ImGui — ought to build on other platforms but untested. A full reimplementation, not a line-by-line port of the original C#.
Unsigned build — Gatekeeper will warn on first launch; right-click the app and choose Open once to bypass it. Or build it yourself from the source included.
What it does
Loads an indexed BMP (preserving the on-disk palette order), or a PNG / GIF /24-32bpp BMP quantized down to one. Chops it into 8×8 tiles with duplicate and mirror detection, then saves tiles, tilemap and palette in whatever format devkitSMS / SMSlib expects. Four GUI tabs — Source, Tiles, Tilemap, Palette — or drive it headlessly from the CLI binary, which has no SDL / Dear ImGui dependency at all.
Compression formats
Every format devkitSMS can load, ported to match the reference tool byte-for-byte: ZX7, PSGaiden, STC0, STC4 and STM all match bmp2tile 0.67's output exactly. APLib is a hybrid — the bitstream format is faithfully ported, but the match finder is a from-scratch hash-chain/greedy parser rather than the original's optimal suffix-array search, so it produces a larger but fully correct bitstream.
Building it
Two binaries, one Makefile:
xcode-select --install # if you haven't already
make cli # no network access needed
./build/bmp2tile_cli --help
brew install sdl3 pkg-config
make gui # fetches Dear ImGui on first run
./build/bmp2tile
make # both
make bundle # wraps bmp2tile in a double-clickable .app
bmp2tile_cli is CLI-only with zero SDL/ImGui dependency.
bmp2tile runs the GUI with no arguments, or drops into the same CLI mode
when given some.
- C++20
- SDL3
- Dear ImGui
- Apple Silicon
- SMS / Game Gear