# Tilemap Studio edits Game Boy and SNES tiles for the pret disassemblies

> Tilemap Studio is a C++ and FLTK tilemap editor aimed at the pret disassemblies such as pokecrystal and pokeemerald and the hacks built on them, supporting multi-platform tilesets alongside Pokemon-specific formats, with a mouse control scheme that separates selecting tiles from placing them. The last release was 4.0.1 in November 2021, and the licence is a custom one.

**Rangi42/tilemap-studio** — A tilemap editor for Game Boy, Color, Advance, DS, and SNES projects. Written in C++ with FLTK.

- Repository: https://github.com/Rangi42/tilemap-studio
- Website: https://hax.iimarckus.org/topic/7691/
- Stars: 539 · Forks: 46
- Language: C++
- License: NOASSERTION
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/rangi42-tilemap-studio

## What it is for

Tilemap Studio is described as a tilemap editor for Game Boy, GBC, GBA, NDS, SNES, Genesis, or TG16 projects, and the second sentence of the README explains who that is for.

Specifically meant to support the pret disassemblies like pokered, pokecrystal and pokeemerald, as well as hacks including Polished Crystal, Red++, Orange, Prism, and many more.

That is a much narrower and more useful claim than being a tilemap editor. The pret disassemblies are decompilation projects where the aim is to reconstruct the original source code of a Game Boy game, and they all share a family of data formats for their tile graphics and their maps. A general graphics editor knows about PNG files, not about the specific arrangement of tiles and blocks a pokecrystal map uses. Tilemap Studio knows both, and also supports multi-platform tilemaps as well as Pokemon-specific formats.

The README is candid about what it borrowed from. It is inspired by tools like Tilemap Creator, NTME, GSC Town Map Editor and Karteneditor, but implemented with C++ and FLTK.

FLTK is the reason the tool behaves the way it does. FLTK is a lightweight native widget toolkit, and the result is a small, fast desktop application that starts instantly and does not need a runtime, which is the same property that makes the tool usable on the low-end hardware that retro development often involves.

The primary language is C++, the licence is recorded as a custom one that GitHub cannot classify with LICENSE.md as the authoritative text, and the homepage is a topic on the Skeetendo forums, which tells you where the community for this tool actually lives.

## The mouse scheme, which is the clever part

The README spends a short table on the mouse controls and calls them out with a don't miss the mouse controls instruction, which is a sign that they are the part of the tool a new user has to learn.

The table separates the tileset pane from the tilemap pane.

Click and drag selects tile or tiles in the tileset and places tiles in the tilemap.

Middle drag scrolls in both panes.

Right-click highlights a tile in the tileset and selects a tile in the tilemap.

Right drag selects tiles in the tilemap.

Ctrl+click replaces a tile in the tilemap.

Shift+click does a flood fill in the tilemap.

Alt+click swaps tiles in the tilemap.

The reason this is worth a table is that the same physical gesture means different things depending on which pane you are in. Clicking in the tileset picks a tile, and clicking in the tilemap places whatever is currently picked. That is the natural model for the way these maps are actually drawn, and it is why a generic paint program does not work here: the two panes are two views of one editing state, and the tool has to keep them in sync.

The modifier gestures follow from that model. Right-click selects a single tile in the map, right drag selects a region of tiles, Ctrl+click replaces a tile outright rather than painting, Shift+click fills a contiguous region, and Alt+click swaps two tiles.

The flood fill and the swap in particular are not features you would find in a generic editor in this form. Swap is a real technique in tileset work, where you need to exchange one tile with another across a map, and it is a single keystroke here.

## Formats, examples and the build

The example/ directory contains different formats of tilemaps and tileset graphics, and the README points at one file in particular: pokecrystal/town_map_pokegear.png, a colored-in combination of tileset graphics from pokecrystal, useful for viewing any Town Map in a project based on it.

That file is a good illustration of what the tool does. A town map in these projects is assembled from a set of blocks rather than from individual tiles, and the block layout depends on the tileset that goes with it. Seeing the rendered combination, rather than the individual pieces, is what makes the format legible to someone working on it for the first time.

The example directories cover ascii.png and per-project folders for pokecrystal, pokeemerald, pokered, polishedcrystal and prism, so the formats on display are the real ones used by real projects.

The build is a plain Makefile, and it is worth reading because it shows the project's assumptions about its environment.

```
CXXFLAGS := -std=c++17 -I$(srcdir) -I$(resdir) $(shell $(fltk-config) --use-images --cxxflags) $(CXXFLAGS)
```

The C++ standard is C++17, and the FLTK flags are obtained by calling fltk-config directly rather than through pkg-config, with the use-images option for the XPM image support. The linker flags pull in the FLTK static libraries and the xpm libraries via pkg-config.

Two build profiles exist. The release profile uses -DNDEBUG -O3 -flto, with link-time optimisation, and the debug profile uses -DDEBUG -D_DEBUG -O0 -g -ggdb3 -Wall -Wextra -pedantic.

There are two targets. tilemapstudio is the release binary and tilemapstudiod is the debug one, and both are written to a bin directory. The Makefile also has install and uninstall targets that place the binary under a prefix, which defaults to /usr/local, and that install a desktop entry file for the application, with the DESTDIR variable there for packaging.

The project also ships install.bat at the root, and the README points you at INSTALL.md for both the release copy and the longer instructions to build it from source. The repository root holds a TODO.md alongside the README, which is where the author tracks what is not finished.

## Where Tilemap Studio fits, and where it stops

The comparison worth making is with a general graphics editor and with the older tools it was inspired by.

Against a general graphics editor, the difference is that Tilemap Studio works in the units the data is stored in. A PNG editor works in pixels, and a map that is 20 blocks by 18 blocks has to be worked out from tile indices by hand or with an image editor that has no idea what a block is. The tool's panes are tilesets and tilemaps, and the formats it reads and writes are the ones the disassemblies use.

Against the tools it was inspired by, the difference is the platform and the reach. Tilemap Creator, NTME, GSC Town Map Editor and Karteneditor are each tied to a particular project or a particular format, and several of them are browser tools or platform-specific utilities. Tilemap Studio is a native C++ application that covers Game Boy, Game Boy Color, Game Boy Advance, Nintendo DS, SNES, Genesis and TG16 in one program.

The limits are worth stating plainly, and the version numbers are the first thing to look at. The latest release is 4.0.1 from November 2021, with 4.0.0 from August 2021 and 3.3.0 from June 2021. The repository was pushed to on 2026-05-02 and is not archived, so the code is being touched, but there has been no tagged release in close to five years. For a tool whose formats have to track the projects it edits, that gap is worth checking against the disassembly you are working on.

The scope limit is that it edits tiles and maps. It is not a sprite editor, it does not handle the compressed graphics format that these projects use for sprite sheets beyond the tile formats it targets, and it does not compile or assemble anything. The projects it supports have their own toolchains for that, usually built on rgbds.

The licence is the other thing to check. It is recorded as a custom one that GitHub cannot classify, and the LICENSE.md file at the root is the authoritative text, so read it before assuming the terms you would expect from a hobby tool.

Where it does sit well is the mouse model and the format coverage. If you are editing a town map in a pokeemerald-based hack and you want to see the block layout, place tiles, flood fill a region and swap tiles in place, in a program that starts instantly, that is exactly what this does.

## Conclusion

Tilemap Studio suits a developer working on a pret disassembly or one of the hacks built on it, since it understands the specific tilemap and tileset formats those projects use and its mouse scheme separates picking a tile from placing one, which is the thing a generic paint program gets wrong. It is the wrong tool if you want a general purpose pixel art application, and it is the wrong tool if you need ongoing upstream fixes, since the last tagged release is 4.0.1 from 2021 even though the repository was pushed to in May 2026. Before you install it, read INSTALL.md, and check the TODO.md in the repository root for what the author considers unfinished.

## FAQ

### What is Tilemap Studio?

It is a tilemap editor for Game Boy, Game Boy Color, Game Boy Advance, Nintendo DS, SNES, Genesis and TG16 projects, written in C++ with FLTK. It is specifically meant to support the pret disassemblies such as pokered, pokecrystal and pokeemerald, and the hacks built on them, while also supporting multi-platform tilemaps.

### How do I install Tilemap Studio?

The README points at INSTALL.md, which covers both installing the release copy and building from source. The build is a Makefile that produces a tilemapstudio release binary and a tilemapstudiod debug binary, with install and uninstall targets that place the binary under a prefix and register a desktop entry, and install.bat is provided at the repository root.

### What are the mouse controls in Tilemap Studio?

Click and drag selects tiles in the tileset and places tiles in the tilemap, middle drag scrolls, right-click highlights a tile or selects one in the map, right drag selects tiles, Ctrl+click replaces a tile, Shift+click flood fills and Alt+click swaps tiles. The same gesture means different things depending on which pane you are in.

### How do I get a visual reference for the tilemap formats?

The example/ directory contains different formats of tilemaps and tileset graphics, including ascii.png and per-project folders for pokecrystal, pokeemerald, pokered, polishedcrystal and prism. The README highlights pokecrystal/town_map_pokegear.png as a colored-in combination of tileset graphics that is useful for viewing any Town Map in a project based on pokecrystal.

### When was the last Tilemap Studio release?

Version 4.0.1, dated 2021-11-01, after 4.0.0 from August 2021 and 3.3.0 from June 2021. The repository was last pushed to on 2026-05-02 and is not archived, so the code is still being touched even though no new release has been tagged in close to five years.

### What licence is Tilemap Studio released under?

A custom licence that GitHub cannot classify, with the LICENSE.md file at the repository root as the authoritative text. The README also says to browse the menu items, toolbar buttons and Help dialog to learn how to use the tool, and points to the Gameboy Development Forum, the Skeetendo Forums and PokeCommunity for questions.

## Sources

- [Issues](https://github.com/Rangi42/tilemap-studio/issues)
- [Project website](https://hax.iimarckus.org/topic/7691/)
- [Rangi42/tilemap-studio on GitHub](https://github.com/Rangi42/tilemap-studio)
- [README](https://github.com/Rangi42/tilemap-studio/blob/master/README.md)
- [Releases](https://github.com/Rangi42/tilemap-studio/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/rangi42-tilemap-studio
