-
Notifications
You must be signed in to change notification settings - Fork 0
XLive
See the Tron: Evolution Mod Documentation on XLive and the PCGamingWiki Games for Windows - LIVE entry for more information.
The game can also handle updates using GFWL via FuelUpdate.exe. For information about FUEL's achievements, see the Achievements entry. The SPAFILE entry contains information about FUEL's SPAFILE. A cool table of the state of all the GFWL games can be found in the "I compiled a full guide on GFWL" /r/GFWLive post by /u/crvyln. A complete list of XLive Exports (Ordinal <-> Symbol Name).
The title ID for FUEL on GFWL is 434d082f
and on Xbox 360 it is 434d080d
; since we are modding the PC game, we only care about the former.
A cool archive of GFWL data can be found at https://dbox.tools/.
The original GFWL installer can be downloaded from the PCGamingWiki Microsoft Games for Windows - LIVE software page. You can still sign in to and use the original GFWL by signing in via the Xbox app (Xbox App Microsoft Store page) before launching the game. Trying to sign in through the in-game HUD will not work if you are not already signed in via Xbox. The Games for Windows Marketplace program no longer allows you to log in and is functionally useless so you will need to acquire the game files from somewhere else.
If you want more information or resources about the original xlive.dll
, please don't hesitate to reach out. Also, I found an old project, GFWL Protect Disabler, which lets you run the original xlive.dll
but with a lot of the protections disabled. It can be used with Ultimate ASI Loader.
You can still access some game-related content outside of the game/marketplace using the Xbox website at the URL printf("https://account.xbox.com/en-us/GameInfoHub?titleid=%d", dwTitleId)
where dwTitleId
is 1129121839
(while the title ID is normally formated as an unprefixed hexadecimal number, 434d082f
, this URL expects it formated in decimal) for FUEL; https://account.xbox.com/en-us/GameInfoHub?titleid=1129121839. Despite being "NOT AVAILABLE SEPARATELY" there is still a store page for FUEL on the Xbox website which contains a neat bit of copy as the "sell text" (XSTRINGID_SELL_TEXT
) also present in the SPAFILE:
In an alternate present, vast swathes of America have become no-go areas as the devastating effects of global warming ravage the continent. Floods, storms, bush-fires, tornados and hurricanes have driven people from towns and cities into safe zones as extreme weather wreaks havoc, creating thousands of square miles of dangerous uninhabitable areas. People turn to renewable energy in the face of the destruction caused by global warming. But these danger zones become a playground for a new breed of racer. With a stockpile of fuel to be burned, adrenaline junkies head into the wilderness to compete against each other in spectacular races against themselves and the elements.
This page also claims "Playable on: Xbox One, Xbox Series X|S" and "Capabilities: Online multiplayer (2-16), Xbox Live".
This is a configuration file used by GFWL to retrieve information about the game. It is also referenced in FUEL.exe.cat and FUEL.exe.cdf.
US
<Liveconfig>
<titleid>434D082F</titleid>
<titleversion>10000084</titleversion>
<lankey>FEEFF00D01020304506071728a8da99d</lankey>
<enableCrossPlatformSystemLink>false</enableCrossPlatformSystemLink>
<OriginalXliveTarget>2.0.0673.0</OriginalXliveTarget>
</Liveconfig>
RU
<Liveconfig>
<titleid>434D082F</titleid>
<titleversion>10000085</titleversion>
<lankey>FEEFF00D01020304506071728a8da99d</lankey>
<enableCrossPlatformSystemLink>false</enableCrossPlatformSystemLink>
<OriginalXliveTarget>2.0.0687.0</OriginalXliveTarget>
</Liveconfig>
There are two differences between the regions (1) titleversion
is 10000084
in US and 10000085
in RU and (2) OriginalXliveTarget
is 2.0.0673.0
in US and 2.0.0687.0
in RU. It makes sense that these are higher in RU than US since the Russian release was later.
FUEL uses the following exported functions from xlive.dll
. The "XLiveLessNess Status" column represents the completeness of the XLiveLessNess implementation of the function. ✔️ means that an honest attempt was made to implement the function, not necessarily that the function works as intended. ❌ means that the function is a TODO
item, either entirely or in specific cases.
Ordinal | Identifier | XLiveLessNess Status | Priority |
---|---|---|---|
3 | XSocketCreate | ✔️ | |
4 | XSocketClose | ✔️ | |
5 | XSocketShutdown | ✔️ | |
6 | XSocketIOCTLSocket | ✔️ | |
7 | XSocketSetSockOpt | ✔️ | |
11 | XSocketBind | ✔️ | |
12 | XSocketConnect | ✔️ | |
13 | XSocketListen | ✔️ | |
18 | XSocketRecv | ✔️ | |
20 | XSocketRecvFrom | ✔️ | |
22 | XSocketSend | ✔️ | |
24 | XSocketSendTo | ✔️ (Does not implicitly bind unbound sockets) | |
26 | XSocketInet_Addr | ✔️ | |
37 | XSocketHTONL | ✔️ | |
38 | XSocketNTOHS | ✔️ | |
39 | XSocketNTOHL | ✔️ | |
40 | XSocketHTONS | ✔️ | |
51 | XNetStartup | ✔️ | |
52 | XNetCleanup | ✔️ | |
55 | XNetRegisterKey | ✔️ | |
56 | XNetUnregisterKey | ✔️ | |
57 | XNetXnAddrToInAddr | ✔️ | |
62 | XNetInAddrToString | ✔️ | |
63 | XNetUnregisterInAddr | ❌ (UnregisterSecureAddr ) |
High |
65 | XNetConnect | ❌ | High |
66 | XNetGetConnectStatus | ❌ | High |
651 | XNotifyGetNext | ✔️ | |
652 | XNotifyPositionUI | ✔️ | |
1082 | XGetOverlappedExtendedError | ✔️ | |
1083 | XGetOverlappedResult | ✔️ | |
5002 | XLiveRender | ✔️ | |
5003 | XLiveUninitialize | ✔️ | |
5008 | XHVCreateEngine | ✔️ | |
5022 | XLiveGetUpdateInformation | ✔️ | |
5024 | XLiveUpdateSystem | ❌ | Low |
5030 | XLivePreTranslateMessage | ✔️ | |
5031 | XLiveSetDebugLevel | ✔️ | |
5034 | XLiveProtectData | ✔️ | |
5035 | XLiveUnprotectData | ✔️ | |
5036 | XLiveCreateProtectedDataContext | ✔️ | |
5038 | XLiveCloseProtectedDataContext | ✔️ | |
5215 | XShowGuideUI | ✔️ | |
5251 | XCloseHandle | ✔️ | |
5252 | XShowGamerCardUI | ✔️ | |
5254 | XCancelOverlapped | ❌ | Medium |
5256 | XEnumerate | ✔️ | |
5260 | XShowSigninUI | ✔️ | |
5261 | XUserGetXUID | ✔️ | |
5262 | XUserGetSigninState | ✔️ | |
5263 | XUserGetName | ✔️ | |
5264 | XUserAreUsersFriends | ✔️ | |
5265 | XUserCheckPrivilege | ✔️ | |
5270 | XNotifyCreateListener | ✔️ | |
5276 | XUserSetProperty | ✔️ | |
5278 | XUserWriteAchievements | ❌ | Low |
5280 | XUserCreateAchievementEnumerator | ✔️ (Close to serving real achievement data) | |
5284 | XUserCreateStatsEnumeratorByRank | ✔️ | |
5286 | XUserCreateStatsEnumeratorByXuid | ✔️ | |
5291 | XUserResetStatsViewAllUsers | ✔️ | |
5292 | XUserSetContextEx | ✔️ | |
5293 | XUserSetPropertyEx | ✔️ | |
5297 | XLiveInitializeEx | ✔️ (pPii->wLivePortOverride not handled but we do not need it) |
|
5300 | XSessionCreate | ✔️ | |
5310 | XOnlineStartup | ✔️ | |
5311 | XOnlineCleanup | ✔️ | |
5312 | XFriendsCreateEnumerator | ✔️ | |
5314 | XUserMuteListQuery | ✔️ | |
5315 | XInviteGetAcceptedInfo | ✔️ | |
5316 | XInviteSend | ❌ | Low |
5317 | XSessionWriteStats | ❌ | Low |
5318 | XSessionStart | ✔️ | |
5321 | XSessionSearch | ✔️ (search criteria not handled but we do not need it) | |
5326 | XSessionJoinRemote | ✔️ (always says "Not enough slots" but this is likely due to a problem somewhere else) | |
5327 | XSessionJoinLocal | ✔️ (always says "Not enough slots" but this is likely due to a problem somewhere else) | |
5329 | XSessionFlushStats | ❌ | Low |
5330 | XSessionDelete | ❌ | Medium |
5331 | XUserReadProfileSettings | ✔️ | |
5332 | XSessionEnd | ❌ | Medium |
5336 | XSessionLeaveRemote | ❌ | Medium |
Originally a DLL replacement for GTA IV, XLiveLess has grown to become a staple in the Games For Windows Live space. Most GFWL games have a modification of this to patch out the GFWL requirement due to the service being awful, and FUEL is no exception (PCGamingWiki Fuel GFWL Fix (XliveLess)). Both the original XLiveLess and the one for FUEL do the bare minimum to stub out the xlive.dll exports meaning that basically none of the original GFWL functionality will work. However, there are projects which aim to maintain online functionality in addition to the expected XLiveLess features.
It is a replacement for Games For Windows / Games For Windows Live (GFWL). That is (for clarity), you cannot use XLiveLessNess and GFWL at the same time. Xliveless is a different project and is not the same thing as XLiveLessNess. Xliveless does not restore any online functionality and has limited support for attempting to replicate GFWL functionality which leads to issues or crashes in the games themselves. XLLN tries to replicate GFWL functionality such that the game itself does not know it is not actually running on the real GFWL. - What is XLiveLessNess / XLLN?
It is possible to play FUEL multiplayer with another person using XLiveLessNess. Lobby search works and direct IP connect allows you to mimic invitations.
A FUEL module in the XLLN-Modules repository fixes a crash and adds quality-of-life improvements. The module fixes a crash when xlive_xhv_engine_enabled
is disabled and contains some quality-of-life improvements such as allowing you to launch the game without the SecuROM launcher and allowing multiple instances of the game to run at once. Right now, it also patches over some achievements and leaderboard code in the game to prevent a crash, but I am working to implement those properly.
XLiveLessNess is the most complete project in the "replace xlive.dll" market and I am working to improve it in areas that benefit FUEL.
Far more incomplete than XLiveLessNess and specific to Age of Empires Online.
For FMTK Users and Mod Developers
For FMTK Developers
Asobo BigFile Format Specification
Asobo Classes
Animation_Z
Binary_Z
Bitmap_Z
Camera_Z
CollisionVol_Z
Fonts_Z
GameObj_Z
GenWorld_Z
GwRoad_Z
Keyframer*_Z
Light_Z
LightData_Z
Lod_Z
LodData_Z
Material_Z
MaterialAnim_Z
MaterialObj_Z
Mesh_Z
MeshData_Z
Node_Z
Omni_Z
Particles_Z
ParticlesData_Z
RotShape_Z
RotShapeData_Z
Rtc_Z
Skel_Z
Skin_Z
Sound_Z
Spline_Z
SplineGraph_Z
Surface_Z
SurfaceDatas_Z
UserDefine_Z
Warp_Z
World_Z
WorldRef_Z
Asobo File Format Idioms
Asobo CRC32
Asobo LZ Compression
Asobo Arithmetic Coding Compression
Asobo Save Game File Format Specification
Asobo Audio Formats
TotemTech/ToonTech/Zouna/ACE/BSSTech/Opal Timeline
Zouna Modding Resources
Miscellaneous