Retrogaming under Haiku

Retrogaming under Haiku

  • mdo  DigitalBox
  •   Gaming
  •   October 31, 2024

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.

Pre-requisites

The retrogaming setup under Haiku will use :

  • Emulation Station Desktop Edition for the GUI and the games media
  • RetroArch to access to the various emulators
  • A retro library installed for each emulator needed

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 !

Initial configuration

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.

Add some games

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 :

  • The Alwa's Awakening game demo
  • Alter Ego game which is in public domain and free to 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".

Add some media

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 :

Change theme

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".

Now let's play !

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 :

  • A, B, X, Y buttons are mapped to S, A, P, L keys on QWERTY keyboards
  • Up, Left, Right, Bottom are mapped to the arrow keys
  • Start is mapped to Enter key
  • Select is mapped to Space key
  • Hotkey is mapped to Esc key

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 :)

Additional configuration

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 :

  • 8BitDo SF 30 Pro (wireless)
  • 8BitDo SF 30 Pro (wired)
  • 8BitDo SN 30+ Pro (wireless)

For the recognized ones :

  • Logitech Gamepad F310 (wired)
  • Generic SNES controller (wired)

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 :)


Powered by Bludit - Hosted by Planet Hoster
© 2025 Haiku Insider