Half-Life 2

Half-Life 2

188 ratings
Which Lamda cache am I missing
By gardian06
this guide is to help players figure out which of the Lamda locations they have missed (numbered with regards to the developers), so that the player does not have to replay the entire game just to find the one that is missing.
   
Award
Favorite
Favorited
Unfavorite
Finding the data to check
in your Library right click Half-Life 2 in the list.

hover over manage in the list, and select "browse Local Files"

open the "hl2" folder

open "gamestate.txt"

scroll down until you see a value that in the [data] field starts with 0x00 then has letters and or numbers following it

this is the value we are interested in (technically just what is after the x on that line, but starting at the 0x will not hurt
short version
the value you found in the section above is a Hex value.
  • don't worry to much about what it does, or why it looks like what it does. just so you know what it is, and that it is.

what we need to do is take that value, and change it to binary.
  • again don't worry to much about the original intended perpose. either use the windows calculator (in programming mode, inputting the portion to the right side of the "x"), do a web search for "hex to binary converter" or I include steps to do the conversion by hand bellow

all of the values that are 1 are the locations you have found, all of the values that are 0 are the locations you are missing.
  • to figure out the specific locations you are missing count from right to left (easiest way is to break it into groups of 4-5 for simplicity) there are only 45 locations in the game so if possition 46 on are 0 that is fine.

know that all of the location are set liniarly in the game, so location 10 will be somewhere between location 9, and 11.

also that you can get these across multiple playthroughs, and even by just loading into any porton of the game preceeding the location you are missing.

more detail on all of these steps is below.
Hex, Binary, and why we care
the value that we are looking at is called a hexidecimal number (Hex for short), and it is a simplification of binary (the form of the value we actually care about), but we don't care about what the number actually is, but just the representation itself.

in binary we use a combination of zeros, and ones, and powers of 2 to more easily define the value of a number, and for a computer to better understand it, but for the purpose of this guide just remember that 0 is "false" or "Off", and 1 is "true" or "On"

in hex we use a combinations of numbers 0 through 9, and letters A through F to symbalize values, but like I said we don't actually care what the number is, but the representation.

so we are given a value in hex, so we need to turn it into binary, so we can read what values are false.

there are 45 lamda caches in the game, and if they would have just used a list it would have been an input nightmare above, and beyond a cheaters dream, so the next easiest representation is binary, but we are talking about 45 values for the system to read in, and then do work on, so realistically that is to long to consider (there are concerns about speed, and such), so they just convert it to Hex for safe keeping, and since a computer using hex constantly it is not that complex for it to do work on it.

Side note: yes anyone with a programming background knows that the hex value in the file is actually far removed from real hex, or at the very least have ot be translated at least twice to even get the real hex value for symplisity of explanation sake I am just treating them the same.
What parts do I need?
for the most part when we talk about hex there is some question as to what part we are interested in. the anatomy of a hex value is
#x##########
the number to the left of the "x" is partially a throwback to days before 32bit processing, and was used to more clearly define what type of data the system was looking at so that it could prioritize what got processed when, and they also had a small correlation with IRQ: basically this piece of hardware has this priority, and therefore will get processed before anything with a bigger number for example they keyboard is at IRQ 2 or 3 (depending on BIOS), and therefore will superseed almost anything else (this was to have ALT+F4 be an absolute kill command, and the "windows key" to be known as a system interupt)
the "x" is actually just a divider with no actual purpose other then just to stand out, and be a seperator, and most of the time is only ever put ther for humans to read, and is actually just a blank in the system.
the numbers after the "x" is the actual data. what we are actualy looking for,

here are some conversions:
hex value = real number
0x00001 = 1
0x00010 = 16
0x0000F = 15
0x00011 = 17
0x000FF = 255
0xFF = 0x00000FF = 255

as you should be able to see each place each place in hex is equal to possition index multiplied by 15 (right most index is 0 because in programming we often just start counting at zero), but again I am showing you this not to obtain the real number but to show you what is actaully important about it.

so if the value is: 0x0000001FFFFFC3FF you would only need the 1FFFFFC3FF as any translation program will just ignore the "0x000000" part anyways
methods to convert hex to binary
1) Windows calculator since 7 has had a programming mode that most users have no idea what it even does if they ever find it. (the bad news I won't explain to you all that much of it beyond simple conversion)
under view select "Programming" the big things we are concerned with are the textbox, the binary display, and the upper left set of radio buttons.
make sure "Hex" is selected, and paste the hex value you got from the file in the calculator.
you should see the binary display change, and really you are done

2) in you favorit search engine put "hex to binary converter", and the first (non-ad) option should be something usable (google will not pop a example converter up which is kind of disipointing)
in the hex field put in the value you got from the file, and have it convert it to binary


3) converting by hand
each character represents a cluster of 4 binnary bits for simplisity sake the convertions are as follows:
0=>0000, 1=>0001, 2=>0010, 3=>0011, 4=>0100,
5=>0101, 6=>0110, 7=>0111, 8=>1000, 9=>1001,
A=>1010, B=>1011, C=>1100, D=>1101, E=>1110, F=>1111

then remember that we do all of our conversions, and counting from right to left, so some examples are as follows:
FDC=>1111 1101 1100, FCD => 1111 1100 1101, and CFD=>1100 1111 1101
deciphering the result
you should realistically get something that looks like this: 0100010001111101 (some combination of zeros, and ones. the simpleist way to explain this is to read this grouping of values from right to left with the one on the far right being the first value (the value directly to the left is the second, and so on).
while going through make a list of which values are zero (these are the locations you are missing) just remember that both of these representations remove leading (left hand) zeros to "save space", so if it only shows 111101 all of the other zeros have just been ignored.

for example
000011110101 is the same as 11110101

the numbering of the possitions is as follows
10101 | 0101010101 | 0101010101 | 0101010101 | 0101010101 | | | | 0987654321 | | | 0987654321 | +10 | | 0987654321 | +20 | 0987654321 | +30 54321 +40

one of the easiest ways to visualize this is by breaking the long string on numbers into more managable segments (in Comp science we usually use groupings of 4), and just remember that we are always talking about right to left.

so the above example becomes
1 | 0101 | 0101 | 0101 | 0101 | 0101 | 0101 | 0101 | 0101 | 0101 | 0101 | 0101 | | | | | | | | | 09 | 8765 | 4321 | | | | | | | 0987 | 6543 | 21 +10 | | | | 09 | 8765 | 4321 +20 | | 0987 | 6543 | 21 +30 5 | 4321 +40
here are some example conversions, and what they mean in this context:
1FFFFFFF92FF -> 1 1111 1111 1111 1111 1111 1111 1111 1001 0010 1111 1111
missing locarions: 9, 11, 12, 14, 15

1FFFFFFFDFFF ->1 1111 1111 1111 1111 1111 1111 1111 1101 1111 1111 1111
missing locations: 14

-------------------------------------------------
another way to desipher this if you have Windows 7 or 10 (not sure on win8) the built in calculator has a programming mode. then you can copy the value that you got into the calculator (making sure that you have it set to input binary) then it will break the number into blocks to make counting easier (keep in mind that the labels start counting from 0 not 1, so for our purposes the number shown is for didget before the break
--------------------------------------------------

I am not going to go into where each one of these are as there are already guides in the comunity that do this, but this will atleast tell you which ones you are missing here is the guide that I ended up using for my 100% playtherough was this one below
http://steamproxy-script.pipiskins.com/sharedfiles/filedetails/?id=216105493&tscn=1414535574
direct translation examples
0x001FFFFFC3FF -> 1 1111 1111 1111 1111 1111 1100 0011 1111 1111 ->
missing: 11, 12, 13 14

0x00000001B6F1 - >1 1011 0110 1111 0001 ->
mising: 2, 3, 4, 9, 12, 15, and 18 on

0x1FFDFFFFFFFF -> 1 1111 1111 1101 1111 1111 1111 1111 1111 1111 1111 1111 ->
missing: 34.

0x1000000000001 -> 1 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 ->
not missing 1, 45

0x1FE8C9FFF7FF -> 1 1111 1110 1000 1100 1001 1111 1111 1111 0111 1111 1111 ->
missing 12, 26, 27, 29, 30, 33, 34, 35, 37
possible to edit
I did not actually do this to my game, but after having a PM discussion with another player after relaying this file information to them they found a way to manipulate the data ?cheating?

Now this comes with a disclaimer: I am not an opponent, or proponent of "cheating" in games. people can have resurvations, and issues with "mitigating the challenge of a game"

at the end of the day games are designed with one goal in mind:"To Be Fun/Enjoyable", and achievements should give a sence of satisfaction upon completion, but some achievements are simply there to award the "clever", or "over-excentric"

if you would like to have a meaningful disscusion about the impact (actual, or imagined) of "cheating" in games then I will be open to do so, but I will not respond to "gamer nazi rage"

POINT OF SECTION:

because this data is held locally to the system, and referenced from file at point of loading then it is possible to moddify the value in the file, and by virtue give yourseft say all but one of the caches, and then enter the game, and obtain that cache to earn the achievement. I am not sure if you can moddify the value to be such that you get the achievement by opening the game. from what I understand something needs to change while the game is running to have the game check the state of the variable to relay to steam that the achievement needs updating on their end..
114 Comments
Stefan 18 Jul, 2024 @ 5:45am 
:gman:
el_crabbo 8 Mar, 2023 @ 1:31am 
Thanks for the guide. :alyx::eli::gordon:
SpaceGuy987 20 Dec, 2020 @ 4:35pm 
It was 1, and I actually did edit it. Thank you for the help, though.
gardian06  [author] 20 Dec, 2020 @ 4:27pm 
@spiceguy was the first non-zero number after the x a 1 or an F.
if the truncated value is a 1 followed by 10 Fs, and you did not get the achievement, then that might mean that the packet to the Valve achievement server either never got there, or was never sent. most games only send the packet for an achievement when it is unlocked. (some will attempt to send again later, but there is no callback from the achievement server, so this is not advised as it could be attempting to flood the port on the achievement server)

the good news is that many games don't keep tabs on what achievements were completed previously, and so if the criteria to unlock the achievement is met again then the packet to the achievement server will be sent again. (check "possible to edit" for more details) otherwise there may be some way to Manage Achievements of Steam, but I wouldn't be able to help you with that even if it did exist.
SpaceGuy987 20 Dec, 2020 @ 1:09pm 
My binary number equaled out to be all ones, which should mean I found all the caches. However, in Steam, it says I am "So close..." when I open up the overlay. This is the last achievement in order for me to 100% the game.
Aussie_Lapwing 17 Oct, 2020 @ 11:57pm 
@gardian06 Right, thanks for the info, that is very interesting. Luckily though I did get it so it's all good now! Thanks for putting this guide up!
gardian06  [author] 17 Oct, 2020 @ 11:06pm 
@rachniov (2/2) if you are interested in just giving yourself Steam Achievements that you feel you have earned there is a Manager or something that "probably" exists for that, but you would have to look for that yourself.
gardian06  [author] 17 Oct, 2020 @ 11:03pm 
@Rachniov that should have been 15 (windows calculator in programmer mode automatically puts them into clusters of 4 to make manually counting "easier") though having 44 be the trigger that gets the achievement instead of the one signified is strange.
on the changing the value manually (see "possible to edit) steam (the client application you use to launch your games) does not manually check a running executable for if criteria is met or not for achievements, but instead monitors an open channel for a special packet that includes specific information as to achievement progress (if it has been unlocked, should be relocked [yes this can happen and is in the api], if a progress should be incremented, or if it should be displayed to the user) so steam will not give you an achievement just cause you manually changed the thing the game would update to give the achievement.
Aussie_Lapwing 17 Oct, 2020 @ 2:06am 
Well I had an interesting experience.
My code was FFFFFFFBFFF, so using ("https://jsfiddle.net/autistic_retard/hswv2uqb/2/" , don't count the binary value manually), I was missing #15. This changed it to FFFFFFFFFFF, but progress was still showing as 44/45.
I read a few forums online, and one said that if any cheats are detected during your game session, progress would not be recorded. Now, I did have god mode already on, but using the glitch where you go in and out of the game so you can still do achievements.
I suddenly remembered that in the room where #44 is, I had been using noclip, because that bit is fucking annoying. Before getting the cache, I had turned noclip off, and changed to sv_cheats 0, but I hadn't gone out and back into the game, so it must have detected the cheats as still on and not awarded it.
So I went back, noclip on-->off, cheats 0, in and out of game and BOOM it popped like a gunship. THANK GOD I didn't have to play the whole game again!!! :steamhappy:
sergykid 20 Mar, 2020 @ 8:36pm 
i got 111111111111111111111111101111111111111111111 which seemed a bit odd at first, but after some time trying to figure it out with your guide, and your response to a previous comment more importantly, i discovered that i was missing number 20 , and even tho i already checked that place because i did it one by one with another guide, seems like it was not registered, and when i came back again it worked and got it. Thanks for the guide.