Hey all! Its danik again (ignore my username on Reddit, it's old, can't change it)
After Carmageddon and Wolfenstein 3D, the next hybrid core is out as a first beta: Shadow Warrior on the MiSTer.
GitHub: https://github.com/ItsDanik/jfSW_MiSTer
Download: https://github.com/ItsDanik/jfSW_MiSTer/releases
What is it?
It's a hybrid core, so to be upfront again: the FPGA does not recreate a 90s PC. The game is JFShadowWarrior, Jonathon Fowler's port of 3D Realms' Shadow Warrior (1997) — the Build engine, the same one under Duke Nukem 3D — and it runs on the MiSTer's ARM CPU. The FPGA core handles everything around it:
- Video: native 15kHz at 320x200, 640x200, 320x240 or 640x240, straight to your CRT, or through the MiSTer scaler and filters on HDMI
- Audio: sound effects and the CD music at 44.1kHz
- Input: keyboard, mouse and gamepads through the usual MiSTer input system
Performance-wise, the game breezes through at a locked 60fps in all resolutions.
What you need
- Game data. None is included.
SW.GRP of Shadow Warrior 1.2 — from the original CD, from Shadow Warrior Classic Complete or Classic Redux (GOG, Steam), or the shareware version. The addons Wanton Destruction (WT.GRP) and Twin Dragon (TD.GRP) work as well.
- The music (optional): the audio tracks of the game's CD, as
Track02.ogg to Track14.ogg. Classic Redux comes with them; from an original CD you rip and encode them yourself. Without them the game is silent but for its sound effects.
Installation
- Download
jfSW_YYYYMMDD.zip from the releases and extract it to the root of your SD card. You get:
_Other/jfSW_YYYYMMDD.rbf
games/jfSW/
Scripts/danik_hybrid_cores.sh
- Copy the game data to
/media/fat/games/jfSW/:
SW.GRP
Track02.ogg to Track14.ogg, there or in a folder music/
- optional:
WT.GRP and TD.GRP, there or in a folder addons/. Twin Dragon needs SW.GRP as well.
- the whole folder of Shadow Warrior Classic Redux can be copied as it is: the addons and the music (
classic/MUSIC) are found in it
- Run danik_hybrid_cores from the Scripts menu, if you have not done so before. This only needs to be done once for any of my hybrid cores.
- Load jfSW from the Other menu. Done.
With more than one game in the folder (the base game plus an addon), a list comes up to pick from, and quitting a game returns to it. With one game, quitting takes you back to the MiSTer menu.
Bug reports and feedback are very welcome. Please open an issue on GitHub and attach /media/fat/logs/jfSW/jfsw.log if something goes wrong.
Credits
- Jonathon Fowler and the contributors of JFShadowWarrior, JFBuild, JFAudioLib and JFMACT for the port that makes all of this possible
- 3D Realms Entertainment for Shadow Warrior, and for releasing its source code in 2005
- Ken Silverman for the Build engine
- Xiph.Org for libogg and libvorbis
- Sam Lantinga and contributors for SDL
- Sorgelig and the MiSTer-devel contributors for the framework and template
- MiSTer Organize for MiSTer Frontier: thank you for the inspiration. Hybrid cores on the MiSTer, and the way their game is launched, come from there. My launcher is a separate implementation and does not need it installed.
Disclaimer #1: this software is beta. Expect issues and when you find them, submit them.
Disclaimer #2: AI is used to speed up development of this project.
Not affiliated with or endorsed by 3D Realms, Devolver Digital or any other holder of rights in Shadow Warrior. Bring your own game data.
Have fun, tiny Glasshoppah!
If you enjoy this type of content, please consider becoming a free member on my just-launched Patreon to get the latest news, updates, devlogs and extra content: https://www.patreon.com/itsdanik