#Zandronum w/ Skulltag (Doom 2 Source Port)

227 messages ยท Page 1 of 1 (latest)

mental forum
#

Zandronum is a multiplayer oriented port, based off Skulltag, for Doom and Doom II by id Software. Alongside the source port, it also contains the latest Skulltag assets that adds two campaign modes for playing deathmatch with bots, and invasion for killing hordes of monsters. It also adds new weapons, monsters, bot skins and announcers, resembling a lot later fps games such as Quake 3 Arena and Unreal Tournament.

Instructions:

  1. Download the "Zandronum.zip" file below and unpact it to your "ports" folder
  2. Copy doom2.wad to "ports/Zandronum" folder, and run "Zandronum.sh" from EmulationStation.

Notes: Thanks to Brad Carney (Carnevil) for creating this source port with lots of new content. Also thanks to Slayer366 for helping me porting it to portmaster.

http://www.skulltag.com/

Tested on:
โœ… RG351P/ArkOS

https://github.com/leomontenegro6/zandronum_arm/blob/master/Zandronum.zip

rain spire
#

So is this just for multiplaying?

crimson ice
#

okay I have a question @mental forum

#
      param_device="anbernic"
        if [ ! -f /$GAMEDIR/conf/zandronum/zandronum.ini ]; then
          mkdir -p $GAMEDIR/conf/zandronum
          cp -rf $GAMEDIR/conf/zandronum_480/* $GAMEDIR/conf/zandronum/.
        fi      
      if [ -f "/opt/system/Advanced/Switch to main SD for Roms.sh" ] || [ -f "/opt/system/Advanced/Switch to SD2 for Roms.sh" ] || [ -f "/boot/rk3326-rg351v-linux.dtb" ]; then
        param_device="anbernic"
        if [ ! -f /$GAMEDIR/conf/zandronum/zandronum.ini ]; then
          mkdir -p $GAMEDIR/conf/zandronum
          cp -rf $GAMEDIR/conf/zandronum_640/* $GAMEDIR/conf/zandronum/.
        fi      
      fi
elif [[ -e "/dev/input/by-path/platform-odroidgo2-joypad-event-joystick" ]]; then
    if [[ ! -z $(cat /etc/emulationstation/es_input.cfg | grep "190000004b4800000010000001010000") ]]; then
      param_device="oga"
        if [ ! -f /$GAMEDIR/conf/zandronum/zandronum.ini ]; then
          mkdir -p $GAMEDIR/conf/zandronum
          cp -rf $GAMEDIR/conf/zandronum_480/* $GAMEDIR/conf/zandronum/.
        fi      
    else
      param_device="rk2020"
        if [ ! -f /$GAMEDIR/conf/zandronum/zandronum.ini ]; then
          mkdir -p $GAMEDIR/conf/zandronum
          cp -rf $GAMEDIR/conf/zandronum_480/* $GAMEDIR/conf/zandronum/.
        fi      
   fi
elif [[ -e "/dev/input/by-path/platform-odroidgo3-joypad-event-joystick" ]]; then
      param_device="ogs"
        if [ ! -f /$GAMEDIR/conf/zandronum/zandronum.ini ]; then
          mkdir -p $GAMEDIR/conf/zandronum
          cp -rf $GAMEDIR/conf/zandronum_640/* $GAMEDIR/conf/zandronum/.
        fi      
elif [[ -e "/dev/input/by-path/platform-gameforce-gamepad-event-joystick" ]]; then
      param_device="chi"
        if [ ! -f /$GAMEDIR/conf/zandronum/zandronum.ini ]; then
          mkdir -p $GAMEDIR/conf/zandronum
          cp -rf $GAMEDIR/conf/zandronum_640/* $GAMEDIR/conf/zandronum/.
        fi      
elif [[ "$(cat /sys/firmware/devicetree/base/model)" == "Anbernic RG552" ]]; then
      param_device="rg552"
        if [ ! -f /$GAMEDIR/conf/zandronum/zandronum.ini ]; then
          mkdir -p $GAMEDIR/conf/zandronum
          cp -rf $GAMEDIR/conf/zandronum_960/* $GAMEDIR/conf/zandronum/.
        fi      
elif [ -e "/dev/input/by-path/platform-singleadc-joypad-event-joystick" ] || [ "$(cat /sys/firmware/devicetree/base/model)" == "Anbernic RG503" ]; then
      param_device="rg503"
        if [ ! -f /$GAMEDIR/conf/zandronum/zandronum.ini ]; then
          mkdir -p $GAMEDIR/conf/zandronum
          cp -rf $GAMEDIR/conf/zandronum_960/* $GAMEDIR/conf/zandronum/.
        fi      
else
        if [ ! -f /$GAMEDIR/conf/zandronum/zandronum.ini ]; then
          mkdir -p $GAMEDIR/conf/zandronum
          cp -rf $GAMEDIR/conf/zandronum_640/* $GAMEDIR/conf/zandronum/.
        fi
fi```
lofty yarrow
#

So will this not work as a doom mod?

crimson ice
#

this is can be done way easier i think

mental forum
rain spire
#

Cool i will test on my 353m. Can this play brutal doomas well and hexen? Or just Doom 2?

mental forum
mental forum
#

Also, it works only with SDL1, and doesn't support for OpenGL, so you'll have to stick with software mode to work.

rain spire
#

Cool. ๐Ÿ‘Œ

mental forum
rain spire
#

Damn i was just obaut to ask that why we dont have doom games on ports as we have so much same kind stuff. ๐Ÿ˜„

lofty yarrow
mental forum
crimson ice
#

@mental forum quick points

  • what launch script did you take as an example?
  • why is there a gptokeyb version in the game folder? gptokeyb is included in PM and is called in controls.txt via GPTOKEYB="$ESUDO $controlfolder/gptokeyb $ESUDOKILL" so we only use $GPTOKEYB "portexecutable" -c "./portname.gptk" & for example
  • for the tools folder
  • the whole each resolution one ini is not the correct way too go. This will break other resolutions maybe? A simple sed command in the launcscript would me much easier. Or even better using sdl to auto detect the resolution. What about 1920x1152 for 552? or x55 with 1280x720.

All you need is

if [ -d "/opt/system/Tools/PortMaster/" ]; then
  controlfolder="/opt/system/Tools/PortMaster"
elif [ -d "/opt/tools/PortMaster/" ]; then
  controlfolder="/opt/tools/PortMaster"
else
  controlfolder="/roms/ports/PortMaster"
fi``` '

roms2 detection is handled in control.txt
#

I guess its just a bit of script cleanup rest looks good

mental forum
#

Although Zandronum is more widely used for online gaming, it's based in an older gzdoom version that still rely upon SDL1 to work. Gzdoom on its behalf is based in SDL2 and it's easier to port to multiple different devices, and also supports OpenGL out of the box.

lofty yarrow
#

Yep..saw @lofty thicket had bloom working in gzdoom but I couldn't reproduce it on my own device

#

๐Ÿคทโ€โ™‚๏ธ

crimson ice
#

also <@&1123159718874058882> for testing ๐Ÿ™‚

swift cove
crimson ice
#

it happens from time to time

swift cove
#

Maybe. Iโ€™d have to look at it on a computer.

#

control.txt could handle it I guess.

mental forum
#

@crimson ice We need gptokeyb basically for menu navigation. The Zandronum ARM version we used to compile it still doesn't have full controller support. We could have analog stick sensitivity, but we can't choose menu options or go back. The gptokeyb script was used just to map ESC to Select, and Enter to Start basically.

#

It's similar to other ports such as Blood, except we only mapped the buttons we needed.

crimson ice
#

its already in portmaster folder

mental forum
#

oh, got it. I'll remove it then, and try making use of the existing one.

crimson ice
#

if you want i can try to correct some things tomorrow

mental forum
crimson ice
#

@swift cove ideally I would like to have portmasters device detection and then use these numbers for free use to sed into config files ๐Ÿ˜›

crimson ice
#

We did this at the very beginning of Portmaster ๐Ÿ˜›

mental forum
crimson ice
mental forum
#

Slayer366 provided it for me. From my end, I only tested in my RG351P, and it worked fine.

crimson ice
#

atm this would break maybe x55, rgb30 and ogu i think

#

maybe it's not even needed

#

I'll test some ๐Ÿ™‚

mental forum
#

Well, at least there's an "else" statement at the end, that should draw back to a default file resolution. At least in theory I think it shouldn't break for newer devices.

swift cove
swift cove
#

Itโ€™s not really PortMasters job to create stuff like that because people copy and paste stuff between devices.

crimson ice
#

device_fetch
sed $device height here
sed $device width here

Done

#

๐Ÿ˜„

swift cove
#

I was thinking more a little c program which talks to sdl2 for resolution and read a few files for device detection.

#

Or a c program and a bash script. ๐Ÿคทโ€โ™‚๏ธ

mental forum
#

Just to add to the discussion: indeed there's some controller mapping changes on each config file:

#

Maybe, instead of relying upon the resolution directly, we could rely upon device names instead.

mental forum
#

The left one is RG351P, and the right one is from a newer device whose button mappings resemble more upon a Xbox360 controller.

crimson ice
crimson ice
lofty yarrow
#

Not sure what I did wrong but doom2 plays

crimson ice
crimson ice
#

just not 5 differents for hardcoded devices

lofty yarrow
#

K..let me have it. What'd I do?๐Ÿ˜‚

swift cove
#

Iโ€™ll whip something up in a few days.

mental forum
#

Yea, I think I agree, for the sake of simplicity.

crimson ice
mental forum
#

"Mortal Conflict" is the deathmatch campaign with bots, with about 10 levels where you must be the winner of each match.

#

"Impending Nightmare" is the Invasion mode, with 6 to 10 arena levels whose objective is survive 6 to 10 rounds with dozens of monsters to kill.

lofty yarrow
#

Thnx๐ŸŽƒ

#

Arkos 353m working but my direction is backwards. Moving forward in reverse ๐Ÿ˜‚

mental forum
#

Is strafing and aiming at least working?

lofty yarrow
mental forum
#

There are some controller options that allow you to invert axis. These might fix that issue for you.

#

Otherwise, we can also change that by editing zandronum.ini file directly

lofty yarrow
#

okay. Just makes traversing menu awkward

lofty yarrow
fickle shadow
#

Jelos x55. Not working

daring mica
fickle shadow
#

...

#

Now I just wanna figure out how to play Brutal Doom after researching what that even is.

#

After reading the Readme file. I have renamed all my wad files because some of them had uppercase letters. Wasn't sure if it was a case sensitive thing.
Jelos on x55. Doesn't boot after following all the instructions from the top.

rain spire
#

On 353m controls are way off. Is there any premade controller ini so i can play this? ๐Ÿ˜„

#

Also i tested to launch this with hexen.wad but it was a no go

#

Also is there a way to put multible wads to zandronum folder and then choose which one you want to use?

mental forum
#

To do so, is it just a matter of running the command, and piping it to a tee command that stores it to a "log.txt" file, and that's it?

daring mica
#

yea. example ./brogue 2>&1 | tee $GAMEDIR/log.txt

mental forum
# fickle shadow

Maybe Zandronum is running in opengl instead of software mode, possibly due to the .sh file not choosing the config template file correctly. It that's the case, we could either edit the .ini file directly in the /roms/ports/Zandronum/conf/zandronum/zandronum.ini, or we could copy one of the template config files into that folder and see what happens.

#

Anyway, what's your device resolution? 1280x720?

crimson ice
#

That's the thing i meant yesterday with hardcoded devices ๐Ÿ™‚

#

But maybe the resolution is not needed at all

mental forum
crimson ice
#

Tonight I'll do some testing

mental forum
#

@lofty yarrow BTW, could you provide me your zandronum.ini config file? We could use it to change the config template files in order to fix these controller issues for other RG353 users.

mental forum
#

@fickle shadow Anyway, try copying the /conf/zandronum_640/zandronum.ini file to the .conf/zandronum/ folder, and then change the resolution by editing these values: https://github.com/leomontenegro6/zandronum_arm/blob/master/Zandronum/conf/zandronum_640/zandronum.ini#L210C17-L210C17

GitHub

Zandronum AARCH64 port for Anbernic-like devices. Contribute to leomontenegro6/zandronum_arm development by creating an account on GitHub.

#
vid_defwidth=1280
vid_defheight=720
fickle shadow
#

Ok sick. Thanks for looking at it for me. I will test it later

crimson ice
#

@mental forum wheres the source code from?

#

Also on amber it immediatly asks for libGL.so.1

#

so opengl

#

in the config file are also hardcoded paths not sure if they are important

#
Path=/home/ark/.config/zandronum/autoexec.cfg

[Heretic.AutoExec]
Path=/home/ark/.config/zandronum/autoexec.cfg

[Hexen.AutoExec]
Path=/home/ark/.config/zandronum/autoexec.cfg

[Strife.AutoExec]
Path=/home/ark/.config/zandronum/autoexec.cfg

[Chex.AutoExec]
Path=/home/ark/.config/zandronum/autoexec.cfg```
crimson ice
#
  • Rewrote the .sh to remove all config if statements
  • Removed all config folders and used the 640 config file for one main config file
  • Removed
vid_defheight=480
vid_defwidth=640

from config files so they are autogenerated on first launch

  • renamed folder from Zandronum to zandronum
  • removed gptokeyb from port and used Portmaster version
  • replaced portmaster folder recogniztion with portmaster standard
  • added logging to the executable line

Has to be doom2.wad not DOOM2.WAD

#

there you go @mental forum

rain spire
#

Then we just need the fixed config file for 353 ๐Ÿ‘Œ

flat cypress
#

then we need to open Skulltag-PortMaster multiplayer server

crimson ice
#

Have you tried the package i posted?

mental forum
mental forum
# crimson ice Also on amber it immediatly asks for libGL.so.1

It mentions opengl, but in fact it isn't used. The main reason why it's here is because, since Zandronum is SDL1, I "borrowed" a few libraries from Hocoslamfy, which included the libGL for some reason.

I think Zandronum uses mostly SDL1 for graphics and OpenAL for sound. All the other unused libraries could be removed, for the sake of cleaning things up/reducing port file size.

crimson ice
#

because this can cause big problems

mental forum
crimson ice
mental forum
#

Yea, agreed. Also, by default this file isn't used, so it shouldn't cause side effects.

#

Anyway, thanks for the refactors. I'll test asap.

rain spire
fickle shadow
#

With the newest zip from cebion the game now boots and plays for me on x55 Jelos.
The controlls are broken. Inverted up/down also left/right. And trying to navigate menu is hell. I could remapp ok but couldn't back out of menu.

rain spire
#

I also have controller all messed up with 353m

crimson ice
#

if you look at the gptk file

#

there is only start and escape mapped

#

so no controls

#

so it works via ingame

#

or config file

rain spire
#

So that explains it then ๐Ÿ˜„

crimson ice
#
[Doom.Bindings]
1=slot 1
2=slot 2
3=slot 3
4=slot 4
5=slot 5
6=slot 6
7=slot 7
8=slot 8
9=slot 9
0=slot 0
-=sizedown
Equals=sizeup
Tab=togglemap
W=+forward
E=+use
T=messagemode
LeftBracket=invprev
RightBracket=invnext
Enter=invuse
A=+moveleft
S=+back
D=+moveright
`=toggleconsole
Shift=+speed
\=+showscores
X=crouch
Space=+jump
CapsLock=toggle cl_run
F1=menu_help
F2=menu_save
F3=menu_load
F4=menu_options
F5=menu_display
F6=quicksave
F7=menu_endgame
F8=togglemessages
F9=quickload
F10=menu_quit
F11=bumpgamma
F12=spynext
SysRq=screenshot
Pause=pause
Home=land
PgUp=+moveup
End=centerview
PgDn=+lookup
Ins=+movedown
Del=+lookdown
Mouse1=+attack
Mouse2=+altattack
MWheelUp=weapprev
MWheelDown=weapnext
MWheelRight=invnext
MWheelLeft=invprev
DPadUp=weapnext
DPadDown=weapprev
DPadLeft=invprev
DPadRight=invnext
Pad_Start=menu_main
LThumb=+speed
LShoulder=+altattack
RShoulder=+attack
LTrigger=invuse
RTrigger=menu_options
Pad_A=+crouch
Pad_Y=+jump
O=selectammodrop
H=brutaltaunt
J=advtaunt
K=oneliner
V=wave1
N=wave2
Joy1=+use
Joy2=+crouch
Joy3=+use
Joy4=+jump
Joy5=+jump
Joy6=+attack
Joy7=invuse
Joy8=togglemap
Joy9=weapnext
Joy10=weapprev
Joy11=invprev
Joy12=invnext
Joy14=menu_main
Joy15=+speed
Joy16=centerview
POV1Up=weapnext
POV1Down=weapprev
POV1Left=invprev
POV1Right=invnext```
#

this part in the config file

swift cove
#

๐Ÿค”

crimson ice
#

so either we remove the joy mappings and map these to the gptk file

#

and this

#
[Joy:JS:0]
Sensitivity=0.7
Axis0deadzone=0.150001
Axis0scale=-1
Axis1deadzone=0.150001
Axis1scale=-1
Axis2deadzone=0.150001
Axis2map=0
Axis3deadzone=0.150001
Axis3scale=0.5
Axis3map=1
Axis4deadzone=0.150001
Axis5deadzone=0.150001
Axis6deadzone=0.150001
Axis7deadzone=0.150001
Axis8deadzone=0.150001
Axis9deadzone=0.150001
Axis10deadzone=0.150001
Axis11deadzone=0.150001
Axis12deadzone=0.150001
Axis13deadzone=0.150001```
flat cypress
#

will controls be adjustable if we use gptk?

#

some mods requre additional buttons

crimson ice
#

in the conf file

flat cypress
#

ok nice, so we can change them in any case

rain spire
#

Any way is better than current. Very difficult to navigate menu now and when i have used menu some time the buttons just stopped to work so i can't fininsh my mappings anyways ๐Ÿ˜„

mental forum
#

If I'm not mistaken, by default Zandronum maps the DPAD to Up/Down/Left/Right arrow keys in the menus, without having to use gptk for that.

#

Only the buttons for choosing menu options and going back is the ones that aren't supported yet, and that's why the gptk file only has ESC and ENTER keys mapped.

#

In my RG351P, menu navigation works fine in my DPAD. But using the analog stick in the menus might be a little bit worse

mental forum
#

@crimson ice just tried your Zandronum update in my RG351P with ArkOS. worked fine, just like it was before.

#

I have some suggestions, though: Did you map Select button to show the map?

crimson ice
#

I didn't map anything

#

didn't touch controls

#

but we need to i think because of the whole "reverse" mapped thing

mental forum
#

Anyway, in my RG351P, by default the Select button was mapped to show the map, but this button is already mapped to show the menu.

#

Ideally, we shouldn't map any ingame functions to the Select and Start buttons, since they're already reserved by gptk

#

But I think I can simply change button mappings ingame and remove Select -> Map from there.

#

Before further discussions about controls, another question: should we remove the possibly unused libraries from the "lib" folder?

crimson ice
#

move them all out

#

and then only add the needed ones

mental forum
#

and to do that, I simply run ldd zandronum, get the list of libraries, compare with the ones in the "libs" folder, and then remove the unused ones?

crimson ice
#

i usually remove them and just run the game until it stops complaining

mental forum
#

well, Zandronum uses SDL1. if I remove the SDL1 libraries, running zandronum will make my device crash

crimson ice
mental forum
#

@crimson ice just removed all of them, except for the SDL1 ones. worked just fine

crimson ice
#

yeah ark don't need much

#

most are needed by jelos and amber

#

and uos

mental forum
#

that said, onto the controller issues. you mentioned about having custom controls per-device, or something similar?

crimson ice
#

So we might need to unbind all and only use gptokeyb if everythign else fails

mental forum
#

if we use gptokeyb, we will lose analog sensitivity

#

unless we map all buttons except for the analog stick

#

but what if we have a different config file, one per device? we could bind different button mappings for x55 or rg353 devices

crimson ice
#

or well

#

we implemented new settigns

mental forum
#

the nblood port is an example. all controls were mapped with gptk because the port doesn't have joystick support yet

crimson ice
#
# New deadzone code, this will overwrite the above deadzone code behaviour
# Choices of: axial, radial, scaled_radial, sloped_axial, sloped_scaled_axial, hybrid
deadzone_mode = scaled_radial
deadzone = 2000
deadzone_scale = 8
deadzone_delay = 16 ## An alias for mouse delay```
#

there is new code for scaling

#

so it might be set up much more granular now

mental forum
#

oh, interesting.

crimson ice
#

I mean we can play around with it

mental forum
#

but Zandronum already has full controller support with analog stick and all. I believe this would perform better than gptk

crimson ice
#

which at this moment is not the case

#

or they're found but wrongly mapped

#

"standard"

#

๐Ÿ˜›

#

We can see how zandronum detects the joystick maybe it can be helped with

#

or we could use gptokeyb and say please use xbox360 controller

#

and it will simulate a xboxcontroller

#

Options are plenty ^^

mental forum
#

oh, so gptokeyb doesn't implement solely joy2key? it supports "joy2joy" as well?

#

I remember something similar for Retropie in my Raspberry Pi 2: xboxdrv

#

Maybe simulating xbox controllers might work well for multiple devices, because both gzdoom and zandronum have a good support for xbox360 controllers.

mental forum
#

agreed. let's try that approach, and then reconfigure controls accordingly.

crimson ice
#

#1165756188902838303 message

@hardy pawn I think this one needs gptokeyb controls and resolution patches via device_info.

Do you want to have a look at it?
Then it should be good to go

hardy pawn
high crane
#

rg351v (amberelec)

error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory```
#

okay -- fixed. copied a bunch of libs across from the abuse port (libGL.so.1, libGLU.so.1, libGLX.so.0, libGLdispatch.so.0, libX11.so.6, libxcb.so.1, libXau.so.6, libXdmcp.so.6, libbsd.so.0)

crimson ice
#

Sometimes the gl4es one wants way less libs

mental forum
#

Hey, libGL shouldn't be needed, since currently Zandronum works only in software mode.

#

Or at least it didn't work for me, when I tried it a couple of months ago.

high crane
#

i ran the game, and each time it failed to start, it identified a missing lib. i added each lib one-by-one until it ran. that's the list

mental forum
#

Ok. Are you running Zandronum currently in OpenGL, or Software mode?

high crane
mental forum
#

Okay, nevermind then. IIRC, the .sh file is already forcing the game to run in software (if not the .sh, then some predefined config file in the port). You might be already running it in software mode by default.

#

As for why the opengl lib files are missing, you're using AmberElec, right? Slayer and I are using ArkOS, and it worked fine for us. Maybe ArkOS already has these libraries included by default, while AmberElec hasn't.

high crane
crimson ice
#

That's why i asked if it was a gl4es libgl which might not need as many other libs ๐Ÿ™‚

mental forum
#

agreed with adding the other libraries

#

I also have the idea of grabbing the latest Zandronum code from their repo, instead of using a fork for openpandora devices that works for us but isn't updated. That should hopefully resolve the bugs I've been getting in my device, such as some missing sound effects, issues starting offline skirmish matches, etc.

#

That said, time is a little short for me these days, due to a lot of stuff at work. It's gonna take a while until I'm more free to work on that stuff.

hardy pawn
hardy pawn
#

Actually, I just looked at the latest zip and it seems everything including GPTOKEYB is set and running well. The only thing I did when I tested it was updated sdl12-compat from 59 to 68, but prolly not a big deal. Latest zip here looks clean DonkeyThumbsUp .

#

I'll leave it up to Solid One if we want to wait to use the newer source for Zandronum still.

fleet nova
#

@mental forum Status of this one?