LCS Recomp

GTA: Liberty City Stories PC port, built on PSPRecomp.

README

LCS Recomp

GTA: Liberty City Stories PC port, built on PSPRecomp. Game files not included.

Setup

Requires the US v1.05 release (ULUS-10041).

Place your decrypted EBOOT.ELF and the disc's PSP_GAME folder in game/ for the release, or in lcs/game/ when building from source.

Build

Requires Visual Studio 2022 and LLVM (clang-cl).

lcs\BUILD_LCS.bat

Play

lcs\PLAY_LCS.bat

Settings are in lcs/config/LCSNative.ini.

Display.ResolutionMode is the window (PSP, Scale, Custom, or Desktop). Rendering.InternalResolutionMode is the GE render target, with the same four choices. Desktop uses the monitor on Windows and on Linux. Rendering.TextureLodBias shifts texture mip selection; negative values keep textures sharper at a distance.

Mouse and keyboard

Edit [Controls] in lcs/config/LCSNative.ini, then restart. A binding is one or more names separated by commas. None clears it. Shift, Ctrl, and Alt set both sides. The accepted names are commented in that file. F10 opens host settings. F11 toggles fullscreen. Moving the mouse looks around. A controller button takes the same action names.

BindingDefaultAction
MoveForwardWOn foot, move forward. In a vehicle, accelerate.
MoveBackSOn foot, move back. In a vehicle, brake.
MoveLeftAMove or steer left.
MoveRightDMove or steer right.
WalkLeft AltShorter steps.
SprintSpaceRun on foot. Not sent in a vehicle.
JumpLeft Shift, Right ShiftJump. In a vehicle the game reads this as the brake.
AttackLeft mouse buttonAttack or fire.
AimRight mouse buttonAim on foot. Not sent in a vehicle.
CenterCameraH, middle mouse buttonPut the camera behind you. Also picks up a weapon.
EnterVehicleF, EnterEnter or exit a vehicle.
WeaponPreviousQ, Left, wheel upPrevious weapon. In a vehicle, previous radio station.
WeaponNextE, Right, wheel downNext weapon. In a vehicle, next radio station.
UpUpToggle a special mission. In a vehicle, also pitches up.
DownDownD-pad down. In a vehicle, horn and pitch down.
PauseEscapePause.
CameraVChange camera.
HandbrakeSpaceHandbrake in a vehicle.

Controller names follow the Xbox layout. On a PlayStation pad, A is Cross, B is Circle, X is Square, and Y is Triangle. LeftStick and RightStick are Move or Camera. A trigger does not send its buttons in a vehicle; accelerate and brake still apply.

ButtonDefaultAction
A / CrossSprintRun. Also sent in a vehicle.
B / CircleAttackAttack or fire.
X / SquareJumpIn a vehicle the game reads this as the brake.
Y / TriangleEnterVehicleEnter or exit a vehicle.
LB / L1CenterCameraPuts the camera behind you. Also picks up a weapon.
RB / R1AimAim. In a vehicle, the handbrake.
LT / L2MoveBack, CenterCameraBrake. On foot, also centers the camera.
RT / R2MoveForward, AimAccelerate. On foot, also aims.
D-pad leftWeaponPreviousPrevious weapon. In a vehicle, the previous radio station.
D-pad rightWeaponNextNext weapon. In a vehicle, the next radio station.
D-pad upUpSpecial mission.
D-pad downDownHorn in a vehicle.
StartPausePause.
Back / ShareCameraChange camera.
Left stickMoveMovement. LeftStick swaps this with the camera.
Right stickCameraCamera.
Left stick clickDownHorn in a vehicle.
Right stick clickNonePadRightStickClick.

Linux

The native build uses Vulkan for the GE and SDL2 for the window and audio. It needs glslangValidator, plus the Vulkan, SDL2, and FFmpeg development packages. The Linux build also compiles a small tool that packs lcs/host/font5x7.txt into the F10 menu font. The Windows build does not run that step.

lcs/scripts/build_linux.sh
lcs/scripts/play_linux.sh

That build compiles lcs/host/vulkan/ge.vert and ge.frag to SPIR-V with glslangValidator. Editing either shader rebuilds it into LCSNative.

lcs/config/LCSNative.ini is shared with Windows, so the checked-in setting stays Backend=DirectX12. On Linux that value selects the Vulkan GE. Backend=Vulkan selects it explicitly, and any other backend name keeps the software rasterizer. LCS_VULKAN_VALIDATION=1 turns on the Khronos validation layer and prints its warnings and errors.

Docker

You also can utilize Docker to build the Linux version.

cd docker
./build.sh

Available options:

        archlinux       compile the source code on Arch Linux
        debian          compile the source code on Debian

Usage: ./build.sh <option>

That way you will get a pre-confugred build environment which also utilzes ccache for faster building times.

License

MIT, see LICENSE. Third-party notices: lcs/THIRD_PARTY.md.