Sprite
This document describes how to build Sprite, a home entertainment system.
Sprite is designed to run on a Zotac ZBOX Blu-ray, which provides the following:
- 1.8GHz Intel Atom processor
- 2GB memory
- Bluray/DVD player
- WiFi and Ethernet network interfaces
- HDMI audio/video output
- USB ports (Only the front-left USB port works with the ZBOX BIOS during the initial stages of booting.)
Sprite also makes use of two SNES-style USB joypads and a Rii mini wireless keyboard with touchpad.
Follow the instructions below to build Sprite:
- Install Fedora using a CD-ROM containing a disk image such as Fedora-20-x86_64-netinst.iso.
- During installation, create a 2GB swap partition and a / partition that spans the rest of the disk.
- Create a user named sprite.
- Install the minimum set of packages.
- Use
rpm -e
to remove any unnecessary packages. - Use
rpm -Uvh \
http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-20.noarch.rpm \
http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-20.noarch.rpm \
http://rpm.livna.org/livna-release.rpm
to install the RPM Fusion and livna repositories. 4. Install the required packages using
yum install \
ConsoleKit \
gdm
kernel-modules-extra \
mesa-dri-drivers \
xorg-x11-drv-nouveau \
xorg-x11-drv-evdev \
libdvdcss \
nfs-utils \
nss-mdns \
Nestopia \
snes9x \
xbmc
- Configure Sprite to boot in graphical mode:
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
. - Install your public SSH key as
/root/.ssh/authorized_keys
and configure sshd to disallow password-based logins by editing/etc/ssh/sshd_config
. /etc/sysconfig/network-scripts/ifcfg-Auto_ExampleCom
(replaceExampleCom
,UUID
[uuidgen
], andMACADDRESS
[ip link
]):
ESSID="ExampleCom"
MODE=Managed
KEY_MGMT=WPA-PSK
TYPE=Wireless
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="Auto ExampleCom"
UUID=UUID
ONBOOT=yes
HWADDR=MACADDRESS
WPA_ALLOW_WPA=yes
WPA_ALLOW_WPA2=yes
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
/etc/sysconfig/network-scripts/keys-Auto_ExampleCom
(replaceExampleCom
andPSK
):
WPA_PSK='PSK'
/etc/hostname
(replaceexample.com
):
sprite.example.com
/etc/sysconfig/network
:
NETWORKING=yes
NETWORKWAIT=1
/home/sprite/.snes9x/snes9x.xml
:
<?xml version="1.0"?>
<snes9x>
<preferences>
<option name="default_esc_behavior" value="2"/>
<option name="hires_effect" value="0"/>
<option name="full_screen_on_open" value="1"/>
<option name="video_mode_width" value="1920"/>
<option name="video_mode_height" value="1080"/>
<option name="window_width" value="1920"/>
<option name="window_height" value="1080"/>
<option name="prevent_screensaver" value="1"/>
<option name="aspect_ratio" value="1"/>
<option name="maintain_aspect_ratio" value="1"/>
<option name="ui_visible" value="0"/>
<option name="statusbar_visible" value="0"/>
<option name="modal_dialogs" value="1"/>
<option name="sync_to_vblank" value="1"/>
<option name="joystick_threshold" value="40"/>
<option name="sound_buffer_size" value="32"/>
<option name="sound_driver" value="0"/>
<option name="sound_input_rate" value="31950"/>
<option name="sound_sync" value="1"/>
<option name="transparency" value="1"/>
<option name="frameskip" value="200"/>
<option name="16bit_sound" value="1"/>
<option name="stereo" value="1"/>
<option name="playback_rate" value="5"/>
<option name="block_invalid_vram_access" value="1"/>
<option name="sram_directory" value="/home/sprite/.snes9x"/>
</preferences>
<controls>
<calibration joystick="0">
<axis number="0" min="-32767" max="32767" center="0"/>
<axis number="1" min="-32767" max="32767" center="0"/>
</calibration>
<calibration joystick="1">
<axis number="0" min="-32767" max="32767" center="0"/>
<axis number="1" min="-32767" max="32767" center="0"/>
</calibration>
<joypad number="0">
<binding name="Up" binding="556270082"/>
<binding name="Down" binding="556270083"/>
<binding name="Left" binding="556270080"/>
<binding name="Right" binding="556270081"/>
<binding name="Start" binding="553648135"/>
<binding name="Select" binding="553648134"/>
<binding name="A" binding="553648129"/>
<binding name="B" binding="553648128"/>
<binding name="X" binding="553648131"/>
<binding name="Y" binding="553648130"/>
<binding name="L" binding="553648132"/>
<binding name="R" binding="553648133"/>
</joypad>
<joypad number="1">
<binding name="Up" binding="573047298"/>
<binding name="Down" binding="573047299"/>
<binding name="Left" binding="573047296"/>
<binding name="Right" binding="573047297"/>
<binding name="Start" binding="570425351"/>
<binding name="Select" binding="570425350"/>
<binding name="A" binding="570425345"/>
<binding name="B" binding="570425344"/>
<binding name="X" binding="570425347"/>
<binding name="Y" binding="570425346"/>
<binding name="L" binding="570425348"/>
<binding name="R" binding="570425349"/>
</joypad>
</controls>
</snes9x>
- The first time you run Nestopia, perform the following configurations using a mouse:
- Press
escape
to display Nestopia’s menu bar. - Configure Nestopia to use joypads for input.
- Configure Nestopia to start in fullscreen mode.
- Set the audio output to SDL.
- After quitting Nestopia, edit
/home/sprite/.nestopia/nstcontrols
and replace the lineSTOP _ESCAPE
withEXIT _ESCAPE
. From this point on, you can access the Nestopia menu by pressingf
. - Modify
/etc/asound.conf
so that the HDMI sound device is the default:
defaults.ctl.card 1
defaults.pcm.card 1
defaults.pcm.device 7
defaults.timer.card 1
- XBMC’s default behavior allows the use of the backslash key to toggle full-screen mode, but this is rarely useful. Copy
/usr/share/xbmc/system/keymaps/keyboard.xml
to/home/sprite/.xbmc/userdata/keymaps/
, and edit the file to replace<backslash>ToggleFullScreen</backslash>
with<backslash>OSD</backslash>
. - Using XBMC, perform the following configuration:
- Install video add-ons (e.g., select
System
→Add-ons
→Get Add-ons
→XMBC.org Add-ons
→Video Add-ons
→USTV VoD
→Install
). - Install the Rom Collection Browser (i.e., select
System
→Add-ons
→Get Add-ons
→XMBC.org Add-ons
→Program Add-ons
→Rom Collection Browser
→Install
). - Configure the Rom Collection Browser (i.e., select
Programs
→Rom Collection Browser
):- Create configuration:
yes
Scrape game information and artwork online
- Choose a platform:
NES
- Path to NES emulator:
/usr/bin/nestopia
- Emulator parameters:
"%ROM%"
(default) - Path to NES ROMs:
...
- File mask:
*
- NES artwork:
/home/sprite/NES
- Create configuration:
- Install video add-ons (e.g., select
- Turn off the RSS feed ticker (i.e., deactivate
System
→Appearance
→Show RSS news feeds
).