You are not logged in.

#1 2010-01-30 23:24:13

commodore256
Member
Registered: 2009-08-29
Posts: 24

Shadow Warrior linux native engine in "modern day" linux?

I've been fooling around with trying to get Shadow Warrior to run natively, but most of the search direct you to a forum that was posted 5 years ago and they all have a link that re-directs you to gtagaming.com and the development site says "IF YOU HAVE PROBLEMS:Tough luck".

http://icculus.org/shadowwarrior/

The source is dependent on a special version of a special compiler (open Watcom 1.3) I can't compile that.

Last edited by commodore256 (2010-01-30 23:24:32)

Offline

#2 2010-01-30 23:30:50

Gusar
Member
Registered: 2009-08-25
Posts: 3,607

Re: Shadow Warrior linux native engine in "modern day" linux?

Offline

#3 2010-01-31 00:43:49

commodore256
Member
Registered: 2009-08-29
Posts: 24

Re: Shadow Warrior linux native engine in "modern day" linux?

cd jfsw_src_20051009
make
Makefile:148: ../build/Makefile.shared: No such file or directory
make: *** No rule to make target `../build/Makefile.shared'.  Stop.

I've tried compiling it from yaourt too.

=> ERROR: Failure while downloading jfsw_src_20051009.patch
    Aborting...
Error: Makepkg was unable to build jfsw package.

I assume the patch was removed.

Offline

#4 2010-02-01 00:13:47

Gusar
Member
Registered: 2009-08-25
Posts: 3,607

Re: Shadow Warrior linux native engine in "modern day" linux?

You need the 'build' source too, not just the Shadow Warrior source. So download the 'build' source, extract it and rename the folder, so that you have this dir structure:

build
jfsw_src_20051009

You can get the patches in gentoo's bugzilla - http://bugs.gentoo.org/95141. You also need nasm installed to get it to compile. It works, but it won't grab the mouse, so you can only use the keyboard. Too bad.

I also found newer source here: http://www.proasm.com/, but it won't compile. Too bad there's not so much interest in Shadow Warrior than there is in Duke Nukem 3D. What they've done to that is just amazing. A sample: http://www.eduke32.com/images/shots/polymer.jpg http://img21.imageshack.us/img21/5826/dukepolymer8.jpg


Edit: Weeeeeeee, got mouse working. Open ~/.jfsw/sw.cfg and set ControllerType to 1.

Last edited by Gusar (2010-02-01 00:36:32)

Offline

#5 2010-02-03 02:37:00

commodore256
Member
Registered: 2009-08-29
Posts: 24

Re: Shadow Warrior linux native engine in "modern day" linux?

Ok, I did a yaourt -S nasm, now what? Do move the patch into my jfbuild_src_20051009 directory and

patch < jfbuild_src_20051009.patch -pl

Because that didn't do anything.

patch: **** strip count l is not a number

and I still can't build it.

I'm not good at this, I can't even apply a patch.

Last edited by commodore256 (2010-02-03 08:51:44)

Offline

#6 2010-02-25 22:23:05

commodore256
Member
Registered: 2009-08-29
Posts: 24

Re: Shadow Warrior linux native engine in "modern day" linux?

Ok, here's how I got it working

I downloaded the tarball, extracted it and got the patches. Edited the PKGBUILD and added

arch=('i686')

in a new line before pkgname=jfsw, moved the the patches to the "jfsw" folder, opened the jfsw folder in terminal and did

makepkg PKGBUILD

and the thing compiled! Then I did

sudo pacman -U jfsw*-i686.pkg.tar.gz

and now it's installed.

But wait, you're not done yet.

You have to pay attention to what the terminal said:

>>> Change to the directory where the game data is located, then
>>>  do 'install -m644 SW.GRP /usr/share/jfsw/sw.grp'
>>> and 'install -m644 SW.RTS /usr/share/jfsw/sw.rts'
>>> to copy the files and set proper permissions.

and you're still not done!!

You have to mess with the sw.cfg because the mouse doesn't work on default and ambiance messes up the game. Here's mine:

[Sound Setup]
FXVolume = 208
MusicVolume = 208
SoundToggle = 1 
VoiceToggle = 1 
AmbienceToggle = 0
MusicToggle = 1 
FXDevice = 0 
NumVoices = 32 
NumBits = 16 
NumChannels = 2 
MixRate = 48000 
MusicDevice = 0 
ReverseStereo = 0

[Controls]
MouseSensitivity = 19656
ControllerType = 1
MouseAiming = 0
MouseButton0 = "Fire"
MouseButtonClicked0 = ""
MouseButton1 = "Open"
MouseButtonClicked1 = ""
MouseButton2 = ""
MouseButtonClicked2 = ""
MouseButton3 = ""
MouseButtonClicked3 = ""
MouseButton4 = ""
MouseButton5 = ""
MouseAnalogAxes0 = "analog_turning"
MouseAnalogAxes1 = "analog_moving"
MouseAnalogScale0 = 65536
MouseAnalogScale1 = -65536
MouseDigitalAxes0_0 = ""
MouseDigitalAxes0_1 = ""
MouseDigitalAxes1_0 = ""
MouseDigitalAxes1_1 = ""
JoystickButton0 = "Fire"
JoystickButtonClicked0 = ""
JoystickButton1 = "Strafe"
JoystickButtonClicked1 = "Inventory"
JoystickButton2 = "Run"
JoystickButtonClicked2 = "Jump"
JoystickButton3 = "Open"
JoystickButtonClicked3 = "Crouch"
JoystickButton4 = "Aim_Down"
JoystickButtonClicked4 = ""
JoystickButton5 = ""
JoystickButtonClicked5 = ""
JoystickButton6 = "Aim_Up"
JoystickButtonClicked6 = ""
JoystickButton7 = ""
JoystickButtonClicked7 = ""
JoystickAnalogAxes0 = "analog_turning"
JoystickDigitalAxes0_0 = ""
JoystickDigitalAxes0_1 = ""
JoystickAnalogScale0 = 65536
JoystickAnalogDead0 = 1000
JoystickAnalogSaturate0 = 9500
JoystickAnalogAxes1 = "analog_moving"
JoystickDigitalAxes1_0 = ""
JoystickDigitalAxes1_1 = ""
JoystickAnalogScale1 = 65536
JoystickAnalogDead1 = 1000
JoystickAnalogSaturate1 = 9500
JoystickAnalogAxes2 = "analog_strafing"
JoystickDigitalAxes2_0 = ""
JoystickDigitalAxes2_1 = ""
JoystickAnalogScale2 = 65536
JoystickAnalogDead2 = 1000
JoystickAnalogSaturate2 = 9500
JoystickAnalogAxes3 = ""
JoystickDigitalAxes3_0 = "Run"
JoystickDigitalAxes3_1 = ""
JoystickAnalogScale3 = 65536
JoystickAnalogDead3 = 1000
JoystickAnalogSaturate3 = 9500
JoystickButton8 = ""
JoystickButtonClicked8 = ""
JoystickButton9 = ""
JoystickButtonClicked9 = ""
JoystickButton10 = ""
JoystickButtonClicked10 = ""
JoystickButton11 = ""
JoystickButtonClicked11 = ""
JoystickButton12 = ""
JoystickButtonClicked12 = ""
JoystickButton13 = ""
JoystickButtonClicked13 = ""
JoystickButton14 = ""
JoystickButtonClicked14 = ""
JoystickButton15 = ""
JoystickButtonClicked15 = ""
JoystickButton16 = ""
JoystickButtonClicked16 = ""
JoystickButton17 = ""
JoystickButtonClicked17 = ""
JoystickButton18 = ""
JoystickButtonClicked18 = ""
JoystickButton19 = ""
JoystickButtonClicked19 = ""
JoystickButton20 = ""
JoystickButtonClicked20 = ""
JoystickButton21 = ""
JoystickButtonClicked21 = ""
JoystickButton22 = ""
JoystickButtonClicked22 = ""
JoystickButton23 = ""
JoystickButtonClicked23 = ""
JoystickButton24 = ""
JoystickButtonClicked24 = ""
JoystickButton25 = ""
JoystickButtonClicked25 = ""
JoystickButton26 = ""
JoystickButtonClicked26 = ""
JoystickButton27 = ""
JoystickButtonClicked27 = ""
JoystickButton28 = ""
JoystickButtonClicked28 = ""
JoystickButton29 = ""
JoystickButtonClicked29 = ""
JoystickButton30 = ""
JoystickButtonClicked30 = ""
JoystickButton31 = ""
JoystickButtonClicked31 = ""
JoystickAnalogAxes4 = ""
JoystickDigitalAxes4_0 = ""
JoystickDigitalAxes4_1 = ""
JoystickAnalogScale4 = 65536
JoystickAnalogDead4 = 1000
JoystickAnalogSaturate4 = 9500
JoystickAnalogAxes5 = ""
JoystickDigitalAxes5_0 = ""
JoystickDigitalAxes5_1 = ""
JoystickAnalogScale5 = 65536
JoystickAnalogDead5 = 1000
JoystickAnalogSaturate5 = 9500

[KeyDefinitions]
Move_Forward = "W" "Unknwn"
Move_Backward = "S" "Unknwn"
Turn_Left = "Unknwn" "Unknwn"
Turn_Right = "Unknwn" "Unknwn"
Strafe = "LAlt" "Unknwn"
Fire = "Unknwn" "Unknwn"
Open = "E" "Unknwn"
Run = "LShift" "Unknwn"
AutoRun = "CapLck" "Unknwn"
Jump = "Space" "Unknwn"
Crouch = "LCtrl" "Unknwn"
Look_Up = "PgUp" "Unknwn"
Look_Down = "PgDn" "Unknwn"
Strafe_Left = "A" "Unknwn"
Strafe_Right = "D" "Unknwn"
Aim_Up = "Home" "Unknwn"
Aim_Down = "End" "Unknwn"
Weapon_1 = "1" "Unknwn"
Weapon_2 = "2" "Unknwn"
Weapon_3 = "3" "Unknwn"
Weapon_4 = "4" "Unknwn"
Weapon_5 = "5" "Unknwn"
Weapon_6 = "6" "Unknwn"
Weapon_7 = "7" "Unknwn"
Weapon_8 = "8" "Unknwn"
Weapon_9 = "9" "Unknwn"
Weapon_10 = "0" "Unknwn"
Inventory = "Enter" "Unknwn"
Inventory_Left = "[" "Unknwn"
Inventory_Right = "]" "Unknwn"
Med_Kit = "M" "Unknwn"
Smoke_Bomb = "P" "Unknwn"
Night_Vision = "N" "Unknwn"
Gas_Bomb = "G" "Unknwn"
Flash_Bomb = "F" "Unknwn"
Caltrops = "C" "Unknwn"
TurnAround = "BakSpc" "Unknwn"
SendMessage = "T" "Unknwn"
Map = "Tab" "Unknwn"
Shrink_Screen = "-" "Unknwn"
Enlarge_Screen = "=" "Unknwn"
Center_View = "Kpad5" "Unknwn"
Holster_Weapon = "ScrLck" "Unknwn"
Map_Follow_Mode = "F" "Unknwn"
See_Co_Op_View = "K" "Unknwn"
Mouse_Aiming = "U" "Unknwn"
Toggle_Crosshair = "I" "Unknwn"
Next_Weapon = "'" "Unknwn"
Previous_Weapon = ";" "Unknwn"
Show_Console = "NumLck" "Unknwn"

[Options]
BorderNum = 1
Brightness = 2
BorderTile = 0
Bobbing = 1
Tilting = 0
Shadows = 1
AutoRun = 1
Crosshair = 1
AutoAim = 0
Messages = 1
Talking = 1
Ambient = 0
FxOn = 1
MusicOn = 1
NetGameType = 0
NetLevel = 0
NetMonsters = 0
NetHurtTeammate = 0
NetSpawnMarkers = 1
NetTeamPlay = 0
NetKillLimit = 0
NetTimeLimit = 0
NetColor = 0
Voxels = 1
MouseAimingOn = 1
MouseInvert = 0
Stats = 1
Rooster = ""
Kiwi = 0
PlayCD = 0
CDDevice = -1
Chickens = 15

[Screen Setup]
ScreenWidth = 1152
ScreenHeight = 864
ScreenMode = 0
ScreenBPP = 32
GLTextureMode = 3
GLAnisotropy = 1
GLUseTextureCompr = 1

Never turn ambiance!!!! (unless you want to mess up your game or you're good at coding and you fixed it)

Even after all that work, The game crashes on me every time I look at a surveillance screen. (this also happens in duke nukem 3d using eduke32) I got past this by blowing up the monitor with sticky bombs before I saw it and guessed where the car with the key was and kept on going back and forth until I found the key and I also walked backwards so I wouldn't have to look at the screen in other levels.

I just beat the free as in beer shareware version on "who wants some wang" and it's a good game, but really hard and one of the hardest games I've played. (It was harder than installing it 0_o)

Overall, it's hard, buggy, a pain in the butt to setup, but it's good.

The reason why I didn't use dosbox is because I have a slow machine and It's slow emulating a Pentium on a Pentium 4.

Useful Links:

Tarball (for arch):
http://aur.archlinux.org/packages/jfsw/jfsw.tar.gz

Patches:
http://bugs.gentoo.org/95141

Just download the jfbuild_src_20051009.patch and the jfsw_src_20051009.patch that's all the patches that you need.

Offline

#7 2010-02-26 00:00:54

Gusar
Member
Registered: 2009-08-25
Posts: 3,607

Re: Shadow Warrior linux native engine in "modern day" linux?

Cool you got it working. Me, after seeing the limitations of jfsw - no ambiance (dude, ambiance is a great part of what makes duke3d and sw so good), no CD music, the High Resolution Pack makes it crash... I went with the Windows version of SWP in wine. It works great, no crashes, ambiance, CD music. Well, the version that doesn't crash is the beta from the SWP forums here.

Offline

Board footer

Powered by FluxBB