2021 · Conference paper
MappyLand: Fast, Accurate Mapping for Console Games
MappyLand, a Rust rewrite of the earlier Mappy system, instruments the FCEUMM NES emulator core to map action/adventure games as they are played from controller inputs. It hooks accesses to the picture-processing unit's scrolling registers and reads emulator memory to register scrolling, separate the playfield from menus, detect and track sprites, build grid-based tile maps and recognize room transitions. An online merging step combines observed rooms into a consistent room graph across backtracking and multiple play sessions. In a 34,514-frame test the authors report about 1.5 ms of mapping overhead per frame, against about 0.2 ms for emulation alone.
Scope and limitations
Limited to NES action/adventure games in which the player controls characters moving through a 2D, tile-based space with a single physical layer; independently scrolling layers and parallax backgrounds are unsupported, and other consoles are left to future work. The method relies on emulator instrumentation and memory reads rather than pixels alone, and needs the game image plus controller inputs. Maps were judged accurate only by human inspection of the authors' play on a sample of games; with no reference dataset, no automated quantitative accuracy evaluation was performed. Areas not seen during play stay unmapped, and visually similar rooms can be ambiguous. Timing comes from individual reported runs; the authors expect, but do not measure, similar overhead across NES games. Output is maps, room graphs and entity tracks, not game code, rules or assets.
Why it fits this collection
Adds emulator-instrumented recovery of game-world structure, namely maps, room graphs and entity tracks, from observed play, complementing pixel-only game replication and code-world-model research.
Publication and review details
- Venue
- AIIDE 2021
- Status
- Conference paper
- Publication / posting date
- October 4, 2021
- Date source
- The AAAI OJS article page gives publication on 2021-10-04, and the publisher-deposited Crossref record gives the same published-online and issued date. The conference dates are not substituted.
- DOI
- 10.1609/aiide.v17i1.18892
The OJS page and Crossref establish the four-author order, DOI, volume 17, issue 1 and pages 66–73. Crossref types the record as a journal article because AIIDE proceedings appear as an OJS series; this record keeps conference-paper for the AIIDE 2021 Full Oral Papers section. The paper's footnotes link faim-lab/mappy and faim-lab/fceumm-libretro-hooks. The reviewed mappy snapshot at bbf99dd (2025-07-21) includes commits made years after the paper, uses Rust edition 2024 and an unpinned retro-rs Git dependency, declares no license, and bundles prebuilt instrumented emulator cores for Linux, macOS and Windows; the core source in fceumm-libretro-hooks at 4b2001d (2025-02-14) is GPL-2.0. Graphviz renders the map images. Game data is outside this record. The earlier Mappy system (FDG 2017 PCG workshop, arXiv:1707.03908) is a separate paper. No emulator, code or experiment was run.
Sources reviewed
Source review only; experiments were not rerun for this collection. Cite the original authors using the linked paper or BibTeX.
Primary sources
- https://ojs.aaai.org/index.php/AIIDE/article/view/18892
- https://ojs.aaai.org/index.php/AIIDE/article/download/18892/18657
- https://doi.org/10.1609/aiide.v17i1.18892
- https://api.crossref.org/works/10.1609/aiide.v17i1.18892
- README GitHub · faim-lab/mappy · Revision bbf99dd
- Cargo.toml GitHub · faim-lab/mappy · Revision bbf99dd
- mappy/Cargo.toml GitHub · faim-lab/mappy · Revision bbf99dd
- cores GitHub · faim-lab/mappy · Revision bbf99dd
- Copying GitHub · faim-lab/fceumm-libretro-hooks · Revision 4b2001d
- README.md GitHub · faim-lab/fceumm-libretro-hooks · Revision 4b2001d