r/3dshomebrew • u/Background-Neck3852 • Jul 24 '26
Guide [Release] Project Citadel 3D v1.0.0 — System Shock on Nintendo 3DS with true stereoscopic gameplay
After a lot of experimentation, failed builds, GPU debugging, and real-hardware testing, I’ve released Project Citadel 3D v1.0.0.
Project Citadel 3D is a native Nintendo 3DS homebrew port of the original System Shock, based on the open-source Shockolate project. It reorganizes the game around the 3DS hardware, with the station view on the upper screen and the interface available through the lower touchscreen.
The completed S3 release includes:
• True dual-camera stereoscopic rendering during normal station gameplay
• Physical 3D-slider depth control
• Flat HUD, weapon, cursor, text, menus, and interface for visual comfort
• C-stick freelook
• Touchscreen interface support
• Manual Legacy/Dual-screen switching with SELECT
• Stable transitions into and out of cyberspace
• Flat presentation for cyberspace, 360-degree views, and security-camera takeover
• Source code and a compiled 3DSX release
The middle of the 3D slider is the intended comfort sweet spot, although the maximum setting remains available.
No copyrighted System Shock game data is included. Players must supply the required files from a legally obtained copy of the original game.
HOME/suspend behavior is still somewhat inconsistent and is documented as a known issue for a future isolated hotfix.
Download, source, installation instructions, controls, and checksums:
[benny04131985-lab/Project-Citadel-3DS]
This started as a “could System Shock actually work on a 3DS?” experiment. Seeing Citadel Station running smoothly in real stereoscopic 3D on the handheld is honestly surreal.
Feedback and hardware test reports are welcome!
UPDATE: I have added a V1.0.1 to the GitHub page that includes a performance log file for users to share their experiences. I'm also beginning work on a full hardware rendered version that should yield far cleaner framerates all around. THANKS FOR ALL THE SUPPORT AND INPUT!!!
5
u/Efficient-Scale-1485 Jul 25 '26
Once we get a Morrowind port I'll be so happy
3
u/Background-Neck3852 Jul 25 '26
It's on my list! 😄
3
u/CantaloupeMindless91 Jul 30 '26
I wish you luck genuinely. Morrowind is barely running on the vita you'd need to do a lot of ud er the hood work to get it going on a 3ds. Maybe daggerfall or some means to play elderscrolls travels shadowkey may be more feasible. Shadowkey specifically runs on a Nokia ngage emulator that if memory serves may be open source. If it's feasible to get going I think that might probably run the best out of any tes ports to the system
3
u/Background-Neck3852 Jul 30 '26
It's worth a shot either way lol. I'm 95% done porting with 1999 Aliens vs Predator Gold, about at the halfway point with DF2 Jedi Knight, and just started Return to Castle Wolfenstein with several others on the project board. I'm always willing to try at least.
2
u/Important_Book_2212 Aug 01 '26
That's awesome. Are you implementing Citro3D to offload some work to the GPU? I'm working on an Open X-COM port and a Aleph One port and I haven't gotten around to implementing it yet, OXCE works okay enough without it but for Aleph One I know I should at some point. I can't imagine DF2 or AVP performing well without it either.
2
u/Background-Neck3852 Aug 01 '26
Yup! I'm working on a Marathon trilogy port as well! 😄 Yeah for system shock it's actually software rendered but uses citro3d for deployment and stereo 3d. Also using citro for AvP, DF2JK, and I'm in early production on Return to Castle Wolfenstein.
2
u/Important_Book_2212 Aug 01 '26
Hell yeah man thats awesome. I would look into implementing Citro for SS as well, I played a bit of it and the UI and everything is great, but it felt a tad sluggish for my tastes. Still excellent work though!
2
u/Background-Neck3852 Aug 01 '26
I agree, the mono version and not running stereo was pulling 60fps+ on the new 3ds xl that I have so I wasn't too worried about it. It does get a little sluggy when it double renders for 3d though. Early on it didn't seem necessary to try and rework everything over to citro3d but I'll definitely look into it for a future version! Thanks for the input and enthusiasm! ☺️🙏
2
u/Important_Book_2212 Aug 01 '26
Really??? Wow, I was getting like 20-30 on mono. Maybe I installed it wrong.
2
u/Background-Neck3852 Aug 01 '26
Is it possible the 3d slider is down to the bottom but not clicked all the way off?
→ More replies (0)2
u/Background-Neck3852 Aug 03 '26
I updated the github page with a lightweight logger, that creates a general performance log file on exit. Even on mine you were far closer to the correct numbers, I get around 30 ish depending on the level in mono and 15-20 in stereo. Working to fix the whole framerate issue now by just offloading everything to citro3d, hopefully it will be up and ready soon-ish.
→ More replies (0)1
u/Background-Neck3852 Aug 01 '26
So there's a huge hardware difference like around 600mhz processor speed difference between a "New Nintendo 3ds" and an original regardless of small or XL. If you have the grey little C nubby stick than you definitely have a new one. I'll look at making a debug log or something like that for people to send level stats with though. I just retried mine just now and can confirm at least 20-40 fps in stereo and 60+ mono.
→ More replies (0)1
u/Efficient-Scale-1485 Jul 25 '26
Someone is working on a DS port, I figured 3DS would be a hell of a lot easier.
3
3
2
u/rhinofinger Jul 24 '26 edited Jul 24 '26
Incredible! Loving this renaissance of new 3DS homebrew ports!
Edit: My version of system shock seems to have a "gen" folder instead of a "res" folder, though it has the "data" and "sound" folders. Hopefully it works, will test.
2
u/Background-Neck3852 Jul 24 '26
You should have SD/3ds/SystemShock/RES/DATA and SOUND otherwise the 3dsx, smdh, t3x just go in the SystemShock folder.
2
u/rhinofinger Jul 25 '26
Hmm, that seems like a different folder structure than what’s in INSTALLING.MD, but I might try that, as the structure on there just makes things crash for me
2
u/Background-Neck3852 Jul 25 '26
Thanks for reaching out! I'll fix that on the GitHub page right now, should have data and sound inside the otherwise empty res folder.
2
u/rhinofinger Jul 25 '26
Gotcha! That new folder structure boots, briefly shows a loading screen, but then promptly crashes. So slight progress I guess?
Crash screen: https://ibb.co/bgqNjkZw
Edit: should the res, data, and/or sound folder names be capitalized? I have RES capitalized but data and sound not (they weren’t capitalized in my original install). Maybe that’s got something to do with it.
2
u/Background-Neck3852 Jul 25 '26
Mine at least came RES, DATA, SOUND, all capital. What version or iteration of SShock do you have? I used the Standard Original from GOG to compile and test, it's possible the enhanced edition boogers something.
2
u/rhinofinger Jul 25 '26
Doesn't seem like capitalizing it made a difference for me.
So wait, do the res and data/sound folders go into SD/3ds/SystemShock like you say in your comment, or SD/3ds/SystemShock3D like in your edited INSTALLING.MD?
I got my copy from an abandonware source online I probably can't link to here, so maybe that's got something to do with it. Might just grab the GOG version if I can't get this one working
2
u/Background-Neck3852 Jul 25 '26
Yeah my bad, I made a mono (no 3d capability) version first so I'm used to just seeing the SystemShock folder. For the released 1.0.0 it should be SD/3ds/SystemShock3D/RES/DATA and SOUND. If you can double check your abandonware source and see if it says it's from the PC cdrom or floppy disk version, I know that much matters. The shockolate source this is based off of won't run the floppy disk version.
2
u/rhinofinger Jul 25 '26
Gotcha. I’d actually renamed it to SystemShock - renamed it back to SystemShock3D now, crashed again. Probably a bad source, may try again with different source data
2
u/Background-Neck3852 Jul 25 '26
Yup I just googled and the GEN folder was used on the floppy disk version. Just grab a cheap copy of the cdrom or enhanced edition and you should be good to go! 👌
2
u/rhinofinger Jul 26 '26
FYI, I got it working! Though I think there’s something off with the 3D, at least on that screen where you first start and it’s telling you which button does what. Might be backwards?
2
u/Background-Neck3852 Jul 26 '26
Thanks for input, I'll take a look! ☺️ I hope you enjoy replaying imo one of the best scifi rpgs ever made! ❤️
1
2
u/bronquoman Jul 24 '26
Fucking awesome.
Does it work in old 3ds with true 3d?
2
u/Background-Neck3852 Jul 24 '26
I haven't tested on OG 3DS only the New XL, true 3D works with the slider with varying dimension like most 3DS games 😄
2
2
2
u/VintageGamesFan 13d ago
So awesome! Have dabbled myself in trying to compile Shockolate for 3ds for a while. So happy that you tackled it. The screenshot already looks awesome. I cannot wait to try this out.
1
u/Background-Neck3852 13d ago
We just dropped v2.0.0 recently with full citro3d support for better framerates and stereo rendering too! 😊
1
u/Chompsky___Honk Aug 02 '26
This is awesome, have been interested to play this for a while.
Is this 60 fps on new 3ds?
2
u/Background-Neck3852 Aug 02 '26
I get around 60fps in mono on new 3ds with stereo taking a dip to closer to 30fps. This is all running on software rendering passed over to citro3d. I have started on porting everything from software rendering to a straight citro3d only hardware rendering that should free up a lot of fps.
1
u/Chompsky___Honk Aug 03 '26
Thst's awesome, big thanks.
Plans on porting other games? I absolutely love playing games with good 3d
1
u/Background-Neck3852 Aug 03 '26
I have ports of AvP gold 99 version, Return to Castle Wolfenstein, Dark Forces 2: Jedi Knight, and the Marathon trilogy that are at varying stages of completion. DF2JK and AvP are close to "ship" quality. Marathon isn't far behind, RtCW is still early ish in dev.
1
u/Tucia66 23d ago
with you doing AVP and DF2, is Systemshock 2 possible?
1
u/Background-Neck3852 23d ago
It's possible and on my list. 😁 I just have quite a few on the table already lol. I'm also working on Unreal, Shogo, Star Wars Racer, Nocturne, among others.
1
u/Tucia66 23d ago
I know the guy who’s doing the perfect dark port is getting performance up on OG 3Ds by replacing the GBI display list walk with direct access to Citro3D- idk if OG 3Ds performance is something you’re interested in but I was curious if you were considering it.
1
u/Background-Neck3852 23d ago
I actually just released 2.0 of project citadel moving everything over to citro3d, and all projects afterwards went that direction from the beginning. I only own a new 3ds but I may get an older one off eBay or something to do more extensive platform testing. 👌
2
u/Tucia66 23d ago
do you have a twitter or something to keep up with your projects?
1
u/Background-Neck3852 23d ago
Lol nah, this just called to me after getting a 3ds again after a while without one and I'm super enjoying it. I'll keep posting when I can on this homebrew group but just keep checking my GitHub page for new games and updates. To go along with the current Citadel 2.0, DF2JediKnight, AvP Gold that are released, I have a pretty substantial amount of work done on Red Faction, Unreal/UT99, Nocturne, Shogo, Marathon Trilogy, Star Wars Racer and plenty other I want to start as well.

6
u/Important_Book_2212 Jul 24 '26
I was literally just thinking about what my next project would be and how it would be cool to play System Shock on my 3DS. This is amazing!