GameComms was the multiplayer library of the Nokia N-Gage SDK. Most N-Gage multiplayer games use it to connect up to four devices over Bluetooth. This project replaces it so that these games can play over Wi-Fi and the Internet, without changes to the games.
The N-Gage talks Bluetooth to a bridge: an ESP32 board or a computer with Bluetooth (Linux, for example a Raspberry Pi; Windows with limitations). The bridge connects to a server, which matches players of the same game and forwards their data.
dll/- replacement GAMECOMMS.DLL for all 11 original variantsfirmware/- ESP32 bridge firmwarepcbridge/- PC bridge for Linux and Windows (gcbridge), same job as the ESP32server/- endpoint server (gamecommsd)protocol/- protocol library shared by all three partstests/- automated teststools/- variant identification and reverse engineering scriptslegacy/- the previous prototype, kept for reference
- docs/BUILD.md - build, flash, deploy, configure, test
- docs/DESIGN.md - architecture
- docs/PROTOCOL.md - wire protocol
- docs/COMPATIBILITY.md - variants, games, exports
- docs/REVERSE_ENGINEERING.md - analysis of the original DLLs
- Server: build and run
gamecommsdon a PC in your network (see docs/BUILD.md). - Bridge, one of:
- Linux computer with Bluetooth, for example a Raspberry Pi: build and
start
gcbridge. One computer can serve several N-Gages. - Windows PC:
gcbridge.exeworks the same way, but depends on the Bluetooth adapter and may not work (see docs/BUILD.md). - ESP32: flash it with
pio run -d firmware -t upload, connect to itsGameCommsBridge-SetupWi-Fi and enter your Wi-Fi settings. One ESP32 per N-Gage.
- Linux computer with Bluetooth, for example a Raspberry Pi: build and
start
- N-Gage: replace the game's
gamecomms.dllwith the matching build (see the list below), start a multiplayer game and select the bridge when asked.
Replace the game's gamecomms.dll with the build from the "Use" column
(build/dll/out/vN/gamecomms.dll). You can check the original with its
md5sum, or with python tools/gc_identify.py dll gamecomms.dll.
| Game | Use | md5sum of the original | Ordinals |
|---|---|---|---|
| Nokia N-Gage SDK 1.0 Beta | none (SDK only, same API as v1) | cb326c500bdb795494d55d30196b8711 | 33 |
| Marcel Desailly Pro Soccer | v1 | 79c25cdd1972c287712475ee544c7bf3 | 33 |
| MotoGP | v2 | 8863fdea897f1c63807ad69252a3566f | 55 |
| Pandemonium! | v2 | 8863fdea897f1c63807ad69252a3566f | 55 |
| Puyo Pop | v2 | 8863fdea897f1c63807ad69252a3566f | 55 |
| Puzzle Bobble VS | v2 | 8863fdea897f1c63807ad69252a3566f | 55 |
| Tomb Raider | v2 | 8863fdea897f1c63807ad69252a3566f | 55 |
| Tony Hawk's Pro Skater | v2 | 8863fdea897f1c63807ad69252a3566f | 55 |
| Asphalt Urban GT | v3 | f6fbc3c745ae0ecf584b3ef7ec4371ef | 56 |
| FIFA Football 2004 | v3 | f6fbc3c745ae0ecf584b3ef7ec4371ef | 56 |
| NCAA Football 2004 | v3 | f6fbc3c745ae0ecf584b3ef7ec4371ef | 56 |
| Rayman 3 | v3 | f6fbc3c745ae0ecf584b3ef7ec4371ef | 56 |
| Tom Clancy's Ghost Recon: Jungle Storm | v3 | f6fbc3c745ae0ecf584b3ef7ec4371ef | 56 |
| The Sims Bustin' Out | v4 | c2f184012cd0635f3065b7d5042702ce | 56 |
| Catan | v5 | e8d317204a763d71215680d567eb71e0 | 57 |
| Mile High Pinball | v5 | e8d317204a763d71215680d567eb71e0 | 57 |
| Pathway to Glory | v5 | e8d317204a763d71215680d567eb71e0 | 57 |
| Requiem of Hell | v5 | e8d317204a763d71215680d567eb71e0 | 57 |
| The King of Fighters Extreme | v5 | e8d317204a763d71215680d567eb71e0 | 57 |
| Tom Clancy's Splinter Cell: Chaos Theory | v5 | e8d317204a763d71215680d567eb71e0 | 57 |
| Call of Duty | v6 | bb02377c5361597f8d8503f5de584845 | 57 |
| FIFA Football 2005 | v6 | bb02377c5361597f8d8503f5de584845 | 57 |
| High Seize | v6 | bb02377c5361597f8d8503f5de584845 | 57 |
| Pathway to Glory: Ikusa Islands | v6 | bb02377c5361597f8d8503f5de584845 | 57 |
| SSX Out of Bounds | v6 | bb02377c5361597f8d8503f5de584845 | 57 |
| WWE Aftershock | v6 | bb02377c5361597f8d8503f5de584845 | 57 |
| Worms World Party | v6 | bb02377c5361597f8d8503f5de584845 | 57 |
| X-Men Legends | v6 | bb02377c5361597f8d8503f5de584845 | 57 |
| X-Men Legends II: Rise of Apocalypse | v6 | bb02377c5361597f8d8503f5de584845 | 57 |
| Xanadu Next | v6 | bb02377c5361597f8d8503f5de584845 | 57 |
| Snakes | v7 | f07f48ee44cca60046f40ce41858a160 | 57 |
| Ashen | v8 | d4c10fcebfb6da8da6b757aa8392b6d7 | 57 |
| Bomberman | v8 | d4c10fcebfb6da8da6b757aa8392b6d7 | 57 |
| Colin McRae Rally 2005 | v8 | d4c10fcebfb6da8da6b757aa8392b6d7 | 57 |
| Crash Nitro Kart | v8 | d4c10fcebfb6da8da6b757aa8392b6d7 | 57 |
| Operation Shadow | v8 | d4c10fcebfb6da8da6b757aa8392b6d7 | 57 |
| Tiger Woods PGA Tour 2004 | v9 | 6ac8b1a1e490b367a1d5e46bb720fe70 | 57 |
| Glimmerati | v10 | 827df54717bc210daa96aef9e12de4a3 | 63 |
| ONE | v10 | 827df54717bc210daa96aef9e12de4a3 | 63 |
| Rifts: Promise of Power | v10 | 827df54717bc210daa96aef9e12de4a3 | 63 |
| System Rush | v10 | 827df54717bc210daa96aef9e12de4a3 | 63 |
| The Roots: Gates of Chaos | v10 | 827df54717bc210daa96aef9e12de4a3 | 63 |
| Asphalt: Urban GT 2 | v11 | 75536306ef48b1928b4562890d01c9c6 | 63 |
| Habbo Islands | v11 | 75536306ef48b1928b4562890d01c9c6 | 63 |
| Warhammer 40,000: Glory in Death | v11 | 75536306ef48b1928b4562890d01c9c6 | 63 |
Always use the matching version. v1 and v2 to v11 have different APIs and cannot be mixed. Other combinations are not tested.
- Protocol, server, bridge and DLL logic: implemented and covered by automated tests.
- ESP32 firmware: implemented, built in CI.
- PC bridge: implemented and tested with simulated devices (Linux: against a simulated BlueZ). Linux still has to be tested with a real N-Gage. On Windows the first real test failed inside the Windows Bluetooth stack (see docs/BUILD.md, "Windows: known problem").
- Symbian DLLs: implemented. They need the Windows N-Gage toolchain to build and still have to be tested on real hardware.
MIT, see LICENSE.md. The files in dll/symbian/bt/ are
based on Nokia's Bluetooth example code. The original DLLs in
reference/ and the documents in sdk-docu/ belong to Nokia and are
only included for analysis.