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: 146
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
He's talking about the latest release made by fgsfds.

My latest commit done entirely breaks QuakeSpasmNX by throwing out a fatal error on a rendering error (it doesn't detect at all the screen). It's probably because of libnx, or simply because we probably missed porting something else.

I have to understand first how's done the porting of an SDL2 app to the Switch though.
 

-Pao

Active Member
Newcomer
Joined
Nov 16, 2018
Messages
25
Trophies
0
XP
462
Country
Italy
He's talking about the latest release made by fgsfds.
My latest commit done entirely breaks QuakeSpasmNX by throwing out a fatal error on a rendering error (it doesn't detect at all the screen).

Yeah I was trying to understand why it does that. I've basically 0 experience with Quake and SDL though so I was mostly exploring and reading docs. Do you guys have any clue what could cause something like that? (just curious, I'm not asking for an ETA or to fix it)
 

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
EXCELLENT, now I managed to fix the current revision of QuakeSpasmNX.

I'd believe online already works at the very moment, just that we aren't able to access/type the console yet to make it work, but it won't take so long...

EDIT : I'm talking of netQuake of course ; QuakeWorld is entirely another netcode, and that's not what Quakespasm gives to you ; in this case, FTEQW or ezQuake could be ported instead.
 
Last edited by Ch0wW,

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
And I confirm that it works.

However fgsfds , it looks like the IP address in the multiplayer tab is inverted (which isn't much a problem if you're not creating a local server). But it could be interesting to possibly fix it.
 

Attachments

  • upload_2019-3-24_15-31-16.png
    upload_2019-3-24_15-31-16.png
    509 KB · Views: 183
  • Like
Reactions: ShadowOne333

fgsfds

Well-Known Member
OP
Member
Joined
Aug 28, 2018
Messages
445
Trophies
0
Age
123
XP
3,343
Country
Russia
The address returned by the function that gets your local address is in the wrong byteorder. A ntohl() or htonl() on it would solve the issue.
 

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 didn't manage to fix it, so I just manually inverted the byte order in another place.

It also fixes the local server being unjoinable because of a wrong IP Address.

I'll make some menu modifications for the multiplayer, and I'll send a build here and a PR.
 
Last edited by Ch0wW,

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
Okay, so I give my personal build of QuakeSpasmNX with some enhancements :

BUILD:
- Was updated to libnx 2.0.0.
- Joy_enable is now a Read-Only CVAR (so that shenanigans won't be able to break it)

OPTIONS:
- A few binds were removed (controls for the PC).
- An option giving you the crosshair is added.
- When scaling, the crosshair also scales (didn't with the original version of QuakeSpasm)/
- Added an option to invert the joystick look.
- Resetting the commands is now possible, and scales you correctly.

CONSOLE:
- Can now be navigated properly (L/R : Moving up/down the console history, D-Pad for history)
- X button can now be used to input commands.

MULTIPLAYER:
- Removed the "Network selection" sub-menu. Was entirely useless.
- Fixed the IP address being wrongly given. Was causing other players to not properly connect.

KNOWN BUGS :
- When inputting commands, the keyboard is displayed TWICE. I don't know what causes it to happen.

I didn't manage to find a way to input text in the options menu however.
 

Attachments

  • quakespasmnx-beta020.zip
    3.2 MB · Views: 190
  • Like
Reactions: hippy dave

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
Extremely strange, because I can run it perfectly well on atmosphere 0.8.5...

Did you have a config before using the homebrew ?

Also, full ram support, or do you start it with the album ?

EDIT : I reset my CFG, no crash. So it *may* need Full RAM support.
 
Last edited by Ch0wW,

Purple_Shyguy

Well-Known Member
Member
Joined
Nov 8, 2008
Messages
2,350
Trophies
2
Age
33
Location
Republic of Ireland
XP
4,756
Country
Extremely strange, because I can run it perfectly well on atmosphere 0.8.5...

Did you have a config before using the homebrew ?
Also, full ram support, or do you start it with the album ?

Hard crash in applet. Soft crash in full ram.

Another guy made a fork of Quakespasm here too with Gyro controls and it crashed for everyone else except him too.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    SylverReZ @ SylverReZ: @K3Nv2, Lol K3N1.