I've seen that thread before, but at this point I don't think it can help me further:/
I think I got em now by just isolating myself with the client
the first 8 ukeys are always 0xff 0x00 0xff 0x00 INT
int is 4 bytes so far every revision i've seen it's 0x00 0x00 0x00 SOMEBYTE, I took the same as in 474(0x80) and it kinda worked..
Then the next ukeys are 4 bytes for crc value and another 4 bytes for FIT revision, so that's 8 bytes for every cacheidx in that revision
The last 8 ukeys don't really come into play (I think), if I change them on other revisions it still works perfectly, so I took the same ones as in 474: 0xb8 0xf2 0x4d 0x21 0x00 0x00 0x00 0x00
However I'm not 100% sure it is correct, but for now I'm blaming it on incomplete 471 cache
, if anyone has anymore information about this or a 471 cache that you're sure of is complete please respond. (I think the cache is incomplete because I keep getting stuck either at sound engine or loading fonts..)
Code:
public static int UNKNOWN = 0x80;//change
public static void makeIt(int i, int[] keys, int pos){
keys[pos] = i >> 24;
keys[pos+1] = i >> 16;
keys[pos+2] = i >> 8;
keys[pos+3] = i;
}
public static int[] crcVals = {595519776, 525774820, -2012082158, -615227200, 789053345, -1973169980, 2071664368, -965120839,
907761831, 405724540, 785097901, -1293052677, -1573563692, 126773822, -1551042924, -1192080095};//16 ints need to be i think
public static int[] fitVals = {0, 0, 186, 92, 15, 57, 0, 96, 19, 0, 0, 0, 74, 1, 1, 0};//16 ints
public static int[] getUKEYS(){
int[] ukeys = new int[8+crcVals.length*8*2+8];
ukeys[0] = -1;
ukeys[1] = 0;
ukeys[2] = -1;
ukeys[3] = 0;
ukeys[4] = 0;
ukeys[5] = 0;
ukeys[6] = 0;
ukeys[7] = UNKNOWN;
for(int i = 0; i < crcVals.length; i++){
makeIt(crcVals[i], ukeys, 8+i*8);
makeIt(fitVals[i], ukeys, 12+i*8);
}
int pos = (crcVals.length - 1)*8+12+4;
ukeys[pos] = 0xb8;
ukeys[pos+1] = 0xf2;
ukeys[pos+2] = 0x4d;
ukeys[pos+3] = 0x21;
ukeys[pos+4] = 0;
ukeys[pos+5] = 0;
ukeys[pos+6] = 0;
ukeys[pos+7] = 0;
return ukeys;
}