<?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>Post Position &#187; demoscene</title>
	<atom:link href="http://nickm.com/post/tag/demoscene/feed/" rel="self" type="application/rss+xml" />
	<link>http://nickm.com/post</link>
	<description>Nick Montfort</description>
	<lastBuildDate>Tue, 22 May 2012 18:41:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>@party: Weaving thread</title>
		<link>http://nickm.com/post/2010/06/party-weaving-thread/</link>
		<comments>http://nickm.com/post/2010/06/party-weaving-thread/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 20:10:19 +0000</pubDate>
		<dc:creator>Nick Montfort</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[competitions]]></category>
		<category><![CDATA[demoscene]]></category>
		<category><![CDATA[digital]]></category>
		<category><![CDATA[gatherings]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[platforms]]></category>
		<category><![CDATA[playing]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://nickm.com/post/?p=938</guid>
		<description><![CDATA[I spent this weekend at @party 2010, the first (and hopefully not last) demoparty of this name. The event was in the Town of Harvard, Massachusetts &#8211; a bit outside of Boston. I heard four live music performances, saw an early cut of Jason Scott&#8217;s almost-finished Get Lamp documentary, and saw and heard grafix, music, [...]]]></description>
			<content:encoded><![CDATA[<p>I spent this weekend at @party 2010, the first (and hopefully not last) demoparty of this name. The event was in the Town of Harvard, Massachusetts &#8211; a bit outside of Boston. I heard four live music performances, saw an early cut of Jason Scott&#8217;s almost-finished <i>Get Lamp</i> documentary, and saw and heard grafix, music, and demos (wild and windows) in the Saturday evening compos. There were great tunes, a truly excellent 4k windows demo, an incredible demo running on an Arduino, and much more. Many thanks to the organizer, Metoikos, and everyone who helped her out. And, a big thanks to the demoscene!</p>

<p><a href="http://nickm.com/if/thread.zip"><img src="http://nickm.com/post/wp-content/stuff/thread_screen.png" alt="" title="thread (c64 demo in 31 bytes by le colonial, nom de nom, &amp; rv6502)" width="382" height="271" class="alignright size-full wp-image-937" /></a></p>

<p>Working with two others and using the moniker &#8220;nom de nom,&#8221; I completed my first demoscene production: <i>thread,</i> a Commodore 64 demo that has fewer than 32 bytes of code. (There are no C64 demos this size or smaller on pouet.net, as far as I can tell.) This demo is a tribute to a BASIC program that generates random mazes, one that exists in one form in the <i>C64 User&#8217;s Guide</i> but has also circulated as a one-liner. Here&#8217;s a version of the program:</p>

<p><code>10 PRINT CHR$(205.5+RND(1)); : GOTO 10</code></p>

<p>I developed thread working in person first with Le Colonial of Atlanta, a sometime co-author of mine who also writes Atari VCS games. (He&#8217;s also known as Ian Bogost.) At the party itself, I was fortunate to encounter C64 expert rv6502 of Montréal, who joined me and did the heavy lifting in the second phase of this project.</p>

<p>After working one evening with Le Colonial in Cambridge, we had a 32 byte program that wasn&#8217;t exactly like the original, but did something pretty cool. When I checked it out on my actual C64 right before I left for the party, however, it didn&#8217;t work. The SID was initialized differently in the emulators I&#8217;d used than it was on the box itself &#8211; as it happened &#8211; and there was something odd happening with my video display as well.</p>

<p>I brought my C64 to the event rather half-heartedly, without any way of getting programs onto it other than typing them in and without a display. Alas, I wasn&#8217;t going to get away from the program that easily: Dr. Claw brought me a monitor to use and NO CARRIER loaned me a flash cart &#8211; and, later, a physical copy of the <i>Commodore 64 Programmer&#8217;s Guide.</i> rv6502 and I sat down to work further on the program. It turned out my C64&#8242;s video was different that of the emulators I used, but <i>also</i> different from Ferris&#8217;s actual C64 (which matched the behavior of the emulators I tried). So it wasn&#8217;t just an emulator failing to match the metal; the two different C64s apparently have different KERNAL code in ROM. Dumping my machine&#8217;s ROM and used that with my emulator would have solved that part of the mismatch.</p>

<p>I won&#8217;t try to go into all the details of developing this demo, but there were two particularly great things about the process at a high level. First, I got to collaborate with and learn from two others at different points. Second, I got to learn a lot more about the C64, including many things I wouldn&#8217;t have run up against if I hadn&#8217;t been working on something like this. I&#8217;m not talking about small differences between emulation and the hardware, which were a minor part of this experience, in the end. I mean finding excellent facilities of the 6502 and the C64 to work around those which weren&#8217;t doing what we wanted.</p>

<p>We&#8217;ve released thread in three versions: The canonical one, which has 31 bytes of code but is in a 33-byte PRG file, because the beginning memory location is stored in the first two bytes of PRG files. If this bothers you, there is a 28-byte version which fits into a 30-byte PRG file and has all the same colors, but displayed in a way that we think is not as pretty. We also include a simple, straightforward reimplementation of the BASIC program above: A 20-byte program in a 22-byte PRG file. I&#8217;d love to get this uploaded to pouet.net at some point, but I don&#8217;t know how. For now, <a href="/if/thread.zip">here&#8217;s a zipfile with source and PRGs.</a></p>

<p>thread got 4th place in the Oldschool category at @party. After you load a PRG file in your emulator (or on your C64), you can run it by typing &#8220;SYS 4096&#8243;.</p>

<p>Finally, these are the 31 bytes of thread:</p>

<p><code>A9 80 8D 0F D4 8D 12 D4 A8 B1 F9 8D 86 02 AD 1B D4 29 01 69 6D 20 D2 FF E8 D0 ED E6 F9 50 E9</code></p>

<hr />
]]></content:encoded>
			<wfw:commentRss>http://nickm.com/post/2010/06/party-weaving-thread/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

