<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hardware Quirks as Features on Programming the Atari VCS in Assembly</title><link>https://cdeever.github.io/atari-vcs/docs/hardware-quirks/</link><description>Recent content in Hardware Quirks as Features on Programming the Atari VCS in Assembly</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://cdeever.github.io/atari-vcs/docs/hardware-quirks/index.xml" rel="self" type="application/rss+xml"/><item><title>Cosmic Ark's Star Field</title><link>https://cdeever.github.io/atari-vcs/docs/hardware-quirks/cosmic-ark-starfield/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/atari-vcs/docs/hardware-quirks/cosmic-ark-starfield/</guid><description>&lt;h1 id="cosmic-arks-star-field"&gt;Cosmic Ark&amp;rsquo;s Star Field&lt;a class="anchor" href="#cosmic-arks-star-field"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Imagic&amp;rsquo;s &lt;em&gt;Cosmic Ark&lt;/em&gt; (1982) opens with a starfield so clean it looks impossible on a machine that can show &lt;a href="https://cdeever.github.io/atari-vcs/docs/sprites/"&gt;two sprites and a ball&lt;/a&gt;. Crisp white stars, evenly spaced, drifting smoothly — far more points of light than the TIA has objects to draw them with. The secret is the most celebrated &lt;strong&gt;bug&lt;/strong&gt; in Atari history.&lt;/p&gt;
&lt;h2 id="a-glitch-nobody-ordered"&gt;A glitch nobody ordered&lt;a class="anchor" href="#a-glitch-nobody-ordered"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The effect is a single &lt;strong&gt;missile&lt;/strong&gt; misbehaving. As &lt;a href="https://cdeever.github.io/atari-vcs/docs/sprites/horizontal-positioning/"&gt;Horizontal Positioning&lt;/a&gt; explained, an object&amp;rsquo;s position is retimed by strobing &lt;code&gt;HMOVE&lt;/code&gt; — and that retiming is delicate, built on the TIA&amp;rsquo;s and CPU&amp;rsquo;s clocks lining up just so. Strobe &lt;code&gt;HMOVE&lt;/code&gt; &lt;em&gt;the wrong way&lt;/em&gt; — at the wrong point in the line, or an extra time — and the missile&amp;rsquo;s position logic comes unglued: instead of moving once, the missile gets redrawn again and again across the scanline, scattering a row of evenly-spaced dots. Point that at the screen every frame and you have a starfield, conjured from one object the TIA never meant to clone.&lt;/p&gt;</description></item><item><title>Yars' Revenge's Neutral Zone</title><link>https://cdeever.github.io/atari-vcs/docs/hardware-quirks/yars-revenge-neutral-zone/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/atari-vcs/docs/hardware-quirks/yars-revenge-neutral-zone/</guid><description>&lt;h1 id="yars-revenges-neutral-zone"&gt;Yars&amp;rsquo; Revenge&amp;rsquo;s Neutral Zone&lt;a class="anchor" href="#yars-revenges-neutral-zone"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Down the middle of &lt;em&gt;Yars&amp;rsquo; Revenge&lt;/em&gt; (Atari, 1982 — the best-selling original Atari-made VCS game) runs the &lt;strong&gt;neutral zone&lt;/strong&gt;: a shimmering, churning band of multicolored static the player&amp;rsquo;s insect hero can hide in. It looks like deliberate visual noise. It is something stranger: you are looking directly at &lt;strong&gt;the game&amp;rsquo;s own program&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="the-picture-is-the-code"&gt;The picture is the code&lt;a class="anchor" href="#the-picture-is-the-code"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Howard Scott Warshaw had no spare &lt;a href="https://cdeever.github.io/atari-vcs/docs/architecture/rom/"&gt;ROM&lt;/a&gt; for a dedicated graphic — a &lt;a href="https://cdeever.github.io/atari-vcs/docs/burning-eprom/preparing-the-image/"&gt;4 KB cartridge&lt;/a&gt; leaves nothing to waste. So instead of &lt;em&gt;storing&lt;/em&gt; a pattern, he pointed the display at memory the program already contained: the neutral zone reads its bytes straight from the &lt;strong&gt;section of ROM that holds the game&amp;rsquo;s code&lt;/strong&gt;, cycling through it so the bytes scroll and shimmer rather than sit still. The instructions that run the game do double duty as the texture on screen.&lt;/p&gt;</description></item><item><title>A Grab Bag of Clever Abuses</title><link>https://cdeever.github.io/atari-vcs/docs/hardware-quirks/more-quirks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/atari-vcs/docs/hardware-quirks/more-quirks/</guid><description>&lt;h1 id="a-grab-bag-of-clever-abuses"&gt;A Grab Bag of Clever Abuses&lt;a class="anchor" href="#a-grab-bag-of-clever-abuses"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Not every exploited quirk got its own legend like &lt;a href="https://cdeever.github.io/atari-vcs/docs/hardware-quirks/cosmic-ark-starfield/"&gt;Cosmic Ark&lt;/a&gt; or &lt;a href="https://cdeever.github.io/atari-vcs/docs/hardware-quirks/yars-revenge-neutral-zone/"&gt;Yars&amp;rsquo; Revenge&lt;/a&gt;. Many became everyday tools — techniques born from a limitation that programmers simply learned to live inside. A sampler.&lt;/p&gt;
&lt;h2 id="flicker-more-objects-than-the-hardware-has"&gt;Flicker: more objects than the hardware has&lt;a class="anchor" href="#flicker-more-objects-than-the-hardware-has"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The TIA gives you exactly &lt;a href="https://cdeever.github.io/atari-vcs/docs/sprites/"&gt;two players&lt;/a&gt;. Plenty of games need to show three, four, or a dozen moving things — the ghosts chasing Pac-Man, a field of asteroids, a wall of &lt;em&gt;Warlords&lt;/em&gt; bricks. The answer is &lt;strong&gt;flicker&lt;/strong&gt;: draw some objects on even frames and the rest on odd frames, reusing the same two players for different things each pass. At 60 frames a second, each object appears only 30 times a second, and the eye mostly fuses them into a steady crowd.&lt;/p&gt;</description></item></channel></rss>