Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line | 
|---|---|---|---|
| 1 | pmbaty | 1 | DXX-Rebirth for the Raspberry Pi | 
| 2 | |||
| 3 | BUILDING: | ||
| 4 | ========= | ||
| 5 | Make sure you have installed (the development packages of) all of the required | ||
| 6 | libraries (libsdl, libphysfs, ...). For building, you will also need scons (and | ||
| 7 | for that, python). Most linux distributions should contain all the required | ||
| 8 | packages, debain/raspbian do so for sure. Using a distribution with hardfp ABI | ||
| 9 | is recommended for optimal performance. I developed/tested this on a raspbian | ||
| 10 | wheezy. | ||
| 11 | |||
| 12 | Multiple build configurations are possible for the Pi, depending on whether you | ||
| 13 | wish to use the legacy vendor graphics driver or experimental Mesa VC4 driver. | ||
| 14 | |||
| 15 | To build against the legacy vendor graphics driver (recommended for most users): | ||
| 16 | |||
| 17 | scons raspberrypi=1 | ||
| 18 | |||
| 19 | If you're using a firmware release older than 1.20160921-1, it's highly | ||
| 20 | recommended that you upgrade, but if that's not an option, you must manually | ||
| 21 | specify the original GLES/EGL library names: | ||
| 22 | |||
| 23 | scons raspberrypi=1 egl_lib=EGL opengles_lib=GLESv2 | ||
| 24 | |||
| 25 | This assumes that the development files (libs/headers) for the VideoCore APIs | ||
| 26 | are located in /opt/vc. You can use rpi_vc_path to specify another location. | ||
| 27 | |||
| 28 | If you wish to build for Raspberry Pi 4B or the experimental Mesa VC4 driver: | ||
| 29 | |||
| 30 | scons raspberrypi=mesa | ||
| 31 | |||
| 32 | This will select the GL interface with SDL2 by default, but you can select | ||
| 33 | GLES & SDL1 by adding "opengles=1 sdl2=0". Keep in mind that as of Raspbian buster, | ||
| 34 | the Mesa packages no longer ship with GLESv1 headers, making GLES builds impossible. | ||
| 35 | Additionally, SDL2 is highly recommended, as its KMSDRM video driver is the only | ||
| 36 | way to run DXX-Rebirth on a Raspberry Pi 4B outside of an Xorg session. | ||
| 37 | |||
| 38 | For all other options, check "scons -h". | ||
| 39 | |||
| 40 | Currently, there is no direct support for crosscompiling. | ||
| 41 | |||
| 42 | RUNNING: | ||
| 43 | ======== | ||
| 44 | The game should run with X11 or directly on the console (libsdl with fbcon/ | ||
| 45 | directfb driver). | ||
| 46 | |||
| 47 | NOTE: *** PLEASE USE THE 128/128MB MEMORY SPLIT *** | ||
| 48 | |||
| 49 | The game might completely freeze or diplay messed up graphics in | ||
| 50 | out-of-(GPU)-memory situations. If you want to run it with the 192/64MB memory | ||
| 51 | split, you might be able to do so by setting the texture filter to "NONE" in | ||
| 52 | the graphics options. (This disables mip mapping and reduces the memory | ||
| 53 | requirements of the textures. Note that the "BILINEAR" filter still uses | ||
| 54 | mipmapping). | ||
| 55 | |||
| 56 | If the game freezes during the "Prepare for Descent" phase when loading a | ||
| 57 | level, you probably do not have enough GPU memory. | ||
| 58 | |||
| 59 | RUNNING ON X11: | ||
| 60 | =============== | ||
| 61 | Recommendation is to use fullscreen mode. However, you can run in "windowed" | ||
| 62 | mode, too. The game will open an X11 window in that case, and the actual game | ||
| 63 | output will be an overlay of the same size, but not at the same position, and | ||
| 64 | always on top (and completely out of control of the X Server). Game input is | ||
| 65 | still handled via the X11 window, so make sure it has the focus. | ||
| 66 | |||
| 67 | RUNNING ON THE CONSOLE: | ||
| 68 | ======================= | ||
| 69 | libsdl supports running directly on the Linux console. While the SDL Video mode | ||
| 70 | is technically not required on the RPi, we still have to use it to get all the | ||
| 71 | input events we need. libsdl seems to have problems on the RPi, I always get a | ||
| 72 | crash in libsdl when trying to change the resolution. To avoid such crashes, | ||
| 73 | the code will try to detect if it is running on the console and activate a hack | ||
| 74 | to prevent switching the resolution. Note that the in-game framebuffer | ||
| 75 | resolution can still be changed, the RPi will just scale the output to the | ||
| 76 | initial resolution (in "fullscreen" mode). "Windowed" mode will just result in | ||
| 77 | unscaled output. As libsdl creates a black screen, you will not be able to have | ||
| 78 | the "Window" on top of the linux console output :( | ||
| 79 | |||
| 80 | NOTE: You might need root privileges to use the libsdl fbcon/directfb drivers. | ||
| 81 | |||
| 82 | BUGS, SUGGESTIONS AND FEEDBACK: | ||
| 83 | =============================== | ||
| 84 | |||
| 85 | The RPi patch was written by: | ||
| 86 | Marcel Heinz <derhass@arcor.de> | ||
| 87 | |||
| 88 | Send bug reports, suggestions and other feedback regarding the operation | ||
| 89 | on the RPi to me via email. | ||
| 90 | |||
| 91 | -- derhass, 2012-08-09 | ||
| 92 |