My HTPC Build
#1
Smile 
I've been wanting to post about this for a while, but haven't gotten around to it until now. This past summer, I finally got around to a project I've been wanting to do for a while. It was my first computer build, but I think it came out great!

First, a picture:
Image
That's right... I built an HTPC inside an old-school NES! I'm not going to claim credit for the idea, because it's definitely been done before, but I'm still quite happy with how it came out!

First, specs:
  • Zotac IONITX A-U Motherboard (Dual-Core ATOM @ 1.6 GHz, NVIDIA ION)
  • Wireless b/g/n
  • 2 GB RAM
  • 500 GB Harddrive
  • XBOX Infrared Reciever Dongle and Remote
  • Controller Ports WORK!
  • Ubuntu 10.10 with XBMC

Now, some more details:
After looking a lot for a motherboard, I finally settled on the IONITX A-U. It could handle HD video (a requirement for me), had a laptop-style power supply (kind of a requirement due to the NES form-factor), and even came with a wireless card! I had an extra 2 GB stick of RAM, so I've just put that in there. I've thought about getting another 2 GB, but everything seems to run fine on 2 GB, so I've held off on that. I had a desktop-style harddrive that I was hoping to fit in the case, but it was slightly too bulky, so I purchased a laptop-size harddrive, and it fits perfectly!

I wanted an IR reciever, but wanted it to look good with the case, and not spend too much money on it. I was able to get the XBOX DVD Dongle on eBay for $5, tore it apart, and soldered a USB connector on it. The USB headers from the motherboard worked perfectly for this.

I also wanted the controller ports to work so I could retain original functionality of the NES (that is, still be able to play NES games). I bought two parts from one guy that ended up breaking... which was a waste of $40. I have since ordered a new part from Raphnet that does the trick perfectly! On the software side of things, I've set up controller port one to be able to control XBMC, and XBMC can launch a NES emulator for retro gaming!

Overall, once I got the software all set up, the whole thing runs very smoothly. Just press the power button to turn it on, wait for it to boot, and I can start watching HD video. XBMC is just the perfect interface, and works beautifully (of course... I run bleeding-edge builds, so there's an occasional crash... Wink )

You might notice that I don't have an optical drive. I'm really just waiting for slimline blu-ray drives to come down in price, then I'll probably buy one and figure out how to stick it in the case. Of course, I don't expect this to happen for a while, but I've been fine without it so far. I'd also like to get more storage in there eventually (and an SSD for the OS), which will probably happen long before I get a blu-ray drive, but is still well into the future.

Oh, and for anyone who is planning a similar project, or is thinking about adding NES controller ports to their box with the raphnet part, here's my keymap.xml for that. This also works for the retrousb.com converter (which I originally bought, but broke). You might need to tweak it a bit to your preferences, but this was the functionality I wanted from the controller:
Code:
<!-- New version uses raphnet converter instead of RetroUSB.com converter
     Kept RetroUSB.com converter in so I can give it to others            
     Created by: TrueJournals (http://truejournals.com)                  
    
     NOTE: For raphnet converter, only first controller is used.          
     Self notes:
     RetroUSB: B;1 A;2 Select;3 Start;4
     Raphnet : B;7 A;8 Select;6 Start;5-->
<keymap>
    <global>
        <joystick name="RetroUSB.com RetroPad">
            <button id="1">PreviousMenu</button>
            <button id="2">Select</button>
            <button id="3">ContextMenu</button>
            <button id="4">ActivateWindow(shutdownmenu)</button>
        </joystick>
        <joystick name="raphnet.net 4nes4snes">
            <button id="7">PreviousMenu</button>
            <button id="8">Select</button>
            <button id="6">ContextMenu</button>
            <button id="5">ActivateWindow(shutdownmenu)</button>
        </joystick>
    </global>
    <FullscreenVideo>
        <keyboard>
            <up>OSD</up>
            <down>Info</down>
            <left>Rewind</left>
            <right>FastForward</right>
        </keyboard>
        <joystick name="RetroUSB.com RetroPad">
            <button id="3">ShowSubtitles</button>
            <button id="1">Fullscreen</button>
            <button id="2">Pause</button>
        </joystick>
        <joystick name="raphnet.net 4nes4snes">
            <button id="6">ShowSubtitles</button>
            <button id="7">Fullscreen</button>
            <button id="8">Pause</button>
        </joystick>
    </FullscreenVideo>
    <VideoOSD>
        <joystick name="RetroUSB.com RetroPad">
            <button id="1">Close</button>
        </joystick>
        <joystick name="raphnet.net 4nes4snes">
            <button id="7">Close</button>
        </joystick>
    </VideoOSD>
    <Visualisation>
        <keyboard>
            <up>ActivateWindow(MusicOSD)</up>
            <down>Info</down>
        </keyboard>
        <joystick name="RetroUSB.com RetroPad">
            <button id="2">Pause</button>
            <button id="1">FullScreen</button>
            <button id="3">CodecInfo</button>
        </joystick>
        <joystick name="raphnet.net 4nes4snes">
            <button id="8">Pause</button>
            <button id="7">FullScreen</button>
            <button id="6">CodecInfo</button>
        </joystick>
    </Visualisation>
    <Home>
        <joystick name="RetroUSB.com RetroPad">
            <button id="1">FullScreen</button>
        </joystick>
        <joystick name="raphnet.net 4nes4snes">
            <button id="7">FullScreen</button>
        </joystick>
    </Home>
    <VirtualKeyboard>
        <joystick name="RetroUSB.com RetroPad">
            <button id="3">Shift</button>
        </joystick>
        <joystick name="raphnet.net 4nes4snes">
            <button id="6">Shift</button>
        </joystick>
    </VirtualKeyboard>
</keymap>

I'd love to hear any thoughts/feedback/expansion ideas!
Reply
#2
Really awesome build, can we get a few more pics?

Reply
#3
I have a similar project to yours, but I am having issues using the NES controller in xbmc. I'm using the 4nes4snes to convert the controllers to USB. How did you get the D-Pad to work with xmbc? When I use mine, it reads each press on the D-Pad as multiple presses, while the buttons work as they should. My keymap is similar to yours but I have added axis line of code.
Reply

Logout Mark Read Team Forum Stats Members Help
My HTPC Build0