Files
lindbergh-loader_lindbergh-…/docs/guide.md
T
2025-09-15 16:12:07 -04:00

17 KiB

Guide

Supported Games

The follow list of games are supported. It is worth noting that there are multiple releases of these games, and some specific releases may not be supported.

Game Name Game ID DVP NVidia Intel (Mesa) AMD (Mesa) AMD (proprietary)
After Burner Climax SBLR DVP-0009
After Burner Climax Rev A SBLR DVP-0009A
After Burner Climax Rev B SBLR DVP-0009B
After Burner Climax SDX SBMN DVP-0018
After Burner Climax SDX Rev A SBMN DVP-0018A
After Burner Climax SE SBLR DVP-0031
After Burner Climax SE Rev A SBLR DVP-0031A
Ghost Squad Evolution SBNJ DVP-0029
Harley Davidson SBRG DVP-5007
Hummer SBQN DVP-0057B
Hummer SDLX SBST DVP-0057
Hummer Extreme SBST DVP-0079
Hummer Extreme MDX SBST DVP-0083
Initial D Arcade Stage 4 Rev A SBML DVP-0019A
Initial D Arcade Stage 4 Rev B SBML DVP-0019B
Initial D Arcade Stage 4 Rev C SBML DVP-0019C
Initial D Arcade Stage 4 Rev D SBML DVP-0019D
Initial D Arcade Stage 4 Rev G SBML DVP-0019G
Initial D Arcade Stage 4 Export Rev B SBNK DVP-0030B
Initial D Arcade Stage 4 Export Rev C SBNK DVP-0030C
Initial D Arcade Stage 4 Export Rev D SBNK DVP-0030D
Initial D 5 EXP SBRY DVP-0075
Initial D 5 EXP 2.0 SBTS DVP-0084
Initial D 5 EXP 2.0 Rev A SBQN DVP-0084A
Initial D Arcade Stage 5 Rev A SBQZ DVP-0070A
Initial D Arcade Stage 5 Rev C SBQZ DVP-0070C
Initial D Arcade Stage 5 Rev F SBQZ DVP-0070F
Let's Go Jungle SBLU DVP-0011
Let's Go Jungle! Rev A SBLU DVP-0011A
Let's Go Jungle Special SBNR DVP-0036
SEGA Network Taisen Mahjong MJ4 SBPN DVP-0049G
SEGA Network Taisen Mahjong MJ4 Evolution SBTA DVP-0081
Outrun 2 SP SDX SBMB DVP-0015
Outrun 2 SP SDX Rev A SBMB DVP-0015A
Primeval Hunt SBPP DVP-0048
Rambo SBQL DVP-0069
Rambo (China) SBSS DVP-0078
R-Tuned SBQW DVP-0060
Sega Race TV SBPF DVP-0044
The House of the Dead 4 Rev A SBLC DVP-0003A
The House of the Dead 4 Rev B SBLC DVP-0003B
The House of the Dead 4 Rev C SBLC DVP-0003C
The House of the Dead 4 Special SBLS DVP-0010
The House of the Dead 4 Special Rev B SBLS DVP-0010B
The House of the Dead Ex SBRC DVP-0063
Too Spicy SBMV DVP-0027
Virtua Fighter 5 SBLM DVP-0008
Virtua Fighter 5 Rev A SBLM DVP-0008A
Virtua Fighter 5 Rev B SBLM DVP-0008B
Virtua Fighter 5 Rev E (Public Version C) SBLM DVP-0008E
Virtua Fighter 5 Export SBLM DVP-0043
Virtua Fighter 5 Final Showdown REV A SBUV DVP-5019
Virtua Fighter 5 Final Showdown REV B SBXX DVP-5020
Virtua Fighter 5 Final Showdown REV B ver 6.0000 SBXX DVP-5020
Virtua Fighter 5 R SBQU DVP-5004
Virtua Fighter 5 R Rev D SBQU DVP-5004D
Virtua Fighter 5 R Rev G SBQU DVP-5004G
Virtua Tennis 3 SBKX DVP-0005
Virtua Tennis 3 Rev A SBKX DVP-0005A
Virtua Tennis 3 Rev B SBKX DVP-0005B
Virtua Tennis 3 Rev C SBKX DVP-0005C

Game Issues & Fixes

All Games: missing dependencies & libraries

Additional libraries that you might need to install to get all games running are listed here:

sudo apt install build-essential freeglut3:i386 freeglut3-dev:i386 libglew-dev xorg-dev libopenal1:i386 libopenal-dev:i386 libxmu6:i386 libstdc++5:i386 libsdl2-dev:i386 libfaudio0:i386 libfaudio-dev:i386 libncurses5:i386 libasound2-dev:i386 alsa-utils:i386 libasound2-plugins:i386

On Debian, libglut might not be found. Adding a symbolic link will fix it.

sudo ln -s /lib/i386-linux-gnu/libglut.so /lib/i386-linux-gnu/libglut.so.3

Let's Go Jungle Rev A

  • The game must be run in export mode to have the stereo sound option.

Outrun 2 SP SDX

  • You need to set SKIP_OUTRUN_CABINET_CHECK to 1 in lindbergh.ini to play in DX, SDX or Standard cabinet types.

Hummer (all versions)

The games will ask for libGLcore.so.1 and libnvidia-tls.so.1 you can copy for example libkswapapi.so as libGLcore.so.1 and libnvidia-tls.so.1 and the game will work fine.

Configuration File : lindbergh.ini

All configurable options are set and explained in the lindbergh.ini file itself, and should be reasonably easy to understand. This chapter further explains some of those setup options.

You will see the value AUTO by default for some of the config options. This is present when the emulator might set that config value to multiple different things itself. For example rideboard emulation is set to AUTO so that the emulator doesn't enable it for all games, and only turns it on for the special games that require it. If it was set to 1 it would always emulate the rideboard on serial port 2, and if it was set to 0 it would never emulate it.

Controller Setup

There are 2 modes for the controller setup in the emulator, these are set using the INPUT_MODE flag in the configuration file.

Input Mode 0

In this input mode, both input mode 1 and input mode 2 are active.

Input Mode 1

In the first input mode, the keys on the keyboard are used to control the game play. If playing a light gun game, the mouse pointer in the window is used as the player 1 light gun. There are no configurable options in this mode.

Input Mode 2

In the second input mode, inputs are taken directly from the evdev library in linux and so you can configure additional devices such as light guns, controllers and steering wheels.

To list the available inputs you should type:

./lindbergh --list-controllers

From there you will be able to see the controllers and all of the inputs support. Then in the config file you should map an arcade input to a controller input as follows.

PLAYER_1_BUTTON_UP XBOX_CONTROLLER_BTN_UP
ANALOGUE_1 XBOX_CONTROLLER_ABS_X

You can map digital controls to analogue controls. The analogue value will be set to the digital value, such that if the button isn't pressed it will be set to 0, and if the button is pressed it will be set to MAX. This is useful if your controller doesn't have analogue accelerator or break buttons.

ANALOGUE_0 XBOX_CONTROLLER_BUTTON_BR

You can map analogue controls to digital controls too. For each analogue input, there are 2 more inputs created ending in _MAX and _MIN. These are digital controls that will be triggered when the analogue input is either at the minimum or maximum value. This can be useful if you'd like to use an analogue stick to control a fighting game for example.

PLAYER_1_BUTTON_UP XBOX_CONTROLLER_ABS_Y_MAX
PLAYER_1_BUTTON_DOWN XBOX_CONTROLLER_ABS_Y_MIN
PLAYER_1_BUTTON_LEFT XBOX_CONTROLLER_ABS_X_MIN
PLAYER_1_BUTTON_RIGHT XBOX_CONTROLLER_ABS_X_MAX

You can set a deadzone for analogue axis. Each anaolgue input has 3 potential deadzones: start, middle, and end. The deadzone is a percentage of the range from the start, middle, or end that should snap to its respective extreme. This is useful for input devices that don't perfectly center, or pedals that don't perfectly return to 0. For instance.

ANALOGUE_DEADZONE_1 10 13 10

Will cause input on analogue input 1 to be clamped as follows:

  • At the start of the range the first 10% of the range will be set to 0%. In the case of a steering wheel where left is 0%, center is 50%, and right is 100% this will set steering percentages 0-10% to 0%.
  • In the middle of the range the center 13% of the left of middle, and 13% of the right of middle will snap to the middle.
  • At the end of the range the last 10% of the range will be set to 100%, similarly to the start case.

Audio Setup

There are currently no audio options that you can set. If you have a stereo sound card installed then the audio will be downmixed to stereo. If you have a 5.1 sound card installed and the game supports surround sound, each surround channel should be passed through properly and should play sound as it was originally intended.

Installing and Running the Flatpak

Prerequisites

Before installing the main package, ensure that Flatpak is set up on your system. If Flatpak is not installed, follow the official Flatpak setup guide.

Installation

Once downloaded, install Lindbergh Loader by running the following command in your terminal:

flatpak install lindbergh-loader-dev.flatpak

Additionally, install the required dependencies:

flatpak install org.freedesktop.Platform.Compat.i386//24.08
flatpak install org.freedesktop.Platform.GL32.default//24.08

Intel GPU Users (VAAPI Support):

flatpak install org.freedesktop.Platform.VAAPI.Intel.i386//24.08

NVIDIA GPU Users (Driver Support):

If your system uses an NVIDIA GPU, you need to install the matching NVIDIA driver package for your system. To check your NVIDIA driver version, run:

nvidia-smi

Then, install the corresponding Flatpak package, replacing 570-86-16 with your actual driver version:

flatpak install org.freedesktop.Platform.GL32.nvidia-570-86-16

Running Lindbergh Loader

Once installed, launch the application with:

flatpak run com.github.lindberghloader.dev

Managing Game Locations

By default, games should be added to:

~/Games

If you need to add more locations, install Flatseal:

flatpak install com.github.tchx84.Flatseal

Then, run Flatseal and grant Lindbergh Loader access to additional directories.

Stand alone mode

Now, you have the option to run the games without copying any files to the game's folder. Your system's 32 bit library folder, your current folder and the game's folder will be added to LD_LIBRARY_PATH env variable, so you can han the loader libs in any of those locations.

Passing -c option you can specify the location of the .conf file like this:

./lindbergh -c /my/custom/folder/myconfig.conf

-g or --gamepath

With this new option, you can specify the location of the game, where the game's ELF resides.

./lindbergh -g /my/custom/folder/hod4/elf

The loader will search for known elf files in that folder but you can also run it like this:

./lindbergh myCustom.elf -g /my/custom/folder/hod4/elf

The loader will load myCustom.elf inside the passed folder.

Passing a folder containing an elf

With this option, you pass a full path, including an ELF name like this:

./lindbergh /my/custom/folder/hod4/elf/myCustom.elf

The loader will load the ELF in that folder.

You can combine all options.

You can have the needed libraries in the folder where lindbergh resides, in the system's 32 bit lib folder or in the game's folder. The loader will try to find the files.

If by mistake, you pass both, a full path including an ELF and a path with -g option, the path passed with -g option will be omitted. Remember that if the path containg spaces, which is not recommended, pass the path inside double quotes or \ before the space.

Creating lindbergh.ini or controls.ini

./lindbergh --create --help

Will give you instructions on how to use the new commands.