<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to LevelEnd</title><link>https://sourceforge.net/p/feos-tas/wiki/LevelEnd/</link><description>Recent changes to LevelEnd</description><atom:link href="https://sourceforge.net/p/feos-tas/wiki/LevelEnd/feed" rel="self"/><language>en</language><lastBuildDate>Fri, 13 Mar 2015 15:30:43 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/feos-tas/wiki/LevelEnd/feed" rel="self" type="application/rss+xml"/><item><title>Discussion for LevelEnd page</title><link>https://sourceforge.net/p/feos-tas/wiki/LevelEnd/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Originally posted by: imp3r...@gmail.com&lt;/p&gt;
&lt;p&gt;божественно! &lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Fri, 13 Mar 2015 15:30:43 -0000</pubDate><guid>https://sourceforge.net72fde8606158b62acb34d85a98b7164d03d23af0</guid></item><item><title>LevelEnd modified by Anonymous</title><link>https://sourceforge.net/p/feos-tas/wiki/LevelEnd/</link><description>&lt;div class="markdown_content"&gt;&lt;ol&gt;
&lt;li&gt;По логике разрабов, уровень 3 не рестартится при смерти жабы, пока не затронут чекпойнт трассы. Когда он затронут, в адрес $E5-E6 пишется поинтер на конфиг объектов, который потом в случае сметри жабы на байке пишется в $B7-B8. Мы умираем, не затронув чекпоинта, таким образом в $B7-B8 пишется #$00! СЛЕДОВАТЕЛЬНО, объекты начинают читаться прямо с начала РАМ. &lt;/li&gt;
&lt;li&gt;В начале каждого уровня идет загрузка начальных объектов, сначала во время лага грузятся жабы, потом сразу после лага точка рестарта, враги по очереди, и всё, поинтер не меняется пока в ходе уровня ему сам геймплей не прикажет. То есть при начале уровня он в течение нескольких кадров автоматически изменяется несколько раз подряд на длину дескриптора объектов (#$0B). &lt;/li&gt;
&lt;li&gt;Так как изначальное значение поинтера стало 0x00, то он переключается начиная с 0x0B (которое сразу же после обнуления вписывается, в ходе того же кадра, еще ДО ЛАГА) и далее по 0x16, 0x21, 0x2C и 0x37. &lt;/li&gt;
&lt;li&gt;Так уж сложилось, что в адреса $15 и $16 игра пишет значения джоев, чтобы регистрировать Tap'n'Hold. Субрутина перекидывает по 1 биту из соответствующего джоя в соответствующий адрес нулевой страницы посредством флага переноса и ROR/ROL, совершаемых по 8 раз. &lt;/li&gt;
&lt;li&gt;Много везения, и мы имеем поинтер указывающий игре на адрес $16 для чтения с него объектов, а в этом адресе у нас значение инпута 2 джоя, равное в данный кадр 0x7F. &lt;/li&gt;
&lt;li&gt;Игра начинает искать первый же пустой слот объекта. Первые 2 заняты жабами, третий занят байком, 4 свободен. В него и попадает ID=0x7F. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=bOweqz4cDlA" rel="nofollow"&gt;http://www.youtube.com/watch?v=bOweqz4cDlA&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Fri, 13 Mar 2015 15:30:43 -0000</pubDate><guid>https://sourceforge.net57f5e7d2bd364cfc9a56dac989aa3ebca2346488</guid></item></channel></rss>