QuakespasmNX - a better Quake port

I ported Quakespasm to the Switch. Why? Because it's better than NXQuake/TyrQuake and I'm too lazy to backport features from it into NXQuake.
Github repo: /fgsfdsfgs/QuakespasmNX
Latest version: 0.4.0 (Apr 20, 2021)
Download link: Github release page

2018091704404200-DB1426D1DFD034027CECDE9C2DD914B8.jpg


2018091704382700-DB1426D1DFD034027CECDE9C2DD914B8.jpg


2018091704124800-DB1426D1DFD034027CECDE9C2DD914B8.jpg

Some of the features of the port:
  • hardware-accelerated OpenGL-based rendering in 1280x720 and 1920x1080;
  • sound, including support for OGG and MP3 music tracks;
  • supports the Mission Packs and other mods compatible with Quakespasm (Quoth, Arcane Dimensions), with a simple mod selector menu;
  • analog controls and shit;
  • gyro aiming (thanks to falquinho for implementing this);
  • multiplayer support (I think);
  • most other features of Quakespasm, such as:
    • advanced renderer with cool stuff, such as colored lighting, fog, translucent water, high-res textures, model interpolation, etc;
    • scalable, optionally translucent HUD and menus;
    • music support, as mentioned earlier;
    • raised engine limits;
    • built-in controller support, which means I had to do basically nothing to make it work on the Switch.

To install it, just unzip quakespasmnx_v040.zip to the root of your SD card, then copy pak0.pak and (optionally, if you have the full version of Quake) pak1.pak from your Quake installation to /switch/quakespasm/id1/. You can then run the game using the Homebrew Launcher. You can get pak0.pak from the Shareware Quake data files in this archive.
If you want to play Mission Pack 1, copy hipnotic/pak0.pak to /switch/quakespasm/hipnotic/ from your installation.
If you want to play Mission Pack 2, copy rogue/pak0.pak to /switch/quakespasm/rogue/ from your installation.
For any other mod, just copy its folder to /switch/quakespasm/.

Some notes:
  • if it crashes and exits back to HBL/Horizon silently, check /switch/quakespasm/error.log to find out what caused it;
  • music should be copied into a music subfolder inside of the appropriate game folder, and the tracks should be named track02.ogg - track11.ogg (or .mp3 if you're using MP3s), e.g.:
    • Quake music goes into /switch/quakespasm/id1/music/;
    • Mission Pack 1 music goes into /switch/quakespasm/hipnotic/music/.
  • some more complex mods, like Arcane Dimensions, will only work if you run Quakespasm in regular app mode (not from the Album), as they require more memory;
  • to enable texture filtering, change gl_texturemode in config.cfg to GL_LINEAR_MIPMAP_LINEAR;
  • to enable round particles, change r_particles in config.cfg to 1, 2 for square particles;
  • you can adjust analog and gyro sensitivity in Options -> Joystick Options;
  • to get out of the "Completed" intermission screen at the end of a map, press "jump" (LTRIGGER by default) a few times;
  • to input text in text fields and console, press Y, to delete text press X, to scroll the console use L and R;
  • mod selector can be accessed from the Options menu;
  • multiplayer was only tested between Switch and PC, use the IP shown in the Multiplayer -> TCP/IP menu to connect to your Switch;
  • read the original Quakespasm readme for more information;
  • if you have any suggestions or bug reports, please post them here or in the Github issues.

Credits:
  • Quakespasm was made by:
    • Ozkan
    • Eric
    • Sander
    • Stevenaaus
    • based on FitzQuake by Fitzgibbons
    • and probably others;
  • falquinho and Ch0wW for their contributions and testing;
  • fincs, Armada651, Subv and probably others for their work on the OpenGL/mesa/libdrm stuff;
  • id Software for Quake.
 

Attachments

  • quakespasmnx_v040.zip
    3.2 MB · Views: 144
Last edited by fgsfds,

Ch0wW

Well-Known Member
Newcomer
Joined
Feb 2, 2019
Messages
79
Trophies
0
Age
31
Location
France
Website
www.youtube.com
XP
402
Country
France
Team Fortress is for QuakeWorld. This port is not a QW derivative.

Despite being open-sourced and very popular on the QuakeWorld community, the original Quake: Team Fortress was released for netQuake engines. So unless he's using the QW version of it, it should work.

By the way, huge congrats for the release !!

Also @cucholix I'm trying to work on this. It requires some changes that might take some time (and I'm quite... Busy doing something with idTech3 at the very moment)
 
  • Like
Reactions: cucholix

fgsfds

Well-Known Member
OP
Member
Joined
Aug 28, 2018
Messages
445
Trophies
0
Age
123
XP
3,337
Country
Russia
That's interesting. I was sure it was made after QuakeWorld came out and specifically for QW.
Though there's no real reason it shouldn't work in NetQuake either, I guess. Just beware of the netcode.
 

Ch0wW

Well-Known Member
Newcomer
Joined
Feb 2, 2019
Messages
79
Trophies
0
Age
31
Location
France
Website
www.youtube.com
XP
402
Country
France
That's interesting. I was sure it was made after QuakeWorld came out and specifically for QW.
Though there's no real reason it shouldn't work in NetQuake either, I guess. Just beware of the netcode.

Well, if you're not using the QuakeWorld's progs.dat file, you're fine. Otherwise, you're going to immediately crash because some interpreter code won't be found (and other things related to the netcode and other stuff)

EDIT: I'm quite surprised you didn't simplify the multiplayer menu's navigation (you know, choosing between the dead IPX and the more standard TCP/IP protocol)...
 
Last edited by Ch0wW,

xitpu

Active Member
Newcomer
Joined
Oct 14, 2008
Messages
34
Trophies
1
XP
341
Country
United States
Oh my God...
How hell it can run so well!!
I hope in a 'better Doom port' too and in all quake engine based games!
Thanks for your work
 

xitpu

Active Member
Newcomer
Joined
Oct 14, 2008
Messages
34
Trophies
1
XP
341
Country
United States
Lol I didn't see It was ported by fgsfds
Unfortunately gzdoom on my switch Is slower than quake and crash every time after few minutes
 

Purple_Shyguy

Well-Known Member
Member
Joined
Nov 8, 2008
Messages
2,348
Trophies
2
Age
33
Location
Republic of Ireland
XP
4,745
Country
Phenomenal work as usual. loading usermaps from the console with software keyboard! :)
And the gyro! Omg the gyro works so wonderfully. Im gonna play through the entire game again now with the gyro for a new experience!

One thing i noticed is that when the gyro is enabled the control to center the camera doesnt work anymore. Intentional or bug? Being able to center the camera is important to quickly reset your hand position with the camera back to neutral.
 
  • Like
Reactions: cucholix and Dutt

falquinho

Active Member
Newcomer
Joined
May 23, 2018
Messages
26
Trophies
0
Age
33
XP
343
Country
Brazil
Phenomenal work as usual. loading usermaps from the console with software keyboard! :)
And the gyro! Omg the gyro works so wonderfully. Im gonna play through the entire game again now with the gyro for a new experience!

One thing i noticed is that when the gyro is enabled the control to center the camera doesnt work anymore. Intentional or bug? Being able to center the camera is important to quickly reset your hand position with the camera back to neutral.
Yeah I could not make that work. IIRC it actually works, but requires no motion being made. It's kinda weird. I've tried to implement a "deadzone", but it does not feel right.
I'll try to find time and take a look in to it again, but i can't make any promises(too busy playing with reicast).
 

fgsfds

Well-Known Member
OP
Member
Joined
Aug 28, 2018
Messages
445
Trophies
0
Age
123
XP
3,337
Country
Russia
EDIT: I'm quite surprised you didn't simplify the multiplayer menu's navigation (you know, choosing between the dead IPX and the more standard TCP/IP protocol)...

Eh, it's just one button press. I forgot about it. Maybe in the next version.

Yeah I could not make that work. IIRC it actually works, but requires no motion being made. It's kinda weird. I've tried to implement a "deadzone", but it does not feel right.
I'll try to find time and take a look in to it again, but i can't make any promises(too busy playing with reicast).
I never even tried the centering control. Wonder if lookspring works.
 

Ch0wW

Well-Known Member
Newcomer
Joined
Feb 2, 2019
Messages
79
Trophies
0
Age
31
Location
France
Website
www.youtube.com
XP
402
Country
France
I've built an small updated build with some of the previous fixes and stuff that weren't put into nxQuakeSpasm0.2.0.

  • Resetting your configuration works perfectly (binds, crosshair on, scaling).
  • The multiplayer menu doesn't prompt for the IPX/TCPIP connection setup, and directly goes to Create/join.
  • Fixed the console accepting buttons while it shouldn't happen.
  • [because of nxQuake2] X button is for the inputs, not Y.
  • You can now toggle on/off the crosshair in the options (it replaces "invert mouse")
When I'll have a few moments free tomorrow, I'll add the "Quick sensitivity" function (similar to the build of nxQuake2 I made)

OH ALSO, I've spotted a bug.
+BUG : Going into 720p in handheld mode cut the screen vertically in half.

And... IS it normal that the gyro doesn't work on handheld ? (probably too on docked but unsure)
 

Attachments

  • qs020-1-ch0.7z
    2.4 MB · Views: 178

fgsfds

Well-Known Member
OP
Member
Joined
Aug 28, 2018
Messages
445
Trophies
0
Age
123
XP
3,337
Country
Russia
Gyro doesn't work when the right joycon is attached. Probably have to also add an additional handle (or two) here for TYPE_HANDHELD. You can detach the joycons in handheld mode and it'll work.
Can't confirm your screen offset issue. Willing to bet that you haven't updated your switch-sdl2 package, as the fix for that was added around the same date I published 0.2.0.

>Fixed the console accepting buttons while it shouldn't happen.
I don't really understand how what you did is any different from what I had before. There's also a chance that #if __SWITCH__ won't work because it's generally not defined to anything. Use #ifdef for that.
 
Last edited by fgsfds,

Ch0wW

Well-Known Member
Newcomer
Joined
Feb 2, 2019
Messages
79
Trophies
0
Age
31
Location
France
Website
www.youtube.com
XP
402
Country
France
Gyro doesn't work when the right joycon is attached. Probably have to also add an additional handle (or two) here for TYPE_HANDHELD. You can detach the joycons in handheld mode and it'll work.
Oh, so it's Pro-controller or detached only ? That's weird...

Can't confirm your screen offset issue. Willing to bet that you haven't updated your switch-sdl2 package, as the fix for that was added around the same date I published 0.2.0.
Indeed, mine wasn't. That's weird, I've made a clean install very recently on my fresh mac... Well, that's one problem fixed.

>Fixed the console accepting buttons while it shouldn't happen.
I don't really understand how what you did is any different from what I had before. There's also a chance that #if __SWITCH__ won't work because it's generally not defined to anything. Use #ifdef for that.

Nah, this is a mistake but it didn't do what I thought I really accomplished.
That's again a minor issue, but pressing A on the console with no text says "ABUTTON (or LTHUMB) is unbound"...

Anyway, I repost a quick-fixed build, fixing that 720p error and also fixing a quick string error when resetting the config.
 

Attachments

  • qs020-2-ch0.7z
    2.4 MB · Views: 117

fgsfds

Well-Known Member
OP
Member
Joined
Aug 28, 2018
Messages
445
Trophies
0
Age
123
XP
3,337
Country
Russia
That's the default message for when you press a bindable button that is unbound while in game. Thought it redirects console buttons completely when the console is open, but apparently not.
 

Ch0wW

Well-Known Member
Newcomer
Joined
Feb 2, 2019
Messages
79
Trophies
0
Age
31
Location
France
Website
www.youtube.com
XP
402
Country
France
I'm aware of that ; I had to fix a similar issue in nxQuake2. BUT a console-enabled key shouldn't act like if you're pressing a bind in the console. And that's what's happening there. Unbind A (or press L-Stick), go to the console, and the warning appears.

Similarly, the aiming joystick can be moved in the menu, even if it shouldn't be possible (but I'll make a fix for the original Quakespasm aswell, since it's related)
 

falquinho

Active Member
Newcomer
Joined
May 23, 2018
Messages
26
Trophies
0
Age
33
XP
343
Country
Brazil
Gyro does not work on portable because I dislike it. Sorry, I was coding this to myself, and since I only cared with docked ... But should be easy to add.
Originally I intended to create a menu option to set gyro aiming "Docked only" | "Handheld Only" | "Both". I'll see if I can do that. Sorry bout this again.
 
  • Like
Reactions: nabelo

Purple_Shyguy

Well-Known Member
Member
Joined
Nov 8, 2008
Messages
2,348
Trophies
2
Age
33
Location
Republic of Ireland
XP
4,745
Country
Gyro does not work on portable because I dislike it. Sorry, I was coding this to myself, and since I only cared with docked ... But should be easy to add.
Originally I intended to create a menu option to set gyro aiming "Docked only" | "Handheld Only" | "Both". I'll see if I can do that. Sorry bout this again.

Could you add it to NXQuake2? lol :bow:
 

Csmrcc

Well-Known Member
Member
Joined
Sep 13, 2018
Messages
412
Trophies
0
Age
37
XP
905
Country
Spain
Gyro does not work on portable because I dislike it. Sorry, I was coding this to myself, and since I only cared with docked ... But should be easy to add.
Originally I intended to create a menu option to set gyro aiming "Docked only" | "Handheld Only" | "Both". I'll see if I can do that. Sorry bout this again.
I would like that last option, as 85% of the time i play handledh mode,thank you falquinho
And quake 2 with gyro would be just.... Crazy :D
 

Vadographer

Active Member
Newcomer
Joined
Nov 3, 2018
Messages
35
Trophies
0
Age
26
XP
194
Country
United States
That's interesting. I was sure it was made after QuakeWorld came out and specifically for QW.
Though there's no real reason it shouldn't work in NetQuake either, I guess. Just beware of the netcode.
I actually did try both versions, the netQuake version worked perfectly. The QW version worked, but it had some weird things going on with it
 
  • Like
Reactions: nabelo

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    SylverReZ @ SylverReZ: @Psionic Roshambo, That is definitely exciting news. +1