Благодаря сцене взлома ПЗУ формат файла для Super Mario World (и я полагаю, что большинство других популярных игр той эпохи) хорошо известен и в основном полностью понят. Есть также документы, которые описывают все это до мельчайших деталей. К сожалению, потому что это означает посещение сайтов, не имеющих юридической силы, я не могу предоставить вам ссылки с работы, но если вы воспользуетесь расширением файла .MWL и приложением для редактирования под названием Lunar Magic, оно может указать вам верное направление .
Основной принцип довольно прост. Сначала вам нужна ваша графика, поэтому вы создаете одно изображение с плитками для ландшафта определенного размера - чем меньше, тем эффективнее память, чем больше, тем больше деталей, поэтому предположим, что у нас 32 х 32 пикселя. Таким образом, вы получите что-то вроде этого (символы, представляющие разные плитки):
! " £ $ %
^ & * ( )
Вы можете создать один набор заголовков для каждого «стиля» уровня, так что мир огня, ледяной мир, мир пещер и т. Д. Это сэкономит вам нагрузку на плитки, которые вы не собираетесь использовать.
Далее вам нужен файл уровня, который начинается с набора мозаичных элементов, которые вы хотите загрузить, и чисел, представляющих каждый рисунок, например:
fireworld.img
2 2 2 2 2 2 2 2
3 3 2 2 2 2 3 3
3 3 3 3 3 3 3 3
Объединено с набором плиток выше, который у вас будет (в зависимости от того, как вы нумеруете плитки)
" " " " " " " "
£ £ " " " " £ £
£ £ £ £ £ £ £ £
Очевидно, что тогда вам нужно наложить больше информации поверх этого: какие плитки сплошные, какие смертельные и т. Д. Это можно сделать на уровне изображения (3 всегда сплошная) или, для большей гибкости, но больших файлов, на уровне карты. Подойдут битовые флаги, первое число сплошное, второе смертельное:
fireworld.img
200 200 200 200 200 200 200 200
310 310 200 200 200 200 310 310
310 310 310 310 310 310 310 310
Вдобавок ко всему этому вам необходимо добавить суффикс файла уровня с начальной и конечной точкой (пара координат) и врагами (какую графику они используют, какую подпрограмму ИИ они используют, где они начинают).
Как только все это будет сделано, вы можете посмотреть на сжатие. Есть несколько способов сэкономить место, и, очевидно, сейчас это не так важно, как это было в 16 и 8-битных эпохах, но даже в этом случае наш формат, приведенный выше, является чрезвычайно расточительным.
Как всегда, это только основные принципы. Ваши результаты могут отличаться ...