Haven't seen much info on it, especially any defining of each byte in the file.
The preferences are read when the client opens but I got this info from the login block.
The preferences.dat stores 34 bytes of general information about your client such as graphics or volume settings.
The first byte is an opcode, in this case 24 but there can be other values.
What the client does during game login.
Code:
final ByteStream method2452(int i) {
ByteStream stream = new ByteStream(Class208.method2624());
stream.writeByte(24);
stream.writeByte(aClass157_Sub6_4822.method1332());
stream.writeByte(aClass157_Sub15_4808.method1360());
stream.writeByte(aClass157_Sub22_4802.method1397());
stream.writeByte(aClass157_Sub1_4792.method1317());
stream.writeByte(aClass157_Sub19_4786.method1382());
stream.writeByte(aClass157_Sub20_4796.method1387());
stream.writeByte(aClass157_Sub2_4791.method1320());
stream.writeByte(aClass157_Sub10_4809.method1347());
stream.writeByte(aClass157_Sub11_4814.method1350());
stream.writeByte(aClass157_Sub4_4816.method1326());
stream.writeByte(aClass157_Sub25_4821.method1408());
stream.writeByte(aClass157_Sub24_4800.method1404());
stream.writeByte(aClass157_Sub28_4787.method1419());
stream.writeByte(aClass157_Sub13_4794.method1356());
stream.writeByte(aClass157_Sub14_4824.method1359());
stream.writeByte(aClass157_Sub18_4799.method1379());
stream.writeByte(aClass157_Sub26_4797.method1410());
stream.writeByte(aClass157_Sub21_4790.method1393());
stream.writeByte(aClass157_Sub16_4798.method1365(false));
stream.writeByte(aClass157_Sub8_4811.method1342());
stream.writeByte(aClass157_Sub29_4820.method1424());
stream.writeByte(aClass157_Sub9_4807.method1346());
stream.writeByte(aClass157_Sub23_4817.method1400());
stream.writeByte(aClass157_Sub27_4805.method1413());
stream.writeByte(aClass157_Sub3_4804.method1323());
stream.writeByte(aClass157_Sub12_4795.method1354());
stream.writeByte(aClass157_Sub5_4789.method1330());
stream.writeByte(aClass157_Sub7_4815.method1339());
stream.writeByte(aClass157_Sub7_4825.method1339());
stream.writeByte(aClass157_Sub7_4801.method1339());
stream.writeByte(aClass157_Sub7_4785.method1339());
stream.writeByte(aClass157_Sub7_4813.method1339());
stream.writeByte(aClass157_Sub17_4803.method1371());
return stream;
}
What these are (in order)
Code:
opcode = payload.readUnsignedByte().toInt(),
antiAliasing = payload.readUnsignedByte().toInt(),
bloom = payload.readUnsignedByte().toInt(),
brightness = payload.readUnsignedByte().toInt(),
buildArea = payload.readUnsignedByte().toInt(),
flickeringEffects = payload.readUnsignedByte().toInt(),
fog = payload.readUnsignedByte().toInt(),
groundBlending = payload.readUnsignedByte().toInt(),
groundDecoration = payload.readUnsignedByte().toInt(),
idleAnimations = payload.readUnsignedByte().toInt(),
lightingDetail = payload.readUnsignedByte().toInt(),
sceneryShadows = payload.readUnsignedByte().toInt(),
particles = payload.readUnsignedByte().toInt(),
removeRoofs = payload.readUnsignedByte().toInt(),
maxScreenSize = payload.readUnsignedByte().toInt(),
skyDetail = payload.readUnsignedByte().toInt(),
characterShadows = payload.readUnsignedByte().toInt(),
smallTextures = payload.readUnsignedByte().toInt(),
textures = payload.readUnsignedByte().toInt(),
graphicsMode = payload.readUnsignedByte().toInt(),
animateBackground = payload.readUnsignedByte().toInt(),
waterDetail = payload.readUnsignedByte().toInt(),
screenSize = payload.readUnsignedByte().toInt(),
customCursors = payload.readUnsignedByte().toInt(),
preset = payload.readUnsignedByte().toInt(),
cpuUsage = payload.readUnsignedByte().toInt(),
loadingSequence = payload.readUnsignedByte().toInt(),
safeMode = payload.readUnsignedByte().toInt(),
soundEffects = payload.readUnsignedByte().toInt(),
areaSounds = payload.readUnsignedByte().toInt(),
voiceOverVolume = payload.readUnsignedByte().toInt(),
music = payload.readUnsignedByte().toInt(),
themeMusicVolume = payload.readUnsignedByte().toInt(),
stereoSound = payload.readUnsignedByte().toInt()
Originally Posted by
Graham
> The first byte is an opcode, in this case 24 but there can be other values.
It's really the version number, so the client can load older preferences files. e.g. 550 uses v11: