PlayStation Emulation on the Pi: Enhancing the Experience with the Options Menu – Part One: Basic Features and Save States

The Libretro Options Menu – the Key to Enhanced PlayStation Emulation

PlayStation. Rage Racer, In Game. Standard Resolution - Smoothed
Libretro Menu - Core Options submenu
PlayStation. Rage Racer, In Game. Enhanced Resolution - Smoothed

 

This post builds upon the information in the preceeding article entitled RetroPie Emulation: RetroArch, Libretro, and the Power of the Options Menu.

Edit: This post has been extended to account for differences in RetroPie 3.6’s version of RetroArch/Libretro. The PlayStation emulator remains the same in both the 2.x and 3.x RetroPie revisions (Pcsx-ReARMed r22). The original post was based on RetroPie 2.x

Topics Covered In Part 1

PlayStation Emulation on PiPlay and RetroPie

As noted in the aforementioned post, before discovering RetroPie I’d been running PiPlay on the Raspberry Pi 2, which provides a broadly similar emulation platform to RetroPie. Whilst the graphical emulator selection front-end is different to Emulation Station, many of the same emulators are in place; however all is not as simple as it appears.

Unfortunately, with the build of PiPlay I was using I ran into problems with various emulators; virtually all Megadrive / Genesis games I tried had corrupted sound, many would freeze at random, and there was no support at all for the 32X. The PlayStation emulator initially appeared to be excellent, however as I tried more titles I uncovered a number of shortcomings; I’m planning a future post on this topic, as the same emulator in RetroPie has a few different issues, and I became obsessed with understanding the problems in a bid to have the best of both worlds.

PiPlay Emulator Selection Menu
PiPlay Emulator – Main Menu
Emulation Station - Main Menu - PlayStation Focused
Emulation Station – Main Menu

I should note that, being impatient to see if the Raspberry Pi was a solid emulation platform, I quickly switched to RetroPie and have not subsequently installed any newer PiPlay images; nonetheless the PiPlay distribution has many sound ideas, and is definitely worth further investigation.

One core feature which the PiPlay incarnation of the PlayStation emulator has is a comprehensive in-built options menu, accessed via the Escape key. This allows access to various settings, affecting the graphical and audio output, save states, controllers, and more. The following screen grabs show the native menu being accessed whilst a title is running:

PiPlay PCSX ReARMed Native Menu - Advanced
PiPlay PCSX ReARMed Native Menu – Advanced
PiPlay PCSX ReARMed Native Menu - Controls
PiPlay PCSX ReARMed Native Menu – Controls

Coming to the RetroPie version of the same emulator, I was surprised to find that this menu no longer existed; at the time I had no knowledge of the unified environment shared by Libretro-enabled emulators, but found various references to the ‘core menu’ in forums. As I was to discover, and as detailed in the preceding post, RetroPie’s PlayStation emulator implements the standard Libretro menu system.

Note: the terms Libretro menu and RetroArch menu appear to be used as synonyms in documentation and in forum posts.

Continue reading

Advertisement

RetroPie Emulation: RetroArch, Libretro, and the Power of the Options Menu

What is the Libretro Options Menu, and Why Does It Matter?

consoles and home computers
RetroArch Menu - Welcome Screen
RetroArch logo

For a while after installing RetroPie, this question plagued me. I found references to the ‘Options Menu’ seemingly everywhere, but as to where it resided or how it manifested, that seemed some closely guarded secret.

Why was I looking for the elusive menu? Well, the Options Menu holds the secret to really getting the most out of many of the RetroPie emulators, from tweaking the controller settings to switching graphics rendering engines.

In my earlier post ‘What is RetroPie? System overview, software and hardware’ I provided a brief description of RetroPie, which contains numerous home computer and console emulators, up to and including the N64. As noted in that post:

RetroPie can be thought of as a framework which wraps and extends other software components, ultimately handling the loading of a selected game image into the relevant video game emulator.

image
Libretro Logo

Many of the console emulators included in RetroPie are what are known as Libretro cores; these ‘cores’ are existing emulators, modified to utilise the Libretro API, which provides a common interface and experience across multiple systems:

Again, from the aforementioned earlier post:

The system also provisions management and configuration of numerous elements, including:

  • Loading button and axis (analog) control maps, matching upon detected Usb controller(s)
  • Setting video resolution
  • Applying filtering and video overlay effects
  • Providing state management (providing loading and saving of in-progress games)

The Libretro page on the emulation-general.wikia.com site describes Libretro in the following terms:

Libretro is an lightweight C/C++ API designed for emulators… It specifies how to write a library, called Libretro core, so that it can be loaded by a frontend supporting Libretro API like RetroArch… Libretro API can be used for example to strip emulator of it’s GUI components and convert it into dynamic library called Libretro core. (sic)

On the Libretro forum, user hunterk expands on the concept of retrofitting an emulator with the Libretro API:

Libretro porting is generally a case of mapping/wrapping the emulator/game/whatever’s internal API to the corresponding libretro functions and/or callbacks. So, many ports are very shallow and require little-to-no modification of the existing core code.

Thus, the RetroArch framework brings a set of consistent features to a broad range of emulators which were written entirely independently. All ‘core’ enabled emulators feature a common menu, the elusive Options Menu, which can be accessed and navigated via keyboard or a suitably configured control pad.

Continue reading

Navigating the Raspberry Pi’s File System. Raspbian Linux Shell Commands and Tools – Part 2

Just the Basics

Raspbian Linux GUI File Browser
VS transparent
Raspbian Command Line - Shutdown - help screen

Following on from Don’t Fear The Command Line: Raspbian Linux Shell Commands and Tools – Part 1, in which tools for monitoring the Raspberry Pi’s hardware and running programmes are introduced, along with the Package installer (APT), this post concentrates solely on the file system.

For those of us of a certain vintage, the command line may seem a reasonably natural and intuitive interface with the computer; for many, however, it is arcane and daunting. Even for those well versed in the DOS command line, the Linux shell is sufficiently alien to cause headaches.

The aim here isn’t to educate Linux gurus, rather to provide some guidance to those either new to command line interfaces in general, or to the Linux shell (bash, in the case of Raspbian) in particular.

Navigating the file system from a command line can be especially troublesome when compared to the intuitive visual representations provided by graphical user interfaces, hence this brief guide.

Topics Covered in this Guide

Please note: The Raspbian Linux Command Shell is case sensitive. Commands need to be typed exactly as shown, as do directory (folder) and file names.

Moving Up, Down and Around the Directory Hierarchy

Moving around the file system hierarchy to reach a specific directory is achieved through the cd command.

The cd (short for ‘change directory’) command takes a path as a parameter, which instructs the system in how to reach a different directory. This can be achieved in several different ways.

First, we’ll introduce the building blocks that can be used to construct a path (a route from one location in the file system to another):

/. represents the directory you are currently in.
This is useful when executing a script file, which requires a path to that file to be provided (typing the script file name alone will not work).

../ indicates the directory one level above the one you are currently in.
This is useful both for navigating and for providing partially qualified paths (see below).

~ represents the home directory.
– If you are logged in as a standard user, this will be the user’s own directory. For example, for the user pi, home is /home/pi
– If you are logged in as root, home is /root

image
Raspbian Command Shell - navigation using 'cd' command

Continue reading

Don’t Fear The Command Line: Raspbian Linux Shell Commands and Tools – Part 1

A Basic Guide to Using Several Handy Linux Command Line / Shell Commands and Tools

Just the Basics

Warped Command Shell. Image - Retro Resolution
Warped Command Shell. Image – Retro Resolution

To customise your Raspberry Pi generally requires a little knowledge of the command shell, even if only running the menu-driven Raspbian configuration tool; the operative word being little.

You don’t need to become a Linux guru to make use of a wide range of handy commands and tools to get the most out of the Raspberry Pi, even when using an all-in-one image such as RetroPie.

You can use the command shell to accomplish tasks including:

  • Obtaining a real-time view of running programmes and processes, including their memory and CPU usage.
  • Monitoring the system hardware, viewing temperature, voltage, and component speed information.
  • Running integrity checks on the filesystem.
  • Moving, copying, and renaming files.
  • Sharing files with other systems on the network, including PC, Mac, and Linux machines, and accessing shared files from those systems.
  • Editing or creating text files, such as those controlling configuration for the Pi’s hardware, and individual programmes.
  • For RetroPie, adding or tailoring configuration to support additional hardware, including USB adaptors allowing the use of original controllers for systems such as the PlayStation, N64, Megadrive/Genesis, and the wireless Xbox 360 pad.
image
Command prompt - Image: pixabay.com

Topics Covered in this Guide

Continue reading

Overclocking and Stability Testing the Raspberry Pi 2 – Part 4: SD Storage Testing

Stability Testing an Overclocked Raspberry Pi
 

In the final part of the series of posts concerning Overclocking and Stability Testing the Raspberry Pi, we will be checking SD Card Storage reliability with the elinux.org Stability Test Script.

Smashed Hard Drive – Image: thefileroom.com
Smashed Hard Drive – Image: thefileroom.com

Introducing the Overclocking Stability Test Script

The Stability Test Script is a program from elinux.org, described on that site as:

…a script to stress-test the stability of the system, specifically the SD card. If this script runs to completion, without any errors showing in dmesg, then the Raspberry Pi is probably stable with these settings

Why Stability Test the Pi’s SD Storage?

As noted in Part One of this series, in the early days (and years) of the Pi’s existence there were apparently widespread issues whereby overclocked machines experienced corrupted SD card data. The official, definitive, information on this issue comes from elinux.org: SD Card Usage with Overclocking

Stability of SD card operations when using overclocking is independent of:

  • Filesystem type, ext4, NTFS or other.
  • SD card vendor.
  • The Raspberry Pi model.
  • SD card size – verified for 16 GB and up.

What does matter is when you under-power your Raspberry Pi (that is, less than the Raspberry Pi base setup specifications!).

There initially was an increased likelihood of SD card corruption when using overclocking. This is no longer an issue (with firmware from Nov 11 2013 or later).

Continue reading

Overclocking and Stability Testing the Raspberry Pi 2 – Part 3: RAM Checking With Memtester

Stability Testing an Overclocked Raspberry Pi
 

Checking RAM Reliability with Memtester after Overclocking

In the third part of the series of posts concerning Overclocking and Stability Testing the Raspberry Pi, we will use Memtester to test the Pi’s RAM.

Raspberry Pi 2 FLIR - Image: rs-online.com
Raspberry Pi 2 FLIR – Image: rs-online.com

What is Memtester?

Memtester is a memory testing tool which:

  • Tests the stability of the RAM
  • Natively runs on a single CPU core, but can be run on all cores using multiple remote SSH sessions, or the Screen tool

The Memtester Man page at Linux.die.net states:

memtester is an effective userspace tester for stress-testing the memory subsystem. It is very effective at finding intermittent and non-deterministic faults

Assistance for those new to Linux

Making changes to the Overclock settings on the Pi, and testing the changes for stability, requires a little knowledge of the Linux command shell. Please see my related post for a basic guide which should help those new to Linux and/or Raspbian get started: Don’t Fear The Command Line: Raspbian Linux Shell Commands and Tools – Part 1

Installing Memtester

The Memtester software package can be installed easily using the command line / shell via the Raspbian OS’s APT Package Management Tool.

The APT maintains a repository of available packages, and their dependencies (other packages which a given package requires). Before installing a new package it is good practice to first update the repository list to ensure that you obtain the latest version of whichever package you wish to install, and to avoid dependency issues.

To update the APT repository, at the command shell, type:

sudo apt-get update

To install the Memtester package, type:

sudo apt-get install memtester

Running the Memtester Script on a Single CPU Core

TO Run Memtester on a single core, at the command line specify the memtester program, along with two parameters:

  • 1. The amount of memory to test, followed by a lowercase ‘m’ – do not leave a space between the two. The program will attempt to lock the required amount of RAM, but will use the nearest available amount if this is not possible.
  • 2. The number of iterations to run the test over.

Continue reading

Overclocking and Stability Testing the Raspberry Pi 2 – Part 2: Stability Testing

Stability Testing an Overclocked Raspberry Pi
 

Checking that the system is reliable after applying overclocking

Overclocking is nothing without Stability. Image - www.wallpaper.ge/
Overclocking is nothing without Stability. Image – http://www.wallpaper.ge/

Following on from Part 1 of this post on Overclocking, we turn our attention to stability testing the system; this process is crucial, as simply witnessing the Pi boot to the command shell, or a Graphical User Interface (GUI) isn’t proof that a given combination of overclock settings is stable.

Sometimes an instability will only become apparent after several hours of intensive activity on the system (which is highly likely if using the system for gaming with an installation such as RetroPie).

There are three tools / scripts which I have used in the stability testing processes. For each I will provide instructions on obtaining and installing (or running, as appropriate):

  • MPrime.py
    – Python script to search for prime numbers, which heavily loads the CPU
    – User selectable numeric range to test
    – User selectable number of cores to run upon simultaneously.
  • Memtester
    – Tests the stability of the RAM
    – Natively runs on a single CPU core, but can be run on all cores using multiple remote SSH sessions, or the Screen tool
  • Stability Test Script
    – Reads the entire SD card 10x. Tests RAM and I/O
    – Writes 512 MB test file, 10x.
    – Script can be easily updated to change the number of reads/writes etc.

This post covers the use of mprime. Subsequent posts covers the use of Memtester and the Stability Test Script. Please use the links in the above list to access the relevant information.

Continue reading

Overclocking and Stability Testing the Raspberry Pi 2 – Part 1: Overclocking in Depth

More speed for free?

Silhouette Clockwork - Image Original: andreakihlstedt.com
Silhouette Clockwork – Original Image: andreakihlstedt.com

Overclocking and Stability Testing – Part 1

When using the Raspberry Pi 2 to run any sort of intensive software, which certainly includes emulating classic video games systems using RetroPie, you really need all the processing and graphical horsepower you can get. Luckily there’s more available under the bonnet of the Pi with a little tweaking.

Note: For additional considerations when overclocking the Raspberry Pi 3, please see Overclocking the Raspberry Pi 3: Thermal Limits and Optimising for Single vs Multicore Performance, in addition to the current post.

Topics Covered In Part 1

Topics Covered In Parts 2, 3, and 4

Disclaimer

Overclocking the Pi is supported by tools provided with standard operating system distributions, such as Raspbian, and sanctioned by the manufacturer (with some caveats, as discusssed below). That said, the following details only my own research and experiences with a single Raspberry Pi 2 device; as always, your mileage may vary.

Assistance for those new to Linux

Making changes to the Overclock settings on the Pi, and testing the changes for stability, requires a little knowledge of the Linux command shell.

Please see my related posts for a basic guide which should help those new to Linux and/or Raspbian get started:

Overclocking and Power – Use a Quality PSU

When overclocking it is worth ensuring that your Pi is serviced by a good quality Power Supply Unit (PSU), as this is often a point of failure. Not all micro usb supplies, or cables, are up to the task.

Please see my earlier post covering this topic here.

Why Overclock?

The Raspberry Pi 2, as with the predecessor Pi, can be setup to run faster than the default system, effectively giving extra processing and graphical capabilities for free. For retro gaming this can be critical, and is especially true of the N64 emulators, as well as when running more demanding PlayStation releases such as Gran Turismo 2.

Raspberry Pi System Architecture

The Raspberry Pi 2 contains a System on a Chip (SoC), which integrates a quad-core ARM CPU and a Broadcom VideoCore IV Graphics processing unit (GPU), alongside 1GB of SDRAM memory.

Raspberry Pi 2 Model 2
Raspberry Pi 2

Continue reading

3D Monster Maze – Sinclair ZX81 Review

On the Origins of Survival Horror
 

System: Sinclair ZX81
Year: 1982
Developer: Malcolm Evans
Publisher: J.K. Greye Software / New Generation Software
Genre: Survival Horror

image
image
image

A monster from savage prehistory;
A machine from the dawn of microcomputing;
A man pioneering the concept of survival horror.

There are many classic retro games, but only a select few are truly system-defining; 3D Monster Maze, by far my favourite ZX81 indulgence, is one such title. A full third of a century after release, Malcolm Evans’ undisputed masterpiece remains genuinely, thrillingly playable, without recourse whatsoever to rose-tinted eyewear.

Contrary to popular conception, Monster Maze is not the earliest three-dimensional maze game released on Sinclair’s diminutive micro; that accolade goes to Axis software’s 1981 3D Labyrinth. The earlier title, however, is a stripped-back affair lacking in many features so integral to its more famous counterpart, not least of which is the critical addition of a bloodthirsty opponent: the inimitable Tyrannosaurus Rex.

3D Monster Maze’s concept is deceptively simple, tasking the player with locating the exit of a randomly generated labyrinth, the view of which is convincingly presented in first-person perspective. Upping the ante is the presence of the titular monster, a beast who is not about to let his human ready-meal escape.

image
3D Monster Maze - ZX81 - Entrapped

The genius of the game lays in a sublime, immersive combination of engrossing gameplay and pervasive atmosphere. Allied to the intellectual challenge of besting the labyrinth is the engagement of the player’s primal fight-or-flight instinct; stranded and weaponless, for this is no first person shooter, fleeing is the hapless adventurer’s only option.

Continue reading

Rainbow Islands Extra – Sega Megadrive / Genesis review

Retro Resolution Retro Review
 

System: Sega Megadrive / Genesis
Developer: Aisystem Tokyo / Taito
Year: 1990

image
Rainbow Islands Extra - Sega Megadrive

‘There’s no place like home’

Taito’s 1987 arcade sequel to Bubble Bobble, Rainbow Islands, is a charming vertical-scroller which sees the player cast as a dragon-turned-human (yes, really) on a quest to defeat an evil monster named Krabo and save the rainbow sea. A platform-hopping search for seven mystical gems ensues across numerous thematically grouped levels including Monster, Robot, Toy, and Dragon islands, each sporting appropriately styled backdrops, enemies, end-of-level guardians and collectables.

Admittedly this abundantly saccharine world of spectral light may not immediately appeal to all, especially those whose virtual lives are spent at the darker end of the retro rainbow, embattled, perhaps, in Doom’s murky corridors; those willing to emerge bleary-eyed into the light, and to trade firearms for an altogether more novel weapon, may find themselves refreshingly rewarded by this gaming gem. 

Your protagonist, Bubby, is blessed with the ability to cast dual-purpose rainbows of solid light, utilised both for vertical movement and for fending off the cute-but-deadly enemy hordes. Collection of certain special items increases the number rainbow-weapon spans, whilst others confer the ability to project sideways arcs of destructive light. As the frenetic action builds, and the screen becomes wreathed in prismic arches, the effect is akin to psychedelic trip in a toy box.

Continue reading