My experience getting Emulationstation up and running


36 posts   Page 1 of 2   1, 2
by D1Tremere » Thu Dec 13, 2012 11:54 pm
My experience getting Emulationstation up and running on a 512MB Pi

1st: Used the install script at
https://github.com/petrockblog/RetroPie-Setup
[Do this all as base user, not root and not in startx]

This script is tested with the Raspbian distribution, but users have reported that it also works with RaspBMC. Before using the script, please make sure that you have run the raspi-config script to extend your root file system and that your memory split is set to 192 or 128. You can run the script with

sudo raspi-config

To run the RetroPie Setup Script make sure that your APT repositories are up-to-date and that Git and the dialog package are installed:

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y git dialog

Then you can download the latest RetroPie setup script with

cd
git clone --depth=0 git://github.com/petrockblog/RetroPie-Setup.git

The script is executed with

cd RetroPie-Setup
chmod +x retropie_setup.sh
sudo ./retropie_setup.sh

[I installed the quick binary install]

2nd: Add Roms (you may need to add Bios Roms) to respective emulators and run the ES scraper to register them. So far I've only added NES.

3rd: Launch with
emulationstation (do not use Sudo, do this from command and not in startx)

If all is working well with running at this point we can move on to configuring Joystick, if the Emulator sees no systems its likely reading the non populated example file which can be fixed by replacing it with the populated file.

(I used a Logitech Joypad, basically a generic console controller)
4th: Configure controller
In terminal, browse to the folder where the retroarch-joyconfig is. Default should be

cd /home/pi/RetroPie/RetroArch-Rpi/tools

Then use the command

./retroarch-joyconfig >> ~/.retroarch.cfg

[At this point I ran into a problem, if I ran Emulationstation with a .retroarch.cfg in /home/user which is where it shows up and is read from the controller would work fine but the emulator would not. A [WARN] : : [ALSA] : poll() was signaled, but EAGAIN returned from write. Your ALSA driver might be subtly broken. error would occure over and over slowing the emulation to a crawl and killing sound. This is how I fixed it.
Add
audio_driver = "asl"
audio_out_rate = "44100"
to your cfg. There are likely other ways, but this worked for me.]

This is a work in progress so I'll add more as I go along.
Thanks to the following links and people who have helped this poor noob along the path.
https://github.com/petrockblog/RetroPie-Setup
viewtopic.php?t=13600
https://github.com/Aloshi/EmulationStation
http://raspberrypi.stackexchange.com/qu ... -retroarch
Posts: 14
Joined: Wed Dec 12, 2012 3:23 am
by skater_j10 » Fri Dec 14, 2012 9:17 am
Hey D1Tremere thanks for sharing!

I'm presently doing the same thing, just got emulationstation up and running decently on my 512MB Model B. I am at the point where I am able to play Playstation Roms (.bin) like Final Fantasy VII, Crash Bandicoot, & Tony Hawk's Pro Skater at very close to fullspeed with only minor sound deterioration. I'm working with a couple other guys on a Raspberry Pi Handheld Kit project that we're calling the Pi-Play-It.

Image

More Prototype Pics here: http://www.flickr.com/photos/skater_j10/sets/72157631958884573/.

I hadn't got to the point of installing joysticks so your info is quite helpful, so I figured I'd share some info too that may be helpful to yourself and others:

I found that if you'd like to use emulators that are more resource intensive, like SNES, the problem of static pops and clicks through your speakers becomes more prevalent. It was mentioned in the forums that the reason may be that the alsa sound driver can't keep up with the demands of the emulator and as a result it distorts the sound. Toadking is waiting for some of the devs to repair this I believe. I tried my switching retroarch.cfg file to:
Code: Select all
audio_driver = "sdl"
audio_out_rate = "44100"

I heard that this had the best results but unfortunately I still had sound issues. I'll try switching that to "asl" and see if it works better.

I did find a couple other band-aids:
In order to keep the emulator speed up I used a large memory split. I changed mine to 384 (meaning 384MB GPU/128MBCPU) and overclocking the Pi to 900MHz to necessitate SNES gameplay. This took away most of my sound problems and allowed me to play SNES Roms at fullspeed. After doing this though it seems that the ARM chip starts getting a little hotter and the sound issue returns after playing for 5-10mins or so, an added heatsink seems to alleviate this issue. Every now and again the sound problem starts up again for a little bit, I found that hitting 'F' on the keyboard refreshs the screen (I think it's the fullscreen key) and seems to stop the sound problems.

Here's a list of my other findings, most were changes I had to make to the es_systems.cfg file:

Found that SNES, NES, Game gear, Sega Master system, & GameBoy color all worked at very close to full speed with no issues whatsoever at 900MHz overclocking

GameBoy Advance - emulator is just too slow to be playable, even at 900MHz

Atari 2600 - needed to add .a26 .A26 file extensions to es_systems.cfg

Playstation - Files needed to be unzipped in the rom folder and .bin .BIN extensions needed to be added. No need for a BIOS file, seems there may have been one bundled with it already.

MAME - It seems imame4all is the actual emulator core and it only plays supported Roms, see this list: http://code.google.com/p/imame4all/wiki/GameList

Sega Genesis (MegaDrive) - .bin .BIN extensions needed to be added as well as the COMMAND= line was incorrect and pointed to dgen instead of the emulation core for Genesis-Plus GX. I copied and pasted the COMMAND= from the Sega Master system emulator and everything worked. Emulator would fail to boot any roms with composite video when dgen was listed, strangely it worked with HDMI out. Genesis-Plus GX works with both video outputs.

NeoGeo - The emulator core doesn't seem to been bundled with Retroarch, not sure how to make this happen so I abandoned doing this. Keep in mind that you also have to install the BIOS "neogeo.zip" file inside the neogeo roms folder to make things work.

I also found the ability to change the aspect ratio if I'd like to stretch the picture to match the screen by enabling these code bits inside retroarch.cfg

Code: Select all
video_aspect_ratio_auto = true
video_aspect_ratio = 1.75

I too heard a few users were able to get the retroarch/emulationstation combo working in RaspBMC but tried as I might I could not get it to work, installed binaries and tried otherwise but to no avail. All I could get when booting emulation station was a black screen with a tiny white dot in the center everytime. I think the previous users were using RaspBMC RC4 and it's currently at RC5 so things may have changed in the new revision.

Special thanks to Toadking, Petrockblog, and Aloshi for making all this possible even for a linux noob like me! And thanks to all the other raspi forum users for posting their results and questions, it helped me out quite a bit.
User avatar
Posts: 43
Joined: Tue May 29, 2012 8:26 pm
by CPOKashue » Mon Dec 17, 2012 6:11 pm
This is a really great overview! It should really help people.

Two observations:
-Using SDL is better than ALSA anyway, the Pi version of Alsa is sort of incomplete. I got it to work but SDL still worked BETTER.
-I THINK you just use the emulationstation config file to add emulators, they don't need to exist as Retroarch cores. Just add the emulator launch line and associated filetypes, folders, etc. Aloshi or Petrockblog could probably confirm that, I haven't had to mess with it yet 'cause I only use the Retropie setup for 8-bit gaming.

Anyhow your writeup is awesome, I wish it had existed for me when I was getting started.
Posts: 52
Joined: Fri Sep 28, 2012 6:13 pm
by D1Tremere » Tue Dec 18, 2012 1:41 am
Thanks guys, some great projects coming along and the info on setting resolution was something I was just looking for lol.

That handheld project looks potentially amazing, great work so far. I'm using that same mini TFT screen I think.

I wonder if anyone has tried to get M.U.G.E.N fighting engine up and running on Pi yet?
Posts: 14
Joined: Wed Dec 12, 2012 3:23 am
by petrockblog » Tue Dec 18, 2012 5:36 am
CPOKashue wrote:-I THINK you just use the emulationstation config file to add emulators, they don't need to exist as Retroarch cores. Just add the emulator launch line and associated filetypes, folders, etc. .


Yes, great overview!

~/.emulationstation/es_systems.cfg contains a list of systems to be emulated:
Have a look at https://github.com/petrockblog/RetroPie ... p.sh#L1021 to follow the next lines:
  • Each system has a name NAME.
  • The roms for each system have a root directory defined by PATH.
  • In that directory roms for a single system are searhed that have the extension(s) EXTENSION.
    When starting a rom from Emulation Station the command COMMAND is executed, where the placeholder %ROM% is replaced by the actual filename.

The subfolder "emulatorcores" in the RetroPie folder contains only RetroArch-specific files. The actual files of the emulators are contained in the subfolder "emulators". Note that some emulators are installed in /usr/bin/ etc.
fun stuff for technics enthusiasts: www.petrockblock.com
Posts: 260
Joined: Wed Jul 04, 2012 6:12 am
Location: Germany
by D1Tremere » Tue Dec 18, 2012 6:09 am
I ended up using only a single video setting

video_aspect_ratio_auto = true

To force it to fit the whole screen. Thanks much for that, saved a lot of trial and error.
Posts: 14
Joined: Wed Dec 12, 2012 3:23 am
by skater_j10 » Tue Dec 18, 2012 8:20 am
D1Tremere wrote:I ended up using only a single video setting

video_aspect_ratio_auto = true

To force it to fit the whole screen. Thanks much for that, saved a lot of trial and error.


Hey no prob, thanks for sharing your experiences! So if we are indeed using the same LCD and you are getting black bars on the side for the SNES emulator just set video_aspect_ratio to equal 1.25 as it then fills the entire LCD, 1.75 was just an example.

It's funny it seems that the 3.5" LCD http://dx.com/p/3-5-tft-lcd-monitor-visual-reversing-vehicles-reverse-camera-ntsc-pal-dc8-15v-49796 that I picked up from DX.com is a popular one, I've seen a few others with Pi projects using it. Can't beat the price I guess :) If anyone if wondering about pushing the limits of this LCD, I have found that it can run all the way down to 6VDC before the screen turns all white, as for current: under normal load it only draws 135mA.

Since I'm here, here's a couple nice retroarch.cfg settings I just figured out last night in order to use a button on the joystick to exit each emulator (in order to switch to other roms easily) and the other to toggle fullscreen mode as a speaker static quick fix:

Code: Select all
input_exit_emulator_btn = 5
input_toggle_fullscreen_btn = 4

Just enter in whatever number of button you want to map it to. 4 and 5 where R2 and L2 on my generic DX controller http://dx.com/p/usb-gamepad-controller-for-pc-160cm-cable-27502
User avatar
Posts: 43
Joined: Tue May 29, 2012 8:26 pm
by yankyfan09 » Tue Dec 18, 2012 5:39 pm
I'm having problems with emulation speed. I just got my controller to work but then emulation slowed. I followed this but was unsure where to add it. If someone could help me I would really appreciate it.


[At this point I ran into a problem, if I ran Emulationstation with a .retroarch.cfg in /home/user which is where it shows up and is read from the controller would work fine but the emulator would not. A [WARN] : : [ALSA] : poll() was signaled, but EAGAIN returned from write. Your ALSA driver might be subtly broken. error would occure over and over slowing the emulation to a crawl and killing sound. This is how I fixed it.
Add
audio_driver = "asl"
audio_out_rate = "44100"
to your cfg. There are likely other ways, but this worked for me.]
Posts: 15
Joined: Tue Dec 18, 2012 4:15 am
by Pendor » Tue Dec 18, 2012 6:34 pm
yankyfan09 wrote:I followed this but was unsure where to add it.


/etc/retroarch.cfg
Posts: 48
Joined: Tue Jul 24, 2012 3:21 am
by skater_j10 » Tue Dec 18, 2012 6:48 pm
yankyfan09 wrote:I'm having problems with emulation speed. I just got my controller to work but then emulation slowed. I followed this but was unsure where to add it. If someone could help me I would really appreciate it.

Try out this out instead, you can find it in the retroarch.cfg audio section just remove the # and adjust accordingly:

audio_driver = sdl
audio_out_rate = 44100

As CPOKashue mentioned sdl seems to work better.

Otherwise if that doesn't seem to cure it, I would suggest that you try making a larger GPU memory split (I use 384MB with my 512MB Pi) and overclocking to 900MHz. Both of these can be adjusted with "sudo raspi-config". Just keep in mind that a heatsink on the ARM/RAM package-on-package combo is recommended (by myself and others) when overclocking.
User avatar
Posts: 43
Joined: Tue May 29, 2012 8:26 pm
by D1Tremere » Tue Dec 18, 2012 11:53 pm
You are correct
video_aspect_ratio = 1.25
did indeed fix the black bar issue.
I hadn't even noticed the problem till today, and you've already provided me with a fix. I hope to return the favor: )
Posts: 14
Joined: Wed Dec 12, 2012 3:23 am
by yankyfan09 » Tue Dec 18, 2012 11:58 pm
So I thought I got my controller to work but I was wrong. On another post someone told me to edit my config file by using sudo leafpad and then making changes to my config file in the etc folder. Every time I do this I get an error saying

(leafpad:2319): Gtk-WARNING **: Attempting to store changes into `/root/.local/share/recently-used.xbel', but failed: Failed to create file '/root/.local/share/recently-used.xbel.CK5LPW': No such file or directory

(leafpad:2319): Gtk-WARNING **: Attempting to set the permissions of `/root/.local/share/recently-used.xbel', but failed: No such file or directory


Is this why none of my configurations are working? Sorry about all the questions, just trying to figure it out.
Posts: 15
Joined: Tue Dec 18, 2012 4:15 am
by skater_j10 » Wed Dec 19, 2012 12:12 am
Yep, that was my advice. You will get those errors appear in the terminal after you exit leafpad but you can just ignore them, your settings actually are saved. You can adjust things like aspect ratio or audio volume just to make sure if your joystick is still giving you trouble. It took me a little while to map out mine so I don't blame you. Stick to the lower number inputs and you should be fine (0-11).

Edit: This forum post may help: viewtopic.php?f=78&t=18735&p=188260&hilit=button+mapping#p188260
User avatar
Posts: 43
Joined: Tue May 29, 2012 8:26 pm
by yankyfan09 » Wed Dec 19, 2012 3:41 pm
Thanks for the reply and all of your help. I'm still not able to get any of my configurations to work. I'm using sudo leafpad then making edits and then I save. Heres my configuration file and what it looks like with my edits. I tried changing the video to full screen but that didnt work either. If someone could take a look at it maybe they can see something I'm not doing correctly. Sorry for posting my entire config file

## Skeleton config file for RetroArch

# Save all save files (*.srm) to this directory. This includes related files like .bsv, .rtc, .psrm, etc ...
# This will be overridden by explicit command line options.
# savefile_directory =

# Save all save states (*.state) to this directory.
# This will be overridden by explicit command line options.
# savestate_directory =

# Automatically saves a savestate at the end of RetroArch's lifetime.
# The path is $SRAM_PATH.auto.
# RetroArch will automatically load any savestate with this path on startup.
# savestate_auto_save = false

# Load libretro from a dynamic location for dynamically built RetroArch.
# This option is mandatory.

# If a directory, RetroArch will look through the directory until it finds an implementation
# that appears to support the extension of the ROM loaded.
# This could fail if ROM extensions overlap.
# libretro_path = "/path/to/libretro.so"

# Environment variables internally in RetroArch.
# Implementations can tap into this user-specificed information to enable functionality
# that is deemed too obscure to expose directly.
# Some variables might be "standardized" at a later time if needed.
# The string is formatted as key value pairs delimited by a semicolon ';'.
# Any white space between the delimiter ';' and the '=' is significant.
# I.e.: "key1=value1;key2=value2;..."
# environment_variables =

# Sets the "system" directory.
# Implementations can query for this directory to load BIOSes, system-specific configs, etc.
# system_directory =

#### Video

# Video driver to use. "gl", "xvideo", "sdl" or "ext" (external API driver)
# video_driver = "gl"

# Path to external video driver using the RetroArch driver API.
# video_external_driver =

# Windowed xscale and yscale
# (Real x res: base_size * xscale * aspect_ratio, real y res: base_size * yscale)
# video_xscale = 3.0
# video_yscale = 3.0

# Fullscreen resolution. Resolution of 0 uses the resolution of the desktop.
# video_fullscreen_x = 0
# video_fullscreen_y = 0

# Start in fullscreen. Can be changed at runtime.
# video_fullscreen = false

# If fullscreen, prefer using a windowed fullscreen mode.
# video_windowed_fullscreen = true

# Which monitor to prefer. 0 (default) means no particular monitor is preferred, 1 and up (1 being first monitor),
# suggests RetroArch to use that particular monitor.
# video_monitor_index = 0

# Forcibly disable composition. Only works in Windows Vista/7 for now.
# video_disable_composition = false

# Video vsync.
# video_vsync = true

# Smoothens picture with bilinear filtering. Should be disabled if using pixel shaders.
# video_smooth = true

# Forces rendering area to stay equal to game aspect ratio or as defined in video_aspect_ratio.
# video_force_aspect = true

# A floating point value for video aspect ratio (width / height).
# If this is not set, aspect ratio is assumed to be automatic.
# Behavior then is defined by video_aspect_ratio_auto.
video_aspect_ratio = 1.25

# If this is true and video_aspect_ratio is not set,
# aspect ratio is decided by libretro implementation.
# If this is false, 1:1 PAR will always be assumed if video_aspect_ratio is not set.
video_aspect_ratio_auto = true

# Forces cropping of overscanned frames. Crops away top 7 scanlines and 8 bottom scanlines. (15/15 for interlaced frames).
# video_crop_overscan = false

# Path to Cg shader.
# video_cg_shader = "/path/to/cg/shader.cg"

# Path to bSNES XML shader (GLSL only). If both Cg shader path and XML shader path are defined,
# Cg shader will take priority unless overridden in video_shader_type.
# video_bsnes_shader = "/path/to/bsnes/xml/shader.shader"

# Which shader type to use. Valid values are "cg", "bsnes", "none" and "auto"
# video_shader_type = auto

# Defines a directory where XML shaders are kept.
# video_shader_dir =

# Render to texture first. Useful when doing multi-pass shaders or control the output of shaders better.
# video_render_to_texture = false

# Defines the video scale of render-to-texture.
# The output FBO size is scaled by these amounts against the input size (typically 256 * 224 for SNES).
# video_fbo_scale_x = 2.0
# video_fbo_scale_y = 2.0

# Define shader to use for second pass (needs render-to-texture).
# video_second_pass_shader = "/path/to/second/shader.{cg,shader}"

# Defines if bilinear filtering is used during second pass (needs render-to-texture).
# video_second_pass_smooth = true

# CPU-based filter. Path to a bSNES CPU filter (*.filter)
# video_filter =

# Path to a TTF font used for rendering messages. This path must be defined to enable fonts.
# Do note that the _full_ path of the font is necessary!
# video_font_path =

# Size of the TTF font rendered.
# video_font_size = 48

# Attempt to scale the font to fit better for multiple window sizes.
# video_font_scale = true

# Enable usage of OSD messages.
# video_font_enable = true

# Offset for where messages will be placed on screen. Values are in range 0.0 to 1.0 for both x and y values.
# [0.0, 0.0] maps to the lower left corner of the screen.
# video_message_pos_x = 0.05
# video_message_pos_y = 0.05

# Color for message. The value is treated as a hexadecimal value.
# It is a regular RGB hex number, i.e. red is "ff0000".
# video_message_color = ffffff

# Video refresh rate of your monitor.
# Used to calculate a suitable audio input rate.
# video_refresh_rate = 59.95

# Allows libretro cores to set rotation modes.
# Setting this to false will honor, but ignore this request.
# This is useful for vertically oriented games where one manually rotates the monitor.
# video_allow_rotate = true

#### Audio

# Enable audio.
# audio_enable = true

# Audio output samplerate.
audio_out_rate = 44100

# When altering audio_in_rate on-the-fly, define by how much each time.
# audio_rate_step = 0.25

# Audio driver backend. Depending on configuration possible candidates are: alsa, pulse, oss, jack, rsound, roar, openal, sdl, xaudio and ext (external driver).
audio_driver = sdl

# Path to external audio driver using the RetroArch audio driver API.
# audio_external_driver =

# Override the default audio device the audio_driver uses. This is driver dependant. E.g. ALSA wants a PCM device, OSS wants a path (e.g. /dev/dsp), Jack wants portnames (e.g. system:playback1,system:playback_2), and so on ...
# audio_device =

# External DSP plugin that processes audio before it's sent to the driver.
# audio_dsp_plugin =

# Will sync (block) on audio. Recommended.
# audio_sync = true

# Desired audio latency in milliseconds. Might not be honored if driver can't provide given latency.
# audio_latency = 64

# Enable experimental audio rate control.
# audio_rate_control = true

# Controls audio rate control delta. Defines how much input rate can be adjusted dynamically.
# Input rate = in_rate * (1.0 +/- audio_rate_control_delta)
# audio_rate_control_delta = 0.005

# Audio volume. Volume is expressed in dB.
# 0 dB is normal volume. No gain will be applied.
# Gain can be controlled in runtime with input_volume_up/input_volume_down.
# audio_volume = 0.0

#### Input

# Input driver. Depending on video driver, it might force a different input driver.
# input_driver = sdl

# Defines axis threshold. Possible values are [0.0, 1.0]
# input_axis_threshold = 0.5

# Keyboard input. Will recognize normal keypresses and special keys like "left", "right", and so on.
# Keyboard input, Joypad and Joyaxis will all obey the "nul" bind, which disables the bind completely,
# rather than relying on a default.
# input_player1_a = x
# input_player1_b = z
# input_player1_y = a
# input_player1_x = s
# input_player1_start = enter
# input_player1_select = rshift
# input_player1_l = q
# input_player1_r = w
# input_player1_left = left
# input_player1_right = right
# input_player1_up = up
# input_player1_down = down
# input_player1_l2 =
# input_player1_r2 =
# input_player1_l3 =
# input_player1_r3 =

# Two analog sticks (DualShock-esque).
# Bound as usual, however, if a real analog axis is bound,
# it can be read as a true analog.
# Positive X axis is right, Positive Y axis is down.
# input_player1_l_x_plus =
# input_player1_l_x_minus =
# input_player1_l_y_plus =
# input_player1_l_y_minus =
# input_player1_r_x_plus =
# input_player1_r_x_minus =
# input_player1_r_y_plus =
# input_player1_r_y_minus =

# If desired, it is possible to override which joypads are being used for player 1 through 5. First joypad available is 0.
input_player1_joypad_index = 0
# input_player2_joypad_index = 1
# input_player3_joypad_index = 2
# input_player4_joypad_index = 3
# input_player5_joypad_index = 4
# Player 6-8 is not directly expected by libretro API, but we'll futureproof it.
# input_player6_joypad_index = 5
# input_player7_joypad_index = 6
# input_player8_joypad_index = 7

# Joypad buttons.
# Figure these out by using RetroArch-Phoenix or retroarch-joyconfig.
# You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction.
# E.g. "h0up"
input_player1_a_btn = 1
input_player1_b_btn = 0
input_player1_y_btn = 2
input_player1_x_btn = 3
input_player1_start_btn = 7
input_player1_select_btn = 8
input_player1_l_btn = 4
input_player1_r_btn = 5
# input_player1_left_btn =
# input_player1_right_btn =
# input_player1_up_btn =
# input_player1_down_btn =
# input_player1_l2_btn =
# input_player1_r2_btn =
# input_player1_l3_btn =
# input_player1_r3_btn =

# Axis for RetroArch D-Pad.
Needs to be either '+' or '-' in the first character signaling either positive or negative direction of the axis, then the axis number.
Do note that every other input option has the corresponding _btn and _axis binds as well; they are omitted here for clarity.
input_player1_left_axis = -0
input_player1_right_axis = +0
input_player1_up_axis = -1
input_player1_down_axis = +1

# Holding the turbo while pressing another button will let the button enter a turbo mode
# where the button state is modulated with a periodic signal.
# The modulation stops when the button itself (not turbo button) is released.
# input_player1_turbo =

# Describes the period and how long of that period a turbo-enabled button should behave.
# Numbers are described in frames.
# input_turbo_period = 6
# input_turbo_duty_cycle = 3

# This goes all the way to player 8 (*_player2_*, *_player3_*, etc), but omitted for clarity.
# All input binds have corresponding binds for keyboard (none), joykeys (_btn) and joyaxes (_axis) as well.

# Toggles fullscreen.
# input_toggle_fullscreen = f

# Saves state.
# input_save_state = f2
# Loads state.
# input_load_state = f4

# State slots. With slot set to 0, save state name is *.state (or whatever defined on commandline).
# When slot is != 0, path will be $path%d, where %d is slot number.
# input_state_slot_increase = f7
# input_state_slot_decrease = f6

# Toggles between fast-forwarding and normal speed.
# input_toggle_fast_forward = space

# Hold for fast-forward. Releasing button disables fast-forward.
# input_hold_fast_forward = l

# Key to exit emulator cleanly.
# Killing it in any hard way (SIGTERM, SIGKILL, etc, will terminate emulator without saving RAM, etc.)
# input_exit_emulator = escape

# Applies next and previous XML/Cg shader in directory.
# input_shader_next = m
# input_shader_prev = n

# Hold button down to rewind. Rewinding must be enabled.
# input_rewind = r

# Toggle between recording and not.
# input_movie_record_toggle = o

# Toggle between paused and non-paused state
# input_pause_toggle = p

# Frame advance when game is paused
# input_frame_advance = k

# Reset the emulated SNES.
# input_reset = h

# Configures DSP plugin
# input_dsp_config = c

# Cheats.
# input_cheat_index_plus = y
# input_cheat_index_minus = t
# input_cheat_toggle = u

# Mute/unmute audio
# input_audio_mute = f9

# Take screenshot
# input_screenshot = f8

# Netplay flip players.
# input_netplay_flip_players = i

# Hold for slowmotion.
# input_slowmotion = e

# Enable other hotkeys.
# If this hotkey is bound to either keyboard, joybutton or joyaxis,
# all other hotkeys will be disabled unless this hotkey is also held at the same time.
# This is useful for RETRO_KEYBOARD centric implementations
# which query a large area of the keyboard, where it is not desirable
# that hotkeys get in the way.

# Alternatively, all hotkeys for keyboard could be disabled by the user.
# input_enable_hotkey =

# Increases audio volume.
# input_volume_up = kp_plus
# Decreases audio volume.
# input_volume_down = kp_minus

#### Misc

# Enable rewinding. This will take a performance hit when playing, so it is disabled by default.
# Do note that rewinding will only work properly when using bSNES libretro core atm.
# rewind_enable = false

# Rewinding buffer size in megabytes. Bigger rewinding buffer means you can rewind longer.
# The buffer should be approx. 20MB per minute of buffer time.
# rewind_buffer_size = 20

# Rewind granularity. When rewinding defined number of frames, you can rewind several frames at a time, increasing the rewinding speed.
# rewind_granularity = 1

# Pause gameplay when window focus is lost.
# pause_nonactive = true

# Autosaves the non-volatile SRAM at a regular interval. This is disabled by default unless set otherwise.
# The interval is measured in seconds. A value of 0 disables autosave.
# autosave_interval =

# When being client over netplay, use keybinds for player 1.
# netplay_client_swap_input = false

# Path to XML cheat database (as used by bSNES).
# cheat_database_path =

# Path to XML cheat config, a file which keeps track of which
# cheat settings are used for individual games.
# If the file does not exist, it will be created.
# cheat_settings_path =

# Directory to dump screenshots to.
# screenshot_directory =

# Records video after CPU video filter.
# video_post_filter_record = false

# Records output of GPU shaded material if available.
# video_gpu_record = false

# Screenshots output of GPU shaded material if available.
# video_gpu_screenshot = true

# Block SRAM from being overwritten when loading save states.
# Might potentially lead to buggy games.
# block_sram_overwrite = false

# When saving a savestate, save state index is automatically increased before
# it is saved.
# Also, when loading a ROM, the index will be set to the highest existing index.
# There is no upper bound on the index.
# savestate_auto_index = false

# Slowmotion ratio. When slowmotion, game will slow down by factor.
# slowmotion_ratio = 3.0

# Enable stdin/network command interface.
# network_cmd_enable = false
# network_cmd_port = 55355
# stdin_cmd_enable = false
Posts: 15
Joined: Tue Dec 18, 2012 4:15 am
by yankyfan09 » Wed Dec 19, 2012 3:58 pm
wow, I finally figured it out. I found a config folder within the retropie folder and was able to edit that. All of my configurations are working with full speed emulation. Thanks and I really appreciate all of the help
Posts: 15
Joined: Tue Dec 18, 2012 4:15 am
by D1Tremere » Thu Dec 20, 2012 5:52 am
So i tried to get neo geo running tonight, you can install it with the custom install option when running retropie_setup.
It only seemed to respond at all when bios was unzipped to the bios folder and sfix.sfix was renamed sfix.sfx and even thin it failed to load any roms as well as making the keyboard stop working correctly....
Mame works but as previously stated has few supported roms and gba is indeed way to slow to play: (
Posts: 14
Joined: Wed Dec 12, 2012 3:23 am
by D1Tremere » Thu Dec 20, 2012 5:54 am
On a side not, all my nes and snes roms are being listed by header instead of file name since my last scrape, any way to change that back?
Posts: 14
Joined: Wed Dec 12, 2012 3:23 am
by petrockblog » Thu Dec 20, 2012 6:17 am
yankyfan09 wrote:wow, I finally figured it out. I found a config folder within the retropie folder and was able to edit that. All of my configurations are working with full speed emulation. Thanks and I really appreciate all of the help

Yes - the configs folder was introduced with the recent update. I changed the way RetroPie handles the retroarch.cfg handling. Emulation Station is now using explicit retrarch.cfg files when calling rome. These config files are located in the RetroPie subfolder "configs". My motivation for this is that there has been some confusion about which retroarch.cfg to edit/use. With this explicit configs folder these issues should be solved (I hope).
fun stuff for technics enthusiasts: www.petrockblock.com
Posts: 260
Joined: Wed Jul 04, 2012 6:12 am
Location: Germany
by skater_j10 » Thu Dec 27, 2012 5:57 am
jonwarner wrote:Also, using sdl and 44100khz helped with sound as people have reported - what got it working even better was setting the latency to 128 and turning off experimental audio.

Figured I'd leave this here since it has helped out my EmulationStation/RetroPie/Retroarch audio experience quite a bit. Sound in the SNES emulator is very close to perfect now, there are some slow downs here and there, but no more static!
User avatar
Posts: 43
Joined: Tue May 29, 2012 8:26 pm
by Willup » Fri Mar 15, 2013 4:13 am
Having an issue with controls in Sega. Nes works good. Using xbox controller all setup in retroarch. Cfg and updated. Sega controls not working like they should. Wondering what I need to do to fix this
Posts: 3
Joined: Mon Mar 11, 2013 2:00 pm
by Wilbo » Sat Apr 06, 2013 9:38 pm
Thanks for sharing this. The configuration file setup, with the individual system-specific config files over-riding the main config file, is really good.

However, I'm using the SNES emulator with a keyboard and am finding that the keys to enter slow mo / proceed frame-by-frame etc cannot be stopped (!). I've tried leaving them hashed out (#) and removing the lines all together from both the SNES and All retroarch.cfg files, but those functions continue to persist. :(

Has anyone else experienced this?
Posts: 1
Joined: Sat Apr 06, 2013 9:33 pm
by Bonehead_pi » Tue Apr 09, 2013 1:53 pm
This is all very helpful information, thank you all for sharing it.

My current problem is that I get very different behavior from the various emulators depending on whether the Pi is connected via the HDMI output or the composite video output. When connected to an old TV via the composite video output, the NES, SNES and GBA emulators go to a blank screen and stay there (ignoring the keyboard, so I have to power down the Pi in order to recover), but they all work just fine when the Pi is connected to an HDMI monitor. The opposite is true for the Sega emulator: it works fine when using the composite video, but won't load anything when using HDMI. Duke Nukem works fine via HDMI, but won't load via composite video (and it disables the keyboard on exit). Doom doesn't load in either case, and neither will PSX games (though that could be a problem with the rom image that I'm using).

I assume that I need to tweek some video settings on each of the different emulators, but I have no idea which .cfg files I need to mess with or what settings to change/add.

Any suggestions?
Posts: 15
Joined: Tue Oct 09, 2012 3:35 am
by Aloshi » Wed Apr 10, 2013 3:34 am
Wilbo wrote:Thanks for sharing this. The configuration file setup, with the individual system-specific config files over-riding the main config file, is really good.

However, I'm using the SNES emulator with a keyboard and am finding that the keys to enter slow mo / proceed frame-by-frame etc cannot be stopped (!). I've tried leaving them hashed out (#) and removing the lines all together from both the SNES and All retroarch.cfg files, but those functions continue to persist. :(

Has anyone else experienced this?


You'll need to assign the bind to "= nul" to override defaults.
Posts: 318
Joined: Sat Jun 23, 2012 6:42 pm
by thak » Wed Apr 10, 2013 6:36 pm
Hi everyone!
First, sorry for my english...

I'm having some issue with retropie. After the binarie install i can't see some emulator (like snes, nes, gb, gba... Etc)
And the only mame i've tested (fantasy zone with keyboard controller) reboot the front end... :/
All of the config file are the default one, can some of you enlight me ^^?

Ps : if i run ubuntu, can i plug directly my SD into the computer and drag the rom on the right folder? Or i must use ssh or something else...?

Thanks in advance!
Posts: 27
Joined: Wed Apr 10, 2013 6:22 pm
by Bonehead_pi » Wed Apr 10, 2013 7:24 pm
Thak,

The EmulationStation front end will only show those emulators which have valid roms in their respective directories. Once you move the roms into the appropriate directories, then the emulator will be displayed.
Posts: 15
Joined: Tue Oct 09, 2012 3:35 am