Sega Master System 07: Улучшение читаемости. VBlank. Ввод с контроллера.


2018-04-24

Сегодня мы с вами изучим ещё несколько возможностей wla dx которые облегчают нам написание программ для SMS. Мы с вами написали первую программу для SMS и уже улучшать, не рановато ли? А вот и нет. Читаемость собственных программ это не просто важно, это очень важно. Настолько важно, что многие просто недооценивают это. Но почему так происходит? Давайте разбираться.

По началу это может быть незаметно, но мы пишем программы примерно 2-5% всего времени, всё остальное время мы читаем то что понаписали. Это справедливо для любого языка программирования, ну разве что процент может немного плавать. В нашем случае это осложнено несколькими факторами. Во-первых язык ассемблера требует немного отличающегося мышления в отношении наших программ, во-вторых у нас нет чёткой структуры программы, мы можем писать игру как хотим у нас с вами полная свобода и никаких "движковых" ограничений. Помимо этого не стоит забывать про фактор времени. Если вы сделаете перерыв в разработке или даже естественным образом не будете долго возвращаться к какому-то коду. То в итоге вернувшись к нему может случиться так что у вас возникнет вопрос "что за идиот это писал?", а это окажетесь вы сами. И не стоит такому удивляться. Поэтому стоит озадачиться хорошей читаемостью сразу.

Читать дальше…

Sega Master System 06: Порты ввода-вывода. Hello World


2018-04-14

Сегодня мы применим на практике все те знания которые получили в первых статьях и напишем первую программу для SMS. Это будет классическая программа "Hello World". Если кто не знает, то обычно, при изучении различных языков программирования, самая первая программа которую делают изучающие - это простейшая программа выводящая на экран сообщение "Hello world". Она позволяет разобраться со структурой программы и при этом, обычно такая программа обладает минимально возможной сложностью, для облегчения понимания.

Как правило, Hello world пишут как можно раньше и даже в ущерб полному пониманию того как эта программа работает, и лишь потом начинают полный разбор. Я предпочитаю немного другой подход - цикличного изучения, сначала мы получаем общее представление о предмете изучения достаточное для понимания определённых базовых принципов, затем некоторые аспекты мы разбираем более подробно, чтобы углубить общее понимание всего предмета и перейти к более сложным темам, и так далее. На текущий момент мы с вами уже изучили достаточно, чтобы в классической программе Hello world для нас не было никаких неожиданных моментов.

Итак, давайте посмотрим из чего будет состоять такая программа для SMS.

  1. Нужно сформировать образ картриджа в корректном формате.
  2. Настроить стек и работу прерываний.
  3. Инициализировать VDP.
  4. Передать VDP графическую информацию.
  5. Передать VDP выводимую строку
  6. Остановить выполнение программы.
Читать дальше…

Sega Master System 05: Память, стек, прерывания


2018-04-10

Мы с вами уже выяснили как работает система в целом, что может делать z80 и как работает видеопроцессор. Сегодня мы разберёмся с тем как в SMS устроена память, как с ней работать и какие для средства этого нам предоставляет ассемблер.

Организация и типы памяти.

Как вы помните адресное пространство процессора z80 составляет 65536 ячеек памяти, размер одной ячейки памяти - 1 байт. То есть процессор "видит" 64кб памяти. В это адресное пространство подключена оперативная память самой приставки - RAM (англ. Random Access Memory), и память картриджа с игрой - ROM. Оперативная память - это такой тип памяти который предназначен для хранения изменяемых данных, таких как игровой счёт, очки жизней игрока, боезапас и тд. RAM переводится как "память с произвольным доступом", то есть мы можем в любой момент получить доступ к любой её ячейке. Системная оперативная память находится внутри самой приставке на её материнской плате.

Читать дальше…

Sega Master System 04: Введение в язык ассемблера Z80


2018-04-01

Сегодня мы с вами наконец-то подступимся к программированию. И изучим что же именно может делать центральный процессор SMS.

Машинный код

Как вы помните из описания работы процессора и памяти. Программа - это последовательность команд в памяти, процессор последовательно считывает эти команды и выполняет действия которые им соответствуют. Команды могут быть разной длины от одного байта до четырёх. Такая последовательность байт составляющих команды для процессора называется машиным кодом. Давайте подробнее разберём как устроены сами команды. Первый байт в команде, а иногда и второй, обозначают код операции. Сокращённо опкод (англ. Operation code). Последующие один или два байта называются операндом.

Читать дальше…

Sega Master System 03: Тайловая графика, видеопроцессор


2018-03-26

Видеопроцессор - пожалуй самый важный компонент игровой приставки после центрального процессора. И без понимания того как он работает довольно сложно будет разобраться дальше. В отличие от современных систем, где железо максимально абстрагировано от программиста и всё взаимодействие с ним идёт через SDK или специальные библиотеки. В SMS всё несколько иначе - нам придётся работать в довольно тесном контакте с железом и учитывать его особенности и принципы по которым оно работает. Я начну с более общих теоретических объяснений и буду переходить всё ближе к реалиям SMS.

Читать дальше…