Discovering cheat codes in Midnight Club: L.A. Remix

December 27, 2023

3 min. to read

Introduction

As of the time of writing this post, it was yesterday when I learned that Midnight Club: L.A. Remix has a dedicated menu to input the cheat codes, but no known codes exist. Numerous claims about different cheat codes circulate, but they appear to be all fake. Inspired by the recent findings in Gran Turismo 4 and Gran Turismo PSP, I dived into MCLA Remix to look for the cheat codes.

A brief look around the game’s code reveals the game has 11 previously unknown cheat codes, with 12 more prototype-only cheat codes that are locked by default! The game locks them behind a check against the serial hardcoded in the executable – and only allows to use those cheat codes on the prototype (ULET/ULUT) builds.

List of cheat codes

This list can also be found in Bonus Codes.

These are the cheat codes supported by the game out of the box:

  • Unlock all Arcade Mode content: confidential
  • Stronger special ability effects: mmmungo
  • Agro ability on all eligible vehicles: ragevirus
  • Zone ability on all eligible vehicles: stayontarget
  • Roar ability on all eligible vehicles: sushi
  • Indestructibility: granite
  • Orb biker heads: skidlida
  • Pumpkin biker heads: skidlidb
  • Bunny biker heads: skidlidc
  • Snowman biker heads: skidlidd
  • Skull biker heads: skidlide

Prototype-only cheat codes check against the prototype serial. They can be accessed once this check is patched out:

  • Unlock everything: all
  • Get $4.200.000: cash
  • Unlock all cities: cities
  • Unlock all car parts: parts
  • Unlock all vehicles: cars
  • Unlock everything and get $4.200.000: allcash
  • Zone ability on all vehicles: zone
  • Agro ability on all vehicles: agro
  • Roar ability on all vehicles: roar
  • Reset the ability cheats: normal
  • Display the camera coordinates on the screen: cam
  • [no effect]: fps

To unlock the prototype cheat codes in the final game builds, use the following cheats in PPSSPP or in cwCheat on your PSP/PS Vita:

_S ULUS-10383
_G Midnight Club: L.A. Remix [US]
_C1 Unlock prototype cheats
_L 0x20067094 0x00000000

_S ULES-01144
_G Midnight Club: L.A. Remix [EU]
_C1 Unlock prototype cheats
_L 0x20067094 0x00000000

_S ULJS-00180
_G Midnight Club: L.A. Remix [JP]
_C1 Unlock prototype cheats
_L 0x20068A54 0x00000000

_S ULJM-05904
_G Midnight Club: L.A. Remix (Rockstar Classics) [JP]
_C1 Unlock prototype cheats
_L 0x20068A54 0x00000000

Most of the cheats are quite standard and not that interesting, but the Stronger special ability effects cheat is an exception – it makes a Roar ability look quite entertaining:

This effect is usually not that strong.

Additionally, the 5 secret biker head models appear to be reused from the PSP version of Midnight Club 3: DUB Edition:

The obfuscation algorithm

The cheat strings use an obfuscation algorithm to “hide” them, presumably to make them harder to spot when disassembling the executable. The algorithm used is simple and reversible – to document all the cheat codes, I wrote a small decryption program, and later simplified it and cleaned it up with the help of Nenkai.

The encryption and decryption routines are as follows:

def encryptCheat(cheat):
    output = ""

    inputSalt = ord('E')
    for ch in cheat:
        char = ord(ch) + inputSalt
        outputSalt = ord('{' if char < ord('A') else 'A')
        output += chr(((char - ord('A')) % 58) + outputSalt)
        inputSalt += 1
    return output

def decryptCheat(cheat):
    output = ""

    inputSalt = ord('E')
    for ch in cheat:
        charOrd = (ord(ch) - ord('A') - inputSalt) % 58
        output += chr(charOrd + ord('A'))
        inputSalt += 1
    return output

if __name__ == "__main__":
    print('Cheats:')
    cheats = [
        'nAAtxtvFMCvH',
        'xyzICwF',
        'CmtsKyIML',
        'DFnMDDKsKAzP',
        'DGFvx',
        'rDnBxJv',
        'DwvrAyus',
        'DwvrAyut',
        'DwvrAyuu',
        'DwvrAyuv',
        'DwvrAyuw',
    ]
    for ch in cheats:
        print(f'{ch}: {decryptCheat(ch)}')

    print('')
    print('Prototype cheats:')
    prototype_cheats = [
        'lxy',
        'nmz',
        'qBF',
        'nmFv',
        'nuGwtI',
        'AmEHH',
        'nmEG',
        'lxyqpIy',
        'KAAs',
        'lsEC',
        'CAnF',
        'yAEApB'
    ]
    for ch in prototype_cheats:
        print(f'{ch}: {decryptCheat(ch)}')
Share