Главная arrow Документация arrow Курс по разработке игр для Sega Master System: 01
07.10.2024 г.

Последние Комментарии

Chrono Trigger 27.08.2024 г.
Dragon Warrior IV 21.07.2024 г.
Eternal Eyes 12.06.2024 г.

Гостевая Книга

Андрей
Архив с переводом Один дома 2 перезалит. Ошибочно
Краткие новости
У нас новый перевод, игрушка детская, но довольно занятная - Pyokotan no Dai Meiro (N.E.S.). В игре вы будете управлять зайчиком Пёкотаном, персонажем детских книжек в Японии. Сама игра представляет собой несколько уровней, на которых расположены в случайном порядке сундучки. Открыв один из них вы обнаружите либо приз, либо очередного врага, с которым будете играть в мини-игру. Зачем открывать сундучки? Дело в том, что на каждом уровне в одном из них спрятан ключ, с помощью которого можно попасть на следующий уровень. Особо ленивые игроки могут воспользоваться Генератором Паролей.

pyokotan

 
Цитаты
"Если переводчика не побили и не попросили уйти, можно считать, что перевод был успешным."
Внимание! Всем-всем-всем!
Товарищи! Если у кого-то из вас вдруг завалялись ненужные (или не очень нужные) картриджи денди - не дайте пропасть добру! Приму в дар, скопирую и верну хозяину или куплю/обменяю любые интересные картриджи, особенно редкие или пиратские. С предложениями обращайтесь НА ФОРУМ или В ЛИЧКУ. Подпись: Guyver.
Курс по разработке игр для Sega Master System: 01 Печать E-mail
Автор Kir   
10.06.2024 г.
 

Sega Master System 01: Окружение.

2018-03-15

Каждая статья, курс или книга, обучающая разработке начинается с настройки окружения. Это может показаться жутко скучным и даже убивающим энтузиазм, но поверьте это не совсем так. Окружение - это наши инструменты, и они должны быть как минимум в удовлетворительном состоянии перед началом любого дела. Много ли сможет сделать радиолюбитель без паяльника? Человек со смекалкой может воспользоваться хоть утюгом, но понравится ли ему паять утюгом? Думаю, что не очень. Так же и у нас. Если не подготовить среду разработки, то сложности, которые будет вызывать её отсутствие, очень быстро убьют желание всем этим заниматься.

Первое с чем надо определиться - это операционная система. Я пользуюсь одной из самых популярных на сегодняшний день версий Linux - Debian/Ubuntu/Mint. Если у вас MacOS X или Windows, то некоторые детали окружения могут отличаться, но эти отличия некритичны. Описываемые мной действия могут быть переработаны под ваши предпочтения.

В первую очередь нам понадобятся три самых главных инструмента:

  1. Текстовый редактор с подсветкой синтаксиса, в котором мы будем писать наши программы.
  2. Ассемблер, который будет преобразовывать наш код в исполняемый код для SMS и запаковывать его в виде rom'а.
  3. Эмулятор, на котором мы будем запускать rom, полученный из ассемблера. Крайне желательно чтобы эмулятор был со встроенным отладчиком. Необязательные инструменты, но при их наличии вам очень сильно облегчит жизнь.
  4. Средства автоматизации сборки. Вы можете и вручную запускать все команды сборки, запускать эмулятор выбирать в нём получившийся файл и тд. Но сомневаюсь, что вам это понравится. Мы будем стараться автоматизировать всё по максимуму, потому что "Машины должны работать, а люди думать"
  5. Графический редактор. Думаю, никто не будет спорить с тем, что рисовать графику проще в графическом редакторе, по крайней мере в большинстве случаев.
  6. Система контроля версий. Система контроля версий может поначалу показаться чем-то сложным и запутанным, но когда распробуете, то будете удивляться как раньше без неё вообще жили. И даже начнёте применять её не совсем по назначению =) Например, этот блог живёт в такой системе. Подробности ниже.
Ещё нам понадобятся инструменты для работы со звуками и музыкой. Но о них мы поговорим, когда непосредственно коснёмся этой темы. Настройка первоначального окружения и так уже получается немаленькой.

1. Текстовый редактор

 
В текстовом редакторе мы будем проводить очень много времени. Так что если у вас есть опыт программирования, то я советую вам выбрать наиболее удобный текстовый редактор лично для вас. Однако, если вы хотите в точности воспроизвести моё окружение, то берите Sublime Text 3, я пользуюсь именно им. Если по тем или иным причинам он вам не подходит, то обратите внимание на Notepad++ или Geany.

Sublime Text 3 не поддерживает по умолчанию подсветку синтаксиса для нужного нам ассемблера, поэтому пришлось написать собственный файл подсветки и до кучи цветовую тему. Взять их можно здесь https://github.com/w0rm49/wla-dx-syntax. Для установки достаточно скопировать эти два файла в папку с пользовательскими пакетами. Вот где находится эта папка в различных ОС:

  • Windows %APPDATA%\Sublime Text 3\Packages\User
  • MacOS X ~/Library/Application Support/Sublime Text 3/Packages/User
  • Linux ~/.config/sublime-text-3/Packages/User
 
Подсветка синтаксиса максимально простая, без каких-либо глубоких семантик. Если вы хотите её дополнить или исправить - добро пожаловать на гитхаб, где эти файлы и будут жить. Если вы выбрали другой редактор, то я, по мере возможностей, могу вам помочь с настройкой и добавлю сюда инструкцию и по вашему редактору.

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

Стоит сразу отметить терминологическую путаницу, которая часто возникает в этом месте.

  • Ассемблер (англ. assembler) - это программа-транслятор текста программы в машинный код
  • Язык ассемблера (англ. assembly language) - это язык программирования, на котором мы будем в дальнейшем писать наши программы.
 
Однако часто Язык ассемблера называют просто "ассемблер", что технически неверно, но так уж повелось, поэтому будьте внимательны и следите за тем, в каком контексте употребляется слово "ассемблер", потому что оно может обозначать и язык, и саму программу-транслятор.

Установка.
 
Скачайте 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 build - собирает ром
  • make clean - удаляет все объектные файлы и собранные ромы
  • make run - собирает ром, если это необходимо и запускает на эмуляторе
 
Можно запускать несколько команд последовательно, например, 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 г. )
 
« Пред.   След. »
home contact search contact search