diff --git a/doc/options.md b/doc/options.md index 2f87fbfe8..1e12d08dd 100644 --- a/doc/options.md +++ b/doc/options.md @@ -66,8 +66,8 @@ Listed below are all of the options supported in options.txt ### Audio options |Name|Default|Description| |--|--|--| -`soundsvolume`|`0` for webclient
100 elsewhere|Volume of game sounds (e.g. break/walk sounds)
Volume must be between 0 and 100 -`musicvolume`|`0` for webclient
100 elsewhere|Volume of game background music
Volume must be between 0 and 100 +`soundsvolume`|`0` for webclient
`100` elsewhere|Volume of game sounds (e.g. break/walk sounds)
Volume must be between 0 and 100 +`musicvolume`|`0` for webclient
`100` elsewhere|Volume of game background music
Volume must be between 0 and 100 `music-mindelay`|`120` (2 minutes)|Minimum delay before next music track is played
Delay must be between 0 and 3600 `music-maxdelay`|`420` (7 minutes)|Maximum delay before next music track is played
Delay must be between 0 and 3600 @@ -114,8 +114,10 @@ Listed below are all of the options supported in options.txt ./Game.c: Game_AllowServerTextures = Options_GetBool(OPT_SERVER_TEXTURES, true); ### Hacks options -./Entity.c: hacks->Enabled = !Game_PureClassic && Options_GetBool(OPT_HACKS_ENABLED, true); -./Entity.c: hacks->SpeedMultiplier = Options_GetFloat(OPT_SPEED_FACTOR, 0.1f, 50.0f, 10.0f); +|Name|Default|Description| +|--|--|--| +`hacks-hacksenabled`|`true`|Whether hacks are enabled at all
Has no effect in 'classic only' game mode +`hacks-speedmultiplier`|`10.0`|Speed multiplier/factor when speedhacks are active
Multiplier must be between 0.1 and 50.0 ./Entity.c: hacks->PushbackPlacing = Options_GetBool(OPT_PUSHBACK_PLACING, false); ./Entity.c: hacks->NoclipSlide = Options_GetBool(OPT_NOCLIP_SLIDE, false); ./Entity.c: hacks->WOMStyleHacks = Options_GetBool(OPT_WOM_STYLE_HACKS, false); diff --git a/src/Formats.c b/src/Formats.c index 6843de942..529054d36 100644 --- a/src/Formats.c +++ b/src/Formats.c @@ -894,34 +894,25 @@ static int Dat_I32(struct JFieldDesc* field) { return field->Value.I32; } -cc_result Dat_Load(struct Stream* stream) { - cc_uint8 header[10]; +static cc_result Dat_LoadFormat2(struct Stream* stream) { + struct LocalPlayer* p = &LocalPlayer_Instance; + cc_uint8 header[5]; struct JClassDesc obj; struct JFieldDesc* field; cc_string fieldName; cc_result res; int i; - - struct LocalPlayer* p = &LocalPlayer_Instance; - struct Stream compStream; - struct InflateState state; - Inflate_MakeStream2(&compStream, &state, stream); - - if ((res = Map_SkipGZipHeader(stream))) return res; - if ((res = Stream_Read(&compStream, header, sizeof(header)))) return res; - /* .dat header */ - if (Stream_GetU32_BE(&header[0]) != 0x271BB788) return DAT_ERR_IDENTIFIER; - if (header[4] != 0x02) return DAT_ERR_VERSION; + if ((res = Stream_Read(stream, header, sizeof(header)))) return res; /* Java seralisation headers */ - if (Stream_GetU16_BE(&header[5]) != 0xACED) return DAT_ERR_JIDENTIFIER; - if (Stream_GetU16_BE(&header[7]) != 0x0005) return DAT_ERR_JVERSION; - if (header[9] != TC_OBJECT) return DAT_ERR_ROOT_TYPE; - if ((res = Dat_ReadClassDesc(&compStream, &obj))) return res; + if (Stream_GetU16_BE(&header[0]) != 0xACED) return DAT_ERR_JIDENTIFIER; + if (Stream_GetU16_BE(&header[2]) != 0x0005) return DAT_ERR_JVERSION; + if (header[4] != TC_OBJECT) return DAT_ERR_ROOT_TYPE; + if ((res = Dat_ReadClassDesc(stream, &obj))) return res; for (i = 0; i < obj.FieldsCount; i++) { field = &obj.Fields[i]; - if ((res = Dat_ReadFieldData(&compStream, field))) return res; + if ((res = Dat_ReadFieldData(stream, field))) return res; fieldName = String_FromRaw((char*)field->FieldName, JNAME_SIZE); if (String_CaselessEqualsConst(&fieldName, "width")) { @@ -945,6 +936,23 @@ cc_result Dat_Load(struct Stream* stream) { return 0; } +cc_result Dat_Load(struct Stream* stream) { + cc_uint8 header[5]; + cc_result res; + + struct Stream compStream; + struct InflateState state; + Inflate_MakeStream2(&compStream, &state, stream); + if ((res = Map_SkipGZipHeader(stream))) return res; + + if ((res = Stream_Read(&compStream, header, sizeof(header)))) return res; + /* .dat header */ + if (Stream_GetU32_BE(&header[0]) != 0x271BB788) return DAT_ERR_IDENTIFIER; + if (header[4] != 0x02) return DAT_ERR_VERSION; + + return Dat_LoadFormat2(&compStream); +} + /*########################################################################################################################* *--------------------------------------------------ClassicWorld export----------------------------------------------------*