Курс по разработке игр для Sega Master System: 01 |
Kir | |
10.06.2024 . | |
Sega Master System 01: Окружение.2018-03-15 Каждая статья, курс или книга, обучающая разработке начинается с настройки окружения. Это может показаться жутко скучным и даже убивающим энтузиазм, но поверьте это не совсем так. Окружение - это наши инструменты, и они должны быть как минимум в удовлетворительном состоянии перед началом любого дела. Много ли сможет сделать радиолюбитель без паяльника? Человек со смекалкой может воспользоваться хоть утюгом, но понравится ли ему паять утюгом? Думаю, что не очень. Так же и у нас. Если не подготовить среду разработки, то сложности, которые будет вызывать её отсутствие, очень быстро убьют желание всем этим заниматься. Первое с чем надо определиться - это операционная система. Я пользуюсь одной из самых популярных на сегодняшний день версий Linux - Debian/Ubuntu/Mint. Если у вас MacOS X или Windows, то некоторые детали окружения могут отличаться, но эти отличия некритичны. Описываемые мной действия могут быть переработаны под ваши предпочтения. В первую очередь нам понадобятся три самых главных инструмента:
Ещё нам понадобятся инструменты для работы со звуками и музыкой. Но о них мы поговорим, когда непосредственно коснёмся этой темы. Настройка первоначального окружения и так уже получается немаленькой. 1. Текстовый редакторВ текстовом редакторе мы будем проводить очень много времени. Так что если у вас есть опыт программирования, то я советую вам выбрать наиболее удобный текстовый редактор лично для вас. Однако, если вы хотите в точности воспроизвести моё окружение, то берите Sublime Text 3, я пользуюсь именно им. Если по тем или иным причинам он вам не подходит, то обратите внимание на Notepad++ или Geany. Sublime Text 3 не поддерживает по умолчанию подсветку синтаксиса для нужного нам ассемблера, поэтому пришлось написать собственный файл подсветки и до кучи цветовую тему. Взять их можно здесь https://github.com/w0rm49/wla-dx-syntax. Для установки достаточно скопировать эти два файла в папку с пользовательскими пакетами. Вот где находится эта папка в различных ОС:
Подсветка синтаксиса максимально простая, без каких-либо глубоких семантик. Если вы хотите её дополнить или исправить - добро пожаловать на гитхаб, где эти файлы и будут жить. Если вы выбрали другой редактор, то я, по мере возможностей, могу вам помочь с настройкой и добавлю сюда инструкцию и по вашему редактору. 2. АссемблерВ этой обучающей серии используется ассемблер WLA DX. Помимо необходимой архитектуры Z80 он умеет работать и с другими архитектурами: 6502, 65C02, 6510, 65816, GB-Z80, HuC6280, SPC-700. Так что если планируете что-то писать под nes/snes, pc-engine, game boy а так же всякие комодоры и спектрумы, то он вам и здесь поможет. Помимо того, что он может выдавать код для такого количества архитектур, он ещё и сам работает в большом количестве операционных систем, помимо большой тройки windows/macos/linux, он способен работать даже под ms-dos и amiga os. Скачать его можно на официальной странице http://www.villehelin.com/wla.html или на гитхабе https://github.com/vhelin/wla-dx Стоит сразу отметить терминологическую путаницу, которая часто возникает в этом месте.
Однако часто Язык ассемблера называют просто "ассемблер", что технически неверно, но так уж повелось, поэтому будьте внимательны и следите за тем, в каком контексте употребляется слово "ассемблер", потому что оно может обозначать и язык, и саму программу-транслятор. Установка. Скачайте WLA DX с официального сайта или из официального репозитория и распакуйте в папку на жёстком диске, которую сочтёте наиболее подходящей для этих целей. Например, в ~/sms_dev/tools/wldadx/ Для сборки WLA DX необходим cmake, если него нет в вашей системе, то надо его установить. Затем нужно перейти в папку, в которую вы его распаковали и сгенерировать сценарии сборки, а потом наконец-то запустить саму сборку. Вот последовательность всех команд: sudo apt-get install cmake cd ~/sms_dev/tools/wladx/ cmake -G "Unix Makefiles" make После компиляции исполняемые файлы будут находиться в папке ~/sms/tools/wladx/binaries/ нам понадобятся wla-z80 и wlalink Ссылки: Официальный сайт: http://www.villehelin.com/wla.html Репозиторий на github: https://github.com/vhelin/wla-dx Зеркала: Сборка под windows: wla-dx-9.5-win32-bin-2013-SVN-rev8-WJ.zip Исходники: wla-dx-9.6.zip 3. ЭмуляторДля запуска всего, что мы собираемся делать, понадобится эмулятор и желательно с отладчиком. Насколько мне известно, эмулятор MEKA имеет самый "развесистый"" отладчик на данный момент. На официальном сайте этого эмулятора с 2010 года нет обновлений. Но не стоит отчаиваться, продолжением разработки этого эмулятора теперь занимаются на форуме SMS Power. Там же можно скачать уже готовые сборки под windows. На всякий случай я размещу у себя копию самой свежей на данный момент сборки. Установка Теперь приступим к сборке linux версии. Этот эмулятор построен на базе библиотеки Allegro, поэтому для начала поставим в систему заголовочные файлы этой библиотеки и её дополнительных пакетов, используемых в этом эмуляторе. sudo apt-get install liballegro5-dev liballegro-audio5-dev liballegro-ttf5-dev liballegro-image5-dev Небольшое примечание: На момент написания в репозитории находилась библиотека allegro версии 5.0, но самая свежая 5.2, но э а версия находилась в отдельном PPA-репозитории и не имела некоторых дополнительных пакетов. Однако со стандартной версией 5.0 эмулятор прекрасно собирается и работает. Теперь надо скачать или склонировать исходники эмулятора. Разместим недалеко от ассемблера. В моём случае в ~/sms_dev/tools/meka/ и сразу переходим в неё, переходим в подпапку srcs и запускаем сборку cd srcs make exe После сборки в папке эмулятора появится исполняемый файл meka, если он есть и сборка прошла успешно, надо убрать оставшиеся объектные файлы командой make clean_all Готово. Ссылки: Официальный сайт: http://www.smspower.org/meka/ Репозиторий на github: https://github.com/ocornut/meka Зеркала: исходники на момент написания статьи meka-2015-05-06-win32-proto.zip сборка для windows meka-master.zip 4. Средства автоматизации сборки.Мы уже собрали и настроили основные инструменты, необходимые для начала разработки игр под SMS. Однако в таком виде, это требует слишком много лишних действий. Судите сами. Вот вы отредактировали файл и хотите посмотреть на изменения в эмуляторе. Вы сохраняете файл, переключаетесь в терминал, вводите команду сборки объектного файла, команду преобразования объектного файла в корректный ром. Запускаете эмулятор и открываете в нём ром. Звучит удручающе. Поэтому немедленно приступим к автоматизации всего этого процесса. Для автоматизации я буду использовать специальную утилиту make, предназначенную как раз для подобных целей. Данная утилита работает со специальными файлами, которые называются Makefile в которых описаны автоматизируемые сценарии. Сценарии будут довольно простыми, так что их без особого труда можно будет повторить средствами bat/cmd в windows. Не буду останавливаться подробно на разборе синтаксиса этих файлов, сеть полна этими описаниями на любых существующих языка. Вот такой файл получился у меня: #Поменяйте пути к папкам в которых #у вас находятся исполняемые файлы ассемблера и эмулятор WLA_DX_PATH = $(HOME)/sms_dev/tools/wladx/binaries MEKA_PATH = $(HOME)/sms_dev/tools/meka export PATH := $(PATH):$(WLA_DX_PATH):$(MEKA_PATH) MAIN_FILE = hello_world PROJECT_DIR = $(realpath $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/../) BUILD_DIR = $(PROJECT_DIR)/build SRC_DIR = $(PROJECT_DIR)/src build: $(MAIN_FILE).sms $(MAIN_FILE).o: cd $(BUILD_DIR) && wla-z80 -o $(MAIN_FILE).o -I $(SRC_DIR) $(SRC_DIR)/$(MAIN_FILE).asm $(MAIN_FILE).sms: $(MAIN_FILE).o cd $(BUILD_DIR) && echo "[objects]\n$(MAIN_FILE).o" > $(MAIN_FILE).link cd $(BUILD_DIR) && wlalink -i -r -v $(MAIN_FILE).link $(MAIN_FILE).sms run: $(MAIN_FILE).sms cd $(BUILD_DIR) && $(MEKA_PATH)/meka $(MAIN_FILE).sms clean: cd $(BUILD_DIR) && rm -f *.o *.sms *.link Теперь все необходимые действия делаются единственной необходимой командой.
Можно запускать несколько команд последовательно, например, make clean run Не стоит рассматривать этот вариант сборки как окончательный. Далее по необходимости мы будем в него добавлять больше правил сборки для таких операций, как автоматическое конвертирование графики, звуков и прочее. Осталось создать проект в Sublime Text и привязать нужные команды к горячим клавишам. В этом редакторе почти все настройки делаются при помощи редактирования конфигурационных файлов. Мы просто создадим файл проекта и впишем в него наши команды в раздел build_systems. Вот так выглядит мой файл проекта. { "folders": [ { "path": "." } ], "build_systems": [ { "name": "clean run", "shell_cmd": "cd ${project_path}/build && make clean run" }, ] } После создания нового проекта достаточно будет в главном меню выбрать Tools -> Build Systems -> clean run и наш проект будет автоматически собираться и запускаться по горячей клавише Ctrl+B Скачать шаблон проекта можно здесь https://github.com/w0rm49/sms-hello-world/releases/tag/sms-01 5. Графический редактор.Графический редактор. При этом словосочетании многим приходит в голову Adobe Photoshop или MS Paint. Не возьмусь судить хорошие это или плохие редакторы, но всё же замечу то в нашей ситуации эти лидеры народных хит-парадов нам не совсем подходят. Вообще, если вы являетесь признанным мастером какого-то из графических редакторов, то конечно пользуйтесь им. Я встречал в сети много разных статей о том, как можно превратить Gimp или Paint.NET в инструмент для схожих целей, но они мне не очень пришлись по вкусу. Если же у вас нет каких-то явных предпочтений, то присмотритесь к чему-то более ориентированному на пиксельарт и тайловую графику. Например, Tile Studio или Aseprite. Я пользуюсь последним, в нём даже есть палитра sms сразу "из коробки", мелочь, а приятно.
6. Система контроля версий.Система контроля версий, как я уже писал ранее, может вас поначалу сильно смутить. Зачем все эти сложности? Куча команд и новых терминов, кошмар просто! Но пусть вас это не пугает. Команд там не так много, а термины при ближайшем изучении довольно простые. Зато какие преимущества. Система контроля версий станет вашей персональной машиной времени, не просто способной вас переносить во времени назад и вперёд, но ещё и посещать различные варианты будущего и настоящего. Неплохо неправда ли? Жаль только, что это распространяется только на исходные коды =) А всё что надо ради этого, лишь выучить несколько новых команд и концепций. Систем контроля версий как популярных, так и не очень существует целое множество. Я буду использовать, пожалуй, самую популярную на сегодняшний день - git. А хранить проекты и исходные коды этого курса на популярном сервисе github, который уже упоминался здесь. Однако этот факт не обязывает вас тоже пользоваться git'ом. Вы всегда можете зайти на сайт github.com, найти там нужный репозиторий и скачать его в виде zip архива. Если же вы решили, что персональная машина времени для ваших исходных кодов, это всё же неплохая идея, то обучиться основам git'а можете здесь: https://git-scm.com/book/ru/v2 Заключение.На этом, пожалуй, можно закончить настройку нашего инструментария и больше не возвращаться к этому вопросу какое-то время. Так что один из самых сложных начальных шагов позади, и мы можем смело приступать к изучению самой SMS и программированию для неё. В следующем посте мы будем рассматривать общее внутреннее устройство консоли и её центральный процессор с точки зрения разработчика. |
|
( 14.06.2024 . ) |