<?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>brandorf.com</title>
	<atom:link href="http://www.brandorf.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brandorf.com</link>
	<description>The everyday ramblings of one nerd.</description>
	<lastBuildDate>Mon, 20 May 2013 05:27:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Annoying people with a Raspberry Pi</title>
		<link>http://www.brandorf.com/2013/05/20/annoying-people-with-a-raspberry-pi/</link>
		<comments>http://www.brandorf.com/2013/05/20/annoying-people-with-a-raspberry-pi/#comments</comments>
		<pubDate>Mon, 20 May 2013 05:16:47 +0000</pubDate>
		<dc:creator>Brandorf</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.brandorf.com/?p=596</guid>
		<description><![CDATA[The Raspberry Pi is a neat little device. First and foremost, it's a complete little computer, secondly it's very easy to program for, allowing a software guy like myself to have a much lower learning curve to AVR-style programming than you would have on an Arduino or Launchpad. I've had one for a while, but [...]]]></description>
				<content:encoded><![CDATA[<p>The Raspberry Pi is a neat little device. First and foremost, it's a complete little computer, secondly it's very easy to program for, allowing a software guy like myself to have a much lower learning curve to AVR-style programming than you would have on an Arduino or Launchpad. I've had one for a while, but nothing immediately sprung to mind about anything fun to do with it, so it disappeared into the big bucket of projects-that-might-be.</p>
<p>I eventually decided to use it for evil. To sic <a title="Navi" href="http://www.youtube.com/watch?v=seKaU-qQuts">Navi</a> on the poor victim, like a more annoying version of the <a href="http://www.amazon.com/gp/product/B0013JCSKC/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B0013JCSKC&amp;linkCode=as2&amp;tag=brandorfcom-20">Annoy-a-tron</a><img style="border: none !important; margin: 0px !important;" alt="" src="http://www.assoc-amazon.com/e/ir?t=brandorfcom-20&amp;l=as2&amp;o=1&amp;a=B0013JCSKC" width="1" height="1" border="0" /><br />
(If that's possible?).</p>
<p>Principal ingredients for this is the Pi itself, and some speakers. I'm using one of those speaker case jobs designed for a MP3 players, runs off of 2 AA batteries for a very long time, unfortunately this won't power the Pi, so the Pi still needs to be plugged in (and the Pi can only provide a wimpy 50ma at 5v on pins, not enough to power a speaker). That's really it on the hardware department, the rest of the magic is software - namely Python. I've never worked with python, but the more languages you learn the easier new ones become (both spoken languages and programming). So let's bang something out and see what we can get it to do.</p>
<table border="0" style="margin: 0 auto;">
<tbody>
<tr>
<td><a href="http://www.brandorf.com/wp-content/uploads/2013/05/photo-1.jpg"><img class="aligncenter size-thumbnail wp-image-600" alt="photo (1)" src="http://www.brandorf.com/wp-content/uploads/2013/05/photo-1-150x150.jpg" width="150" height="150" /></a></td>
<td><a href="http://www.brandorf.com/wp-content/uploads/2013/05/photo.jpg"><img class="aligncenter size-thumbnail wp-image-601" alt="photo" src="http://www.brandorf.com/wp-content/uploads/2013/05/photo-150x150.jpg" width="150" height="150" /></a></td>
</tr>
</tbody>
</table>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">time</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">random</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">subprocess</span>
&nbsp;
<span style="color: #dc143c;">random</span>.<span style="color: black;">seed</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
command <span style="color: #66cc66;">=</span> <span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;mpg321&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">&quot;/etc/Navi/Navi-WatchOut.mp3&quot;</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Watch Out!&quot;</span>
<span style="color: #ff7700;font-weight:bold;">with</span> <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">os</span>.<span style="color: black;">devnull</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">&quot;w&quot;</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">as</span> fnull:
	result <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">subprocess</span>.<span style="color: black;">call</span><span style="color: black;">&#40;</span>command<span style="color: #66cc66;">,</span> stdout<span style="color: #66cc66;">=</span>fnull<span style="color: #66cc66;">,</span> stderr<span style="color: #66cc66;">=</span>fnull<span style="color: black;">&#41;</span>
<span style="color: #dc143c;">time</span>.<span style="color: black;">sleep</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">30</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">while</span> <span style="color: black;">&#40;</span><span style="color: #008000;">True</span><span style="color: black;">&#41;</span>:
	command <span style="color: #66cc66;">=</span> <span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;mpg321&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">&quot;/etc/Navi/Navi-Listen.mp3&quot;</span><span style="color: black;">&#93;</span>
	<span style="color: #ff7700;font-weight:bold;">with</span> <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">os</span>.<span style="color: black;">devnull</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">&quot;w&quot;</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">as</span> fnull:
		result <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">subprocess</span>.<span style="color: black;">call</span><span style="color: black;">&#40;</span>command<span style="color: #66cc66;">,</span> stdout<span style="color: #66cc66;">=</span>fnull<span style="color: #66cc66;">,</span> stderr<span style="color: #66cc66;">=</span>fnull<span style="color: black;">&#41;</span>
	sleepTime <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">random</span>.<span style="color: black;">randrange</span><span style="color: black;">&#40;</span>-<span style="color: #ff4500;">15</span><span style="color: #66cc66;">,</span><span style="color: #ff4500;">15</span><span style="color: black;">&#41;</span>
	<span style="color: #dc143c;">time</span>.<span style="color: black;">sleep</span><span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">30</span> + sleepTime<span style="color: black;">&#41;</span> * <span style="color: #ff4500;">60</span><span style="color: black;">&#41;</span>
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Hey! Listen&quot;</span>
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Sleeping for &quot;</span> + <span style="color: #008000;">str</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">30</span> + sleepTime<span style="color: black;">&#41;</span> <span style="color: #66cc66;">,</span> <span style="color: #483d8b;">&quot; minutes.&quot;</span></pre></td></tr></table></div>

<p>For those of you who can't decipher this what it does is play the "Hey Listen!" sound clip at random intervals between 15 and 45 minutes between each one. It's using the linux app mpg321 to play the audio files with most of the extra bits there to hide the output from mpg321 from spamming the console. Not really needed as the prank use will not have the Pi connected to a display but hey, why not.</p>
<p>To make sure that this script starts each time the PI is booted, we need to add this script to Init.d I must confess I'm not entirely sure what this is doing except at a high level; registering our python script as a service, and therefore runs even if you don't log-in.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#! /bin/sh</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #000000; font-weight: bold;">in</span>
  start<span style="color: #7a0874; font-weight: bold;">&#41;</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Starting NAVI&quot;</span>
    <span style="color: #666666; font-style: italic;"># run application you want to start</span>
    <span style="color: #c20cb9; font-weight: bold;">sudo</span> amixer cset <span style="color: #007800;">numid</span>=<span style="color: #000000;">1</span> <span style="color: #000000;">90</span><span style="color: #000000; font-weight: bold;">%</span>
    python <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>Navi<span style="color: #000000; font-weight: bold;">/</span>Navi.py <span style="color: #000000; font-weight: bold;">&amp;</span>
    <span style="color: #000000; font-weight: bold;">;;</span>
  stop<span style="color: #7a0874; font-weight: bold;">&#41;</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Stopping NAVI&quot;</span>
    <span style="color: #666666; font-style: italic;"># kill application you want to stop</span>
    <span style="color: #c20cb9; font-weight: bold;">killall</span> python
    <span style="color: #000000; font-weight: bold;">;;</span>
  <span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Usage: /etc/init.d/example{start|stop}&quot;</span>
    <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
    <span style="color: #000000; font-weight: bold;">;;</span>
<span style="color: #000000; font-weight: bold;">esac</span>
&nbsp;
&nbsp;
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span></pre></td></tr></table></div>

<p>Save the scripts, chmod them if needed run <code>update-rc.d</code> and restart the Pi, you'll get a warning of "Lookout" and then you've got a minimum of 15 minutes to plant your annoyance bomb. Try not to get caught.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brandorf.com/2013/05/20/annoying-people-with-a-raspberry-pi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making the Retron3 a little better.</title>
		<link>http://www.brandorf.com/2013/04/26/making-the-retron3-a-little-better/</link>
		<comments>http://www.brandorf.com/2013/04/26/making-the-retron3-a-little-better/#comments</comments>
		<pubDate>Fri, 26 Apr 2013 19:17:55 +0000</pubDate>
		<dc:creator>Brandorf</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.brandorf.com/?p=577</guid>
		<description><![CDATA[Were I live now, I'm fortunate to have what I'm beginning to assume is a shop of a dying breed: the independent video game store. This seems especially true now that GameStop owns pretty much every other game store chain. While poking my head into the one closest to me, I uncovered a little gem [...]]]></description>
				<content:encoded><![CDATA[<p>Were I live now, I'm fortunate to have what I'm beginning to assume is a shop of a dying breed: the independent video game store. This seems especially true now that GameStop owns pretty much every other game store chain. While poking my head into the one closest to me, I uncovered a little gem from my youth: , the resulting nostalgia bomb was irresistible, but now I needed a console to play on, I haven't owned a Sega Genesis since I regrettably gave mine away to a relative years ago.</p>
<p>While the little shop did have a Genesis in stock (and even a 32x to go with it), <a href="http://www.amazon.com/gp/product/B003Y5AHPG/ref=as_li_tf_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B003Y5AHPG&amp;linkCode=as2&amp;tag=brandorfcom-20">this thing</a><img style="border: none !important; margin: 0px !important;" alt="" src="http://www.assoc-amazon.com/e/ir?t=brandorfcom-20&amp;l=as2&amp;o=1&amp;a=B003Y5AHPG" width="1" height="1" border="0" /> caught my eye. The Retron 3 is a clone system that can play NES, SNES, and Genesis games, just the thing for a retrogamer who is running out of A/V inputs on his TV (and it was on sale!). I took the little thing home, with a Sega controller (good, because the "wireless" controllers that came with it were pretty awful) and was shortly afterwards playing a cyborg kick-boxer punching a caveman in the face, awesome.</p>
<div id="attachment_584" class="wp-caption aligncenter" style="width: 160px"><a href="http://www.brandorf.com/wp-content/uploads/2013/04/2012-05-12-12.03.43-1.jpg"><img class="size-thumbnail wp-image-584" alt="Eternal Champions for Sega Genesis, at a bargain!" src="http://www.brandorf.com/wp-content/uploads/2013/04/2012-05-12-12.03.43-1-150x150.jpg" width="150" height="150" /></a><p class="wp-caption-text">Eternal Champions for Sega Genesis, at a bargain!</p></div>
<p>The system seemed to work great, for my NES and Sega collections, but things went sour when I tried out one of my few SNES carts; the sound was horribly distorted as can be heard <a title="here." href="http://www.youtube.com/watch?v=qP3t7an7Oh8">here</a>. It sounds like some serious clipping, like the volume was cranked up too high. Turns out I was right, this was exactly the case: a little more research revealed a flaw with the assembly of the unit's SNES side. For the SNES's audio amp, they used 2.7kOhm resistors, when something like 33kOhm would have been appropriate. Perhaps this was a typo on the data sheet or similar because the resistors in question are SMD, the don't have the traditional color bands a 2.7K Ohm resister is simply marked '272' where as a closer 27k Ohm would be marked '273'. Enough of the electronic lesson, it's clear that the solution is to crack the beast open and give it a transplant.</p>
<table border="0" style="margin: 0 auto;">
<tbody>
<tr>
<td>
<p><div id="attachment_585" class="wp-caption aligncenter" style="width: 160px"><a href="http://www.brandorf.com/wp-content/uploads/2013/04/2012-09-23-14.35.13.jpg"><img class="size-thumbnail wp-image-585" alt="See the little black rectangles with '272' printed on them?  They are the ones that have to go!" src="http://www.brandorf.com/wp-content/uploads/2013/04/2012-09-23-14.35.13-150x150.jpg" width="150" height="150" /></a><p class="wp-caption-text">See the little black rectangles with '272' printed on them? They are the ones that have to go!</p></div></td>
<td>
<p><div id="attachment_586" class="wp-caption aligncenter" style="width: 160px"><a href="http://www.brandorf.com/wp-content/uploads/2013/04/2012-09-24-20.37.45.jpg"><img class="size-thumbnail wp-image-586" alt="It's not easy, but you CAN mount standard 1/4&quot; resistors as surface mount." src="http://www.brandorf.com/wp-content/uploads/2013/04/2012-09-24-20.37.45-150x150.jpg" width="150" height="150" /></a><p class="wp-caption-text">It's not easy, but you CAN mount standard 1/4" resistors as surface mount.</p></div></td>
</tr>
</tbody>
</table>
<p>This seemed like a fantastic <del>opportunity</del> excuse to use my fancy new <del>tool</del> toy : <a href="http://www.amazon.com/gp/product/B0057M7YLE/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B0057M7YLE&amp;linkCode=as2&amp;tag=brandorfcom-20">SainSmart DSO203 Nano</a><img style="border: none !important; margin: 0px !important;" alt="" src="http://www.assoc-amazon.com/e/ir?t=brandorfcom-20&amp;l=as2&amp;o=1&amp;a=B0057M7YLE" width="1" height="1" border="0" /> I'd wanted an oscilloscope for a long time, but being at best a hobbyist, could never justify having a full expensive bench unit. This little beauty is smaller than my cellphone, and let me trace the audio signal to the spot on the board. (In theory anyway, I was pretty new at using an oscilloscope.)</p>
<table border="0" style="margin: 0 auto;">
<tbody>
<tr>
<td>
<p><div id="attachment_588" class="wp-caption aligncenter" style="width: 160px"><a href="http://www.brandorf.com/wp-content/uploads/2013/04/2012-05-17-20.34.50.jpg"><img class="size-thumbnail wp-image-588" alt="Poking around on the Retron with the scope in analog mode, to try and see where the audio signal is coming from." src="http://www.brandorf.com/wp-content/uploads/2013/04/2012-05-17-20.34.50-e1367002913495-150x150.jpg" width="150" height="150" /></a><p class="wp-caption-text">Poking around on the Retron with the scope in analog mode, to try and see where the audio signal is coming from.</p></div></td>
<td>
<p><div id="attachment_589" class="wp-caption aligncenter" style="width: 160px"><a href="http://www.brandorf.com/wp-content/uploads/2013/04/2012-05-17-20.35.57.jpg"><img class="size-thumbnail wp-image-589" alt="An example of what the scope was showing while the SNES was running." src="http://www.brandorf.com/wp-content/uploads/2013/04/2012-05-17-20.35.57-150x150.jpg" width="150" height="150" /></a><p class="wp-caption-text">An example of what the scope was showing while the SNES was running.</p></div></td>
</tr>
</tbody>
</table>
<p>Special thanks to Benheck.com user Ace_1, who seems to be the resident expert on clone systems, for pointing me in the right direction as to which resistors to replace, as I'm still a rookie to using an oscilloscope, it was taking me a while to trace the audio out on the board.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brandorf.com/2013/04/26/making-the-retron3-a-little-better/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calvin and Hobbes</title>
		<link>http://www.brandorf.com/2013/03/27/calvin-and-hobbes/</link>
		<comments>http://www.brandorf.com/2013/03/27/calvin-and-hobbes/#comments</comments>
		<pubDate>Thu, 28 Mar 2013 01:33:38 +0000</pubDate>
		<dc:creator>Brandorf</dc:creator>
				<category><![CDATA[Image]]></category>
		<category><![CDATA[photo]]></category>

		<guid isPermaLink="false">http://www.brandorf.com/?p=576</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<div><img src='https://dl.dropbox.com/s/7hepqijbki9pjnj/Calvin%20and%20Hobbes.gif' style='max-width:600px;' />
<div></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.brandorf.com/2013/03/27/calvin-and-hobbes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Winner</title>
		<link>http://www.brandorf.com/2013/03/26/winner/</link>
		<comments>http://www.brandorf.com/2013/03/26/winner/#comments</comments>
		<pubDate>Tue, 26 Mar 2013 20:33:40 +0000</pubDate>
		<dc:creator>Brandorf</dc:creator>
				<category><![CDATA[Image]]></category>
		<category><![CDATA[photo]]></category>

		<guid isPermaLink="false">http://www.brandorf.com/?p=575</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<div><img src='https://dl.dropbox.com/s/ugpyic8rgm758l6/Winner.gif' style='max-width:600px;' />
<div></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.brandorf.com/2013/03/26/winner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;m backing it, you should too!</title>
		<link>http://www.brandorf.com/2012/01/12/im-backing-it-you-should-too/</link>
		<comments>http://www.brandorf.com/2012/01/12/im-backing-it-you-should-too/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 15:26:11 +0000</pubDate>
		<dc:creator>Brandorf</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.brandorf.com/?p=560</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<div align="center"><iframe src="http://www.kickstarter.com/projects/zarthcode/ee-reference-posters-for-makers-hobbyists-and-pros/widget/card.html" frameborder="0" width="220px" height="380px"></iframe><br />
<iframe frameborder="0" height="410px" src="http://www.kickstarter.com/projects/zarthcode/ee-reference-posters-for-makers-hobbyists-and-pros/widget/video.html" width="480px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://www.brandorf.com/2012/01/12/im-backing-it-you-should-too/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Not Quite a Phoenix : Raising my MAME Machine From the Ashes.</title>
		<link>http://www.brandorf.com/2011/11/06/not-quite-a-phoenix-raising-my-mame-machine-from-the-ashes/</link>
		<comments>http://www.brandorf.com/2011/11/06/not-quite-a-phoenix-raising-my-mame-machine-from-the-ashes/#comments</comments>
		<pubDate>Sun, 06 Nov 2011 20:42:14 +0000</pubDate>
		<dc:creator>Brandorf</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[MAME]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.brandorf.com/?p=540</guid>
		<description><![CDATA[I've been meaning to sit down and write this for some time now, but have always managed to come up with some sort of convenient excuse not to. Well now, coffee in hand, I'm going to make this happen. I built a Mame arcade machine back in the summer of 2003 with my father. It [...]]]></description>
				<content:encoded><![CDATA[<p>I've been meaning to sit down and write this for some time now, but have always managed to come up with some sort of convenient excuse not to. Well now, coffee in hand, I'm going to make this happen.</p>
<p><a href="http://www.brandorf.com/my-cocktail-mame-machine/" target="_blank">I built a Mame arcade machine</a> back in the summer of 2003 with my father. It was a ton of fun and I at least learned about the large whole of my knowledge and experience involving woodworking. However me being a student at the time, and now a graduate (arcade machines, while awesome, don't travel well or fit within a student's nomadic lifestyle), and my own parents having moved twice in that time, means that this little arcade machine has traveled many miles, and we unfortunately didn't design some aspects of the machine to handle the stresses of the average move.</p>
<p>About the third move was when things started to go south. This move was done by “professional” movers, and apparently the entire cabinet was dropped or something. The monitor yoke had fallen off the back of the monitor tube and smashed into the PC motherboard at the bottom of the cabinet. It looked worse than it actually was, and it didn't take too long to get it running again. Lucky for me there.</p>
<p>The next move happened while I was busy away at college, no idea what happened there, but I came home after college and the machine wouldn't boot up at all. After a few diagnostics, I decided that well, the parts were ancient when I built it, they must have finally given up the ghost, so I chucked the motherboard in the bin, and went about scrounging some new parts. This was the first step in <em>legacy hell</em>.<span id="more-540"></span></p>
<p>The original setup for the machine really just had the motherboard screwed into the cabinet. This time around I figured I'd attempt to make something a bit nicer, and that would protect the motherboard both from strain (the PCI cards in the old setup just sort of</p>
<p>hung by their sockets) and if something fell on the board. So, with a new motherboard in hand (Pentium 4, something like 2GHz, something like 5 times faster than the old board) I made a new enclosure out of acrylic, which I figured ended up looking pretty damn good.</p>
<table style="background-position: center center; width: 500px; clear: none;" border="0" align="center">
<tr>
<td>
<div id="attachment_541" class="wp-caption aligncenter" style="width: 160px"><a href="http://www.brandorf.com/wp-content/uploads/2011/11/100_1619.jpg"><img class="size-thumbnail wp-image-541" title="Acrylic &quot;Case&quot;" src="http://www.brandorf.com/wp-content/uploads/2011/11/100_1619-150x150.jpg" alt="Acrylic &quot;Case&quot;" width="150" height="150" /></a><p class="wp-caption-text">Then again, most things electronic look awesome under acrylic.</p></div>
</td>
<td>
<div id="attachment_542" class="wp-caption aligncenter" style="width: 160px"><a href="http://www.brandorf.com/wp-content/uploads/2011/11/100_1620.jpg"><img class="size-thumbnail wp-image-542" title="Acrylic &quot;Case&quot; from the front." src="http://www.brandorf.com/wp-content/uploads/2011/11/100_1620-150x150.jpg" alt="Acrylic &quot;Case&quot; from the front." width="150" height="150" /></a><p class="wp-caption-text">Shaping acrylic isn&#39;t that difficult. CUTTING it is however. Making thse cutouts with a Dremel tool resulted in molten acrylic being flung around the workshop and the tool looking like it was covered in cotton candy. Ouch.</p></div>
</td>
</tr>
</table>
<p>Well, here's where the <em>Legacy Hell</em> started. I'm somewhat tied to DOS as the OS here for one primary reason, ArcadeOS. ArcadeOS is really just a fancy launcher for MAME, but it's got a few important considerations when running a cabinet like mine, first, it supports vertical orientation, and automatic flipping of the screen so the player on either side can choose games, second it supports pressing P1 + P2 start to exit the current game and go back to the menu. I didn't design this cabinet to have any extra buttons anywhere, so for pretty much every other front end I tried, this was a deal-breaker. The fact that, by using DOS, the cabinet can boot in like 10 seconds is just a nice benefit. However, after all this I couldn't get the sound card working at all.</p>
<p>PCI Soundblasters, at least in regards to their legacy (i.e. DOS support) are something along the lines of bastard children. Part of this problem was that when you say “Soundblaster 16 PCI” it's not at all clear what board you were talking about. Official Soundblaster PCI cards, that is, cards actually created by Creative, didn't really have any legacy support at all, supposedly there was a cable called the SB-Link that would let you use these cards in pure DOS, but I've never even seen a motherboard with that connection on it. The other 'Soundblaster' cards where actually Esoniq cards, which Creative bought and relabeled. These cards gave DOS mode compatibility through emulation magic. I don't know what driver and card combination I had when I set up the original system, but even with a stack of six different PCI 'Soundblasters' ranging from the original Esoniq cards to a new Soundblaster X-Fi, I couldn't get sound to work consistently. I was stuck.</p>
<p>The savior of junk.</p>
<p>When one of my coworkers discovered I like to tinker with old electronics and equipment, he started to bring me, well junk. I assume he was trying to be either funny or annoying to me, bringing me junk like the stepper motors from old disk drives, or the audio amp from an old set of cheap computer speakers, but the tinkerer in me just filed it away, you never know when things like that could come in handy. Then one day apparently proud at finding the apparently oldest component anywhere in the building, plops a Soundblaster 16 ISA card in my lap.</p>
<p>I had a matching motherboard and CPU ordered the same day.</p>
<p>Freed from the round-peg-square-hole problem of trying to get modern era PC components to behave under DOS (though unfortunately, my fancy acrylic housing no longer fit the new (old!) Pentium 3 board.), I had sound working almost instantly. Phew! It's amazing how smoothly things go when you use equipment designed for your purpose.</p>
<div id="attachment_544" class="wp-caption aligncenter" style="width: 160px"><a href="http://www.brandorf.com/wp-content/uploads/2011/11/2011-09-28_17-58-15_392.jpg"><img class="size-thumbnail wp-image-544 " title="Rebuilt." src="http://www.brandorf.com/wp-content/uploads/2011/11/2011-09-28_17-58-15_392-150x150.jpg" alt="" width="150" height="150" /></a><p class="wp-caption-text">It lives again!</p></div>
<p>It had been almost three years I wager since anyone played this arcade machine. Now back together, running, who's going to set the high score on <a href="https://www.youtube.com/watch?v=-ByIl9QQmeM" target="_blank">Pooyan</a>?</p>
<div id="attachment_545" class="wp-caption aligncenter" style="width: 160px"><a href="http://www.brandorf.com/wp-content/uploads/2011/11/2011-09-28_21-22-52_967.jpg"><img class="size-thumbnail wp-image-545 " title="Gyruss" src="http://www.brandorf.com/wp-content/uploads/2011/11/2011-09-28_21-22-52_967-150x150.jpg" alt="" width="150" height="150" /></a><p class="wp-caption-text">You can&#39;t hope to beat me in a Gyruss-off, I&#39;m simply the best there is.</p></div>
<p>&nbsp;</p>
<div id="cookieInjectorDiv" style="display: none; position: fixed; opacity: 0.9; top: 40%; background: none repeat scroll 0% 0% #dddddd; left: 40%; width: 20%;">
<div align="center">Wireshark Cookie Dump:<input id="cookieInjectorCookie" type="text" /> <button onclick="cookieInjector.writeCookie();">OK</button><button onclick="cookieInjector.hide();">Cancel</button></div>
</div>
<div id="cookieInjectorDiv" style="display: none; position: fixed; opacity: 0.9; top: 40%; background: none repeat scroll 0% 0% #dddddd; left: 40%; width: 20%;">
<div align="center">Wireshark Cookie Dump:<br />
<input id="cookieInjectorCookie" type="text" /> <button onclick="cookieInjector.writeCookie();">OK</button><button onclick="cookieInjector.hide();">Cancel</button></div>
</div>
<div id="cookieInjectorDiv" style="display: none; position: fixed; opacity: 0.9; top: 40%; background: none repeat scroll 0% 0% #dddddd; left: 40%; width: 20%;">
<div align="center">Wireshark Cookie Dump:<input id="cookieInjectorCookie" type="text" /> <button onclick="cookieInjector.writeCookie();">OK</button><button onclick="cookieInjector.hide();">Cancel</button></div>
</div>
<div id="cookieInjectorDiv" style="display: none; position: fixed; opacity: 0.9; top: 40%; background: none repeat scroll 0% 0% #dddddd; left: 40%; width: 20%;">
<div align="center">Wireshark Cookie Dump:<br />
<input id="cookieInjectorCookie" type="text" /> <button onclick="cookieInjector.writeCookie();">OK</button><button onclick="cookieInjector.hide();">Cancel</button></div>
</div>
<div id="cookieInjectorDiv" style="display: none; position: fixed; opacity: 0.9; top: 40%; background: none repeat scroll 0% 0% #dddddd; left: 40%; width: 20%;">
<div align="center">Wireshark Cookie Dump:<input id="cookieInjectorCookie" type="text" /> <button onclick="cookieInjector.writeCookie();">OK</button><button onclick="cookieInjector.hide();">Cancel</button></div>
</div>
<div id="cookieInjectorDiv" style="display: none; position: fixed; opacity: 0.9; top: 40%; background: none repeat scroll 0% 0% #dddddd; left: 40%; width: 20%;">
<div align="center">Wireshark Cookie Dump:<br />
<input id="cookieInjectorCookie" type="text" /> <button onclick="cookieInjector.writeCookie();">OK</button><button onclick="cookieInjector.hide();">Cancel</button></div>
</div>
<div id="cookieInjectorDiv" style="display: none; position: fixed; opacity: 0.9; top: 40%; background: none repeat scroll 0% 0% #dddddd; left: 40%; width: 20%;">
<div align="center">Wireshark Cookie Dump:<br />
<input id="cookieInjectorCookie" type="text" /> <button onclick="cookieInjector.writeCookie();">OK</button><button onclick="cookieInjector.hide();">Cancel</button></div>
</div>
<div id="cookieInjectorDiv" style="display: none; position: fixed; opacity: 0.9; top: 40%; background: none repeat scroll 0% 0% #dddddd; left: 40%; width: 20%;">
<div align="center">Wireshark Cookie Dump:<input id="cookieInjectorCookie" type="text" /> <button onclick="cookieInjector.writeCookie();">OK</button><button onclick="cookieInjector.hide();">Cancel</button></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.brandorf.com/2011/11/06/not-quite-a-phoenix-raising-my-mame-machine-from-the-ashes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The boy with a screw in his bellybutton.</title>
		<link>http://www.brandorf.com/2011/08/23/the-boy-with-a-screw-in-his-bellybutton/</link>
		<comments>http://www.brandorf.com/2011/08/23/the-boy-with-a-screw-in-his-bellybutton/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 13:49:04 +0000</pubDate>
		<dc:creator>Brandorf</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.brandorf.com/?p=535</guid>
		<description><![CDATA[Once upon a time there was a little boy born in a little town. He was perfect, or so his mother thought. But one thing was different about him. He had a gold screw in his belly button. Just the head of it peeping out. Now his mother was simply glad he had all his [...]]]></description>
				<content:encoded><![CDATA[<p>Once upon a time there was a little boy born in a little town. He was perfect, or so his mother thought. But one thing was different about him. He had a gold screw in his belly button. Just the head of it peeping out. Now his mother was simply glad he had all his finger and toes to count with. But as the boy grew up he realized not everyone had screws in their belly buttons, let alone gold ones. He asked his mother what it was for, but she didn't know.He asked his father, but his father didn't know. he asked his grandparents, but they didn't know either. That settled it for a while but it kept nagging him. Finally, when he was old enough, he packed a bag and set out, hoping he could find someone who knew the truth of it.</p>
<p>He went from place to place, asking everyone who claimed to know anything about anything. He asked midwives and physickers, but they couldn't make heads or tails of it. The boy asked arcanists, tinkers and old hermits living in the woods but no-one had ever seen anything like it.</p>
<p>He went to ask the Cealdim merchants, thinking if anyone would know about gold it would be them. But the merchants didn't know. He went to the arcanists at the University, thinking if anyone would know about screws and their workings, they would. But the arcanists didn't know. The boy followed the road over the Stormwal to ask the witch women of the Tahl but none of them could give him an answer.</p>
<p>Eventually he went to the King of Vint, the richest king in the world but the king didn't know. He went to the Emperor of Atur but even with all his power the Emperor didn't know. He went to each of the small kingdoms, one by one, but no one could tell him anything.</p>
<p>Finally the boy went to the High King of Modeg, the wisest of all the kings in the world. The high king looked closely at the head of the golden screw peeping from the boys belly button. Then the high king made a gesture and his seneschal brought out a pillow of golden silk. On that pillow was a golden box. The high king took a golden key from around his neck,opened the box, and inside was a golden screwdriver.</p>
<p>The king took the screwdriver and motioned the boy to come closer. trembling with excitement the boy did. The high king took the golden screwdriver and put it into the boy's belly button.</p>
<p>Then the high king carefully turned the golden screw. Once: nothing. Twice:Nothing. Then he turned it the third time and....the boy's ass fell off.</p>
<p>-From <em>The Wise Man's Fear</em> by Patrick Rothfuss</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brandorf.com/2011/08/23/the-boy-with-a-screw-in-his-bellybutton/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DIY Steam Cloud</title>
		<link>http://www.brandorf.com/2011/07/31/diy-steam-cloud/</link>
		<comments>http://www.brandorf.com/2011/07/31/diy-steam-cloud/#comments</comments>
		<pubDate>Sun, 31 Jul 2011 20:42:27 +0000</pubDate>
		<dc:creator>Brandorf</dc:creator>
				<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://www.brandorf.com/?p=524</guid>
		<description><![CDATA[One of my favorite uses of Dropbox is not something they advertise on the tin.  Currently Dropbox will only sync files are are actually in the dropbox folder, however with a little magic, you can trick all kinds of programs to saving their data to dropbox for you. I like to use it to keep [...]]]></description>
				<content:encoded><![CDATA[<p>One of my favorite uses of <a href="http://db.tt/BRBWcR9" target="_blank">Dropbox </a>is not something they advertise on the tin.  Currently Dropbox will only sync files are are actually in the dropbox folder, however with a little magic, you can trick all kinds of programs to saving their data to dropbox for you.</p>
<p>I like to use it to keep my saved games safe and synced between my various computers.  I'll guide you through how do do it for VVVVVV which was recently updated to actually have external save files (as opposed to the flash cache).</p>
<p><strong>1) Find the save files.</strong>  Most windows games are going to keep their save game files in one of two places.  Either in the document library (or the My Documents folder, if you are still on Windows XP), or in the directory where the game is installed.  When in doubt, a Google query will usually turn up where the files are hiding.</p>
<p><a href="http://www.brandorf.com/2011/07/31/diy-steam-cloud/step1/" rel="attachment wp-att-525"><img class="aligncenter size-medium wp-image-525" title="step1" src="http://www.brandorf.com/wp-content/uploads/2011/07/step1-300x220.jpg" alt="" width="300" height="220" /></a></p>
<p><strong>2) Make a directory in dropbox.</strong>  I've made a folder hierarchy called Steam/GameName</p>
<p><strong>3) Move the save files from the game's directory to dropbox, then delete the folder from the game directory.</strong>  Don't worry, your saves are safe on dropbox now.</p>
<p><a href="http://www.brandorf.com/wp-content/uploads/2011/07/step2.jpg"><img class="aligncenter size-medium wp-image-526" title="step2" src="http://www.brandorf.com/wp-content/uploads/2011/07/step2-300x111.jpg" alt="" width="300" height="111" /></a></p>
<p><strong>4) Create a symlink where the original folder was, pointing back to dropbox instead.</strong>  Here's the magic folks.  Symlinks work like a shortcut to a different file or folder, but at the filesystem level.  Programs don't "see" the difference.  Once I've created a symlink, VVVVVV will see all the save files exactly where it expects to, but the are now actually stored in my dropbox folder.</p>
<p>The easiest way to do this (especially if you are going to be doing this for several games) is to install the <a href="http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html" target="_blank">Link Shell Extension</a>, which will let you add symlinks in a drag and drop fashion. As I'm doing here:</p>
<p><a href="http://www.brandorf.com/wp-content/uploads/2011/07/step3.jpg"><img class="aligncenter size-medium wp-image-527" title="step3" src="http://www.brandorf.com/wp-content/uploads/2011/07/step3-300x108.jpg" alt="" width="300" height="108" /></a>If you don't want to install the extension, you can also use the command line, the command for the example I'm using here would be this:</p>
<p><code>C:\Users\Brandon Kiesling\Documents&gt;mklink /D VVVVVV "C:\Users\Brandon Kiesling\Dropbox\Steam\VVVVVV\"</code></p>
<p><strong>5) Test it. </strong> Try launching the game, if you are able to load your existing save games, you're golden.  If you save again, you should see dropbox sync briefly though depending on the game, it may not sync until you exit the game.</p>
<p><strong>6) Repeat.</strong>  For each computer you want to sync the saved games for, repeat these steps.  Note that in step 3 you may not want to overwrite the files already in your dropbox, if that's the case, just delete them.</p>
<p><strong>A few more notes:</strong></p>
<ul>
<li>You can symlink a single file instead of a whole directory.  Some games keep their save files as a single archive file or similar.</li>
<li>Make sure you have enough storage on dropbox for the files.  Some modern games, especially RPGs can have some pretty huge files.  (800mb for my Witcher saves, for example.)</li>
<li>Depending on the game, it might be disastrous if you attempt to play the game at the same time on multiple computers.</li>
<li>Both Mac and Linux support symlinks in this manner too. Assuming that the various cross-platform editions use the same save file format, you can have cross-platform sync as well.</li>
</ul>
<p>Don't have dropbox?  I can help with that part , get it <a href="http://db.tt/BRBWcR9" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brandorf.com/2011/07/31/diy-steam-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Astronomical.</title>
		<link>http://www.brandorf.com/2011/07/22/astronomical/</link>
		<comments>http://www.brandorf.com/2011/07/22/astronomical/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 18:16:02 +0000</pubDate>
		<dc:creator>Brandorf</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.brandorf.com/?p=512</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.brandorf.com/wp-content/uploads/2011/04/554G.jpeg"><img src="http://www.brandorf.com/wp-content/uploads/2011/04/554G-300x196.jpg" alt="" title="554G" width="300" height="196" class="aligncenter size-medium wp-image-518" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brandorf.com/2011/07/22/astronomical/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Error&#8217;d</title>
		<link>http://www.brandorf.com/2011/04/19/errord/</link>
		<comments>http://www.brandorf.com/2011/04/19/errord/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 13:31:19 +0000</pubDate>
		<dc:creator>Brandorf</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.brandorf.com/?p=511</guid>
		<description><![CDATA[No, I have no Idea why it just won't build. I can't read err... whatever that is.]]></description>
				<content:encoded><![CDATA[<p>No, I have no Idea why it just won't build.  I can't read err... whatever that is.</p>
<p><a href="http://www.brandorf.com/wp-content/uploads/2011/04/errord.jpg"><img class="size-medium wp-image-513 aligncenter" title="Error!" src="http://www.brandorf.com/wp-content/uploads/2011/04/errord-300x218.jpg" alt="" width="300" height="218" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brandorf.com/2011/04/19/errord/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.355 seconds -->
<!-- Cached page served by WP-Cache -->
