PSCode

From Vita Developer wiki
Revision as of 19:16, 9 March 2018 by CelesteBlue (talk | contribs)
Jump to navigation Jump to search


The PSCode is a 8 bytes code that contains console specific information like Region or Model Type. It is derived from the ConsoleId. Knowing PSCode we are able to deduce the 9 first Bytes of ConsoleId.

What information this stores is almost completely known (see ConsoleId#Structure). For global info (not PSVita dependant), see [PSConsoleId-wiki].

Structure

                            Chassis Revision
                             ⇓  ⇓                      
00000000  00 01 01 05 00 10 00 03
                 ⇑ ⇑   ⇑ ⇑
           Target ID   SKU Model
(Internal: Product Code) (Internal: Product Sub Code)

1st and 2nd bytes is the PSCode magic

3th and 4th bytes represent the Target ID TODO:list PSVita target id

5th and 6th bytes represent the Vita SKU Model

7th and 8th bytes represent the Chassis Revision

Where is it used ?

It is get in userland by _vshSblAimgrGetPscode, _vshSblAimgrGetPscode2, and used by sceRegMgrSrvCnvRegionPsCode.

It is get in kernel by sceSblAimgrGetPscodeForDriver, sceSblAimgrGetPscode2ForDriver, and used by sceRegMgrSrvCnvRegionPsCodeForDriver.

It is used by non-secure kernel and userland to determine the model of the device: - IsCEX, IsDEX, IsTool, IsTest - IsVita, IsDolce, IsGenuineVita, IsGenuineDolce

but also in userland to detect the region by the TargetId that it embeds.