Repository navigation
Releases: shaunsingh/pgr4-native
Release list
v0.2.1
PGR4 native renderer
Project Gotham Racing 4 (Title Update #2), recompiled for 64-bit Windows from the Xbox 360
executable, with a native Direct3D 12 renderer. It is tuned for the Steam Deck OLED, at 1280x800
and 90 fps with MSAA and motion blur on. It runs on Windows and, through Proton, on SteamOS and
Linux. It is built with the ReXGlue SDK and fixes from Xenia Canary, on the work of
safzanpirani/pgr4-native (github.com/safzanpirani/pgr4-native).
This package holds no game data. You need your own copy of the game.
What goes where
Put these beside pgr4_recompiled.exe:
game/ the disc's files: default.xex, Game/, UI/ and the rest
game/Content/ Title Update #2's package, and downloadable content if you have it
-
game/: the files extracted from your PGR4 disc (an ISO extractor such as XBOX360 ISO
Extract does this).game/default.xexmust exist. -
game/Content/: the packages as they come from Xbox Live or off a console, unchanged:
- Title Update #2 (version 0.0.2.1),
TU_16L61VP_0000004000000.00000000000G1. The game runs
only with this update, since the code was recompiled from it. Its SHA-256 is
9980cf82c3bbbb32b35c841532c832b5598e99ce50daba8c658645213ab3d9b8. - DLC, the files named by a 42-digit hex ID (Vehicle Pack 1 is
638152C719C45657B6640991BA6375D88A9D437D4D), if you have it.
The first start installs each new package into
userdata/. - Title Update #2 (version 0.0.2.1),
If you have the update's two files extracted instead of its package, put them in a folder named
title-update/ beside the executable. That folder takes precedence over the package. Their
SHA-256:
default.xexp 7e7c672b542dc20d20bed72e27603335701a6eb9f243d2a8a2468bb966ee9401
Pgr4TitleUpdate.bin f4bc47545df5fe8d0301bd4593d3b7b6e3871520f98e5f7249921973781a4b74
The first start creates userdata/ (your save and the shader caches) and logs/ beside the
executable. Keep userdata/ when you update to a new release.
Steam Deck
- In Desktop Mode, copy this folder (with game/ filled in) anywhere, for example
~/Games/PGR4. - Steam > Games > Add a Non-Steam Game to My Library > Browse, select
pgr4_recompiled.exe. - In the shortcut's Properties > Compatibility, force a Proton version (tested: GE-Proton 11-5).
- In Properties > General > Launch Options, enter
PROTON_USE_XALIA=0 DXVK_HDR=1 %command%.
Xalia, Proton's gamepad helper for desktop programs, otherwise takes about a tenth of a CPU
core during races.DXVK_HDR=1lets the game output HDR where the display takes it (the
OLED model, or an HDR TV, with HDR on in Steam's display settings). - Play it from Game Mode. The frame rate follows the display: 90 fps on the OLED, 60 on the
LCD model. Steam's frame limiter works too.
Windows
Run pgr4_recompiled.exe. It needs a GPU with Direct3D 12. Set window_width and
window_height in pgr4_recompiled.toml to your display's resolution. With HDR on in
Windows' display settings the game outputs HDR.
Settings
pgr4_recompiled.toml beside the executable holds the settings, one per line. A flag on the
command line overrides it: in Steam's launch options, %command% --fullscreen=false for one.
Upscaling
The release settings give the 3D scene 4x MSAA (pgr4_native_msaa: 1, 2 for the game's own, 4
or 8). More samples cost GPU time: on a Steam Deck OLED at 90 Hz in the St Petersburg race, with
16x anisotropic filtering, 4x averages 89.7 fps with 1% lows of 62.6 fps (GPU 86 % busy), and 8x
about 88 fps with 1% lows near 47 fps. With
pgr4_native_upscaler = true in pgr4_recompiled.toml, AMD's FidelityFX Super Resolution
antialiases the scene instead and upscales it to 1280x720. The scene renders at
pgr4_native_upscaler_width x pgr4_native_upscaler_height:
| Size | FSR's name for it |
|---|---|
| 1280x720 (default) | Native AA: antialiasing only |
| 853x480 | Quality |
| 752x423 | Balanced |
| 640x360 | Performance |
With pgr4_native_upscaler_keys = true, F7 switches between MSAA and the upscaler while you play,
and F8 shows the upscaler's debug view. The interface always stays at full resolution, and no sharpening is added.
On a Steam Deck OLED, MSAA is still the fastest at 90 fps. In a St Petersburg race, MSAA averaged
89.6 fps, FSR at 1280x720 84.0 and FSR at 853x480 86.9. The upscaler is there for its image, and
for FSR 4.
Out of the box this is FSR 3.1, from AMD's signed amd_fidelityfx_loader_dx12.dll and
amd_fidelityfx_upscaler_dx12.dll beside the executable. The game calls only AMD's FidelityFX
API, so the tools below can put a newer upscaler behind it. They are not part of this package,
and none of them is tested with PGR4 yet. To see which upscaler runs, start the game once with
%command% --log_level=info and look for PGR4 native upscaler: in logs/: it names the
upscaler's version (3.1.5 for the packaged FSR 3.1) and the render size.
FSR 4 on a Steam Deck (Proton)
AMD's FSR 4.1.2 has a Lite model for handheld GPUs. Under Proton it falls back to FSR 3 because
it asks the Windows driver for the GPU family, and Wine has no answer.
FSR4Injector's amdxc64.dll supplies the answer.
Its Decky plugin sets up only Steam games, so for this one do it by hand:
- Put two files beside
pgr4_recompiled.exe:amdxc64.dllfrom FSR4Injector's release (itsbin/, LGPL).- AMD's
amdxcffx64.dll, FidelityFX 2.4.0.4370 (FSR 4.1.2), from AMD's Adrenalin 26.10.1
driver package. FSR4Injector's plugin downloads it from AMD into the games it sets up.
- Set the launch options to
WINEDLLOVERRIDES=amdxc64=n,b FSR4I_FAMILY=150 FSR4I_REV=1 PROTON_USE_XALIA=0 DXVK_HDR=1 %command%.
The shim knows only the Legion Go 2's GPU by itself. Family 150 with revision 1 is the answer
for which AMD's library picks the Lite model (FSR4Injector'sshim/src/fsr4i.c), and the one
OptiScaler gives for Lite. AddFSR_WATERMARK=1to have AMD's library show the model it runs. - Set
pgr4_native_upscaler = true.
FSR4Injector lists the Steam Deck as untested.
OptiScaler
OptiScaler hooks the same FidelityFX calls and can
put FSR 4, XeSS or DLSS behind them.
- Steam Deck, with fgmod (Decky Framegen): set the launch options to
PROTON_USE_XALIA=0 DXVK_HDR=1 ~/fgmod/fgmod %command%. fgmod copies OptiScaler in as
dxgi.dlland replaces the package'samd_fidelityfx_upscaler_dx12.dllwith its own, keeping
the original asamd_fidelityfx_upscaler_dx12.dll.b. fgmod 0.7.9 brings OptiScaler 0.7.9 and
AMD's FSR 4.0.2 upscaler, neither of which has the Lite model. - Windows: put
OptiScaler.dll, renamed todxgi.dll, andOptiScaler.inibeside the
executable.
In OptiScaler.ini, Dx12Upscaler picks the upscaler (ffx for FSR 3.1 and 4, xess,
dlss). For FSR 4's Lite model, put AMD's amdxcffx64.dll 4.1.2 beside the executable and use
an OptiScaler that knows the Lite model (its current source does) with Fsr4GpuSupport=4.
OptiScaler then answers AMD's GPU query itself, without FSR4Injector's shim. Keep the render
size in pgr4_native_upscaler_width and _height: the game renders at that size whatever
OptiScaler's own ratio settings say. Insert opens OptiScaler's menu (ShortcutKey in
OptiScaler.ini changes the key).
Geometry Wars
The arcade cabinet in the garage starts gw_recompiled.exe, which must stay beside
pgr4_recompiled.exe. Its settings are in gw_recompiled.toml.
Licenses
LICENSE.txt is this project's license. LICENSES/ holds those of the ReXGlue SDK, Xenia,
PGR4-Recomp, MTR-PGR4 and the libraries built into the program, and the sources it was built
from (SOURCE.txt). Project Gotham Racing 4 and its content belong to their owners; these
licenses grant no rights to the game.
v0.2.0
PGR4 native renderer
Project Gotham Racing 4 (Title Update #2), recompiled for 64-bit Windows from the Xbox 360
executable, with a native Direct3D 12 renderer. It is tuned for the Steam Deck OLED, at 1280x800
and 90 fps with MSAA and motion blur on. It runs on Windows and, through Proton, on SteamOS and
Linux. It is built with the ReXGlue SDK and fixes from Xenia Canary, on the work of
safzanpirani/pgr4-native (github.com/safzanpirani/pgr4-native).
This package holds no game data. You need your own copy of the game.
What goes where
Put these beside pgr4_recompiled.exe:
game/ the disc's files: default.xex, Game/, UI/ and the rest
game/Content/ Title Update #2's package, and downloadable content if you have it
-
game/: the files extracted from your PGR4 disc (an ISO extractor such as XBOX360 ISO
Extract does this).game/default.xexmust exist. -
game/Content/: the packages as they come from Xbox Live or off a console, unchanged:
- Title Update #2 (version 0.0.2.1),
TU_16L61VP_0000004000000.00000000000G1. The game runs
only with this update, since the code was recompiled from it. Its SHA-256 is
9980cf82c3bbbb32b35c841532c832b5598e99ce50daba8c658645213ab3d9b8. - DLC, the files named by a 42-digit hex ID (Vehicle Pack 1 is
638152C719C45657B6640991BA6375D88A9D437D4D), if you have it.
The first start installs each new package into
userdata/. - Title Update #2 (version 0.0.2.1),
If you have the update's two files extracted instead of its package, put them in a folder named
title-update/ beside the executable. That folder takes precedence over the package. Their
SHA-256:
default.xexp 7e7c672b542dc20d20bed72e27603335701a6eb9f243d2a8a2468bb966ee9401
Pgr4TitleUpdate.bin f4bc47545df5fe8d0301bd4593d3b7b6e3871520f98e5f7249921973781a4b74
The first start creates userdata/ (your save and the shader caches) and logs/ beside the
executable. Keep userdata/ when you update to a new release.
Steam Deck
- In Desktop Mode, copy this folder (with game/ filled in) anywhere, for example
~/Games/PGR4. - Steam > Games > Add a Non-Steam Game to My Library > Browse, select
pgr4_recompiled.exe. - In the shortcut's Properties > Compatibility, force a Proton version (tested: GE-Proton 11-5).
- In Properties > General > Launch Options, enter
PROTON_USE_XALIA=0 DXVK_HDR=1 %command%.
Xalia, Proton's gamepad helper for desktop programs, otherwise takes about a tenth of a CPU
core during races.DXVK_HDR=1lets the game output HDR where the display takes it (the
OLED model, or an HDR TV, with HDR on in Steam's display settings). - Play it from Game Mode. The frame rate follows the display: 90 fps on the OLED, 60 on the
LCD model. Steam's frame limiter works too.
Windows
Run pgr4_recompiled.exe. It needs a GPU with Direct3D 12. Set window_width and
window_height in pgr4_recompiled.toml to your display's resolution. With HDR on in
Windows' display settings the game outputs HDR.
Settings
pgr4_recompiled.toml beside the executable holds the settings, one per line. A flag on the
command line overrides it: in Steam's launch options, %command% --fullscreen=false for one.
Upscaling
The 3D scene uses the game's own 2x MSAA by default. With pgr4_native_upscaler = true in
pgr4_recompiled.toml, AMD's FidelityFX Super Resolution antialiases the scene instead and
upscales it to 1280x720. The scene renders at pgr4_native_upscaler_width x
pgr4_native_upscaler_height:
| Size | FSR's name for it |
|---|---|
| 1280x720 (default) | Native AA: antialiasing only |
| 853x480 | Quality |
| 752x423 | Balanced |
| 640x360 | Performance |
F7 switches between MSAA and the upscaler while you play, and F8 shows the upscaler's debug view.
The interface always stays at full resolution, and no sharpening is added.
On a Steam Deck OLED, MSAA is still the fastest at 90 fps. In a St Petersburg race, MSAA averaged
89.6 fps, FSR at 1280x720 84.0 and FSR at 853x480 86.9. The upscaler is there for its image, and
for FSR 4.
Out of the box this is FSR 3.1, from AMD's signed amd_fidelityfx_loader_dx12.dll and
amd_fidelityfx_upscaler_dx12.dll beside the executable. The game calls only AMD's FidelityFX
API, so the tools below can put a newer upscaler behind it. They are not part of this package,
and none of them is tested with PGR4 yet. To see which upscaler runs, start the game once with
%command% --log_level=info and look for PGR4 native upscaler: in logs/: it names the
upscaler's version (3.1.5 for the packaged FSR 3.1) and the render size.
FSR 4 on a Steam Deck (Proton)
AMD's FSR 4.1.2 has a Lite model for handheld GPUs. Under Proton it falls back to FSR 3 because
it asks the Windows driver for the GPU family, and Wine has no answer.
FSR4Injector's amdxc64.dll supplies the answer.
Its Decky plugin sets up only Steam games, so for this one do it by hand:
- Put two files beside
pgr4_recompiled.exe:amdxc64.dllfrom FSR4Injector's release (itsbin/, LGPL).- AMD's
amdxcffx64.dll, FidelityFX 2.4.0.4370 (FSR 4.1.2), from AMD's Adrenalin 26.10.1
driver package. FSR4Injector's plugin downloads it from AMD into the games it sets up.
- Set the launch options to
WINEDLLOVERRIDES=amdxc64=n,b FSR4I_FAMILY=150 FSR4I_REV=1 PROTON_USE_XALIA=0 DXVK_HDR=1 %command%.
The shim knows only the Legion Go 2's GPU by itself. Family 150 with revision 1 is the answer
for which AMD's library picks the Lite model (FSR4Injector'sshim/src/fsr4i.c), and the one
OptiScaler gives for Lite. AddFSR_WATERMARK=1to have AMD's library show the model it runs. - Set
pgr4_native_upscaler = true.
FSR4Injector lists the Steam Deck as untested.
OptiScaler
OptiScaler hooks the same FidelityFX calls and can
put FSR 4, XeSS or DLSS behind them.
- Steam Deck, with fgmod (Decky Framegen): set the launch options to
PROTON_USE_XALIA=0 DXVK_HDR=1 ~/fgmod/fgmod %command%. fgmod copies OptiScaler in as
dxgi.dlland replaces the package'samd_fidelityfx_upscaler_dx12.dllwith its own, keeping
the original asamd_fidelityfx_upscaler_dx12.dll.b. fgmod 0.7.9 brings OptiScaler 0.7.9 and
AMD's FSR 4.0.2 upscaler, neither of which has the Lite model. - Windows: put
OptiScaler.dll, renamed todxgi.dll, andOptiScaler.inibeside the
executable.
In OptiScaler.ini, Dx12Upscaler picks the upscaler (ffx for FSR 3.1 and 4, xess,
dlss). For FSR 4's Lite model, put AMD's amdxcffx64.dll 4.1.2 beside the executable and use
an OptiScaler that knows the Lite model (its current source does) with Fsr4GpuSupport=4.
OptiScaler then answers AMD's GPU query itself, without FSR4Injector's shim. Keep the render
size in pgr4_native_upscaler_width and _height: the game renders at that size whatever
OptiScaler's own ratio settings say. Insert opens OptiScaler's menu (ShortcutKey in
OptiScaler.ini changes the key).
Geometry Wars
The arcade cabinet in the garage starts gw_recompiled.exe, which must stay beside
pgr4_recompiled.exe. Its settings are in gw_recompiled.toml.
Licenses
LICENSE.txt is this project's license. LICENSES/ holds those of the ReXGlue SDK, Xenia,
PGR4-Recomp, MTR-PGR4 and the libraries built into the program, and the sources it was built
from (SOURCE.txt). Project Gotham Racing 4 and its content belong to their owners; these
licenses grant no rights to the game.
v0.1.2
PGR4 native renderer
Project Gotham Racing 4 (Title Update #2), recompiled for 64-bit Windows from the Xbox 360
executable, with a native Direct3D 12 renderer. It is tuned for the Steam Deck OLED: 1280x800
at 90 fps, MSAA and motion blur on. It runs on Windows and, through Proton, on SteamOS and Linux.
It is built with the ReXGlue SDK and fixes from Xenia Canary; its frame rate unlock and game
fixes follow those MTR-PGR4 (github.com/MissingThePixel/MTR-PGR4) found.
This package holds no game data. You need your own copy of the game.
What goes where
Put these beside pgr4_recompiled.exe:
game/ the disc's files: default.xex, Game/, UI/ and the rest
game/Content/ Title Update #2's package, and downloadable content if you have it
-
game/: the files extracted from your PGR4 disc (an ISO extractor such as XBOX360 ISO
Extract does this).game/default.xexmust exist. -
game/Content/: the packages as they come from Xbox Live or off a console, unchanged:
- Title Update #2 (version 0.0.2.1),
TU_16L61VP_0000004000000.00000000000G1. The game runs
only with this update, since the code was recompiled from it. Its SHA-256 is
9980cf82c3bbbb32b35c841532c832b5598e99ce50daba8c658645213ab3d9b8. - DLC, the files named by a 42-digit hex ID (Vehicle Pack 1 is
638152C719C45657B6640991BA6375D88A9D437D4D), if you have it.
The first start installs each new package into
userdata/. - Title Update #2 (version 0.0.2.1),
If you have the update's two files extracted instead of its package, put them in a folder named
title-update/ beside the executable. That folder takes precedence over the package. Their
SHA-256:
default.xexp 7e7c672b542dc20d20bed72e27603335701a6eb9f243d2a8a2468bb966ee9401
Pgr4TitleUpdate.bin f4bc47545df5fe8d0301bd4593d3b7b6e3871520f98e5f7249921973781a4b74
The first start creates userdata/ (your save and the shader caches) and logs/ beside the
executable. Keep userdata/ when you update to a new release.
Steam Deck
- In Desktop Mode, copy this folder (with game/ filled in) anywhere, for example
~/Games/PGR4. - Steam > Games > Add a Non-Steam Game to My Library > Browse, select
pgr4_recompiled.exe. - In the shortcut's Properties > Compatibility, force a Proton version (tested: GE-Proton 11-5).
- In Properties > General > Launch Options, enter
PROTON_USE_XALIA=0 DXVK_HDR=1 %command%.
Xalia, Proton's gamepad helper for desktop programs, otherwise takes about a tenth of a CPU
core during races.DXVK_HDR=1lets the game output HDR where the display takes it (the
OLED model, or an HDR TV, with HDR on in Steam's display settings). - Play it from Game Mode. The frame rate follows the display: 90 fps on the OLED, 60 on the
LCD model. Steam's frame limiter works too.
Windows
Run pgr4_recompiled.exe. It needs a GPU with Direct3D 12. Set window_width and
window_height in pgr4_recompiled.toml to your display's resolution. With HDR on in
Windows' display settings the game outputs HDR.
Settings
pgr4_recompiled.toml beside the executable holds the settings, one per line. A flag on the
command line overrides it: in Steam's launch options, %command% --fullscreen=false for one.
Geometry Wars
The arcade cabinet in the garage starts gw_recompiled.exe, which must stay beside
pgr4_recompiled.exe. Its settings are in gw_recompiled.toml.
Licenses
LICENSE.txt is this project's license. LICENSES/ holds those of the ReXGlue SDK, Xenia,
PGR4-Recomp, MTR-PGR4 and the libraries built into the program, and the sources it was built
from (SOURCE.txt). Project Gotham Racing 4 and its content belong to their owners; these
licenses grant no rights to the game.
v0.1.1
PGR4 native renderer
Project Gotham Racing 4 (Title Update #2), recompiled for 64-bit Windows from the Xbox 360
executable, with a native Direct3D 12 renderer. It is tuned for the Steam Deck OLED: 1280x800
at 90 fps, MSAA and motion blur on. It runs on Windows and, through Proton, on SteamOS and Linux.
It is built with the ReXGlue SDK and fixes from Xenia Canary; its frame rate unlock and game
fixes follow those MTR-PGR4 (github.com/MissingThePixel/MTR-PGR4) found.
This package holds no game data. You need your own copy of the game.
What goes where
Put these beside pgr4_recompiled.exe:
game/ the disc's files: default.xex, Game/, UI/ and the rest
game/Content/ downloadable content, if you have it (optional)
title-update/ Title Update #2: default.xexp and Pgr4TitleUpdate.bin
-
game/: the files extracted from your PGR4 disc (an ISO extractor such as XBOX360 ISO
Extract does this).game/default.xexmust exist. -
title-update/: the two files of Title Update #2 (version 0.0.2.1), from the Xbox Live
packageTU_16L61VP_0000004000000.00000000000G1. The game runs only with this update, since
the code was recompiled from it. Their SHA-256:default.xexp 7e7c672b542dc20d20bed72e27603335701a6eb9f243d2a8a2468bb966ee9401 Pgr4TitleUpdate.bin f4bc47545df5fe8d0301bd4593d3b7b6e3871520f98e5f7249921973781a4b74 -
game/Content/: DLC copied off a console as STFS packages, the files named by a 42-digit
hex ID (Vehicle Pack 1 is638152C719C45657B6640991BA6375D88A9D437D4D). The first start
installs each new package.
The first start creates userdata/ (your save and the shader caches) and logs/ beside the
executable. Keep userdata/ when you update to a new release.
Steam Deck
- In Desktop Mode, copy this folder (with game/ and title-update/ filled in) anywhere, for
example~/Games/PGR4. - Steam > Games > Add a Non-Steam Game to My Library > Browse, select
pgr4_recompiled.exe. - In the shortcut's Properties > Compatibility, force a Proton version (tested: GE-Proton 11-5).
- In Properties > General > Launch Options, enter
PROTON_USE_XALIA=0 DXVK_HDR=1 %command%.
Xalia, Proton's gamepad helper for desktop programs, otherwise takes about a tenth of a CPU
core during races.DXVK_HDR=1lets the game output HDR where the display takes it (the
OLED model, or an HDR TV, with HDR on in Steam's display settings). - Play it from Game Mode. The frame rate follows the display: 90 fps on the OLED, 60 on the
LCD model. Steam's frame limiter works too.
Windows
Run pgr4_recompiled.exe. It needs a GPU with Direct3D 12. Set window_width and
window_height in pgr4_recompiled.toml to your display's resolution. With HDR on in
Windows' display settings the game outputs HDR.
Settings
pgr4_recompiled.toml beside the executable holds the settings, one per line. A flag on the
command line overrides it: in Steam's launch options, %command% --fullscreen=false for one.
Geometry Wars
The arcade cabinet in the garage starts gw_recompiled.exe, which must stay beside
pgr4_recompiled.exe. Its settings are in gw_recompiled.toml.
Licenses
LICENSE.txt is this project's license. LICENSES/ holds those of the ReXGlue SDK, Xenia,
PGR4-Recomp, MTR-PGR4 and the libraries built into the program, and the sources it was built
from (SOURCE.txt). Project Gotham Racing 4 and its content belong to their owners; these
licenses grant no rights to the game.