<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>behindthecode &#8211; Set Side B</title>
	<atom:link href="https://setsideb.com/tag/behindthecode/feed/" rel="self" type="application/rss+xml" />
	<link>https://setsideb.com</link>
	<description>The Flipside of Gaming</description>
	<lastBuildDate>Sat, 18 Apr 2026 07:55:34 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://setsideb.com/wp-content/uploads/2022/04/cropped-mascot512-32x32.png</url>
	<title>behindthecode &#8211; Set Side B</title>
	<link>https://setsideb.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Displaced Gamers on Final Fantasy I Combat &#038; Bugs</title>
		<link>https://setsideb.com/displaced-gamers-on-final-fantasy-combat-bugs/</link>
					<comments>https://setsideb.com/displaced-gamers-on-final-fantasy-combat-bugs/#respond</comments>
		
		<dc:creator><![CDATA[rodneylives]]></dc:creator>
		<pubDate>Sat, 18 Apr 2026 14:00:00 +0000</pubDate>
				<category><![CDATA[retro]]></category>
		<category><![CDATA[BattleMath]]></category>
		<category><![CDATA[behindthecode]]></category>
		<category><![CDATA[displacedgamers]]></category>
		<category><![CDATA[famicom]]></category>
		<category><![CDATA[finalfantasy]]></category>
		<category><![CDATA[jrpg]]></category>
		<category><![CDATA[nes]]></category>
		<category><![CDATA[square]]></category>
		<guid isPermaLink="false">https://setsideb.com/?p=12041</guid>

					<description><![CDATA[Displaced Gamers has yet another fascinating &#8220;Behind the Code&#8221; dive into the workings of an NES game, this time the original Final Fantasy. (30 minutes) We&#8217;ve linked videos in this series many times before, but it&#8217;s wuite a doozy this time. Final Fantasy is known to have a number of combat bugs. Critical Hit chances &#8230; <a href="https://setsideb.com/displaced-gamers-on-final-fantasy-combat-bugs/" class="more-link">Continue reading<span class="screen-reader-text"> "Displaced Gamers on Final Fantasy I Combat &#38; Bugs"</span></a>]]></description>
										<content:encoded><![CDATA[
<p>Displaced Gamers has yet another fascinating &#8220;<a href="https://www.youtube.com/watch?v=gTfPLl_AJvs&amp;list=PLn5sTGew1WGD2Tnspn9vhpLGf-kqDRbYy">Behind the Code</a>&#8221; dive into the workings of an NES game, this time <a href="https://www.youtube.com/watch?v=O_CLnBCgJks"><strong>the original Final Fantasy</strong></a>. (30 minutes)</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="The Final Fantasy Battle Engine: A Dissection of Physical Attacks - Behind the Code" width="840" height="473" src="https://www.youtube.com/embed/O_CLnBCgJks?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>We&#8217;ve linked videos in this series many times before, but it&#8217;s wuite a doozy this time. Final Fantasy is known to have a number of combat bugs. Critical Hit chances are determined by the index of the weapon in the weapon table, not the stat in that table; weapon special properties just don&#8217;t work, regardless of what the Nintendo Power Strategy Guide says; and more.</p>



<p>This isn&#8217;t just an explication of those bugs though, it goes through all of how basic (non-magic) combat works in the game, explaining the value of all the stats. That&#8217;s one of the things about RPGs: you&#8217;re told items are &#8220;+4 better,&#8221; but often those values don&#8217;t match up to what they&#8217;d mean in D&amp;D, where a plus is usually either a one-point increase in damage, a 5% improvement on odds for something, or both. Final Fantasy&#8217;s attack roll turns out to be a 1-in-200 die, so, a mere +1 is negligible to attack odds.</p>



<p>They probably didn&#8217;t elaborate on what these numbers mean in the manual because, at the time, Square and Nintendo were keen to get players hooked on Final Fantasy and other JRPGs, and nothing would dissuade them from picking up the game than to be confronted with <em>battle formulae</em> in the manual. Looks too much like school work! But they could have at least mentioned something about relative chances?</p>



<p>If you really want to know what the numbers mean, the video is there waiting for you. You can just let your eyes glaze over during the math if you want. I won&#8217;t tell the teacher!</p>



<p></p>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt='rodneylives' src='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=100&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=200&#038;d=mm&#038;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' itemprop="image"/></div><div class="saboxplugin-authorname"><a href="https://setsideb.com/author/rodneylives/" class="vcard author" rel="author"><span class="fn">rodneylives</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div><div class="saboxplugin-socials "><a title="Twitter" target="_self" href="https://twitter.com/rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Instagram" target="_self" href="https://www.instagram.com/rodneysnotdead/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Html5" target="_self" href="https://www.metafilter.com/user/23306" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-html5" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"></path></svg></span></a><a title="Mastodont" target="_self" href="https://cybre.space/@rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-mastodont" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 417 512"><path fill="currentColor" d="M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"></path></svg></span></a></div></div></div>]]></content:encoded>
					
					<wfw:commentRss>https://setsideb.com/displaced-gamers-on-final-fantasy-combat-bugs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Wherefore Commando&#8217;s Jank?</title>
		<link>https://setsideb.com/wherefore-commandos-jank/</link>
		
		<dc:creator><![CDATA[rodneylives]]></dc:creator>
		<pubDate>Sat, 07 Feb 2026 15:00:00 +0000</pubDate>
				<category><![CDATA[development]]></category>
		<category><![CDATA[retro]]></category>
		<category><![CDATA[behindthecode]]></category>
		<category><![CDATA[capcom]]></category>
		<category><![CDATA[Commando]]></category>
		<category><![CDATA[displacedgamers]]></category>
		<category><![CDATA[glitches]]></category>
		<guid isPermaLink="false">https://setsideb.com/?p=11612</guid>

					<description><![CDATA[Displaced Gamers&#8217; Behind the Code series is back, with an under-the-hood look at another NES Capcom game, following their examinations of Ghosts &#38; Goblins and Strider, links are to our previous pointers to their peerless product. G&#38;G was implemented by popular early NES anonymous developer and target of player recrimination Micronics, but Commando can&#8217;t use &#8230; <a href="https://setsideb.com/wherefore-commandos-jank/" class="more-link">Continue reading<span class="screen-reader-text"> "Wherefore Commando&#8217;s Jank?"</span></a>]]></description>
										<content:encoded><![CDATA[
<p>Displaced Gamers&#8217; <a href="https://www.youtube.com/playlist?list=PLn5sTGew1WGD2Tnspn9vhpLGf-kqDRbYy">Behind the Code</a> series is back, with an under-the-hood  look at another NES Capcom game, following their examinations of <a href="https://setsideb.com/displaced-gamers-reprograms-ghosts-goblins-to-hit-60fps/">Ghosts &amp; Goblins</a> and <a href="https://setsideb.com/why-is-nes-strider-so-janky/">Strider</a>, links are to our previous pointers to their peerless product.</p>



<p>G&amp;G was implemented by popular early NES anonymous developer and target of player recrimination Micronics, but Commando can&#8217;t use them as an excuse, as it was developed in-house at Capcom. They were still learning the ropes of the NES at the time (Strider has no such excuse), and it shows. Displaced Gamers thinks that the game was shipped while the programmers were still working on optimizing it. As they do sometimes, DG implemented their own optimizations, improving the game substantially. <a href="https://www.youtube.com/watch?v=OauZmS0Klxw"><strong>You can see the product of their work in a 31-minute video they made about it, here</strong></a>. There is a substantial amount of 6502 assembly code involved, but if you skip around I think you might be able to get the gist of why the glitches happen, and how Displaced Gamers fixes them.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="The Jumpy Scrolling and Graphical Glitches of NES Commando - Behind the Code" width="840" height="473" src="https://www.youtube.com/embed/OauZmS0Klxw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>As was often the case with your jankier NES games, the scroll stutters and character chaos were caused by the game failing to make its VBLANK timing targets. Thing is, despite the glitches, NES Commando is arguably the best version of the game! Characters sometimes disappear from the screen and backgrounds turn into garbage, but there&#8217;s so many cool secrets and things to find in it that I can forgive Capcom for it.</p>



<p>Note that Displaced Gamers doesn&#8217;t release patches with their fixes, preferring to focus on making videos. Their code is presented on-screen though, so it&#8217;s possible for others to insert the changed programming on their own. I hope someone does this soon, as a fixed version of NES Commando would be nice to play.</p>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt='rodneylives' src='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=100&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=200&#038;d=mm&#038;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' itemprop="image"/></div><div class="saboxplugin-authorname"><a href="https://setsideb.com/author/rodneylives/" class="vcard author" rel="author"><span class="fn">rodneylives</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div><div class="saboxplugin-socials "><a title="Twitter" target="_self" href="https://twitter.com/rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Instagram" target="_self" href="https://www.instagram.com/rodneysnotdead/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Html5" target="_self" href="https://www.metafilter.com/user/23306" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-html5" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"></path></svg></span></a><a title="Mastodont" target="_self" href="https://cybre.space/@rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-mastodont" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 417 512"><path fill="currentColor" d="M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"></path></svg></span></a></div></div></div>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Displaced Gamers on Metroid Slowdown</title>
		<link>https://setsideb.com/displaced-gamers-on-metroid-slowdown/</link>
		
		<dc:creator><![CDATA[rodneylives]]></dc:creator>
		<pubDate>Sat, 26 Jul 2025 14:00:00 +0000</pubDate>
				<category><![CDATA[retro]]></category>
		<category><![CDATA[behindthecode]]></category>
		<category><![CDATA[displacedgamers]]></category>
		<category><![CDATA[lag]]></category>
		<category><![CDATA[metroid]]></category>
		<category><![CDATA[nes]]></category>
		<guid isPermaLink="false">https://setsideb.com/?p=10445</guid>

					<description><![CDATA[Displaced Gamers takes a lot of time to make their videos, but I always know their videos will be worth watching, and usually also worth posting about. Their newest video (36 minutes) is a typically deep dive into Metroid&#8217;s game engine, and why the game inexplicably drops frames. It&#8217;s only a first part so far, &#8230; <a href="https://setsideb.com/displaced-gamers-on-metroid-slowdown/" class="more-link">Continue reading<span class="screen-reader-text"> "Displaced Gamers on Metroid Slowdown"</span></a>]]></description>
										<content:encoded><![CDATA[
<p>Displaced Gamers takes a lot of time to make their videos, but I always know their videos will be worth watching, and usually also worth posting about. <a href="https://www.youtube.com/watch?v=3G6vkRz-_0I">Their newest video</a> (36 minutes) is a typically deep dive into Metroid&#8217;s game engine, and why the game inexplicably drops frames. It&#8217;s only a first part so far, but they do an excellent job of breaking down Metroid&#8217;s game loop. As far as it goes to this point, a big part of the issue has to do with the main game loop being called to prepare game screens being scrolled into, which are kept in a big memory buffer (so big the game requires extra RAM on the cartridge to store it) and copied into the PPU&#8217;s VRAM when needed.</p>



<p>Here&#8217;s the video. If you enjoy this sort of thing, we&#8217;d probably get along very well in person!</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Why is Metroid so Laggy? Part 1 - Loading Rooms and Running Out of Time - Behind the Code" width="840" height="473" src="https://www.youtube.com/embed/3G6vkRz-_0I?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt='rodneylives' src='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=100&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=200&#038;d=mm&#038;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' itemprop="image"/></div><div class="saboxplugin-authorname"><a href="https://setsideb.com/author/rodneylives/" class="vcard author" rel="author"><span class="fn">rodneylives</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div><div class="saboxplugin-socials "><a title="Twitter" target="_self" href="https://twitter.com/rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Instagram" target="_self" href="https://www.instagram.com/rodneysnotdead/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Html5" target="_self" href="https://www.metafilter.com/user/23306" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-html5" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"></path></svg></span></a><a title="Mastodont" target="_self" href="https://cybre.space/@rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-mastodont" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 417 512"><path fill="currentColor" d="M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"></path></svg></span></a></div></div></div>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Behind The Code Examines the Mario 3 Revision</title>
		<link>https://setsideb.com/behind-the-code-examines-the-mario-3-revision/</link>
		
		<dc:creator><![CDATA[rodneylives]]></dc:creator>
		<pubDate>Tue, 15 Apr 2025 14:00:00 +0000</pubDate>
				<category><![CDATA[retro]]></category>
		<category><![CDATA[behindthecode]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[displacedgamers]]></category>
		<category><![CDATA[mario]]></category>
		<category><![CDATA[mario3]]></category>
		<category><![CDATA[nintendo]]></category>
		<category><![CDATA[revision]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>
		<guid isPermaLink="false">https://setsideb.com/?p=9734</guid>

					<description><![CDATA[Displaced Gamers and their various technical dives, including the Behind the Code series, are favorites around here, and we&#8217;ve linked to them many times before. They take a lot of time with their content, but they always do a good job, much better than the average Youtube channel of whatever type, and it&#8217;s always something &#8230; <a href="https://setsideb.com/behind-the-code-examines-the-mario-3-revision/" class="more-link">Continue reading<span class="screen-reader-text"> "Behind The Code Examines the Mario 3 Revision"</span></a>]]></description>
										<content:encoded><![CDATA[
<p><a href="https://www.youtube.com/@DisplacedGamers">Displaced Gamers</a> and their various technical dives, including the <a href="https://www.youtube.com/watch?v=gTfPLl_AJvs&amp;list=PLn5sTGew1WGD2Tnspn9vhpLGf-kqDRbYy">Behind the Code series</a>, are favorites around here, and we&#8217;ve linked to them many times before. They take a lot of time with their content, but they always do a good job, much better than the average Youtube channel of whatever type, and it&#8217;s always something interesting to learn about. They have <a href="https://www.youtube.com/watch?v=GOOlcSVU3p0">a new video</a> up now (22 minutes) that examines the differences between the original and revised versions of Super Mario Bros 3, released a few months apart back in 1990.</p>



<p>Most of the differences were superficial: they changed the cover art slightly and added a ® symbol replacing a <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> on the Official Nintendo Seal. On the rom itself, they changed the names of the lands in the ending, from a flavorful set of localized names to just Adjective Land eight times in a row.</p>



<p>But there were other changes, and one of them was a substantial difference in the code, one that required moving much of it around by seven bytes to make room for it.</p>



<p>What was it? In brief, there&#8217;s one level in the game, 7-3, that uses a vertical-only scroll instead of a horizontal or multi-directional scroll, and it writes the images of the cards in the status window to the wrong place. So in the original release, on that one level, the card images are mysteriously blank during the vertical section.</p>



<p>That was fixed in the revision, which meant a check for what kind of scroll the level was using, and which changed the pointer to where to write them. Code needs space, and that space came out of a section of unused bytes at the end of the rom, with all the code between the change and that section shifted to account for it. If you had a Game Genie code that relied on data in those memory locations, too bad! You&#8217;ll need a modified version of that code.</p>



<p>Here&#8217;s the full low-down, which goes into much greater detail:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Cartridge Games - Versions, Bugs, and Behind the Code: A Sampler" width="840" height="473" src="https://www.youtube.com/embed/gTfPLl_AJvs?list=PLn5sTGew1WGD2Tnspn9vhpLGf-kqDRbYy" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt='rodneylives' src='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=100&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=200&#038;d=mm&#038;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' itemprop="image"/></div><div class="saboxplugin-authorname"><a href="https://setsideb.com/author/rodneylives/" class="vcard author" rel="author"><span class="fn">rodneylives</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div><div class="saboxplugin-socials "><a title="Twitter" target="_self" href="https://twitter.com/rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Instagram" target="_self" href="https://www.instagram.com/rodneysnotdead/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Html5" target="_self" href="https://www.metafilter.com/user/23306" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-html5" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"></path></svg></span></a><a title="Mastodont" target="_self" href="https://cybre.space/@rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-mastodont" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 417 512"><path fill="currentColor" d="M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"></path></svg></span></a></div></div></div>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Displaced Gamers Reprograms Ghosts &#038; Goblins to Overcome Jankiness</title>
		<link>https://setsideb.com/displaced-gamers-reprograms-ghosts-goblins-to-hit-60fps/</link>
		
		<dc:creator><![CDATA[rodneylives]]></dc:creator>
		<pubDate>Mon, 03 Feb 2025 15:00:00 +0000</pubDate>
				<category><![CDATA[development]]></category>
		<category><![CDATA[retro]]></category>
		<category><![CDATA[behindthecode]]></category>
		<category><![CDATA[capcom]]></category>
		<category><![CDATA[displacedgamers]]></category>
		<category><![CDATA[GhostsNGoblins]]></category>
		<category><![CDATA[Micronics]]></category>
		<category><![CDATA[TalkinCode]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>
		<guid isPermaLink="false">https://setsideb.com/?p=9223</guid>

					<description><![CDATA[Displaced Gamers is one of the best NES gaming channels on Youtube. They do sterling work diving into the very code of the games, to figure out what they are like they are. We link to nearly every video they do. Here&#8217;s a recap: Well here&#8217;s another, and it actually is a follow-up to a &#8230; <a href="https://setsideb.com/displaced-gamers-reprograms-ghosts-goblins-to-hit-60fps/" class="more-link">Continue reading<span class="screen-reader-text"> "Displaced Gamers Reprograms Ghosts &#38; Goblins to Overcome Jankiness"</span></a>]]></description>
										<content:encoded><![CDATA[
<p>Displaced Gamers is one of the best NES gaming channels on Youtube. They do sterling work diving into the very code of the games, to figure out what they are like they are. We link to nearly every video they do. Here&#8217;s a recap:</p>



<ul class="wp-block-list">
<li><a href="https://setsideb.com/behind-the-code-why-is-contra-force-slow/">Contra Force</a> (why is it slow?)</li>



<li><a href="https://setsideb.com/displaced-gamers-on-mega-man-3-glitches/">Mega Man 3</a> (glitches)</li>



<li><a href="https://setsideb.com/behind-the-code-why-does-nintendos-tetris-crash-at-extremely-high-levels/">NES Tetris</a> (why does it crash at extremely high levels?)</li>



<li><a href="https://setsideb.com/behind-the-code-the-problems-with-dr-jekyll-and-mr-hyde/">Dr. Jekyll &amp; Mr. Hyde</a> (wherefore the jank?)</li>



<li><a href="https://setsideb.com/more-from-displaced-gamers-on-dr-jekyll-and-mr-hyde/">Also Dr. Jekyll &amp; Mr. Hyde</a> (mo jank mo problems)</li>



<li><a href="https://setsideb.com/why-is-nes-strider-so-janky/">Strider</a> (the hideousness of its code)</li>



<li><a href="https://setsideb.com/more-on-the-terribleness-of-nes-striders-programming/">Strider Again</a> (more hideousness)</li>



<li><a href="https://setsideb.com/behind-the-code-about-the-nes-sprite-capabilities/">A primer on the NES&#8217; sprites</a></li>



<li><a href="https://setsideb.com/behind-the-code-examines-the-nes-punch-out-boxer-engine/">A deep dive into Punch-Out&#8217;s enemy boxer engine</a></li>
</ul>



<p>Well here&#8217;s another, and it actually is a follow-up to a video that I don&#8217;t <em>think</em> we linked to before. So here&#8217;s that video first, on <a href="https://www.youtube.com/watch?v=sRXXkFzpIPQ&amp;pp=ygUfRGlzcGxhY2VkIEdhbWVycyBnaG9zdHMgZ29ibGlucw%3D%3D">Micronics&#8217; port of Ghosts n&#8217; Goblins to NES</a>. (32 minutes)</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="NES Ghosts &#039;n Goblins, 60 fps, and Micronics&#039; Bloated Sprite Engine - Behind the Code" width="840" height="473" src="https://www.youtube.com/embed/sRXXkFzpIPQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>Pretty long already, exquisitely geeky! Well its successor is even more geeky, as they actually reprogrammed the game to have a more optimized sprite engine. Although it&#8217;s a shorter video, at 24 minutes!</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Destroying and Reprogramming the Sprite Engine of Ghosts &#039;n Goblins - Talkin&#039; Code Episode 6" width="840" height="473" src="https://www.youtube.com/embed/WmHpMRtgU3I?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>Ghost n&#8217; Goblins is <em>designed</em> around being a 20fps game, so no amount of optimization will change that, it requires more substantial modification. But the time visualizations they use indicate that it may be possible to change that to 30fps, and with other changes 60fps may be possible. Mind you, the logic for the player, enemies and weapons all assume 20fps, so unless they&#8217;re changed to account moving to 60 frames per second will triple the speed of the game, so that obviously would need to be changed as well. I look forward to seeing the next chapter in this retrocoding saga.</p>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt='rodneylives' src='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=100&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=200&#038;d=mm&#038;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' itemprop="image"/></div><div class="saboxplugin-authorname"><a href="https://setsideb.com/author/rodneylives/" class="vcard author" rel="author"><span class="fn">rodneylives</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div><div class="saboxplugin-socials "><a title="Twitter" target="_self" href="https://twitter.com/rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Instagram" target="_self" href="https://www.instagram.com/rodneysnotdead/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Html5" target="_self" href="https://www.metafilter.com/user/23306" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-html5" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"></path></svg></span></a><a title="Mastodont" target="_self" href="https://cybre.space/@rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-mastodont" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 417 512"><path fill="currentColor" d="M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"></path></svg></span></a></div></div></div>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Behind the Code on Why is Contra Force Slow?</title>
		<link>https://setsideb.com/behind-the-code-why-is-contra-force-slow/</link>
		
		<dc:creator><![CDATA[rodneylives]]></dc:creator>
		<pubDate>Fri, 06 Sep 2024 14:00:00 +0000</pubDate>
				<category><![CDATA[retro]]></category>
		<category><![CDATA[ArcHound]]></category>
		<category><![CDATA[behindthecode]]></category>
		<category><![CDATA[Contra]]></category>
		<category><![CDATA[ContraForce]]></category>
		<category><![CDATA[displacedgamers]]></category>
		<category><![CDATA[konami]]></category>
		<category><![CDATA[platformer]]></category>
		<category><![CDATA[runandgun]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>
		<guid isPermaLink="false">https://setsideb.com/?p=8200</guid>

					<description><![CDATA[Displaced Gamers&#8217; Behind the Code series is one of the best explainers of the quirks of NES games on Youtube. It&#8217;s not afraid to dive into the assembly code itself if need be, but its videos can often be understood by people without deep technical backgrounds. Here is their video on the coding problems with &#8230; <a href="https://setsideb.com/behind-the-code-why-is-contra-force-slow/" class="more-link">Continue reading<span class="screen-reader-text"> "Behind the Code on Why is Contra Force Slow?"</span></a>]]></description>
										<content:encoded><![CDATA[
<p>Displaced Gamers&#8217; Behind the Code series is one of the best explainers of the quirks of NES games on Youtube. It&#8217;s not afraid to dive into the assembly code itself if need be, but its videos can often be understood by people without deep technical backgrounds.</p>



<p>Here is their video on <a href="https://www.youtube.com/watch?v=gOwhDcI3oMA">the coding problems with Konami&#8217;s Contra Force</a> (24 minutes):</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Why is Contra Force so Slow? Konami, Mappers, and Money - Behind the Code" width="840" height="473" src="https://www.youtube.com/embed/gOwhDcI3oMA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>Watch the video for the full spiel, but here&#8217;s a summary.</p>



<p>Once upon a time, in the waning days of the Famicom, Konami planned to release a game called Arc Hound in Japan. It was going to be another of their trademark run-and-gun shooters, along the lines of Contra. It even received coverage in enthusiast magazines in Japan, and it probably would have used one of Konami&#8217;s bespoke mapper chips like the VRC6 that the Japanese version of Castlevania III used.</p>



<p>Arc Hound was likely far into development when the decision was made to not release it in the Japanese market. Producing a game cartridge requires a substantial investment in parts and marketing, of course, and they must have judged that they couldn&#8217;t make enough of a profit off of it in their home territory: the Super Famicom was already out, as well as Contra III on that platform. But the NES still had a little bit of life left in it in the US, so they decided to give the game a shot over here, as a title in the Contra series</p>



<p> A big problem there was Nintendo&#8217;s policies towards manufacturing NES games. Nintendo demanded the right to build all the licensed software for the NES, and further restricted most (although not all) publishers to using Nintendo&#8217;s own family of mappers. Konami had been forced to revise their games to use Nintendo&#8217;s mappers in other games: Castlevania III famously used a different mapper in Japan, one that offered greatly expanded sound capabilities that worked through the Famicom&#8217;s sound channel pass-through, but was incompatible with the NES.</p>



<p>Extra sound channels are nice, but the primary use for most mapper chips is bank switching, swapping different sections of a cartridge&#8217;s data into the Famicom/NES&#8217;s 6502-workalike&#8217;s 64K address space, and also potentially making different sections of the game&#8217;s graphics data visible to the PPU graphics chip.</p>



<p> Behind the Code&#8217;s examination of the game program reveals that a large portion of the time of each frame is spent in setting up bank switches. Whether it was coded poorly, or just that Konami didn&#8217;t want to pay to include a mapper with more a more efficient bank switching mechanism, the game wastes a lot of time just pulling in different banks of data to be visible to the NES&#8217;s hardware. So it is that Contra Force could have run a lot better, but Konami either didn&#8217;t want to expend the coding effort, or pay for the the mapping hardware, to allow it to do so.</p>



<p>Presumably, somewhere in Konami&#8217;s archives, there is a version of Arc Hound that uses a VRC chip to handle mapping, and that runs much more smoothly. Maybe someday it&#8217;ll come to light, although I wouldn&#8217;t lay any bets on it. More likely perhaps is that someone will hack up the code and make such a version themselves. Who knows?</p>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt='rodneylives' src='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=100&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=200&#038;d=mm&#038;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' itemprop="image"/></div><div class="saboxplugin-authorname"><a href="https://setsideb.com/author/rodneylives/" class="vcard author" rel="author"><span class="fn">rodneylives</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div><div class="saboxplugin-socials "><a title="Twitter" target="_self" href="https://twitter.com/rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Instagram" target="_self" href="https://www.instagram.com/rodneysnotdead/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Html5" target="_self" href="https://www.metafilter.com/user/23306" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-html5" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"></path></svg></span></a><a title="Mastodont" target="_self" href="https://cybre.space/@rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-mastodont" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 417 512"><path fill="currentColor" d="M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"></path></svg></span></a></div></div></div>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Displaced Gamers on Mega Man 3 Glitches</title>
		<link>https://setsideb.com/displaced-gamers-on-mega-man-3-glitches/</link>
		
		<dc:creator><![CDATA[rodneylives]]></dc:creator>
		<pubDate>Thu, 27 Jun 2024 14:00:00 +0000</pubDate>
				<category><![CDATA[retro]]></category>
		<category><![CDATA[behindthecode]]></category>
		<category><![CDATA[capcom]]></category>
		<category><![CDATA[displacedgamers]]></category>
		<category><![CDATA[glitch]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[megaman]]></category>
		<category><![CDATA[megaman3]]></category>
		<category><![CDATA[mmc3]]></category>
		<category><![CDATA[rastereffects]]></category>
		<category><![CDATA[rockman]]></category>
		<category><![CDATA[sprite0hit]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>
		<guid isPermaLink="false">https://setsideb.com/?p=7707</guid>

					<description><![CDATA[A bit of scanline flickering is a fairly common problem on the NES. Even Super Mario Bros. 3 had it, and that game was made by Nintendo themselves. Game graphics in the 8- and 16-bit ages often came down to tricky hardware manipulation. The art of doing raster effects, changing the registers in the video &#8230; <a href="https://setsideb.com/displaced-gamers-on-mega-man-3-glitches/" class="more-link">Continue reading<span class="screen-reader-text"> "Displaced Gamers on Mega Man 3 Glitches"</span></a>]]></description>
										<content:encoded><![CDATA[
<p>A bit of scanline flickering is a fairly common problem on the NES. Even Super Mario Bros. 3 had it, and that game was made by Nintendo themselves.</p>



<p>Game graphics in the 8- and 16-bit ages often came down to tricky hardware manipulation. The art of doing raster effects, changing the registers in the video hardware so as to divide the screen into different sections, ultimately comes down to timing. On the Atari VCS/2600, nearly all the graphics had to be done that way, but it was still a useful technique for over a decade after that.</p>



<p>A lot depends on the specifics of the video chip, a custom-built piece of silicon developed for the express purpose of taking graphics defined in memory and folding it, like electronic origami, into a shape that the TV would perceive as a broadcast signal. At that time, while it might still have been possible with clever coding, CPUs weren&#8217;t nearly fast enough to do that job themselves and still produce acceptable graphic quality <em>and</em> run game logic. (If you want to see what it would be like, I refer readers interested in doing it the <em>very hard way</em> to <a href="https://www.youtube.com/watch?v=zprSxCMlECA">the amazing Freespin demo</a>, which runs on <em>a 1541 disk drive</em>, and no video hardware at all.)</p>



<p>Older NES games used a supported bit of hackery called the &#8220;Sprite 0 Hit,&#8221; a signal the PPU would send at the moment the first of the system&#8217;s 64 sprites began to be drawn. By watching for it, games could do rudimentary raster effects on a system not designed for them. The issue there was processor time: the Sprite 0 Hit feature wasn&#8217;t hooked up to an interrupt line, so the program had to continually watch for it, checking a memory location repetitively over and over until it changed.  Some games spent large portions of their runtime in a tight loop checking for the Sprite 0 Hit. Since, from the program&#8217;s perspective, the signal might come at any time, the loop needed to be tight, meaning the game couldn&#8217;t spend that time doing other work or else it might be delayed in responding to the extremely time-sensitive signal.</p>



<p>The MMC3 mapper had a special function though that could time out when a programmable scanline was reached, and send the processor an interrupt request at that time, greatly freeing up the processor for doing other things with that time. But not all programmers understood the best way to use it, which is why Mega Man 3 has some scanline glitching in a couple of very visible places, in the pause window and on the level select screen.</p>



<p>Displaced Gamers&#8217; Behind the Code series, which we&#8217;ve linked to multiple times in the past, has done <a href="https://www.youtube.com/watch?v=o9Ohvi10sM0">an exposé looking into how Mega Man III&#8217;s glitches happen</a> (28 minutes), and even wrote some code that erases all trace of them. As usual for Behind the Code, the explanation is fairly technical, especially of the fix, but the first half of it is fairly comprehensible. No one says you have to watch the whole thing. Or, indeed, any of it, but I always enjoy them!</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Mega Man 3&#039;s Graphical Glitches, the MMC3 Mapper, and a Bad Development Timeline - Behind the Code" width="840" height="473" src="https://www.youtube.com/embed/o9Ohvi10sM0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt='rodneylives' src='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=100&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=200&#038;d=mm&#038;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' itemprop="image"/></div><div class="saboxplugin-authorname"><a href="https://setsideb.com/author/rodneylives/" class="vcard author" rel="author"><span class="fn">rodneylives</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div><div class="saboxplugin-socials "><a title="Twitter" target="_self" href="https://twitter.com/rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Instagram" target="_self" href="https://www.instagram.com/rodneysnotdead/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Html5" target="_self" href="https://www.metafilter.com/user/23306" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-html5" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"></path></svg></span></a><a title="Mastodont" target="_self" href="https://cybre.space/@rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-mastodont" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 417 512"><path fill="currentColor" d="M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"></path></svg></span></a></div></div></div>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Behind the Code: Why Does Nintendo&#8217;s Tetris Crash At Extremely High Levels?</title>
		<link>https://setsideb.com/behind-the-code-why-does-nintendos-tetris-crash-at-extremely-high-levels/</link>
		
		<dc:creator><![CDATA[rodneylives]]></dc:creator>
		<pubDate>Thu, 14 Mar 2024 14:00:00 +0000</pubDate>
				<category><![CDATA[niche]]></category>
		<category><![CDATA[retro]]></category>
		<category><![CDATA[behindthecode]]></category>
		<category><![CDATA[bps]]></category>
		<category><![CDATA[bulletproofsoftware]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[displacedgamers]]></category>
		<category><![CDATA[nintendo]]></category>
		<category><![CDATA[tetris]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>
		<guid isPermaLink="false">https://setsideb.com/?p=7103</guid>

					<description><![CDATA[Displaced Gamers&#8217; excellent Being The Code series on Youtube looks into what causes Nintendo&#8217;s NES Tetris to crash at really really high levels, over level 150. In the process, it goes through how that game displays and adds scores together. Have a look (22 minutes)! rodneylives]]></description>
										<content:encoded><![CDATA[
<p>Displaced Gamers&#8217; excellent Being The Code series on Youtube looks into what causes Nintendo&#8217;s NES Tetris to crash at really <em>really</em> high levels, over level 150. In the process, it goes through how that game displays and adds scores together. <a href="https://www.youtube.com/watch?v=vAbRx9obM1M">Have a look</a> (22 minutes)!</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Crashing Tetris! The Logic Behind the Madness - Behind the Code Leveled Up" width="840" height="473" src="https://www.youtube.com/embed/vAbRx9obM1M?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div></figure>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt='rodneylives' src='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=100&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=200&#038;d=mm&#038;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' itemprop="image"/></div><div class="saboxplugin-authorname"><a href="https://setsideb.com/author/rodneylives/" class="vcard author" rel="author"><span class="fn">rodneylives</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div><div class="saboxplugin-socials "><a title="Twitter" target="_self" href="https://twitter.com/rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Instagram" target="_self" href="https://www.instagram.com/rodneysnotdead/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Html5" target="_self" href="https://www.metafilter.com/user/23306" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-html5" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"></path></svg></span></a><a title="Mastodont" target="_self" href="https://cybre.space/@rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-mastodont" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 417 512"><path fill="currentColor" d="M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"></path></svg></span></a></div></div></div>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>More From Displaced Gamers on Dr. Jekyll and Mr Hyde</title>
		<link>https://setsideb.com/more-from-displaced-gamers-on-dr-jekyll-and-mr-hyde/</link>
		
		<dc:creator><![CDATA[rodneylives]]></dc:creator>
		<pubDate>Mon, 29 Jan 2024 15:00:00 +0000</pubDate>
				<category><![CDATA[retro]]></category>
		<category><![CDATA[behindthecode]]></category>
		<category><![CDATA[cinefile]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[displacedgamers]]></category>
		<category><![CDATA[drjekyllandmrhyde]]></category>
		<category><![CDATA[famicom]]></category>
		<category><![CDATA[kusoge]]></category>
		<category><![CDATA[nes]]></category>
		<category><![CDATA[toho]]></category>
		<guid isPermaLink="false">https://setsideb.com/?p=6820</guid>

					<description><![CDATA[We presented Displaced Gamers&#8217;/Behind the Code&#8217;s video on the jankiness of kusoge disgrace Dr. Jekyll and Mr. Hyde back on Saturday. They did another video on that game, that delves into why the game&#8217;s frame rate is so inconsistent. In summary, its engine throttles its framerate in a terrible way, using long delay loops. It&#8217;s &#8230; <a href="https://setsideb.com/more-from-displaced-gamers-on-dr-jekyll-and-mr-hyde/" class="more-link">Continue reading<span class="screen-reader-text"> "More From Displaced Gamers on Dr. Jekyll and Mr Hyde"</span></a>]]></description>
										<content:encoded><![CDATA[
<p>We presented Displaced Gamers&#8217;/Behind the Code&#8217;s video on the jankiness of kusoge disgrace Dr. Jekyll and Mr. Hyde back on Saturday. They did another video on that game, that delves into why the game&#8217;s frame rate is so inconsistent. In summary, its engine throttles its framerate in a terrible way, using long delay loops. It&#8217;s a pretty awful idea! It&#8217;s 19 1/2 minutes long. The video claims it&#8217;s even geekier than their first video on the game, but I think it&#8217;s actually slightly less technical, at least it doesn&#8217;t fill the screen with as much 6502 assembly code.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="The Wacky Frame Rate and Game Engine of Dr. Jekyll and Mr. Hyde (NES) - Behind the Code: Leveled Up" width="840" height="473" src="https://www.youtube.com/embed/nZg1X5kucjc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div></figure>



<p>Another fact about J&amp;H: the Japanese version had two full levels that were cut from the U.S. version, which replaced them with replays of other levels. It made a bad game even worse!</p>



<p>Now, because of Behind The Code, you know more about the Dr. Jekyll and Mr. Hyde game than many much better NES titles. Congratulations!</p>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt='rodneylives' src='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=100&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=200&#038;d=mm&#038;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' itemprop="image"/></div><div class="saboxplugin-authorname"><a href="https://setsideb.com/author/rodneylives/" class="vcard author" rel="author"><span class="fn">rodneylives</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div><div class="saboxplugin-socials "><a title="Twitter" target="_self" href="https://twitter.com/rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Instagram" target="_self" href="https://www.instagram.com/rodneysnotdead/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Html5" target="_self" href="https://www.metafilter.com/user/23306" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-html5" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"></path></svg></span></a><a title="Mastodont" target="_self" href="https://cybre.space/@rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-mastodont" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 417 512"><path fill="currentColor" d="M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"></path></svg></span></a></div></div></div>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Behind the Code: Dr Jekyll and Mr. Hyde</title>
		<link>https://setsideb.com/behind-the-code-the-problems-with-dr-jekyll-and-mr-hyde/</link>
		
		<dc:creator><![CDATA[rodneylives]]></dc:creator>
		<pubDate>Sat, 27 Jan 2024 15:00:00 +0000</pubDate>
				<category><![CDATA[retro]]></category>
		<category><![CDATA[amagon]]></category>
		<category><![CDATA[behindthecode]]></category>
		<category><![CDATA[cinefile]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[displacedgamers]]></category>
		<category><![CDATA[drjekyllandmrhyde]]></category>
		<category><![CDATA[famicom]]></category>
		<category><![CDATA[jeremyparish]]></category>
		<category><![CDATA[kusoge]]></category>
		<category><![CDATA[nes]]></category>
		<category><![CDATA[nesworks]]></category>
		<category><![CDATA[toho]]></category>
		<guid isPermaLink="false">https://setsideb.com/?p=6816</guid>

					<description><![CDATA[For some reason there&#8217;s been a lot of Youtube videos lately that fit our eclectic purview, so here&#8217;s a code-heavy dive into infamous NES disasterpiece Dr. Jekyll and Mr. Hyde. It&#8217;s 19 minutes long, and is even geekier than is usual for us, going into a disassembly of the game&#8217;s machine code in its quest &#8230; <a href="https://setsideb.com/behind-the-code-the-problems-with-dr-jekyll-and-mr-hyde/" class="more-link">Continue reading<span class="screen-reader-text"> "Behind the Code: Dr Jekyll and Mr. Hyde"</span></a>]]></description>
										<content:encoded><![CDATA[
<p>For some reason there&#8217;s been a lot of Youtube videos lately that fit our eclectic purview, so here&#8217;s <a href="https://www.youtube.com/watch?v=Gkl3Av55Yaw">a code-heavy dive into infamous NES disasterpiece Dr. Jekyll and Mr. Hyde</a>.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Reprogramming Dr. Jekyll and Mr. Hyde (NES) - Behind the Code" width="840" height="473" src="https://www.youtube.com/embed/Gkl3Av55Yaw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div></figure>



<p>It&#8217;s 19 minutes long, and is even geekier than is usual for us, going into a disassembly of the game&#8217;s machine code in its quest to make the game marginally less awful.</p>



<p>As long as we&#8217;re on the topic, here&#8217;s <a href="https://www.youtube.com/watch?v=MxhxBbeH5-w">Jeremy Parish&#8217;s NES Works episode on Dr. J &amp; Hyde</a>, which is also 19 minutes, and also covers the somewhat better (but not hugely so) game Amagon:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="’Roidvania: Dr. Jekyll and Mr. Hyde &amp; Amagon  | NES Works 121" width="840" height="473" src="https://www.youtube.com/embed/MxhxBbeH5-w?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div></figure>



<p>While we&#8217;re on the subject, did you know that Jekyll &amp; Hyde has a secret ending? Both endings are shown <a href="https://www.youtube.com/watch?v=PdrFR76Bs6E">here</a> (4 minutes):</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Dr. Jekyll and Mr. Hyde (NES) both endings" width="840" height="630" src="https://www.youtube.com/embed/PdrFR76Bs6E?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div></figure>



<p>The &#8220;bad&#8221; ending is the normal one, and shorter, but is arguably a happier conclusion to the story. To get it, all you have to do is get to the end of Stage 6 with Jekyll. That&#8217;s all.</p>



<p>To get the other ending, get to Stage 6 with Jekyll, then turn into Hyde and get to the end of his version of the stage. Usually, if Hyde gets as far into his level as Jekyll has gotten into his, he&#8217;s struck by lightning and dies. But in this level he&#8217;ll be allowed to reach the end of his version of the level for some reason, where there&#8217;s a boss! Beat it, and when you return to Jekyll&#8217;s world the enemies will be gone, and he&#8217;ll be free to finish the level without harassment. However, ending events will be different&#8230;.</p>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt='rodneylives' src='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=100&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=200&#038;d=mm&#038;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' itemprop="image"/></div><div class="saboxplugin-authorname"><a href="https://setsideb.com/author/rodneylives/" class="vcard author" rel="author"><span class="fn">rodneylives</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div><div class="saboxplugin-socials "><a title="Twitter" target="_self" href="https://twitter.com/rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Instagram" target="_self" href="https://www.instagram.com/rodneysnotdead/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Html5" target="_self" href="https://www.metafilter.com/user/23306" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-html5" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"></path></svg></span></a><a title="Mastodont" target="_self" href="https://cybre.space/@rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-mastodont" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 417 512"><path fill="currentColor" d="M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"></path></svg></span></a></div></div></div>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>More on the Terribleness of NES Strider&#8217;s Programming</title>
		<link>https://setsideb.com/more-on-the-terribleness-of-nes-striders-programming/</link>
		
		<dc:creator><![CDATA[rodneylives]]></dc:creator>
		<pubDate>Mon, 18 Sep 2023 14:00:00 +0000</pubDate>
				<category><![CDATA[retro]]></category>
		<category><![CDATA[behindthecode]]></category>
		<category><![CDATA[book2]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[capcom]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[displacedgamers]]></category>
		<category><![CDATA[nes]]></category>
		<category><![CDATA[strider]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>
		<guid isPermaLink="false">https://setsideb.com/?p=5570</guid>

					<description><![CDATA[A while ago Displaced Gamers, as part of their great Behind The Code series, did a video about how awful NES Strider&#8217;s sprite updating was. Arcade Strider was huge hit and outright masterpiece, a great arcade platformer released right before fighting games took over game rooms around the world, but NES Strider was a wretched &#8230; <a href="https://setsideb.com/more-on-the-terribleness-of-nes-striders-programming/" class="more-link">Continue reading<span class="screen-reader-text"> "More on the Terribleness of NES Strider&#8217;s Programming"</span></a>]]></description>
										<content:encoded><![CDATA[
<p>A while ago Displaced Gamers, as part of their great Behind The Code series, did a video about how awful NES Strider&#8217;s sprite updating was. Arcade Strider was huge hit and outright masterpiece, a great arcade platformer released right before fighting games took over game rooms around the world, but NES Strider was a wretched thing, full of big ideas but with code woefully unable to live up to them. Imagine a puppy trying to do your taxes. It might put up an adorable effort, but it&#8217;s just not going to get the job done.</p>



<p>We linked to <a href="https://setsideb.com/why-is-nes-strider-so-janky/">their last video</a> examining its malformed construction. Well, Strider is the well of crap that keeps on gushing, and so Displaced Gamers has another video on the subject of the flaws in its programming, this time about its player physics. Walking into walls causes Strider Hiryu to shudder in place; jumping beneath a low ceiling causes him to bump his head repeatedly as his jump continues even though there&#8217;s no room to ascent; and his infamous &#8220;triangle&#8221; wall jump is so wonky that it literally requires a frame-perfect input to pull off, and not even the <em>right</em> frame. You have to jump the frame <em>before</em> you contact the wall!</p>



<p>Here is the new video, which explicates the entire cruddy system. It goes into exquisite/excruciating detail, including tracing the code and examining Hiryu&#8217;s X and Y coordinates on a frame-by-frame basis. It&#8217;s the kind of deep geekery that I just know you love/hate! Enjoy/despair!</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="The Physics Nightmare and Bizarre Jumping of Strider (NES) - Behind the Code" width="840" height="473" src="https://www.youtube.com/embed/dbYQOon4z84?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div></figure>



<p><a href="https://www.youtube.com/watch?v=dbYQOon4z84">The Physics Nightmare and Bizarre Jumping of Strider (NES) &#8211; Behind The Code</a> (19 minutes)</p>



<p></p>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt='rodneylives' src='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=100&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=200&#038;d=mm&#038;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' itemprop="image"/></div><div class="saboxplugin-authorname"><a href="https://setsideb.com/author/rodneylives/" class="vcard author" rel="author"><span class="fn">rodneylives</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div><div class="saboxplugin-socials "><a title="Twitter" target="_self" href="https://twitter.com/rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Instagram" target="_self" href="https://www.instagram.com/rodneysnotdead/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Html5" target="_self" href="https://www.metafilter.com/user/23306" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-html5" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"></path></svg></span></a><a title="Mastodont" target="_self" href="https://cybre.space/@rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-mastodont" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 417 512"><path fill="currentColor" d="M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"></path></svg></span></a></div></div></div>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Why Is NES Strider So Janky?</title>
		<link>https://setsideb.com/why-is-nes-strider-so-janky/</link>
		
		<dc:creator><![CDATA[rodneylives]]></dc:creator>
		<pubDate>Tue, 08 Aug 2023 14:00:00 +0000</pubDate>
				<category><![CDATA[glitches]]></category>
		<category><![CDATA[retro]]></category>
		<category><![CDATA[behindthecode]]></category>
		<category><![CDATA[book2]]></category>
		<category><![CDATA[capcom]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[internals]]></category>
		<category><![CDATA[nes]]></category>
		<category><![CDATA[strider]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>
		<guid isPermaLink="false">https://setsideb.com/?p=5308</guid>

					<description><![CDATA[There are a number of NES games that feel like they&#8217;re held together with paperclips and chewing gum. Some of them are almost endearing for their glitchiness. When it comes to janky NES games, a few that I tend to think of are those made by Micronics (who implemented Ghosts N&#8217; Goblins, which has an &#8230; <a href="https://setsideb.com/why-is-nes-strider-so-janky/" class="more-link">Continue reading<span class="screen-reader-text"> "Why Is NES Strider So Janky?"</span></a>]]></description>
										<content:encoded><![CDATA[
<p>There are a number of NES games that feel like they&#8217;re held together with paperclips and chewing gum. Some of them are almost endearing for their glitchiness. When it comes to janky NES games, a few that I tend to think of are those made by Micronics (who implemented Ghosts N&#8217; Goblins, which has an awful frame rate) and Athena (where one boss has a death animation that causes it to flip through many of the sprites in the game).</p>



<p>A company that usually did a lot better with their internally-developed games was Capcom, makers of Mega Man, 1943, Bionic Commando, and all the Disney Afternoon games from the time, all of which have slick 60 fps update rates and smooth animation. One game they made of which that is definitely not true, however, is NES Strider.</p>



<p>If you&#8217;re only familiar with Strider from the beautiful arcade version, you might wonder what even NES Strider has to do with it. It&#8217;s not proper to say <em>Famicom</em> Strider, because Capcom never released it in their home territory, perhaps because they were too embarrassed to.</p>



<p>Other than the first stage being set in generally the same fictional location in Russia (even if it doesn&#8217;t look at all the same), its story has absolutely nothing to do with it. Jeremy Parish looked at it (and remarked on its glitchiness) in <a href="https://www.youtube.com/watch?v=tUPbmrg0MKw">an episode of Metroidvania Works</a> from a couple of weeks ago. Some people, like Kid Fenris of the self-titled blog, <a href="http://www.kidfenris.com/2020/07/in-defense-of-nes-strider.html">actually likes it</a>, although acknowledges its many issues.</p>



<p>Behind the Code, one of the best game internals series on Youtube, had a look at the implementation of NES Strider. It&#8217;s an interesting 15 minutes to my taste, but if you want a tl;dr, NES Strider often doesn&#8217;t make its framerate target, and instead of slowing the game down as most games do, it plows ahead forward into the next frame, leaving the incomplete data in its update buffer to be copied into the PPU. This causes the individual hardware sprites that compose enemy characters to sometimes have only one of their coordinates updated, or even causing data remaining from previous frames to be copied over.</p>



<p>Why does it does this instead of just slowing the game down? Possibly the coding was so crappy that it would have caused excessive slowdown; the scene chosen as an example in the video has the problem occur when there&#8217;s only two basic enemies on the screen in the game&#8217;s first area! Not the best engine on the system there Capcom.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="The Garbage Sprites in Strider (NES) - Behind the Code" width="840" height="473" src="https://www.youtube.com/embed/01aBYq91KnA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div></figure>



<p><a href="https://www.youtube.com/watch?v=01aBYq91KnA">The Garbage Sprites in Strider (NES)</a> (Behind the Code on Youtube, 15 minutes)</p>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt='rodneylives' src='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=100&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=200&#038;d=mm&#038;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' itemprop="image"/></div><div class="saboxplugin-authorname"><a href="https://setsideb.com/author/rodneylives/" class="vcard author" rel="author"><span class="fn">rodneylives</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div><div class="saboxplugin-socials "><a title="Twitter" target="_self" href="https://twitter.com/rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Instagram" target="_self" href="https://www.instagram.com/rodneysnotdead/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Html5" target="_self" href="https://www.metafilter.com/user/23306" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-html5" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"></path></svg></span></a><a title="Mastodont" target="_self" href="https://cybre.space/@rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-mastodont" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 417 512"><path fill="currentColor" d="M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"></path></svg></span></a></div></div></div>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Behind the Code: About the NES&#8217; Sprite Capabilities</title>
		<link>https://setsideb.com/behind-the-code-about-the-nes-sprite-capabilities/</link>
		
		<dc:creator><![CDATA[rodneylives]]></dc:creator>
		<pubDate>Wed, 12 Jul 2023 14:00:00 +0000</pubDate>
				<category><![CDATA[retro]]></category>
		<category><![CDATA[behindthecode]]></category>
		<category><![CDATA[book2]]></category>
		<category><![CDATA[displacedgamers]]></category>
		<category><![CDATA[famicom]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[nes]]></category>
		<category><![CDATA[nintendo]]></category>
		<category><![CDATA[ppu]]></category>
		<category><![CDATA[sprites]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>
		<guid isPermaLink="false">https://setsideb.com/?p=5111</guid>

					<description><![CDATA[Displaced Gamers&#8216; Behind the Code series doesn&#8217;t get new videos often, but they&#8217;re always great. This one is more technical than usual, but I don&#8217;t think it&#8217;s really all that technical. It&#8217;s about how the NES processes and renders its sprites, particularly explains why there&#8217;s a eight sprite per scanline limit, and even reveals a &#8230; <a href="https://setsideb.com/behind-the-code-about-the-nes-sprite-capabilities/" class="more-link">Continue reading<span class="screen-reader-text"> "Behind the Code: About the NES&#8217; Sprite Capabilities"</span></a>]]></description>
										<content:encoded><![CDATA[
<p><a href="https://www.youtube.com/@DisplacedGamers">Displaced Gamers</a>&#8216; <a href="https://www.youtube.com/watch?v=gTfPLl_AJvs&amp;list=PLn5sTGew1WGD2Tnspn9vhpLGf-kqDRbYy&amp;pp=iAQB">Behind the Code</a> series doesn&#8217;t get new videos often, but they&#8217;re always great. This one is more technical than usual, but I don&#8217;t think it&#8217;s really all <em>that</em> technical. It&#8217;s about how the NES processes and renders its sprites, particularly explains why there&#8217;s a eight sprite per scanline limit, and even reveals a couple of games that use that limit to produce special effects!</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="NES Sprites, OAM, and the Battle for Priority - Behind the Code" width="840" height="473" src="https://www.youtube.com/embed/8M2V5Pv6_1A?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div></figure>



<p>The gist: while each scanline is being prepared for display, the NES&#8217; PPU looks through the entries for the machine&#8217;s 64 hardware sprites in order, finds the first eight that will display on the current line, and copies their attribute data to a small area of internal RAM. There is only space there for eight sprites, so, the NES cannot display more than eight sprites in a single scan line. Any later sprites in the primary attribute data won&#8217;t have room to be copied, and so the PPU won&#8217;t be able to display them.</p>



<p>One thing it notably doesn&#8217;t cover, however, is how games implement priority shuffling to cause sprites to flicker instead of not display at all. The video suggests that that might be coming in a future video&#8230;.</p>



<p><a href="https://www.youtube.com/watch?v=8M2V5Pv6_1A">NES Sprites, OAM, and the Battle for Priority</a> &#8211; Behind the Code (Youtube, 19 minutes)</p>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt='rodneylives' src='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=100&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=200&#038;d=mm&#038;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' itemprop="image"/></div><div class="saboxplugin-authorname"><a href="https://setsideb.com/author/rodneylives/" class="vcard author" rel="author"><span class="fn">rodneylives</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div><div class="saboxplugin-socials "><a title="Twitter" target="_self" href="https://twitter.com/rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Instagram" target="_self" href="https://www.instagram.com/rodneysnotdead/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Html5" target="_self" href="https://www.metafilter.com/user/23306" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-html5" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"></path></svg></span></a><a title="Mastodont" target="_self" href="https://cybre.space/@rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-mastodont" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 417 512"><path fill="currentColor" d="M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"></path></svg></span></a></div></div></div>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Behind the Code Examines The NES Punch-Out!! Boxer Engine</title>
		<link>https://setsideb.com/behind-the-code-examines-the-nes-punch-out-boxer-engine/</link>
		
		<dc:creator><![CDATA[rodneylives]]></dc:creator>
		<pubDate>Tue, 28 Feb 2023 15:00:00 +0000</pubDate>
				<category><![CDATA[retro]]></category>
		<category><![CDATA[6502]]></category>
		<category><![CDATA[behindthecode]]></category>
		<category><![CDATA[book2]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[deepdive]]></category>
		<category><![CDATA[nes]]></category>
		<category><![CDATA[punchout]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>
		<guid isPermaLink="false">https://setsideb.com/?p=3952</guid>

					<description><![CDATA[Here&#8217;s another of those deep-dive NES internal videos from Behind the Code, possibly the most complex one they&#8217;ve done to date. Most game engines, when you examine their basic logic, are basically physics simulations, with some AI included to determine how actors behave. Not so with the Punch-Out!! games. They are essentially entirely different kinds &#8230; <a href="https://setsideb.com/behind-the-code-examines-the-nes-punch-out-boxer-engine/" class="more-link">Continue reading<span class="screen-reader-text"> "Behind the Code Examines The NES Punch-Out!! Boxer Engine"</span></a>]]></description>
										<content:encoded><![CDATA[
<p>Here&#8217;s another of those deep-dive NES internal videos from Behind the Code, possibly the most complex one they&#8217;ve done to date. Most game engines, when you examine their basic logic, are basically physics simulations, with some AI included to determine how actors behave.</p>



<p>Not so with the Punch-Out<em>!!</em> games. They are essentially entirely different kinds of games from that. You have certain things you can do moment to moment, and opposing boxers do too. Each of those opponents basically runs a big script, made out of byte code, that determines their behavior throughout each round of each fight. I am struck both by the simplicity (no need to simulate gravity) and the complexity (boxers take all kinds of things into account) of the system.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="How do Boxers Work in Mike Tyson&#039;s Punch-Out!!? - Behind the Code" width="840" height="473" src="https://www.youtube.com/embed/tlKW723EOMA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div></figure>



<p>One of the interesting things shown is that the engine can affect more than just the boxers, but can also subtly affect the crowd, which is how the previously-revealed fact that a specific camera person in the crowd uses his flash right at the moment the player must counter Bald Bull&#8217;s charge move. It turns out that this isn&#8217;t the only instance of this happening in the game!</p>



<p>You don&#8217;t need to know 6502 assembly code to get what the narrator is talking about, but a lot of code is shown, so those of you who understand it may get a bit more out of it. Here are a few basics to help you follow along.</p>



<p>The 6502 has only three registers (bits of memory internal to the CPU that can be accessed quickly), the Accumulator (sometimes called just A), the X register, and the Y register. Each is only one byte long. The Accumulator is by far the most flexible, but all three are general-purpose registers. The most common instructions are Loads (LDA, LDX, LDY), Stores (STA, STX, STY), Transfers between registers (TAX, TAY), Incrementing and Decrementing (INX, INY, DEX, DEY), Adding (ADC), Subtracting (SBC), Comparing (CMP), Branches (some of them, Branch Not-Equal to Zero: BNE, Branch Equal to Zero: BEQ, Branch of Carry Set: BCS, Branch on Carry Clear: BCC), Jump (JMP), Jump to Subroutine (JSR), and Return from Subroutine (RTS).  While some instructions are just one byte long, the longest any 6502 instruction can be is three bytes, and the opcode (the command itself) is always just one.</p>



<p>(I wrote all of that from memory. I figured, I have all of this in my head from my coding youth, I might as well use some of it.)</p>



<p>The 6502 can only address 64K of memory, so often systems will use bank switching to connect various memories to it within that space. The great majority of NES/Famicom games had to do this. Punch-Out!! was unique on the NES in that it was the only game to use Nintendo&#8217;s MMC2 chip. (I wonder if the chip was designed ahead of time, and they made this game as an excuse to use it?) Punch-Out!! uses MMC2 to bank in each boxer&#8217;s large data script as needed.</p>



<p><a href="https://www.youtube.com/watch?v=tlKW723EOMA">Behind The Code: How Do Boxers Work in Mike Tyson&#8217;s Punch-Out!!?</a> (Youtube, 20 minutes)</p>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt='rodneylives' src='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=100&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cb688ada8b517e838b06bdbcddb8d1ea3dd56de2e66848938e8c6568002a4fa9?s=200&#038;d=mm&#038;r=g 2x' class='avatar avatar-100 photo' height='100' width='100' itemprop="image"/></div><div class="saboxplugin-authorname"><a href="https://setsideb.com/author/rodneylives/" class="vcard author" rel="author"><span class="fn">rodneylives</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div><div class="saboxplugin-socials "><a title="Twitter" target="_self" href="https://twitter.com/rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path d="M26.37,26l-8.795-12.822l0.015,0.012L25.52,4h-2.65l-6.46,7.48L11.28,4H4.33l8.211,11.971L12.54,15.97L3.88,26h2.65 l7.182-8.322L19.42,26H26.37z M10.23,6l12.34,18h-2.1L8.12,6H10.23z" /></svg></span></a><a title="Instagram" target="_self" href="https://www.instagram.com/rodneysnotdead/" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-instagram" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg></span></a><a title="Html5" target="_self" href="https://www.metafilter.com/user/23306" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-html5" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z"></path></svg></span></a><a title="Mastodont" target="_self" href="https://cybre.space/@rodneylives" rel="nofollow noopener" class="saboxplugin-icon-grey"><svg aria-hidden="true" class="sab-mastodont" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 417 512"><path fill="currentColor" d="M417.8 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.5-28.4-290.4 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54-.6-4.4-.9-9-.9-13.9 85.6 20.9 158.6 9.1 178.7 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6V190.1c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H75.1c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"></path></svg></span></a></div></div></div>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
