Tutorial 8: Monku R3 - ODROID-XU4 / XU4Q Ultimate Gaming Console Build Part 1
-
Author: Brian A. Ree
Part 2 of this tutorial which details the software final configuration can be found here.
Sections
0: Tools Needed
- A small screwdriver set that contains a few small phillips head screwdrivers.
- A clean static free work surface.
- Monitor or TV with HDMI support to test the device.
- Mac SD card image writing software. I use balenaEtcher, it is free and works great.
- Window SD card image writing software. I use Win32 Disk Imager, it is free and works well but can be a bit finicky with very large drives.
1: Parts Needed
- ODROID-XU4 / ODROID-XU4Q x1: $49.00 / $49.00 (On Sale normally $59) link / link
- Case x1: $5.40 link
- 64GB Micro SD Card x2: $15.99 link
- HDMI Cable x1: $1.00 link
- Power Supply 5V/4A x1: $5.50 link
- GameSir Wired Controller x1: $17.00 link
- USB WiFi Module x1: $4.80 link
- SD Card Reader x1: $11.00 link
The total project cost as described above and not including shipping or tools you don't have is around $94. That being said.
If you exclude the game controller control buttons or can some parts cheaper you can save around $17. Also you don't need two micro SD cards.
I like to have a spare in case one goes and the dual set listed above has a great price, also the card is well rated and from my personal experience I've only
had one fail unexpectedly out of 12 or so I've been using regularly during the configuration and development of the devices.
If you have an HDMI cable, a micro USB cable, and a 5V/4A 5.5mm barrel AC adapter then you can save even more. So while the price listed is around $94 you can probably
get it done for around $80 if you have some parts already. Not too bad once you see what this thing can do.
2: Introduction and Tutorial Goals
Hello and welcome to our Monku Retro 3 / ODROID-XU4 ultimate gaming console build tutorial. This review will show you in detail how to build a
Monku Retro 3 (ODROID-XU4) video game console from scratch. You will need some parts.
I've listed the ones I used above and placed a link next to each one. These are the actual items I've used in the
past and I find them to be reliable. SD cards do fail and sometimes with no warning but for the most part
I've had no problems with the parts listed.
This tutorial will cover the setup, and construction of the game console from a hardware and software point of view.
Now unlike the Monku Retro 1, 2 we won't be adding any special hardware buttons. The ODROID-XU4 comes with a hard reset button
built in, so that's already done for us. As for the custom control button I have not found a good location for it using the current case.
However, this device is much more powerful than the C1+ or even the C2 and it is also fairly more reliable so for now we'll not add one to the R3.
We will also cover all the software setup including installing an configuring Ubuntu, retroarch, and antimicro.
Let's take a look at some of the features of the device we're working on, wow look at that emulator list!
R3 / XU4 Features:
- ODROID Goodness!
- Hardware Reset Button
- Support for Atari 2600, Atari 7800, Atari Lynx, ColecoVision, MSX-1, MSX-2, NES, GameBoy, GameBoy Color, Virtual Boy, SNES, GameBoy Advance, WonderSwan Pocket/Color, NEO GEO Pocket/Color, Sega SG-1000, Sega Mark 3, Sega Master System, Sega Genesis, Sega GameGear, NEC Turbo Graphics 16, NEC Super Graphics, PSP, and PS1 emulators configured and ready to go.
- Retroarch with XBM, custom scripts to monitor the software button, start retroarch, maintain antimicro.
- Configured for low memory usage and for use with included controller.
- Full linux desktop environment gamepad control when not in game kiosk mode via antimicro.
- WiFi netowrk connectivity.
Take a look at the performance specs of this device when compared to some other common devices.
Ok let's get to it shall we!
3: The Hardware
First thing's first let's go over the tools and parts, lay them out, and get ready to build. We have an electronics screw driver set.
If you've built an ODROID-GO the same screw driver set should work fine here. Notice we have our device, an ODROID-XU4 is depicted below, this tutorial
applies equally to the ODROID-XU4 or the ODROID-XU4Q version of this device. The device runs just about every emulator you can think of and it runs
them wonderfully. We have our board, case, SD cards, USB WiFi module and tools all ready to go.
Clear your workspace and grab the case, take it out of its plastic bag if need be, place it down in the center of the work space.
There are two main clips on the case, all in all it's easier to work with than the C1+ / C2 cases. The first main clip is on the left hand
side of the case bottom near the top. The second main clip is on the top side of the case bottom near the right. You can see slight rectangles near
these areas in the image below.
To clear the first main clip give the case a slight skew as shown below. Ever so slightly pushing the bottom to the left while pushing the top
to the right should do it.
Once it comes undone flip the case around so that the other main clip is in the position depicted below.
Apply a similar set of forces until the clip separates. It should comes apart easily once you get the right set of
subtle forces on it. Notice we're using a similar technique for the second main clip as we used for the first.
Once you have the case separated you'll find a surprise inside. A bag of tiny screws. If you have an ODROID-GO and you have a good amount
of left over screws I would recommend using them instead of the screws provided. Now this could have changed but at one time the default case screws
were a bit smaller than the ODROID-GO screws and I found the extra screws in the ODROID-GO kit to be easier to work with.
Let's layout the tools and parts we need to assemble the case with the XU4 board mounted inside. You won't have to worry about
SD card access, if you're used to the C1+ or C2 case, the SD card is easily accessible by default.
Carefully open the antistatic bag that the XU4 comes in. Make sure you don't have a static charge by discharging yourself against something large and metal.
Layout the case and the board, rest the board on top of the antistatic bag, we're going to place the board on the bottom half of the case
and place and tighten the 2 internal screws. The XU4 case is similar to the C1+ / C2 case in that there are two internal screws and 2 external screws.
Tip: Make sure the screws are tight but don't over tighten them, snug would be a good description of how much to tighten them.
Flip over the case and place and tighten the two external screws.
With the back of the case facing towards you take notice of a small white switch.
Flip the switch closer to the edge of the case for SD card use, flip the switch the other way, closer to the
center of the case, for eMMC use.
Bam! You're all done with the hardware construction.
Next up we'll be working on the base SD card and OS image.
4: The Software
For the next step we're going to locate a specific Ubuntu OS image. I've tried a few images and ran all sorts of tests
and I've come to the conclusion that Ubuntu 16.04 LTS offers the best mix of performance, features, and support.
Head over to the hardkernel wiki. Locate the ocdroid-xu4 entry on the right hand
side of the site. Select it, and then select os_images from the list of options. Next select linux and ubuntu_4.9.
I know it is an older kernel and no longer supported but I wanted to run with a slightly older kernel that has less features and is a little bit
more efficient. You can try a newer one if you like the software configuration steps should be almost identical as long as you're using MATE.
Next decompress the downloaded OS image. You should end up with a file entry named ubuntu-16.04.2-mate-odroid-xu4-20170510.img that is almost 5GB.
You'll need to flash a micro SD card with the OS image now. A link to the SD card I currently use is posted above in the parts listing.
For OSX I use Balena Etcher.
On windows I use Win32 Disk Imager
and for Linux I use some CLI tools like dd.
On OSX install Balena Etcher from the link. Select the uncompressed OS image we just downloaded. Insert your micro SD card
into your Mac either using a converter of some kind, link to one listed above, or using a native SD card drive.
Make sure to select the proper target drive. You don't want to overwrite important data so make sure to double check the destination drive.
Once you're sure everything is set correctly then flash the OS image to the SD card, this will only take a few minutes. The SD card will be unmounted
and ready to remove at the end of the process.
On Windows install Win32 Disk Imager from the link.
Select the uncompressed OS image we jsut donwloaded. If you have trouble uncompressing the OS image with native Windows decompression
tools try using 7-Zip, it has come in handy for me in the past.
ALERT: Make sure to triple check your drive letter it is very easy in Windows, using this software, to select the wrong drive and ruin it.
So triple check and make sure you have the correct drive letter selected. Once that's done click the Write button to write the OS image
to the SD card. Wait a few minutes and let it complete. You'll want to unmount the SD card before removing it from the computer.
On Linux use the following command to list the drives on the system.
sudo fdisk -l
Look for an entry like the following. Make sure you have identified the correct drive by ejecting the SD card and
checking that the entry is not longer available.
ALERT: Be careful and take the time to correctly identify the correct Linux device or you could end up
overwriting one of your drives.
Device Boot Start End Sectors Size Id Type
/dev/sda1 8192 30253055 30244864 14.4G c W95 FAT32 (LBA)
To restore an image to a drive using the terminal on a Ubuntu linux system
use the following command.
sudo dd of=/dev/sda1 if=~/ubuntu-16.04.2-mate-odroid-xu4-20170510.img
Wait a few minutes for the process to finish and an output report to be printed to the terminal.
Now you have an SD card ready to use on your ODROID-XU4!
5: Software Updates, Partition Sizes, and More
First thing is first let's get rid of that pesky login prompt. If your device has USB trouble on boot up just power cycle it.
I would say though to use the software control buttons once things are all setup and never use the hardware power button unless you are
turning it back on again. For the remainder of the tutorial we expect that you'll have a keyboard and mouse hooked up to the device.
If you go to the following menu location Applications -> System Tools -> MATE Terminal it will open up a terminal window for you.
We're going to run a series of commands at the terminal now. I'm going to list them below. Some do take a while to run but you may have to sit
near the screen in case you're prompted by an install. It stinks coming back to a process you thought would finish by itself and see a dialog popped up asking for your input, ugh!
What we are doing here is setting up auto login, updating Ubuntu, and installing some packages. Let's get to it!
Type this command or copy and paste it into the terminal window.
sudo nano /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf
You'll be prompted for the password, use odroid.
You will see some text like this in the file.
[Seat:*]
greeter-session=lightdm-gtk-greeter
You're going to add a line at the bottom, autologin-user=odroid, and then save and close the file. Press
Crtl+O then hit enter to save the file. Press Ctrl+X then press enter to exit the editor.
You won't be prompted to login on the next reboot.
Next up we'll be running updates on the OS packages and installing a few things. This part takes a little while but
for the most part it runs by itself. Enter in and run each of these commands in the order shown below from the terminal window.
sudo apt-get update -y
If you get a boot.ini prompt for this command just hit enter. This command takes a little while.
sudo apt-get upgrade -y
sudo apt-get install git -y
sudo apt-get install gparted -y
sudo apt-get install make -y
sudo apt-get install cmake -y
sudo apt-get autoremove -y
Now that all of that is done running the system is starting to shape up a bit. The next thing we want to do is turn off
any swap space the OS is using. The conventional wisdom is that swap partitions will degrade the SD card which I think are rated for
some number of read/write operations before they begin to fail. So far I've been disabling them without a noticeable performance hit.
Run the following command at the terminal.
swapon -s
If you see output similar to the following you have zram enabled. Follow the steps below to turn it off and remove it.
odroid@odroid64:~$ swapon -s
Filename Type Size Used Priority
/dev/zram0 partition 219824 2080 5
/dev/zram1 partition 219824 2076 5
/dev/zram2 partition 219824 2076 5
/dev/zram3 partition 219824 2076 5
Ok so we want to disable these to make sure our SD card lasts as long as it can.
Whatever performance increase, or decrease, they cause hasn't been noticeable by me but I don't want the extra read/write
operations. So let's run the following command. The XU4 I beleive does not have a swap partition by default.
sudo apt-get remove --purge zram-config -y
If you notice a standard swap partition listed, follow the following steps to remove and disable the swap partition.
swapoff -a
This will immediately disable swap on the system. Next remove any swap entries from /etc/fstab by editing the file as root and commenting out any
swap partition entries.
Reboot the system. If, for some reason, the swap partition is still there open gparted, System -> Administration -> GParted.
Locate the partition in the list of active partitions and unmount, then delete the partition.
Next up we're going to run a MATE software update by navigating to System -> Administration -> Software Update
in the menu system.
ALERT: If you are asked to perform a partial update then sckip this step we'll run with the packages we have installed.
I've noticed that in some cases the packages can get a little wonky. I would only proceed with an update if no Partial Update
dialog pops up.
If it is not a partial update prompt, click the Update button, wait a little while it slowly turns into a progress bar dialog and perform
the updates. At the end of the process you will be prompted to restart the system. Hit Restart.
Nice, notice the no-login prompt when the system started up. Looking more and more like a retro gaming console by the minute.
Ok last thing we're going to do is resize the main partition to use all the available space. If you go to System -> Administration -> GParted
in the menu system you should see something like what's depicted below. Notice that there is something like 50GB of unused space. If you have little
to no unused space but still have room on the SD card you need to resize your root partition.
I'll give you a quick rundown of the process.
ALERT: You may not need to do this but you should double check anyway.
The best way to work with an ext4 file system is on our XU4.
Use the second SD card that comes with the recommended purchase listed on the hardware build.
Write the base OS image onto the SD like we did above and install gparted, also like we did above. You don't have to run all the updates and stuff
just make sure gparted is installed. Use the SD to USB adapter listed above to mount the SD card that we want to resize partitions for onto the
OS. You should see a little drive icon appear, we'll call this SD-USB for SD to USB.
Fire up the bare bones Ubuntu SD card if you haven't already. Start gparted from the menu
System -> Administration -> GParted and select the SD-USB card attached not the root file system running Ubuntu.
Select the root file system on the SD-USB card. Right click on it and go to the resize option if you get an error you may need to unmount this partition
and then try to resize it. You can visually resize the partition now by dragging the arrow all the way to the right or by setting the fields contained
in the form to have 0 free space following. Bam! We're done with this section.
6: Retroarch and Antimicro Installation
Alright now we're getting somewhere. Let's get retroarch and antimicro installed so we can begin the configuration process.
To install retroarch we need to open a terminal, Applications -> System Tools -> MATE Terminal.
sudo add-apt-repository ppa:libretro/stable && sudo apt-get update -y && sudo apt-get install retroarch* libretro-* -y
Try the command above on the XU4, hit enter if prompted, and Y if prompted. If it fails don't worry.
I noticed it fails on the C2 but I'm not sure about the C1+ no worries though the *'s in the package lists are the culprit.
It's pulling down some packages that have dependency issues and that is then halting the whole command. If it failed try running this command instead.
sudo apt-get install retroarch retroarch-assets retroarch-dbg libretro-beetle-lynx libretro-genesisplusgx libretro-handy libretro-4do libretro-bsnes-mercury-performance libretro-bsnes-mercury-accuracy libretro-bsnes-performance libretro-beetle-wswan libretro-dinothawr libretro-beetle-ngp libretro-bsnes-balanced libretro-gambatte libretro-fbalpha2012 libretro-fba libretro-beetle-psx libretro-vba-next libretro-gw libretro-mupen64plus libretro-beetle-sgx libretro-2048 libretro-tyrquake libretro-beetle-pcfx libretro-prosystem libretro-bsnes-accuracy libretro-parallel-n64 libretro-picodrive libretro-mame libretro-nestopia libretro-mednafen-psx libretro-core-info libretro-gpsp libretro-mess libretro-beetle-pce-fast libretro-mgba libretro-fbalpha2012-neogeo libretro-fba-neogeo libretro-beetle-vb libretro-tgbdual libretro-fba-cps1 libretro-fba-cps2 libretro-fmsx libretro-stella libretro-yabause libretro-mess2014 libretro-mess2016 libretro-desmume libretro-beetle-bsnes libretro-glupen64 libretro-catsfc libretro-quicknes libretro-bsnes-mercury-balanced libretro-vbam libretro-bluemsx libretro-fceumm libretro-nxengine libretro-snes9x-next libretro-mame2014 libretro-mame2016 libretro-fbalpha2012-cps1 libretro-fbalpha2012-cps2 libretro-fbalpha2012-cps3 libretro-fbalpha libretro-snes9x libretro-prboom libretro-beetle-gba -y
Ok if one of these packages fail, remove it from the list and try again. The command above is the exact command I use on my C2's.
For my XU4's I have been fine running the initial command listed above.
After that's done let's do a little updating and cleaning.
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get autoremove -y
Now you shold have this menu option available after the commands are done running, Applications -> Games -> Retroarch.
Click on it and you should see something similar to what's depicted below.
Alright, are you getting excited? I know I am, we're almost there. Ok so don't mess with retroarch now, we'll come back to it.
Next we have to get antimicro installed so we can control everything with a gamepad when retroarch isn't running. Alrighty let's do it.
Go to this URL, https://github.com/AntiMicro/antimicro/releases and download the latest release as a zip file. You should see it below
the Windows EXE entries. Once it is done downloading open the odroid home folder. There is a link on the desktop for it.
Create a new folder called install_zips as depicted below.
Now go to the downloads folder and copy the antimicro zip file from there and paste into the install_zips
folder. Right click on it and select Extract Here. Wait for it to uncompress.
Now open up a terminal,
Applications -> System Tools -> MATE Terminal, and run the following commands. If your antimicro folder,
after decompressing the original zip archive, has a different name use that name in the change directory command below.
cd install_zips/antimicro-2.23/
sudo apt-get install libsdl2-dev -y
sudo apt-get install qttools5-dev -y
sudo apt-get install qttools5-dev-tools -y
sudo apt-get install libxtst-dev -y
Once all those packages are installed we can compile antimicro without any errors. So let's compile and install. Run the following commands.
cmake .
sudo make
sudo make install
You should see something like the following during this process.
Once that's done let's test antimicro, run antimicro at the terminal. If everything is ok you should see something like what is
depicted below.
Plug in a game controller that is supported by Linux. Hardkernel has the best price I've seen so if you pickup some ODROID-GOs or other
hardware grab one of these GameSir Wired Controllers.
Ok fire up retroarch, Applications -> Games -> RetroArch, you should see large yellow text flash across the bottom of the screen, look closely.
I've had some versions of the controller act a bit weird
but I've been working with about 5 of them and for the most part I've had no problems.
Ok close retroarch. Now type into the terminal window the antimicro command.
You should see something similar to what's depicted below if the controller is detected properly.
Ok that wraps us this section of the tutorial. Next up we're going to configure antimicro, and retroarch.
Let's hop to it!
7: Retroarch and Antimicro Configuration
Let's get antimicro configured so we can start controlling the desktop environment with the gamepad. Open up a terminal, I'll
not list the menu path for it from this point forward. Type antimicro in the terminal and wait for the app to launch.
Connect your linux supported controller and make sure that antimicro recognizes it. If it doesn't you'll need to try another controller.
Click the Controller Mapping button on the bottom left hand corner of the UI. This is where you tell antimicro about the base functionality of
your controller. If you don't have a button for a specific position in the list, for instance Linux seems to ignore the blue central button on the
GameSir controllers, use your mouse to click down to the next viable option. Match up the buttons on the gamepad with the controller graphic's green button indicator.
ALERT: Some buttons like triggers fire multiple time and you'll have to use the mouse to back up the position of the mapping and fix the double entry.
Click save when you are done and return to the main antimicro UI.
You will see a new mapping on the main antimicro UI that contains buttons for all the new mappings you just made. What we are going to do
here is setup mouse support so that you can control the desktop environment from the gamepad when retroarch isn't running.
We'll use the left thumbstick for fine, slower, mouse control and the right thumbstick for faster mouse control.
The A and B buttons will server as the left and right mouse buttons.
Right click on the left thumb stick area and select mouse normal from the option list.
Click on the left thumb stick buttons again and find the Mouse Settings button at the bottom of the window.
The image above shows the button we're looking for. In the mouse settings window set the Horizontal Speed and
Vertical Speed to 10 for the left thumbstick as depicted below.
Do the same thing for the right thumbstick except now set the Horizontal Speed and
Vertical Speed to 30 as depicted below.
Now let's map the mouse buttons, close all dialogs and get back to the main antimicro UI. Find the A button in the button list below
the thumbstick and dpad listing. Click on it then click on the Mouse tab. Select the left mouse button. Do the same thing for the B button
except choose the right mouse button for that mapping. Below is a screen shot depicting the left mouse button mapping in action.
Take it for a spin while the main antimicro UI is open. You should see the mouse move around the screen as the button
listings in the antimicro UI turn blue to indicate they are active. See how it feels, adjust the speeds on the mouse controls
as you see fit.
When you're all set go back to the antimicro main UI and click the Save As button at the top right hand side of the screen.
Save the controller configuration as game_sir_wired.xml or whatever you want to name your controller in the odroid home directory as
shown below. I'll provide a copy of my XML file here if you are using a GameSir controller you can just use it and save some time.
If you are using an Easy SMX controller use this file.
Click on Options -> Settings in the antimicro menu and make sure only Close To Tray and Launch In Tray
are checked. This will ensure antimicro lives in the app tray and doesn't clutter up our screen. We have one more setting to adjust and then
we'll be done with antimicro and on to retroarch!
While still on the antimicro setting window click on the Auto Profile option on the left. This will determine what profile
will automatically be associated with the attached gamepad. You kind of only get one mapping. It would be cool it if had different options
for different hardware but as far as I can tell you're setting it up for the controller you have. Click the Active checkbox at the top of the
window. Then select the Defualt, and only, row in the table. Click the Edit button and browse to the controller mapping XML file you saved
just a few steps back. Click Ok then quit out of antimicro, if it appears in the system try click the controller icon in the system tray and quit the app.
Nice! We are done with the antimicro configuration!!
Next up let's whip retroarch into shape. Fire up retroarch from the menu system,
I'll not list the menu path for it from this point forward. First let's get the gamepad working in retroarch.
In retroarch you can use the keyboard arrow keys, enter, and backspace to navigate the menu system without the gamepad.
Make sure you have a mouse, keyboard, and game controller connected to your ODROID. First thing we'll do is get the controller
working. Use the arrows on the keyboard to navigate left to the Settings section, the move down to the Input section
as shown below.
Adjust the settings on this screen as you see below. I usually set the max number of controllers to 4 since there are 4 USB ports.
And I like the "L1 + R1 + Start + Select" Menu Toggle Gamepad Combo setting, let's face it if you're accidentally hitting this
combination during game play something aint right. Leave the remaining settings and scroll down to the User 1 Binds.
You'll have to setup each user input in this way it's not too bad only takes a minute. Tip: Map the A and B buttons by name not position
if you are using a GameSir controller that way the colors green and red map to positive/select, negative/back button usage. It's just what I
like to do you can map em anyway you like!
Wow we are really moving along now. The next step takes a little while but requires very little work on your part.
You just have to click on a few things and wait for them to complete. Navigate back to the Main Menu which is the first
section retroarch starts on. Make sure your are connected to the internet.
Scroll down to the Content Updater and open that section.
I usually run each option in order. Try the Core Updater option first.
Tip: You may have to start retroarch from the terminal like so sudo retroarch when updating core files.
If you run retroarch with a -v for verbose output and you see an error message during the Core Update
command's execution then you should close retroarch and relaunch it with the sudo command.
Next go to the Thumbnails Updater, this part can take a while, and select each system you plan to load ROMs
from one at a time. Resist the urge to click a bunch in a row. I've done that and it can crash the app at the worst
and at the least it slows down each individual process as they are all competing for resources. Best to let one blast
through then move on. Tip: There are some one-off games you can get thumbnails for here like DOOM Demo, Cave Story, and Dinothawr.
You'll be able to load those games from the Content Downloader.
Next up you'll want to back out of the Thumbnail Updater section with the backspace key.
Scroll down to the Content Downloader and download any special content you want from the listing.
Tip: If you see a screen that has no options wait a minute back out and go into that section again it just didn't finish downloading
the index of available options. I usually don't install the one-off games but this is the spot for it. Most of the content I think
you can safely ignore but I'll leave that up to you. Run the following list of updates one at a time, basically everything
remaining on the list.
Update Core Info Files
Update Assets
Update Joypad Profiles
Update Cheats
Update Databases
Update Overlays
Update GLSL Shaders
Update Slang Shaders
Close retroarch when the update steps are complete. Hang on we're almost there, I actually don't know if I'm telling you that or If I'm telling my self that at this point.
Next up let's load some ROMs. I own a copy of Contra for the NES and I have a version of it in ROM form. Open the odroid home folder
using the link on the desktop. Right click in the folder and create a new directory, name it ROMS. Open the ROMS folder and
create a new folder and name it NES. Obviously you would substitute the NES folder for whatever system you intend to load ROMs for.
Not every single system is supported and some emulators have little caveats like bios files that need to be copied in etc. Many of the older
systems are well supported and straight forward. The C1+ can probably handle SNES and Genesis but I just like to use it for 8bit games. The C2
certainly has enough power for 16bit systems and I like to use it for 8bit, 16bit, and all of the handheld systems.
Once you have all your ROMs placed in the ROMS folder in their own separate folders for each system, this is the best way to do it,
we can start telling retroarch about the files. Fire up retroarch and scroll to the right until you see the Scan Directory option.
Navigate to the ROMS folder, you should see it in the list. Then select one system at a time for scanning. Scanning large ROM sets can
take a while. Again resist the urge to start multiple scans things will go smoother if you let an operation complete before starting a new one.
In this case we only have one ROM, Contra, so it will complete the scan instantly.
Back out of the Scan Directory section and you should now see a little NES controller on the section listing. Scroll to it and
now you should see Contra, or whatever ROMS you were trying to load. Load up a game by selecting it and then selecting a target emulator.
Your game should load up just fine in almost all cases.
Retroarch won't recognize every single rom for every single system. Also you may want to try different emulators
on troublesome ROMs. That's more advanced stuff and I'll cover that in the next tutorial where we wrap everything
up and put a nice bow on it. Congrats you built the hardware and now you configured the software and you can play some games.
Take your time loading up ROMs I'll write up the last little bit in tutorial 3 where we really make your game console pop!
Part 2 of this tutorial which details the software final configuration can be found here.