Trem for a ras-pi

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.

i would guess: get what TEH™_DEDICATED(R)_TEAM(C) changed in ioQuake3, and apply those changes to Tremulous.

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)

To read more about x86 architecture, go here (x86 - Wikipedia)
To read more about ARM architecture, go here (ARM architecture - Wikipedia)

Yes, you have to compile Tremulous yourself. What I’m saying is that you probably don’t have to modify the game’s code to do it.

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

@Cheese , please post a link to the code for that version of ioquak3.

2 Likes

FINALLY… IT’S DONE AT LAST

I have made my own tremulous.arm and tremded.arm, because no one else did :wink:
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

When I execute:

pi@raspberrypi:~/tremulous $ ./tremulous.arm
tremulous 1.1.0 linux-arm Dec 17 2016
----- FS_Startup -----
Current search path:
/home/pi/.tremulous/base
/home/pi/tremulous/base/vms-1.1.0.pk3 (4 files)
/home/pi/tremulous/base/map-uncreation-1.1.0.pk3 (110 files)
/home/pi/tremulous/base/map-tremor-1.1.0.pk3 (45 files)
/home/pi/tremulous/base/map-transit-1.1.0.pk3 (135 files)
/home/pi/tremulous/base/map-niveus-1.1.0.pk3 (134 files)
/home/pi/tremulous/base/map-nexus6-1.1.0.pk3 (151 files)
/home/pi/tremulous/base/map-karith-1.1.0.pk3 (118 files)
/home/pi/tremulous/base/map-atcs-1.1.0.pk3 (87 files)
/home/pi/tremulous/base/map-arachnid2-1.1.0.pk3 (67 files)
/home/pi/tremulous/base/data-1.1.0.pk3 (1229 files)
/home/pi/tremulous/base


2080 files in pk3 files
execing default.cfg
----- CL_Shutdown -----

----- CL_Shutdown -----

Sys_Error: Z_Free: freed a pointer without ZONEID

I get this error : Sys_Error:Z_Free:freed a pointer without ZONEID
Can someone tell me what I have done wrong?

1 Like

Bumping this topic in case anyone missed @Cheese 's edit to his last post ^ .

Endianness issue maybe, I’m not sure.

Maybe try https://github.com/wtfbbqhax/tremulous

Is that 1.1 or 1.2?

newer than 1.2

strangely enough, tremded.arm works fine, but not tremulous.arm. Therefore the server runs but not the client

By the way, do 1.2+ clients still work on 1.1 servers?

1 Like

They will very soon.

Do you know what Z_Free: freed a pointer without ZONEID means?

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.

Can this be caused by not having enough memory?

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 :wink: .

I have 900 memory and 1ghz when I overclock (which I do since I have heatsinks). Is that enough?