SSA Delivery Corruption and the Mystery of the Disco Lights
5 years ago
Portugal

Sometimes, SSA cars will appear as delivered even though the player didn't deliver them. This is something that has been happening for a couple of months now. After it happened to anti recently we looked into it more thoroughly and found the cause.

https://i.imgur.com/IRTUrO9.png

The image above shows (for codemonkeys) the source of the issue. Right before garage delivery data, there is a list of CPed with room for 50 references However, this bound is not checked, so if this list fills up with more than 50 elements, it'll start corrupting the garage delivery data.

You can see this happening in this video (sorry for bad quality) 007D4300 is the address (on steam) for the first garage. The first byte holds the information for deliveries, and the next 3 are unused (Rockstar optimization). The 5th byte is the second list, next 3 unused, etc.

So how exactly can this be used to deliver vehicles?

This list is updated several times per frame. For every ped it'll fetch every other ped that is within its range. By default this value is 30 units of distance, but is increased during some missions with this opcode https://gtagmodding.com/opcode-database/opcode/0482/ So in order to corrupt the first list you need 51 peds within 30* units of eachother, 52 for the second, etc.

After setting these values, you need them to be read by the script so that it detects that the cars have been delivered. There's a number of restrictions here:

  • Only the final value for that frame matters
  • The script only checks completion for the current unlocked garage on a 500ms cycle
  • You can only export the last 3 vehicles of each list, due to references given by malloc always being divisible by 8 (Stallion, Rancher, Blista, Stretch, Washington, Admiral, Phoenix, Comet, Stinger, Baggage Handler, Mr Whoopee and Pizza Boy)

There are two known ways to get this glitch

Non-consistent, random way (currently in use):

Hope that you get 50 peds close to eachother. Malibu has 37 peds inside, so that's a good start. You can't control which values the garages will have, so you just have to hope you get as many as possible delivered.

Consistent (never use this in runs):

Mass dupe a mission with many peds (4x Hit the Courier works). You'll get all vehicles possible delivered with this, since the values will be updated every frame. However, you can't deliver cars yourself, as the values updating will delete your own changes to the garage (unless you get lucky with the 500ms cycle) You can see this in action here (ignore the pausing, placebo) To optimally use this, you'd have to deliver the first 3 cars of a list, do the mass dupe to deliver the next 3 and pass the list, then get the bottom 3 and pass (or just cancel) the mission. The other lists will also be corrupted, but they probably won't have all delivered.

This glitch is also what causes Disco Lights: the data after garage deliveries is sprite brightness data. By observing changes in textures or lighting effects it may be possible to predict whether garages have been corrupted in some way

Edited by the author 5 years ago
Sophylax, Svenir and 7 others like this
Game stats
Followers
1,750
Runs
3,959
Players
559
Latest news
Y-Sens Fix is now officially allowed in speedruns

VC Enthusiasts, good news!

The VC Mod Team has decided to allow users to access a y-sens fix for mouse issues. This can be used legally in speedruns from today onwards, with only one rule.

This script w

10 months ago
Latest threads
Posted 2 years ago
0 replies
Posted 3 years ago
36 replies
Posted 3 years ago
0 replies
Posted 4 years ago
0 replies
Posted 2 months ago
2 replies