GT5 Used Car Database [in progress]

  • Thread starter Famine
  • 1,863 comments
  • 424,737 views
still haven't found a lop/cycle yet and going on game day 6847. I wonder how many days that the game actually counts until it stops counting the game days?

Why would it stop counting? It probably allows for a greater number of days than you will be able to play through. :sly:

I'm thinking that if it doesn't cycle in 6847 days, it probably never does. So, what we might be looking at, is, not an endless, but very long UCD sequence that's the same for everyone, and some ID on the PS3 decides where you start in that sequence. Like Famine said, his 2 PS3's are 400 days apart, and, as far as I know nobody has NOT been able to find their place in the sequence, if they were in the first couple of hundred days, either pre or post 1.06, so it would be reasonable to assume that your Day 1 is determined somewhere in the first couple of hundred days of the sequence and it goes on and on from there.

The only thing to slightly worry about is, that, if your Day 1 is somewhere at Day 400 for someone else, you might miss something, if it only occurred in the first 400 days of the sequence. Let's just assume no car will only occur once. :sly:
 
Another update
https://spreadsheets.google.com/ccc?key=0Ai0moHBbwfvIdEVGU0RUbWtNVmJZN0t2Z2kxRms4MHc&hl=en#gid=0

Quick Checkup
My last 388 days have seen 731 unique cars. Of the 80 missing, 25 appeared in my first 85 days.

Hey, good work guys, this has really helped me to track when the cars i need are coming up in the UCD.

Not sure i can be much help contributing, because i can easily match my days to yours, jaymanji, but your days are already far ahead of mine!

Cheers.
 
Hey, good work guys, this has really helped me to track when the cars i need are coming up in the UCD.

Not sure i can be much help contributing, because i can easily match my days to yours, jaymanji, but your days are already far ahead of mine!

Cheers.

Happy to help:tup:
I enjoyed knowing the cars in front of me but I also like opening the UCD wondering what will turn up.
 
Hello there!

This is my first post. I'm *REALLY* confused on how to use the UCD. I looked on my XMB and I was at 127 day(s) on my GT5 save.

Now, I want to know how to use the list. The part that confuses me the most is about the first "block" of 6 cars. I can't seem to find it in the UCD and that's why I'm all confused and clueless.

So if anyone could help me a bit, I'd appreciate it a lot. I am looking for a Jaguar E-TYPE Coupe '61.... can't get it :(
 
Hello there!

This is my first post. I'm *REALLY* confused on how to use the UCD. I looked on my XMB and I was at 127 day(s) on my GT5 save.

Now, I want to know how to use the list. The part that confuses me the most is about the first "block" of 6 cars. I can't seem to find it in the UCD and that's why I'm all confused and clueless.

So if anyone could help me a bit, I'd appreciate it a lot. I am looking for a Jaguar E-TYPE Coupe '61.... can't get it :(

Welcome:)
It can be tricky to find your spot on the UCD list. Best bet is to create another user account on your ps3, start the game from scratch and check out your day 1 cars against both master lists (current up-to-date lists are on TornadoAlley's signature)
Your current day may not have been covered yet so you might not find what you're after.
There's an E-Type at Master List 2 Day 142 which was my Day 124 but it might be completely different for your game.
 
Hello there!

This is my first post. I'm *REALLY* confused on how to use the UCD. I looked on my XMB and I was at 127 day(s) on my GT5 save.

Now, I want to know how to use the list. The part that confuses me the most is about the first "block" of 6 cars. I can't seem to find it in the UCD and that's why I'm all confused and clueless.

So if anyone could help me a bit, I'd appreciate it a lot. I am looking for a Jaguar E-TYPE Coupe '61.... can't get it :(

I would also mention that if you have Excel on a PC the searchable version of the spreadsheet has a program built in to find the point in the list for you.

I have just updated both links to have more entries. I managed to get through a few more days at the beginning of Master List 1 and Master List 2 has many more entries at the end thanks to jaymanji.
 
still haven't found a lop/cycle yet and going on game day 6847. I wonder how many days that the game actually counts until it stops counting the game days?

Here's an educated guess:

It will be slightly less than 10922 and 2/3 days. I say that because it seems likely to me that a 16 bit seed is being used in some unknown random number generator. If it goes on longer we are very very unlikely to see a repeat. Then the next best guess would be (10922 times 65535) days before a repeat which is a really big number.
 
Here's an educated guess:

It will be slightly less than 10922 and 2/3 days. I say that because it seems likely to me that a 16 bit seed is being used in some unknown random number generator. If it goes on longer we are very very unlikely to see a repeat. Then the next best guess would be (10922 times 65535) days before a repeat which is a really big number.

that's interesting! i sure hope it's not 10922 x 65535. that's over 715 million days :eek::eek:
 
actually, it's random. But to be more correct. it's pseudo-random.
Simple rand() function give you so-called random result, but it just some complex function calculated result from previous remembered internally result. If you start this function from the same value, you will get the same sequence of numbers every time.
That's why C/C++ have another function randomize() to choose some pseudo-random start value. Usually current time is used to calculate initial value.
In some implementation of random functions, randomize() can take parameter to calculate initial value (instead of time of day).
so, at the first day, GT5 does:

randomize(PSID);

It can be some other unique to console value, for example MAC address. It doesn't matter actually.


then every car has been calculated by this approximated formula:

Car = TotalCars*rand(); (rand usually returns floating point number from range 0...1)

So, what this thread about is just enumerating result of pseudo-random function used in GT5.

You can ask: how the number of day is used? It's easy. It's not used directly. Saved Game has value internally used by pseudo-random function.

To find out algorithm of this pseudo-random function, need to:
1) take one of leaked PS3 SDK and look for random implementation there. GT5 uses PS3 SDK and most likely random function provided by this SDK.
2) decrypt EBOOT.bin from GT5 and find there calculation of car
3) list of cars with defined numbers.

P.S.: Period of polynomial function used to calculate pseudo-random number can be very very long. Probably you won't be able to finish whole timetable in foreseen future.
 
Okay, so forgive me for not reading all 50 pages of this thread, I'm just trying to understand what's going on here. If I find where my current UCD is in the spreadsheet I'll be able to determine which cars are coming up next?
 
Okay, so forgive me for not reading all 50 pages of this thread, I'm just trying to understand what's going on here. If I find where my current UCD is in the spreadsheet I'll be able to determine which cars are coming up next?

Yes. IF the information has been contributed for your region of the list. Unfortunately PD really screwed us with update v1.06 when they changed the ordering of the cars in the UCD.

My suggestion if you can't find your current day in the listing is to start a new game and find where your day 1 cars match the lists. Then you will know where any future day will end up.
 
actually, it's random. But to be more correct. it's pseudo-random.
Simple rand() function give you so-called random result, but it just some complex function calculated result from previous remembered internally result. If you start this function from the same value, you will get the same sequence of numbers every time.
That's why C/C++ have another function randomize() to choose some pseudo-random start value. Usually current time is used to calculate initial value.
In some implementation of random functions, randomize() can take parameter to calculate initial value (instead of time of day).
so, at the first day, GT5 does:

randomize(PSID);

It can be some other unique to console value, for example MAC address. It doesn't matter actually.


then every car has been calculated by this approximated formula:

Car = TotalCars*rand(); (rand usually returns floating point number from range 0...1)

So, what this thread about is just enumerating result of pseudo-random function used in GT5.

You can ask: how the number of day is used? It's easy. It's not used directly. Saved Game has value internally used by pseudo-random function.

To find out algorithm of this pseudo-random function, need to:
1) take one of leaked PS3 SDK and look for random implementation there. GT5 uses PS3 SDK and most likely random function provided by this SDK.
2) decrypt EBOOT.bin from GT5 and find there calculation of car
3) list of cars with defined numbers.

P.S.: Period of polynomial function used to calculate pseudo-random number can be very very long. Probably you won't be able to finish whole timetable in foreseen future.
While I agree that the start day is generated randomly but using some system specific identifier as a seed, I believe that if the cars are not a preset list (which I doubt now due to the length of the list) they are using an algorithm to generate what cars show up when. There is probably a master day that we don't see used to generate what cars show up (along with the code for the car and other values such as rarity).

My friend can dump the files if anyone wants them but I'm not really sure if we'll be able to get anything from it without a lot of work or a really good understanding of the system. I took a look at the eboot.bin (the only file I have so far) in a hex editor and I don't really understand what I'm looking for (or at). The car information and functions wouldn't be stored in the eboot, would they? I downloaded a PPC sheet from IBM with the op codes and also a Cell datasheet from IBM, but I have not really looked at them yet. I know that a lot of the assembly instructions for the PPC left me baffled.
 
actually, it's random. But to be more correct. it's pseudo-random.
Simple rand() function give you so-called random result, but it just some complex function calculated result from previous remembered internally result. If you start this function from the same value, you will get the same sequence of numbers every time.
That's why C/C++ have another function randomize() to choose some pseudo-random start value. Usually current time is used to calculate initial value.
In some implementation of random functions, randomize() can take parameter to calculate initial value (instead of time of day).
so, at the first day, GT5 does:

randomize(PSID);

It can be some other unique to console value, for example MAC address. It doesn't matter actually.


then every car has been calculated by this approximated formula:

Car = TotalCars*rand(); (rand usually returns floating point number from range 0...1)

So, what this thread about is just enumerating result of pseudo-random function used in GT5.

You can ask: how the number of day is used? It's easy. It's not used directly. Saved Game has value internally used by pseudo-random function.

To find out algorithm of this pseudo-random function, need to:
1) take one of leaked PS3 SDK and look for random implementation there. GT5 uses PS3 SDK and most likely random function provided by this SDK.
2) decrypt EBOOT.bin from GT5 and find there calculation of car
3) list of cars with defined numbers.

P.S.: Period of polynomial function used to calculate pseudo-random number can be very very long. Probably you won't be able to finish whole timetable in foreseen future.

Very nice post, thank you. I've also given this a bit of thought. I think you are not not aware or are not recognizing a couple of pieces of information though that will shed a bit more light on the implementation. First I think the line:

randomize(PSID);

probably looks more like this:

randomize(EXTRACT_ONLY_SOME_BITS(PSID));

I say this because of the closeness of the starting days. If you look through some of the much earlier posts you will find that the starting days do not vary by much. I did not investigate that completely but it could be as little as 256 days. I mention 256 because that is exactly 8 bits or one byte. I don't know if 8 bits works or not. There may be examples where the day varied by more. In that case you need to assume that the SOME_BITS means 9, 10, 11, 12 bits etc. There is also "Fastas's List" which would seem to refute what I just said. Fastas and others having a drastically different list is something that no one has rectified just yet. Though, I think people still follow this closeness of starting days pattern.

The second useful observation is one made by TornadoAlley not too far back on this thread. He said that creating an account for an individual on two PS3 systems and moving the save from one to the other will result in a different set of cars being generated on the same day. Also, both are perfectly consistent with the list for that particular PS3. I think this implies that the seed is not stored in the game save as you suggest. If it were, then the following would have to happen: Every time you restarted the game and went to the UCD the seed would be set with randomize() then the whole sequence would have to be regenerated which would mean rand() would have to be called (# of days)*6 times each time. That would be foolish. The load times on the UCD would get longer and longer as the game goes along. They made some mistakes in GT5 but I don't think they are that foolish though. Do you?

So what do I think they do? I think they take advantage of the fact that you can often call your rand() function with a seed argument. Rather than calling the randomize function they just do something like this:

Car = TotalCars*rand(
EXTRACT_ONLY_SOME_BITS(PSID)+(CurrentDay-1)*6+0);
Car = TotalCars*rand(
EXTRACT_ONLY_SOME_BITS(PSID)+(CurrentDay-1)*6+1);
.
.
.
Car = TotalCars*rand(
EXTRACT_ONLY_SOME_BITS(PSID)+(CurrentDay-1)*6+5);

or something basically equivalent. And they do this 5 times to generate all 30 cars.

Finally, I did not know about the possibility of seeing the SDK source code. That's a fantastic idea. Could you find the relevant section or point me to where I can get a peak at it? That would be really awesome if we could generate the first ten thousand or twenty thousand days in seconds or even minutes.
 
The second useful observation is one made by TornadoAlley not too far back on this thread. He said that creating an account for an individual on two PS3 systems and moving the save from one to the other will result in a different set of cars being generated on the same day.
I completely forgot that if you take the same save to another PS3 that it would change!

Car = TotalCars*rand(
EXTRACT_ONLY_SOME_BITS(PSID)+(CurrentDay-1)*6+0);
Car = TotalCars*rand(
EXTRACT_ONLY_SOME_BITS(PSID)+(CurrentDay-1)*6+1);
.
.
.
Car = TotalCars*rand(
EXTRACT_ONLY_SOME_BITS(PSID)+(CurrentDay-1)*6+5);

or something basically equivalent. And they do this 5 times to generate all 30 cars.

Finally, I did not know about the possibility of seeing the SDK source code. That's a fantastic idea. Could you find the relevant section or point me to where I can get a peak at it? That would be really awesome if we could generate the first ten thousand or twenty thousand days in seconds or even minutes.
I guess using the PS3 identifier as a seed would make sense.

I don't know about the PS3 SDK but IBM's Cell SDK (for Red Hat and Fedora) is available here:
http://www.ibm.com/developerworks/power/cell/downloads.html
also a bunch of documentation too.
 
Nice one Jaymanji !! finally found when the last car i'm looking for is going to appear, yay.

And i hope you other guys make some good progress investigating the algorithm, that would be really helpful to a lot of people, keep up the good work.

Peace.
 
Nice one Jaymanji !! finally found when the last car i'm looking for is going to appear, yay.

And i hope you other guys make some good progress investigating the algorithm, that would be really helpful to a lot of people, keep up the good work.

Peace.

Nice one mate:)
I agree, good work on the algorithm. It's all going over my head at the moment but I appreciate it:tup:
 
Latest update https://spreadsheets.google.com/ccc?key=0Ai0moHBbwfvIdEVGU0RUbWtNVmJZN0t2Z2kxRms4MHc&hl=en#gid=0
Day 1-150 with PP values and purchase LV
Day 2101-2251

GTsail
Not sure if you missed a few days but I saw a few extra cars that weren't in your data (inc. a Pescarolo Courage)
I managed to miss a day myself as I was goin back through my early days

Got those updates included.
Master List #1 has seen all but 178 cars (spread over 3294 days)
Master List #2 has seen all but 21 cars (spread over 2270 days)

While an algorithm makes the most sense with regard to the generation of cars within the UCD I'm still having trouble wrapping my head around how everyone who finds themselves in the same list (be it #1 or #2) finds everything identical (except the starting point).

While using the random seed (as benjoromo and sorg suggest) seems to make the most sense from a programming point of view I just don't understand this issue at this point in time.
 
Hi all - long time reader, first time poster :dunce:

I have some additions to ML #1. It's not perfect (I have just written down Car name/model name and year. Not color, price etc)

Will grind today and upload tomorrow. Can i edit the sheet directly?

On another topic, being a programmer myself I think there are some mysteries surrounding this whole thing.

Like why not to use a random function on available cars? They have used randomizing everywhere else in this game (opponent cars/names/ tickets etc), so why not with the UCD? Is it deliberate?

Can it actually be that there are two (or more) "lists" or stacks of available car patterns? Sorted by a $X%modulo%2? That even though it's a circular pattern, the different ML's will never meet.

/first posting :)
 
gallianoo's spreadsheet (own sheet for offset to Master List #1)

Will of course continue to update - there's a big gap in ML#1 between the start and chances14 so I can help fill in here.

A normal race equals one race day. How about an endurance race? I'm planning to do some driving this weekend, but don't want to make holes in my list. :)
 
....
A normal race equals one race day. How about an endurance race? I'm planning to do some driving this weekend, but don't want to make holes in my list. :)

Welcome aboard gallianoo! Its nice to see a new contributor.

The endurance races advance the UCD only one day as well, even if you actually take longer to drive it due to pausing, etc. I have run them all except for the 24 hour races so I have first hand knowledge.

The only place where we loose a UCD day is running the Formula GT World Championship because its 6 races. I'm getting close to this series again in my current UCD game, and I haven't yet decided what to do about it.

.....GTsail
Not sure if you missed a few days but I saw a few extra cars that weren't in your data (inc. a Pescarolo Courage)
I managed to miss a day myself as I was goin back through my early days

I don't think that I've missed any days, but I will re-check the XMB tonite and make sure. My data is one car shifted from the Fastas list, so I always have to be careful when matching up my days to the Master list.

Respectfully,
GTsail
 
Last edited:
The only place where we loose a UCD day is running the Formula GT World Championship because its 6 races. I'm getting close to this series again in my current UCD game, and I haven't yet decided what to do about it.

The solution I opted for was to back up the save file when I was ready to start it, advance the UCD by one day and note it down, then restore the backup save and run the series. It's not a great deal of work, and worth it to know that I haven't left one of the cars I'm really hunting for in the UCD on the one day I didn't check it.
 
TornadoAlley, my PS3 phat had a YLOD, I added a few more days since I posted, but not much. I'll be starting a new spreadsheet soon once I have a chance to do some data entry from my replacement PS3. Here is my now dead PS3's UCD data:
https://spreadsheets.google.com/ccc...ld1X3hfOXMzc2VUNERLNUE&hl=en&authkey=COLLypEM
Hope its some what useful, maybe another poster here will run into part of my list?

Update: On my new PS3, I'm in the Master_List 2. My Day1/Car1 is row 151/Day 25/Car 6, aka an Oullim Spirra. That is too bad... I think my phat, because it was from 2007, had a console id that was far off from the other posters in the thread, so it had a good chance of being totally out of range of the current posters. I have another PS3 I have access to, so I will see where that one lands.
 
Last edited:
TornadoAlley, my PS3 phat had a YLOD, I added a few more days since I posted, but not much. I'll be starting a new spreadsheet soon once I have a chance to do some data entry from my replacement PS3. Here is my now dead PS3's UCD data:
https://spreadsheets.google.com/ccc...ld1X3hfOXMzc2VUNERLNUE&hl=en&authkey=COLLypEM
Hope its some what useful, maybe another poster here will run into part of my list?

Update: On my new PS3, I'm in the Master_List 2. My Day1/Car1 is row 151/Day 25/Car 6, aka an Oullim Spirra. That is too bad... I think my phat, because it was from 2007, had a console id that was far off from the other posters in the thread, so it had a good chance of being totally out of range of the current posters. I have another PS3 I have access to, so I will see where that one lands.
Interesting to know if the old (phat) PS3s are generally in another area of the Master Lists than the slim ones. Anyone got any data on this?
 
While an algorithm makes the most sense with regard to the generation of cars within the UCD I'm still having trouble wrapping my head around how everyone who finds themselves in the same list (be it #1 or #2) finds everything identical (except the starting point).

At the risk of being an obnoxious know-it-all I'm going to try and explain with an example of one possible implementation. If you feel I'm being obnoxious please be kind when telling me.

We have 800 cars in the UCD. So we need to choose a range a bit larger than 800 that will allow us to make a given car appear more or less frequently. The larger we choose this number the more control we will have over the frequency of a given car. Let's go with a range of 10000. I'm just choosing it because it will make it simpler to understand. 10000/800 is about 12. A car that has an average number of appearances will have 12 numbers alloted to it. If we want a car to be rare we allot less than 12. If we want a car to appear more we allot more than twelve. Now, we have broken down our range of 10000 (0-9999) so every number will lead us to a car. Step 1 complete. (Side note: have you noticed that a Ford GT '02 is more frequent since the UCD was changed? They probably changed the frequency of this car because for many it did not appear in the first 2000 days or so. )

Next we need a pseudo random number generator. PD probably chose one for how good it is. I'm going to choose one for how simple it is. First, we want a seed that varies little. Let's choose something either PSN ID or Ethernet address, whatever it does not matter as long as it is always available and will not change on a given PS3. If the number is greater than 1000 we will just lop of any thing greater than 1000. So, for example we might get a number like, 435,329,726. In that case we will just take the 726 and make that our seed. Now, we are always going to add that 726 to the current in game day times 6(because we generate 6 cars every day). We will also have a number for the particular car within the day(0-5). Our seed will always be 726+6*(current day-1)+(car in day #). Next, we need a way to turn the seed into an apparently random number in our range of 10000. We are going to choose a prime number near our limit of 1000. I am arbitrarily choosing 9781. By the way, choosing say 9743 instead will result in a completely different list. This might be how they generate two different lists. For our random number generator we are just going to multiply the seed by the magic number 9781. So on day zero we get

9743*(726+6*0+0) = 9743*726 = 7,073,418.

We are just going to lop off any thing over 10000. So, our random number is 3,418. We take that number and look it up in our range of cars we made up earlier and that is the car that comes up in the UCD The rest of the cars for the day are

9743*(726+6*0+1) = 9743*727 = 7,083,161
9743*(726+6*0+2) = 9743*728 = 7,092,904
9743*(726+6*0+3) = 9743*729 = 7,102,647
9743*(726+6*0+4) = 9743*730 = 7,112,390
9743*(726+6*0+5) = 9743*731 = 7,122,133

Again lopping off anything after 10000 we get 3161 for our next car. The first car on the 15th day we will get

9743*(726+6*15+0) = 9743*810 = 7,891,830.

Again lopping off any thing after 10000 we get 1830 which we look up in our range of cars.

There are certainly a few issues with this example and it is almost certainly not the actual implementation. However, I hope it helps you understand what is likely going on a bit better.
 
> benjoromo
Nice work! The number crushers here can give a better answer I guess :)

Still hoping that ends will meet; that one list will overlap the other. It would be nice to get some help from the insane-super-grinders on day 10000/20000+ - contributing to both camps. If it at that point is no signs of a cycle I guess there is little hope.

BTW - on day 666 we now have the Diablo :D
 
benjoromo
This is interesting, I definately think there's something here:tup:
Think they could probably jumble the order like this, jumble it again, then again and maybe once more to make it appear fully random.
I'm getting lots of cars appearing twice in very quick succession, there's got to be something behind it:odd:
 
I've just gone back and checked my XMB and I'm three days off!

Thanks for the heads-up jaymanji,👍 I don't know what happened, since I thought I was being careful. I guess not careful enough!:dunce:

Somehow between days 105 and 116 I jumped three days. Looking at TornadoAlley's list, I can see that he has already moved my days forward, so they look good. Thanks.

Anyway, more progress so here's my UCD data for the Fastas list #2:

My days 143 to 159

https://spreadsheets.google.com/ccc?key=0AhLnvpaHGHQEdDBTZzdWclEzVXJabDBkZHhrLWw4cVE&hl=en


My days 159 to 179

https://spreadsheets.google.com/ccc?key=0AhLnvpaHGHQEdFhjaUVNU0lfSTQwSFpUcF9uOWI4bnc&hl=en


My days 179 to 203

https://spreadsheets.google.com/ccc?key=0AhLnvpaHGHQEdENBaUhLcm5xNXNNT3JnZHpxMWNpa0E&hl=en


Respectfully,
GTsail
 
Last edited:
Back