[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-105397":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":17,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":9,"pushedAt":9,"updatedAt":23,"readmeContent":24,"aiSummary":9,"trendingCount":15,"starSnapshotCount":15,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},105397,"mcla-recomp","holdmysocks\u002Fmcla-recomp","holdmysocks","Static recompilation of Midnight Club: Los Angeles (Xbox 360) for PC and PS5. No game data included.",null,"C++",223,26,6,1,0,8,24,61.04,"GNU General Public License v3.0",false,"main",[],"2026-11-01 00:15:46","# MCLA\n\n## I am no longer maintaining this project for PC, for an updated one with a launcher see [mcla-recomp by RenanQueiroz](https:\u002F\u002Fgithub.com\u002FRenanQueiroz\u002Fmcla-recomp) and the ORIGINAL [LARecomp by MZ](https:\u002F\u002Fgithub.com\u002Fmzzvxm\u002Flarecomp) is becoming available soon, I highly recommend this one. \n\n## I will only update this project for PS5 improvements going forward as I do not have the time to support issues or fixes.\n\n## If you would like to try the game rewritten in Rust, I am working on that for fun at [rusty-mcla](https:\u002F\u002Fgithub.com\u002Fholdmysocks\u002Frusty-mcla) with steady progress almost every day.\n\nStatic recompilation of *Midnight Club: Los Angeles Complete Edition* (Xbox 360, title 545407F8) to native code, for Windows, Linux and jailbroken PS5 consoles.\n\n![The game installed on a PS5 home screen](docs\u002Fimages\u002Fps5-home-screen.webp)\n\n*Installed on a jailbroken PS5. The tile here is one the user supplied at build time; the background is made from the art on their own disc.*\n\n**This repository contains no game code, assets or keys.** You supply your own legally obtained copy; a script extracts what is needed on your machine, and the recompiled code is generated locally and never committed. What you build is for you, not for sharing.\n\n## Status\n\n| Target | State |\n|---|---|\n| Windows, Direct3D 12 | Plays: career, races, garage and upgrades, with audio and a controller, at 30 FPS by default. |\n| Windows, Vulkan | Reaches the title screen; not tested further. |\n| Linux, Vulkan | Builds and plays natively: free roam holds 30 FPS on an Intel Core Ultra 5 238V laptop (Mesa ANV). Tested by one user. |\n| PS5 (jailbroken) | Plays at a steady 30 FPS on a PS5 Pro (firmware 13.42); the zoomed-out map runs at 20 to 25. Also installed from scratch and played on a PS5 Slim (firmware 12.70). |\n\nCar reflections are fixed on every renderer (cars no longer come out white with a glow at night):\n\n![The same spot before and after the fix, at night and at noon](docs\u002Fimages\u002Freflection-fix-before-after.webp)\n\n## Which release of the game\n\nOnly **Midnight Club: Los Angeles Complete Edition, USA\u002FEurope, for Xbox 360** (title id `545407F8`), as a disc image (`.iso`). The fixes in `config\u002F` are addresses in that release's executable; another region or revision would need them checked again.\n\n## How it works\n\nThe game's PowerPC code is translated to C++ ahead of time by the [ReXGlue SDK](https:\u002F\u002Fgithub.com\u002Frexglue\u002Frexglue-sdk) (BSD-3, derived from Xenia), which also provides the Xbox 360 kernel, GPU and audio reimplementation. This repository holds the project manifest, function hints, a small host application, patches to the SDK and the build scripts.\n\n## Windows\n\nYou need Windows 10 or 11 (x86-64) with a Direct3D 12 graphics card, and about 20 GB of disk. In PowerShell:\n\n```powershell\ngit clone https:\u002F\u002Fgithub.com\u002Fholdmysocks\u002Fmcla-recomp.git\ncd mcla-recomp\n.\\scripts\\make_pc.ps1 -Iso C:\\path\\to\\your.iso\n```\n\nThe script checks for Git, CMake, Ninja, Python 3, Visual Studio Build Tools 2022 version 17.1 or newer (C++ workload), a Windows SDK newer than 10.0.19041 and the project's own Clang 20, and offers to install what is missing (answer `y`, or add `-InstallTools`); the Build Tools ask for administrator rights. It then clones and patches the ReXGlue SDK v0.10.0, builds it (the long step, once), extracts your game into `game\\`, recompiles it and builds `out\\build\\win-amd64-release\\mcla.exe`. Each step is skipped when its result is already there, so after a failure or an update you run the same command again. Logs are in `out\\logs`.\n\n**Play:** double-click the **Midnight Club Los Angeles** shortcut the build leaves in the repository folder, or `mcla.exe` itself. Keep the folder where it was built; the game data is read from `game\\`. An Xbox or PlayStation controller works.\n\nOptions go after the program name, for example `mcla.exe --fullscreen=true --mcla_fps=60` (30, 40, 45, 50, 60, 120, or 0 for uncapped). The pause menu has three extra entries: DISPLAY (frame-rate target, HUD updates, vsync, fullscreen, motion blur, depth of field), PERFORMANCE (detail options) and CONTROLS (button prompts, intro speed); changes are saved to `mcla.toml` next to `mcla.exe`. QUIT GAME, next to them, closes the game, after a career save in progress has finished.\n\nFrames are held to the target when they are presented (`--mcla_pace_at_swap=false` holds them before the game's update instead, as before). Menus and pop-ups advance 30 times a second as on the console, whatever the frame rate (`--mcla_ui_timing_fix=false` for once per frame); the HUD 60 times a second (`--mcla_ui_hud_rate`: 30 as on the console, 60, 120, or 0 for every frame).\n\n**Update:** `git pull`, then `.\\scripts\\make_pc.ps1` again.\n\n| If | Then |\n|---|---|\n| The SDK build fails with `'crtversion.h' file not found` | Another Clang on your path was used. Update and run `make_pc.ps1` again: it now uses only its own. |\n| Step 1 fails after downloading Clang, with `unable to run program \"xz -d -qq\"` | Windows 10's `tar.exe` cannot unpack `.tar.xz`. Update and run `make_pc.ps1` again: it now unpacks the archive with Python when `tar.exe` cannot. |\n| Installing a tool fails with `No package found matching input criteria` | winget's package list on your PC is out of date or broken: run `winget source reset --force` in an administrator PowerShell, then `make_pc.ps1` again, or install that tool yourself (Python from python.org or the Microsoft Store works). |\n| The SDK build fails with `no member named 'byteswap' in namespace 'std'` | Your Visual Studio is older than 2022 version 17.1 (VS 2019, or an early 2022). Update it in the Visual Studio Installer, or install Build Tools 2022, then run `make_pc.ps1` again. It now checks the version in step 1. |\n| The SDK build fails inside a Windows SDK header (for example `xinput.h`, `expected function body after function declarator`) after installing a new Windows SDK | The SDK's build folder still had headers from the old Windows SDK. Update and run `make_pc.ps1` again: it now starts that folder again when the Windows SDK or Visual Studio changes. Or delete `third_party\\rexglue-sdk\\out\\build` and run it again. |\n| The SDK build fails with `unknown type name 'D3D12_FEATURE_DATA_D3D12_OPTIONS8'` | Your newest Windows SDK is 10.0.19041 or older. Update and run `make_pc.ps1` again: step 1 now installs Windows SDK 10.0.26100. Or add **Windows 11 SDK** to Build Tools 2022 in the Visual Studio Installer (Modify › Individual components). |\n| The SDK configure fails with `could not open 'oldnames.lib'` | Clang picked a Visual Studio without the C++ tools (for example Visual Studio 2026 installed for something else) over the one that has them. Update and run `make_pc.ps1` again: it now points Clang at an install with the C++ tools. Or add **Desktop development with C++** to that Visual Studio in the Visual Studio Installer. |\n| Step 2 fails with `config.h: No such file or directory` | The first download of the SDK was cut short. Update and run `make_pc.ps1` again: it now repairs the download. If it still fails, delete `third_party\\rexglue-sdk` and run it again. |\n| `codegen failed` | `game\\default.xex` is missing or not the supported release; see the end of `out\\codegen.log`. |\n| The game closes by itself | Start it with `--log_file=run.log --log_level=info` and open an issue with the end of that file. |\n\n## Linux\n\nTested on Ubuntu 26.04. You need Clang 20 and LLD (`clang-20`, `clang++-20`, `lld-20`), CMake 3.25+, Ninja, Python 3, Git, a Vulkan 1.3 driver, and these packages (Debian\u002FUbuntu names): `libgtk-3-dev libx11-xcb-dev libxss-dev libvulkan-dev libwayland-dev libwayland-bin wayland-protocols libxkbcommon-dev libdecor-0-dev libasound2-dev libpulse-dev libpipewire-0.3-dev`. Linux 6.11 or newer is recommended.\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fholdmysocks\u002Fmcla-recomp.git\ncd mcla-recomp\ngit clone --recursive --branch v0.10.0 https:\u002F\u002Fgithub.com\u002Frexglue\u002Frexglue-sdk.git third_party\u002Frexglue-sdk\ncd third_party\u002Frexglue-sdk\ngit apply ..\u002F..\u002Fpatches\u002Frexglue-v0.10.0-mcla.patch\ngit apply ..\u002F..\u002Fpatches\u002Frexglue-minmax-blend-factor.patch\ngit -C thirdparty\u002FFFmpeg apply ..\u002F..\u002F..\u002F..\u002Fpatches\u002Frexglue-ffmpeg-ps5-config.patch\ngit apply ..\u002F..\u002Fpatches\u002Frexglue-linux-procmap-query.patch\ngit apply ..\u002F..\u002Fpatches\u002Frexglue-linux-wait-sleep.patch\ngit apply ..\u002F..\u002Fpatches\u002Frexglue-vulkan-paint-pipeline-format.patch\nCC=clang-20 CXX=clang++-20 cmake --preset linux-amd64 -DREXGLUE_USE_VULKAN=ON -DREXGLUE_ENABLE_TRACY=OFF\ncmake --build out\u002Fbuild\u002Flinux-amd64 --config Release\ncmake --install out\u002Fbuild\u002Flinux-amd64 --config Release\ncd ..\u002F..\npython3 scripts\u002Fextract_game.py \u002Fpath\u002Fto\u002Fyour.iso\nSDK=$PWD\u002Fthird_party\u002Frexglue-sdk\u002Fout\u002Finstall\u002Flinux-amd64\n\"$SDK\u002Fbin\u002Frexglue\" codegen mcla_manifest.toml\nCC=clang-20 CXX=clang++-20 cmake --preset linux-amd64-release -DCMAKE_PREFIX_PATH=\"$SDK\"\ncmake --build --preset linux-amd64-release\n.\u002Fscripts\u002Fplay_linux.sh\n```\n\nOn Wayland, put `vulkan_allow_present_mode_immediate = false` and `vulkan_allow_present_mode_mailbox = false` in `out\u002Fbuild\u002Flinux-amd64-release\u002Fmcla.toml`; without them the game presents about 1,000 times a second and keeps the GPU busy.\n\n## PS5\n\nYou need a jailbroken PS5 that runs homebrew, with an FTP server payload (port 2121 by default) and a homebrew mounter that shows folders under `\u002Fdata\u002Fhomebrew` on the home screen (ShadowMountPlus was used). The build runs on **Arch Linux as root**: on Windows, an Arch distribution under WSL2. Allow about 30 GB of disk, 16 GB of memory, and about 45 minutes the first time.\n\nOn Windows, in PowerShell as administrator:\n\n```powershell\nwsl --install --no-distribution\nwsl --update\nwsl --install -d archlinux\nwsl -d archlinux -u root\n```\n\nThen, in that Linux shell (your Windows drives are under `\u002Fmnt`, so `C:\\Games\\mcla.iso` is `\u002Fmnt\u002Fc\u002FGames\u002Fmcla.iso`):\n\n```bash\npacman -Sy --noconfirm git\ncd \u002Froot\ngit clone https:\u002F\u002Fgithub.com\u002Fholdmysocks\u002Fmcla-recomp.git\ncd mcla-recomp\nbash ps5\u002Fmake_ps5.sh --iso \u002Fmnt\u002Fc\u002Fpath\u002Fto\u002Fyour.iso --console 192.168.1.50\n```\n\nUse your console's address, and start the FTP payload first. Without `--console` it only builds and prints what to copy where. Keep the repository under `\u002Froot`, not `\u002Fmnt\u002Fc`. The script installs its packages, builds the PS5 toolchain and Vulkan driver ([mihawk-99\u002FPS5_Vulkan](https:\u002F\u002Fgithub.com\u002Fmihawk-99\u002FPS5_Vulkan)), patches and builds the SDK, extracts and recompiles your game, packages the title and uploads it. Each step is skipped when its result exists, so you run the same command again after a failure or an update (`git pull` first). Logs are in `\u002Froot\u002Fmcla\u002Flogs`.\n\nAfter the upload, let the mounter pick up `\u002Fdata\u002Fhomebrew\u002FPPSA99779`; \"Midnight Club: Los Angeles\" appears on the home screen. On the console, `\u002Fdata\u002Fmcla\u002Fgame` holds the game data, `\u002Fdata\u002Fmcla\u002Fmcla.toml` the settings and `\u002Fdata\u002Fmcla\u002Fmcla-play.log` the log of the last start.\n\n**DualSense haptics and adaptive triggers (optional).** The game's rumble works on a DualSense out of the box. For haptics from the game's sound and the car (road, gear changes, crashes, nitro) and throttle and brake resistance on R2 and L2, add `mcla_pad_haptics = true` and `mcla_adaptive_triggers = true` to `\u002Fdata\u002Fmcla\u002Fmcla.toml`. Tuning options are listed in `ps5\u002Fgame\u002Fps5_haptics.h` and `ps5\u002Fgame\u002Fps5_triggers.h`.\n\n**Your own tile and theme (optional).** No artwork or music ships here. `--tile IMAGE` takes any common image (for example the [official cover art](https:\u002F\u002Fassets-prd.ignimgs.com\u002F2022\u002F04\u002F17\u002Fmidnightcomplete-1650239367276.jpg)); `--theme FILE.at9` takes an ATRAC9 file. For a theme, turn the audio down first (`ffmpeg -i in.m4a -af loudnorm=I=-28:TP=-2 -ar 48000 -ac 2 quiet.wav`), then convert it with [AT9-AT3 Converter](https:\u002F\u002Fgithub.com\u002FBMK-Studio\u002FAT9-AT3_Converter\u002Freleases) (AT9, PS4, bitrate 72). The console keeps a title's tile and sound from when it was first registered.\n\n| If | Then |\n|---|---|\n| `this script needs Arch Linux` | Install Arch under WSL2 as above. |\n| `SDK patch does not apply` | Remove `\u002Froot\u002Fmcla\u002Frexglue-sdk` and run again. |\n| `no FTP server at ...` | Start the FTP payload; check the address and `--ftp-port`. |\n| A bar with frame rate and temperatures over the game | That is your homebrew enabler's overlay (with OnionHEN, `[overlay] enabled=false` in `\u002Fdata\u002FOnionHEN\u002Fconfig.ini`). |\n| The game stops or closes | Fetch `\u002Fdata\u002Fmcla\u002Fmcla-play.log` over FTP before starting it again and open an issue with it, your console model and firmware. |\n\nIf you hand this to an AI agent: it needs your disc image's path and the console's address from you, must not look for or download a disc image, and writes to the console only with `--console`.\n\n## Missed functions\n\nIf the game stops with `Call to invalid or unregistered function at guest address ...`, the recompiler missed a function that is only reached through a pointer. Please open an issue with that line; the fix is one entry in `config\u002Fruntime_discovered.toml`.\n\n## Credits\n\n- ReXGlue SDK by Tom Clay and contributors; Xenia by Ben Vanik and contributors.\n- [LARecomp](https:\u002F\u002Fgithub.com\u002Fmzzvxm\u002FLARecomp) by mzzvxm and contributors, whose fixes several parts of this project are ported from.\n- [PS5_Vulkan](https:\u002F\u002Fgithub.com\u002Fmihawk-99\u002FPS5_Vulkan) by mihawk-99 (GPL-3): the RADV port and toolchain the PS5 version is built on.\n- XenonRecomp by hedge-dev, on which ReXGlue's analysis builds.\n- The Linux build by [@MoonFuji](https:\u002F\u002Fgithub.com\u002FMoonFuji).\n- [RecompiledHaloReach](https:\u002F\u002Fgithub.com\u002FDyotson\u002FRecompiledHaloReach) and [ForzaHorizon1-ReImagined](https:\u002F\u002Fgithub.com\u002FDyotson\u002FForzaHorizon1-ReImagined) by Dyotson (MIT): the achievement pop-ups shown without repainting the window all the time (`src\u002Fachievement_toast.h`, with the licence notice).\n\n## Licence\n\nGPL-3.0-or-later; see `LICENSE`. *Midnight Club* is a trademark of Take-Two Interactive. This project is not affiliated with or endorsed by Rockstar Games or Take-Two.\n",2,"2026-10-31 04:26:40","CREATED_QUERY"]