Quake 1 port for Apple Watch
18.11.2022
Watch_Quake is a Quake 1 port specifically designed for Apple Watch, incorporating software rendering and functional audio playback capabilities. This game port supports both the shareware and registered versions of Quake. Providing a gaming experience that can be enjoyed while on the move complete with optional music tracks.
https://www.youtube.com/watch?v=ptKAh8RgzJM Benchmark (Series 5)
https://www.youtube.com/watch?v=89TAt72eYt4 Gameplay (Series 5)
This port started from the original Quake Watch port by Tomas "MyOwnClone" Vymazal.
About
Changes by ByteOverlord
Features
Changelog
Game Size
Battery Usage
Benchmark
Known Issues
Building Requirements
Building the Watch_Quake
Adding music to Watch_Quake (Optional)
Credits
License
Our team became highly interested in MyOwnClone's quake_watch port and immediately recognized the immense potential that the Apple Watch had for gaming. Upon closer examination, we realized that a few adjustments were required in terms of controls and optimizing the game to run in fullscreen mode. Our vision was to create a port that not only captured the essence of the original 1996 Quake release but also provided a gaming experience akin to a polished commercial product. This initial idea sparked the beginning of the project, and ByteOverlord enthusiastically began refining the different elements of this game port, ensuring every aspect received meticulous attention.
The primary objective of this project was to demonstrate the remarkable capabilities of the Apple Watch, even when operating in software rendering mode. It served as a glimpse into the untapped potential that could be unlocked if we were granted access to the device's GPU. Just envision the possibilities that could be achieved with such resources at our disposal.
Later port:
Quake 2 for Apple Watch https://github.com/ByteOverlord/Watch_Quake2 03.09.2023
10.10.2023
08.10.2023
03.09.2023
04.07.2023
04.12.2022
27.11.2022
19.11.2022
Complete game with optional music takes ~ 99,4 MB on the watch.
PAK0.PAK is 18,7 MB
PAK1.PAK is 34,3 MB
Music Tracks are 39,3 MB (converted with Audacity (Mono, 22050 Hz, WAV, IMA ADPCM))
Usage listed as % the charge dropped during the test.
Model | Battery Health | 30 min | 60 min |
---|---|---|---|
S4 40mm | - | - | - |
S4 44mm | - | - | - |
S5 40mm | - | - | - |
S5 44mm | 95% | 11% | 28% |
SE (1st Gen) 40mm | - | - | - |
SE (1st Gen) 44mm | - | - | - |
S6 40mm | - | - | - |
S6 44mm | - | - | - |
S7 41mm | - | - | - |
S7 45mm | - | - | - |
SE (2nd Gen) 40mm | - | - | - |
SE (2nd Gen) 44mm | - | - | - |
S8 41mm | - | - | - |
S8 45mm | - | - | - |
Ultra | - | - | - |
S9 41mm | - | - | - |
S9 45mm | - | - | - |
Ultra 2 | - | - | - |
Results are only indicative.
Good | Moderate | Bad |
---|---|---|
≤ 5 ms | 6-12 ms | > 16 ms |
DEMO1 | Avg | Low | High |
---|---|---|---|
S4 40mm | 5.94 | 2.63 | 13.41 |
S4 44mm | 6.14 | 2.99 | 13.54 |
S5 40mm | 5.32 | 2.44 | 13.84 |
S5 44mm | 6.13 | 2.71 | 13.96 |
SE (1st Gen) 40mm | - | - | - |
SE (1st Gen) 44mm | - | - | - |
S6 40mm | - | - | - |
S6 44mm | - | - | - |
S7 41mm | - | - | - |
S7 45mm | - | - | - |
SE (2nd Gen) 40mm | - | - | - |
SE (2nd Gen) 44mm | 7.35 | 2.61 | 14.98 |
S8 41mm | - | - | - |
S8 45mm | - | - | - |
Ultra | - | - | - |
S9 41mm | - | - | - |
S9 45mm | - | - | - |
Ultra 2 | - | - | - |
DEMO2 | Avg | Low | High |
---|---|---|---|
S4 40mm | 5.50 | 1.95 | 14.79 |
S4 44mm | 5.85 | 2.59 | 13.79 |
S5 40mm | 5.19 | 2.12 | 13.43 |
S5 44mm | 5.94 | 2.51 | 15.36 |
SE (1st Gen) 40mm | - | - | - |
SE (1st Gen) 44mm | - | - | - |
S6 40mm | - | - | - |
S6 44mm | - | - | - |
S7 41mm | - | - | - |
S7 45mm | - | - | - |
SE (2nd Gen) 40mm | - | - | - |
SE (2nd Gen) 44mm | 6.77 | 2.12 | 15.20 |
S8 41mm | - | - | - |
S8 45mm | - | - | - |
Ultra | - | - | - |
S9 41mm | - | - | - |
S9 45mm | - | - | - |
Ultra 2 | - | - | - |
DEMO3 | Avg | Low | High |
---|---|---|---|
S4 40mm | 6.21 | 1.99 | 14.21 |
S4 44mm | 6.45 | 2.43 | 15.70 |
S5 40mm | 5.38 | 2.07 | 13.75 |
S5 44mm | 6.41 | 2.78 | 14.01 |
SE (1st Gen) 40mm | - | - | - |
SE (1st Gen) 44mm | - | - | - |
S6 40mm | - | - | - |
S6 44mm | - | - | - |
S7 41mm | - | - | - |
S7 45mm | - | - | - |
SE (2nd Gen) 40mm | - | - | - |
SE (2nd Gen) 44mm | 7.47 | 2.06 | 14.59 |
S8 41mm | - | - | - |
S8 45mm | - | - | - |
Ultra | - | - | - |
S9 41mm | - | - | - |
S9 45mm | - | - | - |
Ultra 2 | - | - | - |
Benchmarks are only indicative.
Get Quake through gog.com (if you just want to use the shareware jump to step “8. Copy PAK...” and only use the shareware’s PAK0.PAK)
Download the quake installer from your gog.com profile:
"gog.com Profile" -> Games -> Quake -> View Downloads -> Download Offline Backup Game Installers -> Quake
Install Homebrew from terminal:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/homebrew/go/install)"
Install innoextract from Homebrew:
brew update
brew install innoextract
innoextract “downloaded setup_quake_the_offering_2.0.0.6.exe file location”
(innoextract will extract an “app” and "tmp" folders in current working directory.) "app" folder has the needed PAK files and optional audio.
Copy PAK0.PAK and PAK1.PAK files to WatchQuake project (PAK names have to be uppercase (case sensitive)):
/WatchQuake Watch App/Resources/id1/
Open the GitHub WatchQuake Xcode project.
In WatchQuake project file go to:
WatchQuake -> Targets -> WatchQuake -> Signing & Capabilities
Select your "Team" and write a unique “Bundle Identifier”.
Then in WatchQuake project file go to:
WatchQuake -> Targets -> WatchQuake Watch App -> Signing & Capabilities
Select your "Team" and use the same “Bundle Identifier” as previously but with “.watchkitapp” added at the end.
After building, the game will start and playback demo1.
Click the game view to go to main menu.
After testing connect iPhone to the Mac with a cable and make sure Apple Watch has a connection to iPhone.
Set the iPhone and Apple Watch in to "Developer" mode.
On iPhone:
Settings -> Privacy & Security -> Developer Mode (SECURITY) -> Developer Mode
On Apple Watch:
Settings -> Privacy & Security -> Developer Mode (SECURITY) -> Developer Mode
After the devices have restarted.
Transfer times:
1 min (iPhone X & S4 40mm)
5-20 min (iPhone X & S5 44mm)
1 min (iPhone 12 mini & S5 40mm)
1 min (iPhone 12 mini & SE 2nd Gen 44mm)
Install bchunk from terminal:
brew install bchunk
Extract game music from the gog game files:
bchunk -w “game.gog file location” “game.cue file location” track
(Music tracks will extract in to current working directory (track02 - track11.wav).)
Open Audacity and drag the tracks to it. Edit the tracks to Mono.
Select -> All
Tracks -> Mix -> Mix Stereo Down to Mono
Place the exported audio files (track02 - track11.wav) inside the WatchQuake project:
“WatchQuake Watch App/Resources/id1/music/”
From Xcode build the Watch_Quake to the watch.
Transfer times:
1 min (iPhone X & S4 40mm)
5-20 min (iPhone X & S5 44mm)
1 min (iPhone 12 mini & S5 40mm)
1 min (iPhone 12 mini & SE 2nd Gen 44mm)
quake_watch https://github.com/MyOwnClone/quake_watch
vkquake (Underwater sound filter, snd_dma init) https://github.com/Novum/vkQuake
Quakespasm (Position and animation interpolation) https://github.com/sezero/quakespasm
Quake_For_OSX https://github.com/Izhido/Quake_For_OSX
Quake-iOS https://github.com/tomkidd/Quake-iOS
Quake source code by Id Software. https://github.com/id-Software/Quake
App icon, images, documentation and videos by IdeaVoid
This software is released under the terms of the GNU General Public License v2.