<story><title>Nintendo has reportedly suffered a significant legacy console leak</title><url>https://www.videogameschronicle.com/news/nintendo-has-reportedly-suffered-a-significant-legacy-console-leak/</url></story><parent_chain><item><author>dehrmann</author><text>I have zero experience in the video game industry, but I&amp;#x27;d think that since video games get ~zero attention after they&amp;#x27;re shipped, writing maintainable code is less of a priority.&lt;p&gt;I&amp;#x27;d be really curious to see how the Pokemon Red&amp;#x2F;Blue split was done. Is it a C precompiler flag? Build config? Actual config? Cloned repo?</text></item><item><author>TheAceOfHearts</author><text>Modern Vintage Gamer just released a video [0] discussing this leak in greater detail along with its expected implications.&lt;p&gt;Anyone who&amp;#x27;s curious can find the download links by backtracking through all the Pokemon Prototype General threads under the Pokemon board on 4chan.&lt;p&gt;One of the leaks that caught my attention was the source for Pokemon Blue, partially because of nostalgia and partially out of curiosity to see what an old game&amp;#x27;s codebase even looks like. The first thing that stood out to me was the project&amp;#x27;s flat folder structure, full of hundreds of files; I guess I was expecting things to be a bit more structured. The source is more readable and approachable than I expected, although I&amp;#x27;ve only poked around in some of the more obvious places and definitions. I&amp;#x27;d recommend watching The Ultimate Game Boy Talk [1] before trying to dive into any code.&lt;p&gt;[0] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.youtube.com&amp;#x2F;watch?v=n8G7eq0GlQs&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.youtube.com&amp;#x2F;watch?v=n8G7eq0GlQs&lt;/a&gt;&lt;p&gt;[1] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.youtube.com&amp;#x2F;watch?v=HyzD8pNlpwI&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.youtube.com&amp;#x2F;watch?v=HyzD8pNlpwI&lt;/a&gt;</text></item></parent_chain><comment><author>TheAceOfHearts</author><text>In the Pokemon Blue codebase they use 2 flag variables to distinguish between the different games, these are `pokemon_type` and `pokemon_type_blue`. The name of the second flag definitely hints that it was added later in development.&lt;p&gt;These are the values for each game:&lt;p&gt;&lt;pre&gt;&lt;code&gt;    Green:  pokemon_type=0 pokemon_type_blue=0
    Red:    pokemon_type=1 pokemon_type_blue=0
    Blue:   pokemon_type=1 pokemon_type_blue=1
&lt;/code&gt;&lt;/pre&gt;
The general pattern for branching between game variations looks like this across the codebase:&lt;p&gt;&lt;pre&gt;&lt;code&gt;    ifn pokemon_type
      ifn pokemon_type_blue
        ; blue
      else
        ; red
      endif
    else
      ; green
    endif
&lt;/code&gt;&lt;/pre&gt;
Conditional assembly directives like `ifn` are resolved statically during assembly, so only the code between matching conditions is included as part of the output. To anyone interested in exploring this a bit more, I&amp;#x27;d recommend reading Chapter 8 Section 13 of the DOS version of The Art of Assembly Language Programming [0], which starts on page 43 of the linked PDF.&lt;p&gt;Bonus fun-fact: In the Pokemon Yellow codebase it says `pokemon_type=1` is yellow, while `pokemon_type=0` is pink! This suggests to me that the idea of Pokemon Pink with Jigglypuff as your starter was probably being floated around but it was eventually scrapped. (The only remaining options for a pink starter pokemon with a pink evolution in the original 151 would be Clefairy and Slowpoke, neither of which are very cute.) The idea of Jigglypuff as a starter is further supported by her appearance alongside Pikachu on the roster of the original Super Smash Bros. which seems rather unexpected unless they had bigger plans for her.&lt;p&gt;[0] &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;www.plantation-productions.com&amp;#x2F;Webster&amp;#x2F;www.artofasm.com&amp;#x2F;DOS&amp;#x2F;pdf&amp;#x2F;ch08.pdf&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;www.plantation-productions.com&amp;#x2F;Webster&amp;#x2F;www.artofasm.c...&lt;/a&gt;</text></comment>
<story><title>Nintendo has reportedly suffered a significant legacy console leak</title><url>https://www.videogameschronicle.com/news/nintendo-has-reportedly-suffered-a-significant-legacy-console-leak/</url></story><parent_chain><item><author>dehrmann</author><text>I have zero experience in the video game industry, but I&amp;#x27;d think that since video games get ~zero attention after they&amp;#x27;re shipped, writing maintainable code is less of a priority.&lt;p&gt;I&amp;#x27;d be really curious to see how the Pokemon Red&amp;#x2F;Blue split was done. Is it a C precompiler flag? Build config? Actual config? Cloned repo?</text></item><item><author>TheAceOfHearts</author><text>Modern Vintage Gamer just released a video [0] discussing this leak in greater detail along with its expected implications.&lt;p&gt;Anyone who&amp;#x27;s curious can find the download links by backtracking through all the Pokemon Prototype General threads under the Pokemon board on 4chan.&lt;p&gt;One of the leaks that caught my attention was the source for Pokemon Blue, partially because of nostalgia and partially out of curiosity to see what an old game&amp;#x27;s codebase even looks like. The first thing that stood out to me was the project&amp;#x27;s flat folder structure, full of hundreds of files; I guess I was expecting things to be a bit more structured. The source is more readable and approachable than I expected, although I&amp;#x27;ve only poked around in some of the more obvious places and definitions. I&amp;#x27;d recommend watching The Ultimate Game Boy Talk [1] before trying to dive into any code.&lt;p&gt;[0] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.youtube.com&amp;#x2F;watch?v=n8G7eq0GlQs&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.youtube.com&amp;#x2F;watch?v=n8G7eq0GlQs&lt;/a&gt;&lt;p&gt;[1] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.youtube.com&amp;#x2F;watch?v=HyzD8pNlpwI&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.youtube.com&amp;#x2F;watch?v=HyzD8pNlpwI&lt;/a&gt;</text></item></parent_chain><comment><author>ptmcc</author><text>In the old days that was probably more true than it is today, since so many games are &amp;quot;as a service&amp;quot; now with shared engines, online platforms, continual updates&amp;#x2F;patches, tons of expansions and DLC, supporting mods, etc.&lt;p&gt;The downside is that we&amp;#x27;ll never really be able to play today&amp;#x27;s games nostalgically like we can with old burned-to-ROM games.&lt;p&gt;Online multiplayer games have a shelf life of sorts that depends on the servers being available and having other people to play with. There&amp;#x27;s a few examples of community-driven projects to revive classic online multiplayer games with mixed success but it&amp;#x27;ll just never be the same thing.</text></comment>