Eureka! Major insight into MR2 Shrine stat generation!

Monster Rancher Metropolis: The Laboratory: Technical Research On The Monster Rancher CD Read Process: Ongoing Research : Eureka! Major insight into MR2 Shrine stat generation!
By Quincunx on Tuesday, August 7, 2001 - 06:29 am:

I just made a major discovery regarding how the MR2 Shrine generates statistics for monsters from CDs. There's a lot more work I need to do, but I'll post some initial findings as a bit of a "teaser" and to raise the spirits of everyone who's been doing research.

My new hypothesis: The MR2 shrine uses a table of 60 sets of six numbers to generate statistics. The set of numbers corresponding with PSec2 is added to baseline stats for the main and sub breeds to generate the stat numbers.

PMin1PMin2PSec2Main/SubLifPowIntSkiSpdPow
101Gaboo/Gaboo185136386717373
102Gaboo/Gaboo206147314517686
103Gaboo/Gaboo190142495818269
104Gaboo/Gaboo205126504816084
111Tiger/Zuum75106128187163103
112Tiger/Zuum96117121165166116
113Tiger/Zuum8011213917817299
114Tiger/Zuum9596140168150114


In each case, the Tiger/Zuum's stats equal the corresponding Gaboo/Gaboo's stats -110, -30, +90, +120, -10 and +30 respectively.

The baseline for Gaboo (the one you can get at the Market) is 190/120/30/40/150/70. If the baseline for Datonare is 80/90/120/160/140/100, this would strongly support my findings.

The 60x6 table would look something like this:

PSec2+Lif+Pow+Int+Ski+Spd+Def
06161824264
1-516827233
21627152616
3022191832-1
41562081014


...and so on.

OK, I'm getting excited. «smile»


By Quincunx on Tuesday, August 7, 2001 - 07:14 am:

I'm going to need some sedatives. «grin»

Just figured I'd mix a baseline Tiger and a baseline Zuum to see if the resulting Datonare would have the stats mentioned above.

I got the Zuum from the market. Its stats are 130/120/80/140/100/110.

No Tigers in the market. I checked my CD collection. Ping! Negativland's "Escape From Noise" makes a pure Tiger. Its stats are 88/115/142/191/150/57.

I Shrined two of these Tigers and combined them. The resulting Tiger's stats: 81/93/131/164/141/70.

I then Shrined two more of the Tigers and combined them. The resulting Tiger's stats: again, 81/93/131/164/141/70.

I then combined the two new Tigers. The third-generation Tiger's stats: 80/90/130/160/140/70.

Since these are all multiples of 10, it looks like this is the baseline for Tiger.

I then combined the baseline Tiger with the market Zuum. The result: a Datonare (Tiger/Zuum). Its stats: 80/90/120/160/140/100.

This matches my prediction from the previous post!

Conclusions:
• Combining two pairs of a pure monster from CD, then combining the resulting monsters, appears to yield a baseline version of that monster.
• In my previous post, I'm definitely on to something.

Now here's a mystery.

BreedLifPowIntSkiSpdDef
Baseline Tiger8090130160140100
Baseline Zuum13012080140100110
Baseline Datonare8090120160140100


The only stat difference between basline Tiger and baseline Datonare is Int. Since Zuum's Int is 50 less than Tiger's Int, Datonare's Int is 10 less than Tiger, its Main.

A guess here: The baseline stat for a mixed breed is the baseline stat for its main breed, minus 10 for every full 50 points lower the baseline stat for the sub breed is than the main breed.

Nope, no luck there. Look at Crab Saurian (Arrow Head/Zuum).

BreedLifPowIntSkiSpdDef
Baseline Zuum13012080140100110
Baseline Arrow Head12080703040170
Baseline Crab Saurian13012080150110140


The pattern held for the first three stats, but the last three don't follow at all.

Oh, well... can't expect to crack all the game's secrets in one morning. «shrug»


By Quincunx on Tuesday, August 7, 2001 - 07:43 am:

Here's the full table if anyone wants to look into it on their own. (Yes, I burned 60 CDs to get this table. Good thing they were on sale.)

PSec2+Lif+Pow+Int+Ski+Spd+Def
06161824264
1-516827233
21627152616
3022191832-1
41562081014
5-6238112516
617722202211
717061933-6
87182423621
9-5112961719
101122129115
11-2253191915
12211728258-7
13-2102322918
1423-2261616-1
15-61516142217
161213124319
1718211118174
1872720333
19028143205
205-11513186
211611175419
221421917187
23-3192221150
24202442368
2519773223-6
262141828288
27816279520
28181243111-2
2912131472417
30132824822
31-110112426-4
321015258169
3366253212-8
349142627510
35101912102412
3613910301511
371421133114-3
382136103113
392221431212
40520212125-7
411117-1112115
4211516172718
432201516913
44-426232227-4
45132752530-5
46651152920
47231182631
481590141422
49-42829619-5
50441715294
51-32322876
52825137217
539183932-3
54-72423028-2
5522-12729100
56412102714
57-145263021
582026204410
591920013201


Best composite: PSec2 = 6 or 8 (+99)
Worst composite: PSec2 = 56 (+49)

Caveat: All this data comes from CDs with one track. There could well be an additional figure from another track that is added or subtracted.


By CatsGodot on Tuesday, August 7, 2001 - 07:55 am:

VERY KEWL.

--Cats


By CatsGodot on Tuesday, August 7, 2001 - 07:58 am:

Btw, from which table is "PSec2"? Which track is this referring from--the total time of the CD, or the first track? Are you referring to control A2?

--Cats


By Quincunx on Tuesday, August 7, 2001 - 08:00 am:

I just compared this table to Enigma's Mum Mew family in the thread Modifying subcode to affect stats and monster type in Monster Rancher 2, and the numbers match up.

The only odd thing is that when I reverse the calculation, it gives me baseline stats for a Mum Mew of 103/68/87/132/144/107. Of course, this is for a 12-track disc, not a 1-track disc like I was using.

So the stat formula appears to be something like SN=BN+MN+T(PSec2,N), where N is [1 for Lif, 2 for Pow... 6 for Def], SN is the value the Shrine generates for the Nth stat, BN is the baseline stat value, MN is some other modifier that I haven't worked out yet, and T(PSec2,N) is the entry on the above table corresponding to the PSec2 value and the stat.


By Quincunx on Tuesday, August 7, 2001 - 08:07 am:

Cats: By PSec2, I'm referring to the PSec value from Entry 2, which would be the total time of the CD. It's also the length of the first track on the CDs I burned, because they were one-track CDs. But the numbers under Entry 3 are not particularly interesting: PMin=0, PSec=2, Frame=0, PLBA=0. They just tell where the first track starts, not its length.

I'm not sure what you mean by control A2. The entry with Point=0xa2 is Entry 2, the one I'm using the PSec from, but the Control value for that entry is 0x00, as it is for all entries on these CDs.


By CatsGodot on Tuesday, August 7, 2001 - 08:18 am:

Short answer: Okay, I got it. I kinda figured you were using total time (by $A2 control, I'm referring to subcode table $A2, which *is* the total length of the CD)--since you stated you were using a 1-track only CD. But I wanted to make sure I (and anyone else reading) was absolutely clear on the postings.

Something else I'm thinking...what if the monster type itself is independent of the values *on* the CD (aside from hard-coded rares)? What if the M:S:Fs all yield differing stats, and then those stats determine the creature--ie, instead of saying:

MM:SS:FF will yield a Suezo. Now use the seconds to determine its stats...

It does this:

MM:SS:FF makes the following stats: xx-xx-xx-xx-xx-xx. Now which monster and subbreed match closely with it?

I admit, it's a bit of a longshot, but certainly worth considering.

Btw, you may also want to look at the thread I just posted about "updated" research--I have some burnt Gaboos there, too, along with times and stats.

--Cats


By Quincunx on Tuesday, August 7, 2001 - 08:33 am:

Thanks for the clarification on $A2. There are three levels on which we can talk about the makeup of a CD: (1) the actual subcode (using the term technically correctly here), (2) the table of contents based on PMin, PSec, PFrame, PLBA, etc., and (3) the lengths of the tracks in minutes and seconds and frames. Since they're all being used by various people, things get misunderstood sometimes.

And as for your latest thought, it's not the most elegant solution programmingwise, but it is possible. Looks like more research and less sleep for me. «grin»


By Quincunx on Tuesday, August 7, 2001 - 09:32 am:

Here's a bit more data I've uncovered.

PMin1PMin2PSec2Main/SubLifPowIntSkiSpdDef
110Tiger/Zuum86106138184166104
120Monol/Zuum9612613812456154
130Gali/Zuum106146158134116104
140Baku/Jell15613610812496134
150Ghost/Ghost10610613816417684
160Suezo/Zuum86136168154116104
170Niton/Kato9676128104146134
180Zuum/Baku13613698134116104
190Kato/Mocchi769618816417694
1100Zuum/Baku13613698134116104
1110Naga/Zuum11616678164126124


First, the obvious: All the last digits match in each column. More evidence to support my hypotheses so far.

Next, the subtler: There's a lot of Zuum subs here: Tiger/Zuum, Monol/Zuum, Gali/Zuum, Suezo/Zuum and Naga/Zuum. So why not Baku/Zuum, Ghost/Zuum, Niton/Zuum and Kato/Zuum? Because there are no such monsters in the game.

And why Zuum/Baku and not Zuum/Zuum? I'm not sure. One possibility is that there's a table in the Shrine program that has a special sub "breed" which is Pure; that is to say, if the sub is Pure, it makes the pure-breed form of the main breed. If the sub is the same as the main, on the other hand, the Shrine may change the sub to a different type.

All this is sheer hypothesis, of course. I have so much more research to do, and I can't stay awake any longer today, so it will have to wait for tomorrow. But I feel like I've found the first couple of bones in an archaeological dig, and that means the rest of the skeleton can't be too far away, right? «smile»


By CatsGodot on Tuesday, August 7, 2001 - 06:34 pm:

Question: I don't have limited resources, but that doesn't mean I don't have *any*. Are there some times you want tested, or the rest of us to try out? I figure, the more that do this, the faster it can be done.

I see this chart, and I tend to agree with your hypothesis that non-existant critters are replaced with existant ones.

--Cats


By CatsGodot on Tuesday, August 7, 2001 - 06:45 pm:

Errghhh...sorry, that first line should have read "I may have limited resources"...

Lesson here, kiddies: never post with a fever. Even random words will make sense.

And a sinewave would make sense...I mean, you're talking time, whose base is 60 minutes/60 seconds. 360 degrees / 60 = 6. Possibly correlation? What if each value is determined by a difference phase or constant against a sine/cos/tan of the given second (or given second * 6)?

--CG


By Quincunx on Wednesday, August 8, 2001 - 12:25 am:

Cats: I've still got hundreds of blank CD-Rs, so resources aren't an issue for me And I thank you for the kind and generous offer of assistance, but for the time being, since I'm still in the exploration stage, I'm not really able to say, "OK, Cats, could you check this range from X to Y?"... generally because I'm working very methodically in large bursts.

And time is not a factor for me. Since I have few obligations in life, I have "all the time in the world" to work on this project. Also, I've got the perfect set-up ergonomicswise for doing this kind of work, and it only takes a hair over a minute for me to go from one disc to the next, since I burn disc 073 as I'm shrining disc 072.

The problems with collaboration on this outweigh the work it would save me if someone were to help out. I'd be more helped by insights and observations on my posts than I would by other people burning CD-Rs for me outside of my "controlled environment."

Thanks for the offer, though! «beaming smile»


By Quincunx on Wednesday, August 8, 2001 - 12:30 am:

As for the sine wave, does anyone know if PS hardware can do trig on the fly? Or would that be a cumbersome software task? I'd guess that any machine that can render a 3D environment and trace a trajectory can calculate a sine.

Regardless, I honestly don't think it's that complex, especially after discovering that the random factors in stat generation apparently come from a number table, not a formula. I'd expect it's probably more like X=A+B+C than X=50 sin (A+B)+tan-1C.


By CatsGodot on Wednesday, August 8, 2001 - 10:21 am:

Well, it's probably a lut--this is my thought process, and pretty useful, considering how much code I wrote to do 3d animations myself (ie "before" OpenGL).

If you're doing a one-time trig function, it doesn't matter. The fpu (which, i think i can safely assume, is a part of the ps processor) handles it. It's slow if you do it 100x over the timespan of a second, but doing it 6 times every minute or so...well...no one really notices it.

So, then, when I had to get around that, how did I handle it? A lut (LookUp Table). Basically, if i had an angle (or, usually, an angle between 5 or 6 degrees, to minimize memory/space), the function would use an optimized switch statement and return the value instantly. (Or something very similar to those lines--i don't remember if i did a quick-array-check--it a static array, and i instantly calculated the offset within the array...but this is neither here nor there...)

Point is: I tend to agree it's a lut. The values may have been generated previously, but it's still possible that a very simple trig equation was used, as well. Whatever.

Anyway, my offer still stands. It should like you've got a far better setup than I; the only thing I should try to "one up you" is see if VPC will accept MR2 on my G4. On my iBook, it would run (SLOWLY), but it wouldn't allow me to shrine critters. (That way, i don't even have to move in the least--burn, run VPC, shrine, burn, etc...but it sounds like you've got me beat there anywho).

Anyhow, just let me know if you want a series of CDs to analyze. I may just do some anyway, who knows. Blah.

--Cats


By Quincunx on Friday, August 10, 2001 - 11:13 pm:

Here's a way to actually use this PSec2 data and CloneCD to do something useful: tweak the stats of a monster on one CD to create another CD with stats more aligned to your preferences.

This won't make a Pixie with 220 Pow or a Golem with 210 Int. But if you have a CD that makes a monster you like but you'd like to, say, boost its Lif and Def a few points at the expense of a few points of Int, here's how.

NOTE: This will NOT work with rares! Tweaking the ToC data from a rare will likely give you a random common monster.

NOTE: This method will NOT give your monster 999s or even 500s for stat values. At best, you will get a gain of as much as 30 in one stat, and no more than 50 in the composite.

1) First, you must have the Table of Contents data (popularly called "subcode") for the monster you wish to modify. Either use CloneCD to make the Image.ccd file from a CD you have, or use subcode data listed on this site.

2) Using the table below, look at which stat(s) you want to increase and find the corresponding number.

3) Under Entry 2 in the Table of Contents data in Image.ccd, replace the number in the line that says PSec= with the number you found in step 2.

3a) Recalculate the PLBA for Entry 2. PLBA = (PMin * 60 + PSec) * 75 + PFrame -150. Update the value in the Image.ccd file.

4) Now burn the CD as you normally would.

Again, it's only a small gain, but it has the potential to help your monster succeed, especially at a young age.

Stat(s) to increase...Use this PSec value
Lif14 (high Int, low Pow and Def) or
47 (high Ski and Int, low Pow, Spd and Def)
Pow19 (low Lif and Ski) or
49 (high Int, low Lif,Ski and Def)
Int9 (high Def, low Lif and Ski) or
49 (high Pow, low Lif,Ski and Def)
Ski25 (high Lif and Spd, low Pow, Int and Def) or
33 (high Int, low Pow, Spd and Def)
Spd7 (high Lif, low Pow, Int and Def) or
18 (low Pow and Int)
Def30 (high Int and Ski, low Lif, Pow and Spd) or
48 (high Lif, low Int)
Lif+Pow58 (low Ski and Spd)
Lif+Int12 (high Ski,low Spd and Def) or
14 (low Pow and Def)
Lif+Ski25 (high Spd, low Pow, Int and Def) or
55 (high Int, low Pow, Spd and Def)
Lif+Spd38 (high Def, low Pow, Int and Ski)
Lif+Def48 (low Int)
Pow+Int49 (low Lif, Ski and Def)
Pow+Ski54 (high Spd, low Lif, Int and Def)
Pow+Spd45 (high Lif and Ski, low Int and Def)
Pow+Def2 (high Lif and Spd, low Int and Ski)
Int+Ski33 (low Pow, Spd and Def)
Int+Spd3 (high Pow, low Lif and Def)
Int+Def30 (high Ski, low Lif, Pow and Spd)
Ski+Spd54 (high Pow, low Lif, Int and Def)
Ski+Def57 (high Spd, low Lif, Pow and Int)
Spd+Def57 (high Ski, low Lif, Pow and Int


Note: Only entries giving the maximum possible values of the desired stat(s) have been listed. In the parenthetical comments above, "high" indicates stats in the top third of the possible range, while "low" indicates stats in the bottom third.

I could do the best values for each set of three stats, but that's 40 more entries.


By Enigma on Saturday, August 11, 2001 - 05:38 pm:

I'd like to express my thanks to those of you who have taken up the cause. We're finally coming up with some actual results.
Never fear, I'm still doing some of this on my own as time permits (time being my one limiting resource, with that odd PSX that actually reads CD-RW's).
Last week I was able to put together another list of 20 monsters (Sneak Hoppers pulled off in consecutive seconds from Mellow Gold. Yes, I still haven't quite given up the foolish notion that Moo might be found), and I'll use your data to compare stat variations.


By mepersoner on Saturday, August 11, 2001 - 09:37 pm:

Hmmmm... I just read this entire thread... very useful knowledge.


By Quincunx on Sunday, August 12, 2001 - 04:21 am:

I know there's still one other factor that affects stats besides the PSec2 table and base stats for the breed. It's a set of constants, one for each stat, that is added in, and comes from somewhere like number of tracks or ToC data for Entry 4 or later. It's why, say, all pure Galis with PSec2 of 8 don't have the same stats.

I've run into a small obstacle in my research, as I've burned over 60 more CDs looking for a loop in monster breed from modifying PMin2 and haven't found one. Coincidentally, I also didn't find a Worm or a Dragon in the series. But I'm still going, a little at a time.


By John Hawley on Sunday, August 12, 2001 - 08:56 am:

Don't know if this helps, but going through the CD lists I've noticed that almost all the records for Dragon and Worm are on audio CDs. There's a total of 8 or 9 games that produce Dragon or Worm.


By Quincunx on Monday, August 13, 2001 - 02:47 am:

John: Actually, I have only run PMin2=1 to PMin2=65 so far; I won't have truly finished the cycle until I get to PMin2=80, which is the theoretical maximum for a CD. There's also the possibility that Worm and Dragon are not findable in the simple search I am doing (one-track audio CDs with PSec2=0) and must come from multi-track CDs. I hope to get to this by Wednesday morning.

Danz: What you're suggesting seems unlikely to be possible. In all my observations, the list of techs seems not to come from the Table of Contents data, but directly from the monster breed. The one exception I've seen to this is a CD exists which makes a pure Worm that gets Roll Assault, but this disc may be considered a rare.
[For more info: The Laboratory > Subcode Data Files > Monster Rancher 2 Subcode > CD Subcode Data Archive /??? Monsters > MR2: Worm/Worm (???) (Modified CDD)]
But it may be possible; I won't rule it out. If and when I get to the point where I can generate at will a monster of any breed with desirable stats, this is something I might look at.