<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>./logbook</title>
<link>http://logbook.farpoint.space/</link>
<description></description>
<language>ru</language>
<item>
<title>Sega Master System 07: Улучшение читаемости. VBlank. Ввод с контроллера.</title>
<link>http://logbook.farpoint.space/sms-07-readability-vblank-input</link>
<pubDate>Tue, 24 Apr 2018 00:00:00 +0000</pubDate>
<guid isPermaLink="false">http://logbook.farpoint.space/sms-07-readability-vblank-input?1524528000</guid>
<dc:creator>Kir'Valah</dc:creator>
<description>Сегодня мы с вами изучим ещё несколько возможностей wla dx которые облегчают нам написание программ для SMS. Мы с вами написали первую программу для…</description>
<content:encoded><![CDATA[<p>Сегодня мы с вами изучим ещё несколько возможностей wla dx которые облегчают нам написание программ для SMS. Мы с вами написали первую программу для SMS и уже улучшать, не рановато ли? А вот и нет. Читаемость собственных программ это не просто важно, это <strong>очень важно</strong>. Настолько важно, что многие просто недооценивают это. Но почему так происходит? Давайте разбираться.</p>

<p>По началу это может быть незаметно, но мы пишем программы примерно 2-5% всего времени, всё остальное время мы читаем то что понаписали. Это справедливо для любого языка программирования, ну разве что процент может немного плавать. В нашем случае это осложнено несколькими факторами. Во-первых язык ассемблера требует немного отличающегося мышления в отношении наших программ, во-вторых у нас нет чёткой структуры программы, мы можем писать игру как хотим у нас с вами полная свобода и никаких "движковых" ограничений. Помимо этого не стоит забывать про фактор времени. Если вы сделаете перерыв в разработке или даже естественным образом не будете долго возвращаться к какому-то коду. То в итоге вернувшись к нему может случиться так что у вас возникнет вопрос "что за идиот это писал?", а это окажетесь вы сами. И не стоит такому удивляться. Поэтому стоит озадачиться хорошей читаемостью сразу.</p> <a href="http://logbook.farpoint.space/sms-07-readability-vblank-input">Читать дальше…</a>]]></content:encoded>
</item>
<item>
<title>Sega Master System 06: Порты ввода-вывода. Hello World</title>
<link>http://logbook.farpoint.space/sms-06-io-hello-world</link>
<pubDate>Sat, 14 Apr 2018 00:00:00 +0000</pubDate>
<guid isPermaLink="false">http://logbook.farpoint.space/sms-06-io-hello-world?1523664000</guid>
<dc:creator>Kir'Valah</dc:creator>
<description>Сегодня мы применим на практике все те знания которые получили в первых статьях и напишем первую программу для SMS. Это будет классическая программа…</description>
<content:encoded><![CDATA[<p>Сегодня мы применим на практике все те знания которые получили в первых статьях и напишем первую программу для SMS. Это будет классическая программа "Hello World". Если кто не знает, то обычно, при изучении различных языков программирования, самая первая программа которую делают изучающие - это простейшая программа выводящая на экран сообщение "Hello world". Она позволяет разобраться со структурой программы и при этом, обычно такая программа обладает минимально возможной сложностью, для облегчения понимания.</p>

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

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

<ol>
<li>Нужно сформировать образ картриджа в корректном формате.</li>
<li>Настроить стек и работу прерываний.</li>
<li>Инициализировать VDP.</li>
<li>Передать VDP графическую информацию.</li>
<li>Передать VDP выводимую строку</li>
<li>Остановить выполнение программы.</li>
</ol> <a href="http://logbook.farpoint.space/sms-06-io-hello-world">Читать дальше…</a>]]></content:encoded>
</item>
<item>
<title>Sega Master System 05: Память, стек, прерывания</title>
<link>http://logbook.farpoint.space/sms-05-memory-stack-int</link>
<pubDate>Tue, 10 Apr 2018 00:00:00 +0000</pubDate>
<guid isPermaLink="false">http://logbook.farpoint.space/sms-05-memory-stack-int?1523318400</guid>
<dc:creator>Kir'Valah</dc:creator>
<description>Мы с вами уже выяснили как работает система в целом, что может делать z80 и как работает видеопроцессор. Сегодня мы разберёмся с тем как в SMS устрое…</description>
<content:encoded><![CDATA[<p>Мы с вами уже выяснили как работает система в целом, что может делать z80 и как работает видеопроцессор. Сегодня мы разберёмся с тем как в SMS устроена память, как с ней работать и какие для средства этого нам предоставляет ассемблер.</p>

<h3 id="организация-и-типы-памяти">Организация и типы памяти.</h3>

<p>Как вы помните <strong>адресное пространство</strong> процессора z80 составляет 65536 ячеек памяти, размер одной ячейки памяти - 1 байт. То есть процессор "видит" 64кб памяти. В это адресное пространство подключена оперативная память самой приставки - <strong>RAM</strong> (<em>англ.</em> <strong>R</strong>andom <strong>A</strong>ccess <strong>M</strong>emory), и память картриджа с игрой - <strong>ROM</strong>. Оперативная память - это такой тип памяти который предназначен для хранения изменяемых данных, таких как игровой счёт, очки жизней игрока, боезапас и тд. <strong>RAM</strong> переводится как "память с произвольным доступом", то есть мы можем в любой момент получить доступ к любой её ячейке. Системная оперативная память находится внутри самой приставке на её материнской плате.</p> <a href="http://logbook.farpoint.space/sms-05-memory-stack-int">Читать дальше…</a>]]></content:encoded>
</item>
<item>
<title>Sega Master System 04: Введение в язык ассемблера Z80</title>
<link>http://logbook.farpoint.space/sms-04-basic-assembly</link>
<pubDate>Sun, 01 Apr 2018 00:00:00 +0000</pubDate>
<guid isPermaLink="false">http://logbook.farpoint.space/sms-04-basic-assembly?1522540800</guid>
<dc:creator>Kir'Valah</dc:creator>
<description>Сегодня мы с вами наконец-то подступимся к программированию. И изучим что же именно может делать центральный процессор SMS. Машинный код Как вы помни…</description>
<content:encoded><![CDATA[<p>Сегодня мы с вами наконец-то подступимся к программированию. И изучим что же именно может делать центральный процессор SMS.</p>

<h3 id="машинный-код">Машинный код</h3>

<p>Как вы помните из описания работы процессора и памяти. Программа - это последовательность команд в памяти, процессор последовательно считывает эти команды и выполняет действия которые им соответствуют. Команды могут быть разной длины от одного байта до четырёх. Такая последовательность байт составляющих команды для процессора называется <strong>машиным кодом</strong>. Давайте подробнее разберём как устроены сами команды. Первый байт в команде, а иногда и второй, обозначают код операции. Сокращённо <strong>опкод</strong> (<em>англ.</em> <strong>Op</strong>eration <strong>code</strong>). Последующие один или два байта называются <strong>операндом</strong>.</p> <a href="http://logbook.farpoint.space/sms-04-basic-assembly">Читать дальше…</a>]]></content:encoded>
</item>
<item>
<title>Sega Master System 03: Тайловая графика, видеопроцессор</title>
<link>http://logbook.farpoint.space/sms-03-graphics-vdp</link>
<pubDate>Mon, 26 Mar 2018 00:00:00 +0000</pubDate>
<guid isPermaLink="false">http://logbook.farpoint.space/sms-03-graphics-vdp?1522022400</guid>
<dc:creator>Kir'Valah</dc:creator>
<description>Видеопроцессор - пожалуй самый важный компонент игровой приставки после центрального процессора. И без понимания того как он работает довольно сложно…</description>
<content:encoded><![CDATA[<p>Видеопроцессор - пожалуй самый важный компонент игровой приставки после центрального процессора. И без понимания того как он работает довольно сложно будет разобраться дальше. В отличие от современных систем, где железо максимально абстрагировано от программиста и всё взаимодействие с ним идёт через SDK или специальные библиотеки. В SMS всё несколько иначе - нам придётся работать в довольно тесном контакте с железом и учитывать его особенности и принципы по которым оно работает. Я начну с более общих теоретических объяснений и буду переходить всё ближе к реалиям SMS.</p> <a href="http://logbook.farpoint.space/sms-03-graphics-vdp">Читать дальше…</a>]]></content:encoded>
</item>
<item>
<title>Sega Master System 02: Внутреннее устройство, процессор</title>
<link>http://logbook.farpoint.space/sms-02-cpu-internals</link>
<pubDate>Mon, 19 Mar 2018 00:00:00 +0000</pubDate>
<guid isPermaLink="false">http://logbook.farpoint.space/sms-02-cpu-internals?1521417600</guid>
<dc:creator>Kir'Valah</dc:creator>
<description>Сегодня мы будем разбираться как работает SMS и из каких основных компонентов она состоит. В первую очередь нам необходимо понять как работает самый…</description>
<content:encoded><![CDATA[<p>Сегодня мы будем разбираться как работает SMS и из каких основных компонентов она состоит. В первую очередь нам необходимо понять как работает самый главный компонент - <strong>центральный процессор</strong>, потому что именно вокруг него построена вся система. Сразу хочу заметить что этот пост и следующий будут содержать много теории. Несмотря на то что я буду пытаться излагать всё максимально просто и вводить термины постепенно. Эти теоретические посты можно использовать в виде справочной информации. Но первое обзорное прочтение - крайне рекомендуется.</p> <a href="http://logbook.farpoint.space/sms-02-cpu-internals">Читать дальше…</a>]]></content:encoded>
</item>
<item>
<title>Sega Master System 01: Окружение</title>
<link>http://logbook.farpoint.space/sms-01-environment</link>
<pubDate>Thu, 15 Mar 2018 00:00:00 +0000</pubDate>
<guid isPermaLink="false">http://logbook.farpoint.space/sms-01-environment?1521072000</guid>
<dc:creator>Kir'Valah</dc:creator>
<description>Каждая статья, курс или книга обучающая разработке начинается с настройки окружения. Это может показаться жутко скучным и даже убивающим энтузиазм, н…</description>
<content:encoded><![CDATA[<p>Каждая статья, курс или книга обучающая разработке начинается с настройки окружения. Это может показаться жутко скучным и даже убивающим энтузиазм, но поверьте это не совсем так. Окружение - это наши инструменты, и они должны быть как минимум в удовлетворительном состоянии перед началом любого дела. Много ли сможет сделать радиолюбитель без паяльника? Человек со смекалкой может воспользоваться хоть утюгом, но понравится ли ему паять утюгом? Думаю, что не очень. Так же и у нас. Если не подготовить среду разработки, то сложности которые будет вызывать её отсутствие, очень быстро убьют желание всем этим заниматься.</p>

<p>Первое с чем надо определиться это операционная система. Я пользуюсь одной из самых популярных на сегодняшний день версий Linux - Debian/Ubuntu/Mint. Если у вас MacOS X или Windows, то некоторые детали окружения могут отличаться, но эти отличия некритичны. Описываемые мной действия могут быть переработаны под ваши предпочтения.</p> <a href="http://logbook.farpoint.space/sms-01-environment">Читать дальше…</a>]]></content:encoded>
</item>
<item>
<title>Sega Master System 00: Почему?</title>
<link>http://logbook.farpoint.space/sms-00-why</link>
<pubDate>Tue, 13 Mar 2018 00:00:00 +0000</pubDate>
<guid isPermaLink="false">http://logbook.farpoint.space/sms-00-why?1520899200</guid>
<dc:creator>Kir'Valah</dc:creator>
<description>Я начинаю серию постов в которых хочу довольно подробно осветить как процесс разработки игр и приложений для приставки Sega Master System (далее для…</description>
<content:encoded><![CDATA[<p>Я начинаю серию постов в которых хочу довольно подробно осветить как процесс разработки игр и приложений для приставки Sega Master System (далее для краткости SMS) так и её устройство. По моей задумке мы пройдём от введения в основы теории и классической программы "hello world" до небольшой, но полноценной игры, тем самым покроем большую часть вопросов и аспектов создания игр для этой системы.</p>

<p>И сразу возникает ряд вопросов: "Почему именно SMS?", "Почему не NES/Dendy или Sega Mega Drive например?" или даже такой "Что это за странная сега такая? у нас такой не было в девяностые..."</p>

<p>Вполне справедливые вопросы. У нас, по крайней мере в моей среде, таких точно не было, и мы даже не представляли что такое может быть.</p> <a href="http://logbook.farpoint.space/sms-00-why">Читать дальше…</a>]]></content:encoded>
</item>
<item>
<title>UzeBox 01: Окружение</title>
<link>http://logbook.farpoint.space/uzebox-tutorial-01</link>
<pubDate>Fri, 20 Oct 2017 00:00:00 +0000</pubDate>
<guid isPermaLink="false">http://logbook.farpoint.space/uzebox-tutorial-01?1508457600</guid>
<dc:creator>Kir'Valah</dc:creator>
<description>Дело было вечером, делать было конечно есть чего, но хотелось чего-то для &quot;отдыха&quot;. Для отдыха подойдут игры. И пусть игры будут консольными и чтобы…</description>
<content:encoded><![CDATA[<p>Дело было вечером, делать было конечно есть чего, но хотелось чего-то для "отдыха". Для отдыха подойдут игры.
И пусть игры будут консольными и чтобы аж пиксели видно. Ну вобщем увидел я UzeBox. =)</p>

<p>Это очень минималистичная и по-своему уникальная консоль основана на микроконтроллере общего назначения - AVR ATmega644.
Подробности и детали <a href="http://belogic.com/uzebox/index.asp">здесь</a>.</p>

<p>Листая вики проекта я понял, что это именно то, чего я хотел для "отдыха", и сразу захотелось что-нибудь написать под это.
Чистый незамутнённый всякими ардуинами С для AVR и весьма хардкорные ограничения по ресурсам (64k флеша и 4k SRAM).</p>

<p>Тут я буду пытаться систематизировать то чему научился сам в максимально доступной форме.
Сегодня разберем установку окружения и самый простой hello world.</p> <a href="http://logbook.farpoint.space/uzebox-tutorial-01">Читать дальше…</a>]]></content:encoded>
</item>
</channel>
</rss>
