[Tutorial] Installing and Setting up RetroArch 1.3.6 on Blackberry Passport with Physical Keyboard Support



I've finally bit the bullet and got the Blackberry Passport Silver Edition on hand. Nothing beats its 1:1 4.5"square aspect ratio for some retro gaming love.

As of this writing there had been several versions of RetroArch that is runnable on the Blackberry OS 10, the notable ones being RetroArch Cascades and RetroArch Android version. There are, however, some drawbacks to these.


[Tutorial] Complete Tutorial on Installing libresonic/subsonic Standalone on Raspberry Pi

Why Choose Libresonic over Subsonic?

libresonic is essentially subsonic but with the license feature removed. Subsonic allows mobile streaming for 30 days whereas it is disabled unless you donate.

The main reason as to why I decided to deploy libresonic as Standalone rather than a tomcat WAR (Web Archive) package is because tomcat8 will hang when deploying libresonic.war package for somewhat unknown reason, so I resorted to compile a debian package manually using the following method.

Prerequisites

Download the following packages using debian apt-get package manager:


sudo apt-get install openjdk-8-jdk maven lintian

* lintian is needed when compiling debian package
* jdk8 is needed to compile booter and debian package

Add the JDK8 to your environment variable JAVA_HOME. Make sure to quit the terminal session if you're logging using SSH or simply open up a new terminal after making the changes.


sudo nano ~/.bashrc_profile
export JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/


Downloading and Compile libresonic Source Code

mkdir ~/libresonic
cd ~/libresonic
git clone git://github.com/Libresonic/libresonic.git
cd libresonic
git checkout develop
mvn package
mvn -P full -pl libresonic-booter -am install
mvn -P full -pl libresonic-installer-debian/ -am install
sudo dpkg -i ./libresonic-installer-debian/target/libresonic-*.deb


Modifying libresonic Service File

After installing the .deb package, open /etc/default/libresonic which is the service unit file for libresonic that is started everytime Raspberry Pi is booted. Modify the LIBRESONIC_ARGS to use the port that you want.

The following arguments will run libresonic on port 4041. Make sure to do port forwarding on your router to allow external access to your libresonic music server.

LIBRESONIC_ARGS="--max-memory=150 --port=4041 --context-path=/libresonic"

Running libresonic Service

After making the changes above, try restarting the libresonic service and make sure it is up and running correctly.

sudo systemctl restart libresonic
systemctl status libresonic 

You should see the following output if the service is up and running successfully.


libresonic.service - LSB: Libresonic daemon
   Loaded: loaded (/etc/init.d/libresonic)
   Active: active (running) since Sat 2016-10-29 19:43:07 UTC; 11h ago
  Process: 1650 ExecStop=/etc/init.d/libresonic stop (code=exited, status=0/SUCCESS)
  Process: 1664 ExecStart=/etc/init.d/libresonic start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/libresonic.service
           └─1679 java -Xmx150m -Dlibresonic.home=/var/libresonic -Dlibresonic.host=0.0.0.0 -Dlibresonic.port=40...

Oct 29 19:43:07 raspberrypi libresonic[1664]: Started Libresonic [PID 1679, /var/libresonic/libresonic_sh.log]
Oct 29 19:43:07 raspberrypi systemd[1]: Started LSB: Libresonic daemon.


There are two log files related to libresonic that you can inspect libresonic program status. You will have to switch to root superuser account to view these logs files since /var/libresonic ownership is assigned to root.

sudo su
tail -f /var/libresonic/libresonic.log
tail -f /var/libresonic/libresonic_sh.log

In my case I'm seeing a lot of Garbage Collection messages on libresonic_sh.log such as the following. Not sure whether it is important but I simply ignore them for now. You will have to wait for a couple of minutes before the libresonic

[GC (Allocation Failure)  13424K->11214K(16128K), 0.0494979 secs]
[GC (Allocation Failure)  15822K->13954K(18688K), 0.0664496 secs]
[Full GC (Allocation Failure)  13954K->11839K(18688K), 0.2304968 secs]
[GC (Allocation Failure)  20031K->16776K(28824K), 0.0817065 secs]
[GC (Allocation Failure)  24968K->21643K(29848K), 0.1128707 secs]
[Full GC (Allocation Failure)  21643K->21643K(29848K), 0.3198130 secs]
[GC (Allocation Failure)  34840K->29741K(50344K), 0.2037173 secs]
[GC (Allocation Failure)  43821K->38098K(52264K), 0.2103557 secs]
[Full GC (Allocation Failure)  38098K->23955K(52264K), 0.4711993 secs]
[GC (Allocation Failure)  40211K->33697K(58104K), 0.1532793 secs]
[GC (Allocation Failure)  49953K->37336K(58104K), 0.1197363 secs]
[GC (Allocation Failure)  53592K->39362K(58104K), 0.0555118 secs]

Wait until you see the following message on libresonic_sh.log before launching libresonic Web User Interface.


Libresonic running on: http://localhost:4041/libresonic
41571 [main] INFO org.springframework.remoting.rmi.RmiServiceExporter - Looking for RMI registry at port '9412'
41659 [main] INFO org.springframework.remoting.rmi.RmiServiceExporter - Could not detect RMI registry - creating new one
41813 [main] INFO org.springframework.remoting.rmi.RmiServiceExporter - Binding service 'LibresonicDeployerService' to RMI registry: RegistryImpl[UnicastServerRef [liveRef: [endpoint:[127.0.1.1:9412](local),objID:[0:0:0, 0]]]]

Opening libresonic Web User Interface

Now that the libresonic service is up and running, it's time to launch your web browser and navigate to http://<YOUR-RASPBERRY-PI-IP-ADDRESS>:4041/libresonic. Everything should resemble the Subsonic UI except the logo :-)



Misc.

By default, you can find the libresonic program files on /var/libresonic. Following are the directory output after libresonic is successfully running.

root@raspberrypi:/var/libresonic# ls -alh
total 56K
drwxr-x---  8 root tomcat8 4.0K Oct 30 06:58 .
drwxr-xr-x 13 root root    4.0K Oct 29 18:17 ..
drwxr-xr-x  2 root root    4.0K Oct 30 06:58 db
drwxr-xr-x  3 root root    4.0K Oct 29 19:38 jetty
drwxr-xr-x  2 root root    4.0K Oct 30 05:37 lastfmcache
-rw-r--r--  1 root root     828 Oct 30 06:59 libresonic.log
-rw-r--r--  1 root root     928 Oct 30 06:58 libresonic.properties
-rw-r--r--  1 root root     13K Oct 30 06:59 libresonic_sh.log
drwxr-xr-x  7 root root    4.0K Oct 29 19:39 lucene2
drwxr-xr-x  9 root root    4.0K Oct 30 05:37 thumbs
drwxr-xr-x  2 root root    4.0K Oct 29 19:26 transcode



References

https://github.com/Libresonic/libresonic/blob/develop/INSTALL.md

https://www.itsfullofstars.de/2016/05/

[Guide] A Detailed and Beginner Friendly Walkthrough Guide for Installing BrowserHax, MenuHax, and Downgrade New 3DS LL/XL from Firmware 9.9J to 9.2J


Prelude 

Why I Upgrade from Original 3DS to New 3DS LL

tldr; Skip to the next section <Guide Start> to jump straight into my ordeal of downgrading my 3DS LL v9.9J firmware into v9.2 and booting into Gateway Mode

Having played on the Original 3DS (yes the small clamshell one that Nintendo first released back in 2011) for quite some time now, I finally decided to purchase a New 3DS LL (also known as New Nintendo 3DS XL outside Japan). As opposed to what others had complained about the LL/XL for its huge size, bulkiness and unportability, I actually found it to be pleasing to my play style. Main reason that I purchased it is its large 4.88 inch screen size. If the number seems meaningless to you, think of it being almost the same size as the PS Vita. Sure you wouldn't see much crisp image like the O3DS or the New 3DS regular edition due to its larger PPI, but frankly, for me that is negligible and it's the 3D immersion that really benefits from such a big screen. Not that 3DS console is known for its HD like image for gaming on-the-go.

Mind you that I had an average sized hands as well and holding it definitely helps to prolong my play time until I start to feel hand cramp.

Another reason for choosing the New 3DSLL over the regular size one is I think the 20% screen estate increase from my O3DS wouldn't be that much noticeable after all.

So there you have it.


Turning Mouse/Spinner Into Steering Analog Input for MAME, Arcade and Other Games

It is possible to turn your mouse or spinner such as the Ultimarc SpinTrak into a virtual analog device detected by various emulator (arcade) as well as PC games.

Only two softwares are needed:
  • vJoy - Create virtual joystick on your PC. You'll need a feeder application to provide input to the virtual joystick.
  • FreePIE - Emulate a virtual joystick and send the key buttons to vJoy.

Setting Up Playstation 3 Controller and Qanba Q4 RAF Arcade Stick on RetroPie

Although RetroPie support some of the hotkeys for joypads right out of the box, I decided to modify it to include the commonly used hotkeys. Also I found that the default joypad configuration for the Qanba maps the button incorrect.

Mapping X-Arcade TankStick to Multiple Emulators (AHK Script)


Since the TankStick is recognized as Keyboard input device here is a script that allows you to use it with a wide variety of emulators.

You may also find similar topic in HyperSpin official thread here. *Require premium member privilege to view*

[Tutorial] A Comprehensive Pictorial Guide to Install Custom Bubbles on PS Vita 3.36 on TN-C and TN-V11!

Foreword

This is a tutorial written as a result of my personal readings and experience on installing custom Bubbles on PS Vita running OFW3.36 and using NUMBLAST US exploit and running TN-C and TN-V11. I've decided to write this since I found no one single tutorial that covers this. Frankly you will need to read tons of materials just to have an idea what is going on. I did try my best to explain the reason behind each steps to my best of knowledge. Frankly I've left Vita scene for quite some time now and recently gaining interest during my spare time.

In short, this guide basically summarize my attempts to achieve this feat after spending literally dozens of hours / days reading on forum posts and YouTube videos. And jolly-o-joy, I'm glad that I was able to achieve it. Granted it took me a lot of trial and error, and at some point even at the verge of tearing my hair apart. :-P

Before reading on, note that this is a PICTORIAL tutorial that I hope will aid to illustrate my points as clearly as possible. Combined that with my writeups and you should have no problem completing your goal! Just make sure to read and follow everything EXACTLY as mentioned. Keep in mind that I generally wrote this tutorial gearing towards even the novice computer users with minimal technical background but still wanted to attempt. Hence, don't find it strange if you find me explaining even some of the very straightforward steps for intermediate/advance computer users.


[Tutorial] The Missing Guide to Install TN-V11 on PS Vita using Numblast/Quatron Exploit and Upgrade from TN-C

I have to say that there aren't many guides out there that provides a clear example on how to install the latest and greatest TN-V11 CFW on PS Vita. Reason I'm switching from TN-C to TN-V is for the PSX sound emulation support, which is lacking in TN-C.

[Supplementary pictures will be added in the future]


A Full Guide on Integrating RetroArch with HyperSpin and RocketLauncher

This is a full tutorial showing how to integrate RetroArch with HyperSpin and RocketLauncher.

Foreword

RetroArch has become the choice of emulators for many players now and is increasingly popular since its launch few years ago. Its main reason is its ability to support multiple mainstream emulators and provide a unified configuration across all its offered emulators (or cores). For the uninitiated, RetroArch serves as the front-end for Libretro, which provides the cores for the emulators including BSNES, Ganbatte, and even MAME and MESS.

Setting up RetroArch


First, download RetroArch builds here. I'll leave it to you whether to download the Stable build (v1.0) or the nightly builds (v1.1.x). The later support audio and video filters as well as more path configurations and possibly more ROMs compatibility especially for the MESS or MAME cores. For this tutorial I'm going to download the nightly build. If you're using the stable build instead, some of the configurations in the screenshots might differ, especially the configuration screen.

Nightly builds for RetroArch which features the most recent core configurations for the RetroArch emulator. Make sure you download both the RetroArch and cores, which is basically the various emulators that RetroArch supports.


Extract RetroArch.7z to your Emulators folder in the HyperSpin, such as G:\HyperSpin\Emulators\RetroArch.

Extracted files from RetroArch.7z archive.


Next, extract the cores.7z into RetroArch\cores.


Before we start to integrate RetroArch into RocketLauncher, let's start by configuring some of its initial settings.

Configuring RetroArch

You'll see the following welcome screen when launching RetroArch for the first time. It will then automatically create a configuration file named retroarch.cfg under its RetroArch root folder. This is the file that RetroArch will refer to whenever you launch RetroArch.

RetroArch welcoming screen when launching for the first time.

retroarch.cfg, which is the configuration file that RetroArch will refer to whenever it is launch.Notice that it is only a single line for now, and it will then be populated as we configure some settings within RetroArch.

Navigating in RetroArch is relatively simple as shown in the welcoming screen. Pressing X to Enter/Confirm, Z to back.

The first thing we'll want to do is to configure some of the essential paths such as cores, roms, filters, shaders, etc. To do that, go to Settings > Path Options and setup the following:

Settings.

Path Options
The default path options. We are going to configure some of the paths to point to the exact paths.

The following settings are based on my RetroArch folder located in G:\HyperSpin\Emulators\RetroArch. Change the path accordingly. Note that some of the options might not be available if you're using RetroArch stable build.

Browser Directory: The path to your ROMs such as G:\roms. This path will be automatically loaded when you are trying to load a game.

Content Directory: Same as Browser Directory. The path to your ROMs.

Assets Directory: The path that stores assets.
Example: G:\HyperSpin\Emulators\RetroArch\assets

Config Directory: The path that stores RetroArch configuration files. Instead of storing it in RetroArch root folder we are going to store it here instead for better file structure management.
Example: G:\HyperSpin\Emulators\RetroArch\config

Core Directory: The folder that stores RetroArch cores (.dlls), which is where we extract our cores.7z just now.
Example: G:\HyperSpin\Emulators\RetroArch\cores

Core Info Directory: The folder that stores the core information (.info). These are also extracted from the cores.7z and is the same folder as the core directory.
Example: G:\HyperSpin\Emulators\RetroArch\cores

Content History Path: The path to the file that stores for a list of games that we had launched in the past in RetroArch. Leave it as default, which it stores in RetroArch root folder.
Example:  retroarch-content-history.txt (default)

VideoFilter Directory: The folder that stores the video filters.
Example: G:\HyperSpin\Emulators\RetroArch\filters\video

AudioFilter Directory: The folder that stores the audio filters.
Example: G:\HyperSpin\Emulators\RetroArch\filters\audio

Shader Directory: The folder that stores the shaders.
Example: G:\HyperSpin\Emulators\RetroArch\shaders

Overlay Directory: The folder that stores the overlay image such as gamepad, borders, keyboards, etc.
Example: G:\HyperSpin\Emulators\RetroArch\overlays

Screenshot Directory: The folder that stores the screenshots captured in-game.
Example: G:\HyperSpin\Emulators\RetroArch\screenshots

Savefile Directory: The folder that stores the savefile for the system. The savefile is the actual save file that is generated by the emulator and is usable even if you're using other emulators. For example, Playstation 1 memory card .mcr. Note that a separate folder that are named according to the system will be generated.
Example: G:\HyperSpin\Emulators\RetroArch\save

Savestate Directory: The folder that stores the save state that you taken in game, or simply the memory content state at the point when you took it. Unlike savefile, save state are emulator dependant and you cannot simply load a save state taken in an emulator and attempt to load it using another. I simply point them to the same folder as my Savefile Directory
Example: G:\HyperSpin\Emulators\RetroArch\save

System Directory: The folder that stores the system file such as BIOS for each system. For example, SCPH-1001 for Playstation 1, MESS BIOS, etc.
Example: G:\HyperSpin\Emulators\RetroArch\system

The completed Path Options screen after you had properly set the path.

After you had done that, go back to the Main Menu by pressing the 'Z' button and save the configuration file. The changes that you made will be saved in RetroArch-timestamp.cfg under the config folder that we just specify.

Save the changes that we did in a new configuration file.

The configuration file will be located in the config folder that we specified earlier, which is G:\HyperSpin\Emulators\RetroArch\config and is named RetroArch-timestamp. Since RetroArch will refer to retroarch.cfg in its root folder by default, we will now copy and replace the retroarch.cfg with this file, just in case RetroArch config file is not updated.

The updated retroarch.cfg file.

And that's it! We had done the initial configuration for RetroArch. Now moving on to integrate RetroArch with RocketLauncher so that it will run RetroArch for the system that you want.


Integrating RetroArch in RocketLauncher


As usual, open RocketLauncherUI and add a new Emulator named RetroArch under the Global Settings.

Adding RetroArch emulator to RocketLauncher for the first time. Notice that I only have several Roms extensions that these are the systems that I emulate using RetroArch.

Now here is where most people are mislook, even myself! For each module, there is a separate options that you can configure either for global module settings or per game settings.

To configure the module settings, click on the Modules tab, then select RetroArch.ahk from the Installed Modules window. Next,click the Edit Global Module Settings button.



Press the X button when ask whether to select a system in the System Selection screen.

Close this dialog since we're going to configure global settings.

Next, click the magnifier icon next to ConfigFolder option to select the RetroArch\config folder.

Configure the ConfigFolder used by RetroArch module. Ignore the MESS_BIOS_Roms_Folder for now as it is only needed if you want RetroArch to emulate MESS.

Now then, go and select a system in the left hand panel and use RetroArch as the default emulator. For example, I had selected RetroArch as my default emulator for Nintendo Game Boy system.

Set RetroArch as the default emulator for your system of choice. For example, Nintendo Game Boy system.

And there you go. RocketLaunch is now configured to launch RetroArch for your system of choice. Try to audit some games and click the Rocket icon to launch the game!

Setting Another Core as Default for A Game System

By default, RetroArch uses a default core for a particular game system. For example, VBA Next core for Nintendo Game Boy Advance. In my personal preference, I would prefer Ganbatte, which supposedly give more accurate emulation.

To change the default core for Nintendo Game Boy Advance in RetroArch, select GLOBAL system in the left panel, go to Modules tab and select RetroArch.ahk. Next, click the Edit Global Module Settings button.

Edit Global Module Settings for RetroArch.ahk module.
 
Select the system that you want to change the default core. In this example, I'm changing the default core for Nintendo Game Boy Advance, which uses VBNext core by default.

Click the magnifier icon next to LibRetro_Core option and select the core that you want to replace.

I'm selecting gambatte_libretro.dll as the default core to emulate my Nintendo Game Boy Advance system.

Now, to test it, audit the game and click on the Rocket icon to run it. Press F1 and you should see the core replaced by the core you selected.

Setting Up Cores in RetroArch

MESS (Multi Emulator Super System)

Setting up MESS in RetroArch could be rather difficult if you don't know what to configure. Luckily for you, I had gone through that experience and hence the purpose of this tutorial.

First, you'll have to download MESS BIOS files and put it in your RetroArch\system folder. MESS requires BIOS since it is an emulator that emulates other emulators. Sound confusing? I hope not.

Note that the RetroArch\system folder is not only to put the MESS BIOS. In general, this is the path where you are supposed to put the BIOS for other systems, such as PSX, GBA, etc.

You can download MESS Complete BIOS Pack (as well as BIOS files for other system) files from Emuparadise.

A list of BIOS files used by MESS. Notice each BIOS is archived. Extract this to your RetroArch\system folder such as G:\HyperSpin\Emulators\RetroArch\system
The extracted MESS.zip files in RetroArch\system folder.

Note: There is no need to extract these BIOS zip files as RetroArch MESS core will handle by themselves.

Next, you'll also need to create a retroarch-core-options.cfg file within RetroArch root folder in case it is not there. We're going to add the following lines corresponding to MESS core options manually here in order for us to load the cartridges instead of softlist, such as Atari 5200 .a52 files. The reason we need to do this is you can only access Core Options once you had successfully loaded a game. And with the default settings, loading Atari 5200 ROM file such as XXX.a52 is not possible with softlist settings enabled and media type that is not set as cartridge.

It can get fairly complicated to explain. More on why here and here.

mess_softlists_enable = "disabled"
mess_softlists_auto_media = "disabled"
mess_softlists_auto_media = "disabled"
mess_media_type = "cart"
mess_boot_to_bios = "disabled"
mess_boot_to_osd = "disabled"
mess_boot_from_cli = "enabled"


Settings for MESS in retroarch-core-options.cfg

Do not confuse this with the retroarch.cfg that we configured earlier on. As the name suggest, this is configured per-core basis and can varied from core to core, whereas retroarch.cfg is global settings and does not in any way related to the core.


Next, open up RocketLauncherUI, go to GLOBAL settings, select Modules, and then select RetroArch.ahk. Click the Edit Global Module Settings, then click on the magnifier icon right next to MESS_BIOS_Roms_Folder and select the path to your MESS BIOS, such as G:\HyperSpin\Emulators\RetroArch\system\MESS

Configuring MESS BIOS ROMs folder that MESS core will use in RetroArch.


Now try to audit some system ROMs using MESS such as Atari 5200. If you're seeing a blank screen, that simply means that the MESS core in RetroArch cannot emulate it.

More Information

Libretro - MAME/MESS/UME Cores
MESS User's Manual

Atari 5200

From my personal experience, the MESS-libretro core in RetroArch still requires some work as it can only emulates a partial of Atari ROMs that I got. What I meant by partial is that you'll see a blank screen for ROMs that it cannot emulate, such as Frogger. You might want to consider to setup Kat5200 or Atari800/Atari800 Win Plus to emulate the Atari 5200 ROMs.

Extra Readings

General Information on Emulation
 

Final Note

More core setup will be added as I started to use RetroArch!

Extended Guide on Setting Up HyperSpin and RocketLauncher

Before you read on, this is an extended tutorial on setting up HyperSpin with RocketLauncher, which now replaces HyperLaunch.

Why Another Guide?

While trying to setup HyperSpin following Ryan's Full Guide on Setup HyperSpin MAME and Hyperlaunch, I found that some extra steps are necessary to integrate HyperSpin with RocketLauncher. Don't get me wrong, I highly recommend you follow Ryan's comprehensive guide to its entirely, which is what I did when I'm starting to set it up. But you could refer here if you're trying to integrate it with RocketLauncher instead of HyperLaunch.

Some Notes About RocketLauncher

  • HyperLaunch is renamed/rebranded as RocketLauncher to remove its ties with HyperSpin, since it is meant to be a multi purpose launcher for other Front-ends as well.
  • You can still use HyperLaunch, however I recommend to transition to RocketLauncher for any latest updates.
  • All configuration steps and settings UI remains the same in RocketLauncher just as in HyperLaunch, so the walkthrough written by Ryan's are still usable.
  • RocketLauncher provides a set of script or modules for basically every popular emulators to date. Think of the modules as a pre-defined CLI (Command Line Interface) that is pre-programmed to handle launching the emulator, e.g. feeding in some complicated parameters.

Prerequisites

This tutorial assumes that you already read through Ryan's guide and downloaded/extracted the following:

HyperSpin v1.3.3 Full Install came bundled with HyperLaunch v2.x, which is a very old and outdated copy of HyperLaunch. We are going to replace it with RocketLauncher.

HyperLaunch 2.25c, which is pretty much outdated and replaced by HyperLaunch v3, and now RocketLauncher

First, download the RocketLauncher v1.0 (Full Install) (65MB) here.

Download RocketLauncher v1.0 (Full Install). Just like HyperSpin, you'll need to register as member to download it.


Extract it into a folder named 'RocketLauncher' under your HyperSpin folder, such as G:\HyperSpin\RocketLauncher.

The archive password is www.rlauncher.com as mentioned in the download page.

Extract the downloaded RocketLauncher.zip into the RocketLauncher folder

Changing HyperLaunch Path to RocketLauncher

By default, if you're following Ryan's guide, HyperSpin assumes that the HyperLaunch is located at C:\HyperSpin\HyperLaunch. Since we are using RocketLauncher we will first have to change the path pointing to our RocketLauncher path.

HyperSpin 1.3.3 still refers to HyperLaunch instead of RocketLauncher. You can tell when opening the HyperHQ. Don't worry though, it is simply a pointer to the HyperLaunch.exe which we can easily change.

HyperSpin v1.3.3 still refers to HyperLaunch instead of RocketLauncher. Don't worry as we can simply redirect it to RocketLauncher in the steps below.


To do that, go to G:\HyperSpin\Settings and open up Settings.ini.

Change the HyperLaunch Path into the RocketLauncher path. Note that this is option is not visible in HyperHQ, so we'll have to do it manually.

Look at line #10 which you'll replace it with the path to RocketLauncher, such as G:\Hyperspin\RocketLauncher\

Next, we're going to COPY RocketLauncher.exe and named it as HyperLaunch.exe since it is the built-in command line that is executed by HyperSpin (see the Command Line Preview when selecting HyperLaunch as execution). We have to have these two different names because RocketLauncher.EXE is launched by RocketLauncherUI and HyperLaunch.EXE is launched by HyperSpin.

Create another executable and name it as HyperLaunch.exe. RocketLauncher.EXE is launched by RocketLauncherUI and HyperLaunch.EXE is launched by HyperSpin.

Another way to use RocketLauncher is to simply extract the RocketLauncher directly underneath the HyperSpin folder itself. However it would really mess up your directory structure since RocketLauncher also share similar directory with HyperSpin such as Modules and Settings.

Cleanup

Now that we have setup HyperSpin to launch RocketLauncher, which will then fire up the configured emulators depending on the selected systems, you can then remove HyperLaunch.exe from HyperSpin since we are no longer using it.

Delete HyperLaunch.exe from HyperSpin since we are no longer using it.

Some Screenshots of RocketLauncher

Following are some screenshots taken from RocketLauncher to show its similarity with HyperLaunch.

Adding HyperSpin front-end to RocketLauncher.
Adding new emulator menu page

Adding new emulator dialog.

Auditing game.

FAQ

Q: Selecting a MAME game for the second time doesn't start the game.

A: This only happens if you selected HyperLaunch as the launcher in HyperHQ and the HyperLaunch process doesn't completely terminated when you quit the game by pressing Esc. Open up your Task Manager and go to the Process tab to see it is still running. Simply killing the process will solve the problem.
This complication is easily solved by using RocketLauncher instead of the pre-bundled HyperLaunch to launch the emulator

HyperLaunch.exe still running in the background even after you exited from the MAME game by pressing Esc.

 

Extras

Ryan's Full Guide on Setup HyperSpin MAME and HyperLaunch also covers how to use Don's HyperSpin List Generator to generate a database XML file to show only the ROMs you got. Make sure to read it if you are only having a small number of ROMs for a particular system.

Adding ROMs for Auditing

When auditing the games in RocketLauncher for any system, the ROM are matched against the database XML file based solely on the name itself, which follows the naming convention of <Game Title> (Region).<File extension>. For example, 3-D WorldRunner (USA).nes.

Unless your ROM are named exactly following these convention styles, you are probably wondering how much time are you going to spent trying to rename each and everyone of them according to the title in the database.xml. Fortunately a guy called Don's have created a suite of tools that can aid our needs.

First, download Don's HyperSpin Tools here.

Don's HyperSpin Tools homepage. Note that the same tools are also hosted in HyperSpin website.


The folder must be extracted within the HyperSpin folder.

Extract Don's HyperSpin Tools within HyperSpin root folder.

Open Dons HyperSpin ROM Renamer.exe

Open Don's HyperSpin ROM Renamer tool which will automatically rename our ROMs file to match the filename that HyperSpin recognize

As an example, let us try to audit some SNES ROMs that I had. We're going to fill in three fields:

1. HyperList XML or DAT file: The ROMs database for your selected system. These can be found under your HyperSpin\Databases folder. By default HyperSpin includes database only for a selected number of systems. To add a database for a system that is not available in HyperSpin database such as Nintendo Game Boy, visit HyperList here and download the XML files for the system that you wanted to add.

A list of database XML for almost all system to date until Wii.
Note: You'll see a friendly reminder about Malware attack on this site if you attempt to search for HyperList XML using Google. Don't worry about it much as you're just simply going to download the XML files and nothing more.

Selecting a system database XML file that our ROMs to be renamed will based upon.

2. Source ROM folder: The folder where you stored the ROMs. The types of ROMs must match the XML files you selected. For example, I'm using the Super Nintendo Entertainment System XML files, so my source ROM folder is going to be my SNES ROMs folder. In this example, I'm pointing it to my roms (temp) folder where I put my ROMs that are not renamed properly.



3. Output ROM folder: This is the folder where the renamed ROMs will locate. I recommend you to point it to another path which you use to store ROMs referred by HyperSpin and RocketLauncher.



After filling in these fields, click the Scan button and the tool will then scans for matched ROMs. In case if you're wondering, the ROMs in your folder are matched against the ROMs in the database using a CRC Hash Value that is specified in the CRC field inside the database XML file itself. In short, CRC is a mathematically generated unique value that is different according to the file size of each file. So even if you change the game title, the CRC will remains unless you changed the file content itself, such as adding ROMs header.

I highly recommend you to download ROMs released by No-Intro groups which not only have only good ROM sets, but the best out of each region such as US, EU and JP. In case you found some ROMs are not matching even if you have the same game title, it could be because the ROMs that you have are appended with extra headers. I'm going to write another post guiding you some of the best sites to get those handful of BEST ROMs.

A CRC field is available for each game title in the database XML file. This is how Dom's HyperSpin ROM Renamer Tool knows which ROM file matching with which game title. Similarly, the game title is renamed according to the <name> field specified in this file.

Clicking the Scan button will scan for ROM files matching the CRC specified in the chosen database XML file.
Clicking the Rename button will rename my ROMs in my Source ROM folder specified earlier to the Output ROM folder.

In addition to rename, you can also save a list of games with no CRCs, missing or found games in a TXT files for you to refer to. This is handy if you want to collect the full collections ROMs for a particular system. In this case, I'm missing 70 SNES ROMs from the SNES database.

Two screenshots showing my ROMs in my Source ROMs and the output ROMs after renaming.

My source SNES ROMs named with the dump release information, e.g. [!] for good dump
My output ROMs folder after renaming using Don's HyperSpin ROM Rename tool. Notice the title has been cleaned up with no dump release information.

Click the blue Play icon in RocketLauncherUI again to audit the ROMs. You'll now see the matching ROMs shown in Green now.

Auditing my renamed SNES ROMs. ROMs that are matched are highlighted in GREEN cells.


Adding Genre XML for Genre Navigation in HyperSpin.

HyperSpin support genre browsing by pressing the 'G' button. By default, only MAME wheel came with genre browsing due to reasons explained below.

HyperSpin knows which game belongs to which genre simply by reading the genre.xml, which then refers to a series of xml files that are named according to the genre type, such as Action.xml, Adventure.xml. You can see this in the HyperSpin\Databases\MAME folder which explains why genre browsing works in MAME wheel but not the SNES wheel that we just created. You can get this XML files either through HyperList or manually generated yourself. Though the genre XML files hosted in HyperList may be outdated.

Don't feel intimidated. By manual I simply means using Don's HyperSpin List Splitter which will automatically split the genres in the database XML instead of inputting them by hands.

First, open up Dons HyperSpin List Splitter program.

Open Dons HyperSpin List Splitter to split the main database XML file into multiple genre XML files

Select the HyperSpin XML File which is the XML file that has all the information about the game titles for a system. Let's follow our previous example and create genres for our SNES ROMs.

Next, select the output folder which the genre.xml and a list of other genre-type.xml files will be populated. Point this to the HyperSpin\Databases\<Your Target Game System Folder>

Fill in the HyperSpin XML file and output folder that will contains the genre XML files.


Select Split files based on Genre. In addition, you could also split by Manufacturer, Rating, and Year.

You could also split by Manufacturer, Rating, or Year.


Click the Generate XML Files button and you'll then see a list of XMLs files named according to the Genre type in your Output folder.

A list of XML files named according to the genre category. The main XML file that point to these genre XML is genre.xml, which HyperSpin will locate when you enter into Genre mode by pressing 'G' button.



A quick look at the genre.xml file. This is the main file that HyperSpin looks up for other genre-type XML files. As you would have guessed, the actual game information such as titles are stored within each genre-type XML files.

A quick look at the genre XMl file, which contains the names for the other genre XML files that it is referring to. When renaming the genre name here, make sure you also rename the genre-type XML filename that it is referring to.

The content of the Action.xml file. Notice that the contents are exactly the same as the Super Nintendo Entertainment System.xml, which is the HyperList that we use as the input to Don's program. It is no surprise as the program is simply filtering each <game> element tag grouped according to the <genre> tag.

From a software engineer point of view, HyperSpin can actually filter the database XML file instead of having to create multiple XML files for it to refer. I think this is to reduce some memory or performance issues when filtering XML files since it would require a significant amount of memory space when traversing the XML element by element.

You can further cleanup duplicate genre names since they are not case sensitive by opening up the genre.xml files. As highlighted there are two genre, platform and Platform. You can even change the genre name here, but make sure you also rename the genre-type.xml files that it is referencing.


Useful Third Party Add-Ons

HyperSpeech - Speak the game titles, game wheels, etc.

HyperSearch - Allows you to search for games across all systems.


Useful Tools to Audit your ROMs

  • DatUtil - Convert DAT files to other formats.
  • Tur-Matcher - Intelligently rename your ROMs files even if you're using another ROM set to match HyperList official list
  • HyperSpin Checker - All in one tool to manage HyperSpin and other tools for auditing
  • HyperROM2XML - Generate database XML file based on your ROM folder and file names.


Sourcing and Downloading Artworks, Video Snaps Media

This part is mainly for aesthetic purpose. As I quote from somewhere I read, this will makes the shitty games looks flashy, but is still shitty.

As Ryan had pointed out, there are basically two routes that you can go. Yes, options just like in real life.

Option #1 - For the Riches

This option is only for those with big wallet and is willing to spend at least $50 for Platinum membership on HyperSpin to get the static artworks, themes for HyperSpin and another $30 for Emumovies Yearly subscription to get the animated content such as video snaps, which is the cheapest option. Personally I don't really have a lot of content right now, going on this route might be wasteful. Hence we have the second option!

This option, however, is also the easiest since all you need to do is pay your money and use single click to sync all the medias. I would opt for this if my media is constantly updating and I have huge media library before I could justify this purchase.

Upgrading your membership in HyperSpin today to supporting member to gain access to their FTP server.
Upgrading your membership in EmuMovies today to enjoy unlimited download of video snaps in 480p and access to FTP server!

Option #2 - Beggers Can't be Choosers

This option is basically for those that either don't have the penny (or credit card to pay using PayPal), or simply doesn't willing to pinch their wallet on content that should be made free and publicly available. For that, you'll have to work harder than the people who goes on Option #1.

All static contents such as artwork, titles, snap (screenshot), and background music are downloadable using their Emumovies Download Service Utility hosted from their FTP server. Animated content such as video snaps, however, are only available to download for supporting member.

Also, free users are limited to only 250MB download per day.

EmuMovies Download Service Utility. Yes, I'm logging in as a Free User.


For video snaps, you can head over to Emumovies Download page, select a game system, and manually download it. The good news is you don't have the downloading wait time like in HyperSpin. The bad news is you are restricted to download one file at a time. For IDM users, batch download is not applicable.

For most static content, there are several users that had contributed on forums such as GBATemp that attempts to upload and share the cover arts:

Cover Collections for Emulators With Cover Support (GBAtemp.net)





RetroXMB Art Collection (PSX Scene)



Leave in the comments below if you have found any sites that share these artwork parks and bundles.

Conclusion

Hope this tutorial helps you out to setup HyperSpin and RocketLauncher. I'll also be doing some tutorial on integrating RetroArch with HyperSpin since it might involve some additional steps or complications for beginners alike. Stay tuned!