/
the-retro-console.html
205 lines (135 loc) · 14.6 KB
/
the-retro-console.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<!DOCTYPE html>
<html lang="en">
<head>
<!--- I don't write here much and this markup is older than it probably should be. Much of the older content moved from Wordpress to Ghost to Jekyll -->
<meta charset="utf-8">
<meta name="viewport" content="width=850" user-scalable="no">
<meta name="description" content="Andrew Simone is a digital product specialist based near Corning, New York." />
<meta property="og:site_name" content="Andrew Simone's blog"/>
<meta property="og:type" content="blog"/>
<title>The Retro Console</title>
<link rel="stylesheet" href="/assets/css/style.css">
<link rel="author" href="https://plus.google.com/+AndrewSimone/posts"/>
<link rel="icon" href="/assets/images/favicon.ico" type="image/x-icon"/>
</head>
<body>
<header>
<div class="title">
<a href="/"><h1 id="blog-title">This is a place</h1></a>
<p id="blog-subhead">(Some call it a blog)</p>
</div>
</header>
<div class="circle"><a href='/me' class="fill-div"></a></div>
</div>
<div class="content">
<p class="bio">This is where I'm supposed to tell you something about me.</p>
<div class="stupid-line"><a name="skipheader"></a></div>
<div class="post">
<a href="#skipheader"><h2>The Retro Console</h2></a>
<p>Last month [nb: in 2014] I started working on a retro gaming console to play some of my favorite classics on my television without the complication of a keyboard and mouse. I tried (and failed) a variety of different approaches and finally landed on this as the easiest and most manageable:</p>
<p><img src="/assets/images/retropie.JPG" /></p>
<p><b>The Hardware</b></p>
<ul>
<li><a href="http://www.amazon.com/RASPBERRY-MODEL-756-8308-Raspberry-Pi/dp/B009SQQF9C/asimone-20">Rasberry PI Model B</a></li>
<li><a href="http://www.amazon.com/CY-Raspberry-Pi-Case-Iceberry/dp/B00A42HA02/asimone-20">Rasberry Pi Case</a></li>
<li><a href="http://www.amazon.com/SanDisk-Class-Flash-Memory-SDSDB-032G-AFFP/dp/B007JRB0RE/asimone-20">SD Flash Memory Card</a> (I wouldn’t go less than 16 GB if you are planning on using PSX ROMs.)</li>
<li><a href="http://www.amazon.com/Microsoft-Xbox-Wireless-Controller-Windows/dp/B004QRKWKQ/asimone-20">XBOX 360 Wireless Controller</a> (Buy 1-4, depending on your retro gaming needs and desires.)</li>
<li><a href="http://www.amazon.com/Sandisk-MicroMate-Memory-Reader-SDDR-113/dp/B000YBH4YU/asimone-20">SD card to USB card reader</a></li>
</ul>
<p>Keep in mind there are certainly beefier setups you could use. I have an old 2006 Mac Mini with 2 GB of RAM, for instance, that’s just itching for a good use, but the level of effort and cost (assuming you don’t have the hardware) is far greater. The Rasberry PI, however, is quiet and has more than enough power to emulate many of the classics with minimal effort.</p>
<p><b>The RetroPie Project</b></p>
<p>The trick to any retro console is to get it to <em>feel</em> like a console and that requires some sort of emulation tool that organizes emulators, BIOs, and ROMs into a controller friendly interface, a console for consoles. There are numerous platforms that do this: <a href="http://hyperspin-fe.com/">Hyperspin</a>, <a href="http://www.maximus-arcade.com/">Maximus</a>, <a href="http://themaister.net/retroarch.html">RetroArch</a>, and more I’m surely missing.</p>
<p>Since the Raspberry PI uses a Linux kernel, however, and doesn’t have the processing power to deal with some newer systems, we’re interested in the <a href="http://themaister.net/retroarch.html">RetroArch</a> with an <a href="https://github.com/Aloshi/EmulationStation">Emulation Station</a> GUI.</p>
<iframe src="//player.vimeo.com/video/85952138?title=0&byline=0&portrait=0&autoplay=1&loop=1" width="800" height="450" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
<p>The list of systems it can emulate is pretty long, but the ones I’m currently using are the Atari 2600, Game Boy Advance, Game Gear, Sega Master System, Sega Genesis, NES, SNES, and PlayStation 1 (PSX).</p>
<p><strong>Note:</strong> <em>In order to get PlayStation games to run smoothly, you have to overclock your PI. Also, games that swap disks are problematic. I’m told some command line fiddling and file renaming can solve this problem, but that sort of defeats the purpose of this project. I also haven’t been able to get the N64 emulator to work.</em></p>
<p><a name="install"></a>
Now you could follow <a href="https://github.com/Aloshi/EmulationStation/blob/master/README.md">the Emulation Station directions</a> or you could do it the easy way and download and install <a href="http://blog.petrockblock.com/download/retropie-project-image/">the RetroPie Project’s SD card image</a> on your own SD card.</p>
<p><b>Installing RetroPie</b></p>
<p>Now that you’ve downloaded the image file, there are <a href="http://elinux.org/RPi_Easy_SD_Card_Setup">a number of ways to install it</a>, depending on your computer’s OS. The gist of the easiest methods is to connect your SD card to your computer and use a “disk image to USB bootable drive” program.</p>
<ul>
<li>Linux: <a href="https://apps.ubuntu.com/cat/applications/precise/usb-imagewriter/">ImageWriter</a> (I used this in Xubuntu, but mileage may vary depending on distro.)</li>
<li>Windows: <a href="http://sourceforge.net/projects/win32diskimager/">Win32 Disk Imager</a></li>
<li>Mac: <a href="http://sourceforge.net/projects/piwriter/">PiWriter</a></li>
</ul>
<p>Flash the drive with the image and then slide the card in your Rasberry PI, connect it to a monitor/TV, give it power, internet, and a keyboard, and then it should boot into Emulation Station.</p>
<p><b>Configuring RetroPie</b></p>
<p>After the boot, you’ll get an auto-configuration utility for the controllers. Don’t even bother trying, they aren’t connect yet and there’s plenty of work to do before we get there. Instead, just press F4 on the keyboard to exit into command line.</p>
<p>First, we’ll need to make sure RetroPie is using all the space on the SD card so type:</p>
<pre>sudo raspi-config</pre>
<p>Choose “expand root fs” from the menu, then reboot your PI and press F4 on the configuration screen again. Next we are going to make sure all the packages are updated:</p>
<pre>sudo apt-get update
sudo apt-get upgrade</pre>
<p>Each command could take a bit of time, particularly the second since it’s downloading the files necessary to update all the dependencies. Go grab a beer.</p>
<p>Next we’ll connecting the XBOX controllers. I’ve found the <a href="https://github.com/petrockblog/RetroPie-Setup/wiki/Setting-up-the-XBox360-controller">XBOX 360 controller documentation</a> is pretty solid on the RetroPie wiki. You’ll start by installing xboxdrv:</p>
<pre>sudo apt-get install xboxdrv</pre>
<p>And then follow one of the methods outline in <a href="https://github.com/petrockblog/RetroPie-Setup/wiki/Setting-up-the-XBox360-controller">the documentation</a>. I happened to use the first and found I had a conflict with the xpad driver (i.e., the controllers wouldn’t connect to the dongle), so I had to add the extra line, “rmmod xpad” to the <strong>/etc/rc.local</strong> edits the wiki outlined:</p>
<pre>rmmod xpad
xboxdrv --detach-kernel-driver --trigger-as-button --wid 0 --led 2 --deadzone 4000 --silent &
sleep 1
xboxdrv --detach-kernel-driver --trigger-as-button --wid 1 --led 3 --deadzone 4000 --silent &
sleep 1
xboxdrv --detach-kernel-driver --trigger-as-button --wid 2 --led 4 --deadzone 4000 --silent &
sleep 1
xboxdrv --detach-kernel-driver --trigger-as-button --wid 3 --led 5 --deadzone 4000 --silent &
sleep 1</pre>
<p>It’s important to remember these edits in <strong>/etc/rc.local</strong> must be placed BEFORE <strong>exit 0</strong>.</p>
<p>Now make sure the Xbox controllers are on, connect the USB dongle, and reboot the PI (“sudo reboot” should work) and it should recognize your controllers once Emulation Station finishes loading. If you were like me, however, and FUBARed the configuration, you’ll need press F4 on the keyboard and go to <strong>/home/pi/.emulationstation</strong> delete <strong>es_input.cfg</strong> and reboot the PI again to reconfigure.</p>
<p><strong>Note:</strong> <em>I later found out <a href="https://github.com/petrockblog/RetroPie-Setup/wiki/Setting-up-the-XBox360-controller">the third “init.d script” option</a> is less memory intensive than the above option I used, but I couldn’t tell you how well it works. I’ve also found sometimes out of the box XBOX controllers don’t want to connect to the dongle: try connecting the dongle to your computer and get them to recognize it there first. I don’t know exactly why, but it worked for me.</em></p>
<p>The PI should recognize your Xbox controllers and let you navigate through the different emulation menus. Don’t worry if it feels like it’s missing emulators, many of them don’t appear unless you have ROMs.</p>
<p>If you notice an emulated ROM doesn’t recognize your controller, that probably means you haven’t connected/configured RetroArch yet. Complete the directions at the bottom of the <a href="https://github.com/petrockblog/RetroPie-Setup/wiki/Setting-up-the-XBox360-controller">xboxdrv documentation</a> from earlier. Reboot after you complete those steps.</p>
<p><b>Advanced Configuration</b></p>
<p>Now, theoretically, you could play most ROMs loaded onto the PI, but let’s get a few more tweaks in before we hook this up to the TV in the living room.</p>
<p>I’ve found the RetroArch controller auto-configuration a little lacking since there are a number of different options it doesn’t configure out of the box (at least, as of writing this post). To make adjustments, you’ll edit the <strong>retroarch.cfg</strong> file which has a section at the end labeled <strong>#Player1</strong>.</p>
<p>If you like, you can replace <em>just that section</em> with my configuration in <a href="https://github.com/asimone/retropie-config/blob/master/config">this .txt file</a>. To add this to <strong>retroarch.cfg</strong> from the command line you can type:</p>
<pre>sudo nano /home/REtroPie/configs/all/retroarch.cfg</pre>
<p>This opens the config in a text editor with useful commands found at the bottom of the terminal screen.</p>
<p>What my config gives you:</p>
<ul>
<li>Makes the Left Analog button the default instead of the D-Pad.</li>
<li>Select functions like it should in game, but also can be used like an “alt” key. For example, hold down Select and Start at the same time to exit out of a game.</li>
<li>Swaps the A/B and X/Y button configuration to match Nintendo’s since the Xbox gets it “backwards.”</li>
</ul>
<p><strong>Note:</strong> <em>Controller config files are found in <strong>/home/REtroPie/configs</strong> and each individual emulator folder has a configuration file that <em>overrides</em> the <strong>retroarch.cfg</strong>. You could create a whole new config for one emulator or just swap a few keybinds. I’ve found out recently, for instance, my config above doesn’t play nice with portable console emulators. When I get around to fixing them, I’ll add those to this section.</em></p>
<p>I’d also recommend tweaking the following:</p>
<ul>
<li><a href="http://blog.petrockblock.com/forums/topic/using-overscan-in-retropie-to-fit-video-to-your-display/">Overscan</a> (important if have a large TV or Monitor)</li>
<li><a href="https://github.com/RetroPie/RetroPie-Setup/wiki/Overclocking">Overclocking</a> (This is particularly important if you want to emulate PSX games. I’m also told heatsinks and fans are overkill for the PI, but do what you feel is comfortable.)</li>
<li><a href="https://github.com/retropie/retropie-setup/wiki/Supported-Systems">Obtaining the proper Bios files</a> (e.g., PSX games won’t work otherwise.)</li>
</ul>
<p>Lastly, you’ll probably want to rearrange how the different console systems appear in Emulation System. The order they appear in the <strong>es_systems.cfg</strong> happens to be the order they are laid out in Emulation Station. To remove or rearrange items in Emulation Station from the command line type:</p>
<pre>sudo nano /home/pi/.emulationstation/es_systems.cfg</pre>
<p>Do your thing, then exit, save, and reboot.</p>
<p><strong>Note:</strong> <em>The <strong>es_systems.cfg</strong> also defines what ROM types can be read. Make sure ROMs match the files types listed for the respective emulators.</em></p>
<p><b>ROMS</b></p>
<p>People always seem to be coy about where to get these on the web and I don’t know why. There are two ways: <a href="http://www.nintendolife.com/news/2012/01/turn_your_retro_cartridges_into_roms_legally">rip them from the cartridges and discs you own</a> (legal) or torrent them (not legal).</p>
<p><strong>Note:</strong> <em>You’ll find the MAME Roms (arcade games) are particularly finicky. You’ll just have to test what works and what doesn’t. It’s important you get MAME 0.37b5 ROM set, but even then not all may work.</em></p>
<p>To load ROMs onto your PI, you’ll need to make sure it’s connected to your local area network, then head to the command line by pressing F4 and type:</p>
<pre>ifconfig</pre>
<p>Your PI’s IP address should look something like 192.168.1.7, but the last number will probably be different. Then you’ll need to connect using an SFTP client. Unless you change the password during the very first RetroPie boot, it should be the default:</p>
<p>Username: pi<br />
Password: raspberry</p>
<p>You’ll find the ROMs directory at <strong>/home/pi/RetroPie/roms</strong>, load them up, and then reboot.</p>
<p><strong>Note:</strong> <em>You can connect the pi to your wireless network, but you can <a href="http://raspberrypihq.com/how-to-add-wifi-to-the-raspberry-pi/">buy a peripheral and do some more configuration</a>.</em></p>
<p><b>HELP</b></p>
<p>The information here will inevitably deprecate as the RetroPie project continues to develop and I can’t be expected to update this page indefinitely [NB: Much of this is deprecated now, but I'll keep this up for historically purposes.]</p>
<p>If you really are baffled, I’d recommend these two resources:</p>
<ul>
<li><a href="https://github.com/petrockblog/RetroPie-Setup/wiki">RetroPie wiki</a></li>
<li><a href="https://retropie.org.uk/forum/">RetroPie forums</a></li>
</ul>
<p>Good luck and happy gaming!</p>
<div class="stupider-line"></div>
<div class="date"><time datetime="06 February 2014">06 February 2014</time></div>
</div>
</div>
<footer>
<div class="footer-bullshit">
<p><a href="mailto:me@andrewsimone.com">me@andrewsimone.com</a></p>
</div>
<div class="only-olds-browse-websites" role="pagination">
<p><a style="float: left;color:white;" href="/">«</a></p>
</div>
</footer>
</body>
</html>