If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

The Cutting Room Floor:Common Things/NVSI Explanation

From The Cutting Room Floor
Jump to navigation Jump to search

This is a sub-page of The Cutting Room Floor:Common Things.

NVIDIA Security Interface (NVSI) is an anti-piracy measure employed by a large portion of games ported to the Nvidia Shield series of systems by NVIDIA Lightspeed Studios.

When a game protected by NVSI is first booted on the NVIDIA Shield, it connects to Google's (or iQiyi's, in China) online services in order to validate that the logged in user is licensed to play the game; if they're not, the game refuses to load. Additionally, there's a second, more important license check that connects to a NVIDIA server. This server was shut down in 2021, making these versions of the game impossible to play under normal circumstances. However, as these license checks are easily circumvented, NVIDIA implemented an additional, much more devious layer of anti-piracy.

In each game, a function was stripped out of the code either partially or entirely. The game still boots, but the code ripped out was crucial to making the game playable. The missing code was then recompiled natively for the Tegra's dedicated security hardware, TSec, and placed in an encrypted blob, called the snippet. During the license check, the snippet would have been sent to the server, which would decrypt it and send back the (also encrypted) files inside if the player is deemed legitimate. The part of the code that was stripped is replaced with some code that tells TSec run the snippet, and after validating that it is unmodified, TSec decrypts and runs the code, thereby restoring the missing functionality.

NVSI can be disabled, but unless the snippet function is properly patched, the missing functionality will not run and the game will be unplayable in a silly way, different in each game.

Of particular interest, five Wii games were released for Shield TV that run in an emulator called Lingcod:

In order to communicate with NVSI from within the emulator, the game calls a stub function named lingcod_callNVSISnippet(). Lingcod has a feature that lets it run its own native implementation of any given function in the game, and the one it provides for lingcod_callNVSISnippet() performs the corresponding call to NVSI.


(Source: Meatball132, Skawo)