<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"  >
  <channel>
    <title>Комментарии к публикации «Устройство спецэффектов для игр под NES. Часть 1»</title>
    <link>https://habr.com/ru/post/353726/</link>
    <description><![CDATA[Комментарии к публикации «Устройство спецэффектов для игр под NES. Часть 1»]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Fri, 29 Apr 2022 11:59:31 GMT</pubDate>
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>




            <item>
      <title>22.04.2018 17:23:17 kocmoc941</title>
      <guid isPermaLink="true">https://habr.com/post/353726/#comment_10768786</guid>
      <link>https://habr.com/post/353726/#comment_10768786</link>
      <description><![CDATA[Во точно! читал же про зеркало, совсем из головы вылетело…<br>
Спасибо большое!, теперь всё стало окончательно ясно :)]]></description>
      <pubDate>Sun, 22 Apr 2018 17:23:17 GMT</pubDate>
      <dc:creator>kocmoc941</dc:creator>
    </item>
    <item>
      <title>20.04.2018 17:08:02 spiiin</title>
      <guid isPermaLink="true">https://habr.com/post/353726/#comment_10766156</guid>
      <link>https://habr.com/post/353726/#comment_10766156</link>
      <description><![CDATA[<a href="https://wiki.nesdev.com/w/index.php/PPU_palettes">wiki.nesdev.com/w/index.php/PPU_palettes</a><br>
<blockquote>Addresses $3F10/$3F14/$3F18/$3F1C are mirrors of $3F00/$3F04/$3F08/$3F0C. Note that this goes for writing as well as reading</blockquote><br>
<br>
Нулевой цвет зеркалируется для обеих палитр, т.е. если вы в цикле записываете 32 байта в две палитры, то вы сначала пишете нужный цвет в палитру фона, а потом записью в 0x3F10 его затираете. И наоборот, записью в 0x3F10 вы меняете цвет в 0x3F00.<br>
<br>
Так что при записи палитры спрайтов нужно отдельные байты записывать, пропуская адреса, которые зеркалируются.]]></description>
      <pubDate>Fri, 20 Apr 2018 17:08:02 GMT</pubDate>
      <dc:creator>spiiin</dc:creator>
    </item>
    <item>
      <title>20.04.2018 15:58:36 kocmoc941</title>
      <guid isPermaLink="true">https://habr.com/post/353726/#comment_10766020</guid>
      <link>https://habr.com/post/353726/#comment_10766020</link>
      <description><![CDATA[Не мигере и англоязычных сайтах смотрел всё равно не понимал, но нашёл старый журнал (в сети в djvu) «Игровые Приставки — Ремонт и Обслуживание», вот там всё нормально расписано с примерами, всё стало ясно, теперь уже когда мигеру читаешь, всё тоже ясно сразу становиться :)<br>
Только остался один непонятный момент, но это я тут почитаю ещё (по ссылке выше habrahabr.ru/post/348212) + поэсперементирую сам: фон закрашиваешся палитрой для первого спрайта (0x3F10), почему так хз, ведь везде пишут что должен закрашивать первым цветом из 0x3F00? <br>
Мой тесткейс:<br>
Я вывожу 960 пустых тайлов (16 байт, все 0), + в область атрибутов страницы пишу 64 нуля, в файле палитры (который гружу в 3F00 состоит из 32 байт) когда меняю первый байт — результата нуль, когда меняю байт 0x10 — то меняется фон (но это палитра спрайта!?)… Можете не отвечать сам дойду как нибудь, а так заранее спасибо! :)<br>]]></description>
      <pubDate>Fri, 20 Apr 2018 15:58:36 GMT</pubDate>
      <dc:creator>kocmoc941</dc:creator>
    </item>
    <item>
      <title>20.04.2018 06:43:48 spiiin</title>
      <guid isPermaLink="true">https://habr.com/post/353726/#comment_10764922</guid>
      <link>https://habr.com/post/353726/#comment_10764922</link>
      <description><![CDATA[Не согласен. Трюки и хитрости программисты графики использовали всегда, просто тогда это были трюки для того, чтобы сделать что-то, не умеет процессор. Позже — трюки, чтобы сделать то, что умеет последняя версия DirectX/OpenGL, а сейчас, чаще — трюки для обхода косяков Unity3D.<br>
<br>
Разница в том, что тогда они всё-таки были намного ближе к железу, и у них было меньше возможностей написать код, который работает, но они не знают почему. Ну и тогда разработчик графики мог быть иногда ещё и художником, вот это сейчас уже действительно редкость.]]></description>
      <pubDate>Fri, 20 Apr 2018 06:43:48 GMT</pubDate>
      <dc:creator>spiiin</dc:creator>
    </item>
    <item>
      <title>19.04.2018 18:23:57 perfect_genius</title>
      <guid isPermaLink="true">https://habr.com/post/353726/#comment_10764120</guid>
      <link>https://habr.com/post/353726/#comment_10764120</link>
      <description><![CDATA[Похоже, в те времена суметь со всем этим разобраться и умудриться саму игру сделать интересной — это был подвиг.]]></description>
      <pubDate>Thu, 19 Apr 2018 18:23:57 GMT</pubDate>
      <dc:creator>perfect_genius</dc:creator>
    </item>
    <item>
      <title>19.04.2018 11:33:18 JTG</title>
      <guid isPermaLink="true">https://habr.com/post/353726/#comment_10763238</guid>
      <link>https://habr.com/post/353726/#comment_10763238</link>
      <description><![CDATA[Вот это мясо! Отдельное спасибо за скрипты.]]></description>
      <pubDate>Thu, 19 Apr 2018 11:33:18 GMT</pubDate>
      <dc:creator>JTG</dc:creator>
    </item>
    <item>
      <title>19.04.2018 09:08:06 LynXzp</title>
      <guid isPermaLink="true">https://habr.com/post/353726/#comment_10762802</guid>
      <link>https://habr.com/post/353726/#comment_10762802</link>
      <description><![CDATA[<blockquote>Анимация сменой палитры</blockquote>Я так анимацию сделал на дисплее 1602. Символы остаются те же, но сам символ перерисовывается. (Вращение колеса и движение груза) Хотя там по-другому в большинстве случаев и не сделаешь (всего 8 кастомных символов).]]></description>
      <pubDate>Thu, 19 Apr 2018 09:08:06 GMT</pubDate>
      <dc:creator>LynXzp</dc:creator>
    </item>
    <item>
      <title>19.04.2018 08:39:30 VEG</title>
      <guid isPermaLink="true">https://habr.com/post/353726/#comment_10762742</guid>
      <link>https://habr.com/post/353726/#comment_10762742</link>
      <description><![CDATA[Большое спасибо за статью. Приятно видеть статьи по такой исключительно гиковской тематике. Это вам не блокчейн, о котором и так везде говорят!]]></description>
      <pubDate>Thu, 19 Apr 2018 08:39:30 GMT</pubDate>
      <dc:creator>VEG</dc:creator>
    </item>
    <item>
      <title>19.04.2018 08:37:13 VEG</title>
      <guid isPermaLink="true">https://habr.com/post/353726/#comment_10762734</guid>
      <link>https://habr.com/post/353726/#comment_10762734</link>
      <description><![CDATA[Ага, на <a href="http://dendy.migera.ru/">dendy.migera.ru</a> отличный справочник для начинающих программировать под Dendy. Я как раз им (наряду с <a href="http://wiki.nesdev.com/">wiki.nesdev.com</a>) пользовался когда делал <a href="http://veg.by/ru/projects/unchained/">Unchained Nostalgia</a>.<br>
<br>
<div class="oembed"><div><div style="left: 0px; width: 100%; height: 0px; position: relative; padding-bottom: 56.2493%;"><iframe src="https://www.youtube.com/embed/_9HYL21d8gQ?rel=0&amp;showinfo=1" frameborder="0" allowfullscreen="true" webkitallowfullscreen="true" mozallowfullscreen="true" style="top: 0px; left: 0px; width: 100%; height: 100%; position: absolute;"></iframe></div></div></div><br>
Надеялся, что меня отпустит после этого, но нет, тянет иногда поковыряться. Есть что-то в низкоуровневом программировании под такие старые архитектуры что-то манящее =)]]></description>
      <pubDate>Thu, 19 Apr 2018 08:37:13 GMT</pubDate>
      <dc:creator>VEG</dc:creator>
    </item>
    <item>
      <title>18.04.2018 16:18:47 loginsin</title>
      <guid isPermaLink="true">https://habr.com/post/353726/#comment_10761708</guid>
      <link>https://habr.com/post/353726/#comment_10761708</link>
      <description><![CDATA[Не то, чтобы она прям таки где-то хранится. Записывается она в PPU по адресам $3F00-$3F1F: первые 16 байт — палитра фона, затем 16 — палитра спрайтов.<br>
<a href="http://dendy.migera.ru/nes/g02.html">Здесь</a> можете почитать подробно. Вообще, там много интересного по денди можно найти, но в некоторых статьях на ресурсе присутствуют довольно обидные ошибки (скорее опечатки).]]></description>
      <pubDate>Wed, 18 Apr 2018 16:18:47 GMT</pubDate>
      <dc:creator>loginsin</dc:creator>
    </item>
    <item>
      <title>18.04.2018 16:16:37 spiiin</title>
      <guid isPermaLink="true">https://habr.com/post/353726/#comment_10761702</guid>
      <link>https://habr.com/post/353726/#comment_10761702</link>
      <description><![CDATA[Дык привёл же вроде…<br>
<a href="https://habrahabr.ru/post/348212/">habrahabr.ru/post/348212</a><br>
<a href="http://dendy.migera.ru/nes/g02.html">dendy.migera.ru/nes/g02.html</a><br>
<br>
Парой предложений понятнее целой статьи не распишешь. Если относительно NES сходу непонятно, сначала попробуйте разобраться с определениями индексированных цветов и палитровой графики.]]></description>
      <pubDate>Wed, 18 Apr 2018 16:16:37 GMT</pubDate>
      <dc:creator>spiiin</dc:creator>
    </item>
    <item>
      <title>18.04.2018 15:59:13 kocmoc941</title>
      <guid isPermaLink="true">https://habr.com/post/353726/#comment_10761688</guid>
      <link>https://habr.com/post/353726/#comment_10761688</link>
      <description><![CDATA[Продолжайте в том же духе!<br>
Хотелось бы только понять как храниться палитра в памяти, везде написано как то муторно, киньте плз ссыль на нормальное описание палитры (или в статье осветите), а то: храниться по 8 байт каждые из которых формируют младший и старший бит палитры… такое ощущение что везде одно и тоже, либо перевод, либо копипаст… <br>
С гифками вроде всё ок, не много и не мало. Спс за статью!]]></description>
      <pubDate>Wed, 18 Apr 2018 15:59:13 GMT</pubDate>
      <dc:creator>kocmoc941</dc:creator>
    </item>
    <item>
      <title>18.04.2018 15:37:26 spiiin</title>
      <guid isPermaLink="true">https://habr.com/post/353726/#comment_10761642</guid>
      <link>https://habr.com/post/353726/#comment_10761642</link>
      <description><![CDATA[<blockquote>Если можно, объясните, как реализовали эффект «волн»</blockquote><br>
<br>
Это эффект изменения позиции скроллинга в середине кадра, про такие будет в следующей части. Картинка рисуется нормальной в экранной странице, а при выводе каждой строки осуществляется смещение чётных строк на X пикселей влево, а нечётных — на X пикселей вправо (это позволяет делать маппер MMC3, который используется в игре). X меняется каждый кадр — получаются волны. Вот этот эффект с наложенными зелёными линиями в тех строках, на которых меняется сдвиг.<br>
<img src="https://habrastorage.org/webt/9n/df/kr/9ndfkrpp7n3ek7ishy6gytgtyle.gif"><br>
<br>
<blockquote>Ну и как реализуется логика 3D в этой игре, ведь большинство уровней в трёх измерениях сделано.</blockquote><br>
Ну, это называется 2,5D — для полноценного третьего измерения не хватает изменения размеров при удалении объектов от наблюдателя. Хотя там море во втором уровне сделано с симуляцией этого эффекта. Для 2,5D особенно делать ничего и не нужно, достаточно при рендере объектов сортировать в порядке от самых дальних к зрителю к самым ближним, см. <a href="https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D1%85%D1%83%D0%B4%D0%BE%D0%B6%D0%BD%D0%B8%D0%BA%D0%B0">Алгоритм художника</a>]]></description>
      <pubDate>Wed, 18 Apr 2018 15:37:26 GMT</pubDate>
      <dc:creator>spiiin</dc:creator>
    </item>
    <item>
      <title>18.04.2018 15:14:15 AVX</title>
      <guid isPermaLink="true">https://habr.com/post/353726/#comment_10761580</guid>
      <link>https://habr.com/post/353726/#comment_10761580</link>
      <description><![CDATA[Интересно, спасибо!<br>
Всегда интересовало, как могли реализовать на NES некоторые достаточно сложные вещи. Если можно, объясните, как реализовали эффект «волн», например как в черепашках-ниндзя 3, в момент появления стартового меню. Там ещё голосом что-то выкрикивают, не знаю как написать. Ну и как реализуется логика 3D в этой игре, ведь большинство уровней в трёх измерениях сделано.]]></description>
      <pubDate>Wed, 18 Apr 2018 15:14:15 GMT</pubDate>
      <dc:creator>AVX</dc:creator>
    </item>



  </channel>
</rss>
