Рассказываю, пока по памяти, без подробностей, которые надо доставать из кода. Если надо будет, гляну позже. Краткий ответ на вопрос: скрипты.
Все игровое пространство разбито на комнаты (экраны), каждый имеет свой однобайтовый номер (тип, идетификатор). Итого, имеем матрицу номеров комнат.
Тип комнаты задает ее отрисовку (почти всю, что-то иногда дорисовывается логикой). Некоторые комнаты повтоярются, особенно в подземелье.
Есть 256 спрайтов фона и 256 спрайтов переднего плана, они состоят из тайлов.
Комнаты бывают 2 типов: надземные и поздемные.
Надземная комната - это скрипт из команд в духе "положи спрайт фона N в X,Y", "нарисуй горизонтальную линию из тайлов N переднего плана из X,Y длины L", "заполни тайлом фона N прямоугольник от X,Y размером W,H".
Типов комнат подземелья мало того, что не густо, так там еще, насколько я помню, "двойная" спрайтовая система: комнаты разбиваются на 6 блоков (3x2 блока), комната кодируется 6 байтами - номерами блоков, а сами блоки задаются теми же скриптами. Иногда в комнатах скриптами дорисовываются какие-нить лампы, например.
Всякие интерактивные и меняющиеся объекты задаются логикой, разбросанной в игре примерно везде - пихаются в тайломапы напрямую и отрисовываюстся в следующем цикле отрисовки. В моей версии чуть более собранно в кучу для оптимизации.
Если интересны подробности - задавайте вопросы, но ответить могу сильно не сразу.