<story><title>Making a Game Boy Game. Part 1: Getting Started</title><url>https://invisibleup.neocities.org/articles/18/</url></story><parent_chain><item><author>anyfoo</author><text>I&amp;#x27;m not too familiar with game development, is that unusual? It&amp;#x27;s pretty natural in other forms of software development. In user space, you mostly wait on system calls (e.g. select, blocking read&amp;#x2F;write, thread synchronization primitives), and in the kernel that usually translates to another process being scheduled. If there&amp;#x27;s nothing to be scheduled, you hit the idle loop, which, roughly spoken, halts the core until the next interrupt. Sometimes you need to poll a device that does not signal completion with an interrupt, or some locks may actually spin (for a while at least) before sleeping, but, conceptually at least, I&amp;#x27;d almost call those exceptions to a rule.</text></item><item><author>sneakernets</author><text>Game Boy development was interesting in that you were always coding with battery in mind. You couldn&amp;#x27;t simply &amp;quot;NOP&amp;quot; your way through something, you had to &amp;quot;HALT&amp;quot;. So your game loop was always &amp;quot;halt and wait for interrupt, do action, halt again&amp;quot;.&lt;p&gt;Allegedly, if you didn&amp;#x27;t do this, Nintendo would reject your game outright.</text></item></parent_chain><comment><author>white-flame</author><text>This isn&amp;#x27;t necessarily different for game development, but it&amp;#x27;s different for Game Boy scale hardware, where there is no scheduler&amp;#x2F;kernel&amp;#x2F;OS&amp;#x2F;anything.  You manually have to halt the hardware if you don&amp;#x27;t want the CPU to spin, and busy-loops were common on home computers &amp;amp; mains-powered consoles of the same era.</text></comment>
<story><title>Making a Game Boy Game. Part 1: Getting Started</title><url>https://invisibleup.neocities.org/articles/18/</url></story><parent_chain><item><author>anyfoo</author><text>I&amp;#x27;m not too familiar with game development, is that unusual? It&amp;#x27;s pretty natural in other forms of software development. In user space, you mostly wait on system calls (e.g. select, blocking read&amp;#x2F;write, thread synchronization primitives), and in the kernel that usually translates to another process being scheduled. If there&amp;#x27;s nothing to be scheduled, you hit the idle loop, which, roughly spoken, halts the core until the next interrupt. Sometimes you need to poll a device that does not signal completion with an interrupt, or some locks may actually spin (for a while at least) before sleeping, but, conceptually at least, I&amp;#x27;d almost call those exceptions to a rule.</text></item><item><author>sneakernets</author><text>Game Boy development was interesting in that you were always coding with battery in mind. You couldn&amp;#x27;t simply &amp;quot;NOP&amp;quot; your way through something, you had to &amp;quot;HALT&amp;quot;. So your game loop was always &amp;quot;halt and wait for interrupt, do action, halt again&amp;quot;.&lt;p&gt;Allegedly, if you didn&amp;#x27;t do this, Nintendo would reject your game outright.</text></item></parent_chain><comment><author>phamilton</author><text>Run something like the original starcraft on modern hardware. It&amp;#x27;ll use 100% of a cpu.</text></comment>