Newsgroups: alt.2600 Subject: REPOST: How To Cheat At Games (long) Date: Wed May 3 00:23:29 1995 ---> This message gated from Fido at 1:255/9.0 ---> Original message by Doug Mclean (*sigh*) There were problems with the news feed last two times I tried send this, so I'll try one more time... If it made it out before, sorry for wasting bandwidth with the repost. --- original post follows --- In an effort to get some real info into this newsgroup, and to help out some of the lamers and newbies that hang out here, I'm posting this article I wrote a few years ago. The following info will help newbies cheat at certain types of games, even if they have no programming/hacking knowledge at all. Just follow the instructions, and (hopefully) learn something. This could be your first steps into hacking (you have to learn to walk before you can run, right?). This article is intended for newbies only, *not* for experienced hackers. Lately, everyone (and I'm guilty too) has been flaming newbies/AOLers/etc. Maybe if we present them with some useful but harmless information they will slowly learn to ask intelligent questions, and be willing to learn and explore a bit on their own. If you are the sort of person that can convert hex<->decimal in your head, then this article probably doesn't contain anything you don't know already. You may want to skip the rest of this... Please read the entire article before attempting to use the supplied info. You will have problems or waste a lot of time if you don't read the whole thing first. You may wish to print this out to refer to as you "hack" your game. Ok, here we go. You buy the latest simulation, adventure, or quest game at the local software store (*you* would never FTP to a warez site), and rush home to try it out. The game looks like a lot of fun, but after hours of play you can't get far enough in the game to really enjoy it because you can't build your character up, or you don't have enough gold, hit points, or some other attribute. You are getting short on patience, and want to progress through the game more quickly. If only you had just a few more hit points to get past that nasty creature that blocks your path, or a little extra money to zone that extra block of land, or a bit more of some other attribute that the game hasn't given you enough of. What can you do? You can either muddle your way through according to the rules of the game, or you can take matters into your own hands and change the rules (i.e. you can cheat)! Cheating at some types of games isn't as hard as you might think; you do not need to be a computer guru or programmer to cheat at many computer games. I have found that cheating does not usually take the fun out of playing games, but rather allows me to play without the limitations imposed by a lack of gold or hit points or whatever the game uses to force me to progress too slowly. I'd rather explore than watch my character get killed every 5 minutes! Some of you will frown at the idea of cheating at a game. You will cry "cheating isn't fair!" or "what is the point of playing if you are going to cheat"? In response I must point out that many games are NOT spoiled by modifying the rules a bit, in many games a little cheating will do nothing more than give you freedom to explore and solve the puzzles the game has to offer. This is particularly true of games in which you must frequently battle monsters; in such games a little cheating will make it easier for you to quickly dispatch your foes and get on with the rest of the game. And remember, you are always free to re-play the game without cheating, once you have seen more of what the game has to offer. The games that are easy to cheat at are the ones that create small data files when you save them, usually only a few kilobytes. These games are usually so easy to cheat at (if you know how) that in ten or fifteen minutes you can have more gold or hit points than you will ever need. A few of the games I have cheated at are Moonbase, Centurion: Defender Of Rome, Bards Tale (1 & 2), Might And Magic 2, Eye Of The Beholder (1, 2 & 3), Hard Nova, Black Crypt, Sim City (original and 2000), Goblins (more jokers, but that spoiled the game), XWing, and *countless* others. Typically, these are role playing, strategy, or simulation games with attributes that change value (such as the amount of money, hit points, etc.). The technique described here will not help you cheat at any game that does not allow you to save your game in progress, nor will it help with games that do not use measurable attributes such as money or hit points (so if you are stuck in a Lucas adventure such as Sam & Max, this article won't help you at all). If you have a character or game editor for your game, then you are all set. You will not need to manually modify your saved game, the editor will do everything for you. The catch is that this type of editor must be unique for each game, and they are not available for very many games. Besides, using a ready-made game editor is kind of lame... If you don't have a character or game editor for the game in question, you will have to make the changes yourself by locating and modifying the information within the saved game data file. Fear not, this is easier than you might think if you follow the instructions presented here. You will need no programming experience or specialized knowledge whatsoever, beyond what you learn here. The instructions below assume you use a MS-DOS based system, but the same rules technique applies no matter what your system is. You will need to locate the appropriate programs for your system. Suitable tools are available for whatever system you have, you just have to find them. You will need a hexadecimal based file editor, such as ZipZap by KeyStrokes Computer Works. There are many other hex file editors available as shareware or freeware for most computer systems. If you don't already have one, look on one your local bulletin board systems, or search the net. If you don't have a modem, perhaps your local computer store would be kind enough to give you a copy of a shareware or public domain hex editor if you bring in a blank disk (if they do, be sure to remember their help next time you want to buy a piece of software!). It doesn't matter which hex editor you use as long as you read and understand the documentation that came with it. You will also need a program that will convert decimal (base 10) to hexadecimal (base 16, commonly called hex). "Wait", you shout, "you said this was going to be easy. I don't understand hex or binary or any of that other stuff reserved for computer wizards. I'm still a newbie!". Fear not, you will not need to understand the mysteries of hex or other exotic number bases, nor will have to manually do conversions between number bases (see the next paragraph), all you will have to be able to do is use a pencil to print the digits 0 to 9, and the letters A to F as directed. For decimal to hex conversions, a pocket calculator with programming functions is by far the most convenient. These are cheaply available at almost any department store for about $30. You don't need a lot of other functions or features, all you need is a calculator that will convert the decimal number on its display to the hex equivalent when you press the right button. If you do not want to invest in such a calculator, there are numerous programs for most computers that will do the same trick. Everything you need will be available on most bulletin board systems or on the net. Finally, a program that will compare two files and spot the differences will make life much easier, although if you have lots of time to spare tyou can get by without one. I use FComp v2.00 by Guido Klemans. And now on to business. When you save a game, everything that you need to continue later must be saved, things such as the amount of money or gold, hit/spell/whatever points, etc. It is these values that you will want to be able to modify. Before you start, COPY YOUR SAVED GAME FIRST! It is very easy to destroy a saved game when playing around with files on the disk. If you copy the saved game file, you will have a backup to restore if need be. The first thing you must do is load and play the game a bit so that the attributes have changed from their default values. If you have played and saved the game before, you might wish to load your saved game. Write down the amount of money you have (and whatever other attributes the game uses), and save the game without allowing any of them to change after writing them down. Now play the game a bit more, trying to change as many of the values as you can. Again, write down all the values and save the game, but UNDER A DIFFERENT NAME or in a different saved game slot. You should now have two saved game files, and you will have to determine which files are the saved games. One helpful way to do this is to print the directory before you save any games, save the two games, print the directory again, and compare the listings. Usually, a saved game file won't be too hard to spot, it might end in .sav or .gam or .000 or something similar. The next step is to make a table of your attributes for both saved games, and for the location these values are found in the saved game files. Leave as much room as you can for the locations, because you may have several locations to record for each value. Your table should look something like the example below: Game 1 Game 2 Item Dec Hex Loc Dec Hex Loc Money 3120 1032 Hit Points 125 139 Strength 87 96 Spell Points 22 33 Max Hit Pts. 139 139 Max Strength 96 98 Max Spell Pts. 30 35 In the above table, for each game you have a column for decimal (which you wrote down) and hex (which you must convert to), and for the locations that these numbers occur within the saved game file (which you must find). Note that in the example, the current value for each item may or may not be the same as the maximum allowable. In games that the maximum for each item increases as you progress, you can change the maximum as easily as you can change the current value. Now you must convert each decimal value to hex and write the hex number in the appropriate place in hex column. Hex uses the digits 0 to 9, and the letters A to F. So, 9 in decimal is 9 in hex, 10 is A, 11 is B, 15 is F, and 16 is 10. No, you don't need to understand the mechanics of the conversion, simply press that hex button on your calculator! Okay, now you have a table with both decimal values (which you won't need anymore) and hex values (which you must search for in the saved game files). It might look something like this: Game 1 Game 2 Item Dec Hex Loc Dec Hex Loc Money 3120 c30 1032 408 Hit Points 125 7d 139 8b Strength 87 57 96 60 Spell Points 22 16 33 21 Max Hit Pts. 139 8b 139 8b Max Strength 96 60 98 62 Max Spell Pts. 30 1e 35 23 Now, with the help of a hexadecimal based file editor such as ZipZap, you must fill in the location columns. Refer to the instructions for your hex file editor for info on search functions. Load your first saved game file into the hex editor. Generally, part of the screen will show a bunch of hex numbers (0-9 and A-F), and another part will show the text equivalent (which you aren't at all interested in). Position the cursor at the start of the file, and select the search function. You will be searching for a hex number string, NOT for text (most hex based file editors allow either). Enter the hex number for the value of the item you are searching for (something like 3c or 026a). Depending on your hex editor, you may need to place a dollar sign or other symbol before the hex number to tell the editor that you are looking for hex, not text. Again, read the docs for your editor. When searching the file for values, you need an even number of digits (*not* including a dollar sign or other character, if required by the editor). Simply put a 0 in front of the hex number if you need to (c becomes 0c, and 26a becomes 026a. You get the idea). The even number of digits rule should apply no matter what program or computer you are using. If you are searching a file for a game that has multiple characters, you will usually see the name of the character in the text half of the display. The information for that character is probably stored after the name of the character and before the name of the next character (but not always!). All your players are usually stored in the same file. When you find the number you are looking for, it should be highlighted on the hex part of the screen (maybe more than once depending on your editor). Write down the location for the number. The location will either be a position into the file, or a block and position within the block (like ZipZap uses). These numbers may be either hex or decimal depending on your editor, but it doesn't matter which as long as you can find the number again when you need to. Once you write down the location, select the continue search function to get the next occurrence or group of occurrences of the number and write these down. Continue until you reach the end of the file. *************** IMPORTANT NOTE *************** * Due to the different ways that different microprocessors and * different CPU modes and different programs work, you may need * to reverse the order of the bytes you are searching for. In * english, this means that you might have to place the last 2 * digits first, the next to last pair of digits next to first, * and the first pair of digits last. Remember, you MUST use an * even number of digits (032a instead of 32a). So, if you are * looking for 032a, you might have to search for 2a03. This is * often true of games that run on 80x86 based computers (MS-DOS * systems). You might want to add a place on your decimal to * hex table for the reversed hex values. If you have a Motorola * processor (Amiga or Macintosh) you will not have this problem. Sometimes (usually?), there will be many occurrences of the value for some items, and the extra ones may have nothing to do with what you want to change (and changing the wrong values will ruin the saved game). If there are too many occurrences of a value to be bothered writing down, skip that item for now and we will come back to it later. When you have finished with the first item, return to the start of the file. Repeat the above process for the rest of the items in your table. You now have a list of hex values for each item and the locations that these appear in the saved game file (or locations for at least some of the items). If there is only one occurrence of a number in the whole file, then that must be the one you want to change! If there are several occurrences of an item, but one is next to an item that only has one occurrence, then you have probably found the right one. But what if there are several occurrences of each? In this case, repeat the whole process on the second saved game file, with the hex values for the items in the second saved game. This will give you a list of the locations for the values in the second saved game file. ********* NOTE TO MAKE LIFE EASIER ********** * An alternative method to manually searching each saved game * file for the locations of the info you want is to use a file * compare program like FComp. With such a program, you can easily * compare the two files in hex side-by-side, and note the locations * where there are differences. There may be many differences * that relate to things you do not need (or wish) to tamper with, * but a file compare program can make finding the attributes * *much* more quickly and easily. If possible, use a file compare * program to quickly create the above type of table. Look for * the appropriate hex values at the same locations in the two * saved game files. Now you have two sets of locations. For each item, look at the locations you wrote down for each saved game file. If a location isn't the same in each file, then eliminate that location. Since the game should save in the same format each time, the information you want to change should always be at the same location in any saved game file (but this is not always true! Sim City 2000 doesn't obey this rule). Since you saved your second game with different values, you should be able to find the location that any item is stored in by eliminating locations that don't have the correct value in the corresponding saved game file. At this point you have the locations of the information you want to change. If there are two or three locations you might have to change them all. This will be the case if there are separate current and maximum values, where the character is at full strength for that attribute. Also, a few games store some information twice; this will cause duplicate sets of locations. In your hex editor, return to the start of the file and search again for the value you want to change. When you find the right location, place the cursor on the first byte (pair of hex digits) you want to change. You might do this with the mouse or with the cursor keys, consult the documentation for your hex editor. Make sure you are ready to change the right number! Now select the "hex entry" or "modify hex" mode in your hex editor, and type in (in hex), the new value. For example, if the number you clicked on was 1c, type 7f. If the number was 012c, type 7fff. You can type larger numbers, starting with digits greater than 7 (like ffff), but if you do this, there is a risk that the game will think this is a negative number. BE VERY CAREFUL not to type more digits in than you searched for, and only use the digits 0-1 and a-f. ******* ANOTHER IMPORTANT NOTE ******* * If the hex number you found was reversed, then the number * you type in must also be reversed. So, if the "real" hex number * is 012c, and the reversed number is 2c01, instead of entering * 7fff, you would enter ff7f. If you were entering an 8 digit * number (4 bytes) you might enter ffffff7f. The rest of this * article will present hex numbers only in the "forward" mode, * so please remember that you may need to reverse your hex numbers! If you are searching for a two digit hex number, and you know that the game allows values larger than 255 (ff), then the two digits before the number you searched for will probably be 00. If this is the case, you can change these too, so 001c might become 7fff. The same applies to larger numbers: if you searched for 1a2c and you know the game allows values greater than 65535 (ffff), and the four digits before it are 0000, then 00001a2c might become 7fffffff. You will almost always be changing either 2, 4, or 8 digits (this is due to the way the computer stores numbers, either as bytes, words, or long words). After you have made all the changes you wish to make on the current screen, save the file. The file is probably broken into blocks or sectors by the hex editor, and if you move to another block before saving your changes, they could be lost and you would have to enter your changes again. When you are finished making the changes you want to your saved game, exit the hex editor. Run the game, restore your modified saved game, and see what effect your changes had. That's all there is to it! If your saved game refuses to load after being changed, or if it acts strangely, it is probably for one of two reasons. Either you made a mistake, or the game uses some technique to prevent you from cheating. In the first case (the most usual cause), copy the backup of your save game file back over the original and try again. In the second case (very rare), you are out of luck unless you know enough that you probably wouldn't be reading this in the first place. It is a good idea to only change a few things at a time, at least until you get used to this sort of thing. If your changes resulted in negative numbers, you entered hex numbers too big (something like 7fff does not have the high bit set, so it is positive, where the next number in the sequence, 8000, does have the high bit set, so to the game it may be either positive or negative, depending on the game). If you made the number big but not too big, and if you get more money or raise some level as you play the game, it might change to a negative number for the same reason. So don't be too greedy! You might want to use numbers starting with 5 or 6 instead of 7 when changing your data file to avoid this problem (for example, use 5fff instead of 7fff, or ff5f instead of ff7f if you had to reverse the bytes). Remember that the game will raise your values as you progress, so a good rule is to give yourself just a little extra. The numbers you enter don't have to end in ff. For example, if you had 16 spell points (10 in hex), changing the 10 to 20 would give you 32 spell points. Use your hex<->decimal conversion program or calculator to figure out what hex values will yield specific decimal numbers and vice versa. That's all folks! Of course, there are a lot of games that are not this easy to work with, but this is a good starting point. Rarely, saved game files might include a checksum or use other techniques to prevent you from tampering with the data. If this is the case you will get an error when the game tries to load your saved game, and you are out of luck. Some games encrypt their saved game files; these require a decryption program (such as my Decode for the Amiga) and a lot of expertise to do anything with. Finally, if you have a lot of memory, and the game you are working on multi-tasks (so you can run other programs while you play the game), you can often save, modify, and re-load your saved games without exiting the game! Many Amiga games allow this, as do some games that will run under Microsoft Windows. That's enough for today. Send questions, comments, suggestions, flames, etc to madsci@mi.net