The retrogaming under Haiku is possible and can open the doors to many games !
I will present in this article how to install, setup, and play a few demo games to demonstrate that.
The retrogaming setup under Haiku will use :
We will use a NES emulator to illustrate the Haiku retrogaming experience.
So, the first step is to install Emulation Station Desktop Edition through HaikuDepot.
Type "Emulation" in the search box from HaikuDepot in the "All packages" tab, then select the "es_de" entry and click on the "Install" button :
Confirm the installation of the required packages by clicking "Apply changes":
Now install "RetroArch" via HaikuDepot as well :
Last step is to install the lib retro for the Nintendo Entertainment System (NES).
To list all the possible retrogaming libraries, type in a Terminal :
pkgman search -a | grep retro
You should have a long list like below :
In case you need it, below is the complete list for each retro library available ("libretro") :
Emulator lib name | Description |
81_libretro | A port of the EightyOne ZX-81 emulator to libretro |
2048_libretro | A port of the 2048 puzzle game to the libretro architecture |
atari800_libretro | An Atari 8-bit computer and 5200 console emulator core for libretro |
bk_libretro | A Soviet Electronica BK computers emulator core for libretro |
blastem_libretro | A port of blastem to the libretro architecture |
bluemsx_libretro | MSX/Coleco/SG-1000 emulator core for the libretro API |
bsnes_libretro | A port of bsnes to the libretro architecture |
cannonball_libretro | A port of Cannonball, a Sega Out Run engine, to libretro |
cap32_libretro | A port of Caprice32, an Amstrad CPC emulator, to the libretro API |
craft_libretro | A port of Craft, a Minecraft clone, to the libretro architecture |
desmume_libretro | A port of Desmume, a Nintendo DS emulator for the libretro API |
dosbox_libretro | A port of DosBox to the libretro architecture |
dosbox_pure_libretro | A port of DOSBox to libretro with a goal of simplicty and ease of use |
easyrpg_libretro | A game interpreter to play RPG Maker games, using the libretro API |
fbneo_libretro | A port of Final Burn Neo to the libretro architecture |
fceumm_libretro | A port of FCEUMM, a Famicom/NES emulator to the libretro architecture |
flycast_libretro | Flycast is a multiplatform Sega Dreamcast emulator |
fmsx_libretro | A port of the fMSX emulator for the libretro API |
freeintv_libretro | A Mattel Intellivision emulator using the libretro API |
fuse_libretro | A ZX Spectrum emulator core for libretro |
gambatte_libretro | A port of Gambatte, a Nintendo Game Boy emulator to the libretro API |
gearboy_libretro | A port of Gearboy, a Nintendo Game Boy emulator to the libretro API |
gearcoleco_libretro | A port of Gearcoleco, a Colecovision emulator to the libretro API |
gearsystem_libretro | A port of Gearsystem, a Sega 8bit emulator to the libretro API |
genesis_plus_gx_libretro | A port of Genesis Plus GX, a Sega 8/16bit emulator to the libretro API |
genesis_plus_gx_wide_libretro | Genesis Plus GX Wide, a Sega 8/16bit emulator to the libretro API |
geolith_libretro | A port of Geolith, a SNK Neo-Geo emulator to the libretro API |
gme_libretro | A libretro port of Blargg's Game_Music_Emu music library |
gpsp_libretro | A port of gpSP, a Game Boy Advance emulator to the libretro API |
gw_libretro | A libretro core for Game & Watch simulators |
handy_libretro | A port of Handy, an Atari Lynx emulator for the libretro API |
hatari_libretro | A port of Hatari, an Atari 16/32bit computer emulator |
mame2003_plus_libretro | A port of MAME 2003 Plus, a MAME fork, to libretro |
mednafen_gba_libretro | A standalone port of Mednafen GBA to libretro |
mednafen_lynx_libretro | A standalone port of Mednafen Lynx to libretro |
mednafen_ngp_libretro | A standalone port of Mednafen NGP to libretro |
mednafen_pce_fast_libretro | A standalone port of Mednafen PCE Fast to libretro |
mednafen_pce_libretro | A standalone port of Mednafen PCE to libretro |
mednafen_pcfx_libretro | A standalone port of Mednafen PC-FX to libretro |
mednafen_psx_hw_libretro | A standalone port of Mednafen PSX to libretro |
mednafen_psx_libretro | A standalone port of Mednafen PSX to libretro |
mednafen_saturn_libretro | A standalone port of Mednafen Saturn to libretro |
mednafen_supergrafx_libretro | A standalone port of Mednafen SuperGrafx to libretro |
mednafen_vb_libretro | A standalone port of Mednafen VB to libretro |
mednafen_wswan_libretro | A standalone port of Mednafen WonderSwan to libretro |
melonds_libretro | A port of MelonDS, a Nintendo DS emulator to the libretro API |
mesen_libretro | A port of Mesen, a Nintendo Entertainment System emulator to the libretro API |
meteor_libretro | A Nintendo Game Boy Advance emulator using the libretro API |
mgba_libretro | A Nintendo Game Boy Advance emulator using the libretro API |
mrboom_libretro | A port of MrBoom, a Bomberman clone, to the libretro architecture |
mupen64plus_next_libretro | Port of Mupen64plus Next, a Nintendo 64 emulator to the libretro API |
nekop2_libretro | A port of NekoP2, a NEC PC98 emulator, to the libretro API |
neocd_libretro | A port of NeoCD, a Neo Geo CD/CDZ emulator for libretro |
nestopia_libretro | A port of Nestopia, a Nintendo Entertainment System emulator to the libretro API |
o2em_libretro | An Odyssey 2 / VideoPac emulator using the libretro API |
openlara_libretro | A port of OpenLara, a Tomb Raider engine, to the libretro architecture |
opera_libretro | A fork of 4DO, a 3DO emulator to the libretro architecture |
parallel_n64_libretro | Optimized/rewritten Nintendo 64 emulator for Libretro, based on Mupen64 Plus |
pcsx_rearmed_libretro | A port of PCSX ReArmed, a PlayStation emulator to the libretro API |
picodrive_libretro | A port of PicoDrive, a Sega 16bit emulator to the libretro API |
puae_libretro | A Commodore Amiga emulator for the libretro API |
reminiscence_libretro | REminiscence, a port of the Flashback game engine to the Libretro API |
sameboy_libretro | A port of SameBoy, a Game Boy / GB Color emulator to the libretro API |
scummvm_libretro | ScummVM, a Scumm interpreter core for the Libretro API |
snes9x_libretro | A port of Snes9x, a Nintendo Super NES emulator to the libretro API |
stella_libretro | A port of Stella, an Atari 2600 VCS emulator to the libretro API |
stella2014_libretro | A port of Stella, an Atari 2600 VCS emulator to the libretro API |
tyrquake_libretro | A port of TyrQuake, a Quake 1 engine, to the libretro architecture |
vba_next_libretro | An optimized VisualBoyAdvance-M core for the libretro API |
vecx_libretro | A port of Vecx, a GCE Vectrex emulator to the libretro API |
vice_libretro | A port of Vice, a Commodore 8-bit emulator to the libretro API |
virtualjaguar_libretro | A port of Virtual Jaguar, an Atari Jaguar emulator to the libretro API |
xrick_libretro | A port of XRick, a Rick Dangerous clone, to the libretro architecture |
yabause_libretro | A port of Yabause, a Sega Saturn emulator to the libretro API |
Not all of them work fine on Haiku, so if you use emulators other than for the NES, you will have to test them before to be sure.
If we check for the lib retro for NES, we have the below :
However, the one we need is "mesen" :
Install it by typing :
pkgman install mesen_libretro
Great, it's ok for the prerequisites !
I like to use Emulation Station (ES DE), but in windowed mode.
For that, type in a Terminal :
es-de --resolution 800 600
The first time the application is launched, it will create the directory structure for the various types of games in "/boot/home/ROMs/".
Select "Create directories " and confirm with return key :
You should have the confirmation below once completed :
If you check the folder in the tracker, you will see that each machine emulated will have its own directory.
Now quit ES DE.
It's important to note that only ROMs you own can be installed.
So verify the license rights for each game you would like to play. To demonstrate this article, we will install :
Go to the Elden Pixels Alwa's Awakening website :
Then go into the "Download demo" section and proceed with the download :
You should have the below ".nes" file.
Move it to the "/boot/home/ROMs/nes" folder :
Then relaunch ES DE :
Tada !
Now we have one Nintendo game recognized :
Quit Emulation Station.
We will proceed with the second download on the PDRoms website.
Please note that all downloads at PDRoms are free software or former commercial software legalized for free use by their authors.
Go to the PDRoms Alter Ego website :
Select the disk below to proceed with the download :
Once done, you might need to use the "unzip" command in a Terminal from the archive retrieved previously :
Then move the Alter_Ego.nes file into the "/boot/home/ROMs/nes" folder :
Then launch again "ES DE".
You might notice the games we have downloaded only display the name and the description : there's no picture and no video to have a rough idea of what it is.
Let's change that.
In the main menu, select the "Scraper" option :
Then choose "Scrape these systems" :
Select "Nintendo Entertainment System" and press return key. Then select "Back" and hit return :
Proceed with "Start" :
Among the two games, Alter Ego is the one which should be recognized and where some media will be downloaded (like screen capture, video and game music) :
If you go into the "Nintendo Entertainment System", you should now see the game "Alter Ego" with its associated screenshot and mini-video :
To finalize our setup, let's change the default GUI theme with a nice one.
Select "UI Settings" in the main menu :
Then "Theme Downloader" :
The first time it's launched, it will display the below message :
Confirm with "Proceed".
After completion, you should see the list of available themes displayed :
Select "ArtFlix (revisited)".
A few minutes later, the theme should be flagged as installed :
To activate it, go into the "UI settings", then "Theme" menu and select "ArtFlix (revisited) :
Go back to "UI Settings" :
And go back to the main menu or hit "Esc".
The NES system will be displayed with this nice screenshot :
Really great, isn't it ?
Hit return to look at the games installed for this system :
You should see the screenshot and the video with music of the games installed.
If you hit the up or down arrow, it will display the previous / next game available (Alter Ego or Alwa's Awakening as we only have installed two games).
Select "Alter Ego" and hit return to play.
Before playing, here are a few notes about the default keyboard keys used by RetroArch :
To sum-up :
When Atler Ego is launched, you will see this welcome screen :
Press Enter to start the game.
In the game, you control a hero who has a phantom twin, his alter ego.
The aim is to retrieve all the pink bags in the game.
But you can only switch between the hero and his alter ego a limited number of times in a level.
Now let's launch Alwa's Awakening. The welcome screen below will be visible at the beginning :
Zoe, is magically transported to the land of Alwa, where she must rescue the helpless citizens from an evil overlord and his henchmen.
I let you discover the world's game with this demo for NES :)
I noticed that Haiku doesn't recognize a huge list of gamepads.
However let's see how to configure one under this operating system for RetroArch.
For the **unrecognized** ones :
For the recognized ones :
On my system, I've plugged a Generic SNES controller (the Logitech gamepad was recognized only in another software but not with RetroArch).
If you have not installed Haiku on a dedicated machine, you might need first to tick your gamepad to plug it like below for VirtualBox :
Now, if you go into the ES DE, the way to setup a gamepad is in the "Input device settings" menu :
However, currently the application is not recognizing gamepad as per below message :
No problem, we would like only to make RetroArch recognize the gamepad (we don't care about ES DE for the moment).
Just to be sure your gamepad is recognized under Haiku, type the below command in a Terminal :
ls /dev/joystick
or
ls /dev/joystick/usb/0
You should have a result like the screenshot :
If it's the case, great !
Now launch RetroArch.
Select in the "Settings" section, "Input" :
Then "RetroArch Binds" :
And "Port 1 Controls" :
Now, for each gamepad key (from D-Pad Up until R Button Shoulder), hit enter and then click the corresponding button on your gamepad to define the correct binding :
Once done, go back to the main menu by typing the "delete" key several times ( delete key = "go back").
Now we will change the user interface to something better. In the "Settings" section, select "User Interface" :
Then go down until "Menu". Type enter :
Then select "xmb" as the new GUI :
Quit RetroArch and restart the application.
You will now notice the improved GUI available :
With all these details, you should now be able to play your favorite retro games on Haiku up to the Emulation Station Desktop Edition and RetroArch applications !
If you would like to share your experience on retrogaming under Haiku, put a comment after this article below :)