Anyway, I've been playing around with Raspberry Pis for the past year and was curious about whether anyone has gotten Aleph One to run on the Pi and what graphics settings it might be able to support. I found this video on YouTube from May 2013 that shows Aleph One running on what I assume is a Model B.
There are no instructions or hints as to how to get it running, but at least it's some kind of start.
I downloaded the latest tarball from http://alephone.lhowon.org (20150620) and ran the configure script. There were two problems: Boost couldn't be located and SDL 1.2 seemed to be broken. The Boost issue was solved by pointing it out explicitly.
- Code: Select all
The SDL issue was due to missing library dependencies, namely VideoCore libraries in /opt/vc/lib. This was solved by updating to the latest firmware and editing /etc/ld.so.conf. After that configure ran happily and I was able to build and install without problem.
I installed the Marathon 2 data files and Aleph One launched without trouble. I was able to edit the settings, but once I pressed the "Begin New Game" button, and after displaying the chapter screen, the game immediately crashed. I try again and it keeps crashing with various memory related errors each time.
*** Error in `alephone': free(): invalid next size (fast): 0x02388568 ***
*** Error in `alephone': malloc(): memory corruption: 0x021fa360 ***
*** Error in `alephone': corrupted double-linked list: 0x02350108 ***
Then it happens! I catch a glimpse of Lh'owon in all its beauty. BOBs and pfhor locked in deadly combat. And the game is slow as molasses. Might be because I've set the resolution to 1920×1080 though. I exit the game and it crashes again. It continues like that: being able to enter the actual game about 1/5 of the time and being able to play for maybe 15 seconds before it crashes.
I also try building the latest code from GitHub. Aleph One prints its usual text to the terminal and then immediately exits with status 1 without giving any form of error message.
When looking for answers to these crashes I came across the following bug on SourceForge. It seems to be related to the issue I'm having.
I loaded up Aleph One in GDB and got a completely different error: "Program received signal SIGILL, Illegal instruction." I told GDB to ignore it and was able to reproduce the same errors as before and get a callstack. (Still using 20150620 tarball.)
pi@raspberrypi ~ $ gdb --args /usr/local/bin/alephone --windowed "/usr/local/share/AlephOne/Marathon 2"
GNU gdb (Raspbian 7.7.1+dfsg-5) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "arm-linux-gnueabihf".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
Find the GDB manual and other documentation resources online at:
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/local/bin/alephone...done.
(gdb) handle SIGILL pass nostop noprint
Signal Stop Print Pass to program Description
SIGILL No No Yes Illegal instruction
Starting program: /usr/local/bin/alephone --windowed /usr/local/share/AlephOne/Marathon\ 2
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
Aleph One Linux 2015-06-20 1.2.1
Original code by Bungie Software <http://www.bungie.com/>
Additional work by Loren Petrich, Chris Pruett, Rhys Hill et al.
TCP/IP networking by Woody Zenfell
Expat XML library by James Clark
SDL port by Christian Bauer <Christian.Bauer@uni-mainz.de>
This is free software with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
For details, see the file COPYING.
Built with network play enabled.
Built with Lua scripting enabled.
[New Thread 0x73b603b0 (LWP 18463)]
*** Error in `/usr/local/bin/alephone': corrupted double-linked list: 0x00edcd08 ***
Program received signal SIGABRT, Aborted.
0x759def70 in __GI_raise (sig=sig@entry=6)
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
#0 0x759def70 in __GI_raise (sig=sig@entry=6)
#1 0x759e0324 in __GI_abort () at abort.c:89
#2 0x75a1a954 in __libc_message (do_abort=<optimized out>,
fmt=0x75ad0bc0 "*** Error in `%s': %s: 0x%s ***\n")
#3 0x75a20b80 in malloc_printerr (action=1,
str=0x75ad0c04 "corrupted double-linked list", ptr=<optimized out>)
#4 0x75a2202c in _int_free (av=0x75aee4d4 <main_arena>, p=<optimized out>,
have_lock=12690296) at malloc.c:3996
#5 0x00139fa4 in l_alloc (ud=<optimized out>, ptr=<optimized out>,
osize=<optimized out>, nsize=0) at lauxlib.c:922
#6 0x001437d0 in luaM_realloc_ (L=L@entry=0x8c81d0, block=0xedccc8, osize=64,
nsize=nsize@entry=0) at lmem.c:84
#7 0x0014a718 in luaH_free (L=0x8c81d0, L@entry=0x140490 <sweeplist+656>,
t=t@entry=0xedfee8) at ltable.c:381
#8 0x00140490 in freeobj (o=0xedfee8, L=<optimized out>) at lgc.c:668
#9 sweeplist (L=<optimized out>, p=0x8c1010, count=23, count@entry=80)
#10 0x001414a0 in singlestep (L=L@entry=0x8c81d0) at lgc.c:1082
#11 0x00141d4c in incstep (L=0x8c81d0) at lgc.c:1141
#12 luaC_forcestep (L=0x8c81d0) at lgc.c:1160
---Type <return> to continue, or q <return> to quit---
#13 0x00141ea8 in luaC_step (L=L@entry=0x8c81d0) at lgc.c:1172
#14 0x0014dd84 in luaV_execute (L=L@entry=0x8c81d0) at lvm.c:840
#15 0x0013f27c in luaD_call (L=0x8c81d0, func=<optimized out>,
nResults=<optimized out>, allowyield=<optimized out>) at ldo.c:395
#16 0x0013e928 in luaD_rawrunprotected (L=L@entry=0x8c81d0, f=0x8c81d0,
f@entry=0x1380c4 <f_call>, ud=0x0, ud@entry=0x7effef30) at ldo.c:131
#17 0x0013f498 in luaD_pcall (L=L@entry=0x8c81d0,
func=func@entry=0x1380c4 <f_call>, u=u@entry=0x7effef30, old_top=16,
ef=ef@entry=0) at ldo.c:595
#18 0x001395fc in lua_pcallk (L=0x8c81d0, nargs=<optimized out>, nresults=0,
errfunc=<optimized out>, ctx=0, k=0x0) at lapi.c:949
#19 0x00194aa8 in LuaHUDState::CallTrigger (this=0x65fc20,
numArgs=<optimized out>) at lua_hud_script.cpp:176
#20 0x0028f924 in Lua_DrawHUD (time_elapsed=<optimized out>)
#21 0x002a47e0 in render_screen (ticks_elapsed=ticks_elapsed@entry=1)
#22 0x001a79c8 in idle_game_state (time=<optimized out>) at interface.cpp:1238
#23 0x0001ec74 in main_event_loop () at shell.cpp:896
#24 main (argc=<optimized out>, argv=<optimized out>) at shell.cpp:376
So, anyone feel like helping me investigate this issue? I've done some development on Linux in the past, but my knowledge overall is quite limited, and I see the Raspberry Pi as a way to learn more. I'll create an issue over on GitHub as well and post a link once that's done. EDIT: Here it is: https://github.com/Aleph-One-Marathon/alephone/issues/21
Specs: Raspberry Pi Model B+ (700 MHz, 512 MB) and Raspberry Pi 2 Model B (4×900 MHz, 1 GB), both running Raspbian Jessie and the latest firmware.