<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <title>Games By Rich</title>
    <link href="https://gamesbyrich.com/feed.xml" rel="self" />
    <link href="https://gamesbyrich.com" />
    <updated>2026-11-03T12:25:46-05:00</updated>
    <author>
        <name>Rich</name>
    </author>
    <id>https://gamesbyrich.com</id>

    <entry>
        <title>Developing for the Atari 2600</title>
        <author>
            <name>Rich</name>
        </author>
        <link href="https://gamesbyrich.com/developing-for-the-atari-2600/"/>
        <id>https://gamesbyrich.com/developing-for-the-atari-2600/</id>

        <updated>2026-11-03T10:49:40-05:00</updated>
            <summary type="html">
                <![CDATA[
                    The Atari 2600 is an interesting machine to develop for. Released in 1977, the 2600 has several limitations that almost require developers to get creative&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                <div>The Atari 2600 is an interesting machine to develop for. Released in 1977, the 2600 has several limitations that almost require developers to get creative and reach beyond what the machine was built for: no modern engines, no graphics card, no framebuffers, and less memory than a goldfish.</div>
<div> </div>
<div>The good news is that while the limitations have been kept in place, the tools to develop for the 2600 have evolved drastically since the 80s, allowing a faster workflow and more flexibility within the confined limitations.</div>
<div> </div>
<div>I've been tinkering and dabbling with the Atari 2600 as a player for decades, and I've been trying to decode this thing for many years; I hope this article helps you get started making applications for this wonderful machine.</div>
<h3>My Current Workflow</h3>
<p> </p>
<div>My current workflow for programming the Atari 2600 is much simpler than it used to be. I now use Visual Studio Code (VS Code) with the Atari Dev Studio extension. That's it! If you're comfortable using VS Code, this will feel natural. The Atari Dev Studio extension is almost a one-stop shop for everything you need, including a DASM assembler and sprite editing; it really feels like the go-to for Atari game development.</div>
<h3>Alternate Workflows</h3>
<p> </p>
<div>Although VS Code is robust and used frequently by developers of all walks of life, I would be missing something if I didn't mention another great resource for prototyping and testing: the 8Bit Workshop IDE.</div>
<div> </div>
<div>The 8BitWorkshop IDE is an IDE (Integrated Development Environment) that runs in your browser and provides almost a WYSIWYG (What you see is what you get) experience. Located at <a href="http://8bitworkshop.com/">8bitworkshop.com/,</a> code is typed and compiled the moment you finish typing a line. This quick, easy, responsive platform is amazing for beginners because you don't have to fiddle with extensions, configurations, or anything like that. Just code and see your results. You can even download your ROM file, right from the browser. It's honestly such a great resource for dipping your toes in the water with the 2600.</div>
<h3>Learning the Language</h3>
<p> </p>
<div>So now that you have the tools to program for the Atari 2600, how do you really begin? Reading. Lots of reading. The 6502 (or rather 6507) requires specific instructions, specific timings, and if you don't know what you are doing, you're not really going to get anywhere.</div>
<div> </div>
<div>There are tons of resources online that can certainly assist your learning, and there's plenty of literature that provides examples and rationales for why things are done a certain way. I'll list a few below that I would suggest to start with:</div>
<div> </div>
<ul>
<li>Making Games for the Atari 2600 by Steven Hugg --This is particularly useful when working with 8bitworkshop.</li>
<li>Programming Games for Atari 2600 by Oscar Toledo Gutierrez</li>
<li>Stella Programmer's Guide by Steve Wright (this is the bible of Atari 2600 programming -- This is practically the bible of Atari 2600 programming. It's an invaluable reference, although I'd recommend working through some introductory material first because this guide can get you lost faster than it gets you somewhere!</li>
</ul>
<h3>What I Don't Use (and Why)</h3>
<p> </p>
<div>You'll come across lots of articles and resources for writing programs in BASIC, like Atari BASIC or bB. There's nothing inherently wrong with batari Basic. It's made Atari 2600 development more accessible, and people have created some impressive games with it. However, I personally prefer to avoid it. For me, much of the enjoyment of developing for the Atari 2600 comes from working directly with the hardware in assembly language. I want to understand what's happening, why it's happening, and how I can make the machine do something it wasn't necessarily intended to do. Assembly gives me that level of control, especially for timing, memory usage, and graphics routines. It has a steeper learning curve, but I think the knowledge you gain along the way is worth the effort.</div>
<div> </div>
<div>Most traditional Atari 2600 game cartridges are sized at 4KB (yes...KB!) in size. That might seem like a tight limitation, considering your profile picture on any social media site is roughly 4 times as big. But it can be more than enough to get a good game going, and it simplifies the programming process. When you need to expand to 8KB or even 16KB, you'll need to use something called bankswitching and that can be tricky if you don't know what you are doing. For the first few projects, do your best to stay within the 4KB limit.</div>
<div> </div>
<div>Lastly, if you're going to program for the 2600, I'd avoid generated applications. While they can get you up and running faster, they won't give you the foundational knowledge to build with your own creativity. The 2600 can foster creativity due to its limitations, and you want to lean into them. Many games on the Atari 2600 shouldn't have been possible on paper. Still, with creativity and outside-the-box thinking, you can create something that pushes the hardware far beyond what anyone originally imagined. To me, that's the real appeal of programming for the 2600: not just making something work, but figuring out how to make something work when the hardware tells you it shouldn't.</div>
<h3>Final Thoughts</h3>
<p> </p>
<div>If you're interested in making your own Atari 2600 games, you don't need an elaborate development environment to begin. A browser, a few example programs, and a willingness to experiment can take you surprisingly far.</div>
<div> </div>
<div>After all, you're writing software for a machine designed in the 1970s.</div>
<div> </div>
<div>The tools may be modern, but the challenge is very much the same.</div>
            ]]>
        </content>
    </entry>
    <entry>
        <title>Announcing: Night Shift</title>
        <author>
            <name>Rich</name>
        </author>
        <link href="https://gamesbyrich.com/announcing-night-shift/"/>
        <id>https://gamesbyrich.com/announcing-night-shift/</id>

        <updated>2026-10-30T20:09:09-04:00</updated>
            <summary type="html">
                <![CDATA[
                    For the first time in a while, I’ve been working on something new. Night Shift is an original game for the Atari 2600, currently in&hellip;
                ]]>
            </summary>
        <content type="html">
            <![CDATA[
                <figure></figure>
<figure></figure>
<figure></figure>
<p class="p1">For the first time in a while, I’ve been working on something new.</p>
<p class="p1">Night Shift is an original game for the Atari 2600, currently in development.</p>
<p class="p1">You’ve been assigned the overnight shift at an aging industrial facility. Your job is to keep things running until morning.</p>
<p class="p1">It should be an easy night.</p>
<p class="p1">It isn’t.</p>
<p class="p1">There’s still work to be done, but the game has reached the point where I’m ready to start showing a little of it.</p>
<p class="p1">Here’s the first teaser.</p>
<figure class="post__video">
<p> </p>
<video loading="lazy" width="300" height="225" controls="controls">
		<source src="https://gamesbyrich.com/videos/NST1.mp4" type="video/mp4" data-mce-fragment="1">
	</video></figure>
            ]]>
        </content>
    </entry>
</feed>
