<?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>jimo9757 &#8211; Set Side B</title>
	<atom:link href="https://setsideb.com/tag/jimo9757/feed/" rel="self" type="application/rss+xml" />
	<link>https://setsideb.com</link>
	<description>The Flipside of Gaming</description>
	<lastBuildDate>Sat, 09 Aug 2025 08:23:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://setsideb.com/wp-content/uploads/2022/04/cropped-mascot512-32x32.png</url>
	<title>jimo9757 &#8211; Set Side B</title>
	<link>https://setsideb.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Wolf3D-Style Ray Casting on C64 and PET, For Real</title>
		<link>https://setsideb.com/wolf3d-style-ray-casting-on-c64-and-pet-for-real/</link>
		
		<dc:creator><![CDATA[rodneylives]]></dc:creator>
		<pubDate>Sat, 09 Aug 2025 14:00:00 +0000</pubDate>
				<category><![CDATA[niche]]></category>
		<category><![CDATA[retro]]></category>
		<category><![CDATA[EscapeFromPETSCIICastle]]></category>
		<category><![CDATA[fps]]></category>
		<category><![CDATA[jimo9757]]></category>
		<category><![CDATA[pet]]></category>
		<category><![CDATA[petscii]]></category>
		<category><![CDATA[shooter]]></category>
		<guid isPermaLink="false">https://setsideb.com/?p=10521</guid>

					<description><![CDATA[Read the subject line, and say to yourself quietly, &#8220;No way. What&#8217;s the catch?&#8221; There is a catch, of course. There is an art to these kinds of hacks though, and it lies in finding the right catch. The catch that makes the hack possible at all, but seems the least like a cheat. You &#8230; <a href="https://setsideb.com/wolf3d-style-ray-casting-on-c64-and-pet-for-real/" class="more-link">Continue reading<span class="screen-reader-text"> "Wolf3D-Style Ray Casting on C64 and PET, For Real"</span></a>]]></description>
										<content:encoded><![CDATA[
<p>Read the subject line, and say to yourself quietly, &#8220;No way. What&#8217;s the catch?&#8221; </p>



<p>There is a catch, of course. There is an art to these kinds of hacks though, and it lies in finding the <em>right</em> catch. The catch that makes the hack possible at all, but seems the least like a cheat.</p>



<p>You can technically <a href="https://setsideb.com/romhack-thursday-doom-on-a-commodore-64-kinda-sorta/">&#8220;run&#8221; Doom on a C64</a>, if you actually run it on a Raspberry Pi plugged into it, that only uses the machine&#8217;s video hardware for output. That&#8217;s an egregious cheat; Raspberry Pis didn&#8217;t exist back in 1983 when the C64 was new.</p>



<p>There are speed-up cartridges for the C64, and you could even implement a co-processor to do much of the hard work of rendering the display for you. That&#8217;s also a cheat, although a bit less of one.</p>



<p>One could approach the problem from the other direction, diminishing the scope of the hack until it fits more comfortably in the computer&#8217;s capabilities. There are 3D corridor games on the C64; when I was a kid, a tape of software that a co-worker gave to my dad had one, called LABYRINTH, that was written in BASIC. But if it was truly the equal of Wolfenstein 3D it&#8217;d have revolutionized the gaming world. It wasn&#8217;t, and it didn&#8217;t. It generated one of those Wizardry-style mazes, sometimes called &#8220;blobbers,&#8221; where your perspective is fixed in the center of a grid-based maze. It wasn&#8217;t a shooter, it didn&#8217;t animate smoothly, and it was a pretty simple algorithm, simple enough that lots of games used it, especially RPGs.</p>



<p>What makes smoothly rendered graphics slow on a C64, indeed on pretty much all home computers at the time? It&#8217;s the necessity of using a bitmapped graphics mode. The math of deciding where the corridor vertices and lines go is within the machine&#8217;s capability, even at 1 mHz, but writing all those bytes into the C64&#8217;s 8K bitmap screen takes a huge amount of time.</p>



<p>It&#8217;s why few action games on the Commie used the bitmapped modes. Even if you used a hand-tuned machine code loop to write a single value to every byte in the bitmap, it&#8217;d be slow enough that you could visibly watch the screen fill up. If you wanted to actually vary those bytes, such as by rendering walls, it&#8217;d take much longer. Even filling the text screen takes so long that it&#8217;s difficult to do it in a single video frame, which is why games that feature NES-style full-screen scrolling on the C64 are impressive. (There are tricks to doing it; some of them quite bizarre. Let&#8217;s discuss those some other time.)</p>



<p>But you could do what jimo9757 did, and use text characters to simulate the rendering. In fact they did it one better, and used the PETSCII graphics characters for the display. The result is pretty striking! <a href="https://www.youtube.com/watch?v=PgDV_QUUjBg">See for yourself in this demo</a> (8 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 title="Escape From PETSCII Castle for Commodore 64 (v0.5)" width="840" height="630" src="https://www.youtube.com/embed/PgDV_QUUjBg?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>Reserving a port of the screen for a status display is itself a bit of a cheat, that cuts down on the number of bytes that must be changed for each screen update, but it&#8217;s one that Wolfenstein 3D used too so let&#8217;s give it a pass. The walls only have horizontal lines for textures, but it&#8217;s not like the original&#8217;s were that worthy either. It&#8217;s certainly not 60 fps, it&#8217;s maybe 15 or 12, but it&#8217;s certainly still impressive to see those walls glide by smoothly on a machine with a 1 mHz 6502-class chip.</p>



<p>Since the game uses PETSCII for the maze, this engine can even work on the Commodore&#8217;s first home computer, the PET, whose character set was fixed in unchangeable mask ROM. Here&#8217;s <a href="https://www.youtube.com/watch?v=h_CMY1SOflg">video of the first-person shooter they made for the PET</a> (3 minutes). I think the graphics, while many would call them primitive, have a fun style to 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="Escape from PETSCII Castle. A first-person shooter for the Commodore PET inspired by Wolfenstein 3D." width="840" height="473" src="https://www.youtube.com/embed/h_CMY1SOflg?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>Both the PET game, <a href="https://jimbo.itch.io/escape-from-petscii-castle">Escape From PETSCII Castle</a>, and <a href="https://jimbo.itch.io/escape-from-petscii-castle-v05">the tech demo of the work-in-progress C64 version</a> can be downloaded from itch.io, to play around with in the emulator of your choice.</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>
