So hello, I have found myself running into errors while compiling trem on my raspi. If you don’t already know, a raspi (raspberry pi) is a credit-card sized microcomputer that runs a modified version of the linux debian operating system. It has an ARM processor, and not an intel one (the same one found in iPhones, so no 32/64-bit applications, therefore the tremulous.x86 installed by the linux installer WILL NOT work.) Now, I can at the very least guarantee that this is indeed possible to know. As you might know, Tremulous is infact an ioquake3 modification. The reality is that a dedicated team has already ported ioquake3 + OpenArena (free version of quake3) to the raspberry pi. I can compile this port with no problems at all, but does anyone know how to convert a ioquake3 openarena installation to a tremulous installation? Does it require only changing a few files, or do I have to re-make the source? Also, if possible, tell me how tremfusion might be allowed to run on such a device…
(I am NOT looking for help compiling the QVMs or PK3 files… those I can steal from my windows laptop. I am looking for help creating the tremulous executable itself.)
P.S - I dunno which category this belongs in. Feel free to move this post to a area that best suits it.
As far as I know, the only difference between Raspbian and the average desktop Linux installation is the lack of an OpenGL driver. I suppose if you installed the experimental driver (it was pretty shitty the last time I checked, unfortunately), you could just compile and run Tremulous normally without any changes to the code.
In fact the raspi does not use a x86 architecture which, unfortunately most computers use, therefore it can not run most programs in the public domain, as most of them were made for an intel architecture. In short, I actually have to recompile tremulous for a whole new platform.
Shame that the new, 1.1 trem can’t be directly installed to ioquake3 engine as a mod (like the old 1.0 versions could)
(NO, I am not using Exagear Desktop, it probably will work, but I heard it’s still very experimental and slow. Any kind of cross-platform emulation is guaranteed to be real slow)
I wanted to test first if quake3 would work and it indeed does, smooth seamless gameplay.
Infact the compilation itself was so smooth as well that I decided to “steal” the quake build.sh made by the porting team. So far, with this build.sh I have gotten the furthest I’ve ever been when I compile trem
I have made my own tremulous.arm and tremded.arm, because no one else did
Now just to test these and start working on compiling tremfusion for arm…
I can redistribute my arm files if someone wants them… they’re made from the tremulous source and the build.sh of the quake3 raspberry pi port (Of course they’re open source and legal)
EDIT: Well, I sort of have a double-edged sword here…
The good news: It works!
The bad news: It works, but it runs into a system error upon execution
That is an error that pops up in the function Z_Free( void *ptr ), located in common.c in the qcommon directory. It is a part of trem’s memory allocation system. In other words something is off with the memory allocation somewhere. If you were to compile with debugging symbols, executed the client in gdb, and ran a back trace, you might get hints to what the problem is.
I didn’t get a chance to study over that memory allocation system in Trem yet, nor am I familiar with working with ARMs, so I will only be taking stabs in the dark regarding your issue currently. But not having enough memory could be an issue. Depending on the client, tremulous could use 70MB to 110MB of RAM running idle. But there could be a/some other issue(s) in regards to how memory is managed on the ras-pi verses how trem manages it on a more conventional Linux system. Someone more experienced than me in regards to Z_Malloc, ARMs, and memory allocation in general should chyme in .